"use strict";(self.webpackChunksubstack=self.webpackChunksubstack||[]).push([["5042"],{21903:function(i,t,a){a.d(t,{QM:()=>A,ZP:()=>f,hJ:()=>I,iY:()=>w});var e=a(27412),o=a(7409),d=a(58865),l=a(6400),s=a(14293),n=a.n(s),p=a(81763),r=a.n(p),u=a(80569),c=a.n(u),h=a(88452),m=a(40647),v=a(68833),U=a(98914),y=a(10656),E=a(98012),T=a(84864);function M(){let i=(0,d._)(["This will remove your audio. Are you sure?"]);return M=function(){return i},i}function g(){let i=(0,d._)(["This will remove your video. Are you sure?"]);return g=function(){return i},i}function _(){let i=(0,d._)(["File too large. Your file is ","; the maximum is ",". Try encoding at a lower bitrate."]);return _=function(){return i},i}function x(){let i=(0,d._)(["It looks like your file is empty (0 bytes). Please check that the file you are trying to upload is not corrupted."]);return x=function(){return i},i}let w="audio/mpeg,audio/mp3,audio/m4a,audio/x-m4a,audio/aac,audio/aiff,audio/x-aiff,audio/amr,audio/flac,audio/ogg,audio/wav,audio/x-wav",I="video/*";class f extends l.Component{componentDidMount(){this.syncUploads()}componentWillUnmount(){this.clearSyncMediaUploadTimeouts(),this.stopUpdatingTranscodingTime()}componentDidUpdate(i,t){this.checkTranscodeStates(t),this.checkForNewUploads(i)}getMediaUploadId(){return this.state.mediaUploadId}stopUpdatingTranscodingTime(){clearTimeout(this.updateTranscodingTimeout),this.updateTranscodingTimeout=null}getEstimatedTranscodingTime(){let i=1,t=0,a=new Date().getTime(),{mediaUpload:e}=this.state;if((null==e?void 0:e.state)==="uploaded"&&e.uploaded_at&&e.duration&&e.duration>0){let o="video"===this.props.mediaType?.7:.03,d=1e3*Math.max("video"===this.props.mediaType?60:5,e.duration*o),l=Math.max(0,d-Math.max(0,Date.now()-new Date(e.uploaded_at).getTime()));i=Math.max(0,1-l/d),this.state.timeLeft&&this.state.timeLeft{var i;this.updateTranscodingTimeout||(this.setState(this.getEstimatedTranscodingTime()),(null===(i=this.state.mediaUpload)||void 0===i?void 0:i.state)==="uploaded"&&(this.updateTranscodingTimeout=window.setTimeout(()=>{this.updateTranscodingTimeout=null,this.updateTranscodingTime()},1e3)))}),(0,e._)(this,"onMediaUpload",i=>{var t;let{mediaUpload:a}=i;clearTimeout(null!==(t=this.syncMediaUploadTimeout)&&void 0!==t?t:void 0),this.setState({mediaUploadId:null==a?void 0:a.id,mediaUpload:a},()=>{var i,t;this.syncUpload({uploadIdKey:"mediaUploadId",uploadKey:"mediaUpload",uploadTimeoutKey:"syncMediaUploadTimeout",uploadSyncingKey:"syncingMediaUpload",endpoint:"/api/v1/".concat(this.props.mediaType,"/upload/{id}")}),null===(i=(t=this.props).onChange)||void 0===i||i.call(t,{mediaUpload:a})})}),(0,e._)(this,"onAudioExtractMediaUpload",i=>{let{mediaUpload:t}=i;clearTimeout(this.syncAudioExtractMediaUploadTimeout),this.setState({audioExtractMediaUploadId:null==t?void 0:t.id,audioExtractMediaUpload:t},()=>{var i,a;this.syncUpload({uploadIdKey:"audioExtractMediaUploadId",uploadKey:"audioExtractMediaUpload",uploadTimeoutKey:"syncAudioExtractMediaUploadTimeout",uploadSyncingKey:"syncingAudioExtractMediaUpload",endpoint:"/api/v1/audio/upload/{id}"}),null===(i=(a=this.props).onAudioExtractChange)||void 0===i||i.call(a,{mediaUpload:t})})}),(0,e._)(this,"onAudioExtractPreviewMediaUpload",i=>{let{mediaUpload:t}=i;clearTimeout(this.onAudioExtractPreviewMediaUpload),this.setState({audioExtractPreviewMediaUploadId:null==t?void 0:t.id,audioExtractPreviewMediaUpload:t},()=>{var i,a;this.syncUpload({uploadIdKey:"audioExtractPreviewMediaUploadId",uploadKey:"audioExtractPreviewMediaUpload",uploadTimeoutKey:"syncAudioExtractPreviewMediaUploadTimeout",uploadSyncingKey:"syncingAudioExtractPreviewMediaUpload",endpoint:"/api/v1/audio/upload/{id}"}),null===(i=(a=this.props).onAudioExtractPreviewChange)||void 0===i||i.call(a,{mediaUpload:t})})}),(0,e._)(this,"onMediaUploadUpdated",i=>{var t,a;null===(t=(a=this.props).onChange)||void 0===t||t.call(a,{mediaUpload:(0,o._)({},this.props.mediaUpload,i)})}),(0,e._)(this,"removeUpload",function(){var i;let{skipConfirm:t=!1}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{iTemplate:e}=a.i18n,{mediaUploadId:o,mediaUpload:d}=a.state;if(o){if(!t&&!["cancelled","error"].includes(null==d?void 0:d.state)&&!confirm(e((null==d?void 0:d.media_type)==="audio"?M():g())))return;null===(i=a.optionsDropdown)||void 0===i||i.close(),a.clearSyncMediaUploadTimeouts(),a.setState({mediaUploadId:null,mediaUpload:null,audioExtractMediaUploadId:null,audioExtractMediaUpload:null,audioExtractPreviewMediaUploadId:null,audioExtractPreviewMediaUpload:null},()=>{var i,t,e,o,d,l;null===(i=(t=a.props).onChange)||void 0===i||i.call(t,{mediaUpload:null}),null===(e=(o=a.props).onAudioExtractChange)||void 0===e||e.call(o,{mediaUpload:null}),null===(d=(l=a.props).onAudioExtractPreviewChange)||void 0===d||d.call(l,{mediaUpload:null})})}}),(0,e._)(this,"syncUploads",()=>{this.syncUpload({uploadIdKey:"mediaUploadId",uploadKey:"mediaUpload",uploadTimeoutKey:"syncMediaUploadTimeout",uploadSyncingKey:"syncingMediaUpload",endpoint:"/api/v1/".concat(this.props.mediaType,"/upload/{id}")}),this.syncUpload({uploadIdKey:"audioExtractMediaUploadId",uploadKey:"audioExtractMediaUpload",uploadTimeoutKey:"syncAudioExtractMediaUploadTimeout",uploadSyncingKey:"syncingAudioExtractMediaUpload",endpoint:"/api/v1/audio/upload/{id}"}),this.syncUpload({uploadIdKey:"audioExtractPreviewMediaUploadId",uploadKey:"audioExtractPreviewMediaUpload",uploadTimeoutKey:"syncAudioExtractPreviewMediaUploadTimeout",uploadSyncingKey:"syncingAudioExtractPreviewMediaUpload",endpoint:"/api/v1/audio/upload/{id}"})}),(0,e._)(this,"getTimeoutDuration",i=>(0,E.Z)(i).add(6e4,"milliseconds").isBeforeNow()?3e4:1e4),(0,e._)(this,"clearSyncMediaUploadTimeouts",()=>{this.syncMediaUploadTimeout&&clearTimeout(this.syncMediaUploadTimeout),this.syncAudioExtractMediaUploadTimeout&&clearTimeout(this.syncAudioExtractMediaUploadTimeout),this.syncAudioExtractPreviewMediaUploadTimeout&&clearTimeout(this.syncAudioExtractPreviewMediaUploadTimeout)}),(0,e._)(this,"syncUpload",async i=>{var t,a;let{uploadIdKey:e,uploadKey:o,uploadTimeoutKey:d,uploadSyncingKey:l,endpoint:s}=i,n=this.state[e],p=this.state[o];if(!n){p&&this.setState({[o]:null});return}if((null==p?void 0:p.state)!=="transcoded"&&!this[l]){this[l]=!0;try{let i=await c().get(s.replace("{id}",n));this.setState({[o]:i.body},()=>{"uploaded"!==i.body.state?this.stopUpdatingTranscodingTime():this.updateTranscodingTime()})}catch(i){alert((0,U.zx)(i))}this.state[o]&&(null===(t=this.state[o])||void 0===t?void 0:t.state)!=="uploaded"||(this[d]=window.setTimeout(()=>this.syncUpload({uploadIdKey:e,uploadKey:o,uploadTimeoutKey:d,uploadSyncingKey:l,endpoint:s}),this.getTimeoutDuration(null===(a=this.state[o])||void 0===a?void 0:a.created_at))),this[l]=!1}}),(0,e._)(this,"checkTranscodeStates",i=>{var t,a,e,o,d,l,s,n,p,r,u,c,h,m,v,U;(null===(t=this.state.mediaUpload)||void 0===t?void 0:t.state)==="transcoded"&&(null===(a=i.mediaUpload)||void 0===a?void 0:a.state)!==(null===(e=this.state.mediaUpload)||void 0===e?void 0:e.state)&&(null===(u=(c=this.props).onChange)||void 0===u||u.call(c,{mediaUpload:this.state.mediaUpload})),((null===(o=this.state.audioExtractMediaUpload)||void 0===o?void 0:o.state)==="transcoded"||(null===(d=this.state.audioExtractMediaUpload)||void 0===d?void 0:d.state)==="error")&&(null===(l=i.audioExtractMediaUpload)||void 0===l?void 0:l.state)!==(null===(s=this.state.audioExtractMediaUpload)||void 0===s?void 0:s.state)&&(null===(h=(m=this.props).onAudioExtractChange)||void 0===h||h.call(m,{mediaUpload:this.state.audioExtractMediaUpload})),(null===(n=this.state.audioExtractPreviewMediaUpload)||void 0===n?void 0:n.state)==="transcoded"&&(null===(p=i.audioExtractPreviewMediaUpload)||void 0===p?void 0:p.state)!==(null===(r=this.state.audioExtractPreviewMediaUpload)||void 0===r?void 0:r.state)&&(null===(v=(U=this.props).onAudioExtractPreviewChange)||void 0===v||v.call(U,{mediaUpload:this.state.audioExtractPreviewMediaUpload}))}),(0,e._)(this,"checkForNewUploads",i=>{var t,a,e,o,d,l;(i.mediaUpload!==this.props.mediaUpload||i.mediaUploadId!==this.props.mediaUploadId)&&this.setState({mediaUpload:null!==(t=this.props.mediaUpload)&&void 0!==t?t:null,mediaUploadId:null!==(a=this.props.mediaUploadId)&&void 0!==a?a:null}),(i.audioExtractMediaUpload!==this.props.audioExtractMediaUpload||i.audioExtractMediaUploadId!==this.props.audioExtractMediaUploadId)&&this.setState({audioExtractMediaUpload:null!==(e=this.props.audioExtractMediaUpload)&&void 0!==e?e:null,audioExtractMediaUploadId:null!==(o=this.props.audioExtractMediaUploadId)&&void 0!==o?o:null}),(i.audioExtractPreviewMediaUpload!==this.props.audioExtractPreviewMediaUpload||i.audioExtractPreviewMediaUploadId!==this.props.audioExtractPreviewMediaUploadId)&&this.setState({audioExtractPreviewMediaUpload:null!==(d=this.props.audioExtractPreviewMediaUpload)&&void 0!==d?d:null,audioExtractPreviewMediaUploadId:null!==(l=this.props.audioExtractPreviewMediaUploadId)&&void 0!==l?l:null})}),this.state={mediaUploadId:i.mediaUploadId,mediaUpload:i.mediaUpload||null,estimatedTimeLeftAt:null,timeLeft:0,percentComplete:1},this.updateTranscodingTimeout=null,this.syncMediaUploadTimeout=null,this.syncAudioExtractMediaUploadTimeout=null,this.syncAudioExtractPreviewMediaUploadTimeout=null,this.syncingMediaUpload=!1,this.syncingAudioExtractMediaUpload=!1,this.syncingAudioExtractPreviewMediaUpload=!1,this.i18n=I18N.i(i.language)}}f.contextType=m.QA;class A extends h.Z{componentDidUpdate(i){this.props.initialFile!==i.initialFile&&this.onFileSelected(this.props.initialFile)}trackUploadClicked(){}onError(){var i,t,a;let{upload_state:e="uploading",customMessage:o}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(0,v.j)(v.FP.MEDIA_UPLOAD_FAILED,{upload_state:e,media_upload_id:null===(i=this.state.mediaUpload)||void 0===i?void 0:i.id,post_id:this.props.postId,customMessage:o}),null===(t=(a=this.props).onUploadCanceled)||void 0===t||t.call(a),super.onError({upload_state:e},o)}render(i,t){return console.error("render must be implemented by child class"),null}constructor(i,t){if(super(i,t),(0,e._)(this,"accepts",void 0),(0,e._)(this,"chunkSize",void 0),(0,e._)(this,"input",null),(0,e._)(this,"i18n",void 0),(0,e._)(this,"onUploadClicked",async()=>{this.trackUploadClicked()}),(0,e._)(this,"uploadToS3",async i=>{var t,a,e,d,l,s,n,p,r,u;let h;if((null===(t=this.state)||void 0===t?void 0:t.preuploading)||(null===(a=this.state)||void 0===a?void 0:a.uploading))return;null===(e=(d=this.props).onUploadStarted)||void 0===e||e.call(d),this.setState({preuploading:!0});let{iTemplate:m}=this.i18n;if(i.size>T.MAX_MEDIA_FILE_SIZE){this.onError({upload_state:"preupload",customMessage:m(_(),(0,T.formatBytes)(i.size),(0,T.formatBytes)(T.MAX_MEDIA_FILE_SIZE))});return}if(0===i.size){this.onError({upload_state:"preupload",customMessage:m(x())});return}this.props.postId||(this.props.setPostId?await (null===(l=(s=this.props).setPostId)||void 0===l?void 0:l.call(s)):console.warn("missing postId and cannot set postId, likely a non post editor")),this.setState({durationPromise:(0,y.Iw)(i)});try{let t="video"===this.props.mediaType?"/api/v1/video/upload":"/api/v1/audio/upload";h=await c().post(t).query((0,o._)({filetype:i.type,fileSize:i.size,fileName:"".concat(null==i?void 0:i.name)},this.props.postId?{post_id:this.props.postId}:{})),(0,v.j)(v.FP.MEDIA_UPLOAD_CREATED,{media_type:this.props.mediaType,file_size:i.size,file_type:i.type,parts_size:(null!==(n=h.body.multipartUploadUrls)&&void 0!==n?n:[]).length,post_id:this.props.postId})}catch(i){console.error("Failed to create media upload:",i),this.onError({upload_state:"preupload",customMessage:(0,U.zx)(i)});return}let{mediaUpload:E,multipartUploadId:M,multipartUploadUrls:g}=h.body,w=(null!==(p=null==E?void 0:E.parts)&&void 0!==p?p:[]).map(i=>i.etag).filter(Boolean);"created"===E.state&&w.length===g.length?(this.setState({mediaUpload:E,mediaUploadId:E.id}),await this.initTranscode(E,w)):"uploaded"===E.state||"transcoded"===E.state?null===(r=(u=this.props).onUpload)||void 0===r||r.call(u,h.body):(this.setState({preuploading:!1,mediaUpload:E,multipartUploadId:M,existingEtags:w}),(0,v.j)(v.FP.MEDIA_UPLOAD_STARTED,{media_upload_id:E.id,media_type:this.props.mediaType,post_id:this.props.postId}),super.uploadFile(i,null,{urls:g,method:"PUT",withCredentials:!1,useFormData:!1,mediaUpload:E}))}),(0,e._)(this,"onFileSelected",async i=>{var t,a,e,o;if(this.setState({recording:!1}),i=i||(null===(a=this.input)||void 0===a?void 0:null===(t=a.files)||void 0===t?void 0:t[0]),this.input&&(this.input.value=""),i){if(!n()(this.props.maxVideoDurationSeconds))try{let t=await (0,y.Iw)(i);if("number"==typeof t&&t>this.props.maxVideoDurationSeconds){(0,v.j)(v.FP.VIDEO_UPLOAD_IN_NOTES_FAILED,{duration_seconds:t,reason:"too_long"}),null===(e=(o=this.props).onVideoTooLong)||void 0===e||e.call(o);return}}catch(i){console.warn("could not get video duration",i)}this.uploadToS3(i)}}),(0,e._)(this,"onComplete",async()=>{var i,t,a;let e=null===(i=this.state.uploading)||void 0===i?void 0:i.status;if(!e||e<200||e>=400){this.onError();return}(0,v.j)(v.FP.MEDIA_UPLOAD_COMPLETED,{media_upload_id:this.state.mediaUpload.id,post_id:this.props.postId});let o=[...null!==(a=this.state.existingEtags)&&void 0!==a?a:[],...null===(t=this.state.uploadingXhrs)||void 0===t?void 0:t.map(i=>i.getResponseHeader("Etag")).filter(Boolean)];await this.initTranscode(this.state.mediaUpload,o)}),(0,e._)(this,"initTranscode",async(i,t)=>{let a=null;try{if((a=await this.state.durationPromise)&&"object"==typeof a&&"is_error"in a)throw a}catch(i){console.error("Failed to fetch video duration:",i)}try{var e,o;let d=await c().post("/api/v1/".concat(this.props.mediaType,"/upload/").concat(i.id,"/transcode")).send({duration:r()(a)?a:null,multipart_upload_id:i.multipart_upload_id,multipart_upload_etags:t});this.setState({mediaUpload:null,audioExtractMediaUpload:null,multipartUploadId:null}),this.resetUpload(),null===(e=(o=this.props).onUpload)||void 0===e||e.call(o,d.body,"")}catch(i){throw alert((0,U.zx)(i)),this.onError({upload_state:"transcoding"}),i}}),!["video","audio"].includes(i.mediaType))throw Error("unsupported media type: ".concat(i.mediaType));this.accepts="video"===i.mediaType?I:w,this.fudgeFactor=.9,this.chunkSize=T.MAX_MEDIA_UPLOAD_CHUNK_SIZE,this.i18n=I18N.i(i.language),i.initialFile&&this.onFileSelected(this.props.initialFile)}}A.contextType=m.QA},55722:function(i,t,a){a.d(t,{o:()=>u});var e=a(7409),o=a(99282),d=a(16584),l=a(47907),s=a(30302);let n={sm:16,md:20,lg:24},p={100:s.Z,1e3:l.Z,1e4:l.Z},r={1e4:{fill:"var(--color-accent-fg-purple)"}},u=i=>{let{tier:t,size:a="sm"}=i;if(!t)return null;let l=p[t.toString()],s=r[t.toString()],u=n[a];return(0,d.tZ)(l,(0,o._)((0,e._)({},s),{height:u}))}}}]);