@glissade/browser 0.19.0-pre.0 → 0.19.0-pre.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/glissade.browser.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
"use strict";var glissade=(()=>{var It=Object.defineProperty,Xi=Object.defineProperties,Gi=Object.getOwnPropertyDescriptor,Ui=Object.getOwnPropertyDescriptors,Ki=Object.getOwnPropertyNames,Et=Object.getOwnPropertySymbols;var Mn=Object.prototype.hasOwnProperty,js=Object.prototype.propertyIsEnumerable;var Ws=e=>{throw TypeError(e)};var Sn=(e,t,n)=>t in e?It(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,M=(e,t)=>{for(var n in t||(t={}))Mn.call(t,n)&&Sn(e,n,t[n]);if(Et)for(var n of Et(t))js.call(t,n)&&Sn(e,n,t[n]);return e},R=(e,t)=>Xi(e,Ui(t));var Hs=e=>typeof e=="symbol"?e:e+"",ze=(e,t)=>{var n={};for(var s in e)Mn.call(e,s)&&t.indexOf(s)<0&&(n[s]=e[s]);if(e!=null&&Et)for(var s of Et(e))t.indexOf(s)<0&&js.call(e,s)&&(n[s]=e[s]);return n};var Qi=(e,t)=>{for(var n in t)It(e,n,{get:t[n],enumerable:!0})},Ji=(e,t,n,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of Ki(t))!Mn.call(e,r)&&r!==n&&It(e,r,{get:()=>t[r],enumerable:!(s=Gi(t,r))||s.enumerable});return e};var Zi=e=>Ji(It({},"__esModule",{value:!0}),e);var S=(e,t,n)=>Sn(e,typeof t!="symbol"?t+"":t,n),Tn=(e,t,n)=>t.has(e)||Ws("Cannot "+n);var F=(e,t,n)=>(Tn(e,t,"read from private field"),n?n.call(e):t.get(e)),Q=(e,t,n)=>t.has(e)?Ws("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n),Y=(e,t,n,s)=>(Tn(e,t,"write to private field"),s?s.call(e,n):t.set(e,n),n),q=(e,t,n)=>(Tn(e,t,"access private method"),n);var cc={};Qi(cc,{ALL_FILTER_KINDS:()=>Cs,BakeError:()=>Kt,BindTypeMismatchError:()=>Fr,Canvas2DBackend:()=>wn,Circle:()=>hn,CircularDependencyError:()=>xr,ClipError:()=>le,ColdAssetError:()=>vt,ColorParseError:()=>Fn,Custom:()=>Zr,DEFAULT_EASE:()=>Zs,DL_SNAPSHOT_VERSION:()=>Xr,DeterminismViolationError:()=>mi,DlSnapshotError:()=>nn,DuplicateNodeIdError:()=>gi,EachError:()=>Ge,FilterValidationError:()=>Fe,FollowPath:()=>ki,FontValidationError:()=>Ir,Group:()=>se,GsPlayerElement:()=>ji,Highlight:()=>fi,IDENTITY:()=>Ee,Image:()=>fn,ImageNode:()=>fn,LayoutEngineMissingError:()=>Ms,MEASURE_QUANTUM_PX:()=>sn,MESH_DOWNSCALE:()=>ka,MESH_SHEPARD_POWER:()=>va,MESH_SIGMA:()=>Os,MorphError:()=>Ke,NODE_TAXONOMY:()=>jo,Node:()=>Z,Path:()=>bt,PositionError:()=>ss,PresenceError:()=>Ls,Raster2D:()=>Ps,Rect:()=>un,ReservedNodeIdError:()=>yi,ShaderEffect:()=>pa,SidecarVersionError:()=>Jn,SketchValidationError:()=>ge,TARGET_PATH:()=>Ae,TargetOverlapError:()=>Vi,Text:()=>Xe,TextCursor:()=>di,TimelineValidationError:()=>G,TokenHighlight:()=>vi,TokenMatchError:()=>St,TrackValidationError:()=>ke,UnboundTargetError:()=>Dr,UnknownEasingError:()=>An,UnknownValueTypeError:()=>Ln,UnresolvableTargetError:()=>Lt,ValueTypeInferenceError:()=>Wn,Video:()=>dn,WriteDuringEvaluationError:()=>Gt,applyToPoint:()=>Hr,arcLength:()=>ys,assignKeyIds:()=>es,audioOffsetSamples:()=>hr,auditCacheCold:()=>ia,bake:()=>Fo,bakeCheckpointed:()=>Lo,batch:()=>So,beginReadPhase:()=>Sr,bindScene:()=>bi,bindTimeline:()=>as,booleanType:()=>qn,breakLines:()=>ce,buildFontRegistry:()=>dt,buildTimeline:()=>Pr,clip:()=>ye,clipList:()=>Aa,clockDriver:()=>zi,coercePathData:()=>rn,collapseReplacer:()=>He,collectLocalizedTextUsages:()=>da,collectTextUsages:()=>xi,colorType:()=>Vn,compileTimeline:()=>ne,computed:()=>ft,createDisplayListBuilder:()=>yt,createPlayer:()=>Bi,createPlayhead:()=>Jt,createScene:()=>sa,cubicBezier:()=>On,cubicBezierDerivative:()=>Cn,defineGsPlayer:()=>Yi,deleteSidecarTrack:()=>yr,describe:()=>rc,diffDisplayLists:()=>ds,drawOn:()=>pi,drawOnEach:()=>ea,driftLoop:()=>La,each:()=>Zo,easingDerivatives:()=>Dt,easings:()=>it,emitDevWarning:()=>j,emptySidecar:()=>mr,endReadPhase:()=>Mr,estimatingMeasurer:()=>vs,evaluate:()=>Ue,evaluateAt:()=>cs,filtersToCanvasFilter:()=>on,flatten:()=>wt,followPath:()=>la,fontString:()=>yn,formatColor:()=>Nt,formatDisplayDiff:()=>Yr,fromTRS:()=>fs,getLayoutEngine:()=>ni,getTimelineCallbacks:()=>Ar,getValueType:()=>at,glow:()=>Kr,hachureLines:()=>bs,hashKeys:()=>Ht,highlight:()=>Wo,inReadPhase:()=>Mo,inferValueType:()=>Ce,invert:()=>Wr,isDurationEditable:()=>dr,isEditableNodeId:()=>lt,isExemptFamily:()=>$r,key:()=>C,lerpColor:()=>he,listValueTypes:()=>Vt,matEquals:()=>Te,matchTokenRun:()=>$s,mediaPrefersReducedMotion:()=>_i,mergeSidecar:()=>wr,mergeSidecarDetailed:()=>ts,meshRasterSize:()=>Mi,migrateSidecar:()=>Zn,morph:()=>Ra,motionPath:()=>xt,mount:()=>zs,multiply:()=>mt,namedEasing:()=>st,normalizeEditedKeys:()=>br,numberType:()=>Rn,oklabToRgba:()=>Be,paintType:()=>jn,parseCmap:()=>Wt,parseColor:()=>de,parseDisplaySnapshot:()=>Ur,parseSvgPathData:()=>Fi,pathFromSegs:()=>ln,pathFromSvg:()=>Ya,pathLength:()=>aa,pathType:()=>_n,planReducedMotion:()=>qi,pointAtLength:()=>ca,popIn:()=>Pa,presence:()=>Ha,pulse:()=>Fa,quantize:()=>X,random:()=>ae,rasterizeMesh:()=>Si,registerValueType:()=>oe,reprOf:()=>Bt,requireLayoutEngine:()=>si,resolveAnchor:()=>xs,resolveEase:()=>Hn,resolveEaseDerivative:()=>Yn,resolveSketch:()=>gs,resolveTweenTarget:()=>ve,revealSchedule:()=>ei,rgbaToOklab:()=>Oe,roughen:()=>an,roundedRectSegs:()=>Ye,sampleTrack:()=>jt,scrollDriver:()=>ic,segmentGraphemes:()=>Me,segmentWords:()=>cn,serializeDisplayList:()=>Gr,setDefaultMeasurer:()=>Jr,setDevWarning:()=>rr,setLayoutEngine:()=>ti,setScheduler:()=>bo,setShaderRunner:()=>Ei,setSidecarTrack:()=>gr,signal:()=>P,sketchStrokes:()=>Qr,slideIn:()=>Da,spring:()=>fe,springEasing:()=>Pn,springEasingDerivative:()=>Dn,springPresets:()=>nr,springTo:()=>or,stagger:()=>_t,stringType:()=>Bn,swapOnHmr:()=>oc,synchronousScheduler:()=>rs,targetNodeId:()=>qe,textCursor:()=>Ho,timeline:()=>Do,tokenHighlight:()=>ua,track:()=>pe,transitionToClip:()=>Pi,typewriter:()=>Go,untracked:()=>To,validateFilters:()=>ps,validateFonts:()=>os,validateHachure:()=>ws,validateSceneFonts:()=>As,validateSketch:()=>ms,validateTrack:()=>ct,vec2ArcType:()=>zn,vec2Equals:()=>qt,vec2Signal:()=>je,vec2Type:()=>Nn,velocityAt:()=>Xn,withDeterminismGuards:()=>na});var At=2.5949095,Pt=2.70158,Ve=2*Math.PI/3,nt=2*Math.PI/4.5;function $t(e){return e<1/2.75?7.5625*e*e:e<2/2.75?7.5625*(e-=1.5/2.75)*e+.75:e<2.5/2.75?7.5625*(e-=2.25/2.75)*e+.9375:7.5625*(e-=2.625/2.75)*e+.984375}var it={linear:e=>e,easeInQuad:e=>e*e,easeOutQuad:e=>1-(1-e)*(1-e),easeInOutQuad:e=>e<.5?2*e*e:1-(-2*e+2)**2/2,easeInCubic:e=>e**3,easeOutCubic:e=>1-(1-e)**3,easeInOutCubic:e=>e<.5?4*e**3:1-(-2*e+2)**3/2,easeInQuart:e=>e**4,easeOutQuart:e=>1-(1-e)**4,easeInOutQuart:e=>e<.5?8*e**4:1-(-2*e+2)**4/2,easeInQuint:e=>e**5,easeOutQuint:e=>1-(1-e)**5,easeInOutQuint:e=>e<.5?16*e**5:1-(-2*e+2)**5/2,easeInSine:e=>1-Math.cos(e*Math.PI/2),easeOutSine:e=>Math.sin(e*Math.PI/2),easeInOutSine:e=>-(Math.cos(Math.PI*e)-1)/2,easeInExpo:e=>e===0?0:2**(10*e-10),easeOutExpo:e=>e===1?1:1-2**(-10*e),easeInOutExpo:e=>e===0?0:e===1?1:e<.5?2**(20*e-10)/2:(2-2**(-20*e+10))/2,easeInCirc:e=>1-Math.sqrt(1-e*e),easeOutCirc:e=>Math.sqrt(1-(e-1)*(e-1)),easeInOutCirc:e=>e<.5?(1-Math.sqrt(1-(2*e)**2))/2:(Math.sqrt(1-(-2*e+2)**2)+1)/2,easeInBack:e=>Pt*e**3-1.70158*e*e,easeOutBack:e=>1+Pt*(e-1)**3+1.70158*(e-1)**2,easeInOutBack:e=>e<.5?(2*e)**2*(3.5949095*2*e-At)/2:((2*e-2)**2*(3.5949095*(e*2-2)+At)+2)/2,easeInElastic:e=>e===0?0:e===1?1:-(2**(10*e-10))*Math.sin((e*10-10.75)*Ve),easeOutElastic:e=>e===0?0:e===1?1:2**(-10*e)*Math.sin((e*10-.75)*Ve)+1,easeInOutElastic:e=>e===0?0:e===1?1:e<.5?-(2**(20*e-10)*Math.sin((20*e-11.125)*nt))/2:2**(-20*e+10)*Math.sin((20*e-11.125)*nt)/2+1,easeInBounce:e=>1-$t(1-e),easeOutBounce:$t,easeInOutBounce:e=>e<.5?(1-$t(1-2*e))/2:(1+$t(2*e-1))/2};function Ot(e){return e<1/2.75?2*7.5625*e:e<2/2.75?2*7.5625*(e-1.5/2.75):e<2.5/2.75?2*7.5625*(e-2.25/2.75):2*7.5625*(e-2.625/2.75)}var be=Math.LN2,Dt={linear:()=>1,easeInQuad:e=>2*e,easeOutQuad:e=>2*(1-e),easeInOutQuad:e=>e<.5?4*e:4*(1-e),easeInCubic:e=>3*e**2,easeOutCubic:e=>3*(1-e)**2,easeInOutCubic:e=>e<.5?12*e**2:12*(1-e)**2,easeInQuart:e=>4*e**3,easeOutQuart:e=>4*(1-e)**3,easeInOutQuart:e=>e<.5?32*e**3:32*(1-e)**3,easeInQuint:e=>5*e**4,easeOutQuint:e=>5*(1-e)**4,easeInOutQuint:e=>e<.5?80*e**4:80*(1-e)**4,easeInSine:e=>Math.PI/2*Math.sin(e*Math.PI/2),easeOutSine:e=>Math.PI/2*Math.cos(e*Math.PI/2),easeInOutSine:e=>Math.PI/2*Math.sin(Math.PI*e),easeInExpo:e=>e===0?0:10*be*2**(10*e-10),easeOutExpo:e=>e===1?0:10*be*2**(-10*e),easeInOutExpo:e=>e===0||e===1?0:e<.5?10*be*2**(20*e-10):10*be*2**(-20*e+10),easeInCirc:e=>e/Math.sqrt(1-e*e),easeOutCirc:e=>(1-e)/Math.sqrt(1-(e-1)*(e-1)),easeInOutCirc:e=>e<.5?2*e/Math.sqrt(1-4*e*e):(2-2*e)/Math.sqrt(1-(-2*e+2)**2),easeInBack:e=>3*Pt*e**2-2*1.70158*e,easeOutBack:e=>3*Pt*(e-1)**2+2*1.70158*(e-1),easeInOutBack:e=>e<.5?12*3.5949095*e**2-4*At*e:3*3.5949095*(2*e-2)**2+2*At*(2*e-2),easeInElastic:e=>{if(e===0||e===1)return 0;let t=(e*10-10.75)*Ve,n=2**(10*e-10);return-(10*be*n*Math.sin(t)+n*10*Ve*Math.cos(t))},easeOutElastic:e=>{if(e===0||e===1)return 0;let t=(e*10-.75)*Ve,n=2**(-10*e);return-10*be*n*Math.sin(t)+n*10*Ve*Math.cos(t)},easeInOutElastic:e=>{if(e===0||e===1)return 0;let t=(20*e-11.125)*nt;if(e<.5){let s=2**(20*e-10);return-(20*be*s*Math.sin(t)+s*20*nt*Math.cos(t))/2}let n=2**(-20*e+10);return(-20*be*n*Math.sin(t)+n*20*nt*Math.cos(t))/2},easeInBounce:e=>Ot(1-e),easeOutBounce:Ot,easeInOutBounce:e=>e<.5?Ot(1-2*e):Ot(2*e-1)},Zs="easeInOutCubic";function er(e,t,n,s){let r=3*e-3*n+1,i=3*n-6*e,o=3*e,a=3*t-3*s+1,l=3*s-6*t,c=3*t,u=p=>((r*p+i)*p+o)*p,h=p=>((a*p+l)*p+c)*p,f=p=>(3*r*p+2*i)*p+o;return{sampleY:h,sampleDX:f,sampleDY:p=>(3*a*p+2*l)*p+c,solveU:p=>{let k=p;for(let m=0;m<8;m++){let b=u(k)-p;if(Math.abs(b)<1e-7)return k;let v=f(k);if(Math.abs(v)<1e-6)break;k-=b/v}let T=0,w=1;for(k=p;w-T>1e-7;)u(k)<p?T=k:w=k,k=(T+w)/2;return k}}}function On(e,t,n,s){let r=er(e,t,n,s);return i=>i<=0?0:i>=1?1:r.sampleY(r.solveU(i))}function Cn(e,t,n,s){let r=er(e,t,n,s);return i=>{let o=r.solveU(Math.min(1,Math.max(0,i))),a=r.sampleDX(o);return Math.abs(a)<1e-9?0:r.sampleDY(o)/a}}var An=class extends Error{constructor(e){super(`unknown easing '${e}'; register it via easings or use cubicBezier/spring`),this.name="UnknownEasingError"}};function st(e){let t=it[e];if(!t)throw new An(e);return t}var eo=.005;function ot(e){var n;let t=(n=e.mass)!=null?n:1;if(!(e.stiffness>0)||!(e.damping>0)||!(t>0))throw new RangeError("spring stiffness, damping, and mass must all be > 0");return{w0:Math.sqrt(e.stiffness/t),zeta:e.damping/(2*Math.sqrt(e.stiffness*t))}}function to(e,t){if(t<=0)return 0;let{w0:n,zeta:s}=ot(e);if(Math.abs(s-1)<1e-9)return n*n*t*Math.exp(-n*t);if(s<1){let a=n*Math.sqrt(1-s*s);return Math.exp(-s*n*t)*(n*n/a)*Math.sin(a*t)}let r=Math.sqrt(s*s-1),i=-n*(s-r),o=-n*(s+r);return i*o*(Math.exp(i*t)-Math.exp(o*t))/(i-o)}function rt(e,t){if(t<=0)return 0;let{w0:n,zeta:s}=ot(e);if(Math.abs(s-1)<1e-9)return 1-Math.exp(-n*t)*(1+n*t);if(s<1){let a=n*Math.sqrt(1-s*s);return 1-Math.exp(-s*n*t)*(Math.cos(a*t)+s*n/a*Math.sin(a*t))}let r=Math.sqrt(s*s-1),i=-n*(s-r),o=-n*(s+r);return 1+(o*Math.exp(i*t)-i*Math.exp(o*t))/(i-o)}function Rt(e,t){var a;let n=(a=t==null?void 0:t.settleTolerance)!=null?a:eo,{w0:s,zeta:r}=ot(e);if(r<1){let l=s*Math.sqrt(1-r*r),c=Math.sqrt(1+(r*s/l)**2);return Math.log(c/n)/(r*s)}let i=1/s;for(;1-rt(e,i)>n;)i*=2;let o=0;for(let l=0;l<64&&i-o>1e-9;l++){let c=(o+i)/2;1-rt(e,c)>n?o=c:i=c}return i}function tr(e,t,n){let s=Rt(e,n);return rt(e,Math.min(t,s))/rt(e,s)}function no(e,t,n){let{w0:s,zeta:r}=ot(e),i,o,a;if(Math.abs(r-1)<1e-9){let c=n+s*t;i=u=>u<=0?t:Math.exp(-s*u)*(t+c*u),o=u=>u<=0?n:Math.exp(-s*u)*(n-s*c*u),a=u=>Math.exp(-s*u)*(Math.abs(t)+Math.abs(c)*u)}else if(r<1){let c=s*Math.sqrt(1-r*r),u=(n+r*s*t)/c,h=Math.hypot(t,u);i=f=>f<=0?t:Math.exp(-r*s*f)*(t*Math.cos(c*f)+u*Math.sin(c*f)),o=f=>f<=0?n:Math.exp(-r*s*f)*(n*Math.cos(c*f)-(s*s*t+r*s*n)/c*Math.sin(c*f)),a=f=>Math.exp(-r*s*f)*h}else{let c=Math.sqrt(r*r-1),u=s*(-r+c),h=s*(-r-c),f=(n-h*t)/(u-h),d=(u*t-n)/(u-h);i=g=>g<=0?t:f*Math.exp(u*g)+d*Math.exp(h*g),o=g=>g<=0?n:f*u*Math.exp(u*g)+d*h*Math.exp(h*g),a=g=>Math.abs(f)*Math.exp(u*g)+Math.abs(d)*Math.exp(h*g)}return{value:i,velocity:o,settleTime:c=>{let u=c!=null?c:Math.abs(t)*.005+1e-6;if(a(0)<=u&&Math.abs(n)<1e-12)return 0;let h=1/s,f=0;for(;a(h)>u&&f++<64;)h*=2;let d=0;for(let g=0;g<64&&h-d>1e-9;g++){let p=(d+h)/2;Math.max(a(p),a(p*1.05+1e-6))>u?d=p:h=p}return h}}}var fe=Object.assign(e=>{var t;return ot(e),{kind:"spring",stiffness:e.stiffness,damping:e.damping,mass:(t=e.mass)!=null?t:1}},{duration:Rt,value:tr,retarget:no}),nr={default:{stiffness:170,damping:26},gentle:{stiffness:120,damping:14},wobbly:{stiffness:180,damping:12},stiff:{stiffness:210,damping:20},slow:{stiffness:280,damping:60},molasses:{stiffness:280,damping:120}};function Pn(e){let t=Rt(e);return n=>tr(e,n*t)}function Dn(e){let t=Rt(e),n=t/rt(e,t);return s=>s>=1?0:to(e,s*t)*n}var sr=e=>{var t;(t=globalThis.console)==null||t.warn(`[glissade] ${e}`)};function rr(e){sr=e}function j(e){sr(e)}var so=/^#([0-9a-f]{3}|[0-9a-f]{4}|[0-9a-f]{6}|[0-9a-f]{8})$/i,ro=/^rgba?\(\s*([\d.]+)\s*[, ]\s*([\d.]+)\s*[, ]\s*([\d.]+)\s*(?:[,/]\s*([\d.]+%?)\s*)?\)$/i,Fn=class extends Error{constructor(e){super(`cannot parse color '${e}' (supported: #rgb[a], #rrggbb[aa], rgb()/rgba())`),this.name="ColorParseError"}};function de(e){let t=so.exec(e);if(t){let s=t[1];s.length<=4&&(s=[...s].map(i=>i+i).join(""));let r=parseInt(s,16);return s.length===6?{r:r>>16,g:r>>8&255,b:r&255,a:1}:{r:r>>>24&255,g:r>>>16&255,b:r>>>8&255,a:(r&255)/255}}let n=ro.exec(e);if(n){let s=n[4],r=s===void 0?1:s.endsWith("%")?parseFloat(s)/100:parseFloat(s);return{r:parseFloat(n[1]),g:parseFloat(n[2]),b:parseFloat(n[3]),a:r}}throw new Fn(e)}function Nt(e){let t=i=>Math.min(255,Math.max(0,Math.round(i))),n=i=>t(i).toString(16).padStart(2,"0"),s=`#${n(e.r)}${n(e.g)}${n(e.b)}`,r=Math.min(1,Math.max(0,e.a));return r>=1?s:`${s}${n(r*255)}`}function En(e){let t=e/255;return t<=.04045?t/12.92:((t+.055)/1.055)**2.4}function In(e){return(e<=.0031308?e*12.92:1.055*e**(1/2.4)-.055)*255}function Oe(e){let t=En(e.r),n=En(e.g),s=En(e.b),r=Math.cbrt(.4122214708*t+.5363325363*n+.0514459929*s),i=Math.cbrt(.2119034982*t+.6806995451*n+.1073969566*s),o=Math.cbrt(.0883024619*t+.2817188376*n+.6299787005*s);return{L:.2104542553*r+.793617785*i-.0040720468*o,a:1.9779984951*r-2.428592205*i+.4505937099*o,b:.0259040371*r+.7827717662*i-.808675766*o,alpha:e.a}}function Be(e){let t=(e.L+.3963377774*e.a+.2158037573*e.b)**3,n=(e.L-.1055613458*e.a-.0638541728*e.b)**3,s=(e.L-.0894841775*e.a-1.291485548*e.b)**3;return{r:In(4.0767416621*t-3.3077115913*n+.2309699292*s),g:In(-1.2684380046*t+2.6097574011*n-.3413193965*s),b:In(-.0041960863*t-.7034186147*n+1.707614701*s),a:e.alpha}}function he(e,t,n){let s=Oe(de(e)),r=Oe(de(t)),i=(o,a)=>o+(a-o)*n;return Nt(Be({L:i(s.L,r.L),a:i(s.a,r.a),b:i(s.b,r.b),alpha:i(s.alpha,r.alpha)}))}var zt=new Map;function oe(e){zt.set(e.id,e)}var Ln=class extends Error{constructor(e){super(`unknown value type '${e}'; register it via registerValueType()`),this.name="UnknownValueTypeError"}};function at(e){let t=zt.get(e);if(!t)throw new Ln(e);return t}function Vt(){return[...zt.keys()]}function Bt(e){var t,n;return(n=(t=zt.get(e))==null?void 0:t.repr)!=null?n:e}var Rn={id:"number",lerp:(e,t,n)=>e+(t-e)*n,extrapolates:!0,equals:Object.is,add:(e,t)=>e+t,sub:(e,t)=>e-t,scale:(e,t)=>e*t,defaultHandoff:"spring"},qt=(e,t)=>e[0]===t[0]&&e[1]===t[1],Nn={id:"vec2",lerp:(e,t,n)=>[e[0]+(t[0]-e[0])*n,e[1]+(t[1]-e[1])*n],extrapolates:!0,equals:qt,add:(e,t)=>[e[0]+t[0],e[1]+t[1]],sub:(e,t)=>[e[0]-t[0],e[1]-t[1]],scale:(e,t)=>[e[0]*t,e[1]*t],defaultHandoff:"spring"},zn={id:"vec2-arc",repr:"vec2",lerp:(e,t,n)=>{let s=Math.hypot(e[0],e[1]),r=Math.hypot(t[0],t[1]),i=Math.atan2(e[1],e[0]),o=Math.atan2(t[1],t[0])-i;for(;o>Math.PI;)o-=2*Math.PI;for(;o<-Math.PI;)o+=2*Math.PI;let a=s+(r-s)*n,l=i+o*n;return[a*Math.cos(l),a*Math.sin(l)]},extrapolates:!0,equals:qt,defaultHandoff:"blend-from-frozen"},Vn={id:"color",lerp:he,extrapolates:!0,equals:(e,t)=>e===t,defaultHandoff:"blend-from-frozen"};function ir(e){return{id:e,lerp:(t,n,s)=>s>=1?n:t,extrapolates:!1,equals:(t,n)=>Object.is(t,n),defaultHandoff:"cut"}}var Bn=ir("string"),qn=ir("boolean"),$n=(e,t,n)=>[e[0]+(t[0]-e[0])*n,e[1]+(t[1]-e[1])*n];function Ys(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++){let s=e[n],r=t[n];if(s.closed!==r.closed||s.v.length!==r.v.length)return!1}return!0}var Xs=!1,_n={id:"path",lerp:(e,t,n)=>Ys(e,t)?e.map((s,r)=>{let i=t[r];return{closed:s.closed,v:s.v.map((o,a)=>$n(o,i.v[a],n)),in:s.in.map((o,a)=>$n(o,i.in[a],n)),out:s.out.map((o,a)=>$n(o,i.out[a],n))}}):(Xs||(Xs=!0,j("path lerp with mismatched topology (contour/vertex counts or closed flags differ): snapping instead of morphing \u2014 supply matched vertex counts (\xA72.2)")),n>=1?t:e),extrapolates:!1,equals:(e,t)=>{if(e===t)return!0;if(!Ys(e,t))return!1;let n=(s,r)=>s[0]===r[0]&&s[1]===r[1];return e.every((s,r)=>{let i=t[r];return s.v.every((o,a)=>n(o,i.v[a]))&&s.in.every((o,a)=>n(o,i.in[a]))&&s.out.every((o,a)=>n(o,i.out[a]))})},defaultHandoff:"blend-from-frozen"},Ft=(e,t,n)=>e+(t-e)*n,Ct=(e,t,n)=>[Ft(e[0],t[0],n),Ft(e[1],t[1],n)];function Gs(e){try{return Nt(R(M({},de(e)),{a:0}))}catch(t){return e}}function io(e,t,n){try{return he(e,t,n)}catch(s){return n>=1?t:e}}function Us(e,t){let n=t.stops.map(r=>({offset:r.offset,color:e})),s=t.interpolation?{interpolation:t.interpolation}:{};return t.kind==="radial"?M(M(M({kind:"radial",stops:n},t.center?{center:t.center}:{}),t.radius!==void 0?{radius:t.radius}:{}),s):M(M(M({kind:"linear",stops:n},t.from?{from:t.from}:{}),t.to?{to:t.to}:{}),s)}var Ks=!1;function tt(e,t,n,s="paint lerp across mismatched gradient shapes (different kind or stop count): snapping instead of interpolating \u2014 match the kind + stop count on both keyframes (\xA72.2)"){return Ks||(Ks=!0,j(s)),e>=1?n:t}var oo=(e,t)=>e.length===t.length&&e.every((n,s)=>n.offset===t[s].offset&&n.color===t[s].color),jn={id:"paint",lerp:(e,t,n)=>{var a,l,c,u;if(e.kind==="color"&&t.kind==="color")return{kind:"color",color:he(e.color,t.color,n)};if(e.kind==="mesh"&&t.kind==="mesh"){if(e.points.length!==t.points.length)return tt(n,e,t);if(e.interpolation!==t.interpolation)return tt(n,e,t,`paint lerp across mismatched mesh interpolation modes ('${(a=e.interpolation)!=null?a:"smooth"}' \u2192 '${(l=t.interpolation)!=null?l:"smooth"}'): snapping instead of interpolating \u2014 the blend kernel is discrete, so it switches once at the boundary; match \`interpolation\` on both keyframes to morph the points (\xA73 Paint)`);let h=e.points.map((d,g)=>{let p=t.points[g];return{pos:Ct(d.pos,p.pos,n),color:he(d.color,p.color,n)}}),f=e.bg!==void 0||t.bg!==void 0?{bg:io((c=e.bg)!=null?c:Gs(t.bg),(u=t.bg)!=null?u:Gs(e.bg),n)}:{};return M(M({kind:"mesh",points:h},e.interpolation?{interpolation:e.interpolation}:{}),f)}if(e.kind==="mesh"||t.kind==="mesh")return tt(n,e,t);let s=e,r=t;if(s.kind==="color"&&r.kind!=="color"?s=Us(s.color,r):r.kind==="color"&&s.kind!=="color"&&(r=Us(r.color,s)),s.kind==="color"||r.kind==="color"||s.kind!==r.kind||s.stops.length!==r.stops.length)return tt(n,e,t);let i=s.stops.map((h,f)=>({offset:Ft(h.offset,r.stops[f].offset,n),color:he(h.color,r.stops[f].color,n)})),o=s.interpolation?{interpolation:s.interpolation}:{};return s.kind==="radial"&&r.kind==="radial"?M(M(M({kind:"radial",stops:i},s.center&&r.center?{center:Ct(s.center,r.center,n)}:s.center?{center:s.center}:{}),s.radius!==void 0&&r.radius!==void 0?{radius:Ft(s.radius,r.radius,n)}:s.radius!==void 0?{radius:s.radius}:{}),o):s.kind==="linear"&&r.kind==="linear"?M(M(M({kind:"linear",stops:i},s.from&&r.from?{from:Ct(s.from,r.from,n)}:s.from?{from:s.from}:{}),s.to&&r.to?{to:Ct(s.to,r.to,n)}:s.to?{to:s.to}:{}),o):tt(n,e,t)},extrapolates:!1,equals:(e,t)=>e===t?!0:e.kind!==t.kind?!1:e.kind==="color"?t.kind==="color"&&e.color===t.color:e.kind==="mesh"?t.kind!=="mesh"||e.interpolation!==t.interpolation||e.bg!==t.bg||e.points.length!==t.points.length?!1:e.points.every((n,s)=>{let r=t.points[s];return n.color===r.color&&n.pos[0]===r.pos[0]&&n.pos[1]===r.pos[1]}):t.kind==="color"||t.kind==="mesh"||!oo(e.stops,t.stops)||e.interpolation!==t.interpolation?!1:e.kind==="radial"&&t.kind==="radial"?JSON.stringify(e.center)===JSON.stringify(t.center)&&e.radius===t.radius:e.kind==="linear"&&t.kind==="linear"?JSON.stringify(e.from)===JSON.stringify(t.from)&&JSON.stringify(e.to)===JSON.stringify(t.to):!1,defaultHandoff:"blend-from-frozen"},Wn=class extends Error{constructor(e){super(`cannot infer a value type for ${JSON.stringify(e)}; register a custom type`),this.name="ValueTypeInferenceError"}},ao=e=>typeof e=="object"&&e!==null&&typeof e.closed=="boolean"&&Array.isArray(e.v)&&Array.isArray(e.in)&&Array.isArray(e.out),co=e=>typeof e=="object"&&e!==null&&(e.kind==="color"||e.kind==="linear"||e.kind==="radial"||e.kind==="mesh");function Ce(e){if(typeof e=="number")return"number";if(typeof e=="boolean")return"boolean";if(co(e))return"paint";if(Array.isArray(e)&&e.length===2&&e.every(t=>typeof t=="number"))return"vec2";if(Array.isArray(e)&&e.length>0&&e.every(ao))return"path";if(typeof e=="string")try{return de(e),"color"}catch(t){return"string"}throw new Wn(e)}oe(Rn);oe(Nn);oe(zn);oe(Vn);oe(Bn);oe(qn);oe(_n);oe(jn);var ke=class extends Error{constructor(e,t){super(`track '${e}': ${t}`),this.name="TrackValidationError"}};function ct(e){let t=at(e.type);if(e.keys.length===0)throw new ke(e.target,"must have at least one key");if(t.defaultHandoff==="cut")for(let n of e.keys)n.interp!=="hold"&&(n.interp="hold");for(let n=1;n<e.keys.length;n++){let s=e.keys[n-1],r=e.keys[n];if(r.t<=s.t)throw new ke(e.target,`keys must be strictly increasing in t (key[${n}] at t=${r.t} after t=${s.t})`)}if(!/^[^/]+\/.+$/.test(e.target))throw new ke(e.target,"target must be '<nodeId>/<prop.path>' (e.g. 'circle/opacity')")}function C(e,t,n){if(n===void 0)return{t:e,value:t};if(typeof n=="string"||"kind"in n)return{t:e,value:t,ease:n};let s=n,r={t:e,value:t};return s.ease!==void 0&&(r.ease=s.ease),s.interp!==void 0&&(r.interp=s.interp),s.id!==void 0&&(r.id=s.id),s.derived!==void 0&&(r.derived=s.derived),r}function or(e,t,n,s){let r=fe.duration(s);if(e-r<0)throw new ke("springTo",`this spring needs ${r.toFixed(3)}s to settle \u2014 endT must be \u2265 its duration (got ${e})`);return[C(e-r,t),C(e,n,fe(s))]}function _t(e,t){let n=typeof t=="function"?t:s=>s*t;return e.map((s,r)=>{let i=n(r);return R(M({},s),{keys:s.keys.map(o=>R(M({},o),{t:o.t+i}))})})}function pe(e,t,n,s){let r={target:e,type:t,keys:n};return(s==null?void 0:s.editable)!==void 0&&(r.editable=s.editable),ct(r),r}function Hn(e){return e===void 0?st("linear"):typeof e=="string"?st(e):e.kind==="cubicBezier"?On(...e.pts):Pn(e)}var Qs=new Set;function Yn(e){if(e===void 0)return Dt.linear;if(typeof e=="string"){let t=Dt[e];if(t)return t;let n=st(e);Qs.has(e)||(Qs.add(e),j(`easing '${e}' has no registered derivative; velocity uses a numeric fallback \u2014 register one in easingDerivatives for exact interruption handoff`));let s=1/1024;return r=>(n(Math.min(1,r+s))-n(Math.max(0,r-s)))/(Math.min(1,r+s)-Math.max(0,r-s))}return e.kind==="cubicBezier"?Cn(...e.pts):Dn(e)}var Js=new WeakMap;function ar(e){let t=Js.get(e);return t||(t={cursor:1,easeCache:new Array(e.keys.length)},Js.set(e,t)),t}function cr(e,t,n){let s=t.easeCache[n];return s||(s=Hn(e.keys[n].ease),t.easeCache[n]=s),s}function lr(e,t,n){let s=e.length;for(let o=Math.max(1,n-1);o<=Math.min(s-1,n+1);o++)if(e[o-1].t<=t&&t<e[o].t)return o;if(t<e[0].t)return 0;if(t>=e[s-1].t)return s;let r=1,i=s-1;for(;r<i;){let o=r+i>>1;e[o].t<=t?r=o+1:i=o}return r}function Xn(e,t){let n=at(e.type);if(!n.sub||!n.scale)return null;let s=e.keys,r=s.length,i=ar(e),o=lr(s,t,i.cursor),a=n.scale(n.sub(s[0].value,s[0].value),0);if(o===0||o>=r)return a;let l=s[o];if(l.interp==="hold")return a;let c=s[o-1],u=l.t-c.t,h=(t-c.t)/u;if(!n.extrapolates){let d=cr(e,i,o)(h);if(d<0||d>1)return a}let f=Yn(l.ease)(h);return n.scale(n.sub(l.value,c.value),f/u)}function jt(e,t){let n=e.keys,s=n.length,r=ar(e),i=lr(n,t,r.cursor);if(i===0)return n[0].value;if(i>=s)return n[s-1].value;r.cursor=i;let o=n[i],a=n[i-1];if(o.interp==="hold")return a.value;let l=at(e.type),c=(t-a.t)/(o.t-a.t),u=cr(e,r,i)(c);return!l.extrapolates&&(u<0||u>1)&&(r.warnedClamp||(r.warnedClamp=!0,j(`track '${e.target}' (type '${e.type}') clamped an out-of-range eased value \u2014 non-extrapolating types can't overshoot, so a spring/overshooting ease on this track is flattened`)),u=Math.min(1,Math.max(0,u))),l.lerp(a.value,o.value,u)}var Ae=Symbol.for("glissade.targetPath"),Lt=class extends Error{constructor(e){super(e!=null?e:'tween target is not addressable: pass a target string ("node/prop") or a property signal of a node that has an explicit id (\xA73.1 \u2014 anonymous nodes cannot be track targets)'),this.name="UnresolvableTargetError"}};function qe(e){let t=e.indexOf("/");return t<0?e:e.slice(0,t)}function lt(e){return typeof e=="string"&&e.length>0&&e!=="__root"&&!e.startsWith("~")}function ve(e){let t=typeof e=="string"?e:e[Ae];if(typeof t!="string")throw new Lt;if(qe(t).startsWith("~"))throw new Lt(`'${t}': structural ids (~Type.ordinal) are inspection-only and cannot be track targets (\xA76.5) \u2014 give the node an explicit id`);return t}function te(e,t){return t+2<=e.byteLength?e.getUint16(t):0}function me(e,t){return t+4<=e.byteLength?e.getUint32(t):0}function lo(e,t){return e===3&&t===10||e===0&&t>=4?5:e===3&&t===1||e===0?3:0}function uo(e,t,n){let s=te(e,t+6),r=s>>1,i=t+14,o=i+s+2,a=o+s,l=a+s;for(let c=0;c<r;c++){let u=te(e,i+c*2),h=te(e,o+c*2);if(h>u)continue;let f=te(e,a+c*2),d=te(e,l+c*2);for(let g=h;g<=u;g++){if(g===65535)continue;let p;if(d===0)p=g+f&65535;else{let k=te(e,l+c*2+d+(g-h)*2);p=k===0?0:k+f&65535}p!==0&&n.add(g)}}}function ho(e,t,n){let s=me(e,t+12),r=Math.max(0,Math.floor((e.byteLength-(t+16))/12)),i=Math.min(s,r),o=t+16;for(let a=0;a<i;a++,o+=12){let l=me(e,o),c=me(e,o+4),u=me(e,o+8);if(!(l>c)&&!(c-l>2097152))for(let h=l;h<=c;h++)u+(h-l)!==0&&n.add(h)}}function Wt(e){let t=new Set;try{let n=ArrayBuffer.isView(e)?new DataView(e.buffer,e.byteOffset,e.byteLength):new DataView(e);if(n.byteLength<12)return t;let s=0;me(n,0)===1953784678&&(s=me(n,12));let r=te(n,s+4),i=0;for(let u=0;u<r;u++){let h=s+12+u*16;if(me(n,h)===1668112752){i=me(n,h+8);break}}if(i===0)return t;let o=te(n,i+2),a=0,l=-1;for(let u=0;u<o;u++){let h=i+4+u*8,f=te(n,h),d=te(n,h+2),g=i+me(n,h+4),p=lo(f,d);p>l&&g+2<=n.byteLength&&(l=p,a=g)}if(l<0)return t;let c=te(n,a);c===4?uo(n,a,t):c===12&&ho(n,a,t)}catch(n){return t}return t}function Gn(e){var n;let t={version:1,tracks:(n=e.tracks)!=null?n:[]};return e.duration!==void 0&&(t.duration=e.duration),e.editableDuration!==void 0&&(t.editableDuration=e.editableDuration),e.fps!==void 0&&(t.fps=e.fps),e.posterTime!==void 0&&(t.posterTime=e.posterTime),e.labels!==void 0&&(t.labels=e.labels),e.markers!==void 0&&(t.markers=e.markers),e.children!==void 0&&(t.children=e.children),e.audio!==void 0&&(t.audio=e.audio),e.assets!==void 0&&(t.assets=e.assets),t}var G=class extends Error{constructor(e){super(e),this.name="TimelineValidationError"}};function fo(e){for(let t=1;t<e.keys.length;t++){let n=e.keys[t];if(n.ease&&typeof n.ease=="object"&&n.ease.kind==="spring"){let s=e.keys[t-1].t+fe.duration(n.ease);if(Math.abs(n.t-s)>1e-6)throw new G(`track '${e.target}': spring-eased key at t=${n.t} must sit at prev.t + spring.duration (${s.toFixed(6)}); the builder computes this automatically`)}}}function hr(e,t=48e3){return Math.round(e*t)}function po(e,t,n){return e.map(s=>R(M({},s),{t:t+s.t/n}))}function Un(e){return`c${e}/`}var mo=/(^|\/)call:\d+$/;function Kn(e,t){return t!==""&&mo.test(e)?t+e:e}function fr(e,t,n,s,r,i){var o,a;for(let l of e.tracks)ct(l),fo(l),r.push({track:R(M({},l),{keys:po(l.keys,t,n)}),unit:s});for(let l of(o=e.children)!=null?o:[]){let c=l.mode==="sync"&&(a=l.timeScale)!=null?a:1;if(l.mode==="add"&&l.timeScale!==void 0)throw new G("timeScale is only valid on mode:'sync' children (\xA72.3)");if(c<=0)throw new G("sync timeScale must be > 0");let u=l.mode==="sync"?++i.n:s;fr(l.timeline,t+l.at/n,n*c,u,r,i)}}function go(e){let t=new Map;for(let{track:s,unit:r}of e){let i=t.get(s.target);if(!i){t.set(s.target,{track:R(M({},s),{keys:[...s.keys]}),unit:r});continue}if(i.unit!==r)throw new G(`target '${s.target}' is animated by a sync (opaque) child and another timeline unit; sync children must own disjoint targets (no last-writer-wins across the sync boundary, \xA72.3)`);if(i.track.type!==s.type)throw new G(`target '${s.target}' has conflicting value types '${i.track.type}' and '${s.type}'`);let o=s.keys[0].t,a=s.keys[s.keys.length-1].t,l=i.track.keys[0].t,c=i.track.keys[i.track.keys.length-1].t,u=i.track.keys.filter(h=>h.t<o||h.t>a);l<=a&&o<=c&&j(`overlapping tracks for '${s.target}' in [${o}, ${a}]: later insertion wins (${i.track.keys.length-u.length} earlier key(s) dropped)`),i.track.keys=[...u,...s.keys].sort((h,f)=>h.t-f.t)}let n=new Map;for(let[s,{track:r}]of t)n.set(s,r);return n}function dr(e){return e.editableDuration===!0}function yo(e){var n;let t=e.mode==="sync"&&(n=e.timeScale)!=null?n:1;return e.at+pr(e.timeline)/t}function pr(e){var n,s;if(e.duration!==void 0)return e.duration;let t=0;for(let r of e.tracks){let i=r.keys[r.keys.length-1];i&&(t=Math.max(t,i.t))}for(let r of(n=e.markers)!=null?n:[])t=Math.max(t,r.t);for(let r of(s=e.children)!=null?s:[])t=Math.max(t,yo(r));return t}function ne(e){var a,l;if(e.version!==1)throw new G(`unsupported timeline document version ${String(e.version)}`);let t=[];fr(e,0,1,0,t,{n:0});let n=go(t),s=M({},e.labels),r=[...(a=e.markers)!=null?a:[]],i=[...(l=e.audio)!=null?l:[]],o=(c,u,h,f)=>{(c!=null?c:[]).forEach((d,g)=>{var w,m,b,v,I;let p=u+d.at/h,k=h*(d.mode==="sync"&&(w=d.timeScale)!=null?w:1),T=f+Un(g);for(let[y,x]of Object.entries((m=d.timeline.labels)!=null?m:{}))y in s||(s[y]=p+x/k);for(let y of(b=d.timeline.markers)!=null?b:[])r.push(R(M({},y),{name:Kn(y.name,T),t:p+y.t/k}));for(let y of(v=d.timeline.audio)!=null?v:[])i.push(M(R(M({},y),{at:p+y.at/k}),k!==1?{playbackRate:((I=y.playbackRate)!=null?I:1)*k}:{}));o(d.timeline.children,p,k,T)})};return o(e.children,0,1,""),r.sort((c,u)=>c.t-u.t),i.sort((c,u)=>c.at-u.at),{duration:pr(e),labels:s,markers:r,tracks:n,audio:i}}var Qn="main",Jn=class extends Error{constructor(e){super(`unsupported sidecar version ${String(e)}; this build reads sidecarVersion 1 or 2`),this.name="SidecarVersionError"}};function mr(){return{sidecarVersion:2,timelines:{[Qn]:{tracks:{}}}}}function Zn(e){if(!e)return null;if(e.sidecarVersion===2)return e;if(e.sidecarVersion===1){let t={};for(let s of e.tracks)t[s.target]={type:s.type,baseHash:null,keys:s.keys};let n={tracks:t};return e.labels&&(n.labels=e.labels),{sidecarVersion:2,timelines:{[Qn]:n}}}throw new Jn(e.sidecarVersion)}function Ht(e){let t=JSON.stringify(e.map(s=>{var r,i;return[s.t,s.value,(r=s.ease)!=null?r:null,(i=s.interp)!=null?i:null]})),n=2166136261;for(let s=0;s<t.length;s++)n^=t.charCodeAt(s),n=Math.imul(n,16777619);return(n>>>0).toString(16)}function es(e){let t=-1;for(let n of e){let s=n.id?/^k(\d+)$/.exec(n.id):null;s&&(t=Math.max(t,Number(s[1])))}return e.map(n=>n.id?M({},n):R(M({},n),{id:`k${++t}`}))}function gr(e,t,n,s,r,i){var l;if(!lt(qe(n)))throw new ke(n,"structural/un-id'd nodes cannot host editor tracks (\xA76.5) \u2014 only nodes with an explicit id");let o=(l=e.timelines[t])!=null?l:{tracks:{}},a={type:s,baseHash:i?Ht(i):null,keys:es(r)};return R(M({},e),{timelines:R(M({},e.timelines),{[t]:R(M({},o),{tracks:R(M({},o.tracks),{[n]:a})})})})}function yr(e,t,n){let s=e.timelines[t];if(!s||!(n in s.tracks))return e;let o=s.tracks,{[n]:r}=o,i=ze(o,[Hs(n)]);return R(M({},e),{timelines:R(M({},e.timelines),{[t]:R(M({},s),{tracks:i})})})}function ur(e){return e.some(t=>t.derived)?e.map((t,n)=>t.derived&&n>0?R(M({},t),{value:e[n-1].value}):t):e}function ts(e,t){var c,u,h;let n=Zn(t);if(!n)return{timeline:e,drift:[],orphans:{}};let s=(c=n.timelines[Qn])!=null?c:{tracks:{}},r=new Map(Object.entries(s.tracks)),i=[],o=M({},(u=s.orphans)!=null?u:{}),a=e.tracks.map(f=>{let d=r.get(f.target);return d?(r.delete(f.target),d.type!==f.type?(o[f.target]={type:d.type,keys:d.keys,reason:"type-changed"},f):(d.baseHash!==null&&d.baseHash!==Ht(f.keys)&&i.push(f.target),R(M({},f),{keys:ur(d.keys.map(g=>M({},g))),editable:!0}))):f});for(let[f,d]of r)d.baseHash!==null?o[f]={type:d.type,keys:d.keys,reason:"prop-missing"}:a.push({target:f,type:d.type,keys:ur(d.keys.map(g=>M({},g))),editable:!0});let l=R(M({},e),{tracks:a});if(s.labels&&Object.keys(s.labels).length>0){let f=(h=e.labels)!=null?h:{},d=Object.keys(s.labels).filter(g=>g in f);d.length&&j(`sidecar label(s) ${d.join(", ")} collide with code labels; code wins (\xA76.2)`),l.labels=M(M({},s.labels),f)}return i.length&&j(`sidecar: code baseline changed beneath edits on ${i.join(", ")} (\xA76.2)`),{timeline:l,drift:i,orphans:o}}function wr(e,t){return ts(e,t).timeline}function br(e){let t=e.map(n=>M({},n)).sort((n,s)=>n.t-s.t);for(let n=0;n<2;n++){for(let s=1;s<t.length;s++){let r=t[s].ease;r&&typeof r=="object"&&r.kind==="spring"&&(t[s].t=t[s-1].t+fe.duration(r))}t.sort((s,r)=>s.t-r.t)}for(let n=1;n<t.length;n++)t[n].t<=t[n-1].t&&(t[n].t=t[n-1].t+.001);return t}var rs=e=>e(),ns=rs,Pe=new Set,Ut=0,_e=!1,ht=!1,wo=1e3;function bo(e){let t=ns;return ns=e!=null?e:rs,ht&&!_e&&(ht=!1,Pe.size>0&&is()),t}function ko(e){Pe.add(e),is()}function is(){Ut>0||_e||ht||(ht=!0,ns(vo))}function vo(){ht=!1,!_e&&xo()}function xo(){if(_e)return;_e=!0;let e;try{let t=0;for(;Pe.size>0;){if(++t>wo)throw Pe.clear(),new Error("signal notification flush did not settle within 1000 passes: a subscriber is writing to a signal it observes (DESIGN.md \xA76.1).");let n=[...Pe];Pe.clear();for(let s of n)try{s()}catch(r){e!=null||(e={err:r})}}}finally{_e=!1}if(e)throw e.err}function Yt(){Ut++}function Xt(){Ut--,Ut===0&&Pe.size>0&&is()}function So(e){Yt();try{return e()}finally{Xt()}}var xe=null,De=0,Gt=class extends Error{constructor(){super("signal.set() during evaluation: the read phase is pure (DESIGN.md \xA72.1). Drivers write the playhead before evaluation begins; stateful animation belongs in bake()."),this.name="WriteDuringEvaluationError"}},xr=class extends Error{constructor(){super("circular signal dependency detected"),this.name="CircularDependencyError"}};function Sr(){De++}function Mr(){if(De===0)throw new Error("endReadPhase() without matching beginReadPhase()");De--}function Mo(){return De>0}var Tr=class{constructor(e){S(this,"value");S(this,"fn");S(this,"equals");S(this,"version",0);S(this,"state");S(this,"computing",!1);S(this,"deps",[]);S(this,"depVersions",[]);S(this,"dependents",new Set);S(this,"subscribers",new Set);var t,n;this.fn=(t=e.fn)!=null?t:null,this.value=e.value,this.equals=(n=e.equals)!=null?n:Object.is,this.state=this.fn?2:0}get(){return xe&&xe.addDep(this),this.updateIfNecessary(),this.value}peek(){return this.updateIfNecessary(),this.value}set(e){if(De>0)throw new Gt;Yt();try{this.fn&&this.detachFn(),this.writeValue(e)}finally{Xt()}}forceSet(e){Yt();try{this.fn&&this.detachFn(),this.writeValue(e)}finally{Xt()}}bindSource(e){if(De>0)throw new Gt;Yt();try{this.fn=e,this.state=2,this.invalidateDependents(2)}finally{Xt()}}unbindSource(){if(De>0)throw new Gt;this.fn&&(this.updateIfNecessary(),this.detachFn())}get isBound(){return this.fn!==null}subscribe(e){return this.subscribers.add(e),()=>this.subscribers.delete(e)}addDep(e){this.deps[this.deps.length-1]!==e&&(this.deps.push(e),this.depVersions.push(-1),e.dependents.add(this))}detachFn(){this.fn=null,this.clearDeps(),this.state=0}writeValue(e){(this.version>0||this.value!==void 0)&&this.equals(this.value,e)||(this.value=e,this.version++,this.invalidateDependents(2))}invalidateDependents(e){for(let t of[...this.dependents])t.markStale(e);if(this.subscribers.size>0)for(let t of[...this.subscribers])ko(t)}markStale(e){if(this.state>=e)return;let t=this.state===0;this.state=e,t&&this.invalidateDependents(1)}updateIfNecessary(){if(!(this.fn===null||this.state===0)){if(this.computing)throw new xr;if(this.state===1){this.state=0;for(let e=0;e<this.deps.length;e++){let t=this.deps[e];if(t.updateIfNecessary(),t.version!==this.depVersions[e]){this.state=2;break}}}this.state===2&&this.recompute(),this.state=0}}recompute(){this.clearDeps();let e=xe;xe=this,this.computing=!0;let t;try{t=this.fn()}finally{this.computing=!1,xe=e}for(let n=0;n<this.deps.length;n++)this.depVersions[n]=this.deps[n].version;(!(this.version>0||this.value!==void 0)||!this.equals(this.value,t))&&(this.value=t,this.version++)}clearDeps(){for(let e of this.deps)e.dependents.delete(this);this.deps=[],this.depVersions=[]}};function Er(e,t){let n=(()=>e.get());return n.peek=()=>e.peek(),n.subscribe=s=>e.subscribe(s),t(n),n}function P(e,t){let n=new Tr({value:e,equals:t==null?void 0:t.equals});return Er(n,s=>{s.set=r=>n.set(r),s.forceSet=r=>n.forceSet(r),s.bindSource=r=>n.bindSource(r),s.unbindSource=()=>n.unbindSource(),Object.defineProperty(s,"isBound",{get:()=>n.isBound})})}function ft(e,t){return Er(new Tr({fn:e,equals:t==null?void 0:t.equals}),()=>{})}function To(e){let t=xe;xe=null;try{return e()}finally{xe=t}}function je(e){let[t,n]=Array.isArray(e)?e:[e.x,e.y],s=P(t),r=P(n);s.expects="number",r.expects="number";let i=P(null,{equals:(u,h)=>u===null||h===null?u===h:u[0]===h[0]&&u[1]===h[1]}),o=P(t),a=P(n);s.bindSource(()=>{let u=i();return u===null?o():u[0]}),r.bindSource(()=>{let u=i();return u===null?a():u[1]});let l=ft(()=>[s(),r()],{equals:(u,h)=>u[0]===h[0]&&u[1]===h[1]}),c=(()=>l());return c.peek=()=>l.peek(),c.subscribe=u=>l.subscribe(u),c.set=u=>{i.set(null),o.set(u[0]),a.set(u[1])},c.bindSource=u=>i.bindSource(()=>u()),c.unbindSource=()=>{i.unbindSource(),i.set(null)},c.expects="vec2",Object.defineProperty(c,"x",{value:s,enumerable:!0}),Object.defineProperty(c,"y",{value:r,enumerable:!0}),c}function Eo(e,t){return t.faces&&t.faces.length>0?t.faces.map(n=>{var s,r;return{family:e,url:n.url,weight:(s=n.weight)!=null?s:400,style:(r=n.style)!=null?r:"normal"}}):[{family:e,url:t.url,weight:400,style:"normal"}]}function Io(e,t){let n,s=Number.POSITIVE_INFINITY;for(let r of e){let i=Math.abs(r.weight-t);(i<s||i===s&&n!==void 0&&r.weight<n.weight)&&(n=r,s=i)}return n}function dt(e){let t=new Map;for(let[n,s]of Object.entries(e!=null?e:{}))s.kind==="font"&&t.set(n,{faces:Eo(n,s),fallback:s.fallback?[...s.fallback]:[]});return{has(n){return t.has(n)},faces(){let n=[];for(let s of t.values())n.push(...s.faces);return n},resolveFace(n,s=400,r="normal"){let i=t.get(n);if(!i)return;let o=i.faces.filter(a=>a.style===r);return Io(o.length>0?o:i.faces,s)},fallbackChain(n){let s=t.get(n);return s?[n,...s.fallback]:[n]}}}var Ir=class extends Error{constructor(t){super(Or(t));S(this,"report");this.name="FontValidationError",this.report=t}},$o=new Set(["serif","sans-serif","monospace","cursive","fantasy","system-ui","ui-serif","ui-sans-serif","ui-monospace","ui-rounded","math","emoji","fangsong"]);function $r(e,t){var s;let n=e.trim().toLowerCase();return $o.has(n)?!0:(s=t==null?void 0:t.has(n))!=null?s:!1}function Oo(e){let t=[];for(let n of e){let s=n.codePointAt(0);s!==void 0&&t.push(s)}return t}function Or(e){let t=[];e.unregistered.length>0&&t.push(`unregistered font ${e.unregistered.length===1?"family":"families"}: ${e.unregistered.join(", ")}`);for(let n of e.missingGlyphs){let s=n.codePoints.map(r=>"U+"+r.toString(16).toUpperCase().padStart(4,"0")).join(", ");t.push(`family '${n.family}' is missing glyphs for ${s}`)}return"font validation failed (\xA73.6): "+t.join("; ")+" \u2014 register the family with its faces/fallback, or supply covering glyphs"}function os(e,t,n,s,r={}){let i=new Set,o=new Map;for(let l of e){let c=l.family,u=$r(c,r.osFamilies);if(!t.has(c)){u||i.add(c);continue}let h=t.fallbackChain(c);for(let f of Oo(l.text))if(!h.some(d=>{var g,p;return(p=(g=n.get(d))==null?void 0:g.has(f))!=null?p:!1})){let d=o.get(c);d||(d=new Set,o.set(c,d)),d.add(f)}}let a={unregistered:[...i].sort(),missingGlyphs:[...o.entries()].map(([l,c])=>({family:l,codePoints:[...c].sort((u,h)=>u-h)})).sort((l,c)=>l.family<c.family?-1:l.family>c.family?1:0)};if(!(a.unregistered.length===0&&a.missingGlyphs.length===0)){if(s==="strict")throw new Ir(a);j(Or(a))}return a}var ss=class extends Error{constructor(e,t){super(`invalid position '${e}': ${t}`),this.name="PositionError"}};function ut(e,t,n){let s=new Set(n),r=Object.keys(t).filter(i=>!s.has(i));if(r.length>0)throw new G(`${e}: unknown option${r.length>1?"s":""} ${r.map(i=>`'${i}'`).join(", ")} \u2014 known: ${n.map(i=>`'${i}'`).join(", ")}`)}var kr=["duration","ease","at","from"],Co=["at"],Ao=["to","from","duration","ease"],Po=["each","anchor","at"];function vr(e){return typeof e!="string"&&typeof e.peek=="function"?e.peek():void 0}var Cr=new WeakMap;function Ar(e){var t;return(t=Cr.get(e))!=null?t:new Map}function Pr(e,t={}){var T;let n=[],s=[],r=M({},t.labels),i=[],o=[],a=new Map,l=!1,c=0,u=0,h=0;function f(w){if(w===void 0)return u;if(typeof w=="number")return w;if(w==="<")return c;if(w===">")return u;let m=/^([+-])=([\d.]+)$/.exec(w);if(m)return u+(m[1]==="+"?1:-1)*parseFloat(m[2]);let b=/^([^+\-=]+?)(?:([+-])=([\d.]+))?$/.exec(w);if(b){let v=b[1];if(!(v in r))throw new ss(w,`unknown label '${v}' (labels must be declared before use)`);let I=b[2]?(b[2]==="+"?1:-1)*parseFloat(b[3]):0;return r[v]+I}throw new ss(w,"expected a number, '<', '>', '+=x', '-=x', or 'label[+=x]'")}let d={to(w,m,b={}){var $,D;ut("to",b,kr);let v=($=b.ease)!=null?$:"easeInOutCubic",I=typeof v=="object"&&v.kind==="spring",y=I?fe.duration(v):(D=b.duration)!=null?D:1;if(I&&b.duration!==void 0)throw new G("a spring ease determines its duration (spring.duration(cfg)); do not pass duration with a spring");let x=f(b.at),E={kind:"tween",target:ve(w),value:m,duration:y,ease:v,at:b.at,baseValue:vr(w),editable:!1,start:x};return b.from!==void 0&&(E.explicitFrom=b.from),n.push(E),c=x,u=x+y,d},fromTo(w,m,b,v={}){return ut("fromTo",v,kr),d.to(w,b,v),n[n.length-1].explicitFrom=m,d},stagger(w,m,b){var et;ut("stagger spec",m,Ao),ut("stagger opts",b,Po);let v=w.length,I=f(b.at),y=(v-1)/2,{anchor:x="start",each:E}=b,$=O=>{if(!Number.isFinite(O))throw new G(`stagger: non-finite each/anchor (${String(O)})`);return O};typeof x=="number"&&$(x),typeof E=="number"&&$(E);let D=O=>x==="start"?O:x==="end"?v-1-O:Math.round(x==="center"?Math.abs(O-y):x==="edges"?y-Math.abs(O-y):Math.abs(O-x)),N=O=>$(typeof E=="function"?E(O,v):O*E),V=m.ease,U=typeof V=="object"&&V!==null&&V.kind==="spring"?fe.duration(V):(et=m.duration)!=null?et:1,Ze=O=>M(M({at:I+O},m.duration!==void 0?{duration:m.duration}:{}),m.ease!==void 0?{ease:m.ease}:{}),Re=0,Ne=0;for(let O=0;O<v;O++){let A=N(D(O));(O===0||A<Re)&&(Re=A),(O===0||A>Ne)&&(Ne=A);let L=I+A;if(L<0)throw new G(`stagger: target would land at t=${L} (< 0); shift opts.at`);let B=w[O],_=typeof m.to=="function"?m.to(O,v):m.to;if(m.from!==void 0){let K=typeof m.from=="function"?m.from(O,v):m.from;d.fromTo(B,K,_,Ze(A))}else d.to(B,_,Ze(A))}return v>0&&(c=I+Re,u=I+Ne+U),d},set(w,m,b={}){ut("set",b,Co);let v=f(b.at);return n.push({kind:"set",target:ve(w),value:m,duration:0,ease:"linear",at:b.at,baseValue:vr(w),editable:!1,start:v}),c=v,u=v,d},tracks(w){for(let m of w)s.push(m);return d},label(w,m){return r[w]=m===void 0?u:f(m),d},add(w,m,b={}){var D,N;let v=m===void 0?u:f(m),I=(D=b.mode)!=null?D:"add",y={timeline:w,at:v,mode:I,_pos:m};b.timeScale!==void 0&&(y.timeScale=b.timeScale);let x=i.length;i.push(y);let E=Un(x);for(let[V,U]of Ar(w))a.set(Kn(V,E),U);let $=I==="sync"&&(N=b.timeScale)!=null?N:1;return c=v,u=v+ne(w).duration/$,d},sequence(w,m={}){var I;let b=(I=m.gap)!=null?I:0,v=b<0?`-=${-b}`:`+=${b}`;for(let y=0;y<w.length;y++)d.add(w[y],y===0?void 0:v);return d},at(w,m){return d.add(m,w)},call(w,m){let b=m===void 0?u:f(m),v=`call:${h++}`;return o.push({t:b,name:v}),a.set(v,w),d},cue(w,m,b){let v=b!=null&&typeof b=="object"&&!Array.isArray(b)?M({kind:"cue"},b):{kind:"cue"};return o.push({t:f(w),name:m,data:v}),d},adBreak(w,m={}){var v;let b=M({kind:"ad-break"},m.duration!==void 0?{duration:m.duration}:{});return o.push({t:f(w),name:(v=m.id)!=null?v:"ad-break",data:b}),d},editable(){let w=n[n.length-1];if(!w)throw new G(".editable() requires a preceding insertion");let m=qe(w.target);if(!lt(m))throw new G(`.editable() needs a node with an explicit id; '${m}' is not an editable host (\xA76.4)`);return w.editable=!0,d},editableDuration(){return l=!0,d}};e(d);let g=new Map;for(let w of n){let m=g.get(w.target);m||(m=[],g.set(w.target,m)),m.push(w)}let p=[];for(let[w,m]of g){m.sort(($,D)=>$.start-D.start);let b=[],v=m.some($=>$.editable),I=(T=m.find($=>$.baseValue!==void 0))==null?void 0:T.baseValue,y=m[0];y.kind==="tween"&&y.explicitFrom===void 0&&I===void 0&&j(`'${w}': first tween has no resolvable from-value (string targets have no base) \u2014 the track sits at its end state before the tween. Anchor it with { from }, fromTo(), or set(..., { at: 0 }).`);for(let $ of m){if($.kind==="set"){b.push({t:$.start,value:$.value,interp:"hold"}),I=$.value;continue}let D=$.explicitFrom!==void 0?$.explicitFrom:I,N=b[b.length-1];if(D!==void 0&&(!N||N.t<$.start)){let V={t:$.start,value:D};$.explicitFrom===void 0&&(V.derived=!0),(!N||$.start>N.t)&&b.push(V)}b.push({t:$.start+$.duration,value:$.value,ease:$.ease}),I=$.value}let x=[];for(let $ of b.sort((D,N)=>D.t-N.t)){let D=x[x.length-1];D&&D.t===$.t?x[x.length-1]=$:x.push($)}let E={target:w,type:Ce(m[0].value),keys:x};v&&(E.editable=!0),p.push(E)}for(let w of s)p.push(w);let k=Gn(M(M(M(R(M({},t),{tracks:p,labels:r}),l?{editableDuration:!0}:{}),o.length?{markers:o}:{}),i.length?{children:i.map(b=>{var v=b,{_pos:w}=v,m=ze(v,["_pos"]);return m})}:{}));return a.size&&Cr.set(k,a),k}function Do(e,t){return typeof e=="function"?Pr(e,t):Gn(e)}function Jt(e=0){return P(e)}var Dr=class extends Error{constructor(e){super(`timeline targets '${e}' but no property signal resolves to it`),this.name="UnboundTargetError"}},Fr=class extends Error{constructor(t,n,s){let r=t.slice(t.lastIndexOf("/")+1),i=[s].flat(),o=n==="number"&&i.includes("vec2")?`; target '${r}.x'/'${r}.y' or author a vec2 track`:"";super(`track '${t}' is '${n}' but '${r}' expects '${i.join("'|'")}' (would silently NaN evaluation)${o}`);S(this,"target");S(this,"got");S(this,"expected");this.target=t,this.got=n,this.name="BindTypeMismatchError",this.expected=s}};function as(e,t,n=Jt()){let s=[],r=new Map;for(let[i,o]of e.tracks){let a=t(i);if(!a)throw new Dr(i);let l=o.type,c=a.expects;if(c!==void 0){let u=Bt(l);if(!(Array.isArray(c)?c:[c]).some(h=>Bt(h)===u))throw new Fr(i,l,c)}a.bindSource(()=>jt(o,n())),s.push(a),r.set(i,{track:o,value:u=>jt(o,u),velocity:u=>Xn(o,u)})}return{playhead:n,samplers:r,unbind:()=>{for(let i of s)i.unbindSource()}}}function cs(e,t,n){e.forceSet(t),Sr();try{return n()}finally{Mr()}}function ae(e){let t=e>>>0;return()=>{t=t+2654435769|0;let n=t^t>>>16;return n=Math.imul(n,569420461),n=n^n>>>15,n=Math.imul(n,1935289751),n=n^n>>>15,(n>>>0)/4294967296}}var Kt=class extends Error{constructor(e){super(`bake(): ${e}`),this.name="BakeError"}};function Qt(e,t,n){for(let[s,r]of Object.entries(t)){let i=e.get(s);i||(i={keys:[],type:Ce(r)},e.set(s,i)),i.keys.push({t:n,value:r})}}function Lr(e){return[...e.entries()].map(([t,n])=>({target:t,type:n.type,keys:n.keys}))}function Fo(e){var o,a;if(!(e.fps>0)||!(e.duration>=0))throw new Kt("fps must be > 0 and duration >= 0");let t=ae((o=e.seed)!=null?o:0),n=1/e.fps,s=Math.round(e.duration*e.fps),r=e.setup(t),i=new Map;Qt(i,e.sample(r),0);for(let l=1;l<=s;l++)r=(a=e.step(r,n,t))!=null?a:r,Qt(i,e.sample(r),l*n);return Lr(i)}function Lo(e){var h;if(!(e.every>=1))throw new Kt("checkpoint interval `every` must be >= 1 frame");let t=1/e.fps,n=Math.round(e.duration*e.fps),s=0,r=ae((h=e.seed)!=null?h:0),i=()=>(s++,r()),o=f=>{var g;let d=ae((g=e.seed)!=null?g:0);for(let p=0;p<f;p++)d();return d},a=e.setup(i),l=[{snap:e.snapshot(a),rngDraws:s}],c=0;function u(f){var d;for(;c<Math.min(f,n);)a=(d=e.step(a,t,i))!=null?d:a,c++,c%e.every===0&&l.push({snap:e.snapshot(a),rngDraws:s})}return{frames:n,bakeRange(f,d){var b;if(f<0||d>n||f>d)throw new Kt(`range ${f}..${d} outside 0..${n}`);let g=Math.floor(f/e.every)*e.every;u(g);let p=l[g/e.every],k=e.restore(p.snap),T=o(p.rngDraws),w=g,m=new Map;for(w>=f&&Qt(m,e.sample(k),w*t);w<d;)k=(b=e.step(k,t,T))!=null?b:k,w++,w>=f&&Qt(m,e.sample(k),w*t);return Lr(m)}}}var Ee=[1,0,0,1,0,0],W=e=>e===0?0:e;function mt(e,t){let[n,s,r,i,o,a]=e,[l,c,u,h,f,d]=t;return[W(n*l+r*c),W(s*l+i*c),W(n*u+r*h),W(s*u+i*h),W(n*f+r*d+o),W(s*f+i*d+a)]}function fs(e,t,n){let s=t*Math.PI/180,r=Math.cos(s),i=Math.sin(s),[o,a]=n;return[W(r*o),W(i*o),W(-i*a),W(r*a),W(e[0]),W(e[1])]}function Wr(e){let[t,n,s,r,i,o]=e,a=t*r-n*s;if(a===0)return null;let l=r/a,c=-n/a,u=-s/a,h=t/a;return[W(l),W(c),W(u),W(h),W(-(l*i+u*o)),W(-(c*i+h*o))]}function Hr(e,t){return[e[0]*t[0]+e[2]*t[1]+e[4],e[1]*t[0]+e[3]*t[1]+e[5]]}function Te(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]&&e[4]===t[4]&&e[5]===t[5]}function He(e,t){if(t instanceof ArrayBuffer)return`ab:${t.byteLength}`;if(ArrayBuffer.isView(t))return`view:${t.byteLength}`;if(typeof t!="function")return typeof t=="number"&&!Number.isFinite(t)?Number.isNaN(t)?"NaN":t>0?"Infinity":"-Infinity":t}function Rr(e,t){let n={};for(let[s,r]of Object.entries(e))n[s]=r;return e.op==="clip"||e.op==="fillPath"||e.op==="strokePath"?n.path=t[e.path]:e.op==="drawImage"&&(n.image=t[e.image]),n}var We=e=>JSON.stringify(e,He);function Ro(e,t){let n=[],s=new Set([...Object.keys(e),...Object.keys(t)]);for(let r of s)r!=="op"&&We(e[r])!==We(t[r])&&n.push({path:r,from:e[r],to:t[r]});return n}function ds(e,t){let n=[],s=Math.max(e.commands.length,t.commands.length);for(let i=0;i<s;i++){let o=e.commands[i],a=t.commands[i];if(o!==void 0&&a!==void 0){let l=Rr(o,e.resources),c=Rr(a,t.resources);if(We(l)===We(c))continue;o.op!==a.op?n.push({index:i,kind:"change",opA:o.op,opB:a.op,fields:[{path:"op",from:o.op,to:a.op}]}):n.push({index:i,kind:"change",opA:o.op,opB:a.op,fields:Ro(l,c)})}else a!==void 0?n.push({index:i,kind:"add",opB:a.op,fields:[]}):o!==void 0&&n.push({index:i,kind:"remove",opA:o.op,fields:[]})}let r=e.size.w!==t.size.w||e.size.h!==t.size.h;return M({equal:n.length===0&&!r,deltas:n},r?{size:{from:e.size,to:t.size}}:{})}function Yr(e){var n,s,r,i;if(e.equal)return"DisplayLists are identical.";let t=[];e.size&&t.push(`size ${e.size.from.w}x${e.size.from.h} -> ${e.size.to.w}x${e.size.to.h}`);for(let o of e.deltas)if(o.kind==="add")t.push(`+ [${o.index}] add ${(n=o.opB)!=null?n:"?"}`);else if(o.kind==="remove")t.push(`- [${o.index}] remove ${(s=o.opA)!=null?s:"?"}`);else{let a=o.opA===o.opB?o.opA:`${(r=o.opA)!=null?r:"?"} -> ${(i=o.opB)!=null?i:"?"}`;t.push(`~ [${o.index}] ${a}`);for(let l of o.fields)t.push(` ${l.path}: ${We(l.from)} -> ${We(l.to)}`)}return t.join(`
|
|
2
|
-
`)}var Xr=1;function Gr(e){let t={dlSnapshotVersion:1,size:e.size,commands:e.commands,resources:e.resources};return JSON.stringify(t,He,2)}var nn=class extends Error{constructor(e){super(e),this.name="DlSnapshotError"}};function Ur(e){let t=JSON.parse(e);if(t.dlSnapshotVersion!==1)throw new nn(`unsupported dlSnapshotVersion ${String(t.dlSnapshotVersion)}; this build reads 1`);if(!t.size||!Array.isArray(t.commands)||!Array.isArray(t.resources))throw new nn("malformed .dl.json snapshot (need size, commands[], resources[])");return{size:t.size,commands:t.commands,resources:t.resources}}var Fe=class extends Error{constructor(e){super(e),this.name="FilterValidationError"}},
|
|
3
|
-
`);if(n===void 0||n<=0)return r;let i=[];for(let o of r){let a=cn(o),l="";for(let c of a){let u=l+c;l!==""&&X(s.measureText(u.trimEnd(),t).width)>n?(i.push(l.trimEnd()),l=c.trimStart()===""?"":c):l=u}i.push(l.trimEnd())}return i}var qo={center:[.5,.5],"top-left":[0,0],top:[.5,0],"top-right":[1,0],left:[0,.5],right:[1,.5],"bottom-left":[0,1],bottom:[.5,1],"bottom-right":[1,1]};function xs(e){if(typeof e=="string"){let t=qo[e];if(!t)throw new Error(`unknown anchor '${e}' (use a preset like 'top-left' or a [ax, ay] pair)`);return t}return[e[0],e[1]]}function pt(e,t){return typeof t=="function"?e.bindSource(t):t!==void 0&&e.set(t),e}function Vr(e,t){return typeof t=="function"?e.bindSource(t):t!==void 0&&e.set(t),e}var gt,_r,Z=(_r=class{constructor(e={}){S(this,"id");S(this,"position");S(this,"rotation");S(this,"scale");S(this,"opacity");S(this,"blend");S(this,"zIndex");S(this,"filters");S(this,"anchor");S(this,"hasAnchor");S(this,"cache");S(this,"parent",null);Q(this,gt,!1);S(this,"interactive",!1);S(this,"interactiveChildren",!0);S(this,"hitArea");S(this,"measurerSource",null);S(this,"localMatrix");S(this,"worldMatrix");S(this,"targets",new Map);var t;this.id=e.id,this.position=Vr(je([0,0]),e.position),this.rotation=pt(P(0),e.rotation),this.scale=Vr(je([1,1]),e.scale),this.opacity=pt(P(1),e.opacity),this.blend=pt(P("source-over"),e.blend),this.zIndex=pt(P(0),e.zIndex),this.filters=pt(P([]),e.filters),this.hasAnchor=e.anchor!==void 0,this.anchor=xs((t=e.anchor)!=null?t:"center"),this.cache=e.cache===!0,this.localMatrix=ft(()=>{let n=fs(this.position(),this.rotation(),this.scale()),[s,r]=this.anchorShift();return s===0&&r===0?n:mt(n,[1,0,0,1,s,r])},{equals:Te}),this.worldMatrix=ft(()=>this.parent?mt(this.parent.worldMatrix(),this.localMatrix()):this.localMatrix(),{equals:Te}),this.registerTarget("position",this.position,"vec2"),this.registerTarget("position.x",this.position.x,"number"),this.registerTarget("position.y",this.position.y,"number"),this.registerTarget("rotation",this.rotation,"number"),this.registerTarget("scale",this.scale,"vec2"),this.registerTarget("scale.x",this.scale.x,"number"),this.registerTarget("scale.y",this.scale.y,"number"),this.registerTarget("opacity",this.opacity,"number"),this.registerTarget("zIndex",this.zIndex,"number")}registerTarget(e,t,n){t.expects=n,this.targets.set(e,t),this.id!==void 0&&(t[Ae]=`${this.id}/${e}`)}resolveTarget(e){return this.targets.get(e)}listTargets(){return[...this.targets].map(([e,t])=>({path:e,expects:t.expects}))}intrinsicSize(e){return null}drawOffset(e){var s,r,i;let t=(r=e!=null?e:(s=this.measurerSource)==null?void 0:s.call(this))!=null?r:J(),n=(i=this.intrinsicSize(t))!=null?i:{w:0,h:0};return{x:-n.w/2,y:-n.h/2}}flowOffset(e){var i,o;let t=(o=e!=null?e:(i=this.measurerSource)==null?void 0:i.call(this))!=null?o:J(),n=this.drawOffset(t),[s,r]=this.anchorShift(t);return{x:n.x+s,y:n.y+r}}anchorShift(e){var l,c;if(!this.hasAnchor)return[0,0];let[t,n]=this.anchor,s=(c=e!=null?e:(l=this.measurerSource)==null?void 0:l.call(this))!=null?c:J(),r=this.intrinsicSize(s);if(!r)return F(this,gt)||(Y(this,gt,!0),j(`anchor set on a node without an intrinsic box${this.id?` ('${this.id}')`:""} \u2014 ignored (give it a sized node, or position children explicitly)`)),[0,0];let i=this.drawOffset(s),o=-(i.x+t*r.w),a=-(i.y+n*r.h);return[o===0?0:o,a===0?0:a]}requiresGroup(){return this.opacity()<1||this.blend()!=="source-over"||this.filters().length>0}groupShader(){}emit(e,t){let n=this.opacity();if(n<=0)return;let s=this.localMatrix(),r=Te(s,Ee),i=this.groupShader(),o=this.requiresGroup()||i!==void 0||this.cache,a=this.cache&&e.mark!==void 0;e.push({op:"save"}),r||e.push({op:"transform",m:s});let l=-1;o&&(a&&(l=e.mark()),e.push(M({op:"pushGroup",opacity:n,blend:this.blend(),filters:this.filters()},i!==void 0?{shader:i}:{})));let c=a?e.mark():-1;if(this.draw(e,t),o){if(a){let u=e.cacheKey(c,e.mark());u!==void 0&&e.patchCacheKey(l,u)}e.push({op:"popGroup"})}e.push({op:"restore"})}},gt=new WeakMap,_r),Zr=class extends Z{};function Ye(e,t,n,s,r){if(r<=0)return[["M",e,t],["L",e+n,t],["L",e+n,t+s],["L",e,t+s],["Z"]];let i=Math.PI/2;return[["M",e+r,t],["L",e+n-r,t],["E",e+n-r,t+r,r,r,0,-i,0],["L",e+n,t+s-r],["E",e+n-r,t+s-r,r,r,0,0,i],["L",e+r,t+s],["E",e+r,t+s-r,r,r,0,i,Math.PI],["L",e,t+r],["E",e+r,t+r,r,r,0,Math.PI,Math.PI+i],["Z"]]}var Se,jr,se=(jr=class extends Z{constructor(t={}){var n;super(t);S(this,"children");Q(this,Se,P(0));this.children=(n=t.children)!=null?n:[];for(let s of this.children)s.parent=this}trackStructure(){F(this,Se).call(this)}add(t){return t.parent=this,this.children.push(t),F(this,Se).set(F(this,Se).peek()+1),this}remove(t){let n=this.children.indexOf(t);return n>=0&&(this.children.splice(n,1),t.parent===this&&(t.parent=null),F(this,Se).set(F(this,Se).peek()+1)),this}draw(t,n){let s=this.children.map((r,i)=>({node:r,i})).sort((r,i)=>r.node.zIndex()-i.node.zIndex()||r.i-i.i).map(r=>r.node);for(let r of s)r.emit(t,n)}},Se=new WeakMap,jr);function Br(e){return typeof e=="string"?{kind:"color",color:e}:e}var Ss=class extends Z{constructor(t={}){var n;super(t);S(this,"fill");S(this,"stroke");S(this,"strokeWidth");S(this,"sketch");S(this,"sketchFill");S(this,"sketchSeed");S(this,"reveal");this.fill=H(P(""),t.fill),this.stroke=H(P(""),t.stroke),this.strokeWidth=H(P(0),t.strokeWidth),this.reveal=H(P(1),t.reveal),this.registerTarget("fill",this.fill,["color","paint"]),this.registerTarget("stroke",this.stroke,"color"),this.registerTarget("strokeWidth",this.strokeWidth,"number"),this.registerTarget("reveal",this.reveal,"number"),t.sketch&&ms(t.sketch),t.sketchFill&&ws(t.sketchFill),t.sketchFill&&!t.sketch&&j(`${this.id!==void 0?`'${this.id}': `:""}sketchFill is ignored without sketch \u2014 hachure fill is drawn only by the sketch renderer. Set a sketch style (e.g. { kind: 'pencil' }) to see it.`),this.sketch=t.sketch,this.sketchFill=t.sketchFill,this.sketchSeed=(n=t.sketchSeed)!=null?n:this.id!==void 0?ks(this.id):0}draw(t){let n=this.pathSegs();if(this.sketch)return this.drawSketch(t,n);let s=t.resource({kind:"path",segs:n}),r=this.fill();r&&t.push({op:"fillPath",path:s,paint:Br(r)});let i=this.stroke(),o=this.strokeWidth();if(i&&o>0){let a=this.reveal();a<1?qr(t,n,{kind:"color",color:i},{width:o},a):t.push({op:"strokePath",path:s,paint:{kind:"color",color:i},stroke:{width:o}})}}drawSketch(t,n){let s=ae(this.sketchSeed>>>0),r=this.fill();if(r){let u=t.resource({kind:"path",segs:n});t.push({op:"fillPath",path:u,paint:Br(r)})}let{strokes:i,resolved:o}=an(n,this.sketch,s),a=this.stroke()||(typeof r=="string"?r:"")||"#000000";if(this.sketchFill){let u=t.resource({kind:"path",segs:n});t.push({op:"save"}),t.push({op:"clip",path:u,rule:"nonzero"});let h=bs(n,this.sketchFill,s);if(h.length>0){let f=t.resource({kind:"path",segs:h});t.push({op:"strokePath",path:f,paint:{kind:"color",color:a},stroke:{width:Math.max(1,o.width*.5),cap:"round"}})}t.push({op:"restore"})}let l=this.reveal(),c=l<1;for(let u of i){if(u.length===0)continue;if(c){qr(t,u,{kind:"color",color:a},{width:o.width,cap:"round",join:"round"},l);continue}let h=t.resource({kind:"path",segs:u});t.push({op:"strokePath",path:h,paint:{kind:"color",color:a},stroke:M({width:o.width,cap:"round",join:"round"},o.dash?{dash:o.dash}:{})})}}};function H(e,t){return typeof t=="function"?e.bindSource(t):t!==void 0&&e.set(t),e}function _o(e){let t=[],n=null;for(let s of e)s[0]==="M"?(n=[s],t.push(n)):n&&n.push(s);return t}function qr(e,t,n,s,r){for(let i of _o(t)){let o=wt(i).reduce((l,c)=>l+ys(c),0),a=e.resource({kind:"path",segs:i});e.push({op:"strokePath",path:a,paint:n,stroke:R(M({},s),{dash:[o,o],dashOffset:o*(1-r)})})}}function rn(e){if(e===void 0)return[];if(Array.isArray(e)&&e.every(t=>typeof t=="object"&&t!==null&&Array.isArray(t.v)&&Array.isArray(t.in)&&Array.isArray(t.out)))return e;throw new TypeError(`Path.data expects PathValue (PathContour[]); for an SVG path 'd' string, parse it with pathFromSvg(d) from "@glissade/scene/path" (or window.glissade.pathFromSvg in the browser bundle)`)}function ln(e){let t=[],n=null,s=(i,o=[0,0],a=[0,0])=>{n.v.push(i),n.in.push(o),n.out.push(a)},r=()=>n.v[n.v.length-1];for(let i of e)switch(i[0]){case"M":n={closed:!1,v:[[i[1],i[2]]],in:[[0,0]],out:[[0,0]]},t.push(n);break;case"L":n&&s([i[1],i[2]]);break;case"C":if(n){let o=r();n.out[n.out.length-1]=[i[1]-o[0],i[2]-o[1]],s([i[5],i[6]],[i[3]-i[5],i[4]-i[6]])}break;case"Q":if(n){let o=r(),a=i[1],l=i[2],c=i[3],u=i[4];n.out[n.out.length-1]=[2/3*(a-o[0]),2/3*(l-o[1])],s([c,u],[2/3*(a-c),2/3*(l-u)])}break;case"E":if(n){let[,o,a,l,c,u,h,f]=i,d=Math.cos(u),g=Math.sin(u);for(let p=1;p<=16;p++){let k=h+(f-h)*(p/16),T=l*Math.cos(k),w=c*Math.sin(k);s([o+T*d-w*g,a+T*g+w*d])}}break;case"Z":if(n){n.closed=!0;let o=n.v[0],a=r();n.v.length>1&&Math.abs(o[0]-a[0])<1e-9&&Math.abs(o[1]-a[1])<1e-9&&(n.in[0]=n.in[n.in.length-1],n.v.pop(),n.in.pop(),n.out.pop())}break}return t}var un=class extends Ss{constructor(t={}){super(t);S(this,"width");S(this,"height");S(this,"cornerRadius");this.width=H(P(0),t.width),this.height=H(P(0),t.height),this.cornerRadius=H(P(0),t.cornerRadius),this.registerTarget("width",this.width,"number"),this.registerTarget("height",this.height,"number"),this.registerTarget("cornerRadius",this.cornerRadius,"number")}intrinsicSize(){return{w:this.width(),h:this.height()}}pathSegs(){let t=this.width(),n=this.height(),s=Math.min(Math.max(0,this.cornerRadius()),t/2,n/2);return Ye(-t/2,-n/2,t,n,s)}},hn=class extends Ss{constructor(t={}){super(t);S(this,"radius");this.radius=H(P(0),t.radius),this.registerTarget("radius",this.radius,"number")}intrinsicSize(){let t=this.radius()*2;return{w:t,h:t}}pathSegs(){let t=this.radius();return[["E",0,0,t,t,0,0,Math.PI*2],["Z"]]}},bt=class extends Ss{constructor(t={}){super(t);S(this,"data");let n=t.data,s=typeof n=="function"?()=>rn(n()):n!==void 0?rn(n):void 0;this.data=H(P([]),s),this.registerTarget("d",this.data,"path")}bounds(){let t=1/0,n=1/0,s=-1/0,r=-1/0;for(let i of this.data())for(let o=0;o<i.v.length;o++){let a=i.v[o][0],l=i.v[o][1],c=[[a,l],[a+i.in[o][0],l+i.in[o][1]],[a+i.out[o][0],l+i.out[o][1]]];for(let u of c)u[0]<t&&(t=u[0]),u[1]<n&&(n=u[1]),u[0]>s&&(s=u[0]),u[1]>r&&(r=u[1])}return t>s?{minX:0,minY:0,maxX:0,maxY:0}:{minX:t,minY:n,maxX:s,maxY:r}}intrinsicSize(){let t=this.bounds();return{w:t.maxX-t.minX,h:t.maxY-t.minY}}drawOffset(){let t=this.bounds();return{x:t.minX,y:t.minY}}pathSegs(){let t=[];for(let n of this.data()){let s=n.v.length;if(s!==0){t.push(["M",n.v[0][0],n.v[0][1]]);for(let r=0;r<s-1;r++)t.push(["C",n.v[r][0]+n.out[r][0],n.v[r][1]+n.out[r][1],n.v[r+1][0]+n.in[r+1][0],n.v[r+1][1]+n.in[r+1][1],n.v[r+1][0],n.v[r+1][1]]);n.closed&&s>1&&(t.push(["C",n.v[s-1][0]+n.out[s-1][0],n.v[s-1][1]+n.out[s-1][1],n.v[0][0]+n.in[0][0],n.v[0][1]+n.in[0][1],n.v[0][0],n.v[0][1]]),t.push(["Z"]))}}return t}},us,fn=(us=class extends Z{constructor(t){super(t);S(this,"assetId");S(this,"width");S(this,"height");this.assetId=t.assetId,this.width=H(P(0),t.width),this.height=H(P(0),t.height),this.registerTarget("width",this.width,"number"),this.registerTarget("height",this.height,"number")}intrinsicSize(){return{w:this.width(),h:this.height()}}draw(t){let n=this.width(),s=this.height();if(n<=0||s<=0)return;let r=t.resource({kind:"image",assetId:this.assetId});t.push({op:"drawImage",image:r,dst:{x:-n/2,y:-s/2,w:n,h:s}})}},S(us,"assetKind","image"),us),hs,dn=(hs=class extends Z{constructor(t){var n,s,r;super(t);S(this,"assetId");S(this,"at");S(this,"trimStart");S(this,"playbackRate");S(this,"clipDuration");S(this,"sourceFps");S(this,"width");S(this,"height");this.assetId=t.assetId,this.at=(n=t.at)!=null?n:0,this.trimStart=(s=t.trimStart)!=null?s:0,this.playbackRate=(r=t.playbackRate)!=null?r:1,this.clipDuration=t.clipDuration,this.sourceFps=t.sourceFps,this.width=H(P(0),t.width),this.height=H(P(0),t.height),this.registerTarget("width",this.width,"number"),this.registerTarget("height",this.height,"number")}mediaTime(t){let n=(t-this.at)*this.playbackRate;if(n<0||this.clipDuration!==void 0&&t-this.at>=this.clipDuration)return null;let s=this.trimStart+n;return this.sourceFps!==void 0?Math.floor(s*this.sourceFps+1e-9)/this.sourceFps:s}draw(t,n){let s=this.mediaTime(n.time);if(s===null)return;let r=this.width(),i=this.height();if(r<=0||i<=0)return;let o=t.resource({kind:"videoFrame",assetId:this.assetId,mediaT:s});t.push({op:"drawImage",image:o,dst:{x:-r/2,y:-i/2,w:r,h:i}})}},S(hs,"assetKind","video"),hs),Xe=class extends Z{constructor(t={}){var n,s,r,i,o;super(t);S(this,"text");S(this,"fill");S(this,"fontSize");S(this,"fontFamily");S(this,"fontWeight");S(this,"fontStyle");S(this,"align");S(this,"width");S(this,"lineHeight");S(this,"reveal");this.text=H(P(""),t.text),this.fill=H(P("#000000"),t.fill),this.fontSize=H(P(16),t.fontSize),this.fontFamily=(n=t.fontFamily)!=null?n:"sans-serif",this.fontWeight=(s=t.fontWeight)!=null?s:400,this.fontStyle=(r=t.fontStyle)!=null?r:"normal",this.align=(i=t.align)!=null?i:"left",this.width=H(P(0),t.width),this.lineHeight=(o=t.lineHeight)!=null?o:1.25,this.reveal=H(P(Number.POSITIVE_INFINITY),t.reveal),this.registerTarget("width",this.width,"number"),this.registerTarget("text",this.text,"string"),this.registerTarget("fill",this.fill,"color"),this.registerTarget("fontSize",this.fontSize,"number"),this.registerTarget("reveal",this.reveal,"number")}intrinsicSize(t){let n=this.text();if(!n)return{w:0,h:0};let s=M({family:this.fontFamily,size:this.fontSize(),weight:this.fontWeight},this.fontStyle==="italic"?{style:"italic"}:{}),r=this.width(),i=ce(n,s,r>0?r:void 0,t),o=Math.max(...i.map(a=>X(t.measureText(a,s).width)),0);return{w:r>0?r:o,h:X(s.size*this.lineHeight)*i.length}}drawOffset(t){var a,l,c;let n=(l=t!=null?t:(a=this.measurerSource)==null?void 0:a.call(this))!=null?l:J(),s=this.intrinsicSize(n),r=M({family:this.fontFamily,size:this.fontSize(),weight:this.fontWeight},this.fontStyle==="italic"?{style:"italic"}:{}),i=(c=ce(this.text(),r,this.width()>0?this.width():void 0,n)[0])!=null?c:"",o=n.measureText(i,r).ascent;return{x:this.align==="left"?0:this.align==="center"?-s.w/2:-s.w,y:-o}}measuredSize(t){var n,s;return this.intrinsicSize((s=t!=null?t:(n=this.measurerSource)==null?void 0:n.call(this))!=null?s:J())}lineBoxes(t){var c,u;let n=(u=t!=null?t:(c=this.measurerSource)==null?void 0:c.call(this))!=null?u:J(),s=this.text();if(!s)return[];let r=M({family:this.fontFamily,size:this.fontSize(),weight:this.fontWeight},this.fontStyle==="italic"?{style:"italic"}:{}),i=this.width(),o=ce(s,r,i>0?i:void 0,n),a=X(r.size*this.lineHeight),l=[];for(let h=0;h<o.length;h++){let f=o[h];if(!f)continue;let d=n.measureText(f,r),g=X(d.width),p=this.align==="left"?0:this.align==="center"?-g/2:-g;l.push({text:f,x:p,y:h*a-d.ascent,w:g,h:d.ascent+d.descent})}return l}wordBoxes(t){var c,u;let n=(u=t!=null?t:(c=this.measurerSource)==null?void 0:c.call(this))!=null?u:J(),s=this.text();if(!s)return[];let r=M({family:this.fontFamily,size:this.fontSize(),weight:this.fontWeight},this.fontStyle==="italic"?{style:"italic"}:{}),i=this.width(),o=ce(s,r,i>0?i:void 0,n),a=X(r.size*this.lineHeight),l=[];for(let h=0;h<o.length;h++){let f=o[h];if(!f)continue;let d=n.measureText(f,r),g=X(d.width),p=this.align==="left"?0:this.align==="center"?-g/2:-g,k=h*a-d.ascent,T=d.ascent+d.descent,w="";for(let m of cn(f)){let b=w;w+=m;let v=m.trim();if(v==="")continue;let I=m.length-m.trimStart().length,y=n.measureText(b+m.slice(0,I),r).width,x=n.measureText(b+m.trimEnd(),r).width;l.push({text:v,line:h,x:p+y,y:k,w:x-y,h:T})}}return l}graphemes(t){var l,c;let n=(c=t!=null?t:(l=this.measurerSource)==null?void 0:l.call(this))!=null?c:J(),s=this.text();if(!s)return[];let r=M({family:this.fontFamily,size:this.fontSize(),weight:this.fontWeight},this.fontStyle==="italic"?{style:"italic"}:{}),i=this.width(),o=ce(s,r,i>0?i:void 0,n),a=[];for(let u of o)for(let h of Me(u))a.push(h);return a}revealHead(t){var f,d,g;let n=(d=t!=null?t:(f=this.measurerSource)==null?void 0:f.call(this))!=null?d:J(),s=M({family:this.fontFamily,size:this.fontSize(),weight:this.fontWeight},this.fontStyle==="italic"?{style:"italic"}:{}),r=this.width(),i=ce(this.text(),s,r>0?r:void 0,n),o=X(s.size*this.lineHeight),a=i.reduce((p,k)=>p+Me(k).length,0),l=this.reveal(),c=Math.max(0,Math.min(Number.isFinite(l)?Math.floor(l):a,a)),u=c,h={x:0,y:0,h:0,line:0,index:c};for(let p=0;p<i.length;p++){let k=(g=i[p])!=null?g:"",T=n.measureText(k,s),w=X(T.width),m=this.align==="left"?0:this.align==="center"?-w/2:-w,b=p*o-T.ascent,v=T.ascent+T.descent,I=Me(k);if(u<=I.length)return{x:m+(u<=0?0:n.measureText(I.slice(0,u).join(""),s).width),y:b,h:v,line:p,index:c};u-=I.length,h={x:m+T.width,y:b,h:v,line:p,index:c}}return h}draw(t,n){let s=this.text();if(!s)return;let r=M({family:this.fontFamily,size:this.fontSize(),weight:this.fontWeight},this.fontStyle==="italic"?{style:"italic"}:{}),i=this.width(),o=ce(s,r,i>0?i:void 0,n.measurer),a=X(r.size*this.lineHeight),l=this.reveal(),c=Number.isFinite(l),u=c?Math.max(0,Math.floor(l)):0;for(let h=0;h<o.length;h++){let f=o[h];if(!f)continue;if(!c){t.push(M({op:"fillText",text:f,font:r,paint:{kind:"color",color:this.fill()},x:0,y:h*a},this.align!=="left"?{align:this.align}:{}));continue}if(u<=0)break;let d=Me(f),g=Math.min(u,d.length);if(u-=g,g===d.length)t.push(M({op:"fillText",text:f,font:r,paint:{kind:"color",color:this.fill()},x:0,y:h*a},this.align!=="left"?{align:this.align}:{}));else{let p=X(n.measurer.measureText(f,r).width),k=this.align==="left"?0:this.align==="center"?-p/2:-p;t.push({op:"fillText",text:d.slice(0,g).join(""),font:r,paint:{kind:"color",color:this.fill()},x:k,y:h*a})}}}};function ei(e,t,n){var f,d;let s=(d=n!=null?n:(f=e.measurerSource)==null?void 0:f.call(e))!=null?d:J(),r=e.text();if(!r)return[];let i=M({family:e.fontFamily,size:e.fontSize(),weight:e.fontWeight},e.fontStyle==="italic"?{style:"italic"}:{}),o=e.width(),a=ce(r,i,o>0?o:void 0,s),l=X(i.size*e.lineHeight),c=t.keys,u=[],h=0;for(let g=0;g<a.length;g++){let p=a[g];if(!p)continue;let k=s.measureText(p,i),T=X(k.width),w=e.align==="left"?0:e.align==="center"?-T/2:-T,m=g*l-k.ascent,b="";for(let v of Me(p)){b+=v;let I=h+1,y=Number.POSITIVE_INFINITY;for(let x of c)if(x.value>=I){y=x.t;break}Number.isFinite(y)&&u.push({charIndex:h,grapheme:v,time:y,x:w+s.measureText(b,i).width,y:m,line:g}),h++}}return u}var Ms=class extends Error{constructor(){super("a Layout node was evaluated but no LayoutEngine is registered \u2014 await loadYogaLayoutEngine() from '@glissade/scene/layout' before mounting/rendering (the engine is wasm and loads async; evaluate() never awaits, \xA72.5)"),this.name="LayoutEngineMissingError"}},pn=null;function ti(e){pn=e}function ni(){return pn}function si(){if(!pn)throw new Ms;return pn}var jo=["Group","Rect","Circle","Path","Text","Image","Video","Layout","Custom"],fi=class extends Z{constructor(t){var n,s;super(t);S(this,"target");S(this,"color");S(this,"progress");S(this,"padding");S(this,"cornerRadius");this.target=t.text,this.color=ri(P("#ffe066"),t.color),this.progress=ri(P(1),t.progress),this.padding=(n=t.padding)!=null?n:[4,2],this.cornerRadius=(s=t.cornerRadius)!=null?s:4,this.registerTarget("progress",this.progress,"number"),this.registerTarget("color",this.color,"color")}draw(t,n){let s=Math.min(1,Math.max(0,this.progress()));if(s<=0)return;let[r,i]=this.padding,o=this.target.lineBoxes(n.measurer).map(h=>({x:h.x-r,y:h.y-i,w:h.w+2*r,h:h.h+2*i})),a=o.reduce((h,f)=>h+f.w,0);if(a<=0)return;let l=this.target.localMatrix();Te(l,Ee)||t.push({op:"transform",m:l});let c=this.color(),u=s*a;for(let h of o){let f=Math.min(h.w,u);if(u-=f,f<=0)break;let d=Math.min(this.cornerRadius,f/2,h.h/2),g=t.resource({kind:"path",segs:Ye(h.x,h.y,f,h.h,d)});if(t.push({op:"fillPath",path:g,paint:{kind:"color",color:c}}),u<=0)break}}};function Wo(e,t={}){return new fi(R(M({},t),{text:e}))}function ri(e,t){return typeof t=="function"?e.bindSource(t):t!==void 0&&e.set(t),e}var di=class extends Z{constructor(t){var n,s,r,i;super(t);S(this,"target");S(this,"blinkPeriod");S(this,"blinkPhase");S(this,"solidWhileTyping");S(this,"caretWidth");S(this,"fill");this.target=t.text,this.blinkPeriod=(n=t.blinkPeriod)!=null?n:1.06,this.blinkPhase=(s=t.blinkPhase)!=null?s:0,this.solidWhileTyping=(r=t.solidWhileTyping)!=null?r:!0,this.caretWidth=(i=t.width)!=null?i:2,this.fill=Yo(P(""),t.fill),this.registerTarget("fill",this.fill,"color")}draw(t,n){let s=this.target.revealHead(n.measurer);if(s.h<=0)return;let r=!0,i=this.target.graphemes(n.measurer).length,o=s.index<i;if(!(this.solidWhileTyping&&o)){let u=this.blinkPeriod>0?this.blinkPeriod:1;r=((n.time-this.blinkPhase)%u+u)%u<u/2}if(!r)return;let a=this.target.localMatrix();Te(a,Ee)||t.push({op:"transform",m:a});let l=this.fill()||this.target.fill(),c=t.resource({kind:"path",segs:Ye(s.x,s.y,this.caretWidth,s.h,0)});t.push({op:"fillPath",path:c,paint:{kind:"color",color:l}})}};function Ho(e,t={}){return new di(R(M({},t),{text:e}))}function Yo(e,t){return typeof t=="function"?e.bindSource(t):t!==void 0&&e.set(t),e}var Xo=.06;function Go(e,t,n={}){var h,f,d,g;let s=(h=n.start)!=null?h:0,r=(f=n.perChar)!=null?f:Xo,i=(d=n.gap)!=null?d:0,o=s,a=[],l=[C(s,"",{interp:"hold"})],c=[],u=[];for(let p=0;p<t.length;p++){let k=t[p],T=o,w=(g=k.perChar)!=null?g:r;if(k.type!==void 0)for(let m of Me(k.type)){o+=w,a.push(m);let b=a.join("");l.push(C(o,b,{interp:"hold"})),c.push({time:o,kind:"insert",grapheme:m,value:b})}if(k.delete!==void 0)for(let m=0;m<k.delete&&a.length>0;m++){o+=w;let b=a.pop(),v=a.join("");l.push(C(o,v,{interp:"hold"})),c.push({time:o,kind:"delete",grapheme:b,value:v})}k.hold!==void 0&&(o+=k.hold),u.push({index:p,start:T,end:o,value:a.join("")}),i>0&&p<t.length-1&&(o+=i)}return{track:pe(e,"string",l),marks:c,steps:u,duration:o}}var Ge=class extends Error{constructor(e){super(e),this.name="EachError"}};function Ts(e,t){let n=(e^Math.imul(t+1,2654435769))>>>0;return n=Math.imul(n^n>>>16,569420461),n=Math.imul(n^n>>>15,1935289751),(n^n>>>15)>>>0}var Uo=1779033703;function Ko(e,t,n){var s,r,i,o,a,l,c,u,h,f,d,g;if(typeof e=="function")return e(t,n);switch(e.kind){case"row":{let p=(s=e.gap)!=null?s:n>1?1/(n-1):0,k=(r=e.align)!=null?r:.5,T=.5-p*(n-1)/2;return[n===1?.5:T+p*t,k]}case"column":{let p=(i=e.gap)!=null?i:n>1?1/(n-1):0,k=(o=e.align)!=null?o:.5,T=.5-p*(n-1)/2;return[k,n===1?.5:T+p*t]}case"grid":{let p=e.cols;if(!(p>=1))throw new Ge(`grid layout needs cols >= 1 (got ${p})`);let k=(a=e.rows)!=null?a:Math.ceil(n/p),T=(l=e.order)!=null?l:"row",w=T==="row"?t%p:Math.floor(t/k),m=T==="row"?Math.floor(t/p):t%k,b=(c=e.gapX)!=null?c:p>1?1/(p-1):0,v=(u=e.gapY)!=null?u:k>1?1/(k-1):0,I=b*(p-1),y=v*(k-1);return[p===1?.5:.5-I/2+b*w,k===1?.5:.5-y/2+v*m]}case"ring":{let p=(h=e.radius)!=null?h:.5,[k,T]=(f=e.center)!=null?f:[.5,.5],w=((d=e.startAngle)!=null?d:-Math.PI/2)+((g=e.sweep)!=null?g:Math.PI*2)*(n===0?0:t/n);return[k+p*Math.cos(w),T+p*Math.sin(w)]}}}function Qo(e,t,n){let s=(n-1)/2;switch(e){case"from-center":return r=>Math.abs(r-s)*t;case"from-edges":return r=>(s-Math.abs(r-s))*t;case"delay":return r=>r*t}}function Jo(e,t){var s,r;let n=(s=e.stagger)!=null?s:0;return typeof n=="function"?n:Qo((r=e.distribute)!=null?r:"delay",n,t)}function Zo(e,t,n){var d,g,p,k,T,w;if(!Number.isInteger(e)||e<0)throw new Ge(`each() count must be a non-negative integer (got ${e})`);let s=((d=n.seed)!=null?d:ks(n.id))>>>0,r=n.box,[i,o]=(g=r==null?void 0:r.origin)!=null?g:[0,0],a=[],l=[],c=new Set;for(let m=0;m<e;m++){let b=`${n.id}/${m}`,v=Ko(n.layout,m,e),I={i:m,n:e,id:b,place:v,rng:ae(Ts(s,m)),seed:s},y=t(m,I);if(!(y instanceof Z))throw new Ge(`each() factory must return a Node for index ${m} (got ${typeof y})`);if(c.has(y))throw new Ge(`each() factory returned the same Node instance for index ${m} \u2014 the factory must construct a new node per index (it is called once per clone)`);if(c.add(y),y.id===void 0)y.id=b;else if(y.id!==b)throw new Ge(`each() factory set id '${y.id}' on index ${m}, but each owns the id namespace \u2014 leave it unset so it becomes '${b}'`);a.push(y),l.push(r?{frac:v,px:[i+v[0]*r.w,o+v[1]*r.h]}:{frac:v})}let u=new se({id:n.id,children:a}),h=[],f=(k=(p=n.motion)==null?void 0:p.startSec)!=null?k:0;if(n.motion){let m=n.motion,b=(T=m.startSec)!=null?T:0,v=Jo(m,e);for(let I=0;I<e;I++){let y=ae(Ts(Ts(s,I),Uo)),x=(w=m.jitter)==null?void 0:w.call(m,I,y,e),E=M(M({},x!==void 0?{overrides:x}:{}),m.speed!==void 0?{speed:m.speed}:{}),$=m.clip.apply(`${n.id}/${I}`,b+v(I),E);h.push(...$.tracks),$.end>f&&(f=$.end)}}return{node:u,children:a,tracks:h,end:f,places:l}}function pi(e,t={}){var i,o,a;let n=(i=t.start)!=null?i:0,s=(o=t.duration)!=null?o:1,r=(a=t.ease)!=null?a:"easeInOutCubic";return pe(`${e}/reveal`,"number",[C(n,0),C(n+s,1,r)])}function ea(e,t={}){var s,r;let n=(r=t.delay)!=null?r:((s=t.duration)!=null?s:1)*.6;return _t(e.map(i=>pi(i,t)),n)}var mi=class extends Error{constructor(e){super(`'${e}' was called inside evaluate() \u2014 scene code must be a pure function of time (\xA75.5). Read ctx.time/frame, use the seeded random(seed) from @glissade/core, and resolve assets before rendering.`),this.name="DeterminismViolationError"}};function ta(){let e=globalThis,t=[{target:Math,key:"random",label:"Math.random"},{target:Date,key:"now",label:"Date.now"},{target:e,key:"setTimeout",label:"setTimeout"},{target:e,key:"setInterval",label:"setInterval"}];return typeof performance!="undefined"&&t.push({target:performance,key:"now",label:"performance.now"}),typeof e.requestAnimationFrame=="function"&&t.push({target:e,key:"requestAnimationFrame",label:"requestAnimationFrame"}),t}function na(e,t){if(e==="off")return t();let n=ta(),s=n.map(i=>i.target[i.key]),r=new Set;n.forEach((i,o)=>{i.target[i.key]=(...a)=>{if(e==="throw")throw new mi(i.label);return r.has(i.label)||(r.add(i.label),j(`${i.label} called inside evaluate() \u2014 nondeterministic, not reproducible on export (\xA75.5)`)),s[o].apply(i.target,a)}});try{return t()}finally{n.forEach((i,o)=>{i.target[i.key]=s[o]})}}var gi=class extends Error{constructor(e){super(`duplicate node id '${e}' \u2014 explicit ids must be unique (\xA73.1/\xA76.5)`),this.name="DuplicateNodeIdError"}},yi=class extends Error{constructor(e){super(`node id '${e}' uses the reserved '~' prefix \u2014 that namespace is for structural fallback ids (\xA76.5), which are inspection-only and never track targets; choose another id`),this.name="ReservedNodeIdError"}};function wi(e,t,n){if(e.measurerSource=n,e.id!==void 0){if(e.id.startsWith("~"))throw new yi(e.id);if(t.has(e.id))throw new gi(e.id);t.set(e.id,e)}if(e instanceof se)for(let s of e.children)wi(s,t,n)}function sa(e){let t=new se({id:"__root",children:e.children}),n=new Map,s=Jt(),r=P(null);return wi(t,n,()=>{var i;return(i=r())!=null?i:J()}),{root:t,nodes:n,size:e.size,playhead:s,resolveTarget:i=>{for(let o=i.lastIndexOf("/");o>0;o=i.lastIndexOf("/",o-1)){let a=n.get(i.slice(0,o));if(a)return a.resolveTarget(i.slice(o+1))}},setTextMeasurer:i=>{r.set(i)},get textMeasurer(){var i;return(i=r.peek())!=null?i:J()}}}var ii=new WeakMap;function bi(e,t){let n=ii.get(e);n||(n=new WeakMap,ii.set(e,n));let s=n.get(t);if(!s){let r=ne(t);s={compiled:r,bound:as(r,e.resolveTarget,e.playhead)},n.set(t,s)}return s}var ra=Object.freeze({version:1,tracks:[]});function Ue(e,t,n=0){if(t===void 0)return Ue(e,ra,e.playhead.peek());bi(e,t);let s=t.fps,r={time:n,frame:s!==void 0?Math.round(n*s):-1,measurer:e.textMeasurer};return cs(e.playhead,n,()=>{let i=yt(e.size);return e.root.emit(i,r),i.finish()})}function mn(e){return JSON.stringify(e,He)}function ia(e,t,n){let s=e(),r=e(),i=Ue(s,t,n),o=Ue(r,t,n);if(mn(i)===mn(o))return{ok:!0};let a=t.fps!==void 0?Math.round(n*t.fps):-1,l={time:n,frame:a,measurer:s.textMeasurer},c={time:n,frame:a,measurer:r.textMeasurer},u;for(let[h,f]of s.nodes){let d=r.nodes.get(h);if(!d)return{ok:!1,node:h};let g=yt(s.size);f.emit(g,l);let p=yt(r.size);d.emit(p,c);let k=g.finish(),T=p.finish();if(mn(k)===mn(T))continue;if(f instanceof se){u!=null||(u=h);continue}let w=ds(k,T).deltas[0];return M({ok:!1,node:h},w!==void 0?{delta:w}:{})}return M({ok:!1},u!==void 0?{node:u}:{})}var Cs=new Set(["blur","drop-shadow","brightness","contrast","saturate"]),oi=e=>e<0?0:e>1?1:e;function ai(e,t,n,s,r){let i=1-r,o=i*i*i,a=3*i*i*r,l=3*i*r*r,c=r*r*r;return[o*e[0]+a*t[0]+l*n[0]+c*s[0],o*e[1]+a*t[1]+l*n[1]+c*s[1]]}function oa(e){let t=[];for(let n of e){let s=n.v.length;for(let r=0;r<s-1;r++)t.push([n.v[r],[n.v[r][0]+n.out[r][0],n.v[r][1]+n.out[r][1]],[n.v[r+1][0]+n.in[r+1][0],n.v[r+1][1]+n.in[r+1][1]],n.v[r+1]]);n.closed&&s>1&&t.push([n.v[s-1],[n.v[s-1][0]+n.out[s-1][0],n.v[s-1][1]+n.out[s-1][1]],[n.v[0][0]+n.in[0][0],n.v[0][1]+n.in[0][1]],n.v[0]])}return t}function xt(e,t={}){var u,h;let n=Math.max(1,Math.floor((u=t.samplesPerSegment)!=null?u:32)),s=oa(e),r=[],i=[];if(s.length>0){let f=ai(...s[0],0);r.push(f),i.push(0);let d=0;for(let g of s)for(let p=1;p<=n;p++){let k=ai(...g,p/n);d+=Math.hypot(k[0]-f[0],k[1]-f[1]),r.push(k),i.push(d),f=k}}else{let f=(h=e[0])==null?void 0:h.v[0];r.push(f?[f[0],f[1]]:[0,0]),i.push(0)}let o=i[i.length-1],a=f=>{if(o<=0||f<=0)return{i:0,f:0};if(f>=o)return{i:r.length-2,f:1};let d=0;for(;d<i.length-1&&i[d+1]<f;)d++;let g=i[d+1]-i[d];return{i:d,f:g>0?(f-i[d])/g:0}},l=f=>{if(r.length===1)return[r[0][0],r[0][1]];let{i:d,f:g}=a(f),p=r[d],k=r[d+1];return[p[0]+(k[0]-p[0])*g,p[1]+(k[1]-p[1])*g]},c=f=>{if(r.length===1)return[1,0];let{i:d}=a(f),g=r[d],p=r[d+1],k=p[0]-g[0],T=p[1]-g[1],w=Math.hypot(k,T);return w>0?[k/w,T/w]:[1,0]};return{length:o,at:l,tangentAt:c,atProgress:f=>l(oi(f)*o),tangentAtProgress:f=>c(oi(f)*o)}}function aa(e){return xt(e).length}function ca(e,t){return xt(e).at(t)}var ki=class extends Z{constructor(t){var a;super(t);S(this,"target");S(this,"progress");this.target=t.target,this.progress=P(1),typeof t.progress=="function"?this.progress.bindSource(t.progress):t.progress!==void 0&&this.progress.set(t.progress),this.registerTarget("progress",this.progress,"number");let n=t.samplesPerSegment!==void 0?{samplesPerSegment:t.samplesPerSegment}:{},s=t.path instanceof bt?()=>t.path.data():()=>t.path,r=s(),i=xt(r,n),o=()=>{let l=s();return l!==r&&(r=l,i=xt(l,n)),i};if(t.target.position.bindSource(()=>o().atProgress(this.progress())),t.orient){let l=(a=t.orientOffset)!=null?a:0;t.target.rotation.bindSource(()=>{let c=o().tangentAtProgress(this.progress());return Math.atan2(c[1],c[0])*180/Math.PI+l})}}draw(){}};function la(e,t,n={}){return new ki(R(M({},n),{target:e,path:t}))}var St=class extends Error{constructor(e){super(e),this.name="TokenMatchError"}},Is=e=>e.replace(/\s+/g,"");function $s(e,t,n=1){let s=Is(t);if(s.length===0)throw new St("empty token");let r=0;for(let i=0;i<e.length;i++){let o="";for(let a=i;a<e.length;a++){if(o+=Is(e[a].text),o===s){if(r++,r===n)return[i,a];break}if(!s.startsWith(o))break}}throw new St(`no match for token '${t}'${n>1?` (occurrence ${n})`:""} \u2014 segments are [${e.map(i=>`'${i.text}'`).join(", ")}]`)}var vi=class extends Z{constructor(t){var s,r,i;super(t);S(this,"target");S(this,"padding");S(this,"cornerRadius");S(this,"rematch");S(this,"ranges");this.target=t.text,this.padding=(s=t.padding)!=null?s:[4,2],this.cornerRadius=(r=t.cornerRadius)!=null?r:4,this.rematch=(i=t.rematch)!=null?i:!1;let n=this.target.wordBoxes();this.ranges=t.ranges.map((o,a)=>{var h;let l=this.resolveRun(n,o),c=(h=o.id)!=null?h:`r${a}`,u={spec:o,fill:gn(P("#ffe066"),o.fill),opacity:gn(P(1),o.opacity),progress:gn(P(1),o.progress),scale:gn(P(1),o.scale),offset:ha(je([0,0]),o.offset),run:l,bound:ci(n,l)};return this.registerTarget(`${c}/fill`,u.fill,"color"),this.registerTarget(`${c}/opacity`,u.opacity,"number"),this.registerTarget(`${c}/progress`,u.progress,"number"),this.registerTarget(`${c}/scale`,u.scale,"number"),this.registerTarget(`${c}/offset`,u.offset,"vec2"),this.registerTarget(`${c}/offset.x`,u.offset.x,"number"),this.registerTarget(`${c}/offset.y`,u.offset.y,"number"),u})}resolveRun(t,n){var s;if(typeof n.match!="string"){let[r,i]=n.match;if(r<0||i>=t.length||r>i)throw new St(`word index range [${r}, ${i}] out of bounds (${t.length} boxes)`);return[r,i]}return $s(t,n.match,(s=n.occurrence)!=null?s:1)}draw(t,n){var l;let s=this.target.wordBoxes(n.measurer);if(s.length===0)return;let r=this.target.localMatrix(),[i,o]=this.padding,a=!1;for(let c of this.ranges){let u=c.opacity();if(u<=0)continue;let h=Math.min(1,Math.max(0,c.progress()));if(h<=0)continue;let f=c.run;if(this.rematch&&typeof c.spec.match=="string")f=$s(s,c.spec.match,(l=c.spec.occurrence)!=null?l:1);else if(ci(s,f)!==c.bound)throw new St(`bound token '${c.bound}' no longer matches boxes [${f[0]}, ${f[1]}] \u2014 the text changed (segments now [${s.slice(f[0],f[1]+1).map(b=>`'${b.text}'`).join(", ")}]); pass rematch: true for animated text`);let d=[];for(let b=f[0];b<=f[1];b++){let v=s[b],I=d[d.length-1],y=b>f[0]&&s[b-1].line===v.line?I:void 0;y?(y.w=v.x+v.w+i-y.x,y.y=Math.min(y.y,v.y-o),y.h=Math.max(y.h,v.y+v.h+o-y.y)):d.push({x:v.x-i,y:v.y-o,w:v.w+2*i,h:v.h+2*o})}!a&&!Te(r,Ee)&&(t.push({op:"transform",m:r}),a=!0);let g=u<1;g&&t.push({op:"pushGroup",opacity:u,blend:"source-over",filters:[]});let p=c.fill(),k=c.scale(),[T,w]=c.offset(),m=h*d.reduce((b,v)=>b+v.w,0);for(let b of d){let v=Math.min(b.w,m);if(m-=v,v<=0)break;let I=b.x+b.w/2+T,y=b.y+b.h/2+w,x=v*k,E=b.h*k,$=I-b.w/2*k,D=y-E/2,N=Math.min(this.cornerRadius,x/2,E/2),V=t.resource({kind:"path",segs:Ye($,D,x,E,N)});if(t.push({op:"fillPath",path:V,paint:{kind:"color",color:p}}),m<=0)break}g&&t.push({op:"popGroup"})}}};function ci(e,t){return e.slice(t[0],t[1]+1).map(n=>Is(n.text)).join("")}function ua(e,t){return new vi(R(M({},t),{text:e}))}function gn(e,t){return typeof t=="function"?e.bindSource(t):t!==void 0&&e.set(t),e}function ha(e,t){return typeof t=="function"?e.bindSource(t):t!==void 0&&e.set(t),e}function xi(e){let t=[],n=s=>{if(s instanceof Xe){let r=s.text();r&&t.push({family:s.fontFamily,text:r})}if(s instanceof se)for(let r of s.children)n(r)};return n(e.root),t}function fa(e){let t=e.indexOf("/");return t>=0?e.slice(0,t):e}function da(e,t){let n=[];for(let s of t.tracks){if(s.type!=="string")continue;let r=e.nodes.get(fa(s.target));if(r instanceof Xe)for(let i of s.keys){let o=i.value;typeof o=="string"&&o&&n.push({family:r.fontFamily,text:o})}}return n}async function As(e,t,n,s={}){var c,u;let r=(c=s.mode)!=null?c:"dev",i=dt(t.assets),o=[...xi(e),...(u=s.extraUsages)!=null?u:[]],a=new Set;for(let h of o)if(i.has(h.family))for(let f of i.fallbackChain(h.family))a.add(f);let l=new Map;for(let h of a){let f=i.resolveFace(h);if(!f)continue;let d=await n(f.url);d&&l.set(h,Wt(d))}return os(o,i,l,r,M({},s.osFamilies!==void 0?{osFamilies:s.osFamilies}:{}))}var vt=class extends Error{constructor(t,n,s){super(`asset '${t}' not ready: ${n}. evaluate() never awaits \u2014 warm assets before evaluating (\xA72.5 readiness precondition)`);S(this,"assetId");S(this,"detail");S(this,"mediaT");this.name="ColdAssetError",this.assetId=t,this.detail=n,this.mediaT=s}},pa=class extends se{constructor(t){var s;super(t);S(this,"wgsl");S(this,"uniformSignals");this.wgsl=t.wgsl;let n=new Map;for(let[r,i]of Object.entries((s=t.uniforms)!=null?s:{})){let o=P(i);n.set(r,o),this.registerTarget(`u.${r}`,o,"number")}this.uniformSignals=n}uniform(t){let n=this.uniformSignals.get(t);if(!n)throw new Error(`ShaderEffect has no uniform '${t}' (have: ${[...this.uniformSignals.keys()].join(", ")})`);return n}groupShader(){let t={};for(let[n,s]of this.uniformSignals)t[n]=s();return{wgsl:this.wgsl,uniforms:t}}},ma=e=>e*e*(3-2*e),ga=2.4,ya=1-Math.exp(-5.76/2),wa=e=>(1-Math.exp(-((e*ga)**2)/2))/ya;function ba(e,t){if(t==="linear"||e.length<2)return e;let n=t==="gaussian"?wa:ma,s=e[0].offset,r=e[e.length-1].offset-s;if(r<=0)return e;let i=[],o=0;for(let a=0;a<64;a++){let l=s+r*(a/63);for(;o<e.length-2&&l>e[o+1].offset;)o++;let c=e[o],u=e[o+1],h=u.offset-c.offset,f=h>0?Math.min(1,Math.max(0,(l-c.offset)/h)):0;i.push({offset:l,color:he(c.color,u.color,n(f))})}return i}var ka=4,va=2,Os=.32,li=1e-6,ui=1024;function Si(e,t,n){let s=new Uint8ClampedArray(Math.max(1,t)*Math.max(1,n)*4),r=e.points.map(l=>({u:l.pos[0],v:l.pos[1],lab:Oe(de(l.color))})),i=e.bg!==void 0?Oe(de(e.bg)):null,o=e.interpolation==="gaussian",a=2*Os*Os;for(let l=0;l<n;l++){let c=n>1?(l+.5)/n:.5;for(let u=0;u<t;u++){let h=t>1?(u+.5)/t:.5,f=0,d=0,g=0,p=0,k=0;i&&(f=1,d=i.L,g=i.a,p=i.b,k=i.alpha);let T=!1;for(let b=0;b<r.length;b++){let v=r[b],I=h-v.u,y=c-v.v,x=I*I+y*y;if(x<=li*li){d=v.lab.L,g=v.lab.a,p=v.lab.b,k=v.lab.alpha,T=!0;break}let E;o?E=Math.exp(-x/a):E=1/x,f+=E,d+=E*v.lab.L,g+=E*v.lab.a,p+=E*v.lab.b,k+=E*v.lab.alpha}let w;if(T)w=Be({L:d,a:g,b:p,alpha:k});else if(f>0){let b=1/f;w=Be({L:d*b,a:g*b,b:p*b,alpha:k*b})}else w={r:0,g:0,b:0,a:0};let m=(l*t+u)*4;s[m]=w.r,s[m+1]=w.g,s[m+2]=w.b,s[m+3]=Math.round(w.a*255)}}return s}function Mi(e,t){return{w:Math.min(ui,Math.max(1,Math.ceil(Math.abs(e)/4))),h:Math.min(ui,Math.max(1,Math.ceil(Math.abs(t)/4)))}}var hi=!1;function xa(e){var t,n,s;return hi||(hi=!0,j("mesh Paint on a stroke/text resolves to a representative solid color (mesh fill is supported only on filled paths, \xA73 Paint) \u2014 use a fillPath for the mesh gradient")),(s=(n=e.bg)!=null?n:(t=e.points[0])==null?void 0:t.color)!=null?s:"#00000000"}function Es(e,t,n){if(t.kind==="color")return t.color;if(t.kind==="mesh")return xa(t);let s;if(t.kind==="radial"){let i=t.center?t.center[0]:n?(n.minX+n.maxX)/2:0,o=t.center?t.center[1]:n?(n.minY+n.maxY)/2:0,a=t.radius!==void 0?t.radius:n?Math.hypot(n.maxX-n.minX,n.maxY-n.minY)/2:0;s=e.createRadialGradient(i,o,0,i,o,a)}else{let i=t.from?t.from[0]:n?(n.minX+n.maxX)/2:0,o=t.from?t.from[1]:n?n.minY:0,a=t.to?t.to[0]:n?(n.minX+n.maxX)/2:0,l=t.to?t.to[1]:n?n.maxY:0;s=e.createLinearGradient(i,o,a,l)}let r=t.interpolation?ba(t.stops,t.interpolation):t.stops;for(let i of r)s.addColorStop(i.offset,i.color);return s}function yn(e){return`${e.style==="italic"?"italic ":""}${e.weight!==void 0&&e.weight!==400?`${e.weight} `:""}${e.size}px ${e.family}`}var Sa=16;function Ma(e){let t=n=>Object.is(n,-0)?"0":String(Math.round(n*1e4)/1e4);return`${t(e[0])},${t(e[1])},${t(e[2])},${t(e[3])},${t(e[4])},${t(e[5])}`}function Ta(e){let t=0;for(let n of e!=null?e:[])n.kind==="blur"?t+=3*n.radius:n.kind==="drop-shadow"&&(t+=Math.max(Math.abs(n.dx),Math.abs(n.dy))+3*n.blur);return t}function Ti(e,t,n){return e?(t<e.minX&&(e.minX=t),n<e.minY&&(e.minY=n),t>e.maxX&&(e.maxX=t),n>e.maxY&&(e.maxY=n),e):{minX:t,minY:n,maxX:t,maxY:n}}function kt(e,t,n,s,r,i){for(let[o,a]of[[n,s],[r,s],[n,i],[r,i]])e.bounds=Ti(e.bounds,t[0]*o+t[2]*a+t[4],t[1]*o+t[3]*a+t[5])}function Ea(e){let t=null,n=(s,r)=>{t=Ti(t,s,r)};for(let s of e)switch(s[0]){case"M":case"L":n(s[1],s[2]);break;case"C":n(s[1],s[2]),n(s[3],s[4]),n(s[5],s[6]);break;case"Q":n(s[1],s[2]),n(s[3],s[4]);break;case"E":{let r=Math.max(s[3],s[4]);n(s[1]-r,s[2]-r),n(s[1]+r,s[2]+r);break}}return t}var Ps=class{constructor(e,t="warn",n=(i=>(i=(r=>(r=(s=>(s=globalThis.process)==null?void 0:s.env)())==null?void 0:r.RASTER_CACHE)())!=null?i:"1")()!=="0"){S(this,"host");S(this,"shaderCaps");S(this,"pool",[]);S(this,"pathCache",new WeakMap);S(this,"pathBoundsCache",new WeakMap);S(this,"images",new Map);S(this,"videos",new Map);S(this,"warnedShaders",!1);S(this,"rasterCache",new Map);S(this,"cacheEnabled");this.host=e,this.shaderCaps=t,this.cacheEnabled=n}setImageAsset(e,t){this.images.set(e,t)}setVideoAsset(e,t){this.videos.set(e,t)}dispose(){this.pool.length=0,this.rasterCache.clear()}resolveDrawable(e,t){if(e.kind==="image"){let n=this.images.get(e.assetId);if(!n)throw new vt(e.assetId,"no decoded image registered");return n}if(e.kind==="videoFrame"){let n=this.videos.get(e.assetId);if(!n)throw new vt(e.assetId,"no VideoFrameSource registered",e.mediaT);try{return n.getFrameSync(e.mediaT)}catch(s){throw s instanceof vt?new vt(e.assetId,s.detail,e.mediaT):s}}throw new Error(`resource ${t} is not drawable`)}path(e,t){let n=e[t];if(!n||n.kind!=="path")throw new Error(`resource ${t} is not a path`);let s=this.pathCache.get(n);return s||(s=this.buildPath(n.segs),this.pathCache.set(n,s)),s}pathBounds(e,t){var s;let n=e[t];return!n||n.kind!=="path"?null:(this.pathBoundsCache.has(n)||this.pathBoundsCache.set(n,Ea(n.segs)),(s=this.pathBoundsCache.get(n))!=null?s:null)}buildPath(e){let t=this.host.newPath();for(let n of e)switch(n[0]){case"M":t.moveTo(n[1],n[2]);break;case"L":t.lineTo(n[1],n[2]);break;case"C":t.bezierCurveTo(n[1],n[2],n[3],n[4],n[5],n[6]);break;case"Q":t.quadraticCurveTo(n[1],n[2],n[3],n[4]);break;case"E":t.ellipse(n[1],n[2],n[3],n[4],n[5],n[6],n[7]);break;case"Z":t.closePath();break}return t}acquire(e,t){let n=this.pool.pop();return n?(n.width!==e&&(n.width=e),n.height!==t&&(n.height=t),n):this.host.createCanvas(e,t)}release(e){this.pool.length<8&&this.pool.push(e)}cacheStore(e,t){let n=this.rasterCache.get(e);for(n&&(this.rasterCache.delete(e),n.canvas!==t.canvas&&this.release(n.canvas)),this.rasterCache.set(e,t);this.rasterCache.size>Sa;){let s=this.rasterCache.keys().next().value;if(s===void 0)break;let r=this.rasterCache.get(s);this.rasterCache.delete(s),this.release(r.canvas)}}cacheTouch(e){let t=this.rasterCache.get(e);return t&&(this.rasterCache.delete(e),this.rasterCache.set(e,t)),t}fillMesh(e,t,n,s){let r=s.maxX-s.minX,i=s.maxY-s.minY;if(r<=0||i<=0)return;let{w:o,h:a}=Mi(r,i),l=Si(n,o,a),c=this.acquire(o,a),u=this.host.context(c),h=u.createImageData(o,a);h.data.set(l),u.putImageData(h,0,0),e.save(),e.clip(t,"nonzero"),e.imageSmoothingEnabled=!0,e.drawImage(c,0,0,o,a,s.minX,s.minY,r,i),e.restore(),this.release(c)}composite(e,t,n,s,r,i,o,a,l,c,u,h){let f=l!==void 0&&l!=="none",d=f?Ta(c):0;r||a!=="source-over"?t.unbounded=!0:s&&kt(t,Ee,s.minX-d,s.minY-d,s.maxX+d,s.maxY+d);let g=f&&!i&&!r&&a==="source-over";if(!(g&&s===null)){if(e.save(),e.resetTransform(),g&&s){let p=Math.max(0,Math.floor(s.minX-d)),k=Math.max(0,Math.floor(s.minY-d)),T=Math.min(u,Math.ceil(s.maxX+d)),w=Math.min(h,Math.ceil(s.maxY+d));if(p>=T||k>=w){e.restore();return}let m=this.host.newPath();m.moveTo(p,k),m.lineTo(T,k),m.lineTo(T,w),m.lineTo(p,w),m.closePath(),e.clip(m,"nonzero")}e.globalAlpha=o,f&&(e.filter=l),e.globalCompositeOperation=a,e.drawImage(n,0,0),e.restore()}}render(e,t){var h,f,d,g,p,k,T,w,m,b,v;let{w:n,h:s}=t.size;e.width!==n&&(e.width=n),e.height!==s&&(e.height=s);let r=this.host.context(e);r.resetTransform(),r.clearRect(0,0,n,s);let i=[{ctx:r,canvas:null,opacity:1,blend:"source-over",bounds:null,unbounded:!1}],o=()=>i[i.length-1].ctx,a=()=>i[i.length-1],l=Ee,c=[],u=t.commands;for(let I=0;I<u.length;I++){let y=u[I];switch(y.op){case"save":c.push(l),o().save();break;case"restore":l=(h=c.pop())!=null?h:l,o().restore();break;case"transform":l=mt(l,y.m),o().transform(y.m[0],y.m[1],y.m[2],y.m[3],y.m[4],y.m[5]);break;case"clip":o().clip(this.path(t.resources,y.path),(f=y.rule)!=null?f:"nonzero");break;case"fillPath":{let x=o(),E=this.pathBounds(t.resources,y.path);y.paint.kind==="mesh"&&E?this.fillMesh(x,this.path(t.resources,y.path),y.paint,E):(x.fillStyle=Es(x,y.paint,E),x.fill(this.path(t.resources,y.path))),E&&kt(a(),l,E.minX,E.minY,E.maxX,E.maxY);break}case"strokePath":{let x=o(),E=this.pathBounds(t.resources,y.path);if(x.strokeStyle=Es(x,y.paint,E),x.lineWidth=y.stroke.width,x.lineCap=(d=y.stroke.cap)!=null?d:"butt",x.lineJoin=(g=y.stroke.join)!=null?g:"miter",y.stroke.dash&&(x.setLineDash(y.stroke.dash),x.lineDashOffset=(p=y.stroke.dashOffset)!=null?p:0),x.stroke(this.path(t.resources,y.path)),y.stroke.dash&&(x.setLineDash([]),x.lineDashOffset=0),E){let $=y.stroke.width*(((k=y.stroke.join)!=null?k:"miter")==="miter"?5:1);kt(a(),l,E.minX-$,E.minY-$,E.maxX+$,E.maxY+$)}break}case"fillText":{let x=o();x.font=yn(y.font),x.fillStyle=Es(x,y.paint,null),x.textBaseline="alphabetic",x.textAlign=(T=y.align)!=null?T:"left",x.fillText(y.text,y.x,y.y);try{let E=x.measureText(y.text).width,$=(w=y.align)!=null?w:"left",D=$==="center"?y.x-E/2:$==="right"?y.x-E:y.x,N=y.font.size;kt(a(),l,D-N,y.y-1.5*N,D+E+N,y.y+.75*N)}catch(E){a().unbounded=!0}break}case"drawImage":{let x=t.resources[y.image];if(!x)throw new Error(`drawImage references missing resource ${y.image}`);let E=this.resolveDrawable(x,y.image),$=o();y.smoothing!==void 0&&($.imageSmoothingEnabled=y.smoothing);let{x:D,y:N,w:V,h:U}=y.dst;y.src?$.drawImage(E,y.src.x,y.src.y,y.src.w,y.src.h,D,N,V,U):$.drawImage(E,D,N,V,U),kt(a(),l,D,N,D+V,N+U);break}case"pushGroup":{let x=o(),E=this.cacheEnabled&&y.cacheKey!==void 0&&y.shader===void 0?`${y.cacheKey}@${Ma(l)}`:void 0;if(E!==void 0){let N=this.cacheTouch(E);if(N){this.composite(x,a(),N.canvas,N.bounds,N.unbounded,!1,y.opacity,y.blend,on(y.filters),y.filters,n,s);let V=1;for(;V>0&&++I<u.length;){let U=u[I];U.op==="pushGroup"?V++:U.op==="popGroup"&&V--}break}}let $=this.acquire(n,s),D=this.host.context($);D.resetTransform(),D.clearRect(0,0,n,s),D.setTransform(x.getTransform()),i.push(M(R(M({ctx:D,canvas:$,opacity:y.opacity,blend:y.blend,filter:on(y.filters),filters:y.filters},y.shader!==void 0?{shader:y.shader}:{}),{bounds:null,unbounded:!1}),E!==void 0?{cacheStoreKey:E}:{}));break}case"popGroup":{let x=i.pop();if(!x||x.canvas===null)throw new Error("popGroup without matching pushGroup");let E=o(),$=x.canvas,D=!1;if(x.shader!==void 0){let N=(v=(b=(m=this.host).applyShader)==null?void 0:b.call(m,x.canvas,x.shader,n,s))!=null?v:null;if(N!==null)$=N,D=!0,x.bounds={minX:0,minY:0,maxX:n,maxY:s},x.unbounded=!1;else{if(this.shaderCaps==="error")throw new Error("a ShaderEffect reached a backend without a shader runner (\xA73.7) \u2014 load @glissade/effects-webgpu in the browser, or accept passthrough with caps.shaders: warn");this.warnedShaders||(this.warnedShaders=!0,j("ShaderEffect pass skipped: no shader runner here (headless or webgpu-less browser) \u2014 subtree composites unfiltered (\xA73.7 caps.shaders)"))}}this.composite(E,a(),$,x.bounds,x.unbounded,D,x.opacity,x.blend,x.filter,x.filters,n,s),x.cacheStoreKey!==void 0&&!D?this.cacheStore(x.cacheStoreKey,{canvas:x.canvas,bounds:x.bounds,unbounded:x.unbounded}):this.release(x.canvas);break}}}if(i.length!==1)throw new Error("unbalanced pushGroup/popGroup in DisplayList")}};var Mt=null;function Ei(e){Mt=e}function Ia(e,t){if(typeof OffscreenCanvas!="undefined")return new OffscreenCanvas(e,t);let n=document.createElement("canvas");return n.width=e,n.height=t,n}var $a=16384,wn=class{constructor(e,t={}){S(this,"target");S(this,"raster");var n;this.target=e,this.raster=new Ps({context:s=>this.context(s),createCanvas:(s,r)=>Ia(s,r),newPath:()=>new Path2D,applyShader:(s,r,i,o)=>{var a;return(a=Mt==null?void 0:Mt.apply(s,r,i,o))!=null?a:null}},(n=t.shaderCaps)!=null?n:"warn")}get caps(){return{filters:Cs,shaders:Mt!==null,maxTextureSize:$a}}setImageAsset(e,t){this.raster.setImageAsset(e,t)}setVideoAsset(e,t){this.raster.setVideoAsset(e,t)}measureText(e,t){let n=this.context(this.target);n.save(),n.font=yn(t);let s=n.measureText(e);return n.restore(),{width:s.width,ascent:s.actualBoundingBoxAscent,descent:s.actualBoundingBoxDescent}}render(e){this.raster.render(this.target,e)}async readPixels(){return this.context(this.target).getImageData(0,0,this.target.width,this.target.height).data}dispose(){this.raster.dispose()}context(e){let t=e.getContext("2d");if(!t)throw new Error("canvas 2d context unavailable");return t}};var le=class extends Error{constructor(e){super(e),this.name="ClipError"}};function Ii(e,t,n){let s;try{s=Ce(n)}catch(i){throw new le(`clip override for '${e}' has an un-typeable value ${JSON.stringify(n)} (channel type '${t}')`)}let r=i=>i==="color"||i==="string";if(!(s===t||r(s)&&r(t)))throw new le(`clip override for '${e}' is a '${s}' value but the channel is '${t}' (${JSON.stringify(n)}); a mismatched override samples to NaN`);return n}function $i(e){return e.keys.length===0?0:e.keys[e.keys.length-1].t}function Oa(e,t,n){if(typeof e=="string")return ve(`${e}/${n}`);let s=e[t];if(s===void 0)throw new le(`clip target map is missing channel '${t}' \u2014 provide a target for every channel, or pass a node-id string`);return ve(s)}function Ca(e,t,n,s,r){var a;if(t.keys.length===0)throw new le(`clip channel '${e}' has no keys`);let i=(a=t.type)!=null?a:Ce(t.keys[0].value),o=t.keys.length-1;if(r&&o===0&&r.from!==void 0)throw new le(r.to!==void 0?`clip override for '${e}' supplies both 'from' and 'to' on a single-key channel \u2014 ambiguous (both target the only key)`:`clip override for '${e}' supplies 'from' on a single-key channel \u2014 ambiguous (the only key already is the 'to' value)`);return pe(e,i,t.keys.map((l,c)=>{let u=l.value,h=!1;r&&(c===0&&r.from!==void 0&&(u=Ii(e,i,r.from),h=!0),c===o&&r.to!==void 0&&(u=Ii(e,i,r.to),h=!0));let f={t:n+l.t/s,value:u},d=r&&c===o&&r.ease!==void 0?r.ease:l.ease;return d!==void 0&&(f.ease=d),l.interp!==void 0&&(f.interp=l.interp),l.id!==void 0&&(f.id=l.id),l.derived!==void 0&&!h&&(f.derived=l.derived),l.from!==void 0&&(f.from=l.from),f}))}function ye(e){let t=Object.keys(e.channels);if(t.length===0)throw new le("clip() requires at least one channel");let n=0;for(let r of t){let i=e.channels[r];if(i.keys.length===0)throw new le(`clip channel '${r}' has no keys`);n=Math.max(n,$i(i))}function s(r,i,o){var h;let a=(h=o==null?void 0:o.speed)!=null?h:1;if(!(a>0))throw new le(`clip speed must be > 0 (got ${a})`);let l=o==null?void 0:o.overrides,c=[],u=i;for(let f of t){let d=e.channels[f],g=Oa(r,f,d.path);c.push(Ca(g,d,i,a,l==null?void 0:l[f])),u=Math.max(u,i+$i(d)/a)}if(l){for(let f of Object.keys(l))if(!(f in e.channels))throw new le(`clip override references unknown channel '${f}'`)}return{tracks:c,end:u}}return{spec:e,duration:n,apply:s}}function Aa(e,t,n,s){var u;let r=(u=s==null?void 0:s.stagger)!=null?u:0,i=typeof r=="function"?r:f=>f*r,h=s!=null?s:{},{stagger:o}=h,a=ze(h,["stagger"]),l=[],c=n;return t.forEach((f,d)=>{let g=e.apply(f,n+i(d),a);l.push(...g.tracks),g.end>c&&(c=g.end)}),{tracks:l,end:c}}function Pa(e){var s,r;let t=(s=e==null?void 0:e.duration)!=null?s:.3,n=(r=e==null?void 0:e.ease)!=null?r:"easeOutCubic";return ye({channels:{opacity:{path:"opacity",keys:[C(0,0),C(t,1,n)]},scale:{path:"scale",keys:[C(0,[.8,.8]),C(t,[1,1],n)]}}})}function Da(e,t){var o,a,l;let n=(o=t==null?void 0:t.duration)!=null?o:.3,s=(a=t==null?void 0:t.ease)!=null?a:"easeOutCubic",r=(l=t==null?void 0:t.distance)!=null?l:40,i=e==="left"?[-r,0]:e==="right"?[r,0]:e==="top"?[0,-r]:[0,r];return ye({channels:{opacity:{path:"opacity",keys:[C(0,0),C(n,1,s)]},offset:{path:"position",keys:[C(0,i),C(n,[0,0],s)]}}})}function Fa(e){var r,i,o;let t=(r=e==null?void 0:e.duration)!=null?r:.4,n=(i=e==null?void 0:e.ease)!=null?i:"easeInOutSine",s=(o=e==null?void 0:e.scale)!=null?o:1.1;return ye({channels:{scale:{path:"scale",keys:[C(0,[1,1]),C(t/2,[s,s],n),C(t,[1,1],n)]}}})}function La(e){var r,i,o;let t=(r=e==null?void 0:e.duration)!=null?r:2,n=(i=e==null?void 0:e.ease)!=null?i:"easeInOutSine",s=(o=e==null?void 0:e.amplitude)!=null?o:8;return ye({channels:{drift:{path:"position",keys:[C(0,[0,0]),C(t/2,[s,0],n),C(t,[0,0],n)]}}})}var Ke=class extends Error{constructor(e){super(e),this.name="MorphError"}};function Ds(e,t){for(let[n,s]of[["x",t.x],["y",t.y],["w",t.w],["h",t.h]])if(!Number.isFinite(s))throw new Ke(`morph ${e}.${n} must be finite (got ${s})`);if(!(t.w>0)||!(t.h>0))throw new Ke(`morph ${e} must have w>0 and h>0 (got w=${t.w}, h=${t.h}); a zero/negative box yields a NaN/Infinity scale`)}function bn(e,t){let n=typeof e=="string"?e:e[Ae];return typeof n!="string"||n.length===0?`${String(n)}/${t}`:`${typeof e=="string"?n:n.slice(0,Math.max(0,n.lastIndexOf("/")))}/${t}`}function Ra(e,t,n,s){var T,w,m;let{at:r,duration:i}=s,o=s.ease,a=(T=s.crossfade)!=null?T:.5,l=(w=s.metric)!=null?w:"transform";if(l!=="transform")throw new Ke(`morph metric '${l}' is not supported in v1 (only 'transform')`);if(Ds("from",e),Ds("to",t),!(i>0))throw new Ke(`morph duration must be > 0 (got ${i})`);if(!(a>=0&&a<=1))throw new Ke(`morph crossfade must be in [0,1] (got ${a})`);let c=(m=s.base)!=null?m:{w:t.w,h:t.h};Ds("to",{x:0,y:0,w:c.w,h:c.h});let u=[e.w/c.w,e.h/c.h],h=[t.w/c.w,t.h/c.h],f=[e.x,e.y],d=[t.x,t.y],g={position:{path:"position",type:"vec2",keys:[C(0,f),C(i,d,o)]},scale:{path:"scale",type:"vec2",keys:[C(0,u),C(i,h,o)]}},p={position:bn(n.morphNode,"position"),scale:bn(n.morphNode,"scale")};n.fromNode!==void 0&&i*a>0&&(g.fromOpacity={path:"opacity",type:"number",keys:[C(0,1),C(i*a,0,o)]},p.fromOpacity=bn(n.fromNode,"opacity")),n.toNode!==void 0&&i*(1-a)<i&&(g.toOpacity={path:"opacity",type:"number",keys:[C(i*(1-a),0),C(i,1,o)]},p.toOpacity=bn(n.toNode,"opacity"));let{tracks:k}=ye({channels:g}).apply(p,r);return{tracks:k,end:r+i}}var Ls=class extends Error{constructor(e){super(e),this.name="PresenceError"}},Ns=.3;function Na(){return ye({channels:{opacity:{path:"opacity",keys:[C(0,0),C(Ns,1)]}}})}function za(){return ye({channels:{opacity:{path:"opacity",keys:[C(0,1),C(Ns,0)]}}})}function Va(e){return typeof e.apply=="function"}function Rs(e){return Array.isArray(e)}function Pi(e,t){var i,o;let n=(i=e.dur)!=null?i:Ns,s=e.ease,r={};if(e.opacity!==void 0){let[a,l]=e.opacity;r.opacity={path:"opacity",keys:[C(0,a),C(n,l,...Fs(s))]}}if(e.offset!==void 0){let[a,l]=qa(e.offset,(o=e.edge)!=null?o:"bottom",t);r.offset={path:"position",keys:[C(0,a),C(n,l,...Fs(s))]}}if(e.scale!==void 0){let[a,l]=_a(e.scale);r.scale={path:"scale",keys:[C(0,a),C(n,l,...Fs(s))]}}return ye({channels:r})}function Fs(e){return e!==void 0?[e]:[]}function Ba(e,t){return e==="left"?[-t,0]:e==="right"?[t,0]:e==="top"?[0,-t]:[0,t]}function qa(e,t,n){if(Array.isArray(e)&&Rs(e[0]))return e;let s=Rs(e)?e:Ba(t,e),r=[0,0];return n==="enter"?[s,r]:[r,s]}function _a(e){let[t,n]=e,s=r=>Rs(r)?r:[r,r];return[s(t),s(n)]}function Oi(e,t,n){return e===void 0?n():Va(e)?e:Pi(e,t)}function Ci(e,t){var n;return e.duration/((n=t==null?void 0:t.speed)!=null?n:1)}function ja(e){return e.map((t,n)=>[t,n]).sort((t,n)=>t[0].t-n[0].t||t[1]-n[1]).map(([t])=>t)}function Ai(e,t){let n=[],s=[];for(let r of e)r.target===t?s=r.keys:n.push(r);return{opacityKeys:s,rest:n}}function Di(e){let t=ja(e),n=[];for(let s of t){let r=n[n.length-1];r&&r.t===s.t?n[n.length-1]=s:n.push(s)}return n}function Wa(e,t){let n=[],s=new Map;for(let r of[...e,...t]){let i=s.get(r.target);i?i.push(r):(s.set(r.target,[r]),n.push(r.target))}return n.map(r=>{let i=s.get(r);if(i.length===1)return i[0];let o=i.flatMap(a=>a.keys);return pe(r,i[0].type,Di(o))})}function Ha(e,t){var b,v,I,y;let n=(v=t.show)!=null?v:(b=t.window)==null?void 0:b[0],s=(y=t.hide)!=null?y:(I=t.window)==null?void 0:I[1];if(n===void 0||s===void 0)throw new Ls("presence() needs a window: pass { show, hide } or { window: [show, hide] }");let r=ve(typeof e=="string"?`${e}/opacity`:e),i=r.lastIndexOf("/"),o=i<0?r:r.slice(0,i),a=Oi(t.enter,"enter",Na),l=Oi(t.exit,"exit",za),c=a.apply(o,n,t.enterOpts),u=n+Ci(a,t.enterOpts),h=Ci(l,t.exitOpts),f=s-h;if(f<=n)throw new Ls(`presence('${o}') exit needs ${h.toFixed(3)}s but only ${(s-n).toFixed(3)}s between show (${n}) and hide (${s}) \u2014 widen the window or shorten/speed up the exit`);let d=l.apply(o,f,t.exitOpts),{opacityKeys:g,rest:p}=Ai(c.tracks,r),{opacityKeys:k,rest:T}=Ai(d.tracks,r),w=[C(0,0,{interp:"hold"}),C(u,1,{interp:"hold"}),C(s,0,{interp:"hold"})],m=[];if(g.length>0?g.forEach((x,E)=>{E===0&&x.value!==0&&x.interp!=="hold"?m.push(R(M({},x),{interp:"hold"})):m.push(x)}):m.push(C(n,0),C(u,1)),k.length>0)for(let x of k)m.push(x);else m.push(C(f,1),C(s,0));return{tracks:[pe(r,"number",Di([...w,...m])),...Wa(p,T)],end:s,shownAt:n,hiddenAt:s}}function Fi(e){var h;let t=(h=e.match(/[MmLlHhVvCcQqZz]|-?(?:\d*\.\d+|\d+\.?)(?:[eE][+-]?\d+)?/g))!=null?h:[],n=[],s=0,r=0,i=0,o=0,a=0,l="",c=()=>Number(t[s++]),u=f=>!!f&&/^[MmLlHhVvCcQqZz]$/.test(f);for(;s<t.length;){let f=t[s];if(u(f)?s++:f=l==="M"?"L":l==="m"?"l":l,!f)break;let d=f===f.toLowerCase();switch(f.toUpperCase()){case"M":{let g=c()+(d?r:0),p=c()+(d?i:0);r=g,i=p,o=g,a=p,n.push(["M",g,p]);break}case"L":{let g=c()+(d?r:0),p=c()+(d?i:0);r=g,i=p,n.push(["L",g,p]);break}case"H":{let g=c()+(d?r:0);r=g,n.push(["L",g,i]);break}case"V":{let g=c()+(d?i:0);i=g,n.push(["L",r,g]);break}case"C":{let g=c()+(d?r:0),p=c()+(d?i:0),k=c()+(d?r:0),T=c()+(d?i:0),w=c()+(d?r:0),m=c()+(d?i:0);r=w,i=m,n.push(["C",g,p,k,T,w,m]);break}case"Q":{let g=c()+(d?r:0),p=c()+(d?i:0),k=c()+(d?r:0),T=c()+(d?i:0);r=k,i=T,n.push(["Q",g,p,k,T]);break}case"Z":n.push(["Z"]),r=o,i=a;break;default:s++;break}l=f}return n}function Ya(e){return ln(Fi(e))}var Li="0.19.0-pre.0",Xa=Li.includes("GLISSADE_".concat("VERSION"))?"0.0.0-dev":Li;function Ri(e){if(e==="number")return 1;if(e==="vec2"||e==="vec2-arc")return 2}function Ga(e){return e===void 0?"unknown":Array.isArray(e)?e.join("|"):e}var Ua={Group:{children:{type:"Node[]"}},Rect:{sketch:{type:"SketchStyle"},sketchFill:{type:"HachureSpec"},sketchSeed:{type:"number"}},Circle:{sketch:{type:"SketchStyle"},sketchFill:{type:"HachureSpec"},sketchSeed:{type:"number"}},Path:{sketch:{type:"SketchStyle"},sketchFill:{type:"HachureSpec"},sketchSeed:{type:"number"}},Text:{fontFamily:{type:"string"},fontWeight:{type:"number"},fontStyle:{type:"'normal'|'italic'"},align:{type:"'left'|'center'|'right'"},lineHeight:{type:"number"}},Image:{assetId:{type:"string",required:!0}},Video:{assetId:{type:"string",required:!0},at:{type:"number"},trimStart:{type:"number"},playbackRate:{type:"number"},clipDuration:{type:"number"},sourceFps:{type:"number"}}},Ka={id:{type:"string"},blend:{type:"BlendMode"},filters:{type:"FilterSpec[]"},anchor:{type:"AnchorSpec"},cache:{type:"boolean"}};function Ni(e,t){var r;let n={};for(let{path:i,expects:o}of e.listTargets()){let a=Ga(o),l=Ri(a);n[i]=M({type:a,animatable:!0,target:`<id>/${i}`},l!==void 0?{arity:l}:{})}let s=M(M({},Ka),(r=Ua[t])!=null?r:{});for(let[i,o]of Object.entries(s))n[i]=M({type:o.type,animatable:!1},o.required?{required:!0}:{});return{props:n}}var Qa="@glissade/scene/layout",Ja={width:{type:"number"},height:{type:"number"},gap:{type:"number"},padding:{type:"number"}},Za={direction:{type:"'row'|'column'"},justify:{type:"'start'|'center'|'end'|'space-between'|'space-around'"},align:{type:"'start'|'center'|'end'|'stretch'"},children:{type:"Node[]"}};function ec(){let e=Ni(new se,"Group").props;delete e.children;for(let[n,s]of Object.entries(Ja)){let r=Ri(s.type);e[n]=M({type:s.type,animatable:!0,target:`<id>/${n}`},r!==void 0?{arity:r}:{})}let t=Za;for(let[n,s]of Object.entries(t))e[n]=M({type:s.type,animatable:!1},s.required?{required:!0}:{});return{props:e,subpath:Qa}}var tc={Group:()=>new se,Rect:()=>new un,Circle:()=>new hn,Path:()=>new bt,Text:()=>new Xe,Image:()=>new fn({assetId:"~describe"}),Video:()=>new dn({assetId:"~describe"})},nc=[{name:"to",signature:"to<T>(target, value, opts?: { duration?, ease?, at?, from? }): TimelineBuilder"},{name:"fromTo",signature:"fromTo<T>(target, from, to, opts?: { duration?, ease?, at? }): TimelineBuilder"},{name:"stagger",signature:"stagger<T>(targets, { to: T | ((index, count) => T), from?: T | ((index, count) => T), duration?, ease? }, { each: number | ((rank, count) => number), anchor?, at? }): TimelineBuilder"},{name:"tracks",signature:"tracks(tracks: Track[]): TimelineBuilder"},{name:"set",signature:"set<T>(target, value, opts?: { at? }): TimelineBuilder"},{name:"label",signature:"label(name, at?): TimelineBuilder"},{name:"add",signature:"add(child, at?, opts?: { mode?: 'add'|'sync', timeScale? }): TimelineBuilder"},{name:"sequence",signature:"sequence(subs, opts?: { gap? }): TimelineBuilder"},{name:"at",signature:"at(time, sub): TimelineBuilder"},{name:"call",signature:"call(fn, at?): TimelineBuilder"},{name:"cue",signature:"cue(at, name, data?): TimelineBuilder"},{name:"adBreak",signature:"adBreak(at, opts?: { id?, duration? }): TimelineBuilder"},{name:"editable",signature:"editable(): TimelineBuilder"},{name:"editableDuration",signature:"editableDuration(): TimelineBuilder"}],sc={"@glissade/core/clips":"motion clips: clip/clipList + the popIn/slideIn/pulse/driftLoop literals, presence (enter/exit) and morph (box-FLIP) build-time sugar.","@glissade/core/i18n":"localization: requireParity (id-set diff), localize (doc\u2192doc resolver), t() ambient-table sugar.","@glissade/scene/layout":"flexbox: the Yoga-backed Layout node + LayoutEngine (the only entry that ships Yoga wasm).","@glissade/scene/path":"SVG geometry: pathFromSvg / parseSvgPathData \u2014 parse an SVG `d` string into a PathValue for Path.data."};function rc(){let e={};for(let[n,s]of Object.entries(tc))e[n]=Ni(s(),n);let t=ec();for(let n of["Layout","Stack","Row","Column"])e[n]=t;return{version:Xa,nodes:e,valueTypes:Vt(),easings:Object.keys(it),builder:{methods:nc},createScene:"createScene({ size: { w, h }, children: Node[] }): Scene \u2014 media assets are declared on the Timeline document: timeline({ assets: { <id>: { kind: 'image'|'video', url } } }); an Image/Video node's `assetId` names an entry here.",subpaths:sc}}function zi(){let e=0,t=!1;return{start(n){t=!0;let s,r=i=>{t&&(s!=null||(s=i),n((i-s)/1e3),e=requestAnimationFrame(r))};e=requestAnimationFrame(r)},stop(){t=!1,cancelAnimationFrame(e)}}}function ic(e){var r;let t=(r=e.axis)!=null?r:"y",n=null,s=e.source;return{start(i,o){var c,u;let a=(u=e.range)!=null?u:[0,(c=o.duration)!=null?c:1],l=()=>{if(s instanceof Element){let g=t==="y"?s.scrollHeight-s.clientHeight:s.scrollWidth-s.clientWidth,p=t==="y"?s.scrollTop:s.scrollLeft;return g>0?p/g:0}let h=document.documentElement,f=t==="y"?h.scrollHeight-window.innerHeight:h.scrollWidth-window.innerWidth,d=t==="y"?window.scrollY:window.scrollX;return f>0?d/f:0};n=()=>{let h=Math.min(1,Math.max(0,l()));i(a[0]+h*(a[1]-a[0]))},s.addEventListener("scroll",n,{passive:!0}),n()},stop(){n&&s.removeEventListener("scroll",n),n=null}}}var Vi=class extends Error{constructor(e){super(`machine targets overlap an already-bound target set: ${e.join(", ")} \u2014 concurrent writers to one property is the silent last-writer-wins \xA72.2 exists to kill`),this.name="TargetOverlapError"}};function Bi(e,t={}){var N,V,U,Ze,Re,Ne,et;let{playhead:n}=e,s=e.duration,r=(N=e.markers)!=null?N:[],i=(V=e.driver)!=null?V:zi(),o=(U=t.loop)!=null?U:!1,a=(Ze=t.background)!=null?Ze:"pause",l=(Re=e.visibility)!=null?Re:(()=>"visible"),c=new Map,u=new Map,h=(Ne=t.rate)!=null?Ne:1,f=!1,d=P(!1),g=O=>{f=O,d.set(O)},p=!1,k=new Set((et=e.targets)!=null?et:[]),T=[],w=0,m=null,b=0,v=[0,s],I=0,y=null;function x(O,A){var B,_,K;if(O===A||c.size===0&&u.size===0)return;let L=A>O;for(let ie of r){if(!(L?ie.t>O&&ie.t<=A:ie.t>=A&&ie.t<O))continue;for(let xn of(B=c.get(ie.name))!=null?B:[])xn(ie);let $e=(_=ie.data)==null?void 0:_.kind;if(typeof $e=="string")for(let xn of(K=u.get($e))!=null?K:[])xn(ie)}}function E(O){g(!1),m=null;let A=y;y=null,A==null||A(O)}function $(O){b=O;for(let $e of T)$e.step(O);if(!f)return;if(a==="pause"&&l()==="hidden"){w=n.peek(),m=null;return}m!=null||(m=O);let A=n.peek(),L=w+(O-m)*h,[B,_]=v;if(!(h>=0?L>=_:L<=B)){n.set(L),x(A,L);return}let K=o===!0?{mode:"restart"}:o===!1?null:o,ie=K&&"count"in K&&K.count!==void 0?K.count:1/0;if(!K||I+1>=ie){let $e=h>=0?_:B;n.set($e),x(A,$e),E(!0);return}I++,_-B,K.mode==="alternate"?(x(A,h>=0?_:B),h=-h,w=h>=0?B:_):(x(A,h>=0?_:B),w=h>=0?B:_),m=O,L=w,n.set(L)}function D(){p||(p=!0,i.start($,{duration:s,visibility:l}))}return{playhead:n,get duration(){return s},get playing(){return f},playingSignal:d,get rate(){return h},set rate(O){w=n.peek(),m=f?b:null,h=O},play(O){var _;y&&E(!1),v=(_=O==null?void 0:O.range)!=null?_:[0,s];let A=n.peek(),[L,B]=v;return w=h>=0?A>=B||A<L?L:A:A<=L||A>B?B:A,n.set(w),m=null,I=0,g(!0),D(),{finished:new Promise(K=>{y=K})}},pause(){f&&(w=n.peek(),E(!1))},seek(O){w=Math.min(Math.max(O,0),s),m=f?b:null,n.set(w)},swap(O){var L,B;s=O.duration,r=(L=O.markers)!=null?L:[],k=new Set((B=O.targets)!=null?B:[]);let A=Math.min(n.peek(),s);v=[0,s],w=A,m=f?b:null,I=0,n.set(A)},attach(O){if(O.targets){let A=[];for(let L of O.targets)k.has(L)?A.push(`'${L}' (player timeline)`):T.some(B=>{var _;return(_=B.targets)==null?void 0:_.has(L)})&&A.push(`'${L}' (another machine)`);if(A.length>0)throw new Vi(A)}return T.push(O),D(),()=>{let A=T.indexOf(O);A>=0&&T.splice(A,1)}},onMarker(O,A){let L=c.get(O);return L||(L=new Set,c.set(O,L)),L.add(A),()=>L.delete(A)},onCue(O,A){let L=u.get(O);return L||(L=new Set,u.set(O,L)),L.add(A),()=>L.delete(A)},dispose(){f&&E(!1),T.length=0,p&&i.stop(),p=!1}}}function qi(e,t,n,s,r){var o;let i=e!=null?e:"respect";return i==="ignore"||!t?{autoplay:r}:typeof i=="function"?{autoplay:r,swapTo:i(n)}:{autoplay:!1,seekTo:(o=n.posterTime)!=null?o:s}}function _i(){return typeof matchMedia!="undefined"&&matchMedia("(prefers-reduced-motion: reduce)").matches}function zs(e,t,n,s={}){var T;let r=e,i=t,o=ne(i),a=new wn(n);r.setTextMeasurer(a);let l=r.playhead,c=Bi({playhead:l,duration:o.duration,markers:o.markers,targets:o.tracks.keys()},s),u=()=>a.render(Ue(r,i,l.peek())),h=!1,f=()=>{h||(h=!0,requestAnimationFrame(()=>{h=!1,u()}))},d=l.subscribe(f),g=w=>{if(typeof FontFace=="undefined")return;let m=dt(w.assets);for(let b of m.faces()){let v=new FontFace(b.family,`url(${b.url})`,{weight:String(b.weight),style:b.style});document.fonts.add(v),v.load().then(()=>u(),()=>{})}As(r,w,async b=>{try{let v=await fetch(b);return v.ok?await v.arrayBuffer():void 0}catch(v){return}},M({mode:s.strictFonts?"strict":"dev"},s.osFonts!==void 0?{osFamilies:s.osFonts}:{}))};g(i);let p=((T=s.prefersReducedMotion)!=null?T:_i)(),k=qi(s.reducedMotion,p,i,o.duration,!!s.autoplay);if(k.swapTo){i=k.swapTo;let w=ne(i);c.swap({duration:w.duration,markers:w.markers,targets:w.tracks.keys()}),g(i)}return k.seekTo!==void 0&&c.seek(k.seekTo),u(),k.autoplay&&c.play(),{player:c,backend:a,render:u,swap(w){w.scene&&(r=w.scene,r.setTextMeasurer(a)),i=w.timeline;let m=ne(i);c.swap({duration:m.duration,markers:m.markers,targets:m.tracks.keys()}),g(i),u()},dispose(){d(),c.dispose(),a.dispose()}}}function oc(e,t,n){let s=Object.keys(ne(t).labels);return r=>{if(r==null)return;let i=n(r),o=Object.keys(ne(i.timeline).labels),a=s.filter(l=>!o.includes(l));a.length>0&&console.warn(`[glissade] HMR: this edit removed label(s) ${a.map(l=>`'${l}'`).join(", ")} \u2014 anything seeking to them will no longer resolve`),s=o,e.swap(i)}}var ac=`
|
|
1
|
+
"use strict";var glissade=(()=>{var It=Object.defineProperty,Xi=Object.defineProperties,Gi=Object.getOwnPropertyDescriptor,Ui=Object.getOwnPropertyDescriptors,Ki=Object.getOwnPropertyNames,Et=Object.getOwnPropertySymbols;var Mn=Object.prototype.hasOwnProperty,Ws=Object.prototype.propertyIsEnumerable;var js=e=>{throw TypeError(e)};var Sn=(e,t,n)=>t in e?It(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,M=(e,t)=>{for(var n in t||(t={}))Mn.call(t,n)&&Sn(e,n,t[n]);if(Et)for(var n of Et(t))Ws.call(t,n)&&Sn(e,n,t[n]);return e},R=(e,t)=>Xi(e,Ui(t));var Hs=e=>typeof e=="symbol"?e:e+"",ze=(e,t)=>{var n={};for(var s in e)Mn.call(e,s)&&t.indexOf(s)<0&&(n[s]=e[s]);if(e!=null&&Et)for(var s of Et(e))t.indexOf(s)<0&&Ws.call(e,s)&&(n[s]=e[s]);return n};var Qi=(e,t)=>{for(var n in t)It(e,n,{get:t[n],enumerable:!0})},Ji=(e,t,n,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of Ki(t))!Mn.call(e,r)&&r!==n&&It(e,r,{get:()=>t[r],enumerable:!(s=Gi(t,r))||s.enumerable});return e};var Zi=e=>Ji(It({},"__esModule",{value:!0}),e);var S=(e,t,n)=>Sn(e,typeof t!="symbol"?t+"":t,n),Tn=(e,t,n)=>t.has(e)||js("Cannot "+n);var F=(e,t,n)=>(Tn(e,t,"read from private field"),n?n.call(e):t.get(e)),J=(e,t,n)=>t.has(e)?js("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n),Y=(e,t,n,s)=>(Tn(e,t,"write to private field"),s?s.call(e,n):t.set(e,n),n),q=(e,t,n)=>(Tn(e,t,"access private method"),n);var cc={};Qi(cc,{ALL_FILTER_KINDS:()=>Cs,BakeError:()=>Kt,BindTypeMismatchError:()=>Fr,Canvas2DBackend:()=>wn,Circle:()=>un,CircularDependencyError:()=>xr,ClipError:()=>le,ColdAssetError:()=>vt,ColorParseError:()=>Fn,Custom:()=>Zr,DEFAULT_EASE:()=>Zs,DL_SNAPSHOT_VERSION:()=>Xr,DeterminismViolationError:()=>mi,DlSnapshotError:()=>nn,DuplicateNodeIdError:()=>gi,EachError:()=>Ge,FilterValidationError:()=>Fe,FollowPath:()=>ki,FontValidationError:()=>Ir,Group:()=>re,GsPlayerElement:()=>Wi,Highlight:()=>fi,IDENTITY:()=>Ee,Image:()=>fn,ImageNode:()=>fn,LayoutEngineMissingError:()=>Ms,MEASURE_QUANTUM_PX:()=>sn,MESH_DOWNSCALE:()=>ka,MESH_SHEPARD_POWER:()=>va,MESH_SIGMA:()=>Os,MorphError:()=>Ke,NODE_TAXONOMY:()=>Wo,Node:()=>Z,Path:()=>bt,PositionError:()=>ss,PresenceError:()=>Ns,Raster2D:()=>Ps,Rect:()=>hn,ReservedNodeIdError:()=>yi,ShaderEffect:()=>pa,SidecarVersionError:()=>Jn,SketchValidationError:()=>ge,TARGET_PATH:()=>Ae,TargetOverlapError:()=>Vi,Text:()=>Xe,TextCursor:()=>di,TimelineValidationError:()=>G,TokenHighlight:()=>vi,TokenMatchError:()=>St,TrackValidationError:()=>ve,UnboundTargetError:()=>Dr,UnknownEasingError:()=>An,UnknownValueTypeError:()=>Nn,UnresolvableTargetError:()=>Nt,ValueTypeInferenceError:()=>jn,Video:()=>dn,WriteDuringEvaluationError:()=>Gt,applyToPoint:()=>Hr,arcLength:()=>ys,assignKeyIds:()=>es,audioOffsetSamples:()=>ur,auditCacheCold:()=>ia,bake:()=>Fo,bakeCheckpointed:()=>No,batch:()=>So,beginReadPhase:()=>Sr,bindScene:()=>bi,bindTimeline:()=>as,booleanType:()=>qn,breakLines:()=>se,buildFontRegistry:()=>dt,buildTimeline:()=>Pr,clip:()=>we,clipList:()=>Aa,clockDriver:()=>zi,coercePathData:()=>rn,collapseReplacer:()=>He,collectLocalizedTextUsages:()=>da,collectTextUsages:()=>xi,colorType:()=>Vn,compileTimeline:()=>ne,computed:()=>ft,createDisplayListBuilder:()=>yt,createPlayer:()=>Bi,createPlayhead:()=>Jt,createScene:()=>sa,cubicBezier:()=>On,cubicBezierDerivative:()=>Cn,defineGsPlayer:()=>Yi,deleteSidecarTrack:()=>yr,describe:()=>rc,diffDisplayLists:()=>ds,drawOn:()=>pi,drawOnEach:()=>ea,driftLoop:()=>Na,each:()=>Zo,easingDerivatives:()=>Dt,easings:()=>it,emitDevWarning:()=>W,emptySidecar:()=>mr,endReadPhase:()=>Mr,estimatingMeasurer:()=>vs,evaluate:()=>Ue,evaluateAt:()=>cs,filtersToCanvasFilter:()=>on,flatten:()=>wt,followPath:()=>la,fontString:()=>yn,formatColor:()=>Lt,formatDisplayDiff:()=>Yr,fromTRS:()=>fs,getLayoutEngine:()=>ni,getTimelineCallbacks:()=>Ar,getValueType:()=>at,glow:()=>Kr,hachureLines:()=>bs,hashKeys:()=>Ht,highlight:()=>jo,inReadPhase:()=>Mo,inferValueType:()=>Ce,invert:()=>jr,isDurationEditable:()=>dr,isEditableNodeId:()=>lt,isExemptFamily:()=>$r,key:()=>C,lerpColor:()=>ue,listValueTypes:()=>Vt,matEquals:()=>Te,matchTokenRun:()=>$s,mediaPrefersReducedMotion:()=>_i,mergeSidecar:()=>wr,mergeSidecarDetailed:()=>ts,meshRasterSize:()=>Mi,migrateSidecar:()=>Zn,morph:()=>Ra,motionPath:()=>xt,mount:()=>zs,multiply:()=>mt,namedEasing:()=>st,normalizeEditedKeys:()=>br,numberType:()=>Rn,oklabToRgba:()=>Be,paintType:()=>Wn,parseCmap:()=>jt,parseColor:()=>de,parseDisplaySnapshot:()=>Ur,parseSvgPathData:()=>Fi,pathFromSegs:()=>ln,pathFromSvg:()=>Ya,pathLength:()=>aa,pathType:()=>_n,planReducedMotion:()=>qi,pointAtLength:()=>ca,popIn:()=>Pa,presence:()=>Ha,pulse:()=>Fa,quantize:()=>X,random:()=>ce,rasterizeMesh:()=>Si,registerValueType:()=>ae,reprOf:()=>Bt,requireLayoutEngine:()=>si,resolveAnchor:()=>xs,resolveEase:()=>Hn,resolveEaseDerivative:()=>Yn,resolveSketch:()=>gs,resolveTweenTarget:()=>xe,revealSchedule:()=>ei,rgbaToOklab:()=>Oe,roughen:()=>an,roundedRectSegs:()=>Ye,sampleTrack:()=>Wt,scrollDriver:()=>ic,segmentGraphemes:()=>ye,segmentWords:()=>cn,serializeDisplayList:()=>Gr,setDefaultMeasurer:()=>Jr,setDevWarning:()=>rr,setLayoutEngine:()=>ti,setScheduler:()=>bo,setShaderRunner:()=>Ei,setSidecarTrack:()=>gr,signal:()=>A,sketchStrokes:()=>Qr,slideIn:()=>Da,spring:()=>fe,springEasing:()=>Pn,springEasingDerivative:()=>Dn,springPresets:()=>nr,springTo:()=>or,stagger:()=>_t,stringType:()=>Bn,swapOnHmr:()=>oc,synchronousScheduler:()=>rs,targetNodeId:()=>qe,textCursor:()=>Ho,timeline:()=>Do,tokenHighlight:()=>ha,track:()=>pe,transitionToClip:()=>Pi,typewriter:()=>Go,untracked:()=>To,validateFilters:()=>ps,validateFonts:()=>os,validateHachure:()=>ws,validateSceneFonts:()=>As,validateSketch:()=>ms,validateTrack:()=>ct,vec2ArcType:()=>zn,vec2Equals:()=>qt,vec2Signal:()=>We,vec2Type:()=>Ln,velocityAt:()=>Xn,withDeterminismGuards:()=>na});var At=2.5949095,Pt=2.70158,Ve=2*Math.PI/3,nt=2*Math.PI/4.5;function $t(e){return e<1/2.75?7.5625*e*e:e<2/2.75?7.5625*(e-=1.5/2.75)*e+.75:e<2.5/2.75?7.5625*(e-=2.25/2.75)*e+.9375:7.5625*(e-=2.625/2.75)*e+.984375}var it={linear:e=>e,easeInQuad:e=>e*e,easeOutQuad:e=>1-(1-e)*(1-e),easeInOutQuad:e=>e<.5?2*e*e:1-(-2*e+2)**2/2,easeInCubic:e=>e**3,easeOutCubic:e=>1-(1-e)**3,easeInOutCubic:e=>e<.5?4*e**3:1-(-2*e+2)**3/2,easeInQuart:e=>e**4,easeOutQuart:e=>1-(1-e)**4,easeInOutQuart:e=>e<.5?8*e**4:1-(-2*e+2)**4/2,easeInQuint:e=>e**5,easeOutQuint:e=>1-(1-e)**5,easeInOutQuint:e=>e<.5?16*e**5:1-(-2*e+2)**5/2,easeInSine:e=>1-Math.cos(e*Math.PI/2),easeOutSine:e=>Math.sin(e*Math.PI/2),easeInOutSine:e=>-(Math.cos(Math.PI*e)-1)/2,easeInExpo:e=>e===0?0:2**(10*e-10),easeOutExpo:e=>e===1?1:1-2**(-10*e),easeInOutExpo:e=>e===0?0:e===1?1:e<.5?2**(20*e-10)/2:(2-2**(-20*e+10))/2,easeInCirc:e=>1-Math.sqrt(1-e*e),easeOutCirc:e=>Math.sqrt(1-(e-1)*(e-1)),easeInOutCirc:e=>e<.5?(1-Math.sqrt(1-(2*e)**2))/2:(Math.sqrt(1-(-2*e+2)**2)+1)/2,easeInBack:e=>Pt*e**3-1.70158*e*e,easeOutBack:e=>1+Pt*(e-1)**3+1.70158*(e-1)**2,easeInOutBack:e=>e<.5?(2*e)**2*(3.5949095*2*e-At)/2:((2*e-2)**2*(3.5949095*(e*2-2)+At)+2)/2,easeInElastic:e=>e===0?0:e===1?1:-(2**(10*e-10))*Math.sin((e*10-10.75)*Ve),easeOutElastic:e=>e===0?0:e===1?1:2**(-10*e)*Math.sin((e*10-.75)*Ve)+1,easeInOutElastic:e=>e===0?0:e===1?1:e<.5?-(2**(20*e-10)*Math.sin((20*e-11.125)*nt))/2:2**(-20*e+10)*Math.sin((20*e-11.125)*nt)/2+1,easeInBounce:e=>1-$t(1-e),easeOutBounce:$t,easeInOutBounce:e=>e<.5?(1-$t(1-2*e))/2:(1+$t(2*e-1))/2};function Ot(e){return e<1/2.75?2*7.5625*e:e<2/2.75?2*7.5625*(e-1.5/2.75):e<2.5/2.75?2*7.5625*(e-2.25/2.75):2*7.5625*(e-2.625/2.75)}var ke=Math.LN2,Dt={linear:()=>1,easeInQuad:e=>2*e,easeOutQuad:e=>2*(1-e),easeInOutQuad:e=>e<.5?4*e:4*(1-e),easeInCubic:e=>3*e**2,easeOutCubic:e=>3*(1-e)**2,easeInOutCubic:e=>e<.5?12*e**2:12*(1-e)**2,easeInQuart:e=>4*e**3,easeOutQuart:e=>4*(1-e)**3,easeInOutQuart:e=>e<.5?32*e**3:32*(1-e)**3,easeInQuint:e=>5*e**4,easeOutQuint:e=>5*(1-e)**4,easeInOutQuint:e=>e<.5?80*e**4:80*(1-e)**4,easeInSine:e=>Math.PI/2*Math.sin(e*Math.PI/2),easeOutSine:e=>Math.PI/2*Math.cos(e*Math.PI/2),easeInOutSine:e=>Math.PI/2*Math.sin(Math.PI*e),easeInExpo:e=>e===0?0:10*ke*2**(10*e-10),easeOutExpo:e=>e===1?0:10*ke*2**(-10*e),easeInOutExpo:e=>e===0||e===1?0:e<.5?10*ke*2**(20*e-10):10*ke*2**(-20*e+10),easeInCirc:e=>e/Math.sqrt(1-e*e),easeOutCirc:e=>(1-e)/Math.sqrt(1-(e-1)*(e-1)),easeInOutCirc:e=>e<.5?2*e/Math.sqrt(1-4*e*e):(2-2*e)/Math.sqrt(1-(-2*e+2)**2),easeInBack:e=>3*Pt*e**2-2*1.70158*e,easeOutBack:e=>3*Pt*(e-1)**2+2*1.70158*(e-1),easeInOutBack:e=>e<.5?12*3.5949095*e**2-4*At*e:3*3.5949095*(2*e-2)**2+2*At*(2*e-2),easeInElastic:e=>{if(e===0||e===1)return 0;let t=(e*10-10.75)*Ve,n=2**(10*e-10);return-(10*ke*n*Math.sin(t)+n*10*Ve*Math.cos(t))},easeOutElastic:e=>{if(e===0||e===1)return 0;let t=(e*10-.75)*Ve,n=2**(-10*e);return-10*ke*n*Math.sin(t)+n*10*Ve*Math.cos(t)},easeInOutElastic:e=>{if(e===0||e===1)return 0;let t=(20*e-11.125)*nt;if(e<.5){let s=2**(20*e-10);return-(20*ke*s*Math.sin(t)+s*20*nt*Math.cos(t))/2}let n=2**(-20*e+10);return(-20*ke*n*Math.sin(t)+n*20*nt*Math.cos(t))/2},easeInBounce:e=>Ot(1-e),easeOutBounce:Ot,easeInOutBounce:e=>e<.5?Ot(1-2*e):Ot(2*e-1)},Zs="easeInOutCubic";function er(e,t,n,s){let r=3*e-3*n+1,i=3*n-6*e,o=3*e,a=3*t-3*s+1,l=3*s-6*t,c=3*t,h=m=>((r*m+i)*m+o)*m,u=m=>((a*m+l)*m+c)*m,f=m=>(3*r*m+2*i)*m+o;return{sampleY:u,sampleDX:f,sampleDY:m=>(3*a*m+2*l)*m+c,solveU:m=>{let k=m;for(let p=0;p<8;p++){let b=h(k)-m;if(Math.abs(b)<1e-7)return k;let v=f(k);if(Math.abs(v)<1e-6)break;k-=b/v}let T=0,y=1;for(k=m;y-T>1e-7;)h(k)<m?T=k:y=k,k=(T+y)/2;return k}}}function On(e,t,n,s){let r=er(e,t,n,s);return i=>i<=0?0:i>=1?1:r.sampleY(r.solveU(i))}function Cn(e,t,n,s){let r=er(e,t,n,s);return i=>{let o=r.solveU(Math.min(1,Math.max(0,i))),a=r.sampleDX(o);return Math.abs(a)<1e-9?0:r.sampleDY(o)/a}}var An=class extends Error{constructor(e){super(`unknown easing '${e}'; register it via easings or use cubicBezier/spring`),this.name="UnknownEasingError"}};function st(e){let t=it[e];if(!t)throw new An(e);return t}var eo=.005;function ot(e){var n;let t=(n=e.mass)!=null?n:1;if(!(e.stiffness>0)||!(e.damping>0)||!(t>0))throw new RangeError("spring stiffness, damping, and mass must all be > 0");return{w0:Math.sqrt(e.stiffness/t),zeta:e.damping/(2*Math.sqrt(e.stiffness*t))}}function to(e,t){if(t<=0)return 0;let{w0:n,zeta:s}=ot(e);if(Math.abs(s-1)<1e-9)return n*n*t*Math.exp(-n*t);if(s<1){let a=n*Math.sqrt(1-s*s);return Math.exp(-s*n*t)*(n*n/a)*Math.sin(a*t)}let r=Math.sqrt(s*s-1),i=-n*(s-r),o=-n*(s+r);return i*o*(Math.exp(i*t)-Math.exp(o*t))/(i-o)}function rt(e,t){if(t<=0)return 0;let{w0:n,zeta:s}=ot(e);if(Math.abs(s-1)<1e-9)return 1-Math.exp(-n*t)*(1+n*t);if(s<1){let a=n*Math.sqrt(1-s*s);return 1-Math.exp(-s*n*t)*(Math.cos(a*t)+s*n/a*Math.sin(a*t))}let r=Math.sqrt(s*s-1),i=-n*(s-r),o=-n*(s+r);return 1+(o*Math.exp(i*t)-i*Math.exp(o*t))/(i-o)}function Rt(e,t){var a;let n=(a=t==null?void 0:t.settleTolerance)!=null?a:eo,{w0:s,zeta:r}=ot(e);if(r<1){let l=s*Math.sqrt(1-r*r),c=Math.sqrt(1+(r*s/l)**2);return Math.log(c/n)/(r*s)}let i=1/s;for(;1-rt(e,i)>n;)i*=2;let o=0;for(let l=0;l<64&&i-o>1e-9;l++){let c=(o+i)/2;1-rt(e,c)>n?o=c:i=c}return i}function tr(e,t,n){let s=Rt(e,n);return rt(e,Math.min(t,s))/rt(e,s)}function no(e,t,n){let{w0:s,zeta:r}=ot(e),i,o,a;if(Math.abs(r-1)<1e-9){let c=n+s*t;i=h=>h<=0?t:Math.exp(-s*h)*(t+c*h),o=h=>h<=0?n:Math.exp(-s*h)*(n-s*c*h),a=h=>Math.exp(-s*h)*(Math.abs(t)+Math.abs(c)*h)}else if(r<1){let c=s*Math.sqrt(1-r*r),h=(n+r*s*t)/c,u=Math.hypot(t,h);i=f=>f<=0?t:Math.exp(-r*s*f)*(t*Math.cos(c*f)+h*Math.sin(c*f)),o=f=>f<=0?n:Math.exp(-r*s*f)*(n*Math.cos(c*f)-(s*s*t+r*s*n)/c*Math.sin(c*f)),a=f=>Math.exp(-r*s*f)*u}else{let c=Math.sqrt(r*r-1),h=s*(-r+c),u=s*(-r-c),f=(n-u*t)/(h-u),d=(h*t-n)/(h-u);i=g=>g<=0?t:f*Math.exp(h*g)+d*Math.exp(u*g),o=g=>g<=0?n:f*h*Math.exp(h*g)+d*u*Math.exp(u*g),a=g=>Math.abs(f)*Math.exp(h*g)+Math.abs(d)*Math.exp(u*g)}return{value:i,velocity:o,settleTime:c=>{let h=c!=null?c:Math.abs(t)*.005+1e-6;if(a(0)<=h&&Math.abs(n)<1e-12)return 0;let u=1/s,f=0;for(;a(u)>h&&f++<64;)u*=2;let d=0;for(let g=0;g<64&&u-d>1e-9;g++){let m=(d+u)/2;Math.max(a(m),a(m*1.05+1e-6))>h?d=m:u=m}return u}}}var fe=Object.assign(e=>{var t;return ot(e),{kind:"spring",stiffness:e.stiffness,damping:e.damping,mass:(t=e.mass)!=null?t:1}},{duration:Rt,value:tr,retarget:no}),nr={default:{stiffness:170,damping:26},gentle:{stiffness:120,damping:14},wobbly:{stiffness:180,damping:12},stiff:{stiffness:210,damping:20},slow:{stiffness:280,damping:60},molasses:{stiffness:280,damping:120}};function Pn(e){let t=Rt(e);return n=>tr(e,n*t)}function Dn(e){let t=Rt(e),n=t/rt(e,t);return s=>s>=1?0:to(e,s*t)*n}var sr=e=>{var t;(t=globalThis.console)==null||t.warn(`[glissade] ${e}`)};function rr(e){sr=e}function W(e){sr(e)}var so=/^#([0-9a-f]{3}|[0-9a-f]{4}|[0-9a-f]{6}|[0-9a-f]{8})$/i,ro=/^rgba?\(\s*([\d.]+)\s*[, ]\s*([\d.]+)\s*[, ]\s*([\d.]+)\s*(?:[,/]\s*([\d.]+%?)\s*)?\)$/i,Fn=class extends Error{constructor(e){super(`cannot parse color '${e}' (supported: #rgb[a], #rrggbb[aa], rgb()/rgba())`),this.name="ColorParseError"}};function de(e){let t=so.exec(e);if(t){let s=t[1];s.length<=4&&(s=[...s].map(i=>i+i).join(""));let r=parseInt(s,16);return s.length===6?{r:r>>16,g:r>>8&255,b:r&255,a:1}:{r:r>>>24&255,g:r>>>16&255,b:r>>>8&255,a:(r&255)/255}}let n=ro.exec(e);if(n){let s=n[4],r=s===void 0?1:s.endsWith("%")?parseFloat(s)/100:parseFloat(s);return{r:parseFloat(n[1]),g:parseFloat(n[2]),b:parseFloat(n[3]),a:r}}throw new Fn(e)}function Lt(e){let t=i=>Math.min(255,Math.max(0,Math.round(i))),n=i=>t(i).toString(16).padStart(2,"0"),s=`#${n(e.r)}${n(e.g)}${n(e.b)}`,r=Math.min(1,Math.max(0,e.a));return r>=1?s:`${s}${n(r*255)}`}function En(e){let t=e/255;return t<=.04045?t/12.92:((t+.055)/1.055)**2.4}function In(e){return(e<=.0031308?e*12.92:1.055*e**(1/2.4)-.055)*255}function Oe(e){let t=En(e.r),n=En(e.g),s=En(e.b),r=Math.cbrt(.4122214708*t+.5363325363*n+.0514459929*s),i=Math.cbrt(.2119034982*t+.6806995451*n+.1073969566*s),o=Math.cbrt(.0883024619*t+.2817188376*n+.6299787005*s);return{L:.2104542553*r+.793617785*i-.0040720468*o,a:1.9779984951*r-2.428592205*i+.4505937099*o,b:.0259040371*r+.7827717662*i-.808675766*o,alpha:e.a}}function Be(e){let t=(e.L+.3963377774*e.a+.2158037573*e.b)**3,n=(e.L-.1055613458*e.a-.0638541728*e.b)**3,s=(e.L-.0894841775*e.a-1.291485548*e.b)**3;return{r:In(4.0767416621*t-3.3077115913*n+.2309699292*s),g:In(-1.2684380046*t+2.6097574011*n-.3413193965*s),b:In(-.0041960863*t-.7034186147*n+1.707614701*s),a:e.alpha}}function ue(e,t,n){let s=Oe(de(e)),r=Oe(de(t)),i=(o,a)=>o+(a-o)*n;return Lt(Be({L:i(s.L,r.L),a:i(s.a,r.a),b:i(s.b,r.b),alpha:i(s.alpha,r.alpha)}))}var zt=new Map;function ae(e){zt.set(e.id,e)}var Nn=class extends Error{constructor(e){super(`unknown value type '${e}'; register it via registerValueType()`),this.name="UnknownValueTypeError"}};function at(e){let t=zt.get(e);if(!t)throw new Nn(e);return t}function Vt(){return[...zt.keys()]}function Bt(e){var t,n;return(n=(t=zt.get(e))==null?void 0:t.repr)!=null?n:e}var Rn={id:"number",lerp:(e,t,n)=>e+(t-e)*n,extrapolates:!0,equals:Object.is,add:(e,t)=>e+t,sub:(e,t)=>e-t,scale:(e,t)=>e*t,defaultHandoff:"spring"},qt=(e,t)=>e[0]===t[0]&&e[1]===t[1],Ln={id:"vec2",lerp:(e,t,n)=>[e[0]+(t[0]-e[0])*n,e[1]+(t[1]-e[1])*n],extrapolates:!0,equals:qt,add:(e,t)=>[e[0]+t[0],e[1]+t[1]],sub:(e,t)=>[e[0]-t[0],e[1]-t[1]],scale:(e,t)=>[e[0]*t,e[1]*t],defaultHandoff:"spring"},zn={id:"vec2-arc",repr:"vec2",lerp:(e,t,n)=>{let s=Math.hypot(e[0],e[1]),r=Math.hypot(t[0],t[1]),i=Math.atan2(e[1],e[0]),o=Math.atan2(t[1],t[0])-i;for(;o>Math.PI;)o-=2*Math.PI;for(;o<-Math.PI;)o+=2*Math.PI;let a=s+(r-s)*n,l=i+o*n;return[a*Math.cos(l),a*Math.sin(l)]},extrapolates:!0,equals:qt,defaultHandoff:"blend-from-frozen"},Vn={id:"color",lerp:ue,extrapolates:!0,equals:(e,t)=>e===t,defaultHandoff:"blend-from-frozen"};function ir(e){return{id:e,lerp:(t,n,s)=>s>=1?n:t,extrapolates:!1,equals:(t,n)=>Object.is(t,n),defaultHandoff:"cut"}}var Bn=ir("string"),qn=ir("boolean"),$n=(e,t,n)=>[e[0]+(t[0]-e[0])*n,e[1]+(t[1]-e[1])*n];function Ys(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++){let s=e[n],r=t[n];if(s.closed!==r.closed||s.v.length!==r.v.length)return!1}return!0}var Xs=!1,_n={id:"path",lerp:(e,t,n)=>Ys(e,t)?e.map((s,r)=>{let i=t[r];return{closed:s.closed,v:s.v.map((o,a)=>$n(o,i.v[a],n)),in:s.in.map((o,a)=>$n(o,i.in[a],n)),out:s.out.map((o,a)=>$n(o,i.out[a],n))}}):(Xs||(Xs=!0,W("path lerp with mismatched topology (contour/vertex counts or closed flags differ): snapping instead of morphing \u2014 supply matched vertex counts (\xA72.2)")),n>=1?t:e),extrapolates:!1,equals:(e,t)=>{if(e===t)return!0;if(!Ys(e,t))return!1;let n=(s,r)=>s[0]===r[0]&&s[1]===r[1];return e.every((s,r)=>{let i=t[r];return s.v.every((o,a)=>n(o,i.v[a]))&&s.in.every((o,a)=>n(o,i.in[a]))&&s.out.every((o,a)=>n(o,i.out[a]))})},defaultHandoff:"blend-from-frozen"},Ft=(e,t,n)=>e+(t-e)*n,Ct=(e,t,n)=>[Ft(e[0],t[0],n),Ft(e[1],t[1],n)];function Gs(e){try{return Lt(R(M({},de(e)),{a:0}))}catch(t){return e}}function io(e,t,n){try{return ue(e,t,n)}catch(s){return n>=1?t:e}}function Us(e,t){let n=t.stops.map(r=>({offset:r.offset,color:e})),s=t.interpolation?{interpolation:t.interpolation}:{};return t.kind==="radial"?M(M(M({kind:"radial",stops:n},t.center?{center:t.center}:{}),t.radius!==void 0?{radius:t.radius}:{}),s):M(M(M({kind:"linear",stops:n},t.from?{from:t.from}:{}),t.to?{to:t.to}:{}),s)}var Ks=!1;function tt(e,t,n,s="paint lerp across mismatched gradient shapes (different kind or stop count): snapping instead of interpolating \u2014 match the kind + stop count on both keyframes (\xA72.2)"){return Ks||(Ks=!0,W(s)),e>=1?n:t}var oo=(e,t)=>e.length===t.length&&e.every((n,s)=>n.offset===t[s].offset&&n.color===t[s].color),Wn={id:"paint",lerp:(e,t,n)=>{var a,l,c,h;if(e.kind==="color"&&t.kind==="color")return{kind:"color",color:ue(e.color,t.color,n)};if(e.kind==="mesh"&&t.kind==="mesh"){if(e.points.length!==t.points.length)return tt(n,e,t);if(e.interpolation!==t.interpolation)return tt(n,e,t,`paint lerp across mismatched mesh interpolation modes ('${(a=e.interpolation)!=null?a:"smooth"}' \u2192 '${(l=t.interpolation)!=null?l:"smooth"}'): snapping instead of interpolating \u2014 the blend kernel is discrete, so it switches once at the boundary; match \`interpolation\` on both keyframes to morph the points (\xA73 Paint)`);let u=e.points.map((d,g)=>{let m=t.points[g];return{pos:Ct(d.pos,m.pos,n),color:ue(d.color,m.color,n)}}),f=e.bg!==void 0||t.bg!==void 0?{bg:io((c=e.bg)!=null?c:Gs(t.bg),(h=t.bg)!=null?h:Gs(e.bg),n)}:{};return M(M({kind:"mesh",points:u},e.interpolation?{interpolation:e.interpolation}:{}),f)}if(e.kind==="mesh"||t.kind==="mesh")return tt(n,e,t);let s=e,r=t;if(s.kind==="color"&&r.kind!=="color"?s=Us(s.color,r):r.kind==="color"&&s.kind!=="color"&&(r=Us(r.color,s)),s.kind==="color"||r.kind==="color"||s.kind!==r.kind||s.stops.length!==r.stops.length)return tt(n,e,t);let i=s.stops.map((u,f)=>({offset:Ft(u.offset,r.stops[f].offset,n),color:ue(u.color,r.stops[f].color,n)})),o=s.interpolation?{interpolation:s.interpolation}:{};return s.kind==="radial"&&r.kind==="radial"?M(M(M({kind:"radial",stops:i},s.center&&r.center?{center:Ct(s.center,r.center,n)}:s.center?{center:s.center}:{}),s.radius!==void 0&&r.radius!==void 0?{radius:Ft(s.radius,r.radius,n)}:s.radius!==void 0?{radius:s.radius}:{}),o):s.kind==="linear"&&r.kind==="linear"?M(M(M({kind:"linear",stops:i},s.from&&r.from?{from:Ct(s.from,r.from,n)}:s.from?{from:s.from}:{}),s.to&&r.to?{to:Ct(s.to,r.to,n)}:s.to?{to:s.to}:{}),o):tt(n,e,t)},extrapolates:!1,equals:(e,t)=>e===t?!0:e.kind!==t.kind?!1:e.kind==="color"?t.kind==="color"&&e.color===t.color:e.kind==="mesh"?t.kind!=="mesh"||e.interpolation!==t.interpolation||e.bg!==t.bg||e.points.length!==t.points.length?!1:e.points.every((n,s)=>{let r=t.points[s];return n.color===r.color&&n.pos[0]===r.pos[0]&&n.pos[1]===r.pos[1]}):t.kind==="color"||t.kind==="mesh"||!oo(e.stops,t.stops)||e.interpolation!==t.interpolation?!1:e.kind==="radial"&&t.kind==="radial"?JSON.stringify(e.center)===JSON.stringify(t.center)&&e.radius===t.radius:e.kind==="linear"&&t.kind==="linear"?JSON.stringify(e.from)===JSON.stringify(t.from)&&JSON.stringify(e.to)===JSON.stringify(t.to):!1,defaultHandoff:"blend-from-frozen"},jn=class extends Error{constructor(e){super(`cannot infer a value type for ${JSON.stringify(e)}; register a custom type`),this.name="ValueTypeInferenceError"}},ao=e=>typeof e=="object"&&e!==null&&typeof e.closed=="boolean"&&Array.isArray(e.v)&&Array.isArray(e.in)&&Array.isArray(e.out),co=e=>typeof e=="object"&&e!==null&&(e.kind==="color"||e.kind==="linear"||e.kind==="radial"||e.kind==="mesh");function Ce(e){if(typeof e=="number")return"number";if(typeof e=="boolean")return"boolean";if(co(e))return"paint";if(Array.isArray(e)&&e.length===2&&e.every(t=>typeof t=="number"))return"vec2";if(Array.isArray(e)&&e.length>0&&e.every(ao))return"path";if(typeof e=="string")try{return de(e),"color"}catch(t){return"string"}throw new jn(e)}ae(Rn);ae(Ln);ae(zn);ae(Vn);ae(Bn);ae(qn);ae(_n);ae(Wn);var ve=class extends Error{constructor(e,t){super(`track '${e}': ${t}`),this.name="TrackValidationError"}};function ct(e){let t=at(e.type);if(e.keys.length===0)throw new ve(e.target,"must have at least one key");if(t.defaultHandoff==="cut")for(let n of e.keys)n.interp!=="hold"&&(n.interp="hold");for(let n=1;n<e.keys.length;n++){let s=e.keys[n-1],r=e.keys[n];if(r.t<=s.t)throw new ve(e.target,`keys must be strictly increasing in t (key[${n}] at t=${r.t} after t=${s.t})`)}if(!/^[^/]+\/.+$/.test(e.target))throw new ve(e.target,"target must be '<nodeId>/<prop.path>' (e.g. 'circle/opacity')")}function C(e,t,n){if(n===void 0)return{t:e,value:t};if(typeof n=="string"||"kind"in n)return{t:e,value:t,ease:n};let s=n,r={t:e,value:t};return s.ease!==void 0&&(r.ease=s.ease),s.interp!==void 0&&(r.interp=s.interp),s.id!==void 0&&(r.id=s.id),s.derived!==void 0&&(r.derived=s.derived),r}function or(e,t,n,s){let r=fe.duration(s);if(e-r<0)throw new ve("springTo",`this spring needs ${r.toFixed(3)}s to settle \u2014 endT must be \u2265 its duration (got ${e})`);return[C(e-r,t),C(e,n,fe(s))]}function _t(e,t){let n=typeof t=="function"?t:s=>s*t;return e.map((s,r)=>{let i=n(r);return R(M({},s),{keys:s.keys.map(o=>R(M({},o),{t:o.t+i}))})})}function pe(e,t,n,s){let r={target:e,type:t,keys:n};return(s==null?void 0:s.editable)!==void 0&&(r.editable=s.editable),ct(r),r}function Hn(e){return e===void 0?st("linear"):typeof e=="string"?st(e):e.kind==="cubicBezier"?On(...e.pts):Pn(e)}var Qs=new Set;function Yn(e){if(e===void 0)return Dt.linear;if(typeof e=="string"){let t=Dt[e];if(t)return t;let n=st(e);Qs.has(e)||(Qs.add(e),W(`easing '${e}' has no registered derivative; velocity uses a numeric fallback \u2014 register one in easingDerivatives for exact interruption handoff`));let s=1/1024;return r=>(n(Math.min(1,r+s))-n(Math.max(0,r-s)))/(Math.min(1,r+s)-Math.max(0,r-s))}return e.kind==="cubicBezier"?Cn(...e.pts):Dn(e)}var Js=new WeakMap;function ar(e){let t=Js.get(e);return t||(t={cursor:1,easeCache:new Array(e.keys.length)},Js.set(e,t)),t}function cr(e,t,n){let s=t.easeCache[n];return s||(s=Hn(e.keys[n].ease),t.easeCache[n]=s),s}function lr(e,t,n){let s=e.length;for(let o=Math.max(1,n-1);o<=Math.min(s-1,n+1);o++)if(e[o-1].t<=t&&t<e[o].t)return o;if(t<e[0].t)return 0;if(t>=e[s-1].t)return s;let r=1,i=s-1;for(;r<i;){let o=r+i>>1;e[o].t<=t?r=o+1:i=o}return r}function Xn(e,t){let n=at(e.type);if(!n.sub||!n.scale)return null;let s=e.keys,r=s.length,i=ar(e),o=lr(s,t,i.cursor),a=n.scale(n.sub(s[0].value,s[0].value),0);if(o===0||o>=r)return a;let l=s[o];if(l.interp==="hold")return a;let c=s[o-1],h=l.t-c.t,u=(t-c.t)/h;if(!n.extrapolates){let d=cr(e,i,o)(u);if(d<0||d>1)return a}let f=Yn(l.ease)(u);return n.scale(n.sub(l.value,c.value),f/h)}function Wt(e,t){let n=e.keys,s=n.length,r=ar(e),i=lr(n,t,r.cursor);if(i===0)return n[0].value;if(i>=s)return n[s-1].value;r.cursor=i;let o=n[i],a=n[i-1];if(o.interp==="hold")return a.value;let l=at(e.type),c=(t-a.t)/(o.t-a.t),h=cr(e,r,i)(c);return!l.extrapolates&&(h<0||h>1)&&(r.warnedClamp||(r.warnedClamp=!0,W(`track '${e.target}' (type '${e.type}') clamped an out-of-range eased value \u2014 non-extrapolating types can't overshoot, so a spring/overshooting ease on this track is flattened`)),h=Math.min(1,Math.max(0,h))),l.lerp(a.value,o.value,h)}var Ae=Symbol.for("glissade.targetPath"),Nt=class extends Error{constructor(e){super(e!=null?e:'tween target is not addressable: pass a target string ("node/prop") or a property signal of a node that has an explicit id (\xA73.1 \u2014 anonymous nodes cannot be track targets)'),this.name="UnresolvableTargetError"}};function qe(e){let t=e.indexOf("/");return t<0?e:e.slice(0,t)}function lt(e){return typeof e=="string"&&e.length>0&&e!=="__root"&&!e.startsWith("~")}function xe(e){let t=typeof e=="string"?e:e[Ae];if(typeof t!="string")throw new Nt;if(qe(t).startsWith("~"))throw new Nt(`'${t}': structural ids (~Type.ordinal) are inspection-only and cannot be track targets (\xA76.5) \u2014 give the node an explicit id`);return t}function te(e,t){return t+2<=e.byteLength?e.getUint16(t):0}function me(e,t){return t+4<=e.byteLength?e.getUint32(t):0}function lo(e,t){return e===3&&t===10||e===0&&t>=4?5:e===3&&t===1||e===0?3:0}function ho(e,t,n){let s=te(e,t+6),r=s>>1,i=t+14,o=i+s+2,a=o+s,l=a+s;for(let c=0;c<r;c++){let h=te(e,i+c*2),u=te(e,o+c*2);if(u>h)continue;let f=te(e,a+c*2),d=te(e,l+c*2);for(let g=u;g<=h;g++){if(g===65535)continue;let m;if(d===0)m=g+f&65535;else{let k=te(e,l+c*2+d+(g-u)*2);m=k===0?0:k+f&65535}m!==0&&n.add(g)}}}function uo(e,t,n){let s=me(e,t+12),r=Math.max(0,Math.floor((e.byteLength-(t+16))/12)),i=Math.min(s,r),o=t+16;for(let a=0;a<i;a++,o+=12){let l=me(e,o),c=me(e,o+4),h=me(e,o+8);if(!(l>c)&&!(c-l>2097152))for(let u=l;u<=c;u++)h+(u-l)!==0&&n.add(u)}}function jt(e){let t=new Set;try{let n=ArrayBuffer.isView(e)?new DataView(e.buffer,e.byteOffset,e.byteLength):new DataView(e);if(n.byteLength<12)return t;let s=0;me(n,0)===1953784678&&(s=me(n,12));let r=te(n,s+4),i=0;for(let h=0;h<r;h++){let u=s+12+h*16;if(me(n,u)===1668112752){i=me(n,u+8);break}}if(i===0)return t;let o=te(n,i+2),a=0,l=-1;for(let h=0;h<o;h++){let u=i+4+h*8,f=te(n,u),d=te(n,u+2),g=i+me(n,u+4),m=lo(f,d);m>l&&g+2<=n.byteLength&&(l=m,a=g)}if(l<0)return t;let c=te(n,a);c===4?ho(n,a,t):c===12&&uo(n,a,t)}catch(n){return t}return t}function Gn(e){var n;let t={version:1,tracks:(n=e.tracks)!=null?n:[]};return e.duration!==void 0&&(t.duration=e.duration),e.editableDuration!==void 0&&(t.editableDuration=e.editableDuration),e.fps!==void 0&&(t.fps=e.fps),e.posterTime!==void 0&&(t.posterTime=e.posterTime),e.labels!==void 0&&(t.labels=e.labels),e.markers!==void 0&&(t.markers=e.markers),e.children!==void 0&&(t.children=e.children),e.audio!==void 0&&(t.audio=e.audio),e.assets!==void 0&&(t.assets=e.assets),t}var G=class extends Error{constructor(e){super(e),this.name="TimelineValidationError"}};function fo(e){for(let t=1;t<e.keys.length;t++){let n=e.keys[t];if(n.ease&&typeof n.ease=="object"&&n.ease.kind==="spring"){let s=e.keys[t-1].t+fe.duration(n.ease);if(Math.abs(n.t-s)>1e-6)throw new G(`track '${e.target}': spring-eased key at t=${n.t} must sit at prev.t + spring.duration (${s.toFixed(6)}); the builder computes this automatically`)}}}function ur(e,t=48e3){return Math.round(e*t)}function po(e,t,n){return e.map(s=>R(M({},s),{t:t+s.t/n}))}function Un(e){return`c${e}/`}var mo=/(^|\/)call:\d+$/;function Kn(e,t){return t!==""&&mo.test(e)?t+e:e}function fr(e,t,n,s,r,i){var o,a;for(let l of e.tracks)ct(l),fo(l),r.push({track:R(M({},l),{keys:po(l.keys,t,n)}),unit:s});for(let l of(o=e.children)!=null?o:[]){let c=l.mode==="sync"&&(a=l.timeScale)!=null?a:1;if(l.mode==="add"&&l.timeScale!==void 0)throw new G("timeScale is only valid on mode:'sync' children (\xA72.3)");if(c<=0)throw new G("sync timeScale must be > 0");let h=l.mode==="sync"?++i.n:s;fr(l.timeline,t+l.at/n,n*c,h,r,i)}}function go(e){let t=new Map;for(let{track:s,unit:r}of e){let i=t.get(s.target);if(!i){t.set(s.target,{track:R(M({},s),{keys:[...s.keys]}),unit:r});continue}if(i.unit!==r)throw new G(`target '${s.target}' is animated by a sync (opaque) child and another timeline unit; sync children must own disjoint targets (no last-writer-wins across the sync boundary, \xA72.3)`);if(i.track.type!==s.type)throw new G(`target '${s.target}' has conflicting value types '${i.track.type}' and '${s.type}'`);let o=s.keys[0].t,a=s.keys[s.keys.length-1].t,l=i.track.keys[0].t,c=i.track.keys[i.track.keys.length-1].t,h=i.track.keys.filter(u=>u.t<o||u.t>a);l<=a&&o<=c&&W(`overlapping tracks for '${s.target}' in [${o}, ${a}]: later insertion wins (${i.track.keys.length-h.length} earlier key(s) dropped)`),i.track.keys=[...h,...s.keys].sort((u,f)=>u.t-f.t)}let n=new Map;for(let[s,{track:r}]of t)n.set(s,r);return n}function dr(e){return e.editableDuration===!0}function yo(e){var n;let t=e.mode==="sync"&&(n=e.timeScale)!=null?n:1;return e.at+pr(e.timeline)/t}function pr(e){var n,s;if(e.duration!==void 0)return e.duration;let t=0;for(let r of e.tracks){let i=r.keys[r.keys.length-1];i&&(t=Math.max(t,i.t))}for(let r of(n=e.markers)!=null?n:[])t=Math.max(t,r.t);for(let r of(s=e.children)!=null?s:[])t=Math.max(t,yo(r));return t}function ne(e){var a,l;if(e.version!==1)throw new G(`unsupported timeline document version ${String(e.version)}`);let t=[];fr(e,0,1,0,t,{n:0});let n=go(t),s=M({},e.labels),r=[...(a=e.markers)!=null?a:[]],i=[...(l=e.audio)!=null?l:[]],o=(c,h,u,f)=>{(c!=null?c:[]).forEach((d,g)=>{var y,p,b,v,I;let m=h+d.at/u,k=u*(d.mode==="sync"&&(y=d.timeScale)!=null?y:1),T=f+Un(g);for(let[w,x]of Object.entries((p=d.timeline.labels)!=null?p:{}))w in s||(s[w]=m+x/k);for(let w of(b=d.timeline.markers)!=null?b:[])r.push(R(M({},w),{name:Kn(w.name,T),t:m+w.t/k}));for(let w of(v=d.timeline.audio)!=null?v:[])i.push(M(R(M({},w),{at:m+w.at/k}),k!==1?{playbackRate:((I=w.playbackRate)!=null?I:1)*k}:{}));o(d.timeline.children,m,k,T)})};return o(e.children,0,1,""),r.sort((c,h)=>c.t-h.t),i.sort((c,h)=>c.at-h.at),{duration:pr(e),labels:s,markers:r,tracks:n,audio:i}}var Qn="main",Jn=class extends Error{constructor(e){super(`unsupported sidecar version ${String(e)}; this build reads sidecarVersion 1 or 2`),this.name="SidecarVersionError"}};function mr(){return{sidecarVersion:2,timelines:{[Qn]:{tracks:{}}}}}function Zn(e){if(!e)return null;if(e.sidecarVersion===2)return e;if(e.sidecarVersion===1){let t={};for(let s of e.tracks)t[s.target]={type:s.type,baseHash:null,keys:s.keys};let n={tracks:t};return e.labels&&(n.labels=e.labels),{sidecarVersion:2,timelines:{[Qn]:n}}}throw new Jn(e.sidecarVersion)}function Ht(e){let t=JSON.stringify(e.map(s=>{var r,i;return[s.t,s.value,(r=s.ease)!=null?r:null,(i=s.interp)!=null?i:null]})),n=2166136261;for(let s=0;s<t.length;s++)n^=t.charCodeAt(s),n=Math.imul(n,16777619);return(n>>>0).toString(16)}function es(e){let t=-1;for(let n of e){let s=n.id?/^k(\d+)$/.exec(n.id):null;s&&(t=Math.max(t,Number(s[1])))}return e.map(n=>n.id?M({},n):R(M({},n),{id:`k${++t}`}))}function gr(e,t,n,s,r,i){var l;if(!lt(qe(n)))throw new ve(n,"structural/un-id'd nodes cannot host editor tracks (\xA76.5) \u2014 only nodes with an explicit id");let o=(l=e.timelines[t])!=null?l:{tracks:{}},a={type:s,baseHash:i?Ht(i):null,keys:es(r)};return R(M({},e),{timelines:R(M({},e.timelines),{[t]:R(M({},o),{tracks:R(M({},o.tracks),{[n]:a})})})})}function yr(e,t,n){let s=e.timelines[t];if(!s||!(n in s.tracks))return e;let o=s.tracks,{[n]:r}=o,i=ze(o,[Hs(n)]);return R(M({},e),{timelines:R(M({},e.timelines),{[t]:R(M({},s),{tracks:i})})})}function hr(e){return e.some(t=>t.derived)?e.map((t,n)=>t.derived&&n>0?R(M({},t),{value:e[n-1].value}):t):e}function ts(e,t){var c,h,u;let n=Zn(t);if(!n)return{timeline:e,drift:[],orphans:{}};let s=(c=n.timelines[Qn])!=null?c:{tracks:{}},r=new Map(Object.entries(s.tracks)),i=[],o=M({},(h=s.orphans)!=null?h:{}),a=e.tracks.map(f=>{let d=r.get(f.target);return d?(r.delete(f.target),d.type!==f.type?(o[f.target]={type:d.type,keys:d.keys,reason:"type-changed"},f):(d.baseHash!==null&&d.baseHash!==Ht(f.keys)&&i.push(f.target),R(M({},f),{keys:hr(d.keys.map(g=>M({},g))),editable:!0}))):f});for(let[f,d]of r)d.baseHash!==null?o[f]={type:d.type,keys:d.keys,reason:"prop-missing"}:a.push({target:f,type:d.type,keys:hr(d.keys.map(g=>M({},g))),editable:!0});let l=R(M({},e),{tracks:a});if(s.labels&&Object.keys(s.labels).length>0){let f=(u=e.labels)!=null?u:{},d=Object.keys(s.labels).filter(g=>g in f);d.length&&W(`sidecar label(s) ${d.join(", ")} collide with code labels; code wins (\xA76.2)`),l.labels=M(M({},s.labels),f)}return i.length&&W(`sidecar: code baseline changed beneath edits on ${i.join(", ")} (\xA76.2)`),{timeline:l,drift:i,orphans:o}}function wr(e,t){return ts(e,t).timeline}function br(e){let t=e.map(n=>M({},n)).sort((n,s)=>n.t-s.t);for(let n=0;n<2;n++){for(let s=1;s<t.length;s++){let r=t[s].ease;r&&typeof r=="object"&&r.kind==="spring"&&(t[s].t=t[s-1].t+fe.duration(r))}t.sort((s,r)=>s.t-r.t)}for(let n=1;n<t.length;n++)t[n].t<=t[n-1].t&&(t[n].t=t[n-1].t+.001);return t}var rs=e=>e(),ns=rs,Pe=new Set,Ut=0,_e=!1,ut=!1,wo=1e3;function bo(e){let t=ns;return ns=e!=null?e:rs,ut&&!_e&&(ut=!1,Pe.size>0&&is()),t}function ko(e){Pe.add(e),is()}function is(){Ut>0||_e||ut||(ut=!0,ns(vo))}function vo(){ut=!1,!_e&&xo()}function xo(){if(_e)return;_e=!0;let e;try{let t=0;for(;Pe.size>0;){if(++t>wo)throw Pe.clear(),new Error("signal notification flush did not settle within 1000 passes: a subscriber is writing to a signal it observes (DESIGN.md \xA76.1).");let n=[...Pe];Pe.clear();for(let s of n)try{s()}catch(r){e!=null||(e={err:r})}}}finally{_e=!1}if(e)throw e.err}function Yt(){Ut++}function Xt(){Ut--,Ut===0&&Pe.size>0&&is()}function So(e){Yt();try{return e()}finally{Xt()}}var Se=null,De=0,Gt=class extends Error{constructor(){super("signal.set() during evaluation: the read phase is pure (DESIGN.md \xA72.1). Drivers write the playhead before evaluation begins; stateful animation belongs in bake()."),this.name="WriteDuringEvaluationError"}},xr=class extends Error{constructor(){super("circular signal dependency detected"),this.name="CircularDependencyError"}};function Sr(){De++}function Mr(){if(De===0)throw new Error("endReadPhase() without matching beginReadPhase()");De--}function Mo(){return De>0}var Tr=class{constructor(e){S(this,"value");S(this,"fn");S(this,"equals");S(this,"version",0);S(this,"state");S(this,"computing",!1);S(this,"deps",[]);S(this,"depVersions",[]);S(this,"dependents",new Set);S(this,"subscribers",new Set);var t,n;this.fn=(t=e.fn)!=null?t:null,this.value=e.value,this.equals=(n=e.equals)!=null?n:Object.is,this.state=this.fn?2:0}get(){return Se&&Se.addDep(this),this.updateIfNecessary(),this.value}peek(){return this.updateIfNecessary(),this.value}set(e){if(De>0)throw new Gt;Yt();try{this.fn&&this.detachFn(),this.writeValue(e)}finally{Xt()}}forceSet(e){Yt();try{this.fn&&this.detachFn(),this.writeValue(e)}finally{Xt()}}bindSource(e){if(De>0)throw new Gt;Yt();try{this.fn=e,this.state=2,this.invalidateDependents(2)}finally{Xt()}}unbindSource(){if(De>0)throw new Gt;this.fn&&(this.updateIfNecessary(),this.detachFn())}get isBound(){return this.fn!==null}subscribe(e){return this.subscribers.add(e),()=>this.subscribers.delete(e)}addDep(e){this.deps[this.deps.length-1]!==e&&(this.deps.push(e),this.depVersions.push(-1),e.dependents.add(this))}detachFn(){this.fn=null,this.clearDeps(),this.state=0}writeValue(e){(this.version>0||this.value!==void 0)&&this.equals(this.value,e)||(this.value=e,this.version++,this.invalidateDependents(2))}invalidateDependents(e){for(let t of[...this.dependents])t.markStale(e);if(this.subscribers.size>0)for(let t of[...this.subscribers])ko(t)}markStale(e){if(this.state>=e)return;let t=this.state===0;this.state=e,t&&this.invalidateDependents(1)}updateIfNecessary(){if(!(this.fn===null||this.state===0)){if(this.computing)throw new xr;if(this.state===1){this.state=0;for(let e=0;e<this.deps.length;e++){let t=this.deps[e];if(t.updateIfNecessary(),t.version!==this.depVersions[e]){this.state=2;break}}}this.state===2&&this.recompute(),this.state=0}}recompute(){this.clearDeps();let e=Se;Se=this,this.computing=!0;let t;try{t=this.fn()}finally{this.computing=!1,Se=e}for(let n=0;n<this.deps.length;n++)this.depVersions[n]=this.deps[n].version;(!(this.version>0||this.value!==void 0)||!this.equals(this.value,t))&&(this.value=t,this.version++)}clearDeps(){for(let e of this.deps)e.dependents.delete(this);this.deps=[],this.depVersions=[]}};function Er(e,t){let n=(()=>e.get());return n.peek=()=>e.peek(),n.subscribe=s=>e.subscribe(s),t(n),n}function A(e,t){let n=new Tr({value:e,equals:t==null?void 0:t.equals});return Er(n,s=>{s.set=r=>n.set(r),s.forceSet=r=>n.forceSet(r),s.bindSource=r=>n.bindSource(r),s.unbindSource=()=>n.unbindSource(),Object.defineProperty(s,"isBound",{get:()=>n.isBound})})}function ft(e,t){return Er(new Tr({fn:e,equals:t==null?void 0:t.equals}),()=>{})}function To(e){let t=Se;Se=null;try{return e()}finally{Se=t}}function We(e){let[t,n]=Array.isArray(e)?e:[e.x,e.y],s=A(t),r=A(n);s.expects="number",r.expects="number";let i=A(null,{equals:(h,u)=>h===null||u===null?h===u:h[0]===u[0]&&h[1]===u[1]}),o=A(t),a=A(n);s.bindSource(()=>{let h=i();return h===null?o():h[0]}),r.bindSource(()=>{let h=i();return h===null?a():h[1]});let l=ft(()=>[s(),r()],{equals:(h,u)=>h[0]===u[0]&&h[1]===u[1]}),c=(()=>l());return c.peek=()=>l.peek(),c.subscribe=h=>l.subscribe(h),c.set=h=>{i.set(null),o.set(h[0]),a.set(h[1])},c.bindSource=h=>i.bindSource(()=>h()),c.unbindSource=()=>{i.unbindSource(),i.set(null)},c.expects="vec2",Object.defineProperty(c,"x",{value:s,enumerable:!0}),Object.defineProperty(c,"y",{value:r,enumerable:!0}),c}function Eo(e,t){return t.faces&&t.faces.length>0?t.faces.map(n=>{var s,r;return{family:e,url:n.url,weight:(s=n.weight)!=null?s:400,style:(r=n.style)!=null?r:"normal"}}):[{family:e,url:t.url,weight:400,style:"normal"}]}function Io(e,t){let n,s=Number.POSITIVE_INFINITY;for(let r of e){let i=Math.abs(r.weight-t);(i<s||i===s&&n!==void 0&&r.weight<n.weight)&&(n=r,s=i)}return n}function dt(e){let t=new Map;for(let[n,s]of Object.entries(e!=null?e:{}))s.kind==="font"&&t.set(n,{faces:Eo(n,s),fallback:s.fallback?[...s.fallback]:[]});return{has(n){return t.has(n)},faces(){let n=[];for(let s of t.values())n.push(...s.faces);return n},resolveFace(n,s=400,r="normal"){let i=t.get(n);if(!i)return;let o=i.faces.filter(a=>a.style===r);return Io(o.length>0?o:i.faces,s)},fallbackChain(n){let s=t.get(n);return s?[n,...s.fallback]:[n]}}}var Ir=class extends Error{constructor(t){super(Or(t));S(this,"report");this.name="FontValidationError",this.report=t}},$o=new Set(["serif","sans-serif","monospace","cursive","fantasy","system-ui","ui-serif","ui-sans-serif","ui-monospace","ui-rounded","math","emoji","fangsong"]);function $r(e,t){var s;let n=e.trim().toLowerCase();return $o.has(n)?!0:(s=t==null?void 0:t.has(n))!=null?s:!1}function Oo(e){let t=[];for(let n of e){let s=n.codePointAt(0);s!==void 0&&t.push(s)}return t}function Or(e){let t=[];e.unregistered.length>0&&t.push(`unregistered font ${e.unregistered.length===1?"family":"families"}: ${e.unregistered.join(", ")}`);for(let n of e.missingGlyphs){let s=n.codePoints.map(r=>"U+"+r.toString(16).toUpperCase().padStart(4,"0")).join(", ");t.push(`family '${n.family}' is missing glyphs for ${s}`)}return"font validation failed (\xA73.6): "+t.join("; ")+" \u2014 register the family with its faces/fallback, or supply covering glyphs"}function os(e,t,n,s,r={}){let i=new Set,o=new Map;for(let l of e){let c=l.family,h=$r(c,r.osFamilies);if(!t.has(c)){h||i.add(c);continue}let u=t.fallbackChain(c);for(let f of Oo(l.text))if(!u.some(d=>{var g,m;return(m=(g=n.get(d))==null?void 0:g.has(f))!=null?m:!1})){let d=o.get(c);d||(d=new Set,o.set(c,d)),d.add(f)}}let a={unregistered:[...i].sort(),missingGlyphs:[...o.entries()].map(([l,c])=>({family:l,codePoints:[...c].sort((h,u)=>h-u)})).sort((l,c)=>l.family<c.family?-1:l.family>c.family?1:0)};if(!(a.unregistered.length===0&&a.missingGlyphs.length===0)){if(s==="strict")throw new Ir(a);W(Or(a))}return a}var ss=class extends Error{constructor(e,t){super(`invalid position '${e}': ${t}`),this.name="PositionError"}};function ht(e,t,n){let s=new Set(n),r=Object.keys(t).filter(i=>!s.has(i));if(r.length>0)throw new G(`${e}: unknown option${r.length>1?"s":""} ${r.map(i=>`'${i}'`).join(", ")} \u2014 known: ${n.map(i=>`'${i}'`).join(", ")}`)}var kr=["duration","ease","at","from"],Co=["at"],Ao=["to","from","duration","ease"],Po=["each","anchor","at"];function vr(e){return typeof e!="string"&&typeof e.peek=="function"?e.peek():void 0}var Cr=new WeakMap;function Ar(e){var t;return(t=Cr.get(e))!=null?t:new Map}function Pr(e,t={}){var T;let n=[],s=[],r=M({},t.labels),i=[],o=[],a=new Map,l=!1,c=0,h=0,u=0;function f(y){if(y===void 0)return h;if(typeof y=="number")return y;if(y==="<")return c;if(y===">")return h;let p=/^([+-])=([\d.]+)$/.exec(y);if(p)return h+(p[1]==="+"?1:-1)*parseFloat(p[2]);let b=/^([^+\-=]+?)(?:([+-])=([\d.]+))?$/.exec(y);if(b){let v=b[1];if(!(v in r))throw new ss(y,`unknown label '${v}' (labels must be declared before use)`);let I=b[2]?(b[2]==="+"?1:-1)*parseFloat(b[3]):0;return r[v]+I}throw new ss(y,"expected a number, '<', '>', '+=x', '-=x', or 'label[+=x]'")}let d={to(y,p,b={}){var $,D;ht("to",b,kr);let v=($=b.ease)!=null?$:"easeInOutCubic",I=typeof v=="object"&&v.kind==="spring",w=I?fe.duration(v):(D=b.duration)!=null?D:1;if(I&&b.duration!==void 0)throw new G("a spring ease determines its duration (spring.duration(cfg)); do not pass duration with a spring");let x=f(b.at),E={kind:"tween",target:xe(y),value:p,duration:w,ease:v,at:b.at,baseValue:vr(y),editable:!1,start:x};return b.from!==void 0&&(E.explicitFrom=b.from),n.push(E),c=x,h=x+w,d},fromTo(y,p,b,v={}){return ht("fromTo",v,kr),d.to(y,b,v),n[n.length-1].explicitFrom=p,d},stagger(y,p,b){var et;ht("stagger spec",p,Ao),ht("stagger opts",b,Po);let v=y.length,I=f(b.at),w=(v-1)/2,{anchor:x="start",each:E}=b,$=O=>{if(!Number.isFinite(O))throw new G(`stagger: non-finite each/anchor (${String(O)})`);return O};typeof x=="number"&&$(x),typeof E=="number"&&$(E);let D=O=>x==="start"?O:x==="end"?v-1-O:Math.round(x==="center"?Math.abs(O-w):x==="edges"?w-Math.abs(O-w):Math.abs(O-x)),L=O=>$(typeof E=="function"?E(O,v):O*E),V=p.ease,K=typeof V=="object"&&V!==null&&V.kind==="spring"?fe.duration(V):(et=p.duration)!=null?et:1,Ze=O=>M(M({at:I+O},p.duration!==void 0?{duration:p.duration}:{}),p.ease!==void 0?{ease:p.ease}:{}),Re=0,Le=0;for(let O=0;O<v;O++){let P=L(D(O));(O===0||P<Re)&&(Re=P),(O===0||P>Le)&&(Le=P);let N=I+P;if(N<0)throw new G(`stagger: target would land at t=${N} (< 0); shift opts.at`);let B=y[O],_=typeof p.to=="function"?p.to(O,v):p.to;if(p.from!==void 0){let Q=typeof p.from=="function"?p.from(O,v):p.from;d.fromTo(B,Q,_,Ze(P))}else d.to(B,_,Ze(P))}return v>0&&(c=I+Re,h=I+Le+K),d},set(y,p,b={}){ht("set",b,Co);let v=f(b.at);return n.push({kind:"set",target:xe(y),value:p,duration:0,ease:"linear",at:b.at,baseValue:vr(y),editable:!1,start:v}),c=v,h=v,d},tracks(y){for(let p of y)s.push(p);return d},label(y,p){return r[y]=p===void 0?h:f(p),d},add(y,p,b={}){var D,L;let v=p===void 0?h:f(p),I=(D=b.mode)!=null?D:"add",w={timeline:y,at:v,mode:I,_pos:p};b.timeScale!==void 0&&(w.timeScale=b.timeScale);let x=i.length;i.push(w);let E=Un(x);for(let[V,K]of Ar(y))a.set(Kn(V,E),K);let $=I==="sync"&&(L=b.timeScale)!=null?L:1;return c=v,h=v+ne(y).duration/$,d},sequence(y,p={}){var I;let b=(I=p.gap)!=null?I:0,v=b<0?`-=${-b}`:`+=${b}`;for(let w=0;w<y.length;w++)d.add(y[w],w===0?void 0:v);return d},at(y,p){return d.add(p,y)},call(y,p){let b=p===void 0?h:f(p),v=`call:${u++}`;return o.push({t:b,name:v}),a.set(v,y),d},cue(y,p,b){let v=b!=null&&typeof b=="object"&&!Array.isArray(b)?M({kind:"cue"},b):{kind:"cue"};return o.push({t:f(y),name:p,data:v}),d},adBreak(y,p={}){var v;let b=M({kind:"ad-break"},p.duration!==void 0?{duration:p.duration}:{});return o.push({t:f(y),name:(v=p.id)!=null?v:"ad-break",data:b}),d},editable(){let y=n[n.length-1];if(!y)throw new G(".editable() requires a preceding insertion");let p=qe(y.target);if(!lt(p))throw new G(`.editable() needs a node with an explicit id; '${p}' is not an editable host (\xA76.4)`);return y.editable=!0,d},editableDuration(){return l=!0,d}};e(d);let g=new Map;for(let y of n){let p=g.get(y.target);p||(p=[],g.set(y.target,p)),p.push(y)}let m=[];for(let[y,p]of g){p.sort(($,D)=>$.start-D.start);let b=[],v=p.some($=>$.editable),I=(T=p.find($=>$.baseValue!==void 0))==null?void 0:T.baseValue,w=p[0];w.kind==="tween"&&w.explicitFrom===void 0&&I===void 0&&W(`'${y}': first tween has no resolvable from-value (string targets have no base) \u2014 the track sits at its end state before the tween. Anchor it with { from }, fromTo(), or set(..., { at: 0 }).`);for(let $ of p){if($.kind==="set"){b.push({t:$.start,value:$.value,interp:"hold"}),I=$.value;continue}let D=$.explicitFrom!==void 0?$.explicitFrom:I,L=b[b.length-1];if(D!==void 0&&(!L||L.t<$.start)){let V={t:$.start,value:D};$.explicitFrom===void 0&&(V.derived=!0),(!L||$.start>L.t)&&b.push(V)}b.push({t:$.start+$.duration,value:$.value,ease:$.ease}),I=$.value}let x=[];for(let $ of b.sort((D,L)=>D.t-L.t)){let D=x[x.length-1];D&&D.t===$.t?x[x.length-1]=$:x.push($)}let E={target:y,type:Ce(p[0].value),keys:x};v&&(E.editable=!0),m.push(E)}for(let y of s)m.push(y);let k=Gn(M(M(M(R(M({},t),{tracks:m,labels:r}),l?{editableDuration:!0}:{}),o.length?{markers:o}:{}),i.length?{children:i.map(b=>{var v=b,{_pos:y}=v,p=ze(v,["_pos"]);return p})}:{}));return a.size&&Cr.set(k,a),k}function Do(e,t){return typeof e=="function"?Pr(e,t):Gn(e)}function Jt(e=0){return A(e)}var Dr=class extends Error{constructor(e){super(`timeline targets '${e}' but no property signal resolves to it`),this.name="UnboundTargetError"}},Fr=class extends Error{constructor(t,n,s){let r=t.slice(t.lastIndexOf("/")+1),i=[s].flat(),o=n==="number"&&i.includes("vec2")?`; target '${r}.x'/'${r}.y' or author a vec2 track`:"";super(`track '${t}' is '${n}' but '${r}' expects '${i.join("'|'")}' (would silently NaN evaluation)${o}`);S(this,"target");S(this,"got");S(this,"expected");this.target=t,this.got=n,this.name="BindTypeMismatchError",this.expected=s}};function as(e,t,n=Jt()){let s=[],r=new Map;for(let[i,o]of e.tracks){let a=t(i);if(!a)throw new Dr(i);let l=o.type,c=a.expects;if(c!==void 0){let h=Bt(l);if(!(Array.isArray(c)?c:[c]).some(u=>Bt(u)===h))throw new Fr(i,l,c)}a.bindSource(()=>Wt(o,n())),s.push(a),r.set(i,{track:o,value:h=>Wt(o,h),velocity:h=>Xn(o,h)})}return{playhead:n,samplers:r,unbind:()=>{for(let i of s)i.unbindSource()}}}function cs(e,t,n){e.forceSet(t),Sr();try{return n()}finally{Mr()}}function ce(e){let t=e>>>0;return()=>{t=t+2654435769|0;let n=t^t>>>16;return n=Math.imul(n,569420461),n=n^n>>>15,n=Math.imul(n,1935289751),n=n^n>>>15,(n>>>0)/4294967296}}var Kt=class extends Error{constructor(e){super(`bake(): ${e}`),this.name="BakeError"}};function Qt(e,t,n){for(let[s,r]of Object.entries(t)){let i=e.get(s);i||(i={keys:[],type:Ce(r)},e.set(s,i)),i.keys.push({t:n,value:r})}}function Nr(e){return[...e.entries()].map(([t,n])=>({target:t,type:n.type,keys:n.keys}))}function Fo(e){var o,a;if(!(e.fps>0)||!(e.duration>=0))throw new Kt("fps must be > 0 and duration >= 0");let t=ce((o=e.seed)!=null?o:0),n=1/e.fps,s=Math.round(e.duration*e.fps),r=e.setup(t),i=new Map;Qt(i,e.sample(r),0);for(let l=1;l<=s;l++)r=(a=e.step(r,n,t))!=null?a:r,Qt(i,e.sample(r),l*n);return Nr(i)}function No(e){var u;if(!(e.every>=1))throw new Kt("checkpoint interval `every` must be >= 1 frame");let t=1/e.fps,n=Math.round(e.duration*e.fps),s=0,r=ce((u=e.seed)!=null?u:0),i=()=>(s++,r()),o=f=>{var g;let d=ce((g=e.seed)!=null?g:0);for(let m=0;m<f;m++)d();return d},a=e.setup(i),l=[{snap:e.snapshot(a),rngDraws:s}],c=0;function h(f){var d;for(;c<Math.min(f,n);)a=(d=e.step(a,t,i))!=null?d:a,c++,c%e.every===0&&l.push({snap:e.snapshot(a),rngDraws:s})}return{frames:n,bakeRange(f,d){var b;if(f<0||d>n||f>d)throw new Kt(`range ${f}..${d} outside 0..${n}`);let g=Math.floor(f/e.every)*e.every;h(g);let m=l[g/e.every],k=e.restore(m.snap),T=o(m.rngDraws),y=g,p=new Map;for(y>=f&&Qt(p,e.sample(k),y*t);y<d;)k=(b=e.step(k,t,T))!=null?b:k,y++,y>=f&&Qt(p,e.sample(k),y*t);return Nr(p)}}}var Ee=[1,0,0,1,0,0],H=e=>e===0?0:e;function mt(e,t){let[n,s,r,i,o,a]=e,[l,c,h,u,f,d]=t;return[H(n*l+r*c),H(s*l+i*c),H(n*h+r*u),H(s*h+i*u),H(n*f+r*d+o),H(s*f+i*d+a)]}function fs(e,t,n){let s=t*Math.PI/180,r=Math.cos(s),i=Math.sin(s),[o,a]=n;return[H(r*o),H(i*o),H(-i*a),H(r*a),H(e[0]),H(e[1])]}function jr(e){let[t,n,s,r,i,o]=e,a=t*r-n*s;if(a===0)return null;let l=r/a,c=-n/a,h=-s/a,u=t/a;return[H(l),H(c),H(h),H(u),H(-(l*i+h*o)),H(-(c*i+u*o))]}function Hr(e,t){return[e[0]*t[0]+e[2]*t[1]+e[4],e[1]*t[0]+e[3]*t[1]+e[5]]}function Te(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]&&e[4]===t[4]&&e[5]===t[5]}function He(e,t){if(t instanceof ArrayBuffer)return`ab:${t.byteLength}`;if(ArrayBuffer.isView(t))return`view:${t.byteLength}`;if(typeof t!="function")return typeof t=="number"&&!Number.isFinite(t)?Number.isNaN(t)?"NaN":t>0?"Infinity":"-Infinity":t}function Rr(e,t){let n={};for(let[s,r]of Object.entries(e))n[s]=r;return e.op==="clip"||e.op==="fillPath"||e.op==="strokePath"?n.path=t[e.path]:e.op==="drawImage"&&(n.image=t[e.image]),n}var je=e=>JSON.stringify(e,He);function Ro(e,t){let n=[],s=new Set([...Object.keys(e),...Object.keys(t)]);for(let r of s)r!=="op"&&je(e[r])!==je(t[r])&&n.push({path:r,from:e[r],to:t[r]});return n}function ds(e,t){let n=[],s=Math.max(e.commands.length,t.commands.length);for(let i=0;i<s;i++){let o=e.commands[i],a=t.commands[i];if(o!==void 0&&a!==void 0){let l=Rr(o,e.resources),c=Rr(a,t.resources);if(je(l)===je(c))continue;o.op!==a.op?n.push({index:i,kind:"change",opA:o.op,opB:a.op,fields:[{path:"op",from:o.op,to:a.op}]}):n.push({index:i,kind:"change",opA:o.op,opB:a.op,fields:Ro(l,c)})}else a!==void 0?n.push({index:i,kind:"add",opB:a.op,fields:[]}):o!==void 0&&n.push({index:i,kind:"remove",opA:o.op,fields:[]})}let r=e.size.w!==t.size.w||e.size.h!==t.size.h;return M({equal:n.length===0&&!r,deltas:n},r?{size:{from:e.size,to:t.size}}:{})}function Yr(e){var n,s,r,i;if(e.equal)return"DisplayLists are identical.";let t=[];e.size&&t.push(`size ${e.size.from.w}x${e.size.from.h} -> ${e.size.to.w}x${e.size.to.h}`);for(let o of e.deltas)if(o.kind==="add")t.push(`+ [${o.index}] add ${(n=o.opB)!=null?n:"?"}`);else if(o.kind==="remove")t.push(`- [${o.index}] remove ${(s=o.opA)!=null?s:"?"}`);else{let a=o.opA===o.opB?o.opA:`${(r=o.opA)!=null?r:"?"} -> ${(i=o.opB)!=null?i:"?"}`;t.push(`~ [${o.index}] ${a}`);for(let l of o.fields)t.push(` ${l.path}: ${je(l.from)} -> ${je(l.to)}`)}return t.join(`
|
|
2
|
+
`)}var Xr=1;function Gr(e){let t={dlSnapshotVersion:1,size:e.size,commands:e.commands,resources:e.resources};return JSON.stringify(t,He,2)}var nn=class extends Error{constructor(e){super(e),this.name="DlSnapshotError"}};function Ur(e){let t=JSON.parse(e);if(t.dlSnapshotVersion!==1)throw new nn(`unsupported dlSnapshotVersion ${String(t.dlSnapshotVersion)}; this build reads 1`);if(!t.size||!Array.isArray(t.commands)||!Array.isArray(t.resources))throw new nn("malformed .dl.json snapshot (need size, commands[], resources[])");return{size:t.size,commands:t.commands,resources:t.resources}}var Fe=class extends Error{constructor(e){super(e),this.name="FilterValidationError"}},Lr=new Set(["blur","drop-shadow","brightness","contrast","saturate"]);function ps(e){for(let t of e){if(!Lr.has(t.kind))throw new Fe(`unknown filter kind '${String(t.kind)}' (have: ${[...Lr].join(", ")})`);if(t.kind==="blur"&&!(Number.isFinite(t.radius)&&t.radius>=0))throw new Fe(`blur radius must be \u2265 0, got ${String(t.radius)}`);if(t.kind==="drop-shadow"){if(![t.dx,t.dy,t.blur].every(Number.isFinite)||t.blur<0)throw new Fe("drop-shadow needs finite dx/dy and blur \u2265 0");if(typeof t.color!="string"||t.color.length===0)throw new Fe("drop-shadow needs a color string")}if((t.kind==="brightness"||t.kind==="contrast"||t.kind==="saturate")&&!(Number.isFinite(t.amount)&&t.amount>=0))throw new Fe(`${t.kind} amount must be \u2265 0, got ${String(t.amount)}`)}}function on(e){return e.length===0?"none":e.map(t=>{switch(t.kind){case"blur":return`blur(${t.radius}px)`;case"drop-shadow":return`drop-shadow(${t.dx}px ${t.dy}px ${t.blur}px ${t.color})`;default:return`${t.kind}(${t.amount})`}}).join(" ")}function Kr(e,t=16,n=2){let s=[];for(let r=0;r<Math.max(1,n);r++)s.push({kind:"drop-shadow",dx:0,dy:0,blur:t*(1+r*1.5),color:e});return s}function Lo(e){switch(e.op){case"clip":case"fillPath":case"strokePath":return[e.path];case"drawImage":return[e.image];default:return[]}}function zo(e){let t=2166136261;for(let n=0;n<e.length;n++)t^=e.charCodeAt(n),t=Math.imul(t,16777619);return(t>>>0).toString(16).padStart(8,"0")}function yt(e){let t=[],n=[],s=new Map;return{push:r=>{r.op==="pushGroup"&&r.filters.length>0&&ps(r.filters),t.push(r)},resource:r=>{let i=JSON.stringify(r),o=s.get(i);if(o!==void 0)return o;let a=n.length;return n.push(r),s.set(i,a),a},mark:()=>t.length,cacheKey:(r,i)=>{if(i<=r)return;let o=new Map,a=[],l=h=>{let u=o.get(h);return u===void 0&&(u=o.size,o.set(h,u),a.push(n[h])),u},c=t.slice(r,i).map(h=>Lo(h).length===0?h:h.op==="drawImage"?R(M({},h),{image:l(h.image)}):R(M({},h),{path:l(h.path)}));return zo(JSON.stringify({c,r:a},He))},patchCacheKey:(r,i)=>{let o=t[r];o&&o.op==="pushGroup"&&(o.cacheKey=i)},finish:()=>({commands:t,resources:n,size:e})}}var zr=["marker","crayon","pencil","ink","chalk"],ge=class extends Error{constructor(e){super(e),this.name="SketchValidationError"}};function ms(e){if(!zr.includes(e.kind))throw new ge(`unknown sketch kind '${String(e.kind)}' (have: ${zr.join(", ")})`);if(e.width!==void 0&&!(e.width>0))throw new ge(`sketch width must be > 0, got ${String(e.width)}`);if(e.roughness!==void 0&&!(e.roughness>=0))throw new ge(`sketch roughness must be \u2265 0, got ${String(e.roughness)}`);if((e.kind==="crayon"||e.kind==="pencil")&&e.passes!==void 0&&!(e.passes>=1))throw new ge(`sketch passes must be \u2265 1, got ${String(e.passes)}`);if(e.kind==="chalk"&&e.dash!==void 0&&(!Array.isArray(e.dash)||e.dash.some(t=>!(t>=0))))throw new ge("sketch chalk dash must be an array of non-negative numbers")}function gs(e){var t,n,s,r,i,o,a,l,c,h,u,f,d;switch(e.kind){case"marker":return{width:(t=e.width)!=null?t:8,roughness:(n=e.roughness)!=null?n:1.2,passes:2};case"crayon":return{width:(s=e.width)!=null?s:4,roughness:(r=e.roughness)!=null?r:2.4,passes:(i=e.passes)!=null?i:3};case"pencil":return{width:(o=e.width)!=null?o:1.5,roughness:(a=e.roughness)!=null?a:1,passes:(l=e.passes)!=null?l:2};case"ink":return{width:(c=e.width)!=null?c:2.5,roughness:(h=e.roughness)!=null?h:.8,passes:1};case"chalk":return{width:(u=e.width)!=null?u:3,roughness:(f=e.roughness)!=null?f:1.6,passes:1,dash:(d=e.dash)!=null?d:[6,5]}}}var Vo=(e,t,n,s,r)=>{let i=1-r,o=i*i*i,a=3*i*i*r,l=3*i*r*r,c=r*r*r;return[o*e[0]+a*t[0]+l*n[0]+c*s[0],o*e[1]+a*t[1]+l*n[1]+c*s[1]]},Bo=(e,t,n,s)=>{let r=1-s;return[r*r*e[0]+2*r*s*t[0]+s*s*n[0],r*r*e[1]+2*r*s*t[1]+s*s*n[1]]},ls=(e,t,n,s,r,i)=>{let o=n*Math.cos(i),a=s*Math.sin(i),l=Math.cos(r),c=Math.sin(r);return[e+o*l-a*c,t+o*c+a*l]};function wt(e,t=16){let n=[],s=null,r=0,i=0,o=0,a=0,l=(c,h)=>(s||(s={points:[[c,h]],closed:!1},n.push(s),o=c,a=h),s);for(let c of e)switch(c[0]){case"M":s={points:[[c[1],c[2]]],closed:!1},n.push(s),r=o=c[1],i=a=c[2];break;case"L":l(r,i).points.push([c[1],c[2]]),r=c[1],i=c[2];break;case"C":{let h=l(r,i);for(let u=1;u<=t;u++)h.points.push(Vo([r,i],[c[1],c[2]],[c[3],c[4]],[c[5],c[6]],u/t));r=c[5],i=c[6];break}case"Q":{let h=l(r,i);for(let u=1;u<=t;u++)h.points.push(Bo([r,i],[c[1],c[2]],[c[3],c[4]],u/t));r=c[3],i=c[4];break}case"E":{let[,h,u,f,d,g,m,k]=c,T=ls(h,u,f,d,g,m),y=l(T[0],T[1]);for(let b=1;b<=t;b++)y.points.push(ls(h,u,f,d,g,m+(k-m)*(b/t)));let p=ls(h,u,f,d,g,k);r=p[0],i=p[1];break}case"Z":s&&(s.points.push([o,a]),s.closed=!0,r=o,i=a);break}return n.filter(c=>c.points.length>0)}function ys(e){let t=0;for(let n=1;n<e.points.length;n++)t+=Math.hypot(e.points[n][0]-e.points[n-1][0],e.points[n][1]-e.points[n-1][1]);return t}function ws(e){if(!(e.gap>0))throw new ge(`hachure gap must be > 0, got ${String(e.gap)}`);if(e.roughness!==void 0&&!(e.roughness>=0))throw new ge(`hachure roughness must be \u2265 0, got ${String(e.roughness)}`)}function bs(e,t,n){var I;let s=wt(e),r=1/0,i=1/0,o=-1/0,a=-1/0;for(let w of s)for(let[x,E]of w.points)x<r&&(r=x),E<i&&(i=E),x>o&&(o=x),E>a&&(a=E);if(!Number.isFinite(r))return[];let l=(r+o)/2,c=(i+a)/2,h=Math.cos(t.angleRad),u=Math.sin(t.angleRad),f=(w,x)=>[(w-l)*h+(x-c)*u,-(w-l)*u+(x-c)*h],d=(w,x)=>[l+w*h-x*u,c+w*u+x*h],g=1/0,m=1/0,k=-1/0,T=-1/0,y=[[r,i],[o,i],[o,a],[r,a]];for(let[w,x]of y){let[E,$]=f(w,x);E<g&&(g=E),$<m&&(m=$),E>k&&(k=E),$>T&&(T=$)}let p=(I=t.roughness)!=null?I:1,b=()=>(n()*2-1)*p,v=[];for(let w=m+t.gap/2;w<T;w+=t.gap){let x=d(g,w+b()),E=d(k,w+b());v.push(["M",x[0],x[1]],["L",E[0],E[1]])}return v}function an(e,t,n){let s=gs(t),r=wt(e),i=()=>(n()*2-1)*s.roughness,o=[];for(let a=0;a<s.passes;a++){let l=[];for(let c of r){let h=c.points;if(h.length<2)continue;let u=h[0][0]+i(),f=h[0][1]+i();l.push(["M",u,f]);for(let d=1;d<h.length;d++){let g=h[d][0]+i(),m=h[d][1]+i(),k=g-u,T=m-f,y=Math.hypot(k,T)||1,p=i()*.5,b=(u+g)/2+-T/y*p,v=(f+m)/2+k/y*p;l.push(["Q",b,v,g,m]),u=g,f=m}}o.push(l)}return{strokes:o,resolved:s}}function ks(e){let t=2166136261;for(let n=0;n<e.length;n++)t^=e.charCodeAt(n),t=Math.imul(t,16777619);return t>>>0}function Qr(e,t,n){return an(e,t,ce(n>>>0)).strokes}var sn=.5;function X(e){return Math.round(e/sn)*sn}var tn=null;function Jr(e){tn=e}function U(){return tn!=null?tn:vs}var vs={measureText(e,t){return{width:e.length*t.size*.52,ascent:t.size*.8,descent:t.size*.2}}},Zt;function cn(e){if(Zt===void 0&&(Zt=typeof Intl!="undefined"&&"Segmenter"in Intl?new Intl.Segmenter(void 0,{granularity:"word"}):null),Zt){let t=[...Zt.segment(e)].map(s=>s.segment),n=[];for(let s of t)n.length>0&&/^[^\p{L}\p{N}\s]+$/u.test(s)?n[n.length-1]+=s:n.push(s);return n}return e.split(/(\s+)/).filter(t=>t.length>0)}var en;function ye(e){return en===void 0&&(en=typeof Intl!="undefined"&&"Segmenter"in Intl?new Intl.Segmenter(void 0,{granularity:"grapheme"}):null),en?[...en.segment(e)].map(t=>t.segment):Array.from(e)}function se(e,t,n,s){let r=e.split(`
|
|
3
|
+
`);if(n===void 0||n<=0)return r;let i=[];for(let o of r){let a=cn(o),l="";for(let c of a){let h=l+c;l!==""&&X(s.measureText(h.trimEnd(),t).width)>n?(i.push(l.trimEnd()),l=c.trimStart()===""?"":c):l=h}i.push(l.trimEnd())}return i}var qo={center:[.5,.5],"top-left":[0,0],top:[.5,0],"top-right":[1,0],left:[0,.5],right:[1,.5],"bottom-left":[0,1],bottom:[.5,1],"bottom-right":[1,1]};function xs(e){if(typeof e=="string"){let t=qo[e];if(!t)throw new Error(`unknown anchor '${e}' (use a preset like 'top-left' or a [ax, ay] pair)`);return t}return[e[0],e[1]]}function pt(e,t){return typeof t=="function"?e.bindSource(t):t!==void 0&&e.set(t),e}function Vr(e,t){return typeof t=="function"?e.bindSource(t):t!==void 0&&e.set(t),e}var gt,_r,Z=(_r=class{constructor(e={}){S(this,"id");S(this,"position");S(this,"rotation");S(this,"scale");S(this,"opacity");S(this,"blend");S(this,"zIndex");S(this,"filters");S(this,"anchor");S(this,"hasAnchor");S(this,"cache");S(this,"parent",null);J(this,gt,!1);S(this,"interactive",!1);S(this,"interactiveChildren",!0);S(this,"hitArea");S(this,"measurerSource",null);S(this,"localMatrix");S(this,"worldMatrix");S(this,"targets",new Map);var t;this.id=e.id,this.position=Vr(We([0,0]),e.position),this.rotation=pt(A(0),e.rotation),this.scale=Vr(We([1,1]),e.scale),this.opacity=pt(A(1),e.opacity),this.blend=pt(A("source-over"),e.blend),this.zIndex=pt(A(0),e.zIndex),this.filters=pt(A([]),e.filters),this.hasAnchor=e.anchor!==void 0,this.anchor=xs((t=e.anchor)!=null?t:"center"),this.cache=e.cache===!0,this.localMatrix=ft(()=>{let n=fs(this.position(),this.rotation(),this.scale()),[s,r]=this.anchorShift();return s===0&&r===0?n:mt(n,[1,0,0,1,s,r])},{equals:Te}),this.worldMatrix=ft(()=>this.parent?mt(this.parent.worldMatrix(),this.localMatrix()):this.localMatrix(),{equals:Te}),this.registerTarget("position",this.position,"vec2"),this.registerTarget("position.x",this.position.x,"number"),this.registerTarget("position.y",this.position.y,"number"),this.registerTarget("rotation",this.rotation,"number"),this.registerTarget("scale",this.scale,"vec2"),this.registerTarget("scale.x",this.scale.x,"number"),this.registerTarget("scale.y",this.scale.y,"number"),this.registerTarget("opacity",this.opacity,"number"),this.registerTarget("zIndex",this.zIndex,"number")}registerTarget(e,t,n){t.expects=n,this.targets.set(e,t),this.id!==void 0&&(t[Ae]=`${this.id}/${e}`)}resolveTarget(e){return this.targets.get(e)}listTargets(){return[...this.targets].map(([e,t])=>({path:e,expects:t.expects}))}intrinsicSize(e){return null}drawOffset(e){var s,r,i;let t=(r=e!=null?e:(s=this.measurerSource)==null?void 0:s.call(this))!=null?r:U(),n=(i=this.intrinsicSize(t))!=null?i:{w:0,h:0};return{x:-n.w/2,y:-n.h/2}}flowOffset(e){var i,o;let t=(o=e!=null?e:(i=this.measurerSource)==null?void 0:i.call(this))!=null?o:U(),n=this.drawOffset(t),[s,r]=this.anchorShift(t);return{x:n.x+s,y:n.y+r}}anchorShift(e){var l,c;if(!this.hasAnchor)return[0,0];let[t,n]=this.anchor,s=(c=e!=null?e:(l=this.measurerSource)==null?void 0:l.call(this))!=null?c:U(),r=this.intrinsicSize(s);if(!r)return F(this,gt)||(Y(this,gt,!0),W(`anchor set on a node without an intrinsic box${this.id?` ('${this.id}')`:""} \u2014 ignored (give it a sized node, or position children explicitly)`)),[0,0];let i=this.drawOffset(s),o=-(i.x+t*r.w),a=-(i.y+n*r.h);return[o===0?0:o,a===0?0:a]}requiresGroup(){return this.opacity()<1||this.blend()!=="source-over"||this.filters().length>0}groupShader(){}emit(e,t){let n=this.opacity();if(n<=0)return;let s=this.localMatrix(),r=Te(s,Ee),i=this.groupShader(),o=this.requiresGroup()||i!==void 0||this.cache,a=this.cache&&e.mark!==void 0;e.push({op:"save"}),r||e.push({op:"transform",m:s});let l=-1;o&&(a&&(l=e.mark()),e.push(M({op:"pushGroup",opacity:n,blend:this.blend(),filters:this.filters()},i!==void 0?{shader:i}:{})));let c=a?e.mark():-1;if(this.draw(e,t),o){if(a){let h=e.cacheKey(c,e.mark());h!==void 0&&e.patchCacheKey(l,h)}e.push({op:"popGroup"})}e.push({op:"restore"})}},gt=new WeakMap,_r),Zr=class extends Z{};function Ye(e,t,n,s,r){if(r<=0)return[["M",e,t],["L",e+n,t],["L",e+n,t+s],["L",e,t+s],["Z"]];let i=Math.PI/2;return[["M",e+r,t],["L",e+n-r,t],["E",e+n-r,t+r,r,r,0,-i,0],["L",e+n,t+s-r],["E",e+n-r,t+s-r,r,r,0,0,i],["L",e+r,t+s],["E",e+r,t+s-r,r,r,0,i,Math.PI],["L",e,t+r],["E",e+r,t+r,r,r,0,Math.PI,Math.PI+i],["Z"]]}var Me,Wr,re=(Wr=class extends Z{constructor(t={}){var n;super(t);S(this,"children");J(this,Me,A(0));this.children=(n=t.children)!=null?n:[];for(let s of this.children)s.parent=this}trackStructure(){F(this,Me).call(this)}add(t){return t.parent=this,this.children.push(t),F(this,Me).set(F(this,Me).peek()+1),this}remove(t){let n=this.children.indexOf(t);return n>=0&&(this.children.splice(n,1),t.parent===this&&(t.parent=null),F(this,Me).set(F(this,Me).peek()+1)),this}draw(t,n){let s=this.children.map((r,i)=>({node:r,i})).sort((r,i)=>r.node.zIndex()-i.node.zIndex()||r.i-i.i).map(r=>r.node);for(let r of s)r.emit(t,n)}},Me=new WeakMap,Wr);function Br(e){return typeof e=="string"?{kind:"color",color:e}:e}var Ss=class extends Z{constructor(t={}){var n;super(t);S(this,"fill");S(this,"stroke");S(this,"strokeWidth");S(this,"sketch");S(this,"sketchFill");S(this,"sketchSeed");S(this,"reveal");this.fill=j(A(""),t.fill),this.stroke=j(A(""),t.stroke),this.strokeWidth=j(A(0),t.strokeWidth),this.reveal=j(A(1),t.reveal),this.registerTarget("fill",this.fill,["color","paint"]),this.registerTarget("stroke",this.stroke,"color"),this.registerTarget("strokeWidth",this.strokeWidth,"number"),this.registerTarget("reveal",this.reveal,"number"),t.sketch&&ms(t.sketch),t.sketchFill&&ws(t.sketchFill),t.sketchFill&&!t.sketch&&W(`${this.id!==void 0?`'${this.id}': `:""}sketchFill is ignored without sketch \u2014 hachure fill is drawn only by the sketch renderer. Set a sketch style (e.g. { kind: 'pencil' }) to see it.`),this.sketch=t.sketch,this.sketchFill=t.sketchFill,this.sketchSeed=(n=t.sketchSeed)!=null?n:this.id!==void 0?ks(this.id):0}draw(t){let n=this.pathSegs();if(this.sketch)return this.drawSketch(t,n);let s=t.resource({kind:"path",segs:n}),r=this.fill();r&&t.push({op:"fillPath",path:s,paint:Br(r)});let i=this.stroke(),o=this.strokeWidth();if(i&&o>0){let a=this.reveal();a<1?qr(t,n,{kind:"color",color:i},{width:o},a):t.push({op:"strokePath",path:s,paint:{kind:"color",color:i},stroke:{width:o}})}}drawSketch(t,n){let s=ce(this.sketchSeed>>>0),r=this.fill();if(r){let h=t.resource({kind:"path",segs:n});t.push({op:"fillPath",path:h,paint:Br(r)})}let{strokes:i,resolved:o}=an(n,this.sketch,s),a=this.stroke()||(typeof r=="string"?r:"")||"#000000";if(this.sketchFill){let h=t.resource({kind:"path",segs:n});t.push({op:"save"}),t.push({op:"clip",path:h,rule:"nonzero"});let u=bs(n,this.sketchFill,s);if(u.length>0){let f=t.resource({kind:"path",segs:u});t.push({op:"strokePath",path:f,paint:{kind:"color",color:a},stroke:{width:Math.max(1,o.width*.5),cap:"round"}})}t.push({op:"restore"})}let l=this.reveal(),c=l<1;for(let h of i){if(h.length===0)continue;if(c){qr(t,h,{kind:"color",color:a},{width:o.width,cap:"round",join:"round"},l);continue}let u=t.resource({kind:"path",segs:h});t.push({op:"strokePath",path:u,paint:{kind:"color",color:a},stroke:M({width:o.width,cap:"round",join:"round"},o.dash?{dash:o.dash}:{})})}}};function j(e,t){return typeof t=="function"?e.bindSource(t):t!==void 0&&e.set(t),e}function _o(e){let t=[],n=null;for(let s of e)s[0]==="M"?(n=[s],t.push(n)):n&&n.push(s);return t}function qr(e,t,n,s,r){for(let i of _o(t)){let o=wt(i).reduce((l,c)=>l+ys(c),0),a=e.resource({kind:"path",segs:i});e.push({op:"strokePath",path:a,paint:n,stroke:R(M({},s),{dash:[o,o],dashOffset:o*(1-r)})})}}function rn(e){if(e===void 0)return[];if(Array.isArray(e)&&e.every(t=>typeof t=="object"&&t!==null&&Array.isArray(t.v)&&Array.isArray(t.in)&&Array.isArray(t.out)))return e;throw new TypeError(`Path.data expects PathValue (PathContour[]); for an SVG path 'd' string, parse it with pathFromSvg(d) from "@glissade/scene/path" (or window.glissade.pathFromSvg in the browser bundle)`)}function ln(e){let t=[],n=null,s=(i,o=[0,0],a=[0,0])=>{n.v.push(i),n.in.push(o),n.out.push(a)},r=()=>n.v[n.v.length-1];for(let i of e)switch(i[0]){case"M":n={closed:!1,v:[[i[1],i[2]]],in:[[0,0]],out:[[0,0]]},t.push(n);break;case"L":n&&s([i[1],i[2]]);break;case"C":if(n){let o=r();n.out[n.out.length-1]=[i[1]-o[0],i[2]-o[1]],s([i[5],i[6]],[i[3]-i[5],i[4]-i[6]])}break;case"Q":if(n){let o=r(),a=i[1],l=i[2],c=i[3],h=i[4];n.out[n.out.length-1]=[2/3*(a-o[0]),2/3*(l-o[1])],s([c,h],[2/3*(a-c),2/3*(l-h)])}break;case"E":if(n){let[,o,a,l,c,h,u,f]=i,d=Math.cos(h),g=Math.sin(h);for(let m=1;m<=16;m++){let k=u+(f-u)*(m/16),T=l*Math.cos(k),y=c*Math.sin(k);s([o+T*d-y*g,a+T*g+y*d])}}break;case"Z":if(n){n.closed=!0;let o=n.v[0],a=r();n.v.length>1&&Math.abs(o[0]-a[0])<1e-9&&Math.abs(o[1]-a[1])<1e-9&&(n.in[0]=n.in[n.in.length-1],n.v.pop(),n.in.pop(),n.out.pop())}break}return t}var hn=class extends Ss{constructor(t={}){super(t);S(this,"width");S(this,"height");S(this,"cornerRadius");this.width=j(A(0),t.width),this.height=j(A(0),t.height),this.cornerRadius=j(A(0),t.cornerRadius),this.registerTarget("width",this.width,"number"),this.registerTarget("height",this.height,"number"),this.registerTarget("cornerRadius",this.cornerRadius,"number")}intrinsicSize(){return{w:this.width(),h:this.height()}}pathSegs(){let t=this.width(),n=this.height(),s=Math.min(Math.max(0,this.cornerRadius()),t/2,n/2);return Ye(-t/2,-n/2,t,n,s)}},un=class extends Ss{constructor(t={}){super(t);S(this,"radius");this.radius=j(A(0),t.radius),this.registerTarget("radius",this.radius,"number")}intrinsicSize(){let t=this.radius()*2;return{w:t,h:t}}pathSegs(){let t=this.radius();return[["E",0,0,t,t,0,0,Math.PI*2],["Z"]]}},bt=class extends Ss{constructor(t={}){super(t);S(this,"data");let n=t.data,s=typeof n=="function"?()=>rn(n()):n!==void 0?rn(n):void 0;this.data=j(A([]),s),this.registerTarget("d",this.data,"path")}bounds(){let t=1/0,n=1/0,s=-1/0,r=-1/0;for(let i of this.data())for(let o=0;o<i.v.length;o++){let a=i.v[o][0],l=i.v[o][1],c=[[a,l],[a+i.in[o][0],l+i.in[o][1]],[a+i.out[o][0],l+i.out[o][1]]];for(let h of c)h[0]<t&&(t=h[0]),h[1]<n&&(n=h[1]),h[0]>s&&(s=h[0]),h[1]>r&&(r=h[1])}return t>s?{minX:0,minY:0,maxX:0,maxY:0}:{minX:t,minY:n,maxX:s,maxY:r}}intrinsicSize(){let t=this.bounds();return{w:t.maxX-t.minX,h:t.maxY-t.minY}}drawOffset(){let t=this.bounds();return{x:t.minX,y:t.minY}}pathSegs(){let t=[];for(let n of this.data()){let s=n.v.length;if(s!==0){t.push(["M",n.v[0][0],n.v[0][1]]);for(let r=0;r<s-1;r++)t.push(["C",n.v[r][0]+n.out[r][0],n.v[r][1]+n.out[r][1],n.v[r+1][0]+n.in[r+1][0],n.v[r+1][1]+n.in[r+1][1],n.v[r+1][0],n.v[r+1][1]]);n.closed&&s>1&&(t.push(["C",n.v[s-1][0]+n.out[s-1][0],n.v[s-1][1]+n.out[s-1][1],n.v[0][0]+n.in[0][0],n.v[0][1]+n.in[0][1],n.v[0][0],n.v[0][1]]),t.push(["Z"]))}}return t}},hs,fn=(hs=class extends Z{constructor(t){super(t);S(this,"assetId");S(this,"width");S(this,"height");this.assetId=t.assetId,this.width=j(A(0),t.width),this.height=j(A(0),t.height),this.registerTarget("width",this.width,"number"),this.registerTarget("height",this.height,"number")}intrinsicSize(){return{w:this.width(),h:this.height()}}draw(t){let n=this.width(),s=this.height();if(n<=0||s<=0)return;let r=t.resource({kind:"image",assetId:this.assetId});t.push({op:"drawImage",image:r,dst:{x:-n/2,y:-s/2,w:n,h:s}})}},S(hs,"assetKind","image"),hs),us,dn=(us=class extends Z{constructor(t){var n,s,r;super(t);S(this,"assetId");S(this,"at");S(this,"trimStart");S(this,"playbackRate");S(this,"clipDuration");S(this,"sourceFps");S(this,"width");S(this,"height");this.assetId=t.assetId,this.at=(n=t.at)!=null?n:0,this.trimStart=(s=t.trimStart)!=null?s:0,this.playbackRate=(r=t.playbackRate)!=null?r:1,this.clipDuration=t.clipDuration,this.sourceFps=t.sourceFps,this.width=j(A(0),t.width),this.height=j(A(0),t.height),this.registerTarget("width",this.width,"number"),this.registerTarget("height",this.height,"number")}mediaTime(t){let n=(t-this.at)*this.playbackRate;if(n<0||this.clipDuration!==void 0&&t-this.at>=this.clipDuration)return null;let s=this.trimStart+n;return this.sourceFps!==void 0?Math.floor(s*this.sourceFps+1e-9)/this.sourceFps:s}draw(t,n){let s=this.mediaTime(n.time);if(s===null)return;let r=this.width(),i=this.height();if(r<=0||i<=0)return;let o=t.resource({kind:"videoFrame",assetId:this.assetId,mediaT:s});t.push({op:"drawImage",image:o,dst:{x:-r/2,y:-i/2,w:r,h:i}})}},S(us,"assetKind","video"),us),Xe=class extends Z{constructor(t={}){var n,s,r,i,o;super(t);S(this,"text");S(this,"fill");S(this,"fontSize");S(this,"fontFamily");S(this,"fontWeight");S(this,"fontStyle");S(this,"align");S(this,"width");S(this,"lineHeight");S(this,"reveal");S(this,"revealFraction");this.text=j(A(""),t.text),this.fill=j(A("#000000"),t.fill),this.fontSize=j(A(16),t.fontSize),this.fontFamily=(n=t.fontFamily)!=null?n:"sans-serif",this.fontWeight=(s=t.fontWeight)!=null?s:400,this.fontStyle=(r=t.fontStyle)!=null?r:"normal",this.align=(i=t.align)!=null?i:"left",this.width=j(A(0),t.width),this.lineHeight=(o=t.lineHeight)!=null?o:1.25,this.reveal=j(A(Number.POSITIVE_INFINITY),t.reveal),this.revealFraction=j(A(NaN),t.revealFraction),this.registerTarget("width",this.width,"number"),this.registerTarget("text",this.text,"string"),this.registerTarget("fill",this.fill,"color"),this.registerTarget("fontSize",this.fontSize,"number"),this.registerTarget("reveal",this.reveal,"number"),this.registerTarget("revealFraction",this.revealFraction,"number")}effectiveReveal(t){let n=this.revealFraction();if(Number.isNaN(n))return this.reveal();let s=this.graphemes(t).length;return Math.round((n<=0?0:n>=1?1:n)*s)}intrinsicSize(t){let n=this.text();if(!n)return{w:0,h:0};let s=M({family:this.fontFamily,size:this.fontSize(),weight:this.fontWeight},this.fontStyle==="italic"?{style:"italic"}:{}),r=this.width(),i=se(n,s,r>0?r:void 0,t),o=Math.max(...i.map(a=>X(t.measureText(a,s).width)),0);return{w:r>0?r:o,h:X(s.size*this.lineHeight)*i.length}}drawOffset(t){var a,l,c;let n=(l=t!=null?t:(a=this.measurerSource)==null?void 0:a.call(this))!=null?l:U(),s=this.intrinsicSize(n),r=M({family:this.fontFamily,size:this.fontSize(),weight:this.fontWeight},this.fontStyle==="italic"?{style:"italic"}:{}),i=(c=se(this.text(),r,this.width()>0?this.width():void 0,n)[0])!=null?c:"",o=n.measureText(i,r).ascent;return{x:this.align==="left"?0:this.align==="center"?-s.w/2:-s.w,y:-o}}measuredSize(t){var n,s;return this.intrinsicSize((s=t!=null?t:(n=this.measurerSource)==null?void 0:n.call(this))!=null?s:U())}lineBoxes(t){var c,h;let n=(h=t!=null?t:(c=this.measurerSource)==null?void 0:c.call(this))!=null?h:U(),s=this.text();if(!s)return[];let r=M({family:this.fontFamily,size:this.fontSize(),weight:this.fontWeight},this.fontStyle==="italic"?{style:"italic"}:{}),i=this.width(),o=se(s,r,i>0?i:void 0,n),a=X(r.size*this.lineHeight),l=[];for(let u=0;u<o.length;u++){let f=o[u];if(!f)continue;let d=n.measureText(f,r),g=X(d.width),m=this.align==="left"?0:this.align==="center"?-g/2:-g;l.push({text:f,x:m,y:u*a-d.ascent,w:g,h:d.ascent+d.descent})}return l}wordBoxes(t){var c,h;let n=(h=t!=null?t:(c=this.measurerSource)==null?void 0:c.call(this))!=null?h:U(),s=this.text();if(!s)return[];let r=M({family:this.fontFamily,size:this.fontSize(),weight:this.fontWeight},this.fontStyle==="italic"?{style:"italic"}:{}),i=this.width(),o=se(s,r,i>0?i:void 0,n),a=X(r.size*this.lineHeight),l=[];for(let u=0;u<o.length;u++){let f=o[u];if(!f)continue;let d=n.measureText(f,r),g=X(d.width),m=this.align==="left"?0:this.align==="center"?-g/2:-g,k=u*a-d.ascent,T=d.ascent+d.descent,y="";for(let p of cn(f)){let b=y;y+=p;let v=p.trim();if(v==="")continue;let I=p.length-p.trimStart().length,w=n.measureText(b+p.slice(0,I),r).width,x=n.measureText(b+p.trimEnd(),r).width;l.push({text:v,line:u,x:m+w,y:k,w:x-w,h:T})}}return l}graphemeBoxes(t){var c,h;let n=(h=t!=null?t:(c=this.measurerSource)==null?void 0:c.call(this))!=null?h:U(),s=this.text();if(!s)return[];let r=M({family:this.fontFamily,size:this.fontSize(),weight:this.fontWeight},this.fontStyle==="italic"?{style:"italic"}:{}),i=this.width(),o=se(s,r,i>0?i:void 0,n),a=X(r.size*this.lineHeight),l=[];for(let u=0;u<o.length;u++){let f=o[u];if(!f)continue;let d=n.measureText(f,r),g=X(d.width),m=this.align==="left"?0:this.align==="center"?-g/2:-g,k=u*a-d.ascent,T=d.ascent+d.descent,y="";for(let p of ye(f)){let b=y;if(y+=p,p.trim()==="")continue;let v=n.measureText(b,r).width,I=n.measureText(b+p,r).width;l.push({text:p,line:u,x:m+v,y:k,w:I-v,h:T})}}return l}graphemes(t){var l,c;let n=(c=t!=null?t:(l=this.measurerSource)==null?void 0:l.call(this))!=null?c:U(),s=this.text();if(!s)return[];let r=M({family:this.fontFamily,size:this.fontSize(),weight:this.fontWeight},this.fontStyle==="italic"?{style:"italic"}:{}),i=this.width(),o=se(s,r,i>0?i:void 0,n),a=[];for(let h of o)for(let u of ye(h))a.push(u);return a}revealHead(t){var f,d,g;let n=(d=t!=null?t:(f=this.measurerSource)==null?void 0:f.call(this))!=null?d:U(),s=M({family:this.fontFamily,size:this.fontSize(),weight:this.fontWeight},this.fontStyle==="italic"?{style:"italic"}:{}),r=this.width(),i=se(this.text(),s,r>0?r:void 0,n),o=X(s.size*this.lineHeight),a=i.reduce((m,k)=>m+ye(k).length,0),l=this.effectiveReveal(n),c=Math.max(0,Math.min(Number.isFinite(l)?Math.floor(l):a,a)),h=c,u={x:0,y:0,h:0,line:0,index:c};for(let m=0;m<i.length;m++){let k=(g=i[m])!=null?g:"",T=n.measureText(k,s),y=X(T.width),p=this.align==="left"?0:this.align==="center"?-y/2:-y,b=m*o-T.ascent,v=T.ascent+T.descent,I=ye(k);if(h<=I.length)return{x:p+(h<=0?0:n.measureText(I.slice(0,h).join(""),s).width),y:b,h:v,line:m,index:c};h-=I.length,u={x:p+T.width,y:b,h:v,line:m,index:c}}return u}draw(t,n){let s=this.text();if(!s)return;let r=M({family:this.fontFamily,size:this.fontSize(),weight:this.fontWeight},this.fontStyle==="italic"?{style:"italic"}:{}),i=this.width(),o=se(s,r,i>0?i:void 0,n.measurer),a=X(r.size*this.lineHeight),l=this.effectiveReveal(n.measurer),c=Number.isFinite(l),h=c?Math.max(0,Math.floor(l)):0;for(let u=0;u<o.length;u++){let f=o[u];if(!f)continue;if(!c){t.push(M({op:"fillText",text:f,font:r,paint:{kind:"color",color:this.fill()},x:0,y:u*a},this.align!=="left"?{align:this.align}:{}));continue}if(h<=0)break;let d=ye(f),g=Math.min(h,d.length);if(h-=g,g===d.length)t.push(M({op:"fillText",text:f,font:r,paint:{kind:"color",color:this.fill()},x:0,y:u*a},this.align!=="left"?{align:this.align}:{}));else{let m=X(n.measurer.measureText(f,r).width),k=this.align==="left"?0:this.align==="center"?-m/2:-m;t.push({op:"fillText",text:d.slice(0,g).join(""),font:r,paint:{kind:"color",color:this.fill()},x:k,y:u*a})}}}};function ei(e,t,n){var f,d;let s=(d=n!=null?n:(f=e.measurerSource)==null?void 0:f.call(e))!=null?d:U(),r=e.text();if(!r)return[];let i=M({family:e.fontFamily,size:e.fontSize(),weight:e.fontWeight},e.fontStyle==="italic"?{style:"italic"}:{}),o=e.width(),a=se(r,i,o>0?o:void 0,s),l=X(i.size*e.lineHeight),c=t.keys,h=[],u=0;for(let g=0;g<a.length;g++){let m=a[g];if(!m)continue;let k=s.measureText(m,i),T=X(k.width),y=e.align==="left"?0:e.align==="center"?-T/2:-T,p=g*l-k.ascent,b="";for(let v of ye(m)){b+=v;let I=u+1,w=Number.POSITIVE_INFINITY;for(let x of c)if(x.value>=I){w=x.t;break}Number.isFinite(w)&&h.push({charIndex:u,grapheme:v,time:w,x:y+s.measureText(b,i).width,y:p,line:g}),u++}}return h}var Ms=class extends Error{constructor(){super("a Layout node was evaluated but no LayoutEngine is registered \u2014 await loadYogaLayoutEngine() from '@glissade/scene/layout' before mounting/rendering (the engine is wasm and loads async; evaluate() never awaits, \xA72.5)"),this.name="LayoutEngineMissingError"}},pn=null;function ti(e){pn=e}function ni(){return pn}function si(){if(!pn)throw new Ms;return pn}var Wo=["Group","Rect","Circle","Path","Text","Image","Video","Layout","Custom"],fi=class extends Z{constructor(t){var n,s;super(t);S(this,"target");S(this,"color");S(this,"progress");S(this,"padding");S(this,"cornerRadius");this.target=t.text,this.color=ri(A("#ffe066"),t.color),this.progress=ri(A(1),t.progress),this.padding=(n=t.padding)!=null?n:[4,2],this.cornerRadius=(s=t.cornerRadius)!=null?s:4,this.registerTarget("progress",this.progress,"number"),this.registerTarget("color",this.color,"color")}draw(t,n){let s=Math.min(1,Math.max(0,this.progress()));if(s<=0)return;let[r,i]=this.padding,o=this.target.lineBoxes(n.measurer).map(u=>({x:u.x-r,y:u.y-i,w:u.w+2*r,h:u.h+2*i})),a=o.reduce((u,f)=>u+f.w,0);if(a<=0)return;let l=this.target.localMatrix();Te(l,Ee)||t.push({op:"transform",m:l});let c=this.color(),h=s*a;for(let u of o){let f=Math.min(u.w,h);if(h-=f,f<=0)break;let d=Math.min(this.cornerRadius,f/2,u.h/2),g=t.resource({kind:"path",segs:Ye(u.x,u.y,f,u.h,d)});if(t.push({op:"fillPath",path:g,paint:{kind:"color",color:c}}),h<=0)break}}};function jo(e,t={}){return new fi(R(M({},t),{text:e}))}function ri(e,t){return typeof t=="function"?e.bindSource(t):t!==void 0&&e.set(t),e}var di=class extends Z{constructor(t){var n,s,r,i;super(t);S(this,"target");S(this,"blinkPeriod");S(this,"blinkPhase");S(this,"solidWhileTyping");S(this,"caretWidth");S(this,"fill");this.target=t.text,this.blinkPeriod=(n=t.blinkPeriod)!=null?n:1.06,this.blinkPhase=(s=t.blinkPhase)!=null?s:0,this.solidWhileTyping=(r=t.solidWhileTyping)!=null?r:!0,this.caretWidth=(i=t.width)!=null?i:2,this.fill=Yo(A(""),t.fill),this.registerTarget("fill",this.fill,"color")}draw(t,n){let s=this.target.revealHead(n.measurer);if(s.h<=0)return;let r=!0,i=this.target.graphemes(n.measurer).length,o=s.index<i;if(!(this.solidWhileTyping&&o)){let h=this.blinkPeriod>0?this.blinkPeriod:1;r=((n.time-this.blinkPhase)%h+h)%h<h/2}if(!r)return;let a=this.target.localMatrix();Te(a,Ee)||t.push({op:"transform",m:a});let l=this.fill()||this.target.fill(),c=t.resource({kind:"path",segs:Ye(s.x,s.y,this.caretWidth,s.h,0)});t.push({op:"fillPath",path:c,paint:{kind:"color",color:l}})}};function Ho(e,t={}){return new di(R(M({},t),{text:e}))}function Yo(e,t){return typeof t=="function"?e.bindSource(t):t!==void 0&&e.set(t),e}var Xo=.06;function Go(e,t,n={}){var u,f,d,g;let s=(u=n.start)!=null?u:0,r=(f=n.perChar)!=null?f:Xo,i=(d=n.gap)!=null?d:0,o=s,a=[],l=[C(s,"",{interp:"hold"})],c=[],h=[];for(let m=0;m<t.length;m++){let k=t[m],T=o,y=(g=k.perChar)!=null?g:r;if(k.type!==void 0)for(let p of ye(k.type)){o+=y,a.push(p);let b=a.join("");l.push(C(o,b,{interp:"hold"})),c.push({time:o,kind:"insert",grapheme:p,value:b})}if(k.delete!==void 0)for(let p=0;p<k.delete&&a.length>0;p++){o+=y;let b=a.pop(),v=a.join("");l.push(C(o,v,{interp:"hold"})),c.push({time:o,kind:"delete",grapheme:b,value:v})}k.hold!==void 0&&(o+=k.hold),h.push({index:m,start:T,end:o,value:a.join("")}),i>0&&m<t.length-1&&(o+=i)}return{track:pe(e,"string",l),marks:c,steps:h,duration:o}}var Ge=class extends Error{constructor(e){super(e),this.name="EachError"}};function Ts(e,t){let n=(e^Math.imul(t+1,2654435769))>>>0;return n=Math.imul(n^n>>>16,569420461),n=Math.imul(n^n>>>15,1935289751),(n^n>>>15)>>>0}var Uo=1779033703;function Ko(e,t,n){var s,r,i,o,a,l,c,h,u,f,d,g;if(typeof e=="function")return e(t,n);switch(e.kind){case"row":{let m=(s=e.gap)!=null?s:n>1?1/(n-1):0,k=(r=e.align)!=null?r:.5,T=.5-m*(n-1)/2;return[n===1?.5:T+m*t,k]}case"column":{let m=(i=e.gap)!=null?i:n>1?1/(n-1):0,k=(o=e.align)!=null?o:.5,T=.5-m*(n-1)/2;return[k,n===1?.5:T+m*t]}case"grid":{let m=e.cols;if(!(m>=1))throw new Ge(`grid layout needs cols >= 1 (got ${m})`);let k=(a=e.rows)!=null?a:Math.ceil(n/m),T=(l=e.order)!=null?l:"row",y=T==="row"?t%m:Math.floor(t/k),p=T==="row"?Math.floor(t/m):t%k,b=(c=e.gapX)!=null?c:m>1?1/(m-1):0,v=(h=e.gapY)!=null?h:k>1?1/(k-1):0,I=b*(m-1),w=v*(k-1);return[m===1?.5:.5-I/2+b*y,k===1?.5:.5-w/2+v*p]}case"ring":{let m=(u=e.radius)!=null?u:.5,[k,T]=(f=e.center)!=null?f:[.5,.5],y=((d=e.startAngle)!=null?d:-Math.PI/2)+((g=e.sweep)!=null?g:Math.PI*2)*(n===0?0:t/n);return[k+m*Math.cos(y),T+m*Math.sin(y)]}}}function Qo(e,t,n){let s=(n-1)/2;switch(e){case"from-center":return r=>Math.abs(r-s)*t;case"from-edges":return r=>(s-Math.abs(r-s))*t;case"delay":return r=>r*t}}function Jo(e,t){var s,r;let n=(s=e.stagger)!=null?s:0;return typeof n=="function"?n:Qo((r=e.distribute)!=null?r:"delay",n,t)}function Zo(e,t,n){var d,g,m,k,T,y;if(!Number.isInteger(e)||e<0)throw new Ge(`each() count must be a non-negative integer (got ${e})`);let s=((d=n.seed)!=null?d:ks(n.id))>>>0,r=n.box,[i,o]=(g=r==null?void 0:r.origin)!=null?g:[0,0],a=[],l=[],c=new Set;for(let p=0;p<e;p++){let b=`${n.id}/${p}`,v=Ko(n.layout,p,e),I={i:p,n:e,id:b,place:v,rng:ce(Ts(s,p)),seed:s},w=t(p,I);if(!(w instanceof Z))throw new Ge(`each() factory must return a Node for index ${p} (got ${typeof w})`);if(c.has(w))throw new Ge(`each() factory returned the same Node instance for index ${p} \u2014 the factory must construct a new node per index (it is called once per clone)`);if(c.add(w),w.id===void 0)w.id=b;else if(w.id!==b)throw new Ge(`each() factory set id '${w.id}' on index ${p}, but each owns the id namespace \u2014 leave it unset so it becomes '${b}'`);a.push(w),l.push(r?{frac:v,px:[i+v[0]*r.w,o+v[1]*r.h]}:{frac:v})}let h=new re({id:n.id,children:a}),u=[],f=(k=(m=n.motion)==null?void 0:m.startSec)!=null?k:0;if(n.motion){let p=n.motion,b=(T=p.startSec)!=null?T:0,v=Jo(p,e);for(let I=0;I<e;I++){let w=ce(Ts(Ts(s,I),Uo)),x=(y=p.jitter)==null?void 0:y.call(p,I,w,e),E=M(M({},x!==void 0?{overrides:x}:{}),p.speed!==void 0?{speed:p.speed}:{}),$=p.clip.apply(`${n.id}/${I}`,b+v(I),E);u.push(...$.tracks),$.end>f&&(f=$.end)}}return{node:h,children:a,tracks:u,end:f,places:l}}function pi(e,t={}){var i,o,a;let n=(i=t.start)!=null?i:0,s=(o=t.duration)!=null?o:1,r=(a=t.ease)!=null?a:"easeInOutCubic";return pe(`${e}/reveal`,"number",[C(n,0),C(n+s,1,r)])}function ea(e,t={}){var s,r;let n=(r=t.delay)!=null?r:((s=t.duration)!=null?s:1)*.6;return _t(e.map(i=>pi(i,t)),n)}var mi=class extends Error{constructor(e){super(`'${e}' was called inside evaluate() \u2014 scene code must be a pure function of time (\xA75.5). Read ctx.time/frame, use the seeded random(seed) from @glissade/core, and resolve assets before rendering.`),this.name="DeterminismViolationError"}};function ta(){let e=globalThis,t=[{target:Math,key:"random",label:"Math.random"},{target:Date,key:"now",label:"Date.now"},{target:e,key:"setTimeout",label:"setTimeout"},{target:e,key:"setInterval",label:"setInterval"}];return typeof performance!="undefined"&&t.push({target:performance,key:"now",label:"performance.now"}),typeof e.requestAnimationFrame=="function"&&t.push({target:e,key:"requestAnimationFrame",label:"requestAnimationFrame"}),t}function na(e,t){if(e==="off")return t();let n=ta(),s=n.map(i=>i.target[i.key]),r=new Set;n.forEach((i,o)=>{i.target[i.key]=(...a)=>{if(e==="throw")throw new mi(i.label);return r.has(i.label)||(r.add(i.label),W(`${i.label} called inside evaluate() \u2014 nondeterministic, not reproducible on export (\xA75.5)`)),s[o].apply(i.target,a)}});try{return t()}finally{n.forEach((i,o)=>{i.target[i.key]=s[o]})}}var gi=class extends Error{constructor(e){super(`duplicate node id '${e}' \u2014 explicit ids must be unique (\xA73.1/\xA76.5)`),this.name="DuplicateNodeIdError"}},yi=class extends Error{constructor(e){super(`node id '${e}' uses the reserved '~' prefix \u2014 that namespace is for structural fallback ids (\xA76.5), which are inspection-only and never track targets; choose another id`),this.name="ReservedNodeIdError"}};function wi(e,t,n){if(e.measurerSource=n,e.id!==void 0){if(e.id.startsWith("~"))throw new yi(e.id);if(t.has(e.id))throw new gi(e.id);t.set(e.id,e)}if(e instanceof re)for(let s of e.children)wi(s,t,n)}function sa(e){let t=new re({id:"__root",children:e.children}),n=new Map,s=Jt(),r=A(null);return wi(t,n,()=>{var i;return(i=r())!=null?i:U()}),{root:t,nodes:n,size:e.size,playhead:s,resolveTarget:i=>{for(let o=i.lastIndexOf("/");o>0;o=i.lastIndexOf("/",o-1)){let a=n.get(i.slice(0,o));if(a)return a.resolveTarget(i.slice(o+1))}},setTextMeasurer:i=>{r.set(i)},get textMeasurer(){var i;return(i=r.peek())!=null?i:U()}}}var ii=new WeakMap;function bi(e,t){let n=ii.get(e);n||(n=new WeakMap,ii.set(e,n));let s=n.get(t);if(!s){let r=ne(t);s={compiled:r,bound:as(r,e.resolveTarget,e.playhead)},n.set(t,s)}return s}var ra=Object.freeze({version:1,tracks:[]});function Ue(e,t,n=0){if(t===void 0)return Ue(e,ra,e.playhead.peek());bi(e,t);let s=t.fps,r={time:n,frame:s!==void 0?Math.round(n*s):-1,measurer:e.textMeasurer};return cs(e.playhead,n,()=>{let i=yt(e.size);return e.root.emit(i,r),i.finish()})}function mn(e){return JSON.stringify(e,He)}function ia(e,t,n){let s=e(),r=e(),i=Ue(s,t,n),o=Ue(r,t,n);if(mn(i)===mn(o))return{ok:!0};let a=t.fps!==void 0?Math.round(n*t.fps):-1,l={time:n,frame:a,measurer:s.textMeasurer},c={time:n,frame:a,measurer:r.textMeasurer},h;for(let[u,f]of s.nodes){let d=r.nodes.get(u);if(!d)return{ok:!1,node:u};let g=yt(s.size);f.emit(g,l);let m=yt(r.size);d.emit(m,c);let k=g.finish(),T=m.finish();if(mn(k)===mn(T))continue;if(f instanceof re){h!=null||(h=u);continue}let y=ds(k,T).deltas[0];return M({ok:!1,node:u},y!==void 0?{delta:y}:{})}return M({ok:!1},h!==void 0?{node:h}:{})}var Cs=new Set(["blur","drop-shadow","brightness","contrast","saturate"]),oi=e=>e<0?0:e>1?1:e;function ai(e,t,n,s,r){let i=1-r,o=i*i*i,a=3*i*i*r,l=3*i*r*r,c=r*r*r;return[o*e[0]+a*t[0]+l*n[0]+c*s[0],o*e[1]+a*t[1]+l*n[1]+c*s[1]]}function oa(e){let t=[];for(let n of e){let s=n.v.length;for(let r=0;r<s-1;r++)t.push([n.v[r],[n.v[r][0]+n.out[r][0],n.v[r][1]+n.out[r][1]],[n.v[r+1][0]+n.in[r+1][0],n.v[r+1][1]+n.in[r+1][1]],n.v[r+1]]);n.closed&&s>1&&t.push([n.v[s-1],[n.v[s-1][0]+n.out[s-1][0],n.v[s-1][1]+n.out[s-1][1]],[n.v[0][0]+n.in[0][0],n.v[0][1]+n.in[0][1]],n.v[0]])}return t}function xt(e,t={}){var h,u;let n=Math.max(1,Math.floor((h=t.samplesPerSegment)!=null?h:32)),s=oa(e),r=[],i=[];if(s.length>0){let f=ai(...s[0],0);r.push(f),i.push(0);let d=0;for(let g of s)for(let m=1;m<=n;m++){let k=ai(...g,m/n);d+=Math.hypot(k[0]-f[0],k[1]-f[1]),r.push(k),i.push(d),f=k}}else{let f=(u=e[0])==null?void 0:u.v[0];r.push(f?[f[0],f[1]]:[0,0]),i.push(0)}let o=i[i.length-1],a=f=>{if(o<=0||f<=0)return{i:0,f:0};if(f>=o)return{i:r.length-2,f:1};let d=0;for(;d<i.length-1&&i[d+1]<f;)d++;let g=i[d+1]-i[d];return{i:d,f:g>0?(f-i[d])/g:0}},l=f=>{if(r.length===1)return[r[0][0],r[0][1]];let{i:d,f:g}=a(f),m=r[d],k=r[d+1];return[m[0]+(k[0]-m[0])*g,m[1]+(k[1]-m[1])*g]},c=f=>{if(r.length===1)return[1,0];let{i:d}=a(f),g=r[d],m=r[d+1],k=m[0]-g[0],T=m[1]-g[1],y=Math.hypot(k,T);return y>0?[k/y,T/y]:[1,0]};return{length:o,at:l,tangentAt:c,atProgress:f=>l(oi(f)*o),tangentAtProgress:f=>c(oi(f)*o)}}function aa(e){return xt(e).length}function ca(e,t){return xt(e).at(t)}var ki=class extends Z{constructor(t){var a;super(t);S(this,"target");S(this,"progress");this.target=t.target,this.progress=A(1),typeof t.progress=="function"?this.progress.bindSource(t.progress):t.progress!==void 0&&this.progress.set(t.progress),this.registerTarget("progress",this.progress,"number");let n=t.samplesPerSegment!==void 0?{samplesPerSegment:t.samplesPerSegment}:{},s=t.path instanceof bt?()=>t.path.data():()=>t.path,r=s(),i=xt(r,n),o=()=>{let l=s();return l!==r&&(r=l,i=xt(l,n)),i};if(t.target.position.bindSource(()=>o().atProgress(this.progress())),t.orient){let l=(a=t.orientOffset)!=null?a:0;t.target.rotation.bindSource(()=>{let c=o().tangentAtProgress(this.progress());return Math.atan2(c[1],c[0])*180/Math.PI+l})}}draw(){}};function la(e,t,n={}){return new ki(R(M({},n),{target:e,path:t}))}var St=class extends Error{constructor(e){super(e),this.name="TokenMatchError"}},Is=e=>e.replace(/\s+/g,"");function $s(e,t,n=1){let s=Is(t);if(s.length===0)throw new St("empty token");let r=0;for(let i=0;i<e.length;i++){let o="";for(let a=i;a<e.length;a++){if(o+=Is(e[a].text),o===s){if(r++,r===n)return[i,a];break}if(!s.startsWith(o))break}}throw new St(`no match for token '${t}'${n>1?` (occurrence ${n})`:""} \u2014 segments are [${e.map(i=>`'${i.text}'`).join(", ")}]`)}var vi=class extends Z{constructor(t){var s,r,i;super(t);S(this,"target");S(this,"padding");S(this,"cornerRadius");S(this,"rematch");S(this,"ranges");this.target=t.text,this.padding=(s=t.padding)!=null?s:[4,2],this.cornerRadius=(r=t.cornerRadius)!=null?r:4,this.rematch=(i=t.rematch)!=null?i:!1;let n=this.target.wordBoxes();this.ranges=t.ranges.map((o,a)=>{var u;let l=this.resolveRun(n,o),c=(u=o.id)!=null?u:`r${a}`,h={spec:o,fill:gn(A("#ffe066"),o.fill),opacity:gn(A(1),o.opacity),progress:gn(A(1),o.progress),scale:gn(A(1),o.scale),offset:ua(We([0,0]),o.offset),run:l,bound:ci(n,l)};return this.registerTarget(`${c}/fill`,h.fill,"color"),this.registerTarget(`${c}/opacity`,h.opacity,"number"),this.registerTarget(`${c}/progress`,h.progress,"number"),this.registerTarget(`${c}/scale`,h.scale,"number"),this.registerTarget(`${c}/offset`,h.offset,"vec2"),this.registerTarget(`${c}/offset.x`,h.offset.x,"number"),this.registerTarget(`${c}/offset.y`,h.offset.y,"number"),h})}resolveRun(t,n){var s;if(typeof n.match!="string"){let[r,i]=n.match;if(r<0||i>=t.length||r>i)throw new St(`word index range [${r}, ${i}] out of bounds (${t.length} boxes)`);return[r,i]}return $s(t,n.match,(s=n.occurrence)!=null?s:1)}draw(t,n){var l;let s=this.target.wordBoxes(n.measurer);if(s.length===0)return;let r=this.target.localMatrix(),[i,o]=this.padding,a=!1;for(let c of this.ranges){let h=c.opacity();if(h<=0)continue;let u=Math.min(1,Math.max(0,c.progress()));if(u<=0)continue;let f=c.run;if(this.rematch&&typeof c.spec.match=="string")f=$s(s,c.spec.match,(l=c.spec.occurrence)!=null?l:1);else if(ci(s,f)!==c.bound)throw new St(`bound token '${c.bound}' no longer matches boxes [${f[0]}, ${f[1]}] \u2014 the text changed (segments now [${s.slice(f[0],f[1]+1).map(b=>`'${b.text}'`).join(", ")}]); pass rematch: true for animated text`);let d=[];for(let b=f[0];b<=f[1];b++){let v=s[b],I=d[d.length-1],w=b>f[0]&&s[b-1].line===v.line?I:void 0;w?(w.w=v.x+v.w+i-w.x,w.y=Math.min(w.y,v.y-o),w.h=Math.max(w.h,v.y+v.h+o-w.y)):d.push({x:v.x-i,y:v.y-o,w:v.w+2*i,h:v.h+2*o})}!a&&!Te(r,Ee)&&(t.push({op:"transform",m:r}),a=!0);let g=h<1;g&&t.push({op:"pushGroup",opacity:h,blend:"source-over",filters:[]});let m=c.fill(),k=c.scale(),[T,y]=c.offset(),p=u*d.reduce((b,v)=>b+v.w,0);for(let b of d){let v=Math.min(b.w,p);if(p-=v,v<=0)break;let I=b.x+b.w/2+T,w=b.y+b.h/2+y,x=v*k,E=b.h*k,$=I-b.w/2*k,D=w-E/2,L=Math.min(this.cornerRadius,x/2,E/2),V=t.resource({kind:"path",segs:Ye($,D,x,E,L)});if(t.push({op:"fillPath",path:V,paint:{kind:"color",color:m}}),p<=0)break}g&&t.push({op:"popGroup"})}}};function ci(e,t){return e.slice(t[0],t[1]+1).map(n=>Is(n.text)).join("")}function ha(e,t){return new vi(R(M({},t),{text:e}))}function gn(e,t){return typeof t=="function"?e.bindSource(t):t!==void 0&&e.set(t),e}function ua(e,t){return typeof t=="function"?e.bindSource(t):t!==void 0&&e.set(t),e}function xi(e){let t=[],n=s=>{if(s instanceof Xe){let r=s.text();r&&t.push({family:s.fontFamily,text:r})}if(s instanceof re)for(let r of s.children)n(r)};return n(e.root),t}function fa(e){let t=e.indexOf("/");return t>=0?e.slice(0,t):e}function da(e,t){let n=[];for(let s of t.tracks){if(s.type!=="string")continue;let r=e.nodes.get(fa(s.target));if(r instanceof Xe)for(let i of s.keys){let o=i.value;typeof o=="string"&&o&&n.push({family:r.fontFamily,text:o})}}return n}async function As(e,t,n,s={}){var c,h;let r=(c=s.mode)!=null?c:"dev",i=dt(t.assets),o=[...xi(e),...(h=s.extraUsages)!=null?h:[]],a=new Set;for(let u of o)if(i.has(u.family))for(let f of i.fallbackChain(u.family))a.add(f);let l=new Map;for(let u of a){let f=i.resolveFace(u);if(!f)continue;let d=await n(f.url);d&&l.set(u,jt(d))}return os(o,i,l,r,M({},s.osFamilies!==void 0?{osFamilies:s.osFamilies}:{}))}var vt=class extends Error{constructor(t,n,s){super(`asset '${t}' not ready: ${n}. evaluate() never awaits \u2014 warm assets before evaluating (\xA72.5 readiness precondition)`);S(this,"assetId");S(this,"detail");S(this,"mediaT");this.name="ColdAssetError",this.assetId=t,this.detail=n,this.mediaT=s}},pa=class extends re{constructor(t){var s;super(t);S(this,"wgsl");S(this,"uniformSignals");this.wgsl=t.wgsl;let n=new Map;for(let[r,i]of Object.entries((s=t.uniforms)!=null?s:{})){let o=A(i);n.set(r,o),this.registerTarget(`u.${r}`,o,"number")}this.uniformSignals=n}uniform(t){let n=this.uniformSignals.get(t);if(!n)throw new Error(`ShaderEffect has no uniform '${t}' (have: ${[...this.uniformSignals.keys()].join(", ")})`);return n}groupShader(){let t={};for(let[n,s]of this.uniformSignals)t[n]=s();return{wgsl:this.wgsl,uniforms:t}}},ma=e=>e*e*(3-2*e),ga=2.4,ya=1-Math.exp(-5.76/2),wa=e=>(1-Math.exp(-((e*ga)**2)/2))/ya;function ba(e,t){if(t==="linear"||e.length<2)return e;let n=t==="gaussian"?wa:ma,s=e[0].offset,r=e[e.length-1].offset-s;if(r<=0)return e;let i=[],o=0;for(let a=0;a<64;a++){let l=s+r*(a/63);for(;o<e.length-2&&l>e[o+1].offset;)o++;let c=e[o],h=e[o+1],u=h.offset-c.offset,f=u>0?Math.min(1,Math.max(0,(l-c.offset)/u)):0;i.push({offset:l,color:ue(c.color,h.color,n(f))})}return i}var ka=4,va=2,Os=.32,li=1e-6,hi=1024;function Si(e,t,n){let s=new Uint8ClampedArray(Math.max(1,t)*Math.max(1,n)*4),r=e.points.map(l=>({u:l.pos[0],v:l.pos[1],lab:Oe(de(l.color))})),i=e.bg!==void 0?Oe(de(e.bg)):null,o=e.interpolation==="gaussian",a=2*Os*Os;for(let l=0;l<n;l++){let c=n>1?(l+.5)/n:.5;for(let h=0;h<t;h++){let u=t>1?(h+.5)/t:.5,f=0,d=0,g=0,m=0,k=0;i&&(f=1,d=i.L,g=i.a,m=i.b,k=i.alpha);let T=!1;for(let b=0;b<r.length;b++){let v=r[b],I=u-v.u,w=c-v.v,x=I*I+w*w;if(x<=li*li){d=v.lab.L,g=v.lab.a,m=v.lab.b,k=v.lab.alpha,T=!0;break}let E;o?E=Math.exp(-x/a):E=1/x,f+=E,d+=E*v.lab.L,g+=E*v.lab.a,m+=E*v.lab.b,k+=E*v.lab.alpha}let y;if(T)y=Be({L:d,a:g,b:m,alpha:k});else if(f>0){let b=1/f;y=Be({L:d*b,a:g*b,b:m*b,alpha:k*b})}else y={r:0,g:0,b:0,a:0};let p=(l*t+h)*4;s[p]=y.r,s[p+1]=y.g,s[p+2]=y.b,s[p+3]=Math.round(y.a*255)}}return s}function Mi(e,t){return{w:Math.min(hi,Math.max(1,Math.ceil(Math.abs(e)/4))),h:Math.min(hi,Math.max(1,Math.ceil(Math.abs(t)/4)))}}var ui=!1;function xa(e){var t,n,s;return ui||(ui=!0,W("mesh Paint on a stroke/text resolves to a representative solid color (mesh fill is supported only on filled paths, \xA73 Paint) \u2014 use a fillPath for the mesh gradient")),(s=(n=e.bg)!=null?n:(t=e.points[0])==null?void 0:t.color)!=null?s:"#00000000"}function Es(e,t,n){if(t.kind==="color")return t.color;if(t.kind==="mesh")return xa(t);let s;if(t.kind==="radial"){let i=t.center?t.center[0]:n?(n.minX+n.maxX)/2:0,o=t.center?t.center[1]:n?(n.minY+n.maxY)/2:0,a=t.radius!==void 0?t.radius:n?Math.hypot(n.maxX-n.minX,n.maxY-n.minY)/2:0;s=e.createRadialGradient(i,o,0,i,o,a)}else{let i=t.from?t.from[0]:n?(n.minX+n.maxX)/2:0,o=t.from?t.from[1]:n?n.minY:0,a=t.to?t.to[0]:n?(n.minX+n.maxX)/2:0,l=t.to?t.to[1]:n?n.maxY:0;s=e.createLinearGradient(i,o,a,l)}let r=t.interpolation?ba(t.stops,t.interpolation):t.stops;for(let i of r)s.addColorStop(i.offset,i.color);return s}function yn(e){return`${e.style==="italic"?"italic ":""}${e.weight!==void 0&&e.weight!==400?`${e.weight} `:""}${e.size}px ${e.family}`}var Sa=16;function Ma(e){let t=n=>Object.is(n,-0)?"0":String(Math.round(n*1e4)/1e4);return`${t(e[0])},${t(e[1])},${t(e[2])},${t(e[3])},${t(e[4])},${t(e[5])}`}function Ta(e){let t=0;for(let n of e!=null?e:[])n.kind==="blur"?t+=3*n.radius:n.kind==="drop-shadow"&&(t+=Math.max(Math.abs(n.dx),Math.abs(n.dy))+3*n.blur);return t}function Ti(e,t,n){return e?(t<e.minX&&(e.minX=t),n<e.minY&&(e.minY=n),t>e.maxX&&(e.maxX=t),n>e.maxY&&(e.maxY=n),e):{minX:t,minY:n,maxX:t,maxY:n}}function kt(e,t,n,s,r,i){for(let[o,a]of[[n,s],[r,s],[n,i],[r,i]])e.bounds=Ti(e.bounds,t[0]*o+t[2]*a+t[4],t[1]*o+t[3]*a+t[5])}function Ea(e){let t=null,n=(s,r)=>{t=Ti(t,s,r)};for(let s of e)switch(s[0]){case"M":case"L":n(s[1],s[2]);break;case"C":n(s[1],s[2]),n(s[3],s[4]),n(s[5],s[6]);break;case"Q":n(s[1],s[2]),n(s[3],s[4]);break;case"E":{let r=Math.max(s[3],s[4]);n(s[1]-r,s[2]-r),n(s[1]+r,s[2]+r);break}}return t}var Ps=class{constructor(e,t="warn",n=(i=>(i=(r=>(r=(s=>(s=globalThis.process)==null?void 0:s.env)())==null?void 0:r.RASTER_CACHE)())!=null?i:"1")()!=="0"){S(this,"host");S(this,"shaderCaps");S(this,"pool",[]);S(this,"pathCache",new WeakMap);S(this,"pathBoundsCache",new WeakMap);S(this,"images",new Map);S(this,"videos",new Map);S(this,"warnedShaders",!1);S(this,"rasterCache",new Map);S(this,"cacheEnabled");this.host=e,this.shaderCaps=t,this.cacheEnabled=n}setImageAsset(e,t){this.images.set(e,t)}setVideoAsset(e,t){this.videos.set(e,t)}dispose(){this.pool.length=0,this.rasterCache.clear()}resolveDrawable(e,t){if(e.kind==="image"){let n=this.images.get(e.assetId);if(!n)throw new vt(e.assetId,"no decoded image registered");return n}if(e.kind==="videoFrame"){let n=this.videos.get(e.assetId);if(!n)throw new vt(e.assetId,"no VideoFrameSource registered",e.mediaT);try{return n.getFrameSync(e.mediaT)}catch(s){throw s instanceof vt?new vt(e.assetId,s.detail,e.mediaT):s}}throw new Error(`resource ${t} is not drawable`)}path(e,t){let n=e[t];if(!n||n.kind!=="path")throw new Error(`resource ${t} is not a path`);let s=this.pathCache.get(n);return s||(s=this.buildPath(n.segs),this.pathCache.set(n,s)),s}pathBounds(e,t){var s;let n=e[t];return!n||n.kind!=="path"?null:(this.pathBoundsCache.has(n)||this.pathBoundsCache.set(n,Ea(n.segs)),(s=this.pathBoundsCache.get(n))!=null?s:null)}buildPath(e){let t=this.host.newPath();for(let n of e)switch(n[0]){case"M":t.moveTo(n[1],n[2]);break;case"L":t.lineTo(n[1],n[2]);break;case"C":t.bezierCurveTo(n[1],n[2],n[3],n[4],n[5],n[6]);break;case"Q":t.quadraticCurveTo(n[1],n[2],n[3],n[4]);break;case"E":t.ellipse(n[1],n[2],n[3],n[4],n[5],n[6],n[7]);break;case"Z":t.closePath();break}return t}acquire(e,t){let n=this.pool.pop();return n?(n.width!==e&&(n.width=e),n.height!==t&&(n.height=t),n):this.host.createCanvas(e,t)}release(e){this.pool.length<8&&this.pool.push(e)}cacheStore(e,t){let n=this.rasterCache.get(e);for(n&&(this.rasterCache.delete(e),n.canvas!==t.canvas&&this.release(n.canvas)),this.rasterCache.set(e,t);this.rasterCache.size>Sa;){let s=this.rasterCache.keys().next().value;if(s===void 0)break;let r=this.rasterCache.get(s);this.rasterCache.delete(s),this.release(r.canvas)}}cacheTouch(e){let t=this.rasterCache.get(e);return t&&(this.rasterCache.delete(e),this.rasterCache.set(e,t)),t}fillMesh(e,t,n,s){let r=s.maxX-s.minX,i=s.maxY-s.minY;if(r<=0||i<=0)return;let{w:o,h:a}=Mi(r,i),l=Si(n,o,a),c=this.acquire(o,a),h=this.host.context(c),u=h.createImageData(o,a);u.data.set(l),h.putImageData(u,0,0),e.save(),e.clip(t,"nonzero"),e.imageSmoothingEnabled=!0,e.drawImage(c,0,0,o,a,s.minX,s.minY,r,i),e.restore(),this.release(c)}composite(e,t,n,s,r,i,o,a,l,c,h,u){let f=l!==void 0&&l!=="none",d=f?Ta(c):0;r||a!=="source-over"?t.unbounded=!0:s&&kt(t,Ee,s.minX-d,s.minY-d,s.maxX+d,s.maxY+d);let g=f&&!i&&!r&&a==="source-over";if(!(g&&s===null)){if(e.save(),e.resetTransform(),g&&s){let m=Math.max(0,Math.floor(s.minX-d)),k=Math.max(0,Math.floor(s.minY-d)),T=Math.min(h,Math.ceil(s.maxX+d)),y=Math.min(u,Math.ceil(s.maxY+d));if(m>=T||k>=y){e.restore();return}let p=this.host.newPath();p.moveTo(m,k),p.lineTo(T,k),p.lineTo(T,y),p.lineTo(m,y),p.closePath(),e.clip(p,"nonzero")}e.globalAlpha=o,f&&(e.filter=l),e.globalCompositeOperation=a,e.drawImage(n,0,0),e.restore()}}render(e,t){var u,f,d,g,m,k,T,y,p,b,v;let{w:n,h:s}=t.size;e.width!==n&&(e.width=n),e.height!==s&&(e.height=s);let r=this.host.context(e);r.resetTransform(),r.clearRect(0,0,n,s);let i=[{ctx:r,canvas:null,opacity:1,blend:"source-over",bounds:null,unbounded:!1}],o=()=>i[i.length-1].ctx,a=()=>i[i.length-1],l=Ee,c=[],h=t.commands;for(let I=0;I<h.length;I++){let w=h[I];switch(w.op){case"save":c.push(l),o().save();break;case"restore":l=(u=c.pop())!=null?u:l,o().restore();break;case"transform":l=mt(l,w.m),o().transform(w.m[0],w.m[1],w.m[2],w.m[3],w.m[4],w.m[5]);break;case"clip":o().clip(this.path(t.resources,w.path),(f=w.rule)!=null?f:"nonzero");break;case"fillPath":{let x=o(),E=this.pathBounds(t.resources,w.path);w.paint.kind==="mesh"&&E?this.fillMesh(x,this.path(t.resources,w.path),w.paint,E):(x.fillStyle=Es(x,w.paint,E),x.fill(this.path(t.resources,w.path))),E&&kt(a(),l,E.minX,E.minY,E.maxX,E.maxY);break}case"strokePath":{let x=o(),E=this.pathBounds(t.resources,w.path);if(x.strokeStyle=Es(x,w.paint,E),x.lineWidth=w.stroke.width,x.lineCap=(d=w.stroke.cap)!=null?d:"butt",x.lineJoin=(g=w.stroke.join)!=null?g:"miter",w.stroke.dash&&(x.setLineDash(w.stroke.dash),x.lineDashOffset=(m=w.stroke.dashOffset)!=null?m:0),x.stroke(this.path(t.resources,w.path)),w.stroke.dash&&(x.setLineDash([]),x.lineDashOffset=0),E){let $=w.stroke.width*(((k=w.stroke.join)!=null?k:"miter")==="miter"?5:1);kt(a(),l,E.minX-$,E.minY-$,E.maxX+$,E.maxY+$)}break}case"fillText":{let x=o();x.font=yn(w.font),x.fillStyle=Es(x,w.paint,null),x.textBaseline="alphabetic",x.textAlign=(T=w.align)!=null?T:"left",x.fillText(w.text,w.x,w.y);try{let E=x.measureText(w.text).width,$=(y=w.align)!=null?y:"left",D=$==="center"?w.x-E/2:$==="right"?w.x-E:w.x,L=w.font.size;kt(a(),l,D-L,w.y-1.5*L,D+E+L,w.y+.75*L)}catch(E){a().unbounded=!0}break}case"drawImage":{let x=t.resources[w.image];if(!x)throw new Error(`drawImage references missing resource ${w.image}`);let E=this.resolveDrawable(x,w.image),$=o();w.smoothing!==void 0&&($.imageSmoothingEnabled=w.smoothing);let{x:D,y:L,w:V,h:K}=w.dst;w.src?$.drawImage(E,w.src.x,w.src.y,w.src.w,w.src.h,D,L,V,K):$.drawImage(E,D,L,V,K),kt(a(),l,D,L,D+V,L+K);break}case"pushGroup":{let x=o(),E=this.cacheEnabled&&w.cacheKey!==void 0&&w.shader===void 0?`${w.cacheKey}@${Ma(l)}`:void 0;if(E!==void 0){let L=this.cacheTouch(E);if(L){this.composite(x,a(),L.canvas,L.bounds,L.unbounded,!1,w.opacity,w.blend,on(w.filters),w.filters,n,s);let V=1;for(;V>0&&++I<h.length;){let K=h[I];K.op==="pushGroup"?V++:K.op==="popGroup"&&V--}break}}let $=this.acquire(n,s),D=this.host.context($);D.resetTransform(),D.clearRect(0,0,n,s),D.setTransform(x.getTransform()),i.push(M(R(M({ctx:D,canvas:$,opacity:w.opacity,blend:w.blend,filter:on(w.filters),filters:w.filters},w.shader!==void 0?{shader:w.shader}:{}),{bounds:null,unbounded:!1}),E!==void 0?{cacheStoreKey:E}:{}));break}case"popGroup":{let x=i.pop();if(!x||x.canvas===null)throw new Error("popGroup without matching pushGroup");let E=o(),$=x.canvas,D=!1;if(x.shader!==void 0){let L=(v=(b=(p=this.host).applyShader)==null?void 0:b.call(p,x.canvas,x.shader,n,s))!=null?v:null;if(L!==null)$=L,D=!0,x.bounds={minX:0,minY:0,maxX:n,maxY:s},x.unbounded=!1;else{if(this.shaderCaps==="error")throw new Error("a ShaderEffect reached a backend without a shader runner (\xA73.7) \u2014 load @glissade/effects-webgpu in the browser, or accept passthrough with caps.shaders: warn");this.warnedShaders||(this.warnedShaders=!0,W("ShaderEffect pass skipped: no shader runner here (headless or webgpu-less browser) \u2014 subtree composites unfiltered (\xA73.7 caps.shaders)"))}}this.composite(E,a(),$,x.bounds,x.unbounded,D,x.opacity,x.blend,x.filter,x.filters,n,s),x.cacheStoreKey!==void 0&&!D?this.cacheStore(x.cacheStoreKey,{canvas:x.canvas,bounds:x.bounds,unbounded:x.unbounded}):this.release(x.canvas);break}}}if(i.length!==1)throw new Error("unbalanced pushGroup/popGroup in DisplayList")}};var Mt=null;function Ei(e){Mt=e}function Ia(e,t){if(typeof OffscreenCanvas!="undefined")return new OffscreenCanvas(e,t);let n=document.createElement("canvas");return n.width=e,n.height=t,n}var $a=16384,wn=class{constructor(e,t={}){S(this,"target");S(this,"raster");var n;this.target=e,this.raster=new Ps({context:s=>this.context(s),createCanvas:(s,r)=>Ia(s,r),newPath:()=>new Path2D,applyShader:(s,r,i,o)=>{var a;return(a=Mt==null?void 0:Mt.apply(s,r,i,o))!=null?a:null}},(n=t.shaderCaps)!=null?n:"warn")}get caps(){return{filters:Cs,shaders:Mt!==null,maxTextureSize:$a}}setImageAsset(e,t){this.raster.setImageAsset(e,t)}setVideoAsset(e,t){this.raster.setVideoAsset(e,t)}measureText(e,t){let n=this.context(this.target);n.save(),n.font=yn(t);let s=n.measureText(e);return n.restore(),{width:s.width,ascent:s.actualBoundingBoxAscent,descent:s.actualBoundingBoxDescent}}render(e){this.raster.render(this.target,e)}async readPixels(){return this.context(this.target).getImageData(0,0,this.target.width,this.target.height).data}get canvas(){return this.target}dispose(){this.raster.dispose()}context(e){let t=e.getContext("2d");if(!t)throw new Error("canvas 2d context unavailable");return t}};var le=class extends Error{constructor(e){super(e),this.name="ClipError"}};function Ii(e,t,n){let s;try{s=Ce(n)}catch(i){throw new le(`clip override for '${e}' has an un-typeable value ${JSON.stringify(n)} (channel type '${t}')`)}let r=i=>i==="color"||i==="string";if(!(s===t||r(s)&&r(t)))throw new le(`clip override for '${e}' is a '${s}' value but the channel is '${t}' (${JSON.stringify(n)}); a mismatched override samples to NaN`);return n}function $i(e){return e.keys.length===0?0:e.keys[e.keys.length-1].t}function Oa(e,t,n){if(typeof e=="string")return xe(`${e}/${n}`);let s=e[t];if(s===void 0)throw new le(`clip target map is missing channel '${t}' \u2014 provide a target for every channel, or pass a node-id string`);return xe(s)}function Ca(e,t,n,s,r){var a;if(t.keys.length===0)throw new le(`clip channel '${e}' has no keys`);let i=(a=t.type)!=null?a:Ce(t.keys[0].value),o=t.keys.length-1;if(r&&o===0&&r.from!==void 0)throw new le(r.to!==void 0?`clip override for '${e}' supplies both 'from' and 'to' on a single-key channel \u2014 ambiguous (both target the only key)`:`clip override for '${e}' supplies 'from' on a single-key channel \u2014 ambiguous (the only key already is the 'to' value)`);return pe(e,i,t.keys.map((l,c)=>{let h=l.value,u=!1;r&&(c===0&&r.from!==void 0&&(h=Ii(e,i,r.from),u=!0),c===o&&r.to!==void 0&&(h=Ii(e,i,r.to),u=!0));let f={t:n+l.t/s,value:h},d=r&&c===o&&r.ease!==void 0?r.ease:l.ease;return d!==void 0&&(f.ease=d),l.interp!==void 0&&(f.interp=l.interp),l.id!==void 0&&(f.id=l.id),l.derived!==void 0&&!u&&(f.derived=l.derived),l.from!==void 0&&(f.from=l.from),f}))}function we(e){let t=Object.keys(e.channels);if(t.length===0)throw new le("clip() requires at least one channel");let n=0;for(let r of t){let i=e.channels[r];if(i.keys.length===0)throw new le(`clip channel '${r}' has no keys`);n=Math.max(n,$i(i))}function s(r,i,o){var u;let a=(u=o==null?void 0:o.speed)!=null?u:1;if(!(a>0))throw new le(`clip speed must be > 0 (got ${a})`);let l=o==null?void 0:o.overrides,c=[],h=i;for(let f of t){let d=e.channels[f],g=Oa(r,f,d.path);c.push(Ca(g,d,i,a,l==null?void 0:l[f])),h=Math.max(h,i+$i(d)/a)}if(l){for(let f of Object.keys(l))if(!(f in e.channels))throw new le(`clip override references unknown channel '${f}'`)}return{tracks:c,end:h}}return{spec:e,duration:n,apply:s}}function Aa(e,t,n,s){var h;let r=(h=s==null?void 0:s.stagger)!=null?h:0,i=typeof r=="function"?r:f=>f*r,u=s!=null?s:{},{stagger:o}=u,a=ze(u,["stagger"]),l=[],c=n;return t.forEach((f,d)=>{let g=e.apply(f,n+i(d),a);l.push(...g.tracks),g.end>c&&(c=g.end)}),{tracks:l,end:c}}function Pa(e){var s,r;let t=(s=e==null?void 0:e.duration)!=null?s:.3,n=(r=e==null?void 0:e.ease)!=null?r:"easeOutCubic";return we({channels:{opacity:{path:"opacity",keys:[C(0,0),C(t,1,n)]},scale:{path:"scale",keys:[C(0,[.8,.8]),C(t,[1,1],n)]}}})}function Da(e,t){var o,a,l;let n=(o=t==null?void 0:t.duration)!=null?o:.3,s=(a=t==null?void 0:t.ease)!=null?a:"easeOutCubic",r=(l=t==null?void 0:t.distance)!=null?l:40,i=e==="left"?[-r,0]:e==="right"?[r,0]:e==="top"?[0,-r]:[0,r];return we({channels:{opacity:{path:"opacity",keys:[C(0,0),C(n,1,s)]},offset:{path:"position",keys:[C(0,i),C(n,[0,0],s)]}}})}function Fa(e){var r,i,o;let t=(r=e==null?void 0:e.duration)!=null?r:.4,n=(i=e==null?void 0:e.ease)!=null?i:"easeInOutSine",s=(o=e==null?void 0:e.scale)!=null?o:1.1;return we({channels:{scale:{path:"scale",keys:[C(0,[1,1]),C(t/2,[s,s],n),C(t,[1,1],n)]}}})}function Na(e){var r,i,o;let t=(r=e==null?void 0:e.duration)!=null?r:2,n=(i=e==null?void 0:e.ease)!=null?i:"easeInOutSine",s=(o=e==null?void 0:e.amplitude)!=null?o:8;return we({channels:{drift:{path:"position",keys:[C(0,[0,0]),C(t/2,[s,0],n),C(t,[0,0],n)]}}})}var Ke=class extends Error{constructor(e){super(e),this.name="MorphError"}};function Ds(e,t){for(let[n,s]of[["x",t.x],["y",t.y],["w",t.w],["h",t.h]])if(!Number.isFinite(s))throw new Ke(`morph ${e}.${n} must be finite (got ${s})`);if(!(t.w>0)||!(t.h>0))throw new Ke(`morph ${e} must have w>0 and h>0 (got w=${t.w}, h=${t.h}); a zero/negative box yields a NaN/Infinity scale`)}function bn(e,t){let n=typeof e=="string"?e:e[Ae];return typeof n!="string"||n.length===0?`${String(n)}/${t}`:`${typeof e=="string"?n:n.slice(0,Math.max(0,n.lastIndexOf("/")))}/${t}`}function Ra(e,t,n,s){var T,y,p;let{at:r,duration:i}=s,o=s.ease,a=(T=s.crossfade)!=null?T:.5,l=(y=s.metric)!=null?y:"transform";if(l!=="transform")throw new Ke(`morph metric '${l}' is not supported in v1 (only 'transform')`);if(Ds("from",e),Ds("to",t),!(i>0))throw new Ke(`morph duration must be > 0 (got ${i})`);if(!(a>=0&&a<=1))throw new Ke(`morph crossfade must be in [0,1] (got ${a})`);let c=(p=s.base)!=null?p:{w:t.w,h:t.h};Ds("to",{x:0,y:0,w:c.w,h:c.h});let h=[e.w/c.w,e.h/c.h],u=[t.w/c.w,t.h/c.h],f=[e.x,e.y],d=[t.x,t.y],g={position:{path:"position",type:"vec2",keys:[C(0,f),C(i,d,o)]},scale:{path:"scale",type:"vec2",keys:[C(0,h),C(i,u,o)]}},m={position:bn(n.morphNode,"position"),scale:bn(n.morphNode,"scale")};n.fromNode!==void 0&&i*a>0&&(g.fromOpacity={path:"opacity",type:"number",keys:[C(0,1),C(i*a,0,o)]},m.fromOpacity=bn(n.fromNode,"opacity")),n.toNode!==void 0&&i*(1-a)<i&&(g.toOpacity={path:"opacity",type:"number",keys:[C(i*(1-a),0),C(i,1,o)]},m.toOpacity=bn(n.toNode,"opacity"));let{tracks:k}=we({channels:g}).apply(m,r);return{tracks:k,end:r+i}}var Ns=class extends Error{constructor(e){super(e),this.name="PresenceError"}},Ls=.3;function La(){return we({channels:{opacity:{path:"opacity",keys:[C(0,0),C(Ls,1)]}}})}function za(){return we({channels:{opacity:{path:"opacity",keys:[C(0,1),C(Ls,0)]}}})}function Va(e){return typeof e.apply=="function"}function Rs(e){return Array.isArray(e)}function Pi(e,t){var i,o;let n=(i=e.dur)!=null?i:Ls,s=e.ease,r={};if(e.opacity!==void 0){let[a,l]=e.opacity;r.opacity={path:"opacity",keys:[C(0,a),C(n,l,...Fs(s))]}}if(e.offset!==void 0){let[a,l]=qa(e.offset,(o=e.edge)!=null?o:"bottom",t);r.offset={path:"position",keys:[C(0,a),C(n,l,...Fs(s))]}}if(e.scale!==void 0){let[a,l]=_a(e.scale);r.scale={path:"scale",keys:[C(0,a),C(n,l,...Fs(s))]}}return we({channels:r})}function Fs(e){return e!==void 0?[e]:[]}function Ba(e,t){return e==="left"?[-t,0]:e==="right"?[t,0]:e==="top"?[0,-t]:[0,t]}function qa(e,t,n){if(Array.isArray(e)&&Rs(e[0]))return e;let s=Rs(e)?e:Ba(t,e),r=[0,0];return n==="enter"?[s,r]:[r,s]}function _a(e){let[t,n]=e,s=r=>Rs(r)?r:[r,r];return[s(t),s(n)]}function Oi(e,t,n){return e===void 0?n():Va(e)?e:Pi(e,t)}function Ci(e,t){var n;return e.duration/((n=t==null?void 0:t.speed)!=null?n:1)}function Wa(e){return e.map((t,n)=>[t,n]).sort((t,n)=>t[0].t-n[0].t||t[1]-n[1]).map(([t])=>t)}function Ai(e,t){let n=[],s=[];for(let r of e)r.target===t?s=r.keys:n.push(r);return{opacityKeys:s,rest:n}}function Di(e){let t=Wa(e),n=[];for(let s of t){let r=n[n.length-1];r&&r.t===s.t?n[n.length-1]=s:n.push(s)}return n}function ja(e,t){let n=[],s=new Map;for(let r of[...e,...t]){let i=s.get(r.target);i?i.push(r):(s.set(r.target,[r]),n.push(r.target))}return n.map(r=>{let i=s.get(r);if(i.length===1)return i[0];let o=i.flatMap(a=>a.keys);return pe(r,i[0].type,Di(o))})}function Ha(e,t){var b,v,I,w;let n=(v=t.show)!=null?v:(b=t.window)==null?void 0:b[0],s=(w=t.hide)!=null?w:(I=t.window)==null?void 0:I[1];if(n===void 0||s===void 0)throw new Ns("presence() needs a window: pass { show, hide } or { window: [show, hide] }");let r=xe(typeof e=="string"?`${e}/opacity`:e),i=r.lastIndexOf("/"),o=i<0?r:r.slice(0,i),a=Oi(t.enter,"enter",La),l=Oi(t.exit,"exit",za),c=a.apply(o,n,t.enterOpts),h=n+Ci(a,t.enterOpts),u=Ci(l,t.exitOpts),f=s-u;if(f<=n)throw new Ns(`presence('${o}') exit needs ${u.toFixed(3)}s but only ${(s-n).toFixed(3)}s between show (${n}) and hide (${s}) \u2014 widen the window or shorten/speed up the exit`);let d=l.apply(o,f,t.exitOpts),{opacityKeys:g,rest:m}=Ai(c.tracks,r),{opacityKeys:k,rest:T}=Ai(d.tracks,r),y=[C(0,0,{interp:"hold"}),C(h,1,{interp:"hold"}),C(s,0,{interp:"hold"})],p=[];if(g.length>0?g.forEach((x,E)=>{E===0&&x.value!==0&&x.interp!=="hold"?p.push(R(M({},x),{interp:"hold"})):p.push(x)}):p.push(C(n,0),C(h,1)),k.length>0)for(let x of k)p.push(x);else p.push(C(f,1),C(s,0));return{tracks:[pe(r,"number",Di([...y,...p])),...ja(m,T)],end:s,shownAt:n,hiddenAt:s}}function Fi(e){var u;let t=(u=e.match(/[MmLlHhVvCcQqZz]|-?(?:\d*\.\d+|\d+\.?)(?:[eE][+-]?\d+)?/g))!=null?u:[],n=[],s=0,r=0,i=0,o=0,a=0,l="",c=()=>Number(t[s++]),h=f=>!!f&&/^[MmLlHhVvCcQqZz]$/.test(f);for(;s<t.length;){let f=t[s];if(h(f)?s++:f=l==="M"?"L":l==="m"?"l":l,!f)break;let d=f===f.toLowerCase();switch(f.toUpperCase()){case"M":{let g=c()+(d?r:0),m=c()+(d?i:0);r=g,i=m,o=g,a=m,n.push(["M",g,m]);break}case"L":{let g=c()+(d?r:0),m=c()+(d?i:0);r=g,i=m,n.push(["L",g,m]);break}case"H":{let g=c()+(d?r:0);r=g,n.push(["L",g,i]);break}case"V":{let g=c()+(d?i:0);i=g,n.push(["L",r,g]);break}case"C":{let g=c()+(d?r:0),m=c()+(d?i:0),k=c()+(d?r:0),T=c()+(d?i:0),y=c()+(d?r:0),p=c()+(d?i:0);r=y,i=p,n.push(["C",g,m,k,T,y,p]);break}case"Q":{let g=c()+(d?r:0),m=c()+(d?i:0),k=c()+(d?r:0),T=c()+(d?i:0);r=k,i=T,n.push(["Q",g,m,k,T]);break}case"Z":n.push(["Z"]),r=o,i=a;break;default:s++;break}l=f}return n}function Ya(e){return ln(Fi(e))}var Ni="0.19.0-pre.1",Xa=Ni.includes("GLISSADE_".concat("VERSION"))?"0.0.0-dev":Ni;function Ri(e){if(e==="number")return 1;if(e==="vec2"||e==="vec2-arc")return 2}function Ga(e){return e===void 0?"unknown":Array.isArray(e)?e.join("|"):e}var Ua={Group:{children:{type:"Node[]"}},Rect:{sketch:{type:"SketchStyle"},sketchFill:{type:"HachureSpec"},sketchSeed:{type:"number"}},Circle:{sketch:{type:"SketchStyle"},sketchFill:{type:"HachureSpec"},sketchSeed:{type:"number"}},Path:{sketch:{type:"SketchStyle"},sketchFill:{type:"HachureSpec"},sketchSeed:{type:"number"}},Text:{fontFamily:{type:"string"},fontWeight:{type:"number"},fontStyle:{type:"'normal'|'italic'"},align:{type:"'left'|'center'|'right'"},lineHeight:{type:"number"}},Image:{assetId:{type:"string",required:!0}},Video:{assetId:{type:"string",required:!0},at:{type:"number"},trimStart:{type:"number"},playbackRate:{type:"number"},clipDuration:{type:"number"},sourceFps:{type:"number"}}},Ka={id:{type:"string"},blend:{type:"BlendMode"},filters:{type:"FilterSpec[]"},anchor:{type:"AnchorSpec"},cache:{type:"boolean"}};function Li(e,t){var r;let n={};for(let{path:i,expects:o}of e.listTargets()){let a=Ga(o),l=Ri(a);n[i]=M({type:a,animatable:!0,target:`<id>/${i}`},l!==void 0?{arity:l}:{})}let s=M(M({},Ka),(r=Ua[t])!=null?r:{});for(let[i,o]of Object.entries(s))n[i]=M({type:o.type,animatable:!1},o.required?{required:!0}:{});return{props:n}}var Qa="@glissade/scene/layout",Ja={width:{type:"number"},height:{type:"number"},gap:{type:"number"},padding:{type:"number"}},Za={direction:{type:"'row'|'column'"},justify:{type:"'start'|'center'|'end'|'space-between'|'space-around'"},align:{type:"'start'|'center'|'end'|'stretch'"},children:{type:"Node[]"}};function ec(){let e=Li(new re,"Group").props;delete e.children;for(let[n,s]of Object.entries(Ja)){let r=Ri(s.type);e[n]=M({type:s.type,animatable:!0,target:`<id>/${n}`},r!==void 0?{arity:r}:{})}let t=Za;for(let[n,s]of Object.entries(t))e[n]=M({type:s.type,animatable:!1},s.required?{required:!0}:{});return{props:e,subpath:Qa}}var tc={Group:()=>new re,Rect:()=>new hn,Circle:()=>new un,Path:()=>new bt,Text:()=>new Xe,Image:()=>new fn({assetId:"~describe"}),Video:()=>new dn({assetId:"~describe"})},nc=[{name:"to",signature:"to<T>(target, value, opts?: { duration?, ease?, at?, from? }): TimelineBuilder"},{name:"fromTo",signature:"fromTo<T>(target, from, to, opts?: { duration?, ease?, at? }): TimelineBuilder"},{name:"stagger",signature:"stagger<T>(targets, { to: T | ((index, count) => T), from?: T | ((index, count) => T), duration?, ease? }, { each: number | ((rank, count) => number), anchor?, at? }): TimelineBuilder"},{name:"tracks",signature:"tracks(tracks: Track[]): TimelineBuilder"},{name:"set",signature:"set<T>(target, value, opts?: { at? }): TimelineBuilder"},{name:"label",signature:"label(name, at?): TimelineBuilder"},{name:"add",signature:"add(child, at?, opts?: { mode?: 'add'|'sync', timeScale? }): TimelineBuilder"},{name:"sequence",signature:"sequence(subs, opts?: { gap? }): TimelineBuilder"},{name:"at",signature:"at(time, sub): TimelineBuilder"},{name:"call",signature:"call(fn, at?): TimelineBuilder"},{name:"cue",signature:"cue(at, name, data?): TimelineBuilder"},{name:"adBreak",signature:"adBreak(at, opts?: { id?, duration? }): TimelineBuilder"},{name:"editable",signature:"editable(): TimelineBuilder"},{name:"editableDuration",signature:"editableDuration(): TimelineBuilder"}],sc={"@glissade/core/clips":"motion clips: clip/clipList + the popIn/slideIn/pulse/driftLoop literals, presence (enter/exit) and morph (box-FLIP) build-time sugar.","@glissade/core/i18n":"localization: requireParity (id-set diff), localize (doc\u2192doc resolver), t() ambient-table sugar.","@glissade/scene/layout":"flexbox: the Yoga-backed Layout node + LayoutEngine (the only entry that ships Yoga wasm).","@glissade/scene/path":"SVG geometry: pathFromSvg / parseSvgPathData \u2014 parse an SVG `d` string into a PathValue for Path.data."};function rc(){let e={};for(let[n,s]of Object.entries(tc))e[n]=Li(s(),n);let t=ec();for(let n of["Layout","Stack","Row","Column"])e[n]=t;return{version:Xa,nodes:e,valueTypes:Vt(),easings:Object.keys(it),builder:{methods:nc},createScene:"createScene({ size: { w, h }, children: Node[] }): Scene \u2014 media assets are declared on the Timeline document: timeline({ assets: { <id>: { kind: 'image'|'video', url } } }); an Image/Video node's `assetId` names an entry here.",subpaths:sc}}function zi(){let e=0,t=!1;return{start(n){t=!0;let s,r=i=>{t&&(s!=null||(s=i),n((i-s)/1e3),e=requestAnimationFrame(r))};e=requestAnimationFrame(r)},stop(){t=!1,cancelAnimationFrame(e)}}}function ic(e){var r;let t=(r=e.axis)!=null?r:"y",n=null,s=e.source;return{start(i,o){var c,h;let a=(h=e.range)!=null?h:[0,(c=o.duration)!=null?c:1],l=()=>{if(s instanceof Element){let g=t==="y"?s.scrollHeight-s.clientHeight:s.scrollWidth-s.clientWidth,m=t==="y"?s.scrollTop:s.scrollLeft;return g>0?m/g:0}let u=document.documentElement,f=t==="y"?u.scrollHeight-window.innerHeight:u.scrollWidth-window.innerWidth,d=t==="y"?window.scrollY:window.scrollX;return f>0?d/f:0};n=()=>{let u=Math.min(1,Math.max(0,l()));i(a[0]+u*(a[1]-a[0]))},s.addEventListener("scroll",n,{passive:!0}),n()},stop(){n&&s.removeEventListener("scroll",n),n=null}}}var Vi=class extends Error{constructor(e){super(`machine targets overlap an already-bound target set: ${e.join(", ")} \u2014 concurrent writers to one property is the silent last-writer-wins \xA72.2 exists to kill`),this.name="TargetOverlapError"}};function Bi(e,t={}){var L,V,K,Ze,Re,Le,et;let{playhead:n}=e,s=e.duration,r=(L=e.markers)!=null?L:[],i=(V=e.driver)!=null?V:zi(),o=(K=t.loop)!=null?K:!1,a=(Ze=t.background)!=null?Ze:"pause",l=(Re=e.visibility)!=null?Re:(()=>"visible"),c=new Map,h=new Map,u=(Le=t.rate)!=null?Le:1,f=!1,d=A(!1),g=O=>{f=O,d.set(O)},m=!1,k=new Set((et=e.targets)!=null?et:[]),T=[],y=0,p=null,b=0,v=[0,s],I=0,w=null;function x(O,P){var B,_,Q;if(O===P||c.size===0&&h.size===0)return;let N=P>O;for(let oe of r){if(!(N?oe.t>O&&oe.t<=P:oe.t>=P&&oe.t<O))continue;for(let xn of(B=c.get(oe.name))!=null?B:[])xn(oe);let $e=(_=oe.data)==null?void 0:_.kind;if(typeof $e=="string")for(let xn of(Q=h.get($e))!=null?Q:[])xn(oe)}}function E(O){g(!1),p=null;let P=w;w=null,P==null||P(O)}function $(O){b=O;for(let $e of T)$e.step(O);if(!f)return;if(a==="pause"&&l()==="hidden"){y=n.peek(),p=null;return}p!=null||(p=O);let P=n.peek(),N=y+(O-p)*u,[B,_]=v;if(!(u>=0?N>=_:N<=B)){n.set(N),x(P,N);return}let Q=o===!0?{mode:"restart"}:o===!1?null:o,oe=Q&&"count"in Q&&Q.count!==void 0?Q.count:1/0;if(!Q||I+1>=oe){let $e=u>=0?_:B;n.set($e),x(P,$e),E(!0);return}I++,_-B,Q.mode==="alternate"?(x(P,u>=0?_:B),u=-u,y=u>=0?B:_):(x(P,u>=0?_:B),y=u>=0?B:_),p=O,N=y,n.set(N)}function D(){m||(m=!0,i.start($,{duration:s,visibility:l}))}return{playhead:n,get duration(){return s},get playing(){return f},playingSignal:d,get rate(){return u},set rate(O){y=n.peek(),p=f?b:null,u=O},play(O){var _;w&&E(!1),v=(_=O==null?void 0:O.range)!=null?_:[0,s];let P=n.peek(),[N,B]=v;return y=u>=0?P>=B||P<N?N:P:P<=N||P>B?B:P,n.set(y),p=null,I=0,g(!0),D(),{finished:new Promise(Q=>{w=Q})}},pause(){f&&(y=n.peek(),E(!1))},seek(O){y=Math.min(Math.max(O,0),s),p=f?b:null,n.set(y)},swap(O){var N,B;s=O.duration,r=(N=O.markers)!=null?N:[],k=new Set((B=O.targets)!=null?B:[]);let P=Math.min(n.peek(),s);v=[0,s],y=P,p=f?b:null,I=0,n.set(P)},attach(O){if(O.targets){let P=[];for(let N of O.targets)k.has(N)?P.push(`'${N}' (player timeline)`):T.some(B=>{var _;return(_=B.targets)==null?void 0:_.has(N)})&&P.push(`'${N}' (another machine)`);if(P.length>0)throw new Vi(P)}return T.push(O),D(),()=>{let P=T.indexOf(O);P>=0&&T.splice(P,1)}},onMarker(O,P){let N=c.get(O);return N||(N=new Set,c.set(O,N)),N.add(P),()=>N.delete(P)},onCue(O,P){let N=h.get(O);return N||(N=new Set,h.set(O,N)),N.add(P),()=>N.delete(P)},dispose(){f&&E(!1),T.length=0,m&&i.stop(),m=!1}}}function qi(e,t,n,s,r){var o;let i=e!=null?e:"respect";return i==="ignore"||!t?{autoplay:r}:typeof i=="function"?{autoplay:r,swapTo:i(n)}:{autoplay:!1,seekTo:(o=n.posterTime)!=null?o:s}}function _i(){return typeof matchMedia!="undefined"&&matchMedia("(prefers-reduced-motion: reduce)").matches}function zs(e,t,n,s={}){var T;let r=e,i=t,o=ne(i),a=new wn(n);r.setTextMeasurer(a);let l=r.playhead,c=Bi({playhead:l,duration:o.duration,markers:o.markers,targets:o.tracks.keys()},s),h=()=>a.render(Ue(r,i,l.peek())),u=!1,f=()=>{u||(u=!0,requestAnimationFrame(()=>{u=!1,h()}))},d=l.subscribe(f),g=y=>{if(typeof FontFace=="undefined")return;let p=dt(y.assets);for(let b of p.faces()){let v=new FontFace(b.family,`url(${b.url})`,{weight:String(b.weight),style:b.style});document.fonts.add(v),v.load().then(()=>h(),()=>{})}As(r,y,async b=>{try{let v=await fetch(b);return v.ok?await v.arrayBuffer():void 0}catch(v){return}},M({mode:s.strictFonts?"strict":"dev"},s.osFonts!==void 0?{osFamilies:s.osFonts}:{}))};g(i);let m=((T=s.prefersReducedMotion)!=null?T:_i)(),k=qi(s.reducedMotion,m,i,o.duration,!!s.autoplay);if(k.swapTo){i=k.swapTo;let y=ne(i);c.swap({duration:y.duration,markers:y.markers,targets:y.tracks.keys()}),g(i)}return k.seekTo!==void 0&&c.seek(k.seekTo),h(),k.autoplay&&c.play(),{player:c,backend:a,render:h,swap(y){y.scene&&(r=y.scene,r.setTextMeasurer(a)),i=y.timeline;let p=ne(i);c.swap({duration:p.duration,markers:p.markers,targets:p.tracks.keys()}),g(i),h()},dispose(){d(),c.dispose(),a.dispose()}}}function oc(e,t,n){let s=Object.keys(ne(t).labels);return r=>{if(r==null)return;let i=n(r),o=Object.keys(ne(i.timeline).labels),a=s.filter(l=>!o.includes(l));a.length>0&&console.warn(`[glissade] HMR: this edit removed label(s) ${a.map(l=>`'${l}'`).join(", ")} \u2014 anything seeking to them will no longer resolve`),s=o,e.swap(i)}}var ac=`
|
|
4
4
|
<style>
|
|
5
5
|
:host { display: inline-block; }
|
|
6
6
|
canvas { display: block; width: 100%; height: auto; }
|
|
@@ -10,5 +10,5 @@
|
|
|
10
10
|
.time { font-variant-numeric: tabular-nums; opacity: 0.75; min-width: 9ch; text-align: right; }
|
|
11
11
|
</style>
|
|
12
12
|
<canvas part="canvas"></canvas>
|
|
13
|
-
`,Vs,
|
|
13
|
+
`,Vs,ie,be,he,Je,Ie,Tt,Ne,ee,z,Bs,qs,ji,Hi,_s,kn,vn,Qe,Wi=(Vs=class extends HTMLElement{constructor(){super();J(this,z);J(this,ie,null);J(this,be,null);J(this,he,null);J(this,Je,!1);J(this,Ie,null);J(this,Tt);J(this,Ne);J(this,ee,null);let t=this.attachShadow({mode:"open"});t.innerHTML=ac,Y(this,Tt,t),Y(this,Ne,t.querySelector("canvas"))}get scene(){return F(this,be)}set scene(t){Y(this,be,t),q(this,z,kn).call(this)}get player(){var t,n;return(n=(t=F(this,ie))==null?void 0:t.player)!=null?n:null}connectedCallback(){q(this,z,qs).call(this),q(this,z,kn).call(this)}disconnectedCallback(){q(this,z,_s).call(this)}attributeChangedCallback(t){if(t==="controls"){q(this,z,qs).call(this),q(this,z,Bs).call(this);return}this.isConnected&&F(this,be)&&q(this,z,kn).call(this)}},ie=new WeakMap,be=new WeakMap,he=new WeakMap,Je=new WeakMap,Ie=new WeakMap,Tt=new WeakMap,Ne=new WeakMap,ee=new WeakMap,z=new WeakSet,Bs=function(){F(this,ee)&&!F(this,he)&&F(this,Ie)?(Y(this,he,F(this,Ie).subscribe(()=>{requestAnimationFrame(()=>{F(this,ee)&&(q(this,z,vn).call(this),q(this,z,Qe).call(this))})})),q(this,z,vn).call(this),q(this,z,Qe).call(this)):!F(this,ee)&&F(this,he)&&(F(this,he).call(this),Y(this,he,null))},qs=function(){let t=this.hasAttribute("controls");t&&!F(this,ee)?q(this,z,ji).call(this):!t&&F(this,ee)&&q(this,z,Hi).call(this)},ji=function(){let t=document.createElement("div");t.className="controls",t.setAttribute("part","controls");let n=document.createElement("button");n.setAttribute("part","button"),n.setAttribute("aria-label","Play or pause"),n.textContent="Play";let s=document.createElement("input");s.setAttribute("part","scrubber"),s.type="range",s.min="0",s.max="1",s.step="0.0001",s.value="0",s.setAttribute("aria-label","Seek");let r=document.createElement("span");r.className="time",r.setAttribute("part","time");let i=()=>{var l;let a=(l=F(this,ie))==null?void 0:l.player;a&&(a.playing?a.pause():a.play(),q(this,z,Qe).call(this))},o=()=>{var l;let a=(l=F(this,ie))==null?void 0:l.player;a&&(Y(this,Je,!0),a.pause(),a.seek(parseFloat(s.value)*a.duration),Y(this,Je,!1),q(this,z,Qe).call(this))};n.addEventListener("click",i),s.addEventListener("input",o),t.append(n,s,r),F(this,Tt).append(t),Y(this,ee,{root:t,button:n,scrubber:s,time:r,onClick:i,onInput:o}),q(this,z,vn).call(this),q(this,z,Qe).call(this)},Hi=function(){let t=F(this,ee);t&&(t.button.removeEventListener("click",t.onClick),t.scrubber.removeEventListener("input",t.onInput),t.root.remove(),Y(this,ee,null))},_s=function(){var t,n;(t=F(this,he))==null||t.call(this),Y(this,he,null),(n=F(this,ie))==null||n.dispose(),Y(this,ie,null),Y(this,Ie,null)},kn=function(){if(q(this,z,_s).call(this),!F(this,be)||!this.isConnected)return;let t=F(this,be).createScene();F(this,Ne).width=t.size.w,F(this,Ne).height=t.size.h;let n=this.hasAttribute("pingpong")||this.hasAttribute("yoyo")?{mode:"alternate"}:this.hasAttribute("loop");Y(this,ie,zs(t,F(this,be).timeline,F(this,Ne),{loop:n,autoplay:this.hasAttribute("autoplay")})),Y(this,Ie,t.playhead),q(this,z,Bs).call(this)},vn=function(){var r,i,o;let t=F(this,ee),n=(r=F(this,ie))==null?void 0:r.player;if(!t||!n)return;let s=(o=(i=F(this,Ie))==null?void 0:i.peek())!=null?o:0;t.time.textContent=`${s.toFixed(2)} / ${n.duration.toFixed(2)}s`,!F(this,Je)&&n.duration>0&&(t.scrubber.value=String(s/n.duration))},Qe=function(){var s,r;let t=F(this,ee);if(!t)return;let n=(r=(s=F(this,ie))==null?void 0:s.player.playing)!=null?r:!1;t.button.textContent=n?"Pause":"Play"},S(Vs,"observedAttributes",["loop","pingpong","yoyo","autoplay","controls"]),Vs);function Yi(e="gs-player"){customElements.get(e)||customElements.define(e,Wi)}Yi();return Zi(cc);})();
|
|
14
14
|
//# sourceMappingURL=glissade.browser.js.map
|