Loading
function(e,t,l){l.d(t,{T:()=>h,p:()=>m}),l(323874),l(14289),l(35956),l(321073);var a=l(627968),n=l(64700),i=l(735438),s=l(194498),r=l(77729),c=l(372684),o=l(607814),u=l(956050);let d=n.createContext(null);function m(e){var t,m,h;let f,p,v,x,g,j,b,{children:C,clip:y,modalContainerRef:E,editOnly:N=!1}=e,A=y.type===c.nQ.SCREENSHOT,{initialDuration:k,initialCropStart:w,initialCropEnd:R,initialCurrentTime:T}=(f=y.length/1e3,p=y.editMetadata?.start??0,v=y.editMetadata?.end??0,x=0!==p||0!==v&&v!==f,{initialDuration:f,initialCropStart:p,initialCropEnd:v,isCropped:x,initialCurrentTime:x?p:f/2}),L=n.useMemo(()=>null==r.A.clips.getClipProtocolURLFromPath?null:r.A.clips.getClipProtocolURLFromPath(y.filepath),[y.filepath]),[I,O]=n.useState({clipName:y.name,isTemporary:y.isTemporary??!1,cropStart:w,cropEnd:0===R?k:R,voiceAudioEnabled:y.editMetadata?.voiceAudio??!0,applicationAudioEnabled:y.editMetadata?.applicationAudio??!0,soundboardAudioEnabled:y.editMetadata?.soundboardAudio??!0}),{clipName:S,isTemporary:M,cropStart:D,cropEnd:_,voiceAudioEnabled:P,applicationAudioEnabled:U,soundboardAudioEnabled:G}=I,z=n.useRef(null),B=n.useRef(T),[$,F]=n.useState(k),[V,H]=n.useState(!1),[K,Z]=n.useState(!1),W=n.useRef(new Set),X=n.useRef(!1),[J,Y]=n.useState(null),[Q,q]=n.useState(null),[ee,et]=n.useState(null),[el,ea]=n.useState([]),[en,ei]=n.useState(!1),es=n.useCallback(()=>({...y,name:S,editMetadata:{start:D,end:_,applicationAudio:U,voiceAudio:P,soundboardAudio:G}}),[y,S,D,_,U,P,G]),er=n.useCallback(e=>{z.current=e,Y(e.videoElement)},[]),ec=n.useCallback((e,t,l)=>{q(e),ea(t),et(l)},[]),eo=n.useCallback(()=>{ei(!0)},[]);t=y.filepath,n.useEffect(()=>{let e=new Worker(new URL("/assets/"+l.u("92994"),l.b));return async function(){let l;try{l=await r.A.clips.loadClip(t)}catch{eo();return}e.onmessage=e=>{let{videoBuffer:t,audioTracks:l,audioBuffer:a}=e.data,n=URL.createObjectURL(new Blob([t],{type:"video/mp4"})),i=[];for(let e of l){let t=URL.createObjectURL(new Blob([e.buffer],{type:"audio/mp4"}));i.push({arrayBuffer:e.buffer,url:t,trackName:e.trackName})}ec(n,i,URL.createObjectURL(new Blob([a],{type:"audio/mp4"})))},e.postMessage({videoBuffer:l.data.buffer},[l.data.buffer])}(),()=>{e.terminate()}},[t,ec,eo]),n.useEffect(()=>()=>{null!=Q&&URL.revokeObjectURL(Q)},[Q]),n.useEffect(()=>()=>{for(let e of el)URL.revokeObjectURL(e.url)},[el]),n.useEffect(()=>()=>{null!=ee&&URL.revokeObjectURL(ee)},[ee]),m=y.id,h={name:S,editMetadata:{start:D,end:_,voiceAudio:P,applicationAudio:U,soundboardAudio:G}},(g=n.useRef(h)).current=h,n.useEffect(()=>{async function e(){let e={},t=g.current;A||null==L||(e={thumbnail:await (0,u.m)(L,t.editMetadata.start)}),(0,o.Yy)(m,{...t,...e})}return()=>{N||e()}},[m,L,A,g,N]),n.useEffect(()=>{$>0&&_<=0&&k<=0&&O(e=>({...e,cropEnd:$}))},[$,_,k]);let eu=n.useMemo(()=>_-D,[D,_]),ed=n.useCallback(e=>(W.current.add(e),()=>{W.current.delete(e)}),[W]),{setCropStart:em,setCropEnd:eh,setCrop:ef}=(j=n.useCallback(e=>{let t=(0,i.clamp)(e,0,_-1);O(e=>({...e,cropStart:t})),z?.current?.seek(t)},[_,O,z]),{setCropStart:j,setCropEnd:n.useCallback(e=>{let t=(0,i.clamp)(e,D+1,$);O(e=>({...e,cropEnd:t})),z?.current?.seek(t)},[D,$,O,z]),setCrop:n.useCallback((e,t)=>{O(l=>({...l,cropStart:e,cropEnd:t}))},[O])}),{play:ep,pause:ev,seek:ex}=(b=n.useCallback(()=>{z?.current?.play()},[z]),{play:b,pause:n.useCallback(()=>{z?.current?.pause()},[z]),seek:n.useCallback(e=>{z?.current?.seek(e)},[z])});(0,s.A)(()=>{let e=z.current?.videoElement;if(null==e||!X.current)return;let t=e.currentTime;B.current!==t&&(B.current=t,W.current.forEach(e=>e.onTimeUpdate?.(t))),E.current?.style.setProperty("--custom-video-progress",`${t/e.duration*100}%`)}),n.useEffect(()=>{if(null==J)return;let e=()=>{H(!0),W.current.forEach(e=>e.onPlay?.())},t=()=>{H(!1),W.current.forEach(e=>e.onPause?.())},l=()=>{F(J.duration)},a=()=>{Z(!0),F(J.duration),z?.current?.seek(T)},n=()=>{X.current=!0};return J.addEventListener("play",e),J.addEventListener("pause",t),J.addEventListener("durationchange",l),J.addEventListener("loadedmetadata",a),J.addEventListener("seeked",n),J.duration>0&&F(J.duration),J.readyState>=1&&(Z(!0),z?.current?.seek(T)),H(!J.paused),()=>{J.removeEventListener("play",e),J.removeEventListener("pause",t),J.removeEventListener("durationchange",l),J.removeEventListener("loadedmetadata",a),J.removeEventListener("seeked",n)}},[J,T,z,W,H,Z,F,X]);let eg=n.useCallback(e=>{O(t=>({...t,clipName:e}))},[]),ej=n.useCallback(e=>{O(t=>({...t,isTemporary:e}))},[]),eb=n.useCallback(e=>{O(t=>({...t,applicationAudioEnabled:e}))},[]),eC=n.useCallback(e=>{O(t=>({...t,voiceAudioEnabled:e}))},[]),ey=n.useCallback(e=>{O(t=>({...t,soundboardAudioEnabled:e}))},[]),eE=n.useMemo(()=>function(){let[e,t]=n.useState(B.current);return n.useEffect(()=>{let e={onTimeUpdate:e=>{t(e)}};return W.current.add(e),()=>{W.current.delete(e)}},[]),e},[B,W]),eN=n.useMemo(()=>({useCurrentTime:eE,duration:$,isPlaying:V,isLoaded:K,cropStart:D,cropEnd:_,cropDuration:eu,setCropStart:em,setCropEnd:eh,setCrop:ef,play:ep,pause:ev,seek:ex,subscribe:ed,setVideoPlayerRef:er,videoPlayerRef:z,videoURL:Q,audioTracks:el,hasError:en,applicationAudioEnabled:U,setApplicationAudioEnabled:eb,voiceAudioEnabled:P,setVoiceAudioEnabled:eC,soundboardAudioEnabled:G,setSoundboardAudioEnabled:ey,getEditedClip:es,clipName:S,setClipName:eg,isTemporary:M,audioURL:ee,setIsTemporary:ej,clip:y,editOnly:N}),[N,eE,$,V,K,D,_,eu,em,eh,ef,ep,ev,ex,ee,ed,er,Q,el,en,U,eb,P,eC,G,ey,es,S,eg,M,ej,y]);return(0,a.jsx)(d.Provider,{value:eN,children:C})}function h(){let e=n.useContext(d);if(null==e)throw Error("useClipContext must be used within a ClipContextProvider");return e}}