@1agh/maude 0.58.2 → 0.58.3
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.
- package/apps/studio/annotations-bindings.ts +83 -4
- package/apps/studio/api.ts +6 -1
- package/apps/studio/bin/_fetch-asset.mjs +169 -5
- package/apps/studio/bin/_import-asset.mjs +72 -0
- package/apps/studio/bin/_import-figma.mjs +1121 -0
- package/apps/studio/bin/_video-playwright.mjs +86 -3
- package/apps/studio/bin/import-figma.sh +38 -0
- package/apps/studio/bin/read-annotations.mjs +11 -1
- package/apps/studio/bun.lock +16 -22
- package/apps/studio/canvas-edit.ts +29 -5
- package/apps/studio/client/app.jsx +44 -1
- package/apps/studio/client/export-center.jsx +42 -4
- package/apps/studio/client/panels/CloudBar.jsx +92 -1
- package/apps/studio/client/panels/FigmaImportPanel.jsx +264 -0
- package/apps/studio/client/panels/GitPanel.jsx +26 -6
- package/apps/studio/client/panels/SettingsPanel.jsx +181 -0
- package/apps/studio/client/panels/SetupChecklist.jsx +26 -2
- package/apps/studio/client/panels/TimelinePanel.jsx +2 -2
- package/apps/studio/client/panels/timeline-parse.js +3 -3
- package/apps/studio/client/styles/3-shell-maude.css +7 -0
- package/apps/studio/client/styles/4-components.css +134 -0
- package/apps/studio/clip-ops.ts +93 -17
- package/apps/studio/cloud/endpoints.ts +78 -10
- package/apps/studio/cloud/renew.ts +183 -0
- package/apps/studio/context.ts +2 -1
- package/apps/studio/dist/client.bundle.js +1261 -1261
- package/apps/studio/dist/runtime/@remotion_media.js +56 -136
- package/apps/studio/dist/runtime/@remotion_player.js +18 -18
- package/apps/studio/dist/runtime/@remotion_transitions.js +9 -9
- package/apps/studio/dist/runtime/@remotion_transitions_clock-wipe.js +1 -1
- package/apps/studio/dist/runtime/remotion.js +12 -12
- package/apps/studio/dist/styles.css +1 -1
- package/apps/studio/exporters/_browser-bundles.ts +20 -6
- package/apps/studio/exporters/_runtime.ts +19 -0
- package/apps/studio/exporters/degraded.ts +92 -0
- package/apps/studio/exporters/index.ts +5 -0
- package/apps/studio/exporters/jobs.ts +19 -0
- package/apps/studio/exporters/unsupported-media.ts +170 -0
- package/apps/studio/exporters/video-encode-lib.ts +27 -1
- package/apps/studio/exporters/video-render-lib.ts +6 -0
- package/apps/studio/exporters/video.ts +62 -1
- package/apps/studio/figma/assets.test.ts +372 -0
- package/apps/studio/figma/assets.ts +398 -0
- package/apps/studio/figma/client.test.ts +395 -0
- package/apps/studio/figma/client.ts +513 -0
- package/apps/studio/figma/comments-to-strokes.test.ts +194 -0
- package/apps/studio/figma/comments-to-strokes.ts +173 -0
- package/apps/studio/figma/endpoints.ts +200 -0
- package/apps/studio/figma/sanitize.test.ts +256 -0
- package/apps/studio/figma/sanitize.ts +315 -0
- package/apps/studio/figma/style-map.ts +352 -0
- package/apps/studio/figma/to-artboard.test.ts +808 -0
- package/apps/studio/figma/to-artboard.ts +701 -0
- package/apps/studio/figma/to-render.test.ts +180 -0
- package/apps/studio/figma/to-render.ts +306 -0
- package/apps/studio/figma/to-strokes-roundtrip.test.ts +152 -0
- package/apps/studio/figma/to-strokes.test.ts +705 -0
- package/apps/studio/figma/to-strokes.ts +749 -0
- package/apps/studio/figma/to-tokens.test.ts +321 -0
- package/apps/studio/figma/to-tokens.ts +305 -0
- package/apps/studio/figma/types.ts +539 -0
- package/apps/studio/figma/url.test.ts +167 -0
- package/apps/studio/figma/url.ts +160 -0
- package/apps/studio/http.ts +129 -0
- package/apps/studio/sync/asset-push.ts +124 -0
- package/apps/studio/sync/connection-state.ts +11 -0
- package/apps/studio/sync/hub-link.ts +63 -7
- package/apps/studio/sync/hubs-config.ts +31 -3
- package/apps/studio/sync/index.ts +276 -26
- package/apps/studio/sync/migrate-flat-fallback.ts +121 -0
- package/apps/studio/sync/presentation.ts +45 -1
- package/apps/studio/sync/supervisor.ts +5 -1
- package/apps/studio/sync/workspace-signin.ts +7 -3
- package/apps/studio/test/annotations-bindings.test.ts +150 -12
- package/apps/studio/test/canvas-create-api.test.ts +4 -1
- package/apps/studio/test/canvas-origin-gate.test.ts +13 -0
- package/apps/studio/test/capture-determinism-shape.test.ts +135 -0
- package/apps/studio/test/clip-addressing.test.ts +6 -1
- package/apps/studio/test/clip-ops.test.ts +5 -1
- package/apps/studio/test/cloud-endpoints.test.ts +96 -0
- package/apps/studio/test/cloud-renew.test.ts +205 -0
- package/apps/studio/test/cloud-shell-surfaces.test.ts +11 -2
- package/apps/studio/test/exporters/degraded-propagation.test.ts +123 -0
- package/apps/studio/test/exporters/unsupported-media.test.ts +123 -0
- package/apps/studio/test/fetch-asset-gate.test.ts +189 -0
- package/apps/studio/test/figma-provenance.test.ts +108 -0
- package/apps/studio/test/figma-routes.test.ts +294 -0
- package/apps/studio/test/git-cloud-posture.test.ts +50 -0
- package/apps/studio/test/hub-link.test.ts +11 -0
- package/apps/studio/test/import-figma.test.ts +479 -0
- package/apps/studio/test/sync-asset-push.test.ts +124 -0
- package/apps/studio/test/sync-connection-state.test.ts +13 -0
- package/apps/studio/test/sync-hubs-config.test.ts +5 -0
- package/apps/studio/test/sync-migrate-flat-fallback.test.ts +98 -0
- package/apps/studio/test/sync-path-pull.test.ts +63 -0
- package/apps/studio/test/sync-presentation.test.ts +77 -0
- package/apps/studio/test/sync-runtime.test.ts +316 -1
- package/apps/studio/test/video-comp.test.ts +23 -1
- package/apps/studio/test/workspace-containment.test.ts +1 -0
- package/apps/studio/video-comp.tsx +70 -6
- package/apps/studio/whats-new.json +27 -0
- package/apps/studio/workspace-mode.ts +4 -0
- package/cli/commands/design.mjs +8 -0
- package/package.json +8 -8
- package/plugins/flow/.claude-plugin/config.schema.json +3 -3
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
var
|
|
2
|
-
`));var
|
|
1
|
+
var gM=Object.defineProperty;var CM=(b,j)=>{for(var k in j)gM(b,k,{get:j[k],enumerable:!0,configurable:!0,set:(q)=>j[k]=()=>q})};var Nq={};CM(Nq,{watchStaticFile:()=>M2,useVideoConfig:()=>Ub,useRemotionEnvironment:()=>p,usePixelDensity:()=>a1,useDelayRender:()=>Qb,useCurrentScale:()=>p1,useCurrentFrame:()=>Jb,useBufferState:()=>zk,staticFile:()=>C2,spring:()=>Nw,registerRoot:()=>x1,random:()=>wk,prefetch:()=>IY,measureSpring:()=>iw,isHtmlInCanvasSupported:()=>Jz,interpolateColors:()=>qK,interpolate:()=>oj,getStaticFiles:()=>P0,getRemotionEnvironment:()=>qb,getInputProps:()=>QJ,delayRender:()=>FQ,createEffect:()=>EK,continueRender:()=>VQ,cancelRender:()=>wj,assertValidInterpolatePosterizeOption:()=>jK,assertValidInterpolateEasingOption:()=>bK,absoluteFillSchema:()=>ZK,Video:()=>u2,VERSION:()=>ab,Still:()=>xM,Solid:()=>Gz,Series:()=>vM,Sequence:()=>bb,OffthreadVideo:()=>DM,MediaPlaybackError:()=>Ib,Loop:()=>qk,Internals:()=>Z2,Interactive:()=>vb,Img:()=>Mz,IFrame:()=>V0,HtmlInCanvas:()=>Kz,Html5Video:()=>qj,Html5Audio:()=>jj,HTML_IN_CANVAS_UNSUPPORTED_MESSAGE:()=>bM,Freeze:()=>Xj,FolderContext:()=>_k,Folder:()=>GJ,Experimental:()=>s2,Easing:()=>eb,Config:()=>EM,Composition:()=>Iw,CanvasImage:()=>Zq,Audio:()=>q0,Artifact:()=>OK,AnimatedImage:()=>ow,AbsoluteFill:()=>$K});import{createContext as SM}from"react";import{Suspense as Rz,useCallback as yz,useContext as Bj,useEffect as bJ}from"react";import{createPortal as Dz}from"react-dom";import{createContext as PM}from"react";import{jsx as cM}from"react/jsx-runtime";import{createContext as AM}from"react";import _M from"react";import{createContext as qJ}from"react";import{createContext as FM,useContext as Wz,useEffect as VM,useMemo as hM}from"react";import{createContext as fM,useCallback as lM,useContext as mM,useMemo as dM,useRef as vz}from"react";import{jsx as pM}from"react/jsx-runtime";import{createContext as aM,useContext as tM}from"react";import{jsx as oM}from"react/jsx-runtime";import{forwardRef as rM,useMemo as bQ}from"react";import{jsx as jQ}from"react/jsx-runtime";import{jsx as Cq,jsxs as Hz}from"react/jsx-runtime";import{createContext as MQ,createRef as QQ,useContext as Bq,useMemo as gz}from"react";import UJ,{createContext as YQ,useCallback as ZQ,useMemo as $Q}from"react";import{jsx as NQ}from"react/jsx-runtime";import{useContext as yQ,useState as DQ}from"react";import TQ from"react";import{createContext as xQ,useCallback as Sq,useContext as EQ}from"react";import{createContext as hQ}from"react";import*as Sw from"react";import Sz,{useMemo as fQ,useRef as lQ}from"react";import{useContext as mQ,useMemo as dQ}from"react";import{jsx as $b}from"react/jsx-runtime";import Iz from"react";import{forwardRef as cw,useCallback as kU,useContext as Iq,useEffect as qU,useMemo as pb,useRef as cz,useState as wU}from"react";import{useContext as zU,useMemo as Pq}from"react";import{createContext as GU}from"react";import{useContext as sj,useMemo as JU}from"react";import{createContext as pj,useLayoutEffect as KU,useMemo as Yk,useRef as cq,useState as Aq}from"react";import{jsx as vj}from"react/jsx-runtime";import{useContext as Az}from"react";import{useContext as QU}from"react";import{useContext as UU,useMemo as XU}from"react";import{jsx as _z}from"react/jsx-runtime";import Zj,{useCallback as Wb,useMemo as Zk,useRef as _q,useState as $k}from"react";import{jsx as ib}from"react/jsx-runtime";import hz,{createContext as WU}from"react";import{jsx as fJ}from"react/jsx-runtime";import{useContext as EU,useMemo as HU}from"react";import{createContext as LU}from"react";import Vq,{forwardRef as OU,useContext as Nk,useLayoutEffect as gU,useMemo as hq,useState as fz}from"react";import{useContext as fq,useRef as dJ}from"react";import{createContext as zK}from"react";import{jsx as hb}from"react/jsx-runtime";import{useCallback as SX,useRef as IX}from"react";import{jsx as iq}from"react/jsx-runtime";import{forwardRef as AX,useEffect as qG,useImperativeHandle as NK,useLayoutEffect as _X,useRef as Bk,useState as nq}from"react";import{useMemo as FX}from"react";import VX,{useCallback as hX,useImperativeHandle as fX,useMemo as lX,useRef as mX}from"react";import{useEffect as nX,useMemo as aX,useRef as wG}from"react";import{jsx as tX}from"react/jsx-runtime";import{jsx as Sk}from"react/jsx-runtime";import{useContext as KY,useLayoutEffect as MY,useState as QY}from"react";import{createContext as UY,useCallback as GG,useImperativeHandle as XY,useLayoutEffect as YY,useMemo as ZY,useRef as $Y,useState as NY}from"react";import{jsx as DY}from"react/jsx-runtime";import{forwardRef as WY,useCallback as JG,useContext as KG}from"react";import vY,{createContext as xY,useMemo as MG}from"react";import{jsx as QG}from"react/jsx-runtime";import{useContext as HY}from"react";import{createContext as LY,useEffect as OY,useState as gY}from"react";import{jsx as CY}from"react/jsx-runtime";import{createContext as AY,useMemo as _Y,useReducer as FY}from"react";import{jsx as VY}from"react/jsx-runtime";import{useCallback as fY}from"react";import XG,{forwardRef as lY,useContext as mY,useEffect as dY,useImperativeHandle as uY,useMemo as YG,useRef as sY,useState as ZG}from"react";import{useContext as iY,useLayoutEffect as nY,useRef as NG}from"react";import Aj,{createContext as PK,createRef as aY,useCallback as Eb,useContext as yw,useEffect as tY,useMemo as ob,useRef as Sb,useState as Dw}from"react";import{useMemo as oY,useRef as eY}from"react";import{jsx as cK,jsxs as qZ}from"react/jsx-runtime";import{useRef as tq}from"react";import{useContext as xw,useEffect as hK,useMemo as DG,useState as ZZ}from"react";import{useContext as $Z}from"react";import{useCallback as yZ,useContext as DZ,useEffect as WG,useLayoutEffect as TZ,useRef as oq}from"react";import{useCallback as WZ,useMemo as vZ,useRef as xZ}from"react";import{useContext as EZ,useMemo as HZ}from"react";import LZ,{useCallback as eq,useContext as OZ,useEffect as mK,useLayoutEffect as gZ,useMemo as CZ,useRef as rq,useState as dK}from"react";import{jsx as BZ}from"react/jsx-runtime";import AZ from"react";import{useEffect as FZ,useState as VZ}from"react";import{useEffect as fZ,useRef as lZ}from"react";import{useEffect as uZ}from"react";import{createContext as tK,useContext as dk,useMemo as oK}from"react";import{jsx as sZ}from"react/jsx-runtime";import{forwardRef as iZ,useContext as xG,useEffect as nZ,useImperativeHandle as aZ,useLayoutEffect as tZ,useMemo as oZ,useRef as eZ}from"react";import{jsx as rZ}from"react/jsx-runtime";import{jsx as Fb}from"react/jsx-runtime";import{forwardRef as w0,useCallback as z0,useEffect as G0,useImperativeHandle as J0,useMemo as EG,useRef as K0,useState as M0}from"react";import{jsx as Ew}from"react/jsx-runtime";import{createContext as Z0,forwardRef as rK,useCallback as Hw,useContext as $0,useLayoutEffect as bw,useMemo as jw,useRef as Mb}from"react";import{jsx as _j}from"react/jsx-runtime";import{forwardRef as qM,useCallback as CG,useContext as v0,useImperativeHandle as x0,useLayoutEffect as kw,useMemo as E0,useRef as wM,useState as qw}from"react";import{jsx as ck}from"react/jsx-runtime";import{forwardRef as c0,useCallback as IG,useState as A0}from"react";import{jsx as _0}from"react/jsx-runtime";import{useCallback as ww,useContext as h0,useLayoutEffect as PG,useRef as Lw,useState as f0}from"react";import{jsx as kj}from"react/jsx-runtime";import e0,{forwardRef as r0,useCallback as b1,useRef as j1}from"react";import{jsx as k1}from"react/jsx-runtime";import{createRef as X1}from"react";import Z1 from"react";import{useCallback as Cj,useImperativeHandle as $1,useMemo as cG,useRef as N1,useState as zw}from"react";import{jsx as AG}from"react/jsx-runtime";import W1 from"react";import{useMemo as _G}from"react";import{createContext as L1,useContext as XM,useMemo as O1}from"react";import{jsx as g1}from"react/jsx-runtime";import{jsx as Xb}from"react/jsx-runtime";import P1 from"react";import f1 from"react";import Ij,{createContext as u1}from"react";import i1,{useContext as hG}from"react";import{useCallback as t1}from"react";import{useCallback as fG,useContext as lG,useEffect as o1,useLayoutEffect as e1,useMemo as Ok,useState as r1}from"react";import{jsx as j2}from"react/jsx-runtime";import mG,{forwardRef as q2,useCallback as w2,useContext as dG,useEffect as Gw,useImperativeHandle as z2,useMemo as uG,useRef as sG,useState as pG}from"react";import{useEffect as G2}from"react";import{jsx as J2}from"react/jsx-runtime";import{jsx as Pj}from"react/jsx-runtime";import jb,{useMemo as Q2}from"react";import{jsx as kb}from"react/jsx-runtime";import $2,{forwardRef as N2,useMemo as R2}from"react";import iG from"react";import{jsx as cj,jsxs as y2,Fragment as D2}from"react/jsx-runtime";import B2 from"react";import{forwardRef as S2,useCallback as I2,useContext as P2}from"react";import{forwardRef as c2,useContext as tG,useEffect as oG,useImperativeHandle as A2,useLayoutEffect as _2,useMemo as F2,useRef as V2}from"react";import{jsx as f2}from"react/jsx-runtime";import{jsx as Vb}from"react/jsx-runtime";var BM=Object.defineProperty,rG=(b,j)=>{for(var k in j)BM(b,k,{get:j[k],enumerable:!0,configurable:!0,set:(q)=>j[k]=()=>q})};if(typeof SM!=="function")throw Error(['Remotion requires React.createContext, but it is "undefined".','If you are in a React Server Component, turn it into a client component by adding "use client" at the top of the file.',"","Before:",' import {useCurrentFrame} from "remotion";',"","After:",' "use client";',' import {useCurrentFrame} from "remotion";'].join(`
|
|
2
|
+
`));var IM=()=>{throw Error("<Clipper> has been removed as of Remotion v4.0.228. The native clipping APIs were experimental and subject to removal at any time. We removed them because they were sparingly used and made rendering often slower rather than faster.")},Lb=PM(!1),Kw=({children:b})=>{return cM(Lb.Provider,{value:!0,children:b})},jJ=AM({setError:()=>{},clearError:()=>{}}),Tz=()=>{try{if(typeof __webpack_module__>"u")return null;return __webpack_module__.hot??null}catch{return null}};class kJ extends _M.Component{state={hasError:!1};hmrStatusHandler=null;static getDerivedStateFromError(){return{hasError:!0}}componentDidCatch(b){this.props.onError(b),this.subscribeToHmrReset()}componentDidMount(){if(!this.state.hasError)this.props.onClear()}componentDidUpdate(b,j){if(j.hasError&&!this.state.hasError)this.props.onClear()}componentWillUnmount(){this.unsubscribeFromHmrReset()}subscribeToHmrReset(){if(this.hmrStatusHandler)return;let b=Tz();if(!b)return;let j=(k)=>{if(k!=="idle")return;this.unsubscribeFromHmrReset(),this.setState({hasError:!1})};this.hmrStatusHandler=j,b.addStatusHandler(j)}unsubscribeFromHmrReset(){let b=this.hmrStatusHandler;if(!b)return;this.hmrStatusHandler=null;let j=Tz();if(!j)return;j.removeStatusHandler(b)}render(){if(this.state.hasError)return null;return this.props.children}}var Gj=qJ({compositions:[],folders:[],currentCompositionMetadata:null,canvasContent:null}),lj=qJ({registerComposition:()=>{return},unregisterComposition:()=>{return},registerFolder:()=>{return},unregisterFolder:()=>{return},setCanvasContent:()=>{return},onlyRenderComposition:null}),mj=fM({getNonce:()=>0}),gk=0;try{if(typeof __webpack_module__<"u"){if(__webpack_module__.hot)__webpack_module__.hot.addStatusHandler((b)=>{if(b==="idle")gk++})}}catch{}var sk=()=>{let j=mM(mj).getNonce(),k=vz(j);k.current=j;let q=vz([[gk,j]]),w=lM(()=>{if(gk!==q.current[q.current.length-1][0])q.current=[...q.current,[gk,k.current]];return q.current},[q]);return dM(()=>{return{get:w}},[w])};function Jj(b){return Boolean(b)}var wJ=()=>/^([a-zA-Z0-9-\u4E00-\u9FFF])+$/g,zJ=(b)=>b.match(wJ()),uM=(b)=>{if(b===void 0||b===null)throw TypeError("You must pass a name to a <Folder />.");if(typeof b!=="string")throw TypeError(`The "name" you pass into <Folder /> must be a string. Got: ${typeof b}`);if(!zJ(b))throw Error(`Folder name can only contain a-z, A-Z, 0-9 and -. You passed ${b}`)},sM=`Folder name must match ${String(wJ())}`,_k=FM({folderName:null,parentName:null}),GJ=(b)=>{let{name:j,children:k}=b,q=Wz(_k),{registerFolder:w,unregisterFolder:z}=Wz(lj),G=sk(),J=b._remotionInternalStack??null;uM(j);let K=[q.parentName,q.folderName].filter(Jj),M=K.length===0?null:K.join("/"),Q=hM(()=>{return{folderName:j,parentName:M}},[j,M]);return VM(()=>{return w(j,M,G.get(),J),()=>{z(j,M)}},[j,q.folderName,M,w,z,G,J]),pM(_k.Provider,{value:Q,children:k})};function xz(){return["NOD","E_EN","V"].join("")}var Ez=()=>{return["e","nv"].join("")},qb=()=>{let b=typeof window<"u"&&window.remotion_isPlayer,j=typeof window<"u"&&typeof window.process<"u"&&typeof window.process.env<"u"&&(window.process[Ez()][xz()]==="test"||window.process[Ez()][xz()]==="production"&&typeof window<"u"&&typeof window.remotion_puppeteerTimeout<"u"),k=typeof window<"u"&&window.remotion_isStudio,q=typeof window<"u"&&window.remotion_isReadOnlyStudio;return{isStudio:k,isRendering:j,isPlayer:b,isReadOnlyStudio:q,isClientSideRendering:!1}},Mw="remotion-date:",Fj="remotion-file:",iM=({data:b,indent:j,staticBase:k})=>{let q=!1,w=!1,z=!1,G=!1;try{return{serializedString:JSON.stringify(b,function(K,M){let Q=this[K];if(Q instanceof Date)return q=!0,`${Mw}${Q.toISOString()}`;if(Q instanceof Map)return z=!0,M;if(Q instanceof Set)return G=!0,M;if(typeof Q==="string"&&k!==null&&Q.startsWith(k))return w=!0,`${Fj}${Q.replace(k+"/","")}`;return M},j),customDateUsed:q,customFileUsed:w,mapUsed:z,setUsed:G}}catch(J){throw Error("Could not serialize the passed input props to JSON: "+J.message)}},JJ=(b)=>{return JSON.parse(b,(j,k)=>{if(typeof k==="string"&&k.startsWith(Mw))return new Date(k.replace(Mw,""));if(typeof k==="string"&&k.startsWith(Fj))return`${window.remotion_staticBase}/${k.replace(Fj,"")}`;return k})},nM=(b)=>{return JJ(iM({data:b,indent:2,staticBase:window.remotion_staticBase}).serializedString)},Qw=(b)=>{if(qb().isStudio)return nM(b);return b},KJ=aM(!1),eM=({children:b})=>{return oM(KJ.Provider,{value:!0,children:b})},pk=()=>{return tM(KJ)},Bb=({className:b,classPrefix:j,type:k})=>{if(!b)return!1;if(k==="exact"){let q=b.split(" ");return j.some((w)=>{return q.some((z)=>{return z.trim()===w||z.trim().endsWith(`:${w}`)||z.trim().endsWith(`!${w}`)})})}return j.some((q)=>{return b.startsWith(q)||b.includes(` ${q}`)||b.includes(`!${q}`)||b.includes(`:${q}`)})},kQ=(b,j)=>{let{style:k,...q}=b,w=bQ(()=>{return{position:"absolute",top:Bb({className:q.className,classPrefix:["top-","inset-"],type:"prefix"})?void 0:0,left:Bb({className:q.className,classPrefix:["left-","inset-"],type:"prefix"})?void 0:0,right:Bb({className:q.className,classPrefix:["right-","inset-"],type:"prefix"})?void 0:0,bottom:Bb({className:q.className,classPrefix:["bottom-","inset-"],type:"prefix"})?void 0:0,width:Bb({className:q.className,classPrefix:["w-"],type:"prefix"})?void 0:"100%",height:Bb({className:q.className,classPrefix:["h-"],type:"prefix"})?void 0:"100%",display:Bb({className:q.className,classPrefix:["block","inline-block","inline","flex","inline-flex","flow-root","grid","inline-grid","contents","list-item","hidden"],type:"exact"})?void 0:"flex",flexDirection:Bb({className:q.className,classPrefix:["flex-row","flex-col","flex-row-reverse","flex-col-reverse"],type:"exact"})?void 0:"column",...k}},[q.className,k]);return jQ("div",{ref:j,style:w,...q})},Fk=rM(kQ),qQ={transform:"rotate(90deg)"},Lz=40,wQ={color:"white",fontSize:14,fontFamily:"sans-serif"},zQ={justifyContent:"center",alignItems:"center"},GQ=()=>{return Hz(Fk,{style:zQ,id:"remotion-comp-loading",children:[Cq("style",{type:"text/css",children:`
|
|
3
3
|
@keyframes anim {
|
|
4
4
|
from {
|
|
5
5
|
opacity: 0
|
|
@@ -12,18 +12,18 @@ var YG=Object.defineProperty;var ZG=(b,h)=>{for(var j in h)YG(b,j,{get:h[j],enum
|
|
|
12
12
|
animation: anim 2s;
|
|
13
13
|
animation-fill-mode: forwards;
|
|
14
14
|
}
|
|
15
|
-
`}),
|
|
16
|
-
${
|
|
17
|
-
Check that all your Remotion packages are on the same version. If your dependencies depend on Remotion, make them peer dependencies. You can also run \`npx remotion versions\` from your terminal to see which versions are mismatching.`)}b()},IJ=()=>{throw Error("<Null> has been removed as of Remotion v4.0.228. The native clipping APIs were experimental and subject to removal at any time. We removed them because they were sparingly used and made rendering often slower rather than faster.")},a=mJ(null),gk={};kz(gk,{useTimelineSetFrame:()=>Pz,useTimelinePosition:()=>Hb,useTimelineContext:()=>Eb,usePlayingState:()=>Cz,usePlaybackRate:()=>tk,useAbsoluteTimelinePosition:()=>Hz,persistCurrentFrame:()=>Dz,getInitialFrameState:()=>Fz,getFrameForComposition:()=>vz,clampFrameToCompositionRange:()=>xz});function dq(b){let h=b+1831565813;return h=Math.imul(h^h>>>15,h|1),h^=h+Math.imul(h^h>>>7,h|61),((h^h>>>14)>>>0)/4294967296}function sJ(b){let h=0,j=0,k=0;for(h=0;h<b.length;h++)j=b.charCodeAt(h),k=(k<<5)-k+j,k|=0;return k}var qh=(b,h)=>{if(h!==void 0)throw TypeError("random() takes only one argument");if(b===null)return Math.random();if(typeof b==="string")return dq(sJ(b));if(typeof b==="number")return dq(b*10000000000);throw Error("random() argument must be a number or a string")},wh=yj({setFrame:()=>{throw Error("default")},setPlaying:()=>{throw Error("default")}}),zh=yj(null),pk=yj(null),ak=yj(null),iJ=({children:b,frameState:h})=>{let[j,k]=mh(!1),q=uq(!1),[w,z]=mh(1),B=uq([]),[G]=mh(()=>String(qh(null))),[J,K]=mh(()=>Fz()),Q=h??J,{delayRender:M,continueRender:T}=Kb();if(typeof window<"u")dJ(()=>{window.remotion_setFrame=(X,O,L)=>{window.remotion_attempt=L;let $=M(`Setting the current frame to ${X}`),Z=!0;if(K((N)=>{if((N[O]??window.remotion_initialFrame)===X)return Z=!1,N;return{...N,[O]:X}}),Z)requestAnimationFrame(()=>T($));else T($)},window.remotion_isPlayer=!1},[T,M]);let U=tj(()=>{return{frame:Q,playing:j,imperativePlaying:q,rootId:G,audioAndVideoTags:B}},[Q,j,G]),W=tj(()=>{return{playbackRate:w,setPlaybackRate:z}},[w]),Y=tj(()=>{return{setFrame:K,setPlaying:k}},[]);return uh(ak.Provider,{value:U,children:uh(pk.Provider,{value:W,children:uh(zh.Provider,{value:U,children:uh(wh.Provider,{value:Y,children:b})})})})},nk=()=>{return"remotion.time-all"},Dz=(b)=>{localStorage.setItem(nk(),JSON.stringify(b))},Fz=()=>{let b=localStorage.getItem(nk())??"{}";return JSON.parse(b)},vz=(b)=>{let h=localStorage.getItem(nk())??"{}",j=JSON.parse(h);if(j[b]!==void 0)return Number(j[b]);if(typeof window>"u")return 0;return window.remotion_initialFrame??0},xz=(b,h)=>{return Math.max(0,Math.min(Math.max(0,h-1),b))},Ez=(b)=>{let h=gj(),j=d();if(!h)return typeof window>"u"?0:window.remotion_initialFrame??0;let k=b.frame[h.id]??(j.isPlayer?0:vz(h.id));return xz(k,h.durationInFrames)},Eb=()=>{let b=Ph(zh);if(b===null)throw Error("TimelineContext is not available. This hook must be used inside a <Player> or the Remotion Studio.");return b},tk=()=>{let b=Ph(pk);if(b===null)throw Error("PlaybackRateContext is not available. This hook must be used inside a <Player> or the Remotion Studio.");return b},Hb=()=>{let b=Eb();return Ez(b)},Hz=()=>{let b=Ph(ak);if(b===null)throw Error("AbsoluteTimeContext is not available. This hook must be used inside a <Player> or the Remotion Studio.");return Ez(b)},Pz=()=>{let{setFrame:b}=Ph(wh);return b},Cz=()=>{let{playing:b,imperativePlaying:h}=Eb(),{setPlaying:j}=Ph(wh);return uJ(()=>[b,j,h],[h,b,j])},qb=()=>{let b=sq(xb),h=d();if(!b){if(h.isPlayer)throw Error("useCurrentFrame can only be called inside a component that was passed to <Player>. See: https://www.remotion.dev/docs/player/examples");throw Error("useCurrentFrame() can only be called inside a component that was registered as a composition. See https://www.remotion.dev/docs/the-fundamentals#defining-compositions")}let j=Hb(),k=sq(a),q=k?k.cumulatedFrom+k.relativeFrom:0;return j-q},Ch=()=>{let b=aJ(a),h=b?.width??null,j=b?.height??null,k=b?.durationInFrames??null,q=gj();return nJ(()=>{if(!q)return null;let{id:w,durationInFrames:z,fps:B,height:G,width:J,defaultProps:K,props:Q,defaultCodec:M,defaultOutName:T,defaultVideoImageFormat:U,defaultPixelFormat:W,defaultProResProfile:Y,defaultSampleRate:X}=q;return{id:w,width:h??J,height:j??G,fps:B,durationInFrames:k??z,defaultProps:K,props:Q,defaultCodec:M,defaultOutName:T,defaultVideoImageFormat:U,defaultPixelFormat:W,defaultProResProfile:Y,defaultSampleRate:X}},[k,j,h,q])},wb=()=>{let b=Ch(),h=pJ(xb),j=$j();if(!b){if(typeof window<"u"&&window.remotion_isPlayer||j)throw Error(["No video config found. Likely reasons:","- You are probably calling useVideoConfig() from outside the component passed to <Player />. See https://www.remotion.dev/docs/player/examples for how to set up the Player correctly.","- You have multiple versions of Remotion installed which causes the React context to get lost."].join("-"));throw Error("No video config found. You are probably calling useVideoConfig() from a component which has not been registered as a <Composition />. See https://www.remotion.dev/docs/the-fundamentals#defining-compositions for more information.")}if(!h)throw Error("Called useVideoConfig() outside a Remotion composition.");return b},ok=({frame:b,children:h,active:j=!0})=>{let k=qb(),q=wb();if(typeof b>"u")throw Error("The <Freeze /> component requires a 'frame' prop, but none was passed.");if(typeof b!=="number")throw Error(`The 'frame' prop of <Freeze /> must be a number, but is of type ${typeof b}`);if(Number.isNaN(b))throw Error("The 'frame' prop of <Freeze /> must be a real number, but it is NaN.");if(!Number.isFinite(b))throw Error(`The 'frame' prop of <Freeze /> must be a finite number, but it is ${b}.`);let w=nj(()=>{if(typeof j==="boolean")return j;if(typeof j==="function")return j(k)},[j,k]),z=Eb(),B=lJ(a),G=B?.relativeFrom??0,J=nj(()=>{if(!w)return z;return{...z,playing:!1,imperativePlaying:{current:!1},frame:{[q.id]:b+G}}},[w,z,q.id,b,G]),K=nj(()=>{if(!B)return null;if(!w)return B;return{...B,cumulatedFrom:0}},[B,w]);return iq(zh.Provider,{value:J,children:iq(a.Provider,{value:K,children:h})})},Yb={"style.transformOrigin":{type:"transform-origin",step:1,default:"50% 50%",description:"Transform origin"},"style.translate":{type:"translate",step:1,default:"0px 0px",description:"Offset"},"style.scale":{type:"scale",max:100,step:0.01,default:1,description:"Scale"},"style.rotate":{type:"rotation-css",step:1,default:"0deg",description:"Rotation"},"style.opacity":{type:"number",min:0,max:1,step:0.01,default:1,description:"Opacity",hiddenFromList:!1}},tJ=Yb,ek={"style.color":{type:"color",default:void 0,description:"Color"},"style.fontSize":{type:"number",default:void 0,min:0,step:1,description:"Font size",hiddenFromList:!1},"style.lineHeight":{type:"number",default:void 0,min:0,step:0.05,description:"Line height",hiddenFromList:!1},"style.fontWeight":{type:"enum",default:"400",description:"Font weight",variants:{"100":{},"200":{},"300":{},"400":{},"500":{},"600":{},"700":{},"800":{},"900":{},normal:{},bold:{}}},"style.fontStyle":{type:"enum",default:"normal",description:"Font style",variants:{normal:{},italic:{},oblique:{}}},"style.textAlign":{type:"enum",default:"left",description:"Text align",variants:{left:{},center:{},right:{},justify:{},start:{},end:{}}},"style.letterSpacing":{type:"number",default:void 0,step:0.1,description:"Letter spacing",hiddenFromList:!1}},Dj={premountFor:{type:"number",default:0,description:"Premount For",min:0,step:1,hiddenFromList:!1},postmountFor:{type:"number",default:0,min:0,step:1,hiddenFromList:!0},styleWhilePremounted:{type:"hidden"},styleWhilePostmounted:{type:"hidden"}},oJ=Dj,Sz={...Yb,...Dj},rk={type:"boolean",default:!1,description:"Hidden"},cz={type:"hidden"},bq={type:"hidden"},eJ=(b)=>{return{name:bq,...b}},hq={type:"number",default:void 0,min:1,step:1,hiddenFromList:!0},fz={type:"number",default:0,step:1,hiddenFromList:!0},Iz={type:"number",default:0,min:0,step:1,hiddenFromList:!0},jq={type:"number",default:null,step:1,hiddenFromList:!0},yb={durationInFrames:hq,from:fz,trimBefore:Iz,freeze:jq,hidden:rk,name:bq,showInTimeline:cz},hh={...yb,layout:{type:"enum",default:"absolute-fill",description:"Layout",variants:{"absolute-fill":Sz,none:{}}}},rJ={durationInFrames:hq,trimBefore:Iz,freeze:jq,hidden:rk,name:bq,showInTimeline:cz},bK={...rJ,layout:hh.layout},hK={...hh,layout:{...hh.layout,default:"none"}},Vz=jK({premountFramesRemaining:0}),Gh=Bh.createContext({registerSequence:()=>{throw Error("SequenceManagerContext not initialized")},unregisterSequence:()=>{throw Error("SequenceManagerContext not initialized")},sequences:[]}),Fj=Bh.createContext({current:[]}),Ob=(b)=>{return`${b.nodePath.join(".")}.${b.sequenceKeys.join(".")}.${b.effectKeys.map((h)=>h.join(".")).join(".")}`},vj=Bh.createContext({propStatuses:{}}),xj=Bh.createContext({current:{}}),Ej=Bh.createContext({getDragOverrides:()=>{throw Error("VisualModeDragOverridesContext not initialized")},getEffectDragOverrides:()=>{throw Error("VisualModeDragOverridesContext not initialized")}}),Az=Bh.createContext({setDragOverrides:()=>{throw Error("VisualModeSettersContext not initialized")},clearDragOverrides:()=>{throw Error("VisualModeSettersContext not initialized")},setEffectDragOverrides:()=>{throw Error("VisualModeSettersContext not initialized")},clearEffectDragOverrides:()=>{throw Error("VisualModeSettersContext not initialized")},setPropStatuses:()=>{throw Error("VisualModeSettersContext not initialized")}}),ej=(b,h)=>`${Ob(b)}.effects.${h}`,kK=({children:b})=>{let[h,j]=sh([]),k=oj(h);k.current=h;let[q,w]=sh({}),z=oj(q);z.current=q;let[B,G]=sh({}),[J,K]=sh({}),Q=oj(J);Q.current=J;let M=Nb((g,v,y)=>{w((x)=>({...x,[Ob(g)]:{...x[Ob(g)],[v]:y}}))},[]),T=Nb((g)=>{w((v)=>{let y=Ob(g);if(!v[y])return v;let x={...v};return delete x[y],x})},[]),U=Nb((g,v,y,x)=>{G((D)=>{let C=ej(g,v);return{...D,[C]:{...D[C],[y]:x}}})},[]),W=Nb((g,v)=>{G((y)=>{let x=ej(g,v);if(!y[x])return y;let D={...y};return delete D[x],D})},[]),Y=Nb((g,v)=>{K((y)=>{let x=Ob(g),D=y[x],C=v(D);if(D===C)return y;return{...y,[x]:C}})},[]),X=Nb((g)=>{j((v)=>{return[...v,g]})},[]),O=Nb((g)=>{j((v)=>v.filter((y)=>y.id!==g))},[]),L=dh(()=>{return{registerSequence:X,sequences:h,unregisterSequence:O}},[X,h,O]),$=Nb((g)=>{return q[Ob(g)]??{}},[q]),Z=Nb((g,v)=>{return B[ej(g,v)]??{}},[B]),N=dh(()=>{return{propStatuses:J}},[J]),R=dh(()=>{return{getDragOverrides:$,getEffectDragOverrides:Z}},[$,Z]),F=dh(()=>{return{setDragOverrides:M,clearDragOverrides:T,setEffectDragOverrides:U,clearEffectDragOverrides:W,setPropStatuses:Y}},[M,T,U,W,Y]);return db(Fj.Provider,{value:k,children:db(Gh.Provider,{value:L,children:db(xj.Provider,{value:Q,children:db(vj.Provider,{value:N,children:db(Ej.Provider,{value:R,children:db(Az.Provider,{value:F,children:b})})})})})})},Hj=qK(!1),wK=({children:b})=>{return _z(Hj.Provider,{value:!0,children:b})},zK=({children:b})=>{return _z(Hj.Provider,{value:!1,children:b})},BK=()=>{if(!pq.useContext(Hj))throw Error("This component must be inside a <Series /> component.")},kq=!1,KK=(b,h)=>{for(let j of h){let k=j.split("."),q=[b],w=b;for(let z=0;z<k.length-1;z++){let B=k[z],G=w[B];if(G===void 0||G===null){w=null;break}w=G,q.push(w)}if(w===null)continue;delete w[k[k.length-1]];for(let z=q.length-1;z>0;z--){let B=q[z];if(Object.keys(B).length===0){let G=k[z-1];delete q[z-1][G]}else break}}return b},MK=4,QK=0.001,TK=0.0000001,UK=10,Lh=11,ih=1/(Lh-1),WK=typeof Float32Array==="function";function mz(b,h){return 1-3*h+3*b}function uz(b,h){return 3*h-6*b}function dz(b){return 3*b}function Tj(b,h,j){return((mz(h,j)*b+uz(h,j))*b+dz(h))*b}function sz(b,h,j){return 3*mz(h,j)*b*b+2*uz(h,j)*b+dz(h)}function XK({aX:b,_aA:h,_aB:j,mX1:k,mX2:q}){let w,z,B=0,G=h,J=j;do if(z=G+(J-G)/2,w=Tj(z,k,q)-b,w>0)J=z;else G=z;while(Math.abs(w)>TK&&++B<UK);return z}function YK(b,h,j,k){let q=h;for(let w=0;w<MK;++w){let z=sz(q,j,k);if(z===0)return q;let B=Tj(q,j,k)-b;q-=B/z}return q}function iz(b,h,j,k){if(!(b>=0&&b<=1&&j>=0&&j<=1))throw Error("bezier x values must be in [0, 1] range");let q=WK?new Float32Array(Lh):Array(Lh);if(b!==h||j!==k)for(let z=0;z<Lh;++z)q[z]=Tj(z*ih,b,j);function w(z){let B=0,G=1,J=Lh-1;for(;G!==J&&q[G]<=z;++G)B+=ih;--G;let K=(z-q[G])/(q[G+1]-q[G]),Q=B+K*ih,M=sz(Q,b,j);if(M>=QK)return YK(z,Q,b,j);if(M===0)return Q;return XK({aX:z,_aA:B,_aB:B+ih,mX1:b,mX2:j})}return function(z){let B=Math.min(1,Math.max(0,z));if(b===h&&j===k)return B;if(B===0)return 0;if(B===1)return 1;return Tj(w(B),h,k)}}var ZK=(b)=>{return Math.round(b*1e6)/1e6},$K=new Set(["deg","rad","grad","turn"]),pz=new Set(["%","cap","ch","cm","cqb","cqh","cqi","cqmax","cqmin","cqw","dvh","dvw","em","ex","ic","in","lh","lvh","lvw","mm","pc","pt","px","q","rem","rlh","svh","svw","vb","vh","vi","vmax","vmin","vw"]),az=/^([+-]?(?:\d+\.?\d*|\.\d+))([a-zA-Z%]+)?$/,nz=new Set(["left","center","right","top","bottom"]),ab=(b)=>{if(b==="left")return[{axis:"x",value:{value:0,unit:"%"}}];if(b==="right")return[{axis:"x",value:{value:100,unit:"%"}}];if(b==="top")return[{axis:"y",value:{value:0,unit:"%"}}];if(b==="bottom")return[{axis:"y",value:{value:100,unit:"%"}}];return[{axis:"x",value:{value:50,unit:"%"}},{axis:"y",value:{value:50,unit:"%"}}]},Th={value:50,unit:"%"},aq=(b)=>{return String(ZK(b))},LK=(b,h)=>{let j=az.exec(b);if(j===null)throw TypeError(`Cannot interpolate "${h}" because "${b}" is not a supported scale, translate, or rotate value`);let k=j[2]??null,q=Number(j[1]);if(!Number.isFinite(q))throw TypeError(`Cannot interpolate "${h}" because "${b}" is not finite`);if(k===null)return{kind:"scale",value:q,unit:null};if($K.has(k))return{kind:"rotate",value:q,unit:k};if(pz.has(k))return{kind:"translate",value:q,unit:k};throw TypeError(`Cannot interpolate "${h}" because "${k}" is not a supported translate or rotate unit`)},tz=({component:b,value:h,allowPercentage:j})=>{let k=az.exec(b);if(k===null)throw TypeError(`Cannot interpolate "${h}" because "${b}" is not a supported transform-origin ${j?"length-percentage":"z length"}`);let q=k[2]??null,w=Number(k[1]);if(!Number.isFinite(w))throw TypeError(`Cannot interpolate "${h}" because "${b}" is not finite`);if(q===null||!pz.has(q)||!j&&q==="%")throw TypeError(`Cannot interpolate "${h}" because "${b}" is not a supported transform-origin ${j?"length-percentage":"z length"}`);return{value:w,unit:q}},kk=(b,h)=>{let j=b.toLowerCase();if(nz.has(j))return{type:"keyword",keyword:j};return{type:"length-percentage",parsed:tz({component:b,value:h,allowPercentage:!0})}},NK=(b,h,j)=>{let k=[];for(let q of ab(b))for(let w of ab(h)){if(q.axis===w.axis)continue;k.push(q.axis==="x"?[q.value,w.value]:[w.value,q.value])}if(k.length===0)throw TypeError(`Cannot interpolate "${j}" because "${b} ${h}" is not a valid transform-origin keyword pair`);return k[0]},OK=(b,h)=>{if(b.length===1){let B=kk(b[0],h);if(B.type==="length-percentage")return[B.parsed,Th];if(B.keyword==="top"||B.keyword==="bottom")return[Th,ab(B.keyword)[0].value];return[ab(B.keyword)[0].value,Th]}let j=kk(b[0],h),k=kk(b[1],h);if(j.type==="length-percentage"&&k.type==="length-percentage")return[j.parsed,k.parsed];if(j.type==="keyword"&&k.type==="keyword")return NK(j.keyword,k.keyword,h);let q=j.type==="keyword"?j:k.type==="keyword"?k:null,w=j.type==="length-percentage"?j.parsed:k.type==="length-percentage"?k.parsed:null;if(q===null||w===null)throw Error("Expected a keyword and a length-percentage value");let z=j.type==="keyword";if(q.keyword==="left"||q.keyword==="right"){if(!z)throw TypeError(`Cannot interpolate "${h}" because horizontal transform-origin keywords must come before a length-percentage value`);return[ab(q.keyword)[0].value,w]}if(q.keyword==="top"||q.keyword==="bottom")return[w,ab(q.keyword)[0].value];return z?[Th,w]:[w,Th]},RK=(b,h)=>{let[j,k]=OK(h.slice(0,2),b),q=h[2]===void 0?{value:0,unit:null}:tz({component:h[2],value:b,allowPercentage:!1});return{kind:"translate",values:[j.value,k.value,q.value],units:[j.unit,k.unit,q.unit],dimensions:h[2]===void 0?2:3}},gK=(b)=>{if(typeof b==="number"){if(!Number.isFinite(b))throw Error(`outputRange must contain only finite numbers, but got [${b}]`);return{kind:"scale",values:[b,b,1],units:[null,null,null],dimensions:1}}let h=b.trim().split(/\s+/);if(h.length<1||h.length>3||h[0]==="")throw TypeError(`String outputRange values must contain 1 to 3 components, but got "${b}"`);if(h.some((q)=>nz.has(q.toLowerCase())))return RK(b,h);let j=h.map((q)=>LK(q,b)),[{kind:k}]=j;for(let q of j)if(q.kind!==k)throw TypeError(`Cannot interpolate "${b}" because it mixes ${k} and ${q.kind} values`);if(k==="scale"){let q=j[0].value,w=j[1]?.value??q,z=j[2]?.value??1;return{kind:k,values:[q,w,z],units:[null,null,null],dimensions:j.length}}return{kind:k,values:[j[0].value,j[1]?.value??0,j[2]?.value??0],units:[j[0].unit,j[1]?.unit??null,j[2]?.unit??null],dimensions:j.length}},yK=({kind:b,values:h,units:j,dimensions:k})=>{if(b==="scale")return h.slice(0,k).map((q)=>aq(q)).join(" ");return h.slice(0,k).map((q,w)=>`${aq(q)}${j[w]}`).join(" ")};function DK(b,h,j,k){let{extrapolateLeft:q,extrapolateRight:w,easing:z}=k,B=b,[G,J]=h,[K,Q]=j;if(B<G){if(q==="identity")return B;if(q==="clamp")B=G;else if(q==="wrap"){let M=J-G;B=((B-G)%M+M)%M+G}}if(B>J){if(w==="identity")return B;if(w==="clamp")B=J;else if(w==="wrap"){let M=J-G;B=((B-G)%M+M)%M+G}}if(K===Q)return K;return B=(B-G)/(J-G),B=z(B),B=B*(Q-K)+K,B}function FK(b,h){let j;for(j=1;j<h.length-1;++j)if(h[j]>=b)break;return j-1}var vK=(b)=>b,oz=(b)=>{return b.remotionShouldExtendRight===!0},nq=({easing:b,segmentIndex:h})=>{if(b===void 0)return vK;if(typeof b==="function")return b;return b[h]},tq=({input:b,inputRange:h,outputRange:j,easing:k,extrapolateLeft:q,extrapolateRight:w})=>{return DK(b,h,j,{easing:k,extrapolateLeft:q,extrapolateRight:b>h[1]&&w==="clamp"&&oz(k)?"extend":w})},qq=({input:b,inputRange:h,outputRange:j,options:k})=>{if(h.length===1)return j[0];let q=k?.easing,w="extend";if(k?.extrapolateLeft!==void 0)w=k.extrapolateLeft;let z="extend";if(k?.extrapolateRight!==void 0)z=k.extrapolateRight;let B=k?.posterize===void 0?b:Math.floor(b/k.posterize)*k.posterize,G=FK(B,h),J=nq({easing:q,segmentIndex:G}),K=tq({input:B,inputRange:[h[G],h[G+1]],outputRange:[j[G],j[G+1]],easing:J,extrapolateLeft:w,extrapolateRight:z});for(let Q=0;Q<G;Q++){let M=nq({easing:q,segmentIndex:Q});if(!oz(M))continue;let T=h[Q+1];if(B<=T)continue;let U=tq({input:B,inputRange:[h[Q],T],outputRange:[j[Q],j[Q+1]],easing:M,extrapolateLeft:w,extrapolateRight:"extend"});K+=U-j[Q+1]}return K},xK=({input:b,inputRange:h,outputRange:j,options:k})=>{let q=j.map(gK),w=q[0]?.kind;if(w===void 0)throw Error("outputRange must have at least 1 element");for(let G of q)if(G.kind!==w)throw TypeError(`Cannot interpolate ${w} values with ${G.kind} values`);let z=Math.max(...q.map((G)=>G.dimensions)),B=[null,null,null];if(w!=="scale")for(let G=0;G<z;G++){for(let J of q){let K=J.units[G];if(K===null)continue;if(B[G]===null){B[G]=K;continue}if(B[G]!==K)throw TypeError(`Cannot interpolate ${w} values with different units on axis ${G+1}: ${B[G]} and ${K}`)}if(B[G]===null)throw TypeError(`Cannot interpolate ${w} values because axis ${G+1} has no unit`)}return yK({kind:w,values:[0,0,0].map((G,J)=>qq({input:b,inputRange:h,outputRange:q.map((K)=>K.values[J]),options:k})),units:B,dimensions:z})},EK=(b)=>{let h=b[0]?.length;if(h===void 0)throw Error("outputRange must have at least 1 element");if(h===0)throw TypeError("outputRange tuples must contain at least 1 number");for(let j of b){if(j.length!==h)throw TypeError(`outputRange tuples must all have the same length, but got ${h} and ${j.length}`);for(let k of j)if(typeof k!=="number"||!Number.isFinite(k))throw TypeError(`outputRange tuples must contain only finite numbers, but got [${j.join(",")}]`)}return h},HK=({input:b,inputRange:h,outputRange:j,options:k})=>{let q=EK(j);return Array(q).fill(!0).map((w,z)=>qq({input:b,inputRange:h,outputRange:j.map((B)=>B[z]),options:k}))};function PK(b){for(let h=1;h<b.length;++h)if(!(b[h]>b[h-1]))throw Error(`inputRange must be strictly monotonically increasing but got [${b.join(",")}]`)}function oq(b,h){if(h.length<1)throw Error(b+" must have at least 1 element");for(let j of h){if(typeof j!=="number")throw Error(`${b} must contain only numbers`);if(!Number.isFinite(j))throw Error(`${b} must contain only finite numbers, but got [${h.join(",")}]`)}}function ez(b,h){if(b===void 0)return;if(typeof b==="function")return;let j=h-1;if(b.length!==j)throw Error(`When easing is an array, it must have one entry per segment between keyframes (length inputRange.length - 1 = ${j}), but got length ${b.length}`);for(let k=0;k<b.length;k++)if(typeof b[k]!=="function")throw Error(`easing[${k}] must be a function`)}function rz(b){if(b===void 0)return;if(typeof b!=="number"||!Number.isFinite(b)||b<=0)throw Error(`posterize must be a positive finite number, but got ${b}`)}function Sh(b,h,j,k){if(typeof b>"u")throw Error("input can not be undefined");if(typeof h>"u")throw Error("inputRange can not be undefined");if(typeof j>"u")throw Error("outputRange can not be undefined");if(h.length!==j.length)throw Error("inputRange ("+h.length+") and outputRange ("+j.length+") must have the same length");if(oq("inputRange",h),PK(h),ez(k?.easing,h.length),rz(k?.posterize),typeof b!=="number")throw TypeError("Cannot interpolate an input which is not a number");if(!Array.isArray(j))throw Error("outputRange must contain only numbers");if(j.some((w)=>typeof w==="string")){if(!j.every((w)=>typeof w==="string"||typeof w==="number"))throw TypeError("outputRange must contain only numbers, or supported scale, translate, and rotate strings");return xK({input:b,inputRange:h,outputRange:j,options:k})}if(j.every((w)=>Array.isArray(w)))return HK({input:b,inputRange:h,outputRange:j,options:k});if(!j.every((w)=>typeof w==="number"))throw TypeError("outputRange must contain only numbers, numeric tuples, or supported scale, translate, and rotate strings");return oq("outputRange",j),qq({input:b,inputRange:h,outputRange:j,options:k})}var CK=({allowFloats:b,durationInFrames:h,frame:j})=>{if(typeof j>"u")throw TypeError('Argument missing for parameter "frame"');if(typeof j!=="number")throw TypeError(`Argument passed for "frame" is not a number: ${j}`);if(!Number.isFinite(j))throw RangeError(`Frame ${j} is not finite`);if(j%1!==0&&!b)throw RangeError(`Argument for frame must be an integer, but got ${j}`);if(j<0&&j<-h)throw RangeError(`Cannot use frame ${j}: Duration of composition is ${h}, therefore the lowest frame that can be rendered is ${-h}`);if(j>h-1)throw RangeError(`Cannot use frame ${j}: Duration of composition is ${h}, therefore the highest frame that can be rendered is ${h-1}`)},SK=(b)=>{if(typeof b>"u")return;if(typeof b!=="number")throw TypeError(`A "duration" of a spring must be a "number" but is "${typeof b}"`);if(Number.isNaN(b))throw TypeError('A "duration" of a spring is NaN, which it must not be');if(!Number.isFinite(b))throw TypeError('A "duration" of a spring must be finite, but is '+b);if(b<=0)throw TypeError('A "duration" of a spring must be positive, but is '+b)},cK={damping:10,mass:1,stiffness:100,overshootClamping:!1},qk={};function fK({animation:b,now:h,config:j}){let{toValue:k,lastTimestamp:q,current:w,velocity:z}=b,B=Math.min(h-q,64);if(j.damping<=0)throw Error("Spring damping must be greater than 0, otherwise the spring() animation will never end, causing an infinite loop.");let{damping:G,mass:J,stiffness:K}=j,Q=[k,q,w,z,G,J,K,h].join("-");if(qk[Q])return qk[Q];let M=-z,T=k-w,U=G/(2*Math.sqrt(K*J)),W=Math.sqrt(K/J),Y=W*Math.sqrt(1-U**2),X=B/1000,O=Math.sin(Y*X),L=Math.cos(Y*X),$=Math.exp(-U*W*X),Z=$*(O*((M+U*W*T)/Y)+T*L),N=k-Z,R=U*W*Z-$*(L*(M+U*W*T)-Y*T*O),F=Math.exp(-W*X),g=k-F*(T+(M+W*T)*X),v=F*(M*(X*W-1)+X*T*W*W),y={toValue:k,prevPosition:w,lastTimestamp:h,current:U<1?N:g,velocity:U<1?R:v};return qk[Q]=y,y}var wk={};function bB({frame:b,fps:h,config:j={}}){let w=[b,h,j.damping,j.mass,j.overshootClamping,j.stiffness].join("-");if(wk[w])return wk[w];let z={lastTimestamp:0,current:0,toValue:1,velocity:0,prevPosition:0},B=Math.max(0,b),G=B%1;for(let J=0;J<=Math.floor(B);J++){if(J===Math.floor(B))J+=G;let K=J/h*1000;z=fK({animation:z,now:K,config:{...cK,...j}})}return wk[w]=z,z}var zk=new Map;function wq({fps:b,config:h={},threshold:j=0.005}){if(typeof j!=="number")throw TypeError(`threshold must be a number, got ${j} of type ${typeof j}`);if(j===0)return 1/0;if(j===1)return 0;if(isNaN(j))throw TypeError("Threshold is NaN");if(!Number.isFinite(j))throw TypeError("Threshold is not finite");if(j<0)throw TypeError("Threshold is below 0");let k=[b,h.damping,h.mass,h.overshootClamping,h.stiffness,j].join("-");if(zk.has(k))return zk.get(k);Nj(b,"to the measureSpring() function",!1);let q=0,w=0,z=()=>{return bB({fps:b,frame:q,config:h})},B=z(),G=()=>{return Math.abs(B.current-B.toValue)},J=G();while(J>=j)q++,B=z(),J=G();w=q;for(let K=0;K<20;K++)if(q++,B=z(),J=G(),J>=j)K=0,w=q+1;return zk.set(k,w),w}function yk({frame:b,fps:h,config:j={},from:k=0,to:q=1,durationInFrames:w,durationRestThreshold:z,delay:B=0,reverse:G=!1}){SK(w),CK({frame:b,durationInFrames:1/0,allowFloats:!0}),Nj(h,"to spring()",!1);let J=G||typeof w<"u",K=J?wq({fps:h,config:j,threshold:z}):void 0,Q=J?{get:()=>K}:{get:()=>{throw Error("did not calculate natural duration, this is an error with Remotion. Please report")}},T=(G?(w??Q.get())-b:b)+(G?B:-B),U=w===void 0?T:T/(w/Q.get());if(w&&T>w)return q;let W=bB({fps:h,frame:U,config:j}),Y=j.overshootClamping?q>=k?Math.min(W.current,q):Math.max(W.current,q):W.current;return k===0&&q===1?Y:Sh(Y,[0,1],[k,q])}var eq=(b)=>Math.min(1,Math.max(0,b)),Uh=30;class gh{static step0(b){return b>0?1:0}static step1(b){return b>=1?1:0}static linear(b){return b}static ease(b){return gh.bezier(0.42,0,1,1)(b)}static quad(b){return b*b}static cubic(b){return b*b*b}static poly(b){return(h)=>h**b}static sin(b){return 1-Math.cos(b*Math.PI/2)}static circle(b){let h=eq(b);return 1-Math.sqrt(1-h*h)}static exp(b){return 2**(10*(b-1))}static elastic(b=1){let h=b*Math.PI;return(j)=>1-Math.cos(j*Math.PI/2)**3*Math.cos(j*h)}static back(b=1.70158){return(h)=>h*h*((b+1)*h-b)}static spring({allowTail:b=!1,durationRestThreshold:h,...j}={}){return Object.assign((q)=>{if(q<=0)return 0;if(!b&&q>=1)return 1;if(b)return yk({fps:Uh,frame:q*wq({fps:Uh,config:j,threshold:h}),config:j});return yk({fps:Uh,frame:q*Uh,config:j,durationInFrames:Uh,durationRestThreshold:h})},{remotionShouldExtendRight:b})}static bounce(b){let h=eq(b);if(h<0.36363636363636365)return 7.5625*h*h;if(h<0.7272727272727273){let k=h-0.5454545454545454;return 7.5625*k*k+0.75}if(h<0.9090909090909091){let k=h-0.8181818181818182;return 7.5625*k*k+0.9375}let j=h-0.9545454545454546;return 7.5625*j*j+0.984375}static bezier(b,h,j,k){return iz(b,h,j,k)}static in(b){return b}static out(b){return(h)=>1-b(1-h)}static inOut(b){return(h)=>{if(h<0.5)return b(h*2)/2;return 1-b((1-h)*2)/2}}}var Qb="[-+]?\\d*\\.?\\d+",ph=Qb+"%";function ah(...b){return"\\(\\s*("+b.join(")\\s*,\\s*(")+")\\s*\\)"}var nh="(?:none|[-+]?\\d*\\.?\\d+(?:%|deg|rad|grad|turn)?)";function Wh(b){return new RegExp(b+"\\(\\s*("+nh+")\\s+("+nh+")\\s+("+nh+")(?:\\s*\\/\\s*("+nh+"))?\\s*\\)")}function IK(){let b={rgb:void 0,rgba:void 0,hsl:void 0,hsla:void 0,hex3:void 0,hex4:void 0,hex5:void 0,hex6:void 0,hex8:void 0,oklch:void 0,oklab:void 0,lab:void 0,lch:void 0,hwb:void 0};if(b.rgb===void 0)b.rgb=new RegExp("rgb"+ah(Qb,Qb,Qb)),b.rgba=new RegExp("rgba"+ah(Qb,Qb,Qb,Qb)),b.hsl=new RegExp("hsl"+ah(Qb,ph,ph)),b.hsla=new RegExp("hsla"+ah(Qb,ph,ph,Qb)),b.hex3=/^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,b.hex4=/^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,b.hex6=/^#([0-9a-fA-F]{6})$/,b.hex8=/^#([0-9a-fA-F]{8})$/,b.oklch=Wh("oklch"),b.oklab=Wh("oklab"),b.lab=Wh("lab"),b.lch=Wh("lch"),b.hwb=Wh("hwb");return b}function tb(b,h,j){if(j<0)j+=1;if(j>1)j-=1;if(j<0.16666666666666666)return b+(h-b)*6*j;if(j<0.5)return h;if(j<0.6666666666666666)return b+(h-b)*(0.6666666666666666-j)*6;return b}function rq(b,h,j){let k=j<0.5?j*(1+h):j+h-j*h,q=2*j-k,w=tb(q,k,b+0.3333333333333333),z=tb(q,k,b),B=tb(q,k,b-0.3333333333333333);return Math.round(w*255)<<24|Math.round(z*255)<<16|Math.round(B*255)<<8}function sb(b){let h=Number.parseInt(b,10);if(h<0)return 0;if(h>255)return 255;return h}function bw(b){return(Number.parseFloat(b)%360+360)%360/360}function hw(b){let h=Number.parseFloat(b);if(h<0)return 0;if(h>1)return 255;return Math.round(h*255)}function th(b){let h=Number.parseFloat(b);if(h<0)return 0;if(h>100)return 1;return h/100}function Jb(b,h){if(b==="none")return 0;if(b.endsWith("%"))return Number.parseFloat(b)/100*h;return Number.parseFloat(b)}function Bk(b){if(b==="none")return 0;if(b.endsWith("rad"))return Number.parseFloat(b)*180/Math.PI;if(b.endsWith("grad"))return Number.parseFloat(b)*0.9;if(b.endsWith("turn"))return Number.parseFloat(b)*360;return Number.parseFloat(b)}function Xh(b){if(b===void 0||b==="none")return 1;if(b.endsWith("%"))return Math.max(0,Math.min(1,Number.parseFloat(b)/100));return Math.max(0,Math.min(1,Number.parseFloat(b)))}function ob(b){if(b<=0.0031308)return 12.92*b;return 1.055*b**0.4166666666666667-0.055}function oh(b){return Math.max(0,Math.min(1,b))}function Yh(b,h,j,k){let q=Math.round(oh(b)*255),w=Math.round(oh(h)*255),z=Math.round(oh(j)*255),B=Math.round(oh(k)*255);return(q<<24|w<<16|z<<8|B)>>>0}function jw(b,h,j){let k=b+0.3963377774*h+0.2158037573*j,q=b-0.1055613458*h-0.0638541728*j,w=b-0.0894841775*h-1.291485548*j,z=k*k*k,B=q*q*q,G=w*w*w,J=4.0767416621*z-3.3077115913*B+0.2309699292*G,K=-1.2684380046*z+2.6097574011*B-0.3413193965*G,Q=-0.0041960863*z-0.7034186147*B+1.707614701*G;return[ob(J),ob(K),ob(Q)]}function kw(b,h,j){let G=(b+16)/116,J=h/500+G,K=G-j/200,Q=J*J*J,M=K*K*K,T=Q>0.008856451679035631?Q:(116*J-16)/903.2962962962963,U=b>8?((b+16)/116)**3:b/903.2962962962963,W=M>0.008856451679035631?M:(116*K-16)/903.2962962962963,Y=T*0.95047,X=U*1,O=W*1.08883,L=3.2404542*Y-1.5371385*X-0.4985314*O,$=-0.969266*Y+1.8760108*X+0.041556*O,Z=0.0556434*Y-0.2040259*X+1.0572252*O;return[ob(L),ob($),ob(Z)]}function VK(b,h,j){if(h+j>=1){let J=h/(h+j);return[J,J,J]}let k=1,q=0,w=tb(q,k,b+0.3333333333333333),z=tb(q,k,b),B=tb(q,k,b-0.3333333333333333),G=1-h-j;return[w*G+h,z*G+h,B*G+h]}var qw={transparent:0,aliceblue:4042850303,antiquewhite:4209760255,aqua:16777215,aquamarine:2147472639,azure:4043309055,beige:4126530815,bisque:4293182719,black:255,blanchedalmond:4293643775,blue:65535,blueviolet:2318131967,brown:2771004159,burlywood:3736635391,burntsienna:3934150143,cadetblue:1604231423,chartreuse:2147418367,chocolate:3530104575,coral:4286533887,cornflowerblue:1687547391,cornsilk:4294499583,crimson:3692313855,cyan:16777215,darkblue:35839,darkcyan:9145343,darkgoldenrod:3095792639,darkgray:2846468607,darkgreen:6553855,darkgrey:2846468607,darkkhaki:3182914559,darkmagenta:2332068863,darkolivegreen:1433087999,darkorange:4287365375,darkorchid:2570243327,darkred:2332033279,darksalmon:3918953215,darkseagreen:2411499519,darkslateblue:1211993087,darkslategray:793726975,darkslategrey:793726975,darkturquoise:13554175,darkviolet:2483082239,deeppink:4279538687,deepskyblue:12582911,dimgray:1768516095,dimgrey:1768516095,dodgerblue:512819199,firebrick:2988581631,floralwhite:4294635775,forestgreen:579543807,fuchsia:4278255615,gainsboro:3705462015,ghostwhite:4177068031,gold:4292280575,goldenrod:3668254975,gray:2155905279,green:8388863,greenyellow:2919182335,grey:2155905279,honeydew:4043305215,hotpink:4285117695,indianred:3445382399,indigo:1258324735,ivory:4294963455,khaki:4041641215,lavender:3873897215,lavenderblush:4293981695,lawngreen:2096890111,lemonchiffon:4294626815,lightblue:2916673279,lightcoral:4034953471,lightcyan:3774873599,lightgoldenrodyellow:4210742015,lightgray:3553874943,lightgreen:2431553791,lightgrey:3553874943,lightpink:4290167295,lightsalmon:4288707327,lightseagreen:548580095,lightskyblue:2278488831,lightslategray:2005441023,lightslategrey:2005441023,lightsteelblue:2965692159,lightyellow:4294959359,lime:16711935,limegreen:852308735,linen:4210091775,magenta:4278255615,maroon:2147483903,mediumaquamarine:1724754687,mediumblue:52735,mediumorchid:3126187007,mediumpurple:2473647103,mediumseagreen:1018393087,mediumslateblue:2070474495,mediumspringgreen:16423679,mediumturquoise:1221709055,mediumvioletred:3340076543,midnightblue:421097727,mintcream:4127193855,mistyrose:4293190143,moccasin:4293178879,navajowhite:4292783615,navy:33023,oldlace:4260751103,olive:2155872511,olivedrab:1804477439,orange:4289003775,orangered:4282712319,orchid:3664828159,palegoldenrod:4008225535,palegreen:2566625535,paleturquoise:2951671551,palevioletred:3681588223,papayawhip:4293907967,peachpuff:4292524543,peru:3448061951,pink:4290825215,plum:3718307327,powderblue:2967529215,purple:2147516671,rebeccapurple:1714657791,red:4278190335,rosybrown:3163525119,royalblue:1097458175,saddlebrown:2336560127,salmon:4202722047,sandybrown:4104413439,seagreen:780883967,seashell:4294307583,sienna:2689740287,silver:3233857791,skyblue:2278484991,slateblue:1784335871,slategray:1887473919,slategrey:1887473919,snow:4294638335,springgreen:16744447,steelblue:1182971135,tan:3535047935,teal:8421631,thistle:3636451583,tomato:4284696575,turquoise:1088475391,violet:4001558271,wheat:4125012991,white:4294967295,whitesmoke:4126537215,yellow:4294902015,yellowgreen:2597139199};function AK(b){let h=IK(),j;if(h.hex6){if(j=h.hex6.exec(b))return Number.parseInt(j[1]+"ff",16)>>>0}if(qw[b]!==void 0)return qw[b];if(h.rgb){if(j=h.rgb.exec(b))return(sb(j[1])<<24|sb(j[2])<<16|sb(j[3])<<8|255)>>>0}if(h.rgba){if(j=h.rgba.exec(b))return(sb(j[1])<<24|sb(j[2])<<16|sb(j[3])<<8|hw(j[4]))>>>0}if(h.hex3){if(j=h.hex3.exec(b))return Number.parseInt(j[1]+j[1]+j[2]+j[2]+j[3]+j[3]+"ff",16)>>>0}if(h.hex8){if(j=h.hex8.exec(b))return Number.parseInt(j[1],16)>>>0}if(h.hex4){if(j=h.hex4.exec(b))return Number.parseInt(j[1]+j[1]+j[2]+j[2]+j[3]+j[3]+j[4]+j[4],16)>>>0}if(h.hsl){if(j=h.hsl.exec(b))return(rq(bw(j[1]),th(j[2]),th(j[3]))|255)>>>0}if(h.hsla){if(j=h.hsla.exec(b))return(rq(bw(j[1]),th(j[2]),th(j[3]))|hw(j[4]))>>>0}if(h.oklch){if(j=h.oklch.exec(b)){let k=Jb(j[1],1),q=Jb(j[2],0.4),w=Bk(j[3]),z=Xh(j[4]),B=w*Math.PI/180,[G,J,K]=jw(k,q*Math.cos(B),q*Math.sin(B));return Yh(G,J,K,z)}}if(h.oklab){if(j=h.oklab.exec(b)){let k=Jb(j[1],1),q=Jb(j[2],0.4),w=Jb(j[3],0.4),z=Xh(j[4]),[B,G,J]=jw(k,q,w);return Yh(B,G,J,z)}}if(h.lab){if(j=h.lab.exec(b)){let k=Jb(j[1],100),q=Jb(j[2],125),w=Jb(j[3],125),z=Xh(j[4]),[B,G,J]=kw(k,q,w);return Yh(B,G,J,z)}}if(h.lch){if(j=h.lch.exec(b)){let k=Jb(j[1],100),q=Jb(j[2],150),w=Bk(j[3]),z=Xh(j[4]),B=w*Math.PI/180,[G,J,K]=kw(k,q*Math.cos(B),q*Math.sin(B));return Yh(G,J,K,z)}}if(h.hwb){if(j=h.hwb.exec(b)){let k=Bk(j[1]),q=Jb(j[2],1),w=Jb(j[3],1),z=Xh(j[4]),[B,G,J]=VK(k/360,q,w);return Yh(B,G,J,z)}}throw Error(`invalid color string ${b} provided`)}var ww=(b)=>{return(b>>24&255)/255},_K=(b)=>{return b>>16&255},lK=(b)=>{return b>>8&255},mK=(b)=>{return b&255},uK=(b,h,j,k)=>{return`rgba(${b}, ${h}, ${j}, ${k})`};function dK(b){let h=AK(b);return(h<<24|h>>>8)>>>0}var sK=(b,h,j,k)=>{let[q,w,z,B]=[_K,lK,mK,ww].map((G)=>{let J=Sh(b,h,j.map((K)=>G(K)),{easing:k?.easing,extrapolateLeft:"clamp",extrapolateRight:"clamp",posterize:k?.posterize});if(G===ww)return Number(J.toFixed(3));return Math.round(J)});return uK(q,w,z,B)},hB=(b,h,j,k)=>{if(typeof b>"u")throw TypeError("input can not be undefined");if(typeof h>"u")throw TypeError("inputRange can not be undefined");if(typeof j>"u")throw TypeError("outputRange can not be undefined");if(h.length!==j.length)throw TypeError("inputRange ("+h.length+" values provided) and outputRange ("+j.length+" values provided) must have the same length");let q=j.map((w)=>dK(w));return sK(b,h,q,k)},zw=({easing:b,forceSpringAllowTail:h})=>{switch(b.type){case"linear":return gh.linear;case"spring":return gh.spring({allowTail:h??b.allowTail??void 0,damping:b.damping,durationRestThreshold:b.durationRestThreshold??void 0,mass:b.mass,overshootClamping:b.overshootClamping,stiffness:b.stiffness});case"bezier":return iz(b.x1,b.y1,b.x2,b.y2);default:throw TypeError(`Unsupported easing: ${JSON.stringify(b)}`)}},ch=({frame:b,forceSpringAllowTail:h,status:j})=>{let{keyframes:k,easing:q,clamping:w,interpolationFunction:z}=j;if(k.length===0)return null;let B=[...k].sort((K,Q)=>K.frame-Q.frame),G=B.map((K)=>K.frame),J=B.map((K)=>K.value);if(z==="interpolateColors"){if(!J.every((K)=>typeof K==="string"))return null;if(k.length===1)return J[0];try{return hB(b,G,J,{easing:q.map((K)=>zw({easing:K,forceSpringAllowTail:h})),posterize:j.posterize})}catch{return null}}if(z!=="interpolate")return null;try{return Sh(b,G,J,{easing:q.map((K)=>zw({easing:K,forceSpringAllowTail:h})),extrapolateLeft:w.left,extrapolateRight:w.right,posterize:j.posterize})}catch{return null}},Pj=({dragOverrideValue:b,frame:h})=>{if(b===void 0)return{type:"none"};if(b.type==="static")return{type:"resolved",value:b.value};if(h===null)return{type:"none"};let j=ch({forceSpringAllowTail:null,frame:h,status:b.status});if(j===null)return{type:"none"};return{type:"resolved",value:j}},jB=({propStatus:b,dragOverrideValue:h,defaultValue:j,frame:k=null,shouldResortToDefaultValueIfUndefined:q=!1})=>{let w=Pj({dragOverrideValue:h,frame:k});if(w.type==="resolved"&&w.value!==void 0)return w.value;if(b.status==="keyframed"){if(k!==null)return ch({forceSpringAllowTail:null,frame:k,status:b});return q?j:void 0}if(b.codeValue===void 0&&q)return j;return b.codeValue},zq=kB({overrideIdToNodePathMappings:{}}),iK=kB({setOverrideIdToNodePath:()=>{throw Error("OverrideIdsToNodePathsSettersContext not initialized")}}),pK=({descriptor:b,propStatusOverrides:h,dragOverrides:j,frame:k})=>{if(!h&&!j)return{params:b.params,effectKey:b.effectKey};let q={...b.params};if(h){for(let[w,z]of Object.entries(h))if(z!==void 0)q[w]=z}if(j)for(let[w,z]of Object.entries(j)){let B=Pj({dragOverrideValue:z,frame:k});if(B.type==="resolved")q[w]=B.value}return{params:q,effectKey:b.definition.calculateKey(q)}},aK=(b,h)=>{if(!b)return null;let j={},k=!1;for(let[q,w]of Object.entries(b)){if(w.status==="static"){j[q]=w.codeValue,k=!0;continue}if(w.status==="keyframed"){let z=ch({forceSpringAllowTail:null,frame:h,status:w});if(z!==null)j[q]=z,k=!0}}return k?j:null},fh=(b)=>{let h=lz(null),j=b.map((w)=>w.definition),k=h.current;if(k!==null&&k.length===j.length&&k.every((w,z)=>w===j[z]))return k;return h.current=j,j},qB=({propStatuses:b,nodePath:h,effectIndex:j})=>{let k=b[Ob(h)];if(!k)return{type:"cannot-update-sequence",reason:"not-found"};if(!k.canUpdate)return{type:"cannot-update-sequence",reason:k.reason};let q=k.effects.find((w)=>w.effectIndex===j);if(!q)return{type:"cannot-update-effect",reason:"not-found"};if(!q.canUpdate)return{type:"cannot-update-effect",reason:q.reason};return{type:"can-update-effect",props:q.props}},wB=(b,h)=>{let j=b[Ob(h)];if(!j)return;if(!j.canUpdate)return;return j.props},Ih=({effects:b,overrideId:h})=>{let j=lz(null),{propStatuses:k}=jk(vj),{getEffectDragOverrides:q}=jk(Ej),w=qb(),{overrideIdToNodePathMappings:z}=jk(zq),B=j.current,G=h?z[h]??null:null,J=b.map((M,T)=>{if(G===null)return{descriptor:M,params:M.params,effectKey:M.effectKey};let U=qB({propStatuses:k,nodePath:G,effectIndex:T}),W=U.type==="can-update-effect"?aK(U.props,w):null,Y=q(G,T),X=Object.keys(Y).length===0?null:Y,{params:O,effectKey:L}=pK({descriptor:M,propStatusOverrides:W,dragOverrides:X,frame:w});return{descriptor:M,params:O,effectKey:L}});if(B!==null&&B.length===J.length&&B.every((M,T)=>M.definition===J[T].descriptor.definition&&M.effectKey===J[T].effectKey))return B;let Q=J.map(({descriptor:M,params:T,effectKey:U})=>({definition:M.definition,effectKey:U,params:T,memoized:!0}));return j.current=Q,Q},Bq=(b,h)=>{let j={};for(let k of Object.keys(b)){let q=b[k];if(q.type==="hidden")continue;else if(q.type==="enum"){j[k]=q;let w=h(k)??q.default,z=q.variants[w];if(z)Object.assign(j,Bq(z,h))}else j[k]=q}return j},Gq=(b)=>{let h={},j=(k,q)=>{if(k in h)throw Error(`Duplicate key "${k}" in schema: discriminated union variants must not share keys`);h[k]=q};for(let k of Object.keys(b)){let q=b[k];if(j(k,q),q.type==="enum")for(let w of Object.values(q.variants)){let z=Gq(w);for(let B of Object.keys(z))j(B,z[B])}}return h},zB=({schema:b,key:h,value:j})=>{let k=b[h];if(!k)throw Error("Key "+JSON.stringify(h)+" not found in schema");if(typeof j!=="string")throw Error("Value must be a string, but is "+JSON.stringify(j));if(k.type!=="enum")throw Error("Key "+JSON.stringify(h)+" is not an enum");if(!k.variants[j])throw Error("Value for "+JSON.stringify(h)+" must be one of "+Object.keys(k.variants).map((B)=>JSON.stringify(B)).join(", ")+", got "+JSON.stringify(j));let w=Object.keys(k.variants).filter((B)=>B!==j),z=new Set;for(let B of w){let G=k.variants[B],J=Object.keys(G);for(let K of J)z.add(K)}return[...z]},Bw={type:"linear"},nK=({insertedKeyframeIndex:b,easingLength:h,keyframeCount:j})=>{if(!(b>0&&b<j-1)||h===0)return null;return Math.min(b-1,h-1)},tK=(b)=>{return{type:"static",value:b}},oK=({status:b,frame:h,value:j})=>{let k=b.keyframes.findIndex((z)=>z.frame===h),q=k===-1?[...b.keyframes,{frame:h,value:j}].sort((z,B)=>z.frame-B.frame):b.keyframes.map((z,B)=>B===k?{frame:h,value:j}:z),w=[...b.easing];if(k===-1){let z=q.findIndex((J)=>J.frame===h),B=nK({insertedKeyframeIndex:z,easingLength:w.length,keyframeCount:q.length}),G=B===null?Bw:w[B];w.splice(z,0,G)}while(w.length<q.length-1)w.push(Bw);if(w.length>q.length-1)w.length=q.length-1;return{type:"keyframed",status:{...b,keyframes:q,easing:w}}},eK=(b)=>{if(b?.type!=="static")return;return b.value},rK=(b)=>{return b!==null&&b.status==="keyframed"},BB=(b,h)=>{if(h in b)return b[h];for(let j of Object.values(b)){if(j.type!=="enum")continue;for(let k of Object.values(j.variants)){let q=BB(k,h);if(q)return q}}return},GB=({schema:b,currentValue:h,overrideValues:j,propStatus:k,frame:q})=>{let w={},z=new Set;for(let B of Object.keys(h)){let G=k?.[B]??null,J=BB(b,B);if(J?.type==="hidden")continue;let K;if(G===null)K=h[B];else if(rK(G))if(J?.type==="array"||J?.keyframable===!1)K=h[B];else{let Q=Pj({dragOverrideValue:j[B],frame:q});if(Q.type==="resolved")K=Q.value;else if(q!==null)K=ch({forceSpringAllowTail:null,frame:q,status:G})??h[B];else K=h[B]}else if(G.status==="computed")K=h[B];else K=jB({propStatus:G,dragOverrideValue:j[B],defaultValue:J?.default,frame:q,shouldResortToDefaultValueIfUndefined:!1});if(K===void 0)z.add(B);w[B]=K}for(let B of Object.keys(j))if(b[B]?.type==="enum"){let G=zB({schema:b,key:B,value:w[B]});for(let J of G)z.add(J)}return{merged:w,propsToDelete:z}},JB=(b,h)=>{let j=h.split("."),k=b;for(let q of j){if(k===null||k===void 0||typeof k!=="object")return;k=k[q]}return k},bM=(b,h)=>{let j={};for(let k of h)j[k]=JB(b,k);return j},hM=(b,h)=>{return Object.keys(Bq(b,(j)=>h[j]))},jM=({props:b,valuesDotNotation:h,schemaKeys:j,propsToDelete:k})=>{let q={...b};for(let w of j){let z=h[w],B=w.split(".");if(B.length===1){q[w]=z;continue}let G=q;for(let J=0;J<B.length-1;J++){let K=B[J];if(typeof G[K]==="object"&&G[K]!==null)G[K]={...G[K]};else G[K]={};G=G[K]}G[B[B.length-1]]=z}return KK(q,k),q},Gw={},Zb=({Component:b,componentName:h,componentIdentity:j,schema:k,supportsEffects:q})=>{let w=eJ(k),z=Gq(w),B=Object.keys(z),G=GK((J,K)=>{let Q=d();if(!Q.isStudio||Q.isReadOnlyStudio||Q.isRendering)return rj.createElement(b,{...J,controls:null,ref:K});let{propStatuses:M}=bk(vj),{getDragOverrides:T}=bk(Ej),U=bk(zq),W=qb();if(J.controls)return rj.createElement(b,{...J,ref:K});let[Y]=JK(()=>{let{stack:g}=J;if(!g)return String(Math.random());let v=Gw[g];if(v)return v;let y=String(Math.random());return Gw[g]=y,y}),X=U.overrideIdToNodePathMappings[Y]??null,O=B.map((g)=>JB(J,g)),L=hk(()=>bM(J,B),O),$=hk(()=>{return{schema:w,currentRuntimeValueDotNotation:L,overrideId:Y,supportsEffects:q,componentIdentity:j,componentName:h}},[L,Y]),{merged:Z,propsToDelete:N}=hk(()=>{return GB({schema:w,currentValue:L,overrideValues:X===null?{}:T(X),propStatus:X===null?void 0:wB(M,X),frame:W})},[L,T,X,M,W]),R=hM(w,Z),F=jM({props:J,valuesDotNotation:Z,schemaKeys:R,propsToDelete:N});return rj.createElement(b,{...F,controls:$,ref:K})});return G.displayName=`withInteractivitySchema(${b.displayName||b.name||"Component"})`,G},Gk=[],kM=({from:b=0,trimBefore:h=0,freeze:j,durationInFrames:k=1/0,children:q,name:w,height:z,width:B,showInTimeline:G=!0,hidden:J=!1,controls:K,_remotionInternalEffects:Q,_remotionInternalLoopDisplay:M,_remotionInternalStack:T,_remotionInternalDocumentationLink:U,_remotionInternalPremountDisplay:W,_remotionInternalPostmountDisplay:Y,_remotionInternalIsMedia:X,outlineRef:O,...L},$)=>{let{layout:Z="absolute-fill"}=L,[N]=_J(()=>String(Math.random())),R=qj(a),{rootId:F}=Eb(),g=R?R.cumulatedFrom+R.relativeFrom:0,v=Zj();if(Z!=="absolute-fill"&&Z!=="none")throw TypeError(`The layout prop of <Sequence /> expects either "absolute-fill" or "none", but you passed: ${Z}`);if(Z==="none"&&typeof L.style<"u")throw TypeError('If layout="none", you may not pass a style. Passed: '+JSON.stringify(L.style));if(typeof k!=="number")throw TypeError(`You passed to durationInFrames an argument of type ${typeof k}, but it must be a number.`);if(k<=0)throw TypeError(`durationInFrames must be positive, but got ${k}`);if(typeof b!=="number")throw TypeError(`You passed to the "from" props of your <Sequence> an argument of type ${typeof b}, but it must be a number.`);if(!Number.isFinite(b))throw TypeError(`The "from" prop of a sequence must be finite, but got ${b}.`);if(typeof h!=="number")throw TypeError(`You passed to the "trimBefore" prop of your <Sequence> an argument of type ${typeof h}, but it must be a number.`);if(h<0)throw TypeError(`The "trimBefore" prop of <Sequence /> must be greater than or equal to 0, but got ${h}.`);if(Number.isNaN(h))throw TypeError('The "trimBefore" prop of <Sequence /> must be a real number, but it is NaN.');if(!Number.isFinite(h))throw TypeError(`The "trimBefore" prop of <Sequence /> must be finite, but it is ${h}.`);if(typeof j<"u"&&j!==null){if(typeof j!=="number")throw TypeError(`The "freeze" prop of <Sequence /> must be a number, but is of type ${typeof j}.`);if(Number.isNaN(j))throw TypeError('The "freeze" prop of <Sequence /> must be a real number, but it is NaN.');if(!Number.isFinite(j))throw TypeError(`The "freeze" prop of <Sequence /> must be finite, but it is ${j}.`)}let y=Hb(),x=wb(),D=b-h,C=(R?.absoluteFrom??0)+D,c=R?Math.min(R.durationInFrames-D,k):k,I=Math.max(0,Math.min(x.durationInFrames-b,c)),{registerSequence:H,unregisterSequence:E}=qj(Gh),P=mq(null),S=L.layout==="none"?O??null:O??P,V=ib(()=>{return R?.premounting||Boolean(L._remotionInternalIsPremounting)},[L._remotionInternalIsPremounting,R?.premounting]),_=ib(()=>{return R?.postmounting||Boolean(L._remotionInternalIsPostmounting)},[L._remotionInternalIsPostmounting,R?.postmounting]),l=g+D,u=R?R.cumulatedFrom+R.relativeFrom:0,f=R?u-R.cumulatedNegativeFrom:0,s=Math.max(0,f,l),i=l-s,zb=ib(()=>{return{absoluteFrom:C,cumulatedFrom:g,relativeFrom:D,cumulatedNegativeFrom:i,durationInFrames:I,parentFrom:R?.relativeFrom??0,id:N,height:z??R?.height??null,width:B??R?.width??null,premounting:V,postmounting:_,premountDisplay:W??null,postmountDisplay:Y??null}},[g,C,D,I,R,N,z,B,V,_,W,Y,i]),Bb=ib(()=>{return w??""},[w]),Gb=U??"https://www.remotion.dev/docs/sequence",t=d(),jb=qj(Hj),mb=L?.stack??null,$b=mq(null);$b.current=T??mb;let Lb=typeof j==="number"?j:null,m=h===0?null:h,Db=R?.cumulatedNegativeFrom??0,ub=X&&X.type!=="image"?X.data.startMediaFrom+Db-i:null,yq=X&&X.type!=="image"?X.data.startMediaFrom+Db:null,Dq=X&&X.type!=="image"&&yq!==null?Lb===null?null:yq+(M?Lb%M.durationInFrames:Lb)*X.data.playbackRate:null;AJ(()=>{if(!t.isStudio)return;if(X){if(X.type==="image")H({type:"image",controls:K??null,effects:Q??Gk,displayName:Bb,documentationLink:Gb,duration:I,from:b,trimBefore:m,id:N,loopDisplay:M,nonce:v.get(),parent:R?.id??null,postmountDisplay:Y??null,premountDisplay:W??null,rootId:F,showInTimeline:G,src:X.src,getStack:()=>$b.current,refForOutline:S??null,isInsideSeries:jb,frozenFrame:Lb});else H({type:X.type,controls:K??null,effects:Q??Gk,displayName:Bb,documentationLink:Gb,doesVolumeChange:X.data.doesVolumeChange,duration:I,from:b,trimBefore:m,id:N,loopDisplay:M,nonce:v.get(),parent:R?.id??null,playbackRate:X.data.playbackRate,postmountDisplay:Y??null,premountDisplay:W??null,rootId:F,showInTimeline:G,src:X.data.src,getStack:()=>$b.current,startMediaFrom:ub??X.data.startMediaFrom,volume:X.data.volumes,refForOutline:S??null,isInsideSeries:jb,frozenFrame:Lb,frozenMediaFrame:Dq});return()=>{E(N)}}return H({from:b,trimBefore:m,duration:I,id:N,displayName:Bb,documentationLink:Gb,parent:R?.id??null,type:"sequence",rootId:F,showInTimeline:G,nonce:v.get(),loopDisplay:M,getStack:()=>$b.current,premountDisplay:W??null,postmountDisplay:Y??null,controls:K??null,effects:Q??Gk,refForOutline:S??null,isInsideSeries:jb,frozenFrame:Lb}),()=>{E(N)}},[k,N,w,H,Bb,E,R?.id,I,F,b,h,m,G,v,M,W,Y,t.isStudio,K,Q,X,Gb,S,jb,Lb,ub,Dq]);let UG=Math.ceil(g+b+k-1),uj=y<g+b?null:y>UG?null:q,dj=uj===null||typeof j>"u"||j===null?uj:Ib(ok,{frame:j,children:uj}),Fq=L.layout==="none"?void 0:L.style,WG=VJ((sj)=>{if(P.current=sj,typeof $==="function")$(sj);else if($)$.current=sj},[$]),XG=ib(()=>{return{flexDirection:void 0,...B?{width:B}:{},...z?{height:z}:{},...Fq??{}}},[z,Fq,B]);if($!==null&&Z==="none")throw TypeError('It is not supported to pass both a `ref` and `layout="none"` to <Sequence />.');if(J)return null;return Ib(a.Provider,{value:zb,children:dj===null?null:L.layout==="none"?dj:Ib(_k,{ref:WG,style:XG,className:L.className,children:dj})})},qM=ik(kM),wM=(b,h)=>{let j=qj(Vz),k=qb()-j.premountFramesRemaining;if(b.layout==="none")throw Error('`<Sequence>` with `premountFor` and `postmountFor` props does not support layout="none"');let{style:q,from:w=0,durationInFrames:z=1/0,premountFor:B=0,postmountFor:G=0,styleWhilePremounted:J,styleWhilePostmounted:K,...Q}=b,M=Math.ceil(w+z-1),T=k<w&&k>=w-B,U=k>M&&k<=M+G,W=T?w:U?w+z-1:0,Y=T||U,X=ib(()=>{return{...q,opacity:T||U?0:1,pointerEvents:T||U?"none":q?.pointerEvents??void 0,...T?J:{},...U?K:{}}},[q,T,U,J,K]);return Ib(ok,{frame:W,active:Y,children:Ib(Cj,{ref:h,from:w,durationInFrames:z,style:X,_remotionInternalPremountDisplay:B,_remotionInternalPostmountDisplay:G,_remotionInternalIsPremounting:T,_remotionInternalIsPostmounting:U,...Q})})},zM=ik(wM),BM=(b,h)=>{let j=d(),{fps:k}=wb();if(b.layout!=="none"&&!j.isRendering){let q=kq?b.premountFor??k:b.premountFor;if(q||b.postmountFor)return Ib(zM,{ref:h,...b,premountFor:q})}return Ib(qM,{...b,ref:h})},Cj=ik(BM),KB=Cj,hb=Zb({Component:Cj,componentName:"<Sequence>",componentIdentity:"dev.remotion.remotion.Sequence",schema:hh,supportsEffects:!1}),pX=Zb({Component:Cj,componentName:"<Sequence>",componentIdentity:null,schema:bK,supportsEffects:!1}),QB=(b,h,j)=>{switch(b){case"fill":return[0,0,h.width,h.height,0,0,j.width,j.height];case"contain":{let k=Math.min(j.width/h.width,j.height/h.height),q=(j.width-h.width*k)/2,w=(j.height-h.height*k)/2;return[0,0,h.width,h.height,q,w,h.width*k,h.height*k]}case"cover":{let k=Math.max(j.width/h.width,j.height/h.height),q=(j.width-h.width*k)/2,w=(j.height-h.height*k)/2;return[0,0,h.width,h.height,q,w,h.width*k,h.height*k]}default:throw Error("Unknown fit: "+b)}},XM="https://remotion.dev/docs/troubleshooting/webgl2-context",TB=(b,h)=>`Failed to acquire ${b} context for ${h}. Pass --gl=angle when using the CLI, set chromiumOptions: { gl: "angle" } when using SSR APIs, or set "OpenGL render backend" to "angle" in the Advanced section when rendering in the Studio. See ${XM}`,YM=(b)=>Error(TB("WebGL",b)),UB=(b)=>Error(TB("WebGL2",b));class WB{width;height;pairs=new Map;lostContexts=new Set;constructor(b,h){this.width=b,this.height=h}getPair(b){let h=this.pairs.get(b);if(h)return h;let j=[this.allocateCanvas(b),this.allocateCanvas(b)];return this.pairs.set(b,j),j}assertContextNotLost(b){if(this.lostContexts.has(b))throw Error("WebGL context was lost during canvas effect rendering. This typically happens in headless or memory-constrained environments (e.g. Remotion Lambda). Try reducing concurrency or increasing the Lambda function memory.")}allocateCanvas(b){let h=document.createElement("canvas");switch(h.width=this.width,h.height=this.height,b){case"2d":{if(!h.getContext("2d",{colorSpace:"srgb"}))throw Error("Failed to acquire 2D context for canvas effect");return h}case"webgl2":{let j=h.getContext("webgl2",{premultipliedAlpha:!0,alpha:!0,preserveDrawingBuffer:!0});if(!j)throw UB("canvas effect");return h.addEventListener("webglcontextlost",(k)=>{k.preventDefault(),this.lostContexts.add(h)}),h.addEventListener("webglcontextrestored",()=>{this.lostContexts.delete(h)}),j.pixelStorei(j.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),h}case"webgpu":{if(typeof navigator>"u"||!("gpu"in navigator))throw Error("WebGPU is not available in this environment for canvas effect");return h}default:throw Error(`Unknown effect backend: ${b}`)}}}var ZM=(b)=>{let h=[],j=[],k=null;for(let q of b){let{backend:w}=q.definition;if(k===null||w===k)j.push(q),k=w;else h.push({backend:k,effects:j}),j=[q],k=w}if(k!==null&&j.length>0)h.push({backend:k,effects:j});return h},eh=null,$M=()=>{if(eh)return eh;return eh=(async()=>{if(typeof navigator>"u"||!("gpu"in navigator))throw Error("WebGPU is not available in this environment");let{gpu:b}=navigator,h=await b.requestAdapter();if(!h)throw Error("No WebGPU adapter available");return h.requestDevice()})(),eh},XB=(b,h)=>({pool:new WB(b,h),setupCache:new WeakMap,cleanupRegistry:[],currentRunId:0}),Dk=(b)=>{b.currentRunId++;for(let h of b.cleanupRegistry)h.definition.cleanup(h.state)},LM=(b,h,j)=>{let k=h,q=b.setupCache.get(k);if(!q)q=new WeakMap,b.setupCache.set(k,q);if(q.has(j))return q.get(j);let w=h.setup(j);return q.set(j,w),b.cleanupRegistry.push({definition:k,state:w}),w},Vh=async({state:b,source:h,effects:j,output:k,width:q,height:w})=>{let z=++b.currentRunId,B=()=>b.currentRunId!==z,G=j.filter((Y)=>!Y.params.disabled),J=ZM(G),K=h,Q=null;if(J.length===0){if(h===k)return!0;let Y=k.getContext("2d");if(!Y)throw Error("Failed to acquire 2D context for output canvas");return Y.clearRect(0,0,q,w),Y.drawImage(K,0,0,q,w),!0}let M=!1;for(let Y of J)if(Y.backend==="webgpu"){M=!0;break}let T=M?await $M():null;if(B())return!1;let U=!0;for(let Y=0;Y<J.length;Y++){let X=J[Y],[O,L]=b.pool.getPair(X.backend),$=O;for(let N of X.effects){let R=N.definition,F=LM(b,R,$);if(R.apply({source:K,target:$,state:F,params:N.params,width:q,height:w,gpuDevice:T,flipSourceY:X.backend==="webgl2"?U:!1}),X.backend==="webgl2")U=!0,b.pool.assertContextNotLost($);K=$,$=$===O?L:O}Q=K??Q;let Z=J[Y+1];if(Z&&Z.backend!==X.backend&&Q)if(X.backend==="2d"&&Z.backend==="webgl2")K=Q,U=!0;else{let N=await createImageBitmap(Q);if(B())return N.close(),!1;if(K=N,Z.backend==="webgl2")U=!1}}if(!Q)return!0;let W=k.getContext("2d");if(!W)throw Error("Failed to acquire 2D context for output canvas");return W.clearRect(0,0,q,w),W.drawImage(Q,0,0,q,w),!0},Ah=()=>{let b=Jw(null),h=Jw(null);return NM(()=>{return()=>{if(b.current)Dk(b.current)}},[]),OM(()=>({get:(j,k)=>{if(!h.current||h.current.width!==j||h.current.height!==k){if(b.current)Dk(b.current);b.current=XB(j,k),h.current={width:j,height:k}}return b.current}}),[])},gM=({width:b,height:h,fit:j,className:k,style:q,effects:w},z)=>{let B=WM(null),G=Ah(),J=UM(()=>{if(typeof document>"u")return null;return document.createElement("canvas")},[]),K=QM((Q)=>{let M=B.current,T=b??Q.displayWidth,U=h??Q.displayHeight;if(!M)throw Error("Canvas ref is not set");if(!J)throw Error("Source canvas is not available");J.width=T,J.height=U;let W=J.getContext("2d");if(!W)throw Error("Could not get 2d context for source canvas");return W.drawImage(Q,...QB(j,{height:Q.displayHeight,width:Q.displayWidth},{width:T,height:U})),M.width=T,M.height=U,Vh({state:G.get(T,U),source:J,effects:w,output:M,width:T,height:U})},[G,w,j,h,J,b]);return TM(z,()=>{return{draw:K,getCanvas:()=>{if(!B.current)throw Error("Canvas ref is not set");return B.current},clear:()=>{let Q=B.current?.getContext("2d");if(!Q)throw Error("Could not get 2d context");Q.clearRect(0,0,B.current.width,B.current.height)}}},[K]),RM("canvas",{ref:B,className:k,style:q})},yM=MM.forwardRef(gM),DM=5,Kw=({loopBehavior:b,durationFound:h,timeInSec:j})=>{return b==="loop"?h?j%h:j:Math.min(j,h||1/0)},FM=async({resolvedSrc:b,signal:h,requestInit:j,currentTime:k,initialLoopBehavior:q})=>{if(typeof ImageDecoder>"u")throw Error("Your browser does not support the WebCodecs ImageDecoder API.");let w=await fetch(b,{...j,signal:h}),{body:z}=w;if(!z)throw Error("Got no body");let B=new ImageDecoder({data:z,type:w.headers.get("Content-Type")||"image/gif"});await B.completed;let{selectedTrack:G}=B.tracks;if(!G)throw Error("No selected track");let J=[],K=null,Q=async(W)=>{let Y=J.find((O)=>O.frameIndex===W);if(Y&&Y.frame)return Y;let X=await B.decode({frameIndex:W,completeFramesOnly:!0});if(Y)Y.frame=X.image;else J.push({frame:X.image,frameIndex:W,timeInSeconds:X.image.timestamp/1e6});return{frame:X.image,frameIndex:W,timeInSeconds:X.image.timestamp/1e6}},M=(W)=>{let X=J.filter((O)=>O.frame).sort((O,L)=>{let $=Math.abs(O.timeInSeconds-W),Z=Math.abs(L.timeInSeconds-W);return $-Z});for(let O=0;O<X.length;O++){if(O<DM)continue;let L=X[O];L.frame=null}},T=async({timeInSec:W,loopBehavior:Y})=>{let X=Kw({durationFound:K,loopBehavior:Y,timeInSec:W}),L=J.filter((Z)=>Z.timeInSeconds<=X).map((Z)=>Z.frameIndex).reduce((Z,N)=>Math.max(Z,N),0),$=L;while(!0){let Z=await Q($);if($++,!Z.frame)throw Error("No frame found");if(!Z.frame.duration)break;if($===G.frameCount&&K===null)K=(Z.frame.timestamp+Z.frame.duration)/1e6;if(Z.timeInSeconds>X||$===G.frameCount)break}if(G.frameCount-L<3&&Y==="loop")await Q(0);M(X)};return await T({timeInSec:k,loopBehavior:q}),await T({timeInSec:k,loopBehavior:q}),{getFrame:async(W,Y)=>{if(K!==null&&W>K&&Y==="clear-after-finish")return null;let X=Kw({loopBehavior:Y,durationFound:K,timeInSec:W});await T({timeInSec:X,loopBehavior:Y});let L=J.filter(($)=>$.frame).reduce(($,Z)=>{let N=Math.abs($.timeInSeconds-X),R=Math.abs(Z.timeInSeconds-X);return N<R?$:Z});if(!L.frame)throw Error("No frame found");return L},frameCount:G.frameCount}},vM=(b)=>{if(!b)return null;let h={...b};delete h.signal;let{headers:j,...k}=h;return JSON.stringify({...k,headers:j?Array.from(new Headers(j).entries()):null})},xM=(b)=>{if(typeof window>"u")return b;return new URL(b,window.origin).href},EM={...yb,playbackRate:{type:"number",min:0,max:10,step:0.1,default:1,description:"Playback rate",hiddenFromList:!1,keyframable:!1},...Yb},YB=GM(({src:b,width:h,height:j,onError:k,loopBehavior:q="loop",playbackRate:w=1,fit:z="fill",requestInit:B,effects:G,controls:J,...K},Q)=>{let M=xM(b),[T,U]=Jk(null),{delayRender:W,continueRender:Y}=Kb(),[X]=Jk(()=>W(`Rendering <AnimatedImage/> with src="${M}"`)),O=qb(),{fps:L}=wb(),$=O/w/L,Z=wj($);Z.current=$;let N=vM(B),R=wj(B);R.current=B;let F=wj(null),g=Ih({effects:G,overrideId:J?.overrideId??null});MB(Q,()=>{let y=F.current?.getCanvas();if(!y)throw Error("Canvas ref is not set");return y},[]);let[v]=Jk(()=>q);return JM(()=>{let y=new AbortController;return FM({resolvedSrc:M,signal:y.signal,requestInit:R.current,currentTime:Z.current,initialLoopBehavior:v}).then((x)=>{U(x),Y(X)}).catch((x)=>{if(x.name==="AbortError"){Y(X);return}if(k)k?.(x),Y(X);else bh(x)}),()=>{y.abort()}},[M,X,k,N,v,Y]),KM(()=>{if(!T)return;let y=W(`Rendering frame at ${$} of <AnimatedImage src="${b}"/>`),x=!1;return T.getFrame($,q).then(async(D)=>{if(x)return;if(D===null){F.current?.clear(),Y(y);return}if(await F.current?.draw(D.frame)&&!x)Y(y)}).catch((D)=>{if(x)return;if(k)k(D),Y(y);else bh(D)}),()=>{x=!0,Y(y)}},[$,T,q,k,b,Y,W,g,z,h,j]),Fk(yM,{ref:F,width:h,height:j,fit:z,effects:g,...K})});YB.displayName="AnimatedImageContent";var HM=({src:b,width:h,height:j,onError:k,fit:q,playbackRate:w,loopBehavior:z,id:B,className:G,style:J,durationInFrames:K,requestInit:Q,effects:M=[],controls:T,ref:U,...W})=>{let{durationInFrames:Y}=wb(),X=K??Y,O=wj(null),L=fh(M);return MB(U,()=>{return O.current},[]),Fk(hb,{layout:"none",durationInFrames:X,name:"<AnimatedImage>",_remotionInternalDocumentationLink:"https://www.remotion.dev/docs/animatedimage",controls:T,_remotionInternalEffects:L,...W,outlineRef:O,children:Fk(YB,{...{src:b,width:h,height:j,onError:k,fit:q,playbackRate:w,loopBehavior:z,id:B,className:G,style:J,requestInit:Q},ref:O,effects:M,controls:T})})},Jq=Zb({Component:HM,componentName:"<AnimatedImage>",componentIdentity:"dev.remotion.remotion.AnimatedImage",schema:EM,supportsEffects:!0});Jq.displayName="AnimatedImage";bb(Jq);var PM={type:"boolean",default:!1,description:"Disabled"},ZB=(b)=>{let{calculateKey:h,validateParams:j}=b,k={...b,documentationLink:b.documentationLink??null,calculateKey:(w)=>{let z=w.disabled??!1;return`${h(w)}-disabled-${z}`},schema:{disabled:PM,...b.schema}};return(w={})=>{return j(w),{definition:k,params:w,effectKey:k.calculateKey(w),memoized:!1}}},mM=(b)=>{if(typeof b!=="string")throw TypeError(`The "filename" must be a string, but you passed a value of type ${typeof b}`);if(b.trim()==="")throw Error("The `filename` must not be empty");if(!b.match(/^([0-9a-zA-Z-!_.*'()/:&$@=;+,?]+)/g))throw Error('The `filename` must match "/^([0-9a-zA-Z-!_.*\'()/:&$@=;+,?]+)/g". Use forward slashes only, even on Windows.')},uM=(b)=>{if(typeof b!=="string"&&!(b instanceof Uint8Array))throw TypeError(`The "content" must be a string or Uint8Array, but you passed a value of type ${typeof b}`);if(typeof b==="string"&&b.trim()==="")throw Error("The `content` must not be empty")},$B=(b)=>{if(b.type!=="artifact")return;if(mM(b.filename),b.contentType==="thumbnail")return;uM(b.content)},Pb=fM({registerRenderAsset:()=>{return},unregisterRenderAsset:()=>{return},renderAssets:[]}),sM=({children:b,collectAssets:h})=>{let[j,k]=lM([]),q=_M([]),w=Mw((G)=>{$B(G),q.current=[...q.current,G],k(q.current)},[]);if(h)IM(h,()=>{return{collectAssets:()=>{let G=q.current;return q.current=[],k([]),G}}},[]);let z=Mw((G)=>{q.current=q.current.filter((J)=>J.id!==G),k(q.current)},[]);VM(()=>{if(typeof window<"u")window.remotion_collectAssets=()=>{let G=q.current;return q.current=[],k([]),G}},[]);let B=AM(()=>{return{registerRenderAsset:w,unregisterRenderAsset:z,renderAssets:j}},[j,w,z]);return dM(Pb.Provider,{value:B,children:b})},LB=Symbol("Thumbnail"),NB=({filename:b,content:h,downloadBehavior:j})=>{let{registerRenderAsset:k,unregisterRenderAsset:q}=CM(Pb),w=d(),z=qb(),[B]=cM(()=>{return String(Math.random())});return SM(()=>{if(!w.isRendering)return;if(h instanceof Uint8Array)k({type:"artifact",id:B,content:btoa(new TextDecoder("utf8").decode(h)),filename:b,frame:z,contentType:"binary",downloadBehavior:j??null});else if(h===LB)k({type:"artifact",id:B,filename:b,frame:z,contentType:"thumbnail",downloadBehavior:j??null});else k({type:"artifact",id:B,content:h,filename:b,frame:z,contentType:"text",downloadBehavior:j??null});return()=>{return q(B)}},[h,w.isRendering,b,z,B,k,q,j]),null};NB.Thumbnail=LB;var Wb=(b)=>{if(typeof window>"u")return b;if(b.startsWith("http://")||b.startsWith("https://")||b.startsWith("file://")||b.startsWith("blob:")||b.startsWith("data:"))return b;return new URL(b,window.origin).href},Sj=({trimAfter:b,mediaDurationInFrames:h,playbackRate:j,trimBefore:k})=>{let q=h;if(typeof b<"u")q=b;if(typeof k<"u")q-=k;let w=q/j;return Number(w.toFixed(10))},OB=aM(null),nM=()=>{return pM.useContext(OB)},_h=({durationInFrames:b,times:h=1/0,children:j,name:k,showInTimeline:q,...w})=>{let z=qb(),{durationInFrames:B}=wb();if(Lj(b,{component:"of the <Loop /> component",allowFloats:!0}),typeof h!=="number")throw TypeError(`You passed to "times" an argument of type ${typeof h}, but it must be a number.`);if(h!==1/0&&h%1!==0)throw TypeError(`The "times" prop of a loop must be an integer, but got ${h}.`);if(h<0)throw TypeError(`The "times" prop of a loop must be at least 0, but got ${h}`);let G=Math.ceil(B/b),J=Math.min(G,h),K=w.layout==="none"?void 0:w.style,Q=b*(J-1),T=Math.floor(z/b)*b,U=Math.min(T,Q),W=Uw(()=>{return{numberOfTimes:Math.min(B/b,h),startOffset:-U,durationInFrames:b}},[B,b,U,h]),Y=Uw(()=>{return{iteration:Math.floor(z/b),durationInFrames:b}},[z,b]);return Ww(OB.Provider,{value:Y,children:Ww(hb,{durationInFrames:b,from:U,name:k??"<Loop>",_remotionInternalDocumentationLink:"https://www.remotion.dev/docs/loop",_remotionInternalLoopDisplay:W,layout:w.layout,style:K,showInTimeline:q,children:j})})};_h.useLoop=nM;var n=({logLevel:b,tag:h,message:j,mountTime:k})=>{let q=[k?Date.now()-k+"ms ":null,h].filter(Boolean).join(" ");p.trace({logLevel:b,tag:null},`[${q}]`,j)},cj=oM({}),Uj={},zj=[],Xw=(b)=>{Uj=b(Uj),zj.forEach((h)=>h())},RB=({children:b})=>{let[h,j]=rM(()=>Uj);return eM(()=>{let k=()=>{j(Uj)};return zj.push(k),()=>{zj=zj.filter((q)=>q!==k)}},[]),bQ(cj.Provider,{value:h,children:b})},gB=(b)=>{let h=b.indexOf("#");if(h===-1)return null;return h},yB=(b)=>{let h=gB(b);if(h===null)return b;return b.slice(0,h)},_b=(b)=>{let h=tM(cj),j=gB(b),k=yB(b);if(!h[k])return b;if(j!==null)return h[k]+b.slice(j);return h[k]},hQ=function(b){let h=new FileReader;return new Promise((j,k)=>{h.onload=function(){let q=h.result;j(q)},h.onerror=(q)=>{return k(q)},h.readAsDataURL(b)})},jQ=async({reader:b,contentType:h,contentLength:j,onProgress:k})=>{let q=0,w=[];while(!0){let{done:G,value:J}=await b.read();if(G)break;if(w.push(J),q+=J.length,k)k({loadedBytes:q,totalBytes:j})}let z=new Uint8Array(q),B=0;for(let G of w)z.set(G,B),B+=G.length;return new Blob([z],{type:h??void 0})},kQ=(b,h)=>{let j=h?.method??"blob-url",k=h?.logLevel??"info",q=yB(b);if(o().isRendering)return{free:()=>{return},waitUntilDone:()=>Promise.resolve(q)};p.verbose({logLevel:k,tag:"prefetch"},`Starting prefetch ${q}`);let w=!1,z=null,B=()=>{return},G=()=>{return},J=new Promise((M,T)=>{B=M,G=T});J.catch(()=>{return});let K=new AbortController,Q=null;return fetch(q,{signal:K.signal,credentials:h?.credentials??void 0}).then((M)=>{if(w)return null;if(!M.ok)throw Error(`HTTP error, status = ${M.status}`);let T=M.headers.get("Content-Type"),U=h?.contentType??T;if(!(U&&(U.startsWith("video/")||U.startsWith("audio/")||U.startsWith("image/"))))console.warn(`Called prefetch() on ${q} which returned a "Content-Type" of ${T}. Prefetched content should have a proper content type (video/... or audio/...) or a contentType passed the options of prefetch(). Otherwise, prefetching will not work properly in all browsers.`);if(!M.body)throw Error(`HTTP response of ${q} has no body`);let Y=M.body.getReader();return Q=Y,jQ({reader:Y,contentType:h?.contentType??T??null,contentLength:M.headers.get("Content-Length")?parseInt(M.headers.get("Content-Length"),10):null,onProgress:h?.onProgress})}).then((M)=>{if(!M||w)return;let T=h?.contentType?new Blob([M],{type:h.contentType}):M;if(j==="base64")return hQ(T);return URL.createObjectURL(T)}).then((M)=>{if(w)return;n({logLevel:k,tag:"prefetch",message:`Finished prefetch ${q} with method ${j}`,mountTime:null}),z=M,Xw((T)=>({...T,[q]:z})),B(z)}).catch((M)=>{if(M?.message.includes("free() called"))return;G(M)}),{free:()=>{if(n({logLevel:k,tag:"prefetch",message:`Freeing ${q}`,mountTime:null}),z){if(j==="blob-url")URL.revokeObjectURL(z);Xw((M)=>{let T={...M};return delete T[q],T})}else{if(w)return;w=!0;let M=Error("free() called");G(M);try{K.abort(M)}catch{}Q?.cancel(M).catch(()=>{return})}},waitUntilDone:()=>{return J}}},fj=(b,h)=>{if(typeof b.volume!=="number"&&typeof b.volume!=="function"&&typeof b.volume<"u")throw TypeError(`You have passed a volume of type ${typeof b.volume} to your <${h} /> component. Volume must be a number or a function with the signature '(frame: number) => number' undefined.`);if(typeof b.volume==="number"&&b.volume<0)throw TypeError(`You have passed a volume below 0 to your <${h} /> component. Volume must be between 0 and 1`);if(typeof b.playbackRate!=="number"&&typeof b.playbackRate<"u")throw TypeError(`You have passed a playbackRate of type ${typeof b.playbackRate} to your <${h} /> component. Playback rate must a real number or undefined.`);if(typeof b.playbackRate==="number"&&(isNaN(b.playbackRate)||!Number.isFinite(b.playbackRate)||b.playbackRate<=0))throw TypeError(`You have passed a playbackRate of ${b.playbackRate} to your <${h} /> component. Playback rate must be a real number above 0.`);if(typeof b.preservePitch!=="boolean"&&typeof b.preservePitch<"u")throw TypeError(`'preservePitch' must be a boolean or undefined but got '${typeof b.preservePitch}' instead`)},qQ=(b,h)=>{if(typeof b<"u"){if(typeof b!=="number")throw TypeError(`type of startFrom prop must be a number, instead got type ${typeof b}.`);if(isNaN(b)||b===1/0)throw TypeError("startFrom prop can not be NaN or Infinity.");if(b<0)throw TypeError(`startFrom must be greater than equal to 0 instead got ${b}.`)}if(typeof h<"u"){if(typeof h!=="number")throw TypeError(`type of endAt prop must be a number, instead got type ${typeof h}.`);if(isNaN(h))throw TypeError("endAt prop can not be NaN.");if(h<=0)throw TypeError(`endAt must be a positive number, instead got ${h}.`)}if(h<b)throw TypeError("endAt prop must be greater than startFrom prop.")},wQ=(b,h)=>{if(typeof b<"u"){if(typeof b!=="number")throw TypeError(`type of trimBefore prop must be a number, instead got type ${typeof b}.`);if(isNaN(b)||b===1/0)throw TypeError("trimBefore prop can not be NaN or Infinity.");if(b<0)throw TypeError(`trimBefore must be greater than equal to 0 instead got ${b}.`)}if(typeof h<"u"){if(typeof h!=="number")throw TypeError(`type of trimAfter prop must be a number, instead got type ${typeof h}.`);if(isNaN(h))throw TypeError("trimAfter prop can not be NaN.");if(h<=0)throw TypeError(`trimAfter must be a positive number, instead got ${h}.`)}if(h<=b)throw TypeError("trimAfter prop must be greater than trimBefore prop.")},Ij=({startFrom:b,endAt:h,trimBefore:j,trimAfter:k})=>{if(typeof b<"u"&&typeof j<"u")throw TypeError("Cannot use both startFrom and trimBefore props. Use trimBefore instead as startFrom is deprecated.");if(typeof h<"u"&&typeof k<"u")throw TypeError("Cannot use both endAt and trimAfter props. Use trimAfter instead as endAt is deprecated.");let q=typeof j<"u"||typeof k<"u",w=typeof b<"u"||typeof h<"u";if(q)wQ(j,k);else if(w)qQ(b,h)},Vj=({startFrom:b,endAt:h,trimBefore:j,trimAfter:k})=>{return{trimBeforeValue:j??b??void 0,trimAfterValue:k??h??void 0}},KQ=(b,h)=>{switch(h.type){case"got-duration":{let j=Wb(h.src);if(b[j]===h.durationInSeconds)return b;return{...b,[j]:h.durationInSeconds}}default:return b}},Kq=zQ({durations:{},setDurations:()=>{throw Error("context missing")}}),DB=({children:b})=>{let[h,j]=GQ(KQ,{}),k=BQ(()=>{return{durations:h,setDurations:j}},[h]);return JQ(Kq.Provider,{value:k,children:b})},Mq=({crossOrigin:b,requestsVideoFrame:h,isClientSideRendering:j})=>{if(b!==void 0&&b!==null)return b;if(j)return"anonymous";if(h)return"anonymous";return},Wj=({mediaRef:b,mediaType:h,onAutoPlayError:j,logLevel:k,mountTime:q,reason:w,isPlayer:z})=>{let{current:B}=b;if(!B)return;n({logLevel:k,tag:"play",message:`Attempting to play ${B.src}. Reason: ${w}`,mountTime:q});let G=B.play();if(!G.catch)return;G.catch((J)=>{if(!B)return;if(J.message.includes("request was interrupted by a call to pause"))return;if(J.message.includes("The operation was aborted."))return;if(J.message.includes("The fetching process for the media resource was aborted by the user agent"))return;if(J.message.includes("request was interrupted by a new load request"))return;if(J.message.includes("because the media was removed from the document"))return;if(J.message.includes("user didn't interact with the document")&&B.muted)return;if(console.log(`Could not play ${h} due to following error: `,J),!B.muted){if(j){j();return}if(h==="video"&&z)p.info({logLevel:k,tag:"<"+h+">"},"The video will be muted and we'll retry playing it."),p.info({logLevel:k,tag:"<"+h+">"},"Use onAutoPlayError() to handle this error yourself."),B.muted=!0,B.play()}})},Qq=({audioContext:b,ref:h})=>{let j=null,k=!1;return{attemptToConnect:()=>{if(k)throw Error("SharedElementSourceNode has been disposed");if(!j&&h.current)j=b.createMediaElementSource(h.current)},get:()=>{if(!j)throw Error("Audio element not connected");return j},cleanup:()=>{if(j)j.disconnect(),j=null;k=!0}}},Nw=!1,RQ=(b)=>{if(Nw)return;if(Nw=!0,typeof window<"u")p.warn({logLevel:b,tag:null},"AudioContext is not supported in this browser")},gQ=({logLevel:b,latencyHint:h,audioEnabled:j,sampleRate:k})=>{let q=d(),w=OQ(k);if(k!==w.current)throw Error(`Changing the AudioContext sample rate dynamically is not supported. The sample rate was initialized with ${w.current} Hz, but ${k} Hz was passed later.`);return NQ(()=>{if(q.isRendering)return null;if(!j)return null;if(typeof AudioContext>"u")return RQ(b),null;let B=new AudioContext({latencyHint:h,sampleRate:k}),G=B.createGain();G.connect(B.destination),p.trace({logLevel:b,tag:"audio"},"Creating new audio context"),B.suspend();let J=null;return{audioContext:B,gainNode:G,getState:()=>{let T=B.state;if(J==="running"&&T!=="running")return"suspended-to-running";if(J==="suspended"&&T!=="suspended")return"running-to-suspended";return T},resume:()=>{J="running";let T=B.resume();return T.finally(()=>{if(J==="running")J=null}),T},suspend:()=>{J="suspended";let T=B.suspend();return T.finally(()=>{if(J==="suspended")J=null}),T}}},[b,h,q.isRendering,j,k])},yQ=(b,h)=>{return new Promise((j)=>{let k=b.currentTime,w=b.getOutputTimestamp().performanceTime,z=performance.now(),B=()=>{let{currentTime:G}=b,J=b.getOutputTimestamp(),K=performance.now()-z;if(w!==void 0&&J.performanceTime!==void 0&&J.performanceTime>w&&J.contextTime!==void 0&&J.contextTime>k){p.verbose({logLevel:h,tag:"audio"},`waitUntilActuallyResumed: getOutputTimestamp.performanceTime advanced from ${w.toFixed(6)} to ${J.performanceTime.toFixed(6)} after ${K.toFixed(1)}ms. currentTime=${G.toFixed(6)} (advanced by ${(G-k).toFixed(6)}), getOutputTimestamp.performanceTime=${J.performanceTime?.toFixed(1)??"undefined"}`),j();return}requestAnimationFrame(B)};requestAnimationFrame(B)})},Ow="data:audio/mp3;base64,/+MYxAAJcAV8AAgAABn//////+/gQ5BAMA+D4Pg+BAQBAEAwD4Pg+D4EBAEAQDAPg++hYBH///hUFQVBUFREDQNHmf///////+MYxBUGkAGIMAAAAP/29Xt6lUxBTUUzLjEwMFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV/+MYxDUAAANIAAAAAFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV",FQ=(b,h)=>{let j=Object.keys(b).sort(),k=Object.keys(h).sort();if(j.length!==k.length)return!1;for(let q=0;q<j.length;q++){if(j[q]!==k[q])return!1;if(b[j[q]]!==h[k[q]])return!1}return!0},vQ=(b,h,j)=>{if(b==="src"&&!j.startsWith("data:")&&!h.startsWith("data:"))return new URL(j,window.origin).toString()!==new URL(h,window.origin).toString();if(j===h)return!1;return!0},Jh=FB(null),Aj=FB(null),xQ=(b)=>{if(b==="suspended"||b==="running-to-suspended"||b==="interrupted")return!0;if(b==="running"||b==="suspended-to-running")return!1;throw Error(`Unexpected audio context state: ${b}`)},EB=({children:b,audioLatencyHint:h,audioEnabled:j,previewSampleRate:k})=>{let q=Xb(),w=k??48000;LQ(()=>{if(typeof window>"u")return;window.remotion_sampleRate=w},[w]);let z=gQ({logLevel:q,latencyHint:h,audioEnabled:j,sampleRate:w}),B=fb(!1),G=fb(null),J=nb(()=>({value:0}),[]),K=fb([]),Q=nb(()=>{return{dispatch:($)=>{K.current.forEach((Z)=>Z($))},subscribe:($)=>{return K.current.push($),{remove:()=>{K.current=K.current.filter((Z)=>Z!==$)}}}}},[]),M=fb({scheduledEndTime:null,mediaEndTime:null}),T=fb(new Map),U=Rb(($)=>{T.current.delete($)},[]),W=nb(()=>{return({node:$,mediaTimestamp:Z,scheduledTime:N,duration:R,offset:F,originalUnloopedMediaTimestamp:g})=>{if(!z)throw Error("Audio context not found");let v=z.getState();if(v==="closed")return{type:"not-started",reason:"audio context is closed"};let y=xQ(v);if(R>0)if(y)T.current.set($,{scheduledTime:N,offset:F,duration:R});else $.start(N,F,R);let x=N+R/$.playbackRate.value,D=Z+F,C=D+R,c=z.audioContext.baseLatency+z.audioContext.outputLatency,I=N-z.audioContext.currentTime,H=M.current,E=H.scheduledEndTime!==null&&Math.abs(N-H.scheduledEndTime)>0.001,P=H.mediaEndTime!==null&&Math.abs(D-H.mediaEndTime)>0.001;return p.verbose({logLevel:q,tag:"audio-scheduling"},"scheduled %c%s%c %s %c%s%c %s %c%s%c %s %s %s %s %s",E?"color: red; font-weight: bold":"",N.toFixed(4),"",x.toFixed(4),P?"color: red; font-weight: bold":"",D.toFixed(4),"",C.toFixed(4),R<0?"color: red; font-weight: bold":I<0?"color: red; font-weight: bold":"color: blue; font-weight: bold",R<0?"missed "+Math.abs(F).toFixed(2)+"s":Math.abs(I).toFixed(2)+(I<0?" delay":" ahead"),"","current="+z.audioContext.currentTime.toFixed(4),"offset="+F.toFixed(4),"latency="+c.toFixed(4),"state="+z.audioContext.state,g!==D?"original_ts="+g.toFixed(4):"","action="+(y?"schedule":"start"),""),H.scheduledEndTime=x,H.mediaEndTime=C,R>0?{type:"started",scheduledTime:N}:{type:"not-started",reason:"missed "+Math.abs(F).toFixed(2)+"s"}}},[z,q]),Y=Rb(()=>{if(!z)return Promise.resolve();if(B.current)return Promise.resolve();B.current=!0,z.gainNode.gain.cancelScheduledValues(z.audioContext.currentTime),z.gainNode.gain.setValueAtTime(0,z.audioContext.currentTime),z.gainNode.gain.linearRampToValueAtTime(1,z.audioContext.currentTime+0.03),T.current.forEach((Z,N)=>{N.start(Z.scheduledTime,Z.offset,Z.duration)}),T.current.clear();let $=z.resume();return G.current=new Promise((Z)=>{yQ(z.audioContext,q).then(Z),$.catch((N)=>{p.warn({logLevel:q,tag:"audio"},"AudioContext resume rejected, continuing without audio sync",N),Z()})}).finally(()=>{G.current=null}),$.catch(()=>{})},[z,q]),X=Rb(()=>{return G.current},[]),O=Rb(()=>{if(!z)return Promise.resolve();if(!B.current)return Promise.resolve();return B.current=!1,z.suspend()},[z]),L=nb(()=>{return{audioContext:z?.audioContext??null,getAudioContextState:()=>z?.getState()??null,gainNode:z?.gainNode??null,audioSyncAnchor:J,audioSyncAnchorEmitter:Q,scheduleAudioNode:W,resume:Y,suspend:O,getIsResumingAudioContext:X,unscheduleAudioNode:U}},[z,J,Q,W,Y,O,X,U]);return xB(Jh.Provider,{value:L,children:b})},HB=({children:b,numberOfAudioTags:h})=>{let j=fb([]),[k]=vB(h);if(h!==k)throw Error("The number of shared audio tags has changed dynamically. Once you have set this property, you cannot change it afterwards.");let q=Xb(),w=Hh(),z=d(),B=vk(Jh),G=B?.audioContext??null,J=B?.resume,K=nb(()=>{return Array(h).fill(!0).map(()=>{let L=$Q();return{id:Math.random(),ref:L,mediaElementSourceNode:G?Qq({audioContext:G,ref:L}):null}})},[G,h]);(Oh.useInsertionEffect??Oh.useLayoutEffect)(()=>{return()=>{requestAnimationFrame(()=>{K.forEach(({mediaElementSourceNode:L})=>{L?.cleanup()})})}},[K]);let M=fb(Array(h).fill(!1)),T=Rb(()=>{K.forEach(({ref:L,id:$})=>{let Z=j.current?.find((R)=>R.id===$),{current:N}=L;if(!N)return;if(Z===void 0){N.src=Ow;return}if(!Z)throw TypeError("Expected audio data to be there");Object.keys(Z.props).forEach((R)=>{if(vQ(R,Z.props[R],N[R]))N[R]=Z.props[R]})})},[K]),U=Rb((L)=>{let{aud:$,audioId:Z,premounting:N,postmounting:R}=L,F=j.current?.find((c)=>c.audioId===Z);if(F)return F;let g=M.current.findIndex((c)=>c===!1);if(g===-1)throw Error(`Tried to simultaneously mount ${h+1} <Html5Audio /> tags at the same time. With the current settings, the maximum amount of <Html5Audio /> tags is limited to ${h} at the same time. Remotion pre-mounts silent audio tags to help avoid browser autoplay restrictions. See https://remotion.dev/docs/player/autoplay#using-the-numberofsharedaudiotags-prop for more information on how to increase this limit.`);let{id:v,ref:y,mediaElementSourceNode:x}=K[g],D=[...M.current];D[g]=v,M.current=D;let C={props:$,id:v,el:y,audioId:Z,mediaElementSourceNode:x,premounting:N,audioMounted:Boolean(y.current),postmounting:R,cleanupOnMediaTagUnmount:()=>{}};return j.current?.push(C),T(),C},[h,K,T]),W=Rb((L)=>{let $=[...M.current],Z=K.findIndex((N)=>N.id===L);if(Z===-1)throw TypeError("Error occured in ");$[Z]=!1,M.current=$,j.current=j.current?.filter((N)=>N.id!==L),T()},[K,T]),Y=Rb(({aud:L,audioId:$,id:Z,premounting:N,postmounting:R})=>{let F=!1;if(j.current=j.current?.map((g)=>{let v=Boolean(g.el.current);if(g.audioMounted!==v)F=!0;if(g.id===Z){if(FQ(L,g.props)&&g.premounting===N&&g.postmounting===R)return g;return F=!0,{...g,props:L,premounting:N,postmounting:R,audioId:$,audioMounted:v}}return g}),F)T()},[T]),X=Rb(()=>{K.forEach((L)=>{if(j.current.find((Z)=>Z.el===L.ref)?.premounting)return;Wj({mediaRef:L.ref,mediaType:"audio",onAutoPlayError:null,logLevel:q,mountTime:w,reason:"playing all audios",isPlayer:z.isPlayer})}),J?.()},[q,w,K,z.isPlayer,J]),O=nb(()=>{return{registerAudio:U,unregisterAudio:W,updateAudio:Y,playAllAudios:X,numberOfAudioTags:h}},[h,X,U,W,Y]);return DQ(Aj.Provider,{value:O,children:[K.map(({id:L,ref:$})=>{return xB("audio",{ref:$,preload:"metadata",src:Ow},L)}),b]})},EQ=({aud:b,audioId:h,premounting:j,postmounting:k})=>{let q=vk(Jh),w=vk(Aj),[z]=vB(()=>{if(w&&w.numberOfAudioTags>0)return w.registerAudio({aud:b,audioId:h,premounting:j,postmounting:k});let G=Oh.createRef(),J=q?.audioContext?Qq({audioContext:q.audioContext,ref:G}):null;return{el:G,id:Math.random(),props:b,audioId:h,mediaElementSourceNode:J,premounting:j,audioMounted:Boolean(G.current),postmounting:k,cleanupOnMediaTagUnmount:()=>{J?.cleanup()}}}),B=Oh.useInsertionEffect??Oh.useLayoutEffect;if(typeof document<"u")B(()=>{if(w&&w.numberOfAudioTags>0)w.updateAudio({id:z.id,aud:b,audioId:h,premounting:j,postmounting:k})},[b,w,z.id,h,j,k]),B(()=>{return()=>{if(w&&w.numberOfAudioTags>0)w.unregisterAudio(z.id)}},[w,z.id]);return z},HQ=0.00001,Xj=(b,h)=>{return Math.abs(b-h)<HQ},PB=(b,h)=>{return Math.round(b/h*100)/100},xk=()=>{if(typeof window>"u")return!1;if(!/AppleWebKit/.test(window.navigator.userAgent))return!1;return!window.navigator.userAgent.includes("Chrome/")},_j=()=>{if(typeof window>"u")return!1;return/iP(ad|od|hone)/i.test(window.navigator.userAgent)&&xk()},PQ=(b)=>{return _j()&&b.startsWith("blob:")},Ek=({actualFrom:b,fps:h})=>{return PB(Math.max(0,-b),h)},Hk=({duration:b,fps:h})=>{return PB(b,h)},CQ=({actualSrc:b,actualFrom:h,duration:j,fps:k})=>{if(PQ(b))return b;if(b.startsWith("data:"))return b;if(Boolean(new URL(b,(typeof window>"u"?null:window.location.href)??"http://localhost:3000").hash))return b;if(!Number.isFinite(h))return b;let w=`${b}#t=${Ek({actualFrom:h,fps:k})}`;if(!Number.isFinite(j))return w;return`${w},${Hk({duration:j,fps:k})}`},SQ=({prevStartFrom:b,newStartFrom:h,prevDuration:j,newDuration:k,fps:q})=>{let w=Ek({actualFrom:b,fps:q}),z=Ek({actualFrom:h,fps:q}),B=Hk({duration:j,fps:q}),G=Hk({duration:k,fps:q});if(z<w)return!1;if(G>B)return!1;return!0},cQ=({actualSrc:b,actualFrom:h,duration:j,fps:k})=>{let q=Kk(h),w=Kk(j),z=Kk(b);if(!SQ({prevStartFrom:q.current,newStartFrom:h,prevDuration:w.current,newDuration:j,fps:k})||b!==z.current)q.current=h,w.current=j,z.current=b;return CQ({actualSrc:z.current,actualFrom:q.current,duration:w.current,fps:k})},Rw=!1,fQ=(b)=>{if(Rw)return;Rw=!0,p.warn({logLevel:b,tag:null},"In Safari, setting a volume and a playback rate at the same time is buggy."),p.warn({logLevel:b,tag:null},"In Desktop Safari, only volumes <= 1 will be applied."),p.warn({logLevel:b,tag:null},b,"In Mobile Safari, the volume will be ignored and set to 1 if a playbackRate is set.")},CB=({mediaRef:b,volume:h,logLevel:j,source:k,shouldUseWebAudioApi:q})=>{let w=Lw(null),z=Lw(h);z.current=h;let B=YQ(Jh);if(!B)throw Error("useAmplification must be used within a SharedAudioContext");let{audioContext:G,gainNode:J}=B;if(typeof window<"u")ZQ(()=>{if(!G)return;if(!b.current)return;if(!q)return;if(b.current.playbackRate!==1&&xk()){fQ(j);return}if(!k)return;if(!J)return;let M=new GainNode(G,{gain:z.current});return k.attemptToConnect(),k.get().connect(M),M.connect(J),w.current={gainNode:M},p.trace({logLevel:j,tag:null},`Starting to amplify ${b.current?.src}. Gain = ${z.current}, playbackRate = ${b.current?.playbackRate}`),()=>{w.current=null,M.disconnect(),k.get().disconnect()}},[j,b,G,k,q,J]);if(w.current){let M=h;if(!Xj(w.current.gainNode.gain.value,M))w.current.gainNode.gain.value=M,p.trace({logLevel:j,tag:null},`Setting gain to ${M} for ${b.current?.src}`)}if((xk()&&b.current&&b.current?.playbackRate!==1||!q)&&b.current&&!Xj(h,b.current?.volume))b.current.volume=Math.min(h,1);return w},Vb=()=>{return VQ(a)?.cumulatedNegativeFrom??0},Kh=(b)=>{let h=_h.useLoop(),j=qb(),k=Vb();if(b==="repeat"||h===null)return j+k;return j+k+h.durationInFrames*h.iteration},cB=(b)=>{if(/data:|blob:/.test(b.substring(0,5)))return"Data URL";let h=b.split("/").map((j)=>j.split("\\")).flat(1);return h[h.length-1]},AQ=({compositionDurationInFrames:b,playbackRate:h,trimBefore:j,trimAfter:k,parentSequenceDurationInFrames:q,loop:w})=>{if(w)return b;let z=Sj({mediaDurationInFrames:b*h+(j??0),playbackRate:h,trimBefore:j,trimAfter:k});if(q!==null){let B=Math.min(q*h,z);return Number(B.toFixed(10))}return z},lb=({frame:b,volume:h,mediaVolume:j=1})=>{if(typeof h==="number")return h*j;if(typeof h>"u")return Number(j);let k=h(b)*j;if(typeof k!=="number")throw TypeError(`You passed in a a function to the volume prop but it did not return a number but a value of type ${typeof k} for frame ${b}`);if(Number.isNaN(k))throw TypeError(`You passed in a function to the volume prop but it returned NaN for frame ${b}.`);if(!Number.isFinite(k))throw TypeError(`You passed in a function to the volume prop but it returned a non-finite number for frame ${b}.`);return Math.max(0,k)},yw={},_Q=(b)=>{if(yw[b])return;console.warn(b),yw[b]=!0},fB=({volume:b,mediaVolume:h,mediaType:j,src:k,displayName:q,trimBefore:w,trimAfter:z,playbackRate:B,sequenceDurationInFrames:G,mediaStartsAt:J,loop:K})=>{if(!k)throw Error("No src passed");let Q=Pk(a),[M]=IQ(()=>b),T=AQ({compositionDurationInFrames:G,playbackRate:B,trimBefore:w,trimAfter:z,parentSequenceDurationInFrames:Q?.durationInFrames??null,loop:K}),U=gw(()=>{if(typeof b==="number")return b;return Array(Math.floor(Math.max(0,T+J))).fill(!0).map(($,Z)=>{return lb({frame:Z+J,volume:b,mediaVolume:h})}).join(",")},[T,J,b,h]);SB(()=>{if(typeof b==="number"&&b!==M)_Q(`Remotion: The ${j} with src ${k} has changed it's volume. Prefer the callback syntax for setting volume to get better timeline display: https://www.remotion.dev/docs/audio/volume`)},[M,j,k,b]);let W=typeof b==="function",Y=Zj(),{rootId:X}=Eb(),O=0-J+(w??0);return gw(()=>{return{volumes:U,duration:T,doesVolumeChange:W,nonce:Y,rootId:X,finalDisplayName:q??cB(k),startMediaFrom:O,src:k,playbackRate:B}},[U,T,W,Y,X,q,k,O,B])},Tq=({volume:b,mediaVolume:h,src:j,mediaType:k,playbackRate:q,displayName:w,id:z,getStack:B,showInTimeline:G,premountDisplay:J,postmountDisplay:K,loopDisplay:Q,documentationLink:M,refForOutline:T})=>{let U=Pk(a),W=Vb(),{registerSequence:Y,unregisterSequence:X}=Pk(Gh),{durationInFrames:O}=wb(),L=Vb(),{volumes:$,duration:Z,doesVolumeChange:N,nonce:R,rootId:F,finalDisplayName:g}=fB({volume:b,mediaVolume:h,mediaType:k,src:j,displayName:w,trimAfter:void 0,trimBefore:void 0,playbackRate:q,sequenceDurationInFrames:O,mediaStartsAt:L,loop:!1}),{isStudio:v}=d();SB(()=>{if(!j)throw Error("No src passed");if(!v&&window.process?.env?.NODE_ENV!=="test")return;if(!G)return;return Y({type:k,src:j,id:z,duration:Z,from:0,trimBefore:null,parent:U?.id??null,displayName:g,documentationLink:M,rootId:F,volume:$,showInTimeline:!0,nonce:R.get(),startMediaFrom:0-W,doesVolumeChange:N,loopDisplay:Q,playbackRate:q,getStack:B,premountDisplay:J,postmountDisplay:K,controls:null,effects:[],refForOutline:T,isInsideSeries:!1,frozenFrame:null,frozenMediaFrame:null}),()=>{X(z)}},[Z,z,U,j,Y,X,$,N,R,k,W,q,B,G,J,K,Q,M,F,g,v,T])},hT=(b,h)=>{let[j,k]=Bj([]),[q,w]=Bj([]),[z,B]=Bj([]),J=d().isRendering,K=rQ(!1),Q=Qk((U)=>{if(J)return{unblock:()=>{return}};let W=!1;return k((Y)=>[...Y,U]),{unblock:()=>{if(W)return;W=!0,k((Y)=>{let X=Y.filter((O)=>O!==U);if(X.length===Y.length)return Y;return X})}}},[J]),M=Qk((U)=>{return w((W)=>[...W,U]),{remove:()=>{w((W)=>W.filter((Y)=>Y!==U))}}},[]),T=Qk((U)=>{return B((W)=>[...W,U]),{remove:()=>{B((W)=>W.filter((Y)=>Y!==U))}}},[]);if(IB(()=>{if(J)return;if(j.length>0)q.forEach((U)=>U()),n({logLevel:b,message:"Player is entering buffer state",mountTime:h,tag:"player"})},[j]),typeof window<"u")oQ(()=>{if(J)return;if(j.length===0)z.forEach((U)=>U()),n({logLevel:b,message:"Player is exiting buffer state",mountTime:h,tag:"player"})},[j]);return eQ(()=>{return{addBlock:Q,listenForBuffering:M,listenForResume:T,buffering:K}},[Q,K,M,T])},Mh=nQ.createContext(null),VB=({children:b})=>{let{logLevel:h,mountTime:j}=tQ(Ab),k=hT(h??"info",j);return bT(Mh.Provider,{value:k,children:b})},AB=(b)=>{let[h,j]=Bj(b.buffering.current);return IB(()=>{let k=()=>{j(!0)},q=()=>{j(!1)};return b.listenForBuffering(k),b.listenForResume(q),()=>{b.listenForBuffering(()=>{return}),b.listenForResume(()=>{return})}},[b]),h},lh=()=>{let b=pQ(Mh),h=Xb(),j=b?b.addBlock:null;return aQ(()=>({delayPlayback:()=>{if(!j)throw Error("Tried to enable the buffering state, but a Remotion context was not found. This API can only be called in a component that was passed to the Remotion Player or a <Composition>. Or you might have experienced a version mismatch - run `npx remotion versions` and ensure all packages have the same version. This error is thrown by the buffer state https://remotion.dev/docs/player/buffer-state");p.trace({logLevel:h,tag:"[buffer-state]"},"Adding buffer handle",Error().stack);let{unblock:k}=j({id:String(Math.random())}),q=!1;return{unblock:()=>{if(q)return;q=!0,p.trace({logLevel:h,tag:"[buffer-state]"},"Removing buffer handle"),k()}}}}),[j,h])},jT=()=>{return/^((?!chrome|android).)*safari/i.test(window.navigator.userAgent)},kT=({mediaRef:b,mediaType:h,onVariableFpsVideoDetected:j,pauseWhenBuffering:k,logLevel:q,mountTime:w})=>{let z=iQ(!1),{delayPlayback:B}=lh(),G=dQ((J)=>{if(h!=="video")return;if(!k)return;let K=b.current;if(!K)return;if(K.readyState>=K.HAVE_FUTURE_DATA&&!jT()){n({logLevel:q,message:`Not using buffer until first frame, because readyState is ${K.readyState} and is not Safari or Desktop Chrome`,mountTime:w,tag:"buffer"});return}if(!K.requestVideoFrameCallback){n({logLevel:q,message:"Not using buffer until first frame, because requestVideoFrameCallback is not supported",mountTime:w,tag:"buffer"});return}z.current=!0,n({logLevel:q,message:`Buffering ${b.current?.src} until the first frame is received`,mountTime:w,tag:"buffer"});let Q=B(),M=()=>{Q.unblock(),K.removeEventListener("ended",M,{once:!0}),K.removeEventListener("pause",M,{once:!0}),z.current=!1},T=()=>{M()};K.requestVideoFrameCallback((U,W)=>{if(Math.abs(W.mediaTime-J)>0.5)j();M()}),K.addEventListener("ended",T,{once:!0}),K.addEventListener("pause",T,{once:!0}),K.addEventListener("canplay",T,{once:!0})},[B,q,b,h,w,j,k]);return sQ(()=>{return{isBuffering:()=>z.current,bufferUntilFirstFrame:G}},[G])},wT=(b)=>{let h=qT.useRef({time:b.current?.currentTime??0,lastUpdate:performance.now()}),j=b.current?.currentTime??null;if(j!==null){if(h.current.time!==j)h.current.time=j,h.current.lastUpdate=performance.now()}return h},Gj=({mediaRef:b,time:h,logLevel:j,why:k,mountTime:q})=>{let w=_j()?Number(h.toFixed(1)):h;return n({logLevel:j,tag:"seek",message:`Seeking from ${b.currentTime} to ${w}. src= ${b.src} Reason: ${k}`,mountTime:q}),b.currentTime=w,w},GT=({element:b,shouldBuffer:h,isPremounting:j,isPostmounting:k,logLevel:q,mountTime:w,src:z})=>{let B=lh(),[G,J]=BT(!1);return zT(()=>{let K=[],{current:Q}=b;if(!Q)return;if(!h)return;if(j||k){if((j||k)&&Q.readyState<Q.HAVE_FUTURE_DATA){if(!navigator.userAgent.includes("Firefox/")){n({logLevel:q,message:`Calling .load() on ${Q.src} because readyState is ${Q.readyState} and it is not Firefox. Element is premounted ${Q.playbackRate}`,tag:"load",mountTime:w});let W=Q.playbackRate;Q.load(),Q.playbackRate=W}}return}let M=(W)=>{let Y=!1;if(K.forEach((X)=>{X(W),Y=!0}),K=[],J((X)=>{if(X)Y=!0;return!1}),Y)n({logLevel:q,message:`Unmarking as buffering: ${Q.src}. Reason: ${W}`,tag:"buffer",mountTime:w})},T=(W)=>{J(!0),n({logLevel:q,message:`Marking as buffering: ${Q.src}. Reason: ${W}`,tag:"buffer",mountTime:w});let{unblock:Y}=B.delayPlayback(),X=()=>{M('"canplay" was fired'),U()},O=()=>{M('"error" event was occurred'),U()};Q.addEventListener("canplay",X,{once:!0}),K.push(()=>{Q.removeEventListener("canplay",X)}),Q.addEventListener("error",O,{once:!0}),K.push(()=>{Q.removeEventListener("error",O)}),K.push((L)=>{n({logLevel:q,message:`Unblocking ${Q.src} from buffer. Reason: ${L}`,tag:"buffer",mountTime:w}),Y()})},U=()=>{if(Q.readyState<Q.HAVE_FUTURE_DATA){if(T(`readyState is ${Q.readyState}, which is less than HAVE_FUTURE_DATA`),!navigator.userAgent.includes("Firefox/")){n({logLevel:q,message:`Calling .load() on ${z} because readyState is ${Q.readyState} and it is not Firefox. ${Q.playbackRate}`,tag:"load",mountTime:w});let W=Q.playbackRate;Q.load(),Q.playbackRate=W}}else{let W=()=>{T('"waiting" event was fired')};Q.addEventListener("waiting",W),K.push(()=>{Q.removeEventListener("waiting",W)})}};return U(),()=>{M("element was unmounted or prop changed")}},[B,z,b,j,k,q,h,w]),G},MT=({mediaRef:b,mediaType:h,lastSeek:j,onVariableFpsVideoDetected:k})=>{let q=KT(null);return JT(()=>{let{current:w}=b;if(w)q.current={time:w.currentTime,lastUpdate:performance.now()};else{q.current=null;return}if(h!=="video"){q.current=null;return}let z=w;if(!z.requestVideoFrameCallback)return;let B=()=>{return},G=()=>{if(!z)return;let J=z.requestVideoFrameCallback((K,Q)=>{if(q.current!==null){let M=Math.abs(q.current.time-Q.mediaTime),T=Math.abs(j.current===null?1/0:Q.mediaTime-j.current);if(M>0.5&&T>0.5&&Q.mediaTime>q.current.time)k()}q.current={time:Q.mediaTime,lastUpdate:performance.now()},G()});B=()=>{z.cancelVideoFrameCallback(J),B=()=>{return}}};return G(),()=>{B()}},[j,b,h,k]),q},_B=({frame:b,playbackRate:h,startFrom:j})=>{return Sh(b,[-1,j,j+1],[-1,j,j+h])},lB=({fps:b,frame:h,playbackRate:j,startFrom:k})=>{let q=_B({frame:h,playbackRate:j,startFrom:k}),w=1000/b;return q*w/1000},Fw={},QT=(b,h)=>{if(b===null)return;if(b.seekable.length===0)return;if(b.seekable.length>1)return;if(Fw[b.src])return;let j={start:b.seekable.start(0),end:b.seekable.end(0)};if(j.start===0&&j.end===0){let k=[`The media ${b.src} cannot be seeked. This could be one of few reasons:`,"1) The media resource was replaced while the video is playing but it was not loaded yet.","2) The media does not support seeking.","3) The media was loaded with security headers prventing it from being included.","Please see https://remotion.dev/docs/non-seekable-media for assistance."].join(`
|
|
18
|
-
`);if(h==="console-error")console.error(k);else if(h==="console-warning")console.warn(`The media ${b.src} does not support seeking. The video will render fine, but may not play correctly in the Remotion Studio and in the <Player>. See https://remotion.dev/docs/non-seekable-media for an explanation.`);else throw Error(k);Fw[b.src]=!0}},mB=({mediaRef:b,src:h,mediaType:j,playbackRate:k,preservePitch:q=!0,onlyWarnForMediaSeekingError:w,acceptableTimeshift:z,pauseWhenBuffering:B,isPremounting:G,isPostmounting:J,onAutoPlayError:K})=>{let{playbackRate:Q}=tk(),M=qb(),T=Hb(),[U]=Cz(),W=mQ(Mh),{fps:Y}=wb(),X=Vb(),O=Mk(null),L=Mk(null),$=Xb(),Z=Hh();if(!W)throw Error("useMediaPlayback must be used inside a <BufferingContext>");let N=Mk({}),R=lQ(()=>{if(!h)return;if(N.current[h])return;p.verbose({logLevel:$,tag:null},`Detected ${h} as a variable FPS video. Disabling buffering while seeking.`),N.current[h]=!0},[$,h]),F=MT({mediaRef:b,mediaType:j,lastSeek:L,onVariableFpsVideoDetected:R}),g=wT(b),v=lB({frame:M,playbackRate:k,startFrom:-X,fps:Y}),y=GT({element:b,shouldBuffer:B,isPremounting:G,isPostmounting:J,logLevel:$,mountTime:Z,src:h??null}),{bufferUntilFirstFrame:x,isBuffering:D}=kT({mediaRef:b,mediaType:j,onVariableFpsVideoDetected:R,pauseWhenBuffering:B,logLevel:$,mountTime:Z}),C=k*Q,c=(()=>{if(b.current?.duration)return Math.min(b.current.duration,z??0.65);return z??0.65})(),I=AB(W);Dw(()=>{if(b.current?.paused)return;if(!U){n({logLevel:$,tag:"pause",message:`Pausing ${b.current?.src} because ${G?"media is premounting":J?"media is postmounting":"Player is not playing"}`,mountTime:Z}),b.current?.pause();return}let E=y||D();if(W.buffering.current&&!E)n({logLevel:$,tag:"pause",message:`Pausing ${b.current?.src} because player is buffering but media tag is not`,mountTime:Z}),b.current?.pause()},[D,y,W,I,G,$,b,j,Z,U,J]);let H=d();uQ(()=>{let E=Math.max(0,C);if(b.current&&b.current.playbackRate!==E)b.current.playbackRate=E;if(b.current&&b.current.preservesPitch!==q)b.current.preservesPitch=q},[b,C,q]),Dw(()=>{let E=j==="audio"?"<Html5Audio>":"<Html5Video>";if(!b.current)throw Error(`No ${j} ref found`);if(!h)throw Error(`No 'src' attribute was passed to the ${E} element.`);let{duration:P}=b.current,S=!Number.isNaN(P)&&Number.isFinite(P)?Math.min(P,v):v,V=g.current.time,_=F.current?.time??null,l=N.current[h],u=Math.abs(S-V),f=_?Math.abs(S-_):null,s=F.current?.lastUpdate&&F.current.time>g.current.lastUpdate?f:u,i=f&&!l?s:u;if(i>c&&O.current!==S){if(L.current=Gj({mediaRef:b.current,time:S,logLevel:$,why:`because time shift is too big. shouldBeTime = ${S}, isTime = ${V}, requestVideoCallbackTime = ${_}, timeShift = ${i}${l?", isVariableFpsVideo = true":""}, isPremounting = ${G}, isPostmounting = ${J}, pauseWhenBuffering = ${B}`,mountTime:Z}),O.current=L.current,U){if(C>0)x(S);if(b.current.paused)Wj({mediaRef:b,mediaType:j,onAutoPlayError:K,logLevel:$,mountTime:Z,reason:"player is playing but media tag is paused, and just seeked",isPlayer:H.isPlayer})}if(!w)QT(b.current,w?"console-warning":"console-error");return}let zb=U?0.15:0.01,Bb=Math.abs(b.current.currentTime-S)>zb,Gb=y||D(),t=W.buffering.current&&!Gb;if(!U||t){if(Bb)L.current=Gj({mediaRef:b.current,time:S,logLevel:$,why:`not playing or something else is buffering. time offset is over seek threshold (${zb})`,mountTime:Z});return}if(!U||W.buffering.current)return;let jb=b.current.paused&&!b.current.ended;if(jb||T===0){let $b=jb?"media tag is paused":"absolute frame is 0";if(Bb)L.current=Gj({mediaRef:b.current,time:S,logLevel:$,why:`is over timeshift threshold (threshold = ${zb}) and ${$b}`,mountTime:Z});if(Wj({mediaRef:b,mediaType:j,onAutoPlayError:K,logLevel:$,mountTime:Z,reason:`player is playing and ${$b}`,isPlayer:H.isPlayer}),!l&&C>0)x(S)}},[T,c,x,W.buffering,F,$,v,D,y,b,j,w,C,U,h,K,G,J,B,Z,g,H.isPlayer])},uB=({mediaRef:b,id:h,mediaType:j,onAutoPlayError:k,isPremounting:q,isPostmounting:w})=>{let{audioAndVideoTags:z,imperativePlaying:B}=Eb(),G=Xb(),J=Hh(),K=d();TT(()=>{let Q={id:h,play:(M)=>{if(!B.current)return;if(q||w)return;return Wj({mediaRef:b,mediaType:j,onAutoPlayError:k,logLevel:G,mountTime:J,reason:M,isPlayer:K.isPlayer})}};return z.current.push(Q),()=>{z.current=z.current.filter((M)=>M.id!==h)}},[z,h,b,j,k,B,q,w,G,J,K.isPlayer])},Uq=dB({playerMuted:!1,mediaVolume:1}),Wq=dB({setPlayerMuted:()=>{throw Error("default")},setMediaVolume:()=>{throw Error("default")}}),Xq=()=>{let{mediaVolume:b}=Yj(Uq),{setMediaVolume:h}=Yj(Wq);return sB(()=>{return[b,h]},[b,h])},Yq=()=>{let{playerMuted:b}=Yj(Uq),{setPlayerMuted:h}=Yj(Wq);return sB(()=>{return[b,h]},[b,h])},Qh=(b)=>{if(b>=100)throw Error(`Volume was set to ${b}, but regular volume is 1, not 100. Did you forget to divide by 100? Set a volume of less than 100 to dismiss this error.`)},WT=(b,h)=>{let[j]=$w(b.shouldPreMountAudioTags);if(b.shouldPreMountAudioTags!==j)throw Error("Cannot change the behavior for pre-mounting audio tags dynamically.");let k=Xb(),{volume:q,muted:w,playbackRate:z,preservePitch:B,shouldPreMountAudioTags:G,src:J,onDuration:K,acceptableTimeShiftInSeconds:Q,_remotionInternalNeedsDurationCalculation:M,_remotionInternalNativeLoopPassed:T,_remotionInternalStack:U,allowAmplificationDuringRender:W,name:Y,pauseWhenBuffering:X,showInTimeline:O,loopVolumeCurveBehavior:L,stack:$,crossOrigin:Z,delayRenderRetries:N,delayRenderTimeoutInMilliseconds:R,toneFrequency:F,useWebAudioApi:g,onError:v,onNativeError:y,audioStreamIndex:x,...D}=b;if(!1)throw Error("typecheck error");let[c]=Xq(),[I]=Yq(),H=Kh(L??"repeat");if(!J)throw TypeError("No 'src' was passed to <Html5Audio>.");let E=_b(J),P=TQ(a),[S]=$w(()=>String(Math.random())),V=lb({frame:H,volume:q,mediaVolume:c});Qh(V);let _=Mq({crossOrigin:Z,requestsVideoFrame:!1,isClientSideRendering:!1}),l=Zw(()=>{return{muted:w||I||V<=0,src:E,loop:T,crossOrigin:_,...D}},[T,I,w,D,E,V,_]),u=Zw(()=>`audio-${qh(J??"")}-${P?.relativeFrom}-${P?.cumulatedFrom}-${P?.durationInFrames}-muted:${b.muted}-loop:${b.loop}`,[J,P?.relativeFrom,P?.cumulatedFrom,P?.durationInFrames,b.muted,b.loop]),{el:f,mediaElementSourceNode:s,cleanupOnMediaTagUnmount:i}=EQ({aud:l,audioId:u,premounting:Boolean(P?.premounting),postmounting:Boolean(P?.postmounting)}),zb=MQ(()=>{return U??null},[U]);Tq({volume:q,mediaVolume:c,src:J,mediaType:"audio",playbackRate:z??1,displayName:Y??null,id:S,getStack:zb,showInTimeline:O,premountDisplay:P?.premountDisplay??null,postmountDisplay:P?.postmountDisplay??null,loopDisplay:void 0,documentationLink:"https://www.remotion.dev/docs/html5-audio",refForOutline:null}),mB({mediaRef:f,src:J,mediaType:"audio",playbackRate:z??1,preservePitch:B,onlyWarnForMediaSeekingError:!1,acceptableTimeshift:Q??null,isPremounting:Boolean(P?.premounting),isPostmounting:Boolean(P?.postmounting),pauseWhenBuffering:X,onAutoPlayError:null}),uB({id:S,isPostmounting:Boolean(P?.postmounting),isPremounting:Boolean(P?.premounting),mediaRef:f,mediaType:"audio",onAutoPlayError:null}),CB({logLevel:k,mediaRef:f,source:s,volume:V,shouldUseWebAudioApi:g??!1}),(Yw.useInsertionEffect??Yw.useLayoutEffect)(()=>{return()=>{requestAnimationFrame(()=>{i()})}},[i]),WQ(h,()=>{return f.current},[f]);let Gb=XQ(K);if(Gb.current=K,UQ(()=>{let{current:t}=f;if(!t)return;if(t.duration){Gb.current?.(t.src,t.duration);return}let jb=()=>{Gb.current?.(t.src,t.duration)};return t.addEventListener("loadedmetadata",jb),()=>{t.removeEventListener("loadedmetadata",jb)}},[f,J]),j)return null;return UT("audio",{ref:f,preload:"metadata",crossOrigin:_,...l})},iB=QQ(WT),RT=(b,h)=>{let j=NT(null),{volume:k,playbackRate:q,allowAmplificationDuringRender:w,onDuration:z,toneFrequency:B,_remotionInternalNeedsDurationCalculation:G,_remotionInternalNativeLoopPassed:J,acceptableTimeShiftInSeconds:K,name:Q,onNativeError:M,delayRenderRetries:T,delayRenderTimeoutInMilliseconds:U,loopVolumeCurveBehavior:W,pauseWhenBuffering:Y,audioStreamIndex:X,preservePitch:O,...L}=b,$=Hb(),Z=Kh(W??"repeat"),N=qb(),R=vw(a),{registerRenderAsset:F,unregisterRenderAsset:g}=vw(Pb),{delayRender:v,continueRender:y}=Kb(),x=LT(()=>`audio-${qh(b.src??"")}-${R?.relativeFrom}-${R?.cumulatedFrom}-${R?.durationInFrames}`,[b.src,R?.relativeFrom,R?.cumulatedFrom,R?.durationInFrames]),D=lb({volume:k,frame:Z,mediaVolume:1});Qh(D),ZT(h,()=>{return j.current},[]),YT(()=>{if(!b.src)throw Error("No src passed");if(!window.remotion_audioEnabled)return;if(b.muted)return;if(D<=0)return;return F({type:"audio",src:Wb(b.src),id:x,frame:$,volume:D,mediaFrame:N,playbackRate:b.playbackRate??1,toneFrequency:B??1,audioStartFrame:Math.max(0,-(R?.cumulatedNegativeFrom??0)),audioStreamIndex:X??0}),()=>g(x)},[b.muted,b.src,F,$,x,g,D,Z,N,q,b.playbackRate,B,R?.cumulatedNegativeFrom,X]);let{src:C}=b,c=h||G;if($T(()=>{if(window.process?.env?.NODE_ENV==="test")return;if(!c)return;let I=v("Loading <Html5Audio> duration with src="+C,{retries:T??void 0,timeoutInMilliseconds:U??void 0}),{current:H}=j,E=()=>{if(H?.duration)z(H.src,H.duration);y(I)};if(H?.duration)z(H.src,H.duration),y(I);else H?.addEventListener("loadedmetadata",E,{once:!0});return()=>{H?.removeEventListener("loadedmetadata",E),y(I)}},[C,z,c,T,U,y,v]),!c)return null;return OT("audio",{ref:j,...L,onError:M})},gT=XT(RT),yT=(b,h)=>{let j=Tw(Aj),k=b,{startFrom:q,endAt:w,trimBefore:z,trimAfter:B,name:G,stack:J,pauseWhenBuffering:K,showInTimeline:Q,onError:M,freeze:T,...U}=k,{loop:W,freeze:Y,...X}=k,{fps:O}=wb(),L=d();if(L.isClientSideRendering)throw Error("<Html5Audio> is not supported in @remotion/web-renderer. Use <Audio> from @remotion/media instead. See https://remotion.dev/docs/client-side-rendering/limitations");if(typeof T<"u")throw TypeError('The "freeze" prop is not supported on <Html5Audio />. Use <Sequence freeze={...}> to freeze media playback.');let{durations:$,setDurations:Z}=Tw(Kq);if(typeof b.src!=="string")throw TypeError(`The \`<Html5Audio>\` tag requires a string for \`src\`, but got ${JSON.stringify(b.src)} instead.`);let N=_b(b.src),R=Qw((x)=>{console.log(x.currentTarget.error);let D=`Could not play audio with src ${N}: ${x.currentTarget.error}. See https://remotion.dev/docs/media-playback-error for help.`;if(W){if(M){M(Error(D));return}bh(Error(D))}else M?.(Error(D)),console.warn(D)},[W,M,N]),F=Qw((x,D)=>{Z({type:"got-duration",durationInSeconds:D,src:x})},[Z]),g=$[Wb(N)]??$[Wb(b.src)];Ij({startFrom:q,endAt:w,trimBefore:z,trimAfter:B});let{trimBeforeValue:v,trimAfterValue:y}=Vj({startFrom:q,endAt:w,trimBefore:z,trimAfter:B});if(W&&g!==void 0){if(!Number.isFinite(g))return Cb(eb,{...X,ref:h,_remotionInternalNativeLoopPassed:!0});let x=g*O;return Cb(_h,{layout:"none",durationInFrames:Sj({trimAfter:y,mediaDurationInFrames:x,playbackRate:b.playbackRate??1,trimBefore:v}),children:Cb(eb,{...X,ref:h,_remotionInternalNativeLoopPassed:!0})})}if(typeof v<"u"||typeof y<"u")return Cb(hb,{layout:"none",from:0-(v??0),showInTimeline:!1,durationInFrames:y,name:G,children:Cb(eb,{_remotionInternalNeedsDurationCalculation:Boolean(W),pauseWhenBuffering:K??!1,...U,ref:h})});if(fj({playbackRate:b.playbackRate,preservePitch:b.preservePitch,volume:b.volume},"Html5Audio"),L.isRendering)return Cb(gT,{onDuration:F,...b,ref:h,onNativeError:R,_remotionInternalNeedsDurationCalculation:Boolean(W)});return Cb(iB,{_remotionInternalNativeLoopPassed:b._remotionInternalNativeLoopPassed??!1,_remotionInternalStack:J??null,shouldPreMountAudioTags:j!==null&&j.numberOfAudioTags>0,...b,ref:h,onNativeError:R,onDuration:F,pauseWhenBuffering:K??!1,_remotionInternalNeedsDurationCalculation:Boolean(W),showInTimeline:Q??!0})},eb=iM(yT);bb(eb);var DT=eb,CT=(b)=>{if(b===void 0)return 1;if(typeof b!=="number"||!Number.isFinite(b)||b<=0)throw Error(`<Solid>: \`pixelDensity\` must be a positive finite number. Received: ${String(b)}.`);return b},ST={...yb,color:{type:"color",default:"transparent",description:"Color"},width:{type:"number",min:1,step:1,default:1920,description:"Width",hiddenFromList:!1},height:{type:"number",min:1,step:1,default:1080,description:"Height",hiddenFromList:!1},pixelDensity:{type:"number",min:1,max:3,step:0.1,default:1,description:"Pixel density",hiddenFromList:!1},...Yb},cT=({color:b,width:h,height:j,effects:k=[],className:q,style:w,pixelDensity:z,overrideId:B,reference:G})=>{let{delayRender:J,continueRender:K,cancelRender:Q}=Kb(),M=CT(z),T=Math.ceil(h*M),U=Math.ceil(j*M),[W,Y]=PT(null),X=Ih({effects:k,overrideId:B??null}),O=xw(()=>{if(typeof document>"u")return null;let N=document.createElement("canvas");return N.width=1,N.height=1,N},[]),L=Ah(),$=vT((N)=>{if(Y(N),typeof G==="function")G(N);else if(G)G.current=N},[G]);xT(()=>{if(!W||!O)return;let N=J("Solid effect chain");if(!L)return K(N),()=>{K(N)};let R=O.getContext("2d",{colorSpace:"srgb"});if(!R){Q(Error("Failed to acquire 2D context for <Solid> source"));return}if(R.clearRect(0,0,1,1),b!==void 0)R.fillStyle=b,R.fillRect(0,0,1,1);return Vh({state:L.get(T,U),source:O,effects:X,output:W,width:T,height:U}).then((F)=>{if(F)K(N)}).catch((F)=>{Q(F)}),()=>{K(N)}},[b,W,O,L,T,U,J,K,Q,X]);let Z=xw(()=>{return{width:h,height:j,...w??{}}},[j,w,h]);return Ck("canvas",{ref:$,width:T,height:U,className:q,style:Z})},fT=FT(({effects:b=[],controls:h,color:j,height:k,width:q,className:w,durationInFrames:z,style:B,name:G,from:J,trimBefore:K,freeze:Q,hidden:M,showInTimeline:T,pixelDensity:U,...W},Y)=>{let X=fh(b),O=HT(null);return ET(Y,()=>{return O.current},[]),Ck(hb,{layout:"none",from:J,trimBefore:K,freeze:Q,hidden:M,showInTimeline:T,controls:h,_remotionInternalEffects:X,durationInFrames:z,name:G??"<Solid>",outlineRef:O,_remotionInternalDocumentationLink:"https://www.remotion.dev/docs/solid",...W,children:Ck(cT,{reference:O,overrideId:h?.overrideId??null,color:j,height:k,width:q,className:w,style:B,effects:b,pixelDensity:U})})}),Zq=Zb({Component:fT,componentName:"<Solid>",componentIdentity:"dev.remotion.remotion.Solid",schema:ST,supportsEffects:!0});Zq.displayName="Solid";bb(Zq);var rh=null,$q=()=>{if(rh!==null)return rh;if(typeof document>"u")return!1;let b=document.createElement("canvas");return rh=typeof b.getContext("2d")?.drawElementImage==="function"&&typeof b.requestPaint==="function"&&typeof b.captureElementImage==="function"&&"transferControlToOffscreen"in HTMLCanvasElement.prototype,rh},aB="HTML in Canvas is not supported. Two common causes: Chrome is older than version 148 (update Chrome), or the HTML-in-Canvas flag is disabled at chrome://flags/#canvas-draw-element (enable it and restart Chrome).";function AT(b,h){if(typeof b!=="number"||typeof h!=="number")throw Error(`HtmlInCanvas: \`width\` and \`height\` must be numbers. Received width=${String(b)}, height=${String(h)}.`);if(!Number.isInteger(b)||b<=0)throw Error(`HtmlInCanvas: \`width\` must be a positive integer. Received: ${String(b)}.`);if(!Number.isInteger(h)||h<=0)throw Error(`HtmlInCanvas: \`height\` must be a positive integer. Received: ${String(h)}.`)}function _T(b){if(b===void 0)return 1;if(typeof b!=="number"||!Number.isFinite(b)||b<=0)throw Error(`HtmlInCanvas: \`pixelDensity\` must be a positive finite number. Received: ${String(b)}.`);return b}var bj=(b)=>{return b instanceof DOMException&&b.name==="InvalidStateError"},Hw="HtmlInCanvas: Expected the element to be inside the viewport during rendering, but Chrome had no cached paint record for it.",Pw=({offscreen:b,width:h,height:j})=>{if(b.width!==h)b.width=h;if(b.height!==j)b.height=j},lT=({canvas:b,element:h,elementImage:j})=>{let k=b.getContext("2d");if(!k)throw Error("Failed to acquire 2D context for <HtmlInCanvas> canvas");k.reset();let q=k.drawElementImage(j,0,0);h.style.transform=q.toString()},Cw=IT(!1),nB=pB(({width:b,height:h,effects:j,children:k,onPaint:q,onInit:w,pixelDensity:z,controls:B,style:G},J)=>{let K=VT(Cw);AT(b,h);let Q=_T(z),M=Math.ceil(b*Q),T=Math.ceil(h*Q),{continueRender:U,cancelRender:W}=Kb(),{isRendering:Y}=d();if(!$q())W(Error(aB));let X=Tb(null),O=Tb(null),L=Tb(null),$=`${b}x${h}@${Q}`,Z=Sk((E)=>{if(X.current=E,typeof J==="function")J(E);else if(J)J.current=E},[J]),N=Ah(),R=Ih({effects:j,overrideId:B?.overrideId??null}),F=Tb(R);F.current=R;let g=Tb(q);g.current=q;let v=Tb(w);v.current=w;let y=Tb(!1),x=Tb(null),D=Tb(!1),C=Sk(async()=>{let E=L.current;if(!E)throw Error("Canvas or scene element not found");let P=O.current;if(!P)throw Error("HtmlInCanvas: offscreen canvas not ready (transferControlToOffscreen failed or canvas is remounting)");Pw({offscreen:P,width:M,height:T});try{let S=X.current;if(!S)throw Error("Canvas not found");let V=Rk("onPaint");if(!y.current){let u=null;try{u=S.captureElementImage(E)}catch(f){if(bj(f)&&!Y);else if(bj(f))throw Error(Hw);else throw f}if(u){y.current=!0;let f=v.current;if(f){let s=await f({canvas:P,element:E,elementImage:u,pixelDensity:Q});if(typeof s!=="function")throw Error("HtmlInCanvas: when `onInit` is provided, it must return a cleanup function, or a Promise that resolves to one.");if(D.current)s();else x.current=s}}}let _=g.current??lT,l;try{l=S.captureElementImage(E)}catch(u){if(bj(u)&&!Y){U(V);return}if(bj(u))throw Error(Hw);throw u}await _({canvas:P,element:E,elementImage:l,pixelDensity:Q}),await Vh({state:N.get(M,T),source:P,effects:F.current,output:P,width:M,height:T}),U(V)}catch(S){W(S)}},[T,M,N,U,W,Q,Y]);Tk(()=>{let E=X.current;if(!E)throw Error("Canvas not found");E.layoutSubtree=!0;let P=E.transferControlToOffscreen();return O.current=P,Pw({offscreen:P,width:M,height:T}),y.current=!1,D.current=!1,E.addEventListener("paint",C),()=>{E.removeEventListener("paint",C),O.current=null,y.current=!1,D.current=!0,x.current?.(),x.current=null}},[C,W,M,T]);let c=Tb(!1);Tk(()=>{if(!c.current){c.current=!0;return}let E=X.current;if(!E)return;E.requestPaint?.()},[q,R]),Tk(()=>{let E=X.current;if(!E)return;let P=Rk("waiting for first paint after canvas resize");return E.addEventListener("paint",()=>{U(P)},{once:!0}),()=>{U(P)}},[b,h,U,$]);let I=Ew(()=>{return{width:b,height:h}},[b,h]),H=Ew(()=>{return{width:b,height:h,...G??{}}},[h,G,b]);if(K)throw Error("<HtmlInCanvas> effects cannot be nested together. Chrome will only display the outer effect. Consider merging the effects into one if you can.");return Rh(Cw.Provider,{value:!0,children:Rh("canvas",{ref:Z,width:M,height:T,style:H,children:Rh("div",{ref:L,style:I,children:k})},$)})});nB.displayName="HtmlInCanvasContent";var tB=pB(({width:b,height:h,effects:j=[],children:k,onPaint:q,onInit:w,pixelDensity:z,controls:B,style:G,durationInFrames:J,name:K,...Q},M)=>{let{durationInFrames:T}=wb(),U=J??T,W=fh(j),Y=Tb(null),X=Sk((O)=>{if(Y.current=O,typeof M==="function")M(O);else if(M)M.current=O},[M]);return Rh(hb,{durationInFrames:U,name:K??"<HtmlInCanvas>",_remotionInternalDocumentationLink:"https://www.remotion.dev/docs/remotion/html-in-canvas",controls:B,_remotionInternalEffects:W,outlineRef:Y,layout:"none",...Q,children:Rh(nB,{ref:X,width:b,height:h,effects:j,onPaint:q,onInit:w,pixelDensity:z,controls:B,style:G,children:k})})});tB.displayName="HtmlInCanvas";var mT={...yb,pixelDensity:{type:"number",min:1,max:3,step:0.1,default:1,description:"Pixel density",hiddenFromList:!1},...Yb},uT=Zb({Component:tB,componentName:"<HtmlInCanvas>",componentIdentity:"dev.remotion.remotion.HtmlInCanvas",schema:mT,supportsEffects:!0}),Lq=Object.assign(uT,{isSupported:$q});Lq.displayName="HtmlInCanvas";bb(Lq);function gb(b){if(b.startsWith("data:")&&b.length>100)return b.slice(0,60)+"...["+b.length+" chars total]";return b}var nT={...yb,fit:{type:"enum",default:"fill",description:"Fit",variants:{fill:{},contain:{},cover:{}}},...Yb},tT=()=>{if(typeof DOMException<"u")return new DOMException("Image loading was aborted","AbortError");let b=Error("Image loading was aborted");return b.name="AbortError",b},oT=({src:b,signal:h})=>{return new Promise((j,k)=>{let q=new Image,w=!1;function z(){q.onload=null,q.onerror=null}function B(J){if(w)return;w=!0,z(),J()}function G(){B(()=>k(tT()))}if(q.onload=()=>{Promise.resolve(q.decode?.()).catch(()=>{return}).then(()=>{let J=q.naturalWidth||q.width,K=q.naturalHeight||q.height;if(J<=0||K<=0){B(()=>k(Error(`Could not determine dimensions for <CanvasImage> with src="${gb(b)}"`)));return}B(()=>j({element:q,width:J,height:K}))})},q.onerror=()=>{B(()=>k(Error(`Could not load <CanvasImage> with src="${gb(b)}"`)))},h.addEventListener("abort",G,{once:!0}),h.aborted){G();return}q.crossOrigin="anonymous",q.src=b})};function eT(b){return 1000*2**(b-1)}var eB=oB(({src:b,width:h,height:j,fit:k="fill",effects:q,controls:w,onError:z,className:B,style:G,id:J,pauseWhenLoading:K,maxRetries:Q=2,delayRenderRetries:M,delayRenderTimeoutInMilliseconds:T,refForOutline:U,...W},Y)=>{let{delayRender:X,continueRender:O,cancelRender:L}=Kb(),{delayPlayback:$}=lh(),[Z,N]=cw(null),[R,F]=cw(null),g=_b(b),v=Ah(),y=Ih({effects:q,overrideId:w?.overrideId??null}),x=sT(a),D=pT(()=>{if(typeof document>"u")return null;return document.createElement("canvas")},[]),C=dT((c)=>{if(N(c),U)U.current=c;if(typeof Y==="function")Y(c);else if(Y)Y.current=c},[Y,U]);return Sw(()=>{let c=Boolean(x?.premounting),I=Boolean(x?.postmounting),H=X(`Rendering <CanvasImage> with src="${gb(g)}"`,{retries:M??void 0,timeoutInMilliseconds:T??void 0}),E=K&&!c&&!I?$().unblock:()=>{return},P=new AbortController,S=!1,V=!1,_=0,l=null;F(null);let u=()=>{if(V)return;V=!0,E(),O(H)},f=()=>{oT({src:g,signal:P.signal}).then((s)=>{if(S)return;F(s)}).then(()=>{if(!S)u()}).catch((s)=>{if(s.name==="AbortError"){u();return}if(_++,_<=Q){let i=eT(_);console.warn(`Could not load <CanvasImage> with src="${gb(g)}", retrying in ${i}ms`),l=setTimeout(()=>{if(!S)f()},i)}else if(z)z(s),u();else L(s)})};return f(),()=>{if(S=!0,l!==null)clearTimeout(l);P.abort(),u()}},[g,L,O,$,X,M,T,Q,z,K,x?.postmounting,x?.premounting]),Sw(()=>{if(!R||!Z||!D)return;let c=X(`Applying effects to <CanvasImage> with src="${gb(g)}"`),I=!1,H=!1,E=()=>{if(H)return;H=!0,O(c)},P=h??R.width,S=j??R.height,V=D.getContext("2d",{colorSpace:"srgb"});if(!V)return L(Error("Could not get 2D context for <CanvasImage> source canvas")),E(),()=>{E()};return D.width=P,D.height=S,Z.width=P,Z.height=S,V.clearRect(0,0,P,S),V.drawImage(R.element,...QB(k,{width:R.width,height:R.height},{width:P,height:S})),Vh({state:v.get(P,S),source:D,effects:y,output:Z,width:P,height:S}).then((_)=>{if(_&&!I)E()}).catch((_)=>{if(I)return;if(z)z(_),E();else L(_)}),()=>{I=!0,E()}},[g,L,v,O,X,k,j,R,y,z,Z,D,h]),ck("canvas",{...W,ref:C,width:h,height:j,className:B,style:G,id:J})});eB.displayName="CanvasImageContent";var rT=oB(({src:b,width:h,height:j,fit:k,effects:q=[],className:w,style:z,id:B,onError:G,pauseWhenLoading:J,maxRetries:K,delayRenderRetries:Q,delayRenderTimeoutInMilliseconds:M,durationInFrames:T,from:U,trimBefore:W,freeze:Y,hidden:X,name:O,showInTimeline:L,stack:$,controls:Z,_remotionInternalDocumentationLink:N,outlineRef:R,...F},g)=>{if(!b)throw Error('No "src" prop was passed to <CanvasImage>.');let v=fh(q),y=aT(null);return iT(g,()=>{return y.current},[]),ck(hb,{layout:"none",from:U??0,trimBefore:W,durationInFrames:T??1/0,freeze:Y,hidden:X,showInTimeline:L??!0,name:O??"<CanvasImage>",_remotionInternalDocumentationLink:N??"https://www.remotion.dev/docs/canvasimage",controls:Z,_remotionInternalEffects:v,_remotionInternalIsMedia:{type:"image",src:b},_remotionInternalStack:$,outlineRef:R??y,children:ck(eB,{ref:y,src:b,width:h,height:j,fit:k,effects:q,controls:Z,className:w,style:z,id:B,onError:G,pauseWhenLoading:J,maxRetries:K,delayRenderRetries:Q,delayRenderTimeoutInMilliseconds:M,refForOutline:R??null,...F})})}),lj=Zb({Component:rT,componentName:"<CanvasImage>",componentIdentity:"dev.remotion.remotion.CanvasImage",schema:nT,supportsEffects:!0});lj.displayName="CanvasImage";bb(lj);var fw=!1,Iw=!1,bU=()=>{if(fw)return;fw=!0,console.warn("Called getStaticFiles() on the server. The API is only available in the browser. An empty array was returned.")},hU=()=>{if(Iw)return;Iw=!0,console.warn("Called getStaticFiles() while using the Remotion Player. The API is only available while using the Remotion Studio. An empty array was returned.")},jU=()=>{if(kq)throw Error("getStaticFiles() has moved into the `@remotion/studio` package. Update your imports.");if(typeof document>"u")return bU(),[];if(window.remotion_isPlayer)return hU(),[];return window.remotion_staticFiles},zU=({onLoad:b,onError:h,delayRenderRetries:j,delayRenderTimeoutInMilliseconds:k,...q},w)=>{let{delayRender:z,continueRender:B}=Kb(),[G]=qU(()=>z(`Loading <IFrame> with source ${q.src}`,{retries:j??void 0,timeoutInMilliseconds:k??void 0})),J=Vw((Q)=>{B(G),b?.(Q)},[G,b,B]),K=Vw((Q)=>{if(B(G),h)h(Q);else console.error("Error loading iframe:",Q,"Handle the event using the onError() prop to make this message disappear.")},[G,h,B]);return wU("iframe",{referrerPolicy:"strict-origin-when-cross-origin",...q,ref:w,onError:K,onLoad:J})},BU=kU(zU);function KU(b){return 1000*2**(b-1)}var MU=({onError:b,maxRetries:h=2,src:j,pauseWhenLoading:k,delayRenderRetries:q,delayRenderTimeoutInMilliseconds:w,onImageFrame:z,crossOrigin:B,decoding:G,ref:J,refForOutline:K,...Q})=>{let M=fk(null),T=fk({}),{delayPlayback:U}=lh(),W=GU(a),Y=!0,X=Uk((y)=>{if(M.current=y,K.current=y,typeof J==="function")J(y);else if(J)J.current=y},[J,K]),O=_b(j),L=Uk((y)=>{if(!M.current)return;let x=M.current.src;setTimeout(()=>{if(!M.current)return;let D=M.current?.src;if(D!==x)return;M.current.removeAttribute("src"),M.current.setAttribute("src",D)},y)},[]),{delayRender:$,continueRender:Z,cancelRender:N}=Kb(),R=Uk((y)=>{if(!T.current)return;if(T.current[M.current?.src]=(T.current[M.current?.src]??0)+1,b&&(T.current[M.current?.src]??0)>h){b(y);return}if((T.current[M.current?.src]??0)<=h){let x=KU(T.current[M.current?.src]??0);console.warn(`Could not load image with source ${gb(M.current?.src)}, retrying again in ${x}ms`),L(x);return}try{N("Error loading image with src: "+gb(M.current?.src))}catch{}},[N,h,b,L]);if(typeof window<"u"){let y=Boolean(W?.premounting),x=Boolean(W?.postmounting);JU(()=>{if(window.process?.env?.NODE_ENV==="test"){if(M.current)M.current.src=O;return}let{current:D}=M;if(!D)return;let C=$("Loading <Img> with src="+gb(O),{retries:q??void 0,timeoutInMilliseconds:w??void 0}),c=k&&!y&&!x?U().unblock:()=>{return},I=!1,H=()=>{if(I){Z(C);return}if((T.current[M.current?.src]??0)>0)delete T.current[M.current?.src],console.info(`Retry successful - ${gb(M.current?.src)} is now loaded`);if(D)z?.(D);c(),Z(C)};if(!M.current){H();return}return D.src=O,D.decode().then(H).catch((E)=>{if(console.warn(E),D.complete&&D.naturalWidth>0&&D.naturalHeight>0)H();else D.addEventListener("load",H)}),()=>{I=!0,D.removeEventListener("load",H),c(),Z(C)}},[O,U,q,w,k,y,x,z,Z,$])}let{isClientSideRendering:F,isRendering:g}=d(),v=Mq({crossOrigin:B,requestsVideoFrame:!1,isClientSideRendering:F});return yh("img",{...Q,ref:X,crossOrigin:v,onError:R,decoding:g?"sync":G})},QU=({hidden:b,name:h,stack:j,showInTimeline:k,src:q,from:w,trimBefore:z,durationInFrames:B,freeze:G,controls:J,outlineRef:K,...Q})=>{if(!q)throw Error('No "src" prop was passed to <Img>.');return yh(hb,{layout:"none",from:w??0,trimBefore:z,durationInFrames:B??1/0,freeze:G,_remotionInternalStack:j,_remotionInternalDocumentationLink:"https://www.remotion.dev/docs/img",_remotionInternalIsMedia:{type:"image",src:q},name:h??"<Img>",controls:J,showInTimeline:k??!0,hidden:b,outlineRef:K,children:yh(MU,{src:q,refForOutline:K,...Q})})},TU=lj,UU={...yb,...Yb},WU=new Set(["alt","crossOrigin","decoding","fetchPriority","loading","onError","onImageFrame","onLoad","sizes","srcSet","useMap"]),XU=(b)=>Object.keys(b).filter((h)=>b[h]!==void 0&&WU.has(h)),YU=(b)=>{return b.map((h)=>`"${h}"`).join(", ")},ZU=({props:b,ref:h,width:j,height:k})=>{if(typeof j==="string"||typeof k==="string")throw Error('The "width" and "height" props must be numbers on <Img> when effects are passed, because <Img> renders a <CanvasImage>. Use numeric props or CSS dimensions in "style".');let q=XU(b);if(h!==null&&h!==void 0)q.unshift("ref");if(q.length===0)return;throw Error(`The ${YU(q)} prop${q.length===1?"":"s"} cannot be used on <Img> when effects are passed, because <Img> renders a <canvas> instead of a native <img>. Remove ${q.length===1?"this prop":"these props"}.`)},$U=(b)=>{let h=b?.objectFit;if(h==="fill"||h==="contain"||h==="cover")return h;return},LU=({effects:b=[],ref:h,hidden:j,name:k,stack:q,showInTimeline:w,src:z,from:B,trimBefore:G,durationInFrames:J,freeze:K,controls:Q,width:M,height:T,className:U,style:W,id:Y,pauseWhenLoading:X,maxRetries:O,delayRenderRetries:L,delayRenderTimeoutInMilliseconds:$,...Z})=>{let N=fk(null);if(b.length===0)return yh(QU,{...Z,ref:h,hidden:j,name:k,stack:q,showInTimeline:w,src:z,from:B,trimBefore:G,durationInFrames:J,freeze:K,controls:Q,width:M,height:T,className:U,style:W,id:Y,pauseWhenLoading:X,maxRetries:O,delayRenderRetries:L,delayRenderTimeoutInMilliseconds:$,outlineRef:N});if(!z)throw Error('No "src" prop was passed to <Img>.');ZU({props:Z,ref:h,width:M,height:T});let R=typeof M==="number"?M:void 0,F=typeof T==="number"?T:void 0,g=Z,v=$U(W)??"fill";return yh(TU,{src:z,width:R,height:F,fit:v,effects:b,className:U,style:W,id:Y,pauseWhenLoading:X,maxRetries:O,delayRenderRetries:L,delayRenderTimeoutInMilliseconds:$,from:B,trimBefore:G,durationInFrames:J,freeze:K,hidden:j,name:k??"<Img>",showInTimeline:w,stack:q,_remotionInternalDocumentationLink:"https://www.remotion.dev/docs/img",controls:Q,outlineRef:N,...g})},Nq=Zb({Component:LU,componentName:"<Img>",componentIdentity:"dev.remotion.remotion.Img",schema:UU,supportsEffects:!0});bb(Nq);var DU={...yb,...Yb,...ek},FU=(b,h)=>{if(typeof b==="function")b(h);else if(b)b.current=h},A=(b,h)=>{let j=OU((q,w)=>{let{durationInFrames:z,from:B,trimBefore:G,freeze:J,hidden:K,name:Q,showInTimeline:M,stack:T,controls:U,...W}=q,Y=gU(null),X=RU((O)=>{Y.current=O,FU(w,O)},[w]);return yU(hb,{layout:"none",from:B??0,trimBefore:G,durationInFrames:z??1/0,freeze:J,hidden:K,name:Q??h,showInTimeline:M??!0,controls:U,_remotionInternalStack:T,_remotionInternalDocumentationLink:"https://www.remotion.dev/docs/interactive",outlineRef:Y,children:NU.createElement(b,{...W,ref:X})})});j.displayName=h;let k=Zb({Component:j,componentName:h,componentIdentity:`dev.remotion.remotion.${h.slice(1,-1)}`,schema:DU,supportsEffects:!1});return k.displayName=h,bb(k),k},vU={baseSchema:yb,transformSchema:Yb,textSchema:ek,premountSchema:Dj,sequenceSchema:hh,withSchema:Zb,A:A("a","<Interactive.A>"),Article:A("article","<Interactive.Article>"),Aside:A("aside","<Interactive.Aside>"),Button:A("button","<Interactive.Button>"),Circle:A("circle","<Interactive.Circle>"),Code:A("code","<Interactive.Code>"),Div:A("div","<Interactive.Div>"),Ellipse:A("ellipse","<Interactive.Ellipse>"),Em:A("em","<Interactive.Em>"),Footer:A("footer","<Interactive.Footer>"),G:A("g","<Interactive.G>"),H1:A("h1","<Interactive.H1>"),H2:A("h2","<Interactive.H2>"),H3:A("h3","<Interactive.H3>"),H4:A("h4","<Interactive.H4>"),H5:A("h5","<Interactive.H5>"),H6:A("h6","<Interactive.H6>"),Header:A("header","<Interactive.Header>"),Label:A("label","<Interactive.Label>"),Li:A("li","<Interactive.Li>"),Line:A("line","<Interactive.Line>"),Main:A("main","<Interactive.Main>"),Nav:A("nav","<Interactive.Nav>"),Ol:A("ol","<Interactive.Ol>"),P:A("p","<Interactive.P>"),Path:A("path","<Interactive.Path>"),Pre:A("pre","<Interactive.Pre>"),Rect:A("rect","<Interactive.Rect>"),Section:A("section","<Interactive.Section>"),Small:A("small","<Interactive.Small>"),Span:A("span","<Interactive.Span>"),Strong:A("strong","<Interactive.Strong>"),Svg:A("svg","<Interactive.Svg>"),Text:A("text","<Interactive.Text>"),Ul:A("ul","<Interactive.Ul>")},rB=EU.createRef(),CU=({children:b,onlyRenderComposition:h,currentCompositionMetadata:j,initialCompositions:k,initialCanvasContent:q})=>{let[w,z]=Wk([]),[B,G]=Wk(q),[J,K]=Wk(k),Q=PU(J),M=Zh((L)=>{K(($)=>{let Z=L($);return Q.current=Z,Z})},[]),T=Zh((L)=>{M(($)=>{if($.find((Z)=>Z.id===L.id))throw Error(`Multiple composition with id ${L.id} are registered.`);return[...$,L]})},[M]),U=Zh((L)=>{K(($)=>{return $.filter((Z)=>Z.id!==L)})},[]),W=Zh((L,$,Z,N)=>{z((R)=>{return[...R,{name:L,parent:$,nonce:Z,stack:N}]})},[]),Y=Zh((L,$)=>{z((Z)=>{return Z.filter((N)=>!(N.name===L&&N.parent===$))})},[]);HU(rB,()=>{return{getCompositions:()=>Q.current}},[]);let X=Aw(()=>{return{registerComposition:T,unregisterComposition:U,registerFolder:W,unregisterFolder:Y,setCanvasContent:G,onlyRenderComposition:h}},[T,W,U,Y,h]),O=Aw(()=>{return{compositions:J,folders:w,currentCompositionMetadata:j,canvasContent:B}},[J,w,j,B]);return _w(jh.Provider,{value:O,children:_w(vh.Provider,{value:X,children:b})})},bG={};kz(bG,{makeDefaultPreviewCSS:()=>cU,injectCSS:()=>SU,OBJECTFIT_CONTAIN_CLASS_NAME:()=>Dh});var hj={},SU=(b)=>{if(typeof document>"u")return()=>{};if(hj[b])return()=>{};let h=document.head||document.getElementsByTagName("head")[0],j=document.createElement("style");return j.appendChild(document.createTextNode(b)),h.prepend(j),hj[b]=j,()=>{let k=hj[b];if(k){if(k.parentNode)k.parentNode.removeChild(k);delete hj[b]}}},Dh="__remotion_objectfitcontain",cU=(b,h)=>{if(!b)return`
|
|
15
|
+
`}),Cq("svg",{width:Lz,height:Lz,viewBox:"-100 -100 400 400",style:qQ,children:Cq("path",{fill:"#555",stroke:"#555",strokeWidth:"100",strokeLinejoin:"round",d:"M 2 172 a 196 100 0 0 0 195 5 A 196 240 0 0 0 100 2.259 A 196 240 0 0 0 2 172 z"})}),Hz("p",{style:wQ,children:["Resolving ","<Suspense>","..."]})]})},Gb=null,Uw=1,Ck=[],Oz=()=>Uw,JQ=(b)=>{return Ck.push(b),()=>{Ck=Ck.filter((j)=>j!==b)}},KQ=(b)=>{if(Uw===b)return;Uw=b;for(let j of Ck)j()},Xw=()=>{if(!Gb){if(typeof document>"u")throw Error("Tried to call an API that only works in the browser from outside the browser");Gb=document.createElement("div"),Gb.style.position="absolute",Gb.style.top="0px",Gb.style.left="0px",Gb.style.right="0px",Gb.style.bottom="0px",Gb.style.width="100%",Gb.style.height="100%",Gb.style.display="flex",Gb.style.flexDirection="column";let b=document.createElement("div");b.style.position="fixed",b.style.top="-999999px",b.appendChild(Gb),document.body.appendChild(b)}return Gb},Yw=()=>{return"remotion_inputPropsOverride"+window.location.origin},MJ=()=>{if(typeof localStorage>"u")return null;let b=localStorage.getItem(Yw());if(!b)return null;return JSON.parse(b)},UQ=(b)=>{if(typeof localStorage>"u")return;if(b===null){localStorage.removeItem(Yw());return}localStorage.setItem(Yw(),JSON.stringify(b))},Cz=!1,XQ=()=>{if(Cz)return;Cz=!0,console.warn("Called `getInputProps()` on the server. This function is not available server-side and has returned an empty object."),console.warn("To hide this warning, don't call this function on the server:"),console.warn(" typeof window === 'undefined' ? {} : getInputProps()")},QJ=()=>{if(typeof window>"u")return XQ(),{};if(qb().isPlayer)throw Error("You cannot call `getInputProps()` from a <Player>. Instead, the props are available as React props from component that you passed as `component` prop.");let b=MJ();if(b)return b;if(typeof window>"u"||typeof window.remotion_inputProps>"u")throw Error("Cannot call `getInputProps()` - window.remotion_inputProps is not set. This API is only available if you are in the Studio, or while you are rendering server-side.");let j=window.remotion_inputProps;if(!j)return{};return JJ(j)},gw=YQ({props:{},updateProps:()=>{throw Error("Not implemented")}}),RQ=UJ.createRef(),XJ=({children:b})=>{let[j,k]=UJ.useState({}),q=ZQ(({defaultProps:z,id:G,newProps:J})=>{k((K)=>{return{...K,[G]:typeof J==="function"?J(K[G]??z):J}})},[]),w=$Q(()=>{return{props:j,updateProps:q}},[j,q]);return NQ(gw.Provider,{value:w,children:b})},YJ=TQ.createContext(null),p=()=>{let b=yQ(YJ),[j]=DQ(()=>qb());return b??j};function Vk(b,j,k){if(typeof b!=="number")throw Error(`The "${j}" prop ${k} must be a number, but you passed a value of type ${typeof b}`);if(isNaN(b))throw TypeError(`The "${j}" prop ${k} must not be NaN, but is NaN.`);if(!Number.isFinite(b))throw TypeError(`The "${j}" prop ${k} must be finite, but is ${b}.`);if(b%1!==0)throw TypeError(`The "${j}" prop ${k} must be an integer, but is ${b}.`);if(b<=0)throw TypeError(`The "${j}" prop ${k} must be positive, but got ${b}.`)}function ik(b,j){let{allowFloats:k,component:q}=j;if(typeof b>"u")throw Error(`The "durationInFrames" prop ${q} is missing.`);if(typeof b!=="number")throw Error(`The "durationInFrames" prop ${q} must be a number, but you passed a value of type ${typeof b}`);if(b<=0)throw TypeError(`The "durationInFrames" prop ${q} must be positive, but got ${b}.`);if(!k&&b%1!==0)throw TypeError(`The "durationInFrames" prop ${q} must be an integer, but got ${b}.`);if(!Number.isFinite(b))throw TypeError(`The "durationInFrames" prop ${q} must be finite, but got ${b}.`)}function nk(b,j,k){if(typeof b!=="number")throw Error(`"fps" must be a number, but you passed a value of type ${typeof b} ${j}`);if(!Number.isFinite(b))throw Error(`"fps" must be a finite, but you passed ${b} ${j}`);if(isNaN(b))throw Error(`"fps" must not be NaN, but got ${b} ${j}`);if(b<=0)throw TypeError(`"fps" must be positive, but got ${b} ${j}`);if(k&&b>50)throw TypeError("The FPS for a GIF cannot be higher than 50. Use the --every-nth-frame option to lower the FPS: https://remotion.dev/docs/render-as-gif")}var ak=MQ(null),WQ=QQ(),vQ=(b)=>{return Boolean(b.calculateMetadata)},Cw=(b)=>{let j=Bq(ak),{props:k}=Bq(gw),{compositions:q,canvasContent:w,currentCompositionMetadata:z}=Bq(Gj),G=w?.type==="composition"?w.compositionId:null,J=b??G,K=q.find((X)=>X.id===J),M=gz(()=>{return K?k[K.id]??{}:{}},[k,K]),Q=p();return gz(()=>{if(!K)return null;if(z)return{type:"success",metadataSource:null,result:{...z,id:K.id,defaultProps:K.defaultProps??{}}};if(!vQ(K))return ik(K.durationInFrames,{allowFloats:!1,component:`in <Composition id="${K.id}">`}),nk(K.fps,`in <Composition id="${K.id}">`,!1),Vk(K.width,"width",`in <Composition id="${K.id}">`),Vk(K.height,"height",`in <Composition id="${K.id}">`),{type:"success",metadataSource:null,result:{width:K.width,height:K.height,fps:K.fps,id:K.id,durationInFrames:K.durationInFrames,defaultProps:K.defaultProps??{},props:{...K.defaultProps??{},...M??{},...typeof window>"u"||Q.isPlayer||!window.remotion_inputProps?{}:QJ()??{}},defaultCodec:null,defaultOutName:null,defaultVideoImageFormat:null,defaultPixelFormat:null,defaultProResProfile:null,defaultSampleRate:null}};if(!j)return null;if(!j[K.id])return null;return j[K.id]},[K,j,z,M,Q.isPlayer])},ZJ=(b)=>{let j=b.stack??"";return j.startsWith("Error:")?j:`${b.message}
|
|
16
|
+
${j}`},HQ=(b)=>{if(b instanceof Error)return!0;if(b===null)return!1;if(typeof b!=="object")return!1;if(!("stack"in b))return!1;if(typeof b.stack!=="string")return!1;if(!("message"in b))return!1;if(typeof b.message!=="string")return!1;return!0};function Bw(b,j){let k;if(HQ(j)){if(k=j,!k.stack)k.stack=Error(k.message).stack}else if(typeof j==="string")k=Error(j);else k=Error("Rendering was cancelled");if(b)b.remotion_cancelledError=ZJ(k);throw k}function wj(b){return Bw(typeof window<"u"?window:void 0,b)}var LQ=["trace","verbose","info","warn","error"],Bz=(b)=>{return LQ.indexOf(b)},tk=(b,j)=>{return Bz(b)<=Bz(j)},dj=({args:b,logLevel:j,tag:k})=>{let q=[...b];if(qb().isRendering&&!qb().isClientSideRendering)q.unshift(Symbol.for(`__remotion_level_${j}`));if(k&&qb().isRendering&&!qb().isClientSideRendering)q.unshift(Symbol.for(`__remotion_tag_${k}`));return q},OQ=(b,...j)=>{if(tk(b.logLevel,"verbose"))return console.debug(...dj({args:j,logLevel:"verbose",tag:b.tag}))},gQ=(b,...j)=>{if(tk(b.logLevel,"trace"))return console.debug(...dj({args:j,logLevel:"trace",tag:b.tag}))},CQ=(b,...j)=>{if(tk(b.logLevel,"info"))return console.log(...dj({args:j,logLevel:"info",tag:b.tag}))},BQ=(b,...j)=>{if(tk(b.logLevel,"warn"))return console.warn(...dj({args:j,logLevel:"warn",tag:b.tag}))},SQ=(b,...j)=>{return console.error(...dj({args:j,logLevel:"error",tag:b.tag}))},t={trace:gQ,verbose:OQ,info:CQ,warn:BQ,error:SQ};if(typeof window<"u"){if(window.remotion_renderReady=!1,!window.remotion_delayRenderTimeouts)window.remotion_delayRenderTimeouts={};window.remotion_delayRenderHandles=[]}var IQ="The delayRender was called:",PQ="Retries left: ",cQ="- Rendering the frame will be retried.",AQ="handle was cleared after",_Q=30000,$J=({scope:b,environment:j,label:k,options:q})=>{if(typeof k!=="string"&&k!==null)throw Error("The label parameter of delayRender() must be a string or undefined, got: "+JSON.stringify(k));let w=Math.random();b.remotion_delayRenderHandles.push(w);let z=Error().stack?.replace(/^Error/g,"")??"";if(j.isRendering){let G=(q?.timeoutInMilliseconds??b.remotion_puppeteerTimeout??_Q)-2000,J=(q?.retries??0)-(b.remotion_attempt-1);b.remotion_delayRenderTimeouts[w]={label:k??null,startTime:Date.now(),timeout:setTimeout(()=>{let K=["A delayRender()",k?`"${k}"`:null,`was called but not cleared after ${G}ms. See https://remotion.dev/docs/timeout for help.`,J>0?PQ+J:null,J>0?cQ:null,IQ,z].filter(Jj).join(" ");if(j.isClientSideRendering)b.remotion_cancelledError=ZJ(Error(K));else Bw(b,Error(K))},G)}}return b.remotion_renderReady=!1,w},FQ=(b,j)=>{if(typeof window>"u")return Math.random();return $J({scope:window,environment:qb(),label:b??null,options:j??{}})},NJ=({scope:b,handle:j,environment:k,logLevel:q})=>{if(typeof j>"u")throw TypeError("The continueRender() method must be called with a parameter that is the return value of delayRender(). No value was passed.");if(typeof j!=="number")throw TypeError("The parameter passed into continueRender() must be the return value of delayRender() which is a number. Got: "+JSON.stringify(j));let w=b.remotion_delayRenderHandles.includes(j),z=b.remotion_delayRenderTimeouts[j];if(w&&k.isRendering&&z){let{label:G,startTime:J,timeout:K}=z;clearTimeout(K);let M=[G?`"${G}"`:"A handle",AQ,`${Date.now()-J}ms`].filter(Jj).join(" ");t.verbose({logLevel:q,tag:"delayRender()"},M),delete b.remotion_delayRenderTimeouts[j]}if(b.remotion_delayRenderHandles=b.remotion_delayRenderHandles.filter((G)=>G!==j),b.remotion_delayRenderHandles.length===0)b.remotion_renderReady=!0},VQ=(b)=>{if(typeof window>"u")return;NJ({scope:window,handle:b,environment:qb(),logLevel:window.remotion_logLevel??"info"})},lb=hQ({logLevel:"info",mountTime:0}),Rb=()=>{let{logLevel:b}=Sw.useContext(lb);if(b===null)throw Error("useLogLevel must be used within a LogLevelProvider");return b},uj=()=>{let{mountTime:b}=Sw.useContext(lb);if(b===null)throw Error("useMountTime must be used within a LogLevelProvider");return b},RJ=xQ(null),Qb=()=>{let b=p(),j=EQ(RJ)??(typeof window<"u"?window:void 0),k=Rb(),q=Sq((G,J)=>{if(!j)return Math.random();return $J({scope:j,environment:b,label:G??null,options:J??{}})},[b,j]),w=Sq((G)=>{if(!j)return;NJ({scope:j,handle:G,environment:b,logLevel:k})},[b,k,j]),z=Sq((G)=>{return Bw(j??(typeof window<"u"?window:void 0),G)},[j]);return{delayRender:q,continueRender:w,cancelRender:z}},yJ=({compProps:b,componentName:j,noSuspense:k})=>{let q=lQ(null);if("component"in b)q.current=b.component;return fQ(()=>{if("component"in b){if(typeof document>"u"||k)return b.component;if(typeof b.component>"u")throw Error(`A value of \`undefined\` was passed to the \`component\` prop. Check the value you are passing to the <${j}/> component.`);return(G)=>{let J=q.current;return Sz.createElement(J,G)}}if("lazyComponent"in b&&typeof b.lazyComponent<"u"){if(typeof b.lazyComponent>"u")throw Error(`A value of \`undefined\` was passed to the \`lazyComponent\` prop. Check the value you are passing to the <${j}/> component.`);return Sz.lazy(b.lazyComponent)}throw Error("You must pass either 'component' or 'lazyComponent'")},[b.lazyComponent])},ok=()=>{let{canvasContent:b,compositions:j,currentCompositionMetadata:k}=mQ(Gj),q=j.find((z)=>{return b?.type==="composition"&&z.id===b.compositionId}),w=Cw(q?.id??null);return dQ(()=>{if(!w)return null;if(w.type==="error")return null;if(w.type==="loading")return null;if(!q)return null;return{...w.result,defaultProps:q.defaultProps??{},id:q.id,...k??{},component:q.component}},[k,w,q])},DJ=()=>/^([a-zA-Z0-9-\u4E00-\u9FFF])+$/g,TJ=(b)=>b.match(DJ()),uQ=(b)=>{if(!TJ(b))throw Error(`Composition id can only contain a-z, A-Z, 0-9, CJK characters and -. You passed ${b}`)},sQ=`Composition ID must match ${String(DJ())}`,pQ=(b,j,k)=>{if(!b)return;if(typeof b!=="object")throw Error(`"${j}" must be an object, but you passed a value of type ${typeof b}`);if(Array.isArray(b))throw Error(`"${j}" must be an object, an array was passed ${k?`for composition "${k}"`:""}`)},iQ=()=>{let{continueRender:b,delayRender:j}=Qb();return bJ(()=>{let k=j("Waiting for Root component to unsuspend");return()=>b(k)},[b,j]),null},nQ=({width:b,height:j,fps:k,durationInFrames:q,id:w,defaultProps:z,schema:G,...J})=>{let K=Bj(lj),{registerComposition:M,unregisterComposition:Q}=K,X=ok(),U=yJ({compProps:J,componentName:"Composition",noSuspense:!1}),Y=sk(),Z=pk(),$=p(),N=Bj(Lb);if(typeof window<"u")window.remotion_seenCompositionIds=Array.from(new Set([...window.remotion_seenCompositionIds??[],w]));if(N){if(Z)throw Error("<Composition> was mounted inside the `component` that was passed to the <Player>. See https://remotion.dev/docs/wrong-composition-mount for help.");throw Error("<Composition> mounted inside another composition. See https://remotion.dev/docs/wrong-composition-mount for help.")}let{folderName:y,parentName:W}=Bj(_k),v=J._remotionInternalStack??null,D="component"in J?J.component:null;bJ(()=>{if(!w)throw Error("No id for composition passed.");return uQ(w),pQ(z,"defaultProps",w),M({durationInFrames:q??void 0,fps:k??void 0,height:j??void 0,width:b??void 0,id:w,folderName:y,component:U,defaultProps:Qw(z??{}),nonce:Y.get(),parentFolderName:W,componentFromProps:D,schema:G??null,calculateMetadata:J.calculateMetadata??null,stack:v}),()=>{Q(w)}},[q,k,j,U,w,y,z,b,Y,W,D,G,J.calculateMetadata,v,M,Q]);let R=Cw(w),{setError:T,clearError:x}=Bj(jJ),L=yz((E)=>{T(E)},[T]),H=yz(()=>{x()},[x]);if($.isStudio&&X&&X.component===U&&X.id===w){let E=U;if(R===null||R.type!=="success"&&R.type!=="success-and-refreshing")return null;return Dz($b(Kw,{children:$b(kJ,{onError:L,onClear:H,children:$b(Rz,{fallback:$b(GQ,{}),children:$b(E,{...R.result.props??{}})})})}),Xw())}if($.isRendering&&X&&X.component===U&&X.id===w){let E=U;if(R===null||R.type!=="success"&&R.type!=="success-and-refreshing")return null;return Dz($b(Kw,{children:$b(Rz,{fallback:$b(iQ,{}),children:$b(E,{...R.result.props??{}})})}),Xw())}return null},Iw=(b)=>{let{onlyRenderComposition:j}=Bj(lj);if(j&&j!==b.id)return null;return $b(nQ,{...b})},WJ=[],vJ=null,Zw=new WeakMap,aQ="_remotionInternalStack",tQ=()=>WJ,r=(b)=>{WJ.push(b)},oQ=(b)=>{vJ=b},eQ=()=>vJ,Pz=(b,j)=>{if(j===void 0){Zw.delete(b);return}Zw.set(b,j)},Pw=(b)=>{return Zw.get(b)??null},rQ=(b)=>{let j=Iz.Children.toArray(b);if(j.length!==1)return null;let k=j[0];if(!Iz.isValidElement(k))return null;if(typeof k.type!=="function"&&typeof k.type!=="object")return null;return k.type},ab="4.0.507",bU=()=>{if(typeof globalThis>"u")return;let b=()=>{if(globalThis.remotion_imported=ab,typeof window<"u")window.remotion_imported=ab},j=globalThis.remotion_imported||typeof window<"u"&&window.remotion_imported;if(j){if(j===ab)return;if(typeof j==="string"&&j.includes("webcodecs")){b();return}throw TypeError(`\uD83D\uDEA8 Multiple versions of Remotion detected: ${[ab,typeof j==="string"?j:"an older version"].filter(Jj).join(" and ")}. This will cause things to break in an unexpected way.
|
|
17
|
+
Check that all your Remotion packages are on the same version. If your dependencies depend on Remotion, make them peer dependencies. You can also run \`npx remotion versions\` from your terminal to see which versions are mismatching.`)}b()},jU=()=>{throw Error("<Null> has been removed as of Remotion v4.0.228. The native clipping APIs were experimental and subject to removal at any time. We removed them because they were sparingly used and made rendering often slower rather than faster.")},o=GU(null),$w={};rG($w,{useTimelineSetFrame:()=>CJ,useTimelinePosition:()=>Pb,useTimelineContext:()=>Qj,usePlayingState:()=>BJ,usePlaybackRate:()=>Vw,useAbsoluteTimelinePosition:()=>gJ,persistCurrentFrame:()=>xJ,getInitialFrameState:()=>EJ,getFrameForComposition:()=>HJ,clampFrameToCompositionRange:()=>LJ});var Kj=pj({setFrame:()=>{throw Error("default")},setPlaying:()=>{throw Error("default")}}),Mj=pj(null),ek=pj(null),Aw=pj(null),_w=pj(null),MU=({children:b,frameState:j})=>{let[k,q]=Aq(!1),w=cq(!1),[z,G]=Aq(1),J=cq([]),[K,M]=Aq(()=>EJ()),Q=j??K,X=cq(Q);X.current=Q;let{delayRender:U,continueRender:Y}=Qb();if(typeof window<"u")KU(()=>{window.remotion_setFrame=(W,v,D)=>{window.remotion_attempt=D;let R=U(`Setting the current frame to ${W}`),T=!0;if(M((x)=>{if((x[v]??window.remotion_initialFrame)===W)return T=!1,x;return{...x,[v]:W}}),T)requestAnimationFrame(()=>Y(R));else Y(R)},window.remotion_isPlayer=!1},[Y,U]);let Z=Yk(()=>{return{frame:Q,playing:k,imperativePlaying:w,audioAndVideoTags:J}},[Q,k]),$=Yk(()=>{return{frameRef:X,imperativePlaying:w,audioAndVideoTags:J}},[]),N=Yk(()=>{return{playbackRate:z,setPlaybackRate:G}},[z]),y=Yk(()=>{return{setFrame:M,setPlaying:q}},[]);return vj(_w.Provider,{value:Z,children:vj(Aw.Provider,{value:N,children:vj(ek.Provider,{value:$,children:vj(Mj.Provider,{value:Z,children:vj(Kj.Provider,{value:y,children:b})})})})})},Fw=()=>{return"remotion.time-all"},xJ=(b)=>{localStorage.setItem(Fw(),JSON.stringify(b))},EJ=()=>{let b=localStorage.getItem(Fw())??"{}";return JSON.parse(b)},HJ=(b)=>{let j=localStorage.getItem(Fw())??"{}",k=JSON.parse(j);if(k[b]!==void 0)return Number(k[b]);if(typeof window>"u")return 0;return window.remotion_initialFrame??0},LJ=(b,j)=>{return Math.max(0,Math.min(Math.max(0,j-1),b))},OJ=(b)=>{let j=ok(),k=p();if(!j)return typeof window>"u"?0:window.remotion_initialFrame??0;let q=b.frame[j.id]??(k.isPlayer?0:HJ(j.id));return LJ(q,j.durationInFrames)},Qj=()=>{let b=sj(Mj);if(b===null)throw Error("TimelineContext is not available. This hook must be used inside a <Player> or the Remotion Studio.");return b},Vw=()=>{let b=sj(Aw);if(b===null)throw Error("PlaybackRateContext is not available. This hook must be used inside a <Player> or the Remotion Studio.");return b},Pb=()=>{let b=Qj();return OJ(b)},gJ=()=>{let b=sj(_w);if(b===null)throw Error("AbsoluteTimeContext is not available. This hook must be used inside a <Player> or the Remotion Studio.");return OJ(b)},CJ=()=>{let{setFrame:b}=sj(Kj);return b},BJ=()=>{let{playing:b,imperativePlaying:j}=Qj(),{setPlaying:k}=sj(Kj);return JU(()=>[b,k,j],[j,b,k])},Jb=()=>{let b=Az(Lb),j=p();if(!b){if(j.isPlayer)throw Error("useCurrentFrame can only be called inside a component that was passed to <Player>. See: https://www.remotion.dev/docs/player/examples");throw Error("useCurrentFrame() can only be called inside a component that was registered as a composition. See https://www.remotion.dev/docs/the-fundamentals#defining-compositions")}let k=Pb(),q=Az(o),w=q?q.cumulatedFrom+q.relativeFrom:0;return k-w},Uj=()=>{let b=UU(o),j=b?.width??null,k=b?.height??null,q=b?.durationInFrames??null,w=ok();return XU(()=>{if(!w)return null;let{id:z,durationInFrames:G,fps:J,height:K,width:M,defaultProps:Q,props:X,defaultCodec:U,defaultOutName:Y,defaultVideoImageFormat:Z,defaultPixelFormat:$,defaultProResProfile:N,defaultSampleRate:y}=w;return{id:z,width:j??M,height:k??K,fps:J,durationInFrames:q??G,defaultProps:Q,props:X,defaultCodec:U,defaultOutName:Y,defaultVideoImageFormat:Z,defaultPixelFormat:$,defaultProResProfile:N,defaultSampleRate:y}},[q,k,j,w])},Ub=()=>{let b=Uj(),j=QU(Lb),k=pk();if(!b){if(typeof window<"u"&&window.remotion_isPlayer||k)throw Error(["No video config found. Likely reasons:","- You are probably calling useVideoConfig() from outside the component passed to <Player />. See https://www.remotion.dev/docs/player/examples for how to set up the Player correctly.","- You have multiple versions of Remotion installed which causes the React context to get lost."].join("-"));throw Error("No video config found. You are probably calling useVideoConfig() from a component which has not been registered as a <Composition />. See https://www.remotion.dev/docs/the-fundamentals#defining-compositions for more information.")}if(!j)throw Error("Called useVideoConfig() outside a Remotion composition.");return b},Xj=({frame:b,children:j,active:k=!0})=>{let q=Jb(),w=Ub();if(typeof b>"u")throw Error("The <Freeze /> component requires a 'frame' prop, but none was passed.");if(typeof b!=="number")throw Error(`The 'frame' prop of <Freeze /> must be a number, but is of type ${typeof b}`);if(Number.isNaN(b))throw Error("The 'frame' prop of <Freeze /> must be a real number, but it is NaN.");if(!Number.isFinite(b))throw Error(`The 'frame' prop of <Freeze /> must be a finite number, but it is ${b}.`);let z=Pq(()=>{if(typeof k==="boolean")return k;if(typeof k==="function")return k(q)},[k,q]),G=Qj(),J=zU(o),K=J?.relativeFrom??0,M=Pq(()=>{if(!z)return G;return{...G,playing:!1,imperativePlaying:{current:!1},frame:{[w.id]:b+K}}},[z,G,w.id,b,K]),Q=Pq(()=>{if(!J)return null;if(!z)return J;return{...J,cumulatedFrom:0}},[J,z]);return _z(Mj.Provider,{value:M,children:_z(o.Provider,{value:Q,children:j})})},YU={captions:{type:"remotion-captions",default:void 0,description:"Captions",keyframable:!1}},Zb={"style.transformOrigin":{type:"transform-origin",step:1,default:"50% 50%",description:"Transform origin"},"style.translate":{type:"translate",step:1,default:"0px 0px",description:"Offset"},"style.scale":{type:"scale",max:100,step:0.01,default:1,description:"Scale",defaultKeyframeOutput:"perceptual-scale"},"style.rotate":{type:"rotation-css",step:1,default:"0deg",description:"Rotation"},"style.opacity":{type:"number",min:0,max:1,step:0.01,default:1,description:"Opacity",hiddenFromList:!1}},ZU=Zb,ij={"style.color":{type:"color",default:void 0,description:"Color"},"style.fontFamily":{type:"font-family",default:void 0,description:"Font family",keyframable:!1},"style.fontSize":{type:"number",default:void 0,min:0,step:1,description:"Font size",hiddenFromList:!1},"style.lineHeight":{type:"number",default:void 0,min:0,step:0.05,description:"Line height",hiddenFromList:!1},"style.fontWeight":{type:"enum",default:"400",description:"Font weight",variants:{"100":{},"200":{},"300":{},"400":{},"500":{},"600":{},"700":{},"800":{},"900":{},normal:{},bold:{}}},"style.fontStyle":{type:"enum",default:"normal",description:"Font style",variants:{normal:{},italic:{},oblique:{}}},"style.textAlign":{type:"enum",default:"left",description:"Text align",variants:{left:{},center:{},right:{},justify:{},start:{},end:{}}},"style.letterSpacing":{type:"number",default:void 0,step:0.1,description:"Letter spacing",hiddenFromList:!1}},Ob={"style.borderWidth":{type:"number",default:void 0,min:0,step:1,description:"Border width",hiddenFromList:!1},"style.borderStyle":{type:"enum",default:"none",description:"Border style",variants:{none:{},hidden:{},solid:{},dashed:{},dotted:{},double:{},groove:{},ridge:{},inset:{},outset:{}}},"style.borderColor":{type:"color",default:void 0,description:"Border color"}},gb={"style.borderRadius":{type:"number",default:0,min:0,step:1,description:"Border radius",hiddenFromList:!1,keyframable:!0},"style.borderTopLeftRadius":{type:"number",default:0,min:0,step:1,description:"Top left radius",hiddenFromList:!1},"style.borderTopRightRadius":{type:"number",default:0,min:0,step:1,description:"Top right radius",hiddenFromList:!1},"style.borderBottomRightRadius":{type:"number",default:0,min:0,step:1,description:"Bottom right radius",hiddenFromList:!1},"style.borderBottomLeftRadius":{type:"number",default:0,min:0,step:1,description:"Bottom left radius",hiddenFromList:!1}},Cb={"style.backgroundColor":{type:"color",default:"transparent",description:"Color"}},$U={color:{type:"color",default:void 0,description:"Current color"}},hw={...$U,stroke:{type:"color",default:"none",description:"Stroke"},strokeWidth:{type:"number",default:1,description:"Stroke width",min:0,step:1,hiddenFromList:!1}},rk={fill:{type:"color",default:void 0,description:"Fill"},...hw},fw={children:{type:"text-content",default:"",description:"Text",keyframable:!1}},Yj={premountFor:{type:"number",default:0,description:"Premount For",min:0,step:1,hiddenFromList:!1,keyframable:!1},postmountFor:{type:"number",default:0,min:0,step:1,hiddenFromList:!0,keyframable:!1}},SJ={...Yj},cb={cropLeft:{type:"number",default:0,description:"Crop left",min:0,max:1,step:0.01,hiddenFromList:!1,keyframable:!0},cropRight:{type:"number",default:0,description:"Crop right",min:0,max:1,step:0.01,hiddenFromList:!1,keyframable:!0},cropTop:{type:"number",default:0,description:"Crop top",min:0,max:1,step:0.01,hiddenFromList:!1,keyframable:!0},cropBottom:{type:"number",default:0,description:"Crop bottom",min:0,max:1,step:0.01,hiddenFromList:!1,keyframable:!0}},IJ=cb,PJ={...IJ,...Zb,...Cb,...Ob,...gb,...SJ},lw={type:"boolean",default:!1,description:"Hidden"},cJ={type:"hidden"},mw={type:"hidden"},NU=(b)=>{return{name:mw,...b}},dw={type:"number",default:void 0,min:1,step:1,hiddenFromList:!0},AJ={type:"number",default:0,step:1,hiddenFromList:!0},_J={type:"number",default:0,min:0,step:1,hiddenFromList:!0},uw={type:"number",default:null,step:1,hiddenFromList:!0},yb={durationInFrames:dw,from:AJ,trimBefore:_J,freeze:uw,hidden:lw,name:mw,showInTimeline:cJ},zj={...yb,layout:{type:"enum",default:"absolute-fill",description:"Layout",variants:{"absolute-fill":PJ,none:{}}}},RU={durationInFrames:dw,trimBefore:_J,freeze:uw,hidden:lw,name:mw,showInTimeline:cJ},yU={...RU,layout:zj.layout},DU={...zj,layout:{...zj.layout,default:"none"}},Fz=(b)=>{return Math.min(1,Math.max(0,b??0))},Vz=(b,j)=>{let k=Fz(b),q=Fz(j);if(k+q>1)return[0.5,0.5];return[k,q]},sw=({cropLeft:b,cropRight:j,cropTop:k,cropBottom:q})=>{let[w,z]=Vz(b,j),[G,J]=Vz(k,q);return{left:w,right:z,top:G,bottom:J}},FJ=({left:b,right:j,top:k,bottom:q,style:w})=>{if(b===0&&j===0&&k===0&&q===0)return null;let z=(Q)=>typeof Q==="number"?`${Q}px`:Q,G=z(w?.borderRadius),J=[w?.borderTopLeftRadius,w?.borderTopRightRadius,w?.borderBottomRightRadius,w?.borderBottomLeftRadius],K=G||(J.some((Q)=>Q!==void 0)?J.map((Q)=>z(Q)??"0px").join(" "):void 0),M=K?` round ${K}`:"";return`inset(${k*100}% ${j*100}% ${q*100}% ${b*100}%${M})`},VJ=(b,j="<Sequence />")=>{for(let[k,q]of Object.entries(b)){if(q===void 0)continue;if(typeof q!=="number"||!Number.isFinite(q))throw TypeError(`The "${k}" prop of ${j} must be a finite number, but got ${String(q)}.`);if(q<0||q>1)throw RangeError(`The "${k}" prop of ${j} must be between 0 and 1, but got ${q}.`)}},$j=Zj.createContext({registerSequence:()=>{throw Error("SequenceManagerContext not initialized")},unregisterSequence:()=>{throw Error("SequenceManagerContext not initialized")},sequences:[]}),bq=Zj.createContext({current:[]}),xb=(b)=>{return`${b.absolutePath}\x00${b.nodePath.join(".")}\x00${b.sequenceKeys.join(".")}\x00${b.effectKeys.map((j)=>j.join(".")).join(".")}`},jq=Zj.createContext({propStatuses:{}}),kq=Zj.createContext({current:{}}),qq=Zj.createContext({getDragOverrides:()=>{throw Error("VisualModeDragOverridesContext not initialized")},getEffectDragOverrides:()=>{throw Error("VisualModeDragOverridesContext not initialized")}}),hJ=Zj.createContext({setDragOverrides:()=>{throw Error("VisualModeSettersContext not initialized")},clearDragOverrides:()=>{throw Error("VisualModeSettersContext not initialized")},setEffectDragOverrides:()=>{throw Error("VisualModeSettersContext not initialized")},clearEffectDragOverrides:()=>{throw Error("VisualModeSettersContext not initialized")},setPropStatuses:()=>{throw Error("VisualModeSettersContext not initialized")}}),Fq=(b,j)=>`${xb(b)}.effects.${j}`,TU=({children:b})=>{let[j,k]=$k([]),q=_q(j);q.current=j;let[w,z]=$k({}),G=_q(w);G.current=w;let[J,K]=$k({}),[M,Q]=$k({}),X=_q(M);X.current=M;let U=Wb((H,E,O)=>{z((g)=>({...g,[xb(H)]:{...g[xb(H)],[E]:O}}))},[]),Y=Wb((H)=>{z((E)=>{let O=xb(H);if(!E[O])return E;let g={...E};return delete g[O],g})},[]),Z=Wb((H,E,O,g)=>{K((B)=>{let C=Fq(H,E);return{...B,[C]:{...B[C],[O]:g}}})},[]),$=Wb((H,E)=>{K((O)=>{let g=Fq(H,E);if(!O[g])return O;let B={...O};return delete B[g],B})},[]),N=Wb((H,E)=>{Q((O)=>{let g=xb(H),B=O[g],C=E(B);if(B===C)return O;return{...O,[g]:C}})},[]),y=Wb((H)=>{k((E)=>{return[...E,H]})},[]),W=Wb((H)=>{k((E)=>E.filter((O)=>O.id!==H))},[]),v=Zk(()=>{return{registerSequence:y,sequences:j,unregisterSequence:W}},[y,j,W]),D=Wb((H)=>{return w[xb(H)]??{}},[w]),R=Wb((H,E)=>{return J[Fq(H,E)]??{}},[J]),T=Zk(()=>{return{propStatuses:M}},[M]),x=Zk(()=>{return{getDragOverrides:D,getEffectDragOverrides:R}},[D,R]),L=Zk(()=>{return{setDragOverrides:U,clearDragOverrides:Y,setEffectDragOverrides:Z,clearEffectDragOverrides:$,setPropStatuses:N}},[U,Y,Z,$,N]);return ib(bq.Provider,{value:q,children:ib($j.Provider,{value:v,children:ib(kq.Provider,{value:X,children:ib(jq.Provider,{value:T,children:ib(qq.Provider,{value:x,children:ib(hJ.Provider,{value:L,children:b})})})})})})},wq=WU(!1),vU=({children:b})=>{return fJ(wq.Provider,{value:!0,children:b})},lJ=({children:b})=>{return fJ(wq.Provider,{value:!1,children:b})},xU=()=>{if(!hz.useContext(wq))throw Error("This component must be inside a <Series /> component.")},mJ=LU({premountFramesRemaining:0}),nj=!1,aj=(b)=>{return b??nj},tj=({from:b,durationInFrames:j,premountFor:k,postmountFor:q,style:w,styleWhilePremounted:z,styleWhilePostmounted:G,hideWhilePremounted:J})=>{let K=EU(mJ),M=Jb()-K.premountFramesRemaining,Q=p(),{fps:X}=Ub(),U=nj?k??X:k??0,Y=q??0,Z=Math.ceil(b+j-1),$=!Q.isRendering&&M<b&&M>=b-U,N=!Q.isRendering&&M>Z&&M<=Z+Y,y=$||N,W=$?b:N?b+j-1:0,v=HU(()=>{if(!y)return w;return{...w,...J==="opacity"?{opacity:0}:{display:"none"},pointerEvents:"none",...$?z:{},...N?G:{}}},[y,J,N,$,w,G,z]);return{effectivePremountFor:U,effectivePostmountFor:Y,premountingActive:$,postmountingActive:N,isPremountingOrPostmounting:y,freezeFrame:W,premountingStyle:v}},CU=(b,j)=>{for(let k of j){let q=k.split("."),w=[b],z=b;for(let G=0;G<q.length-1;G++){let J=q[G],K=z[J];if(K===void 0||K===null){z=null;break}z=K,w.push(z)}if(z===null)continue;delete z[q[q.length-1]];for(let G=w.length-1;G>0;G--){let J=w[G];if(Object.keys(J).length===0){let K=q[G-1];delete w[G-1][K]}else break}}return b},BU=4,SU=0.001,IU=0.0000001,PU=10,Sj=11,Rk=1/(Sj-1),cU=typeof Float32Array==="function";function uJ(b,j){return 1-3*j+3*b}function sJ(b,j){return 3*j-6*b}function pJ(b){return 3*b}function hk(b,j,k){return((uJ(j,k)*b+sJ(j,k))*b+pJ(j))*b}function iJ(b,j,k){return 3*uJ(j,k)*b*b+2*sJ(j,k)*b+pJ(j)}function AU({aX:b,_aA:j,_aB:k,mX1:q,mX2:w}){let z,G,J=0,K=j,M=k;do if(G=K+(M-K)/2,z=hk(G,q,w)-b,z>0)M=G;else K=G;while(Math.abs(z)>IU&&++J<PU);return G}function _U(b,j,k,q){let w=j;for(let z=0;z<BU;++z){let G=iJ(w,k,q);if(G===0)return w;let J=hk(w,k,q)-b;w-=J/G}return w}function nJ(b,j,k,q){if(!(b>=0&&b<=1&&k>=0&&k<=1))throw Error("bezier x values must be in [0, 1] range");let w=cU?new Float32Array(Sj):Array(Sj);if(b!==j||k!==q)for(let G=0;G<Sj;++G)w[G]=hk(G*Rk,b,k);function z(G){let J=0,K=1,M=Sj-1;for(;K!==M&&w[K]<=G;++K)J+=Rk;--K;let Q=(G-w[K])/(w[K+1]-w[K]),X=J+Q*Rk,U=iJ(X,b,k);if(U>=SU)return _U(G,X,b,k);if(U===0)return X;return AU({aX:G,_aA:J,_aB:J+Rk,mX1:b,mX2:k})}return function(G){let J=Math.min(1,Math.max(0,G));if(b===j&&k===q)return J;if(J===0)return 0;if(J===1)return 1;return hk(z(J),j,q)}}var FU=(b)=>{return Math.round(b*1e6)/1e6},VU=new Set(["deg","rad","grad","turn"]),aJ=new Set(["%","cap","ch","cm","cqb","cqh","cqi","cqmax","cqmin","cqw","dvh","dvw","em","ex","ic","in","lh","lvh","lvw","mm","pc","pt","px","q","rem","rlh","svh","svw","vb","vh","vi","vmax","vmin","vw"]),tJ=/^([+-]?(?:\d+\.?\d*|\.\d+))([a-zA-Z%]+)?$/,oJ=new Set(["left","center","right","top","bottom"]),tb=(b)=>{if(b==="left")return[{axis:"x",value:{value:0,unit:"%"}}];if(b==="right")return[{axis:"x",value:{value:100,unit:"%"}}];if(b==="top")return[{axis:"y",value:{value:0,unit:"%"}}];if(b==="bottom")return[{axis:"y",value:{value:100,unit:"%"}}];return[{axis:"x",value:{value:50,unit:"%"}},{axis:"y",value:{value:50,unit:"%"}}]},xj={value:50,unit:"%"},lz=(b)=>{return String(FU(b))},hU=(b,j)=>{let k=tJ.exec(b);if(k===null)throw TypeError(`Cannot interpolate "${j}" because "${b}" is not a supported scale, translate, or rotate value`);let q=k[2]??null,w=Number(k[1]);if(!Number.isFinite(w))throw TypeError(`Cannot interpolate "${j}" because "${b}" is not finite`);if(q===null)return{kind:"scale",value:w,unit:null};if(VU.has(q))return{kind:"rotate",value:w,unit:q};if(aJ.has(q))return{kind:"translate",value:w,unit:q};throw TypeError(`Cannot interpolate "${j}" because "${q}" is not a supported translate or rotate unit`)},eJ=({component:b,value:j,allowPercentage:k})=>{let q=tJ.exec(b);if(q===null)throw TypeError(`Cannot interpolate "${j}" because "${b}" is not a supported transform-origin ${k?"length-percentage":"z length"}`);let w=q[2]??null,z=Number(q[1]);if(!Number.isFinite(z))throw TypeError(`Cannot interpolate "${j}" because "${b}" is not finite`);if(w===null||!aJ.has(w)||!k&&w==="%")throw TypeError(`Cannot interpolate "${j}" because "${b}" is not a supported transform-origin ${k?"length-percentage":"z length"}`);return{value:z,unit:w}},lq=(b,j)=>{let k=b.toLowerCase();if(oJ.has(k))return{type:"keyword",keyword:k};return{type:"length-percentage",parsed:eJ({component:b,value:j,allowPercentage:!0})}},fU=(b,j,k)=>{let q=[];for(let w of tb(b))for(let z of tb(j)){if(w.axis===z.axis)continue;q.push(w.axis==="x"?[w.value,z.value]:[z.value,w.value])}if(q.length===0)throw TypeError(`Cannot interpolate "${k}" because "${b} ${j}" is not a valid transform-origin keyword pair`);return q[0]},lU=(b,j)=>{if(b.length===1){let J=lq(b[0],j);if(J.type==="length-percentage")return[J.parsed,xj];if(J.keyword==="top"||J.keyword==="bottom")return[xj,tb(J.keyword)[0].value];return[tb(J.keyword)[0].value,xj]}let k=lq(b[0],j),q=lq(b[1],j);if(k.type==="length-percentage"&&q.type==="length-percentage")return[k.parsed,q.parsed];if(k.type==="keyword"&&q.type==="keyword")return fU(k.keyword,q.keyword,j);let w=k.type==="keyword"?k:q.type==="keyword"?q:null,z=k.type==="length-percentage"?k.parsed:q.type==="length-percentage"?q.parsed:null;if(w===null||z===null)throw Error("Expected a keyword and a length-percentage value");let G=k.type==="keyword";if(w.keyword==="left"||w.keyword==="right"){if(!G)throw TypeError(`Cannot interpolate "${j}" because horizontal transform-origin keywords must come before a length-percentage value`);return[tb(w.keyword)[0].value,z]}if(w.keyword==="top"||w.keyword==="bottom")return[z,tb(w.keyword)[0].value];return G?[xj,z]:[z,xj]},mU=(b,j)=>{let[k,q]=lU(j.slice(0,2),b),w=j[2]===void 0?{value:0,unit:null}:eJ({component:j[2],value:b,allowPercentage:!1});return{kind:"translate",values:[k.value,q.value,w.value],units:[k.unit,q.unit,w.unit],dimensions:j[2]===void 0?2:3}},dU=(b)=>{if(typeof b==="number"){if(!Number.isFinite(b))throw Error(`outputRange must contain only finite numbers, but got [${b}]`);return{kind:"scale",values:[b,b,1],units:[null,null,null],dimensions:1}}let j=b.trim().split(/\s+/);if(j.length<1||j.length>3||j[0]==="")throw TypeError(`String outputRange values must contain 1 to 3 components, but got "${b}"`);if(j.some((w)=>oJ.has(w.toLowerCase())))return mU(b,j);let k=j.map((w)=>hU(w,b)),[{kind:q}]=k;for(let w of k)if(w.kind!==q)throw TypeError(`Cannot interpolate "${b}" because it mixes ${q} and ${w.kind} values`);if(q==="scale"){let w=k[0].value,z=k[1]?.value??w,G=k[2]?.value??1;return{kind:q,values:[w,z,G],units:[null,null,null],dimensions:k.length}}return{kind:q,values:[k[0].value,k[1]?.value??0,k[2]?.value??0],units:[k[0].unit,k[1]?.unit??null,k[2]?.unit??null],dimensions:k.length}},uU=({kind:b,values:j,units:k,dimensions:q})=>{if(b==="scale")return j.slice(0,q).map((w)=>lz(w)).join(" ");return j.slice(0,q).map((w,z)=>`${lz(w)}${k[z]}`).join(" ")},mz=(b)=>{if(b===0)return 0;return Math.sign(b)*b*b},sU=(b)=>{if(b===0)return 0;return Math.sign(b)*Math.sqrt(Math.abs(b))};function pU(b,j,k,q){let{extrapolateLeft:w,extrapolateRight:z,easing:G,output:J}=q,K=b,[M,Q]=j,[X,U]=k;if(K<M){if(w==="identity")return K;if(w==="clamp")K=M;else if(w==="wrap"){let Y=Q-M;K=((K-M)%Y+Y)%Y+M}}if(K>Q){if(z==="identity")return K;if(z==="clamp")K=Q;else if(z==="wrap"){let Y=Q-M;K=((K-M)%Y+Y)%Y+M}}if(X===U)return X;if(K=(K-M)/(Q-M),K=G(K),J==="perceptual-scale"){let Y=mz(X),Z=mz(U);K=sU(K*(Z-Y)+Y)}else K=K*(U-X)+X;return K}function iU(b,j){let k;for(k=1;k<j.length-1;++k)if(j[k]>=b)break;return k-1}var nU=(b)=>b,aU=(b)=>{return b??"linear"},rJ=(b)=>{return b.remotionShouldExtendRight===!0},dz=({easing:b,segmentIndex:j})=>{if(b===void 0)return nU;if(typeof b==="function")return b;return b[j]},uz=({input:b,inputRange:j,outputRange:k,easing:q,extrapolateLeft:w,extrapolateRight:z,output:G})=>{return pU(b,j,k,{easing:q,extrapolateLeft:w,extrapolateRight:b>j[1]&&z==="clamp"&&rJ(q)?"extend":z,output:G})},pw=({input:b,inputRange:j,outputRange:k,options:q})=>{let w=aU(q?.output);if(j.length===1)return k[0];let z=q?.easing,G="extend";if(q?.extrapolateLeft!==void 0)G=q.extrapolateLeft;let J="extend";if(q?.extrapolateRight!==void 0)J=q.extrapolateRight;let K=q?.posterize===void 0?b:Math.floor(b/q.posterize)*q.posterize,M=iU(K,j),Q=dz({easing:z,segmentIndex:M}),X=uz({input:K,inputRange:[j[M],j[M+1]],outputRange:[k[M],k[M+1]],easing:Q,extrapolateLeft:G,extrapolateRight:J,output:w});for(let U=0;U<M;U++){let Y=dz({easing:z,segmentIndex:U});if(!rJ(Y))continue;let Z=j[U+1];if(K<=Z)continue;let $=uz({input:K,inputRange:[j[U],Z],outputRange:[k[U],k[U+1]],easing:Y,extrapolateLeft:G,extrapolateRight:"extend",output:w});X+=$-k[U+1]}return X},tU=({input:b,inputRange:j,outputRange:k,options:q})=>{let w=k.map(dU),z=w[0]?.kind;if(z===void 0)throw Error("outputRange must have at least 1 element");for(let M of w)if(M.kind!==z)throw TypeError(`Cannot interpolate ${z} values with ${M.kind} values`);let G=Math.max(...w.map((M)=>M.dimensions)),J=[null,null,null];if(z!=="scale")for(let M=0;M<G;M++){for(let Q of w){let X=Q.units[M];if(X===null)continue;if(J[M]===null){J[M]=X;continue}if(J[M]!==X)throw TypeError(`Cannot interpolate ${z} values with different units on axis ${M+1}: ${J[M]} and ${X}`)}if(J[M]===null)throw TypeError(`Cannot interpolate ${z} values because axis ${M+1} has no unit`)}let K=[0,0,0];for(let M=0;M<G;M++)K[M]=pw({input:b,inputRange:j,outputRange:w.map((Q)=>Q.values[M]),options:q});return uU({kind:z,values:K,units:J,dimensions:G})},oU=(b)=>{let j=b[0]?.length;if(j===void 0)throw Error("outputRange must have at least 1 element");if(j===0)throw TypeError("outputRange tuples must contain at least 1 number");for(let k of b){if(k.length!==j)throw TypeError(`outputRange tuples must all have the same length, but got ${j} and ${k.length}`);for(let q of k)if(typeof q!=="number"||!Number.isFinite(q))throw TypeError(`outputRange tuples must contain only finite numbers, but got [${k.join(",")}]`)}return j},eU=({input:b,inputRange:j,outputRange:k,options:q})=>{let w=oU(k);return Array(w).fill(!0).map((z,G)=>pw({input:b,inputRange:j,outputRange:k.map((J)=>J[G]),options:q}))};function rU(b){for(let j=1;j<b.length;++j)if(!(b[j]>b[j-1]))throw Error(`inputRange must be strictly monotonically increasing but got [${b.join(",")}]`)}function sz(b,j){if(j.length<1)throw Error(b+" must have at least 1 element");for(let k of j){if(typeof k!=="number")throw Error(`${b} must contain only numbers`);if(!Number.isFinite(k))throw Error(`${b} must contain only finite numbers, but got [${j.join(",")}]`)}}function bK(b,j){if(b===void 0)return;if(typeof b==="function")return;let k=j-1;if(b.length!==k)throw Error(`When easing is an array, it must have one entry per segment between keyframes (length inputRange.length - 1 = ${k}), but got length ${b.length}`);for(let q=0;q<b.length;q++)if(typeof b[q]!=="function")throw Error(`easing[${q}] must be a function`)}function jK(b){if(b===void 0)return;if(typeof b!=="number"||!Number.isFinite(b)||b<=0)throw Error(`posterize must be a positive finite number, but got ${b}`)}function bX(b){if(b===void 0||b==="linear"||b==="perceptual-scale")return;throw Error(`output must be "linear" or "perceptual-scale", but got ${String(b)}`)}function oj(b,j,k,q){if(typeof b>"u")throw Error("input can not be undefined");if(typeof j>"u")throw Error("inputRange can not be undefined");if(typeof k>"u")throw Error("outputRange can not be undefined");if(j.length!==k.length)throw Error("inputRange ("+j.length+") and outputRange ("+k.length+") must have the same length");if(sz("inputRange",j),rU(j),bK(q?.easing,j.length),jK(q?.posterize),bX(q?.output),typeof b!=="number")throw TypeError("Cannot interpolate an input which is not a number");if(!Array.isArray(k))throw Error("outputRange must contain only numbers");if(k.some((z)=>typeof z==="string")){if(!k.every((z)=>typeof z==="string"||typeof z==="number"))throw TypeError("outputRange must contain only numbers, or supported scale, translate, and rotate strings");return tU({input:b,inputRange:j,outputRange:k,options:q})}if(k.every((z)=>Array.isArray(z)))return eU({input:b,inputRange:j,outputRange:k,options:q});if(!k.every((z)=>typeof z==="number"))throw TypeError("outputRange must contain only numbers, numeric tuples, or supported scale, translate, and rotate strings");return sz("outputRange",k),pw({input:b,inputRange:j,outputRange:k,options:q})}var jX=({allowFloats:b,durationInFrames:j,frame:k})=>{if(typeof k>"u")throw TypeError('Argument missing for parameter "frame"');if(typeof k!=="number")throw TypeError(`Argument passed for "frame" is not a number: ${k}`);if(!Number.isFinite(k))throw RangeError(`Frame ${k} is not finite`);if(k%1!==0&&!b)throw RangeError(`Argument for frame must be an integer, but got ${k}`);if(k<0&&k<-j)throw RangeError(`Cannot use frame ${k}: Duration of composition is ${j}, therefore the lowest frame that can be rendered is ${-j}`);if(k>j-1)throw RangeError(`Cannot use frame ${k}: Duration of composition is ${j}, therefore the highest frame that can be rendered is ${j-1}`)},kX=(b)=>{if(typeof b>"u")return;if(typeof b!=="number")throw TypeError(`A "duration" of a spring must be a "number" but is "${typeof b}"`);if(Number.isNaN(b))throw TypeError('A "duration" of a spring is NaN, which it must not be');if(!Number.isFinite(b))throw TypeError('A "duration" of a spring must be finite, but is '+b);if(b<=0)throw TypeError('A "duration" of a spring must be positive, but is '+b)},qX={damping:10,mass:1,stiffness:100,overshootClamping:!1},mq={};function wX({animation:b,now:j,config:k}){let{toValue:q,lastTimestamp:w,current:z,velocity:G}=b,J=Math.min(j-w,64);if(k.damping<=0)throw Error("Spring damping must be greater than 0, otherwise the spring() animation will never end, causing an infinite loop.");let{damping:K,mass:M,stiffness:Q}=k,X=[q,w,z,G,K,M,Q,j].join("-");if(mq[X])return mq[X];let U=-G,Y=q-z,Z=K/(2*Math.sqrt(Q*M)),$=Math.sqrt(Q/M),N=$*Math.sqrt(1-Z**2),y=J/1000,W=Math.sin(N*y),v=Math.cos(N*y),D=Math.exp(-Z*$*y),R=D*(W*((U+Z*$*Y)/N)+Y*v),T=q-R,x=Z*$*R-D*(v*(U+Z*$*Y)-N*Y*W),L=Math.exp(-$*y),H=q-L*(Y+(U+$*Y)*y),E=L*(U*(y*$-1)+y*Y*$*$),O={toValue:q,prevPosition:z,lastTimestamp:j,current:Z<1?T:H,velocity:Z<1?x:E};return mq[X]=O,O}var dq={};function kK({frame:b,fps:j,config:k={}}){let z=[b,j,k.damping,k.mass,k.overshootClamping,k.stiffness].join("-");if(dq[z])return dq[z];let G={lastTimestamp:0,current:0,toValue:1,velocity:0,prevPosition:0},J=Math.max(0,b),K=J%1;for(let M=0;M<=Math.floor(J);M++){if(M===Math.floor(J))M+=K;let Q=M/j*1000;G=wX({animation:G,now:Q,config:{...qX,...k}})}return dq[z]=G,G}var uq=new Map;function iw({fps:b,config:j={},threshold:k=0.005}){if(typeof k!=="number")throw TypeError(`threshold must be a number, got ${k} of type ${typeof k}`);if(k===0)return 1/0;if(k===1)return 0;if(isNaN(k))throw TypeError("Threshold is NaN");if(!Number.isFinite(k))throw TypeError("Threshold is not finite");if(k<0)throw TypeError("Threshold is below 0");let q=[b,j.damping,j.mass,j.overshootClamping,j.stiffness,k].join("-");if(uq.has(q))return uq.get(q);nk(b,"to the measureSpring() function",!1);let w=0,z=0,G=()=>{return kK({fps:b,frame:w,config:j})},J=G(),K=()=>{return Math.abs(J.current-J.toValue)},M=K();while(M>=k)w++,J=G(),M=K();z=w;for(let Q=0;Q<20;Q++)if(w++,J=G(),M=K(),M>=k)Q=0,z=w+1;return uq.set(q,z),z}function Nw({frame:b,fps:j,config:k={},from:q=0,to:w=1,durationInFrames:z,durationRestThreshold:G,delay:J=0,reverse:K=!1}){kX(z),jX({frame:b,durationInFrames:1/0,allowFloats:!0}),nk(j,"to spring()",!1);let M=K||typeof z<"u",Q=M?iw({fps:j,config:k,threshold:G}):void 0,X=M?{get:()=>Q}:{get:()=>{throw Error("did not calculate natural duration, this is an error with Remotion. Please report")}},Y=(K?(z??X.get())-b:b)+(K?J:-J),Z=z===void 0?Y:Y/(z/X.get());if(z&&Y>z)return w;let $=kK({fps:j,frame:Z,config:k}),N=k.overshootClamping?w>=q?Math.min($.current,w):Math.max($.current,w):$.current;return q===0&&w===1?N:oj(N,[0,1],[q,w])}var pz=(b)=>Math.min(1,Math.max(0,b)),Ej=30;class eb{static step0(b){return b>0?1:0}static step1(b){return b>=1?1:0}static linear(b){return b}static ease(b){return eb.bezier(0.42,0,1,1)(b)}static quad(b){return b*b}static cubic(b){return b*b*b}static poly(b){return(j)=>j**b}static sin(b){return 1-Math.cos(b*Math.PI/2)}static circle(b){let j=pz(b);return 1-Math.sqrt(1-j*j)}static exp(b){return 2**(10*(b-1))}static elastic(b=1){let j=b*Math.PI;return(k)=>1-Math.cos(k*Math.PI/2)**3*Math.cos(k*j)}static back(b=1.70158){return(j)=>j*j*((b+1)*j-b)}static spring({allowTail:b=!1,durationRestThreshold:j,...k}={}){return Object.assign((w)=>{if(w<=0)return 0;if(!b&&w>=1)return 1;if(b)return Nw({fps:Ej,frame:w*iw({fps:Ej,config:k,threshold:j}),config:k});return Nw({fps:Ej,frame:w*Ej,config:k,durationInFrames:Ej,durationRestThreshold:j})},{remotionShouldExtendRight:b})}static bounce(b){let j=pz(b);if(j<0.36363636363636365)return 7.5625*j*j;if(j<0.7272727272727273){let q=j-0.5454545454545454;return 7.5625*q*q+0.75}if(j<0.9090909090909091){let q=j-0.8181818181818182;return 7.5625*q*q+0.9375}let k=j-0.9545454545454546;return 7.5625*k*k+0.984375}static bezier(b,j,k,q){return nJ(b,j,k,q)}static in(b){return b}static out(b){return(j)=>1-b(1-j)}static inOut(b){return(j)=>{if(j<0.5)return b(j*2)/2;return 1-b((1-j)*2)/2}}}var Yb="[-+]?\\d*\\.?\\d+",yk=Yb+"%";function Dk(...b){return"\\(\\s*("+b.join(")\\s*,\\s*(")+")\\s*\\)"}var Tk="(?:none|[-+]?\\d*\\.?\\d+(?:%|deg|rad|grad|turn)?)";function Hj(b){return new RegExp(b+"\\(\\s*("+Tk+")\\s+("+Tk+")\\s+("+Tk+")(?:\\s*\\/\\s*("+Tk+"))?\\s*\\)")}function zX(){let b={rgb:void 0,rgba:void 0,hsl:void 0,hsla:void 0,hex3:void 0,hex4:void 0,hex5:void 0,hex6:void 0,hex8:void 0,oklch:void 0,oklab:void 0,lab:void 0,lch:void 0,hwb:void 0};if(b.rgb===void 0)b.rgb=new RegExp("rgb"+Dk(Yb,Yb,Yb)),b.rgba=new RegExp("rgba"+Dk(Yb,Yb,Yb,Yb)),b.hsl=new RegExp("hsl"+Dk(Yb,yk,yk)),b.hsla=new RegExp("hsla"+Dk(Yb,yk,yk,Yb)),b.hex3=/^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,b.hex4=/^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,b.hex6=/^#([0-9a-fA-F]{6})$/,b.hex8=/^#([0-9a-fA-F]{8})$/,b.oklch=Hj("oklch"),b.oklab=Hj("oklab"),b.lab=Hj("lab"),b.lch=Hj("lch"),b.hwb=Hj("hwb");return b}function rb(b,j,k){if(k<0)k+=1;if(k>1)k-=1;if(k<0.16666666666666666)return b+(j-b)*6*k;if(k<0.5)return j;if(k<0.6666666666666666)return b+(j-b)*(0.6666666666666666-k)*6;return b}function iz(b,j,k){let q=k<0.5?k*(1+j):k+j-k*j,w=2*k-q,z=rb(w,q,b+0.3333333333333333),G=rb(w,q,b),J=rb(w,q,b-0.3333333333333333);return Math.round(z*255)<<24|Math.round(G*255)<<16|Math.round(J*255)<<8}function nb(b){let j=Number.parseInt(b,10);if(j<0)return 0;if(j>255)return 255;return j}function nz(b){return(Number.parseFloat(b)%360+360)%360/360}function az(b){let j=Number.parseFloat(b);if(j<0)return 0;if(j>1)return 255;return Math.round(j*255)}function Wk(b){let j=Number.parseFloat(b);if(j<0)return 0;if(j>100)return 1;return j/100}function Kb(b,j){if(b==="none")return 0;if(b.endsWith("%"))return Number.parseFloat(b)/100*j;return Number.parseFloat(b)}function sq(b){if(b==="none")return 0;if(b.endsWith("rad"))return Number.parseFloat(b)*180/Math.PI;if(b.endsWith("grad"))return Number.parseFloat(b)*0.9;if(b.endsWith("turn"))return Number.parseFloat(b)*360;return Number.parseFloat(b)}function Lj(b){if(b===void 0||b==="none")return 1;if(b.endsWith("%"))return Math.max(0,Math.min(1,Number.parseFloat(b)/100));return Math.max(0,Math.min(1,Number.parseFloat(b)))}function bj(b){if(b<=0.0031308)return 12.92*b;return 1.055*b**0.4166666666666667-0.055}function vk(b){return Math.max(0,Math.min(1,b))}function Oj(b,j,k,q){let w=Math.round(vk(b)*255),z=Math.round(vk(j)*255),G=Math.round(vk(k)*255),J=Math.round(vk(q)*255);return(w<<24|z<<16|G<<8|J)>>>0}function tz(b,j,k){let q=b+0.3963377774*j+0.2158037573*k,w=b-0.1055613458*j-0.0638541728*k,z=b-0.0894841775*j-1.291485548*k,G=q*q*q,J=w*w*w,K=z*z*z,M=4.0767416621*G-3.3077115913*J+0.2309699292*K,Q=-1.2684380046*G+2.6097574011*J-0.3413193965*K,X=-0.0041960863*G-0.7034186147*J+1.707614701*K;return[bj(M),bj(Q),bj(X)]}function oz(b,j,k){let K=(b+16)/116,M=j/500+K,Q=K-k/200,X=M*M*M,U=Q*Q*Q,Y=X>0.008856451679035631?X:(116*M-16)/903.2962962962963,Z=b>8?((b+16)/116)**3:b/903.2962962962963,$=U>0.008856451679035631?U:(116*Q-16)/903.2962962962963,N=Y*0.95047,y=Z*1,W=$*1.08883,v=3.2404542*N-1.5371385*y-0.4985314*W,D=-0.969266*N+1.8760108*y+0.041556*W,R=0.0556434*N-0.2040259*y+1.0572252*W;return[bj(v),bj(D),bj(R)]}function GX(b,j,k){if(j+k>=1){let M=j/(j+k);return[M,M,M]}let q=1,w=0,z=rb(w,q,b+0.3333333333333333),G=rb(w,q,b),J=rb(w,q,b-0.3333333333333333),K=1-j-k;return[z*K+j,G*K+j,J*K+j]}var ez={transparent:0,aliceblue:4042850303,antiquewhite:4209760255,aqua:16777215,aquamarine:2147472639,azure:4043309055,beige:4126530815,bisque:4293182719,black:255,blanchedalmond:4293643775,blue:65535,blueviolet:2318131967,brown:2771004159,burlywood:3736635391,burntsienna:3934150143,cadetblue:1604231423,chartreuse:2147418367,chocolate:3530104575,coral:4286533887,cornflowerblue:1687547391,cornsilk:4294499583,crimson:3692313855,cyan:16777215,darkblue:35839,darkcyan:9145343,darkgoldenrod:3095792639,darkgray:2846468607,darkgreen:6553855,darkgrey:2846468607,darkkhaki:3182914559,darkmagenta:2332068863,darkolivegreen:1433087999,darkorange:4287365375,darkorchid:2570243327,darkred:2332033279,darksalmon:3918953215,darkseagreen:2411499519,darkslateblue:1211993087,darkslategray:793726975,darkslategrey:793726975,darkturquoise:13554175,darkviolet:2483082239,deeppink:4279538687,deepskyblue:12582911,dimgray:1768516095,dimgrey:1768516095,dodgerblue:512819199,firebrick:2988581631,floralwhite:4294635775,forestgreen:579543807,fuchsia:4278255615,gainsboro:3705462015,ghostwhite:4177068031,gold:4292280575,goldenrod:3668254975,gray:2155905279,green:8388863,greenyellow:2919182335,grey:2155905279,honeydew:4043305215,hotpink:4285117695,indianred:3445382399,indigo:1258324735,ivory:4294963455,khaki:4041641215,lavender:3873897215,lavenderblush:4293981695,lawngreen:2096890111,lemonchiffon:4294626815,lightblue:2916673279,lightcoral:4034953471,lightcyan:3774873599,lightgoldenrodyellow:4210742015,lightgray:3553874943,lightgreen:2431553791,lightgrey:3553874943,lightpink:4290167295,lightsalmon:4288707327,lightseagreen:548580095,lightskyblue:2278488831,lightslategray:2005441023,lightslategrey:2005441023,lightsteelblue:2965692159,lightyellow:4294959359,lime:16711935,limegreen:852308735,linen:4210091775,magenta:4278255615,maroon:2147483903,mediumaquamarine:1724754687,mediumblue:52735,mediumorchid:3126187007,mediumpurple:2473647103,mediumseagreen:1018393087,mediumslateblue:2070474495,mediumspringgreen:16423679,mediumturquoise:1221709055,mediumvioletred:3340076543,midnightblue:421097727,mintcream:4127193855,mistyrose:4293190143,moccasin:4293178879,navajowhite:4292783615,navy:33023,oldlace:4260751103,olive:2155872511,olivedrab:1804477439,orange:4289003775,orangered:4282712319,orchid:3664828159,palegoldenrod:4008225535,palegreen:2566625535,paleturquoise:2951671551,palevioletred:3681588223,papayawhip:4293907967,peachpuff:4292524543,peru:3448061951,pink:4290825215,plum:3718307327,powderblue:2967529215,purple:2147516671,rebeccapurple:1714657791,red:4278190335,rosybrown:3163525119,royalblue:1097458175,saddlebrown:2336560127,salmon:4202722047,sandybrown:4104413439,seagreen:780883967,seashell:4294307583,sienna:2689740287,silver:3233857791,skyblue:2278484991,slateblue:1784335871,slategray:1887473919,slategrey:1887473919,snow:4294638335,springgreen:16744447,steelblue:1182971135,tan:3535047935,teal:8421631,thistle:3636451583,tomato:4284696575,turquoise:1088475391,violet:4001558271,wheat:4125012991,white:4294967295,whitesmoke:4126537215,yellow:4294902015,yellowgreen:2597139199};function JX(b){let j=zX(),k;if(j.hex6){if(k=j.hex6.exec(b))return Number.parseInt(k[1]+"ff",16)>>>0}if(ez[b]!==void 0)return ez[b];if(j.rgb){if(k=j.rgb.exec(b))return(nb(k[1])<<24|nb(k[2])<<16|nb(k[3])<<8|255)>>>0}if(j.rgba){if(k=j.rgba.exec(b))return(nb(k[1])<<24|nb(k[2])<<16|nb(k[3])<<8|az(k[4]))>>>0}if(j.hex3){if(k=j.hex3.exec(b))return Number.parseInt(k[1]+k[1]+k[2]+k[2]+k[3]+k[3]+"ff",16)>>>0}if(j.hex8){if(k=j.hex8.exec(b))return Number.parseInt(k[1],16)>>>0}if(j.hex4){if(k=j.hex4.exec(b))return Number.parseInt(k[1]+k[1]+k[2]+k[2]+k[3]+k[3]+k[4]+k[4],16)>>>0}if(j.hsl){if(k=j.hsl.exec(b))return(iz(nz(k[1]),Wk(k[2]),Wk(k[3]))|255)>>>0}if(j.hsla){if(k=j.hsla.exec(b))return(iz(nz(k[1]),Wk(k[2]),Wk(k[3]))|az(k[4]))>>>0}if(j.oklch){if(k=j.oklch.exec(b)){let q=Kb(k[1],1),w=Kb(k[2],0.4),z=sq(k[3]),G=Lj(k[4]),J=z*Math.PI/180,[K,M,Q]=tz(q,w*Math.cos(J),w*Math.sin(J));return Oj(K,M,Q,G)}}if(j.oklab){if(k=j.oklab.exec(b)){let q=Kb(k[1],1),w=Kb(k[2],0.4),z=Kb(k[3],0.4),G=Lj(k[4]),[J,K,M]=tz(q,w,z);return Oj(J,K,M,G)}}if(j.lab){if(k=j.lab.exec(b)){let q=Kb(k[1],100),w=Kb(k[2],125),z=Kb(k[3],125),G=Lj(k[4]),[J,K,M]=oz(q,w,z);return Oj(J,K,M,G)}}if(j.lch){if(k=j.lch.exec(b)){let q=Kb(k[1],100),w=Kb(k[2],150),z=sq(k[3]),G=Lj(k[4]),J=z*Math.PI/180,[K,M,Q]=oz(q,w*Math.cos(J),w*Math.sin(J));return Oj(K,M,Q,G)}}if(j.hwb){if(k=j.hwb.exec(b)){let q=sq(k[1]),w=Kb(k[2],1),z=Kb(k[3],1),G=Lj(k[4]),[J,K,M]=GX(q/360,w,z);return Oj(J,K,M,G)}}throw Error(`invalid color string ${b} provided`)}var rz=(b)=>{return(b>>24&255)/255},KX=(b)=>{return b>>16&255},MX=(b)=>{return b>>8&255},QX=(b)=>{return b&255},UX=(b,j,k,q)=>{return`rgba(${b}, ${j}, ${k}, ${q})`};function XX(b){let j=JX(b);return(j<<24|j>>>8)>>>0}var YX=(b,j,k,q)=>{let[w,z,G,J]=[KX,MX,QX,rz].map((K)=>{let M=oj(b,j,k.map((Q)=>K(Q)),{easing:q?.easing,extrapolateLeft:"clamp",extrapolateRight:"clamp",posterize:q?.posterize});if(K===rz)return Number(M.toFixed(3));return Math.round(M)});return UX(w,z,G,J)},qK=(b,j,k,q)=>{if(typeof b>"u")throw TypeError("input can not be undefined");if(typeof j>"u")throw TypeError("inputRange can not be undefined");if(typeof k>"u")throw TypeError("outputRange can not be undefined");if(j.length!==k.length)throw TypeError("inputRange ("+j.length+" values provided) and outputRange ("+k.length+" values provided) must have the same length");let w=k.map((z)=>XX(z));return YX(b,j,w,q)},bG=({easing:b,forceSpringAllowTail:j})=>{switch(b.type){case"linear":return eb.linear;case"step1":return eb.step1;case"spring":return eb.spring({allowTail:j??b.allowTail??void 0,damping:b.damping,durationRestThreshold:b.durationRestThreshold??void 0,mass:b.mass,overshootClamping:b.overshootClamping,stiffness:b.stiffness});case"bezier":return nJ(b.x1,b.y1,b.x2,b.y2);default:throw TypeError(`Unsupported easing: ${JSON.stringify(b)}`)}},ej=({frame:b,forceSpringAllowTail:j,status:k})=>{let{keyframes:q,easing:w,clamping:z,interpolationFunction:G}=k;if(q.length===0)return null;let J=[...q].sort((Q,X)=>Q.frame-X.frame),K=J.map((Q)=>Q.frame),M=J.map((Q)=>Q.value);if(G==="interpolateColors"){if(!M.every((Q)=>typeof Q==="string"))return null;if(q.length===1)return M[0];try{return qK(b,K,M,{easing:w.map((Q)=>bG({easing:Q,forceSpringAllowTail:j})),posterize:k.posterize})}catch{return null}}if(G!=="interpolate")return null;try{return oj(b,K,M,{easing:w.map((Q)=>bG({easing:Q,forceSpringAllowTail:j})),extrapolateLeft:z.left,extrapolateRight:z.right,output:k.output,posterize:k.posterize})}catch{return null}},zq=({dragOverrideValue:b,frame:j})=>{if(b===void 0)return{type:"none"};if(b.type==="static")return{type:"resolved",value:b.value};if(j===null)return{type:"none"};let k=ej({forceSpringAllowTail:null,frame:j,status:b.status});if(k===null)return{type:"none"};return{type:"resolved",value:k}},wK=({propStatus:b,dragOverrideValue:j,defaultValue:k,frame:q=null,shouldResortToDefaultValueIfUndefined:w=!1})=>{let z=zq({dragOverrideValue:j,frame:q});if(z.type==="resolved"&&z.value!==void 0)return z.value;if(b.status==="keyframed"){if(q!==null)return ej({forceSpringAllowTail:null,frame:q,status:b});return w?k:void 0}if(b.codeValue===void 0&&w)return k;return b.codeValue},nw=zK({overrideIdToNodePathMappings:{}}),ZX=zK({setOverrideIdToNodePath:()=>{throw Error("OverrideIdsToNodePathsSettersContext not initialized")}}),$X=({descriptor:b,propStatusOverrides:j,dragOverrides:k,frame:q})=>{if(!j&&!k)return{params:b.params,effectKey:b.effectKey};let w={...b.params};if(j){for(let[z,G]of Object.entries(j))if(G!==void 0)w[z]=G}if(k)for(let[z,G]of Object.entries(k)){let J=zq({dragOverrideValue:G,frame:q});if(J.type==="resolved")w[z]=J.value}return{params:w,effectKey:b.definition.calculateKey(w)}},NX=(b,j)=>{if(!b)return null;let k={},q=!1;for(let[w,z]of Object.entries(b)){if(z.status==="static"){k[w]=z.codeValue,q=!0;continue}if(z.status==="keyframed"){let G=ej({forceSpringAllowTail:null,frame:j,status:z});if(G!==null)k[w]=G,q=!0}}return q?k:null},rj=(b)=>{let j=dJ(null),k=b.map((z)=>z.definition),q=j.current;if(q!==null&&q.length===k.length&&q.every((z,G)=>z===k[G]))return q;return j.current=k,k},GK=({propStatuses:b,nodePath:j,effectIndex:k})=>{let q=b[xb(j)];if(!q)return{type:"cannot-update-sequence",reason:"not-found"};if(!q.canUpdate)return{type:"cannot-update-sequence",reason:q.reason};let w=q.effects.find((z)=>z.effectIndex===k);if(!w)return{type:"cannot-update-effect",reason:"not-found"};if(!w.canUpdate)return{type:"cannot-update-effect",reason:w.reason};return{type:"can-update-effect",props:w.props}},JK=(b,j)=>{let k=b[xb(j)];if(!k)return;if(!k.canUpdate)return;return k.props},bk=({effects:b,overrideId:j})=>{let k=dJ(null),{propStatuses:q}=fq(jq),{getEffectDragOverrides:w}=fq(qq),z=Jb(),{overrideIdToNodePathMappings:G}=fq(nw),J=k.current,K=j?G[j]??null:null,M=b.map((U,Y)=>{if(K===null)return{descriptor:U,params:U.params,effectKey:U.effectKey};let Z=GK({propStatuses:q,nodePath:K,effectIndex:Y}),$=Z.type==="can-update-effect"?NX(Z.props,z):null,N=w(K,Y),y=Object.keys(N).length===0?null:N,{params:W,effectKey:v}=$X({descriptor:U,propStatusOverrides:$,dragOverrides:y,frame:z});return{descriptor:U,params:W,effectKey:v}});if(J!==null&&J.length===M.length&&J.every((U,Y)=>U.definition===M[Y].descriptor.definition&&U.effectKey===M[Y].effectKey))return J;let X=M.map(({descriptor:U,params:Y,effectKey:Z})=>({definition:U.definition,effectKey:Z,params:Y,memoized:!0}));return k.current=X,X},aw=(b,j)=>{let k={};for(let q of Object.keys(b)){let w=b[q];if(w.type==="hidden")continue;else if(w.type==="enum"){k[q]=w;let z=j(q)??w.default,G=w.variants[z];if(G)Object.assign(k,aw(G,j))}else k[q]=w}return k},tw=(b)=>{let j={},k=(q,w)=>{if(q in j)return;j[q]=w};for(let q of Object.keys(b)){let w=b[q];if(k(q,w),w.type==="enum")for(let z of Object.values(w.variants)){let G=tw(z);for(let J of Object.keys(G))k(J,G[J])}}return j},RX=(b)=>{let j=b,k=new Set;return{store:{getSnapshot:()=>j,subscribe:(w)=>{return k.add(w),()=>{k.delete(w)}}},setSnapshot:(w)=>{if(j===w)return;j=w;for(let z of k)z()}}},KK=({schema:b,key:j,value:k})=>{let q=b[j];if(!q)throw Error("Key "+JSON.stringify(j)+" not found in schema");if(typeof k!=="string")throw Error("Value must be a string, but is "+JSON.stringify(k));if(q.type!=="enum")throw Error("Key "+JSON.stringify(j)+" is not an enum");if(!q.variants[k])throw Error("Value for "+JSON.stringify(j)+" must be one of "+Object.keys(q.variants).map((J)=>JSON.stringify(J)).join(", ")+", got "+JSON.stringify(k));let z=Object.keys(q.variants).filter((J)=>J!==k),G=new Set;for(let J of z){let K=q.variants[J],M=Object.keys(K);for(let Q of M)G.add(Q)}return[...G]},jG={type:"linear"},yX=({insertedKeyframeIndex:b,easingLength:j,keyframeCount:k})=>{if(!(b>0&&b<k-1)||j===0)return null;return Math.min(b-1,j-1)},DX=(b)=>{return{type:"static",value:b}},TX=({status:b,frame:j,value:k})=>{let q=b.keyframes.findIndex((G)=>G.frame===j),w=q===-1?[...b.keyframes,{frame:j,value:k}].sort((G,J)=>G.frame-J.frame):b.keyframes.map((G,J)=>J===q?{frame:j,value:k}:G),z=[...b.easing];if(q===-1){let G=w.findIndex((M)=>M.frame===j),J=yX({insertedKeyframeIndex:G,easingLength:z.length,keyframeCount:w.length}),K=J===null?jG:z[J];z.splice(G,0,K)}while(z.length<w.length-1)z.push(jG);if(z.length>w.length-1)z.length=w.length-1;return{type:"keyframed",status:{...b,keyframes:w,easing:z}}},WX=(b)=>{if(b?.type!=="static")return;return b.value},vX=(b)=>{return b!==null&&b.status==="keyframed"},MK=(b,j)=>{if(j in b)return b[j];for(let k of Object.values(b)){if(k.type!=="enum")continue;for(let q of Object.values(k.variants)){let w=MK(q,j);if(w)return w}}return},QK=({schema:b,currentValue:j,overrideValues:k,propStatus:q,frame:w})=>{let z={},G=new Set;for(let J of Object.keys(j)){let K=q?.[J]??null,M=MK(b,J);if(M?.type==="hidden")continue;let Q;if(K===null)Q=j[J];else if(vX(K))if(M?.type==="array"||M?.keyframable===!1)Q=j[J];else{let X=zq({dragOverrideValue:k[J],frame:w});if(X.type==="resolved")Q=X.value;else if(w!==null)Q=ej({forceSpringAllowTail:null,frame:w,status:K})??j[J];else Q=j[J]}else if(K.status==="computed")Q=j[J];else Q=wK({propStatus:K,dragOverrideValue:k[J],defaultValue:M?.default,frame:w,shouldResortToDefaultValueIfUndefined:!1});if(M?.type==="asset"&&typeof Q==="string"&&Q.startsWith(Fj))Q=`${window.remotion_staticBase}/${Q.slice(Fj.length)}`;if(Q===void 0)G.add(J);z[J]=Q}for(let J of Object.keys(k))if(b[J]?.type==="enum"){let K=KK({schema:b,key:J,value:z[J]});for(let M of K)G.add(M)}return{merged:z,propsToDelete:G}},UK=(b,j)=>{let k=j.split("."),q=b;for(let w of k){if(q===null||q===void 0||typeof q!=="object")return;q=q[w]}return q},XK=({flatSchema:b,key:j,props:k})=>{let q=UK(k,j);if(b[j]?.type==="text-content"&&typeof q!=="string")return;return q},xX=(b,j,k)=>{let q={};for(let w of j)q[w]=k?XK({flatSchema:k,key:w,props:b}):UK(b,w);return q},EX=(b,j)=>{return Object.keys(aw(b,(k)=>j[k]))},HX=({flatSchema:b,props:j,valuesDotNotation:k,schemaKeys:q,propsToDelete:w})=>{let z={...j};for(let J of q){let K=k[J];if(b[J]?.type==="text-content"&&K===void 0)continue;let M=J.split(".");if(M.length===1){z[J]=K;continue}let Q=z;for(let X=0;X<M.length-1;X++){let U=M[X];if(typeof Q[U]==="object"&&Q[U]!==null)Q[U]={...Q[U]};else Q[U]={};Q=Q[U]}Q[M[M.length-1]]=K}let G=new Set([...w].filter((J)=>!(b[J]?.type==="text-content"&&k[J]===void 0)));return CU(z,G),z},kG={},Db=({Component:b,componentName:j,componentIdentity:k,schema:q,supportsEffects:w})=>{let z=NU(q),G=tw(z),J=Object.keys(G),K=OU((M,Q)=>{let{_remotionInternalStack:X,...U}=M,Y=U,Z=p(),$=Nk(Lb);if(!Z.isStudio||Z.isRendering||!$)return Vq.createElement(b,{...Y,controls:null,ref:Q});let{propStatuses:N}=Nk(jq),{getDragOverrides:y}=Nk(qq),W=Nk(nw),v=Jb();if(Y.controls){let C=Y.controls;if(Pw(C)===null)Pz(C,X);return Vq.createElement(b,{...Y,ref:Q})}let[D]=fz(()=>{if(!X)return String(Math.random());let C=kG[X];if(C)return C;let S=String(Math.random());return kG[X]=S,S}),R=Z.isReadOnlyStudio?null:W.overrideIdToNodePathMappings[D]??null,T=J.map((C)=>XK({flatSchema:G,key:C,props:Y})),x=hq(()=>xX(Y,J,G),T),[L]=fz(()=>RX(x));gU(()=>{L.setSnapshot(x)},[x,L]);let H=hq(()=>{return{schema:z,currentRuntimeValueDotNotation:x,runtimeValues:L.store,overrideId:D,supportsEffects:w,componentIdentity:k,componentName:j}},[x,D,L.store]);Pz(H,X);let{merged:E,propsToDelete:O}=hq(()=>{return QK({schema:z,currentValue:x,overrideValues:R===null?{}:y(R),propStatus:R===null?void 0:JK(N,R),frame:v})},[x,y,R,N,v]),g=EX(z,E),B=HX({flatSchema:G,props:Y,valuesDotNotation:E,schemaKeys:g,propsToDelete:O});return Vq.createElement(b,{...B,controls:H,ref:Q})});return K.displayName=`withInteractivitySchema(${b.displayName||b.name||"Component"})`,K},pq=[],LX=({from:b=0,trimBefore:j=0,freeze:k,durationInFrames:q=1/0,children:w,name:z,height:G,width:J,showInTimeline:K=!0,hidden:M=!1,controls:Q,_remotionInternalEffects:X,_remotionInternalLoopDisplay:U,_remotionInternalStack:Y,_remotionInternalDocumentationLink:Z,_remotionInternalSingleChildComponent:$,_remotionInternalPremountDisplay:N,_remotionInternalPostmountDisplay:y,_remotionInternalIsMedia:W,outlineRef:v,cropLeft:D,cropRight:R,cropTop:T,cropBottom:x,...L},H)=>{let{layout:E="absolute-fill"}=L,[O]=wU(()=>String(Math.random())),g=Iq(o),B=g?g.cumulatedFrom+g.relativeFrom:0,C=sk();if(E!=="absolute-fill"&&E!=="none")throw TypeError(`The layout prop of <Sequence /> expects either "absolute-fill" or "none", but you passed: ${E}`);let S={cropLeft:D,cropRight:R,cropTop:T,cropBottom:x},_=Object.values(S).some((Wj)=>Wj!==void 0);if(E==="none"&&_)throw TypeError('The cropLeft, cropRight, cropTop and cropBottom props of <Sequence /> are only supported with layout="absolute-fill".');VJ(S);let{left:P,right:I,top:A,bottom:F}=sw(S);if(E==="none"&&typeof L.style<"u")throw TypeError('If layout="none", you may not pass a style. Passed: '+JSON.stringify(L.style));if(typeof q!=="number")throw TypeError(`You passed to durationInFrames an argument of type ${typeof q}, but it must be a number.`);if(q<=0)throw TypeError(`durationInFrames must be positive, but got ${q}`);if(typeof b!=="number")throw TypeError(`You passed to the "from" props of your <Sequence> an argument of type ${typeof b}, but it must be a number.`);if(!Number.isFinite(b))throw TypeError(`The "from" prop of a sequence must be finite, but got ${b}.`);if(typeof j!=="number")throw TypeError(`You passed to the "trimBefore" prop of your <Sequence> an argument of type ${typeof j}, but it must be a number.`);if(j<0)throw TypeError(`The "trimBefore" prop of <Sequence /> must be greater than or equal to 0, but got ${j}.`);if(Number.isNaN(j))throw TypeError('The "trimBefore" prop of <Sequence /> must be a real number, but it is NaN.');if(!Number.isFinite(j))throw TypeError(`The "trimBefore" prop of <Sequence /> must be finite, but it is ${j}.`);if(typeof k<"u"&&k!==null){if(typeof k!=="number")throw TypeError(`The "freeze" prop of <Sequence /> must be a number, but is of type ${typeof k}.`);if(Number.isNaN(k))throw TypeError('The "freeze" prop of <Sequence /> must be a real number, but it is NaN.');if(!Number.isFinite(k))throw TypeError(`The "freeze" prop of <Sequence /> must be finite, but it is ${k}.`)}let V=Pb(),l=Ub(),m=b-j,u=(g?.absoluteFrom??0)+m,c=g?Math.min(g.durationInFrames-m,q):q,h=Math.max(0,Math.min(l.durationInFrames-b,c)),{registerSequence:f,unregisterSequence:n}=Iq($j),a=cz(null),s=L.layout==="none"?v??null:v??a,wb=pb(()=>{return g?.premounting||Boolean(L._remotionInternalIsPremounting)},[L._remotionInternalIsPremounting,g?.premounting]),zb=pb(()=>{return g?.postmounting||Boolean(L._remotionInternalIsPostmounting)},[L._remotionInternalIsPostmounting,g?.postmounting]),sb=B+m,Rq=g?g.cumulatedFrom+g.relativeFrom:0,yq=g?Rq-g.cumulatedNegativeFrom:0,i=Math.max(0,yq,sb),Tb=sb-i,Tj=pb(()=>{return{absoluteFrom:u,cumulatedFrom:B,relativeFrom:m,cumulatedNegativeFrom:Tb,durationInFrames:h,parentFrom:g?.relativeFrom??0,id:O,height:G??g?.height??null,width:J??g?.width??null,premounting:wb,postmounting:zb,premountDisplay:N??null,postmountDisplay:y??null}},[B,u,m,h,g,O,G,J,wb,zb,N,y,Tb]),Gk=pb(()=>{return z??""},[z]),Jk=Z??"https://www.remotion.dev/docs/sequence",Yz=p(),Kk=Iq(wq),Mk=cz(null);Mk.current=Q?Pw(Q)??Y??null:Y??null;let _b=typeof k==="number"?k:null,Qk=j===0?null:j,Zz=g?.cumulatedNegativeFrom??0,$z=W&&W.type!=="image"?W.data.startMediaFrom+Zz-Tb:null,Uk=W&&W.type!=="image"?W.data.startMediaFrom+Zz:null,Nz=W&&W.type!=="image"&&Uk!==null?_b===null?null:Uk+(U?_b%U.durationInFrames:_b)*W.data.playbackRate:null,Dq=Q?.schema,Tq=Q?.runtimeValues,Wq=Q?.overrideId,vq=Q?.supportsEffects,xq=Q?.componentIdentity,Eq=Q?.componentName,Xk=pb(()=>{if(Dq===void 0||Tq===void 0||Wq===void 0||vq===void 0||xq===void 0||Eq===void 0)return null;return{schema:Dq,runtimeValues:Tq,overrideId:Wq,supportsEffects:vq,componentIdentity:xq,componentName:Eq}},[xq,Eq,Wq,Tq,Dq,vq]);qU(()=>{if(!Yz.isStudio)return;if(W){if(W.type==="image")f({type:"image",controls:Xk,effects:X??pq,displayName:Gk,documentationLink:Jk,duration:h,from:b,trimBefore:Qk,id:O,loopDisplay:U,nonce:C.get(),parent:g?.id??null,postmountDisplay:y??null,premountDisplay:N??null,showInTimeline:K,src:W.src,getStack:()=>Mk.current,refForOutline:s??null,isInsideSeries:Kk,frozenFrame:_b,singleChildComponent:$??null});else f({type:W.type,controls:Xk,effects:X??pq,displayName:Gk,documentationLink:Jk,doesVolumeChange:W.data.doesVolumeChange,duration:h,from:b,trimBefore:Qk,id:O,loopDisplay:U,nonce:C.get(),parent:g?.id??null,playbackRate:W.data.playbackRate,postmountDisplay:y??null,premountDisplay:N??null,showInTimeline:K,src:W.data.src,getStack:()=>Mk.current,startMediaFrom:$z??W.data.startMediaFrom,mediaFrameAtSequenceZero:Uk,volume:W.data.volumes,refForOutline:s??null,isInsideSeries:Kk,frozenFrame:_b,frozenMediaFrame:Nz,singleChildComponent:$??null});return()=>{n(O)}}return f({from:b,trimBefore:Qk,duration:h,id:O,displayName:Gk,documentationLink:Jk,parent:g?.id??null,type:"sequence",showInTimeline:K,nonce:C.get(),loopDisplay:U,getStack:()=>Mk.current,premountDisplay:N??null,postmountDisplay:y??null,controls:Xk,effects:X??pq,refForOutline:s??null,isInsideSeries:Kk,frozenFrame:_b,singleChildComponent:$??null}),()=>{n(O)}},[q,O,z,f,Gk,n,g?.id,h,b,j,Qk,K,C,U,N,y,Yz.isStudio,Xk,X,W,Jk,s,Kk,_b,$z,Uk,Nz,$]);let HM=Math.ceil(B+b+q-1),Hq=V<B+b?null:V>HM?null:w,Lq=Hq===null||typeof k>"u"||k===null?Hq:hb(Xj,{frame:k,children:Hq}),Oq=L.layout==="none"?void 0:L.style,gq=FJ({left:P,right:I,top:A,bottom:F,style:Oq}),LM=kU((Wj)=>{if(a.current=Wj,typeof H==="function")H(Wj);else if(H)H.current=Wj},[H]),OM=pb(()=>{return{flexDirection:void 0,...J?{width:J}:{},...G?{height:G}:{},...Oq??{},...gq?{clipPath:gq}:{}}},[gq,G,Oq,J]);if(H!==null&&E==="none")throw TypeError('It is not supported to pass both a `ref` and `layout="none"` to <Sequence />.');if(M)return null;return hb(o.Provider,{value:Tj,children:Lq===null?null:L.layout==="none"?Lq:hb(Fk,{ref:LM,style:OM,className:L.className,children:Lq})})},OX=cw(LX),gX=(b,j)=>{if(b.layout==="none")throw Error('`<Sequence>` with `premountFor` and `postmountFor` props does not support layout="none"');let{style:k,from:q=0,durationInFrames:w=1/0,premountFor:z=0,postmountFor:G=0,styleWhilePremounted:J,styleWhilePostmounted:K,...M}=b,{freezeFrame:Q,isPremountingOrPostmounting:X,postmountingActive:U,premountingActive:Y,premountingStyle:Z}=tj({from:q,durationInFrames:w,premountFor:z,postmountFor:G,style:k??null,styleWhilePremounted:J??null,styleWhilePostmounted:K??null,hideWhilePremounted:"opacity"});return hb(Xj,{frame:Q,active:X,children:hb(Gq,{ref:j,from:q,durationInFrames:w,style:Z??void 0,_remotionInternalPremountDisplay:z,_remotionInternalPostmountDisplay:G,_remotionInternalIsPremounting:Y,_remotionInternalIsPostmounting:U,...M})})},CX=cw(gX),BX=(b,j)=>{let k=p(),{fps:q}=Ub();if(b.layout!=="none"&&!k.isRendering){let w=nj?b.premountFor??q:b.premountFor;if(w||b.postmountFor)return hb(CX,{ref:j,...b,premountFor:w})}return hb(OX,{...b,ref:j})},Gq=cw(BX),YK=Gq,bb=Db({Component:Gq,componentName:"<Sequence>",componentIdentity:"dev.remotion.remotion.Sequence",schema:zj,supportsEffects:!1}),l3=Db({Component:Gq,componentName:"<Sequence>",componentIdentity:null,schema:yU,supportsEffects:!1}),ZK={...yb,...Zb,...Cb,...Ob,...gb,...ij,...fw},PX=(b,j)=>{if(typeof b==="function")b(j);else if(b)b.current=j},cX=({ref:b,from:j,trimBefore:k,freeze:q,durationInFrames:w,hidden:z,name:G,showInTimeline:J,stack:K,controls:M,children:Q,...X})=>{let U=Uj(),Y=IX(null),Z=SX(($)=>{Y.current=$,PX(b,$)},[b]);if(U===null)return z?null:iq(Fk,{ref:Z,...X,children:Q});return iq(bb,{layout:"none",from:j??0,trimBefore:k,freeze:q,durationInFrames:w??1/0,hidden:z,name:G??"<AbsoluteFill>",showInTimeline:J??!0,controls:M,_remotionInternalStack:K,_remotionInternalDocumentationLink:"https://www.remotion.dev/docs/absolute-fill",outlineRef:Y,children:iq(Fk,{ref:Z,...X,children:Q})})},$K=Db({Component:cX,componentName:"<AbsoluteFill>",componentIdentity:"dev.remotion.remotion.AbsoluteFill",schema:ZK,supportsEffects:!1});r($K);var mb=({cropLeft:b,cropRight:j,cropTop:k,cropBottom:q,style:w,componentName:z})=>{return VJ({cropLeft:b,cropRight:j,cropTop:k,cropBottom:q},z),FX(()=>{let G=FJ({...sw({cropLeft:b,cropRight:j,cropTop:k,cropBottom:q}),style:w});if(G===null)return w;return{...w,clipPath:G}},[q,b,j,k,w])},RK=(b,j,k)=>{switch(b){case"fill":return[0,0,j.width,j.height,0,0,k.width,k.height];case"contain":{let q=Math.min(k.width/j.width,k.height/j.height),w=(k.width-j.width*q)/2,z=(k.height-j.height*q)/2;return[0,0,j.width,j.height,w,z,j.width*q,j.height*q]}case"cover":{let q=Math.max(k.width/j.width,k.height/j.height),w=(k.width-j.width*q)/2,z=(k.height-j.height*q)/2;return[0,0,j.width,j.height,w,z,j.width*q,j.height*q]}default:throw Error("Unknown fit: "+b)}},dX="https://remotion.dev/docs/troubleshooting/webgl2-context",yK=(b,j)=>`Failed to acquire ${b} context for ${j}. Pass --gl=angle when using the CLI, set chromiumOptions: { gl: "angle" } when using SSR APIs, or set "OpenGL render backend" to "angle" in the Advanced section when rendering in the Studio. See ${dX}`,uX=(b)=>Error(yK("WebGL",b)),DK=(b)=>Error(yK("WebGL2",b));class TK{width;height;pairs=new Map;lostContexts=new Set;constructor(b,j){this.width=b,this.height=j}getPair(b){let j=this.pairs.get(b);if(j)return j;let k=[this.allocateCanvas(b),this.allocateCanvas(b)];return this.pairs.set(b,k),k}assertContextNotLost(b){if(this.lostContexts.has(b))throw Error("WebGL context was lost during canvas effect rendering. This typically happens in headless or memory-constrained environments (e.g. Remotion Lambda). Try reducing concurrency or increasing the Lambda function memory.")}allocateCanvas(b){let j=document.createElement("canvas");switch(j.width=this.width,j.height=this.height,b){case"2d":{if(!j.getContext("2d",{colorSpace:"srgb"}))throw Error("Failed to acquire 2D context for canvas effect");return j}case"webgl2":{let k=j.getContext("webgl2",{premultipliedAlpha:!0,alpha:!0,preserveDrawingBuffer:!0});if(!k)throw DK("canvas effect");return j.addEventListener("webglcontextlost",(q)=>{q.preventDefault(),this.lostContexts.add(j)}),j.addEventListener("webglcontextrestored",()=>{this.lostContexts.delete(j)}),k.pixelStorei(k.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),j}case"webgpu":{if(typeof navigator>"u"||!("gpu"in navigator))throw Error("WebGPU is not available in this environment for canvas effect");return j}default:throw Error(`Unknown effect backend: ${b}`)}}}var sX=(b)=>{let j=[],k=[],q=null;for(let w of b){let{backend:z}=w.definition;if(q===null||z===q)k.push(w),q=z;else j.push({backend:q,effects:k}),k=[w],q=z}if(q!==null&&k.length>0)j.push({backend:q,effects:k});return j},xk=null,pX=()=>{if(xk)return xk;return xk=(async()=>{if(typeof navigator>"u"||!("gpu"in navigator))throw Error("WebGPU is not available in this environment");let{gpu:b}=navigator,j=await b.requestAdapter();if(!j)throw Error("No WebGPU adapter available");return j.requestDevice()})(),xk},WK=(b,j)=>({pool:new TK(b,j),setupCache:new WeakMap,cleanupRegistry:[],currentRunId:0}),Rw=(b)=>{b.currentRunId++;for(let j of b.cleanupRegistry)j.definition.cleanup(j.state)},iX=(b,j,k)=>{let q=j,w=b.setupCache.get(q);if(!w)w=new WeakMap,b.setupCache.set(q,w);if(w.has(k))return w.get(k);let z=j.setup(k);return w.set(k,z),b.cleanupRegistry.push({definition:q,state:z}),z},jk=async({state:b,source:j,effects:k,output:q,width:w,height:z})=>{let G=++b.currentRunId,J=()=>b.currentRunId!==G,K=k.filter((N)=>!N.params.disabled),M=sX(K),Q=j,X=null;if(M.length===0){if(j===q)return!0;let N=q.getContext("2d");if(!N)throw Error("Failed to acquire 2D context for output canvas");return N.clearRect(0,0,w,z),N.drawImage(Q,0,0,w,z),!0}let U=!1;for(let N of M)if(N.backend==="webgpu"){U=!0;break}let Y=U?await pX():null;if(J())return!1;let Z=!0;for(let N=0;N<M.length;N++){let y=M[N],[W,v]=b.pool.getPair(y.backend),D=W;for(let T of y.effects){let x=T.definition,L=iX(b,x,D);if(x.apply({source:Q,target:D,state:L,params:T.params,width:w,height:z,gpuDevice:Y,flipSourceY:y.backend==="webgl2"?Z:!1}),y.backend==="webgl2")Z=!0,b.pool.assertContextNotLost(D);Q=D,D=D===W?v:W}X=Q??X;let R=M[N+1];if(R&&R.backend!==y.backend&&X)if(y.backend==="2d"&&R.backend==="webgl2")Q=X,Z=!0;else{let T=await createImageBitmap(X);if(J())return T.close(),!1;if(Q=T,R.backend==="webgl2")Z=!1}}if(!X)return!0;let $=q.getContext("2d");if(!$)throw Error("Failed to acquire 2D context for output canvas");return $.clearRect(0,0,w,z),$.drawImage(X,0,0,w,z),!0},kk=()=>{let b=wG(null),j=wG(null);return nX(()=>{return()=>{if(b.current)Rw(b.current)}},[]),aX(()=>({get:(k,q)=>{if(!j.current||j.current.width!==k||j.current.height!==q){if(b.current)Rw(b.current);b.current=WK(k,q),j.current={width:k,height:q}}return b.current}}),[])},oX=({width:b,height:j,fit:k,className:q,style:w,effects:z,...G},J)=>{let K=mX(null),M=kk(),Q=lX(()=>{if(typeof document>"u")return null;return document.createElement("canvas")},[]),X=hX((U)=>{let Y=K.current,Z=b??U.displayWidth,$=j??U.displayHeight;if(!Y)throw Error("Canvas ref is not set");if(!Q)throw Error("Source canvas is not available");Q.width=Z,Q.height=$;let N=Q.getContext("2d");if(!N)throw Error("Could not get 2d context for source canvas");return N.drawImage(U,...RK(k,{height:U.displayHeight,width:U.displayWidth},{width:Z,height:$})),Y.width=Z,Y.height=$,jk({state:M.get(Z,$),source:Q,effects:z,output:Y,width:Z,height:$})},[M,z,k,j,Q,b]);return fX(J,()=>{return{draw:X,getCanvas:()=>{if(!K.current)throw Error("Canvas ref is not set");return K.current},clear:()=>{let U=K.current?.getContext("2d");if(!U)throw Error("Could not get 2d context");U.clearRect(0,0,K.current.width,K.current.height)}}},[X]),tX("canvas",{ref:K,className:q,style:w,...G})},eX=VX.forwardRef(oX),vK=async({resolvedSrc:b,signal:j,requestInit:k,contentType:q})=>{if(typeof ImageDecoder>"u")throw Error("Your browser does not support the WebCodecs ImageDecoder API.");let w=await fetch(b,{...k,signal:j}),{body:z}=w;if(!z)throw Error("Got no body");let G=new ImageDecoder({data:z,type:q??w.headers.get("Content-Type")??"image/gif"});await Promise.all([G.completed,G.tracks.ready]);let{selectedTrack:J}=G.tracks;if(!J)throw G.close(),Error("No selected track");return{decoder:G,selectedTrack:J}},rX=5,zG=({loopBehavior:b,durationFound:j,timeInSec:k})=>{return b==="loop"?j?k%j:k:Math.min(k,j||1/0)},bY=async({resolvedSrc:b,signal:j,requestInit:k,currentTime:q,initialLoopBehavior:w})=>{let{decoder:z,selectedTrack:G}=await vK({resolvedSrc:b,signal:j,requestInit:k,contentType:null}),J=[],K=null,M=async(Y)=>{let Z=J.find((N)=>N.frameIndex===Y);if(Z&&Z.frame)return Z;let $=await z.decode({frameIndex:Y,completeFramesOnly:!0});if(Z)Z.frame=$.image;else J.push({frame:$.image,frameIndex:Y,timeInSeconds:$.image.timestamp/1e6});return{frame:$.image,frameIndex:Y,timeInSeconds:$.image.timestamp/1e6}},Q=(Y)=>{let $=J.filter((N)=>N.frame).sort((N,y)=>{let W=Math.abs(N.timeInSeconds-Y),v=Math.abs(y.timeInSeconds-Y);return W-v});for(let N=0;N<$.length;N++){if(N<rX)continue;let y=$[N];y.frame=null}},X=async({timeInSec:Y,loopBehavior:Z})=>{let $=zG({durationFound:K,loopBehavior:Z,timeInSec:Y}),y=J.filter((v)=>v.timeInSeconds<=$).map((v)=>v.frameIndex).reduce((v,D)=>Math.max(v,D),0),W=y;while(!0){let v=await M(W);if(W++,!v.frame)throw Error("No frame found");if(!v.frame.duration)break;if(W===G.frameCount&&K===null)K=(v.frame.timestamp+v.frame.duration)/1e6;if(v.timeInSeconds>$||W===G.frameCount)break}if(G.frameCount-y<3&&Z==="loop")await M(0);Q($)};return await X({timeInSec:q,loopBehavior:w}),await X({timeInSec:q,loopBehavior:w}),{close:()=>{for(let Y of J)Y.frame?.close(),Y.frame=null;z.close()},getFrame:async(Y,Z)=>{if(K!==null&&Y>K&&Z==="clear-after-finish")return null;let $=zG({loopBehavior:Z,durationFound:K,timeInSec:Y});await X({timeInSec:$,loopBehavior:Z});let y=J.filter((W)=>W.frame).reduce((W,v)=>{let D=Math.abs(W.timeInSeconds-$),R=Math.abs(v.timeInSeconds-$);return D<R?W:v});if(!y.frame)throw Error("No frame found");return y},frameCount:G.frameCount}},jY=({frame:b,playbackRate:j,fps:k})=>{return b*j/k},kY=(b)=>{if(!b)return null;let j={...b};delete j.signal;let{headers:k,...q}=j;return JSON.stringify({...q,headers:k?Array.from(new Headers(k).entries()):null})},qY=(b)=>{if(typeof window>"u")return b;return new URL(b,window.origin).href},wY={src:{type:"asset",default:void 0,description:"Source",keyframable:!1},...yb,...cb,...Yj,playbackRate:{type:"number",min:0,max:10,step:0.1,default:1,description:"Playback rate",hiddenFromList:!1,keyframable:!1},...Zb,...Cb,...Ob,...gb},zY=(b)=>{let j={},k=j;for(let q in b)if(Object.prototype.hasOwnProperty.call(b,q)&&(q.startsWith("data-")||q.startsWith("aria-")))k[q]=b[q];return j},xK=AX(({src:b,width:j,height:k,onError:q,loopBehavior:w="loop",playbackRate:z=1,fit:G="fill",requestInit:J,effects:K,controls:M,...Q},X)=>{let U=qY(b),[Y,Z]=nq(null),{delayRender:$,continueRender:N}=Qb(),[y]=nq(()=>$(`Rendering <AnimatedImage/> with src="${U}"`)),W=Jb(),{fps:v}=Ub(),D=jY({frame:W,playbackRate:z,fps:v}),R=Bk(D);R.current=D;let T=kY(J),x=Bk(J);x.current=J;let L=Bk(null),H=bk({effects:K,overrideId:M?.overrideId??null});NK(X,()=>{let O=L.current?.getCanvas();if(!O)throw Error("Canvas ref is not set");return O},[]);let[E]=nq(()=>w);return qG(()=>{let O=new AbortController,g=!1,B=!1,C=()=>{if(B)return;B=!0,N(y)};return bY({resolvedSrc:U,signal:O.signal,requestInit:x.current,currentTime:R.current,initialLoopBehavior:E}).then((S)=>{if(g){S.close();return}Z(S),C()}).catch((S)=>{if(g)return;if(S.name==="AbortError"){C();return}if(q)q?.(S),C();else wj(S)}),()=>{g=!0,O.abort(),C()}},[U,y,q,T,E,N]),qG(()=>{return()=>{Y?.close()}},[Y]),_X(()=>{if(!Y)return;let O=$(`Rendering frame at ${D} of <AnimatedImage src="${b}"/>`),g=!1;return Y.getFrame(D,w).then(async(B)=>{if(g)return;if(B===null){L.current?.clear(),N(O);return}if(await L.current?.draw(B.frame)&&!g)N(O)}).catch((B)=>{if(g)return;if(q)q(B),N(O);else wj(B)}),()=>{g=!0,N(O)}},[D,Y,w,q,b,N,$,H,G,j,k]),Sk(eX,{ref:L,width:j,height:k,fit:G,effects:H,...Q})});xK.displayName="AnimatedImageContent";var GY=({src:b,width:j,height:k,onError:q,fit:w,playbackRate:z,loopBehavior:G,id:J,className:K,style:M,durationInFrames:Q,from:X,premountFor:U,postmountFor:Y,styleWhilePremounted:Z,styleWhilePostmounted:$,cropLeft:N,cropRight:y,cropTop:W,cropBottom:v,requestInit:D,effects:R=[],controls:T,ref:x,...L})=>{let H=Bk(null),E=rj(R);NK(x,()=>{return H.current},[]);let{effectivePostmountFor:O,effectivePremountFor:g,freezeFrame:B,isPremountingOrPostmounting:C,postmountingActive:S,premountingActive:_,premountingStyle:P}=tj({from:X??0,durationInFrames:Q??1/0,premountFor:U??null,postmountFor:Y??null,style:M??null,styleWhilePremounted:Z??null,styleWhilePostmounted:$??null,hideWhilePremounted:"display-none"}),I=mb({cropLeft:N,cropRight:y,cropTop:W,cropBottom:v,style:P,componentName:"<AnimatedImage />"}),A=zY(L),F={src:b,width:j,height:k,onError:q,fit:w,playbackRate:z,loopBehavior:G,id:J,className:K,style:I??void 0,requestInit:D,...A};return Sk(Xj,{frame:B,active:C,children:Sk(bb,{layout:"none",from:X??0,durationInFrames:Q??1/0,name:"<AnimatedImage>",_remotionInternalDocumentationLink:"https://www.remotion.dev/docs/animatedimage",controls:T,_remotionInternalEffects:E,_remotionInternalPremountDisplay:g||null,_remotionInternalPostmountDisplay:O||null,_remotionInternalIsPremounting:_,_remotionInternalIsPostmounting:S,...L,outlineRef:H,children:Sk(xK,{...F,ref:H,effects:R,controls:T})})})},ow=Db({Component:GY,componentName:"<AnimatedImage>",componentIdentity:"dev.remotion.remotion.AnimatedImage",schema:wY,supportsEffects:!0});ow.displayName="AnimatedImage";r(ow);var JY={type:"boolean",default:!1,description:"Disabled"},EK=(b)=>{let{calculateKey:j,validateParams:k}=b,q={...b,documentationLink:b.documentationLink??null,calculateKey:(z)=>{let G=z.disabled??!1;return`${j(z)}-disabled-${G}`},schema:{disabled:JY,...b.schema}};return(z={})=>{return k(z),{definition:q,params:z,effectKey:q.calculateKey(z),memoized:!1}}},RY=(b)=>{if(typeof b!=="string")throw TypeError(`The "filename" must be a string, but you passed a value of type ${typeof b}`);if(b.trim()==="")throw Error("The `filename` must not be empty");if(!b.match(/^([0-9a-zA-Z-!_.*'()/:&$@=;+,?]+)/g))throw Error('The `filename` must match "/^([0-9a-zA-Z-!_.*\'()/:&$@=;+,?]+)/g". Use forward slashes only, even on Windows.')},yY=(b)=>{if(typeof b!=="string"&&!(b instanceof Uint8Array))throw TypeError(`The "content" must be a string or Uint8Array, but you passed a value of type ${typeof b}`);if(typeof b==="string"&&b.trim()==="")throw Error("The `content` must not be empty")},HK=(b)=>{if(b.type!=="artifact")return;if(RY(b.filename),b.contentType==="thumbnail")return;yY(b.content)},Ab=UY({registerRenderAsset:()=>{return},unregisterRenderAsset:()=>{return},renderAssets:[]}),TY=({children:b,collectAssets:j})=>{let[k,q]=NY([]),w=$Y([]),z=GG((K)=>{HK(K),w.current=[...w.current,K],q(w.current)},[]);if(j)XY(j,()=>{return{collectAssets:()=>{let K=w.current;return w.current=[],q([]),K}}},[]);let G=GG((K)=>{w.current=w.current.filter((M)=>M.id!==K),q(w.current)},[]);YY(()=>{if(typeof window<"u")window.remotion_collectAssets=()=>{let K=w.current;return w.current=[],q([]),K}},[]);let J=ZY(()=>{return{registerRenderAsset:z,unregisterRenderAsset:G,renderAssets:k}},[k,z,G]);return DY(Ab.Provider,{value:J,children:b})},LK=Symbol("Thumbnail"),OK=({filename:b,content:j,downloadBehavior:k})=>{let{registerRenderAsset:q,unregisterRenderAsset:w}=KY(Ab),z=p(),G=Jb(),[J]=QY(()=>{return String(Math.random())});return MY(()=>{if(!z.isRendering)return;if(j instanceof Uint8Array)q({type:"artifact",id:J,content:btoa(new TextDecoder("utf8").decode(j)),filename:b,frame:G,contentType:"binary",downloadBehavior:k??null});else if(j===LK)q({type:"artifact",id:J,filename:b,frame:G,contentType:"thumbnail",downloadBehavior:k??null});else q({type:"artifact",id:J,content:j,filename:b,frame:G,contentType:"text",downloadBehavior:k??null});return()=>{return w(J)}},[j,z.isRendering,b,G,J,q,w,k]),null};OK.Thumbnail=LK;var Nb=(b)=>{if(typeof window>"u")return b;if(b.startsWith("http://")||b.startsWith("https://")||b.startsWith("file://")||b.startsWith("blob:")||b.startsWith("data:"))return b;return new URL(b,window.origin).href},Jq=({trimAfter:b,mediaDurationInFrames:j,playbackRate:k,trimBefore:q})=>{let w=j;if(typeof b<"u")w=b;if(typeof q<"u")w-=q;let z=w/k;return Number(z.toFixed(10))},gK=xY(null),EY=()=>{return vY.useContext(gK)},qk=({durationInFrames:b,times:j=1/0,children:k,name:q,showInTimeline:w,...z})=>{let G=Jb(),{durationInFrames:J}=Ub();if(ik(b,{component:"of the <Loop /> component",allowFloats:!0}),typeof j!=="number")throw TypeError(`You passed to "times" an argument of type ${typeof j}, but it must be a number.`);if(j!==1/0&&j%1!==0)throw TypeError(`The "times" prop of a loop must be an integer, but got ${j}.`);if(j<0)throw TypeError(`The "times" prop of a loop must be at least 0, but got ${j}`);let K=Math.ceil(J/b),M=Math.min(K,j),Q=z.layout==="none"?void 0:z.style,X=b*(M-1),Y=Math.floor(G/b)*b,Z=Math.min(Y,X),$=MG(()=>{return{numberOfTimes:Math.min(J/b,j),startOffset:-Z,durationInFrames:b}},[J,b,Z,j]),N=MG(()=>{return{iteration:Math.floor(G/b),durationInFrames:b}},[G,b]);return QG(gK.Provider,{value:N,children:QG(bb,{durationInFrames:b,from:Z,name:q??"<Loop>",_remotionInternalDocumentationLink:"https://www.remotion.dev/docs/loop",_remotionInternalLoopDisplay:$,layout:z.layout,style:Q,showInTimeline:w,children:k})})};qk.useLoop=EY;var e=({logLevel:b,tag:j,message:k,mountTime:q})=>{let w=[q?Date.now()-q+"ms ":null,j].filter(Boolean).join(" ");t.trace({logLevel:b,tag:null},`[${w}]`,k)},Kq=LY({}),fk={},Ik=[],UG=(b)=>{fk=b(fk),Ik.forEach((j)=>j())},CK=({children:b})=>{let[j,k]=gY(()=>fk);return OY(()=>{let q=()=>{k(fk)};return Ik.push(q),()=>{Ik=Ik.filter((w)=>w!==q)}},[]),CY(Kq.Provider,{value:j,children:b})},BK=(b)=>{let j=b.indexOf("#");if(j===-1)return null;return j},SK=(b)=>{let j=BK(b);if(j===null)return b;return b.slice(0,j)},db=(b)=>{let j=HY(Kq),k=BK(b),q=SK(b);if(!j[q])return b;if(k!==null)return j[q]+b.slice(k);return j[q]},BY=function(b){let j=new FileReader;return new Promise((k,q)=>{j.onload=function(){let w=j.result;k(w)},j.onerror=(w)=>{return q(w)},j.readAsDataURL(b)})},SY=async({reader:b,contentType:j,contentLength:k,onProgress:q})=>{let w=0,z=[];while(!0){let{done:K,value:M}=await b.read();if(K)break;if(z.push(M),w+=M.length,q)q({loadedBytes:w,totalBytes:k})}let G=new Uint8Array(w),J=0;for(let K of z)G.set(K,J),J+=K.length;return new Blob([G],{type:j??void 0})},IY=(b,j)=>{let k=j?.method??"blob-url",q=j?.logLevel??"info",w=SK(b);if(qb().isRendering)return{free:()=>{return},waitUntilDone:()=>Promise.resolve(w)};t.verbose({logLevel:q,tag:"prefetch"},`Starting prefetch ${w}`);let z=!1,G=null,J=()=>{return},K=()=>{return},M=new Promise((U,Y)=>{J=U,K=Y});M.catch(()=>{return});let Q=new AbortController,X=null;return fetch(w,{signal:Q.signal,credentials:j?.credentials??void 0}).then((U)=>{if(z)return null;if(!U.ok)throw Error(`HTTP error, status = ${U.status}`);let Y=U.headers.get("Content-Type"),Z=j?.contentType??Y;if(!(Z&&(Z.startsWith("video/")||Z.startsWith("audio/")||Z.startsWith("image/"))))console.warn(`Called prefetch() on ${w} which returned a "Content-Type" of ${Y}. Prefetched content should have a proper content type (video/... or audio/...) or a contentType passed the options of prefetch(). Otherwise, prefetching will not work properly in all browsers.`);if(!U.body)throw Error(`HTTP response of ${w} has no body`);let N=U.body.getReader();return X=N,SY({reader:N,contentType:j?.contentType??Y??null,contentLength:U.headers.get("Content-Length")?parseInt(U.headers.get("Content-Length"),10):null,onProgress:j?.onProgress})}).then((U)=>{if(!U||z)return;let Y=j?.contentType?new Blob([U],{type:j.contentType}):U;if(k==="base64")return BY(Y);return URL.createObjectURL(Y)}).then((U)=>{if(z)return;e({logLevel:q,tag:"prefetch",message:`Finished prefetch ${w} with method ${k}`,mountTime:null}),G=U,UG((Y)=>({...Y,[w]:G})),J(G)}).catch((U)=>{if(U?.message.includes("free() called"))return;K(U)}),{free:()=>{if(e({logLevel:q,tag:"prefetch",message:`Freeing ${w}`,mountTime:null}),G){if(k==="blob-url")URL.revokeObjectURL(G);UG((U)=>{let Y={...U};return delete Y[w],Y})}else{if(z)return;z=!0;let U=Error("free() called");K(U);try{Q.abort(U)}catch{}X?.cancel(U).catch(()=>{return})}},waitUntilDone:()=>{return M}}},Mq=(b,j)=>{if(typeof b.volume!=="number"&&typeof b.volume!=="function"&&typeof b.volume<"u")throw TypeError(`You have passed a volume of type ${typeof b.volume} to your <${j} /> component. Volume must be a number or a function with the signature '(frame: number) => number' undefined.`);if(typeof b.volume==="number"&&b.volume<0)throw TypeError(`You have passed a volume below 0 to your <${j} /> component. Volume must be between 0 and 1`);if(typeof b.playbackRate!=="number"&&typeof b.playbackRate<"u")throw TypeError(`You have passed a playbackRate of type ${typeof b.playbackRate} to your <${j} /> component. Playback rate must a real number or undefined.`);if(typeof b.playbackRate==="number"&&(isNaN(b.playbackRate)||!Number.isFinite(b.playbackRate)||b.playbackRate<=0))throw TypeError(`You have passed a playbackRate of ${b.playbackRate} to your <${j} /> component. Playback rate must be a real number above 0.`);if(typeof b.preservePitch!=="boolean"&&typeof b.preservePitch<"u")throw TypeError(`'preservePitch' must be a boolean or undefined but got '${typeof b.preservePitch}' instead`)},PY=(b,j)=>{if(typeof b<"u"){if(typeof b!=="number")throw TypeError(`type of startFrom prop must be a number, instead got type ${typeof b}.`);if(isNaN(b)||b===1/0)throw TypeError("startFrom prop can not be NaN or Infinity.");if(b<0)throw TypeError(`startFrom must be greater than equal to 0 instead got ${b}.`)}if(typeof j<"u"){if(typeof j!=="number")throw TypeError(`type of endAt prop must be a number, instead got type ${typeof j}.`);if(isNaN(j))throw TypeError("endAt prop can not be NaN.");if(j<=0)throw TypeError(`endAt must be a positive number, instead got ${j}.`)}if(j<b)throw TypeError("endAt prop must be greater than startFrom prop.")},cY=(b,j)=>{if(typeof b<"u"){if(typeof b!=="number")throw TypeError(`type of trimBefore prop must be a number, instead got type ${typeof b}.`);if(isNaN(b)||b===1/0)throw TypeError("trimBefore prop can not be NaN or Infinity.");if(b<0)throw TypeError(`trimBefore must be greater than equal to 0 instead got ${b}.`)}if(typeof j<"u"){if(typeof j!=="number")throw TypeError(`type of trimAfter prop must be a number, instead got type ${typeof j}.`);if(isNaN(j))throw TypeError("trimAfter prop can not be NaN.");if(j<=0)throw TypeError(`trimAfter must be a positive number, instead got ${j}.`)}if(j<=b)throw TypeError("trimAfter prop must be greater than trimBefore prop.")},Qq=({startFrom:b,endAt:j,trimBefore:k,trimAfter:q})=>{if(typeof b<"u"&&typeof k<"u")throw TypeError("Cannot use both startFrom and trimBefore props. Use trimBefore instead as startFrom is deprecated.");if(typeof j<"u"&&typeof q<"u")throw TypeError("Cannot use both endAt and trimAfter props. Use trimAfter instead as endAt is deprecated.");let w=typeof k<"u"||typeof q<"u",z=typeof b<"u"||typeof j<"u";if(w)cY(k,q);else if(z)PY(b,j)},Uq=({startFrom:b,endAt:j,trimBefore:k,trimAfter:q})=>{return{trimBeforeValue:k??b??void 0,trimAfterValue:q??j??void 0}},hY=(b,j)=>{switch(j.type){case"got-duration":{let k=Nb(j.src);if(b[k]===j.durationInSeconds)return b;return{...b,[k]:j.durationInSeconds}}default:return b}},ew=AY({durations:{},setDurations:()=>{throw Error("context missing")}}),IK=({children:b})=>{let[j,k]=FY(hY,{}),q=_Y(()=>{return{durations:j,setDurations:k}},[j]);return VY(ew.Provider,{value:q,children:b})},rw=({crossOrigin:b,requestsVideoFrame:j,isClientSideRendering:k})=>{if(b!==void 0&&b!==null)return b;if(k)return"anonymous";if(j)return"anonymous";return};function $G(b){let j=b+1831565813;return j=Math.imul(j^j>>>15,j|1),j^=j+Math.imul(j^j>>>7,j|61),((j^j>>>14)>>>0)/4294967296}function pY(b){let j=0,k=0,q=0;for(j=0;j<b.length;j++)k=b.charCodeAt(j),q=(q<<5)-q+k,q|=0;return q}var wk=(b,j)=>{if(j!==void 0)throw TypeError("random() takes only one argument");if(b===null)return Math.random();if(typeof b==="string")return $G(pY(b));if(typeof b==="number")return $G(b*10000000000);throw Error("random() argument must be a number or a string")},lk=({mediaRef:b,mediaType:j,onAutoPlayError:k,logLevel:q,mountTime:w,reason:z,isPlayer:G})=>{let{current:J}=b;if(!J)return;e({logLevel:q,tag:"play",message:`Attempting to play ${J.src}. Reason: ${z}`,mountTime:w});let K=J.play();if(!K.catch)return;K.catch((M)=>{if(!J)return;if(M.message.includes("request was interrupted by a call to pause"))return;if(M.message.includes("The operation was aborted."))return;if(M.message.includes("The fetching process for the media resource was aborted by the user agent"))return;if(M.message.includes("request was interrupted by a new load request"))return;if(M.message.includes("because the media was removed from the document"))return;if(M.message.includes("user didn't interact with the document")&&J.muted)return;if(console.log(`Could not play ${j} due to following error: `,M),!J.muted){if(k){k();return}if(j==="video"&&G)t.info({logLevel:q,tag:"<"+j+">"},"The video will be muted and we'll retry playing it."),t.info({logLevel:q,tag:"<"+j+">"},"Use onAutoPlayError() to handle this error yourself."),J.muted=!0,J.play()}})},bz=({audioContext:b,ref:j})=>{let k=null,q=!1,w=b;return{setAudioContext:(z)=>{w=z},attemptToConnect:()=>{if(q)throw Error("SharedElementSourceNode has been disposed");if(!k&&j.current&&w)k=w.createMediaElementSource(j.current)},get:()=>{if(!k)throw Error("Audio element not connected");return k},cleanup:()=>{if(k)k.disconnect(),k=null;q=!0}}},RG=!1,rY=(b)=>{if(RG)return;if(RG=!0,typeof window<"u")t.warn({logLevel:b,tag:null},"AudioContext is not supported in this browser")},bZ=({logLevel:b,latencyHint:j,audioEnabled:k,sampleRate:q})=>{let w=p(),z=eY(q);if(q!==z.current)throw Error(`Changing the AudioContext sample rate dynamically is not supported. The sample rate was initialized with ${z.current} Hz, but ${q} Hz was passed later.`);return oY(()=>{if(w.isRendering)return null;if(!k)return null;if(typeof AudioContext>"u")return rY(b),null;let J=new AudioContext({latencyHint:j,sampleRate:q}),K=J.createGain();K.connect(J.destination),t.trace({logLevel:b,tag:"audio"},"Creating new audio context"),J.suspend();let M=null;return{audioContext:J,gainNode:K,getState:()=>{let Y=J.state;if(M==="running"&&Y!=="running")return"suspended-to-running";if(M==="suspended"&&Y!=="suspended")return"running-to-suspended";return Y},resume:()=>{M="running";let Y=J.resume();return Y.finally(()=>{if(M==="running")M=null}),Y},suspend:()=>{M="suspended";let Y=J.suspend();return Y.finally(()=>{if(M==="suspended")M=null}),Y}}},[b,j,w.isRendering,k,q])},jZ=1000,kZ=(b,j,k)=>{return new Promise((q)=>{let w=b.currentTime,G=b.getOutputTimestamp().performanceTime,J=performance.now(),K=null,M=null,Q=!1,X=()=>{return},U=(Z)=>{if(Q)return;if(Q=!0,K!==null)cancelAnimationFrame(K);if(M!==null)clearTimeout(M);k.removeEventListener("abort",X),q(Z)};X=()=>U("cancelled");let Y=()=>{K=null;let{currentTime:Z}=b,$=b.getOutputTimestamp(),N=performance.now()-J;if(G!==void 0&&$.performanceTime!==void 0&&$.performanceTime>G&&$.contextTime!==void 0&&$.contextTime>w){t.verbose({logLevel:j,tag:"audio"},`waitUntilActuallyResumed: getOutputTimestamp.performanceTime advanced from ${G.toFixed(6)} to ${$.performanceTime.toFixed(6)} after ${N.toFixed(1)}ms. currentTime=${Z.toFixed(6)} (advanced by ${(Z-w).toFixed(6)}), getOutputTimestamp.performanceTime=${$.performanceTime?.toFixed(1)??"undefined"}`),U("resumed");return}K=requestAnimationFrame(Y)};if(k.aborted){U("cancelled");return}k.addEventListener("abort",X,{once:!0}),M=setTimeout(()=>{t.warn({logLevel:j,tag:"audio"},"WARNING: You enabled autoPlay on an unmuted <Player /> and the browser did not allow the video to be started. Remotion muted the <Player /> so it can play. To properly handle this, either set the `muted` prop or remove the `autoPlay` prop"),U("failed")},jZ),K=requestAnimationFrame(Y)})},aq="data:audio/mp3;base64,/+MYxAAJcAV8AAgAABn//////+/gQ5BAMA+D4Pg+BAQBAEAwD4Pg+D4EBAEAQDAPg++hYBH///hUFQVBUFREDQNHmf///////+MYxBUGkAGIMAAAAP/29Xt6lUxBTUUzLjEwMFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV/+MYxDUAAANIAAAAAFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV",wZ=(b,j)=>{let k=Object.keys(b).sort(),q=Object.keys(j).sort();if(k.length!==q.length)return!1;for(let w=0;w<k.length;w++){if(k[w]!==q[w])return!1;if(b[k[w]]!==j[q[w]])return!1}return!0},zZ=(b,j,k)=>{if(b==="src"&&!k.startsWith("data:")&&!j.startsWith("data:"))return new URL(k,window.origin).toString()!==new URL(j,window.origin).toString();if(k===j)return!1;return!0},Nj=PK(null),Xq=PK(null),GZ=(b)=>{if(b==="suspended"||b==="running-to-suspended"||b==="interrupted")return!0;if(b==="running"||b==="suspended-to-running")return!1;throw Error(`Unexpected audio context state: ${b}`)},AK=({children:b,audioLatencyHint:j,audioEnabled:k,previewSampleRate:q})=>{let w=Rb(),z=q??48000;tY(()=>{if(typeof window>"u")return;window.remotion_sampleRate=z},[z]);let G=bZ({logLevel:w,latencyHint:j,audioEnabled:k,sampleRate:z}),J=Sb(!1),K=Sb(null),M=Sb(0),Q=ob(()=>({value:0}),[]),X=Sb([]),U=ob(()=>{return{dispatch:(R)=>{X.current.forEach((T)=>T(R))},subscribe:(R)=>{return X.current.push(R),{remove:()=>{X.current=X.current.filter((T)=>T!==R)}}}}},[]),Y=Sb({scheduledEndTime:null,mediaEndTime:null}),Z=Sb(new Map),$=Eb((R)=>{Z.current.delete(R)},[]),N=ob(()=>{return({node:R,mediaTimestamp:T,sourceOffset:x,scheduledTime:L,duration:H,offset:E,originalUnloopedMediaTimestamp:O})=>{if(!G)throw Error("Audio context not found");let g=G.getState();if(g==="closed")return{type:"not-started",reason:"audio context is closed"};let B=GZ(g);if(H>0)if(B)Z.current.set(R,{scheduledTime:L,offset:E,duration:H});else R.start(L,E,H);let C=L+H/R.playbackRate.value,S=T+E-x,_=S+H,P=G.audioContext.baseLatency+G.audioContext.outputLatency,I=L-G.audioContext.currentTime,A=Y.current,F=A.scheduledEndTime!==null&&Math.abs(L-A.scheduledEndTime)>0.001,V=A.mediaEndTime!==null&&Math.abs(S-A.mediaEndTime)>0.001;return t.verbose({logLevel:w,tag:"audio-scheduling"},"scheduled %c%s%c %s %c%s%c %s %c%s%c %s %s %s %s %s",F?"color: red; font-weight: bold":"",L.toFixed(4),"",C.toFixed(4),V?"color: red; font-weight: bold":"",S.toFixed(4),"",_.toFixed(4),H<0?"color: red; font-weight: bold":I<0?"color: red; font-weight: bold":"color: blue; font-weight: bold",H<0?"missed "+Math.abs(E).toFixed(2)+"s":Math.abs(I).toFixed(2)+(I<0?" delay":" ahead"),"","current="+G.audioContext.currentTime.toFixed(4),"offset="+E.toFixed(4),"latency="+P.toFixed(4),"state="+G.audioContext.state,O!==S?"original_ts="+O.toFixed(4):"","action="+(B?"schedule":"start"),""),A.scheduledEndTime=C,A.mediaEndTime=_,H>0?{type:"started",scheduledTime:L}:{type:"not-started",reason:"missed "+Math.abs(E).toFixed(2)+"s"}}},[G,w]),y=Eb(()=>{if(!G)return Promise.resolve();if(J.current)return Promise.resolve();J.current=!0,G.gainNode.gain.cancelScheduledValues(G.audioContext.currentTime),G.gainNode.gain.setValueAtTime(0,G.audioContext.currentTime),G.gainNode.gain.linearRampToValueAtTime(1,G.audioContext.currentTime+0.03),Z.current.forEach((H,E)=>{E.start(H.scheduledTime,H.offset,H.duration)}),Z.current.clear();let R=G.resume(),T=new AbortController,x=M.current++,L=new Promise((H)=>{kZ(G.audioContext,w,T.signal).then(H),R.catch((E)=>{t.warn({logLevel:w,tag:"audio"},"AudioContext resume rejected, muting playback and continuing without audio",E),T.abort(),H("failed")})}).finally(()=>{if(K.current?.id===x)K.current=null});return K.current={abortController:T,id:x,promise:L},R.catch(()=>{})},[G,w]),W=Eb(()=>{return K.current?.promise??null},[]),v=Eb(()=>{if(K.current?.abortController.abort(),!G)return Promise.resolve();if(!J.current)return Promise.resolve();return J.current=!1,G.suspend()},[G]),D=ob(()=>{return{audioContext:G?.audioContext??null,getAudioContextState:()=>G?.getState()??null,gainNode:G?.gainNode??null,audioSyncAnchor:Q,audioSyncAnchorEmitter:U,scheduleAudioNode:N,resume:y,suspend:v,getIsResumingAudioContext:W,unscheduleAudioNode:$}},[G,Q,U,N,y,v,W,$]);return cK(Nj.Provider,{value:D,children:b})},_K=({children:b,numberOfAudioTags:j})=>{let k=Sb([]),[q]=Dw(j);if(j!==q)throw Error("The number of shared audio tags has changed dynamically. Once you have set this property, you cannot change it afterwards.");let w=Rb(),z=uj(),G=p(),J=yw(Nj),K=J?.audioContext??null,M=J?.resume,[Q]=Dw(()=>{return Array(j).fill(!0).map(()=>{let D=aY();return{id:Math.random(),ref:D,mediaElementSourceNode:bz({audioContext:K,ref:D})}})});for(let{mediaElementSourceNode:D}of Q)D?.setAudioContext(K);(Aj.useInsertionEffect??Aj.useLayoutEffect)(()=>{return()=>{requestAnimationFrame(()=>{Q.forEach(({mediaElementSourceNode:D})=>{D?.cleanup()})})}},[Q]);let U=Sb(Array(j).fill(!1)),Y=Eb(()=>{Q.forEach(({ref:D,id:R})=>{let T=k.current?.find((L)=>L.id===R),{current:x}=D;if(!x)return;if(T===void 0){if(x.src!==aq)x.src=aq;return}if(!T)throw TypeError("Expected audio data to be there");Object.keys(T.props).forEach((L)=>{if(zZ(L,T.props[L],x[L]))x[L]=T.props[L]})})},[Q]),Z=Eb((D)=>{let{aud:R,audioId:T,premounting:x,postmounting:L}=D,H=k.current?.find((_)=>_.audioId===T);if(H)return H;let E=U.current.findIndex((_)=>_===!1);if(E===-1)throw Error(`Tried to simultaneously mount ${j+1} <Html5Audio /> tags at the same time. With the current settings, the maximum amount of <Html5Audio /> tags is limited to ${j} at the same time. Remotion pre-mounts silent audio tags to help avoid browser autoplay restrictions. See https://remotion.dev/docs/player/autoplay#using-the-numberofsharedaudiotags-prop for more information on how to increase this limit.`);let{id:O,ref:g,mediaElementSourceNode:B}=Q[E],C=[...U.current];C[E]=O,U.current=C;let S={props:R,id:O,el:g,audioId:T,mediaElementSourceNode:B,premounting:x,audioMounted:Boolean(g.current),postmounting:L,cleanupOnMediaTagUnmount:()=>{}};return k.current?.push(S),Y(),S},[j,Q,Y]),$=Eb((D)=>{let R=[...U.current],T=Q.findIndex((x)=>x.id===D);if(T===-1)throw TypeError(`Unknown audio ref ${D}; refs: ${Q.map((x)=>x.id).join(", ")}`);R[T]=!1,U.current=R,k.current=k.current?.filter((x)=>x.id!==D),Y()},[Q,Y]),N=Eb(({aud:D,audioId:R,id:T,premounting:x,postmounting:L})=>{let H=!1;if(k.current=k.current?.map((E)=>{let O=Boolean(E.el.current);if(E.audioMounted!==O)H=!0;if(E.id===T){if(wZ(D,E.props)&&E.premounting===x&&E.postmounting===L)return E.audioMounted===O?E:{...E,audioMounted:O};return H=!0,{...E,props:D,premounting:x,postmounting:L,audioId:R,audioMounted:O}}return E.audioMounted===O?E:{...E,audioMounted:O}}),H)Y()},[Y]),y=Eb(()=>{Q.forEach((D)=>{if(k.current.find((T)=>T.el===D.ref)?.premounting)return;lk({mediaRef:D.ref,mediaType:"audio",onAutoPlayError:null,logLevel:w,mountTime:z,reason:"playing all audios",isPlayer:G.isPlayer})}),M?.()},[w,z,Q,G.isPlayer,M]),W=ob(()=>{return{registerAudio:Z,unregisterAudio:$,updateAudio:N,playAllAudios:y,numberOfAudioTags:j}},[j,y,Z,$,N]),v=ob(()=>{return Q.map(({id:D,ref:R})=>{return cK("audio",{ref:R,preload:"metadata",src:aq},D)})},[Q]);return qZ(Xq.Provider,{value:W,children:[v,b]})},JZ=({aud:b,audioId:j,premounting:k,postmounting:q})=>{let w=yw(Nj),z=yw(Xq),[G]=Dw(()=>{if(z&&z.numberOfAudioTags>0)return z.registerAudio({aud:b,audioId:j,premounting:k,postmounting:q});let K=Aj.createRef(),M=bz({audioContext:w?.audioContext??null,ref:K});return{el:K,id:Math.random(),props:b,audioId:j,mediaElementSourceNode:M,premounting:k,audioMounted:Boolean(K.current),postmounting:q,cleanupOnMediaTagUnmount:()=>{M?.cleanup()}}});G.mediaElementSourceNode?.setAudioContext(w?.audioContext??null);let J=Aj.useInsertionEffect??Aj.useLayoutEffect;if(typeof document<"u")J(()=>{if(z&&z.numberOfAudioTags>0)z.updateAudio({id:G.id,aud:b,audioId:j,premounting:k,postmounting:q})},[b,z,G.id,j,k,q]),J(()=>{return()=>{if(z&&z.numberOfAudioTags>0)z.unregisterAudio(G.id)}},[z,G.id]);return G},KZ=0.00001,mk=(b,j)=>{return Math.abs(b-j)<KZ},FK=(b,j)=>{return Math.round(b/j*100)/100},Tw=()=>{if(typeof window>"u")return!1;if(!/AppleWebKit/.test(window.navigator.userAgent))return!1;return!window.navigator.userAgent.includes("Chrome/")},Yq=()=>{if(typeof window>"u")return!1;return/iP(ad|od|hone)/i.test(window.navigator.userAgent)&&Tw()},MZ=(b)=>{return Yq()&&b.startsWith("blob:")},Ww=({actualFrom:b,fps:j})=>{return FK(Math.max(0,-b),j)},vw=({duration:b,fps:j})=>{return FK(b,j)},QZ=({actualSrc:b,actualFrom:j,duration:k,fps:q})=>{if(MZ(b))return b;if(b.startsWith("data:"))return b;if(Boolean(new URL(b,(typeof window>"u"?null:window.location.href)??"http://localhost:3000").hash))return b;if(!Number.isFinite(j))return b;let z=`${b}#t=${Ww({actualFrom:j,fps:q})}`;if(!Number.isFinite(k))return z;return`${z},${vw({duration:k,fps:q})}`},UZ=({prevStartFrom:b,newStartFrom:j,prevDuration:k,newDuration:q,fps:w})=>{let z=Ww({actualFrom:b,fps:w}),G=Ww({actualFrom:j,fps:w}),J=vw({duration:k,fps:w}),K=vw({duration:q,fps:w});if(G<z)return!1;if(K>J)return!1;return!0},XZ=({actualSrc:b,actualFrom:j,duration:k,fps:q})=>{let w=tq(j),z=tq(k),G=tq(b);if(!UZ({prevStartFrom:w.current,newStartFrom:j,prevDuration:z.current,newDuration:k,fps:q})||b!==G.current)w.current=j,z.current=k,G.current=b;return QZ({actualSrc:G.current,actualFrom:w.current,duration:z.current,fps:q})},yG=!1,YZ=(b)=>{if(yG)return;yG=!0,t.warn({logLevel:b,tag:null},"In Safari, setting a volume and a playback rate at the same time is buggy."),t.warn({logLevel:b,tag:null},"In Desktop Safari, only volumes <= 1 will be applied."),t.warn({logLevel:b,tag:null},b,"In Mobile Safari, the volume will be ignored and set to 1 if a playbackRate is set.")},VK=({mediaRef:b,volume:j,logLevel:k,source:q,shouldUseWebAudioApi:w})=>{let z=NG(null),G=NG(j);G.current=j;let J=iY(Nj);if(!J)throw Error("useAmplification must be used within a SharedAudioContext");let{audioContext:K,gainNode:M}=J;if(typeof window<"u")nY(()=>{if(!K)return;if(!b.current)return;if(!w)return;if(b.current.playbackRate!==1&&Tw()){YZ(k);return}if(!q)return;if(!M)return;let U=new GainNode(K,{gain:G.current});return q.attemptToConnect(),q.get().connect(U),U.connect(M),z.current={gainNode:U},t.trace({logLevel:k,tag:null},`Starting to amplify ${b.current?.src}. Gain = ${G.current}, playbackRate = ${b.current?.playbackRate}`),()=>{z.current=null,U.disconnect(),q.get().disconnect()}},[k,b,K,q,w,M]);if(z.current){let U=j;if(!mk(z.current.gainNode.gain.value,U))z.current.gainNode.gain.value=U,t.trace({logLevel:k,tag:null},`Setting gain to ${U} for ${b.current?.src}`)}if((Tw()&&b.current&&b.current?.playbackRate!==1||!w)&&b.current&&!mk(j,b.current?.volume))b.current.volume=Math.min(j,1);return z},fb=()=>{return $Z(o)?.cumulatedNegativeFrom??0},Rj=(b)=>{let j=qk.useLoop(),k=Jb(),q=fb();if(b==="repeat"||j===null)return k+q;return k+q+j.durationInFrames*j.iteration},fK=(b)=>{if(/data:|blob:/.test(b.substring(0,5)))return"Data URL";let j=b.split("/").map((k)=>k.split("\\")).flat(1);return j[j.length-1]},NZ=({compositionDurationInFrames:b,playbackRate:j,trimBefore:k,trimAfter:q,parentSequenceDurationInFrames:w,loop:z})=>{if(z)return b;let G=Jq({mediaDurationInFrames:b*j+(k??0),playbackRate:j,trimBefore:k,trimAfter:q});if(w!==null){let J=Math.min(w,G);return Number(J.toFixed(10))}return G},ub=({frame:b,volume:j,mediaVolume:k=1})=>{if(typeof j==="number")return j*k;if(typeof j>"u")return Number(k);let q=j(b)*k;if(typeof q!=="number")throw TypeError(`You passed in a a function to the volume prop but it did not return a number but a value of type ${typeof q} for frame ${b}`);if(Number.isNaN(q))throw TypeError(`You passed in a function to the volume prop but it returned NaN for frame ${b}.`);if(!Number.isFinite(q))throw TypeError(`You passed in a function to the volume prop but it returned a non-finite number for frame ${b}.`);return Math.max(0,q)},TG={},RZ=(b)=>{if(TG[b])return;console.warn(b),TG[b]=!0},lK=({volume:b,mediaVolume:j,mediaType:k,src:q,displayName:w,trimBefore:z,trimAfter:G,playbackRate:J,sequenceDurationInFrames:K,mediaStartsAt:M,loop:Q})=>{if(!q)throw Error("No src passed");let X=xw(o),[U]=ZZ(()=>b),Y=NZ({compositionDurationInFrames:K,playbackRate:J,trimBefore:z,trimAfter:G,parentSequenceDurationInFrames:X?.durationInFrames??null,loop:Q}),Z=DG(()=>{if(typeof b==="number")return b;return Array(Math.floor(Math.max(0,Y+M))).fill(!0).map((v,D)=>{return ub({frame:D+M,volume:b,mediaVolume:j})}).join(",")},[Y,M,b,j]);hK(()=>{if(typeof b==="number"&&b!==U)RZ(`Remotion: The ${k} with src ${q} has changed it's volume. Prefer the callback syntax for setting volume to get better timeline display: https://www.remotion.dev/docs/audio/volume`)},[U,k,q,b]);let $=typeof b==="function",N=sk(),y=0-M+(z??0);return DG(()=>{return{volumes:Z,duration:Y,doesVolumeChange:$,nonce:N,finalDisplayName:w??fK(q),startMediaFrom:y,src:q,playbackRate:J}},[Z,Y,$,N,w,q,y,J])},jz=({volume:b,mediaVolume:j,src:k,mediaType:q,playbackRate:w,displayName:z,id:G,getStack:J,showInTimeline:K,premountDisplay:M,postmountDisplay:Q,loopDisplay:X,documentationLink:U,refForOutline:Y})=>{let Z=xw(o),$=fb(),{registerSequence:N,unregisterSequence:y}=xw($j),{durationInFrames:W}=Ub(),v=fb(),{volumes:D,duration:R,doesVolumeChange:T,nonce:x,finalDisplayName:L}=lK({volume:b,mediaVolume:j,mediaType:q,src:k,displayName:z,trimAfter:void 0,trimBefore:void 0,playbackRate:w,sequenceDurationInFrames:W,mediaStartsAt:v,loop:!1}),{isStudio:H}=p();hK(()=>{if(!k)throw Error("No src passed");if(!H&&window.process?.env?.NODE_ENV!=="test")return;if(!K)return;return N({type:q,src:k,id:G,duration:R,from:0,trimBefore:null,parent:Z?.id??null,displayName:L,documentationLink:U,volume:D,showInTimeline:!0,nonce:x.get(),startMediaFrom:0-$,mediaFrameAtSequenceZero:null,doesVolumeChange:T,loopDisplay:X,playbackRate:w,getStack:J,premountDisplay:M,postmountDisplay:Q,controls:null,effects:[],refForOutline:Y,isInsideSeries:!1,frozenFrame:null,frozenMediaFrame:null}),()=>{y(G)}},[R,G,Z,k,N,y,D,T,x,q,$,w,J,K,M,Q,X,U,L,H,Y])},SZ=(b,j)=>{let[k,q]=dK([]),w=rq([]),z=rq([]),J=p().isRendering,K=rq(!1),M=eq((U)=>{if(J)return{unblock:()=>{return}};let Y=!1;return q((Z)=>[...Z,U]),{unblock:()=>{if(Y)return;Y=!0,q((Z)=>{let $=Z.filter((N)=>N!==U);if($.length===Z.length)return Z;return $})}}},[J]),Q=eq((U)=>{return w.current=[...w.current,U],{remove:()=>{w.current=w.current.filter((Y)=>Y!==U)}}},[]),X=eq((U)=>{return z.current=[...z.current,U],{remove:()=>{z.current=z.current.filter((Y)=>Y!==U)}}},[]);if(mK(()=>{if(J)return;if(k.length>0&&!K.current)K.current=!0,[...w.current].forEach((U)=>U()),e({logLevel:b,message:"Player is entering buffer state",mountTime:j,tag:"player"})},[k]),typeof window<"u")gZ(()=>{if(J)return;if(k.length===0&&K.current)K.current=!1,[...z.current].forEach((U)=>U()),e({logLevel:b,message:"Player is exiting buffer state",mountTime:j,tag:"player"})},[k]);return CZ(()=>{return{addBlock:M,listenForBuffering:Q,listenForResume:X,buffering:K}},[M,K,Q,X])},yj=LZ.createContext(null),uK=({children:b})=>{let{logLevel:j,mountTime:k}=OZ(lb),q=SZ(j??"info",k);return BZ(yj.Provider,{value:q,children:b})},sK=(b)=>{let[j,k]=dK(b.buffering.current);return mK(()=>{let q=()=>{k(!0)},w=()=>{k(!1)},z=b.listenForBuffering(q),G=b.listenForResume(w);return()=>{z.remove(),G.remove()}},[b]),j},zk=()=>{let b=EZ(yj),j=Rb(),k=b?b.addBlock:null;return HZ(()=>({delayPlayback:()=>{if(!k)throw Error("Tried to enable the buffering state, but a Remotion context was not found. This API can only be called in a component that was passed to the Remotion Player or a <Composition>. Or you might have experienced a version mismatch - run `npx remotion versions` and ensure all packages have the same version. This error is thrown by the buffer state https://remotion.dev/docs/player/buffer-state");t.trace({logLevel:j,tag:"[buffer-state]"},"Adding buffer handle",Error().stack);let{unblock:q}=k({id:String(Math.random())}),w=!1;return{unblock:()=>{if(w)return;w=!0,t.trace({logLevel:j,tag:"[buffer-state]"},"Removing buffer handle"),q()}}}}),[k,j])},IZ=()=>{return/^((?!chrome|android).)*safari/i.test(window.navigator.userAgent)},PZ=({mediaRef:b,mediaType:j,onVariableFpsVideoDetected:k,pauseWhenBuffering:q,logLevel:w,mountTime:z})=>{let G=xZ(!1),{delayPlayback:J}=zk(),K=WZ((M)=>{if(j!=="video")return;if(!q)return;let Q=b.current;if(!Q)return;if(Q.readyState>=Q.HAVE_FUTURE_DATA&&!IZ()){e({logLevel:w,message:`Not using buffer until first frame, because readyState is ${Q.readyState} and is not Safari or Desktop Chrome`,mountTime:z,tag:"buffer"});return}if(!Q.requestVideoFrameCallback){e({logLevel:w,message:"Not using buffer until first frame, because requestVideoFrameCallback is not supported",mountTime:z,tag:"buffer"});return}G.current=!0,e({logLevel:w,message:`Buffering ${b.current?.src} until the first frame is received`,mountTime:z,tag:"buffer"});let X=J(),U=()=>{X.unblock(),Q.removeEventListener("ended",U,{once:!0}),Q.removeEventListener("pause",U,{once:!0}),G.current=!1},Y=()=>{U()};Q.requestVideoFrameCallback((Z,$)=>{if(Math.abs($.mediaTime-M)>0.5)k();U()}),Q.addEventListener("ended",Y,{once:!0}),Q.addEventListener("pause",Y,{once:!0}),Q.addEventListener("canplay",Y,{once:!0})},[J,w,b,j,z,k,q]);return vZ(()=>{return{isBuffering:()=>G.current,bufferUntilFirstFrame:K}},[K])},cZ=(b)=>{let{duration:j,currentTime:k,paused:q,ended:w,desiredUnclampedTime:z,mediaTagTime:G,mediaTagLastUpdate:J,rvcTime:K,rvcLastUpdate:M,isVariableFpsVideo:Q,acceptableTimeShift:X,lastSeekDueToShift:U,playing:Y,playbackRate:Z,mediaTagBufferingOrStalled:$,playerBuffering:N,absoluteFrame:y,onlyWarnForMediaSeekingError:W,isPremounting:v,isPostmounting:D,pauseWhenBuffering:R}=b,T=!Number.isNaN(j)&&Number.isFinite(j)?Math.min(j,z):z,x=Math.abs(T-G),L=K?Math.abs(T-K):null,H=M&&K>J?L:x,E=L&&!Q?H:x;if(E>X&&U!==T)return{type:"seek-due-to-shift",shouldBeTime:T,why:`because time shift is too big. shouldBeTime = ${T}, isTime = ${G}, requestVideoCallbackTime = ${K}, timeShift = ${E}${Q?", isVariableFpsVideo = true":""}, isPremounting = ${v}, isPostmounting = ${D}, pauseWhenBuffering = ${R}`,bufferUntilFirstFrame:Y&&Z>0,playReason:Y&&q?"player is playing but media tag is paused, and just seeked":null,warnAboutNonSeekable:!W};let O=Y?0.15:0.01,g=Math.abs(k-T)>O;if(!Y||N&&!$)return{type:"seek-if-not-playing",shouldBeTime:T,why:g?`not playing or something else is buffering. time offset is over seek threshold (${O})`:null};if(!Y||N)return{type:"none"};let C=q&&!w;if(C||y===0){let _=C?"media tag is paused":"absolute frame is 0";return{type:"play-and-seek",shouldBeTime:T,why:g?`is over timeshift threshold (threshold = ${O}) and ${_}`:null,playReason:`player is playing and ${_}`,bufferUntilFirstFrame:!Q&&Z>0}}return{type:"none"}},_Z=(b)=>{let j=AZ.useRef({time:b.current?.currentTime??0,lastUpdate:performance.now()}),k=b.current?.currentTime??null;if(k!==null){if(j.current.time!==k)j.current.time=k,j.current.lastUpdate=performance.now()}return j},Pk=({mediaRef:b,time:j,logLevel:k,why:q,mountTime:w})=>{let z=Yq()?Number(j.toFixed(1)):j;return e({logLevel:k,tag:"seek",message:`Seeking from ${b.currentTime} to ${z}. src= ${b.src} Reason: ${q}`,mountTime:w}),b.currentTime=z,z},hZ=({element:b,shouldBuffer:j,isPremounting:k,isPostmounting:q,logLevel:w,mountTime:z,src:G})=>{let J=zk(),[K,M]=VZ(!1);return FZ(()=>{let Q=[],{current:X}=b;if(!X)return;if(!j)return;if(k||q){if((k||q)&&X.readyState<X.HAVE_FUTURE_DATA){if(!navigator.userAgent.includes("Firefox/")){e({logLevel:w,message:`Calling .load() on ${X.src} because readyState is ${X.readyState} and it is not Firefox. Element is premounted ${X.playbackRate}`,tag:"load",mountTime:z});let $=X.playbackRate;X.load(),X.playbackRate=$}}return}let U=($)=>{let N=!1;if(Q.forEach((y)=>{y($),N=!0}),Q=[],M((y)=>{if(y)N=!0;return!1}),N)e({logLevel:w,message:`Unmarking as buffering: ${X.src}. Reason: ${$}`,tag:"buffer",mountTime:z})},Y=($)=>{M(!0),e({logLevel:w,message:`Marking as buffering: ${X.src}. Reason: ${$}`,tag:"buffer",mountTime:z});let{unblock:N}=J.delayPlayback(),y=()=>{U('"canplay" was fired'),Z()},W=()=>{U('"error" event was occurred'),Z()};X.addEventListener("canplay",y,{once:!0}),Q.push(()=>{X.removeEventListener("canplay",y)}),X.addEventListener("error",W,{once:!0}),Q.push(()=>{X.removeEventListener("error",W)}),Q.push((v)=>{e({logLevel:w,message:`Unblocking ${X.src} from buffer. Reason: ${v}`,tag:"buffer",mountTime:z}),N()})},Z=()=>{if(X.readyState<X.HAVE_FUTURE_DATA){if(Y(`readyState is ${X.readyState}, which is less than HAVE_FUTURE_DATA`),!navigator.userAgent.includes("Firefox/")){e({logLevel:w,message:`Calling .load() on ${G} because readyState is ${X.readyState} and it is not Firefox. ${X.playbackRate}`,tag:"load",mountTime:z});let $=X.playbackRate;X.load(),X.playbackRate=$}}else{let $=()=>{Y('"waiting" event was fired')};X.addEventListener("waiting",$),Q.push(()=>{X.removeEventListener("waiting",$)})}};return Z(),()=>{U("element was unmounted or prop changed")}},[J,G,b,k,q,w,j,z]),K},mZ=({mediaRef:b,mediaType:j,lastSeek:k,onVariableFpsVideoDetected:q})=>{let w=lZ(null);return fZ(()=>{let{current:z}=b;if(z)w.current={time:z.currentTime,lastUpdate:performance.now()};else{w.current=null;return}if(j!=="video"){w.current=null;return}let G=z;if(!G.requestVideoFrameCallback)return;let J=()=>{return},K=()=>{if(!G)return;let M=G.requestVideoFrameCallback((Q,X)=>{if(w.current!==null){let U=Math.abs(w.current.time-X.mediaTime),Y=Math.abs(k.current===null?1/0:X.mediaTime-k.current);if(U>0.5&&Y>0.5&&X.mediaTime>w.current.time)q()}w.current={time:X.mediaTime,lastUpdate:performance.now()},K()});J=()=>{G.cancelVideoFrameCallback(M),J=()=>{return}}};return K(),()=>{J()}},[k,b,j,q]),w},pK=({frame:b,playbackRate:j,startFrom:k})=>{return oj(b,[-1,k,k+1],[-1,k,k+j])},iK=({fps:b,frame:j,playbackRate:k,startFrom:q})=>{let w=pK({frame:j,playbackRate:k,startFrom:q}),z=1000/b;return w*z/1000},vG={},dZ=(b,j)=>{if(b===null)return;if(b.seekable.length===0)return;if(b.seekable.length>1)return;if(vG[b.src])return;let k={start:b.seekable.start(0),end:b.seekable.end(0)};if(k.start===0&&k.end===0){let q=[`The media ${b.src} cannot be seeked. This could be one of few reasons:`,"1) The media resource was replaced while the video is playing but it was not loaded yet.","2) The media does not support seeking.","3) The media was loaded with security headers prventing it from being included.","Please see https://remotion.dev/docs/non-seekable-media for assistance."].join(`
|
|
18
|
+
`);if(j==="console-error")console.error(q);else if(j==="console-warning")console.warn(`The media ${b.src} does not support seeking. The video will render fine, but may not play correctly in the Remotion Studio and in the <Player>. See https://remotion.dev/docs/non-seekable-media for an explanation.`);else throw Error(q);vG[b.src]=!0}},nK=({mediaRef:b,src:j,mediaType:k,playbackRate:q,preservePitch:w=!0,onlyWarnForMediaSeekingError:z,acceptableTimeshift:G,pauseWhenBuffering:J,isPremounting:K,isPostmounting:M,onAutoPlayError:Q})=>{let{playbackRate:X}=Vw(),U=Jb(),Y=Pb(),[Z]=BJ(),$=DZ(yj),{fps:N}=Ub(),y=fb(),W=oq(null),v=oq(null),D=Rb(),R=uj();if(!$)throw Error("useMediaPlayback must be used inside a <BufferingContext>");let T=oq({}),x=yZ(()=>{if(!j)return;if(T.current[j])return;t.verbose({logLevel:D,tag:null},`Detected ${j} as a variable FPS video. Disabling buffering while seeking.`),T.current[j]=!0},[D,j]),L=mZ({mediaRef:b,mediaType:k,lastSeek:v,onVariableFpsVideoDetected:x}),H=_Z(b),E=iK({frame:U,playbackRate:q,startFrom:-y,fps:N}),O=hZ({element:b,shouldBuffer:J,isPremounting:K,isPostmounting:M,logLevel:D,mountTime:R,src:j??null}),{bufferUntilFirstFrame:g,isBuffering:B}=PZ({mediaRef:b,mediaType:k,onVariableFpsVideoDetected:x,pauseWhenBuffering:J,logLevel:D,mountTime:R}),C=q*X,S=(()=>{if(b.current?.duration)return Math.min(b.current.duration,G??0.65);return G??0.65})(),_=sK($);WG(()=>{if(b.current?.paused)return;if(!Z){e({logLevel:D,tag:"pause",message:`Pausing ${b.current?.src} because ${K?"media is premounting":M?"media is postmounting":"Player is not playing"}`,mountTime:R}),b.current?.pause();return}let I=O||B();if($.buffering.current&&!I)e({logLevel:D,tag:"pause",message:`Pausing ${b.current?.src} because player is buffering but media tag is not`,mountTime:R}),b.current?.pause()},[B,O,$,_,K,D,b,k,R,Z,M]);let P=p();TZ(()=>{let I=Math.max(0,C);if(b.current&&b.current.playbackRate!==I)b.current.playbackRate=I;if(b.current&&b.current.preservesPitch!==w)b.current.preservesPitch=w},[b,C,w]),WG(()=>{let I=k==="audio"?"<Html5Audio>":"<Html5Video>";if(!b.current)throw Error(`No ${k} ref found`);if(!j)throw Error(`No 'src' attribute was passed to the ${I} element.`);let{current:A}=b,F=cZ({duration:A.duration,currentTime:A.currentTime,paused:A.paused,ended:A.ended,desiredUnclampedTime:E,mediaTagTime:H.current.time,mediaTagLastUpdate:H.current.lastUpdate,rvcTime:L.current?.time??null,rvcLastUpdate:L.current?.lastUpdate??null,isVariableFpsVideo:Boolean(T.current[j]),acceptableTimeShift:S,lastSeekDueToShift:W.current,playing:Z,playbackRate:C,mediaTagBufferingOrStalled:O||B(),playerBuffering:$.buffering.current,absoluteFrame:Y,onlyWarnForMediaSeekingError:z,isPremounting:K,isPostmounting:M,pauseWhenBuffering:J});if(F.type==="none")return;if(F.type==="seek-due-to-shift"){if(v.current=Pk({mediaRef:A,time:F.shouldBeTime,logLevel:D,why:F.why,mountTime:R}),W.current=v.current,F.bufferUntilFirstFrame)g(F.shouldBeTime);if(F.playReason!==null)lk({mediaRef:b,mediaType:k,onAutoPlayError:Q,logLevel:D,mountTime:R,reason:F.playReason,isPlayer:P.isPlayer});if(F.warnAboutNonSeekable)dZ(A,"console-error");return}if(F.type==="seek-if-not-playing"){if(F.why!==null)v.current=Pk({mediaRef:A,time:F.shouldBeTime,logLevel:D,why:F.why,mountTime:R});return}if(F.why!==null)v.current=Pk({mediaRef:A,time:F.shouldBeTime,logLevel:D,why:F.why,mountTime:R});if(lk({mediaRef:b,mediaType:k,onAutoPlayError:Q,logLevel:D,mountTime:R,reason:F.playReason,isPlayer:P.isPlayer}),F.bufferUntilFirstFrame)g(F.shouldBeTime)},[Y,S,g,$.buffering,L,D,E,B,O,b,k,z,C,Z,j,Q,K,M,J,R,H,P.isPlayer])},aK=({mediaRef:b,id:j,mediaType:k,onAutoPlayError:q,isPremounting:w,isPostmounting:z})=>{let{audioAndVideoTags:G,imperativePlaying:J}=Qj(),K=Rb(),M=uj(),Q=p();uZ(()=>{let X={id:j,play:(U)=>{if(!J.current)return;if(w||z)return;return lk({mediaRef:b,mediaType:k,onAutoPlayError:q,logLevel:K,mountTime:M,reason:U,isPlayer:Q.isPlayer})}};return G.current.push(X),()=>{G.current=G.current.filter((U)=>U.id!==j)}},[G,j,b,k,q,J,w,z,K,M,Q.isPlayer])},kz=tK({playerMuted:!1,mediaVolume:1}),qz=tK({setPlayerMuted:()=>{throw Error("default")},setMediaVolume:()=>{throw Error("default")}}),wz=()=>{let{mediaVolume:b}=dk(kz),{setMediaVolume:j}=dk(qz);return oK(()=>{return[b,j]},[b,j])},zz=()=>{let{playerMuted:b}=dk(kz),{setPlayerMuted:j}=dk(qz);return oK(()=>{return[b,j]},[b,j])},Dj=(b)=>{if(b>=100)throw Error(`Volume was set to ${b}, but regular volume is 1, not 100. Did you forget to divide by 100? Set a volume of less than 100 to dismiss this error.`)},pZ=(b,j)=>{let[k]=ZG(b.shouldPreMountAudioTags);if(b.shouldPreMountAudioTags!==k)throw Error("Cannot change the behavior for pre-mounting audio tags dynamically.");let q=Rb(),{volume:w,muted:z,playbackRate:G,preservePitch:J,shouldPreMountAudioTags:K,src:M,onDuration:Q,acceptableTimeShiftInSeconds:X,_remotionInternalNeedsDurationCalculation:U,_remotionInternalNativeLoopPassed:Y,_remotionInternalStack:Z,allowAmplificationDuringRender:$,name:N,pauseWhenBuffering:y,showInTimeline:W,loopVolumeCurveBehavior:v,crossOrigin:D,delayRenderRetries:R,delayRenderTimeoutInMilliseconds:T,toneFrequency:x,useWebAudioApi:L,onError:H,onNativeError:E,audioStreamIndex:O,...g}=b;if(!1)throw Error("typecheck error");let[C]=wz(),[S]=zz(),_=Rj(v??"repeat");if(!M)throw TypeError("No 'src' was passed to <Html5Audio>.");let P=db(M),I=mY(o),[A]=ZG(()=>String(Math.random())),F=ub({frame:_,volume:w,mediaVolume:C});Dj(F);let V=rw({crossOrigin:D,requestsVideoFrame:!1,isClientSideRendering:!1}),l=YG(()=>{return{muted:z||S||F<=0,src:P,loop:Y,crossOrigin:V,...g}},[Y,S,z,g,P,F,V]),m=YG(()=>`audio-${wk(M??"")}-${I?.relativeFrom}-${I?.cumulatedFrom}-${I?.durationInFrames}-muted:${b.muted}-loop:${b.loop}`,[M,I?.relativeFrom,I?.cumulatedFrom,I?.durationInFrames,b.muted,b.loop]),{el:u,mediaElementSourceNode:c,cleanupOnMediaTagUnmount:h}=JZ({aud:l,audioId:m,premounting:Boolean(I?.premounting),postmounting:Boolean(I?.postmounting)}),f=fY(()=>{return Z??null},[Z]);jz({volume:w,mediaVolume:C,src:M,mediaType:"audio",playbackRate:G??1,displayName:N??null,id:A,getStack:f,showInTimeline:W,premountDisplay:I?.premountDisplay??null,postmountDisplay:I?.postmountDisplay??null,loopDisplay:void 0,documentationLink:"https://www.remotion.dev/docs/html5-audio",refForOutline:null}),nK({mediaRef:u,src:M,mediaType:"audio",playbackRate:G??1,preservePitch:J,onlyWarnForMediaSeekingError:!1,acceptableTimeshift:X??null,isPremounting:Boolean(I?.premounting),isPostmounting:Boolean(I?.postmounting),pauseWhenBuffering:y,onAutoPlayError:null}),aK({id:A,isPostmounting:Boolean(I?.postmounting),isPremounting:Boolean(I?.premounting),mediaRef:u,mediaType:"audio",onAutoPlayError:null}),VK({logLevel:q,mediaRef:u,source:c,volume:F,shouldUseWebAudioApi:L??!1}),(XG.useInsertionEffect??XG.useLayoutEffect)(()=>{return()=>{requestAnimationFrame(()=>{h()})}},[h]),uY(j,()=>{return u.current},[u]);let a=sY(Q);if(a.current=Q,dY(()=>{let{current:s}=u;if(!s)return;if(s.duration){a.current?.(s.src,s.duration);return}let wb=()=>{a.current?.(s.src,s.duration)};return s.addEventListener("loadedmetadata",wb),()=>{s.removeEventListener("loadedmetadata",wb)}},[u,M]),k)return null;return sZ("audio",{ref:u,preload:"metadata",crossOrigin:V,...l})},eK=lY(pZ),b0=(b,j)=>{let k=eZ(null),{volume:q,playbackRate:w,allowAmplificationDuringRender:z,onDuration:G,toneFrequency:J,_remotionInternalNeedsDurationCalculation:K,_remotionInternalNativeLoopPassed:M,acceptableTimeShiftInSeconds:Q,name:X,onNativeError:U,delayRenderRetries:Y,delayRenderTimeoutInMilliseconds:Z,loopVolumeCurveBehavior:$,pauseWhenBuffering:N,audioStreamIndex:y,preservePitch:W,...v}=b,D=Pb(),R=Rj($??"repeat"),T=Jb(),x=xG(o),{registerRenderAsset:L,unregisterRenderAsset:H}=xG(Ab),{delayRender:E,continueRender:O}=Qb(),g=oZ(()=>`audio-${wk(b.src??"")}-${x?.relativeFrom}-${x?.cumulatedFrom}-${x?.durationInFrames}`,[b.src,x?.relativeFrom,x?.cumulatedFrom,x?.durationInFrames]),B=ub({volume:q,frame:R,mediaVolume:1});Dj(B),aZ(j,()=>{return k.current},[]),nZ(()=>{if(!b.src)throw Error("No src passed");if(!window.remotion_audioEnabled)return;if(b.muted)return;if(B<=0)return;return L({type:"audio",src:Nb(b.src),id:g,frame:D,volume:B,mediaFrame:T,playbackRate:b.playbackRate??1,toneFrequency:J??1,audioStartFrame:Math.max(0,-(x?.cumulatedNegativeFrom??0)),audioStreamIndex:y??0}),()=>H(g)},[b.muted,b.src,L,D,g,H,B,R,T,w,b.playbackRate,J,x?.cumulatedNegativeFrom,y]);let{src:C}=b,S=j||K;if(tZ(()=>{if(window.process?.env?.NODE_ENV==="test")return;if(!S)return;let _=E("Loading <Html5Audio> duration with src="+C,{retries:Y??void 0,timeoutInMilliseconds:Z??void 0}),{current:P}=k,I=()=>{if(P?.duration)G(P.src,P.duration);O(_)};if(P?.duration)G(P.src,P.duration),O(_);else P?.addEventListener("loadedmetadata",I,{once:!0});return()=>{P?.removeEventListener("loadedmetadata",I),O(_)}},[C,G,S,Y,Z,O,E]),!S)return null;return rZ("audio",{ref:k,...v,onError:U})},j0=iZ(b0),k0=(b,j)=>{let k=KG(Xq),q=b,{startFrom:w,endAt:z,trimBefore:G,trimAfter:J,name:K,_remotionInternalStack:M,pauseWhenBuffering:Q,showInTimeline:X,onError:U,freeze:Y,...Z}=q,{loop:$,freeze:N,...y}=q,{fps:W}=Ub(),v=p(),D=aj(Q);if(v.isClientSideRendering)throw Error("<Html5Audio> is not supported in @remotion/web-renderer. Use <Audio> from @remotion/media instead. See https://remotion.dev/docs/client-side-rendering/limitations");if(typeof Y<"u")throw TypeError('The "freeze" prop is not supported on <Html5Audio />. Use <Sequence freeze={...}> to freeze media playback.');let{durations:R,setDurations:T}=KG(ew);if(typeof b.src!=="string")throw TypeError(`The \`<Html5Audio>\` tag requires a string for \`src\`, but got ${JSON.stringify(b.src)} instead.`);let x=db(b.src),L=JG((B)=>{console.log(B.currentTarget.error);let C=`Could not play audio with src ${x}: ${B.currentTarget.error}. See https://remotion.dev/docs/media-playback-error for help.`;if($){if(U){U(Error(C));return}wj(Error(C))}else U?.(Error(C)),console.warn(C)},[$,U,x]),H=JG((B,C)=>{T({type:"got-duration",durationInSeconds:C,src:B})},[T]),E=R[Nb(x)]??R[Nb(b.src)];Qq({startFrom:w,endAt:z,trimBefore:G,trimAfter:J});let{trimBeforeValue:O,trimAfterValue:g}=Uq({startFrom:w,endAt:z,trimBefore:G,trimAfter:J});if($&&E!==void 0){if(!Number.isFinite(E))return Fb(jj,{...y,ref:j,_remotionInternalNativeLoopPassed:!0});let B=E*W;return Fb(qk,{layout:"none",durationInFrames:Jq({trimAfter:g,mediaDurationInFrames:B,playbackRate:b.playbackRate??1,trimBefore:O}),children:Fb(jj,{...y,ref:j,_remotionInternalNativeLoopPassed:!0})})}if(typeof O<"u"||typeof g<"u")return Fb(bb,{layout:"none",from:0-(O??0),showInTimeline:!1,durationInFrames:g,name:K,children:Fb(jj,{_remotionInternalNeedsDurationCalculation:Boolean($),pauseWhenBuffering:D,...Z,ref:j})});if(Mq({playbackRate:b.playbackRate,preservePitch:b.preservePitch,volume:b.volume},"Html5Audio"),v.isRendering)return Fb(j0,{onDuration:H,...b,ref:j,onNativeError:L,_remotionInternalNeedsDurationCalculation:Boolean($)});return Fb(eK,{_remotionInternalNativeLoopPassed:b._remotionInternalNativeLoopPassed??!1,_remotionInternalStack:M??null,shouldPreMountAudioTags:k!==null&&k.numberOfAudioTags>0,...b,ref:j,onNativeError:L,onDuration:H,pauseWhenBuffering:D,_remotionInternalNeedsDurationCalculation:Boolean($),showInTimeline:X??!0})},jj=WY(k0);r(jj);var q0=jj,Q0=(b)=>{if(b===void 0)return 1;if(typeof b!=="number"||!Number.isFinite(b)||b<=0)throw Error(`<Solid>: \`pixelDensity\` must be a positive finite number. Received: ${String(b)}.`);return b},U0={...yb,color:{type:"color",default:"transparent",description:"Color"},width:{type:"number",min:1,step:1,default:1920,description:"Width",hiddenFromList:!1},height:{type:"number",min:1,step:1,default:1080,description:"Height",hiddenFromList:!1},pixelDensity:{type:"number",min:1,max:3,step:0.1,default:1,description:"Pixel density",hiddenFromList:!1},...Zb,...Cb,...Ob,...gb,...cb},X0=({color:b,width:j,height:k,effects:q=[],className:w,style:z,pixelDensity:G,overrideId:J,reference:K})=>{let{delayRender:M,continueRender:Q,cancelRender:X}=Qb(),U=Q0(G),Y=Math.ceil(j*U),Z=Math.ceil(k*U),[$,N]=M0(null),y=bk({effects:q,overrideId:J??null}),W=EG(()=>{if(typeof document>"u")return null;let T=document.createElement("canvas");return T.width=1,T.height=1,T},[]),v=kk(),D=z0((T)=>{if(N(T),typeof K==="function")K(T);else if(K)K.current=T},[K]);G0(()=>{if(!$||!W)return;let T=M("Solid effect chain");if(!v)return Q(T),()=>{Q(T)};let x=W.getContext("2d",{colorSpace:"srgb"});if(!x){X(Error("Failed to acquire 2D context for <Solid> source"));return}if(x.clearRect(0,0,1,1),b!==void 0)x.fillStyle=b,x.fillRect(0,0,1,1);return jk({state:v.get(Y,Z),source:W,effects:y,output:$,width:Y,height:Z}).then((L)=>{if(L)Q(T)}).catch((L)=>{X(L)}),()=>{Q(T)}},[b,$,W,v,Y,Z,M,Q,X,y]);let R=EG(()=>{return{width:j,height:k,...z??{}}},[k,z,j]);return Ew("canvas",{ref:D,width:Y,height:Z,className:w,style:R})},Y0=w0(({effects:b=[],controls:j,color:k,height:q,width:w,className:z,durationInFrames:G,style:J,name:K,from:M,trimBefore:Q,freeze:X,hidden:U,showInTimeline:Y,pixelDensity:Z,cropLeft:$,cropRight:N,cropTop:y,cropBottom:W,...v},D)=>{let R=rj(b),T=K0(null);J0(D,()=>{return T.current},[]);let x=mb({cropLeft:$,cropRight:N,cropTop:y,cropBottom:W,style:J??null,componentName:"<Solid />"});return Ew(bb,{layout:"none",from:M,trimBefore:Q,freeze:X,hidden:U,showInTimeline:Y,controls:j,_remotionInternalEffects:R,durationInFrames:G,name:K??"<Solid>",outlineRef:T,_remotionInternalDocumentationLink:"https://www.remotion.dev/docs/solid",...v,children:Ew(X0,{reference:T,overrideId:j?.overrideId??null,color:k,height:q,width:w,className:z,style:x??void 0,effects:b,pixelDensity:Z})})}),Gz=Db({Component:Y0,componentName:"<Solid>",componentIdentity:"dev.remotion.remotion.Solid",schema:U0,supportsEffects:!0});Gz.displayName="Solid";r(Gz);var Ek=null,Jz=()=>{if(Ek!==null)return Ek;if(typeof document>"u")return!1;let b=document.createElement("canvas");return Ek=typeof b.getContext("2d")?.drawElementImage==="function"&&typeof b.requestPaint==="function"&&typeof b.captureElementImage==="function"&&"transferControlToOffscreen"in HTMLCanvasElement.prototype,Ek},bM="HTML in Canvas is not supported. Two common causes: Chrome is older than version 148 (update Chrome), or the HTML-in-Canvas flag is disabled at chrome://flags/#canvas-draw-element (enable it and restart Chrome).",HG=152,N0=()=>{if(typeof navigator>"u")return null;let b=navigator.userAgent.match(/\b(?:HeadlessChrome|Chrome)\/(\d+)/);if(!b)return null;return Number(b[1])};function R0(b,j){if(typeof b!=="number"||typeof j!=="number")throw Error(`HtmlInCanvas: \`width\` and \`height\` must be numbers. Received width=${String(b)}, height=${String(j)}.`);if(!Number.isInteger(b)||b<=0)throw Error(`HtmlInCanvas: \`width\` must be a positive integer. Received: ${String(b)}.`);if(!Number.isInteger(j)||j<=0)throw Error(`HtmlInCanvas: \`height\` must be a positive integer. Received: ${String(j)}.`)}function y0(b){if(b===void 0)return 1;if(typeof b!=="number"||!Number.isFinite(b)||b<=0)throw Error(`HtmlInCanvas: \`pixelDensity\` must be a positive finite number. Received: ${String(b)}.`);return b}var Hk=(b)=>{return b instanceof DOMException&&b.name==="InvalidStateError"},LG="HtmlInCanvas: Expected the element to be inside the viewport during rendering, but Chrome had no cached paint record for it.",OG=({target:b,width:j,height:k})=>{if(b.width!==j)b.width=j;if(b.height!==k)b.height=k},D0=({canvas:b,element:j,elementImage:k})=>{let q=b.getContext("2d");if(!q)throw Error("Failed to acquire 2D context for <HtmlInCanvas> canvas");q.reset();let w=q.drawElementImage(k,0,0);j.style.transform=w.toString()},gG=Z0(null),jM=rK(({width:b,height:j,effects:k,children:q,onPaint:w,onInit:z,pixelDensity:G,controls:J,style:K},M)=>{let Q=$0(gG);R0(b,j);let X=N0();if(Q&&X!==null&&X<HG)throw Error(`Nested <HtmlInCanvas> components require Chrome ${HG} or newer, but the current browser is Chrome ${X}. Upgrade Chrome or avoid nesting components that use <HtmlInCanvas>, such as shapes with effects.`);let U=y0(G),Y=Math.ceil(b*U),Z=Math.ceil(j*U),{delayRender:$,continueRender:N,cancelRender:y}=Qb(),{isClientSideRendering:W,isRendering:v}=p(),D=!v||W,R=w===void 0&&z===void 0;if(!Jz())y(Error(bM));let T=Mb(null),x=Mb(null),L=Mb(null),H=`${b}x${j}@${U}-${R?"direct":"offscreen"}`,E=Hw((c)=>{if(T.current=c,typeof M==="function")M(c);else if(M)M.current=c},[M]),O=kk(),g=bk({effects:k,overrideId:J?.overrideId??null}),B=Mb(g);B.current=g;let C=Mb(w);C.current=w;let S=Mb(z);S.current=z;let _=Mb(!1),P=Mb(null),I=Mb(!1),A=Mb(Q);A.current=Q;let F=Hw(async()=>{let c=L.current;if(!c)throw Error("Canvas or scene element not found");let h=x.current;if(!h)throw Error("HtmlInCanvas: paint target is not ready because the canvas is remounting");OG({target:h,width:Y,height:Z});try{let f=T.current;if(!f)throw Error("Canvas not found");let n=$("onPaint");if(!_.current){let s=S.current;if(!s)_.current=!0;else{let wb;try{wb=f.captureElementImage(c)}catch(zb){if(Hk(zb)&&D){N(n);return}if(Hk(zb))throw Error(LG);throw zb}_.current=!0;try{if(h instanceof HTMLCanvasElement)throw Error("HtmlInCanvas: onInit requires an OffscreenCanvas paint target");let zb=await s({canvas:h,element:c,elementImage:wb,pixelDensity:U});if(typeof zb!=="function")throw Error("HtmlInCanvas: when `onInit` is provided, it must return a cleanup function, or a Promise that resolves to one.");if(I.current)zb();else P.current=zb}finally{wb.close()}}}let a;try{a=f.captureElementImage(c)}catch(s){if(Hk(s)&&D){N(n);return}if(Hk(s))throw Error(LG);throw s}try{let s=C.current;if(s){if(h instanceof HTMLCanvasElement)throw Error("HtmlInCanvas: onPaint requires an OffscreenCanvas paint target");let wb=s({canvas:h,element:c,elementImage:a,pixelDensity:U});if(wb)await wb}else D0({canvas:h,element:c,elementImage:a,pixelDensity:U});await jk({state:O.get(Y,Z),source:h,effects:B.current,output:h,width:Y,height:Z})}finally{a.close()}A.current?.requestParentPaint(),N(n)}catch(f){y(f)}},[Z,Y,O,N,y,$,U,D]);bw(()=>{let c=T.current;if(!c)throw Error("Canvas not found");c.layoutSubtree=!0;let h=R?c:c.transferControlToOffscreen();return x.current=h,OG({target:h,width:Y,height:Z}),_.current=!1,I.current=!1,c.addEventListener("paint",F),()=>{c.removeEventListener("paint",F),x.current=null,_.current=!1,I.current=!0,P.current?.(),P.current=null}},[F,y,Y,Z,R]);let V=Mb(!1);bw(()=>{if(!V.current){V.current=!0;return}let c=T.current;if(!c)return;c.requestPaint?.()},[w,g]),bw(()=>{let c=T.current;if(!c)return;let h=$("waiting for first paint after canvas resize");return c.addEventListener("paint",()=>{N(h)},{once:!0}),()=>{N(h)}},[b,j,N,$,H]);let l=jw(()=>{return{width:b,height:j}},[b,j]),m=jw(()=>{return{width:b,height:j,...K??{}}},[j,K,b]),u=jw(()=>{return{requestParentPaint:()=>{T.current?.requestPaint?.()}}},[]);return _j(gG.Provider,{value:u,children:_j("canvas",{ref:E,width:Y,height:Z,style:m,children:_j("div",{ref:L,style:l,children:q})},H)})});jM.displayName="HtmlInCanvasContent";var kM=rK(({width:b,height:j,effects:k=[],children:q,onPaint:w,onInit:z,pixelDensity:G,controls:J,style:K,cropLeft:M,cropRight:Q,cropTop:X,cropBottom:U,durationInFrames:Y,name:Z,...$},N)=>{let y=rj(k),W=Mb(null),v=Hw((R)=>{if(W.current=R,typeof N==="function")N(R);else if(N)N.current=R},[N]),D=mb({cropLeft:M,cropRight:Q,cropTop:X,cropBottom:U,style:K??null,componentName:"<HtmlInCanvas />"});return _j(bb,{durationInFrames:Y,name:Z??"<HtmlInCanvas>",_remotionInternalDocumentationLink:"https://www.remotion.dev/docs/remotion/html-in-canvas",controls:J,_remotionInternalEffects:y,outlineRef:W,layout:"none",...$,children:_j(jM,{ref:v,width:b,height:j,effects:k,onPaint:w,onInit:z,pixelDensity:G,controls:J,style:D??void 0,children:q})})});kM.displayName="HtmlInCanvas";var T0={...yb,pixelDensity:{type:"number",min:1,max:3,step:0.1,default:1,description:"Pixel density",hiddenFromList:!1},...Zb,...Cb,...Ob,...gb,...cb},W0=Db({Component:kM,componentName:"<HtmlInCanvas>",componentIdentity:"dev.remotion.remotion.HtmlInCanvas",schema:T0,supportsEffects:!0}),Kz=Object.assign(W0,{isSupported:Jz});Kz.displayName="HtmlInCanvas";r(Kz);function Hb(b){if(typeof b!=="string")return String(b);if(b.length>100&&(b.startsWith("data:")||b.startsWith("blob:")))return b.slice(0,60)+"...["+b.length+" chars total]";return b}var H0={...yb,...cb,...Yj,fit:{type:"enum",default:"fill",description:"Fit",variants:{fill:{},contain:{},cover:{}}},...Zb,...Cb,...Ob,...gb},L0=()=>{if(typeof DOMException<"u")return new DOMException("Image loading was aborted","AbortError");let b=Error("Image loading was aborted");return b.name="AbortError",b},O0=({src:b,signal:j})=>{return new Promise((k,q)=>{let w=new Image,z=!1;function G(){w.onload=null,w.onerror=null}function J(M){if(z)return;z=!0,G(),M()}function K(){J(()=>q(L0()))}if(w.onload=()=>{Promise.resolve(w.decode?.()).catch(()=>{return}).then(()=>{let M=w.naturalWidth||w.width,Q=w.naturalHeight||w.height;if(M<=0||Q<=0){J(()=>q(Error(`Could not determine dimensions for <CanvasImage> with src="${Hb(b)}"`)));return}J(()=>k({element:w,width:M,height:Q}))})},w.onerror=()=>{J(()=>q(Error(`Could not load <CanvasImage> with src="${Hb(b)}"`)))},j.addEventListener("abort",K,{once:!0}),j.aborted){K();return}w.crossOrigin="anonymous",w.src=b})};function g0(b){return 1000*2**(b-1)}var C0=({onFrame:b})=>{if(typeof requestAnimationFrame>"u")return b(),()=>{return};let j=requestAnimationFrame(b);return()=>cancelAnimationFrame(j)},zM=qM(({src:b,width:j,height:k,fit:q="fill",effects:w,controls:z,onError:G,className:J,style:K,id:M,pauseWhenLoading:Q,maxRetries:X=2,delayRenderRetries:U,delayRenderTimeoutInMilliseconds:Y,refForOutline:Z,...$},N)=>{let{delayRender:y,continueRender:W,cancelRender:v}=Qb(),{delayPlayback:D}=zk(),[R,T]=qw(null),[x,L]=qw(null),H=db(b),E=kk(),O=bk({effects:w,overrideId:z?.overrideId??null}),g=v0(o),B=wM(null),[C,S]=qw(!1),_=Boolean(g?.premounting),P=Boolean(g?.postmounting),I=CG(({markAsReady:V})=>{let l=B.current;if(!l||l.continued)return;if(l.continued=!0,V)S(!1);W(l.handle),B.current=null},[W]),A=E0(()=>{if(typeof document>"u")return null;return document.createElement("canvas")},[]),F=CG((V)=>{if(T(V),Z)Z.current=V;if(typeof N==="function")N(V);else if(N)N.current=V},[N,Z]);return kw(()=>{if(!Q||!C||_||P)return;return D().unblock},[D,C,P,_,Q]),kw(()=>{let V=y(`Rendering <CanvasImage> with src="${Hb(H)}"`,{retries:U??void 0,timeoutInMilliseconds:Y??void 0}),l=new AbortController,m=!1,u=0,c=null;L(null),S(!0),B.current={handle:V,continued:!1};let h=()=>{O0({src:H,signal:l.signal}).then((f)=>{if(m)return;L(f)}).catch((f)=>{if(f.name==="AbortError"){I({markAsReady:!1});return}if(u++,u<=X){let n=g0(u);console.warn(`Could not load <CanvasImage> with src="${Hb(H)}", retrying in ${n}ms`),c=setTimeout(()=>{if(!m)h()},n)}else if(G)G(f),I({markAsReady:!0});else v(f)})};return h(),()=>{if(m=!0,c!==null)clearTimeout(c);l.abort(),I({markAsReady:!1})}},[H,v,I,y,U,Y,X,G]),kw(()=>{if(!x||!R||!A)return;let V=y(`Applying effects to <CanvasImage> with src="${Hb(H)}"`),l=!1,m=!1,u=()=>{return},c=()=>{if(m)return;m=!0,W(V)},h=j??x.width,f=k??x.height,n=A.getContext("2d",{colorSpace:"srgb"});if(!n)return v(Error("Could not get 2D context for <CanvasImage> source canvas")),c(),()=>{c()};return A.width=h,A.height=f,R.width=h,R.height=f,n.clearRect(0,0,h,f),n.drawImage(x.element,...RK(q,{width:x.width,height:x.height},{width:h,height:f})),jk({state:E.get(h,f),source:A,effects:O,output:R,width:h,height:f}).then((a)=>{if(a&&!l)u=C0({onFrame:()=>{if(l)return;c(),I({markAsReady:!0})}})}).catch((a)=>{if(l)return;if(G)G(a),c(),I({markAsReady:!0});else v(a)}),()=>{l=!0,u(),c()}},[H,v,E,W,I,y,q,k,x,O,G,R,A,j]),ck("canvas",{...$,ref:F,width:j,height:k,className:J,style:K,id:M})});zM.displayName="CanvasImageContent";var B0=qM(({src:b,width:j,height:k,fit:q,effects:w=[],className:z,style:G,id:J,onError:K,pauseWhenLoading:M,maxRetries:Q,delayRenderRetries:X,delayRenderTimeoutInMilliseconds:U,durationInFrames:Y,from:Z,trimBefore:$,freeze:N,premountFor:y,postmountFor:W,styleWhilePremounted:v,styleWhilePostmounted:D,hidden:R,name:T,showInTimeline:x,cropLeft:L,cropRight:H,cropTop:E,cropBottom:O,controls:g,_remotionInternalDocumentationLink:B,_remotionInternalCropComponentName:C,outlineRef:S,..._},P)=>{if(!b)throw Error('No "src" prop was passed to <CanvasImage>.');let I=rj(w),A=wM(null);x0(P,()=>{return A.current},[]);let{effectivePostmountFor:F,effectivePremountFor:V,freezeFrame:l,isPremountingOrPostmounting:m,postmountingActive:u,premountingActive:c,premountingStyle:h}=tj({from:Z??0,durationInFrames:Y??1/0,premountFor:y??null,postmountFor:W??null,style:G??null,styleWhilePremounted:v??null,styleWhilePostmounted:D??null,hideWhilePremounted:"display-none"}),f=mb({cropLeft:L,cropRight:H,cropTop:E,cropBottom:O,style:h,componentName:C??"<CanvasImage />"});return ck(Xj,{frame:l,active:m,children:ck(bb,{layout:"none",from:Z??0,trimBefore:$,durationInFrames:Y??1/0,freeze:N,hidden:R,showInTimeline:x??!0,name:T??"<CanvasImage>",_remotionInternalDocumentationLink:B??"https://www.remotion.dev/docs/canvasimage",controls:g,_remotionInternalEffects:I,_remotionInternalIsMedia:{type:"image",src:b},_remotionInternalPremountDisplay:V||null,_remotionInternalPostmountDisplay:F||null,_remotionInternalIsPremounting:c,_remotionInternalIsPostmounting:u,outlineRef:S??A,children:ck(zM,{ref:A,src:b,width:j,height:k,fit:q,effects:w,controls:g,className:z,style:f??void 0,id:J,onError:K,pauseWhenLoading:M,maxRetries:Q,delayRenderRetries:X,delayRenderTimeoutInMilliseconds:U,refForOutline:S??null,..._})})})}),Zq=Db({Component:B0,componentName:"<CanvasImage>",componentIdentity:"dev.remotion.remotion.CanvasImage",schema:H0,supportsEffects:!0});Zq.displayName="CanvasImage";r(Zq);var BG=!1,SG=!1,S0=()=>{if(BG)return;BG=!0,console.warn("Called getStaticFiles() on the server. The API is only available in the browser. An empty array was returned.")},I0=()=>{if(SG)return;SG=!0,console.warn("Called getStaticFiles() while using the Remotion Player. The API is only available while using the Remotion Studio. An empty array was returned.")},P0=()=>{if(nj)throw Error("getStaticFiles() has moved into the `@remotion/studio` package. Update your imports.");if(typeof document>"u")return S0(),[];if(window.remotion_isPlayer)return I0(),[];return window.remotion_staticFiles},F0=({onLoad:b,onError:j,delayRenderRetries:k,delayRenderTimeoutInMilliseconds:q,...w},z)=>{let{delayRender:G,continueRender:J}=Qb(),[K]=A0(()=>G(`Loading <IFrame> with source ${w.src}`,{retries:k??void 0,timeoutInMilliseconds:q??void 0})),M=IG((X)=>{J(K),b?.(X)},[K,b,J]),Q=IG((X)=>{if(J(K),j)j(X);else console.error("Error loading iframe:",X,"Handle the event using the onError() prop to make this message disappear.")},[K,j,J]);return _0("iframe",{referrerPolicy:"strict-origin-when-cross-origin",...w,ref:z,onError:Q,onLoad:M})},V0=c0(F0);function l0(b){return 1000*2**(b-1)}var m0=({onError:b,maxRetries:j=2,src:k,pauseWhenLoading:q,delayRenderRetries:w,delayRenderTimeoutInMilliseconds:z,onImageFrame:G,crossOrigin:J,decoding:K,ref:M,refForOutline:Q,...X})=>{let U=Lw(null),Y=Lw({}),{delayPlayback:Z}=zk(),$=h0(o),[N,y]=f0(!1),W=!0,v=ww((S)=>{if(U.current=S,Q.current=S,typeof M==="function")M(S);else if(M)M.current=S},[M,Q]),D=db(k),R=ww((S)=>{if(!U.current)return;let _=U.current.src;setTimeout(()=>{if(!U.current)return;let P=U.current?.src;if(P!==_)return;U.current.removeAttribute("src"),U.current.setAttribute("src",P)},S)},[]),{delayRender:T,continueRender:x,cancelRender:L}=Qb(),H=Boolean($?.premounting),E=Boolean($?.postmounting),O=ww((S)=>{if(!Y.current)return;if(Y.current[U.current?.src]=(Y.current[U.current?.src]??0)+1,b&&(Y.current[U.current?.src]??0)>j){b(S);return}if((Y.current[U.current?.src]??0)<=j){let _=l0(Y.current[U.current?.src]??0);console.warn(`Could not load image with source ${Hb(U.current?.src)}, retrying again in ${_}ms`),R(_);return}try{L("Error loading image with src: "+Hb(U.current?.src))}catch{}},[L,j,b,R]);if(typeof window<"u")PG(()=>{if(!q||!N||H||E)return;return Z().unblock},[Z,N,E,H,q]),PG(()=>{if(window.process?.env?.NODE_ENV==="test"){if(U.current)U.current.src=D;return}let{current:S}=U;if(!S)return;y(!0);let _=T("Loading <Img> with src="+Hb(D),{retries:w??void 0,timeoutInMilliseconds:z??void 0}),P=!1,I=()=>{if(P){x(_);return}if((Y.current[U.current?.src]??0)>0)delete Y.current[U.current?.src],console.info(`Retry successful - ${Hb(U.current?.src)} is now loaded`);if(S)G?.(S);y(!1),x(_)};if(!U.current){I();return}return S.src=D,S.decode().then(I).catch((A)=>{if(console.warn(A),S.complete&&S.naturalWidth>0&&S.naturalHeight>0)I();else S.addEventListener("load",I)}),()=>{P=!0,S.removeEventListener("load",I),x(_)}},[D,w,z,G,x,T]);let{isClientSideRendering:g,isRendering:B}=p(),C=rw({crossOrigin:J,requestsVideoFrame:!1,isClientSideRendering:g});return kj("img",{...X,ref:v,crossOrigin:C,onError:O,decoding:B?"sync":K})},d0=({hidden:b,name:j,showInTimeline:k,src:q,from:w,trimBefore:z,durationInFrames:G,freeze:J,premountFor:K,postmountFor:M,style:Q,styleWhilePremounted:X,styleWhilePostmounted:U,cropLeft:Y,cropRight:Z,cropTop:$,cropBottom:N,controls:y,outlineRef:W,...v})=>{if(!q)throw Error('No "src" prop was passed to <Img>.');let{effectivePostmountFor:D,effectivePremountFor:R,freezeFrame:T,isPremountingOrPostmounting:x,postmountingActive:L,premountingActive:H,premountingStyle:E}=tj({from:w??0,durationInFrames:G??1/0,premountFor:K??null,postmountFor:M??null,style:Q??null,styleWhilePremounted:X??null,styleWhilePostmounted:U??null,hideWhilePremounted:"display-none"}),O=mb({cropLeft:Y,cropRight:Z,cropTop:$,cropBottom:N,style:E,componentName:"<Img />"});return kj(Xj,{frame:T,active:x,children:kj(bb,{layout:"none",from:w??0,trimBefore:z,durationInFrames:G??1/0,freeze:J,_remotionInternalDocumentationLink:"https://www.remotion.dev/docs/img",_remotionInternalIsMedia:{type:"image",src:q},_remotionInternalPremountDisplay:R||null,_remotionInternalPostmountDisplay:D||null,_remotionInternalIsPremounting:H,_remotionInternalIsPostmounting:L,name:j??"<Img>",controls:y,showInTimeline:k??!0,hidden:b,outlineRef:W,children:kj(m0,{src:q,refForOutline:W,style:O??void 0,...v})})})},u0=Zq,s0={src:{type:"asset",default:void 0,description:"Source",keyframable:!1},...yb,...cb,...Yj,...Zb,...Cb,...Ob,...gb},p0=new Set(["alt","crossOrigin","decoding","fetchPriority","loading","onError","onImageFrame","onLoad","sizes","srcSet","useMap"]),i0=(b)=>Object.keys(b).filter((j)=>b[j]!==void 0&&p0.has(j)),n0=(b)=>{return b.map((j)=>`"${j}"`).join(", ")},a0=({props:b,ref:j,width:k,height:q})=>{if(typeof k==="string"||typeof q==="string")throw Error('The "width" and "height" props must be numbers on <Img> when effects are passed, because <Img> renders a <CanvasImage>. Use numeric props or CSS dimensions in "style".');let w=i0(b);if(j!==null&&j!==void 0)w.unshift("ref");if(w.length===0)return;throw Error(`The ${n0(w)} prop${w.length===1?"":"s"} cannot be used on <Img> when effects are passed, because <Img> renders a <canvas> instead of a native <img>. Remove ${w.length===1?"this prop":"these props"}.`)},t0=(b)=>{let j=b?.objectFit;if(j==="fill"||j==="contain"||j==="cover")return j;return},o0=({effects:b=[],ref:j,hidden:k,name:q,showInTimeline:w,src:z,from:G,trimBefore:J,durationInFrames:K,freeze:M,premountFor:Q,postmountFor:X,styleWhilePremounted:U,styleWhilePostmounted:Y,controls:Z,width:$,height:N,className:y,style:W,cropLeft:v,cropRight:D,cropTop:R,cropBottom:T,id:x,pauseWhenLoading:L,maxRetries:H,delayRenderRetries:E,delayRenderTimeoutInMilliseconds:O,...g})=>{let B=Lw(null),C=aj(L);if(b.length===0)return kj(d0,{...g,ref:j,hidden:k,name:q,showInTimeline:w,src:z,from:G,trimBefore:J,durationInFrames:K,freeze:M,premountFor:Q,postmountFor:X,styleWhilePremounted:U,styleWhilePostmounted:Y,controls:Z,width:$,height:N,className:y,style:W,cropLeft:v,cropRight:D,cropTop:R,cropBottom:T,id:x,pauseWhenLoading:C,maxRetries:H,delayRenderRetries:E,delayRenderTimeoutInMilliseconds:O,outlineRef:B});if(!z)throw Error('No "src" prop was passed to <Img>.');a0({props:g,ref:j,width:$,height:N});let S=typeof $==="number"?$:void 0,_=typeof N==="number"?N:void 0,P=g,I=t0(W)??"fill";return kj(u0,{src:z,width:S,height:_,fit:I,effects:b,className:y,style:W,cropLeft:v,cropRight:D,cropTop:R,cropBottom:T,id:x,pauseWhenLoading:C,maxRetries:H,delayRenderRetries:E,delayRenderTimeoutInMilliseconds:O,from:G,trimBefore:J,durationInFrames:K,freeze:M,premountFor:Q,postmountFor:X,styleWhilePremounted:U,styleWhilePostmounted:Y,hidden:k,name:q??"<Img>",showInTimeline:w,_remotionInternalDocumentationLink:"https://www.remotion.dev/docs/img",_remotionInternalCropComponentName:"<Img />",controls:Z,outlineRef:B,...P})},Mz=Db({Component:o0,componentName:"<Img>",componentIdentity:"dev.remotion.remotion.Img",schema:s0,supportsEffects:!0});r(Mz);var q1=(b)=>{if(b==="remotion")return"dev.remotion.remotion";if(b.startsWith("@remotion/"))return`dev.remotion.${b.slice(10).replace(/-([a-z])/g,(k,q)=>q.toUpperCase())}`;throw Error(`Unsupported Remotion package name: ${b}`)},GM=({packageName:b,componentName:j})=>{return`${q1(b)}.${j}`},$q={...yb,...Zb,...cb},w1={...$q,...Cb},JM={...w1,...Ob,...gb},z1={...JM,...ij,...fw},G1={...$q,...rk,...ij,...fw},J1={...$q,...rk},K1={...$q,...hw},M1={...JM,...rk},Q1=(b,j)=>{if(typeof b==="function")b(j);else if(b)b.current=j},KM=(b)=>{let j=Db(b);return r(j),j},Vj=(b,j,k)=>{let q=r0((z,G)=>{let{durationInFrames:J,from:K,trimBefore:M,freeze:Q,hidden:X,name:U,showInTimeline:Y,controls:Z,cropLeft:$,cropRight:N,cropTop:y,cropBottom:W,style:v,...D}=z,R=mb({cropLeft:$,cropRight:N,cropTop:y,cropBottom:W,style:v??null,componentName:j}),T=j1(null),x=b1((L)=>{T.current=L,Q1(G,L)},[G]);return k1(bb,{layout:"none",from:K??0,trimBefore:M,durationInFrames:J??1/0,freeze:Q,hidden:X,name:U??j,showInTimeline:Y??!0,controls:Z,_remotionInternalDocumentationLink:"https://www.remotion.dev/docs/interactive",outlineRef:T,children:e0.createElement(b,{...D,style:R??void 0,ref:x})})});q.displayName=j;let w=KM({Component:q,componentName:j,componentIdentity:GM({packageName:"remotion",componentName:j.slice(1,-1)}),schema:k,supportsEffects:!1});return w.displayName=j,w},d=(b,j)=>{return Vj(b,j,z1)},gj=(b,j)=>{return Vj(b,j,J1)},U1=(b,j)=>{return Vj(b,j,K1)},vb={baseSchema:yb,captionsSchema:YU,transformSchema:Zb,textSchema:ij,backgroundSchema:Cb,borderSchema:Ob,borderRadiusSchema:gb,cropSchema:cb,svgPaintSchema:rk,svgStrokeSchema:hw,premountSchema:Yj,sequenceSchema:zj,withSchema:KM,_internalMakeRemotionComponentIdentity:GM,A:d("a","<Interactive.A>"),Article:d("article","<Interactive.Article>"),Aside:d("aside","<Interactive.Aside>"),Button:d("button","<Interactive.Button>"),Circle:gj("circle","<Interactive.Circle>"),Code:d("code","<Interactive.Code>"),Div:d("div","<Interactive.Div>"),Ellipse:gj("ellipse","<Interactive.Ellipse>"),Em:d("em","<Interactive.Em>"),Footer:d("footer","<Interactive.Footer>"),G:gj("g","<Interactive.G>"),H1:d("h1","<Interactive.H1>"),H2:d("h2","<Interactive.H2>"),H3:d("h3","<Interactive.H3>"),H4:d("h4","<Interactive.H4>"),H5:d("h5","<Interactive.H5>"),H6:d("h6","<Interactive.H6>"),Header:d("header","<Interactive.Header>"),Label:d("label","<Interactive.Label>"),Li:d("li","<Interactive.Li>"),Line:U1("line","<Interactive.Line>"),Main:d("main","<Interactive.Main>"),Nav:d("nav","<Interactive.Nav>"),Ol:d("ol","<Interactive.Ol>"),P:d("p","<Interactive.P>"),Path:gj("path","<Interactive.Path>"),Pre:d("pre","<Interactive.Pre>"),Rect:gj("rect","<Interactive.Rect>"),Section:d("section","<Interactive.Section>"),Small:d("small","<Interactive.Small>"),Span:d("span","<Interactive.Span>"),Strong:d("strong","<Interactive.Strong>"),Svg:Vj("svg","<Interactive.Svg>",M1),Text:Vj("text","<Interactive.Text>",G1),Ul:d("ul","<Interactive.Ul>")},Y1=async({resolvedSrc:b,signal:j,requestInit:k,contentType:q})=>{let{decoder:w,selectedTrack:z}=await vK({resolvedSrc:b,signal:j,requestInit:k,contentType:q});try{let{image:G}=await w.decode({frameIndex:z.frameCount-1,completeFramesOnly:!0});try{if(G.duration===null)throw Error("Could not determine animated image duration");return(G.timestamp+G.duration)/1e6}finally{G.close()}}finally{w.close()}},MM=Z1.createRef(),R1=({children:b,onlyRenderComposition:j,currentCompositionMetadata:k,initialCompositions:q,initialCanvasContent:w})=>{let[z,G]=zw([]),[J,K]=zw(w),[M,Q]=zw(q),X=N1(M),U=Cj((v)=>{Q((D)=>{let R=v(D);return X.current=R,R})},[]),Y=Cj((v)=>{U((D)=>{if(D.find((R)=>R.id===v.id))throw Error(`Multiple composition with id ${v.id} are registered.`);return[...D,v]})},[U]),Z=Cj((v)=>{Q((D)=>{return D.filter((R)=>R.id!==v)})},[]),$=Cj((v,D,R,T)=>{G((x)=>{return[...x,{name:v,parent:D,nonce:R,stack:T}]})},[]),N=Cj((v,D)=>{G((R)=>{return R.filter((T)=>!(T.name===v&&T.parent===D))})},[]);$1(MM,()=>{return{getCompositions:()=>X.current}},[]);let y=cG(()=>{return{registerComposition:Y,unregisterComposition:Z,registerFolder:$,unregisterFolder:N,setCanvasContent:K,onlyRenderComposition:j}},[Y,$,Z,N,j]),W=cG(()=>{return{compositions:M,folders:z,currentCompositionMetadata:k,canvasContent:J}},[M,z,k,J]);return AG(Gj.Provider,{value:W,children:AG(lj.Provider,{value:y,children:b})})},QM={};rG(QM,{makeDefaultPreviewCSS:()=>D1,injectCSS:()=>y1,OBJECTFIT_CONTAIN_CLASS_NAME:()=>hj});var Lk={},y1=(b)=>{if(typeof document>"u")return()=>{};if(Lk[b])return()=>{};let j=document.head||document.getElementsByTagName("head")[0],k=document.createElement("style");return k.appendChild(document.createTextNode(b)),j.prepend(k),Lk[b]=k,()=>{let q=Lk[b];if(q){if(q.parentNode)q.parentNode.removeChild(q);delete Lk[b]}}},hj="__remotion_objectfitcontain",D1=(b,j)=>{if(!b)return`
|
|
19
19
|
* {
|
|
20
20
|
box-sizing: border-box;
|
|
21
21
|
}
|
|
22
22
|
body {
|
|
23
23
|
margin: 0;
|
|
24
|
-
background-color: ${
|
|
24
|
+
background-color: ${j};
|
|
25
25
|
}
|
|
26
|
-
.${
|
|
26
|
+
.${hj} {
|
|
27
27
|
object-fit: contain;
|
|
28
28
|
}
|
|
29
29
|
`;return`
|
|
@@ -34,9 +34,9 @@ Check that all your Remotion packages are on the same version. If your dependenc
|
|
|
34
34
|
width: 100%;
|
|
35
35
|
height: 100%;
|
|
36
36
|
}
|
|
37
|
-
${b} .${
|
|
37
|
+
${b} .${hj} {
|
|
38
38
|
object-fit: contain;
|
|
39
39
|
}
|
|
40
|
-
`},
|
|
41
|
-
`))}if(
|
|
42
|
-
`))},KW=({src:b,transparent:h,currentTime:j,toneMapped:k})=>{return`http://localhost:${window.remotion_proxyPort}/proxy?src=${encodeURIComponent(Wb(b))}&time=${encodeURIComponent(Math.max(0,j))}&transparent=${String(h)}&toneMapped=${String(k)}`},QW=({onError:b,volume:h,playbackRate:j,src:k,muted:q,allowAmplificationDuringRender:w,transparent:z,toneMapped:B,toneFrequency:G,name:J,loopVolumeCurveBehavior:K,delayRenderRetries:Q,delayRenderTimeoutInMilliseconds:M,onVideoFrame:T,crossOrigin:U,audioStreamIndex:W,preservePitch:Y,...X})=>{let O=Hb(),L=qb(),$=Kh(K),Z=Ch(),N=iw(a),R=Vb(),{registerRenderAsset:F,unregisterRenderAsset:g}=iw(Pb);if(!k)throw TypeError("No `src` was passed to <OffthreadVideo>.");let v=jj(()=>`offthreadvideo-${qh(k)}-${N?.cumulatedFrom}-${N?.relativeFrom}-${N?.durationInFrames}`,[k,N?.cumulatedFrom,N?.relativeFrom,N?.durationInFrames]);if(!Z)throw Error("No video config found");let y=lb({volume:h,frame:$,mediaVolume:1});Qh(y),BW(()=>{if(!k)throw Error("No src passed");if(!window.remotion_audioEnabled)return;if(q)return;if(y<=0)return;return F({type:"video",src:Wb(k),id:v,frame:O,volume:y,mediaFrame:L,playbackRate:j,toneFrequency:G,audioStartFrame:Math.max(0,-(N?.cumulatedNegativeFrom??0)),audioStreamIndex:W}),()=>g(v)},[q,k,F,v,g,y,L,O,j,G,N?.cumulatedNegativeFrom,W]);let x=jj(()=>{return _B({frame:L,playbackRate:j||1,startFrom:-R})/Z.fps},[L,R,j,Z.fps]),D=jj(()=>{return KW({src:k,currentTime:x,transparent:z,toneMapped:B})},[B,x,k,z]),[C,c]=JW(null),{delayRender:I,continueRender:H}=Kb();GW(()=>{if(!window.remotion_videoEnabled)return;let V=[];c(null);let _=new AbortController,l=I(`Fetching ${D} from server`,{retries:Q??void 0,timeoutInMilliseconds:M??void 0});return(async()=>{try{let f=await fetch(D,{signal:_.signal,cache:"no-store"});if(f.status!==200){if(f.status===500){let zb=await f.json();if(zb.error){let Bb=zb.error.replace(/^Error: /,"");throw Error(Bb)}}throw Error(`Server returned status ${f.status} while fetching ${D}`)}let s=await f.blob(),i=URL.createObjectURL(s);V.push(()=>URL.revokeObjectURL(i)),c({src:i,handle:l})}catch(f){if(f.message.includes("aborted")){H(l);return}if(_.signal.aborted){H(l);return}if(f.message.includes("Failed to fetch"))f=Error(`Failed to fetch ${D}. This could be caused by Chrome rejecting the request because the disk space is low. Consider increasing the disk size of your environment.`,{cause:f});if(b)b(f);else bh(f)}})(),V.push(()=>{if(_.signal.aborted)return;_.abort()}),()=>{V.forEach((f)=>f())}},[D,Q,M,b,H,I]);let E=sw(()=>{if(b)b?.(Error("Failed to load image with src "+C));else bh("Failed to load image with src "+C)},[C,b]),P=jj(()=>{return[Dh,X.className].filter(kh).join(" ")},[X.className]),S=sw((V)=>{if(T)T(V)},[T]);if(!C||!window.remotion_videoEnabled)return null;return H(C.handle),MW(Nq,{src:C.src,delayRenderRetries:Q,delayRenderTimeoutInMilliseconds:M,onImageFrame:S,...X,onError:E,className:P})},GG=({ref:b,onVideoFrame:h})=>{XW(()=>{let{current:j}=b;if(!j)return;if(!h)return;let k=0,q=(w,z)=>{if(!b.current)return;h(b.current,w,z),k=b.current.requestVideoFrameCallback(q)};if(h(j),!j.requestVideoFrameCallback)return;return k=j.requestVideoFrameCallback(q),()=>{if(k)j.cancelVideoFrameCallback(k)}},[h,b])};class vb extends Error{src;constructor({message:b,src:h}){super(b);this.name="MediaPlaybackError",this.src=h}}var ZW=(b,h)=>{let j=aw(Jh);if(!j)throw Error("SharedAudioContext not found");let k=tw(null),q=nw(()=>{if(!j.audioContext)return null;return Qq({audioContext:j.audioContext,ref:k})},[j.audioContext]);(pw.useInsertionEffect??pw.useLayoutEffect)(()=>{return()=>{requestAnimationFrame(()=>{q?.cleanup()})}},[q]);let{volume:z,muted:B,playbackRate:G,preservePitch:J,onlyWarnForMediaSeekingError:K,src:Q,onDuration:M,acceptableTimeShift:T,acceptableTimeShiftInSeconds:U,toneFrequency:W,name:Y,_remotionInternalNativeLoopPassed:X,_remotionInternalStack:O,style:L,pauseWhenBuffering:$,showInTimeline:Z,loopVolumeCurveBehavior:N,onError:R,onAutoPlayError:F,onVideoFrame:g,crossOrigin:v,delayRenderRetries:y,delayRenderTimeoutInMilliseconds:x,allowAmplificationDuringRender:D,useWebAudioApi:C,audioStreamIndex:c,...I}=b;if(!1)throw Error("typecheck error");let E=Kh(N??"repeat"),{fps:P,durationInFrames:S}=wb(),V=aw(a),_=Xb(),l=Hh(),[u]=ow(()=>String(Math.random()));if(typeof T<"u")throw Error("acceptableTimeShift has been removed. Use acceptableTimeShiftInSeconds instead.");let[f]=Xq(),[s]=Yq(),i=lb({frame:E,volume:z,mediaVolume:f});Qh(i);let zb=UW(()=>{return O??null},[O]);Tq({volume:z,mediaVolume:f,mediaType:"video",src:Q,playbackRate:b.playbackRate??1,displayName:Y??null,id:u,getStack:zb,showInTimeline:Z,premountDisplay:V?.premountDisplay??null,postmountDisplay:V?.postmountDisplay??null,loopDisplay:void 0,documentationLink:K?"https://www.remotion.dev/docs/offthreadvideo":"https://www.remotion.dev/docs/html5-video",refForOutline:k}),mB({mediaRef:k,src:Q,mediaType:"video",playbackRate:b.playbackRate??1,preservePitch:J,onlyWarnForMediaSeekingError:K,acceptableTimeshift:U??null,isPremounting:Boolean(V?.premounting),isPostmounting:Boolean(V?.postmounting),pauseWhenBuffering:$,onAutoPlayError:F??null}),uB({id:u,isPostmounting:Boolean(V?.postmounting),isPremounting:Boolean(V?.premounting),mediaRef:k,mediaType:"video",onAutoPlayError:F??null}),CB({logLevel:_,mediaRef:k,volume:i,source:q,shouldUseWebAudioApi:C??!1});let Bb=V?V.relativeFrom:0,Gb=V?Math.min(V.durationInFrames,S):S,t=_b(Q),jb=cQ({actualSrc:t,actualFrom:Bb,duration:Gb,fps:P});WW(h,()=>{return k.current},[]),ow(()=>n({logLevel:_,message:`Mounting video with source = ${jb}, v=${pb}, user agent=${typeof navigator>"u"?"server":navigator.userAgent}`,tag:"video",mountTime:l})),Xk(()=>{let{current:m}=k;if(!m)return;let Db=()=>{if(m.error){if(console.error("Error occurred in video",m?.error),R){let ub=new vb({message:`Code ${m.error.code}: ${m.error.message}`,src:Q});R(ub);return}throw new vb({message:`The browser threw an error while playing the video ${Q}: Code ${m.error.code} - ${m?.error?.message}. See https://remotion.dev/docs/media-playback-error for help. Pass an onError() prop to handle the error.`,src:Q})}else{if(R){let ub=new vb({message:`The browser threw an error while playing the video ${Q}`,src:Q});R(ub);return}throw new vb({message:"The browser threw an error while playing the video",src:Q})}};return m.addEventListener("error",Db,{once:!0}),()=>{m.removeEventListener("error",Db)}},[R,Q]);let mb=tw(M);mb.current=M,GG({ref:k,onVideoFrame:g}),Xk(()=>{let{current:m}=k;if(!m)return;if(m.duration){mb.current?.(Q,m.duration);return}let Db=()=>{mb.current?.(Q,m.duration)};return m.addEventListener("loadedmetadata",Db),()=>{m.removeEventListener("loadedmetadata",Db)}},[Q]),Xk(()=>{let{current:m}=k;if(!m)return;if(_j())m.preload="metadata";else m.preload="auto"},[]);let $b=nw(()=>{return{...L}},[L]),Lb=Mq({crossOrigin:v,requestsVideoFrame:Boolean(g),isClientSideRendering:!1});return YW("video",{...I,ref:k,muted:B||s||i<=0,playsInline:!0,src:jb,loop:X,style:$b,disableRemotePlayback:!0,crossOrigin:Lb,controls:!1})},Rq=TW(ZW),gq=(b)=>{let{startFrom:h,endAt:j,trimBefore:k,trimAfter:q,name:w,pauseWhenBuffering:z,stack:B,showInTimeline:G,...J}=b,K=d();if(K.isClientSideRendering)throw Error("<OffthreadVideo> is not supported in @remotion/web-renderer. Use <Video> from @remotion/media instead. See https://remotion.dev/docs/client-side-rendering/limitations");let Q=zW(()=>{return},[]);if(typeof b.src!=="string")throw TypeError(`The \`<OffthreadVideo>\` tag requires a string for \`src\`, but got ${JSON.stringify(b.src)} instead.`);Ij({startFrom:h,endAt:j,trimBefore:k,trimAfter:q});let{trimBeforeValue:M,trimAfterValue:T}=Vj({startFrom:h,endAt:j,trimBefore:k,trimAfter:q});if(typeof M<"u"||typeof T<"u")return Nh(hb,{layout:"none",from:0-(M??0),showInTimeline:!1,durationInFrames:T,name:w,children:Nh(gq,{pauseWhenBuffering:z??!1,...J,trimAfter:void 0,name:void 0,showInTimeline:G,trimBefore:void 0,stack:void 0,startFrom:void 0,endAt:void 0})});if(fj(b,"Video"),K.isRendering)return Nh(QW,{pauseWhenBuffering:z??!1,...J,trimAfter:void 0,name:void 0,showInTimeline:G,trimBefore:void 0,stack:void 0,startFrom:void 0,endAt:void 0});let{transparent:U,toneMapped:W,onAutoPlayError:Y,onVideoFrame:X,crossOrigin:O,delayRenderRetries:L,delayRenderTimeoutInMilliseconds:$,...Z}=J;return Nh(Rq,{_remotionInternalStack:B??null,onDuration:Q,onlyWarnForMediaSeekingError:!0,pauseWhenBuffering:z??!1,showInTimeline:G??!0,onAutoPlayError:Y??void 0,onVideoFrame:X??null,crossOrigin:O,...Z,_remotionInternalNativeLoopPassed:!1})},JG=({src:b,acceptableTimeShiftInSeconds:h,allowAmplificationDuringRender:j,audioStreamIndex:k,crossOrigin:q,delayRenderRetries:w,delayRenderTimeoutInMilliseconds:z,loopVolumeCurveBehavior:B,muted:G,name:J,onAutoPlayError:K,onError:Q,onVideoFrame:M,pauseWhenBuffering:T,playbackRate:U,preservePitch:W,showInTimeline:Y,style:X,toneFrequency:O,toneMapped:L,transparent:$,trimAfter:Z,trimBefore:N,useWebAudioApi:R,volume:F,_remotionInternalNativeLoopPassed:g,endAt:v,stack:y,startFrom:x,imageFormat:D,...C})=>{if(D)throw TypeError("The `<OffthreadVideo>` tag does no longer accept `imageFormat`. Use the `transparent` prop if you want to render a transparent video.");return Nh(gq,{acceptableTimeShiftInSeconds:h,allowAmplificationDuringRender:j??!0,audioStreamIndex:k??0,crossOrigin:q,delayRenderRetries:w,delayRenderTimeoutInMilliseconds:z,loopVolumeCurveBehavior:B??"repeat",muted:G??!1,name:J,onAutoPlayError:K??null,onError:Q,onVideoFrame:M,pauseWhenBuffering:T??!0,playbackRate:U??1,preservePitch:W,toneFrequency:O??1,showInTimeline:Y??!0,src:b,stack:y,startFrom:x,_remotionInternalNativeLoopPassed:g??!1,endAt:v,style:X,toneMapped:L??!0,transparent:$??!1,trimAfter:Z,trimBefore:N,useWebAudioApi:R??!1,volume:F,...C})};bb(JG);var Vk="remotion_staticFilesChanged",$W=(b,h)=>{if(kq)throw Error("watchStaticFile() has moved into the `@remotion/studio` package. Update your imports.");if(!o().isStudio)return console.warn("The watchStaticFile() API is only available while using the Remotion Studio."),{cancel:()=>{return}};let j=b.startsWith(window.remotion_staticBase)?b.replace(window.remotion_staticBase,""):b,k=j.startsWith("/")?j.slice(1):j,q=window.remotion_staticFiles.find((B)=>B.name===k),w=(B)=>{let J=B.detail.files.find((K)=>K.name===k);if(!J){if(q!==void 0)h(null);q=void 0;return}if(q===void 0||q.lastModified!==J.lastModified)h(J),q=J};return window.addEventListener(Vk,w),{cancel:()=>{return window.removeEventListener(Vk,w)}}};function NW(){let b=e.useContext(jh),h=e.useContext(zh),j=e.useContext(wh),k=e.useContext(a),q=e.useContext(xh),w=e.useContext(xb),z=e.useContext(cj),B=e.useContext(Oj),G=e.useContext(Pb),J=e.useContext(Gh),K=e.useContext(Fj),Q=e.useContext(xj),M=e.useContext(Mh),T=e.useContext(Ab);return LW(()=>({compositionManagerCtx:b,timelineContext:h,setTimelineContext:j,sequenceContext:k,nonceContext:q,canUseRemotionHooksContext:w,preloadContext:z,resolveCompositionContext:B,renderAssetManagerContext:G,sequenceManagerContext:J,sequenceManagerRefContext:K,visualModePropStatusesRefContext:Q,bufferManagerContext:M,logLevelContext:T}),[b,q,k,j,h,w,z,B,G,J,K,Q,M,T])}var OW=(b)=>{let{children:h,contexts:j}=b;return r(Ab.Provider,{value:j.logLevelContext,children:r(xb.Provider,{value:j.canUseRemotionHooksContext,children:r(xh.Provider,{value:j.nonceContext,children:r(cj.Provider,{value:j.preloadContext,children:r(jh.Provider,{value:j.compositionManagerCtx,children:r(Fj.Provider,{value:j.sequenceManagerRefContext,children:r(Gh.Provider,{value:j.sequenceManagerContext,children:r(xj.Provider,{value:j.visualModePropStatusesRefContext,children:r(Pb.Provider,{value:j.renderAssetManagerContext,children:r(Oj.Provider,{value:j.resolveCompositionContext,children:r(zh.Provider,{value:j.timelineContext,children:r(wh.Provider,{value:j.setTimelineContext,children:r(a.Provider,{value:j.sequenceContext,children:r(Mh.Provider,{value:j.bufferManagerContext,children:h})})})})})})})})})})})})})})},RW=xU(),gW={MaxMediaCacheSizeContext:VU,useUnsafeVideoConfig:Ch,useFrameForVolumeProp:Kh,useTimelinePosition:Hb,useAbsoluteTimelinePosition:Hz,evaluateVolume:lb,getAbsoluteSrc:Wb,getAssetDisplayName:cB,Timeline:gk,validateMediaTrimProps:Ij,validateMediaProps:fj,resolveTrimProps:Vj,VideoForPreview:Rq,CompositionManager:jh,CompositionSetters:vh,VisualModePropStatusesContext:vj,VisualModePropStatusesRefContext:xj,VisualModeDragOverridesContext:Ej,VisualModeSettersContext:Az,SequenceManager:Gh,SequenceManagerRefContext:Fj,SequenceStackTracesUpdateContext:eU,baseSchema:yb,sequenceSchema:hh,SequenceWithoutSchema:KB,sequenceStyleSchema:Sz,sequenceVisualStyleSchema:tJ,sequencePremountSchema:oJ,textSchema:ek,transformSchema:Yb,premountSchema:Dj,flattenActiveSchema:Bq,getFlatSchemaWithAllKeys:Gq,RemotionRootContexts:aU,CompositionManagerProvider:CU,useVideo:gj,getRoot:_U,useMediaVolumeState:Xq,usePlayerMutedState:Yq,useMediaInTimeline:Tq,useLazyComponent:Oz,truthy:kh,SequenceContext:a,PremountContext:Vz,useRemotionContexts:NW,RemotionContextProvider:OW,CSSUtils:bG,setupEnvVariables:bW,MediaVolumeContext:Uq,SetMediaVolumeContext:Wq,getRemotionEnvironment:o,SharedAudioContext:Jh,SharedAudioContextProvider:EB,SharedAudioTagsContext:Aj,SharedAudioTagsContextProvider:HB,invalidCompositionErrorMessage:HJ,invalidFolderNameErrorMessage:SG,calculateMediaDuration:Sj,isCompositionIdValid:gz,isFolderNameValid:Jz,getPreviewDomElement:fU,compositionsRef:rB,portalNode:Nk,waitForRoot:lU,SetTimelineContext:wh,CanUseRemotionHooksProvider:Zk,CanUseRemotionHooks:xb,PrefetchProvider:RB,DurationsContextProvider:DB,IsPlayerContextProvider:lG,useIsPlayer:$j,EditorPropsProvider:Xz,EditorPropsContext:lk,usePreload:_b,NonceContext:xh,resolveVideoConfig:kG,resolveVideoConfigOrCatch:tU,ResolveCompositionContext:Oj,useResolvedVideoConfig:mk,resolveCompositionsRef:GJ,REMOTION_STUDIO_CONTAINER_ELEMENT:hG,RenderAssetManager:Pb,persistCurrentFrame:Dz,usePlaybackRate:tk,useTimelineContext:Eb,useTimelineSetFrame:Pz,isIosSafari:_j,WATCH_REMOTION_STATIC_FILES:Vk,addSequenceStackTraces:bb,useMediaStartsAt:Vb,BufferingProvider:VB,BufferingContextReact:Mh,getComponentsToAddStacksTo:cJ,CurrentScaleContext:qG,PixelDensityContext:BG,PreviewSizeContext:wG,calculateScale:zG,validateRenderAsset:$B,Log:p,LogLevelContext:Ab,useLogLevel:Xb,playbackLogging:n,timeValueRef:qJ,compositionSelectorRef:RW,RemotionEnvironmentContext:Yz,warnAboutTooHighVolume:Qh,AudioForPreview:iB,OBJECTFIT_CONTAIN_CLASS_NAME:Dh,InnerOffthreadVideo:gq,useBasicMediaInTimeline:fB,getInputPropsOverride:Tz,setInputPropsOverride:eG,useVideoEnabled:sU,useAudioEnabled:iU,useIsPlayerBuffering:AB,TimelinePosition:gk,DelayRenderContextType:Nz,TimelineContext:zh,PlaybackRateContext:pk,AbsoluteTimeContext:ak,RenderAssetManagerProvider:sM,getEffectiveVisualModeValue:jB,CompositionRenderErrorContext:wz,useEffectChainState:Ah,createEffectChainState:XB,cleanupEffectChainState:Dk,runEffectChain:Vh,useMemoizedEffects:Ih,useMemoizedEffectDefinitions:fh,createEffect:ZB,createWebGLContextError:YM,createWebGL2ContextError:UB,computeEffectiveSchemaValuesDotNotation:GB,interpolateKeyframedStatus:ch,makeStaticDragOverride:tK,makeKeyframedDragOverride:oK,resolveDragOverrideValue:Pj,getStaticDragOverrideValue:eK,OverrideIdsToNodePathsGettersContext:zq,OverrideIdsToNodePathsSettersContext:iK,findPropsToDelete:zB,makeSequencePropsSubscriptionKey:Ob,getPropStatusesCtx:wB,getEffectPropStatusesCtx:qB,hiddenField:rk,durationInFramesField:hq,freezeField:jq,fromField:fz},KG=(b)=>{return ew.Children.toArray(b).reduce((j,k)=>{if(k.type===ew.Fragment)return j.concat(KG(k.props.children));return j.push(k),j},[])},vW=({children:b},h)=>{return BK(),Kj(zK,{children:b})},MG=DW(vW),xW=KB,EW=(b)=>{let h=FW(()=>{let j=0,k=KG(b.children);return yW.map(k,(q,w)=>{let z=q;if(typeof z==="string"){if(z.trim()==="")return null;throw TypeError(`The <Series /> component only accepts a list of <Series.Sequence /> components as its children, but you passed a string "${z}"`)}if(z.type!==MG)throw TypeError(`The <Series /> component only accepts a list of <Series.Sequence /> components as its children, but got ${z} instead`);let B=`index = ${w}, duration = ${z.props.durationInFrames}`,G=z.props.durationInFrames,{durationInFrames:J,children:K,from:Q,name:M,...T}=z.props;if(w!==k.length-1||G!==1/0)Lj(G,{component:"of a <Series.Sequence /> component",allowFloats:!0});let U=z.props.offset??0;if(Number.isNaN(U))throw TypeError(`The "offset" property of a <Series.Sequence /> must not be NaN, but got NaN (${B}).`);if(!Number.isFinite(U))throw TypeError(`The "offset" property of a <Series.Sequence /> must be finite, but got ${U} (${B}).`);if(U%1!==0)throw TypeError(`The "offset" property of a <Series.Sequence /> must be finite, but got ${U} (${B}).`);let W=j+U;return j+=G+U,Kj(xW,{ref:z.ref,name:M||"<Series.Sequence>",_remotionInternalDocumentationLink:M?void 0:"https://www.remotion.dev/docs/series",from:W,durationInFrames:G,...T,children:q})})},[b.children]);return Kj(wK,{children:Kj(hb,{layout:"none",name:"<Series>",_remotionInternalDocumentationLink:"https://www.remotion.dev/docs/series",...b,children:h})})},QG=Object.assign(Zb({Component:EW,componentName:"<Series>",componentIdentity:"dev.remotion.remotion.Series",schema:hK,supportsEffects:!1}),{Sequence:MG});bb(QG);var HW={"%3A":":","%2F":"/","%3F":"?","%23":"#","%5B":"[","%5D":"]","%40":"@","%21":"!","%24":"$","%26":"&","%27":"'","%28":"(","%29":")","%2A":"*","%2B":"+","%2C":",","%3B":";"},rw={},PW=(b)=>{if(rw[b])return;console.warn(b),rw[b]=!0},CW=(b)=>{for(let h of Object.keys(HW))if(b.includes(h))return{containsHex:!0,hexCode:h};return{containsHex:!1}},Ak=(b)=>{if(b.startsWith("/"))return Ak(b.substring(1));return b},SW=(b)=>{if(typeof window<"u"&&window.remotion_staticBase){if(b.startsWith(window.remotion_staticBase))throw Error(`The value "${b}" is already prefixed with the static base ${window.remotion_staticBase}. You don't need to call staticFile() on it.`);return`${window.remotion_staticBase}/${Ak(b)}`}return`/${Ak(b)}`},cW=(b)=>{return b.split("/").map((q)=>{return encodeURIComponent(q)}).join("/")},fW=(b)=>{if(b===null)throw TypeError("null was passed to staticFile()");if(typeof b>"u")throw TypeError("undefined was passed to staticFile()");if(b.startsWith("http://")||b.startsWith("https://"))throw TypeError(`staticFile() does not support remote URLs - got "${b}". Instead, pass the URL without wrapping it in staticFile(). See: https://remotion.dev/docs/staticfile-remote-urls`);if(b.startsWith("..")||b.startsWith("./"))throw TypeError(`staticFile() does not support relative paths - got "${b}". Instead, pass the name of a file that is inside the public/ folder. See: https://remotion.dev/docs/staticfile-relative-paths`);if(b.startsWith("/Users")||b.startsWith("/home")||b.startsWith("/tmp")||b.startsWith("/etc")||b.startsWith("/opt")||b.startsWith("/var")||b.startsWith("C:")||b.startsWith("D:")||b.startsWith("E:"))throw TypeError(`staticFile() does not support absolute paths - got "${b}". Instead, pass the name of a file that is inside the public/ folder. See: https://remotion.dev/docs/staticfile-relative-paths`);if(b.startsWith("public/"))throw TypeError(`Do not include the public/ prefix when using staticFile() - got "${b}". See: https://remotion.dev/docs/staticfile-relative-paths`);let h=CW(b);if(h.containsHex)PW(`WARNING: You seem to pass an already encoded path (path contains ${h.hexCode}). Since Remotion 4.0, the encoding is done by staticFile() itself. You may want to remove a encodeURIComponent() wrapping.`);let j=cW(b),k=SW(j);if(!k.startsWith("/"))return`/${k}`;return k},VW=(b)=>{let h={...b,durationInFrames:1,fps:1};return IW.createElement(sk,h)},jz=(b)=>{return Math.round(b*1e5)/1e5},Yk=({element:b,desiredTime:h,logLevel:j,mountTime:k})=>{if(Xj(b.currentTime,h))return{wait:Promise.resolve(h),cancel:()=>{}};Gj({logLevel:j,mediaRef:b,time:h,why:"Seeking during rendering",mountTime:k});let q,w=null,z=new Promise((G)=>{q=b.requestVideoFrameCallback((J,K)=>{let Q=K.expectedDisplayTime-J;if(Q<=0){G(K.mediaTime);return}setTimeout(()=>{G(K.mediaTime)},Q+150)})}),B=new Promise((G)=>{let J=()=>{G()};b.addEventListener("seeked",J,{once:!0}),w=()=>{b.removeEventListener("seeked",J)}});return{wait:Promise.all([z,B]).then(([G])=>G),cancel:()=>{w?.(),b.cancelVideoFrameCallback(q)}}},pW=({element:b,desiredTime:h,fps:j,logLevel:k,mountTime:q})=>{let w=1/j/2,z=()=>{return};if(Number.isFinite(b.duration)&&b.currentTime>=b.duration&&h>=b.duration)return{prom:Promise.resolve(),cancel:()=>{}};return{prom:new Promise((G,J)=>{let K=Yk({element:b,desiredTime:h+w,logLevel:k,mountTime:q});K.wait.then((Q)=>{if(Math.abs(h-Q)<=w)return G();let T=h>Q?1:-1,U=Yk({element:b,desiredTime:Q+w*T,logLevel:k,mountTime:q});z=U.cancel,U.wait.then((W)=>{let Y=Math.abs(h-W);if(jz(Y)<=jz(w))return G();let X=Yk({element:b,desiredTime:h+w,logLevel:k,mountTime:q});return z=X.cancel,X.wait.then(()=>{G()}).catch((O)=>{J(O)})}).catch((W)=>{J(W)})}),z=K.cancel}),cancel:()=>{z()}}},nW=({onError:b,volume:h,allowAmplificationDuringRender:j,playbackRate:k,onDuration:q,toneFrequency:w,name:z,acceptableTimeShiftInSeconds:B,delayRenderRetries:G,delayRenderTimeoutInMilliseconds:J,loopVolumeCurveBehavior:K,audioStreamIndex:Q,onVideoFrame:M,preservePitch:T,...U},W)=>{let Y=Hb(),X=qb(),O=Kh(K??"repeat"),L=Ch(),$=iW(null),Z=bz(a),N=Vb(),R=d(),F=Xb(),g=Hh(),{delayRender:v,continueRender:y}=Kb(),{registerRenderAsset:x,unregisterRenderAsset:D}=bz(Pb),C=sW(()=>`video-${qh(U.src??"")}-${Z?.cumulatedFrom}-${Z?.relativeFrom}-${Z?.durationInFrames}`,[U.src,Z?.cumulatedFrom,Z?.relativeFrom,Z?.durationInFrames]);if(!L)throw Error("No video config found");let c=lb({volume:h,frame:O,mediaVolume:1});Qh(c),hz(()=>{if(!U.src)throw Error("No src passed");if(U.muted)return;if(c<=0)return;if(!window.remotion_audioEnabled)return;return x({type:"video",src:Wb(U.src),id:C,frame:Y,volume:c,mediaFrame:X,playbackRate:k??1,toneFrequency:w??1,audioStartFrame:Math.max(0,-(Z?.cumulatedNegativeFrom??0)),audioStreamIndex:Q??0}),()=>D(C)},[U.muted,U.src,x,C,D,c,X,Y,k,w,Z?.cumulatedNegativeFrom,Q]),uW(W,()=>{return $.current},[]),GG({ref:$,onVideoFrame:M}),hz(()=>{if(!window.remotion_videoEnabled)return;let{current:H}=$;if(!H)return;let E=lB({frame:X,playbackRate:k||1,startFrom:-N,fps:L.fps}),P=v(`Rendering <Html5Video /> with src="${U.src}" at time ${E}`,{retries:G??void 0,timeoutInMilliseconds:J??void 0});if(window.process?.env?.NODE_ENV==="test"){y(P);return}if(Xj(H.currentTime,E)){if(H.readyState>=2){y(P);return}let l=()=>{y(P)};return H.addEventListener("loadeddata",l,{once:!0}),()=>{H.removeEventListener("loadeddata",l)}}let S=()=>{y(P)},V=pW({element:H,desiredTime:E,fps:L.fps,logLevel:F,mountTime:g});V.prom.then(()=>{y(P)}),H.addEventListener("ended",S,{once:!0});let _=()=>{if(H?.error){if(console.error("Error occurred in video",H?.error),b)return;throw new vb({message:`The browser threw an error while playing the video ${U.src}: Code ${H.error.code} - ${H?.error?.message}. See https://remotion.dev/docs/media-playback-error for help. Pass an onError() prop to handle the error.`,src:U.src})}else throw new vb({message:"The browser threw an error",src:U.src})};return H.addEventListener("error",_,{once:!0}),()=>{V.cancel(),H.removeEventListener("ended",S),H.removeEventListener("error",_),y(P)}},[O,U.src,k,L.fps,X,N,b,G,J,F,g,y,v]);let{src:I}=U;if(R.isRendering)dW(()=>{if(window.process?.env?.NODE_ENV==="test")return;let H=v("Loading <Html5Video> duration with src="+I,{retries:G??void 0,timeoutInMilliseconds:J??void 0}),{current:E}=$,P=()=>{if(E?.duration)q(I,E.duration);y(H)};if(E?.duration)q(I,E.duration),y(H);else E?.addEventListener("loadedmetadata",P,{once:!0});return()=>{E?.removeEventListener("loadedmetadata",P),y(H)}},[I,q,G,J,y,v]);return aW("video",{ref:$,disableRemotePlayback:!0,...U})},tW=mW(nW),oW=(b,h)=>{let{startFrom:j,endAt:k,trimBefore:q,trimAfter:w,name:z,pauseWhenBuffering:B,stack:G,_remotionInternalNativeLoopPassed:J,showInTimeline:K,onAutoPlayError:Q,onVideoFrame:M,...T}=b,{loop:U,...W}=b,{fps:Y}=wb(),X=d();if(X.isClientSideRendering)throw Error("<Html5Video> is not supported in @remotion/web-renderer. Use <Video> from @remotion/media instead. See https://remotion.dev/docs/client-side-rendering/limitations");let{durations:O,setDurations:L}=lW(Kq);if(typeof h==="string")throw Error("string refs are not supported");if(typeof b.src!=="string")throw TypeError(`The \`<Html5Video>\` tag requires a string for \`src\`, but got ${JSON.stringify(b.src)} instead.`);let $=_b(b.src),Z=_W((g,v)=>{L({type:"got-duration",durationInSeconds:v,src:g})},[L]),N=O[Wb($)]??O[Wb(b.src)];Ij({startFrom:j,endAt:k,trimBefore:q,trimAfter:w});let{trimBeforeValue:R,trimAfterValue:F}=Vj({startFrom:j,endAt:k,trimBefore:q,trimAfter:w});if(U&&N!==void 0){if(!Number.isFinite(N))return Sb(rb,{...W,ref:h,stack:G,_remotionInternalNativeLoopPassed:!0});let g=N*Y;return Sb(_h,{durationInFrames:Sj({trimAfter:F,mediaDurationInFrames:g,playbackRate:b.playbackRate??1,trimBefore:R}),layout:"none",name:z,showInTimeline:!1,children:Sb(rb,{...W,ref:h,stack:G,_remotionInternalNativeLoopPassed:!0})})}if(typeof R<"u"||typeof F<"u")return Sb(hb,{layout:"none",from:0-(R??0),showInTimeline:!1,durationInFrames:F===void 0?void 0:F/(b.playbackRate??1),name:z,children:Sb(rb,{pauseWhenBuffering:B??!1,onVideoFrame:M,...T,ref:h,stack:G})});if(fj({playbackRate:b.playbackRate,preservePitch:b.preservePitch,volume:b.volume},"Html5Video"),X.isRendering)return Sb(tW,{onDuration:Z,onVideoFrame:M??null,...T,ref:h});return Sb(Rq,{onlyWarnForMediaSeekingError:!1,...T,ref:h,onVideoFrame:M??null,pauseWhenBuffering:B??!1,onDuration:Z,_remotionInternalStack:G??null,_remotionInternalNativeLoopPassed:J??!1,showInTimeline:K??!0,onAutoPlayError:Q??void 0})},rb=AW(oW);bb(rb);var eW=rb;fJ();var rW={Clipper:NG,Null:IJ,useIsPlayer:$j},bX={},TG=new Proxy(bX,{get(b,h){if(h==="Bundling"||h==="Rendering"||h==="Log"||h==="Puppeteer"||h==="Output")return TG;return()=>{console.warn("⚠️ The CLI configuration has been extracted from Remotion Core."),console.warn("Update the import from the config file:"),console.warn(),console.warn("- Delete:"),console.warn('import {Config} from "remotion";'),console.warn("+ Replace:"),console.warn('import {Config} from "@remotion/cli/config";'),console.warn(),console.warn("For more information, see https://www.remotion.dev/docs/4-0-migration."),process.exit(1)}}});hb.displayName="Sequence";bb(hb);bb(sk);bb(Kz);var{AbsoluteFill:LZ,AnimatedImage:NZ,Artifact:OZ,Audio:RZ,CanvasImage:gZ,Composition:yZ,Config:DZ,Easing:FZ,Experimental:vZ,Folder:xZ,FolderContext:EZ,Freeze:HZ,HTML_IN_CANVAS_UNSUPPORTED_MESSAGE:PZ,Html5Audio:CZ,Html5Video:SZ,HtmlInCanvas:cZ,IFrame:fZ,Img:IZ,Interactive:VZ,Internals:AZ,Loop:_Z,MediaPlaybackError:lZ,OffthreadVideo:mZ,Sequence:uZ,Series:dZ,Solid:sZ,Still:iZ,VERSION:pZ,Video:aZ,assertValidInterpolateEasingOption:nZ,assertValidInterpolatePosterizeOption:tZ,cancelRender:oZ,continueRender:eZ,createEffect:rZ,delayRender:b0,getInputProps:h0,getRemotionEnvironment:j0,getStaticFiles:k0,interpolate:q0,interpolateColors:w0,isHtmlInCanvasSupported:z0,measureSpring:B0,prefetch:G0,random:J0,registerRoot:K0,spring:M0,staticFile:Q0,useBufferState:T0,useCurrentFrame:U0,useCurrentScale:W0,useDelayRender:X0,usePixelDensity:Y0,useRemotionEnvironment:Z0,useVideoConfig:$0,watchStaticFile:L0}=mj;var O0=mj;export{L0 as watchStaticFile,$0 as useVideoConfig,Z0 as useRemotionEnvironment,Y0 as usePixelDensity,X0 as useDelayRender,W0 as useCurrentScale,U0 as useCurrentFrame,T0 as useBufferState,Q0 as staticFile,M0 as spring,K0 as registerRoot,J0 as random,G0 as prefetch,B0 as measureSpring,z0 as isHtmlInCanvasSupported,w0 as interpolateColors,q0 as interpolate,k0 as getStaticFiles,j0 as getRemotionEnvironment,h0 as getInputProps,b0 as delayRender,O0 as default,rZ as createEffect,eZ as continueRender,oZ as cancelRender,tZ as assertValidInterpolatePosterizeOption,nZ as assertValidInterpolateEasingOption,aZ as Video,pZ as VERSION,iZ as Still,sZ as Solid,dZ as Series,uZ as Sequence,mZ as OffthreadVideo,lZ as MediaPlaybackError,_Z as Loop,AZ as Internals,VZ as Interactive,IZ as Img,fZ as IFrame,cZ as HtmlInCanvas,SZ as Html5Video,CZ as Html5Audio,PZ as HTML_IN_CANVAS_UNSUPPORTED_MESSAGE,HZ as Freeze,EZ as FolderContext,xZ as Folder,vZ as Experimental,FZ as Easing,DZ as Config,yZ as Composition,gZ as CanvasImage,RZ as Audio,OZ as Artifact,NZ as AnimatedImage,LZ as AbsoluteFill};
|
|
40
|
+
`},UM="__remotion-studio-container",T1=()=>{return document.getElementById(UM)},v1=W1.createContext(null),fj=null,Ak=[],x1=(b)=>{if(!b)throw Error(`You must pass a React component to registerRoot(), but ${JSON.stringify(b)} was passed.`);if(fj)throw Error("registerRoot() was called more than once.");fj=b,Ak.forEach((j)=>{j(b)})},E1=()=>{return fj},H1=(b)=>{if(fj)return b(fj),()=>{return};return Ak.push(b),()=>{Ak=Ak.filter((j)=>j!==b)}},Qz=L1(null),C1=()=>{let b=XM(Qz);if(!b)return window.remotion_videoEnabled;if(b.videoEnabled===null)return window.remotion_videoEnabled;return b.videoEnabled},B1=()=>{let b=XM(Qz);if(!b)return window.remotion_audioEnabled;if(b.audioEnabled===null)return window.remotion_audioEnabled;return b.audioEnabled},S1=({children:b,videoEnabled:j,audioEnabled:k})=>{let q=O1(()=>({videoEnabled:j,audioEnabled:k}),[j,k]);return g1(Qz.Provider,{value:q,children:b})},I1=({children:b,numberOfAudioTags:j,logLevel:k,audioLatencyHint:q,previewSampleRate:w,videoEnabled:z,audioEnabled:G,frameState:J})=>{let K=_G(()=>{let Q=0;return{getNonce:()=>Q++}},[]),M=_G(()=>{return{logLevel:k,mountTime:Date.now()}},[k]);return Xb(lb.Provider,{value:M,children:Xb(mj.Provider,{value:K,children:Xb(MU,{frameState:J,children:Xb(S1,{videoEnabled:z,audioEnabled:G,children:Xb(XJ,{children:Xb(CK,{children:Xb(TU,{children:Xb(IK,{children:Xb(uK,{children:Xb(AK,{audioLatencyHint:q,audioEnabled:G,previewSampleRate:w,children:Xb(_K,{numberOfAudioTags:j,children:b})})})})})})})})})})})},c1=()=>{let b=new Map,j=!1;return{getOrCreateResource:({key:k,create:q})=>{if(j)throw Error("Render resource manager has already been disposed");let w=b.get(k);if(w)return w.resource;let z=q();return b.set(k,z),z.resource},dispose:()=>{if(j)return;j=!0;let k=Array.from(b.values());b.clear();let q=null;for(let w of k)try{w.dispose()}catch(z){q??=z}if(q!==null)throw q}}},A1=P1.createContext(null),FG=["h264","h265","vp8","vp9","av1","mp3","aac","wav","prores","h264-mkv","h264-ts","gif"];function _1(b,j,k){if(typeof b>"u")return;if(typeof b!=="string")throw TypeError(`The "${k}" prop ${j} must be a string, but you passed a value of type ${typeof b}.`);if(!FG.includes(b))throw Error(`The "${k}" prop ${j} must be one of ${FG.join(", ")}, but you passed ${b}.`)}var F1=({calculated:b,compositionId:j,compositionFps:k,compositionHeight:q,compositionWidth:w,compositionDurationInFrames:z})=>{let G=`calculated by calculateMetadata() for the composition "${j}"`,J=`of the "<Composition />" component with the id "${j}"`,K=b?.width??w??void 0;Vk(K,"width",b?.width?G:J);let M=b?.height??q??void 0;Vk(M,"height",b?.height?G:J);let Q=b?.fps??k??null;nk(Q,b?.fps?G:J,!1);let X=b?.durationInFrames??z??null;ik(X,{allowFloats:!1,component:`of the "<Composition />" component with the id "${j}"`});let U=b?.defaultCodec;_1(U,G,"defaultCodec");let Y=b?.defaultOutName,Z=b?.defaultVideoImageFormat,$=b?.defaultPixelFormat,N=b?.defaultProResProfile,y=b?.defaultSampleRate;return{width:K,height:M,fps:Q,durationInFrames:X,defaultCodec:U,defaultOutName:Y,defaultVideoImageFormat:Z,defaultPixelFormat:$,defaultProResProfile:N,defaultSampleRate:y}},VG=({calculated:b,compositionDurationInFrames:j,compositionFps:k,compositionHeight:q,compositionId:w,compositionWidth:z,defaultProps:G,originalProps:J})=>{let K=F1({calculated:b,compositionDurationInFrames:j,compositionFps:k,compositionHeight:q,compositionWidth:z,compositionId:w});return{metadataSource:{durationInFrames:b?.durationInFrames===void 0?"composition":"calculate-metadata",fps:b?.fps===void 0?"composition":"calculate-metadata",height:b?.height===void 0?"composition":"calculate-metadata",width:b?.width===void 0?"composition":"calculate-metadata"},videoConfig:{...K,id:w,defaultProps:Qw(G??{}),props:Qw(b?.props??J),defaultCodec:K.defaultCodec??null,defaultOutName:K.defaultOutName??null,defaultVideoImageFormat:K.defaultVideoImageFormat??null,defaultPixelFormat:K.defaultPixelFormat??null,defaultProResProfile:K.defaultProResProfile??null,defaultSampleRate:K.defaultSampleRate??null}}},YM=({calculateMetadata:b,signal:j,defaultProps:k,inputProps:q,compositionId:w,compositionDurationInFrames:z,compositionFps:G,compositionHeight:J,compositionWidth:K})=>{let M=b?b({defaultProps:k,props:q,abortSignal:j,compositionId:w,isRendering:qb().isRendering}):null;if(M!==null&&typeof M==="object"&&"then"in M)return M.then((Q)=>{return VG({calculated:Q,compositionDurationInFrames:z,compositionFps:G,compositionHeight:J,compositionWidth:K,compositionId:w,defaultProps:k,originalProps:q})});return VG({calculated:M,compositionDurationInFrames:z,compositionFps:G,compositionHeight:J,compositionWidth:K,compositionId:w,defaultProps:k,originalProps:q})},ZM=(b)=>{let j=YM(b);if(typeof j==="object"&&"then"in j)return j.then(({videoConfig:k})=>k);return j.videoConfig},V1=(b)=>{try{return{type:"success",result:YM(b)}}catch(j){return{type:"error",error:j}}},h1=(b)=>{try{return{type:"success",result:ZM(b)}}catch(j){return{type:"error",error:j}}},l1=f1.createContext(()=>{}),m1=()=>{if(qb().isRendering){let b=window.remotion_envVariables;if(!b)return{};return{...JSON.parse(b),NODE_ENV:"production"}}return{NODE_ENV:"production"}},d1=()=>{let b=m1();if(!window.process)window.process={};if(!window.process.env)window.process.env={};Object.keys(b).forEach((j)=>{window.process.env[j]=b[j]})},$M=Ij.createContext(null),NM=u1({setSize:()=>{return},size:{size:"auto",translation:{x:0,y:0}}}),s1=({canvasSize:b,compositionHeight:j,compositionWidth:k,previewSize:q})=>{let w=b.height/j,z=b.width/k,G=Math.min(w,z);if(q==="auto"){if(G===0)return 1;return G}return Number(q)},p1=(b)=>{let j=Ij.useContext($M),k=Ij.useContext(NM),q=Uj(),w=p(),[z,G]=Ij.useState(Oz);if(Ij.useEffect(()=>{let J=()=>G(Oz());return J(),JQ(J)},[]),j===null||q===null||k===null){if(b?.dontThrowIfOutsideOfRemotion)return 1;if(w.isRendering)return 1;throw Error(["useCurrentScale() was called outside of a Remotion context.","This hook can only be called in a component that is being rendered by Remotion.","If you want to this hook to return 1 outside of Remotion, pass {dontThrowIfOutsideOfRemotion: true} as an option.","If you think you called this hook in a Remotion component, make sure all versions of Remotion are aligned."].join(`
|
|
41
|
+
`))}if(j.type==="scale")return j.scale;return z},RM=i1.createContext(null),n1=()=>{if(typeof window>"u")return 1;return window.devicePixelRatio||1},a1=(b)=>{let j=hG(RM),k=hG(Lb);if(j!==null)return j;if(k||b?.dontThrowIfOutsideOfRemotion)return n1();throw Error(["usePixelDensity() was called outside of a Remotion context.","This hook can only be called in a component that is being rendered by Remotion.","If you want this hook to return the browser pixel density outside of Remotion, pass {dontThrowIfOutsideOfRemotion: true} as an option.","If you think you called this hook in a Remotion component, make sure all versions of Remotion are aligned."].join(`
|
|
42
|
+
`))},b2=({src:b,transparent:j,currentTime:k,toneMapped:q})=>{return`http://localhost:${window.remotion_proxyPort}/proxy?src=${encodeURIComponent(Nb(b))}&time=${encodeURIComponent(Math.max(0,k))}&transparent=${String(j)}&toneMapped=${String(q)}`},k2=({onError:b,volume:j,playbackRate:k,src:q,muted:w,allowAmplificationDuringRender:z,transparent:G,toneMapped:J,toneFrequency:K,name:M,loopVolumeCurveBehavior:Q,delayRenderRetries:X,delayRenderTimeoutInMilliseconds:U,onVideoFrame:Y,crossOrigin:Z,audioStreamIndex:$,preservePitch:N,...y})=>{let W=Pb(),v=Jb(),D=Rj(Q),R=Uj(),T=lG(o),x=fb(),{registerRenderAsset:L,unregisterRenderAsset:H}=lG(Ab);if(!q)throw TypeError("No `src` was passed to <OffthreadVideo>.");let E=Ok(()=>`offthreadvideo-${wk(q)}-${T?.cumulatedFrom}-${T?.relativeFrom}-${T?.durationInFrames}`,[q,T?.cumulatedFrom,T?.relativeFrom,T?.durationInFrames]);if(!R)throw Error("No video config found");let O=ub({volume:j,frame:D,mediaVolume:1});Dj(O),o1(()=>{if(!q)throw Error("No src passed");if(!window.remotion_audioEnabled)return;if(w)return;if(O<=0)return;return L({type:"video",src:Nb(q),id:E,frame:W,volume:O,mediaFrame:v,playbackRate:k,toneFrequency:K,audioStartFrame:Math.max(0,-(T?.cumulatedNegativeFrom??0)),audioStreamIndex:$}),()=>H(E)},[w,q,L,E,H,O,v,W,k,K,T?.cumulatedNegativeFrom,$]);let g=Ok(()=>{return pK({frame:v,playbackRate:k||1,startFrom:-x})/R.fps},[v,x,k,R.fps]),B=Ok(()=>{return b2({src:q,currentTime:g,transparent:G,toneMapped:J})},[J,g,q,G]),[C,S]=r1(null),{delayRender:_,continueRender:P}=Qb();e1(()=>{if(!window.remotion_videoEnabled)return;let V=[];S(null);let l=new AbortController,m=_(`Fetching ${B} from server`,{retries:X??void 0,timeoutInMilliseconds:U??void 0});return(async()=>{try{let c=await fetch(B,{signal:l.signal,cache:"no-store"});if(c.status!==200){if(c.status===500){let n=await c.json();if(n.error){let a=n.error.replace(/^Error: /,"");throw Error(a)}}throw Error(`Server returned status ${c.status} while fetching ${B}`)}let h=await c.blob(),f=URL.createObjectURL(h);V.push(()=>URL.revokeObjectURL(f)),S({src:f,handle:m})}catch(c){if(c.message.includes("aborted")){P(m);return}if(l.signal.aborted){P(m);return}if(c.message.includes("Failed to fetch"))c=Error(`Failed to fetch ${B}. This could be caused by Chrome rejecting the request because the disk space is low. Consider increasing the disk size of your environment.`,{cause:c});if(b)b(c);else wj(c)}})(),V.push(()=>{if(l.signal.aborted)return;l.abort()}),()=>{V.forEach((c)=>c())}},[B,X,U,b,P,_]);let I=fG(()=>{if(b)b?.(Error("Failed to load image with src "+C));else wj("Failed to load image with src "+C)},[C,b]),A=Ok(()=>{return[hj,y.className].filter(Jj).join(" ")},[y.className]),F=fG((V)=>{if(Y)Y(V)},[Y]);if(!C||!window.remotion_videoEnabled)return null;return P(C.handle),j2(Mz,{src:C.src,delayRenderRetries:X,delayRenderTimeoutInMilliseconds:U,onImageFrame:F,...y,onError:I,className:A})},yM=({ref:b,onVideoFrame:j})=>{G2(()=>{let{current:k}=b;if(!k)return;if(!j)return;let q=0,w=(z,G)=>{if(!b.current)return;j(b.current,z,G),q=b.current.requestVideoFrameCallback(w)};if(j(k),!k.requestVideoFrameCallback)return;return q=k.requestVideoFrameCallback(w),()=>{if(q)k.cancelVideoFrameCallback(q)}},[j,b])};class Ib extends Error{src;constructor({message:b,src:j}){super(b);this.name="MediaPlaybackError",this.src=j}}var K2=(b,j)=>{let k=dG(Nj);if(!k)throw Error("SharedAudioContext not found");let q=sG(null),w=uG(()=>{if(!k.audioContext)return null;return bz({audioContext:k.audioContext,ref:q})},[k.audioContext]);(mG.useInsertionEffect??mG.useLayoutEffect)(()=>{return()=>{requestAnimationFrame(()=>{w?.cleanup()})}},[w]);let{volume:G,muted:J,playbackRate:K,preservePitch:M,onlyWarnForMediaSeekingError:Q,src:X,onDuration:U,acceptableTimeShift:Y,acceptableTimeShiftInSeconds:Z,toneFrequency:$,name:N,_remotionInternalNativeLoopPassed:y,_remotionInternalStack:W,style:v,pauseWhenBuffering:D,showInTimeline:R,loopVolumeCurveBehavior:T,onError:x,onAutoPlayError:L,onVideoFrame:H,crossOrigin:E,delayRenderRetries:O,delayRenderTimeoutInMilliseconds:g,allowAmplificationDuringRender:B,useWebAudioApi:C,audioStreamIndex:S,..._}=b;if(!1)throw Error("typecheck error");let I=Rj(T??"repeat"),{fps:A,durationInFrames:F}=Ub(),V=dG(o),l=Rb(),m=uj(),[u]=pG(()=>String(Math.random()));if(typeof Y<"u")throw Error("acceptableTimeShift has been removed. Use acceptableTimeShiftInSeconds instead.");let[c]=wz(),[h]=zz(),f=ub({frame:I,volume:G,mediaVolume:c});Dj(f);let n=w2(()=>{return W??null},[W]);jz({volume:G,mediaVolume:c,mediaType:"video",src:X,playbackRate:b.playbackRate??1,displayName:N??null,id:u,getStack:n,showInTimeline:R,premountDisplay:V?.premountDisplay??null,postmountDisplay:V?.postmountDisplay??null,loopDisplay:void 0,documentationLink:Q?"https://www.remotion.dev/docs/offthreadvideo":"https://www.remotion.dev/docs/html5-video",refForOutline:q}),nK({mediaRef:q,src:X,mediaType:"video",playbackRate:b.playbackRate??1,preservePitch:M,onlyWarnForMediaSeekingError:Q,acceptableTimeshift:Z??null,isPremounting:Boolean(V?.premounting),isPostmounting:Boolean(V?.postmounting),pauseWhenBuffering:D,onAutoPlayError:L??null}),aK({id:u,isPostmounting:Boolean(V?.postmounting),isPremounting:Boolean(V?.premounting),mediaRef:q,mediaType:"video",onAutoPlayError:L??null}),VK({logLevel:l,mediaRef:q,volume:f,source:w,shouldUseWebAudioApi:C??!1});let a=V?V.relativeFrom:0,s=V?Math.min(V.durationInFrames,F):F,wb=db(X),zb=XZ({actualSrc:wb,actualFrom:a,duration:s,fps:A});z2(j,()=>{return q.current},[]),pG(()=>e({logLevel:l,message:`Mounting video with source = ${zb}, v=${ab}, user agent=${typeof navigator>"u"?"server":navigator.userAgent}`,tag:"video",mountTime:m})),Gw(()=>{let{current:i}=q;if(!i)return;let Tb=()=>{if(i.error){if(console.error("Error occurred in video",i?.error),x){let Tj=new Ib({message:`Code ${i.error.code}: ${i.error.message}`,src:X});x(Tj);return}throw new Ib({message:`The browser threw an error while playing the video ${X}: Code ${i.error.code} - ${i?.error?.message}. See https://remotion.dev/docs/media-playback-error for help. Pass an onError() prop to handle the error.`,src:X})}else{if(x){let Tj=new Ib({message:`The browser threw an error while playing the video ${X}`,src:X});x(Tj);return}throw new Ib({message:"The browser threw an error while playing the video",src:X})}};return i.addEventListener("error",Tb,{once:!0}),()=>{i.removeEventListener("error",Tb)}},[x,X]);let sb=sG(U);sb.current=U,yM({ref:q,onVideoFrame:H}),Gw(()=>{let{current:i}=q;if(!i)return;if(i.duration){sb.current?.(X,i.duration);return}let Tb=()=>{sb.current?.(X,i.duration)};return i.addEventListener("loadedmetadata",Tb),()=>{i.removeEventListener("loadedmetadata",Tb)}},[X]),Gw(()=>{let{current:i}=q;if(!i)return;if(Yq())i.preload="metadata";else i.preload="auto"},[]);let Rq=uG(()=>{return{...v}},[v]),yq=rw({crossOrigin:E,requestsVideoFrame:Boolean(H),isClientSideRendering:!1});return J2("video",{..._,ref:q,muted:J||h||f<=0,playsInline:!0,src:zb,loop:y,style:Rq,disableRemotePlayback:!0,crossOrigin:yq,controls:!1})},Uz=q2(K2),Xz=(b)=>{let{startFrom:j,endAt:k,trimBefore:q,trimAfter:w,name:z,pauseWhenBuffering:G,_remotionInternalStack:J,showInTimeline:K,...M}=b,Q=p(),X=aj(G);if(Q.isClientSideRendering)throw Error("<OffthreadVideo> is not supported in @remotion/web-renderer. Use <Video> from @remotion/media instead. See https://remotion.dev/docs/client-side-rendering/limitations");let U=t1(()=>{return},[]);if(typeof b.src!=="string")throw TypeError(`The \`<OffthreadVideo>\` tag requires a string for \`src\`, but got ${JSON.stringify(b.src)} instead.`);Qq({startFrom:j,endAt:k,trimBefore:q,trimAfter:w});let{trimBeforeValue:Y,trimAfterValue:Z}=Uq({startFrom:j,endAt:k,trimBefore:q,trimAfter:w});if(typeof Y<"u"||typeof Z<"u")return Pj(bb,{layout:"none",from:0-(Y??0),showInTimeline:!1,durationInFrames:Z,name:z,children:Pj(Xz,{pauseWhenBuffering:X,...M,trimAfter:void 0,name:void 0,showInTimeline:K,trimBefore:void 0,_remotionInternalStack:void 0,startFrom:void 0,endAt:void 0})});if(Mq(b,"Video"),Q.isRendering)return Pj(k2,{pauseWhenBuffering:X,...M,trimAfter:void 0,name:void 0,showInTimeline:K,trimBefore:void 0,_remotionInternalStack:void 0,startFrom:void 0,endAt:void 0});let{transparent:$,toneMapped:N,onAutoPlayError:y,onVideoFrame:W,crossOrigin:v,delayRenderRetries:D,delayRenderTimeoutInMilliseconds:R,...T}=M;return Pj(Uz,{_remotionInternalStack:J??null,onDuration:U,onlyWarnForMediaSeekingError:!0,pauseWhenBuffering:X,showInTimeline:K??!0,onAutoPlayError:y??void 0,onVideoFrame:W??null,crossOrigin:v,...T,_remotionInternalNativeLoopPassed:!1})},DM=({src:b,acceptableTimeShiftInSeconds:j,allowAmplificationDuringRender:k,audioStreamIndex:q,crossOrigin:w,delayRenderRetries:z,delayRenderTimeoutInMilliseconds:G,loopVolumeCurveBehavior:J,muted:K,name:M,onAutoPlayError:Q,onError:X,onVideoFrame:U,pauseWhenBuffering:Y,playbackRate:Z,preservePitch:$,showInTimeline:N,style:y,toneFrequency:W,toneMapped:v,transparent:D,trimAfter:R,trimBefore:T,useWebAudioApi:x,volume:L,_remotionInternalNativeLoopPassed:H,endAt:E,_remotionInternalStack:O,startFrom:g,imageFormat:B,...C})=>{if(B)throw TypeError("The `<OffthreadVideo>` tag does no longer accept `imageFormat`. Use the `transparent` prop if you want to render a transparent video.");return Pj(Xz,{acceptableTimeShiftInSeconds:j,allowAmplificationDuringRender:k??!0,audioStreamIndex:q??0,crossOrigin:w,delayRenderRetries:z,delayRenderTimeoutInMilliseconds:G,loopVolumeCurveBehavior:J??"repeat",muted:K??!1,name:M,onAutoPlayError:Q??null,onError:X,onVideoFrame:U,pauseWhenBuffering:aj(Y),playbackRate:Z??1,preservePitch:$,toneFrequency:W??1,showInTimeline:N??!0,src:b,_remotionInternalStack:O,startFrom:g,_remotionInternalNativeLoopPassed:H??!1,endAt:E,style:y,toneMapped:v??!0,transparent:D??!1,trimAfter:R,trimBefore:T,useWebAudioApi:x??!1,volume:L,...C})};r(DM);var Ow="remotion_staticFilesChanged",M2=(b,j)=>{if(nj)throw Error("watchStaticFile() has moved into the `@remotion/studio` package. Update your imports.");if(!qb().isStudio)return console.warn("The watchStaticFile() API is only available while using the Remotion Studio."),{cancel:()=>{return}};let k=b.startsWith(window.remotion_staticBase)?b.replace(window.remotion_staticBase,""):b,q=k.startsWith("/")?k.slice(1):k,w=window.remotion_staticFiles.find((J)=>J.name===q),z=(J)=>{let M=J.detail.files.find((Q)=>Q.name===q);if(!M){if(w!==void 0)j(null);w=void 0;return}if(w===void 0||w.lastModified!==M.lastModified)j(M),w=M};return window.addEventListener(Ow,z),{cancel:()=>{return window.removeEventListener(Ow,z)}}};function U2(){let b=jb.useContext(Gj),j=jb.useContext(Mj),k=jb.useContext(ek),q=jb.useContext(Kj),w=jb.useContext(o),z=jb.useContext(mj),G=jb.useContext(Lb),J=jb.useContext(Kq),K=jb.useContext(ak),M=jb.useContext(Ab),Q=jb.useContext($j),X=jb.useContext(bq),U=jb.useContext(kq),Y=jb.useContext(yj),Z=jb.useContext(lb);return Q2(()=>({compositionManagerCtx:b,timelineContext:j,timelineImperativeContext:k,setTimelineContext:q,sequenceContext:w,nonceContext:z,canUseRemotionHooksContext:G,preloadContext:J,resolveCompositionContext:K,renderAssetManagerContext:M,sequenceManagerContext:Q,sequenceManagerRefContext:X,visualModePropStatusesRefContext:U,bufferManagerContext:Y,logLevelContext:Z}),[b,z,w,q,j,k,G,J,K,M,Q,X,U,Y,Z])}var X2=(b)=>{let{children:j,contexts:k}=b;return kb(lb.Provider,{value:k.logLevelContext,children:kb(Lb.Provider,{value:k.canUseRemotionHooksContext,children:kb(mj.Provider,{value:k.nonceContext,children:kb(Kq.Provider,{value:k.preloadContext,children:kb(Gj.Provider,{value:k.compositionManagerCtx,children:kb(bq.Provider,{value:k.sequenceManagerRefContext,children:kb($j.Provider,{value:k.sequenceManagerContext,children:kb(kq.Provider,{value:k.visualModePropStatusesRefContext,children:kb(Ab.Provider,{value:k.renderAssetManagerContext,children:kb(ak.Provider,{value:k.resolveCompositionContext,children:kb(ek.Provider,{value:k.timelineImperativeContext,children:kb(Mj.Provider,{value:k.timelineContext,children:kb(Kj.Provider,{value:k.setTimelineContext,children:kb(o.Provider,{value:k.sequenceContext,children:kb(yj.Provider,{value:k.bufferManagerContext,children:j})})})})})})})})})})})})})})})},Y2=X1(),Z2={MaxMediaCacheSizeContext:v1,makeRenderResourceManager:c1,RenderResourceManagerContext:A1,useUnsafeVideoConfig:Uj,useFrameForVolumeProp:Rj,useTimelinePosition:Pb,useAbsoluteTimelinePosition:gJ,evaluateVolume:ub,getAbsoluteSrc:Nb,getAnimatedImageDurationInSeconds:Y1,getAssetDisplayName:fK,Timeline:$w,validateMediaTrimProps:Qq,validateMediaProps:Mq,resolveTrimProps:Uq,VideoForPreview:Uz,CompositionManager:Gj,CompositionSetters:lj,VisualModePropStatusesContext:jq,VisualModePropStatusesRefContext:kq,VisualModeDragOverridesContext:qq,VisualModeSettersContext:hJ,SequenceManager:$j,SequenceManagerRefContext:bq,SequenceStackTracesUpdateContext:l1,baseSchema:yb,sequenceSchema:zj,SequenceWithoutSchema:YK,sequenceStyleSchema:PJ,sequenceVisualStyleSchema:ZU,sequencePremountSchema:SJ,sequenceCropSchema:IJ,textSchema:ij,transformSchema:Zb,premountSchema:Yj,flattenActiveSchema:aw,getFlatSchemaWithAllKeys:tw,RemotionRootContexts:I1,CompositionManagerProvider:R1,useVideo:ok,getRoot:E1,useMediaVolumeState:wz,usePlayerMutedState:zz,useMediaInTimeline:jz,useLazyComponent:yJ,truthy:Jj,SequenceContext:o,PremountContext:mJ,usePremounting:tj,useRemotionContexts:U2,RemotionContextProvider:X2,CSSUtils:QM,setupEnvVariables:d1,MediaVolumeContext:kz,SetMediaVolumeContext:qz,getRemotionEnvironment:qb,SharedAudioContext:Nj,SharedAudioContextProvider:AK,SharedAudioTagsContext:Xq,SharedAudioTagsContextProvider:_K,invalidCompositionErrorMessage:sQ,invalidFolderNameErrorMessage:sM,calculateMediaDuration:Jq,isCompositionIdValid:TJ,isFolderNameValid:zJ,getPreviewDomElement:T1,compositionsRef:MM,portalNode:Xw,setPortalNodeCurrentScale:KQ,waitForRoot:H1,SetTimelineContext:Kj,CanUseRemotionHooksProvider:Kw,CanUseRemotionHooks:Lb,PrefetchProvider:CK,DurationsContextProvider:IK,IsPlayerContextProvider:eM,useIsPlayer:pk,EditorPropsProvider:XJ,EditorPropsContext:gw,usePreload:db,NonceContext:mj,resolveVideoConfig:ZM,resolveVideoConfigOrCatch:h1,resolveVideoConfigWithMetadataOrCatch:V1,ResolveCompositionContext:ak,useResolvedVideoConfig:Cw,resolveCompositionsRef:WQ,REMOTION_STUDIO_CONTAINER_ELEMENT:UM,RenderAssetManager:Ab,persistCurrentFrame:xJ,usePlaybackRate:Vw,useTimelineContext:Qj,useTimelineSetFrame:CJ,isIosSafari:Yq,WATCH_REMOTION_STATIC_FILES:Ow,addSequenceStackTraces:r,useMediaStartsAt:fb,BufferingProvider:uK,BufferingContextReact:yj,getComponentsToAddStacksTo:tQ,getSequenceComponent:eQ,getSingleChildComponent:rQ,getStackForControls:Pw,REMOTION_INTERNAL_STACK_PROP:aQ,CurrentScaleContext:$M,PixelDensityContext:RM,PreviewSizeContext:NM,calculateScale:s1,validateRenderAsset:HK,Log:t,LogLevelContext:lb,useLogLevel:Rb,playbackLogging:e,timeValueRef:RQ,compositionSelectorRef:Y2,RemotionEnvironmentContext:YJ,warnAboutTooHighVolume:Dj,AudioForPreview:eK,OBJECTFIT_CONTAIN_CLASS_NAME:hj,InnerOffthreadVideo:Xz,useBasicMediaInTimeline:lK,getInputPropsOverride:MJ,setInputPropsOverride:UQ,useVideoEnabled:C1,useAudioEnabled:B1,useIsPlayerBuffering:sK,TimelinePosition:$w,DelayRenderContextType:RJ,TimelineContext:Mj,TimelineImperativeContext:ek,PlaybackRateContext:Aw,AbsoluteTimeContext:_w,RenderAssetManagerProvider:TY,getEffectiveVisualModeValue:wK,CompositionRenderErrorContext:jJ,useEffectChainState:kk,createEffectChainState:WK,cleanupEffectChainState:Rw,runEffectChain:jk,useMemoizedEffects:bk,useMemoizedEffectDefinitions:rj,createEffect:EK,createWebGLContextError:uX,createWebGL2ContextError:DK,computeEffectiveSchemaValuesDotNotation:QK,interpolateKeyframedStatus:ej,makeStaticDragOverride:DX,makeKeyframedDragOverride:TX,resolveDragOverrideValue:zq,getStaticDragOverrideValue:WX,OverrideIdsToNodePathsGettersContext:nw,OverrideIdsToNodePathsSettersContext:ZX,findPropsToDelete:KK,makeSequencePropsSubscriptionKey:xb,getPropStatusesCtx:JK,getEffectPropStatusesCtx:GK,hiddenField:lw,durationInFramesField:dw,freezeField:uw,fromField:AJ,resolveSequenceCrop:sw,useCropStyle:mb},TM=(b)=>{return iG.Children.toArray(b).reduce((k,q)=>{if(q.type===iG.Fragment)return k.concat(TM(q.props.children));return k.push(q),k},[])},T2={durationInFrames:vb.baseSchema.durationInFrames,name:vb.sequenceSchema.name,hidden:vb.sequenceSchema.hidden,showInTimeline:vb.sequenceSchema.showInTimeline,freeze:vb.baseSchema.freeze,trimBefore:vb.sequenceSchema.trimBefore,layout:vb.sequenceSchema.layout},W2=N2(({offset:b=0,className:j="",_remotionInternalRender:k=null,...q},w)=>{if(xU(),k)return k({...q,offset:b,className:j||void 0},w);return cj(lJ,{children:q.children})}),WM=vb.withSchema({Component:W2,componentName:"<Series.Sequence>",componentIdentity:"dev.remotion.remotion.Series.Sequence",schema:T2,supportsEffects:!1}),v2=YK,nG=({durationInFrames:b,offset:j,index:k,childrenLength:q})=>{let w=`index = ${k}, duration = ${b}`;if(k!==q-1||b!==1/0)ik(b,{component:"of a <Series.Sequence /> component",allowFloats:!0});let z=j??0;if(Number.isNaN(z))throw TypeError(`The "offset" property of a <Series.Sequence /> must not be NaN, but got NaN (${w}).`);if(!Number.isFinite(z))throw TypeError(`The "offset" property of a <Series.Sequence /> must be finite, but got ${z} (${w}).`);if(z%1!==0)throw TypeError(`The "offset" property of a <Series.Sequence /> must be finite, but got ${z} (${w}).`);return z},x2=(b)=>{let j=R2(()=>{let k=TM(b.children),q=(w,z)=>{if(w===k.length)return null;let J=k[w];if(typeof J==="string"){if(J.trim()==="")return q(w+1,z);throw TypeError(`The <Series /> component only accepts a list of <Series.Sequence /> components as its children, but you passed a string "${J}"`)}if(J.type!==WM)throw TypeError(`The <Series /> component only accepts a list of <Series.Sequence /> components as its children, but got ${J} instead`);let K=J;return nG({durationInFrames:K.props.durationInFrames,offset:K.props.offset,index:w,childrenLength:k.length}),$2.cloneElement(K,{_remotionInternalRender:(M,Q)=>{let X=M.durationInFrames,{durationInFrames:U,children:Y,offset:Z,controls:$,from:N,name:y,...W}=M,v=nG({durationInFrames:X,offset:Z,index:w,childrenLength:k.length}),D=z+v,R=z+X+v;return y2(D2,{children:[cj(v2,{ref:Q,name:y||"<Series.Sequence>",_remotionInternalDocumentationLink:y?void 0:"https://www.remotion.dev/docs/series",controls:$??void 0,from:D,durationInFrames:X,...W,children:cj(lJ,{children:Y})}),q(w+1,R)]})}})};return q(0,0)},[b.children]);return cj(bb,{layout:"none",name:"<Series>",_remotionInternalDocumentationLink:"https://www.remotion.dev/docs/series",...b,children:cj(vU,{children:j})})},vM=Object.assign(Db({Component:x2,componentName:"<Series>",componentIdentity:"dev.remotion.remotion.Series",schema:DU,supportsEffects:!1}),{Sequence:WM});r(vM);var E2={"%3A":":","%2F":"/","%3F":"?","%23":"#","%5B":"[","%5D":"]","%40":"@","%21":"!","%24":"$","%26":"&","%27":"'","%28":"(","%29":")","%2A":"*","%2B":"+","%2C":",","%3B":";"},aG={},H2=(b)=>{if(aG[b])return;console.warn(b),aG[b]=!0},L2=(b)=>{for(let j of Object.keys(E2))if(b.includes(j))return{containsHex:!0,hexCode:j};return{containsHex:!1}},uk=(b)=>{if(b.startsWith("/"))return uk(b.substring(1));return b},O2=(b)=>{if(typeof window<"u"&&window.remotion_staticBase){if(b.startsWith(window.remotion_staticBase))throw Error(`The value "${b}" is already prefixed with the static base ${window.remotion_staticBase}. You don't need to call staticFile() on it.`);return`${window.remotion_staticBase}/${uk(b)}`}return`/${uk(b)}`},g2=(b)=>{return b.split("/").map((w)=>{return encodeURIComponent(w)}).join("/")},C2=(b)=>{if(b===null)throw TypeError("null was passed to staticFile()");if(typeof b>"u")throw TypeError("undefined was passed to staticFile()");if(b.startsWith("http://")||b.startsWith("https://"))throw TypeError(`staticFile() does not support remote URLs - got "${b}". Instead, pass the URL without wrapping it in staticFile(). See: https://remotion.dev/docs/staticfile-remote-urls`);if(b.startsWith("..")||b.startsWith("./"))throw TypeError(`staticFile() does not support relative paths - got "${b}". Instead, pass the name of a file that is inside the public/ folder. See: https://remotion.dev/docs/staticfile-relative-paths`);if(b.startsWith("/Users")||b.startsWith("/home")||b.startsWith("/tmp")||b.startsWith("/etc")||b.startsWith("/opt")||b.startsWith("/var")||b.startsWith("C:")||b.startsWith("D:")||b.startsWith("E:"))throw TypeError(`staticFile() does not support absolute paths - got "${b}". Instead, pass the name of a file that is inside the public/ folder. See: https://remotion.dev/docs/staticfile-relative-paths`);if(b.startsWith("public/"))throw TypeError(`Do not include the public/ prefix when using staticFile() - got "${b}". See: https://remotion.dev/docs/staticfile-relative-paths`);let j=L2(b);if(j.containsHex)H2(`WARNING: You seem to pass an already encoded path (path contains ${j.hexCode}). Since Remotion 4.0, the encoding is done by staticFile() itself. You may want to remove a encodeURIComponent() wrapping.`);if(typeof window<"u"){let w=window.remotion_staticFiles?.find((z)=>z.name===uk(b));if(w)return w.src}let k=g2(b),q=O2(k);if(!q.startsWith("/"))return`/${q}`;return q},xM=(b)=>{let j={...b,durationInFrames:1,fps:1};return B2.createElement(Iw,j)};r(xM);var eG=(b)=>{return Math.round(b*1e5)/1e5},Jw=({element:b,desiredTime:j,logLevel:k,mountTime:q})=>{if(mk(b.currentTime,j))return{wait:Promise.resolve(j),cancel:()=>{}};Pk({logLevel:k,mediaRef:b,time:j,why:"Seeking during rendering",mountTime:q});let w,z=null,G=new Promise((K)=>{w=b.requestVideoFrameCallback((M,Q)=>{let X=Q.expectedDisplayTime-M;if(X<=0){K(Q.mediaTime);return}setTimeout(()=>{K(Q.mediaTime)},X+150)})}),J=new Promise((K)=>{let M=()=>{K()};b.addEventListener("seeked",M,{once:!0}),z=()=>{b.removeEventListener("seeked",M)}});return{wait:Promise.all([G,J]).then(([K])=>K),cancel:()=>{z?.(),b.cancelVideoFrameCallback(w)}}},h2=({element:b,desiredTime:j,fps:k,logLevel:q,mountTime:w})=>{let z=1/k/2,G=()=>{return};if(Number.isFinite(b.duration)&&b.currentTime>=b.duration&&j>=b.duration)return{prom:Promise.resolve(),cancel:()=>{}};return{prom:new Promise((K,M)=>{let Q=Jw({element:b,desiredTime:j+z,logLevel:q,mountTime:w});Q.wait.then((X)=>{if(Math.abs(j-X)<=z)return K();let Y=j>X?1:-1,Z=Jw({element:b,desiredTime:X+z*Y,logLevel:q,mountTime:w});G=Z.cancel,Z.wait.then(($)=>{let N=Math.abs(j-$);if(eG(N)<=eG(z))return K();let y=Jw({element:b,desiredTime:j+z,logLevel:q,mountTime:w});return G=y.cancel,y.wait.then(()=>{K()}).catch((W)=>{M(W)})}).catch(($)=>{M($)})}),G=Q.cancel}),cancel:()=>{G()}}},l2=({onError:b,volume:j,allowAmplificationDuringRender:k,playbackRate:q,onDuration:w,toneFrequency:z,name:G,acceptableTimeShiftInSeconds:J,delayRenderRetries:K,delayRenderTimeoutInMilliseconds:M,loopVolumeCurveBehavior:Q,audioStreamIndex:X,onVideoFrame:U,preservePitch:Y,...Z},$)=>{let N=Pb(),y=Jb(),W=Rj(Q??"repeat"),v=Uj(),D=V2(null),R=tG(o),T=fb(),x=p(),L=Rb(),H=uj(),{delayRender:E,continueRender:O}=Qb(),{registerRenderAsset:g,unregisterRenderAsset:B}=tG(Ab),C=F2(()=>`video-${wk(Z.src??"")}-${R?.cumulatedFrom}-${R?.relativeFrom}-${R?.durationInFrames}`,[Z.src,R?.cumulatedFrom,R?.relativeFrom,R?.durationInFrames]);if(!v)throw Error("No video config found");let S=ub({volume:j,frame:W,mediaVolume:1});Dj(S),oG(()=>{if(!Z.src)throw Error("No src passed");if(Z.muted)return;if(S<=0)return;if(!window.remotion_audioEnabled)return;return g({type:"video",src:Nb(Z.src),id:C,frame:N,volume:S,mediaFrame:y,playbackRate:q??1,toneFrequency:z??1,audioStartFrame:Math.max(0,-(R?.cumulatedNegativeFrom??0)),audioStreamIndex:X??0}),()=>B(C)},[Z.muted,Z.src,g,C,B,S,y,N,q,z,R?.cumulatedNegativeFrom,X]),A2($,()=>{return D.current},[]),yM({ref:D,onVideoFrame:U}),oG(()=>{if(!window.remotion_videoEnabled)return;let{current:P}=D;if(!P)return;let I=iK({frame:y,playbackRate:q||1,startFrom:-T,fps:v.fps}),A=E(`Rendering <Html5Video /> with src="${Z.src}" at time ${I}`,{retries:K??void 0,timeoutInMilliseconds:M??void 0});if(window.process?.env?.NODE_ENV==="test"){O(A);return}if(mk(P.currentTime,I)){if(P.readyState>=2){O(A);return}let m=()=>{O(A)};return P.addEventListener("loadeddata",m,{once:!0}),()=>{P.removeEventListener("loadeddata",m)}}let F=()=>{O(A)},V=h2({element:P,desiredTime:I,fps:v.fps,logLevel:L,mountTime:H});V.prom.then(()=>{O(A)}),P.addEventListener("ended",F,{once:!0});let l=()=>{if(P?.error){if(console.error("Error occurred in video",P?.error),b)return;throw new Ib({message:`The browser threw an error while playing the video ${Z.src}: Code ${P.error.code} - ${P?.error?.message}. See https://remotion.dev/docs/media-playback-error for help. Pass an onError() prop to handle the error.`,src:Z.src})}else throw new Ib({message:"The browser threw an error",src:Z.src})};return P.addEventListener("error",l,{once:!0}),()=>{V.cancel(),P.removeEventListener("ended",F),P.removeEventListener("error",l),O(A)}},[W,Z.src,q,v.fps,y,T,b,K,M,L,H,O,E]);let{src:_}=Z;if(x.isRendering)_2(()=>{if(window.process?.env?.NODE_ENV==="test")return;let P=E("Loading <Html5Video> duration with src="+_,{retries:K??void 0,timeoutInMilliseconds:M??void 0}),{current:I}=D,A=()=>{if(I?.duration)w(_,I.duration);O(P)};if(I?.duration)w(_,I.duration),O(P);else I?.addEventListener("loadedmetadata",A,{once:!0});return()=>{I?.removeEventListener("loadedmetadata",A),O(P)}},[_,w,K,M,O,E]);return f2("video",{ref:D,disableRemotePlayback:!0,...Z})},m2=c2(l2),d2=(b,j)=>{let{startFrom:k,endAt:q,trimBefore:w,trimAfter:z,name:G,pauseWhenBuffering:J,_remotionInternalStack:K,_remotionInternalNativeLoopPassed:M,showInTimeline:Q,onAutoPlayError:X,onVideoFrame:U,...Y}=b,{loop:Z,...$}=b,{fps:N}=Ub(),y=p(),W=aj(J);if(y.isClientSideRendering)throw Error("<Html5Video> is not supported in @remotion/web-renderer. Use <Video> from @remotion/media instead. See https://remotion.dev/docs/client-side-rendering/limitations");let{durations:v,setDurations:D}=P2(ew);if(typeof j==="string")throw Error("string refs are not supported");if(typeof b.src!=="string")throw TypeError(`The \`<Html5Video>\` tag requires a string for \`src\`, but got ${JSON.stringify(b.src)} instead.`);let R=db(b.src),T=I2((E,O)=>{D({type:"got-duration",durationInSeconds:O,src:E})},[D]),x=v[Nb(R)]??v[Nb(b.src)];Qq({startFrom:k,endAt:q,trimBefore:w,trimAfter:z});let{trimBeforeValue:L,trimAfterValue:H}=Uq({startFrom:k,endAt:q,trimBefore:w,trimAfter:z});if(Z&&x!==void 0){if(!Number.isFinite(x))return Vb(qj,{...$,ref:j,_remotionInternalStack:K,_remotionInternalNativeLoopPassed:!0});let E=x*N;return Vb(qk,{durationInFrames:Jq({trimAfter:H,mediaDurationInFrames:E,playbackRate:b.playbackRate??1,trimBefore:L}),layout:"none",name:G,showInTimeline:!1,children:Vb(qj,{...$,ref:j,_remotionInternalStack:K,_remotionInternalNativeLoopPassed:!0})})}if(typeof L<"u"||typeof H<"u")return Vb(bb,{layout:"none",from:0-(L??0),showInTimeline:!1,durationInFrames:H===void 0?void 0:H/(b.playbackRate??1),name:G,children:Vb(qj,{pauseWhenBuffering:W,onVideoFrame:U,...Y,ref:j,_remotionInternalStack:K})});if(Mq({playbackRate:b.playbackRate,preservePitch:b.preservePitch,volume:b.volume},"Html5Video"),y.isRendering)return Vb(m2,{onDuration:T,onVideoFrame:U??null,...Y,ref:j});return Vb(Uz,{onlyWarnForMediaSeekingError:!1,...Y,ref:j,onVideoFrame:U??null,pauseWhenBuffering:W,onDuration:T,_remotionInternalStack:K??null,_remotionInternalNativeLoopPassed:M??!1,showInTimeline:Q??!0,onAutoPlayError:X??void 0})},qj=S2(d2);r(qj);var u2=qj;bU();var s2={Clipper:IM,Null:jU,useIsPlayer:pk},p2={},EM=new Proxy(p2,{get(b,j){if(j==="Bundling"||j==="Rendering"||j==="Log"||j==="Puppeteer"||j==="Output")return EM;return()=>{console.warn("⚠️ The CLI configuration has been extracted from Remotion Core."),console.warn("Update the import from the config file:"),console.warn(),console.warn("- Delete:"),console.warn('import {Config} from "remotion";'),console.warn("+ Replace:"),console.warn('import {Config} from "@remotion/cli/config";'),console.warn(),console.warn("For more information, see https://www.remotion.dev/docs/4-0-migration."),process.exit(1)}}});bb.displayName="Sequence";r(bb);oQ(bb);r(Iw);r(GJ);var{AbsoluteFill:y5,AnimatedImage:D5,Artifact:T5,Audio:W5,CanvasImage:v5,Composition:x5,Config:E5,Easing:H5,Experimental:L5,Folder:O5,FolderContext:g5,Freeze:C5,HTML_IN_CANVAS_UNSUPPORTED_MESSAGE:B5,Html5Audio:S5,Html5Video:I5,HtmlInCanvas:P5,IFrame:c5,Img:A5,Interactive:_5,Internals:F5,Loop:V5,MediaPlaybackError:h5,OffthreadVideo:f5,Sequence:l5,Series:m5,Solid:d5,Still:u5,VERSION:s5,Video:p5,absoluteFillSchema:i5,assertValidInterpolateEasingOption:n5,assertValidInterpolatePosterizeOption:a5,cancelRender:t5,continueRender:o5,createEffect:e5,delayRender:r5,getInputProps:b7,getRemotionEnvironment:j7,getStaticFiles:k7,interpolate:q7,interpolateColors:w7,isHtmlInCanvasSupported:z7,measureSpring:G7,prefetch:J7,random:K7,registerRoot:M7,spring:Q7,staticFile:U7,useBufferState:X7,useCurrentFrame:Y7,useCurrentScale:Z7,useDelayRender:$7,usePixelDensity:N7,useRemotionEnvironment:R7,useVideoConfig:y7,watchStaticFile:D7}=Nq;var W7=Nq;export{D7 as watchStaticFile,y7 as useVideoConfig,R7 as useRemotionEnvironment,N7 as usePixelDensity,$7 as useDelayRender,Z7 as useCurrentScale,Y7 as useCurrentFrame,X7 as useBufferState,U7 as staticFile,Q7 as spring,M7 as registerRoot,K7 as random,J7 as prefetch,G7 as measureSpring,z7 as isHtmlInCanvasSupported,w7 as interpolateColors,q7 as interpolate,k7 as getStaticFiles,j7 as getRemotionEnvironment,b7 as getInputProps,r5 as delayRender,W7 as default,e5 as createEffect,o5 as continueRender,t5 as cancelRender,a5 as assertValidInterpolatePosterizeOption,n5 as assertValidInterpolateEasingOption,i5 as absoluteFillSchema,p5 as Video,s5 as VERSION,u5 as Still,d5 as Solid,m5 as Series,l5 as Sequence,f5 as OffthreadVideo,h5 as MediaPlaybackError,V5 as Loop,F5 as Internals,_5 as Interactive,A5 as Img,c5 as IFrame,P5 as HtmlInCanvas,I5 as Html5Video,S5 as Html5Audio,B5 as HTML_IN_CANVAS_UNSUPPORTED_MESSAGE,C5 as Freeze,g5 as FolderContext,O5 as Folder,L5 as Experimental,H5 as Easing,E5 as Config,x5 as Composition,v5 as CanvasImage,W5 as Audio,T5 as Artifact,D5 as AnimatedImage,y5 as AbsoluteFill};
|