@hyperframes/player 0.9.9 → 0.9.11
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.
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var je=Object.defineProperty;var hi=Object.getOwnPropertyDescriptor;var fi=Object.getOwnPropertyNames;var bi=Object.prototype.hasOwnProperty;var gi=(t,e)=>{for(var n in e)je(t,n,{get:e[n],enumerable:!0})},_i=(t,e,n,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of fi(e))!bi.call(t,r)&&r!==n&&je(t,r,{get:()=>e[r],enumerable:!(i=hi(e,r))||i.enumerable});return t};var yi=t=>_i(je({},"__esModule",{value:!0}),t);var _o={};gi(_o,{HyperframesPlayer:()=>ze,SPEED_PRESETS:()=>pt,formatSpeed:()=>W,formatTime:()=>Le});module.exports=yi(_o);var Ft=t=>t!==null&&Number.isFinite(t)&&t>0;function qe(t){let e=t.clipEndsSeconds.filter(i=>i===null).length;if(Ft(t.authoredDurationSeconds))return{seconds:t.authoredDurationSeconds,source:"authored",pendingClips:e};let n=t.clipEndsSeconds.filter(Ft);return n.length>0?{seconds:Math.max(...n),source:"derived",pendingClips:e}:{seconds:null,source:"unresolved",pendingClips:e,reason:e>0?"every clip's length is still pending":"no authored duration and no clip with a length"}}var vi="http://www.w3.org/1999/xhtml";function Ut(t){return t!=null&&t.nodeType===1}function Ye(t){return Ut(t)&&t.namespaceURI===vi}function Xe(t,e){return Ye(t)&&t.localName===e}function Ai(t){return Xe(t,"video")}function Si(t){return Xe(t,"audio")}function P(t){return Ai(t)||Si(t)}function Ht(t){return Xe(t,"img")}function Se(t){if(t==null||t.trim()==="")return null;let e=Number.parseInt(t,10);return Number.isFinite(e)&&e>0?e:null}function ee(t=document){let e=t.querySelector('[data-composition-id][data-root="true"]');return Ye(e)?e:t.querySelector("[data-composition-id]")}var G=Object.freeze({start:"data-start",duration:"data-duration",trackIndex:"data-track-index",derivedEnd:"data-end",legacyTrack:"data-layer"}),To=Object.freeze([G.start,G.duration,G.trackIndex]),Ro=Object.freeze([G.derivedEnd]),xo=Object.freeze([G.derivedEnd,G.legacyTrack]);function Ke(t){if(t==null||t.trim()==="")return null;let e=Number(t);return Number.isFinite(e)?e:null}var Vt=t=>{let e=Ke(t);return e!==null&&e>=0?e:null};function Ee(t){return Vt(t("data-playback-start"))??Vt(t("data-media-start"))??0}var te=.1,ne=10;function Ze(t){return Number.isFinite(t)&&t>0?Math.max(te,Math.min(ne,t)):1}function Wt(t,e=1){let n=Number.parseFloat(t("data-playback-rate")??"");return Ze(Number.isFinite(n)&&n>0?n:e)}function Je(t){let e=Ke(t("data-duration"));return e!==null&&e>0?e:null}function $t(t,e){let n=Je(t);if(n!==null)return n;let i=Ke(t("data-end"));return i!==null?i-e:null}var Ei=3;function Qe(t,e,n){return Number.isFinite(t)?Math.max(0,t-e)/Ze(n):null}function et(t){let{tag:e,authoredDurationSeconds:n,sourceDurationSeconds:i,mediaStartSeconds:r,playbackRate:o}=t;if(n!==null&&n>0)return{seconds:n,source:"authored"};if(e==="img")return{seconds:Ei,source:"default"};if(i===null)return{seconds:null,source:"pending",reason:"source duration not yet probed"};let a=Qe(i,r,o);return a===null?{seconds:null,source:"pending",reason:"source reported a non-finite duration"}:{seconds:a,source:"media"}}var Ti="data-fx-chain",ko=Ti.slice(5);var ie=(t="frequency",e="Frequency",n=1e3,i=20,r=2e4)=>({kind:"number",key:t,label:e,unit:"Hz",min:i,max:r,step:1,default:n,scale:"log",automatable:!0}),tt=(t=.707,e="Bandwidth: higher is narrower.")=>({kind:"number",key:"q",label:"Q",unit:"",min:.1,max:20,step:.01,default:t,scale:"log",automatable:!0,hint:e}),Te=(t=-40,e=40,n=0)=>({kind:"number",key:"gain",label:"Gain",unit:"dB",min:t,max:e,step:.1,default:n,automatable:!0}),Bt={kind:"enum",key:"poles",label:"Slope",options:[{value:"1",label:"6 dB/oct"},{value:"2",label:"12 dB/oct"}],default:"2",hint:"Two poles is the usual biquad; one pole is gentler."},Gt=[{id:"gain",label:"Gain",group:"dynamics",description:"Raise or lower the whole signal. Automate it to duck under something else.",params:[Te(-60,12,0)],web:"gain-node"},{id:"peaking",label:"Peaking EQ",group:"filter",description:"Boost or cut a band, leaving everything either side alone.",params:[ie("frequency","Frequency",1e3),Te(-40,40,0),tt(1)],web:"biquad-peaking"},{id:"lowshelf",label:"Low Shelf",group:"filter",description:"Lift or drop everything below the corner frequency.",params:[ie("frequency","Frequency",200,20,2e3),Te(-40,40,0)],web:"biquad-lowshelf"},{id:"highshelf",label:"High Shelf",group:"filter",description:"Lift or drop everything above the corner frequency.",params:[ie("frequency","Frequency",4e3,500,2e4),Te(-40,40,0)],web:"biquad-highshelf"},{id:"highpass",label:"High-pass",group:"filter",description:"Remove low frequencies: the usual fix for rumble on a voice.",params:[ie("frequency","Cutoff",300,20,2e4),tt(.707),Bt],web:"biquad-highpass"},{id:"lowpass",label:"Low-pass",group:"filter",description:"Remove high frequencies, which darkens or muffles a track.",params:[ie("frequency","Cutoff",8e3,100,2e4),tt(.707),Bt],web:"biquad-lowpass"},{id:"compressor",label:"Compressor",group:"dynamics",description:"Pull loud parts down so the quiet ones can come up.",params:[{kind:"number",key:"threshold",label:"Threshold",unit:"dB",min:-60,max:0,step:.5,default:-24,hint:"Level above which the compressor starts working."},{kind:"number",key:"ratio",label:"Ratio",unit:":1",min:1,max:20,step:.1,default:4},{kind:"number",key:"attack",label:"Attack",unit:"ms",min:.01,max:2e3,step:.1,default:20,scale:"log"},{kind:"number",key:"release",label:"Release",unit:"ms",min:.01,max:9e3,step:1,default:250,scale:"log"},{kind:"number",key:"knee",label:"Knee",unit:"",min:1,max:8,step:.01,default:2.83,hint:"1 is a hard corner; higher eases into it."},{kind:"number",key:"makeup",label:"Makeup",unit:"dB",min:0,max:36,step:.1,default:0},{kind:"number",key:"mix",label:"Mix",unit:"",min:0,max:1,step:.01,default:1,hint:"Below 1 blends the dry signal back in."}],web:"worklet-compressor"},{id:"limiter",label:"Limiter",group:"dynamics",description:"Peak limiter that follows the signal's level. It has no lookahead, so a fast peak or an inter-sample peak can pass the ceiling; use the true-peak limiter for a delivery limit.",params:[{kind:"number",key:"limit",label:"Ceiling",unit:"dB",min:-24,max:0,step:.1,default:-1},{kind:"number",key:"attack",label:"Attack",unit:"ms",min:.1,max:80,step:.1,default:5},{kind:"number",key:"release",label:"Release",unit:"ms",min:1,max:8e3,step:1,default:50,scale:"log"},{kind:"number",key:"level_out",label:"Output",unit:"dB",min:-24,max:24,step:.1,default:0}],web:"worklet-limiter"},{id:"truepeak",label:"True-peak limiter",group:"dynamics",description:"Lookahead limiter that holds a 4x estimate of the inter-sample peak at a dBTP ceiling; full-band noise can land up to about 1.7 dB above it. Adds lookahead plus about 0.3 ms of latency.",params:[{kind:"number",key:"ceiling",label:"Ceiling",unit:"dBTP",min:-24,max:0,step:.1,default:-1,hint:"Target true peak, measured on a 4x oversampled signal. Dense full-band sound can end up to about 1.7 dB above it."},{kind:"number",key:"lookahead",label:"Lookahead",unit:"ms",min:.5,max:10,step:.1,default:3,hint:"How far ahead the gain starts falling. Longer is smoother and adds the same latency."},{kind:"number",key:"release",label:"Release",unit:"ms",min:10,max:2e3,step:1,default:80,scale:"log"}],web:"worklet-truepeak"},{id:"gate",label:"Noise Gate",group:"dynamics",description:"Silence the track when it drops below the threshold.",params:[{kind:"number",key:"threshold",label:"Threshold",unit:"dB",min:-80,max:0,step:.5,default:-35},{kind:"number",key:"range",label:"Range",unit:"dB",min:-80,max:0,step:.5,default:-24,hint:"How far down the gate pulls when closed."},{kind:"number",key:"ratio",label:"Ratio",unit:":1",min:1,max:20,step:.1,default:10},{kind:"number",key:"attack",label:"Attack",unit:"ms",min:.01,max:9e3,step:.1,default:1,scale:"log"},{kind:"number",key:"release",label:"Release",unit:"ms",min:.01,max:9e3,step:1,default:100,scale:"log"},{kind:"number",key:"knee",label:"Knee",unit:"",min:1,max:8,step:.01,default:2.83}],web:"worklet-gate"},{id:"saturate",label:"Saturation",group:"nonlinear",description:"Soft-clip the waveform for warmth or outright distortion.",params:[{kind:"enum",key:"type",label:"Curve",options:[{value:"tanh",label:"Tanh"},{value:"atan",label:"Arctan"},{value:"cubic",label:"Cubic"},{value:"exp",label:"Exponential"},{value:"alg",label:"Algebraic"},{value:"quintic",label:"Quintic"},{value:"sin",label:"Sine"},{value:"erf",label:"Error function"},{value:"hard",label:"Hard clip"}],default:"tanh"},{kind:"number",key:"threshold",label:"Threshold",unit:"dB",min:-40,max:0,step:.1,default:-6},{kind:"number",key:"output",automatable:!0,label:"Output",unit:"dB",min:-24,max:24,step:.1,default:0},{kind:"number",key:"oversample",label:"Oversample",unit:"x",min:1,max:8,step:1,default:4,hint:"Higher costs more but keeps aliasing down."}],web:"waveshaper"},{id:"bitcrush",label:"Bitcrush",group:"nonlinear",description:"Drop bit depth and sample rate for a lo-fi, digital sound.",params:[{kind:"number",key:"bits",label:"Bit depth",unit:"bit",min:1,max:32,step:.1,default:8},{kind:"number",key:"samples",label:"Sample hold",unit:"x",min:1,max:250,step:1,default:1,hint:"Repeats each sample N times, a crude downsample."},{kind:"number",key:"mix",label:"Mix",unit:"",min:0,max:1,step:.01,default:1}],web:"worklet-bitcrush"},{id:"pitchshift",label:"Pitch shift",group:"time",description:"Shifts pitch up or down without changing playback speed. Adds ~50 ms of latency.",params:[{kind:"number",key:"semitones",label:"Semitones",unit:"st",min:-12,max:12,step:1,default:0},{kind:"number",key:"mix",label:"Mix",unit:"",min:0,max:1,step:.01,default:1}],web:"worklet-pitchshift"},{id:"delay",label:"Delay",group:"time",description:"Repeating echoes behind the dry signal.",params:[{kind:"number",key:"time",automatable:!0,label:"Time",unit:"ms",min:1,max:5e3,step:1,default:250,scale:"log"},{kind:"number",key:"feedback",automatable:!0,label:"Feedback",unit:"",min:.01,max:.95,step:.01,default:.35},{kind:"number",key:"mix",automatable:!0,label:"Mix",unit:"",min:0,max:1,step:.01,default:.4}],web:"delay-feedback"},{id:"chorus",label:"Chorus",group:"time",description:"Detuned copies of the signal for width and thickness.",params:[{kind:"number",key:"delay",automatable:!0,label:"Delay",unit:"ms",min:1,max:100,step:.1,default:7},{kind:"number",key:"depth",automatable:!0,label:"Depth",unit:"ms",min:0,max:10,step:.01,default:2},{kind:"number",key:"speed",automatable:!0,label:"Rate",unit:"Hz",min:.01,max:10,step:.01,default:1},{kind:"number",key:"mix",automatable:!0,label:"Mix",unit:"",min:0,max:1,step:.01,default:.5}],web:"chorus-lfo"},{id:"phaser",label:"Phaser",group:"time",description:"Sweeping notches moving through the spectrum.",params:[{kind:"number",key:"in_gain",automatable:!0,label:"Input",unit:"",min:0,max:1,step:.01,default:.4},{kind:"number",key:"out_gain",automatable:!0,label:"Output",unit:"",min:0,max:2,step:.01,default:.74},{kind:"number",key:"delay",label:"Delay",unit:"ms",min:.1,max:5,step:.1,default:3},{kind:"number",key:"decay",label:"Decay",unit:"",min:0,max:.99,step:.01,default:.4},{kind:"number",key:"speed",automatable:!0,label:"Rate",unit:"Hz",min:.1,max:2,step:.01,default:.5},{kind:"enum",key:"type",label:"Waveform",options:[{value:"0",label:"Triangular"},{value:"1",label:"Sinusoidal"}],default:"0"}],web:"allpass-phaser"},{id:"reverb",label:"Reverb",group:"time",description:"Room tail. Both ends convolve the same generated impulse, so preview matches render.",params:[{kind:"number",key:"size",label:"Room size",unit:"",min:.05,max:1,step:.01,default:.7},{kind:"number",key:"damping",label:"Damping",unit:"",min:0,max:1,step:.01,default:.5,hint:"Higher rolls the top off the tail faster."},{kind:"number",key:"wet",automatable:!0,label:"Wet",unit:"",min:0,max:1,step:.01,default:.35},{kind:"number",key:"dry",automatable:!0,label:"Dry",unit:"",min:0,max:1,step:.01,default:.7}],web:"convolver"}],Mo=new Map(Gt.map(t=>[t.id,t]));var Co=Gt.map(t=>t.id);function Ri(t){return 10**(t/20)}var zt=Ri(12);var jt="data-automation",Wo=jt.slice(5),nt=1,xi=512,L=class extends Error{constructor(e){super(e),this.name="AudioAutomationError"}},Re="volume",xe="rate";function qt(t){if(t===Re)return{kind:"volume"};if(t===xe)return{kind:"rate"};let e=t.split(".");if(e.length===3&&e[0]==="fx"&&e[1]===wi){let r=e[2];return r?{kind:"preset",presetId:r}:null}if(e.length!==3||e[0]!=="fx")return null;let[,n,i]=e;return!n||!i?null:{kind:"fx",nodeId:n,param:i}}var wi="preset";var ki={min:0,max:zt,step:.01,unit:"",label:"Volume",scale:"linear",default:1};var Mi={min:te,max:ne,step:.05,unit:"x",label:"Speed",scale:"log",default:1};function re(t){if(typeof t=="number")return Number.isFinite(t)?t:null;if(typeof t=="string"&&t.trim()!==""){let e=Number(t);return Number.isFinite(e)?e:null}return null}function Ci(t){let e=re(t);return e===null||e===0?0:Math.min(1,Math.max(-1,e))}function Yt(t,e){let n=re(t),i=re(e);if(n===null||i===null)return null;let r=s=>Math.min(.999,Math.max(.001,s)),o=r(n),a=r(i);return Math.abs(o-a)<1e-6?null:{x:o,y:a}}function Ii(t){let e=Ci(t?.curve),n=Yt(t?.viaX,t?.viaY);return{...e?{curve:e}:{},...n?{viaX:n.x,viaY:n.y}:{}}}function Di(t,e){let n=re(t?.t),i=re(t?.v);if(n===null||i===null)return null;let r=e?Math.min(e.max,Math.max(e.min,i)):i;return{t:Math.max(0,n),v:r,...Ii(t)}}function Pi(t,e){let n=t.map(r=>Di(r,e)).filter(r=>r!==null).sort((r,o)=>r.t-o.t),i=[];for(let r of n)i.length>0&&i[i.length-1].t===r.t?i[i.length-1]=r:i.push(r);return i.slice(0,xi)}function Li(t){let e=[];for(let n of t.lanes){if(!qt(n.target))continue;let i=n.target===Re?ki:n.target===xe?Mi:null,r=Pi(n.points??[],i);r.length>0&&e.push({target:n.target,points:r})}return{version:nt,lanes:e}}function Xt(t){let e;try{e=JSON.parse(t)}catch(r){throw new L(`Automation is not valid JSON: ${r.message}`)}if(typeof e!="object"||e===null)throw new L("Automation must be a JSON object.");let n=e;if(n.version!==nt)throw new L(`Unsupported automation version: ${String(n.version)}`);if(!Array.isArray(n.lanes))throw new L("Automation is missing a `lanes` array.");let i=n.lanes.map((r,o)=>{if(typeof r!="object"||r===null)throw new L(`Lane ${o} is not an object.`);let a=r;if(typeof a.target!="string"||!qt(a.target))throw new L(`Lane ${o} has an unreadable target: ${String(a.target)}`);if(!Array.isArray(a.points))throw new L(`Lane ${o} is missing a \`points\` array.`);return{target:a.target,points:a.points}});return Li({version:nt,lanes:i})}function Ni(t,e){return e?Math.pow(t,Math.pow(2,2*e)):t}function Oi(t,e){let n=t-.5,i=e-.5,r=.999,o=1e6,a=n>0?n/(r-t):n<0?-n/(t-(1-r)):0,s=i>0?i/(r-e):i<0?-i/(e-(1-r)):0,l=Math.min(o,Math.max(1,a,s));return{cx:t+n/l,cy:e+i/l,w:l}}function Fi(t,e,n){let{cx:i,cy:r,w:o}=Oi(e,n),a=2-2*o,s=t*a-1+2*o*i,l=-t*a-2*o*i,u=Ui(s,l,t),c=1-u,h=c*c+2*o*u*c+u*u;return h>0?(2*o*r*u*c+u*u)/h:t}function Ui(t,e,n){if(Math.abs(t)<1e-12)return Math.abs(e)<1e-12?n:-n/e;let i=Math.sqrt(Math.max(0,e*e-4*t*n)),r=(-e+i)/(2*t),o=(-e-i)/(2*t),a=s=>s>=-1e-9&&s<=1+1e-9;return a(r)?Math.min(1,Math.max(0,r)):a(o)?Math.min(1,Math.max(0,o)):n}function Hi(t,e){let n=Yt(e.viaX,e.viaY);return n?Fi(Math.min(1,Math.max(0,t)),n.x,n.y):Ni(t,e.curve)}function Vi(t,e,n,i){return i==="log"&&t>0&&e>0?Math.exp(Math.log(t)+(Math.log(e)-Math.log(t))*n):t+(e-t)*n}function we(t,e,n="linear"){let i=t.points;if(i.length===0)return 0;let r=i[0];if(e<=r.t)return r.v;let o=i[i.length-1];if(e>=o.t)return o.v;let a=0,s=i.length-1;for(;s-a>1;){let h=a+s>>1;i[h].t<=e?a=h:s=h}let l=i[a],u=i[s],c=u.t-l.t;return c<=0?u.v:Vi(l.v,u.v,Hi((e-l.t)/c,l),n)}var ke=new Map,Wi=64;function Kt(t,e=Re){let n=`${e}\0${t}`,i=ke.get(n);if(i!==void 0)return i;let r=null;try{r=Xt(t).lanes.find(o=>o.target===e)??null}catch{r=null}return ke.size>Wi&&ke.clear(),ke.set(n,r),r}var Zt=48,Jt=new WeakMap;function $i(t){let e=t.points,n=e[0].v,i=e[e.length-1].v,r=[0],o=[0],a=l=>{let u=r[r.length-1];if(l<=u)return;let c=we(t,u,"log");r.push(l),o.push(o[o.length-1]+(c+we(t,l,"log"))/2*(l-u))},s=Math.max(0,e[0].t);a(s);for(let l=1;l<e.length;l+=1){let u=e[l-1].t,c=e[l].t;if(!(c<=0))for(let h=1;h<=Zt;h+=1)a(Math.max(u,0)+(c-u)*h/Zt)}return{ts:Float64Array.from(r),ss:Float64Array.from(o),firstRate:n,lastRate:i}}function Bi(t){let e=Jt.get(t);return e||(e=$i(t),Jt.set(t,e)),e}function Gi(t){return typeof t!="number"&&t.points.length>0}function zi(t,e,n){let i=0,r=t.length-1;for(;r-i>1;){let o=i+r>>1;t[o]<=n?i=o:r=o}return e[i]+(e[r]-e[i])*(n-t[i])/(t[r]-t[i])}function Qt(t,e){if(typeof t=="number")return e/t;if(!Gi(t))return e;let{ts:n,ss:i,firstRate:r,lastRate:o}=Bi(t),a=n.length-1;return e<=0?e/r:e>=i[a]?n[a]+(e-i[a])/o:zi(i,n,e)}function ji(t){return t?Kt(t,xe):null}function en(t,e){return ji(t)??e}var Yo=[{id:"montage",label:"Montage",points:[[0,.9],[.15,.3],[.5,2.5],[.85,.3],[1,.9]]},{id:"hero",label:"Hero",points:[[0,1],[.25,1.6],[.5,.25],[.75,1.6],[1,1]]},{id:"bullet",label:"Bullet",points:[[0,3],[.4,3],[.5,.15],[.6,3],[1,3]]},{id:"jump-cut",label:"Jump cut",points:[[0,.5],[.24,.5],[.26,3],[.5,3],[.52,.5],[.74,.5],[.76,3],[1,3]]},{id:"flash-in",label:"Flash in",points:[[0,.3],[.6,.6],[1,5]]},{id:"flash-out",label:"Flash out",points:[[0,5],[.4,.6],[1,.3]]},{id:"ramp-in",label:"Ramp in",points:[[0,.5],[1,1]]},{id:"ramp-out",label:"Ramp out",points:[[0,1],[1,.5]]},{id:"slowmo-middle",label:"Slow-mo middle",points:[[0,1],[1/3,.35],[2/3,.35],[1,1]]}];var y=Object.freeze({start:"data-start",duration:"data-duration",trackIndex:"data-track-index",derivedEnd:"data-end",legacyTrack:"data-layer"}),Ko=Object.freeze([y.start,y.duration,y.trackIndex]),Zo=Object.freeze([y.derivedEnd]),Jo=Object.freeze([y.derivedEnd,y.legacyTrack]);function N(t){if(t==null||t.trim()==="")return null;let e=Number(t);return Number.isFinite(e)?e:null}var rn=/^[A-Za-z0-9_.:-]+$/;function on(t,e){let n=t.charCodeAt(e);return n>=48&&n<=57}function tn(t,e){let n=e;for(;n>=0&&on(t,n);)n--;return n}function qi(t,e){let n=e;for(;n>=0&&(t[n]??"").trim()==="";)n--;return n}function Yi(t){let e=t.length-1;if(!on(t,e))return null;let n=tn(t,e);return t[n]==="."&&(n=tn(t,n-1)),n+1}function Xi(t){let e=Yi(t);if(e==null)return null;let n=qi(t,e-1),i=t[n];if(i!=="+"&&i!=="-")return null;let r=t.slice(0,n).trim();if(!rn.test(r))return null;let o=Number(t.slice(e));return Number.isFinite(o)?{refId:r,operator:i,magnitude:o}:null}function oe(t){let e=(t??"").trim();if(!e)return null;let n=N(e);if(n!=null)return{kind:"absolute",value:n};if(rn.test(e))return{kind:"reference",refId:e,offset:0};let i=Xi(e);return i?{kind:"reference",refId:i.refId,offset:i.operator==="-"?-i.magnitude:i.magnitude}:null}function x(t,e,n,i){t.push({code:e,attribute:n,value:i})}function Ki(t,e,n,i){if(e==null||e.trim()==="")return n.defaultStart===void 0?0:n.defaultStart;if(!t)return x(i,"invalid-start",y.start,e),null;if(t.kind==="absolute")return Math.max(0,t.value);let r=n.resolveReferenceEnd?.(t.refId);return r==null||!Number.isFinite(r)?(x(i,"unresolved-start-reference",y.start,e),null):Math.max(0,r+t.offset)}var Zi=1e-9;function Ji(t,e){return Math.abs(t-e)<=Zi}function Qi(t,e,n){let i=N(t);if(i==null){x(n,"deprecated-end",y.derivedEnd,t),x(n,"invalid-end",y.derivedEnd,t);return}if(e==null){x(n,"deprecated-end",y.derivedEnd,t);return}Ji(i,e)||(x(n,"deprecated-end",y.derivedEnd,t),x(n,"conflicting-end",y.derivedEnd,t))}function er(t,e,n){let i=N(t);return i==null||i<0?(x(n,"invalid-duration",y.duration,t),{duration:null,end:null,durationSource:"invalid"}):{duration:i,end:e==null?null:e+i,durationSource:"duration"}}function tr(t,e,n){x(n,"deprecated-end",y.derivedEnd,t);let i=N(t);return i==null?(x(n,"invalid-end",y.derivedEnd,t),{duration:null,end:null,durationSource:"invalid"}):e==null?{duration:null,end:i,durationSource:"legacy-end"}:i<e?(x(n,"end-before-start",y.derivedEnd,t),{duration:null,end:null,durationSource:"invalid"}):{duration:i-e,end:i,durationSource:"legacy-end"}}function nr(t,e,n){let i=t.getAttribute(y.duration),r=t.getAttribute(y.derivedEnd);if(i==null)return r==null?{duration:null,end:null,durationSource:"missing"}:tr(r,e,n);let o=er(i,e,n);return r!=null&&Qi(r,o.end,n),o}function nn(t,e,n,i){let r=N(t);return r==null||!Number.isInteger(r)?(x(i,"invalid-track-index",e,t),{trackIndex:0,trackSource:"invalid"}):{trackIndex:r,trackSource:n}}function ir(t,e){let n=t.getAttribute(y.trackIndex),i=t.getAttribute(y.legacyTrack);if(n==null&&i==null)return{trackIndex:0,trackSource:"default"};if(n==null&&i!=null)return x(e,"deprecated-layer",y.legacyTrack,i),nn(i,y.legacyTrack,"legacy-layer",e);let r=nn(n??"",y.trackIndex,"track-index",e);if(i==null)return r;x(e,"deprecated-layer",y.legacyTrack,i);let o=N(i);return o!=null&&o!==r.trackIndex&&x(e,"conflicting-layer",y.legacyTrack,i),r}function it(t,e={}){let n=[],i=t.getAttribute(y.start),r=oe(i),o=Ki(r,i,e,n),a=nr(t,o,n),s=ir(t,n);return{startExpression:r,start:o,...a,...s,diagnostics:n}}function V(t){return N(t)}function rt(t){return Wt(e=>t.getAttribute(e),P(t)?t.defaultPlaybackRate:1)}function rr(t){return en(t.getAttribute("data-automation"),rt(t))}function ot(t){return Ee(e=>t.getAttribute(e))}function ae(t,e){return or(e,ot(t),rr(t))}function at(t){let e=et({tag:"video",authoredDurationSeconds:Je(n=>t.getAttribute(n)),sourceDurationSeconds:Number.isFinite(t.duration)?t.duration:null,mediaStartSeconds:ot(t),playbackRate:rt(t)});return e.source==="media"?ae(t,t.duration):e.seconds}function Me(t,e=0){return!Ht(t)||!t.hasAttribute("data-start")&&!t.hasAttribute("data-track-index")?null:et({tag:"img",authoredDurationSeconds:$t(n=>t.getAttribute(n),e),sourceDurationSeconds:null,mediaStartSeconds:0,playbackRate:1}).seconds}function or(t,e,n){return typeof n=="number"?Qe(t,e,n):Number.isFinite(t)?Qt(n,Math.max(0,t-e)):null}function an(){return globalThis}function st(t,e){if(typeof window>"u")return;let n=an(),i=n.__hf?.onSwallowed;if(i)try{i({label:t,error:e})}catch(r){}(n.__hfDebug||n.__HYPERFRAMES_DEBUG)&&console.debug(`[hyperframes] ${t} swallowed:`,e)}var ar=t=>t.paused?.()===!0?(t.startTime?.()??0)+(t.totalDuration?.()??0)/Math.abs(t.timeScale?.()||1):0;function se(t){try{if(typeof t?.duration!="function")return null;let e=t.getChildren?.(!1,!1,!0),n=Array.isArray(e)?e:[],i=Math.max(Number(t.duration()),...n.map(ar));return Number.isFinite(i)?i:null}catch(e){return st("runtime.timelineDuration",e),null}}var sn="data-hf-authored-duration",ln="data-hf-authored-end";function le(t){if(t==null||typeof t=="string"&&t.trim()==="")return null;let e=typeof t=="number"?t:Number(t);return Number.isFinite(e)?e:null}function Ce(t){let e=le(t.start);if(e==null)return null;let n=Math.max(0,e),i=le(t.duration),r=le(t.authoredDuration),o=i!=null&&i>0?i:r!=null&&r>0?r:null;if(o!=null)return{start:n,duration:o,end:n+o};let a=le(t.end),s=le(t.authoredEnd),l=a!=null&&a>n?a:s!=null&&s>n?s:null;return{start:n,duration:l==null?null:l-n,end:l}}var z=Object.freeze({start:"data-start",duration:"data-duration",trackIndex:"data-track-index",derivedEnd:"data-end",legacyTrack:"data-layer"}),pa=Object.freeze([z.start,z.duration,z.trackIndex]),ha=Object.freeze([z.derivedEnd]),fa=Object.freeze([z.derivedEnd,z.legacyTrack]);function sr(t){if(t==null||t.trim()==="")return null;let e=Number(t);return Number.isFinite(e)?e:null}var un=t=>{let e=sr(t);return e!==null&&e>=0?e:null};function lr(t){return un(t("data-playback-start"))??un(t("data-media-start"))??0}var dn="data-hf-media-start-basis";function cn(t){return t?.trim().toLowerCase()==="global"?"global":"local"}function ur(t){return cn(t.basis)==="global"?t.authoredStart:t.hostStart+t.authoredStart}function mn(t){return hn(t)?ur({authoredStart:t.authoredStart,hostStart:t.hostStart,basis:t.basis}):t.ordinaryStart()}function pn(t){return hn(t)&&cn(t.basis)==="global"}function hn(t){return!t.hasAutoStart&&t.authoredStart!=null&&t.hostStart!==0}function lt(t){return lr(e=>t.getAttribute(e))}function fn(t,e){return t-lt(e)}function ue(t){let e=t.timelineRegistry??{},n=t.includeAuthoredTimingAttrs??!1,i=t.documentRef??document,r=new WeakMap,o=new WeakMap,a=new Set,s=d=>(d.hasAttribute("data-composition-id")?d.parentElement:d)?.closest("[data-composition-id]")??null,l=(d,f)=>{let g=s(f);if(g){for(let M of g.querySelectorAll(`[id="${d}"]`))if(s(M)===g)return M}let R=i.getElementById(d);return R||(Array.from(i.querySelectorAll("[data-composition-id]")).find(M=>M.getAttribute("data-composition-id")===d)??null)},u=(d,f)=>n?d.getAttribute(f):null,c=d=>Ce({start:0,duration:d.getAttribute("data-duration"),authoredDuration:u(d,"data-hf-authored-duration")})?.duration??Ce({start:T(d,0),end:d.getAttribute("data-end"),authoredEnd:u(d,"data-hf-authored-end")})?.duration??null,h=d=>d!=null&&Number.isFinite(d)&&d>0?d:null,v=d=>{let f=d.getAttribute("data-composition-id");return f?h(se(e[f])):null},_=d=>{let f=o.get(d);if(f!==void 0)return f;let g=c(d)??h(P(d)?ae(d,d.duration):null)??h(Me(d))??v(d);return o.set(d,g),g},A="[data-composition-src], [data-composition-id], [data-composition-file]",b=d=>d.matches(A),S=d=>!d.hasAttribute("data-composition-id")||oe(d.getAttribute("data-start"))?null:d.parentElement?.closest(`[data-start], ${A}`)??null,k=(d,f)=>fn(T(d,f),S(d)??d),C=(d,f)=>{let g=d.hasAttribute("data-composition-id")?d.parentElement?.closest("[data-composition-id]"):d.closest("[data-composition-id]");return g?k(g,f):0},I=(d,f)=>{let g=oe(d.getAttribute("data-start"));if(!g){let H=S(d);return H?T(H,f):f}if(g.kind==="absolute")return C(d,f)+Math.max(0,g.value);let R=l(g.refId,d);if(!R)return f;let M=T(R,0),ve=_(R)??0,Ae=Math.min(0,C(d,0));return Math.max(Ae,M+ve+g.offset)},T=(d,f)=>{let g=r.get(d);if(g!==void 0)return g??f;if(a.has(d))return f;a.add(d);try{let R=I(d,f);return r.set(d,R),R}finally{a.delete(d)}},U=d=>{let f=d.closest("[data-composition-id]");return{authoredStart:V(d.getAttribute("data-start")),hostStart:f?k(f,0):0,hasAutoStart:d.hasAttribute("data-hf-auto-start"),basis:d.getAttribute(dn)}};return{resolveStartForElement:(d,f=0)=>T(d,Math.max(0,f)),resolveDurationForElement:d=>_(d),resolveMediaStartForElement:d=>{let f=U(d);return mn({...f,ordinaryStart:()=>T(d,f.hostStart)})},resolveHostStartForElement:d=>C(d,0),resolveHostSlotsForElement:d=>{let f=[];for(let g=d.parentElement;g;g=g.parentElement){if(!b(g)||S(g)||lt(g)<=0)continue;let R=T(g,0),M=c(g);f.push({start:R,end:M?R+M:1/0})}return f},isRootGlobalMediaStartForElement:d=>P(d)&&pn(U(d))}}function bn(){return{capturedTimeline:null,isPlaying:!1,currentTime:0,deterministicAdapters:[],canonicalFps:30,bridgeMuted:!1,bridgeVolume:1,mediaOutputMuted:!1,nativeMediaSyncDisabled:!1,webAudioMediaDisabled:!1,mediaAutoplayBlockedPosted:!1,mediaForceSyncNextTick:!1,playbackRate:1,bridgeLastPostedFrame:-1,bridgeLastPostedAt:0,bridgeLastPostedPlaying:!1,bridgeLastPostedMuted:!1,bridgeMaxPostIntervalMs:80,controlBridgeHandler:null,beforeUnloadHandler:null,injectedCompStyles:[],injectedCompScripts:[],injectedCompLinks:[],cachedTimedMediaEls:[],cachedMediaClips:[],cachedVideoClips:[],cachedMediaTimelineDurationSeconds:0,tornDown:!1,transportClock:null,transportRafId:null}}var gn=7200,ut=1/60,de=t=>t!==null&&t>ut?t:null;function dr(t){return{width:Se(t.getAttribute("data-width")),height:Se(t.getAttribute("data-height"))}}function cr(t,e){let n=null;for(let i of t.querySelectorAll("video[data-start], audio[data-start]")){let r=e.mediaStart(i);if(!Number.isFinite(r))continue;let o=e.mediaDuration(i);if(o==null||o<=ut)continue;let a=Math.max(0,r)+o;(!n||a>n.seconds)&&(n={seconds:a,element:i})}return n&&de(n.seconds)!==null?n:null}function mr(t,e){return cr(t,e)?.seconds??null}function pr(t,e){let n=[];for(let r of t.querySelectorAll("[data-composition-id][data-start]")){if(r.parentElement?.closest("[data-composition-id]")!==t)continue;let o=e.resolveStartForElement(r,0),a=e.resolveDurationForElement(r);!Number.isFinite(o)||a==null||a<=0||n.push(Math.max(0,o)+a)}let i=V(t.getAttribute("data-duration"));return de(qe({authoredDurationSeconds:null,clipEndsSeconds:[i,...n]}).seconds)}var hr=t=>t.hasAttribute("data-composition-id")||t.hasAttribute("data-composition-src");function fr(t,e,{unregisteredLottie:n}){let i=[];for(let o of t.querySelectorAll("[data-start]")){let a=e.resolveStartForElement(o,0);if(!Number.isFinite(a))continue;let s=e.resolveDurationForElement(o);s!=null?i.push(Math.max(0,a)+s):(P(o)||hr(o))&&i.push(null)}(n||t.querySelector("[data-lottie-src]"))&&i.push(null);let r=qe({authoredDurationSeconds:null,clipEndsSeconds:i});return r.pendingClips>0?{...r,seconds:null,source:"unresolved",reason:"a clip's length is pending"}:r}function br(t){return gr(t).seconds}function gr(t){if(t.declared!==null&&Number.isFinite(t.declared)&&t.declared>0)return{seconds:t.declared,from:"declared",floorIndex:null};let e=de(t.timeline()),n=t.floors().map(h=>h??0),i=Math.max(0,...n),r=Number.isFinite(t.fallback)&&t.fallback>ut?t.fallback:0,o=Math.max(i,r),s=e!==null&&e>=gn&&de(o)!==null?null:e,l=i>=r,u=h=>({seconds:h,from:l?"floor":"fallback",floorIndex:l?n.indexOf(i):null});if(s!==null)return s>=o?{seconds:s,from:"timeline",floorIndex:null}:u(o);if(de(i)!==null)return u(o);if(r>0)return{seconds:r,from:"fallback",floorIndex:null};let c=t.derived();return{seconds:c>0?c:0,from:"derived",floorIndex:null}}function _n(t){let e=ee(t);if(!e)return null;let n=ue({timelineRegistry:{},includeAuthoredTimingAttrs:!0,documentRef:t}),i=br({declared:V(e.getAttribute("data-duration")),timeline:()=>null,floors:()=>[mr(t,{mediaStart:n.resolveMediaStartForElement,mediaDuration:at}),pr(e,n)],fallback:0,derived:()=>fr(e,n,{unregisteredLottie:!1}).seconds??0});return{...dr(e),fps:bn().canonicalFps,durationSeconds:i}}function Ie(t){return t+1e-5}function yn(){let{userAgent:t,maxTouchPoints:e}=navigator;return/iP(hone|ad|od)/.test(t)||/Macintosh/.test(t)&&e>1}function De(){let{userAgent:t}=navigator;return/AppleWebKit/.test(t)&&!/Chrom(e|ium)\/|Edg\/|Android/.test(t)}var _r="hyperframes-studio-preview";var dt="data-hf-player-frame";function yr(t){return De()&&t.defaultView?.frameElement?.hasAttribute(dt)===!0}function vn(t){return t.querySelector(`meta[name="${_r}"]`)!==null||yr(t)}var An="__hfPreviewErrors";function Sn(t){return t.hasRuntime||t.runtimeInjected?!1:!!(t.hasNestedCompositions||t.hasTimelines&&t.attempts>=5)}function j(t){return typeof t=="object"&&t!==null}function En(t){return j(t)&&typeof t.getDuration=="function"}function Tn(t){return j(t)&&typeof t.duration=="function"&&typeof t.time=="function"&&typeof t.seek=="function"&&typeof t.play=="function"&&typeof t.pause=="function"}var q="https://cdn.jsdelivr.net/npm/@hyperframes/core@0.9.9/dist/hyperframe.runtime.iife.js";function ce(t){if(t===null)return null;let e=Number.parseInt(t,10);return Number.isFinite(e)&&e>0?e:null}function vr(t){let e=t?.querySelector("[data-composition-id][data-width][data-height]")??t?.querySelector("[data-width][data-height]");if(!e)return null;let n=ce(e.getAttribute("data-width")),i=ce(e.getAttribute("data-height"));return n!==null&&i!==null?{width:n,height:i}:null}function Ar(t){return Array.isArray(t)?t.find(e=>typeof e=="string"&&e.trim()!==""&&e!=="[object Event]")??null:null}var Pe=class{constructor(e,n){this._iframe=e;this._callbacks=n}_iframe;_callbacks;_interval=null;_runtimeInjected=!1;_runtimeScript=null;_failure=null;get failed(){return this._failure!==null&&this._failure.document===this._iframe.contentDocument}get runtimeInjected(){return this._runtimeInjected}start(){this.stop(),this._failure=null,this._runtimeInjected=!1;let e=0;this._interval=setInterval(()=>{e++;let n=null;try{n=this._poll(e)}catch(i){i instanceof DOMException&&i.name==="SecurityError"||(n={kind:"error",message:i instanceof Error?i.message:String(i)})}n??=this._deadlineOutcome(e),n&&(this.stop(),n.kind==="error"?(this._failure={document:this._iframe.contentDocument},this._callbacks.onError(n.message)):this._callbacks.onReady(n.result))},200)}_deadlineOutcome(e){return e<40||this._callbacks.hostOwnsDeadline?.()?null:{kind:"error",message:"Composition timeline not found after 8s"}}_poll(e){let n=this._iframe.contentWindow;if(!n)return null;let i=Ar(Reflect.get(n,An));if(i!==null)return{kind:"error",message:i};let r=this._iframe.contentDocument,o=Reflect.get(n,"__timelines"),a=this.hasRuntimeBridge(n);if(Sn({hasRuntime:a,hasTimelines:j(o)&&Object.keys(o).length>0,hasNestedCompositions:!!r?.querySelector("[data-composition-src]"),runtimeInjected:this._runtimeInjected,attempts:e}))return this._injectRuntime(),null;if(this._runtimeInjected&&!a)return null;let s=this._resolveReadyResult(n,r);return s?{kind:"ready",result:s}:null}_resolveReadyResult(e,n){let i=this._resolvePlaybackDurationAdapter(e)??{kind:"document",getDuration:()=>0},r=i.getDuration();if(!Number.isFinite(r)||r<=0){if(i.kind==="direct-timeline")return null;r=n?_n(n)?.durationSeconds??0:0}return r<=0?null:{duration:r,adapter:{...i,getDuration:()=>r},compositionSize:vr(n)}}stop(){this._runtimeScript&&(this._runtimeScript.onerror=null,this._runtimeScript=null),this.failed||(this._failure=null),this._interval!==null&&(clearInterval(this._interval),this._interval=null)}resolveDirectTimelineAdapter(){try{let e=this._iframe.contentWindow;return e?this._resolveDirectTimelineAdapterFromWindow(e):null}catch{return null}}resolveDirectTimelineAdapterFromWindow(e){return this._resolveDirectTimelineAdapterFromWindow(e)}hasRuntimeBridge(e){return j(Reflect.get(e,"__player"))}_injectRuntime(){this._runtimeInjected=!0;try{let e=this._iframe.contentDocument;if(!e)return;let n=e.createElement("script");n.src=this._callbacks.resolveRuntimeUrl?.()??q,this._runtimeScript=n,n.onerror=()=>{this._runtimeScript!==n||this._iframe.contentDocument!==e||(this.stop(),this._failure={document:e},this._callbacks.onError("HyperFrames runtime failed to load from "+n.src))},(e.head||e.documentElement).appendChild(n),this._callbacks.onRuntimeInjected?.()}catch{}}_resolveDirectTimelineAdapterFromWindow(e){if(this.hasRuntimeBridge(e))return null;let n=Reflect.get(e,"__timelines");if(!j(n))return null;let i=Object.keys(n);if(i.length===0)return null;let r=this._iframe.contentDocument?.querySelector("[data-composition-id]")?.getAttribute("data-composition-id"),o=r&&r in n?r:i[i.length-1],a=n[o];return Tn(a)?a:null}_resolvePlaybackDurationAdapter(e){let n=Reflect.get(e,"__player");if(En(n))return{kind:"runtime",getDuration:()=>n.getDuration()};let i=this._resolveDirectTimelineAdapterFromWindow(e);return i?{kind:"direct-timeline",timeline:i,getDuration:()=>i.duration()}:null}};var Rn=`
|
|
1
|
+
"use strict";var je=Object.defineProperty;var hi=Object.getOwnPropertyDescriptor;var fi=Object.getOwnPropertyNames;var bi=Object.prototype.hasOwnProperty;var gi=(t,e)=>{for(var n in e)je(t,n,{get:e[n],enumerable:!0})},_i=(t,e,n,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of fi(e))!bi.call(t,r)&&r!==n&&je(t,r,{get:()=>e[r],enumerable:!(i=hi(e,r))||i.enumerable});return t};var yi=t=>_i(je({},"__esModule",{value:!0}),t);var _o={};gi(_o,{HyperframesPlayer:()=>ze,SPEED_PRESETS:()=>pt,formatSpeed:()=>W,formatTime:()=>Le});module.exports=yi(_o);var Ft=t=>t!==null&&Number.isFinite(t)&&t>0;function qe(t){let e=t.clipEndsSeconds.filter(i=>i===null).length;if(Ft(t.authoredDurationSeconds))return{seconds:t.authoredDurationSeconds,source:"authored",pendingClips:e};let n=t.clipEndsSeconds.filter(Ft);return n.length>0?{seconds:Math.max(...n),source:"derived",pendingClips:e}:{seconds:null,source:"unresolved",pendingClips:e,reason:e>0?"every clip's length is still pending":"no authored duration and no clip with a length"}}var vi="http://www.w3.org/1999/xhtml";function Ut(t){return t!=null&&t.nodeType===1}function Ye(t){return Ut(t)&&t.namespaceURI===vi}function Xe(t,e){return Ye(t)&&t.localName===e}function Ai(t){return Xe(t,"video")}function Si(t){return Xe(t,"audio")}function P(t){return Ai(t)||Si(t)}function Ht(t){return Xe(t,"img")}function Se(t){if(t==null||t.trim()==="")return null;let e=Number.parseInt(t,10);return Number.isFinite(e)&&e>0?e:null}function ee(t=document){let e=t.querySelector('[data-composition-id][data-root="true"]');return Ye(e)?e:t.querySelector("[data-composition-id]")}var G=Object.freeze({start:"data-start",duration:"data-duration",trackIndex:"data-track-index",derivedEnd:"data-end",legacyTrack:"data-layer"}),To=Object.freeze([G.start,G.duration,G.trackIndex]),Ro=Object.freeze([G.derivedEnd]),xo=Object.freeze([G.derivedEnd,G.legacyTrack]);function Ke(t){if(t==null||t.trim()==="")return null;let e=Number(t);return Number.isFinite(e)?e:null}var Vt=t=>{let e=Ke(t);return e!==null&&e>=0?e:null};function Ee(t){return Vt(t("data-playback-start"))??Vt(t("data-media-start"))??0}var te=.1,ne=10;function Ze(t){return Number.isFinite(t)&&t>0?Math.max(te,Math.min(ne,t)):1}function Wt(t,e=1){let n=Number.parseFloat(t("data-playback-rate")??"");return Ze(Number.isFinite(n)&&n>0?n:e)}function Je(t){let e=Ke(t("data-duration"));return e!==null&&e>0?e:null}function $t(t,e){let n=Je(t);if(n!==null)return n;let i=Ke(t("data-end"));return i!==null?i-e:null}var Ei=3;function Qe(t,e,n){return Number.isFinite(t)?Math.max(0,t-e)/Ze(n):null}function et(t){let{tag:e,authoredDurationSeconds:n,sourceDurationSeconds:i,mediaStartSeconds:r,playbackRate:o}=t;if(n!==null&&n>0)return{seconds:n,source:"authored"};if(e==="img")return{seconds:Ei,source:"default"};if(i===null)return{seconds:null,source:"pending",reason:"source duration not yet probed"};let a=Qe(i,r,o);return a===null?{seconds:null,source:"pending",reason:"source reported a non-finite duration"}:{seconds:a,source:"media"}}var Ti="data-fx-chain",ko=Ti.slice(5);var ie=(t="frequency",e="Frequency",n=1e3,i=20,r=2e4)=>({kind:"number",key:t,label:e,unit:"Hz",min:i,max:r,step:1,default:n,scale:"log",automatable:!0}),tt=(t=.707,e="Bandwidth: higher is narrower.")=>({kind:"number",key:"q",label:"Q",unit:"",min:.1,max:20,step:.01,default:t,scale:"log",automatable:!0,hint:e}),Te=(t=-40,e=40,n=0)=>({kind:"number",key:"gain",label:"Gain",unit:"dB",min:t,max:e,step:.1,default:n,automatable:!0}),Bt={kind:"enum",key:"poles",label:"Slope",options:[{value:"1",label:"6 dB/oct"},{value:"2",label:"12 dB/oct"}],default:"2",hint:"Two poles is the usual biquad; one pole is gentler."},Gt=[{id:"gain",label:"Gain",group:"dynamics",description:"Raise or lower the whole signal. Automate it to duck under something else.",params:[Te(-60,12,0)],web:"gain-node"},{id:"peaking",label:"Peaking EQ",group:"filter",description:"Boost or cut a band, leaving everything either side alone.",params:[ie("frequency","Frequency",1e3),Te(-40,40,0),tt(1)],web:"biquad-peaking"},{id:"lowshelf",label:"Low Shelf",group:"filter",description:"Lift or drop everything below the corner frequency.",params:[ie("frequency","Frequency",200,20,2e3),Te(-40,40,0)],web:"biquad-lowshelf"},{id:"highshelf",label:"High Shelf",group:"filter",description:"Lift or drop everything above the corner frequency.",params:[ie("frequency","Frequency",4e3,500,2e4),Te(-40,40,0)],web:"biquad-highshelf"},{id:"highpass",label:"High-pass",group:"filter",description:"Remove low frequencies: the usual fix for rumble on a voice.",params:[ie("frequency","Cutoff",300,20,2e4),tt(.707),Bt],web:"biquad-highpass"},{id:"lowpass",label:"Low-pass",group:"filter",description:"Remove high frequencies, which darkens or muffles a track.",params:[ie("frequency","Cutoff",8e3,100,2e4),tt(.707),Bt],web:"biquad-lowpass"},{id:"compressor",label:"Compressor",group:"dynamics",description:"Pull loud parts down so the quiet ones can come up.",params:[{kind:"number",key:"threshold",label:"Threshold",unit:"dB",min:-60,max:0,step:.5,default:-24,hint:"Level above which the compressor starts working."},{kind:"number",key:"ratio",label:"Ratio",unit:":1",min:1,max:20,step:.1,default:4},{kind:"number",key:"attack",label:"Attack",unit:"ms",min:.01,max:2e3,step:.1,default:20,scale:"log"},{kind:"number",key:"release",label:"Release",unit:"ms",min:.01,max:9e3,step:1,default:250,scale:"log"},{kind:"number",key:"knee",label:"Knee",unit:"",min:1,max:8,step:.01,default:2.83,hint:"1 is a hard corner; higher eases into it."},{kind:"number",key:"makeup",label:"Makeup",unit:"dB",min:0,max:36,step:.1,default:0},{kind:"number",key:"mix",label:"Mix",unit:"",min:0,max:1,step:.01,default:1,hint:"Below 1 blends the dry signal back in."}],web:"worklet-compressor"},{id:"limiter",label:"Limiter",group:"dynamics",description:"Peak limiter that follows the signal's level. It has no lookahead, so a fast peak or an inter-sample peak can pass the ceiling; use the true-peak limiter for a delivery limit.",params:[{kind:"number",key:"limit",label:"Ceiling",unit:"dB",min:-24,max:0,step:.1,default:-1},{kind:"number",key:"attack",label:"Attack",unit:"ms",min:.1,max:80,step:.1,default:5},{kind:"number",key:"release",label:"Release",unit:"ms",min:1,max:8e3,step:1,default:50,scale:"log"},{kind:"number",key:"level_out",label:"Output",unit:"dB",min:-24,max:24,step:.1,default:0}],web:"worklet-limiter"},{id:"truepeak",label:"True-peak limiter",group:"dynamics",description:"Lookahead limiter that holds a 4x estimate of the inter-sample peak at a dBTP ceiling; full-band noise can land up to about 1.7 dB above it. Adds lookahead plus about 0.3 ms of latency.",params:[{kind:"number",key:"ceiling",label:"Ceiling",unit:"dBTP",min:-24,max:0,step:.1,default:-1,hint:"Target true peak, measured on a 4x oversampled signal. Dense full-band sound can end up to about 1.7 dB above it."},{kind:"number",key:"lookahead",label:"Lookahead",unit:"ms",min:.5,max:10,step:.1,default:3,hint:"How far ahead the gain starts falling. Longer is smoother and adds the same latency."},{kind:"number",key:"release",label:"Release",unit:"ms",min:10,max:2e3,step:1,default:80,scale:"log"}],web:"worklet-truepeak"},{id:"gate",label:"Noise Gate",group:"dynamics",description:"Silence the track when it drops below the threshold.",params:[{kind:"number",key:"threshold",label:"Threshold",unit:"dB",min:-80,max:0,step:.5,default:-35},{kind:"number",key:"range",label:"Range",unit:"dB",min:-80,max:0,step:.5,default:-24,hint:"How far down the gate pulls when closed."},{kind:"number",key:"ratio",label:"Ratio",unit:":1",min:1,max:20,step:.1,default:10},{kind:"number",key:"attack",label:"Attack",unit:"ms",min:.01,max:9e3,step:.1,default:1,scale:"log"},{kind:"number",key:"release",label:"Release",unit:"ms",min:.01,max:9e3,step:1,default:100,scale:"log"},{kind:"number",key:"knee",label:"Knee",unit:"",min:1,max:8,step:.01,default:2.83}],web:"worklet-gate"},{id:"saturate",label:"Saturation",group:"nonlinear",description:"Soft-clip the waveform for warmth or outright distortion.",params:[{kind:"enum",key:"type",label:"Curve",options:[{value:"tanh",label:"Tanh"},{value:"atan",label:"Arctan"},{value:"cubic",label:"Cubic"},{value:"exp",label:"Exponential"},{value:"alg",label:"Algebraic"},{value:"quintic",label:"Quintic"},{value:"sin",label:"Sine"},{value:"erf",label:"Error function"},{value:"hard",label:"Hard clip"}],default:"tanh"},{kind:"number",key:"threshold",label:"Threshold",unit:"dB",min:-40,max:0,step:.1,default:-6},{kind:"number",key:"output",automatable:!0,label:"Output",unit:"dB",min:-24,max:24,step:.1,default:0},{kind:"number",key:"oversample",label:"Oversample",unit:"x",min:1,max:8,step:1,default:4,hint:"Higher costs more but keeps aliasing down."}],web:"waveshaper"},{id:"bitcrush",label:"Bitcrush",group:"nonlinear",description:"Drop bit depth and sample rate for a lo-fi, digital sound.",params:[{kind:"number",key:"bits",label:"Bit depth",unit:"bit",min:1,max:32,step:.1,default:8},{kind:"number",key:"samples",label:"Sample hold",unit:"x",min:1,max:250,step:1,default:1,hint:"Repeats each sample N times, a crude downsample."},{kind:"number",key:"mix",label:"Mix",unit:"",min:0,max:1,step:.01,default:1}],web:"worklet-bitcrush"},{id:"pitchshift",label:"Pitch shift",group:"time",description:"Shifts pitch up or down without changing playback speed. Adds ~50 ms of latency.",params:[{kind:"number",key:"semitones",label:"Semitones",unit:"st",min:-12,max:12,step:1,default:0},{kind:"number",key:"mix",label:"Mix",unit:"",min:0,max:1,step:.01,default:1}],web:"worklet-pitchshift"},{id:"delay",label:"Delay",group:"time",description:"Repeating echoes behind the dry signal.",params:[{kind:"number",key:"time",automatable:!0,label:"Time",unit:"ms",min:1,max:5e3,step:1,default:250,scale:"log"},{kind:"number",key:"feedback",automatable:!0,label:"Feedback",unit:"",min:.01,max:.95,step:.01,default:.35},{kind:"number",key:"mix",automatable:!0,label:"Mix",unit:"",min:0,max:1,step:.01,default:.4}],web:"delay-feedback"},{id:"chorus",label:"Chorus",group:"time",description:"Detuned copies of the signal for width and thickness.",params:[{kind:"number",key:"delay",automatable:!0,label:"Delay",unit:"ms",min:1,max:100,step:.1,default:7},{kind:"number",key:"depth",automatable:!0,label:"Depth",unit:"ms",min:0,max:10,step:.01,default:2},{kind:"number",key:"speed",automatable:!0,label:"Rate",unit:"Hz",min:.01,max:10,step:.01,default:1},{kind:"number",key:"mix",automatable:!0,label:"Mix",unit:"",min:0,max:1,step:.01,default:.5}],web:"chorus-lfo"},{id:"phaser",label:"Phaser",group:"time",description:"Sweeping notches moving through the spectrum.",params:[{kind:"number",key:"in_gain",automatable:!0,label:"Input",unit:"",min:0,max:1,step:.01,default:.4},{kind:"number",key:"out_gain",automatable:!0,label:"Output",unit:"",min:0,max:2,step:.01,default:.74},{kind:"number",key:"delay",label:"Delay",unit:"ms",min:.1,max:5,step:.1,default:3},{kind:"number",key:"decay",label:"Decay",unit:"",min:0,max:.99,step:.01,default:.4},{kind:"number",key:"speed",automatable:!0,label:"Rate",unit:"Hz",min:.1,max:2,step:.01,default:.5},{kind:"enum",key:"type",label:"Waveform",options:[{value:"0",label:"Triangular"},{value:"1",label:"Sinusoidal"}],default:"0"}],web:"allpass-phaser"},{id:"reverb",label:"Reverb",group:"time",description:"Room tail. Both ends convolve the same generated impulse, so preview matches render.",params:[{kind:"number",key:"size",label:"Room size",unit:"",min:.05,max:1,step:.01,default:.7},{kind:"number",key:"damping",label:"Damping",unit:"",min:0,max:1,step:.01,default:.5,hint:"Higher rolls the top off the tail faster."},{kind:"number",key:"wet",automatable:!0,label:"Wet",unit:"",min:0,max:1,step:.01,default:.35},{kind:"number",key:"dry",automatable:!0,label:"Dry",unit:"",min:0,max:1,step:.01,default:.7}],web:"convolver"}],Mo=new Map(Gt.map(t=>[t.id,t]));var Co=Gt.map(t=>t.id);function Ri(t){return 10**(t/20)}var zt=Ri(12);var jt="data-automation",Wo=jt.slice(5),nt=1,xi=512,L=class extends Error{constructor(e){super(e),this.name="AudioAutomationError"}},Re="volume",xe="rate";function qt(t){if(t===Re)return{kind:"volume"};if(t===xe)return{kind:"rate"};let e=t.split(".");if(e.length===3&&e[0]==="fx"&&e[1]===wi){let r=e[2];return r?{kind:"preset",presetId:r}:null}if(e.length!==3||e[0]!=="fx")return null;let[,n,i]=e;return!n||!i?null:{kind:"fx",nodeId:n,param:i}}var wi="preset";var ki={min:0,max:zt,step:.01,unit:"",label:"Volume",scale:"linear",default:1};var Mi={min:te,max:ne,step:.05,unit:"x",label:"Speed",scale:"log",default:1};function re(t){if(typeof t=="number")return Number.isFinite(t)?t:null;if(typeof t=="string"&&t.trim()!==""){let e=Number(t);return Number.isFinite(e)?e:null}return null}function Ci(t){let e=re(t);return e===null||e===0?0:Math.min(1,Math.max(-1,e))}function Yt(t,e){let n=re(t),i=re(e);if(n===null||i===null)return null;let r=s=>Math.min(.999,Math.max(.001,s)),o=r(n),a=r(i);return Math.abs(o-a)<1e-6?null:{x:o,y:a}}function Ii(t){let e=Ci(t?.curve),n=Yt(t?.viaX,t?.viaY);return{...e?{curve:e}:{},...n?{viaX:n.x,viaY:n.y}:{}}}function Di(t,e){let n=re(t?.t),i=re(t?.v);if(n===null||i===null)return null;let r=e?Math.min(e.max,Math.max(e.min,i)):i;return{t:Math.max(0,n),v:r,...Ii(t)}}function Pi(t,e){let n=t.map(r=>Di(r,e)).filter(r=>r!==null).sort((r,o)=>r.t-o.t),i=[];for(let r of n)i.length>0&&i[i.length-1].t===r.t?i[i.length-1]=r:i.push(r);return i.slice(0,xi)}function Li(t){let e=[];for(let n of t.lanes){if(!qt(n.target))continue;let i=n.target===Re?ki:n.target===xe?Mi:null,r=Pi(n.points??[],i);r.length>0&&e.push({target:n.target,points:r})}return{version:nt,lanes:e}}function Xt(t){let e;try{e=JSON.parse(t)}catch(r){throw new L(`Automation is not valid JSON: ${r.message}`)}if(typeof e!="object"||e===null)throw new L("Automation must be a JSON object.");let n=e;if(n.version!==nt)throw new L(`Unsupported automation version: ${String(n.version)}`);if(!Array.isArray(n.lanes))throw new L("Automation is missing a `lanes` array.");let i=n.lanes.map((r,o)=>{if(typeof r!="object"||r===null)throw new L(`Lane ${o} is not an object.`);let a=r;if(typeof a.target!="string"||!qt(a.target))throw new L(`Lane ${o} has an unreadable target: ${String(a.target)}`);if(!Array.isArray(a.points))throw new L(`Lane ${o} is missing a \`points\` array.`);return{target:a.target,points:a.points}});return Li({version:nt,lanes:i})}function Ni(t,e){return e?Math.pow(t,Math.pow(2,2*e)):t}function Oi(t,e){let n=t-.5,i=e-.5,r=.999,o=1e6,a=n>0?n/(r-t):n<0?-n/(t-(1-r)):0,s=i>0?i/(r-e):i<0?-i/(e-(1-r)):0,l=Math.min(o,Math.max(1,a,s));return{cx:t+n/l,cy:e+i/l,w:l}}function Fi(t,e,n){let{cx:i,cy:r,w:o}=Oi(e,n),a=2-2*o,s=t*a-1+2*o*i,l=-t*a-2*o*i,u=Ui(s,l,t),c=1-u,h=c*c+2*o*u*c+u*u;return h>0?(2*o*r*u*c+u*u)/h:t}function Ui(t,e,n){if(Math.abs(t)<1e-12)return Math.abs(e)<1e-12?n:-n/e;let i=Math.sqrt(Math.max(0,e*e-4*t*n)),r=(-e+i)/(2*t),o=(-e-i)/(2*t),a=s=>s>=-1e-9&&s<=1+1e-9;return a(r)?Math.min(1,Math.max(0,r)):a(o)?Math.min(1,Math.max(0,o)):n}function Hi(t,e){let n=Yt(e.viaX,e.viaY);return n?Fi(Math.min(1,Math.max(0,t)),n.x,n.y):Ni(t,e.curve)}function Vi(t,e,n,i){return i==="log"&&t>0&&e>0?Math.exp(Math.log(t)+(Math.log(e)-Math.log(t))*n):t+(e-t)*n}function we(t,e,n="linear"){let i=t.points;if(i.length===0)return 0;let r=i[0];if(e<=r.t)return r.v;let o=i[i.length-1];if(e>=o.t)return o.v;let a=0,s=i.length-1;for(;s-a>1;){let h=a+s>>1;i[h].t<=e?a=h:s=h}let l=i[a],u=i[s],c=u.t-l.t;return c<=0?u.v:Vi(l.v,u.v,Hi((e-l.t)/c,l),n)}var ke=new Map,Wi=64;function Kt(t,e=Re){let n=`${e}\0${t}`,i=ke.get(n);if(i!==void 0)return i;let r=null;try{r=Xt(t).lanes.find(o=>o.target===e)??null}catch{r=null}return ke.size>Wi&&ke.clear(),ke.set(n,r),r}var Zt=48,Jt=new WeakMap;function $i(t){let e=t.points,n=e[0].v,i=e[e.length-1].v,r=[0],o=[0],a=l=>{let u=r[r.length-1];if(l<=u)return;let c=we(t,u,"log");r.push(l),o.push(o[o.length-1]+(c+we(t,l,"log"))/2*(l-u))},s=Math.max(0,e[0].t);a(s);for(let l=1;l<e.length;l+=1){let u=e[l-1].t,c=e[l].t;if(!(c<=0))for(let h=1;h<=Zt;h+=1)a(Math.max(u,0)+(c-u)*h/Zt)}return{ts:Float64Array.from(r),ss:Float64Array.from(o),firstRate:n,lastRate:i}}function Bi(t){let e=Jt.get(t);return e||(e=$i(t),Jt.set(t,e)),e}function Gi(t){return typeof t!="number"&&t.points.length>0}function zi(t,e,n){let i=0,r=t.length-1;for(;r-i>1;){let o=i+r>>1;t[o]<=n?i=o:r=o}return e[i]+(e[r]-e[i])*(n-t[i])/(t[r]-t[i])}function Qt(t,e){if(typeof t=="number")return e/t;if(!Gi(t))return e;let{ts:n,ss:i,firstRate:r,lastRate:o}=Bi(t),a=n.length-1;return e<=0?e/r:e>=i[a]?n[a]+(e-i[a])/o:zi(i,n,e)}function ji(t){return t?Kt(t,xe):null}function en(t,e){return ji(t)??e}var Yo=[{id:"montage",label:"Montage",points:[[0,.9],[.15,.3],[.5,2.5],[.85,.3],[1,.9]]},{id:"hero",label:"Hero",points:[[0,1],[.25,1.6],[.5,.25],[.75,1.6],[1,1]]},{id:"bullet",label:"Bullet",points:[[0,3],[.4,3],[.5,.15],[.6,3],[1,3]]},{id:"jump-cut",label:"Jump cut",points:[[0,.5],[.24,.5],[.26,3],[.5,3],[.52,.5],[.74,.5],[.76,3],[1,3]]},{id:"flash-in",label:"Flash in",points:[[0,.3],[.6,.6],[1,5]]},{id:"flash-out",label:"Flash out",points:[[0,5],[.4,.6],[1,.3]]},{id:"ramp-in",label:"Ramp in",points:[[0,.5],[1,1]]},{id:"ramp-out",label:"Ramp out",points:[[0,1],[1,.5]]},{id:"slowmo-middle",label:"Slow-mo middle",points:[[0,1],[1/3,.35],[2/3,.35],[1,1]]}];var y=Object.freeze({start:"data-start",duration:"data-duration",trackIndex:"data-track-index",derivedEnd:"data-end",legacyTrack:"data-layer"}),Ko=Object.freeze([y.start,y.duration,y.trackIndex]),Zo=Object.freeze([y.derivedEnd]),Jo=Object.freeze([y.derivedEnd,y.legacyTrack]);function N(t){if(t==null||t.trim()==="")return null;let e=Number(t);return Number.isFinite(e)?e:null}var rn=/^[A-Za-z0-9_.:-]+$/;function on(t,e){let n=t.charCodeAt(e);return n>=48&&n<=57}function tn(t,e){let n=e;for(;n>=0&&on(t,n);)n--;return n}function qi(t,e){let n=e;for(;n>=0&&(t[n]??"").trim()==="";)n--;return n}function Yi(t){let e=t.length-1;if(!on(t,e))return null;let n=tn(t,e);return t[n]==="."&&(n=tn(t,n-1)),n+1}function Xi(t){let e=Yi(t);if(e==null)return null;let n=qi(t,e-1),i=t[n];if(i!=="+"&&i!=="-")return null;let r=t.slice(0,n).trim();if(!rn.test(r))return null;let o=Number(t.slice(e));return Number.isFinite(o)?{refId:r,operator:i,magnitude:o}:null}function oe(t){let e=(t??"").trim();if(!e)return null;let n=N(e);if(n!=null)return{kind:"absolute",value:n};if(rn.test(e))return{kind:"reference",refId:e,offset:0};let i=Xi(e);return i?{kind:"reference",refId:i.refId,offset:i.operator==="-"?-i.magnitude:i.magnitude}:null}function x(t,e,n,i){t.push({code:e,attribute:n,value:i})}function Ki(t,e,n,i){if(e==null||e.trim()==="")return n.defaultStart===void 0?0:n.defaultStart;if(!t)return x(i,"invalid-start",y.start,e),null;if(t.kind==="absolute")return Math.max(0,t.value);let r=n.resolveReferenceEnd?.(t.refId);return r==null||!Number.isFinite(r)?(x(i,"unresolved-start-reference",y.start,e),null):Math.max(0,r+t.offset)}var Zi=1e-9;function Ji(t,e){return Math.abs(t-e)<=Zi}function Qi(t,e,n){let i=N(t);if(i==null){x(n,"deprecated-end",y.derivedEnd,t),x(n,"invalid-end",y.derivedEnd,t);return}if(e==null){x(n,"deprecated-end",y.derivedEnd,t);return}Ji(i,e)||(x(n,"deprecated-end",y.derivedEnd,t),x(n,"conflicting-end",y.derivedEnd,t))}function er(t,e,n){let i=N(t);return i==null||i<0?(x(n,"invalid-duration",y.duration,t),{duration:null,end:null,durationSource:"invalid"}):{duration:i,end:e==null?null:e+i,durationSource:"duration"}}function tr(t,e,n){x(n,"deprecated-end",y.derivedEnd,t);let i=N(t);return i==null?(x(n,"invalid-end",y.derivedEnd,t),{duration:null,end:null,durationSource:"invalid"}):e==null?{duration:null,end:i,durationSource:"legacy-end"}:i<e?(x(n,"end-before-start",y.derivedEnd,t),{duration:null,end:null,durationSource:"invalid"}):{duration:i-e,end:i,durationSource:"legacy-end"}}function nr(t,e,n){let i=t.getAttribute(y.duration),r=t.getAttribute(y.derivedEnd);if(i==null)return r==null?{duration:null,end:null,durationSource:"missing"}:tr(r,e,n);let o=er(i,e,n);return r!=null&&Qi(r,o.end,n),o}function nn(t,e,n,i){let r=N(t);return r==null||!Number.isInteger(r)?(x(i,"invalid-track-index",e,t),{trackIndex:0,trackSource:"invalid"}):{trackIndex:r,trackSource:n}}function ir(t,e){let n=t.getAttribute(y.trackIndex),i=t.getAttribute(y.legacyTrack);if(n==null&&i==null)return{trackIndex:0,trackSource:"default"};if(n==null&&i!=null)return x(e,"deprecated-layer",y.legacyTrack,i),nn(i,y.legacyTrack,"legacy-layer",e);let r=nn(n??"",y.trackIndex,"track-index",e);if(i==null)return r;x(e,"deprecated-layer",y.legacyTrack,i);let o=N(i);return o!=null&&o!==r.trackIndex&&x(e,"conflicting-layer",y.legacyTrack,i),r}function it(t,e={}){let n=[],i=t.getAttribute(y.start),r=oe(i),o=Ki(r,i,e,n),a=nr(t,o,n),s=ir(t,n);return{startExpression:r,start:o,...a,...s,diagnostics:n}}function V(t){return N(t)}function rt(t){return Wt(e=>t.getAttribute(e),P(t)?t.defaultPlaybackRate:1)}function rr(t){return en(t.getAttribute("data-automation"),rt(t))}function ot(t){return Ee(e=>t.getAttribute(e))}function ae(t,e){return or(e,ot(t),rr(t))}function at(t){let e=et({tag:"video",authoredDurationSeconds:Je(n=>t.getAttribute(n)),sourceDurationSeconds:Number.isFinite(t.duration)?t.duration:null,mediaStartSeconds:ot(t),playbackRate:rt(t)});return e.source==="media"?ae(t,t.duration):e.seconds}function Me(t,e=0){return!Ht(t)||!t.hasAttribute("data-start")&&!t.hasAttribute("data-track-index")?null:et({tag:"img",authoredDurationSeconds:$t(n=>t.getAttribute(n),e),sourceDurationSeconds:null,mediaStartSeconds:0,playbackRate:1}).seconds}function or(t,e,n){return typeof n=="number"?Qe(t,e,n):Number.isFinite(t)?Qt(n,Math.max(0,t-e)):null}function an(){return globalThis}function st(t,e){if(typeof window>"u")return;let n=an(),i=n.__hf?.onSwallowed;if(i)try{i({label:t,error:e})}catch(r){}(n.__hfDebug||n.__HYPERFRAMES_DEBUG)&&console.debug(`[hyperframes] ${t} swallowed:`,e)}var ar=t=>t.paused?.()===!0?(t.startTime?.()??0)+(t.totalDuration?.()??0)/Math.abs(t.timeScale?.()||1):0;function se(t){try{if(typeof t?.duration!="function")return null;let e=t.getChildren?.(!1,!1,!0),n=Array.isArray(e)?e:[],i=Math.max(Number(t.duration()),...n.map(ar));return Number.isFinite(i)?i:null}catch(e){return st("runtime.timelineDuration",e),null}}var sn="data-hf-authored-duration",ln="data-hf-authored-end";function le(t){if(t==null||typeof t=="string"&&t.trim()==="")return null;let e=typeof t=="number"?t:Number(t);return Number.isFinite(e)?e:null}function Ce(t){let e=le(t.start);if(e==null)return null;let n=Math.max(0,e),i=le(t.duration),r=le(t.authoredDuration),o=i!=null&&i>0?i:r!=null&&r>0?r:null;if(o!=null)return{start:n,duration:o,end:n+o};let a=le(t.end),s=le(t.authoredEnd),l=a!=null&&a>n?a:s!=null&&s>n?s:null;return{start:n,duration:l==null?null:l-n,end:l}}var z=Object.freeze({start:"data-start",duration:"data-duration",trackIndex:"data-track-index",derivedEnd:"data-end",legacyTrack:"data-layer"}),pa=Object.freeze([z.start,z.duration,z.trackIndex]),ha=Object.freeze([z.derivedEnd]),fa=Object.freeze([z.derivedEnd,z.legacyTrack]);function sr(t){if(t==null||t.trim()==="")return null;let e=Number(t);return Number.isFinite(e)?e:null}var un=t=>{let e=sr(t);return e!==null&&e>=0?e:null};function lr(t){return un(t("data-playback-start"))??un(t("data-media-start"))??0}var dn="data-hf-media-start-basis";function cn(t){return t?.trim().toLowerCase()==="global"?"global":"local"}function ur(t){return cn(t.basis)==="global"?t.authoredStart:t.hostStart+t.authoredStart}function mn(t){return hn(t)?ur({authoredStart:t.authoredStart,hostStart:t.hostStart,basis:t.basis}):t.ordinaryStart()}function pn(t){return hn(t)&&cn(t.basis)==="global"}function hn(t){return!t.hasAutoStart&&t.authoredStart!=null&&t.hostStart!==0}function lt(t){return lr(e=>t.getAttribute(e))}function fn(t,e){return t-lt(e)}function ue(t){let e=t.timelineRegistry??{},n=t.includeAuthoredTimingAttrs??!1,i=t.documentRef??document,r=new WeakMap,o=new WeakMap,a=new Set,s=d=>(d.hasAttribute("data-composition-id")?d.parentElement:d)?.closest("[data-composition-id]")??null,l=(d,f)=>{let g=s(f);if(g){for(let M of g.querySelectorAll(`[id="${d}"]`))if(s(M)===g)return M}let R=i.getElementById(d);return R||(Array.from(i.querySelectorAll("[data-composition-id]")).find(M=>M.getAttribute("data-composition-id")===d)??null)},u=(d,f)=>n?d.getAttribute(f):null,c=d=>Ce({start:0,duration:d.getAttribute("data-duration"),authoredDuration:u(d,"data-hf-authored-duration")})?.duration??Ce({start:T(d,0),end:d.getAttribute("data-end"),authoredEnd:u(d,"data-hf-authored-end")})?.duration??null,h=d=>d!=null&&Number.isFinite(d)&&d>0?d:null,v=d=>{let f=d.getAttribute("data-composition-id");return f?h(se(e[f])):null},_=d=>{let f=o.get(d);if(f!==void 0)return f;let g=c(d)??h(P(d)?ae(d,d.duration):null)??h(Me(d))??v(d);return o.set(d,g),g},A="[data-composition-src], [data-composition-id], [data-composition-file]",b=d=>d.matches(A),S=d=>!d.hasAttribute("data-composition-id")||oe(d.getAttribute("data-start"))?null:d.parentElement?.closest(`[data-start], ${A}`)??null,k=(d,f)=>fn(T(d,f),S(d)??d),C=(d,f)=>{let g=d.hasAttribute("data-composition-id")?d.parentElement?.closest("[data-composition-id]"):d.closest("[data-composition-id]");return g?k(g,f):0},I=(d,f)=>{let g=oe(d.getAttribute("data-start"));if(!g){let H=S(d);return H?T(H,f):f}if(g.kind==="absolute")return C(d,f)+Math.max(0,g.value);let R=l(g.refId,d);if(!R)return f;let M=T(R,0),ve=_(R)??0,Ae=Math.min(0,C(d,0));return Math.max(Ae,M+ve+g.offset)},T=(d,f)=>{let g=r.get(d);if(g!==void 0)return g??f;if(a.has(d))return f;a.add(d);try{let R=I(d,f);return r.set(d,R),R}finally{a.delete(d)}},U=d=>{let f=d.closest("[data-composition-id]");return{authoredStart:V(d.getAttribute("data-start")),hostStart:f?k(f,0):0,hasAutoStart:d.hasAttribute("data-hf-auto-start"),basis:d.getAttribute(dn)}};return{resolveStartForElement:(d,f=0)=>T(d,Math.max(0,f)),resolveDurationForElement:d=>_(d),resolveMediaStartForElement:d=>{let f=U(d);return mn({...f,ordinaryStart:()=>T(d,f.hostStart)})},resolveHostStartForElement:d=>C(d,0),resolveHostSlotsForElement:d=>{let f=[];for(let g=d.parentElement;g;g=g.parentElement){if(!b(g)||S(g)||lt(g)<=0)continue;let R=T(g,0),M=c(g);f.push({start:R,end:M?R+M:1/0})}return f},isRootGlobalMediaStartForElement:d=>P(d)&&pn(U(d))}}function bn(){return{capturedTimeline:null,isPlaying:!1,currentTime:0,deterministicAdapters:[],canonicalFps:30,bridgeMuted:!1,bridgeVolume:1,mediaOutputMuted:!1,nativeMediaSyncDisabled:!1,webAudioMediaDisabled:!1,mediaAutoplayBlockedPosted:!1,mediaForceSyncNextTick:!1,playbackRate:1,bridgeLastPostedFrame:-1,bridgeLastPostedAt:0,bridgeLastPostedPlaying:!1,bridgeLastPostedMuted:!1,bridgeMaxPostIntervalMs:80,controlBridgeHandler:null,beforeUnloadHandler:null,injectedCompStyles:[],injectedCompScripts:[],injectedCompLinks:[],cachedTimedMediaEls:[],cachedMediaClips:[],cachedVideoClips:[],cachedMediaTimelineDurationSeconds:0,tornDown:!1,transportClock:null,transportRafId:null}}var gn=7200,ut=1/60,de=t=>t!==null&&t>ut?t:null;function dr(t){return{width:Se(t.getAttribute("data-width")),height:Se(t.getAttribute("data-height"))}}function cr(t,e){let n=null;for(let i of t.querySelectorAll("video[data-start], audio[data-start]")){let r=e.mediaStart(i);if(!Number.isFinite(r))continue;let o=e.mediaDuration(i);if(o==null||o<=ut)continue;let a=Math.max(0,r)+o;(!n||a>n.seconds)&&(n={seconds:a,element:i})}return n&&de(n.seconds)!==null?n:null}function mr(t,e){return cr(t,e)?.seconds??null}function pr(t,e){let n=[];for(let r of t.querySelectorAll("[data-composition-id][data-start]")){if(r.parentElement?.closest("[data-composition-id]")!==t)continue;let o=e.resolveStartForElement(r,0),a=e.resolveDurationForElement(r);!Number.isFinite(o)||a==null||a<=0||n.push(Math.max(0,o)+a)}let i=V(t.getAttribute("data-duration"));return de(qe({authoredDurationSeconds:null,clipEndsSeconds:[i,...n]}).seconds)}var hr=t=>t.hasAttribute("data-composition-id")||t.hasAttribute("data-composition-src");function fr(t,e,{unregisteredLottie:n}){let i=[];for(let o of t.querySelectorAll("[data-start]")){let a=e.resolveStartForElement(o,0);if(!Number.isFinite(a))continue;let s=e.resolveDurationForElement(o);s!=null?i.push(Math.max(0,a)+s):(P(o)||hr(o))&&i.push(null)}(n||t.querySelector("[data-lottie-src]"))&&i.push(null);let r=qe({authoredDurationSeconds:null,clipEndsSeconds:i});return r.pendingClips>0?{...r,seconds:null,source:"unresolved",reason:"a clip's length is pending"}:r}function br(t){return gr(t).seconds}function gr(t){if(t.declared!==null&&Number.isFinite(t.declared)&&t.declared>0)return{seconds:t.declared,from:"declared",floorIndex:null};let e=de(t.timeline()),n=t.floors().map(h=>h??0),i=Math.max(0,...n),r=Number.isFinite(t.fallback)&&t.fallback>ut?t.fallback:0,o=Math.max(i,r),s=e!==null&&e>=gn&&de(o)!==null?null:e,l=i>=r,u=h=>({seconds:h,from:l?"floor":"fallback",floorIndex:l?n.indexOf(i):null});if(s!==null)return s>=o?{seconds:s,from:"timeline",floorIndex:null}:u(o);if(de(i)!==null)return u(o);if(r>0)return{seconds:r,from:"fallback",floorIndex:null};let c=t.derived();return{seconds:c>0?c:0,from:"derived",floorIndex:null}}function _n(t){let e=ee(t);if(!e)return null;let n=ue({timelineRegistry:{},includeAuthoredTimingAttrs:!0,documentRef:t}),i=br({declared:V(e.getAttribute("data-duration")),timeline:()=>null,floors:()=>[mr(t,{mediaStart:n.resolveMediaStartForElement,mediaDuration:at}),pr(e,n)],fallback:0,derived:()=>fr(e,n,{unregisteredLottie:!1}).seconds??0});return{...dr(e),fps:bn().canonicalFps,durationSeconds:i}}function Ie(t){return t+1e-5}function yn(){let{userAgent:t,maxTouchPoints:e}=navigator;return/iP(hone|ad|od)/.test(t)||/Macintosh/.test(t)&&e>1}function De(){let{userAgent:t}=navigator;return/AppleWebKit/.test(t)&&!/Chrom(e|ium)\/|Edg\/|Android/.test(t)}var _r="hyperframes-studio-preview";var dt="data-hf-player-frame";function yr(t){return De()&&t.defaultView?.frameElement?.hasAttribute(dt)===!0}function vn(t){return t.querySelector(`meta[name="${_r}"]`)!==null||yr(t)}var An="__hfPreviewErrors";function Sn(t){return t.hasRuntime||t.runtimeInjected?!1:!!(t.hasNestedCompositions||t.hasTimelines&&t.attempts>=5)}function j(t){return typeof t=="object"&&t!==null}function En(t){return j(t)&&typeof t.getDuration=="function"}function Tn(t){return j(t)&&typeof t.duration=="function"&&typeof t.time=="function"&&typeof t.seek=="function"&&typeof t.play=="function"&&typeof t.pause=="function"}var q="https://cdn.jsdelivr.net/npm/@hyperframes/core@0.9.11/dist/hyperframe.runtime.iife.js";function ce(t){if(t===null)return null;let e=Number.parseInt(t,10);return Number.isFinite(e)&&e>0?e:null}function vr(t){let e=t?.querySelector("[data-composition-id][data-width][data-height]")??t?.querySelector("[data-width][data-height]");if(!e)return null;let n=ce(e.getAttribute("data-width")),i=ce(e.getAttribute("data-height"));return n!==null&&i!==null?{width:n,height:i}:null}function Ar(t){return Array.isArray(t)?t.find(e=>typeof e=="string"&&e.trim()!==""&&e!=="[object Event]")??null:null}var Pe=class{constructor(e,n){this._iframe=e;this._callbacks=n}_iframe;_callbacks;_interval=null;_runtimeInjected=!1;_runtimeScript=null;_failure=null;get failed(){return this._failure!==null&&this._failure.document===this._iframe.contentDocument}get runtimeInjected(){return this._runtimeInjected}start(){this.stop(),this._failure=null,this._runtimeInjected=!1;let e=0;this._interval=setInterval(()=>{e++;let n=null;try{n=this._poll(e)}catch(i){i instanceof DOMException&&i.name==="SecurityError"||(n={kind:"error",message:i instanceof Error?i.message:String(i)})}n??=this._deadlineOutcome(e),n&&(this.stop(),n.kind==="error"?(this._failure={document:this._iframe.contentDocument},this._callbacks.onError(n.message)):this._callbacks.onReady(n.result))},200)}_deadlineOutcome(e){return e<40||this._callbacks.hostOwnsDeadline?.()?null:{kind:"error",message:"Composition timeline not found after 8s"}}_poll(e){let n=this._iframe.contentWindow;if(!n)return null;let i=Ar(Reflect.get(n,An));if(i!==null)return{kind:"error",message:i};let r=this._iframe.contentDocument,o=Reflect.get(n,"__timelines"),a=this.hasRuntimeBridge(n);if(Sn({hasRuntime:a,hasTimelines:j(o)&&Object.keys(o).length>0,hasNestedCompositions:!!r?.querySelector("[data-composition-src]"),runtimeInjected:this._runtimeInjected,attempts:e}))return this._injectRuntime(),null;if(this._runtimeInjected&&!a)return null;let s=this._resolveReadyResult(n,r);return s?{kind:"ready",result:s}:null}_resolveReadyResult(e,n){let i=this._resolvePlaybackDurationAdapter(e)??{kind:"document",getDuration:()=>0},r=i.getDuration();if(!Number.isFinite(r)||r<=0){if(i.kind==="direct-timeline")return null;r=n?_n(n)?.durationSeconds??0:0}return r<=0?null:{duration:r,adapter:{...i,getDuration:()=>r},compositionSize:vr(n)}}stop(){this._runtimeScript&&(this._runtimeScript.onerror=null,this._runtimeScript=null),this.failed||(this._failure=null),this._interval!==null&&(clearInterval(this._interval),this._interval=null)}resolveDirectTimelineAdapter(){try{let e=this._iframe.contentWindow;return e?this._resolveDirectTimelineAdapterFromWindow(e):null}catch{return null}}resolveDirectTimelineAdapterFromWindow(e){return this._resolveDirectTimelineAdapterFromWindow(e)}hasRuntimeBridge(e){return j(Reflect.get(e,"__player"))}_injectRuntime(){this._runtimeInjected=!0;try{let e=this._iframe.contentDocument;if(!e)return;let n=e.createElement("script");n.src=this._callbacks.resolveRuntimeUrl?.()??q,this._runtimeScript=n,n.onerror=()=>{this._runtimeScript!==n||this._iframe.contentDocument!==e||(this.stop(),this._failure={document:e},this._callbacks.onError("HyperFrames runtime failed to load from "+n.src))},(e.head||e.documentElement).appendChild(n),this._callbacks.onRuntimeInjected?.()}catch{}}_resolveDirectTimelineAdapterFromWindow(e){if(this.hasRuntimeBridge(e))return null;let n=Reflect.get(e,"__timelines");if(!j(n))return null;let i=Object.keys(n);if(i.length===0)return null;let r=this._iframe.contentDocument?.querySelector("[data-composition-id]")?.getAttribute("data-composition-id"),o=r&&r in n?r:i[i.length-1],a=n[o];return Tn(a)?a:null}_resolvePlaybackDurationAdapter(e){let n=Reflect.get(e,"__player");if(En(n))return{kind:"runtime",getDuration:()=>n.getDuration()};let i=this._resolveDirectTimelineAdapterFromWindow(e);return i?{kind:"direct-timeline",timeline:i,getDuration:()=>i.duration()}:null}};var Rn=`
|
|
2
2
|
:host {
|
|
3
3
|
display: block;
|
|
4
4
|
position: relative;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var HyperframesPlayer=(()=>{var je=Object.defineProperty;var hi=Object.getOwnPropertyDescriptor;var fi=Object.getOwnPropertyNames;var bi=Object.prototype.hasOwnProperty;var gi=(t,e)=>{for(var n in e)je(t,n,{get:e[n],enumerable:!0})},_i=(t,e,n,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of fi(e))!bi.call(t,r)&&r!==n&&je(t,r,{get:()=>e[r],enumerable:!(i=hi(e,r))||i.enumerable});return t};var yi=t=>_i(je({},"__esModule",{value:!0}),t);var _o={};gi(_o,{HyperframesPlayer:()=>ze,SPEED_PRESETS:()=>pt,formatSpeed:()=>W,formatTime:()=>Le});var Ft=t=>t!==null&&Number.isFinite(t)&&t>0;function qe(t){let e=t.clipEndsSeconds.filter(i=>i===null).length;if(Ft(t.authoredDurationSeconds))return{seconds:t.authoredDurationSeconds,source:"authored",pendingClips:e};let n=t.clipEndsSeconds.filter(Ft);return n.length>0?{seconds:Math.max(...n),source:"derived",pendingClips:e}:{seconds:null,source:"unresolved",pendingClips:e,reason:e>0?"every clip's length is still pending":"no authored duration and no clip with a length"}}var vi="http://www.w3.org/1999/xhtml";function Ut(t){return t!=null&&t.nodeType===1}function Ye(t){return Ut(t)&&t.namespaceURI===vi}function Xe(t,e){return Ye(t)&&t.localName===e}function Ai(t){return Xe(t,"video")}function Si(t){return Xe(t,"audio")}function P(t){return Ai(t)||Si(t)}function Ht(t){return Xe(t,"img")}function Se(t){if(t==null||t.trim()==="")return null;let e=Number.parseInt(t,10);return Number.isFinite(e)&&e>0?e:null}function ee(t=document){let e=t.querySelector('[data-composition-id][data-root="true"]');return Ye(e)?e:t.querySelector("[data-composition-id]")}var G=Object.freeze({start:"data-start",duration:"data-duration",trackIndex:"data-track-index",derivedEnd:"data-end",legacyTrack:"data-layer"}),To=Object.freeze([G.start,G.duration,G.trackIndex]),Ro=Object.freeze([G.derivedEnd]),xo=Object.freeze([G.derivedEnd,G.legacyTrack]);function Ke(t){if(t==null||t.trim()==="")return null;let e=Number(t);return Number.isFinite(e)?e:null}var Vt=t=>{let e=Ke(t);return e!==null&&e>=0?e:null};function Ee(t){return Vt(t("data-playback-start"))??Vt(t("data-media-start"))??0}var te=.1,ne=10;function Ze(t){return Number.isFinite(t)&&t>0?Math.max(te,Math.min(ne,t)):1}function Wt(t,e=1){let n=Number.parseFloat(t("data-playback-rate")??"");return Ze(Number.isFinite(n)&&n>0?n:e)}function Je(t){let e=Ke(t("data-duration"));return e!==null&&e>0?e:null}function $t(t,e){let n=Je(t);if(n!==null)return n;let i=Ke(t("data-end"));return i!==null?i-e:null}var Ei=3;function Qe(t,e,n){return Number.isFinite(t)?Math.max(0,t-e)/Ze(n):null}function et(t){let{tag:e,authoredDurationSeconds:n,sourceDurationSeconds:i,mediaStartSeconds:r,playbackRate:o}=t;if(n!==null&&n>0)return{seconds:n,source:"authored"};if(e==="img")return{seconds:Ei,source:"default"};if(i===null)return{seconds:null,source:"pending",reason:"source duration not yet probed"};let a=Qe(i,r,o);return a===null?{seconds:null,source:"pending",reason:"source reported a non-finite duration"}:{seconds:a,source:"media"}}var Ti="data-fx-chain",ko=Ti.slice(5);var ie=(t="frequency",e="Frequency",n=1e3,i=20,r=2e4)=>({kind:"number",key:t,label:e,unit:"Hz",min:i,max:r,step:1,default:n,scale:"log",automatable:!0}),tt=(t=.707,e="Bandwidth: higher is narrower.")=>({kind:"number",key:"q",label:"Q",unit:"",min:.1,max:20,step:.01,default:t,scale:"log",automatable:!0,hint:e}),Te=(t=-40,e=40,n=0)=>({kind:"number",key:"gain",label:"Gain",unit:"dB",min:t,max:e,step:.1,default:n,automatable:!0}),Bt={kind:"enum",key:"poles",label:"Slope",options:[{value:"1",label:"6 dB/oct"},{value:"2",label:"12 dB/oct"}],default:"2",hint:"Two poles is the usual biquad; one pole is gentler."},Gt=[{id:"gain",label:"Gain",group:"dynamics",description:"Raise or lower the whole signal. Automate it to duck under something else.",params:[Te(-60,12,0)],web:"gain-node"},{id:"peaking",label:"Peaking EQ",group:"filter",description:"Boost or cut a band, leaving everything either side alone.",params:[ie("frequency","Frequency",1e3),Te(-40,40,0),tt(1)],web:"biquad-peaking"},{id:"lowshelf",label:"Low Shelf",group:"filter",description:"Lift or drop everything below the corner frequency.",params:[ie("frequency","Frequency",200,20,2e3),Te(-40,40,0)],web:"biquad-lowshelf"},{id:"highshelf",label:"High Shelf",group:"filter",description:"Lift or drop everything above the corner frequency.",params:[ie("frequency","Frequency",4e3,500,2e4),Te(-40,40,0)],web:"biquad-highshelf"},{id:"highpass",label:"High-pass",group:"filter",description:"Remove low frequencies: the usual fix for rumble on a voice.",params:[ie("frequency","Cutoff",300,20,2e4),tt(.707),Bt],web:"biquad-highpass"},{id:"lowpass",label:"Low-pass",group:"filter",description:"Remove high frequencies, which darkens or muffles a track.",params:[ie("frequency","Cutoff",8e3,100,2e4),tt(.707),Bt],web:"biquad-lowpass"},{id:"compressor",label:"Compressor",group:"dynamics",description:"Pull loud parts down so the quiet ones can come up.",params:[{kind:"number",key:"threshold",label:"Threshold",unit:"dB",min:-60,max:0,step:.5,default:-24,hint:"Level above which the compressor starts working."},{kind:"number",key:"ratio",label:"Ratio",unit:":1",min:1,max:20,step:.1,default:4},{kind:"number",key:"attack",label:"Attack",unit:"ms",min:.01,max:2e3,step:.1,default:20,scale:"log"},{kind:"number",key:"release",label:"Release",unit:"ms",min:.01,max:9e3,step:1,default:250,scale:"log"},{kind:"number",key:"knee",label:"Knee",unit:"",min:1,max:8,step:.01,default:2.83,hint:"1 is a hard corner; higher eases into it."},{kind:"number",key:"makeup",label:"Makeup",unit:"dB",min:0,max:36,step:.1,default:0},{kind:"number",key:"mix",label:"Mix",unit:"",min:0,max:1,step:.01,default:1,hint:"Below 1 blends the dry signal back in."}],web:"worklet-compressor"},{id:"limiter",label:"Limiter",group:"dynamics",description:"Peak limiter that follows the signal's level. It has no lookahead, so a fast peak or an inter-sample peak can pass the ceiling; use the true-peak limiter for a delivery limit.",params:[{kind:"number",key:"limit",label:"Ceiling",unit:"dB",min:-24,max:0,step:.1,default:-1},{kind:"number",key:"attack",label:"Attack",unit:"ms",min:.1,max:80,step:.1,default:5},{kind:"number",key:"release",label:"Release",unit:"ms",min:1,max:8e3,step:1,default:50,scale:"log"},{kind:"number",key:"level_out",label:"Output",unit:"dB",min:-24,max:24,step:.1,default:0}],web:"worklet-limiter"},{id:"truepeak",label:"True-peak limiter",group:"dynamics",description:"Lookahead limiter that holds a 4x estimate of the inter-sample peak at a dBTP ceiling; full-band noise can land up to about 1.7 dB above it. Adds lookahead plus about 0.3 ms of latency.",params:[{kind:"number",key:"ceiling",label:"Ceiling",unit:"dBTP",min:-24,max:0,step:.1,default:-1,hint:"Target true peak, measured on a 4x oversampled signal. Dense full-band sound can end up to about 1.7 dB above it."},{kind:"number",key:"lookahead",label:"Lookahead",unit:"ms",min:.5,max:10,step:.1,default:3,hint:"How far ahead the gain starts falling. Longer is smoother and adds the same latency."},{kind:"number",key:"release",label:"Release",unit:"ms",min:10,max:2e3,step:1,default:80,scale:"log"}],web:"worklet-truepeak"},{id:"gate",label:"Noise Gate",group:"dynamics",description:"Silence the track when it drops below the threshold.",params:[{kind:"number",key:"threshold",label:"Threshold",unit:"dB",min:-80,max:0,step:.5,default:-35},{kind:"number",key:"range",label:"Range",unit:"dB",min:-80,max:0,step:.5,default:-24,hint:"How far down the gate pulls when closed."},{kind:"number",key:"ratio",label:"Ratio",unit:":1",min:1,max:20,step:.1,default:10},{kind:"number",key:"attack",label:"Attack",unit:"ms",min:.01,max:9e3,step:.1,default:1,scale:"log"},{kind:"number",key:"release",label:"Release",unit:"ms",min:.01,max:9e3,step:1,default:100,scale:"log"},{kind:"number",key:"knee",label:"Knee",unit:"",min:1,max:8,step:.01,default:2.83}],web:"worklet-gate"},{id:"saturate",label:"Saturation",group:"nonlinear",description:"Soft-clip the waveform for warmth or outright distortion.",params:[{kind:"enum",key:"type",label:"Curve",options:[{value:"tanh",label:"Tanh"},{value:"atan",label:"Arctan"},{value:"cubic",label:"Cubic"},{value:"exp",label:"Exponential"},{value:"alg",label:"Algebraic"},{value:"quintic",label:"Quintic"},{value:"sin",label:"Sine"},{value:"erf",label:"Error function"},{value:"hard",label:"Hard clip"}],default:"tanh"},{kind:"number",key:"threshold",label:"Threshold",unit:"dB",min:-40,max:0,step:.1,default:-6},{kind:"number",key:"output",automatable:!0,label:"Output",unit:"dB",min:-24,max:24,step:.1,default:0},{kind:"number",key:"oversample",label:"Oversample",unit:"x",min:1,max:8,step:1,default:4,hint:"Higher costs more but keeps aliasing down."}],web:"waveshaper"},{id:"bitcrush",label:"Bitcrush",group:"nonlinear",description:"Drop bit depth and sample rate for a lo-fi, digital sound.",params:[{kind:"number",key:"bits",label:"Bit depth",unit:"bit",min:1,max:32,step:.1,default:8},{kind:"number",key:"samples",label:"Sample hold",unit:"x",min:1,max:250,step:1,default:1,hint:"Repeats each sample N times, a crude downsample."},{kind:"number",key:"mix",label:"Mix",unit:"",min:0,max:1,step:.01,default:1}],web:"worklet-bitcrush"},{id:"pitchshift",label:"Pitch shift",group:"time",description:"Shifts pitch up or down without changing playback speed. Adds ~50 ms of latency.",params:[{kind:"number",key:"semitones",label:"Semitones",unit:"st",min:-12,max:12,step:1,default:0},{kind:"number",key:"mix",label:"Mix",unit:"",min:0,max:1,step:.01,default:1}],web:"worklet-pitchshift"},{id:"delay",label:"Delay",group:"time",description:"Repeating echoes behind the dry signal.",params:[{kind:"number",key:"time",automatable:!0,label:"Time",unit:"ms",min:1,max:5e3,step:1,default:250,scale:"log"},{kind:"number",key:"feedback",automatable:!0,label:"Feedback",unit:"",min:.01,max:.95,step:.01,default:.35},{kind:"number",key:"mix",automatable:!0,label:"Mix",unit:"",min:0,max:1,step:.01,default:.4}],web:"delay-feedback"},{id:"chorus",label:"Chorus",group:"time",description:"Detuned copies of the signal for width and thickness.",params:[{kind:"number",key:"delay",automatable:!0,label:"Delay",unit:"ms",min:1,max:100,step:.1,default:7},{kind:"number",key:"depth",automatable:!0,label:"Depth",unit:"ms",min:0,max:10,step:.01,default:2},{kind:"number",key:"speed",automatable:!0,label:"Rate",unit:"Hz",min:.01,max:10,step:.01,default:1},{kind:"number",key:"mix",automatable:!0,label:"Mix",unit:"",min:0,max:1,step:.01,default:.5}],web:"chorus-lfo"},{id:"phaser",label:"Phaser",group:"time",description:"Sweeping notches moving through the spectrum.",params:[{kind:"number",key:"in_gain",automatable:!0,label:"Input",unit:"",min:0,max:1,step:.01,default:.4},{kind:"number",key:"out_gain",automatable:!0,label:"Output",unit:"",min:0,max:2,step:.01,default:.74},{kind:"number",key:"delay",label:"Delay",unit:"ms",min:.1,max:5,step:.1,default:3},{kind:"number",key:"decay",label:"Decay",unit:"",min:0,max:.99,step:.01,default:.4},{kind:"number",key:"speed",automatable:!0,label:"Rate",unit:"Hz",min:.1,max:2,step:.01,default:.5},{kind:"enum",key:"type",label:"Waveform",options:[{value:"0",label:"Triangular"},{value:"1",label:"Sinusoidal"}],default:"0"}],web:"allpass-phaser"},{id:"reverb",label:"Reverb",group:"time",description:"Room tail. Both ends convolve the same generated impulse, so preview matches render.",params:[{kind:"number",key:"size",label:"Room size",unit:"",min:.05,max:1,step:.01,default:.7},{kind:"number",key:"damping",label:"Damping",unit:"",min:0,max:1,step:.01,default:.5,hint:"Higher rolls the top off the tail faster."},{kind:"number",key:"wet",automatable:!0,label:"Wet",unit:"",min:0,max:1,step:.01,default:.35},{kind:"number",key:"dry",automatable:!0,label:"Dry",unit:"",min:0,max:1,step:.01,default:.7}],web:"convolver"}],Mo=new Map(Gt.map(t=>[t.id,t]));var Co=Gt.map(t=>t.id);function Ri(t){return 10**(t/20)}var zt=Ri(12);var jt="data-automation",Wo=jt.slice(5),nt=1,xi=512,L=class extends Error{constructor(e){super(e),this.name="AudioAutomationError"}},Re="volume",xe="rate";function qt(t){if(t===Re)return{kind:"volume"};if(t===xe)return{kind:"rate"};let e=t.split(".");if(e.length===3&&e[0]==="fx"&&e[1]===wi){let r=e[2];return r?{kind:"preset",presetId:r}:null}if(e.length!==3||e[0]!=="fx")return null;let[,n,i]=e;return!n||!i?null:{kind:"fx",nodeId:n,param:i}}var wi="preset";var ki={min:0,max:zt,step:.01,unit:"",label:"Volume",scale:"linear",default:1};var Mi={min:te,max:ne,step:.05,unit:"x",label:"Speed",scale:"log",default:1};function re(t){if(typeof t=="number")return Number.isFinite(t)?t:null;if(typeof t=="string"&&t.trim()!==""){let e=Number(t);return Number.isFinite(e)?e:null}return null}function Ci(t){let e=re(t);return e===null||e===0?0:Math.min(1,Math.max(-1,e))}function Yt(t,e){let n=re(t),i=re(e);if(n===null||i===null)return null;let r=s=>Math.min(.999,Math.max(.001,s)),o=r(n),a=r(i);return Math.abs(o-a)<1e-6?null:{x:o,y:a}}function Ii(t){let e=Ci(t?.curve),n=Yt(t?.viaX,t?.viaY);return{...e?{curve:e}:{},...n?{viaX:n.x,viaY:n.y}:{}}}function Di(t,e){let n=re(t?.t),i=re(t?.v);if(n===null||i===null)return null;let r=e?Math.min(e.max,Math.max(e.min,i)):i;return{t:Math.max(0,n),v:r,...Ii(t)}}function Pi(t,e){let n=t.map(r=>Di(r,e)).filter(r=>r!==null).sort((r,o)=>r.t-o.t),i=[];for(let r of n)i.length>0&&i[i.length-1].t===r.t?i[i.length-1]=r:i.push(r);return i.slice(0,xi)}function Li(t){let e=[];for(let n of t.lanes){if(!qt(n.target))continue;let i=n.target===Re?ki:n.target===xe?Mi:null,r=Pi(n.points??[],i);r.length>0&&e.push({target:n.target,points:r})}return{version:nt,lanes:e}}function Xt(t){let e;try{e=JSON.parse(t)}catch(r){throw new L(`Automation is not valid JSON: ${r.message}`)}if(typeof e!="object"||e===null)throw new L("Automation must be a JSON object.");let n=e;if(n.version!==nt)throw new L(`Unsupported automation version: ${String(n.version)}`);if(!Array.isArray(n.lanes))throw new L("Automation is missing a `lanes` array.");let i=n.lanes.map((r,o)=>{if(typeof r!="object"||r===null)throw new L(`Lane ${o} is not an object.`);let a=r;if(typeof a.target!="string"||!qt(a.target))throw new L(`Lane ${o} has an unreadable target: ${String(a.target)}`);if(!Array.isArray(a.points))throw new L(`Lane ${o} is missing a \`points\` array.`);return{target:a.target,points:a.points}});return Li({version:nt,lanes:i})}function Ni(t,e){return e?Math.pow(t,Math.pow(2,2*e)):t}function Oi(t,e){let n=t-.5,i=e-.5,r=.999,o=1e6,a=n>0?n/(r-t):n<0?-n/(t-(1-r)):0,s=i>0?i/(r-e):i<0?-i/(e-(1-r)):0,l=Math.min(o,Math.max(1,a,s));return{cx:t+n/l,cy:e+i/l,w:l}}function Fi(t,e,n){let{cx:i,cy:r,w:o}=Oi(e,n),a=2-2*o,s=t*a-1+2*o*i,l=-t*a-2*o*i,u=Ui(s,l,t),c=1-u,h=c*c+2*o*u*c+u*u;return h>0?(2*o*r*u*c+u*u)/h:t}function Ui(t,e,n){if(Math.abs(t)<1e-12)return Math.abs(e)<1e-12?n:-n/e;let i=Math.sqrt(Math.max(0,e*e-4*t*n)),r=(-e+i)/(2*t),o=(-e-i)/(2*t),a=s=>s>=-1e-9&&s<=1+1e-9;return a(r)?Math.min(1,Math.max(0,r)):a(o)?Math.min(1,Math.max(0,o)):n}function Hi(t,e){let n=Yt(e.viaX,e.viaY);return n?Fi(Math.min(1,Math.max(0,t)),n.x,n.y):Ni(t,e.curve)}function Vi(t,e,n,i){return i==="log"&&t>0&&e>0?Math.exp(Math.log(t)+(Math.log(e)-Math.log(t))*n):t+(e-t)*n}function we(t,e,n="linear"){let i=t.points;if(i.length===0)return 0;let r=i[0];if(e<=r.t)return r.v;let o=i[i.length-1];if(e>=o.t)return o.v;let a=0,s=i.length-1;for(;s-a>1;){let h=a+s>>1;i[h].t<=e?a=h:s=h}let l=i[a],u=i[s],c=u.t-l.t;return c<=0?u.v:Vi(l.v,u.v,Hi((e-l.t)/c,l),n)}var ke=new Map,Wi=64;function Kt(t,e=Re){let n=`${e}\0${t}`,i=ke.get(n);if(i!==void 0)return i;let r=null;try{r=Xt(t).lanes.find(o=>o.target===e)??null}catch{r=null}return ke.size>Wi&&ke.clear(),ke.set(n,r),r}var Zt=48,Jt=new WeakMap;function $i(t){let e=t.points,n=e[0].v,i=e[e.length-1].v,r=[0],o=[0],a=l=>{let u=r[r.length-1];if(l<=u)return;let c=we(t,u,"log");r.push(l),o.push(o[o.length-1]+(c+we(t,l,"log"))/2*(l-u))},s=Math.max(0,e[0].t);a(s);for(let l=1;l<e.length;l+=1){let u=e[l-1].t,c=e[l].t;if(!(c<=0))for(let h=1;h<=Zt;h+=1)a(Math.max(u,0)+(c-u)*h/Zt)}return{ts:Float64Array.from(r),ss:Float64Array.from(o),firstRate:n,lastRate:i}}function Bi(t){let e=Jt.get(t);return e||(e=$i(t),Jt.set(t,e)),e}function Gi(t){return typeof t!="number"&&t.points.length>0}function zi(t,e,n){let i=0,r=t.length-1;for(;r-i>1;){let o=i+r>>1;t[o]<=n?i=o:r=o}return e[i]+(e[r]-e[i])*(n-t[i])/(t[r]-t[i])}function Qt(t,e){if(typeof t=="number")return e/t;if(!Gi(t))return e;let{ts:n,ss:i,firstRate:r,lastRate:o}=Bi(t),a=n.length-1;return e<=0?e/r:e>=i[a]?n[a]+(e-i[a])/o:zi(i,n,e)}function ji(t){return t?Kt(t,xe):null}function en(t,e){return ji(t)??e}var Yo=[{id:"montage",label:"Montage",points:[[0,.9],[.15,.3],[.5,2.5],[.85,.3],[1,.9]]},{id:"hero",label:"Hero",points:[[0,1],[.25,1.6],[.5,.25],[.75,1.6],[1,1]]},{id:"bullet",label:"Bullet",points:[[0,3],[.4,3],[.5,.15],[.6,3],[1,3]]},{id:"jump-cut",label:"Jump cut",points:[[0,.5],[.24,.5],[.26,3],[.5,3],[.52,.5],[.74,.5],[.76,3],[1,3]]},{id:"flash-in",label:"Flash in",points:[[0,.3],[.6,.6],[1,5]]},{id:"flash-out",label:"Flash out",points:[[0,5],[.4,.6],[1,.3]]},{id:"ramp-in",label:"Ramp in",points:[[0,.5],[1,1]]},{id:"ramp-out",label:"Ramp out",points:[[0,1],[1,.5]]},{id:"slowmo-middle",label:"Slow-mo middle",points:[[0,1],[1/3,.35],[2/3,.35],[1,1]]}];var y=Object.freeze({start:"data-start",duration:"data-duration",trackIndex:"data-track-index",derivedEnd:"data-end",legacyTrack:"data-layer"}),Ko=Object.freeze([y.start,y.duration,y.trackIndex]),Zo=Object.freeze([y.derivedEnd]),Jo=Object.freeze([y.derivedEnd,y.legacyTrack]);function N(t){if(t==null||t.trim()==="")return null;let e=Number(t);return Number.isFinite(e)?e:null}var rn=/^[A-Za-z0-9_.:-]+$/;function on(t,e){let n=t.charCodeAt(e);return n>=48&&n<=57}function tn(t,e){let n=e;for(;n>=0&&on(t,n);)n--;return n}function qi(t,e){let n=e;for(;n>=0&&(t[n]??"").trim()==="";)n--;return n}function Yi(t){let e=t.length-1;if(!on(t,e))return null;let n=tn(t,e);return t[n]==="."&&(n=tn(t,n-1)),n+1}function Xi(t){let e=Yi(t);if(e==null)return null;let n=qi(t,e-1),i=t[n];if(i!=="+"&&i!=="-")return null;let r=t.slice(0,n).trim();if(!rn.test(r))return null;let o=Number(t.slice(e));return Number.isFinite(o)?{refId:r,operator:i,magnitude:o}:null}function oe(t){let e=(t??"").trim();if(!e)return null;let n=N(e);if(n!=null)return{kind:"absolute",value:n};if(rn.test(e))return{kind:"reference",refId:e,offset:0};let i=Xi(e);return i?{kind:"reference",refId:i.refId,offset:i.operator==="-"?-i.magnitude:i.magnitude}:null}function x(t,e,n,i){t.push({code:e,attribute:n,value:i})}function Ki(t,e,n,i){if(e==null||e.trim()==="")return n.defaultStart===void 0?0:n.defaultStart;if(!t)return x(i,"invalid-start",y.start,e),null;if(t.kind==="absolute")return Math.max(0,t.value);let r=n.resolveReferenceEnd?.(t.refId);return r==null||!Number.isFinite(r)?(x(i,"unresolved-start-reference",y.start,e),null):Math.max(0,r+t.offset)}var Zi=1e-9;function Ji(t,e){return Math.abs(t-e)<=Zi}function Qi(t,e,n){let i=N(t);if(i==null){x(n,"deprecated-end",y.derivedEnd,t),x(n,"invalid-end",y.derivedEnd,t);return}if(e==null){x(n,"deprecated-end",y.derivedEnd,t);return}Ji(i,e)||(x(n,"deprecated-end",y.derivedEnd,t),x(n,"conflicting-end",y.derivedEnd,t))}function er(t,e,n){let i=N(t);return i==null||i<0?(x(n,"invalid-duration",y.duration,t),{duration:null,end:null,durationSource:"invalid"}):{duration:i,end:e==null?null:e+i,durationSource:"duration"}}function tr(t,e,n){x(n,"deprecated-end",y.derivedEnd,t);let i=N(t);return i==null?(x(n,"invalid-end",y.derivedEnd,t),{duration:null,end:null,durationSource:"invalid"}):e==null?{duration:null,end:i,durationSource:"legacy-end"}:i<e?(x(n,"end-before-start",y.derivedEnd,t),{duration:null,end:null,durationSource:"invalid"}):{duration:i-e,end:i,durationSource:"legacy-end"}}function nr(t,e,n){let i=t.getAttribute(y.duration),r=t.getAttribute(y.derivedEnd);if(i==null)return r==null?{duration:null,end:null,durationSource:"missing"}:tr(r,e,n);let o=er(i,e,n);return r!=null&&Qi(r,o.end,n),o}function nn(t,e,n,i){let r=N(t);return r==null||!Number.isInteger(r)?(x(i,"invalid-track-index",e,t),{trackIndex:0,trackSource:"invalid"}):{trackIndex:r,trackSource:n}}function ir(t,e){let n=t.getAttribute(y.trackIndex),i=t.getAttribute(y.legacyTrack);if(n==null&&i==null)return{trackIndex:0,trackSource:"default"};if(n==null&&i!=null)return x(e,"deprecated-layer",y.legacyTrack,i),nn(i,y.legacyTrack,"legacy-layer",e);let r=nn(n??"",y.trackIndex,"track-index",e);if(i==null)return r;x(e,"deprecated-layer",y.legacyTrack,i);let o=N(i);return o!=null&&o!==r.trackIndex&&x(e,"conflicting-layer",y.legacyTrack,i),r}function it(t,e={}){let n=[],i=t.getAttribute(y.start),r=oe(i),o=Ki(r,i,e,n),a=nr(t,o,n),s=ir(t,n);return{startExpression:r,start:o,...a,...s,diagnostics:n}}function V(t){return N(t)}function rt(t){return Wt(e=>t.getAttribute(e),P(t)?t.defaultPlaybackRate:1)}function rr(t){return en(t.getAttribute("data-automation"),rt(t))}function ot(t){return Ee(e=>t.getAttribute(e))}function ae(t,e){return or(e,ot(t),rr(t))}function at(t){let e=et({tag:"video",authoredDurationSeconds:Je(n=>t.getAttribute(n)),sourceDurationSeconds:Number.isFinite(t.duration)?t.duration:null,mediaStartSeconds:ot(t),playbackRate:rt(t)});return e.source==="media"?ae(t,t.duration):e.seconds}function Me(t,e=0){return!Ht(t)||!t.hasAttribute("data-start")&&!t.hasAttribute("data-track-index")?null:et({tag:"img",authoredDurationSeconds:$t(n=>t.getAttribute(n),e),sourceDurationSeconds:null,mediaStartSeconds:0,playbackRate:1}).seconds}function or(t,e,n){return typeof n=="number"?Qe(t,e,n):Number.isFinite(t)?Qt(n,Math.max(0,t-e)):null}function an(){return globalThis}function st(t,e){if(typeof window>"u")return;let n=an(),i=n.__hf?.onSwallowed;if(i)try{i({label:t,error:e})}catch(r){}(n.__hfDebug||n.__HYPERFRAMES_DEBUG)&&console.debug(`[hyperframes] ${t} swallowed:`,e)}var ar=t=>t.paused?.()===!0?(t.startTime?.()??0)+(t.totalDuration?.()??0)/Math.abs(t.timeScale?.()||1):0;function se(t){try{if(typeof t?.duration!="function")return null;let e=t.getChildren?.(!1,!1,!0),n=Array.isArray(e)?e:[],i=Math.max(Number(t.duration()),...n.map(ar));return Number.isFinite(i)?i:null}catch(e){return st("runtime.timelineDuration",e),null}}var sn="data-hf-authored-duration",ln="data-hf-authored-end";function le(t){if(t==null||typeof t=="string"&&t.trim()==="")return null;let e=typeof t=="number"?t:Number(t);return Number.isFinite(e)?e:null}function Ce(t){let e=le(t.start);if(e==null)return null;let n=Math.max(0,e),i=le(t.duration),r=le(t.authoredDuration),o=i!=null&&i>0?i:r!=null&&r>0?r:null;if(o!=null)return{start:n,duration:o,end:n+o};let a=le(t.end),s=le(t.authoredEnd),l=a!=null&&a>n?a:s!=null&&s>n?s:null;return{start:n,duration:l==null?null:l-n,end:l}}var z=Object.freeze({start:"data-start",duration:"data-duration",trackIndex:"data-track-index",derivedEnd:"data-end",legacyTrack:"data-layer"}),pa=Object.freeze([z.start,z.duration,z.trackIndex]),ha=Object.freeze([z.derivedEnd]),fa=Object.freeze([z.derivedEnd,z.legacyTrack]);function sr(t){if(t==null||t.trim()==="")return null;let e=Number(t);return Number.isFinite(e)?e:null}var un=t=>{let e=sr(t);return e!==null&&e>=0?e:null};function lr(t){return un(t("data-playback-start"))??un(t("data-media-start"))??0}var dn="data-hf-media-start-basis";function cn(t){return t?.trim().toLowerCase()==="global"?"global":"local"}function ur(t){return cn(t.basis)==="global"?t.authoredStart:t.hostStart+t.authoredStart}function mn(t){return hn(t)?ur({authoredStart:t.authoredStart,hostStart:t.hostStart,basis:t.basis}):t.ordinaryStart()}function pn(t){return hn(t)&&cn(t.basis)==="global"}function hn(t){return!t.hasAutoStart&&t.authoredStart!=null&&t.hostStart!==0}function lt(t){return lr(e=>t.getAttribute(e))}function fn(t,e){return t-lt(e)}function ue(t){let e=t.timelineRegistry??{},n=t.includeAuthoredTimingAttrs??!1,i=t.documentRef??document,r=new WeakMap,o=new WeakMap,a=new Set,s=d=>(d.hasAttribute("data-composition-id")?d.parentElement:d)?.closest("[data-composition-id]")??null,l=(d,f)=>{let g=s(f);if(g){for(let M of g.querySelectorAll(`[id="${d}"]`))if(s(M)===g)return M}let R=i.getElementById(d);return R||(Array.from(i.querySelectorAll("[data-composition-id]")).find(M=>M.getAttribute("data-composition-id")===d)??null)},u=(d,f)=>n?d.getAttribute(f):null,c=d=>Ce({start:0,duration:d.getAttribute("data-duration"),authoredDuration:u(d,"data-hf-authored-duration")})?.duration??Ce({start:T(d,0),end:d.getAttribute("data-end"),authoredEnd:u(d,"data-hf-authored-end")})?.duration??null,h=d=>d!=null&&Number.isFinite(d)&&d>0?d:null,v=d=>{let f=d.getAttribute("data-composition-id");return f?h(se(e[f])):null},_=d=>{let f=o.get(d);if(f!==void 0)return f;let g=c(d)??h(P(d)?ae(d,d.duration):null)??h(Me(d))??v(d);return o.set(d,g),g},A="[data-composition-src], [data-composition-id], [data-composition-file]",b=d=>d.matches(A),S=d=>!d.hasAttribute("data-composition-id")||oe(d.getAttribute("data-start"))?null:d.parentElement?.closest(`[data-start], ${A}`)??null,k=(d,f)=>fn(T(d,f),S(d)??d),C=(d,f)=>{let g=d.hasAttribute("data-composition-id")?d.parentElement?.closest("[data-composition-id]"):d.closest("[data-composition-id]");return g?k(g,f):0},I=(d,f)=>{let g=oe(d.getAttribute("data-start"));if(!g){let H=S(d);return H?T(H,f):f}if(g.kind==="absolute")return C(d,f)+Math.max(0,g.value);let R=l(g.refId,d);if(!R)return f;let M=T(R,0),ve=_(R)??0,Ae=Math.min(0,C(d,0));return Math.max(Ae,M+ve+g.offset)},T=(d,f)=>{let g=r.get(d);if(g!==void 0)return g??f;if(a.has(d))return f;a.add(d);try{let R=I(d,f);return r.set(d,R),R}finally{a.delete(d)}},U=d=>{let f=d.closest("[data-composition-id]");return{authoredStart:V(d.getAttribute("data-start")),hostStart:f?k(f,0):0,hasAutoStart:d.hasAttribute("data-hf-auto-start"),basis:d.getAttribute(dn)}};return{resolveStartForElement:(d,f=0)=>T(d,Math.max(0,f)),resolveDurationForElement:d=>_(d),resolveMediaStartForElement:d=>{let f=U(d);return mn({...f,ordinaryStart:()=>T(d,f.hostStart)})},resolveHostStartForElement:d=>C(d,0),resolveHostSlotsForElement:d=>{let f=[];for(let g=d.parentElement;g;g=g.parentElement){if(!b(g)||S(g)||lt(g)<=0)continue;let R=T(g,0),M=c(g);f.push({start:R,end:M?R+M:1/0})}return f},isRootGlobalMediaStartForElement:d=>P(d)&&pn(U(d))}}function bn(){return{capturedTimeline:null,isPlaying:!1,currentTime:0,deterministicAdapters:[],canonicalFps:30,bridgeMuted:!1,bridgeVolume:1,mediaOutputMuted:!1,nativeMediaSyncDisabled:!1,webAudioMediaDisabled:!1,mediaAutoplayBlockedPosted:!1,mediaForceSyncNextTick:!1,playbackRate:1,bridgeLastPostedFrame:-1,bridgeLastPostedAt:0,bridgeLastPostedPlaying:!1,bridgeLastPostedMuted:!1,bridgeMaxPostIntervalMs:80,controlBridgeHandler:null,beforeUnloadHandler:null,injectedCompStyles:[],injectedCompScripts:[],injectedCompLinks:[],cachedTimedMediaEls:[],cachedMediaClips:[],cachedVideoClips:[],cachedMediaTimelineDurationSeconds:0,tornDown:!1,transportClock:null,transportRafId:null}}var gn=7200,ut=1/60,de=t=>t!==null&&t>ut?t:null;function dr(t){return{width:Se(t.getAttribute("data-width")),height:Se(t.getAttribute("data-height"))}}function cr(t,e){let n=null;for(let i of t.querySelectorAll("video[data-start], audio[data-start]")){let r=e.mediaStart(i);if(!Number.isFinite(r))continue;let o=e.mediaDuration(i);if(o==null||o<=ut)continue;let a=Math.max(0,r)+o;(!n||a>n.seconds)&&(n={seconds:a,element:i})}return n&&de(n.seconds)!==null?n:null}function mr(t,e){return cr(t,e)?.seconds??null}function pr(t,e){let n=[];for(let r of t.querySelectorAll("[data-composition-id][data-start]")){if(r.parentElement?.closest("[data-composition-id]")!==t)continue;let o=e.resolveStartForElement(r,0),a=e.resolveDurationForElement(r);!Number.isFinite(o)||a==null||a<=0||n.push(Math.max(0,o)+a)}let i=V(t.getAttribute("data-duration"));return de(qe({authoredDurationSeconds:null,clipEndsSeconds:[i,...n]}).seconds)}var hr=t=>t.hasAttribute("data-composition-id")||t.hasAttribute("data-composition-src");function fr(t,e,{unregisteredLottie:n}){let i=[];for(let o of t.querySelectorAll("[data-start]")){let a=e.resolveStartForElement(o,0);if(!Number.isFinite(a))continue;let s=e.resolveDurationForElement(o);s!=null?i.push(Math.max(0,a)+s):(P(o)||hr(o))&&i.push(null)}(n||t.querySelector("[data-lottie-src]"))&&i.push(null);let r=qe({authoredDurationSeconds:null,clipEndsSeconds:i});return r.pendingClips>0?{...r,seconds:null,source:"unresolved",reason:"a clip's length is pending"}:r}function br(t){return gr(t).seconds}function gr(t){if(t.declared!==null&&Number.isFinite(t.declared)&&t.declared>0)return{seconds:t.declared,from:"declared",floorIndex:null};let e=de(t.timeline()),n=t.floors().map(h=>h??0),i=Math.max(0,...n),r=Number.isFinite(t.fallback)&&t.fallback>ut?t.fallback:0,o=Math.max(i,r),s=e!==null&&e>=gn&&de(o)!==null?null:e,l=i>=r,u=h=>({seconds:h,from:l?"floor":"fallback",floorIndex:l?n.indexOf(i):null});if(s!==null)return s>=o?{seconds:s,from:"timeline",floorIndex:null}:u(o);if(de(i)!==null)return u(o);if(r>0)return{seconds:r,from:"fallback",floorIndex:null};let c=t.derived();return{seconds:c>0?c:0,from:"derived",floorIndex:null}}function _n(t){let e=ee(t);if(!e)return null;let n=ue({timelineRegistry:{},includeAuthoredTimingAttrs:!0,documentRef:t}),i=br({declared:V(e.getAttribute("data-duration")),timeline:()=>null,floors:()=>[mr(t,{mediaStart:n.resolveMediaStartForElement,mediaDuration:at}),pr(e,n)],fallback:0,derived:()=>fr(e,n,{unregisteredLottie:!1}).seconds??0});return{...dr(e),fps:bn().canonicalFps,durationSeconds:i}}function Ie(t){return t+1e-5}function yn(){let{userAgent:t,maxTouchPoints:e}=navigator;return/iP(hone|ad|od)/.test(t)||/Macintosh/.test(t)&&e>1}function De(){let{userAgent:t}=navigator;return/AppleWebKit/.test(t)&&!/Chrom(e|ium)\/|Edg\/|Android/.test(t)}var _r="hyperframes-studio-preview";var dt="data-hf-player-frame";function yr(t){return De()&&t.defaultView?.frameElement?.hasAttribute(dt)===!0}function vn(t){return t.querySelector(`meta[name="${_r}"]`)!==null||yr(t)}var An="__hfPreviewErrors";function Sn(t){return t.hasRuntime||t.runtimeInjected?!1:!!(t.hasNestedCompositions||t.hasTimelines&&t.attempts>=5)}function j(t){return typeof t=="object"&&t!==null}function En(t){return j(t)&&typeof t.getDuration=="function"}function Tn(t){return j(t)&&typeof t.duration=="function"&&typeof t.time=="function"&&typeof t.seek=="function"&&typeof t.play=="function"&&typeof t.pause=="function"}var q="https://cdn.jsdelivr.net/npm/@hyperframes/core@0.9.9/dist/hyperframe.runtime.iife.js";function ce(t){if(t===null)return null;let e=Number.parseInt(t,10);return Number.isFinite(e)&&e>0?e:null}function vr(t){let e=t?.querySelector("[data-composition-id][data-width][data-height]")??t?.querySelector("[data-width][data-height]");if(!e)return null;let n=ce(e.getAttribute("data-width")),i=ce(e.getAttribute("data-height"));return n!==null&&i!==null?{width:n,height:i}:null}function Ar(t){return Array.isArray(t)?t.find(e=>typeof e=="string"&&e.trim()!==""&&e!=="[object Event]")??null:null}var Pe=class{constructor(e,n){this._iframe=e;this._callbacks=n}_iframe;_callbacks;_interval=null;_runtimeInjected=!1;_runtimeScript=null;_failure=null;get failed(){return this._failure!==null&&this._failure.document===this._iframe.contentDocument}get runtimeInjected(){return this._runtimeInjected}start(){this.stop(),this._failure=null,this._runtimeInjected=!1;let e=0;this._interval=setInterval(()=>{e++;let n=null;try{n=this._poll(e)}catch(i){i instanceof DOMException&&i.name==="SecurityError"||(n={kind:"error",message:i instanceof Error?i.message:String(i)})}n??=this._deadlineOutcome(e),n&&(this.stop(),n.kind==="error"?(this._failure={document:this._iframe.contentDocument},this._callbacks.onError(n.message)):this._callbacks.onReady(n.result))},200)}_deadlineOutcome(e){return e<40||this._callbacks.hostOwnsDeadline?.()?null:{kind:"error",message:"Composition timeline not found after 8s"}}_poll(e){let n=this._iframe.contentWindow;if(!n)return null;let i=Ar(Reflect.get(n,An));if(i!==null)return{kind:"error",message:i};let r=this._iframe.contentDocument,o=Reflect.get(n,"__timelines"),a=this.hasRuntimeBridge(n);if(Sn({hasRuntime:a,hasTimelines:j(o)&&Object.keys(o).length>0,hasNestedCompositions:!!r?.querySelector("[data-composition-src]"),runtimeInjected:this._runtimeInjected,attempts:e}))return this._injectRuntime(),null;if(this._runtimeInjected&&!a)return null;let s=this._resolveReadyResult(n,r);return s?{kind:"ready",result:s}:null}_resolveReadyResult(e,n){let i=this._resolvePlaybackDurationAdapter(e)??{kind:"document",getDuration:()=>0},r=i.getDuration();if(!Number.isFinite(r)||r<=0){if(i.kind==="direct-timeline")return null;r=n?_n(n)?.durationSeconds??0:0}return r<=0?null:{duration:r,adapter:{...i,getDuration:()=>r},compositionSize:vr(n)}}stop(){this._runtimeScript&&(this._runtimeScript.onerror=null,this._runtimeScript=null),this.failed||(this._failure=null),this._interval!==null&&(clearInterval(this._interval),this._interval=null)}resolveDirectTimelineAdapter(){try{let e=this._iframe.contentWindow;return e?this._resolveDirectTimelineAdapterFromWindow(e):null}catch{return null}}resolveDirectTimelineAdapterFromWindow(e){return this._resolveDirectTimelineAdapterFromWindow(e)}hasRuntimeBridge(e){return j(Reflect.get(e,"__player"))}_injectRuntime(){this._runtimeInjected=!0;try{let e=this._iframe.contentDocument;if(!e)return;let n=e.createElement("script");n.src=this._callbacks.resolveRuntimeUrl?.()??q,this._runtimeScript=n,n.onerror=()=>{this._runtimeScript!==n||this._iframe.contentDocument!==e||(this.stop(),this._failure={document:e},this._callbacks.onError("HyperFrames runtime failed to load from "+n.src))},(e.head||e.documentElement).appendChild(n),this._callbacks.onRuntimeInjected?.()}catch{}}_resolveDirectTimelineAdapterFromWindow(e){if(this.hasRuntimeBridge(e))return null;let n=Reflect.get(e,"__timelines");if(!j(n))return null;let i=Object.keys(n);if(i.length===0)return null;let r=this._iframe.contentDocument?.querySelector("[data-composition-id]")?.getAttribute("data-composition-id"),o=r&&r in n?r:i[i.length-1],a=n[o];return Tn(a)?a:null}_resolvePlaybackDurationAdapter(e){let n=Reflect.get(e,"__player");if(En(n))return{kind:"runtime",getDuration:()=>n.getDuration()};let i=this._resolveDirectTimelineAdapterFromWindow(e);return i?{kind:"direct-timeline",timeline:i,getDuration:()=>i.duration()}:null}};var Rn=`
|
|
1
|
+
"use strict";var HyperframesPlayer=(()=>{var je=Object.defineProperty;var hi=Object.getOwnPropertyDescriptor;var fi=Object.getOwnPropertyNames;var bi=Object.prototype.hasOwnProperty;var gi=(t,e)=>{for(var n in e)je(t,n,{get:e[n],enumerable:!0})},_i=(t,e,n,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of fi(e))!bi.call(t,r)&&r!==n&&je(t,r,{get:()=>e[r],enumerable:!(i=hi(e,r))||i.enumerable});return t};var yi=t=>_i(je({},"__esModule",{value:!0}),t);var _o={};gi(_o,{HyperframesPlayer:()=>ze,SPEED_PRESETS:()=>pt,formatSpeed:()=>W,formatTime:()=>Le});var Ft=t=>t!==null&&Number.isFinite(t)&&t>0;function qe(t){let e=t.clipEndsSeconds.filter(i=>i===null).length;if(Ft(t.authoredDurationSeconds))return{seconds:t.authoredDurationSeconds,source:"authored",pendingClips:e};let n=t.clipEndsSeconds.filter(Ft);return n.length>0?{seconds:Math.max(...n),source:"derived",pendingClips:e}:{seconds:null,source:"unresolved",pendingClips:e,reason:e>0?"every clip's length is still pending":"no authored duration and no clip with a length"}}var vi="http://www.w3.org/1999/xhtml";function Ut(t){return t!=null&&t.nodeType===1}function Ye(t){return Ut(t)&&t.namespaceURI===vi}function Xe(t,e){return Ye(t)&&t.localName===e}function Ai(t){return Xe(t,"video")}function Si(t){return Xe(t,"audio")}function P(t){return Ai(t)||Si(t)}function Ht(t){return Xe(t,"img")}function Se(t){if(t==null||t.trim()==="")return null;let e=Number.parseInt(t,10);return Number.isFinite(e)&&e>0?e:null}function ee(t=document){let e=t.querySelector('[data-composition-id][data-root="true"]');return Ye(e)?e:t.querySelector("[data-composition-id]")}var G=Object.freeze({start:"data-start",duration:"data-duration",trackIndex:"data-track-index",derivedEnd:"data-end",legacyTrack:"data-layer"}),To=Object.freeze([G.start,G.duration,G.trackIndex]),Ro=Object.freeze([G.derivedEnd]),xo=Object.freeze([G.derivedEnd,G.legacyTrack]);function Ke(t){if(t==null||t.trim()==="")return null;let e=Number(t);return Number.isFinite(e)?e:null}var Vt=t=>{let e=Ke(t);return e!==null&&e>=0?e:null};function Ee(t){return Vt(t("data-playback-start"))??Vt(t("data-media-start"))??0}var te=.1,ne=10;function Ze(t){return Number.isFinite(t)&&t>0?Math.max(te,Math.min(ne,t)):1}function Wt(t,e=1){let n=Number.parseFloat(t("data-playback-rate")??"");return Ze(Number.isFinite(n)&&n>0?n:e)}function Je(t){let e=Ke(t("data-duration"));return e!==null&&e>0?e:null}function $t(t,e){let n=Je(t);if(n!==null)return n;let i=Ke(t("data-end"));return i!==null?i-e:null}var Ei=3;function Qe(t,e,n){return Number.isFinite(t)?Math.max(0,t-e)/Ze(n):null}function et(t){let{tag:e,authoredDurationSeconds:n,sourceDurationSeconds:i,mediaStartSeconds:r,playbackRate:o}=t;if(n!==null&&n>0)return{seconds:n,source:"authored"};if(e==="img")return{seconds:Ei,source:"default"};if(i===null)return{seconds:null,source:"pending",reason:"source duration not yet probed"};let a=Qe(i,r,o);return a===null?{seconds:null,source:"pending",reason:"source reported a non-finite duration"}:{seconds:a,source:"media"}}var Ti="data-fx-chain",ko=Ti.slice(5);var ie=(t="frequency",e="Frequency",n=1e3,i=20,r=2e4)=>({kind:"number",key:t,label:e,unit:"Hz",min:i,max:r,step:1,default:n,scale:"log",automatable:!0}),tt=(t=.707,e="Bandwidth: higher is narrower.")=>({kind:"number",key:"q",label:"Q",unit:"",min:.1,max:20,step:.01,default:t,scale:"log",automatable:!0,hint:e}),Te=(t=-40,e=40,n=0)=>({kind:"number",key:"gain",label:"Gain",unit:"dB",min:t,max:e,step:.1,default:n,automatable:!0}),Bt={kind:"enum",key:"poles",label:"Slope",options:[{value:"1",label:"6 dB/oct"},{value:"2",label:"12 dB/oct"}],default:"2",hint:"Two poles is the usual biquad; one pole is gentler."},Gt=[{id:"gain",label:"Gain",group:"dynamics",description:"Raise or lower the whole signal. Automate it to duck under something else.",params:[Te(-60,12,0)],web:"gain-node"},{id:"peaking",label:"Peaking EQ",group:"filter",description:"Boost or cut a band, leaving everything either side alone.",params:[ie("frequency","Frequency",1e3),Te(-40,40,0),tt(1)],web:"biquad-peaking"},{id:"lowshelf",label:"Low Shelf",group:"filter",description:"Lift or drop everything below the corner frequency.",params:[ie("frequency","Frequency",200,20,2e3),Te(-40,40,0)],web:"biquad-lowshelf"},{id:"highshelf",label:"High Shelf",group:"filter",description:"Lift or drop everything above the corner frequency.",params:[ie("frequency","Frequency",4e3,500,2e4),Te(-40,40,0)],web:"biquad-highshelf"},{id:"highpass",label:"High-pass",group:"filter",description:"Remove low frequencies: the usual fix for rumble on a voice.",params:[ie("frequency","Cutoff",300,20,2e4),tt(.707),Bt],web:"biquad-highpass"},{id:"lowpass",label:"Low-pass",group:"filter",description:"Remove high frequencies, which darkens or muffles a track.",params:[ie("frequency","Cutoff",8e3,100,2e4),tt(.707),Bt],web:"biquad-lowpass"},{id:"compressor",label:"Compressor",group:"dynamics",description:"Pull loud parts down so the quiet ones can come up.",params:[{kind:"number",key:"threshold",label:"Threshold",unit:"dB",min:-60,max:0,step:.5,default:-24,hint:"Level above which the compressor starts working."},{kind:"number",key:"ratio",label:"Ratio",unit:":1",min:1,max:20,step:.1,default:4},{kind:"number",key:"attack",label:"Attack",unit:"ms",min:.01,max:2e3,step:.1,default:20,scale:"log"},{kind:"number",key:"release",label:"Release",unit:"ms",min:.01,max:9e3,step:1,default:250,scale:"log"},{kind:"number",key:"knee",label:"Knee",unit:"",min:1,max:8,step:.01,default:2.83,hint:"1 is a hard corner; higher eases into it."},{kind:"number",key:"makeup",label:"Makeup",unit:"dB",min:0,max:36,step:.1,default:0},{kind:"number",key:"mix",label:"Mix",unit:"",min:0,max:1,step:.01,default:1,hint:"Below 1 blends the dry signal back in."}],web:"worklet-compressor"},{id:"limiter",label:"Limiter",group:"dynamics",description:"Peak limiter that follows the signal's level. It has no lookahead, so a fast peak or an inter-sample peak can pass the ceiling; use the true-peak limiter for a delivery limit.",params:[{kind:"number",key:"limit",label:"Ceiling",unit:"dB",min:-24,max:0,step:.1,default:-1},{kind:"number",key:"attack",label:"Attack",unit:"ms",min:.1,max:80,step:.1,default:5},{kind:"number",key:"release",label:"Release",unit:"ms",min:1,max:8e3,step:1,default:50,scale:"log"},{kind:"number",key:"level_out",label:"Output",unit:"dB",min:-24,max:24,step:.1,default:0}],web:"worklet-limiter"},{id:"truepeak",label:"True-peak limiter",group:"dynamics",description:"Lookahead limiter that holds a 4x estimate of the inter-sample peak at a dBTP ceiling; full-band noise can land up to about 1.7 dB above it. Adds lookahead plus about 0.3 ms of latency.",params:[{kind:"number",key:"ceiling",label:"Ceiling",unit:"dBTP",min:-24,max:0,step:.1,default:-1,hint:"Target true peak, measured on a 4x oversampled signal. Dense full-band sound can end up to about 1.7 dB above it."},{kind:"number",key:"lookahead",label:"Lookahead",unit:"ms",min:.5,max:10,step:.1,default:3,hint:"How far ahead the gain starts falling. Longer is smoother and adds the same latency."},{kind:"number",key:"release",label:"Release",unit:"ms",min:10,max:2e3,step:1,default:80,scale:"log"}],web:"worklet-truepeak"},{id:"gate",label:"Noise Gate",group:"dynamics",description:"Silence the track when it drops below the threshold.",params:[{kind:"number",key:"threshold",label:"Threshold",unit:"dB",min:-80,max:0,step:.5,default:-35},{kind:"number",key:"range",label:"Range",unit:"dB",min:-80,max:0,step:.5,default:-24,hint:"How far down the gate pulls when closed."},{kind:"number",key:"ratio",label:"Ratio",unit:":1",min:1,max:20,step:.1,default:10},{kind:"number",key:"attack",label:"Attack",unit:"ms",min:.01,max:9e3,step:.1,default:1,scale:"log"},{kind:"number",key:"release",label:"Release",unit:"ms",min:.01,max:9e3,step:1,default:100,scale:"log"},{kind:"number",key:"knee",label:"Knee",unit:"",min:1,max:8,step:.01,default:2.83}],web:"worklet-gate"},{id:"saturate",label:"Saturation",group:"nonlinear",description:"Soft-clip the waveform for warmth or outright distortion.",params:[{kind:"enum",key:"type",label:"Curve",options:[{value:"tanh",label:"Tanh"},{value:"atan",label:"Arctan"},{value:"cubic",label:"Cubic"},{value:"exp",label:"Exponential"},{value:"alg",label:"Algebraic"},{value:"quintic",label:"Quintic"},{value:"sin",label:"Sine"},{value:"erf",label:"Error function"},{value:"hard",label:"Hard clip"}],default:"tanh"},{kind:"number",key:"threshold",label:"Threshold",unit:"dB",min:-40,max:0,step:.1,default:-6},{kind:"number",key:"output",automatable:!0,label:"Output",unit:"dB",min:-24,max:24,step:.1,default:0},{kind:"number",key:"oversample",label:"Oversample",unit:"x",min:1,max:8,step:1,default:4,hint:"Higher costs more but keeps aliasing down."}],web:"waveshaper"},{id:"bitcrush",label:"Bitcrush",group:"nonlinear",description:"Drop bit depth and sample rate for a lo-fi, digital sound.",params:[{kind:"number",key:"bits",label:"Bit depth",unit:"bit",min:1,max:32,step:.1,default:8},{kind:"number",key:"samples",label:"Sample hold",unit:"x",min:1,max:250,step:1,default:1,hint:"Repeats each sample N times, a crude downsample."},{kind:"number",key:"mix",label:"Mix",unit:"",min:0,max:1,step:.01,default:1}],web:"worklet-bitcrush"},{id:"pitchshift",label:"Pitch shift",group:"time",description:"Shifts pitch up or down without changing playback speed. Adds ~50 ms of latency.",params:[{kind:"number",key:"semitones",label:"Semitones",unit:"st",min:-12,max:12,step:1,default:0},{kind:"number",key:"mix",label:"Mix",unit:"",min:0,max:1,step:.01,default:1}],web:"worklet-pitchshift"},{id:"delay",label:"Delay",group:"time",description:"Repeating echoes behind the dry signal.",params:[{kind:"number",key:"time",automatable:!0,label:"Time",unit:"ms",min:1,max:5e3,step:1,default:250,scale:"log"},{kind:"number",key:"feedback",automatable:!0,label:"Feedback",unit:"",min:.01,max:.95,step:.01,default:.35},{kind:"number",key:"mix",automatable:!0,label:"Mix",unit:"",min:0,max:1,step:.01,default:.4}],web:"delay-feedback"},{id:"chorus",label:"Chorus",group:"time",description:"Detuned copies of the signal for width and thickness.",params:[{kind:"number",key:"delay",automatable:!0,label:"Delay",unit:"ms",min:1,max:100,step:.1,default:7},{kind:"number",key:"depth",automatable:!0,label:"Depth",unit:"ms",min:0,max:10,step:.01,default:2},{kind:"number",key:"speed",automatable:!0,label:"Rate",unit:"Hz",min:.01,max:10,step:.01,default:1},{kind:"number",key:"mix",automatable:!0,label:"Mix",unit:"",min:0,max:1,step:.01,default:.5}],web:"chorus-lfo"},{id:"phaser",label:"Phaser",group:"time",description:"Sweeping notches moving through the spectrum.",params:[{kind:"number",key:"in_gain",automatable:!0,label:"Input",unit:"",min:0,max:1,step:.01,default:.4},{kind:"number",key:"out_gain",automatable:!0,label:"Output",unit:"",min:0,max:2,step:.01,default:.74},{kind:"number",key:"delay",label:"Delay",unit:"ms",min:.1,max:5,step:.1,default:3},{kind:"number",key:"decay",label:"Decay",unit:"",min:0,max:.99,step:.01,default:.4},{kind:"number",key:"speed",automatable:!0,label:"Rate",unit:"Hz",min:.1,max:2,step:.01,default:.5},{kind:"enum",key:"type",label:"Waveform",options:[{value:"0",label:"Triangular"},{value:"1",label:"Sinusoidal"}],default:"0"}],web:"allpass-phaser"},{id:"reverb",label:"Reverb",group:"time",description:"Room tail. Both ends convolve the same generated impulse, so preview matches render.",params:[{kind:"number",key:"size",label:"Room size",unit:"",min:.05,max:1,step:.01,default:.7},{kind:"number",key:"damping",label:"Damping",unit:"",min:0,max:1,step:.01,default:.5,hint:"Higher rolls the top off the tail faster."},{kind:"number",key:"wet",automatable:!0,label:"Wet",unit:"",min:0,max:1,step:.01,default:.35},{kind:"number",key:"dry",automatable:!0,label:"Dry",unit:"",min:0,max:1,step:.01,default:.7}],web:"convolver"}],Mo=new Map(Gt.map(t=>[t.id,t]));var Co=Gt.map(t=>t.id);function Ri(t){return 10**(t/20)}var zt=Ri(12);var jt="data-automation",Wo=jt.slice(5),nt=1,xi=512,L=class extends Error{constructor(e){super(e),this.name="AudioAutomationError"}},Re="volume",xe="rate";function qt(t){if(t===Re)return{kind:"volume"};if(t===xe)return{kind:"rate"};let e=t.split(".");if(e.length===3&&e[0]==="fx"&&e[1]===wi){let r=e[2];return r?{kind:"preset",presetId:r}:null}if(e.length!==3||e[0]!=="fx")return null;let[,n,i]=e;return!n||!i?null:{kind:"fx",nodeId:n,param:i}}var wi="preset";var ki={min:0,max:zt,step:.01,unit:"",label:"Volume",scale:"linear",default:1};var Mi={min:te,max:ne,step:.05,unit:"x",label:"Speed",scale:"log",default:1};function re(t){if(typeof t=="number")return Number.isFinite(t)?t:null;if(typeof t=="string"&&t.trim()!==""){let e=Number(t);return Number.isFinite(e)?e:null}return null}function Ci(t){let e=re(t);return e===null||e===0?0:Math.min(1,Math.max(-1,e))}function Yt(t,e){let n=re(t),i=re(e);if(n===null||i===null)return null;let r=s=>Math.min(.999,Math.max(.001,s)),o=r(n),a=r(i);return Math.abs(o-a)<1e-6?null:{x:o,y:a}}function Ii(t){let e=Ci(t?.curve),n=Yt(t?.viaX,t?.viaY);return{...e?{curve:e}:{},...n?{viaX:n.x,viaY:n.y}:{}}}function Di(t,e){let n=re(t?.t),i=re(t?.v);if(n===null||i===null)return null;let r=e?Math.min(e.max,Math.max(e.min,i)):i;return{t:Math.max(0,n),v:r,...Ii(t)}}function Pi(t,e){let n=t.map(r=>Di(r,e)).filter(r=>r!==null).sort((r,o)=>r.t-o.t),i=[];for(let r of n)i.length>0&&i[i.length-1].t===r.t?i[i.length-1]=r:i.push(r);return i.slice(0,xi)}function Li(t){let e=[];for(let n of t.lanes){if(!qt(n.target))continue;let i=n.target===Re?ki:n.target===xe?Mi:null,r=Pi(n.points??[],i);r.length>0&&e.push({target:n.target,points:r})}return{version:nt,lanes:e}}function Xt(t){let e;try{e=JSON.parse(t)}catch(r){throw new L(`Automation is not valid JSON: ${r.message}`)}if(typeof e!="object"||e===null)throw new L("Automation must be a JSON object.");let n=e;if(n.version!==nt)throw new L(`Unsupported automation version: ${String(n.version)}`);if(!Array.isArray(n.lanes))throw new L("Automation is missing a `lanes` array.");let i=n.lanes.map((r,o)=>{if(typeof r!="object"||r===null)throw new L(`Lane ${o} is not an object.`);let a=r;if(typeof a.target!="string"||!qt(a.target))throw new L(`Lane ${o} has an unreadable target: ${String(a.target)}`);if(!Array.isArray(a.points))throw new L(`Lane ${o} is missing a \`points\` array.`);return{target:a.target,points:a.points}});return Li({version:nt,lanes:i})}function Ni(t,e){return e?Math.pow(t,Math.pow(2,2*e)):t}function Oi(t,e){let n=t-.5,i=e-.5,r=.999,o=1e6,a=n>0?n/(r-t):n<0?-n/(t-(1-r)):0,s=i>0?i/(r-e):i<0?-i/(e-(1-r)):0,l=Math.min(o,Math.max(1,a,s));return{cx:t+n/l,cy:e+i/l,w:l}}function Fi(t,e,n){let{cx:i,cy:r,w:o}=Oi(e,n),a=2-2*o,s=t*a-1+2*o*i,l=-t*a-2*o*i,u=Ui(s,l,t),c=1-u,h=c*c+2*o*u*c+u*u;return h>0?(2*o*r*u*c+u*u)/h:t}function Ui(t,e,n){if(Math.abs(t)<1e-12)return Math.abs(e)<1e-12?n:-n/e;let i=Math.sqrt(Math.max(0,e*e-4*t*n)),r=(-e+i)/(2*t),o=(-e-i)/(2*t),a=s=>s>=-1e-9&&s<=1+1e-9;return a(r)?Math.min(1,Math.max(0,r)):a(o)?Math.min(1,Math.max(0,o)):n}function Hi(t,e){let n=Yt(e.viaX,e.viaY);return n?Fi(Math.min(1,Math.max(0,t)),n.x,n.y):Ni(t,e.curve)}function Vi(t,e,n,i){return i==="log"&&t>0&&e>0?Math.exp(Math.log(t)+(Math.log(e)-Math.log(t))*n):t+(e-t)*n}function we(t,e,n="linear"){let i=t.points;if(i.length===0)return 0;let r=i[0];if(e<=r.t)return r.v;let o=i[i.length-1];if(e>=o.t)return o.v;let a=0,s=i.length-1;for(;s-a>1;){let h=a+s>>1;i[h].t<=e?a=h:s=h}let l=i[a],u=i[s],c=u.t-l.t;return c<=0?u.v:Vi(l.v,u.v,Hi((e-l.t)/c,l),n)}var ke=new Map,Wi=64;function Kt(t,e=Re){let n=`${e}\0${t}`,i=ke.get(n);if(i!==void 0)return i;let r=null;try{r=Xt(t).lanes.find(o=>o.target===e)??null}catch{r=null}return ke.size>Wi&&ke.clear(),ke.set(n,r),r}var Zt=48,Jt=new WeakMap;function $i(t){let e=t.points,n=e[0].v,i=e[e.length-1].v,r=[0],o=[0],a=l=>{let u=r[r.length-1];if(l<=u)return;let c=we(t,u,"log");r.push(l),o.push(o[o.length-1]+(c+we(t,l,"log"))/2*(l-u))},s=Math.max(0,e[0].t);a(s);for(let l=1;l<e.length;l+=1){let u=e[l-1].t,c=e[l].t;if(!(c<=0))for(let h=1;h<=Zt;h+=1)a(Math.max(u,0)+(c-u)*h/Zt)}return{ts:Float64Array.from(r),ss:Float64Array.from(o),firstRate:n,lastRate:i}}function Bi(t){let e=Jt.get(t);return e||(e=$i(t),Jt.set(t,e)),e}function Gi(t){return typeof t!="number"&&t.points.length>0}function zi(t,e,n){let i=0,r=t.length-1;for(;r-i>1;){let o=i+r>>1;t[o]<=n?i=o:r=o}return e[i]+(e[r]-e[i])*(n-t[i])/(t[r]-t[i])}function Qt(t,e){if(typeof t=="number")return e/t;if(!Gi(t))return e;let{ts:n,ss:i,firstRate:r,lastRate:o}=Bi(t),a=n.length-1;return e<=0?e/r:e>=i[a]?n[a]+(e-i[a])/o:zi(i,n,e)}function ji(t){return t?Kt(t,xe):null}function en(t,e){return ji(t)??e}var Yo=[{id:"montage",label:"Montage",points:[[0,.9],[.15,.3],[.5,2.5],[.85,.3],[1,.9]]},{id:"hero",label:"Hero",points:[[0,1],[.25,1.6],[.5,.25],[.75,1.6],[1,1]]},{id:"bullet",label:"Bullet",points:[[0,3],[.4,3],[.5,.15],[.6,3],[1,3]]},{id:"jump-cut",label:"Jump cut",points:[[0,.5],[.24,.5],[.26,3],[.5,3],[.52,.5],[.74,.5],[.76,3],[1,3]]},{id:"flash-in",label:"Flash in",points:[[0,.3],[.6,.6],[1,5]]},{id:"flash-out",label:"Flash out",points:[[0,5],[.4,.6],[1,.3]]},{id:"ramp-in",label:"Ramp in",points:[[0,.5],[1,1]]},{id:"ramp-out",label:"Ramp out",points:[[0,1],[1,.5]]},{id:"slowmo-middle",label:"Slow-mo middle",points:[[0,1],[1/3,.35],[2/3,.35],[1,1]]}];var y=Object.freeze({start:"data-start",duration:"data-duration",trackIndex:"data-track-index",derivedEnd:"data-end",legacyTrack:"data-layer"}),Ko=Object.freeze([y.start,y.duration,y.trackIndex]),Zo=Object.freeze([y.derivedEnd]),Jo=Object.freeze([y.derivedEnd,y.legacyTrack]);function N(t){if(t==null||t.trim()==="")return null;let e=Number(t);return Number.isFinite(e)?e:null}var rn=/^[A-Za-z0-9_.:-]+$/;function on(t,e){let n=t.charCodeAt(e);return n>=48&&n<=57}function tn(t,e){let n=e;for(;n>=0&&on(t,n);)n--;return n}function qi(t,e){let n=e;for(;n>=0&&(t[n]??"").trim()==="";)n--;return n}function Yi(t){let e=t.length-1;if(!on(t,e))return null;let n=tn(t,e);return t[n]==="."&&(n=tn(t,n-1)),n+1}function Xi(t){let e=Yi(t);if(e==null)return null;let n=qi(t,e-1),i=t[n];if(i!=="+"&&i!=="-")return null;let r=t.slice(0,n).trim();if(!rn.test(r))return null;let o=Number(t.slice(e));return Number.isFinite(o)?{refId:r,operator:i,magnitude:o}:null}function oe(t){let e=(t??"").trim();if(!e)return null;let n=N(e);if(n!=null)return{kind:"absolute",value:n};if(rn.test(e))return{kind:"reference",refId:e,offset:0};let i=Xi(e);return i?{kind:"reference",refId:i.refId,offset:i.operator==="-"?-i.magnitude:i.magnitude}:null}function x(t,e,n,i){t.push({code:e,attribute:n,value:i})}function Ki(t,e,n,i){if(e==null||e.trim()==="")return n.defaultStart===void 0?0:n.defaultStart;if(!t)return x(i,"invalid-start",y.start,e),null;if(t.kind==="absolute")return Math.max(0,t.value);let r=n.resolveReferenceEnd?.(t.refId);return r==null||!Number.isFinite(r)?(x(i,"unresolved-start-reference",y.start,e),null):Math.max(0,r+t.offset)}var Zi=1e-9;function Ji(t,e){return Math.abs(t-e)<=Zi}function Qi(t,e,n){let i=N(t);if(i==null){x(n,"deprecated-end",y.derivedEnd,t),x(n,"invalid-end",y.derivedEnd,t);return}if(e==null){x(n,"deprecated-end",y.derivedEnd,t);return}Ji(i,e)||(x(n,"deprecated-end",y.derivedEnd,t),x(n,"conflicting-end",y.derivedEnd,t))}function er(t,e,n){let i=N(t);return i==null||i<0?(x(n,"invalid-duration",y.duration,t),{duration:null,end:null,durationSource:"invalid"}):{duration:i,end:e==null?null:e+i,durationSource:"duration"}}function tr(t,e,n){x(n,"deprecated-end",y.derivedEnd,t);let i=N(t);return i==null?(x(n,"invalid-end",y.derivedEnd,t),{duration:null,end:null,durationSource:"invalid"}):e==null?{duration:null,end:i,durationSource:"legacy-end"}:i<e?(x(n,"end-before-start",y.derivedEnd,t),{duration:null,end:null,durationSource:"invalid"}):{duration:i-e,end:i,durationSource:"legacy-end"}}function nr(t,e,n){let i=t.getAttribute(y.duration),r=t.getAttribute(y.derivedEnd);if(i==null)return r==null?{duration:null,end:null,durationSource:"missing"}:tr(r,e,n);let o=er(i,e,n);return r!=null&&Qi(r,o.end,n),o}function nn(t,e,n,i){let r=N(t);return r==null||!Number.isInteger(r)?(x(i,"invalid-track-index",e,t),{trackIndex:0,trackSource:"invalid"}):{trackIndex:r,trackSource:n}}function ir(t,e){let n=t.getAttribute(y.trackIndex),i=t.getAttribute(y.legacyTrack);if(n==null&&i==null)return{trackIndex:0,trackSource:"default"};if(n==null&&i!=null)return x(e,"deprecated-layer",y.legacyTrack,i),nn(i,y.legacyTrack,"legacy-layer",e);let r=nn(n??"",y.trackIndex,"track-index",e);if(i==null)return r;x(e,"deprecated-layer",y.legacyTrack,i);let o=N(i);return o!=null&&o!==r.trackIndex&&x(e,"conflicting-layer",y.legacyTrack,i),r}function it(t,e={}){let n=[],i=t.getAttribute(y.start),r=oe(i),o=Ki(r,i,e,n),a=nr(t,o,n),s=ir(t,n);return{startExpression:r,start:o,...a,...s,diagnostics:n}}function V(t){return N(t)}function rt(t){return Wt(e=>t.getAttribute(e),P(t)?t.defaultPlaybackRate:1)}function rr(t){return en(t.getAttribute("data-automation"),rt(t))}function ot(t){return Ee(e=>t.getAttribute(e))}function ae(t,e){return or(e,ot(t),rr(t))}function at(t){let e=et({tag:"video",authoredDurationSeconds:Je(n=>t.getAttribute(n)),sourceDurationSeconds:Number.isFinite(t.duration)?t.duration:null,mediaStartSeconds:ot(t),playbackRate:rt(t)});return e.source==="media"?ae(t,t.duration):e.seconds}function Me(t,e=0){return!Ht(t)||!t.hasAttribute("data-start")&&!t.hasAttribute("data-track-index")?null:et({tag:"img",authoredDurationSeconds:$t(n=>t.getAttribute(n),e),sourceDurationSeconds:null,mediaStartSeconds:0,playbackRate:1}).seconds}function or(t,e,n){return typeof n=="number"?Qe(t,e,n):Number.isFinite(t)?Qt(n,Math.max(0,t-e)):null}function an(){return globalThis}function st(t,e){if(typeof window>"u")return;let n=an(),i=n.__hf?.onSwallowed;if(i)try{i({label:t,error:e})}catch(r){}(n.__hfDebug||n.__HYPERFRAMES_DEBUG)&&console.debug(`[hyperframes] ${t} swallowed:`,e)}var ar=t=>t.paused?.()===!0?(t.startTime?.()??0)+(t.totalDuration?.()??0)/Math.abs(t.timeScale?.()||1):0;function se(t){try{if(typeof t?.duration!="function")return null;let e=t.getChildren?.(!1,!1,!0),n=Array.isArray(e)?e:[],i=Math.max(Number(t.duration()),...n.map(ar));return Number.isFinite(i)?i:null}catch(e){return st("runtime.timelineDuration",e),null}}var sn="data-hf-authored-duration",ln="data-hf-authored-end";function le(t){if(t==null||typeof t=="string"&&t.trim()==="")return null;let e=typeof t=="number"?t:Number(t);return Number.isFinite(e)?e:null}function Ce(t){let e=le(t.start);if(e==null)return null;let n=Math.max(0,e),i=le(t.duration),r=le(t.authoredDuration),o=i!=null&&i>0?i:r!=null&&r>0?r:null;if(o!=null)return{start:n,duration:o,end:n+o};let a=le(t.end),s=le(t.authoredEnd),l=a!=null&&a>n?a:s!=null&&s>n?s:null;return{start:n,duration:l==null?null:l-n,end:l}}var z=Object.freeze({start:"data-start",duration:"data-duration",trackIndex:"data-track-index",derivedEnd:"data-end",legacyTrack:"data-layer"}),pa=Object.freeze([z.start,z.duration,z.trackIndex]),ha=Object.freeze([z.derivedEnd]),fa=Object.freeze([z.derivedEnd,z.legacyTrack]);function sr(t){if(t==null||t.trim()==="")return null;let e=Number(t);return Number.isFinite(e)?e:null}var un=t=>{let e=sr(t);return e!==null&&e>=0?e:null};function lr(t){return un(t("data-playback-start"))??un(t("data-media-start"))??0}var dn="data-hf-media-start-basis";function cn(t){return t?.trim().toLowerCase()==="global"?"global":"local"}function ur(t){return cn(t.basis)==="global"?t.authoredStart:t.hostStart+t.authoredStart}function mn(t){return hn(t)?ur({authoredStart:t.authoredStart,hostStart:t.hostStart,basis:t.basis}):t.ordinaryStart()}function pn(t){return hn(t)&&cn(t.basis)==="global"}function hn(t){return!t.hasAutoStart&&t.authoredStart!=null&&t.hostStart!==0}function lt(t){return lr(e=>t.getAttribute(e))}function fn(t,e){return t-lt(e)}function ue(t){let e=t.timelineRegistry??{},n=t.includeAuthoredTimingAttrs??!1,i=t.documentRef??document,r=new WeakMap,o=new WeakMap,a=new Set,s=d=>(d.hasAttribute("data-composition-id")?d.parentElement:d)?.closest("[data-composition-id]")??null,l=(d,f)=>{let g=s(f);if(g){for(let M of g.querySelectorAll(`[id="${d}"]`))if(s(M)===g)return M}let R=i.getElementById(d);return R||(Array.from(i.querySelectorAll("[data-composition-id]")).find(M=>M.getAttribute("data-composition-id")===d)??null)},u=(d,f)=>n?d.getAttribute(f):null,c=d=>Ce({start:0,duration:d.getAttribute("data-duration"),authoredDuration:u(d,"data-hf-authored-duration")})?.duration??Ce({start:T(d,0),end:d.getAttribute("data-end"),authoredEnd:u(d,"data-hf-authored-end")})?.duration??null,h=d=>d!=null&&Number.isFinite(d)&&d>0?d:null,v=d=>{let f=d.getAttribute("data-composition-id");return f?h(se(e[f])):null},_=d=>{let f=o.get(d);if(f!==void 0)return f;let g=c(d)??h(P(d)?ae(d,d.duration):null)??h(Me(d))??v(d);return o.set(d,g),g},A="[data-composition-src], [data-composition-id], [data-composition-file]",b=d=>d.matches(A),S=d=>!d.hasAttribute("data-composition-id")||oe(d.getAttribute("data-start"))?null:d.parentElement?.closest(`[data-start], ${A}`)??null,k=(d,f)=>fn(T(d,f),S(d)??d),C=(d,f)=>{let g=d.hasAttribute("data-composition-id")?d.parentElement?.closest("[data-composition-id]"):d.closest("[data-composition-id]");return g?k(g,f):0},I=(d,f)=>{let g=oe(d.getAttribute("data-start"));if(!g){let H=S(d);return H?T(H,f):f}if(g.kind==="absolute")return C(d,f)+Math.max(0,g.value);let R=l(g.refId,d);if(!R)return f;let M=T(R,0),ve=_(R)??0,Ae=Math.min(0,C(d,0));return Math.max(Ae,M+ve+g.offset)},T=(d,f)=>{let g=r.get(d);if(g!==void 0)return g??f;if(a.has(d))return f;a.add(d);try{let R=I(d,f);return r.set(d,R),R}finally{a.delete(d)}},U=d=>{let f=d.closest("[data-composition-id]");return{authoredStart:V(d.getAttribute("data-start")),hostStart:f?k(f,0):0,hasAutoStart:d.hasAttribute("data-hf-auto-start"),basis:d.getAttribute(dn)}};return{resolveStartForElement:(d,f=0)=>T(d,Math.max(0,f)),resolveDurationForElement:d=>_(d),resolveMediaStartForElement:d=>{let f=U(d);return mn({...f,ordinaryStart:()=>T(d,f.hostStart)})},resolveHostStartForElement:d=>C(d,0),resolveHostSlotsForElement:d=>{let f=[];for(let g=d.parentElement;g;g=g.parentElement){if(!b(g)||S(g)||lt(g)<=0)continue;let R=T(g,0),M=c(g);f.push({start:R,end:M?R+M:1/0})}return f},isRootGlobalMediaStartForElement:d=>P(d)&&pn(U(d))}}function bn(){return{capturedTimeline:null,isPlaying:!1,currentTime:0,deterministicAdapters:[],canonicalFps:30,bridgeMuted:!1,bridgeVolume:1,mediaOutputMuted:!1,nativeMediaSyncDisabled:!1,webAudioMediaDisabled:!1,mediaAutoplayBlockedPosted:!1,mediaForceSyncNextTick:!1,playbackRate:1,bridgeLastPostedFrame:-1,bridgeLastPostedAt:0,bridgeLastPostedPlaying:!1,bridgeLastPostedMuted:!1,bridgeMaxPostIntervalMs:80,controlBridgeHandler:null,beforeUnloadHandler:null,injectedCompStyles:[],injectedCompScripts:[],injectedCompLinks:[],cachedTimedMediaEls:[],cachedMediaClips:[],cachedVideoClips:[],cachedMediaTimelineDurationSeconds:0,tornDown:!1,transportClock:null,transportRafId:null}}var gn=7200,ut=1/60,de=t=>t!==null&&t>ut?t:null;function dr(t){return{width:Se(t.getAttribute("data-width")),height:Se(t.getAttribute("data-height"))}}function cr(t,e){let n=null;for(let i of t.querySelectorAll("video[data-start], audio[data-start]")){let r=e.mediaStart(i);if(!Number.isFinite(r))continue;let o=e.mediaDuration(i);if(o==null||o<=ut)continue;let a=Math.max(0,r)+o;(!n||a>n.seconds)&&(n={seconds:a,element:i})}return n&&de(n.seconds)!==null?n:null}function mr(t,e){return cr(t,e)?.seconds??null}function pr(t,e){let n=[];for(let r of t.querySelectorAll("[data-composition-id][data-start]")){if(r.parentElement?.closest("[data-composition-id]")!==t)continue;let o=e.resolveStartForElement(r,0),a=e.resolveDurationForElement(r);!Number.isFinite(o)||a==null||a<=0||n.push(Math.max(0,o)+a)}let i=V(t.getAttribute("data-duration"));return de(qe({authoredDurationSeconds:null,clipEndsSeconds:[i,...n]}).seconds)}var hr=t=>t.hasAttribute("data-composition-id")||t.hasAttribute("data-composition-src");function fr(t,e,{unregisteredLottie:n}){let i=[];for(let o of t.querySelectorAll("[data-start]")){let a=e.resolveStartForElement(o,0);if(!Number.isFinite(a))continue;let s=e.resolveDurationForElement(o);s!=null?i.push(Math.max(0,a)+s):(P(o)||hr(o))&&i.push(null)}(n||t.querySelector("[data-lottie-src]"))&&i.push(null);let r=qe({authoredDurationSeconds:null,clipEndsSeconds:i});return r.pendingClips>0?{...r,seconds:null,source:"unresolved",reason:"a clip's length is pending"}:r}function br(t){return gr(t).seconds}function gr(t){if(t.declared!==null&&Number.isFinite(t.declared)&&t.declared>0)return{seconds:t.declared,from:"declared",floorIndex:null};let e=de(t.timeline()),n=t.floors().map(h=>h??0),i=Math.max(0,...n),r=Number.isFinite(t.fallback)&&t.fallback>ut?t.fallback:0,o=Math.max(i,r),s=e!==null&&e>=gn&&de(o)!==null?null:e,l=i>=r,u=h=>({seconds:h,from:l?"floor":"fallback",floorIndex:l?n.indexOf(i):null});if(s!==null)return s>=o?{seconds:s,from:"timeline",floorIndex:null}:u(o);if(de(i)!==null)return u(o);if(r>0)return{seconds:r,from:"fallback",floorIndex:null};let c=t.derived();return{seconds:c>0?c:0,from:"derived",floorIndex:null}}function _n(t){let e=ee(t);if(!e)return null;let n=ue({timelineRegistry:{},includeAuthoredTimingAttrs:!0,documentRef:t}),i=br({declared:V(e.getAttribute("data-duration")),timeline:()=>null,floors:()=>[mr(t,{mediaStart:n.resolveMediaStartForElement,mediaDuration:at}),pr(e,n)],fallback:0,derived:()=>fr(e,n,{unregisteredLottie:!1}).seconds??0});return{...dr(e),fps:bn().canonicalFps,durationSeconds:i}}function Ie(t){return t+1e-5}function yn(){let{userAgent:t,maxTouchPoints:e}=navigator;return/iP(hone|ad|od)/.test(t)||/Macintosh/.test(t)&&e>1}function De(){let{userAgent:t}=navigator;return/AppleWebKit/.test(t)&&!/Chrom(e|ium)\/|Edg\/|Android/.test(t)}var _r="hyperframes-studio-preview";var dt="data-hf-player-frame";function yr(t){return De()&&t.defaultView?.frameElement?.hasAttribute(dt)===!0}function vn(t){return t.querySelector(`meta[name="${_r}"]`)!==null||yr(t)}var An="__hfPreviewErrors";function Sn(t){return t.hasRuntime||t.runtimeInjected?!1:!!(t.hasNestedCompositions||t.hasTimelines&&t.attempts>=5)}function j(t){return typeof t=="object"&&t!==null}function En(t){return j(t)&&typeof t.getDuration=="function"}function Tn(t){return j(t)&&typeof t.duration=="function"&&typeof t.time=="function"&&typeof t.seek=="function"&&typeof t.play=="function"&&typeof t.pause=="function"}var q="https://cdn.jsdelivr.net/npm/@hyperframes/core@0.9.11/dist/hyperframe.runtime.iife.js";function ce(t){if(t===null)return null;let e=Number.parseInt(t,10);return Number.isFinite(e)&&e>0?e:null}function vr(t){let e=t?.querySelector("[data-composition-id][data-width][data-height]")??t?.querySelector("[data-width][data-height]");if(!e)return null;let n=ce(e.getAttribute("data-width")),i=ce(e.getAttribute("data-height"));return n!==null&&i!==null?{width:n,height:i}:null}function Ar(t){return Array.isArray(t)?t.find(e=>typeof e=="string"&&e.trim()!==""&&e!=="[object Event]")??null:null}var Pe=class{constructor(e,n){this._iframe=e;this._callbacks=n}_iframe;_callbacks;_interval=null;_runtimeInjected=!1;_runtimeScript=null;_failure=null;get failed(){return this._failure!==null&&this._failure.document===this._iframe.contentDocument}get runtimeInjected(){return this._runtimeInjected}start(){this.stop(),this._failure=null,this._runtimeInjected=!1;let e=0;this._interval=setInterval(()=>{e++;let n=null;try{n=this._poll(e)}catch(i){i instanceof DOMException&&i.name==="SecurityError"||(n={kind:"error",message:i instanceof Error?i.message:String(i)})}n??=this._deadlineOutcome(e),n&&(this.stop(),n.kind==="error"?(this._failure={document:this._iframe.contentDocument},this._callbacks.onError(n.message)):this._callbacks.onReady(n.result))},200)}_deadlineOutcome(e){return e<40||this._callbacks.hostOwnsDeadline?.()?null:{kind:"error",message:"Composition timeline not found after 8s"}}_poll(e){let n=this._iframe.contentWindow;if(!n)return null;let i=Ar(Reflect.get(n,An));if(i!==null)return{kind:"error",message:i};let r=this._iframe.contentDocument,o=Reflect.get(n,"__timelines"),a=this.hasRuntimeBridge(n);if(Sn({hasRuntime:a,hasTimelines:j(o)&&Object.keys(o).length>0,hasNestedCompositions:!!r?.querySelector("[data-composition-src]"),runtimeInjected:this._runtimeInjected,attempts:e}))return this._injectRuntime(),null;if(this._runtimeInjected&&!a)return null;let s=this._resolveReadyResult(n,r);return s?{kind:"ready",result:s}:null}_resolveReadyResult(e,n){let i=this._resolvePlaybackDurationAdapter(e)??{kind:"document",getDuration:()=>0},r=i.getDuration();if(!Number.isFinite(r)||r<=0){if(i.kind==="direct-timeline")return null;r=n?_n(n)?.durationSeconds??0:0}return r<=0?null:{duration:r,adapter:{...i,getDuration:()=>r},compositionSize:vr(n)}}stop(){this._runtimeScript&&(this._runtimeScript.onerror=null,this._runtimeScript=null),this.failed||(this._failure=null),this._interval!==null&&(clearInterval(this._interval),this._interval=null)}resolveDirectTimelineAdapter(){try{let e=this._iframe.contentWindow;return e?this._resolveDirectTimelineAdapterFromWindow(e):null}catch{return null}}resolveDirectTimelineAdapterFromWindow(e){return this._resolveDirectTimelineAdapterFromWindow(e)}hasRuntimeBridge(e){return j(Reflect.get(e,"__player"))}_injectRuntime(){this._runtimeInjected=!0;try{let e=this._iframe.contentDocument;if(!e)return;let n=e.createElement("script");n.src=this._callbacks.resolveRuntimeUrl?.()??q,this._runtimeScript=n,n.onerror=()=>{this._runtimeScript!==n||this._iframe.contentDocument!==e||(this.stop(),this._failure={document:e},this._callbacks.onError("HyperFrames runtime failed to load from "+n.src))},(e.head||e.documentElement).appendChild(n),this._callbacks.onRuntimeInjected?.()}catch{}}_resolveDirectTimelineAdapterFromWindow(e){if(this.hasRuntimeBridge(e))return null;let n=Reflect.get(e,"__timelines");if(!j(n))return null;let i=Object.keys(n);if(i.length===0)return null;let r=this._iframe.contentDocument?.querySelector("[data-composition-id]")?.getAttribute("data-composition-id"),o=r&&r in n?r:i[i.length-1],a=n[o];return Tn(a)?a:null}_resolvePlaybackDurationAdapter(e){let n=Reflect.get(e,"__player");if(En(n))return{kind:"runtime",getDuration:()=>n.getDuration()};let i=this._resolveDirectTimelineAdapterFromWindow(e);return i?{kind:"direct-timeline",timeline:i,getDuration:()=>i.duration()}:null}};var Rn=`
|
|
2
2
|
:host {
|
|
3
3
|
display: block;
|
|
4
4
|
position: relative;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as Ae,b as Nt,c as Ee}from"./chunk-Y2QDGAY2.js";var Ot=n=>n!==null&&Number.isFinite(n)&&n>0;function Ge(n){let e=n.clipEndsSeconds.filter(i=>i===null).length;if(Ot(n.authoredDurationSeconds))return{seconds:n.authoredDurationSeconds,source:"authored",pendingClips:e};let t=n.clipEndsSeconds.filter(Ot);return t.length>0?{seconds:Math.max(...t),source:"derived",pendingClips:e}:{seconds:null,source:"unresolved",pendingClips:e,reason:e>0?"every clip's length is still pending":"no authored duration and no clip with a length"}}var pi="http://www.w3.org/1999/xhtml";function Ft(n){return n!=null&&n.nodeType===1}function ze(n){return Ft(n)&&n.namespaceURI===pi}function je(n,e){return ze(n)&&n.localName===e}function hi(n){return je(n,"video")}function fi(n){return je(n,"audio")}function P(n){return hi(n)||fi(n)}function Ut(n){return je(n,"img")}function Te(n){if(n==null||n.trim()==="")return null;let e=Number.parseInt(n,10);return Number.isFinite(e)&&e>0?e:null}function ee(n=document){let e=n.querySelector('[data-composition-id][data-root="true"]');return ze(e)?e:n.querySelector("[data-composition-id]")}var B=Object.freeze({start:"data-start",duration:"data-duration",trackIndex:"data-track-index",derivedEnd:"data-end",legacyTrack:"data-layer"}),fo=Object.freeze([B.start,B.duration,B.trackIndex]),bo=Object.freeze([B.derivedEnd]),go=Object.freeze([B.derivedEnd,B.legacyTrack]);function qe(n){if(n==null||n.trim()==="")return null;let e=Number(n);return Number.isFinite(e)?e:null}var Ht=n=>{let e=qe(n);return e!==null&&e>=0?e:null};function Re(n){return Ht(n("data-playback-start"))??Ht(n("data-media-start"))??0}var te=.1,ne=10;function Ye(n){return Number.isFinite(n)&&n>0?Math.max(te,Math.min(ne,n)):1}function Vt(n,e=1){let t=Number.parseFloat(n("data-playback-rate")??"");return Ye(Number.isFinite(t)&&t>0?t:e)}function Xe(n){let e=qe(n("data-duration"));return e!==null&&e>0?e:null}function Wt(n,e){let t=Xe(n);if(t!==null)return t;let i=qe(n("data-end"));return i!==null?i-e:null}var bi=3;function Ke(n,e,t){return Number.isFinite(n)?Math.max(0,n-e)/Ye(t):null}function Ze(n){let{tag:e,authoredDurationSeconds:t,sourceDurationSeconds:i,mediaStartSeconds:r,playbackRate:o}=n;if(t!==null&&t>0)return{seconds:t,source:"authored"};if(e==="img")return{seconds:bi,source:"default"};if(i===null)return{seconds:null,source:"pending",reason:"source duration not yet probed"};let a=Ke(i,r,o);return a===null?{seconds:null,source:"pending",reason:"source reported a non-finite duration"}:{seconds:a,source:"media"}}var gi="data-fx-chain",yo=gi.slice(5);var ie=(n="frequency",e="Frequency",t=1e3,i=20,r=2e4)=>({kind:"number",key:n,label:e,unit:"Hz",min:i,max:r,step:1,default:t,scale:"log",automatable:!0}),Je=(n=.707,e="Bandwidth: higher is narrower.")=>({kind:"number",key:"q",label:"Q",unit:"",min:.1,max:20,step:.01,default:n,scale:"log",automatable:!0,hint:e}),we=(n=-40,e=40,t=0)=>({kind:"number",key:"gain",label:"Gain",unit:"dB",min:n,max:e,step:.1,default:t,automatable:!0}),$t={kind:"enum",key:"poles",label:"Slope",options:[{value:"1",label:"6 dB/oct"},{value:"2",label:"12 dB/oct"}],default:"2",hint:"Two poles is the usual biquad; one pole is gentler."},Bt=[{id:"gain",label:"Gain",group:"dynamics",description:"Raise or lower the whole signal. Automate it to duck under something else.",params:[we(-60,12,0)],web:"gain-node"},{id:"peaking",label:"Peaking EQ",group:"filter",description:"Boost or cut a band, leaving everything either side alone.",params:[ie("frequency","Frequency",1e3),we(-40,40,0),Je(1)],web:"biquad-peaking"},{id:"lowshelf",label:"Low Shelf",group:"filter",description:"Lift or drop everything below the corner frequency.",params:[ie("frequency","Frequency",200,20,2e3),we(-40,40,0)],web:"biquad-lowshelf"},{id:"highshelf",label:"High Shelf",group:"filter",description:"Lift or drop everything above the corner frequency.",params:[ie("frequency","Frequency",4e3,500,2e4),we(-40,40,0)],web:"biquad-highshelf"},{id:"highpass",label:"High-pass",group:"filter",description:"Remove low frequencies: the usual fix for rumble on a voice.",params:[ie("frequency","Cutoff",300,20,2e4),Je(.707),$t],web:"biquad-highpass"},{id:"lowpass",label:"Low-pass",group:"filter",description:"Remove high frequencies, which darkens or muffles a track.",params:[ie("frequency","Cutoff",8e3,100,2e4),Je(.707),$t],web:"biquad-lowpass"},{id:"compressor",label:"Compressor",group:"dynamics",description:"Pull loud parts down so the quiet ones can come up.",params:[{kind:"number",key:"threshold",label:"Threshold",unit:"dB",min:-60,max:0,step:.5,default:-24,hint:"Level above which the compressor starts working."},{kind:"number",key:"ratio",label:"Ratio",unit:":1",min:1,max:20,step:.1,default:4},{kind:"number",key:"attack",label:"Attack",unit:"ms",min:.01,max:2e3,step:.1,default:20,scale:"log"},{kind:"number",key:"release",label:"Release",unit:"ms",min:.01,max:9e3,step:1,default:250,scale:"log"},{kind:"number",key:"knee",label:"Knee",unit:"",min:1,max:8,step:.01,default:2.83,hint:"1 is a hard corner; higher eases into it."},{kind:"number",key:"makeup",label:"Makeup",unit:"dB",min:0,max:36,step:.1,default:0},{kind:"number",key:"mix",label:"Mix",unit:"",min:0,max:1,step:.01,default:1,hint:"Below 1 blends the dry signal back in."}],web:"worklet-compressor"},{id:"limiter",label:"Limiter",group:"dynamics",description:"Peak limiter that follows the signal's level. It has no lookahead, so a fast peak or an inter-sample peak can pass the ceiling; use the true-peak limiter for a delivery limit.",params:[{kind:"number",key:"limit",label:"Ceiling",unit:"dB",min:-24,max:0,step:.1,default:-1},{kind:"number",key:"attack",label:"Attack",unit:"ms",min:.1,max:80,step:.1,default:5},{kind:"number",key:"release",label:"Release",unit:"ms",min:1,max:8e3,step:1,default:50,scale:"log"},{kind:"number",key:"level_out",label:"Output",unit:"dB",min:-24,max:24,step:.1,default:0}],web:"worklet-limiter"},{id:"truepeak",label:"True-peak limiter",group:"dynamics",description:"Lookahead limiter that holds a 4x estimate of the inter-sample peak at a dBTP ceiling; full-band noise can land up to about 1.7 dB above it. Adds lookahead plus about 0.3 ms of latency.",params:[{kind:"number",key:"ceiling",label:"Ceiling",unit:"dBTP",min:-24,max:0,step:.1,default:-1,hint:"Target true peak, measured on a 4x oversampled signal. Dense full-band sound can end up to about 1.7 dB above it."},{kind:"number",key:"lookahead",label:"Lookahead",unit:"ms",min:.5,max:10,step:.1,default:3,hint:"How far ahead the gain starts falling. Longer is smoother and adds the same latency."},{kind:"number",key:"release",label:"Release",unit:"ms",min:10,max:2e3,step:1,default:80,scale:"log"}],web:"worklet-truepeak"},{id:"gate",label:"Noise Gate",group:"dynamics",description:"Silence the track when it drops below the threshold.",params:[{kind:"number",key:"threshold",label:"Threshold",unit:"dB",min:-80,max:0,step:.5,default:-35},{kind:"number",key:"range",label:"Range",unit:"dB",min:-80,max:0,step:.5,default:-24,hint:"How far down the gate pulls when closed."},{kind:"number",key:"ratio",label:"Ratio",unit:":1",min:1,max:20,step:.1,default:10},{kind:"number",key:"attack",label:"Attack",unit:"ms",min:.01,max:9e3,step:.1,default:1,scale:"log"},{kind:"number",key:"release",label:"Release",unit:"ms",min:.01,max:9e3,step:1,default:100,scale:"log"},{kind:"number",key:"knee",label:"Knee",unit:"",min:1,max:8,step:.01,default:2.83}],web:"worklet-gate"},{id:"saturate",label:"Saturation",group:"nonlinear",description:"Soft-clip the waveform for warmth or outright distortion.",params:[{kind:"enum",key:"type",label:"Curve",options:[{value:"tanh",label:"Tanh"},{value:"atan",label:"Arctan"},{value:"cubic",label:"Cubic"},{value:"exp",label:"Exponential"},{value:"alg",label:"Algebraic"},{value:"quintic",label:"Quintic"},{value:"sin",label:"Sine"},{value:"erf",label:"Error function"},{value:"hard",label:"Hard clip"}],default:"tanh"},{kind:"number",key:"threshold",label:"Threshold",unit:"dB",min:-40,max:0,step:.1,default:-6},{kind:"number",key:"output",automatable:!0,label:"Output",unit:"dB",min:-24,max:24,step:.1,default:0},{kind:"number",key:"oversample",label:"Oversample",unit:"x",min:1,max:8,step:1,default:4,hint:"Higher costs more but keeps aliasing down."}],web:"waveshaper"},{id:"bitcrush",label:"Bitcrush",group:"nonlinear",description:"Drop bit depth and sample rate for a lo-fi, digital sound.",params:[{kind:"number",key:"bits",label:"Bit depth",unit:"bit",min:1,max:32,step:.1,default:8},{kind:"number",key:"samples",label:"Sample hold",unit:"x",min:1,max:250,step:1,default:1,hint:"Repeats each sample N times, a crude downsample."},{kind:"number",key:"mix",label:"Mix",unit:"",min:0,max:1,step:.01,default:1}],web:"worklet-bitcrush"},{id:"pitchshift",label:"Pitch shift",group:"time",description:"Shifts pitch up or down without changing playback speed. Adds ~50 ms of latency.",params:[{kind:"number",key:"semitones",label:"Semitones",unit:"st",min:-12,max:12,step:1,default:0},{kind:"number",key:"mix",label:"Mix",unit:"",min:0,max:1,step:.01,default:1}],web:"worklet-pitchshift"},{id:"delay",label:"Delay",group:"time",description:"Repeating echoes behind the dry signal.",params:[{kind:"number",key:"time",automatable:!0,label:"Time",unit:"ms",min:1,max:5e3,step:1,default:250,scale:"log"},{kind:"number",key:"feedback",automatable:!0,label:"Feedback",unit:"",min:.01,max:.95,step:.01,default:.35},{kind:"number",key:"mix",automatable:!0,label:"Mix",unit:"",min:0,max:1,step:.01,default:.4}],web:"delay-feedback"},{id:"chorus",label:"Chorus",group:"time",description:"Detuned copies of the signal for width and thickness.",params:[{kind:"number",key:"delay",automatable:!0,label:"Delay",unit:"ms",min:1,max:100,step:.1,default:7},{kind:"number",key:"depth",automatable:!0,label:"Depth",unit:"ms",min:0,max:10,step:.01,default:2},{kind:"number",key:"speed",automatable:!0,label:"Rate",unit:"Hz",min:.01,max:10,step:.01,default:1},{kind:"number",key:"mix",automatable:!0,label:"Mix",unit:"",min:0,max:1,step:.01,default:.5}],web:"chorus-lfo"},{id:"phaser",label:"Phaser",group:"time",description:"Sweeping notches moving through the spectrum.",params:[{kind:"number",key:"in_gain",automatable:!0,label:"Input",unit:"",min:0,max:1,step:.01,default:.4},{kind:"number",key:"out_gain",automatable:!0,label:"Output",unit:"",min:0,max:2,step:.01,default:.74},{kind:"number",key:"delay",label:"Delay",unit:"ms",min:.1,max:5,step:.1,default:3},{kind:"number",key:"decay",label:"Decay",unit:"",min:0,max:.99,step:.01,default:.4},{kind:"number",key:"speed",automatable:!0,label:"Rate",unit:"Hz",min:.1,max:2,step:.01,default:.5},{kind:"enum",key:"type",label:"Waveform",options:[{value:"0",label:"Triangular"},{value:"1",label:"Sinusoidal"}],default:"0"}],web:"allpass-phaser"},{id:"reverb",label:"Reverb",group:"time",description:"Room tail. Both ends convolve the same generated impulse, so preview matches render.",params:[{kind:"number",key:"size",label:"Room size",unit:"",min:.05,max:1,step:.01,default:.7},{kind:"number",key:"damping",label:"Damping",unit:"",min:0,max:1,step:.01,default:.5,hint:"Higher rolls the top off the tail faster."},{kind:"number",key:"wet",automatable:!0,label:"Wet",unit:"",min:0,max:1,step:.01,default:.35},{kind:"number",key:"dry",automatable:!0,label:"Dry",unit:"",min:0,max:1,step:.01,default:.7}],web:"convolver"}],vo=new Map(Bt.map(n=>[n.id,n]));var So=Bt.map(n=>n.id);function _i(n){return 10**(n/20)}var Gt=_i(12);var zt="data-automation",Do=zt.slice(5),Qe=1,yi=512,L=class extends Error{constructor(e){super(e),this.name="AudioAutomationError"}},xe="volume",ke="rate";function jt(n){if(n===xe)return{kind:"volume"};if(n===ke)return{kind:"rate"};let e=n.split(".");if(e.length===3&&e[0]==="fx"&&e[1]===vi){let r=e[2];return r?{kind:"preset",presetId:r}:null}if(e.length!==3||e[0]!=="fx")return null;let[,t,i]=e;return!t||!i?null:{kind:"fx",nodeId:t,param:i}}var vi="preset";var Si={min:0,max:Gt,step:.01,unit:"",label:"Volume",scale:"linear",default:1};var Ai={min:te,max:ne,step:.05,unit:"x",label:"Speed",scale:"log",default:1};function re(n){if(typeof n=="number")return Number.isFinite(n)?n:null;if(typeof n=="string"&&n.trim()!==""){let e=Number(n);return Number.isFinite(e)?e:null}return null}function Ei(n){let e=re(n);return e===null||e===0?0:Math.min(1,Math.max(-1,e))}function qt(n,e){let t=re(n),i=re(e);if(t===null||i===null)return null;let r=s=>Math.min(.999,Math.max(.001,s)),o=r(t),a=r(i);return Math.abs(o-a)<1e-6?null:{x:o,y:a}}function Ti(n){let e=Ei(n?.curve),t=qt(n?.viaX,n?.viaY);return{...e?{curve:e}:{},...t?{viaX:t.x,viaY:t.y}:{}}}function Ri(n,e){let t=re(n?.t),i=re(n?.v);if(t===null||i===null)return null;let r=e?Math.min(e.max,Math.max(e.min,i)):i;return{t:Math.max(0,t),v:r,...Ti(n)}}function wi(n,e){let t=n.map(r=>Ri(r,e)).filter(r=>r!==null).sort((r,o)=>r.t-o.t),i=[];for(let r of t)i.length>0&&i[i.length-1].t===r.t?i[i.length-1]=r:i.push(r);return i.slice(0,yi)}function xi(n){let e=[];for(let t of n.lanes){if(!jt(t.target))continue;let i=t.target===xe?Si:t.target===ke?Ai:null,r=wi(t.points??[],i);r.length>0&&e.push({target:t.target,points:r})}return{version:Qe,lanes:e}}function Yt(n){let e;try{e=JSON.parse(n)}catch(r){throw new L(`Automation is not valid JSON: ${r.message}`)}if(typeof e!="object"||e===null)throw new L("Automation must be a JSON object.");let t=e;if(t.version!==Qe)throw new L(`Unsupported automation version: ${String(t.version)}`);if(!Array.isArray(t.lanes))throw new L("Automation is missing a `lanes` array.");let i=t.lanes.map((r,o)=>{if(typeof r!="object"||r===null)throw new L(`Lane ${o} is not an object.`);let a=r;if(typeof a.target!="string"||!jt(a.target))throw new L(`Lane ${o} has an unreadable target: ${String(a.target)}`);if(!Array.isArray(a.points))throw new L(`Lane ${o} is missing a \`points\` array.`);return{target:a.target,points:a.points}});return xi({version:Qe,lanes:i})}function ki(n,e){return e?Math.pow(n,Math.pow(2,2*e)):n}function Mi(n,e){let t=n-.5,i=e-.5,r=.999,o=1e6,a=t>0?t/(r-n):t<0?-t/(n-(1-r)):0,s=i>0?i/(r-e):i<0?-i/(e-(1-r)):0,l=Math.min(o,Math.max(1,a,s));return{cx:n+t/l,cy:e+i/l,w:l}}function Ci(n,e,t){let{cx:i,cy:r,w:o}=Mi(e,t),a=2-2*o,s=n*a-1+2*o*i,l=-n*a-2*o*i,u=Ii(s,l,n),c=1-u,h=c*c+2*o*u*c+u*u;return h>0?(2*o*r*u*c+u*u)/h:n}function Ii(n,e,t){if(Math.abs(n)<1e-12)return Math.abs(e)<1e-12?t:-t/e;let i=Math.sqrt(Math.max(0,e*e-4*n*t)),r=(-e+i)/(2*n),o=(-e-i)/(2*n),a=s=>s>=-1e-9&&s<=1+1e-9;return a(r)?Math.min(1,Math.max(0,r)):a(o)?Math.min(1,Math.max(0,o)):t}function Di(n,e){let t=qt(e.viaX,e.viaY);return t?Ci(Math.min(1,Math.max(0,n)),t.x,t.y):ki(n,e.curve)}function Pi(n,e,t,i){return i==="log"&&n>0&&e>0?Math.exp(Math.log(n)+(Math.log(e)-Math.log(n))*t):n+(e-n)*t}function Me(n,e,t="linear"){let i=n.points;if(i.length===0)return 0;let r=i[0];if(e<=r.t)return r.v;let o=i[i.length-1];if(e>=o.t)return o.v;let a=0,s=i.length-1;for(;s-a>1;){let h=a+s>>1;i[h].t<=e?a=h:s=h}let l=i[a],u=i[s],c=u.t-l.t;return c<=0?u.v:Pi(l.v,u.v,Di((e-l.t)/c,l),t)}var Ce=new Map,Li=64;function Xt(n,e=xe){let t=`${e}\0${n}`,i=Ce.get(t);if(i!==void 0)return i;let r=null;try{r=Yt(n).lanes.find(o=>o.target===e)??null}catch{r=null}return Ce.size>Li&&Ce.clear(),Ce.set(t,r),r}var Kt=48,Zt=new WeakMap;function Ni(n){let e=n.points,t=e[0].v,i=e[e.length-1].v,r=[0],o=[0],a=l=>{let u=r[r.length-1];if(l<=u)return;let c=Me(n,u,"log");r.push(l),o.push(o[o.length-1]+(c+Me(n,l,"log"))/2*(l-u))},s=Math.max(0,e[0].t);a(s);for(let l=1;l<e.length;l+=1){let u=e[l-1].t,c=e[l].t;if(!(c<=0))for(let h=1;h<=Kt;h+=1)a(Math.max(u,0)+(c-u)*h/Kt)}return{ts:Float64Array.from(r),ss:Float64Array.from(o),firstRate:t,lastRate:i}}function Oi(n){let e=Zt.get(n);return e||(e=Ni(n),Zt.set(n,e)),e}function Fi(n){return typeof n!="number"&&n.points.length>0}function Ui(n,e,t){let i=0,r=n.length-1;for(;r-i>1;){let o=i+r>>1;n[o]<=t?i=o:r=o}return e[i]+(e[r]-e[i])*(t-n[i])/(n[r]-n[i])}function Jt(n,e){if(typeof n=="number")return e/n;if(!Fi(n))return e;let{ts:t,ss:i,firstRate:r,lastRate:o}=Oi(n),a=t.length-1;return e<=0?e/r:e>=i[a]?t[a]+(e-i[a])/o:Ui(i,t,e)}function Hi(n){return n?Xt(n,ke):null}function Qt(n,e){return Hi(n)??e}var Ho=[{id:"montage",label:"Montage",points:[[0,.9],[.15,.3],[.5,2.5],[.85,.3],[1,.9]]},{id:"hero",label:"Hero",points:[[0,1],[.25,1.6],[.5,.25],[.75,1.6],[1,1]]},{id:"bullet",label:"Bullet",points:[[0,3],[.4,3],[.5,.15],[.6,3],[1,3]]},{id:"jump-cut",label:"Jump cut",points:[[0,.5],[.24,.5],[.26,3],[.5,3],[.52,.5],[.74,.5],[.76,3],[1,3]]},{id:"flash-in",label:"Flash in",points:[[0,.3],[.6,.6],[1,5]]},{id:"flash-out",label:"Flash out",points:[[0,5],[.4,.6],[1,.3]]},{id:"ramp-in",label:"Ramp in",points:[[0,.5],[1,1]]},{id:"ramp-out",label:"Ramp out",points:[[0,1],[1,.5]]},{id:"slowmo-middle",label:"Slow-mo middle",points:[[0,1],[1/3,.35],[2/3,.35],[1,1]]}];var y=Object.freeze({start:"data-start",duration:"data-duration",trackIndex:"data-track-index",derivedEnd:"data-end",legacyTrack:"data-layer"}),Wo=Object.freeze([y.start,y.duration,y.trackIndex]),$o=Object.freeze([y.derivedEnd]),Bo=Object.freeze([y.derivedEnd,y.legacyTrack]);function N(n){if(n==null||n.trim()==="")return null;let e=Number(n);return Number.isFinite(e)?e:null}var nn=/^[A-Za-z0-9_.:-]+$/;function rn(n,e){let t=n.charCodeAt(e);return t>=48&&t<=57}function en(n,e){let t=e;for(;t>=0&&rn(n,t);)t--;return t}function Vi(n,e){let t=e;for(;t>=0&&(n[t]??"").trim()==="";)t--;return t}function Wi(n){let e=n.length-1;if(!rn(n,e))return null;let t=en(n,e);return n[t]==="."&&(t=en(n,t-1)),t+1}function $i(n){let e=Wi(n);if(e==null)return null;let t=Vi(n,e-1),i=n[t];if(i!=="+"&&i!=="-")return null;let r=n.slice(0,t).trim();if(!nn.test(r))return null;let o=Number(n.slice(e));return Number.isFinite(o)?{refId:r,operator:i,magnitude:o}:null}function oe(n){let e=(n??"").trim();if(!e)return null;let t=N(e);if(t!=null)return{kind:"absolute",value:t};if(nn.test(e))return{kind:"reference",refId:e,offset:0};let i=$i(e);return i?{kind:"reference",refId:i.refId,offset:i.operator==="-"?-i.magnitude:i.magnitude}:null}function w(n,e,t,i){n.push({code:e,attribute:t,value:i})}function Bi(n,e,t,i){if(e==null||e.trim()==="")return t.defaultStart===void 0?0:t.defaultStart;if(!n)return w(i,"invalid-start",y.start,e),null;if(n.kind==="absolute")return Math.max(0,n.value);let r=t.resolveReferenceEnd?.(n.refId);return r==null||!Number.isFinite(r)?(w(i,"unresolved-start-reference",y.start,e),null):Math.max(0,r+n.offset)}var Gi=1e-9;function zi(n,e){return Math.abs(n-e)<=Gi}function ji(n,e,t){let i=N(n);if(i==null){w(t,"deprecated-end",y.derivedEnd,n),w(t,"invalid-end",y.derivedEnd,n);return}if(e==null){w(t,"deprecated-end",y.derivedEnd,n);return}zi(i,e)||(w(t,"deprecated-end",y.derivedEnd,n),w(t,"conflicting-end",y.derivedEnd,n))}function qi(n,e,t){let i=N(n);return i==null||i<0?(w(t,"invalid-duration",y.duration,n),{duration:null,end:null,durationSource:"invalid"}):{duration:i,end:e==null?null:e+i,durationSource:"duration"}}function Yi(n,e,t){w(t,"deprecated-end",y.derivedEnd,n);let i=N(n);return i==null?(w(t,"invalid-end",y.derivedEnd,n),{duration:null,end:null,durationSource:"invalid"}):e==null?{duration:null,end:i,durationSource:"legacy-end"}:i<e?(w(t,"end-before-start",y.derivedEnd,n),{duration:null,end:null,durationSource:"invalid"}):{duration:i-e,end:i,durationSource:"legacy-end"}}function Xi(n,e,t){let i=n.getAttribute(y.duration),r=n.getAttribute(y.derivedEnd);if(i==null)return r==null?{duration:null,end:null,durationSource:"missing"}:Yi(r,e,t);let o=qi(i,e,t);return r!=null&&ji(r,o.end,t),o}function tn(n,e,t,i){let r=N(n);return r==null||!Number.isInteger(r)?(w(i,"invalid-track-index",e,n),{trackIndex:0,trackSource:"invalid"}):{trackIndex:r,trackSource:t}}function Ki(n,e){let t=n.getAttribute(y.trackIndex),i=n.getAttribute(y.legacyTrack);if(t==null&&i==null)return{trackIndex:0,trackSource:"default"};if(t==null&&i!=null)return w(e,"deprecated-layer",y.legacyTrack,i),tn(i,y.legacyTrack,"legacy-layer",e);let r=tn(t??"",y.trackIndex,"track-index",e);if(i==null)return r;w(e,"deprecated-layer",y.legacyTrack,i);let o=N(i);return o!=null&&o!==r.trackIndex&&w(e,"conflicting-layer",y.legacyTrack,i),r}function et(n,e={}){let t=[],i=n.getAttribute(y.start),r=oe(i),o=Bi(r,i,e,t),a=Xi(n,o,t),s=Ki(n,t);return{startExpression:r,start:o,...a,...s,diagnostics:t}}function V(n){return N(n)}function tt(n){return Vt(e=>n.getAttribute(e),P(n)?n.defaultPlaybackRate:1)}function Zi(n){return Qt(n.getAttribute("data-automation"),tt(n))}function nt(n){return Re(e=>n.getAttribute(e))}function ae(n,e){return Ji(e,nt(n),Zi(n))}function it(n){let e=Ze({tag:"video",authoredDurationSeconds:Xe(t=>n.getAttribute(t)),sourceDurationSeconds:Number.isFinite(n.duration)?n.duration:null,mediaStartSeconds:nt(n),playbackRate:tt(n)});return e.source==="media"?ae(n,n.duration):e.seconds}function Ie(n,e=0){return!Ut(n)||!n.hasAttribute("data-start")&&!n.hasAttribute("data-track-index")?null:Ze({tag:"img",authoredDurationSeconds:Wt(t=>n.getAttribute(t),e),sourceDurationSeconds:null,mediaStartSeconds:0,playbackRate:1}).seconds}function Ji(n,e,t){return typeof t=="number"?Ke(n,e,t):Number.isFinite(n)?Jt(t,Math.max(0,n-e)):null}function on(){return globalThis}function rt(n,e){if(typeof window>"u")return;let t=on(),i=t.__hf?.onSwallowed;if(i)try{i({label:n,error:e})}catch(r){}(t.__hfDebug||t.__HYPERFRAMES_DEBUG)&&console.debug(`[hyperframes] ${n} swallowed:`,e)}var Qi=n=>n.paused?.()===!0?(n.startTime?.()??0)+(n.totalDuration?.()??0)/Math.abs(n.timeScale?.()||1):0;function se(n){try{if(typeof n?.duration!="function")return null;let e=n.getChildren?.(!1,!1,!0),t=Array.isArray(e)?e:[],i=Math.max(Number(n.duration()),...t.map(Qi));return Number.isFinite(i)?i:null}catch(e){return rt("runtime.timelineDuration",e),null}}var an="data-hf-authored-duration",sn="data-hf-authored-end";function le(n){if(n==null||typeof n=="string"&&n.trim()==="")return null;let e=typeof n=="number"?n:Number(n);return Number.isFinite(e)?e:null}function De(n){let e=le(n.start);if(e==null)return null;let t=Math.max(0,e),i=le(n.duration),r=le(n.authoredDuration),o=i!=null&&i>0?i:r!=null&&r>0?r:null;if(o!=null)return{start:t,duration:o,end:t+o};let a=le(n.end),s=le(n.authoredEnd),l=a!=null&&a>t?a:s!=null&&s>t?s:null;return{start:t,duration:l==null?null:l-t,end:l}}var G=Object.freeze({start:"data-start",duration:"data-duration",trackIndex:"data-track-index",derivedEnd:"data-end",legacyTrack:"data-layer"}),ra=Object.freeze([G.start,G.duration,G.trackIndex]),oa=Object.freeze([G.derivedEnd]),aa=Object.freeze([G.derivedEnd,G.legacyTrack]);function er(n){if(n==null||n.trim()==="")return null;let e=Number(n);return Number.isFinite(e)?e:null}var ln=n=>{let e=er(n);return e!==null&&e>=0?e:null};function tr(n){return ln(n("data-playback-start"))??ln(n("data-media-start"))??0}var un="data-hf-media-start-basis";function dn(n){return n?.trim().toLowerCase()==="global"?"global":"local"}function nr(n){return dn(n.basis)==="global"?n.authoredStart:n.hostStart+n.authoredStart}function cn(n){return pn(n)?nr({authoredStart:n.authoredStart,hostStart:n.hostStart,basis:n.basis}):n.ordinaryStart()}function mn(n){return pn(n)&&dn(n.basis)==="global"}function pn(n){return!n.hasAutoStart&&n.authoredStart!=null&&n.hostStart!==0}function ot(n){return tr(e=>n.getAttribute(e))}function hn(n,e){return n-ot(e)}function ue(n){let e=n.timelineRegistry??{},t=n.includeAuthoredTimingAttrs??!1,i=n.documentRef??document,r=new WeakMap,o=new WeakMap,a=new Set,s=d=>(d.hasAttribute("data-composition-id")?d.parentElement:d)?.closest("[data-composition-id]")??null,l=(d,f)=>{let g=s(f);if(g){for(let M of g.querySelectorAll(`[id="${d}"]`))if(s(M)===g)return M}let R=i.getElementById(d);return R||(Array.from(i.querySelectorAll("[data-composition-id]")).find(M=>M.getAttribute("data-composition-id")===d)??null)},u=(d,f)=>t?d.getAttribute(f):null,c=d=>De({start:0,duration:d.getAttribute("data-duration"),authoredDuration:u(d,"data-hf-authored-duration")})?.duration??De({start:T(d,0),end:d.getAttribute("data-end"),authoredEnd:u(d,"data-hf-authored-end")})?.duration??null,h=d=>d!=null&&Number.isFinite(d)&&d>0?d:null,v=d=>{let f=d.getAttribute("data-composition-id");return f?h(se(e[f])):null},_=d=>{let f=o.get(d);if(f!==void 0)return f;let g=c(d)??h(P(d)?ae(d,d.duration):null)??h(Ie(d))??v(d);return o.set(d,g),g},S="[data-composition-src], [data-composition-id], [data-composition-file]",b=d=>d.matches(S),A=d=>!d.hasAttribute("data-composition-id")||oe(d.getAttribute("data-start"))?null:d.parentElement?.closest(`[data-start], ${S}`)??null,k=(d,f)=>hn(T(d,f),A(d)??d),C=(d,f)=>{let g=d.hasAttribute("data-composition-id")?d.parentElement?.closest("[data-composition-id]"):d.closest("[data-composition-id]");return g?k(g,f):0},I=(d,f)=>{let g=oe(d.getAttribute("data-start"));if(!g){let H=A(d);return H?T(H,f):f}if(g.kind==="absolute")return C(d,f)+Math.max(0,g.value);let R=l(g.refId,d);if(!R)return f;let M=T(R,0),ve=_(R)??0,Se=Math.min(0,C(d,0));return Math.max(Se,M+ve+g.offset)},T=(d,f)=>{let g=r.get(d);if(g!==void 0)return g??f;if(a.has(d))return f;a.add(d);try{let R=I(d,f);return r.set(d,R),R}finally{a.delete(d)}},U=d=>{let f=d.closest("[data-composition-id]");return{authoredStart:V(d.getAttribute("data-start")),hostStart:f?k(f,0):0,hasAutoStart:d.hasAttribute("data-hf-auto-start"),basis:d.getAttribute(un)}};return{resolveStartForElement:(d,f=0)=>T(d,Math.max(0,f)),resolveDurationForElement:d=>_(d),resolveMediaStartForElement:d=>{let f=U(d);return cn({...f,ordinaryStart:()=>T(d,f.hostStart)})},resolveHostStartForElement:d=>C(d,0),resolveHostSlotsForElement:d=>{let f=[];for(let g=d.parentElement;g;g=g.parentElement){if(!b(g)||A(g)||ot(g)<=0)continue;let R=T(g,0),M=c(g);f.push({start:R,end:M?R+M:1/0})}return f},isRootGlobalMediaStartForElement:d=>P(d)&&mn(U(d))}}function fn(){return{capturedTimeline:null,isPlaying:!1,currentTime:0,deterministicAdapters:[],canonicalFps:30,bridgeMuted:!1,bridgeVolume:1,mediaOutputMuted:!1,nativeMediaSyncDisabled:!1,webAudioMediaDisabled:!1,mediaAutoplayBlockedPosted:!1,mediaForceSyncNextTick:!1,playbackRate:1,bridgeLastPostedFrame:-1,bridgeLastPostedAt:0,bridgeLastPostedPlaying:!1,bridgeLastPostedMuted:!1,bridgeMaxPostIntervalMs:80,controlBridgeHandler:null,beforeUnloadHandler:null,injectedCompStyles:[],injectedCompScripts:[],injectedCompLinks:[],cachedTimedMediaEls:[],cachedMediaClips:[],cachedVideoClips:[],cachedMediaTimelineDurationSeconds:0,tornDown:!1,transportClock:null,transportRafId:null}}var bn=7200,at=1/60,de=n=>n!==null&&n>at?n:null;function ir(n){return{width:Te(n.getAttribute("data-width")),height:Te(n.getAttribute("data-height"))}}function rr(n,e){let t=null;for(let i of n.querySelectorAll("video[data-start], audio[data-start]")){let r=e.mediaStart(i);if(!Number.isFinite(r))continue;let o=e.mediaDuration(i);if(o==null||o<=at)continue;let a=Math.max(0,r)+o;(!t||a>t.seconds)&&(t={seconds:a,element:i})}return t&&de(t.seconds)!==null?t:null}function or(n,e){return rr(n,e)?.seconds??null}function ar(n,e){let t=[];for(let r of n.querySelectorAll("[data-composition-id][data-start]")){if(r.parentElement?.closest("[data-composition-id]")!==n)continue;let o=e.resolveStartForElement(r,0),a=e.resolveDurationForElement(r);!Number.isFinite(o)||a==null||a<=0||t.push(Math.max(0,o)+a)}let i=V(n.getAttribute("data-duration"));return de(Ge({authoredDurationSeconds:null,clipEndsSeconds:[i,...t]}).seconds)}var sr=n=>n.hasAttribute("data-composition-id")||n.hasAttribute("data-composition-src");function lr(n,e,{unregisteredLottie:t}){let i=[];for(let o of n.querySelectorAll("[data-start]")){let a=e.resolveStartForElement(o,0);if(!Number.isFinite(a))continue;let s=e.resolveDurationForElement(o);s!=null?i.push(Math.max(0,a)+s):(P(o)||sr(o))&&i.push(null)}(t||n.querySelector("[data-lottie-src]"))&&i.push(null);let r=Ge({authoredDurationSeconds:null,clipEndsSeconds:i});return r.pendingClips>0?{...r,seconds:null,source:"unresolved",reason:"a clip's length is pending"}:r}function ur(n){return dr(n).seconds}function dr(n){if(n.declared!==null&&Number.isFinite(n.declared)&&n.declared>0)return{seconds:n.declared,from:"declared",floorIndex:null};let e=de(n.timeline()),t=n.floors().map(h=>h??0),i=Math.max(0,...t),r=Number.isFinite(n.fallback)&&n.fallback>at?n.fallback:0,o=Math.max(i,r),s=e!==null&&e>=bn&&de(o)!==null?null:e,l=i>=r,u=h=>({seconds:h,from:l?"floor":"fallback",floorIndex:l?t.indexOf(i):null});if(s!==null)return s>=o?{seconds:s,from:"timeline",floorIndex:null}:u(o);if(de(i)!==null)return u(o);if(r>0)return{seconds:r,from:"fallback",floorIndex:null};let c=n.derived();return{seconds:c>0?c:0,from:"derived",floorIndex:null}}function gn(n){let e=ee(n);if(!e)return null;let t=ue({timelineRegistry:{},includeAuthoredTimingAttrs:!0,documentRef:n}),i=ur({declared:V(e.getAttribute("data-duration")),timeline:()=>null,floors:()=>[or(n,{mediaStart:t.resolveMediaStartForElement,mediaDuration:it}),ar(e,t)],fallback:0,derived:()=>lr(e,t,{unregisteredLottie:!1}).seconds??0});return{...ir(e),fps:fn().canonicalFps,durationSeconds:i}}var cr="hyperframes-studio-preview";var st="data-hf-player-frame";function mr(n){return Ee()&&n.defaultView?.frameElement?.hasAttribute(st)===!0}function _n(n){return n.querySelector(`meta[name="${cr}"]`)!==null||mr(n)}var yn="__hfPreviewErrors";function vn(n){return n.hasRuntime||n.runtimeInjected?!1:!!(n.hasNestedCompositions||n.hasTimelines&&n.attempts>=5)}function z(n){return typeof n=="object"&&n!==null}function Sn(n){return z(n)&&typeof n.getDuration=="function"}function An(n){return z(n)&&typeof n.duration=="function"&&typeof n.time=="function"&&typeof n.seek=="function"&&typeof n.play=="function"&&typeof n.pause=="function"}var j="https://cdn.jsdelivr.net/npm/@hyperframes/core@0.9.9/dist/hyperframe.runtime.iife.js";function ce(n){if(n===null)return null;let e=Number.parseInt(n,10);return Number.isFinite(e)&&e>0?e:null}function pr(n){let e=n?.querySelector("[data-composition-id][data-width][data-height]")??n?.querySelector("[data-width][data-height]");if(!e)return null;let t=ce(e.getAttribute("data-width")),i=ce(e.getAttribute("data-height"));return t!==null&&i!==null?{width:t,height:i}:null}function hr(n){return Array.isArray(n)?n.find(e=>typeof e=="string"&&e.trim()!==""&&e!=="[object Event]")??null:null}var Pe=class{constructor(e,t){this._iframe=e;this._callbacks=t}_iframe;_callbacks;_interval=null;_runtimeInjected=!1;_runtimeScript=null;_failure=null;get failed(){return this._failure!==null&&this._failure.document===this._iframe.contentDocument}get runtimeInjected(){return this._runtimeInjected}start(){this.stop(),this._failure=null,this._runtimeInjected=!1;let e=0;this._interval=setInterval(()=>{e++;let t=null;try{t=this._poll(e)}catch(i){i instanceof DOMException&&i.name==="SecurityError"||(t={kind:"error",message:i instanceof Error?i.message:String(i)})}t??=this._deadlineOutcome(e),t&&(this.stop(),t.kind==="error"?(this._failure={document:this._iframe.contentDocument},this._callbacks.onError(t.message)):this._callbacks.onReady(t.result))},200)}_deadlineOutcome(e){return e<40||this._callbacks.hostOwnsDeadline?.()?null:{kind:"error",message:"Composition timeline not found after 8s"}}_poll(e){let t=this._iframe.contentWindow;if(!t)return null;let i=hr(Reflect.get(t,yn));if(i!==null)return{kind:"error",message:i};let r=this._iframe.contentDocument,o=Reflect.get(t,"__timelines"),a=this.hasRuntimeBridge(t);if(vn({hasRuntime:a,hasTimelines:z(o)&&Object.keys(o).length>0,hasNestedCompositions:!!r?.querySelector("[data-composition-src]"),runtimeInjected:this._runtimeInjected,attempts:e}))return this._injectRuntime(),null;if(this._runtimeInjected&&!a)return null;let s=this._resolveReadyResult(t,r);return s?{kind:"ready",result:s}:null}_resolveReadyResult(e,t){let i=this._resolvePlaybackDurationAdapter(e)??{kind:"document",getDuration:()=>0},r=i.getDuration();if(!Number.isFinite(r)||r<=0){if(i.kind==="direct-timeline")return null;r=t?gn(t)?.durationSeconds??0:0}return r<=0?null:{duration:r,adapter:{...i,getDuration:()=>r},compositionSize:pr(t)}}stop(){this._runtimeScript&&(this._runtimeScript.onerror=null,this._runtimeScript=null),this.failed||(this._failure=null),this._interval!==null&&(clearInterval(this._interval),this._interval=null)}resolveDirectTimelineAdapter(){try{let e=this._iframe.contentWindow;return e?this._resolveDirectTimelineAdapterFromWindow(e):null}catch{return null}}resolveDirectTimelineAdapterFromWindow(e){return this._resolveDirectTimelineAdapterFromWindow(e)}hasRuntimeBridge(e){return z(Reflect.get(e,"__player"))}_injectRuntime(){this._runtimeInjected=!0;try{let e=this._iframe.contentDocument;if(!e)return;let t=e.createElement("script");t.src=this._callbacks.resolveRuntimeUrl?.()??j,this._runtimeScript=t,t.onerror=()=>{this._runtimeScript!==t||this._iframe.contentDocument!==e||(this.stop(),this._failure={document:e},this._callbacks.onError("HyperFrames runtime failed to load from "+t.src))},(e.head||e.documentElement).appendChild(t),this._callbacks.onRuntimeInjected?.()}catch{}}_resolveDirectTimelineAdapterFromWindow(e){if(this.hasRuntimeBridge(e))return null;let t=Reflect.get(e,"__timelines");if(!z(t))return null;let i=Object.keys(t);if(i.length===0)return null;let r=this._iframe.contentDocument?.querySelector("[data-composition-id]")?.getAttribute("data-composition-id"),o=r&&r in t?r:i[i.length-1],a=t[o];return An(a)?a:null}_resolvePlaybackDurationAdapter(e){let t=Reflect.get(e,"__player");if(Sn(t))return{kind:"runtime",getDuration:()=>t.getDuration()};let i=this._resolveDirectTimelineAdapterFromWindow(e);return i?{kind:"direct-timeline",timeline:i,getDuration:()=>i.duration()}:null}};var En=`
|
|
1
|
+
import{a as Ae,b as Nt,c as Ee}from"./chunk-Y2QDGAY2.js";var Ot=n=>n!==null&&Number.isFinite(n)&&n>0;function Ge(n){let e=n.clipEndsSeconds.filter(i=>i===null).length;if(Ot(n.authoredDurationSeconds))return{seconds:n.authoredDurationSeconds,source:"authored",pendingClips:e};let t=n.clipEndsSeconds.filter(Ot);return t.length>0?{seconds:Math.max(...t),source:"derived",pendingClips:e}:{seconds:null,source:"unresolved",pendingClips:e,reason:e>0?"every clip's length is still pending":"no authored duration and no clip with a length"}}var pi="http://www.w3.org/1999/xhtml";function Ft(n){return n!=null&&n.nodeType===1}function ze(n){return Ft(n)&&n.namespaceURI===pi}function je(n,e){return ze(n)&&n.localName===e}function hi(n){return je(n,"video")}function fi(n){return je(n,"audio")}function P(n){return hi(n)||fi(n)}function Ut(n){return je(n,"img")}function Te(n){if(n==null||n.trim()==="")return null;let e=Number.parseInt(n,10);return Number.isFinite(e)&&e>0?e:null}function ee(n=document){let e=n.querySelector('[data-composition-id][data-root="true"]');return ze(e)?e:n.querySelector("[data-composition-id]")}var B=Object.freeze({start:"data-start",duration:"data-duration",trackIndex:"data-track-index",derivedEnd:"data-end",legacyTrack:"data-layer"}),fo=Object.freeze([B.start,B.duration,B.trackIndex]),bo=Object.freeze([B.derivedEnd]),go=Object.freeze([B.derivedEnd,B.legacyTrack]);function qe(n){if(n==null||n.trim()==="")return null;let e=Number(n);return Number.isFinite(e)?e:null}var Ht=n=>{let e=qe(n);return e!==null&&e>=0?e:null};function Re(n){return Ht(n("data-playback-start"))??Ht(n("data-media-start"))??0}var te=.1,ne=10;function Ye(n){return Number.isFinite(n)&&n>0?Math.max(te,Math.min(ne,n)):1}function Vt(n,e=1){let t=Number.parseFloat(n("data-playback-rate")??"");return Ye(Number.isFinite(t)&&t>0?t:e)}function Xe(n){let e=qe(n("data-duration"));return e!==null&&e>0?e:null}function Wt(n,e){let t=Xe(n);if(t!==null)return t;let i=qe(n("data-end"));return i!==null?i-e:null}var bi=3;function Ke(n,e,t){return Number.isFinite(n)?Math.max(0,n-e)/Ye(t):null}function Ze(n){let{tag:e,authoredDurationSeconds:t,sourceDurationSeconds:i,mediaStartSeconds:r,playbackRate:o}=n;if(t!==null&&t>0)return{seconds:t,source:"authored"};if(e==="img")return{seconds:bi,source:"default"};if(i===null)return{seconds:null,source:"pending",reason:"source duration not yet probed"};let a=Ke(i,r,o);return a===null?{seconds:null,source:"pending",reason:"source reported a non-finite duration"}:{seconds:a,source:"media"}}var gi="data-fx-chain",yo=gi.slice(5);var ie=(n="frequency",e="Frequency",t=1e3,i=20,r=2e4)=>({kind:"number",key:n,label:e,unit:"Hz",min:i,max:r,step:1,default:t,scale:"log",automatable:!0}),Je=(n=.707,e="Bandwidth: higher is narrower.")=>({kind:"number",key:"q",label:"Q",unit:"",min:.1,max:20,step:.01,default:n,scale:"log",automatable:!0,hint:e}),we=(n=-40,e=40,t=0)=>({kind:"number",key:"gain",label:"Gain",unit:"dB",min:n,max:e,step:.1,default:t,automatable:!0}),$t={kind:"enum",key:"poles",label:"Slope",options:[{value:"1",label:"6 dB/oct"},{value:"2",label:"12 dB/oct"}],default:"2",hint:"Two poles is the usual biquad; one pole is gentler."},Bt=[{id:"gain",label:"Gain",group:"dynamics",description:"Raise or lower the whole signal. Automate it to duck under something else.",params:[we(-60,12,0)],web:"gain-node"},{id:"peaking",label:"Peaking EQ",group:"filter",description:"Boost or cut a band, leaving everything either side alone.",params:[ie("frequency","Frequency",1e3),we(-40,40,0),Je(1)],web:"biquad-peaking"},{id:"lowshelf",label:"Low Shelf",group:"filter",description:"Lift or drop everything below the corner frequency.",params:[ie("frequency","Frequency",200,20,2e3),we(-40,40,0)],web:"biquad-lowshelf"},{id:"highshelf",label:"High Shelf",group:"filter",description:"Lift or drop everything above the corner frequency.",params:[ie("frequency","Frequency",4e3,500,2e4),we(-40,40,0)],web:"biquad-highshelf"},{id:"highpass",label:"High-pass",group:"filter",description:"Remove low frequencies: the usual fix for rumble on a voice.",params:[ie("frequency","Cutoff",300,20,2e4),Je(.707),$t],web:"biquad-highpass"},{id:"lowpass",label:"Low-pass",group:"filter",description:"Remove high frequencies, which darkens or muffles a track.",params:[ie("frequency","Cutoff",8e3,100,2e4),Je(.707),$t],web:"biquad-lowpass"},{id:"compressor",label:"Compressor",group:"dynamics",description:"Pull loud parts down so the quiet ones can come up.",params:[{kind:"number",key:"threshold",label:"Threshold",unit:"dB",min:-60,max:0,step:.5,default:-24,hint:"Level above which the compressor starts working."},{kind:"number",key:"ratio",label:"Ratio",unit:":1",min:1,max:20,step:.1,default:4},{kind:"number",key:"attack",label:"Attack",unit:"ms",min:.01,max:2e3,step:.1,default:20,scale:"log"},{kind:"number",key:"release",label:"Release",unit:"ms",min:.01,max:9e3,step:1,default:250,scale:"log"},{kind:"number",key:"knee",label:"Knee",unit:"",min:1,max:8,step:.01,default:2.83,hint:"1 is a hard corner; higher eases into it."},{kind:"number",key:"makeup",label:"Makeup",unit:"dB",min:0,max:36,step:.1,default:0},{kind:"number",key:"mix",label:"Mix",unit:"",min:0,max:1,step:.01,default:1,hint:"Below 1 blends the dry signal back in."}],web:"worklet-compressor"},{id:"limiter",label:"Limiter",group:"dynamics",description:"Peak limiter that follows the signal's level. It has no lookahead, so a fast peak or an inter-sample peak can pass the ceiling; use the true-peak limiter for a delivery limit.",params:[{kind:"number",key:"limit",label:"Ceiling",unit:"dB",min:-24,max:0,step:.1,default:-1},{kind:"number",key:"attack",label:"Attack",unit:"ms",min:.1,max:80,step:.1,default:5},{kind:"number",key:"release",label:"Release",unit:"ms",min:1,max:8e3,step:1,default:50,scale:"log"},{kind:"number",key:"level_out",label:"Output",unit:"dB",min:-24,max:24,step:.1,default:0}],web:"worklet-limiter"},{id:"truepeak",label:"True-peak limiter",group:"dynamics",description:"Lookahead limiter that holds a 4x estimate of the inter-sample peak at a dBTP ceiling; full-band noise can land up to about 1.7 dB above it. Adds lookahead plus about 0.3 ms of latency.",params:[{kind:"number",key:"ceiling",label:"Ceiling",unit:"dBTP",min:-24,max:0,step:.1,default:-1,hint:"Target true peak, measured on a 4x oversampled signal. Dense full-band sound can end up to about 1.7 dB above it."},{kind:"number",key:"lookahead",label:"Lookahead",unit:"ms",min:.5,max:10,step:.1,default:3,hint:"How far ahead the gain starts falling. Longer is smoother and adds the same latency."},{kind:"number",key:"release",label:"Release",unit:"ms",min:10,max:2e3,step:1,default:80,scale:"log"}],web:"worklet-truepeak"},{id:"gate",label:"Noise Gate",group:"dynamics",description:"Silence the track when it drops below the threshold.",params:[{kind:"number",key:"threshold",label:"Threshold",unit:"dB",min:-80,max:0,step:.5,default:-35},{kind:"number",key:"range",label:"Range",unit:"dB",min:-80,max:0,step:.5,default:-24,hint:"How far down the gate pulls when closed."},{kind:"number",key:"ratio",label:"Ratio",unit:":1",min:1,max:20,step:.1,default:10},{kind:"number",key:"attack",label:"Attack",unit:"ms",min:.01,max:9e3,step:.1,default:1,scale:"log"},{kind:"number",key:"release",label:"Release",unit:"ms",min:.01,max:9e3,step:1,default:100,scale:"log"},{kind:"number",key:"knee",label:"Knee",unit:"",min:1,max:8,step:.01,default:2.83}],web:"worklet-gate"},{id:"saturate",label:"Saturation",group:"nonlinear",description:"Soft-clip the waveform for warmth or outright distortion.",params:[{kind:"enum",key:"type",label:"Curve",options:[{value:"tanh",label:"Tanh"},{value:"atan",label:"Arctan"},{value:"cubic",label:"Cubic"},{value:"exp",label:"Exponential"},{value:"alg",label:"Algebraic"},{value:"quintic",label:"Quintic"},{value:"sin",label:"Sine"},{value:"erf",label:"Error function"},{value:"hard",label:"Hard clip"}],default:"tanh"},{kind:"number",key:"threshold",label:"Threshold",unit:"dB",min:-40,max:0,step:.1,default:-6},{kind:"number",key:"output",automatable:!0,label:"Output",unit:"dB",min:-24,max:24,step:.1,default:0},{kind:"number",key:"oversample",label:"Oversample",unit:"x",min:1,max:8,step:1,default:4,hint:"Higher costs more but keeps aliasing down."}],web:"waveshaper"},{id:"bitcrush",label:"Bitcrush",group:"nonlinear",description:"Drop bit depth and sample rate for a lo-fi, digital sound.",params:[{kind:"number",key:"bits",label:"Bit depth",unit:"bit",min:1,max:32,step:.1,default:8},{kind:"number",key:"samples",label:"Sample hold",unit:"x",min:1,max:250,step:1,default:1,hint:"Repeats each sample N times, a crude downsample."},{kind:"number",key:"mix",label:"Mix",unit:"",min:0,max:1,step:.01,default:1}],web:"worklet-bitcrush"},{id:"pitchshift",label:"Pitch shift",group:"time",description:"Shifts pitch up or down without changing playback speed. Adds ~50 ms of latency.",params:[{kind:"number",key:"semitones",label:"Semitones",unit:"st",min:-12,max:12,step:1,default:0},{kind:"number",key:"mix",label:"Mix",unit:"",min:0,max:1,step:.01,default:1}],web:"worklet-pitchshift"},{id:"delay",label:"Delay",group:"time",description:"Repeating echoes behind the dry signal.",params:[{kind:"number",key:"time",automatable:!0,label:"Time",unit:"ms",min:1,max:5e3,step:1,default:250,scale:"log"},{kind:"number",key:"feedback",automatable:!0,label:"Feedback",unit:"",min:.01,max:.95,step:.01,default:.35},{kind:"number",key:"mix",automatable:!0,label:"Mix",unit:"",min:0,max:1,step:.01,default:.4}],web:"delay-feedback"},{id:"chorus",label:"Chorus",group:"time",description:"Detuned copies of the signal for width and thickness.",params:[{kind:"number",key:"delay",automatable:!0,label:"Delay",unit:"ms",min:1,max:100,step:.1,default:7},{kind:"number",key:"depth",automatable:!0,label:"Depth",unit:"ms",min:0,max:10,step:.01,default:2},{kind:"number",key:"speed",automatable:!0,label:"Rate",unit:"Hz",min:.01,max:10,step:.01,default:1},{kind:"number",key:"mix",automatable:!0,label:"Mix",unit:"",min:0,max:1,step:.01,default:.5}],web:"chorus-lfo"},{id:"phaser",label:"Phaser",group:"time",description:"Sweeping notches moving through the spectrum.",params:[{kind:"number",key:"in_gain",automatable:!0,label:"Input",unit:"",min:0,max:1,step:.01,default:.4},{kind:"number",key:"out_gain",automatable:!0,label:"Output",unit:"",min:0,max:2,step:.01,default:.74},{kind:"number",key:"delay",label:"Delay",unit:"ms",min:.1,max:5,step:.1,default:3},{kind:"number",key:"decay",label:"Decay",unit:"",min:0,max:.99,step:.01,default:.4},{kind:"number",key:"speed",automatable:!0,label:"Rate",unit:"Hz",min:.1,max:2,step:.01,default:.5},{kind:"enum",key:"type",label:"Waveform",options:[{value:"0",label:"Triangular"},{value:"1",label:"Sinusoidal"}],default:"0"}],web:"allpass-phaser"},{id:"reverb",label:"Reverb",group:"time",description:"Room tail. Both ends convolve the same generated impulse, so preview matches render.",params:[{kind:"number",key:"size",label:"Room size",unit:"",min:.05,max:1,step:.01,default:.7},{kind:"number",key:"damping",label:"Damping",unit:"",min:0,max:1,step:.01,default:.5,hint:"Higher rolls the top off the tail faster."},{kind:"number",key:"wet",automatable:!0,label:"Wet",unit:"",min:0,max:1,step:.01,default:.35},{kind:"number",key:"dry",automatable:!0,label:"Dry",unit:"",min:0,max:1,step:.01,default:.7}],web:"convolver"}],vo=new Map(Bt.map(n=>[n.id,n]));var So=Bt.map(n=>n.id);function _i(n){return 10**(n/20)}var Gt=_i(12);var zt="data-automation",Do=zt.slice(5),Qe=1,yi=512,L=class extends Error{constructor(e){super(e),this.name="AudioAutomationError"}},xe="volume",ke="rate";function jt(n){if(n===xe)return{kind:"volume"};if(n===ke)return{kind:"rate"};let e=n.split(".");if(e.length===3&&e[0]==="fx"&&e[1]===vi){let r=e[2];return r?{kind:"preset",presetId:r}:null}if(e.length!==3||e[0]!=="fx")return null;let[,t,i]=e;return!t||!i?null:{kind:"fx",nodeId:t,param:i}}var vi="preset";var Si={min:0,max:Gt,step:.01,unit:"",label:"Volume",scale:"linear",default:1};var Ai={min:te,max:ne,step:.05,unit:"x",label:"Speed",scale:"log",default:1};function re(n){if(typeof n=="number")return Number.isFinite(n)?n:null;if(typeof n=="string"&&n.trim()!==""){let e=Number(n);return Number.isFinite(e)?e:null}return null}function Ei(n){let e=re(n);return e===null||e===0?0:Math.min(1,Math.max(-1,e))}function qt(n,e){let t=re(n),i=re(e);if(t===null||i===null)return null;let r=s=>Math.min(.999,Math.max(.001,s)),o=r(t),a=r(i);return Math.abs(o-a)<1e-6?null:{x:o,y:a}}function Ti(n){let e=Ei(n?.curve),t=qt(n?.viaX,n?.viaY);return{...e?{curve:e}:{},...t?{viaX:t.x,viaY:t.y}:{}}}function Ri(n,e){let t=re(n?.t),i=re(n?.v);if(t===null||i===null)return null;let r=e?Math.min(e.max,Math.max(e.min,i)):i;return{t:Math.max(0,t),v:r,...Ti(n)}}function wi(n,e){let t=n.map(r=>Ri(r,e)).filter(r=>r!==null).sort((r,o)=>r.t-o.t),i=[];for(let r of t)i.length>0&&i[i.length-1].t===r.t?i[i.length-1]=r:i.push(r);return i.slice(0,yi)}function xi(n){let e=[];for(let t of n.lanes){if(!jt(t.target))continue;let i=t.target===xe?Si:t.target===ke?Ai:null,r=wi(t.points??[],i);r.length>0&&e.push({target:t.target,points:r})}return{version:Qe,lanes:e}}function Yt(n){let e;try{e=JSON.parse(n)}catch(r){throw new L(`Automation is not valid JSON: ${r.message}`)}if(typeof e!="object"||e===null)throw new L("Automation must be a JSON object.");let t=e;if(t.version!==Qe)throw new L(`Unsupported automation version: ${String(t.version)}`);if(!Array.isArray(t.lanes))throw new L("Automation is missing a `lanes` array.");let i=t.lanes.map((r,o)=>{if(typeof r!="object"||r===null)throw new L(`Lane ${o} is not an object.`);let a=r;if(typeof a.target!="string"||!jt(a.target))throw new L(`Lane ${o} has an unreadable target: ${String(a.target)}`);if(!Array.isArray(a.points))throw new L(`Lane ${o} is missing a \`points\` array.`);return{target:a.target,points:a.points}});return xi({version:Qe,lanes:i})}function ki(n,e){return e?Math.pow(n,Math.pow(2,2*e)):n}function Mi(n,e){let t=n-.5,i=e-.5,r=.999,o=1e6,a=t>0?t/(r-n):t<0?-t/(n-(1-r)):0,s=i>0?i/(r-e):i<0?-i/(e-(1-r)):0,l=Math.min(o,Math.max(1,a,s));return{cx:n+t/l,cy:e+i/l,w:l}}function Ci(n,e,t){let{cx:i,cy:r,w:o}=Mi(e,t),a=2-2*o,s=n*a-1+2*o*i,l=-n*a-2*o*i,u=Ii(s,l,n),c=1-u,h=c*c+2*o*u*c+u*u;return h>0?(2*o*r*u*c+u*u)/h:n}function Ii(n,e,t){if(Math.abs(n)<1e-12)return Math.abs(e)<1e-12?t:-t/e;let i=Math.sqrt(Math.max(0,e*e-4*n*t)),r=(-e+i)/(2*n),o=(-e-i)/(2*n),a=s=>s>=-1e-9&&s<=1+1e-9;return a(r)?Math.min(1,Math.max(0,r)):a(o)?Math.min(1,Math.max(0,o)):t}function Di(n,e){let t=qt(e.viaX,e.viaY);return t?Ci(Math.min(1,Math.max(0,n)),t.x,t.y):ki(n,e.curve)}function Pi(n,e,t,i){return i==="log"&&n>0&&e>0?Math.exp(Math.log(n)+(Math.log(e)-Math.log(n))*t):n+(e-n)*t}function Me(n,e,t="linear"){let i=n.points;if(i.length===0)return 0;let r=i[0];if(e<=r.t)return r.v;let o=i[i.length-1];if(e>=o.t)return o.v;let a=0,s=i.length-1;for(;s-a>1;){let h=a+s>>1;i[h].t<=e?a=h:s=h}let l=i[a],u=i[s],c=u.t-l.t;return c<=0?u.v:Pi(l.v,u.v,Di((e-l.t)/c,l),t)}var Ce=new Map,Li=64;function Xt(n,e=xe){let t=`${e}\0${n}`,i=Ce.get(t);if(i!==void 0)return i;let r=null;try{r=Yt(n).lanes.find(o=>o.target===e)??null}catch{r=null}return Ce.size>Li&&Ce.clear(),Ce.set(t,r),r}var Kt=48,Zt=new WeakMap;function Ni(n){let e=n.points,t=e[0].v,i=e[e.length-1].v,r=[0],o=[0],a=l=>{let u=r[r.length-1];if(l<=u)return;let c=Me(n,u,"log");r.push(l),o.push(o[o.length-1]+(c+Me(n,l,"log"))/2*(l-u))},s=Math.max(0,e[0].t);a(s);for(let l=1;l<e.length;l+=1){let u=e[l-1].t,c=e[l].t;if(!(c<=0))for(let h=1;h<=Kt;h+=1)a(Math.max(u,0)+(c-u)*h/Kt)}return{ts:Float64Array.from(r),ss:Float64Array.from(o),firstRate:t,lastRate:i}}function Oi(n){let e=Zt.get(n);return e||(e=Ni(n),Zt.set(n,e)),e}function Fi(n){return typeof n!="number"&&n.points.length>0}function Ui(n,e,t){let i=0,r=n.length-1;for(;r-i>1;){let o=i+r>>1;n[o]<=t?i=o:r=o}return e[i]+(e[r]-e[i])*(t-n[i])/(n[r]-n[i])}function Jt(n,e){if(typeof n=="number")return e/n;if(!Fi(n))return e;let{ts:t,ss:i,firstRate:r,lastRate:o}=Oi(n),a=t.length-1;return e<=0?e/r:e>=i[a]?t[a]+(e-i[a])/o:Ui(i,t,e)}function Hi(n){return n?Xt(n,ke):null}function Qt(n,e){return Hi(n)??e}var Ho=[{id:"montage",label:"Montage",points:[[0,.9],[.15,.3],[.5,2.5],[.85,.3],[1,.9]]},{id:"hero",label:"Hero",points:[[0,1],[.25,1.6],[.5,.25],[.75,1.6],[1,1]]},{id:"bullet",label:"Bullet",points:[[0,3],[.4,3],[.5,.15],[.6,3],[1,3]]},{id:"jump-cut",label:"Jump cut",points:[[0,.5],[.24,.5],[.26,3],[.5,3],[.52,.5],[.74,.5],[.76,3],[1,3]]},{id:"flash-in",label:"Flash in",points:[[0,.3],[.6,.6],[1,5]]},{id:"flash-out",label:"Flash out",points:[[0,5],[.4,.6],[1,.3]]},{id:"ramp-in",label:"Ramp in",points:[[0,.5],[1,1]]},{id:"ramp-out",label:"Ramp out",points:[[0,1],[1,.5]]},{id:"slowmo-middle",label:"Slow-mo middle",points:[[0,1],[1/3,.35],[2/3,.35],[1,1]]}];var y=Object.freeze({start:"data-start",duration:"data-duration",trackIndex:"data-track-index",derivedEnd:"data-end",legacyTrack:"data-layer"}),Wo=Object.freeze([y.start,y.duration,y.trackIndex]),$o=Object.freeze([y.derivedEnd]),Bo=Object.freeze([y.derivedEnd,y.legacyTrack]);function N(n){if(n==null||n.trim()==="")return null;let e=Number(n);return Number.isFinite(e)?e:null}var nn=/^[A-Za-z0-9_.:-]+$/;function rn(n,e){let t=n.charCodeAt(e);return t>=48&&t<=57}function en(n,e){let t=e;for(;t>=0&&rn(n,t);)t--;return t}function Vi(n,e){let t=e;for(;t>=0&&(n[t]??"").trim()==="";)t--;return t}function Wi(n){let e=n.length-1;if(!rn(n,e))return null;let t=en(n,e);return n[t]==="."&&(t=en(n,t-1)),t+1}function $i(n){let e=Wi(n);if(e==null)return null;let t=Vi(n,e-1),i=n[t];if(i!=="+"&&i!=="-")return null;let r=n.slice(0,t).trim();if(!nn.test(r))return null;let o=Number(n.slice(e));return Number.isFinite(o)?{refId:r,operator:i,magnitude:o}:null}function oe(n){let e=(n??"").trim();if(!e)return null;let t=N(e);if(t!=null)return{kind:"absolute",value:t};if(nn.test(e))return{kind:"reference",refId:e,offset:0};let i=$i(e);return i?{kind:"reference",refId:i.refId,offset:i.operator==="-"?-i.magnitude:i.magnitude}:null}function w(n,e,t,i){n.push({code:e,attribute:t,value:i})}function Bi(n,e,t,i){if(e==null||e.trim()==="")return t.defaultStart===void 0?0:t.defaultStart;if(!n)return w(i,"invalid-start",y.start,e),null;if(n.kind==="absolute")return Math.max(0,n.value);let r=t.resolveReferenceEnd?.(n.refId);return r==null||!Number.isFinite(r)?(w(i,"unresolved-start-reference",y.start,e),null):Math.max(0,r+n.offset)}var Gi=1e-9;function zi(n,e){return Math.abs(n-e)<=Gi}function ji(n,e,t){let i=N(n);if(i==null){w(t,"deprecated-end",y.derivedEnd,n),w(t,"invalid-end",y.derivedEnd,n);return}if(e==null){w(t,"deprecated-end",y.derivedEnd,n);return}zi(i,e)||(w(t,"deprecated-end",y.derivedEnd,n),w(t,"conflicting-end",y.derivedEnd,n))}function qi(n,e,t){let i=N(n);return i==null||i<0?(w(t,"invalid-duration",y.duration,n),{duration:null,end:null,durationSource:"invalid"}):{duration:i,end:e==null?null:e+i,durationSource:"duration"}}function Yi(n,e,t){w(t,"deprecated-end",y.derivedEnd,n);let i=N(n);return i==null?(w(t,"invalid-end",y.derivedEnd,n),{duration:null,end:null,durationSource:"invalid"}):e==null?{duration:null,end:i,durationSource:"legacy-end"}:i<e?(w(t,"end-before-start",y.derivedEnd,n),{duration:null,end:null,durationSource:"invalid"}):{duration:i-e,end:i,durationSource:"legacy-end"}}function Xi(n,e,t){let i=n.getAttribute(y.duration),r=n.getAttribute(y.derivedEnd);if(i==null)return r==null?{duration:null,end:null,durationSource:"missing"}:Yi(r,e,t);let o=qi(i,e,t);return r!=null&&ji(r,o.end,t),o}function tn(n,e,t,i){let r=N(n);return r==null||!Number.isInteger(r)?(w(i,"invalid-track-index",e,n),{trackIndex:0,trackSource:"invalid"}):{trackIndex:r,trackSource:t}}function Ki(n,e){let t=n.getAttribute(y.trackIndex),i=n.getAttribute(y.legacyTrack);if(t==null&&i==null)return{trackIndex:0,trackSource:"default"};if(t==null&&i!=null)return w(e,"deprecated-layer",y.legacyTrack,i),tn(i,y.legacyTrack,"legacy-layer",e);let r=tn(t??"",y.trackIndex,"track-index",e);if(i==null)return r;w(e,"deprecated-layer",y.legacyTrack,i);let o=N(i);return o!=null&&o!==r.trackIndex&&w(e,"conflicting-layer",y.legacyTrack,i),r}function et(n,e={}){let t=[],i=n.getAttribute(y.start),r=oe(i),o=Bi(r,i,e,t),a=Xi(n,o,t),s=Ki(n,t);return{startExpression:r,start:o,...a,...s,diagnostics:t}}function V(n){return N(n)}function tt(n){return Vt(e=>n.getAttribute(e),P(n)?n.defaultPlaybackRate:1)}function Zi(n){return Qt(n.getAttribute("data-automation"),tt(n))}function nt(n){return Re(e=>n.getAttribute(e))}function ae(n,e){return Ji(e,nt(n),Zi(n))}function it(n){let e=Ze({tag:"video",authoredDurationSeconds:Xe(t=>n.getAttribute(t)),sourceDurationSeconds:Number.isFinite(n.duration)?n.duration:null,mediaStartSeconds:nt(n),playbackRate:tt(n)});return e.source==="media"?ae(n,n.duration):e.seconds}function Ie(n,e=0){return!Ut(n)||!n.hasAttribute("data-start")&&!n.hasAttribute("data-track-index")?null:Ze({tag:"img",authoredDurationSeconds:Wt(t=>n.getAttribute(t),e),sourceDurationSeconds:null,mediaStartSeconds:0,playbackRate:1}).seconds}function Ji(n,e,t){return typeof t=="number"?Ke(n,e,t):Number.isFinite(n)?Jt(t,Math.max(0,n-e)):null}function on(){return globalThis}function rt(n,e){if(typeof window>"u")return;let t=on(),i=t.__hf?.onSwallowed;if(i)try{i({label:n,error:e})}catch(r){}(t.__hfDebug||t.__HYPERFRAMES_DEBUG)&&console.debug(`[hyperframes] ${n} swallowed:`,e)}var Qi=n=>n.paused?.()===!0?(n.startTime?.()??0)+(n.totalDuration?.()??0)/Math.abs(n.timeScale?.()||1):0;function se(n){try{if(typeof n?.duration!="function")return null;let e=n.getChildren?.(!1,!1,!0),t=Array.isArray(e)?e:[],i=Math.max(Number(n.duration()),...t.map(Qi));return Number.isFinite(i)?i:null}catch(e){return rt("runtime.timelineDuration",e),null}}var an="data-hf-authored-duration",sn="data-hf-authored-end";function le(n){if(n==null||typeof n=="string"&&n.trim()==="")return null;let e=typeof n=="number"?n:Number(n);return Number.isFinite(e)?e:null}function De(n){let e=le(n.start);if(e==null)return null;let t=Math.max(0,e),i=le(n.duration),r=le(n.authoredDuration),o=i!=null&&i>0?i:r!=null&&r>0?r:null;if(o!=null)return{start:t,duration:o,end:t+o};let a=le(n.end),s=le(n.authoredEnd),l=a!=null&&a>t?a:s!=null&&s>t?s:null;return{start:t,duration:l==null?null:l-t,end:l}}var G=Object.freeze({start:"data-start",duration:"data-duration",trackIndex:"data-track-index",derivedEnd:"data-end",legacyTrack:"data-layer"}),ra=Object.freeze([G.start,G.duration,G.trackIndex]),oa=Object.freeze([G.derivedEnd]),aa=Object.freeze([G.derivedEnd,G.legacyTrack]);function er(n){if(n==null||n.trim()==="")return null;let e=Number(n);return Number.isFinite(e)?e:null}var ln=n=>{let e=er(n);return e!==null&&e>=0?e:null};function tr(n){return ln(n("data-playback-start"))??ln(n("data-media-start"))??0}var un="data-hf-media-start-basis";function dn(n){return n?.trim().toLowerCase()==="global"?"global":"local"}function nr(n){return dn(n.basis)==="global"?n.authoredStart:n.hostStart+n.authoredStart}function cn(n){return pn(n)?nr({authoredStart:n.authoredStart,hostStart:n.hostStart,basis:n.basis}):n.ordinaryStart()}function mn(n){return pn(n)&&dn(n.basis)==="global"}function pn(n){return!n.hasAutoStart&&n.authoredStart!=null&&n.hostStart!==0}function ot(n){return tr(e=>n.getAttribute(e))}function hn(n,e){return n-ot(e)}function ue(n){let e=n.timelineRegistry??{},t=n.includeAuthoredTimingAttrs??!1,i=n.documentRef??document,r=new WeakMap,o=new WeakMap,a=new Set,s=d=>(d.hasAttribute("data-composition-id")?d.parentElement:d)?.closest("[data-composition-id]")??null,l=(d,f)=>{let g=s(f);if(g){for(let M of g.querySelectorAll(`[id="${d}"]`))if(s(M)===g)return M}let R=i.getElementById(d);return R||(Array.from(i.querySelectorAll("[data-composition-id]")).find(M=>M.getAttribute("data-composition-id")===d)??null)},u=(d,f)=>t?d.getAttribute(f):null,c=d=>De({start:0,duration:d.getAttribute("data-duration"),authoredDuration:u(d,"data-hf-authored-duration")})?.duration??De({start:T(d,0),end:d.getAttribute("data-end"),authoredEnd:u(d,"data-hf-authored-end")})?.duration??null,h=d=>d!=null&&Number.isFinite(d)&&d>0?d:null,v=d=>{let f=d.getAttribute("data-composition-id");return f?h(se(e[f])):null},_=d=>{let f=o.get(d);if(f!==void 0)return f;let g=c(d)??h(P(d)?ae(d,d.duration):null)??h(Ie(d))??v(d);return o.set(d,g),g},S="[data-composition-src], [data-composition-id], [data-composition-file]",b=d=>d.matches(S),A=d=>!d.hasAttribute("data-composition-id")||oe(d.getAttribute("data-start"))?null:d.parentElement?.closest(`[data-start], ${S}`)??null,k=(d,f)=>hn(T(d,f),A(d)??d),C=(d,f)=>{let g=d.hasAttribute("data-composition-id")?d.parentElement?.closest("[data-composition-id]"):d.closest("[data-composition-id]");return g?k(g,f):0},I=(d,f)=>{let g=oe(d.getAttribute("data-start"));if(!g){let H=A(d);return H?T(H,f):f}if(g.kind==="absolute")return C(d,f)+Math.max(0,g.value);let R=l(g.refId,d);if(!R)return f;let M=T(R,0),ve=_(R)??0,Se=Math.min(0,C(d,0));return Math.max(Se,M+ve+g.offset)},T=(d,f)=>{let g=r.get(d);if(g!==void 0)return g??f;if(a.has(d))return f;a.add(d);try{let R=I(d,f);return r.set(d,R),R}finally{a.delete(d)}},U=d=>{let f=d.closest("[data-composition-id]");return{authoredStart:V(d.getAttribute("data-start")),hostStart:f?k(f,0):0,hasAutoStart:d.hasAttribute("data-hf-auto-start"),basis:d.getAttribute(un)}};return{resolveStartForElement:(d,f=0)=>T(d,Math.max(0,f)),resolveDurationForElement:d=>_(d),resolveMediaStartForElement:d=>{let f=U(d);return cn({...f,ordinaryStart:()=>T(d,f.hostStart)})},resolveHostStartForElement:d=>C(d,0),resolveHostSlotsForElement:d=>{let f=[];for(let g=d.parentElement;g;g=g.parentElement){if(!b(g)||A(g)||ot(g)<=0)continue;let R=T(g,0),M=c(g);f.push({start:R,end:M?R+M:1/0})}return f},isRootGlobalMediaStartForElement:d=>P(d)&&mn(U(d))}}function fn(){return{capturedTimeline:null,isPlaying:!1,currentTime:0,deterministicAdapters:[],canonicalFps:30,bridgeMuted:!1,bridgeVolume:1,mediaOutputMuted:!1,nativeMediaSyncDisabled:!1,webAudioMediaDisabled:!1,mediaAutoplayBlockedPosted:!1,mediaForceSyncNextTick:!1,playbackRate:1,bridgeLastPostedFrame:-1,bridgeLastPostedAt:0,bridgeLastPostedPlaying:!1,bridgeLastPostedMuted:!1,bridgeMaxPostIntervalMs:80,controlBridgeHandler:null,beforeUnloadHandler:null,injectedCompStyles:[],injectedCompScripts:[],injectedCompLinks:[],cachedTimedMediaEls:[],cachedMediaClips:[],cachedVideoClips:[],cachedMediaTimelineDurationSeconds:0,tornDown:!1,transportClock:null,transportRafId:null}}var bn=7200,at=1/60,de=n=>n!==null&&n>at?n:null;function ir(n){return{width:Te(n.getAttribute("data-width")),height:Te(n.getAttribute("data-height"))}}function rr(n,e){let t=null;for(let i of n.querySelectorAll("video[data-start], audio[data-start]")){let r=e.mediaStart(i);if(!Number.isFinite(r))continue;let o=e.mediaDuration(i);if(o==null||o<=at)continue;let a=Math.max(0,r)+o;(!t||a>t.seconds)&&(t={seconds:a,element:i})}return t&&de(t.seconds)!==null?t:null}function or(n,e){return rr(n,e)?.seconds??null}function ar(n,e){let t=[];for(let r of n.querySelectorAll("[data-composition-id][data-start]")){if(r.parentElement?.closest("[data-composition-id]")!==n)continue;let o=e.resolveStartForElement(r,0),a=e.resolveDurationForElement(r);!Number.isFinite(o)||a==null||a<=0||t.push(Math.max(0,o)+a)}let i=V(n.getAttribute("data-duration"));return de(Ge({authoredDurationSeconds:null,clipEndsSeconds:[i,...t]}).seconds)}var sr=n=>n.hasAttribute("data-composition-id")||n.hasAttribute("data-composition-src");function lr(n,e,{unregisteredLottie:t}){let i=[];for(let o of n.querySelectorAll("[data-start]")){let a=e.resolveStartForElement(o,0);if(!Number.isFinite(a))continue;let s=e.resolveDurationForElement(o);s!=null?i.push(Math.max(0,a)+s):(P(o)||sr(o))&&i.push(null)}(t||n.querySelector("[data-lottie-src]"))&&i.push(null);let r=Ge({authoredDurationSeconds:null,clipEndsSeconds:i});return r.pendingClips>0?{...r,seconds:null,source:"unresolved",reason:"a clip's length is pending"}:r}function ur(n){return dr(n).seconds}function dr(n){if(n.declared!==null&&Number.isFinite(n.declared)&&n.declared>0)return{seconds:n.declared,from:"declared",floorIndex:null};let e=de(n.timeline()),t=n.floors().map(h=>h??0),i=Math.max(0,...t),r=Number.isFinite(n.fallback)&&n.fallback>at?n.fallback:0,o=Math.max(i,r),s=e!==null&&e>=bn&&de(o)!==null?null:e,l=i>=r,u=h=>({seconds:h,from:l?"floor":"fallback",floorIndex:l?t.indexOf(i):null});if(s!==null)return s>=o?{seconds:s,from:"timeline",floorIndex:null}:u(o);if(de(i)!==null)return u(o);if(r>0)return{seconds:r,from:"fallback",floorIndex:null};let c=n.derived();return{seconds:c>0?c:0,from:"derived",floorIndex:null}}function gn(n){let e=ee(n);if(!e)return null;let t=ue({timelineRegistry:{},includeAuthoredTimingAttrs:!0,documentRef:n}),i=ur({declared:V(e.getAttribute("data-duration")),timeline:()=>null,floors:()=>[or(n,{mediaStart:t.resolveMediaStartForElement,mediaDuration:it}),ar(e,t)],fallback:0,derived:()=>lr(e,t,{unregisteredLottie:!1}).seconds??0});return{...ir(e),fps:fn().canonicalFps,durationSeconds:i}}var cr="hyperframes-studio-preview";var st="data-hf-player-frame";function mr(n){return Ee()&&n.defaultView?.frameElement?.hasAttribute(st)===!0}function _n(n){return n.querySelector(`meta[name="${cr}"]`)!==null||mr(n)}var yn="__hfPreviewErrors";function vn(n){return n.hasRuntime||n.runtimeInjected?!1:!!(n.hasNestedCompositions||n.hasTimelines&&n.attempts>=5)}function z(n){return typeof n=="object"&&n!==null}function Sn(n){return z(n)&&typeof n.getDuration=="function"}function An(n){return z(n)&&typeof n.duration=="function"&&typeof n.time=="function"&&typeof n.seek=="function"&&typeof n.play=="function"&&typeof n.pause=="function"}var j="https://cdn.jsdelivr.net/npm/@hyperframes/core@0.9.11/dist/hyperframe.runtime.iife.js";function ce(n){if(n===null)return null;let e=Number.parseInt(n,10);return Number.isFinite(e)&&e>0?e:null}function pr(n){let e=n?.querySelector("[data-composition-id][data-width][data-height]")??n?.querySelector("[data-width][data-height]");if(!e)return null;let t=ce(e.getAttribute("data-width")),i=ce(e.getAttribute("data-height"));return t!==null&&i!==null?{width:t,height:i}:null}function hr(n){return Array.isArray(n)?n.find(e=>typeof e=="string"&&e.trim()!==""&&e!=="[object Event]")??null:null}var Pe=class{constructor(e,t){this._iframe=e;this._callbacks=t}_iframe;_callbacks;_interval=null;_runtimeInjected=!1;_runtimeScript=null;_failure=null;get failed(){return this._failure!==null&&this._failure.document===this._iframe.contentDocument}get runtimeInjected(){return this._runtimeInjected}start(){this.stop(),this._failure=null,this._runtimeInjected=!1;let e=0;this._interval=setInterval(()=>{e++;let t=null;try{t=this._poll(e)}catch(i){i instanceof DOMException&&i.name==="SecurityError"||(t={kind:"error",message:i instanceof Error?i.message:String(i)})}t??=this._deadlineOutcome(e),t&&(this.stop(),t.kind==="error"?(this._failure={document:this._iframe.contentDocument},this._callbacks.onError(t.message)):this._callbacks.onReady(t.result))},200)}_deadlineOutcome(e){return e<40||this._callbacks.hostOwnsDeadline?.()?null:{kind:"error",message:"Composition timeline not found after 8s"}}_poll(e){let t=this._iframe.contentWindow;if(!t)return null;let i=hr(Reflect.get(t,yn));if(i!==null)return{kind:"error",message:i};let r=this._iframe.contentDocument,o=Reflect.get(t,"__timelines"),a=this.hasRuntimeBridge(t);if(vn({hasRuntime:a,hasTimelines:z(o)&&Object.keys(o).length>0,hasNestedCompositions:!!r?.querySelector("[data-composition-src]"),runtimeInjected:this._runtimeInjected,attempts:e}))return this._injectRuntime(),null;if(this._runtimeInjected&&!a)return null;let s=this._resolveReadyResult(t,r);return s?{kind:"ready",result:s}:null}_resolveReadyResult(e,t){let i=this._resolvePlaybackDurationAdapter(e)??{kind:"document",getDuration:()=>0},r=i.getDuration();if(!Number.isFinite(r)||r<=0){if(i.kind==="direct-timeline")return null;r=t?gn(t)?.durationSeconds??0:0}return r<=0?null:{duration:r,adapter:{...i,getDuration:()=>r},compositionSize:pr(t)}}stop(){this._runtimeScript&&(this._runtimeScript.onerror=null,this._runtimeScript=null),this.failed||(this._failure=null),this._interval!==null&&(clearInterval(this._interval),this._interval=null)}resolveDirectTimelineAdapter(){try{let e=this._iframe.contentWindow;return e?this._resolveDirectTimelineAdapterFromWindow(e):null}catch{return null}}resolveDirectTimelineAdapterFromWindow(e){return this._resolveDirectTimelineAdapterFromWindow(e)}hasRuntimeBridge(e){return z(Reflect.get(e,"__player"))}_injectRuntime(){this._runtimeInjected=!0;try{let e=this._iframe.contentDocument;if(!e)return;let t=e.createElement("script");t.src=this._callbacks.resolveRuntimeUrl?.()??j,this._runtimeScript=t,t.onerror=()=>{this._runtimeScript!==t||this._iframe.contentDocument!==e||(this.stop(),this._failure={document:e},this._callbacks.onError("HyperFrames runtime failed to load from "+t.src))},(e.head||e.documentElement).appendChild(t),this._callbacks.onRuntimeInjected?.()}catch{}}_resolveDirectTimelineAdapterFromWindow(e){if(this.hasRuntimeBridge(e))return null;let t=Reflect.get(e,"__timelines");if(!z(t))return null;let i=Object.keys(t);if(i.length===0)return null;let r=this._iframe.contentDocument?.querySelector("[data-composition-id]")?.getAttribute("data-composition-id"),o=r&&r in t?r:i[i.length-1],a=t[o];return An(a)?a:null}_resolvePlaybackDurationAdapter(e){let t=Reflect.get(e,"__player");if(Sn(t))return{kind:"runtime",getDuration:()=>t.getDuration()};let i=this._resolveDirectTimelineAdapterFromWindow(e);return i?{kind:"direct-timeline",timeline:i,getDuration:()=>i.duration()}:null}};var En=`
|
|
2
2
|
:host {
|
|
3
3
|
display: block;
|
|
4
4
|
position: relative;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hyperframes/player",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.11",
|
|
4
4
|
"description": "Embeddable web component for HyperFrames compositions",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
}
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@hyperframes/core": "0.9.
|
|
31
|
+
"@hyperframes/core": "0.9.11"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
34
|
"@types/bun": "^1.1.0",
|