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