!function(){try{var t="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};t.SENTRY_RELEASE={id:"substack@538433c"};var i=(new t.Error).stack;i&&(t._sentryDebugIds=t._sentryDebugIds||{},t._sentryDebugIds[i]="c955cd2d-c614-4c7e-84af-199ef24cd6d1",t._sentryDebugIdIdentifier="sentry-dbid-c955cd2d-c614-4c7e-84af-199ef24cd6d1")}catch(t){}}();"use strict";(self.webpackChunksubstack=self.webpackChunksubstack||[]).push([["81669"],{291:function(t,i,e){e.d(i,{Ay:()=>w,ab:()=>x,v1:()=>A,vj:()=>I});var a=e(99851),d=e(69277),o=e(79785),l=e(69843),s=e.n(l),n=e(98023),r=e.n(n),p=e(17402),u=e(15734),c=e.n(u),h=e(17515),m=e(85478),U=e(86500),y=e(68349),v=e(93946),g=e(16291),E=e(82776);function T(){let t=(0,o._)(["This will remove your audio. Are you sure?"]);return T=function(){return t},t}function M(){let t=(0,o._)(["This will remove your video. Are you sure?"]);return M=function(){return t},t}function _(){let t=(0,o._)(["File too large. Your file is ","; the maximum is ",". Try encoding at a lower bitrate."]);return _=function(){return t},t}function f(){let t=(0,o._)(["It looks like your file is empty (0 bytes). Please check that the file you are trying to upload is not corrupted."]);return f=function(){return t},t}let x="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 w extends p.Component{componentDidMount(){this.syncUploads()}componentWillUnmount(){this.clearSyncMediaUploadTimeouts(),this.stopUpdatingTranscodingTime()}componentDidUpdate(t,i){t.mediaUploadId!==this.props.mediaUploadId&&null===this.props.mediaUploadId&&(this.clearSyncMediaUploadTimeouts(),this.stopUpdatingTranscodingTime(),this.setState({mediaUpload:null,audioExtractMediaUploadId:null,audioExtractMediaUpload:null,audioExtractPreviewMediaUploadId:null,audioExtractPreviewMediaUpload:null})),this.checkTranscodeStates(i),this.checkForNewUploads(t)}getMediaUploadId(){return this.state.mediaUploadId}stopUpdatingTranscodingTime(){var t;clearTimeout(null!=(t=this.updateTranscodingTimeout)?t:void 0),this.updateTranscodingTimeout=null}getEstimatedTranscodingTime(){let t=1,i=0,e=new Date().getTime(),{mediaUpload:a}=this.state;if((null==a?void 0:a.state)==="uploaded"&&a.uploaded_at&&a.duration&&a.duration>0){let d="video"===this.props.mediaType?.7:.03,o=1e3*Math.max("video"===this.props.mediaType?60:5,a.duration*d),l=Math.max(0,o-Math.max(0,Date.now()-new Date(a.uploaded_at).getTime()));t=Math.max(0,1-l/o),this.state.timeLeft&&this.state.timeLeft{var t;this.updateTranscodingTimeout||(this.setState(this.getEstimatedTranscodingTime()),(null==(t=this.state.mediaUpload)?void 0:t.state)==="uploaded"&&(this.updateTranscodingTimeout=window.setTimeout(()=>{this.updateTranscodingTimeout=null,this.updateTranscodingTime()},1e3)))}),(0,a._)(this,"onMediaUpload",t=>{var i;let{mediaUpload:e}=t;clearTimeout(null!=(i=this.syncMediaUploadTimeout)?i:void 0),this.setState({mediaUploadId:null==e?void 0:e.id,mediaUpload:e},()=>{var t,i;this.syncUpload({uploadIdKey:"mediaUploadId",uploadKey:"mediaUpload",uploadTimeoutKey:"syncMediaUploadTimeout",uploadSyncingKey:"syncingMediaUpload",endpoint:"/api/v1/".concat(this.props.mediaType,"/upload/{id}")}),null==(t=(i=this.props).onChange)||t.call(i,{mediaUpload:e})})}),(0,a._)(this,"onAudioExtractMediaUpload",t=>{var i;let{mediaUpload:e}=t;clearTimeout(null!=(i=this.syncAudioExtractMediaUploadTimeout)?i:void 0),this.setState({audioExtractMediaUploadId:null==e?void 0:e.id,audioExtractMediaUpload:e},()=>{var t,i;this.syncUpload({uploadIdKey:"audioExtractMediaUploadId",uploadKey:"audioExtractMediaUpload",uploadTimeoutKey:"syncAudioExtractMediaUploadTimeout",uploadSyncingKey:"syncingAudioExtractMediaUpload",endpoint:"/api/v1/audio/upload/{id}"}),null==(t=(i=this.props).onAudioExtractChange)||t.call(i,{mediaUpload:e})})}),(0,a._)(this,"onAudioExtractPreviewMediaUpload",t=>{var i;let{mediaUpload:e}=t;clearTimeout(null!=(i=this.syncAudioExtractPreviewMediaUploadTimeout)?i:void 0),this.setState({audioExtractPreviewMediaUploadId:null==e?void 0:e.id,audioExtractPreviewMediaUpload:e},()=>{var t,i;this.syncUpload({uploadIdKey:"audioExtractPreviewMediaUploadId",uploadKey:"audioExtractPreviewMediaUpload",uploadTimeoutKey:"syncAudioExtractPreviewMediaUploadTimeout",uploadSyncingKey:"syncingAudioExtractPreviewMediaUpload",endpoint:"/api/v1/audio/upload/{id}"}),null==(t=(i=this.props).onAudioExtractPreviewChange)||t.call(i,{mediaUpload:e})})}),(0,a._)(this,"onMediaUploadUpdated",t=>{var i,e;null==(i=(e=this.props).onChange)||i.call(e,{mediaUpload:(0,d._)({},this.props.mediaUpload,t)})}),(0,a._)(this,"removeUpload",function(){var t;let{skipConfirm:i=!1}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{iTemplate:a}=e.i18n,{mediaUploadId:d,mediaUpload:o}=e.state;!d||(i||["cancelled","error"].includes(null==o?void 0:o.state)||confirm(a((null==o?void 0:o.media_type)==="audio"?T():M())))&&(null==(t=e.optionsDropdown)||t.close(),e.clearSyncMediaUploadTimeouts(),e.setState({mediaUploadId:null,mediaUpload:null,audioExtractMediaUploadId:null,audioExtractMediaUpload:null,audioExtractPreviewMediaUploadId:null,audioExtractPreviewMediaUpload:null},()=>{var t,i,a,d,o,l;null==(t=(i=e.props).onChange)||t.call(i,{mediaUpload:null}),null==(a=(d=e.props).onAudioExtractChange)||a.call(d,{mediaUpload:null}),null==(o=(l=e.props).onAudioExtractPreviewChange)||o.call(l,{mediaUpload:null})}))}),(0,a._)(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,a._)(this,"getTimeoutDuration",t=>(0,g.A)(t).add(6e4,"milliseconds").isBeforeNow()?3e4:1e4),(0,a._)(this,"clearSyncMediaUploadTimeouts",()=>{this.syncMediaUploadTimeout&&clearTimeout(this.syncMediaUploadTimeout),this.syncAudioExtractMediaUploadTimeout&&clearTimeout(this.syncAudioExtractMediaUploadTimeout),this.syncAudioExtractPreviewMediaUploadTimeout&&clearTimeout(this.syncAudioExtractPreviewMediaUploadTimeout)}),(0,a._)(this,"syncUpload",async t=>{var i,e;let{uploadIdKey:a,uploadKey:d,uploadTimeoutKey:o,uploadSyncingKey:l,endpoint:s}=t,n=this.state[a],r=this.state[d];if(!n){r&&this.setState({[d]:null});return}if((null==r?void 0:r.state)!=="transcoded"&&!this[l]){this[l]=!0;try{let t=await c().get(s.replace("{id}",n));this.setState({[d]:t.body},()=>{"uploaded"!==t.body.state?this.stopUpdatingTranscodingTime():this.updateTranscodingTime()})}catch(t){alert((0,y.uX)(t))}this.state[d]&&(null==(i=this.state[d])?void 0:i.state)!=="uploaded"||(this[o]=window.setTimeout(()=>this.syncUpload({uploadIdKey:a,uploadKey:d,uploadTimeoutKey:o,uploadSyncingKey:l,endpoint:s}),this.getTimeoutDuration(null==(e=this.state[d])?void 0:e.created_at))),this[l]=!1}}),(0,a._)(this,"checkTranscodeStates",t=>{var i,e,a,d,o,l,s,n,r,p,u,c,h,m,U,y;(null==(i=this.state.mediaUpload)?void 0:i.state)==="transcoded"&&(null==(e=t.mediaUpload)?void 0:e.state)!==(null==(a=this.state.mediaUpload)?void 0:a.state)&&(null==(u=(c=this.props).onChange)||u.call(c,{mediaUpload:this.state.mediaUpload})),((null==(d=this.state.audioExtractMediaUpload)?void 0:d.state)==="transcoded"||(null==(o=this.state.audioExtractMediaUpload)?void 0:o.state)==="error")&&(null==(l=t.audioExtractMediaUpload)?void 0:l.state)!==(null==(s=this.state.audioExtractMediaUpload)?void 0:s.state)&&(null==(h=(m=this.props).onAudioExtractChange)||h.call(m,{mediaUpload:this.state.audioExtractMediaUpload})),(null==(n=this.state.audioExtractPreviewMediaUpload)?void 0:n.state)==="transcoded"&&(null==(r=t.audioExtractPreviewMediaUpload)?void 0:r.state)!==(null==(p=this.state.audioExtractPreviewMediaUpload)?void 0:p.state)&&(null==(U=(y=this.props).onAudioExtractPreviewChange)||U.call(y,{mediaUpload:this.state.audioExtractPreviewMediaUpload}))}),(0,a._)(this,"checkForNewUploads",t=>{var i,e,a,d,o,l;(t.mediaUpload!==this.props.mediaUpload||t.mediaUploadId!==this.props.mediaUploadId)&&this.setState({mediaUpload:null!=(i=this.props.mediaUpload)?i:null,mediaUploadId:null!=(e=this.props.mediaUploadId)?e:null}),(t.audioExtractMediaUpload!==this.props.audioExtractMediaUpload||t.audioExtractMediaUploadId!==this.props.audioExtractMediaUploadId)&&this.setState({audioExtractMediaUpload:null!=(a=this.props.audioExtractMediaUpload)?a:null,audioExtractMediaUploadId:null!=(d=this.props.audioExtractMediaUploadId)?d:null}),(t.audioExtractPreviewMediaUpload!==this.props.audioExtractPreviewMediaUpload||t.audioExtractPreviewMediaUploadId!==this.props.audioExtractPreviewMediaUploadId)&&this.setState({audioExtractPreviewMediaUpload:null!=(o=this.props.audioExtractPreviewMediaUpload)?o:null,audioExtractPreviewMediaUploadId:null!=(l=this.props.audioExtractPreviewMediaUploadId)?l:null})}),this.state={mediaUploadId:t.mediaUploadId,mediaUpload:t.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(t.language)}}w.contextType=m.W8;class A extends h.A{componentDidUpdate(t){this.props.initialFile!==t.initialFile&&(this.onFileSelected(this.props.initialFile),t.initialFile&&this.cancelUpload())}trackUploadClicked(){}onError(){var t,i,e;let{upload_state:a="uploading",customMessage:o,trackingContext:l={}}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(0,U.u4)(U.qY.MEDIA_UPLOAD_FAILED,(0,d._)({upload_state:a,media_upload_id:null==(t=this.state.mediaUpload)?void 0:t.id,post_id:this.props.postId,customMessage:o},l)),null==(i=(e=this.props).onUploadCanceled)||i.call(e),super.onError({upload_state:a},o)}render(){return console.error("render must be implemented by child class"),null}constructor(t,i){if(super(t,i),(0,a._)(this,"accepts",void 0),(0,a._)(this,"chunkSize",void 0),(0,a._)(this,"input",null),(0,a._)(this,"i18n",void 0),(0,a._)(this,"onUploadClicked",async()=>{this.trackUploadClicked()}),(0,a._)(this,"uploadToS3",async t=>{var i,e,a,o,l,s,n,r,p,u;let h;if((null==(i=this.state)?void 0:i.preuploading)||(null==(e=this.state)?void 0:e.uploading))return;null==(a=(o=this.props).onUploadStarted)||a.call(o),this.setState({preuploading:!0});let{iTemplate:m}=this.i18n;if(t.size>E.MAX_MEDIA_FILE_SIZE)return void this.onError({upload_state:"preupload",customMessage:m(_(),(0,E.formatBytes)(t.size),(0,E.formatBytes)(E.MAX_MEDIA_FILE_SIZE))});if(0===t.size)return void this.onError({upload_state:"preupload",customMessage:m(f())});this.props.postId||(this.props.setPostId?await (null==(l=(s=this.props).setPostId)?void 0:l.call(s)):console.warn("missing postId and cannot set postId, likely a non post editor")),this.setState({durationPromise:(0,v.nr)(t)});try{let i="video"===this.props.mediaType?"/api/v1/video/upload":"/api/v1/audio/upload";h=await c().post(i).query((0,d._)({filetype:t.type,fileSize:t.size,fileName:"".concat(null==t?void 0:t.name)},this.props.postId?{post_id:this.props.postId}:{},null!=this.props.postAsUserId?{postAsUserId:this.props.postAsUserId}:{})),(0,U.u4)(U.qY.MEDIA_UPLOAD_CREATED,{media_type:this.props.mediaType,file_size:t.size,file_type:t.type,parts_size:(null!=(n=h.body.multipartUploadUrls)?n:[]).length,post_id:this.props.postId})}catch(t){console.error("Failed to create media upload:",t),this.onError({upload_state:"preupload",customMessage:(0,y.uX)(t)});return}let{mediaUpload:g,multipartUploadId:T,multipartUploadUrls:M}=h.body,x=(null!=(r=null==g?void 0:g.parts)?r:[]).map(t=>t.etag).filter(Boolean);"created"===g.state&&x.length===M.length?(this.setState({mediaUpload:g,mediaUploadId:g.id}),await this.initTranscode(g,x)):"uploaded"===g.state||"transcoded"===g.state?null==(p=(u=this.props).onUpload)||p.call(u,h.body):(this.setState({preuploading:!1,mediaUpload:g,multipartUploadId:T,existingEtags:x}),(0,U.u4)(U.qY.MEDIA_UPLOAD_STARTED,{media_upload_id:g.id,media_type:this.props.mediaType,post_id:this.props.postId}),super.uploadFile(t,null,{urls:M,method:"PUT",withCredentials:!1,useFormData:!1,mediaUpload:g}))}),(0,a._)(this,"onFileSelected",async t=>{var i,e,a,d;if(this.setState({recording:!1}),t=t||(null==(e=this.input)||null==(i=e.files)?void 0:i[0]),this.input&&(this.input.value=""),t){if(!s()(this.props.maxVideoDurationSeconds))try{let i=await (0,v.nr)(t);if("number"==typeof i&&i>this.props.maxVideoDurationSeconds){(0,U.u4)(U.qY.VIDEO_UPLOAD_IN_NOTES_FAILED,{duration_seconds:i,reason:"too_long"}),null==(a=(d=this.props).onVideoTooLong)||a.call(d);return}}catch(t){console.warn("could not get video duration",t)}this.uploadToS3(t)}}),(0,a._)(this,"onComplete",async()=>{var t,i,e;let a=null==(t=this.state.uploading)?void 0:t.status;if(!a||a<200||a>=400)return void this.onError({trackingContext:{uploading_state_exists:!!this.state.uploading,response_status:a}});(0,U.u4)(U.qY.MEDIA_UPLOAD_COMPLETED,{media_upload_id:this.state.mediaUpload.id,post_id:this.props.postId});let d=[...null!=(e=this.state.existingEtags)?e:[],...null==(i=this.state.uploadingXhrs)?void 0:i.map(t=>t.getResponseHeader("Etag")).filter(Boolean)];await this.initTranscode(this.state.mediaUpload,d)}),(0,a._)(this,"initTranscode",async(t,i)=>{let e=null;try{if((e=await this.state.durationPromise)&&"object"==typeof e&&"is_error"in e)throw e}catch(t){console.error("Failed to fetch video duration:",t)}try{var a,d;let o=await c().post("/api/v1/".concat(this.props.mediaType,"/upload/").concat(t.id,"/transcode")).send({duration:r()(e)?e:null,multipart_upload_id:t.multipart_upload_id,multipart_upload_etags:i});this.setState({mediaUpload:null,audioExtractMediaUpload:null,multipartUploadId:null}),this.resetUpload(),null==(a=(d=this.props).onUpload)||a.call(d,o.body,"")}catch(t){throw alert((0,y.uX)(t)),this.onError({upload_state:"transcoding"}),t}}),!["video","audio"].includes(t.mediaType))throw Error("unsupported media type: ".concat(t.mediaType));this.accepts="video"===t.mediaType?I:x,this.fudgeFactor=.9,this.chunkSize=E.MAX_MEDIA_UPLOAD_CHUNK_SIZE,this.i18n=I18N.i(t.language),t.initialFile&&this.onFileSelected(this.props.initialFile)}}A.contextType=m.W8},44338:function(t,i,e){e.d(i,{Y:()=>a});let a=(0,e(17402).createContext)("")},1140:function(t,i,e){if(e.d(i,{MS:()=>M,Rr:()=>_,St:()=>x,c2:()=>f,et:()=>T,ic:()=>E,yn:()=>g}),/^(23133|90887)$/.test(e.j))var a=e(69277);if(/^(23133|90887)$/.test(e.j))var d=e(70408);if(/^(23133|90887)$/.test(e.j))var o=e(32641);var l=e(4006);if(90887==e.j)var s=e(35404);var n=e(73294),r=e(35369),p=e(16074),u=e(76977),c=e(75303),h=e(63136),m=e(44338),U=e(78526),y=e(11510),v=e(39318);e(79913);let g=t=>{var i,{title:e,children:n,id:c,pub:y,withSubdomainLink:g}=t,E=(0,o._)(t,["title","children","id","pub","withSubdomainLink"]);let T=(0,U.L)();return(0,l.Y)(m.Y.Provider,{value:null!=e?e:"",children:(0,l.Y)(u.I1,{gap:12,id:c,children:(0,l.FD)(u.I1,(0,d._)((0,a._)({radius:"sm",bg:"primary",shadow:"xs",border:"detail"},E),{children:[(0,l.FD)(u.Ye,{alignItems:"center",justifyContent:"space-between",gap:8,padding:20,children:[(0,l.Y)(h.EY.B2,{weight:"bold",children:e}),y&&g&&(0,l.Y)(r.$n,{priority:"secondary",size:"sm",trailing:(0,l.Y)(s.A,{size:14}),onClick:()=>T((0,v.fOI)(y)),children:(0,l.Y)(h.EY.B4,{paddingRight:2,children:null!=(i=y.custom_domain)?i:"".concat(y.subdomain,".substack.com")})})]}),(0,l.Y)(p.c,{}),(0,l.Y)(u.I1,{gap:20,padding:20,children:n})]}))})})},E=t=>{var{id:i,children:e}=t,s=(0,o._)(t,["id","children"]);return(0,l.Y)(u.Ye,(0,d._)((0,a._)({justifyContent:"space-between",alignItems:"center",id:i,gap:24,minHeight:48},s),{children:e}))},T=t=>{let{id:i,children:e}=t;return(0,l.Y)(u.I1,{id:i,gap:8,children:e})},M=t=>{let{id:i,children:e}=t,a=(0,y.Iu)();return(0,l.Y)(u.pT,{direction:a?"column":"row",alignItems:a?"stretch":"center",id:i,gap:a?12:20,minHeight:48,children:e})},_=t=>{let{primaryText:i,secondaryText:e}=t;return(0,l.FD)(u.I1,{gap:2,flex:"grow",children:[(0,l.Y)(h.EY.B4,{weight:"semibold",children:i}),e&&(0,l.Y)(h.EY.B4,{color:"secondary",children:e})]})},f=t=>{let{title:i,children:e}=t;return(0,l.FD)(n.yQ,{children:[(0,l.Y)(p.c,{pullX:20}),(0,l.Y)(u.I1,{gap:12,children:(0,l.FD)(u.Ye,{justifyContent:"space-between",alignItems:"center",height:24,children:[(0,l.Y)(h.EY.B2,{weight:"bold",children:i}),e]})})]})},x=(0,c.I4)({display:"flex",direction:"column",gap:20,paddingLeft:{desktop:20,mobile:12},borderLeft:"detail"})},45458:function(t,i,e){e.d(i,{Y:()=>p});var a=e(4006),d=e(32485),o=e.n(d),l=e(45418),s=e(76977),n=e(63136),r=e(90117);function p(t){let{visible:i=!1,label:e="Drop file here to upload",blur:d=!0,className:p}=t;return(0,a.FD)(s.I1,{className:o()(i&&r.A.visible,d&&r.A.blur,r.A.outer,p),alignItems:"center",justifyContent:"center",gap:12,children:[(0,a.Y)(l.A,{size:32,stroke:"var(--color-utility-white)",className:o()(i&&r.A.visible,r.A.icon)}),e&&(0,a.Y)(n.EY.B3,{weight:"regular",color:"white",children:e})]})}},45846:function(t,i,e){e.d(i,{SC:()=>s,uo:()=>n});var a=e(4006),d=e(17402),o=e(35369),l=e(19832);function s(){let[t,i]=(0,d.useState)(null);return{confirm:()=>new Promise((e,a)=>{t&&a(Error("Already confirming.")),i({resolve:e,reject:a})}),isConfirming:!!t,handleConfirm:e=>{i(null),null==t||t.resolve(e)},handleCancel:e=>{i(null),null==t||t.resolve(e)}}}function n(t){let{title:i,body:e,cancelLabel:d="Cancel",confirmLabel:s="Confirm",modal:n}=t;return(0,a.Y)(l.m,{isOpen:n.isConfirming,onClose:()=>n.handleCancel(!1),title:i,description:e,primaryButton:(0,a.Y)(o.$n,{priority:"destructive",onClick:()=>n.handleConfirm(!0),children:s}),secondaryButton:(0,a.Y)(o.$n,{priority:"secondary",onClick:()=>n.handleCancel(!1),children:d})})}}}]);