melies-video-editor 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/dist/index.cjs +8 -8
  2. package/dist/index.js +1294 -1294
  3. package/package.json +1 -1
package/dist/index.cjs CHANGED
@@ -1,14 +1,14 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const R=require("react"),Bt=require("@xzdarcy/react-timeline-editor"),_t=require("howler"),Ft=require("antd"),ve=require("@dnd-kit/core");var gt={exports:{}},et={};var jt;function Ut(){if(jt)return et;jt=1;var u=R,a=Symbol.for("react.element"),m=Symbol.for("react.fragment"),d=Object.prototype.hasOwnProperty,g=u.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,S={key:!0,ref:!0,__self:!0,__source:!0};function E(T,x,A){var P,N={},q=null,z=null;A!==void 0&&(q=""+A),x.key!==void 0&&(q=""+x.key),x.ref!==void 0&&(z=x.ref);for(P in x)d.call(x,P)&&!S.hasOwnProperty(P)&&(N[P]=x[P]);if(T&&T.defaultProps)for(P in x=T.defaultProps,x)N[P]===void 0&&(N[P]=x[P]);return{$$typeof:a,type:T,key:q,ref:z,props:N,_owner:g.current}}return et.Fragment=m,et.jsx=E,et.jsxs=E,et}var tt={};var Ot;function Vt(){return Ot||(Ot=1,process.env.NODE_ENV!=="production"&&(function(){var u=R,a=Symbol.for("react.element"),m=Symbol.for("react.portal"),d=Symbol.for("react.fragment"),g=Symbol.for("react.strict_mode"),S=Symbol.for("react.profiler"),E=Symbol.for("react.provider"),T=Symbol.for("react.context"),x=Symbol.for("react.forward_ref"),A=Symbol.for("react.suspense"),P=Symbol.for("react.suspense_list"),N=Symbol.for("react.memo"),q=Symbol.for("react.lazy"),z=Symbol.for("react.offscreen"),ue=Symbol.iterator,X="@@iterator";function V(t){if(t===null||typeof t!="object")return null;var l=ue&&t[ue]||t[X];return typeof l=="function"?l:null}var K=u.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function M(t){{for(var l=arguments.length,e=new Array(l>1?l-1:0),n=1;n<l;n++)e[n-1]=arguments[n];de("error",t,e)}}function de(t,l,e){{var n=K.ReactDebugCurrentFrame,r=n.getStackAddendum();r!==""&&(l+="%s",e=e.concat([r]));var s=e.map(function(i){return String(i)});s.unshift("Warning: "+l),Function.prototype.apply.call(console[t],console,s)}}var be=!1,ie=!1,fe=!1,ot=!1,Ne=!1,ke;ke=Symbol.for("react.module.reference");function Ye(t){return!!(typeof t=="string"||typeof t=="function"||t===d||t===S||Ne||t===g||t===A||t===P||ot||t===z||be||ie||fe||typeof t=="object"&&t!==null&&(t.$$typeof===q||t.$$typeof===N||t.$$typeof===E||t.$$typeof===T||t.$$typeof===x||t.$$typeof===ke||t.getModuleId!==void 0))}function qe(t,l,e){var n=t.displayName;if(n)return n;var r=l.displayName||l.name||"";return r!==""?e+"("+r+")":e}function De(t){return t.displayName||"Context"}function oe(t){if(t==null)return null;if(typeof t.tag=="number"&&M("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t;switch(t){case d:return"Fragment";case m:return"Portal";case S:return"Profiler";case g:return"StrictMode";case A:return"Suspense";case P:return"SuspenseList"}if(typeof t=="object")switch(t.$$typeof){case T:var l=t;return De(l)+".Consumer";case E:var e=t;return De(e._context)+".Provider";case x:return qe(t,t.render,"ForwardRef");case N:var n=t.displayName||null;return n!==null?n:oe(t.type)||"Memo";case q:{var r=t,s=r._payload,i=r._init;try{return oe(i(s))}catch{return null}}}return null}var se=Object.assign,ee=0,Me,ye,y,O,D,F,_;function L(){}L.__reactDisabledLog=!0;function H(){{if(ee===0){Me=console.log,ye=console.info,y=console.warn,O=console.error,D=console.group,F=console.groupCollapsed,_=console.groupEnd;var t={configurable:!0,enumerable:!0,value:L,writable:!0};Object.defineProperties(console,{info:t,log:t,warn:t,error:t,group:t,groupCollapsed:t,groupEnd:t})}ee++}}function Se(){{if(ee--,ee===0){var t={configurable:!0,enumerable:!0,writable:!0};Object.defineProperties(console,{log:se({},t,{value:Me}),info:se({},t,{value:ye}),warn:se({},t,{value:y}),error:se({},t,{value:O}),group:se({},t,{value:D}),groupCollapsed:se({},t,{value:F}),groupEnd:se({},t,{value:_})})}ee<0&&M("disabledDepth fell below zero. This is a bug in React. Please file an issue.")}}var me=K.ReactCurrentDispatcher,ae;function Pe(t,l,e){{if(ae===void 0)try{throw Error()}catch(r){var n=r.stack.trim().match(/\n( *(at )?)/);ae=n&&n[1]||""}return`
2
- `+ae+t}}var Le=!1,ze;{var pe=typeof WeakMap=="function"?WeakMap:Map;ze=new pe}function J(t,l){if(!t||Le)return"";{var e=ze.get(t);if(e!==void 0)return e}var n;Le=!0;var r=Error.prepareStackTrace;Error.prepareStackTrace=void 0;var s;s=me.current,me.current=null,H();try{if(l){var i=function(){throw Error()};if(Object.defineProperty(i.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(i,[])}catch(w){n=w}Reflect.construct(t,[],i)}else{try{i.call()}catch(w){n=w}t.call(i.prototype)}}else{try{throw Error()}catch(w){n=w}t()}}catch(w){if(w&&n&&typeof w.stack=="string"){for(var o=w.stack.split(`
3
- `),c=n.stack.split(`
4
- `),f=o.length-1,p=c.length-1;f>=1&&p>=0&&o[f]!==c[p];)p--;for(;f>=1&&p>=0;f--,p--)if(o[f]!==c[p]){if(f!==1||p!==1)do if(f--,p--,p<0||o[f]!==c[p]){var h=`
5
- `+o[f].replace(" at new "," at ");return t.displayName&&h.includes("<anonymous>")&&(h=h.replace("<anonymous>",t.displayName)),typeof t=="function"&&ze.set(t,h),h}while(f>=1&&p>=0);break}}}finally{Le=!1,me.current=s,Se(),Error.prepareStackTrace=r}var b=t?t.displayName||t.name:"",k=b?Pe(b):"";return typeof t=="function"&&ze.set(t,k),k}function te(t,l,e){return J(t,!1)}function $e(t){var l=t.prototype;return!!(l&&l.isReactComponent)}function Be(t,l,e){if(t==null)return"";if(typeof t=="function")return J(t,$e(t));if(typeof t=="string")return Pe(t);switch(t){case A:return Pe("Suspense");case P:return Pe("SuspenseList")}if(typeof t=="object")switch(t.$$typeof){case x:return te(t.render);case N:return Be(t.type,l,e);case q:{var n=t,r=n._payload,s=n._init;try{return Be(s(r),l,e)}catch{}}}return""}var Ie=Object.prototype.hasOwnProperty,G={},W=K.ReactDebugCurrentFrame;function Ce(t){if(t){var l=t._owner,e=Be(t.type,t._source,l?l.type:null);W.setExtraStackFrame(e)}else W.setExtraStackFrame(null)}function Ue(t,l,e,n,r){{var s=Function.call.bind(Ie);for(var i in t)if(s(t,i)){var o=void 0;try{if(typeof t[i]!="function"){var c=Error((n||"React class")+": "+e+" type `"+i+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+typeof t[i]+"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.");throw c.name="Invariant Violation",c}o=t[i](l,i,n,e,null,"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED")}catch(f){o=f}o&&!(o instanceof Error)&&(Ce(r),M("%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).",n||"React class",e,i,typeof o),Ce(null)),o instanceof Error&&!(o.message in G)&&(G[o.message]=!0,Ce(r),M("Failed %s type: %s",e,o.message),Ce(null))}}}var Fe=Array.isArray;function Ve(t){return Fe(t)}function ge(t){{var l=typeof Symbol=="function"&&Symbol.toStringTag,e=l&&t[Symbol.toStringTag]||t.constructor.name||"Object";return e}}function Xe(t){try{return Re(t),!1}catch{return!0}}function Re(t){return""+t}function st(t){if(Xe(t))return M("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.",ge(t)),Re(t)}var We=K.ReactCurrentOwner,Je={key:!0,ref:!0,__self:!0,__source:!0},Ge,Ze;function at(t){if(Ie.call(t,"ref")){var l=Object.getOwnPropertyDescriptor(t,"ref").get;if(l&&l.isReactWarning)return!1}return t.ref!==void 0}function bt(t){if(Ie.call(t,"key")){var l=Object.getOwnPropertyDescriptor(t,"key").get;if(l&&l.isReactWarning)return!1}return t.key!==void 0}function yt(t,l){typeof t.ref=="string"&&We.current}function St(t,l){{var e=function(){Ge||(Ge=!0,M("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)",l))};e.isReactWarning=!0,Object.defineProperty(t,"key",{get:e,configurable:!0})}}function He(t,l){{var e=function(){Ze||(Ze=!0,M("%s: `ref` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)",l))};e.isReactWarning=!0,Object.defineProperty(t,"ref",{get:e,configurable:!0})}}var Rt=function(t,l,e,n,r,s,i){var o={$$typeof:a,type:t,key:l,ref:e,props:i,_owner:s};return o._store={},Object.defineProperty(o._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:!1}),Object.defineProperty(o,"_self",{configurable:!1,enumerable:!1,writable:!1,value:n}),Object.defineProperty(o,"_source",{configurable:!1,enumerable:!1,writable:!1,value:r}),Object.freeze&&(Object.freeze(o.props),Object.freeze(o)),o};function wt(t,l,e,n,r){{var s,i={},o=null,c=null;e!==void 0&&(st(e),o=""+e),bt(l)&&(st(l.key),o=""+l.key),at(l)&&(c=l.ref,yt(l,r));for(s in l)Ie.call(l,s)&&!Je.hasOwnProperty(s)&&(i[s]=l[s]);if(t&&t.defaultProps){var f=t.defaultProps;for(s in f)i[s]===void 0&&(i[s]=f[s])}if(o||c){var p=typeof t=="function"?t.displayName||t.name||"Unknown":t;o&&St(i,p),c&&He(i,p)}return Rt(t,o,c,r,n,We.current,i)}}var _e=K.ReactCurrentOwner,ct=K.ReactDebugCurrentFrame;function ce(t){if(t){var l=t._owner,e=Be(t.type,t._source,l?l.type:null);ct.setExtraStackFrame(e)}else ct.setExtraStackFrame(null)}var Ke;Ke=!1;function Qe(t){return typeof t=="object"&&t!==null&&t.$$typeof===a}function lt(){{if(_e.current){var t=oe(_e.current.type);if(t)return`
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const D=require("react"),Te=require("@xzdarcy/react-timeline-editor"),Oe=require("howler"),He=require("antd"),EA=require("@dnd-kit/core");var de={exports:{}},Ae={};var Re;function Le(){if(Re)return Ae;Re=1;var u=D,s=Symbol.for("react.element"),l=Symbol.for("react.fragment"),g=Object.prototype.hasOwnProperty,d=u.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,I={key:!0,ref:!0,__self:!0,__source:!0};function m(b,v,p){var N,F={},q=null,W=null;p!==void 0&&(q=""+p),v.key!==void 0&&(q=""+v.key),v.ref!==void 0&&(W=v.ref);for(N in v)g.call(v,N)&&!I.hasOwnProperty(N)&&(F[N]=v[N]);if(b&&b.defaultProps)for(N in v=b.defaultProps,v)F[N]===void 0&&(F[N]=v[N]);return{$$typeof:s,type:b,key:q,ref:W,props:F,_owner:d.current}}return Ae.Fragment=l,Ae.jsx=m,Ae.jsxs=m,Ae}var ee={};var Se;function je(){return Se||(Se=1,process.env.NODE_ENV!=="production"&&(function(){var u=D,s=Symbol.for("react.element"),l=Symbol.for("react.portal"),g=Symbol.for("react.fragment"),d=Symbol.for("react.strict_mode"),I=Symbol.for("react.profiler"),m=Symbol.for("react.provider"),b=Symbol.for("react.context"),v=Symbol.for("react.forward_ref"),p=Symbol.for("react.suspense"),N=Symbol.for("react.suspense_list"),F=Symbol.for("react.memo"),q=Symbol.for("react.lazy"),W=Symbol.for("react.offscreen"),uA=Symbol.iterator,K="@@iterator";function j(e){if(e===null||typeof e!="object")return null;var c=uA&&e[uA]||e[K];return typeof c=="function"?c:null}var V=u.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function U(e){{for(var c=arguments.length,A=new Array(c>1?c-1:0),t=1;t<c;t++)A[t-1]=arguments[t];gA("error",e,A)}}function gA(e,c,A){{var t=V.ReactDebugCurrentFrame,n=t.getStackAddendum();n!==""&&(c+="%s",A=A.concat([n]));var o=A.map(function(r){return String(r)});o.unshift("Warning: "+c),Function.prototype.apply.call(console[e],console,o)}}var CA=!1,rA=!1,BA=!1,ie=!1,FA=!1,yA;yA=Symbol.for("react.module.reference");function JA(e){return!!(typeof e=="string"||typeof e=="function"||e===g||e===I||FA||e===d||e===p||e===N||ie||e===W||CA||rA||BA||typeof e=="object"&&e!==null&&(e.$$typeof===q||e.$$typeof===F||e.$$typeof===m||e.$$typeof===b||e.$$typeof===v||e.$$typeof===yA||e.getModuleId!==void 0))}function qA(e,c,A){var t=e.displayName;if(t)return t;var n=c.displayName||c.name||"";return n!==""?A+"("+n+")":A}function xA(e){return e.displayName||"Context"}function iA(e){if(e==null)return null;if(typeof e.tag=="number"&&U("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case g:return"Fragment";case l:return"Portal";case I:return"Profiler";case d:return"StrictMode";case p:return"Suspense";case N:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case b:var c=e;return xA(c)+".Consumer";case m:var A=e;return xA(A._context)+".Provider";case v:return qA(e,e.render,"ForwardRef");case F:var t=e.displayName||null;return t!==null?t:iA(e.type)||"Memo";case q:{var n=e,o=n._payload,r=n._init;try{return iA(r(o))}catch{return null}}}return null}var oA=Object.assign,AA=0,UA,wA,w,S,x,H,O;function G(){}G.__reactDisabledLog=!0;function k(){{if(AA===0){UA=console.log,wA=console.info,w=console.warn,S=console.error,x=console.group,H=console.groupCollapsed,O=console.groupEnd;var e={configurable:!0,enumerable:!0,value:G,writable:!0};Object.defineProperties(console,{info:e,log:e,warn:e,error:e,group:e,groupCollapsed:e,groupEnd:e})}AA++}}function IA(){{if(AA--,AA===0){var e={configurable:!0,enumerable:!0,writable:!0};Object.defineProperties(console,{log:oA({},e,{value:UA}),info:oA({},e,{value:wA}),warn:oA({},e,{value:w}),error:oA({},e,{value:S}),group:oA({},e,{value:x}),groupCollapsed:oA({},e,{value:H}),groupEnd:oA({},e,{value:O})})}AA<0&&U("disabledDepth fell below zero. This is a bug in React. Please file an issue.")}}var lA=V.ReactCurrentDispatcher,sA;function NA(e,c,A){{if(sA===void 0)try{throw Error()}catch(n){var t=n.stack.trim().match(/\n( *(at )?)/);sA=t&&t[1]||""}return`
2
+ `+sA+e}}var GA=!1,WA;{var fA=typeof WeakMap=="function"?WeakMap:Map;WA=new fA}function z(e,c){if(!e||GA)return"";{var A=WA.get(e);if(A!==void 0)return A}var t;GA=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;var o;o=lA.current,lA.current=null,k();try{if(c){var r=function(){throw Error()};if(Object.defineProperty(r.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(r,[])}catch(h){t=h}Reflect.construct(e,[],r)}else{try{r.call()}catch(h){t=h}e.call(r.prototype)}}else{try{throw Error()}catch(h){t=h}e()}}catch(h){if(h&&t&&typeof h.stack=="string"){for(var i=h.stack.split(`
3
+ `),a=t.stack.split(`
4
+ `),B=i.length-1,f=a.length-1;B>=1&&f>=0&&i[B]!==a[f];)f--;for(;B>=1&&f>=0;B--,f--)if(i[B]!==a[f]){if(B!==1||f!==1)do if(B--,f--,f<0||i[B]!==a[f]){var Q=`
5
+ `+i[B].replace(" at new "," at ");return e.displayName&&Q.includes("<anonymous>")&&(Q=Q.replace("<anonymous>",e.displayName)),typeof e=="function"&&WA.set(e,Q),Q}while(B>=1&&f>=0);break}}}finally{GA=!1,lA.current=o,IA(),Error.prepareStackTrace=n}var C=e?e.displayName||e.name:"",y=C?NA(C):"";return typeof e=="function"&&WA.set(e,y),y}function eA(e,c,A){return z(e,!1)}function YA(e){var c=e.prototype;return!!(c&&c.isReactComponent)}function TA(e,c,A){if(e==null)return"";if(typeof e=="function")return z(e,YA(e));if(typeof e=="string")return NA(e);switch(e){case p:return NA("Suspense");case N:return NA("SuspenseList")}if(typeof e=="object")switch(e.$$typeof){case v:return eA(e.render);case F:return TA(e.type,c,A);case q:{var t=e,n=t._payload,o=t._init;try{return TA(o(n),c,A)}catch{}}}return""}var MA=Object.prototype.hasOwnProperty,Z={},X=V.ReactDebugCurrentFrame;function PA(e){if(e){var c=e._owner,A=TA(e.type,e._source,c?c.type:null);X.setExtraStackFrame(A)}else X.setExtraStackFrame(null)}function LA(e,c,A,t,n){{var o=Function.call.bind(MA);for(var r in e)if(o(e,r)){var i=void 0;try{if(typeof e[r]!="function"){var a=Error((t||"React class")+": "+A+" type `"+r+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+typeof e[r]+"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.");throw a.name="Invariant Violation",a}i=e[r](c,r,t,A,null,"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED")}catch(B){i=B}i&&!(i instanceof Error)&&(PA(n),U("%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).",t||"React class",A,r,typeof i),PA(null)),i instanceof Error&&!(i.message in Z)&&(Z[i.message]=!0,PA(n),U("Failed %s type: %s",A,i.message),PA(null))}}}var HA=Array.isArray;function jA(e){return HA(e)}function dA(e){{var c=typeof Symbol=="function"&&Symbol.toStringTag,A=c&&e[Symbol.toStringTag]||e.constructor.name||"Object";return A}}function KA(e){try{return DA(e),!1}catch{return!0}}function DA(e){return""+e}function oe(e){if(KA(e))return U("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.",dA(e)),DA(e)}var XA=V.ReactCurrentOwner,zA={key:!0,ref:!0,__self:!0,__source:!0},ZA,_A;function se(e){if(MA.call(e,"ref")){var c=Object.getOwnPropertyDescriptor(e,"ref").get;if(c&&c.isReactWarning)return!1}return e.ref!==void 0}function Ce(e){if(MA.call(e,"key")){var c=Object.getOwnPropertyDescriptor(e,"key").get;if(c&&c.isReactWarning)return!1}return e.key!==void 0}function we(e,c){typeof e.ref=="string"&&XA.current}function Ie(e,c){{var A=function(){ZA||(ZA=!0,U("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)",c))};A.isReactWarning=!0,Object.defineProperty(e,"key",{get:A,configurable:!0})}}function kA(e,c){{var A=function(){_A||(_A=!0,U("%s: `ref` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)",c))};A.isReactWarning=!0,Object.defineProperty(e,"ref",{get:A,configurable:!0})}}var De=function(e,c,A,t,n,o,r){var i={$$typeof:s,type:e,key:c,ref:A,props:r,_owner:o};return i._store={},Object.defineProperty(i._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:!1}),Object.defineProperty(i,"_self",{configurable:!1,enumerable:!1,writable:!1,value:t}),Object.defineProperty(i,"_source",{configurable:!1,enumerable:!1,writable:!1,value:n}),Object.freeze&&(Object.freeze(i.props),Object.freeze(i)),i};function he(e,c,A,t,n){{var o,r={},i=null,a=null;A!==void 0&&(oe(A),i=""+A),Ce(c)&&(oe(c.key),i=""+c.key),se(c)&&(a=c.ref,we(c,n));for(o in c)MA.call(c,o)&&!zA.hasOwnProperty(o)&&(r[o]=c[o]);if(e&&e.defaultProps){var B=e.defaultProps;for(o in B)r[o]===void 0&&(r[o]=B[o])}if(i||a){var f=typeof e=="function"?e.displayName||e.name||"Unknown":e;i&&Ie(r,f),a&&kA(r,f)}return De(e,i,a,n,t,XA.current,r)}}var OA=V.ReactCurrentOwner,ae=V.ReactDebugCurrentFrame;function aA(e){if(e){var c=e._owner,A=TA(e.type,e._source,c?c.type:null);ae.setExtraStackFrame(A)}else ae.setExtraStackFrame(null)}var VA;VA=!1;function $A(e){return typeof e=="object"&&e!==null&&e.$$typeof===s}function ce(){{if(OA.current){var e=iA(OA.current.type);if(e)return`
6
6
 
7
- Check the render method of \``+t+"`."}return""}}function Et(t){return""}var ut={};function xt(t){{var l=lt();if(!l){var e=typeof t=="string"?t:t.displayName||t.name;e&&(l=`
7
+ Check the render method of \``+e+"`."}return""}}function me(e){return""}var ue={};function ve(e){{var c=ce();if(!c){var A=typeof e=="string"?e:e.displayName||e.name;A&&(c=`
8
8
 
9
- Check the top-level render call using <`+e+">.")}return l}}function dt(t,l){{if(!t._store||t._store.validated||t.key!=null)return;t._store.validated=!0;var e=xt(l);if(ut[e])return;ut[e]=!0;var n="";t&&t._owner&&t._owner!==_e.current&&(n=" It was passed a child from "+oe(t._owner.type)+"."),ce(t),M('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.',e,n),ce(null)}}function ft(t,l){{if(typeof t!="object")return;if(Ve(t))for(var e=0;e<t.length;e++){var n=t[e];Qe(n)&&dt(n,l)}else if(Qe(t))t._store&&(t._store.validated=!0);else if(t){var r=V(t);if(typeof r=="function"&&r!==t.entries)for(var s=r.call(t),i;!(i=s.next()).done;)Qe(i.value)&&dt(i.value,l)}}}function Tt(t){{var l=t.type;if(l==null||typeof l=="string")return;var e;if(typeof l=="function")e=l.propTypes;else if(typeof l=="object"&&(l.$$typeof===x||l.$$typeof===N))e=l.propTypes;else return;if(e){var n=oe(l);Ue(e,t.props,"prop",n,t)}else if(l.PropTypes!==void 0&&!Ke){Ke=!0;var r=oe(l);M("Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?",r||"Unknown")}typeof l.getDefaultProps=="function"&&!l.getDefaultProps.isReactClassApproved&&M("getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.")}}function At(t){{for(var l=Object.keys(t.props),e=0;e<l.length;e++){var n=l[e];if(n!=="children"&&n!=="key"){ce(t),M("Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.",n),ce(null);break}}t.ref!==null&&(ce(t),M("Invalid attribute `ref` supplied to `React.Fragment`."),ce(null))}}var mt={};function pt(t,l,e,n,r,s){{var i=Ye(t);if(!i){var o="";(t===void 0||typeof t=="object"&&t!==null&&Object.keys(t).length===0)&&(o+=" You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.");var c=Et();c?o+=c:o+=lt();var f;t===null?f="null":Ve(t)?f="array":t!==void 0&&t.$$typeof===a?(f="<"+(oe(t.type)||"Unknown")+" />",o=" Did you accidentally export a JSX literal instead of a component?"):f=typeof t,M("React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s",f,o)}var p=wt(t,l,e,r,s);if(p==null)return p;if(i){var h=l.children;if(h!==void 0)if(n)if(Ve(h)){for(var b=0;b<h.length;b++)ft(h[b],t);Object.freeze&&Object.freeze(h)}else M("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else ft(h,t)}if(Ie.call(l,"key")){var k=oe(t),w=Object.keys(l).filter(function(C){return C!=="key"}),I=w.length>0?"{key: someKey, "+w.join(": ..., ")+": ...}":"{key: someKey}";if(!mt[k+I]){var j=w.length>0?"{"+w.join(": ..., ")+": ...}":"{}";M(`A props object containing a "key" prop is being spread into JSX:
9
+ Check the top-level render call using <`+A+">.")}return c}}function ge(e,c){{if(!e._store||e._store.validated||e.key!=null)return;e._store.validated=!0;var A=ve(c);if(ue[A])return;ue[A]=!0;var t="";e&&e._owner&&e._owner!==OA.current&&(t=" It was passed a child from "+iA(e._owner.type)+"."),aA(e),U('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.',A,t),aA(null)}}function Be(e,c){{if(typeof e!="object")return;if(jA(e))for(var A=0;A<e.length;A++){var t=e[A];$A(t)&&ge(t,c)}else if($A(e))e._store&&(e._store.validated=!0);else if(e){var n=j(e);if(typeof n=="function"&&n!==e.entries)for(var o=n.call(e),r;!(r=o.next()).done;)$A(r.value)&&ge(r.value,c)}}}function be(e){{var c=e.type;if(c==null||typeof c=="string")return;var A;if(typeof c=="function")A=c.propTypes;else if(typeof c=="object"&&(c.$$typeof===v||c.$$typeof===F))A=c.propTypes;else return;if(A){var t=iA(c);LA(A,e.props,"prop",t,e)}else if(c.PropTypes!==void 0&&!VA){VA=!0;var n=iA(c);U("Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?",n||"Unknown")}typeof c.getDefaultProps=="function"&&!c.getDefaultProps.isReactClassApproved&&U("getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.")}}function pe(e){{for(var c=Object.keys(e.props),A=0;A<c.length;A++){var t=c[A];if(t!=="children"&&t!=="key"){aA(e),U("Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.",t),aA(null);break}}e.ref!==null&&(aA(e),U("Invalid attribute `ref` supplied to `React.Fragment`."),aA(null))}}var le={};function fe(e,c,A,t,n,o){{var r=JA(e);if(!r){var i="";(e===void 0||typeof e=="object"&&e!==null&&Object.keys(e).length===0)&&(i+=" You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.");var a=me();a?i+=a:i+=ce();var B;e===null?B="null":jA(e)?B="array":e!==void 0&&e.$$typeof===s?(B="<"+(iA(e.type)||"Unknown")+" />",i=" Did you accidentally export a JSX literal instead of a component?"):B=typeof e,U("React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s",B,i)}var f=he(e,c,A,n,o);if(f==null)return f;if(r){var Q=c.children;if(Q!==void 0)if(t)if(jA(Q)){for(var C=0;C<Q.length;C++)Be(Q[C],e);Object.freeze&&Object.freeze(Q)}else U("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else Be(Q,e)}if(MA.call(c,"key")){var y=iA(e),h=Object.keys(c).filter(function(P){return P!=="key"}),M=h.length>0?"{key: someKey, "+h.join(": ..., ")+": ...}":"{key: someKey}";if(!le[y+M]){var R=h.length>0?"{"+h.join(": ..., ")+": ...}":"{}";U(`A props object containing a "key" prop is being spread into JSX:
10
10
  let props = %s;
11
11
  <%s {...props} />
12
12
  React keys must be passed directly to JSX without using spread:
13
13
  let props = %s;
14
- <%s key={someKey} {...props} />`,I,k,j,k),mt[k+I]=!0}}return t===d?At(p):Tt(p),p}}function Nt(t,l,e){return pt(t,l,e,!0)}function kt(t,l,e){return pt(t,l,e,!1)}var we=kt,Pt=Nt;tt.Fragment=d,tt.jsx=we,tt.jsxs=Pt})()),tt}var Dt;function Wt(){return Dt||(Dt=1,process.env.NODE_ENV==="production"?gt.exports=Ut():gt.exports=Vt()),gt.exports}var v=Wt();const Ht=({action:u,row:a})=>v.jsx("div",{className:"effect0","data-action-id":u.id,"data-row-id":a.id,children:v.jsx("div",{className:"effect0-text",children:`Audio: ${u.data.name}`})}),Yt=({action:u,row:a})=>v.jsx("div",{className:"effect1","data-action-id":u.id,"data-row-id":a.id,children:v.jsx("div",{className:"effect1-text",children:`Video: ${u.data.name}`})}),qt=({action:u,row:a})=>v.jsx("div",{className:"effect2","data-action-id":u.id,"data-row-id":a.id,children:v.jsx("div",{className:"effect2-text",children:`Video audio: ${u.data.name}`})}),zt=u=>{const a=u.toLowerCase();return a.endsWith(".mp4")||a.endsWith(".webm")||a.endsWith(".mov")||a.endsWith(".m4v")?"video":a.endsWith(".mp3")||a.endsWith(".wav")||a.endsWith(".ogg")||a.endsWith(".m4a")||a.endsWith(".aac")?"audio":"other"};class Xt{blobUrlBySrc=new Map;pendingBySrc=new Map;async preloadToBlobUrl(a){if(!a)return a;const m=this.blobUrlBySrc.get(a);if(m)return m;const d=this.pendingBySrc.get(a);if(d)return d;const g=(async()=>{const S=await fetch(a,{cache:"force-cache"});if(!S.ok)throw new Error(`Failed to fetch ${a}: ${S.status}`);const E=await S.blob(),T=URL.createObjectURL(E);return this.blobUrlBySrc.set(a,T),T})().catch(S=>(console.warn("[mediaCache] preload failed:",a,S),a)).finally(()=>{this.pendingBySrc.delete(a)});return this.pendingBySrc.set(a,g),g}resolve(a){return this.blobUrlBySrc.get(a)??a}warm(a){this.preloadToBlobUrl(a)}warmFromEditorData(a){const m=new Set,d=Array.isArray(a)?a:[];for(const g of d){const S=g?.actions;if(Array.isArray(S))for(const E of S){const T=E?.data?.src;typeof T=="string"&&T&&m.add(T)}}for(const g of m){const S=zt(g);(S==="video"||S==="audio")&&this.warm(g)}}}const it=new Xt,Jt=u=>{if(!u)return;const m=u.split("#")[0].split("?")[0].toLowerCase(),d=m.lastIndexOf(".");if(d<0)return;const g=m.slice(d+1);if(g)return g==="m4a"||g==="m4v"?"mp4":g};class Kt{howlBySrc={};activeByActionId={};getHowl(a){const m=it.resolve(a),d=m.startsWith("blob:")?a:m,g=d;if(this.howlBySrc[g])return this.howlBySrc[g];const S=Jt(a),E=new _t.Howl({src:[d],format:S?[S]:void 0,loop:!0,autoplay:!1,preload:!0});return this.howlBySrc[g]=E,E}unlock(){try{const a=_t.Howler.ctx;a&&a.state==="suspended"&&a.resume()}catch{}}warm(a){a&&(it.warm(a),this.getHowl(a))}seekForEngineTime(a,m,d,g,S){const E=Number(S),T=Number.isFinite(E)?E:0,x=a.duration();if(!Number.isFinite(x)||x<=0){a.seek(Math.max(0,g-d+T),m);return}const A=(g-d+T)%x,P=A<0?A+x:A;a.seek(P,m)}start(a){const{actionId:m,src:d,startTime:g,time:S,engine:E}=a,T=Number(a.offset??0),x=Number.isFinite(T)?T:0,A=this.activeByActionId[m];if(A){const X=this.getHowl(A.src);X.rate(E.getPlayRate(),A.soundId);try{X.playing(A.soundId)||X.play(A.soundId)}catch{}E.isPlaying||this.seekForEngineTime(X,A.soundId,A.startTime,S,A.offset);return}const P=this.getHowl(d),N=P.play();P.rate(E.getPlayRate(),N),this.seekForEngineTime(P,N,g,S,x);let q=performance.now();const z=({time:X})=>{if(!E.isPlaying){this.seekForEngineTime(P,N,g,X,x);return}const V=performance.now();if(!(V-q<500)){q=V;try{const K=Math.max(0,X-g+x),M=Number(P.seek(N));Number.isFinite(M)&&Math.abs(M-K)>.25&&this.seekForEngineTime(P,N,g,X,x)}catch{}}},ue=({rate:X})=>{P.rate(X,N)};E.on("afterSetTime",z),E.on("afterSetPlayRate",ue),this.activeByActionId[m]={src:d,startTime:g,offset:x,soundId:N,engine:E,lastResyncAtMs:q,time:z,rate:ue}}stop(a){const{actionId:m}=a,d=this.activeByActionId[m];if(!d)return;const g=this.getHowl(d.src);try{g.stop(d.soundId)}catch{}d.time&&d.engine.off("afterSetTime",d.time),d.rate&&d.engine.off("afterSetPlayRate",d.rate),delete this.activeByActionId[m]}}const re=new Kt;class Gt{videoEl=null;currentSrc=null;lastSeekAtMs=0;lastRate=null;boundEngine=null;boundActionStart=0;vfcHandle=null;rafHandle=null;attach(a){this.videoEl=a,this.currentSrc=a?.currentSrc||a?.getAttribute("src")||null,this.lastSeekAtMs=0,this.lastRate=null,this.unbindEngine(),this.setActive(!1)}setActive(a){this.videoEl&&(this.videoEl.style.opacity=a?"1":"0")}bindEngine(a,m){this.unbindEngine(),this.boundEngine=a,this.boundActionStart=m,this.tickFromVideo()}unbindEngine(){const a=this.videoEl;if(this.vfcHandle!=null&&a?.cancelVideoFrameCallback)try{a.cancelVideoFrameCallback(this.vfcHandle)}catch{}this.rafHandle!=null&&cancelAnimationFrame(this.rafHandle),this.vfcHandle=null,this.rafHandle=null,this.boundEngine=null}tickFromVideo=()=>{if(!this.videoEl||!this.boundEngine||this.videoEl.paused)return;const a=this.boundActionStart+this.videoEl.currentTime;Math.abs(this.boundEngine.getTime()-a)>.03&&this.boundEngine.setTime(a,!0);const m=this.videoEl;m?.requestVideoFrameCallback?this.vfcHandle=m.requestVideoFrameCallback(()=>this.tickFromVideo()):this.rafHandle=requestAnimationFrame(()=>this.tickFromVideo())};setSource(a){if(!this.videoEl||!a)return;const m=it.resolve(a);if(!((this.videoEl.currentSrc||this.videoEl.getAttribute("src")||"")===m||this.currentSrc===m)){this.currentSrc=m,this.videoEl.preload="auto",this.videoEl.src=m;try{this.videoEl.load()}catch{}}}warm(a){a&&it.warm(a)}setRate(a){this.videoEl&&this.lastRate!==a&&(this.lastRate=a,this.videoEl.playbackRate=a)}seek(a,m){if(this.videoEl)try{const d=performance.now(),g=m?.force===!0,S=this.videoEl.currentTime;if(!g&&!this.videoEl.paused&&(Math.abs(S-a)<.12||d-this.lastSeekAtMs<150))return;const E=this.videoEl.duration;Number.isFinite(E)&&E>0?this.videoEl.currentTime=Math.min(a,Math.max(0,E-.05)):this.videoEl.currentTime=Math.max(0,a),this.lastSeekAtMs=d}catch{}}async play(){if(this.videoEl)try{await this.videoEl.play(),this.boundEngine&&this.tickFromVideo()}catch{}}pause(){this.videoEl&&this.videoEl.pause()}}const $=new Gt,nt=160,rt=5,vt=20,Zt={effect0:{id:"effect0",name:"Play audio",source:{start:({action:u,engine:a,isPlaying:m,time:d})=>{if(m){const{src:g,offset:S}=u.data;re.warm(g),re.start({actionId:u.id,src:g,startTime:u.start,engine:a,time:d,offset:S})}},enter:({action:u,engine:a,isPlaying:m,time:d})=>{if(m){const{src:g,offset:S}=u.data;re.warm(g),re.start({actionId:u.id,src:g,startTime:u.start,engine:a,time:d,offset:S})}},leave:({action:u})=>{re.stop({actionId:u.id})},stop:({action:u})=>{re.stop({actionId:u.id})}}},effect2:{id:"effect2",name:"Play video audio",source:{start:({action:u,engine:a,isPlaying:m,time:d})=>{if(m){const{src:g,offset:S}=u.data;re.warm(g),re.start({actionId:u.id,src:g,startTime:u.start,engine:a,time:d,offset:S})}},enter:({action:u,engine:a,isPlaying:m,time:d})=>{if(m){const{src:g,offset:S}=u.data;re.warm(g),re.start({actionId:u.id,src:g,startTime:u.start,engine:a,time:d,offset:S})}},leave:({action:u})=>{re.stop({actionId:u.id})},stop:({action:u})=>{re.stop({actionId:u.id})}}},effect1:{id:"effect1",name:"Play video",source:{start:({action:u,engine:a,isPlaying:m,time:d})=>{const{src:g,previewSrc:S,offset:E}=u.data??{},T=S||g;T&&($.warm(T),$.setSource(T)),$.setActive(!0),$.setRate(a.getPlayRate());const x=Number(E??0);$.seek(Math.max(0,d-u.start+(Number.isFinite(x)?x:0)),{force:!0}),m&&$.play()},enter:({action:u,engine:a,isPlaying:m,time:d})=>{const{src:g,previewSrc:S,offset:E}=u.data??{},T=S||g;T&&($.warm(T),$.setSource(T)),$.setActive(!0),$.setRate(a.getPlayRate());const x=Number(E??0);$.seek(Math.max(0,d-u.start+(Number.isFinite(x)?x:0)),{force:!0}),m&&$.play()},update:({action:u,engine:a,time:m,isPlaying:d})=>{const{src:g,previewSrc:S,offset:E}=u.data??{},T=S||g;if(T&&$.setSource(T),$.setActive(!0),$.setRate(a.getPlayRate()),!d){const x=Number(E??0);$.seek(Math.max(0,m-u.start+(Number.isFinite(x)?x:0)),{force:!0})}},leave:()=>{$.pause(),$.unbindEngine(),$.setActive(!1)},stop:()=>{$.pause(),$.unbindEngine(),$.setActive(!1)}}}},Qt=[{id:"0",actions:[{id:"action0",start:0,end:10,effectId:"effect1",data:{src:"/footage/Big_Buck_Bunny_720_10s_5MB.mp4",name:"Big Buck Bunny (10s)"}}]},{id:"1",actions:[]},{id:"2",actions:[{id:"action1",start:0,end:10,effectId:"effect0",data:{src:"/footage/file_example_MP3_700KB.mp3",name:"Example MP3 (looped)"}}]},{id:"3",actions:[]}],{Option:en}=Ft.Select,tn=[.2,.5,1,1.5,2],nn=({timelineState:u,autoScrollWhenPlay:a,editorData:m,selectedActionId:d,onDeleteSelectedClip:g,onSplitSelectedClip:S,canUndo:E,canRedo:T,onUndo:x,onRedo:A})=>{const[P,N]=R.useState(!1),[q,z]=R.useState(0),[ue,X]=R.useState(!1),V=R.useRef(0),K=R.useRef(0),M=R.useRef(0),de=R.useRef(0),be=R.useRef(0),ie=R.useRef(0),fe=!!d,Ne=(()=>{if(!d)return null;const y=Array.isArray(m)?m:[];for(const O of y){const D=O?.actions;if(Array.isArray(D))for(const F of D){if(String(F?.id)!==d)continue;const _=Number(F?.start),L=Number(F?.end);return!Number.isFinite(_)||!Number.isFinite(L)?null:{start:_,end:L}}}return null})(),ke=!!(Ne&&q>Ne.start&&q<Ne.end),Ye=y=>{const O=Array.isArray(m)?m:[];for(const D of O){const F=D?.actions;if(Array.isArray(F))for(const _ of F){if(_?.effectId!=="effect1")continue;const L=Number(_?.start),H=Number(_?.end);if(!(!Number.isFinite(L)||!Number.isFinite(H))&&y>=L&&y<H)return!0}}return!1},qe=y=>{Ye(y)||($.pause(),$.unbindEngine(),$.setActive(!1))};R.useEffect(()=>{if(!u.current)return;const y=u.current,O=()=>N(!0),D=()=>N(!1),F=({time:L})=>{z(L),qe(L)},_=({time:L})=>{const H=performance.now();if(!(H-V.current<33)&&(V.current=H,z(L),qe(L),a.current)){const me=L*(nt/rt)+vt-500,ae=u.current;ae&&ae.setScrollLeft(me)}};return y.listener.on("play",O),y.listener.on("paused",D),y.listener.on("afterSetTime",F),y.listener.on("setTimeByTick",_),()=>{y.listener.off("play",O),y.listener.off("paused",D),y.listener.off("afterSetTime",F),y.listener.off("setTimeByTick",_)}},[m]);const De=()=>{u.current&&(u.current.isPlaying?u.current.pause():(re.unlock(),u.current.play({autoEnd:!0})))},oe=y=>{u.current&&u.current.setPlayRate(y)},se=y=>{const O=(parseInt(y%1*100+"")+"").padStart(2,"0"),D=(parseInt(y/60+"")+"").padStart(2,"0"),F=(parseInt(y%60+"")+"").padStart(2,"0");return v.jsx(v.Fragment,{children:`${D}:${F}.${O.replace("0.","")}`})},ee=()=>{const y=[],O=new Set,D=Array.isArray(m)?m:[];for(const F of D){const _=F?.actions;if(Array.isArray(_))for(const L of _){const H=L?.data?.src;if(!H)continue;const Se=String(H);O.has(Se)||(O.add(Se),y.push(Se))}}return y},Me=(y,O)=>{const D=URL.createObjectURL(y),F=document.createElement("a");F.href=D,F.download=O,document.body.appendChild(F),F.click(),F.remove(),setTimeout(()=>URL.revokeObjectURL(D),3e3)},ye=async()=>{if(!ue){X(!0);try{const y=ee(),O=new FormData;O.append("timeline",JSON.stringify({editorData:m}));for(const _ of y){const L=await fetch(_);if(!L.ok)throw new Error(`Failed to fetch asset: ${_} (${L.status})`);const H=await L.blob();O.append("assets",H,encodeURIComponent(_))}const D=await fetch("/export",{method:"POST",body:O});if(!D.ok){const _=await D.text().catch(()=>"");throw new Error(_||`Export failed (${D.status})`)}const F=await D.blob();Me(F,"export.mp4")}finally{X(!1)}}};return v.jsxs("div",{className:"timeline-player",children:[v.jsx("div",{className:"play-control",role:"button",tabIndex:0,"aria-label":P?"Pause":"Play",onClick:()=>{Date.now()-K.current<450||De()},onPointerUp:y=>{y.pointerType!=="mouse"&&(K.current=Date.now(),De())},children:v.jsx("img",{src:P?"/pause-button.png":"/play-button.png",alt:"",draggable:!1})}),v.jsx("div",{className:"time",children:se(q)}),v.jsxs("div",{className:"history-tools",children:[v.jsx("button",{type:"button",className:"history-tool",disabled:!E,"aria-label":"Undo",onClick:()=>{Date.now()-be.current<450||E&&x()},onPointerUp:y=>{y.pointerType!=="mouse"&&(be.current=Date.now(),E&&x())},children:v.jsx("img",{src:"/undo.png",alt:"",draggable:!1})}),v.jsx("button",{type:"button",className:"history-tool",disabled:!T,"aria-label":"Redo",onClick:()=>{Date.now()-ie.current<450||T&&A()},onPointerUp:y=>{y.pointerType!=="mouse"&&(ie.current=Date.now(),T&&A())},children:v.jsx("img",{src:"/redo.png",alt:"",draggable:!1})})]}),v.jsx("div",{className:"rate-control",children:v.jsx(Ft.Select,{size:"small",defaultValue:1,style:{width:120},onChange:oe,children:tn.map(y=>v.jsx(en,{value:y,children:`${y.toFixed(1)}x`},y))})}),v.jsxs("div",{className:"clip-tools",children:[v.jsx("button",{type:"button",className:"clip-tool clip-tool-delete",disabled:!fe,"aria-label":"Delete selected clip",onClick:()=>{Date.now()-M.current<450||fe&&g()},onPointerUp:y=>{y.pointerType!=="mouse"&&(M.current=Date.now(),fe&&g())},children:v.jsx("img",{src:"/bin.png",alt:"",draggable:!1})}),v.jsx("button",{type:"button",className:"clip-tool clip-tool-split",disabled:!ke,"aria-label":"Split selected clip at cursor",onClick:()=>{Date.now()-de.current<450||ke&&S()},onPointerUp:y=>{y.pointerType!=="mouse"&&(de.current=Date.now(),ke&&S())},children:v.jsx("img",{src:"/split.png",alt:"",draggable:!1})})]}),v.jsx("div",{className:"export-control",children:v.jsx(Ft.Button,{size:"small",type:"primary",loading:ue,onClick:ye,children:"Export"})})]})};function rn(){const u=()=>typeof window>"u"?!1:typeof navigator<"u"&&(navigator.maxTouchPoints??0)>0,[a,m]=R.useState(u);return R.useEffect(()=>{if(typeof window>"u"||typeof window.matchMedia!="function")return;const d=window.matchMedia("(pointer: coarse)"),g=()=>m(!!d.matches||u());return g(),typeof d.addEventListener=="function"?(d.addEventListener("change",g),()=>d.removeEventListener("change",g)):(d.addListener(g),()=>d.removeListener(g))},[]),a}const on=structuredClone(Qt),ht=5,Mt=({item:u,hint:a,isDragging:m})=>v.jsxs("div",{className:`footage-card${m?" is-dragging":""}`,children:[v.jsx("div",{className:"footage-name",children:u.name}),u.kind==="video"?v.jsx("video",{className:"footage-preview",src:u.src,muted:!0,preload:"metadata",draggable:!1,onDragStart:d=>d.preventDefault(),playsInline:!0}):v.jsx("audio",{className:"footage-audio",src:u.src,controls:!0,preload:"metadata",draggable:!1,onDragStart:d=>d.preventDefault()}),v.jsx("div",{className:"footage-kind",children:a})]}),sn=({item:u,hint:a})=>{const{attributes:m,listeners:d,setNodeRef:g,transform:S,isDragging:E}=ve.useDraggable({id:`footage-${u.id}`,data:{item:u}}),T=S?{transform:`translate3d(${S.x}px, ${S.y}px, 0)`}:void 0;return v.jsx("div",{ref:g,style:T,...d,...m,children:v.jsx(Mt,{item:u,hint:a,isDragging:E})})},an=u=>String(u??"").toLowerCase().match(/\.(mp3|wav|m4a|aac|ogg)(\?|#|$)/)?"audio":"video",cn=(u,a)=>{try{const m=String(u??"").split("/").pop()||"";return decodeURIComponent(m.split("?")[0].split("#")[0])||`Footage ${a+1}`}catch{return`Footage ${a+1}`}},ln=({footageUrls:u})=>{const[a,m]=R.useState(on),[d,g]=R.useState(null),[S,E]=R.useState([]),[T,x]=R.useState([]),A=R.useRef(a),P=rn(),N=R.useRef(null),q=R.useRef(null),z=R.useRef(null),ue=R.useRef(!0),X=R.useMemo(()=>{const e=Array.isArray(u)?u.filter(Boolean):[];return e.length?e.map((n,r)=>({id:`url-${r}`,kind:an(n),name:cn(n,r),src:n,defaultDuration:10})):[]},[u]),[V,K]=R.useState(null),[M,de]=R.useState(null),[be,ie]=R.useState(null),[fe,ot]=R.useState(0),[Ne,ke]=R.useState(0),[Ye,qe]=R.useState(0),[De,oe]=R.useState(0),[se,ee]=R.useState(!1),[Me,ye]=R.useState(null),y=R.useRef(null),O=R.useRef(null),D=R.useRef(null),F=R.useRef(null),_=P?48:32,L=[0,1],H=[2,3],Se=["V1","V2","A1","A2"],me=(e,n)=>{if(n.length===0)return null;if(e==null)return n[0];let r=n[0],s=Math.abs(e-r);for(const i of n){const o=Math.abs(e-i);o<s&&(r=i,s=o)}return r},ae=(e,n)=>e?e.kind==="video"?me(n,L):me(n,H):null,Pe=e=>e===L[1]?H[1]:H[0];R.useEffect(()=>{it.warmFromEditorData(a)},[a]),R.useEffect(()=>{A.current=a},[a]),R.useLayoutEffect(()=>{const e=z.current;if(!e)return;const n=()=>{const s=e.getBoundingClientRect(),i=e.querySelector(".timeline-editor-edit-area");if(!i)return;const o=i.getBoundingClientRect();qe(o.top-s.top),oe(o.left-s.left)},r=requestAnimationFrame(n);return window.addEventListener("resize",n),()=>{cancelAnimationFrame(r),window.removeEventListener("resize",n)}},[P,a.length]);const Le=e=>{const n=z.current;if(!n||!e)return!1;const r=n.getBoundingClientRect();return e.x>=r.left&&e.x<=r.right&&e.y>=r.top&&e.y<=r.bottom},ze=R.useRef(0),pe=()=>globalThis.crypto?.randomUUID?globalThis.crypto.randomUUID():`uid-${++ze.current}`,J=R.useRef(null),te=R.useRef(null),$e=R.useRef(null),Be=.9,Ie=1.05,G=R.useRef({actionId:null,edge:null}),W=R.useRef({actionId:null,mode:null,dir:null,basePointerTime:null,lastPointerTime:null,initialStart:0,initialEnd:0,takeover:!1}),Ce=R.useRef(!1),Ue=e=>e.map(n=>{const r=(n.actions??[]).map(s=>`${String(s.id)}@${Number(s.start)}-${Number(s.end)}`).join("|");return`${String(n.id)}:${r}`}).join("||"),Fe=e=>{const n=structuredClone(e);E(r=>{const s=[...r,n];return s.length>ht&&s.splice(0,s.length-ht),s}),x([])},Ve=(e,n,r,s)=>e<s&&n>r,ge=(e,n,r,s)=>{const i=Array.isArray(e?.actions)?e.actions:[];for(const o of i)if(!(!o||o.id===n)&&Ve(r,s,Number(o.start),Number(o.end)))return!0;return!1},Xe=(e,n)=>{for(let r=0;r<e.length;r++){const s=e[r],i=Array.isArray(s?.actions)?s.actions:[];for(let o=0;o<i.length;o++){const c=i[o];if(String(c?.id)===n)return{rowIndex:r,actionIndex:o,action:c}}}return null},Re=(e,n)=>{const r=Xe(e,n),s=r?.action?.data?.linkId;if(!r||!s)return null;for(let i=0;i<e.length;i++){const o=e[i],c=Array.isArray(o?.actions)?o.actions:[];for(let f=0;f<c.length;f++){const p=c[f];if(p?.data?.linkId&&String(p.data.linkId)===String(s)&&String(p.id)!==String(n))return{rowIndex:i,actionIndex:f,action:p}}}return null},st=(e,n)=>{const r=Xe(e,n);if(!r)return e;const s=Re(e,n);if(!s)return e;const i=Number(r.action.start),o=Number(r.action.end);if(!Number.isFinite(i)||!Number.isFinite(o)||o<=i||Number(s.action.start)===i&&Number(s.action.end)===o)return e;const c=structuredClone(e),f=c[s.rowIndex],p=Array.isArray(f.actions)?[...f.actions]:[],h={...p[s.actionIndex],start:i,end:o};return p.splice(s.actionIndex,1,h),f.actions=p,c},We=(e,n,r,s)=>{if(!Number.isFinite(r)||!Number.isFinite(s)||s<=r)return e;const i=Xe(e,n);if(!i)return e;const o=Re(e,n);if(!o)return e;const c=structuredClone(e),f=c[i.rowIndex],p=Array.isArray(f.actions)?[...f.actions]:[],h={...p[i.actionIndex],start:r,end:s};p.splice(i.actionIndex,1,h),f.actions=p;const b=c[o.rowIndex],k=Array.isArray(b.actions)?[...b.actions]:[],w={...k[o.actionIndex],start:r,end:s};return k.splice(o.actionIndex,1,w),b.actions=k,c},Je=(e,n,r,s)=>{if(!Number.isFinite(r)||!Number.isFinite(s)||s<=r)return e;const i=Xe(e,n);if(!i)return e;const o=Number(i.action.start),c=Number(i.action.end);if(o===r&&c===s)return e;const f=structuredClone(e),p=f[i.rowIndex],h=Array.isArray(p.actions)?[...p.actions]:[],b={...h[i.actionIndex],start:r,end:s};return h.splice(i.actionIndex,1,b),p.actions=h,f},Ge=()=>{const e=N.current?.getTime?Number(N.current.getTime()):0;return Number.isFinite(e)?Math.max(0,e):0},Ze=(e,n,r)=>{const s=Ge(),i=r-n;if(!Number.isFinite(i)||i<=0)return{start:n,end:r,snapped:!1,edge:null};const o=Math.abs(n-s),c=Math.abs(r-s),f=o<=c?"start":"end",p=Math.min(o,c),h=G.current;if(h.actionId===e&&h.edge!=null){if((h.edge==="start"?o:c)>Ie)return G.current={actionId:e,edge:null},{start:n,end:r,snapped:!1,edge:null}}else{if(p>Be)return{start:n,end:r,snapped:!1,edge:null};G.current={actionId:e,edge:f}}const w=G.current.edge;if(w==="start"){const C=s,B=C+i;return{start:Math.max(0,C),end:Math.max(Math.max(0,C),B),snapped:!0,edge:w}}const I=s,j=I-i;return{start:Math.max(0,j),end:Math.max(0,I),snapped:!0,edge:w}},at=(e,n,r,s)=>{const i=Ge(),o=s==="left"?"start":"end",c=Math.abs(o==="start"?n-i:r-i),f=G.current;if(f.actionId===e&&f.edge===o){if(c>Ie)return G.current={actionId:e,edge:null},{start:n,end:r,snapped:!1}}else{if(c>Be)return{start:n,end:r,snapped:!1};G.current={actionId:e,edge:o}}if(o==="start"){const w=Math.max(0,i),I=Math.max(w+.01,r);return{start:w,end:I,snapped:!0}}const b=Math.max(0,i),k=Math.min(n,b-.01);return{start:Math.max(0,k),end:b,snapped:!0}},bt=(e,n,r)=>{const s=e.defaultDuration??10;let i=Math.max(0,n),o=i+s;const c=N.current;c?.isPlaying&&c.pause(),m(f=>{Fe(f);const p=structuredClone(f);for(;p.length<4;)p.push({id:`${p.length}`,actions:[]});const h=Number.isFinite(Number(r))?Number(r):null,b=me(h,L)??L[0],k=me(h,H)??H[0],w=I=>{const j=[];for(const C of I){const B=Array.isArray(p[C]?.actions)?p[C].actions:[];for(const Z of B){const he=Number(Z?.start),Ee=Number(Z?.end);!Number.isFinite(he)||!Number.isFinite(Ee)||j.push({start:he,end:Ee})}}j.sort((C,B)=>C.start-B.start);for(const C of j)Ve(i,o,C.start,C.end)&&(i=C.end,o=i+s)};if(e.kind==="video"){const I=b,j=Pe(I);w([I,j]);const C=`link-${pe()}`,B=`video-${pe()}`,Z=`video-audio-${pe()}`;p[I].actions=[...p[I].actions??[],{id:B,start:i,end:o,effectId:"effect1",data:{src:e.src,previewSrc:e.previewSrc,name:e.name,linkId:C}}],p[j].actions=[...p[j].actions??[],{id:Z,start:i,end:o,effectId:"effect2",data:{src:e.src,name:e.name,linkId:C}}]}else{const I=k;w([I]),p[I].actions=[...p[I].actions??[],{id:`audio-${pe()}`,start:i,end:o,effectId:"effect0",data:{src:e.src,name:e.name}}]}return p})},yt=()=>{const e=z.current;return e?e.querySelector(".timeline-editor-edit-area .ReactVirtualized__Grid")?.scrollLeft??0:0},St=()=>fe,He=e=>{const n=z.current;if(!n)return 0;const s=(n.querySelector(".timeline-editor-edit-area")??n).getBoundingClientRect(),c=(e-s.x+yt()-vt)*rt/nt;return Math.max(0,c)},Rt=e=>{const n=Number(e);return Number.isFinite(n)?vt+n*nt/rt:0},wt=(e,n,r,s)=>{const i=e.defaultDuration??10;let o=Math.max(0,n),c=o+i;const f=[];if(e.kind==="video"){const h=r,b=Pe(h);f.push(h,b)}else f.push(r);const p=[];for(const h of f){const b=Array.isArray(s[h]?.actions)?s[h].actions:[];for(const k of b){const w=Number(k?.start),I=Number(k?.end);!Number.isFinite(w)||!Number.isFinite(I)||p.push({start:w,end:I})}}p.sort((h,b)=>h.start-b.start);for(const h of p)Ve(o,c,h.start,h.end)&&(o=h.end,c=o+i);return Math.max(0,o)},_e=e=>{const n=z.current;if(!n)return null;const r=n.querySelector(".timeline-editor-edit-area");if(!r)return null;const s=r.getBoundingClientRect(),i=e-s.y;if(i<0||i>s.height)return null;const o=i+St(),c=Math.floor(o/_);if(!Number.isFinite(c))return null;const f=Math.max(0,A.current.length-1);return Math.min(Math.max(0,c),f)},ct=e=>{if(!e)return null;if("clientX"in e&&"clientY"in e){const i=Number(e.clientX),o=Number(e.clientY);if(Number.isFinite(i)&&Number.isFinite(o))return{x:i,y:o}}const n=e.touches,r=e.changedTouches,s=(n&&n.length?n[0]:null)||(r&&r.length?r[0]:null);if(s){const i=Number(s.clientX),o=Number(s.clientY);if(Number.isFinite(i)&&Number.isFinite(o))return{x:i,y:o}}return null},ce=()=>{if(Ce.current)return;Ce.current=!0;const e=r=>{const s=W.current;if(!s.actionId||!s.mode||r.isPrimary===!1)return;const i=He(r.clientX);s.basePointerTime==null&&(s.basePointerTime=i),s.lastPointerTime=i},n=()=>{W.current={actionId:null,mode:null,dir:null,basePointerTime:null,lastPointerTime:null,initialStart:0,initialEnd:0,takeover:!1},G.current={actionId:null,edge:null}};window.addEventListener("pointermove",e,{capture:!0}),window.addEventListener("pointerup",n,{capture:!0}),window.addEventListener("pointercancel",n,{capture:!0}),W.current._removePointerListeners=()=>{window.removeEventListener("pointermove",e,{capture:!0}),window.removeEventListener("pointerup",n,{capture:!0}),window.removeEventListener("pointercancel",n,{capture:!0}),Ce.current=!1}},Ke=()=>{const e=W.current?._removePointerListeners;e?.(),delete W.current._removePointerListeners},Qe=e=>e.map(n=>({...n,selected:void 0,actions:(n.actions??[]).map(r=>({...r,selected:void 0}))})),lt=R.useMemo(()=>a.map((e,n)=>{const r=d?(e.actions??[]).some(c=>String(c.id)===d):!1,s=V!=null&&be!=null&&n===be,i=Array.isArray(e.classNames)?e.classNames:[],o=s?[...i,"dnd-drop-hover"]:i;return{...e,classNames:o,selected:r,actions:(e.actions??[]).map(c=>({...c,selected:d?String(c.id)===d:!1}))}}),[a,d,V,be]),Et=()=>{if(!d)return;const e=N.current;e?.isPlaying&&e.pause(),m(n=>{Fe(n);let r=null;for(const i of n){const o=Array.isArray(i?.actions)?i.actions:[];for(const c of o){if(String(c?.id)!==d)continue;const f=c?.data?.linkId;f!=null&&(r=String(f));break}if(r!=null)break}return n.map(i=>({...i,actions:(i.actions??[]).filter(o=>!(String(o?.id)===d||r&&String(o?.data?.linkId??"")===r))}))}),g(null)},ut=()=>{if(!d)return;const e=N.current,n=e?.getTime?e.getTime():null;if(n==null)return;const r=Number(n);Number.isFinite(r)&&(e?.isPlaying&&e.pause(),J.current=null,te.current=null,m(s=>{let i=-1,o=-1,c=null;for(let U=0;U<s.length;U++){const Y=s[U],ne=Array.isArray(Y?.actions)?Y.actions:[];for(let Q=0;Q<ne.length;Q++){const Oe=ne[Q];if(String(Oe?.id)===d){i=U,o=Q,c=Oe;break}}if(c)break}if(!c)return s;const f=c?.data?.linkId?String(c.data.linkId):null;let p=-1,h=-1,b=null;if(f)for(let U=0;U<s.length;U++){const Y=s[U],ne=Array.isArray(Y?.actions)?Y.actions:[];for(let Q=0;Q<ne.length;Q++){const Oe=ne[Q];if(String(Oe?.id)!==d&&String(Oe?.data?.linkId??"")===f){p=U,h=Q,b=Oe;break}}if(b)break}const k=Number(c.start),w=Number(c.end);if(!Number.isFinite(k)||!Number.isFinite(w)||!(k<r&&r<w))return s;Fe(s);const I=f&&b?`link-${pe()}`:f,j=f&&b?`link-${pe()}`:f,C=`${String(c.id)}-r-${pe()}`,B=Number(c?.data?.offset??0),Z=Number.isFinite(B)?B:0,he=r-k,Ee=Z+(Number.isFinite(he)?he:0),je={...c,start:k,end:r,id:c.id,data:{...c.data,offset:Z,linkId:I??void 0}},xe={...c,start:r,end:w,id:C,data:{...c.data,offset:Ee,linkId:j??void 0}},Te=structuredClone(s),le=Te[i],Ae=Array.isArray(le.actions)?[...le.actions]:[];if(Ae.splice(o,1,je,xe),Ae.sort((U,Y)=>Number(U.start)-Number(Y.start)),le.actions=Ae,b&&p>=0&&h>=0){const U=Number(b.start),Y=Number(b.end);if(Number.isFinite(U)&&Number.isFinite(Y)&&U===k&&Y===w){const ne=`${String(b.id)}-r-${pe()}`,Q={...b,start:k,end:r,id:b.id,data:{...b.data,linkId:I??void 0}},Oe={...b,start:r,end:w,id:ne,data:{...b.data,linkId:j??void 0}},It=Te[p],Ct=Array.isArray(It.actions)?[...It.actions]:[];Ct.splice(h,1,Q,Oe),Ct.sort((Lt,$t)=>Number(Lt.start)-Number($t.start)),It.actions=Ct}}return Te}))},xt=()=>{const e=N.current,n=e?.getTime?e.getTime():null;e?.isPlaying&&e.pause(),J.current=null,te.current=null,g(null),E(r=>{if(r.length===0)return r;const s=r[r.length-1],i=structuredClone(A.current);return x(o=>[...o,i]),m(structuredClone(s)),r.slice(0,-1)}),n!=null&&requestAnimationFrame(()=>{const r=N.current;r?.setTime&&r.setTime(n)})},dt=()=>{const e=N.current,n=e?.getTime?e.getTime():null;e?.isPlaying&&e.pause(),J.current=null,te.current=null,g(null),x(r=>{if(r.length===0)return r;const s=r[r.length-1],i=structuredClone(A.current);return E(o=>{const c=[...o,i];return c.length>ht&&c.splice(0,c.length-ht),c}),m(structuredClone(s)),r.slice(0,-1)}),n!=null&&requestAnimationFrame(()=>{const r=N.current;r?.setTime&&r.setTime(n)})},ft=ve.useSensors(ve.useSensor(ve.PointerSensor,{activationConstraint:{distance:6}}),ve.useSensor(ve.TouchSensor,{activationConstraint:{delay:180,tolerance:6}})),{setNodeRef:Tt,isOver:At}=ve.useDroppable({id:"timeline-drop"}),mt=e=>{const n=e.active.data.current?.item;K(n??null);const r=ct(e.activatorEvent);if(y.current=r,O.current=r,ye(r),r){const i=Le(r);ee(i);const o=_e(r.y);ie(i?ae(n??null,o):null)}else ie(null),ee(!1);const s=e.active.rect.current.initial;de(s?{width:s.width,height:s.height}:null)},pt=e=>{const n=e.active.rect.current.initial;!M&&n&&de({width:n.width,height:n.height});const r=O.current;if(!r){ie(null);return}const s=Number(e?.delta?.x??0),i=Number(e?.delta?.y??0),o={x:r.x+(Number.isFinite(s)?s:0),y:r.y+(Number.isFinite(i)?i:0)};y.current=o,ye(o);const c=Le(o);ee(c);const f=_e(o.y);ie(c?ae(V,f):null)},Nt=e=>{const n=e.active.data.current?.item,r=O.current,s=Number(e?.delta?.x??0),i=Number(e?.delta?.y??0),o=r?{x:r.x+(Number.isFinite(s)?s:0),y:r.y+(Number.isFinite(i)?i:0)}:y.current;y.current=o;const f=String(e.over?.id??"")==="timeline-drop"||Le(o);if(n&&f&&o){const p=He(o.x),h=_e(o.y),b=ae(n,h);ie(b),bt(n,Math.max(0,p),b)}K(null),de(null),ie(null),ee(!1),ye(null),O.current=null},kt=()=>{K(null),de(null),ie(null),ee(!1),ye(null),O.current=null},we=R.useMemo(()=>{if(!V||!se)return null;const e=Me;if(!e)return null;const n=_e(e.y),r=ae(V,n);if(r==null)return null;const s=He(e.x),i=wt(V,s,r,A.current),o=V.defaultDuration??10;return{laneRow:r,desiredStart:s,start:i,end:i+o,duration:o,kind:V.kind}},[V,se,Me,Ne,fe,_]),Pt=e=>{if(!P||e.pointerType==="mouse"||V)return;if(!!e.target?.closest?.(".timeline-editor-cursor-area, .timeline-editor-cursor")){F.current={pointerId:e.pointerId},D.current=null;try{e.currentTarget.setPointerCapture(e.pointerId)}catch{}e.preventDefault();return}D.current={x:e.clientX,y:e.clientY}},t=e=>{if(!P||e.pointerType==="mouse"||V||!F.current||F.current.pointerId!==e.pointerId)return;const n=He(e.clientX);N.current&&N.current.setTime(n),e.preventDefault()},l=e=>{if(!P||e.pointerType==="mouse"||V)return;if(F.current&&F.current.pointerId===e.pointerId){F.current=null;try{e.currentTarget.releasePointerCapture(e.pointerId)}catch{}e.preventDefault();return}const n=D.current;D.current=null;const r=n?Math.abs(e.clientX-n.x):0,s=n?Math.abs(e.clientY-n.y):0;if(r>10||s>10)return;const o=e.target?.closest?.("[data-action-id]"),c=o?.getAttribute("data-row-id"),f=o?.getAttribute("data-action-id");if(c&&f){g(f);return}const p=He(e.clientX);g(null),N.current&&N.current.setTime(p)};return v.jsx(ve.DndContext,{sensors:ft,collisionDetection:ve.rectIntersection,onDragStart:mt,onDragMove:pt,onDragEnd:Nt,onDragCancel:kt,children:v.jsxs("div",{className:"timeline-editor-engine",children:[v.jsx("div",{className:"player-config",children:v.jsx("div",{className:"footage-bin",children:X.map(e=>v.jsx(sn,{item:e,hint:P?"Press-hold, then drag into timeline":"Drag into timeline"},e.id))})}),v.jsx("div",{className:"player-panel",ref:q,children:v.jsx("video",{className:"player-video",preload:"auto",playsInline:!0,muted:!0,controls:!1,disablePictureInPicture:!0,disableRemotePlayback:!0,controlsList:"nodownload noplaybackrate noremoteplayback",tabIndex:-1,onContextMenu:e=>e.preventDefault(),ref:e=>$.attach(e)})}),v.jsx(nn,{timelineState:N,autoScrollWhenPlay:ue,editorData:a,selectedActionId:d,onDeleteSelectedClip:Et,onSplitSelectedClip:ut,canUndo:S.length>0,canRedo:T.length>0,onUndo:xt,onRedo:dt}),v.jsxs("div",{className:`timeline-drop${At?" is-over":""}`,ref:e=>{z.current=e,Tt(e)},onPointerDown:Pt,onPointerMove:t,onPointerUp:l,children:[v.jsx("div",{className:"timeline-lane-labels",style:{top:Ye,transform:`translateY(${-fe}px)`,height:_*Se.length},children:Se.map((e,n)=>v.jsx("div",{className:`timeline-lane-label${be===n?" is-hover":""}`,style:{height:_},children:e},e))}),we?v.jsx("div",{className:"timeline-ghost-layer",style:{top:Ye,left:De},children:(()=>{const e=nt/rt,n=we.duration*e,r=Rt(we.start)-Ne,s=[];return we.kind==="video"?(s.push({row:we.laneRow,kind:"video"}),s.push({row:Pe(we.laneRow),kind:"audio"})):s.push({row:we.laneRow,kind:"audio"}),s.map(i=>v.jsx("div",{className:`timeline-ghost-clip${i.kind==="video"?" is-video":" is-audio"}`,style:{left:r,top:i.row*_-fe,width:n,height:_}},`${i.kind}-${i.row}`))})()}):null,v.jsx(Bt.Timeline,{scale:rt,scaleWidth:nt,startLeft:vt,rowHeight:_,autoScroll:!0,ref:N,editorData:lt,effects:Zt,onScroll:e=>{const n=Number(e?.scrollTop??0),r=Number(e?.scrollLeft??0);Number.isFinite(n)&&ot(n),Number.isFinite(r)&&ke(r)},onClickTimeArea:(e,n)=>{g(null)},onClickRow:e=>{e.target?.closest?.(".timeline-editor-action")||g(null)},onClickActionOnly:(e,{action:n})=>{const r=n;r?.id&&g(String(r.id))},onActionMoveStart:({action:e})=>{$e.current=String(e?.id??""),G.current={actionId:String(e?.id??""),edge:null};const n=Number(e?.start),r=Number(e?.end);W.current={actionId:String(e?.id??""),mode:"move",dir:null,basePointerTime:null,lastPointerTime:null,initialStart:Number.isFinite(n)?n:0,initialEnd:Number.isFinite(r)?r:0,takeover:!1},ce(),!J.current&&(J.current=structuredClone(a),te.current=Ue(a))},onActionMoveEnd:()=>{const e=J.current,n=te.current;e&&n&&Ue(A.current)!==n&&Fe(e),J.current=null,te.current=null,$e.current=null,G.current={actionId:null,edge:null},W.current={actionId:null,mode:null,dir:null,basePointerTime:null,lastPointerTime:null,initialStart:0,initialEnd:0,takeover:!1},Ke()},onActionResizeStart:({action:e})=>{$e.current=String(e?.id??""),G.current={actionId:String(e?.id??""),edge:null};const n=Number(e?.start),r=Number(e?.end);W.current={actionId:String(e?.id??""),mode:"resize",dir:null,basePointerTime:null,lastPointerTime:null,initialStart:Number.isFinite(n)?n:0,initialEnd:Number.isFinite(r)?r:0,takeover:!1},ce(),!J.current&&(J.current=structuredClone(a),te.current=Ue(a))},onActionResizeEnd:()=>{const e=J.current,n=te.current;e&&n&&Ue(A.current)!==n&&Fe(e),J.current=null,te.current=null,$e.current=null,G.current={actionId:null,edge:null},W.current={actionId:null,mode:null,dir:null,basePointerTime:null,lastPointerTime:null,initialStart:0,initialEnd:0,takeover:!1},Ke()},onActionMoving:({action:e,row:n,start:r,end:s})=>{const i=String(e?.id??""),o=W.current;if(o.takeover&&o.mode==="move"&&o.actionId===i){const j=o.basePointerTime,C=o.lastPointerTime,B=j!=null&&C!=null?C-j:0,Z=o.initialStart+B,he=o.initialEnd+B,Ee=Ze(i,Z,he),je=Ee.start,xe=Ee.end;if(ge(n,String(e.id),je,xe))return!1;const le=A.current,Ae=Re(le,String(e.id));if(Ae){const U=le[Ae.rowIndex];if(U&&ge(U,String(Ae.action.id),je,xe))return!1}return m(U=>{const Y=Ae?We(U,String(e.id),je,xe):Je(U,String(e.id),je,xe);return A.current=Y,Y}),!1}const c=Number(r),f=Number(s);if(!Number.isFinite(c)||!Number.isFinite(f)||f<=c)return!1;const p=Ze(i,c,f),h=p.start,b=p.end;if(!Number.isFinite(h)||!Number.isFinite(b)||b<=h||ge(n,String(e.id),h,b))return!1;const w=A.current,I=Re(w,String(e.id));if(I){const j=w[I.rowIndex];if(j&&ge(j,String(I.action.id),h,b))return!1}if((I||p.snapped)&&m(j=>{const C=I?We(j,String(e.id),h,b):Je(j,String(e.id),h,b);return A.current=C,C}),p.snapped){const j=W.current.lastPointerTime;return W.current={actionId:i,mode:"move",dir:null,basePointerTime:j,lastPointerTime:W.current.lastPointerTime,initialStart:c,initialEnd:f,takeover:!0},ce(),!1}},onActionResizing:({action:e,row:n,start:r,end:s,dir:i})=>{const o=String(e?.id??""),c=W.current,f=i??"right";if(c.takeover&&c.mode==="resize"&&c.actionId===o){const B=c.basePointerTime,Z=c.lastPointerTime,he=B!=null&&Z!=null?Z-B:0,Ee=f==="left"?c.initialStart+he:c.initialStart,je=f==="right"?c.initialEnd+he:c.initialEnd,xe=at(o,Ee,je,f),Te=xe.start,le=xe.end;if(ge(n,String(e.id),Te,le))return!1;const U=A.current,Y=Re(U,String(e.id));if(Y){const ne=U[Y.rowIndex];if(ne&&ge(ne,String(Y.action.id),Te,le))return!1}return m(ne=>{const Q=Y?We(ne,String(e.id),Te,le):Je(ne,String(e.id),Te,le);return A.current=Q,Q}),!1}const p=Number(r),h=Number(s);if(!Number.isFinite(p)||!Number.isFinite(h)||h<=p)return!1;const b=at(o,p,h,f),k=b.start,w=b.end;if(!Number.isFinite(k)||!Number.isFinite(w)||w<=k||ge(n,String(e.id),k,w))return!1;const j=A.current,C=Re(j,String(e.id));if(C){const B=j[C.rowIndex];if(B&&ge(B,String(C.action.id),k,w))return!1}if((C||b.snapped)&&m(B=>{const Z=C?We(B,String(e.id),k,w):Je(B,String(e.id),k,w);return A.current=Z,Z}),b.snapped){const B=W.current.lastPointerTime;return W.current={actionId:o,mode:"resize",dir:f,basePointerTime:B,lastPointerTime:W.current.lastPointerTime,initialStart:p,initialEnd:h,takeover:!0},ce(),!1}},onChange:e=>{const n=Qe(e),r=$e.current,s=r?st(n,r):n;m(s);const i=J.current,o=te.current;i&&o&&(Ue(s)!==o&&Fe(i),J.current=null,te.current=null)},getActionRender:(e,n)=>{if(e.effectId==="effect0")return v.jsx(Ht,{action:e,row:n});if(e.effectId==="effect2")return v.jsx(qt,{action:e,row:n});if(e.effectId==="effect1")return v.jsx(Yt,{action:e,row:n})}})]}),v.jsx(ve.DragOverlay,{children:V?v.jsx("div",{className:"footage-overlay",style:M?{width:M.width,height:M.height}:void 0,children:v.jsx(Mt,{item:V,hint:"Drop on timeline",isDragging:!0})}):null})]})})};exports.MeliesVideoEditor=ln;
14
+ <%s key={someKey} {...props} />`,M,y,R,y),le[y+M]=!0}}return e===g?pe(f):be(f),f}}function Fe(e,c,A){return fe(e,c,A,!0)}function ye(e,c,A){return fe(e,c,A,!1)}var hA=ye,Ne=Fe;ee.Fragment=g,ee.jsx=hA,ee.jsxs=Ne})()),ee}var xe;function Xe(){return xe||(xe=1,process.env.NODE_ENV==="production"?de.exports=Le():de.exports=je()),de.exports}var E=Xe();const ke=({action:u,row:s})=>E.jsx("div",{className:"effect0","data-action-id":u.id,"data-row-id":s.id,children:E.jsx("div",{className:"effect0-text",children:`Audio: ${u.data.name}`})}),Je=({action:u,row:s})=>E.jsx("div",{className:"effect1","data-action-id":u.id,"data-row-id":s.id,children:E.jsx("div",{className:"effect1-text",children:`Video: ${u.data.name}`})}),qe=({action:u,row:s})=>E.jsx("div",{className:"effect2","data-action-id":u.id,"data-row-id":s.id,children:E.jsx("div",{className:"effect2-text",children:`Video audio: ${u.data.name}`})}),We=u=>{const s=u.toLowerCase();return s.endsWith(".mp4")||s.endsWith(".webm")||s.endsWith(".mov")||s.endsWith(".m4v")?"video":s.endsWith(".mp3")||s.endsWith(".wav")||s.endsWith(".ogg")||s.endsWith(".m4a")||s.endsWith(".aac")?"audio":"other"};class Ke{blobUrlBySrc=new Map;pendingBySrc=new Map;async preloadToBlobUrl(s){if(!s)return s;const l=this.blobUrlBySrc.get(s);if(l)return l;const g=this.pendingBySrc.get(s);if(g)return g;const d=(async()=>{const I=await fetch(s,{cache:"force-cache"});if(!I.ok)throw new Error(`Failed to fetch ${s}: ${I.status}`);const m=await I.blob(),b=URL.createObjectURL(m);return this.blobUrlBySrc.set(s,b),b})().catch(I=>(console.warn("[mediaCache] preload failed:",s,I),s)).finally(()=>{this.pendingBySrc.delete(s)});return this.pendingBySrc.set(s,d),d}resolve(s){return this.blobUrlBySrc.get(s)??s}warm(s){this.preloadToBlobUrl(s)}warmFromEditorData(s){const l=new Set,g=Array.isArray(s)?s:[];for(const d of g){const I=d?.actions;if(Array.isArray(I))for(const m of I){const b=m?.data?.src;typeof b=="string"&&b&&l.add(b)}}for(const d of l){const I=We(d);(I==="video"||I==="audio")&&this.warm(d)}}}const re=new Ke,ze=u=>{if(!u)return;const l=u.split("#")[0].split("?")[0].toLowerCase(),g=l.lastIndexOf(".");if(g<0)return;const d=l.slice(g+1);if(d)return d==="m4a"||d==="m4v"?"mp4":d};class Ve{howlBySrc={};activeByActionId={};getHowl(s){const l=re.resolve(s),g=l.startsWith("blob:")?s:l,d=g;if(this.howlBySrc[d])return this.howlBySrc[d];const I=ze(s),m=new Oe.Howl({src:[g],format:I?[I]:void 0,loop:!0,autoplay:!1,preload:!0});return this.howlBySrc[d]=m,m}unlock(){try{const s=Oe.Howler.ctx;s&&s.state==="suspended"&&s.resume()}catch{}}warm(s){s&&(re.warm(s),this.getHowl(s))}seekForEngineTime(s,l,g,d,I){const m=Number(I),b=Number.isFinite(m)?m:0,v=s.duration();if(!Number.isFinite(v)||v<=0){s.seek(Math.max(0,d-g+b),l);return}const p=(d-g+b)%v,N=p<0?p+v:p;s.seek(N,l)}start(s){const{actionId:l,src:g,startTime:d,time:I,engine:m}=s,b=Number(s.offset??0),v=Number.isFinite(b)?b:0,p=this.activeByActionId[l];if(p){const K=this.getHowl(p.src);K.rate(m.getPlayRate(),p.soundId);try{K.playing(p.soundId)||K.play(p.soundId)}catch{}m.isPlaying||this.seekForEngineTime(K,p.soundId,p.startTime,I,p.offset);return}const N=this.getHowl(g),F=N.play();N.rate(m.getPlayRate(),F),this.seekForEngineTime(N,F,d,I,v);let q=performance.now();const W=({time:K})=>{if(!m.isPlaying){this.seekForEngineTime(N,F,d,K,v);return}const j=performance.now();if(!(j-q<500)){q=j;try{const V=Math.max(0,K-d+v),U=Number(N.seek(F));Number.isFinite(U)&&Math.abs(U-V)>.25&&this.seekForEngineTime(N,F,d,K,v)}catch{}}},uA=({rate:K})=>{N.rate(K,F)};m.on("afterSetTime",W),m.on("afterSetPlayRate",uA),this.activeByActionId[l]={src:g,startTime:d,offset:v,soundId:F,engine:m,lastResyncAtMs:q,time:W,rate:uA}}stop(s){const{actionId:l}=s,g=this.activeByActionId[l];if(!g)return;const d=this.getHowl(g.src);try{d.stop(g.soundId)}catch{}g.time&&g.engine.off("afterSetTime",g.time),g.rate&&g.engine.off("afterSetPlayRate",g.rate),delete this.activeByActionId[l]}}const nA=new Ve;class Ze{videoEl=null;currentSrc=null;lastSeekAtMs=0;lastRate=null;boundEngine=null;boundActionStart=0;vfcHandle=null;rafHandle=null;attach(s){this.videoEl=s,this.currentSrc=s?.currentSrc||s?.getAttribute("src")||null,this.lastSeekAtMs=0,this.lastRate=null,this.unbindEngine(),this.setActive(!1)}setActive(s){this.videoEl&&(this.videoEl.style.opacity=s?"1":"0")}bindEngine(s,l){this.unbindEngine(),this.boundEngine=s,this.boundActionStart=l,this.tickFromVideo()}unbindEngine(){const s=this.videoEl;if(this.vfcHandle!=null&&s?.cancelVideoFrameCallback)try{s.cancelVideoFrameCallback(this.vfcHandle)}catch{}this.rafHandle!=null&&cancelAnimationFrame(this.rafHandle),this.vfcHandle=null,this.rafHandle=null,this.boundEngine=null}tickFromVideo=()=>{if(!this.videoEl||!this.boundEngine||this.videoEl.paused)return;const s=this.boundActionStart+this.videoEl.currentTime;Math.abs(this.boundEngine.getTime()-s)>.03&&this.boundEngine.setTime(s,!0);const l=this.videoEl;l?.requestVideoFrameCallback?this.vfcHandle=l.requestVideoFrameCallback(()=>this.tickFromVideo()):this.rafHandle=requestAnimationFrame(()=>this.tickFromVideo())};setSource(s){if(!this.videoEl||!s)return;const l=re.resolve(s);if(!((this.videoEl.currentSrc||this.videoEl.getAttribute("src")||"")===l||this.currentSrc===l)){this.currentSrc=l,this.videoEl.preload="auto",this.videoEl.src=l;try{this.videoEl.load()}catch{}}}warm(s){s&&re.warm(s)}setRate(s){this.videoEl&&this.lastRate!==s&&(this.lastRate=s,this.videoEl.playbackRate=s)}seek(s,l){if(this.videoEl)try{const g=performance.now(),d=l?.force===!0,I=this.videoEl.currentTime;if(!d&&!this.videoEl.paused&&(Math.abs(I-s)<.12||g-this.lastSeekAtMs<150))return;const m=this.videoEl.duration;Number.isFinite(m)&&m>0?this.videoEl.currentTime=Math.min(s,Math.max(0,m-.05)):this.videoEl.currentTime=Math.max(0,s),this.lastSeekAtMs=g}catch{}}async play(){if(this.videoEl)try{await this.videoEl.play(),this.boundEngine&&this.tickFromVideo()}catch{}}pause(){this.videoEl&&this.videoEl.pause()}}const Y=new Ze,te=160,ne=5,Ee=20,_e={effect0:{id:"effect0",name:"Play audio",source:{start:({action:u,engine:s,isPlaying:l,time:g})=>{if(l){const{src:d,offset:I}=u.data;nA.warm(d),nA.start({actionId:u.id,src:d,startTime:u.start,engine:s,time:g,offset:I})}},enter:({action:u,engine:s,isPlaying:l,time:g})=>{if(l){const{src:d,offset:I}=u.data;nA.warm(d),nA.start({actionId:u.id,src:d,startTime:u.start,engine:s,time:g,offset:I})}},leave:({action:u})=>{nA.stop({actionId:u.id})},stop:({action:u})=>{nA.stop({actionId:u.id})}}},effect2:{id:"effect2",name:"Play video audio",source:{start:({action:u,engine:s,isPlaying:l,time:g})=>{if(l){const{src:d,offset:I}=u.data;nA.warm(d),nA.start({actionId:u.id,src:d,startTime:u.start,engine:s,time:g,offset:I})}},enter:({action:u,engine:s,isPlaying:l,time:g})=>{if(l){const{src:d,offset:I}=u.data;nA.warm(d),nA.start({actionId:u.id,src:d,startTime:u.start,engine:s,time:g,offset:I})}},leave:({action:u})=>{nA.stop({actionId:u.id})},stop:({action:u})=>{nA.stop({actionId:u.id})}}},effect1:{id:"effect1",name:"Play video",source:{start:({action:u,engine:s,isPlaying:l,time:g})=>{const{src:d,previewSrc:I,offset:m}=u.data??{},b=I||d;b&&(Y.warm(b),Y.setSource(b)),Y.setActive(!0),Y.setRate(s.getPlayRate());const v=Number(m??0);Y.seek(Math.max(0,g-u.start+(Number.isFinite(v)?v:0)),{force:!0}),l&&Y.play()},enter:({action:u,engine:s,isPlaying:l,time:g})=>{const{src:d,previewSrc:I,offset:m}=u.data??{},b=I||d;b&&(Y.warm(b),Y.setSource(b)),Y.setActive(!0),Y.setRate(s.getPlayRate());const v=Number(m??0);Y.seek(Math.max(0,g-u.start+(Number.isFinite(v)?v:0)),{force:!0}),l&&Y.play()},update:({action:u,engine:s,time:l,isPlaying:g})=>{const{src:d,previewSrc:I,offset:m}=u.data??{},b=I||d;if(b&&Y.setSource(b),Y.setActive(!0),Y.setRate(s.getPlayRate()),!g){const v=Number(m??0);Y.seek(Math.max(0,l-u.start+(Number.isFinite(v)?v:0)),{force:!0})}},leave:()=>{Y.pause(),Y.unbindEngine(),Y.setActive(!1)},stop:()=>{Y.pause(),Y.unbindEngine(),Y.setActive(!1)}}}},$e=[{id:"0",actions:[{id:"action0",start:0,end:10,effectId:"effect1",data:{src:"/footage/Big_Buck_Bunny_720_10s_5MB.mp4",name:"Big Buck Bunny (10s)"}}]},{id:"1",actions:[]},{id:"2",actions:[{id:"action1",start:0,end:10,effectId:"effect0",data:{src:"/footage/file_example_MP3_700KB.mp3",name:"Example MP3 (looped)"}}]},{id:"3",actions:[]}],At="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAMAAADDpiTIAAAAAXNSR0IB2cksfwAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAtlQTFRFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANlVkNAAAAPN0Uk5TABYvRE1VWkg1HAcYU4Kt2vj/4ruTYikBCZnX7q9lGwVQ9P7KbhUfiej6Pi6jy1cCHqLUD435wqogGrj1C+vlZgMEj85AEror2REndyrp2OG9MBne/JsIx4Cc42jIOrMiBtCGNiUU/w5Fdaj3iHs8HW/E7CP2vpXTRsGOtl79+xfGNPNK39xM8DKYKLQN8dKSas0MPaxPp22ULKUK8p9Bv2uD1XI5EyaRkELPcOctOO9zO90/ECQ37eDA29ZLw7whQ7Uz5MzJ0VJgsOahTre56ough4FsjHSxVGFJf1h2ioRxhX5fxWl6plmXR2eWrlGeZFudikazJAAAFoFJREFUeJztnXt8FdW1x2fi60NauARuBNsomEbAABJALiDRAEEN70cVJFIlvK7FUIu89BYQFDE+uTxslZAHArkXKpILBBIVCVQpj/KMBotepQIV/VihvQiW6OGCiBxgzzlrnzNrZs6s3/eP/rFnnb1X5Us4mfnN3qYBRGO63QBwFwggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHAggHG8IYH7HKSPu9P8ed7sZWbgtwI/O/tkHjZwd+My1joThpgANv0g0T6gvxZ924BNnuxGKawI0Mr+sfzRUQcJpBz5wqhu5uCRAE9IP+YaHkqr5e5GNKwI0N789TCxNMs3drL1IxwUB0sy/H9Eov76qhq0V4LwAbU3zQ82P3LDna5ZWgOG8AJfXOaX/oYREc7P9rYAzOCtAR3NvZB9M3dPqbXtbAWdxVIDG174b8WdbmmalfZ2AczgoQBdzZ1Sfb2O+aVMn4DzOCXC7uS3aKeJurrCjExCEYwI0Sd4S/SQpta9aG/0sIAinBOixOYJv/wri09bjcaGdOCRAL9O2L/G3rvnGrqmAUwKkNdpo42wZ5gobZxOOIwIMMN+ydb5Mc81Xtk4oGCcEGGi+bveUddtXUh8ngZA4IcDgcoZJux86iseENuCAAPeu4Zm3p7mIZ2JR8AvQ6whbqKO3uZBrajGwCzDULA1XEt88admgM0nQLXtGmeaS+vS0QLZZ83JU3QF2AcYsDn29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",et="data:image/png;base64,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AAMEwIYANCAANgRgAwEYIAA2BKABAbAhABsIwAABsCEADQiADQHYQAAGCIANAWhAAGwIwAYCMEAAbAhAAwJgQwA2EIABAmBDABoQABsCsIEADBAAGwLQgADYEIANBGCAANgQgAYEwIYAbCAAAwTAhgA0IAA2BGADARggADYEoAEBsCEAGwjAAAGwIQANCIANAdhAAAYIgA0BaEAAbAjABgIwQABsCEADAmBDADYQgAECYEMAGhAAGwKwgQAMEAAbAtCAANgQgA0EYIAA2BCABgTAhgBsIAADBMCGADQgADYEYAMBGCAANgSgAQGwIQAbCMAAAbAhAA0IgA0B2EAABgiADQFoQABsCMAGAjBAAGwIQAMCYEMANhCAAQJgQwAaEAAbArCBAAwQABsC0IAA2BCADQRggADYEIAGBMCGAGwgAAMEwIYANCAANgRgAwEYIAA2BKABAbAhABsIwAABsCEADQiADQHYQAAGCIANAWhAAGwIwAYCMEAAbAhAAwJgQwA2EIABAmBDABoQABsCsIEADBAAGwLQgADYEIANBGCAANgQgAYEwIYAbCAAAwTAhgA0IAA2BGADARggADYEoAEBsCEAGwjAAAGwIQANCIANAdhAAAYIgA0BaEAAbAjABgIwQABsCEADAmBDADYQgAECYEMAGhAAGwKwgQAMEAAbAtCAANgQgA0EYIAA2BCABgTAhgBsIAADBMCGADQgADYEYAMBGCAANgSgAQGwIQAbCMAAAbAhAA0IgA0B2EAABgiADQFoQABsCMAGAjBAAGwIQAMCYEMANhCAAQJgQwAaEAAbArCBAAwQABsC0IAA2BCADQRggADYEIAGBMCGAGwgAAMEwIYANCAANgRgAwEYIAA2BKABAbAhABsIwAABsCEADQiADQHYQAAGCIANAWhAAGwIwAYCMEAAbAhAAwJgQwA2EIABAmBDABoQABsCsIEADBAAGwLQgADYEIANBGCAANgQgAYEwIYAbCAAAwTAhgA0IAA2BGADARggADYEoAEBsCEAGwjAAAGwIQANCIANAdhAAAYIgA0BaEAAbAjABgIwQABsCEADAmBDADYQgAECYEMAGhAAGwKwgQAMEAAbAtCAANgQgA0EYIAA2BCABgTAhgBsIAADBMCGADQgADYEYAMBGCAANgSgAQGwIQAbCMAAAbAhAA0IgA0B2EAABgiA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",tt="data:image/png;base64,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",nt="data:image/png;base64,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AIFwAhQA4aaMhBFAAAEEEKguQAFQ3ZAWEEAAAQQQCCdAARBuykgYAQQQQACB6gIUANUNaQEBBBBAAIFwAhQA4aaMhBFAAAEEEKguQAFQ3ZAWEEAAAQQQCCdAARBuykgYAQQQQACB6gIUANUNaQEBBBBAAIFwAhQA4aaMhBFAAAEEEKguQAFQ3ZAWEEAAAQQQCCdAARBuykgYAQQQQACB6gIUANUNaQEBBBBAAIFwAhQA4aaMhBFAAAEEEKguQAFQ3ZAWEEAAAQQQCCdAARBuykgYAQQQQACB6gIUANUNaQEBBBBAAIFwAhQA4aaMhBFAAAEEEKguQAFQ3ZAWEEAAAQQQCCdAARBuykgYAQQQQACB6gIUANUNaQEBBBBAAIFwAhQA4aaMhBFAAAEEEKguQAFQ3ZAWEEAAAQQQCCdAARBuykgYAQQQQACB6gIUANUNaQEBBBBAAIFwAhQA4aaMhBFAAAEEEKguQAFQ3ZAWEEAAAQQQCCdAARBuykgYAQQQQACB6gIUANUNaQEBBBBAAIFwAhQA4aaMhBFAAAEEEKguQAFQ3ZAWEEAAAQQQCCdAARBuykgYAQQQQACB6gIUANUNaQEBBBBAAIFwAhQA4aaMhBFAAAEEEKguQAFQ3ZAWEEAAAQQQCCdAARBuykgYAQQQQACB6gIUANUNaQEBBBBAAIFwAhQA4aaMhBFAAAEEEKgu8P8Ho19MJOV4IQAAAABJRU5ErkJggg==",rt="data:image/png;base64,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",it="data:image/png;base64,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UEgAAEAhAQAAhQQAABQSAABQSAAAQCEBAACFBAAAFBIAAFBIAABAIQEAAIUEAAAUEgAAUEgAAEAhAQAAhQQAABQSAABQSAAAQCEBAACFBAAAFBIAAFBIAABAIQEAAIUEAAAUEgAAUEgAAEAhAQAAhQQAABQSAABQSAAAQCEBAACFBAAAFBIAAFBIAABAIQEAAIUEAAAUEgAAUEgAAEAhAQAAhQQAABQSAABQSAAAQCEBAACFBAAAFBIAAFBIAABAIQEAAIUEAAAUEgAAUEgAAEAhAQAAhQQAABQSAABQSAAAQCEBAACFBAAAFBIAAFBIAABAIQEAAIUEAAAUEgAAUEgAAEAhAQAAhQQAABQSAABQSAAAQCEBAACFBAAAFBIAAFBIAABAIQEAAIUEAAAUEgAAUEgAAEAhAQAAhQQAABQSAABQSAAAQCEBAACFBAAAFBIAAFBIAABAIQEAAIUEAAAUEgAAUEgAAEAhAQAAhQQAABQSAABQSAAAQCEBAACFBAAAFBIAAFBIAABAIQEAAIUEAAAUEgAAUEgAAEAhAQAAhQQAABQSAABQSAAAQCEBAACFBAAAFBIAAFBIAABAIQEAAIUEAAAUEgAAUEgAAEAhAQAAhQQAABQSAABQSAAAQCEBAACFBAAAFBIAAFBIAABAIQEAAIUEAAAUEgAAUEgAAEAhAQAAhQQAABQSAABQSAAAQCEBAACFBAAAFBIAAFBIAABAIQEAAIUEAAAUEgAAUEgAAEAhAQAAhQQAABQSAABQSAAAQCEBAACFBAAAFBIAAFBIAABAIQEAAIUEAAAUEgAAUEgAAEAhAQAAhQQAABQSAABQSAAAQCEBAACFBAAAFBIAAFBIAABAIQEAAIUEAAAUEgAAUEgAAEAhAQAAhQQAABQSAABQSAAAQCEBAACFBAAAFBIAAFBIAABAIQEAAIUEAAAUEgAAUEgAAEAhAQAAhQQAABQSAABQSAAAQCEBAACFBAAAFBIAAFBIAABAIQEAAIUEAAAUEgAAUEgAAEAhAQAAhQQAABQSAABQSAAAQCEBAACFBAAAFBIAAFBIAABAIQEAAIUEAAAUEgAAUEgAAEAhAQAAhQQAABQSAABQSAAAQCEBAACFBAAAFBIAAFBIAABAIQEAAIUEAAAUEgAAUEgAAEAhAQAAhQQAABQSAABQSAAAQCEBAACFBAAAFBIA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",{Option:ot}=He.Select,st=[.2,.5,1,1.5,2],at=({timelineState:u,autoScrollWhenPlay:s,editorData:l,selectedActionId:g,onDeleteSelectedClip:d,onSplitSelectedClip:I,canUndo:m,canRedo:b,onUndo:v,onRedo:p})=>{const[N,F]=D.useState(!1),[q,W]=D.useState(0),[uA,K]=D.useState(!1),j=D.useRef(0),V=D.useRef(0),U=D.useRef(0),gA=D.useRef(0),CA=D.useRef(0),rA=D.useRef(0),BA=!!g,FA=(()=>{if(!g)return null;const w=Array.isArray(l)?l:[];for(const S of w){const x=S?.actions;if(Array.isArray(x))for(const H of x){if(String(H?.id)!==g)continue;const O=Number(H?.start),G=Number(H?.end);return!Number.isFinite(O)||!Number.isFinite(G)?null:{start:O,end:G}}}return null})(),yA=!!(FA&&q>FA.start&&q<FA.end),JA=w=>{const S=Array.isArray(l)?l:[];for(const x of S){const H=x?.actions;if(Array.isArray(H))for(const O of H){if(O?.effectId!=="effect1")continue;const G=Number(O?.start),k=Number(O?.end);if(!(!Number.isFinite(G)||!Number.isFinite(k))&&w>=G&&w<k)return!0}}return!1},qA=w=>{JA(w)||(Y.pause(),Y.unbindEngine(),Y.setActive(!1))};D.useEffect(()=>{if(!u.current)return;const w=u.current,S=()=>F(!0),x=()=>F(!1),H=({time:G})=>{W(G),qA(G)},O=({time:G})=>{const k=performance.now();if(!(k-j.current<33)&&(j.current=k,W(G),qA(G),s.current)){const lA=G*(te/ne)+Ee-500,sA=u.current;sA&&sA.setScrollLeft(lA)}};return w.listener.on("play",S),w.listener.on("paused",x),w.listener.on("afterSetTime",H),w.listener.on("setTimeByTick",O),()=>{w.listener.off("play",S),w.listener.off("paused",x),w.listener.off("afterSetTime",H),w.listener.off("setTimeByTick",O)}},[l]);const xA=()=>{u.current&&(u.current.isPlaying?u.current.pause():(nA.unlock(),u.current.play({autoEnd:!0})))},iA=w=>{u.current&&u.current.setPlayRate(w)},oA=w=>{const S=(parseInt(w%1*100+"")+"").padStart(2,"0"),x=(parseInt(w/60+"")+"").padStart(2,"0"),H=(parseInt(w%60+"")+"").padStart(2,"0");return E.jsx(E.Fragment,{children:`${x}:${H}.${S.replace("0.","")}`})},AA=()=>{const w=[],S=new Set,x=Array.isArray(l)?l:[];for(const H of x){const O=H?.actions;if(Array.isArray(O))for(const G of O){const k=G?.data?.src;if(!k)continue;const IA=String(k);S.has(IA)||(S.add(IA),w.push(IA))}}return w},UA=(w,S)=>{const x=URL.createObjectURL(w),H=document.createElement("a");H.href=x,H.download=S,document.body.appendChild(H),H.click(),H.remove(),setTimeout(()=>URL.revokeObjectURL(x),3e3)},wA=async()=>{if(!uA){K(!0);try{const w=AA(),S=new FormData;S.append("timeline",JSON.stringify({editorData:l}));for(const O of w){const G=await fetch(O);if(!G.ok)throw new Error(`Failed to fetch asset: ${O} (${G.status})`);const k=await G.blob();S.append("assets",k,encodeURIComponent(O))}const x=await fetch("/export",{method:"POST",body:S});if(!x.ok){const O=await x.text().catch(()=>"");throw new Error(O||`Export failed (${x.status})`)}const H=await x.blob();UA(H,"export.mp4")}finally{K(!1)}}};return E.jsxs("div",{className:"timeline-player",children:[E.jsx("div",{className:"play-control",role:"button",tabIndex:0,"aria-label":N?"Pause":"Play",onClick:()=>{Date.now()-V.current<450||xA()},onPointerUp:w=>{w.pointerType!=="mouse"&&(V.current=Date.now(),xA())},children:E.jsx("img",{src:N?et:At,alt:"",draggable:!1})}),E.jsx("div",{className:"time",children:oA(q)}),E.jsxs("div",{className:"history-tools",children:[E.jsx("button",{type:"button",className:"history-tool",disabled:!m,"aria-label":"Undo",onClick:()=>{Date.now()-CA.current<450||m&&v()},onPointerUp:w=>{w.pointerType!=="mouse"&&(CA.current=Date.now(),m&&v())},children:E.jsx("img",{src:tt,alt:"",draggable:!1})}),E.jsx("button",{type:"button",className:"history-tool",disabled:!b,"aria-label":"Redo",onClick:()=>{Date.now()-rA.current<450||b&&p()},onPointerUp:w=>{w.pointerType!=="mouse"&&(rA.current=Date.now(),b&&p())},children:E.jsx("img",{src:nt,alt:"",draggable:!1})})]}),E.jsx("div",{className:"rate-control",children:E.jsx(He.Select,{size:"small",defaultValue:1,style:{width:120},onChange:iA,children:st.map(w=>E.jsx(ot,{value:w,children:`${w.toFixed(1)}x`},w))})}),E.jsxs("div",{className:"clip-tools",children:[E.jsx("button",{type:"button",className:"clip-tool clip-tool-delete",disabled:!BA,"aria-label":"Delete selected clip",onClick:()=>{Date.now()-U.current<450||BA&&d()},onPointerUp:w=>{w.pointerType!=="mouse"&&(U.current=Date.now(),BA&&d())},children:E.jsx("img",{src:rt,alt:"",draggable:!1})}),E.jsx("button",{type:"button",className:"clip-tool clip-tool-split",disabled:!yA,"aria-label":"Split selected clip at cursor",onClick:()=>{Date.now()-gA.current<450||yA&&I()},onPointerUp:w=>{w.pointerType!=="mouse"&&(gA.current=Date.now(),yA&&I())},children:E.jsx("img",{src:it,alt:"",draggable:!1})})]}),E.jsx("div",{className:"export-control",children:E.jsx(He.Button,{size:"small",type:"primary",loading:uA,onClick:wA,children:"Export"})})]})};function ct(){const u=()=>typeof window>"u"?!1:typeof navigator<"u"&&(navigator.maxTouchPoints??0)>0,[s,l]=D.useState(u);return D.useEffect(()=>{if(typeof window>"u"||typeof window.matchMedia!="function")return;const g=window.matchMedia("(pointer: coarse)"),d=()=>l(!!g.matches||u());return d(),typeof g.addEventListener=="function"?(g.addEventListener("change",d),()=>g.removeEventListener("change",d)):(g.addListener(d),()=>g.removeListener(d))},[]),s}const ut=structuredClone($e),Qe=5,Ue=({item:u,hint:s,isDragging:l})=>E.jsxs("div",{className:`footage-card${l?" is-dragging":""}`,children:[E.jsx("div",{className:"footage-name",children:u.name}),u.kind==="video"?E.jsx("video",{className:"footage-preview",src:u.src,muted:!0,preload:"metadata",draggable:!1,onDragStart:g=>g.preventDefault(),playsInline:!0}):E.jsx("audio",{className:"footage-audio",src:u.src,controls:!0,preload:"metadata",draggable:!1,onDragStart:g=>g.preventDefault()}),E.jsx("div",{className:"footage-kind",children:s})]}),gt=({item:u,hint:s})=>{const{attributes:l,listeners:g,setNodeRef:d,transform:I,isDragging:m}=EA.useDraggable({id:`footage-${u.id}`,data:{item:u}}),b=I?{transform:`translate3d(${I.x}px, ${I.y}px, 0)`}:void 0;return E.jsx("div",{ref:d,style:b,...g,...l,children:E.jsx(Ue,{item:u,hint:s,isDragging:m})})},Bt=u=>String(u??"").toLowerCase().match(/\.(mp3|wav|m4a|aac|ogg)(\?|#|$)/)?"audio":"video",lt=(u,s)=>{try{const l=String(u??"").split("/").pop()||"";return decodeURIComponent(l.split("?")[0].split("#")[0])||`Footage ${s+1}`}catch{return`Footage ${s+1}`}},ft=({footageUrls:u})=>{const[s,l]=D.useState(ut),[g,d]=D.useState(null),[I,m]=D.useState([]),[b,v]=D.useState([]),p=D.useRef(s),N=ct(),F=D.useRef(null),q=D.useRef(null),W=D.useRef(null),uA=D.useRef(!0),K=D.useMemo(()=>{const A=Array.isArray(u)?u.filter(Boolean):[];return A.length?A.map((t,n)=>({id:`url-${n}`,kind:Bt(t),name:lt(t,n),src:t,defaultDuration:10})):[]},[u]),[j,V]=D.useState(null),[U,gA]=D.useState(null),[CA,rA]=D.useState(null),[BA,ie]=D.useState(0),[FA,yA]=D.useState(0),[JA,qA]=D.useState(0),[xA,iA]=D.useState(0),[oA,AA]=D.useState(!1),[UA,wA]=D.useState(null),w=D.useRef(null),S=D.useRef(null),x=D.useRef(null),H=D.useRef(null),O=N?48:32,G=[0,1],k=[2,3],IA=["V1","V2","A1","A2"],lA=(A,t)=>{if(t.length===0)return null;if(A==null)return t[0];let n=t[0],o=Math.abs(A-n);for(const r of t){const i=Math.abs(A-r);i<o&&(n=r,o=i)}return n},sA=(A,t)=>A?A.kind==="video"?lA(t,G):lA(t,k):null,NA=A=>A===G[1]?k[1]:k[0];D.useEffect(()=>{re.warmFromEditorData(s)},[s]),D.useEffect(()=>{p.current=s},[s]),D.useLayoutEffect(()=>{const A=W.current;if(!A)return;const t=()=>{const o=A.getBoundingClientRect(),r=A.querySelector(".timeline-editor-edit-area");if(!r)return;const i=r.getBoundingClientRect();qA(i.top-o.top),iA(i.left-o.left)},n=requestAnimationFrame(t);return window.addEventListener("resize",t),()=>{cancelAnimationFrame(n),window.removeEventListener("resize",t)}},[N,s.length]);const GA=A=>{const t=W.current;if(!t||!A)return!1;const n=t.getBoundingClientRect();return A.x>=n.left&&A.x<=n.right&&A.y>=n.top&&A.y<=n.bottom},WA=D.useRef(0),fA=()=>globalThis.crypto?.randomUUID?globalThis.crypto.randomUUID():`uid-${++WA.current}`,z=D.useRef(null),eA=D.useRef(null),YA=D.useRef(null),TA=.9,MA=1.05,Z=D.useRef({actionId:null,edge:null}),X=D.useRef({actionId:null,mode:null,dir:null,basePointerTime:null,lastPointerTime:null,initialStart:0,initialEnd:0,takeover:!1}),PA=D.useRef(!1),LA=A=>A.map(t=>{const n=(t.actions??[]).map(o=>`${String(o.id)}@${Number(o.start)}-${Number(o.end)}`).join("|");return`${String(t.id)}:${n}`}).join("||"),HA=A=>{const t=structuredClone(A);m(n=>{const o=[...n,t];return o.length>Qe&&o.splice(0,o.length-Qe),o}),v([])},jA=(A,t,n,o)=>A<o&&t>n,dA=(A,t,n,o)=>{const r=Array.isArray(A?.actions)?A.actions:[];for(const i of r)if(!(!i||i.id===t)&&jA(n,o,Number(i.start),Number(i.end)))return!0;return!1},KA=(A,t)=>{for(let n=0;n<A.length;n++){const o=A[n],r=Array.isArray(o?.actions)?o.actions:[];for(let i=0;i<r.length;i++){const a=r[i];if(String(a?.id)===t)return{rowIndex:n,actionIndex:i,action:a}}}return null},DA=(A,t)=>{const n=KA(A,t),o=n?.action?.data?.linkId;if(!n||!o)return null;for(let r=0;r<A.length;r++){const i=A[r],a=Array.isArray(i?.actions)?i.actions:[];for(let B=0;B<a.length;B++){const f=a[B];if(f?.data?.linkId&&String(f.data.linkId)===String(o)&&String(f.id)!==String(t))return{rowIndex:r,actionIndex:B,action:f}}}return null},oe=(A,t)=>{const n=KA(A,t);if(!n)return A;const o=DA(A,t);if(!o)return A;const r=Number(n.action.start),i=Number(n.action.end);if(!Number.isFinite(r)||!Number.isFinite(i)||i<=r||Number(o.action.start)===r&&Number(o.action.end)===i)return A;const a=structuredClone(A),B=a[o.rowIndex],f=Array.isArray(B.actions)?[...B.actions]:[],Q={...f[o.actionIndex],start:r,end:i};return f.splice(o.actionIndex,1,Q),B.actions=f,a},XA=(A,t,n,o)=>{if(!Number.isFinite(n)||!Number.isFinite(o)||o<=n)return A;const r=KA(A,t);if(!r)return A;const i=DA(A,t);if(!i)return A;const a=structuredClone(A),B=a[r.rowIndex],f=Array.isArray(B.actions)?[...B.actions]:[],Q={...f[r.actionIndex],start:n,end:o};f.splice(r.actionIndex,1,Q),B.actions=f;const C=a[i.rowIndex],y=Array.isArray(C.actions)?[...C.actions]:[],h={...y[i.actionIndex],start:n,end:o};return y.splice(i.actionIndex,1,h),C.actions=y,a},zA=(A,t,n,o)=>{if(!Number.isFinite(n)||!Number.isFinite(o)||o<=n)return A;const r=KA(A,t);if(!r)return A;const i=Number(r.action.start),a=Number(r.action.end);if(i===n&&a===o)return A;const B=structuredClone(A),f=B[r.rowIndex],Q=Array.isArray(f.actions)?[...f.actions]:[],C={...Q[r.actionIndex],start:n,end:o};return Q.splice(r.actionIndex,1,C),f.actions=Q,B},ZA=()=>{const A=F.current?.getTime?Number(F.current.getTime()):0;return Number.isFinite(A)?Math.max(0,A):0},_A=(A,t,n)=>{const o=ZA(),r=n-t;if(!Number.isFinite(r)||r<=0)return{start:t,end:n,snapped:!1,edge:null};const i=Math.abs(t-o),a=Math.abs(n-o),B=i<=a?"start":"end",f=Math.min(i,a),Q=Z.current;if(Q.actionId===A&&Q.edge!=null){if((Q.edge==="start"?i:a)>MA)return Z.current={actionId:A,edge:null},{start:t,end:n,snapped:!1,edge:null}}else{if(f>TA)return{start:t,end:n,snapped:!1,edge:null};Z.current={actionId:A,edge:B}}const h=Z.current.edge;if(h==="start"){const P=o,T=P+r;return{start:Math.max(0,P),end:Math.max(Math.max(0,P),T),snapped:!0,edge:h}}const M=o,R=M-r;return{start:Math.max(0,R),end:Math.max(0,M),snapped:!0,edge:h}},se=(A,t,n,o)=>{const r=ZA(),i=o==="left"?"start":"end",a=Math.abs(i==="start"?t-r:n-r),B=Z.current;if(B.actionId===A&&B.edge===i){if(a>MA)return Z.current={actionId:A,edge:null},{start:t,end:n,snapped:!1}}else{if(a>TA)return{start:t,end:n,snapped:!1};Z.current={actionId:A,edge:i}}if(i==="start"){const h=Math.max(0,r),M=Math.max(h+.01,n);return{start:h,end:M,snapped:!0}}const C=Math.max(0,r),y=Math.min(t,C-.01);return{start:Math.max(0,y),end:C,snapped:!0}},Ce=(A,t,n)=>{const o=A.defaultDuration??10;let r=Math.max(0,t),i=r+o;const a=F.current;a?.isPlaying&&a.pause(),l(B=>{HA(B);const f=structuredClone(B);for(;f.length<4;)f.push({id:`${f.length}`,actions:[]});const Q=Number.isFinite(Number(n))?Number(n):null,C=lA(Q,G)??G[0],y=lA(Q,k)??k[0],h=M=>{const R=[];for(const P of M){const T=Array.isArray(f[P]?.actions)?f[P].actions:[];for(const _ of T){const QA=Number(_?.start),mA=Number(_?.end);!Number.isFinite(QA)||!Number.isFinite(mA)||R.push({start:QA,end:mA})}}R.sort((P,T)=>P.start-T.start);for(const P of R)jA(r,i,P.start,P.end)&&(r=P.end,i=r+o)};if(A.kind==="video"){const M=C,R=NA(M);h([M,R]);const P=`link-${fA()}`,T=`video-${fA()}`,_=`video-audio-${fA()}`;f[M].actions=[...f[M].actions??[],{id:T,start:r,end:i,effectId:"effect1",data:{src:A.src,previewSrc:A.previewSrc,name:A.name,linkId:P}}],f[R].actions=[...f[R].actions??[],{id:_,start:r,end:i,effectId:"effect2",data:{src:A.src,name:A.name,linkId:P}}]}else{const M=y;h([M]),f[M].actions=[...f[M].actions??[],{id:`audio-${fA()}`,start:r,end:i,effectId:"effect0",data:{src:A.src,name:A.name}}]}return f})},we=()=>{const A=W.current;return A?A.querySelector(".timeline-editor-edit-area .ReactVirtualized__Grid")?.scrollLeft??0:0},Ie=()=>BA,kA=A=>{const t=W.current;if(!t)return 0;const o=(t.querySelector(".timeline-editor-edit-area")??t).getBoundingClientRect(),a=(A-o.x+we()-Ee)*ne/te;return Math.max(0,a)},De=A=>{const t=Number(A);return Number.isFinite(t)?Ee+t*te/ne:0},he=(A,t,n,o)=>{const r=A.defaultDuration??10;let i=Math.max(0,t),a=i+r;const B=[];if(A.kind==="video"){const Q=n,C=NA(Q);B.push(Q,C)}else B.push(n);const f=[];for(const Q of B){const C=Array.isArray(o[Q]?.actions)?o[Q].actions:[];for(const y of C){const h=Number(y?.start),M=Number(y?.end);!Number.isFinite(h)||!Number.isFinite(M)||f.push({start:h,end:M})}}f.sort((Q,C)=>Q.start-C.start);for(const Q of f)jA(i,a,Q.start,Q.end)&&(i=Q.end,a=i+r);return Math.max(0,i)},OA=A=>{const t=W.current;if(!t)return null;const n=t.querySelector(".timeline-editor-edit-area");if(!n)return null;const o=n.getBoundingClientRect(),r=A-o.y;if(r<0||r>o.height)return null;const i=r+Ie(),a=Math.floor(i/O);if(!Number.isFinite(a))return null;const B=Math.max(0,p.current.length-1);return Math.min(Math.max(0,a),B)},ae=A=>{if(!A)return null;if("clientX"in A&&"clientY"in A){const r=Number(A.clientX),i=Number(A.clientY);if(Number.isFinite(r)&&Number.isFinite(i))return{x:r,y:i}}const t=A.touches,n=A.changedTouches,o=(t&&t.length?t[0]:null)||(n&&n.length?n[0]:null);if(o){const r=Number(o.clientX),i=Number(o.clientY);if(Number.isFinite(r)&&Number.isFinite(i))return{x:r,y:i}}return null},aA=()=>{if(PA.current)return;PA.current=!0;const A=n=>{const o=X.current;if(!o.actionId||!o.mode||n.isPrimary===!1)return;const r=kA(n.clientX);o.basePointerTime==null&&(o.basePointerTime=r),o.lastPointerTime=r},t=()=>{X.current={actionId:null,mode:null,dir:null,basePointerTime:null,lastPointerTime:null,initialStart:0,initialEnd:0,takeover:!1},Z.current={actionId:null,edge:null}};window.addEventListener("pointermove",A,{capture:!0}),window.addEventListener("pointerup",t,{capture:!0}),window.addEventListener("pointercancel",t,{capture:!0}),X.current._removePointerListeners=()=>{window.removeEventListener("pointermove",A,{capture:!0}),window.removeEventListener("pointerup",t,{capture:!0}),window.removeEventListener("pointercancel",t,{capture:!0}),PA.current=!1}},VA=()=>{const A=X.current?._removePointerListeners;A?.(),delete X.current._removePointerListeners},$A=A=>A.map(t=>({...t,selected:void 0,actions:(t.actions??[]).map(n=>({...n,selected:void 0}))})),ce=D.useMemo(()=>s.map((A,t)=>{const n=g?(A.actions??[]).some(a=>String(a.id)===g):!1,o=j!=null&&CA!=null&&t===CA,r=Array.isArray(A.classNames)?A.classNames:[],i=o?[...r,"dnd-drop-hover"]:r;return{...A,classNames:i,selected:n,actions:(A.actions??[]).map(a=>({...a,selected:g?String(a.id)===g:!1}))}}),[s,g,j,CA]),me=()=>{if(!g)return;const A=F.current;A?.isPlaying&&A.pause(),l(t=>{HA(t);let n=null;for(const r of t){const i=Array.isArray(r?.actions)?r.actions:[];for(const a of i){if(String(a?.id)!==g)continue;const B=a?.data?.linkId;B!=null&&(n=String(B));break}if(n!=null)break}return t.map(r=>({...r,actions:(r.actions??[]).filter(i=>!(String(i?.id)===g||n&&String(i?.data?.linkId??"")===n))}))}),d(null)},ue=()=>{if(!g)return;const A=F.current,t=A?.getTime?A.getTime():null;if(t==null)return;const n=Number(t);Number.isFinite(n)&&(A?.isPlaying&&A.pause(),z.current=null,eA.current=null,l(o=>{let r=-1,i=-1,a=null;for(let L=0;L<o.length;L++){const J=o[L],tA=Array.isArray(J?.actions)?J.actions:[];for(let $=0;$<tA.length;$++){const SA=tA[$];if(String(SA?.id)===g){r=L,i=$,a=SA;break}}if(a)break}if(!a)return o;const B=a?.data?.linkId?String(a.data.linkId):null;let f=-1,Q=-1,C=null;if(B)for(let L=0;L<o.length;L++){const J=o[L],tA=Array.isArray(J?.actions)?J.actions:[];for(let $=0;$<tA.length;$++){const SA=tA[$];if(String(SA?.id)!==g&&String(SA?.data?.linkId??"")===B){f=L,Q=$,C=SA;break}}if(C)break}const y=Number(a.start),h=Number(a.end);if(!Number.isFinite(y)||!Number.isFinite(h)||!(y<n&&n<h))return o;HA(o);const M=B&&C?`link-${fA()}`:B,R=B&&C?`link-${fA()}`:B,P=`${String(a.id)}-r-${fA()}`,T=Number(a?.data?.offset??0),_=Number.isFinite(T)?T:0,QA=n-y,mA=_+(Number.isFinite(QA)?QA:0),RA={...a,start:y,end:n,id:a.id,data:{...a.data,offset:_,linkId:M??void 0}},vA={...a,start:n,end:h,id:P,data:{...a.data,offset:mA,linkId:R??void 0}},bA=structuredClone(o),cA=bA[r],pA=Array.isArray(cA.actions)?[...cA.actions]:[];if(pA.splice(i,1,RA,vA),pA.sort((L,J)=>Number(L.start)-Number(J.start)),cA.actions=pA,C&&f>=0&&Q>=0){const L=Number(C.start),J=Number(C.end);if(Number.isFinite(L)&&Number.isFinite(J)&&L===y&&J===h){const tA=`${String(C.id)}-r-${fA()}`,$={...C,start:y,end:n,id:C.id,data:{...C.data,linkId:M??void 0}},SA={...C,start:n,end:h,id:tA,data:{...C.data,linkId:R??void 0}},Me=bA[f],Pe=Array.isArray(Me.actions)?[...Me.actions]:[];Pe.splice(Q,1,$,SA),Pe.sort((Ge,Ye)=>Number(Ge.start)-Number(Ye.start)),Me.actions=Pe}}return bA}))},ve=()=>{const A=F.current,t=A?.getTime?A.getTime():null;A?.isPlaying&&A.pause(),z.current=null,eA.current=null,d(null),m(n=>{if(n.length===0)return n;const o=n[n.length-1],r=structuredClone(p.current);return v(i=>[...i,r]),l(structuredClone(o)),n.slice(0,-1)}),t!=null&&requestAnimationFrame(()=>{const n=F.current;n?.setTime&&n.setTime(t)})},ge=()=>{const A=F.current,t=A?.getTime?A.getTime():null;A?.isPlaying&&A.pause(),z.current=null,eA.current=null,d(null),v(n=>{if(n.length===0)return n;const o=n[n.length-1],r=structuredClone(p.current);return m(i=>{const a=[...i,r];return a.length>Qe&&a.splice(0,a.length-Qe),a}),l(structuredClone(o)),n.slice(0,-1)}),t!=null&&requestAnimationFrame(()=>{const n=F.current;n?.setTime&&n.setTime(t)})},Be=EA.useSensors(EA.useSensor(EA.PointerSensor,{activationConstraint:{distance:6}}),EA.useSensor(EA.TouchSensor,{activationConstraint:{delay:180,tolerance:6}})),{setNodeRef:be,isOver:pe}=EA.useDroppable({id:"timeline-drop"}),le=A=>{const t=A.active.data.current?.item;V(t??null);const n=ae(A.activatorEvent);if(w.current=n,S.current=n,wA(n),n){const r=GA(n);AA(r);const i=OA(n.y);rA(r?sA(t??null,i):null)}else rA(null),AA(!1);const o=A.active.rect.current.initial;gA(o?{width:o.width,height:o.height}:null)},fe=A=>{const t=A.active.rect.current.initial;!U&&t&&gA({width:t.width,height:t.height});const n=S.current;if(!n){rA(null);return}const o=Number(A?.delta?.x??0),r=Number(A?.delta?.y??0),i={x:n.x+(Number.isFinite(o)?o:0),y:n.y+(Number.isFinite(r)?r:0)};w.current=i,wA(i);const a=GA(i);AA(a);const B=OA(i.y);rA(a?sA(j,B):null)},Fe=A=>{const t=A.active.data.current?.item,n=S.current,o=Number(A?.delta?.x??0),r=Number(A?.delta?.y??0),i=n?{x:n.x+(Number.isFinite(o)?o:0),y:n.y+(Number.isFinite(r)?r:0)}:w.current;w.current=i;const B=String(A.over?.id??"")==="timeline-drop"||GA(i);if(t&&B&&i){const f=kA(i.x),Q=OA(i.y),C=sA(t,Q);rA(C),Ce(t,Math.max(0,f),C)}V(null),gA(null),rA(null),AA(!1),wA(null),S.current=null},ye=()=>{V(null),gA(null),rA(null),AA(!1),wA(null),S.current=null},hA=D.useMemo(()=>{if(!j||!oA)return null;const A=UA;if(!A)return null;const t=OA(A.y),n=sA(j,t);if(n==null)return null;const o=kA(A.x),r=he(j,o,n,p.current),i=j.defaultDuration??10;return{laneRow:n,desiredStart:o,start:r,end:r+i,duration:i,kind:j.kind}},[j,oA,UA,FA,BA,O]),Ne=A=>{if(!N||A.pointerType==="mouse"||j)return;if(!!A.target?.closest?.(".timeline-editor-cursor-area, .timeline-editor-cursor")){H.current={pointerId:A.pointerId},x.current=null;try{A.currentTarget.setPointerCapture(A.pointerId)}catch{}A.preventDefault();return}x.current={x:A.clientX,y:A.clientY}},e=A=>{if(!N||A.pointerType==="mouse"||j||!H.current||H.current.pointerId!==A.pointerId)return;const t=kA(A.clientX);F.current&&F.current.setTime(t),A.preventDefault()},c=A=>{if(!N||A.pointerType==="mouse"||j)return;if(H.current&&H.current.pointerId===A.pointerId){H.current=null;try{A.currentTarget.releasePointerCapture(A.pointerId)}catch{}A.preventDefault();return}const t=x.current;x.current=null;const n=t?Math.abs(A.clientX-t.x):0,o=t?Math.abs(A.clientY-t.y):0;if(n>10||o>10)return;const i=A.target?.closest?.("[data-action-id]"),a=i?.getAttribute("data-row-id"),B=i?.getAttribute("data-action-id");if(a&&B){d(B);return}const f=kA(A.clientX);d(null),F.current&&F.current.setTime(f)};return E.jsx(EA.DndContext,{sensors:Be,collisionDetection:EA.rectIntersection,onDragStart:le,onDragMove:fe,onDragEnd:Fe,onDragCancel:ye,children:E.jsxs("div",{className:"timeline-editor-engine",children:[E.jsx("div",{className:"player-config",children:E.jsx("div",{className:"footage-bin",children:K.map(A=>E.jsx(gt,{item:A,hint:N?"Press-hold, then drag into timeline":"Drag into timeline"},A.id))})}),E.jsx("div",{className:"player-panel",ref:q,children:E.jsx("video",{className:"player-video",preload:"auto",playsInline:!0,muted:!0,controls:!1,disablePictureInPicture:!0,disableRemotePlayback:!0,controlsList:"nodownload noplaybackrate noremoteplayback",tabIndex:-1,onContextMenu:A=>A.preventDefault(),ref:A=>Y.attach(A)})}),E.jsx(at,{timelineState:F,autoScrollWhenPlay:uA,editorData:s,selectedActionId:g,onDeleteSelectedClip:me,onSplitSelectedClip:ue,canUndo:I.length>0,canRedo:b.length>0,onUndo:ve,onRedo:ge}),E.jsxs("div",{className:`timeline-drop${pe?" is-over":""}`,ref:A=>{W.current=A,be(A)},onPointerDown:Ne,onPointerMove:e,onPointerUp:c,children:[E.jsx("div",{className:"timeline-lane-labels",style:{top:JA,transform:`translateY(${-BA}px)`,height:O*IA.length},children:IA.map((A,t)=>E.jsx("div",{className:`timeline-lane-label${CA===t?" is-hover":""}`,style:{height:O},children:A},A))}),hA?E.jsx("div",{className:"timeline-ghost-layer",style:{top:JA,left:xA},children:(()=>{const A=te/ne,t=hA.duration*A,n=De(hA.start)-FA,o=[];return hA.kind==="video"?(o.push({row:hA.laneRow,kind:"video"}),o.push({row:NA(hA.laneRow),kind:"audio"})):o.push({row:hA.laneRow,kind:"audio"}),o.map(r=>E.jsx("div",{className:`timeline-ghost-clip${r.kind==="video"?" is-video":" is-audio"}`,style:{left:n,top:r.row*O-BA,width:t,height:O}},`${r.kind}-${r.row}`))})()}):null,E.jsx(Te.Timeline,{scale:ne,scaleWidth:te,startLeft:Ee,rowHeight:O,autoScroll:!0,ref:F,editorData:ce,effects:_e,onScroll:A=>{const t=Number(A?.scrollTop??0),n=Number(A?.scrollLeft??0);Number.isFinite(t)&&ie(t),Number.isFinite(n)&&yA(n)},onClickTimeArea:(A,t)=>{d(null)},onClickRow:A=>{A.target?.closest?.(".timeline-editor-action")||d(null)},onClickActionOnly:(A,{action:t})=>{const n=t;n?.id&&d(String(n.id))},onActionMoveStart:({action:A})=>{YA.current=String(A?.id??""),Z.current={actionId:String(A?.id??""),edge:null};const t=Number(A?.start),n=Number(A?.end);X.current={actionId:String(A?.id??""),mode:"move",dir:null,basePointerTime:null,lastPointerTime:null,initialStart:Number.isFinite(t)?t:0,initialEnd:Number.isFinite(n)?n:0,takeover:!1},aA(),!z.current&&(z.current=structuredClone(s),eA.current=LA(s))},onActionMoveEnd:()=>{const A=z.current,t=eA.current;A&&t&&LA(p.current)!==t&&HA(A),z.current=null,eA.current=null,YA.current=null,Z.current={actionId:null,edge:null},X.current={actionId:null,mode:null,dir:null,basePointerTime:null,lastPointerTime:null,initialStart:0,initialEnd:0,takeover:!1},VA()},onActionResizeStart:({action:A})=>{YA.current=String(A?.id??""),Z.current={actionId:String(A?.id??""),edge:null};const t=Number(A?.start),n=Number(A?.end);X.current={actionId:String(A?.id??""),mode:"resize",dir:null,basePointerTime:null,lastPointerTime:null,initialStart:Number.isFinite(t)?t:0,initialEnd:Number.isFinite(n)?n:0,takeover:!1},aA(),!z.current&&(z.current=structuredClone(s),eA.current=LA(s))},onActionResizeEnd:()=>{const A=z.current,t=eA.current;A&&t&&LA(p.current)!==t&&HA(A),z.current=null,eA.current=null,YA.current=null,Z.current={actionId:null,edge:null},X.current={actionId:null,mode:null,dir:null,basePointerTime:null,lastPointerTime:null,initialStart:0,initialEnd:0,takeover:!1},VA()},onActionMoving:({action:A,row:t,start:n,end:o})=>{const r=String(A?.id??""),i=X.current;if(i.takeover&&i.mode==="move"&&i.actionId===r){const R=i.basePointerTime,P=i.lastPointerTime,T=R!=null&&P!=null?P-R:0,_=i.initialStart+T,QA=i.initialEnd+T,mA=_A(r,_,QA),RA=mA.start,vA=mA.end;if(dA(t,String(A.id),RA,vA))return!1;const cA=p.current,pA=DA(cA,String(A.id));if(pA){const L=cA[pA.rowIndex];if(L&&dA(L,String(pA.action.id),RA,vA))return!1}return l(L=>{const J=pA?XA(L,String(A.id),RA,vA):zA(L,String(A.id),RA,vA);return p.current=J,J}),!1}const a=Number(n),B=Number(o);if(!Number.isFinite(a)||!Number.isFinite(B)||B<=a)return!1;const f=_A(r,a,B),Q=f.start,C=f.end;if(!Number.isFinite(Q)||!Number.isFinite(C)||C<=Q||dA(t,String(A.id),Q,C))return!1;const h=p.current,M=DA(h,String(A.id));if(M){const R=h[M.rowIndex];if(R&&dA(R,String(M.action.id),Q,C))return!1}if((M||f.snapped)&&l(R=>{const P=M?XA(R,String(A.id),Q,C):zA(R,String(A.id),Q,C);return p.current=P,P}),f.snapped){const R=X.current.lastPointerTime;return X.current={actionId:r,mode:"move",dir:null,basePointerTime:R,lastPointerTime:X.current.lastPointerTime,initialStart:a,initialEnd:B,takeover:!0},aA(),!1}},onActionResizing:({action:A,row:t,start:n,end:o,dir:r})=>{const i=String(A?.id??""),a=X.current,B=r??"right";if(a.takeover&&a.mode==="resize"&&a.actionId===i){const T=a.basePointerTime,_=a.lastPointerTime,QA=T!=null&&_!=null?_-T:0,mA=B==="left"?a.initialStart+QA:a.initialStart,RA=B==="right"?a.initialEnd+QA:a.initialEnd,vA=se(i,mA,RA,B),bA=vA.start,cA=vA.end;if(dA(t,String(A.id),bA,cA))return!1;const L=p.current,J=DA(L,String(A.id));if(J){const tA=L[J.rowIndex];if(tA&&dA(tA,String(J.action.id),bA,cA))return!1}return l(tA=>{const $=J?XA(tA,String(A.id),bA,cA):zA(tA,String(A.id),bA,cA);return p.current=$,$}),!1}const f=Number(n),Q=Number(o);if(!Number.isFinite(f)||!Number.isFinite(Q)||Q<=f)return!1;const C=se(i,f,Q,B),y=C.start,h=C.end;if(!Number.isFinite(y)||!Number.isFinite(h)||h<=y||dA(t,String(A.id),y,h))return!1;const R=p.current,P=DA(R,String(A.id));if(P){const T=R[P.rowIndex];if(T&&dA(T,String(P.action.id),y,h))return!1}if((P||C.snapped)&&l(T=>{const _=P?XA(T,String(A.id),y,h):zA(T,String(A.id),y,h);return p.current=_,_}),C.snapped){const T=X.current.lastPointerTime;return X.current={actionId:i,mode:"resize",dir:B,basePointerTime:T,lastPointerTime:X.current.lastPointerTime,initialStart:f,initialEnd:Q,takeover:!0},aA(),!1}},onChange:A=>{const t=$A(A),n=YA.current,o=n?oe(t,n):t;l(o);const r=z.current,i=eA.current;r&&i&&(LA(o)!==i&&HA(r),z.current=null,eA.current=null)},getActionRender:(A,t)=>{if(A.effectId==="effect0")return E.jsx(ke,{action:A,row:t});if(A.effectId==="effect2")return E.jsx(qe,{action:A,row:t});if(A.effectId==="effect1")return E.jsx(Je,{action:A,row:t})}})]}),E.jsx(EA.DragOverlay,{children:j?E.jsx("div",{className:"footage-overlay",style:U?{width:U.width,height:U.height}:void 0,children:E.jsx(Ue,{item:j,hint:"Drop on timeline",isDragging:!0})}):null})]})})};exports.MeliesVideoEditor=ft;