@hyperframes/player 0.9.4 → 0.9.5
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 ci=Object.getOwnPropertyDescriptor;var mi=Object.getOwnPropertyNames;var pi=Object.prototype.hasOwnProperty;var fi=(t,e)=>{for(var n in e)je(t,n,{get:e[n],enumerable:!0})},hi=(t,e,n,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of mi(e))!pi.call(t,r)&&r!==n&&je(t,r,{get:()=>e[r],enumerable:!(i=ci(e,r))||i.enumerable});return t};var bi=t=>hi(je({},"__esModule",{value:!0}),t);var ho={};fi(ho,{HyperframesPlayer:()=>ze,SPEED_PRESETS:()=>pt,formatSpeed:()=>W,formatTime:()=>Le});module.exports=bi(ho);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 gi="http://www.w3.org/1999/xhtml";function Ut(t){return t!=null&&t.nodeType===1}function Ye(t){return Ut(t)&&t.namespaceURI===gi}function Xe(t,e){return Ye(t)&&t.localName===e}function _i(t){return Xe(t,"video")}function yi(t){return Xe(t,"audio")}function P(t){return _i(t)||yi(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"}),Ao=Object.freeze([G.start,G.duration,G.trackIndex]),So=Object.freeze([G.derivedEnd]),Eo=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 Bt(t,e){let n=Je(t);if(n!==null)return n;let i=Ke(t("data-end"));return i!==null?i-e:null}var vi=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:vi,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 Ai="data-fx-chain",Ro=Ai.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}),$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."},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),$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),tt(.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"}],xo=new Map(Gt.map(t=>[t.id,t]));var wo=Gt.map(t=>t.id);function Si(t){return 10**(t/20)}var zt=Si(12);var jt="data-automation",Uo=jt.slice(5),nt=1,Ei=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]===Ti){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 Ti="preset";var Ri={min:0,max:zt,step:.01,unit:"",label:"Volume",scale:"linear",default:1};var xi={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 wi(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 ki(t){let e=wi(t?.curve),n=Yt(t?.viaX,t?.viaY);return{...e?{curve:e}:{},...n?{viaX:n.x,viaY:n.y}:{}}}function Mi(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,...ki(t)}}function Ci(t,e){let n=t.map(r=>Mi(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,Ei)}function Ii(t){let e=[];for(let n of t.lanes){if(!qt(n.target))continue;let i=n.target===Re?Ri:n.target===xe?xi:null,r=Ci(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 Ii({version:nt,lanes:i})}function Di(t,e){return e?Math.pow(t,Math.pow(2,2*e)):t}function Pi(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 Li(t,e,n){let{cx:i,cy:r,w:o}=Pi(e,n),a=2-2*o,s=t*a-1+2*o*i,l=-t*a-2*o*i,u=Ni(s,l,t),c=1-u,f=c*c+2*o*u*c+u*u;return f>0?(2*o*r*u*c+u*u)/f:t}function Ni(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 Oi(t,e){let n=Yt(e.viaX,e.viaY);return n?Li(Math.min(1,Math.max(0,t)),n.x,n.y):Di(t,e.curve)}function Fi(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 f=a+s>>1;i[f].t<=e?a=f:s=f}let l=i[a],u=i[s],c=u.t-l.t;return c<=0?u.v:Fi(l.v,u.v,Oi((e-l.t)/c,l),n)}var ke=new Map,Ui=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>Ui&&ke.clear(),ke.set(n,r),r}var Zt=48,Jt=new WeakMap;function Hi(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 f=1;f<=Zt;f+=1)a(Math.max(u,0)+(c-u)*f/Zt)}return{ts:Float64Array.from(r),ss:Float64Array.from(o),firstRate:n,lastRate:i}}function Vi(t){let e=Jt.get(t);return e||(e=Hi(t),Jt.set(t,e)),e}function Wi(t){return typeof t!="number"&&t.points.length>0}function Bi(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(!Wi(t))return e;let{ts:n,ss:i,firstRate:r,lastRate:o}=Vi(t),a=n.length-1;return e<=0?e/r:e>=i[a]?n[a]+(e-i[a])/o:Bi(i,n,e)}function $i(t){return t?Kt(t,xe):null}function en(t,e){return $i(t)??e}var zo=[{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"}),qo=Object.freeze([y.start,y.duration,y.trackIndex]),Yo=Object.freeze([y.derivedEnd]),Xo=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 Gi(t,e){let n=e;for(;n>=0&&(t[n]??"").trim()==="";)n--;return n}function zi(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 ji(t){let e=zi(t);if(e==null)return null;let n=Gi(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=ji(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 qi(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 Yi=1e-9;function Xi(t,e){return Math.abs(t-e)<=Yi}function Ki(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}Xi(i,e)||(x(n,"deprecated-end",y.derivedEnd,t),x(n,"conflicting-end",y.derivedEnd,t))}function Zi(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 Ji(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 Qi(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"}:Ji(r,e,n);let o=Zi(i,e,n);return r!=null&&Ki(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 er(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=qi(r,i,e,n),a=Qi(t,o,n),s=er(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 tr(t){return en(t.getAttribute("data-automation"),rt(t))}function ot(t){return Ee(e=>t.getAttribute(e))}function ae(t,e){return nr(e,ot(t),tr(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:Bt(n=>t.getAttribute(n),e),sourceDurationSeconds:null,mediaStartSeconds:0,playbackRate:1}).seconds}function nr(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 ir=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(ir));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"}),da=Object.freeze([z.start,z.duration,z.trackIndex]),ca=Object.freeze([z.derivedEnd]),ma=Object.freeze([z.derivedEnd,z.legacyTrack]);function rr(t){if(t==null||t.trim()==="")return null;let e=Number(t);return Number.isFinite(e)?e:null}var un=t=>{let e=rr(t);return e!==null&&e>=0?e:null};function or(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 ar(t){return cn(t.basis)==="global"?t.authoredStart:t.hostStart+t.authoredStart}function mn(t){return fn(t)?ar({authoredStart:t.authoredStart,hostStart:t.hostStart,basis:t.basis}):t.ordinaryStart()}function pn(t){return fn(t)&&cn(t.basis)==="global"}function fn(t){return!t.hasAutoStart&&t.authoredStart!=null&&t.hostStart!==0}function lt(t){return or(e=>t.getAttribute(e))}function hn(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,h)=>{let g=s(h);if(g){for(let k of g.querySelectorAll(`[id="${d}"]`))if(s(k)===g)return k}let R=i.getElementById(d);return R||(Array.from(i.querySelectorAll("[data-composition-id]")).find(k=>k.getAttribute("data-composition-id")===d)??null)},u=(d,h)=>n?d.getAttribute(h):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,f=d=>d!=null&&Number.isFinite(d)&&d>0?d:null,v=d=>{let h=d.getAttribute("data-composition-id");return h?f(se(e[h])):null},b=d=>{let h=o.get(d);if(h!==void 0)return h;let g=c(d)??f(P(d)?ae(d,d.duration):null)??f(Me(d))??v(d);return o.set(d,g),g},A="[data-composition-src], [data-composition-id], [data-composition-file]",_=d=>d.matches(A),S=d=>!d.hasAttribute("data-composition-id")||oe(d.getAttribute("data-start"))?null:d.parentElement?.closest(`[data-start], ${A}`)??null,C=(d,h)=>hn(T(d,h),S(d)??d),M=(d,h)=>{let g=d.hasAttribute("data-composition-id")?d.parentElement?.closest("[data-composition-id]"):d.closest("[data-composition-id]");return g?C(g,h):0},I=(d,h)=>{let g=oe(d.getAttribute("data-start"));if(!g){let H=S(d);return H?T(H,h):h}if(g.kind==="absolute")return M(d,h)+Math.max(0,g.value);let R=l(g.refId,d);if(!R)return h;let k=T(R,0),ve=b(R)??0,Ae=Math.min(0,M(d,0));return Math.max(Ae,k+ve+g.offset)},T=(d,h)=>{let g=r.get(d);if(g!==void 0)return g??h;if(a.has(d))return h;a.add(d);try{let R=I(d,h);return r.set(d,R),R}finally{a.delete(d)}},U=d=>{let h=d.closest("[data-composition-id]");return{authoredStart:V(d.getAttribute("data-start")),hostStart:h?C(h,0):0,hasAutoStart:d.hasAttribute("data-hf-auto-start"),basis:d.getAttribute(dn)}};return{resolveStartForElement:(d,h=0)=>T(d,Math.max(0,h)),resolveDurationForElement:d=>b(d),resolveMediaStartForElement:d=>{let h=U(d);return mn({...h,ordinaryStart:()=>T(d,h.hostStart)})},resolveHostStartForElement:d=>M(d,0),resolveHostSlotsForElement:d=>{let h=[];for(let g=d.parentElement;g;g=g.parentElement){if(!_(g)||S(g)||lt(g)<=0)continue;let R=T(g,0),k=c(g);h.push({start:R,end:k?R+k:1/0})}return h},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 sr(t){return{width:Se(t.getAttribute("data-width")),height:Se(t.getAttribute("data-height"))}}function lr(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 ur(t,e){return lr(t,e)?.seconds??null}function dr(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 cr=t=>t.hasAttribute("data-composition-id")||t.hasAttribute("data-composition-src");function mr(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)||cr(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 pr(t){return fr(t).seconds}function fr(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(f=>f??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=f=>({seconds:f,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=pr({declared:V(e.getAttribute("data-duration")),timeline:()=>null,floors:()=>[ur(t,{mediaStart:n.resolveMediaStartForElement,mediaDuration:at}),dr(e,n)],fallback:0,derived:()=>mr(e,n,{unregisteredLottie:!1}).seconds??0});return{...sr(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 hr="hyperframes-studio-preview";var dt="data-hf-player-frame";function br(t){return De()&&t.defaultView?.frameElement?.hasAttribute(dt)===!0}function vn(t){return t.querySelector(`meta[name="${hr}"]`)!==null||br(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.4/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 gr(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 _r(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=_r(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:gr(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 ci=Object.getOwnPropertyDescriptor;var mi=Object.getOwnPropertyNames;var pi=Object.prototype.hasOwnProperty;var fi=(t,e)=>{for(var n in e)je(t,n,{get:e[n],enumerable:!0})},hi=(t,e,n,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of mi(e))!pi.call(t,r)&&r!==n&&je(t,r,{get:()=>e[r],enumerable:!(i=ci(e,r))||i.enumerable});return t};var bi=t=>hi(je({},"__esModule",{value:!0}),t);var ho={};fi(ho,{HyperframesPlayer:()=>ze,SPEED_PRESETS:()=>pt,formatSpeed:()=>W,formatTime:()=>Le});module.exports=bi(ho);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 gi="http://www.w3.org/1999/xhtml";function Ut(t){return t!=null&&t.nodeType===1}function Ye(t){return Ut(t)&&t.namespaceURI===gi}function Xe(t,e){return Ye(t)&&t.localName===e}function _i(t){return Xe(t,"video")}function yi(t){return Xe(t,"audio")}function P(t){return _i(t)||yi(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"}),Ao=Object.freeze([G.start,G.duration,G.trackIndex]),So=Object.freeze([G.derivedEnd]),Eo=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 Bt(t,e){let n=Je(t);if(n!==null)return n;let i=Ke(t("data-end"));return i!==null?i-e:null}var vi=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:vi,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 Ai="data-fx-chain",Ro=Ai.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}),$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."},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),$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),tt(.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"}],xo=new Map(Gt.map(t=>[t.id,t]));var wo=Gt.map(t=>t.id);function Si(t){return 10**(t/20)}var zt=Si(12);var jt="data-automation",Uo=jt.slice(5),nt=1,Ei=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]===Ti){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 Ti="preset";var Ri={min:0,max:zt,step:.01,unit:"",label:"Volume",scale:"linear",default:1};var xi={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 wi(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 ki(t){let e=wi(t?.curve),n=Yt(t?.viaX,t?.viaY);return{...e?{curve:e}:{},...n?{viaX:n.x,viaY:n.y}:{}}}function Mi(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,...ki(t)}}function Ci(t,e){let n=t.map(r=>Mi(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,Ei)}function Ii(t){let e=[];for(let n of t.lanes){if(!qt(n.target))continue;let i=n.target===Re?Ri:n.target===xe?xi:null,r=Ci(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 Ii({version:nt,lanes:i})}function Di(t,e){return e?Math.pow(t,Math.pow(2,2*e)):t}function Pi(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 Li(t,e,n){let{cx:i,cy:r,w:o}=Pi(e,n),a=2-2*o,s=t*a-1+2*o*i,l=-t*a-2*o*i,u=Ni(s,l,t),c=1-u,f=c*c+2*o*u*c+u*u;return f>0?(2*o*r*u*c+u*u)/f:t}function Ni(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 Oi(t,e){let n=Yt(e.viaX,e.viaY);return n?Li(Math.min(1,Math.max(0,t)),n.x,n.y):Di(t,e.curve)}function Fi(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 f=a+s>>1;i[f].t<=e?a=f:s=f}let l=i[a],u=i[s],c=u.t-l.t;return c<=0?u.v:Fi(l.v,u.v,Oi((e-l.t)/c,l),n)}var ke=new Map,Ui=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>Ui&&ke.clear(),ke.set(n,r),r}var Zt=48,Jt=new WeakMap;function Hi(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 f=1;f<=Zt;f+=1)a(Math.max(u,0)+(c-u)*f/Zt)}return{ts:Float64Array.from(r),ss:Float64Array.from(o),firstRate:n,lastRate:i}}function Vi(t){let e=Jt.get(t);return e||(e=Hi(t),Jt.set(t,e)),e}function Wi(t){return typeof t!="number"&&t.points.length>0}function Bi(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(!Wi(t))return e;let{ts:n,ss:i,firstRate:r,lastRate:o}=Vi(t),a=n.length-1;return e<=0?e/r:e>=i[a]?n[a]+(e-i[a])/o:Bi(i,n,e)}function $i(t){return t?Kt(t,xe):null}function en(t,e){return $i(t)??e}var zo=[{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"}),qo=Object.freeze([y.start,y.duration,y.trackIndex]),Yo=Object.freeze([y.derivedEnd]),Xo=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 Gi(t,e){let n=e;for(;n>=0&&(t[n]??"").trim()==="";)n--;return n}function zi(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 ji(t){let e=zi(t);if(e==null)return null;let n=Gi(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=ji(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 qi(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 Yi=1e-9;function Xi(t,e){return Math.abs(t-e)<=Yi}function Ki(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}Xi(i,e)||(x(n,"deprecated-end",y.derivedEnd,t),x(n,"conflicting-end",y.derivedEnd,t))}function Zi(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 Ji(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 Qi(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"}:Ji(r,e,n);let o=Zi(i,e,n);return r!=null&&Ki(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 er(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=qi(r,i,e,n),a=Qi(t,o,n),s=er(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 tr(t){return en(t.getAttribute("data-automation"),rt(t))}function ot(t){return Ee(e=>t.getAttribute(e))}function ae(t,e){return nr(e,ot(t),tr(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:Bt(n=>t.getAttribute(n),e),sourceDurationSeconds:null,mediaStartSeconds:0,playbackRate:1}).seconds}function nr(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 ir=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(ir));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"}),da=Object.freeze([z.start,z.duration,z.trackIndex]),ca=Object.freeze([z.derivedEnd]),ma=Object.freeze([z.derivedEnd,z.legacyTrack]);function rr(t){if(t==null||t.trim()==="")return null;let e=Number(t);return Number.isFinite(e)?e:null}var un=t=>{let e=rr(t);return e!==null&&e>=0?e:null};function or(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 ar(t){return cn(t.basis)==="global"?t.authoredStart:t.hostStart+t.authoredStart}function mn(t){return fn(t)?ar({authoredStart:t.authoredStart,hostStart:t.hostStart,basis:t.basis}):t.ordinaryStart()}function pn(t){return fn(t)&&cn(t.basis)==="global"}function fn(t){return!t.hasAutoStart&&t.authoredStart!=null&&t.hostStart!==0}function lt(t){return or(e=>t.getAttribute(e))}function hn(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,h)=>{let g=s(h);if(g){for(let k of g.querySelectorAll(`[id="${d}"]`))if(s(k)===g)return k}let R=i.getElementById(d);return R||(Array.from(i.querySelectorAll("[data-composition-id]")).find(k=>k.getAttribute("data-composition-id")===d)??null)},u=(d,h)=>n?d.getAttribute(h):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,f=d=>d!=null&&Number.isFinite(d)&&d>0?d:null,v=d=>{let h=d.getAttribute("data-composition-id");return h?f(se(e[h])):null},b=d=>{let h=o.get(d);if(h!==void 0)return h;let g=c(d)??f(P(d)?ae(d,d.duration):null)??f(Me(d))??v(d);return o.set(d,g),g},A="[data-composition-src], [data-composition-id], [data-composition-file]",_=d=>d.matches(A),S=d=>!d.hasAttribute("data-composition-id")||oe(d.getAttribute("data-start"))?null:d.parentElement?.closest(`[data-start], ${A}`)??null,C=(d,h)=>hn(T(d,h),S(d)??d),M=(d,h)=>{let g=d.hasAttribute("data-composition-id")?d.parentElement?.closest("[data-composition-id]"):d.closest("[data-composition-id]");return g?C(g,h):0},I=(d,h)=>{let g=oe(d.getAttribute("data-start"));if(!g){let H=S(d);return H?T(H,h):h}if(g.kind==="absolute")return M(d,h)+Math.max(0,g.value);let R=l(g.refId,d);if(!R)return h;let k=T(R,0),ve=b(R)??0,Ae=Math.min(0,M(d,0));return Math.max(Ae,k+ve+g.offset)},T=(d,h)=>{let g=r.get(d);if(g!==void 0)return g??h;if(a.has(d))return h;a.add(d);try{let R=I(d,h);return r.set(d,R),R}finally{a.delete(d)}},U=d=>{let h=d.closest("[data-composition-id]");return{authoredStart:V(d.getAttribute("data-start")),hostStart:h?C(h,0):0,hasAutoStart:d.hasAttribute("data-hf-auto-start"),basis:d.getAttribute(dn)}};return{resolveStartForElement:(d,h=0)=>T(d,Math.max(0,h)),resolveDurationForElement:d=>b(d),resolveMediaStartForElement:d=>{let h=U(d);return mn({...h,ordinaryStart:()=>T(d,h.hostStart)})},resolveHostStartForElement:d=>M(d,0),resolveHostSlotsForElement:d=>{let h=[];for(let g=d.parentElement;g;g=g.parentElement){if(!_(g)||S(g)||lt(g)<=0)continue;let R=T(g,0),k=c(g);h.push({start:R,end:k?R+k:1/0})}return h},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 sr(t){return{width:Se(t.getAttribute("data-width")),height:Se(t.getAttribute("data-height"))}}function lr(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 ur(t,e){return lr(t,e)?.seconds??null}function dr(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 cr=t=>t.hasAttribute("data-composition-id")||t.hasAttribute("data-composition-src");function mr(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)||cr(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 pr(t){return fr(t).seconds}function fr(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(f=>f??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=f=>({seconds:f,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=pr({declared:V(e.getAttribute("data-duration")),timeline:()=>null,floors:()=>[ur(t,{mediaStart:n.resolveMediaStartForElement,mediaDuration:at}),dr(e,n)],fallback:0,derived:()=>mr(e,n,{unregisteredLottie:!1}).seconds??0});return{...sr(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 hr="hyperframes-studio-preview";var dt="data-hf-player-frame";function br(t){return De()&&t.defaultView?.frameElement?.hasAttribute(dt)===!0}function vn(t){return t.querySelector(`meta[name="${hr}"]`)!==null||br(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.5/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 gr(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 _r(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=_r(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:gr(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 ci=Object.getOwnPropertyDescriptor;var mi=Object.getOwnPropertyNames;var pi=Object.prototype.hasOwnProperty;var fi=(t,e)=>{for(var n in e)je(t,n,{get:e[n],enumerable:!0})},hi=(t,e,n,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of mi(e))!pi.call(t,r)&&r!==n&&je(t,r,{get:()=>e[r],enumerable:!(i=ci(e,r))||i.enumerable});return t};var bi=t=>hi(je({},"__esModule",{value:!0}),t);var ho={};fi(ho,{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 gi="http://www.w3.org/1999/xhtml";function Ut(t){return t!=null&&t.nodeType===1}function Ye(t){return Ut(t)&&t.namespaceURI===gi}function Xe(t,e){return Ye(t)&&t.localName===e}function _i(t){return Xe(t,"video")}function yi(t){return Xe(t,"audio")}function P(t){return _i(t)||yi(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"}),Ao=Object.freeze([G.start,G.duration,G.trackIndex]),So=Object.freeze([G.derivedEnd]),Eo=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 Bt(t,e){let n=Je(t);if(n!==null)return n;let i=Ke(t("data-end"));return i!==null?i-e:null}var vi=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:vi,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 Ai="data-fx-chain",Ro=Ai.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}),$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."},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),$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),tt(.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"}],xo=new Map(Gt.map(t=>[t.id,t]));var wo=Gt.map(t=>t.id);function Si(t){return 10**(t/20)}var zt=Si(12);var jt="data-automation",Uo=jt.slice(5),nt=1,Ei=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]===Ti){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 Ti="preset";var Ri={min:0,max:zt,step:.01,unit:"",label:"Volume",scale:"linear",default:1};var xi={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 wi(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 ki(t){let e=wi(t?.curve),n=Yt(t?.viaX,t?.viaY);return{...e?{curve:e}:{},...n?{viaX:n.x,viaY:n.y}:{}}}function Mi(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,...ki(t)}}function Ci(t,e){let n=t.map(r=>Mi(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,Ei)}function Ii(t){let e=[];for(let n of t.lanes){if(!qt(n.target))continue;let i=n.target===Re?Ri:n.target===xe?xi:null,r=Ci(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 Ii({version:nt,lanes:i})}function Di(t,e){return e?Math.pow(t,Math.pow(2,2*e)):t}function Pi(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 Li(t,e,n){let{cx:i,cy:r,w:o}=Pi(e,n),a=2-2*o,s=t*a-1+2*o*i,l=-t*a-2*o*i,u=Ni(s,l,t),c=1-u,f=c*c+2*o*u*c+u*u;return f>0?(2*o*r*u*c+u*u)/f:t}function Ni(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 Oi(t,e){let n=Yt(e.viaX,e.viaY);return n?Li(Math.min(1,Math.max(0,t)),n.x,n.y):Di(t,e.curve)}function Fi(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 f=a+s>>1;i[f].t<=e?a=f:s=f}let l=i[a],u=i[s],c=u.t-l.t;return c<=0?u.v:Fi(l.v,u.v,Oi((e-l.t)/c,l),n)}var ke=new Map,Ui=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>Ui&&ke.clear(),ke.set(n,r),r}var Zt=48,Jt=new WeakMap;function Hi(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 f=1;f<=Zt;f+=1)a(Math.max(u,0)+(c-u)*f/Zt)}return{ts:Float64Array.from(r),ss:Float64Array.from(o),firstRate:n,lastRate:i}}function Vi(t){let e=Jt.get(t);return e||(e=Hi(t),Jt.set(t,e)),e}function Wi(t){return typeof t!="number"&&t.points.length>0}function Bi(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(!Wi(t))return e;let{ts:n,ss:i,firstRate:r,lastRate:o}=Vi(t),a=n.length-1;return e<=0?e/r:e>=i[a]?n[a]+(e-i[a])/o:Bi(i,n,e)}function $i(t){return t?Kt(t,xe):null}function en(t,e){return $i(t)??e}var zo=[{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"}),qo=Object.freeze([y.start,y.duration,y.trackIndex]),Yo=Object.freeze([y.derivedEnd]),Xo=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 Gi(t,e){let n=e;for(;n>=0&&(t[n]??"").trim()==="";)n--;return n}function zi(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 ji(t){let e=zi(t);if(e==null)return null;let n=Gi(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=ji(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 qi(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 Yi=1e-9;function Xi(t,e){return Math.abs(t-e)<=Yi}function Ki(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}Xi(i,e)||(x(n,"deprecated-end",y.derivedEnd,t),x(n,"conflicting-end",y.derivedEnd,t))}function Zi(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 Ji(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 Qi(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"}:Ji(r,e,n);let o=Zi(i,e,n);return r!=null&&Ki(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 er(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=qi(r,i,e,n),a=Qi(t,o,n),s=er(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 tr(t){return en(t.getAttribute("data-automation"),rt(t))}function ot(t){return Ee(e=>t.getAttribute(e))}function ae(t,e){return nr(e,ot(t),tr(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:Bt(n=>t.getAttribute(n),e),sourceDurationSeconds:null,mediaStartSeconds:0,playbackRate:1}).seconds}function nr(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 ir=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(ir));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"}),da=Object.freeze([z.start,z.duration,z.trackIndex]),ca=Object.freeze([z.derivedEnd]),ma=Object.freeze([z.derivedEnd,z.legacyTrack]);function rr(t){if(t==null||t.trim()==="")return null;let e=Number(t);return Number.isFinite(e)?e:null}var un=t=>{let e=rr(t);return e!==null&&e>=0?e:null};function or(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 ar(t){return cn(t.basis)==="global"?t.authoredStart:t.hostStart+t.authoredStart}function mn(t){return fn(t)?ar({authoredStart:t.authoredStart,hostStart:t.hostStart,basis:t.basis}):t.ordinaryStart()}function pn(t){return fn(t)&&cn(t.basis)==="global"}function fn(t){return!t.hasAutoStart&&t.authoredStart!=null&&t.hostStart!==0}function lt(t){return or(e=>t.getAttribute(e))}function hn(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,h)=>{let g=s(h);if(g){for(let k of g.querySelectorAll(`[id="${d}"]`))if(s(k)===g)return k}let R=i.getElementById(d);return R||(Array.from(i.querySelectorAll("[data-composition-id]")).find(k=>k.getAttribute("data-composition-id")===d)??null)},u=(d,h)=>n?d.getAttribute(h):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,f=d=>d!=null&&Number.isFinite(d)&&d>0?d:null,v=d=>{let h=d.getAttribute("data-composition-id");return h?f(se(e[h])):null},b=d=>{let h=o.get(d);if(h!==void 0)return h;let g=c(d)??f(P(d)?ae(d,d.duration):null)??f(Me(d))??v(d);return o.set(d,g),g},A="[data-composition-src], [data-composition-id], [data-composition-file]",_=d=>d.matches(A),S=d=>!d.hasAttribute("data-composition-id")||oe(d.getAttribute("data-start"))?null:d.parentElement?.closest(`[data-start], ${A}`)??null,C=(d,h)=>hn(T(d,h),S(d)??d),M=(d,h)=>{let g=d.hasAttribute("data-composition-id")?d.parentElement?.closest("[data-composition-id]"):d.closest("[data-composition-id]");return g?C(g,h):0},I=(d,h)=>{let g=oe(d.getAttribute("data-start"));if(!g){let H=S(d);return H?T(H,h):h}if(g.kind==="absolute")return M(d,h)+Math.max(0,g.value);let R=l(g.refId,d);if(!R)return h;let k=T(R,0),ve=b(R)??0,Ae=Math.min(0,M(d,0));return Math.max(Ae,k+ve+g.offset)},T=(d,h)=>{let g=r.get(d);if(g!==void 0)return g??h;if(a.has(d))return h;a.add(d);try{let R=I(d,h);return r.set(d,R),R}finally{a.delete(d)}},U=d=>{let h=d.closest("[data-composition-id]");return{authoredStart:V(d.getAttribute("data-start")),hostStart:h?C(h,0):0,hasAutoStart:d.hasAttribute("data-hf-auto-start"),basis:d.getAttribute(dn)}};return{resolveStartForElement:(d,h=0)=>T(d,Math.max(0,h)),resolveDurationForElement:d=>b(d),resolveMediaStartForElement:d=>{let h=U(d);return mn({...h,ordinaryStart:()=>T(d,h.hostStart)})},resolveHostStartForElement:d=>M(d,0),resolveHostSlotsForElement:d=>{let h=[];for(let g=d.parentElement;g;g=g.parentElement){if(!_(g)||S(g)||lt(g)<=0)continue;let R=T(g,0),k=c(g);h.push({start:R,end:k?R+k:1/0})}return h},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 sr(t){return{width:Se(t.getAttribute("data-width")),height:Se(t.getAttribute("data-height"))}}function lr(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 ur(t,e){return lr(t,e)?.seconds??null}function dr(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 cr=t=>t.hasAttribute("data-composition-id")||t.hasAttribute("data-composition-src");function mr(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)||cr(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 pr(t){return fr(t).seconds}function fr(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(f=>f??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=f=>({seconds:f,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=pr({declared:V(e.getAttribute("data-duration")),timeline:()=>null,floors:()=>[ur(t,{mediaStart:n.resolveMediaStartForElement,mediaDuration:at}),dr(e,n)],fallback:0,derived:()=>mr(e,n,{unregisteredLottie:!1}).seconds??0});return{...sr(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 hr="hyperframes-studio-preview";var dt="data-hf-player-frame";function br(t){return De()&&t.defaultView?.frameElement?.hasAttribute(dt)===!0}function vn(t){return t.querySelector(`meta[name="${hr}"]`)!==null||br(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.4/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 gr(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 _r(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=_r(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:gr(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 ci=Object.getOwnPropertyDescriptor;var mi=Object.getOwnPropertyNames;var pi=Object.prototype.hasOwnProperty;var fi=(t,e)=>{for(var n in e)je(t,n,{get:e[n],enumerable:!0})},hi=(t,e,n,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of mi(e))!pi.call(t,r)&&r!==n&&je(t,r,{get:()=>e[r],enumerable:!(i=ci(e,r))||i.enumerable});return t};var bi=t=>hi(je({},"__esModule",{value:!0}),t);var ho={};fi(ho,{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 gi="http://www.w3.org/1999/xhtml";function Ut(t){return t!=null&&t.nodeType===1}function Ye(t){return Ut(t)&&t.namespaceURI===gi}function Xe(t,e){return Ye(t)&&t.localName===e}function _i(t){return Xe(t,"video")}function yi(t){return Xe(t,"audio")}function P(t){return _i(t)||yi(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"}),Ao=Object.freeze([G.start,G.duration,G.trackIndex]),So=Object.freeze([G.derivedEnd]),Eo=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 Bt(t,e){let n=Je(t);if(n!==null)return n;let i=Ke(t("data-end"));return i!==null?i-e:null}var vi=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:vi,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 Ai="data-fx-chain",Ro=Ai.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}),$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."},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),$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),tt(.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"}],xo=new Map(Gt.map(t=>[t.id,t]));var wo=Gt.map(t=>t.id);function Si(t){return 10**(t/20)}var zt=Si(12);var jt="data-automation",Uo=jt.slice(5),nt=1,Ei=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]===Ti){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 Ti="preset";var Ri={min:0,max:zt,step:.01,unit:"",label:"Volume",scale:"linear",default:1};var xi={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 wi(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 ki(t){let e=wi(t?.curve),n=Yt(t?.viaX,t?.viaY);return{...e?{curve:e}:{},...n?{viaX:n.x,viaY:n.y}:{}}}function Mi(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,...ki(t)}}function Ci(t,e){let n=t.map(r=>Mi(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,Ei)}function Ii(t){let e=[];for(let n of t.lanes){if(!qt(n.target))continue;let i=n.target===Re?Ri:n.target===xe?xi:null,r=Ci(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 Ii({version:nt,lanes:i})}function Di(t,e){return e?Math.pow(t,Math.pow(2,2*e)):t}function Pi(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 Li(t,e,n){let{cx:i,cy:r,w:o}=Pi(e,n),a=2-2*o,s=t*a-1+2*o*i,l=-t*a-2*o*i,u=Ni(s,l,t),c=1-u,f=c*c+2*o*u*c+u*u;return f>0?(2*o*r*u*c+u*u)/f:t}function Ni(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 Oi(t,e){let n=Yt(e.viaX,e.viaY);return n?Li(Math.min(1,Math.max(0,t)),n.x,n.y):Di(t,e.curve)}function Fi(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 f=a+s>>1;i[f].t<=e?a=f:s=f}let l=i[a],u=i[s],c=u.t-l.t;return c<=0?u.v:Fi(l.v,u.v,Oi((e-l.t)/c,l),n)}var ke=new Map,Ui=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>Ui&&ke.clear(),ke.set(n,r),r}var Zt=48,Jt=new WeakMap;function Hi(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 f=1;f<=Zt;f+=1)a(Math.max(u,0)+(c-u)*f/Zt)}return{ts:Float64Array.from(r),ss:Float64Array.from(o),firstRate:n,lastRate:i}}function Vi(t){let e=Jt.get(t);return e||(e=Hi(t),Jt.set(t,e)),e}function Wi(t){return typeof t!="number"&&t.points.length>0}function Bi(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(!Wi(t))return e;let{ts:n,ss:i,firstRate:r,lastRate:o}=Vi(t),a=n.length-1;return e<=0?e/r:e>=i[a]?n[a]+(e-i[a])/o:Bi(i,n,e)}function $i(t){return t?Kt(t,xe):null}function en(t,e){return $i(t)??e}var zo=[{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"}),qo=Object.freeze([y.start,y.duration,y.trackIndex]),Yo=Object.freeze([y.derivedEnd]),Xo=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 Gi(t,e){let n=e;for(;n>=0&&(t[n]??"").trim()==="";)n--;return n}function zi(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 ji(t){let e=zi(t);if(e==null)return null;let n=Gi(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=ji(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 qi(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 Yi=1e-9;function Xi(t,e){return Math.abs(t-e)<=Yi}function Ki(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}Xi(i,e)||(x(n,"deprecated-end",y.derivedEnd,t),x(n,"conflicting-end",y.derivedEnd,t))}function Zi(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 Ji(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 Qi(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"}:Ji(r,e,n);let o=Zi(i,e,n);return r!=null&&Ki(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 er(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=qi(r,i,e,n),a=Qi(t,o,n),s=er(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 tr(t){return en(t.getAttribute("data-automation"),rt(t))}function ot(t){return Ee(e=>t.getAttribute(e))}function ae(t,e){return nr(e,ot(t),tr(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:Bt(n=>t.getAttribute(n),e),sourceDurationSeconds:null,mediaStartSeconds:0,playbackRate:1}).seconds}function nr(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 ir=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(ir));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"}),da=Object.freeze([z.start,z.duration,z.trackIndex]),ca=Object.freeze([z.derivedEnd]),ma=Object.freeze([z.derivedEnd,z.legacyTrack]);function rr(t){if(t==null||t.trim()==="")return null;let e=Number(t);return Number.isFinite(e)?e:null}var un=t=>{let e=rr(t);return e!==null&&e>=0?e:null};function or(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 ar(t){return cn(t.basis)==="global"?t.authoredStart:t.hostStart+t.authoredStart}function mn(t){return fn(t)?ar({authoredStart:t.authoredStart,hostStart:t.hostStart,basis:t.basis}):t.ordinaryStart()}function pn(t){return fn(t)&&cn(t.basis)==="global"}function fn(t){return!t.hasAutoStart&&t.authoredStart!=null&&t.hostStart!==0}function lt(t){return or(e=>t.getAttribute(e))}function hn(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,h)=>{let g=s(h);if(g){for(let k of g.querySelectorAll(`[id="${d}"]`))if(s(k)===g)return k}let R=i.getElementById(d);return R||(Array.from(i.querySelectorAll("[data-composition-id]")).find(k=>k.getAttribute("data-composition-id")===d)??null)},u=(d,h)=>n?d.getAttribute(h):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,f=d=>d!=null&&Number.isFinite(d)&&d>0?d:null,v=d=>{let h=d.getAttribute("data-composition-id");return h?f(se(e[h])):null},b=d=>{let h=o.get(d);if(h!==void 0)return h;let g=c(d)??f(P(d)?ae(d,d.duration):null)??f(Me(d))??v(d);return o.set(d,g),g},A="[data-composition-src], [data-composition-id], [data-composition-file]",_=d=>d.matches(A),S=d=>!d.hasAttribute("data-composition-id")||oe(d.getAttribute("data-start"))?null:d.parentElement?.closest(`[data-start], ${A}`)??null,C=(d,h)=>hn(T(d,h),S(d)??d),M=(d,h)=>{let g=d.hasAttribute("data-composition-id")?d.parentElement?.closest("[data-composition-id]"):d.closest("[data-composition-id]");return g?C(g,h):0},I=(d,h)=>{let g=oe(d.getAttribute("data-start"));if(!g){let H=S(d);return H?T(H,h):h}if(g.kind==="absolute")return M(d,h)+Math.max(0,g.value);let R=l(g.refId,d);if(!R)return h;let k=T(R,0),ve=b(R)??0,Ae=Math.min(0,M(d,0));return Math.max(Ae,k+ve+g.offset)},T=(d,h)=>{let g=r.get(d);if(g!==void 0)return g??h;if(a.has(d))return h;a.add(d);try{let R=I(d,h);return r.set(d,R),R}finally{a.delete(d)}},U=d=>{let h=d.closest("[data-composition-id]");return{authoredStart:V(d.getAttribute("data-start")),hostStart:h?C(h,0):0,hasAutoStart:d.hasAttribute("data-hf-auto-start"),basis:d.getAttribute(dn)}};return{resolveStartForElement:(d,h=0)=>T(d,Math.max(0,h)),resolveDurationForElement:d=>b(d),resolveMediaStartForElement:d=>{let h=U(d);return mn({...h,ordinaryStart:()=>T(d,h.hostStart)})},resolveHostStartForElement:d=>M(d,0),resolveHostSlotsForElement:d=>{let h=[];for(let g=d.parentElement;g;g=g.parentElement){if(!_(g)||S(g)||lt(g)<=0)continue;let R=T(g,0),k=c(g);h.push({start:R,end:k?R+k:1/0})}return h},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 sr(t){return{width:Se(t.getAttribute("data-width")),height:Se(t.getAttribute("data-height"))}}function lr(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 ur(t,e){return lr(t,e)?.seconds??null}function dr(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 cr=t=>t.hasAttribute("data-composition-id")||t.hasAttribute("data-composition-src");function mr(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)||cr(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 pr(t){return fr(t).seconds}function fr(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(f=>f??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=f=>({seconds:f,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=pr({declared:V(e.getAttribute("data-duration")),timeline:()=>null,floors:()=>[ur(t,{mediaStart:n.resolveMediaStartForElement,mediaDuration:at}),dr(e,n)],fallback:0,derived:()=>mr(e,n,{unregisteredLottie:!1}).seconds??0});return{...sr(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 hr="hyperframes-studio-preview";var dt="data-hf-player-frame";function br(t){return De()&&t.defaultView?.frameElement?.hasAttribute(dt)===!0}function vn(t){return t.querySelector(`meta[name="${hr}"]`)!==null||br(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.5/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 gr(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 _r(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=_r(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:gr(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 di="http://www.w3.org/1999/xhtml";function Ft(n){return n!=null&&n.nodeType===1}function ze(n){return Ft(n)&&n.namespaceURI===di}function je(n,e){return ze(n)&&n.localName===e}function ci(n){return je(n,"video")}function mi(n){return je(n,"audio")}function P(n){return ci(n)||mi(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 $=Object.freeze({start:"data-start",duration:"data-duration",trackIndex:"data-track-index",derivedEnd:"data-end",legacyTrack:"data-layer"}),mo=Object.freeze([$.start,$.duration,$.trackIndex]),po=Object.freeze([$.derivedEnd]),fo=Object.freeze([$.derivedEnd,$.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 pi=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:pi,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 fi="data-fx-chain",bo=fi.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}),xe=(n=-40,e=40,t=0)=>({kind:"number",key:"gain",label:"Gain",unit:"dB",min:n,max:e,step:.1,default:t,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."},$t=[{id:"gain",label:"Gain",group:"dynamics",description:"Raise or lower the whole signal. Automate it to duck under something else.",params:[xe(-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),xe(-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),xe(-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),xe(-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),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),Je(.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"}],go=new Map($t.map(n=>[n.id,n]));var _o=$t.map(n=>n.id);function hi(n){return 10**(n/20)}var Gt=hi(12);var zt="data-automation",Mo=zt.slice(5),Qe=1,bi=512,L=class extends Error{constructor(e){super(e),this.name="AudioAutomationError"}},we="volume",ke="rate";function jt(n){if(n===we)return{kind:"volume"};if(n===ke)return{kind:"rate"};let e=n.split(".");if(e.length===3&&e[0]==="fx"&&e[1]===gi){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 gi="preset";var _i={min:0,max:Gt,step:.01,unit:"",label:"Volume",scale:"linear",default:1};var yi={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 vi(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 Si(n){let e=vi(n?.curve),t=qt(n?.viaX,n?.viaY);return{...e?{curve:e}:{},...t?{viaX:t.x,viaY:t.y}:{}}}function Ai(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,...Si(n)}}function Ei(n,e){let t=n.map(r=>Ai(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,bi)}function Ti(n){let e=[];for(let t of n.lanes){if(!jt(t.target))continue;let i=t.target===we?_i:t.target===ke?yi:null,r=Ei(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 Ti({version:Qe,lanes:i})}function Ri(n,e){return e?Math.pow(n,Math.pow(2,2*e)):n}function xi(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 wi(n,e,t){let{cx:i,cy:r,w:o}=xi(e,t),a=2-2*o,s=n*a-1+2*o*i,l=-n*a-2*o*i,u=ki(s,l,n),c=1-u,f=c*c+2*o*u*c+u*u;return f>0?(2*o*r*u*c+u*u)/f:n}function ki(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 Mi(n,e){let t=qt(e.viaX,e.viaY);return t?wi(Math.min(1,Math.max(0,n)),t.x,t.y):Ri(n,e.curve)}function Ci(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 f=a+s>>1;i[f].t<=e?a=f:s=f}let l=i[a],u=i[s],c=u.t-l.t;return c<=0?u.v:Ci(l.v,u.v,Mi((e-l.t)/c,l),t)}var Ce=new Map,Ii=64;function Xt(n,e=we){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>Ii&&Ce.clear(),Ce.set(t,r),r}var Kt=48,Zt=new WeakMap;function Di(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 f=1;f<=Kt;f+=1)a(Math.max(u,0)+(c-u)*f/Kt)}return{ts:Float64Array.from(r),ss:Float64Array.from(o),firstRate:t,lastRate:i}}function Pi(n){let e=Zt.get(n);return e||(e=Di(n),Zt.set(n,e)),e}function Li(n){return typeof n!="number"&&n.points.length>0}function Ni(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(!Li(n))return e;let{ts:t,ss:i,firstRate:r,lastRate:o}=Pi(n),a=t.length-1;return e<=0?e/r:e>=i[a]?t[a]+(e-i[a])/o:Ni(i,t,e)}function Oi(n){return n?Xt(n,ke):null}function Qt(n,e){return Oi(n)??e}var Oo=[{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"}),Uo=Object.freeze([y.start,y.duration,y.trackIndex]),Ho=Object.freeze([y.derivedEnd]),Vo=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 Fi(n,e){let t=e;for(;t>=0&&(n[t]??"").trim()==="";)t--;return t}function Ui(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 Hi(n){let e=Ui(n);if(e==null)return null;let t=Fi(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=Hi(e);return i?{kind:"reference",refId:i.refId,offset:i.operator==="-"?-i.magnitude:i.magnitude}:null}function x(n,e,t,i){n.push({code:e,attribute:t,value:i})}function Vi(n,e,t,i){if(e==null||e.trim()==="")return t.defaultStart===void 0?0:t.defaultStart;if(!n)return x(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)?(x(i,"unresolved-start-reference",y.start,e),null):Math.max(0,r+n.offset)}var Wi=1e-9;function Bi(n,e){return Math.abs(n-e)<=Wi}function $i(n,e,t){let i=N(n);if(i==null){x(t,"deprecated-end",y.derivedEnd,n),x(t,"invalid-end",y.derivedEnd,n);return}if(e==null){x(t,"deprecated-end",y.derivedEnd,n);return}Bi(i,e)||(x(t,"deprecated-end",y.derivedEnd,n),x(t,"conflicting-end",y.derivedEnd,n))}function Gi(n,e,t){let i=N(n);return i==null||i<0?(x(t,"invalid-duration",y.duration,n),{duration:null,end:null,durationSource:"invalid"}):{duration:i,end:e==null?null:e+i,durationSource:"duration"}}function zi(n,e,t){x(t,"deprecated-end",y.derivedEnd,n);let i=N(n);return i==null?(x(t,"invalid-end",y.derivedEnd,n),{duration:null,end:null,durationSource:"invalid"}):e==null?{duration:null,end:i,durationSource:"legacy-end"}:i<e?(x(t,"end-before-start",y.derivedEnd,n),{duration:null,end:null,durationSource:"invalid"}):{duration:i-e,end:i,durationSource:"legacy-end"}}function ji(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"}:zi(r,e,t);let o=Gi(i,e,t);return r!=null&&$i(r,o.end,t),o}function tn(n,e,t,i){let r=N(n);return r==null||!Number.isInteger(r)?(x(i,"invalid-track-index",e,n),{trackIndex:0,trackSource:"invalid"}):{trackIndex:r,trackSource:t}}function qi(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 x(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;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 et(n,e={}){let t=[],i=n.getAttribute(y.start),r=oe(i),o=Vi(r,i,e,t),a=ji(n,o,t),s=qi(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 Yi(n){return Qt(n.getAttribute("data-automation"),tt(n))}function nt(n){return Re(e=>n.getAttribute(e))}function ae(n,e){return Xi(e,nt(n),Yi(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 Xi(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 Ki=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(Ki));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"}),ta=Object.freeze([G.start,G.duration,G.trackIndex]),na=Object.freeze([G.derivedEnd]),ia=Object.freeze([G.derivedEnd,G.legacyTrack]);function Zi(n){if(n==null||n.trim()==="")return null;let e=Number(n);return Number.isFinite(e)?e:null}var ln=n=>{let e=Zi(n);return e!==null&&e>=0?e:null};function Ji(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 Qi(n){return dn(n.basis)==="global"?n.authoredStart:n.hostStart+n.authoredStart}function cn(n){return pn(n)?Qi({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 Ji(e=>n.getAttribute(e))}function fn(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,h)=>{let g=s(h);if(g){for(let k of g.querySelectorAll(`[id="${d}"]`))if(s(k)===g)return k}let R=i.getElementById(d);return R||(Array.from(i.querySelectorAll("[data-composition-id]")).find(k=>k.getAttribute("data-composition-id")===d)??null)},u=(d,h)=>t?d.getAttribute(h):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,f=d=>d!=null&&Number.isFinite(d)&&d>0?d:null,v=d=>{let h=d.getAttribute("data-composition-id");return h?f(se(e[h])):null},b=d=>{let h=o.get(d);if(h!==void 0)return h;let g=c(d)??f(P(d)?ae(d,d.duration):null)??f(Ie(d))??v(d);return o.set(d,g),g},S="[data-composition-src], [data-composition-id], [data-composition-file]",_=d=>d.matches(S),A=d=>!d.hasAttribute("data-composition-id")||oe(d.getAttribute("data-start"))?null:d.parentElement?.closest(`[data-start], ${S}`)??null,C=(d,h)=>fn(T(d,h),A(d)??d),M=(d,h)=>{let g=d.hasAttribute("data-composition-id")?d.parentElement?.closest("[data-composition-id]"):d.closest("[data-composition-id]");return g?C(g,h):0},I=(d,h)=>{let g=oe(d.getAttribute("data-start"));if(!g){let H=A(d);return H?T(H,h):h}if(g.kind==="absolute")return M(d,h)+Math.max(0,g.value);let R=l(g.refId,d);if(!R)return h;let k=T(R,0),ve=b(R)??0,Se=Math.min(0,M(d,0));return Math.max(Se,k+ve+g.offset)},T=(d,h)=>{let g=r.get(d);if(g!==void 0)return g??h;if(a.has(d))return h;a.add(d);try{let R=I(d,h);return r.set(d,R),R}finally{a.delete(d)}},U=d=>{let h=d.closest("[data-composition-id]");return{authoredStart:V(d.getAttribute("data-start")),hostStart:h?C(h,0):0,hasAutoStart:d.hasAttribute("data-hf-auto-start"),basis:d.getAttribute(un)}};return{resolveStartForElement:(d,h=0)=>T(d,Math.max(0,h)),resolveDurationForElement:d=>b(d),resolveMediaStartForElement:d=>{let h=U(d);return cn({...h,ordinaryStart:()=>T(d,h.hostStart)})},resolveHostStartForElement:d=>M(d,0),resolveHostSlotsForElement:d=>{let h=[];for(let g=d.parentElement;g;g=g.parentElement){if(!_(g)||A(g)||ot(g)<=0)continue;let R=T(g,0),k=c(g);h.push({start:R,end:k?R+k:1/0})}return h},isRootGlobalMediaStartForElement:d=>P(d)&&mn(U(d))}}function hn(){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 er(n){return{width:Te(n.getAttribute("data-width")),height:Te(n.getAttribute("data-height"))}}function tr(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 nr(n,e){return tr(n,e)?.seconds??null}function ir(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 rr=n=>n.hasAttribute("data-composition-id")||n.hasAttribute("data-composition-src");function or(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)||rr(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 ar(n){return sr(n).seconds}function sr(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(f=>f??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=f=>({seconds:f,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=ar({declared:V(e.getAttribute("data-duration")),timeline:()=>null,floors:()=>[nr(n,{mediaStart:t.resolveMediaStartForElement,mediaDuration:it}),ir(e,t)],fallback:0,derived:()=>or(e,t,{unregisteredLottie:!1}).seconds??0});return{...er(e),fps:hn().canonicalFps,durationSeconds:i}}var lr="hyperframes-studio-preview";var st="data-hf-player-frame";function ur(n){return Ee()&&n.defaultView?.frameElement?.hasAttribute(st)===!0}function _n(n){return n.querySelector(`meta[name="${lr}"]`)!==null||ur(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.4/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 dr(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 cr(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=cr(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:dr(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 di="http://www.w3.org/1999/xhtml";function Ft(n){return n!=null&&n.nodeType===1}function ze(n){return Ft(n)&&n.namespaceURI===di}function je(n,e){return ze(n)&&n.localName===e}function ci(n){return je(n,"video")}function mi(n){return je(n,"audio")}function P(n){return ci(n)||mi(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 $=Object.freeze({start:"data-start",duration:"data-duration",trackIndex:"data-track-index",derivedEnd:"data-end",legacyTrack:"data-layer"}),mo=Object.freeze([$.start,$.duration,$.trackIndex]),po=Object.freeze([$.derivedEnd]),fo=Object.freeze([$.derivedEnd,$.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 pi=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:pi,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 fi="data-fx-chain",bo=fi.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}),xe=(n=-40,e=40,t=0)=>({kind:"number",key:"gain",label:"Gain",unit:"dB",min:n,max:e,step:.1,default:t,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."},$t=[{id:"gain",label:"Gain",group:"dynamics",description:"Raise or lower the whole signal. Automate it to duck under something else.",params:[xe(-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),xe(-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),xe(-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),xe(-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),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),Je(.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"}],go=new Map($t.map(n=>[n.id,n]));var _o=$t.map(n=>n.id);function hi(n){return 10**(n/20)}var Gt=hi(12);var zt="data-automation",Mo=zt.slice(5),Qe=1,bi=512,L=class extends Error{constructor(e){super(e),this.name="AudioAutomationError"}},we="volume",ke="rate";function jt(n){if(n===we)return{kind:"volume"};if(n===ke)return{kind:"rate"};let e=n.split(".");if(e.length===3&&e[0]==="fx"&&e[1]===gi){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 gi="preset";var _i={min:0,max:Gt,step:.01,unit:"",label:"Volume",scale:"linear",default:1};var yi={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 vi(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 Si(n){let e=vi(n?.curve),t=qt(n?.viaX,n?.viaY);return{...e?{curve:e}:{},...t?{viaX:t.x,viaY:t.y}:{}}}function Ai(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,...Si(n)}}function Ei(n,e){let t=n.map(r=>Ai(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,bi)}function Ti(n){let e=[];for(let t of n.lanes){if(!jt(t.target))continue;let i=t.target===we?_i:t.target===ke?yi:null,r=Ei(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 Ti({version:Qe,lanes:i})}function Ri(n,e){return e?Math.pow(n,Math.pow(2,2*e)):n}function xi(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 wi(n,e,t){let{cx:i,cy:r,w:o}=xi(e,t),a=2-2*o,s=n*a-1+2*o*i,l=-n*a-2*o*i,u=ki(s,l,n),c=1-u,f=c*c+2*o*u*c+u*u;return f>0?(2*o*r*u*c+u*u)/f:n}function ki(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 Mi(n,e){let t=qt(e.viaX,e.viaY);return t?wi(Math.min(1,Math.max(0,n)),t.x,t.y):Ri(n,e.curve)}function Ci(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 f=a+s>>1;i[f].t<=e?a=f:s=f}let l=i[a],u=i[s],c=u.t-l.t;return c<=0?u.v:Ci(l.v,u.v,Mi((e-l.t)/c,l),t)}var Ce=new Map,Ii=64;function Xt(n,e=we){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>Ii&&Ce.clear(),Ce.set(t,r),r}var Kt=48,Zt=new WeakMap;function Di(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 f=1;f<=Kt;f+=1)a(Math.max(u,0)+(c-u)*f/Kt)}return{ts:Float64Array.from(r),ss:Float64Array.from(o),firstRate:t,lastRate:i}}function Pi(n){let e=Zt.get(n);return e||(e=Di(n),Zt.set(n,e)),e}function Li(n){return typeof n!="number"&&n.points.length>0}function Ni(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(!Li(n))return e;let{ts:t,ss:i,firstRate:r,lastRate:o}=Pi(n),a=t.length-1;return e<=0?e/r:e>=i[a]?t[a]+(e-i[a])/o:Ni(i,t,e)}function Oi(n){return n?Xt(n,ke):null}function Qt(n,e){return Oi(n)??e}var Oo=[{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"}),Uo=Object.freeze([y.start,y.duration,y.trackIndex]),Ho=Object.freeze([y.derivedEnd]),Vo=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 Fi(n,e){let t=e;for(;t>=0&&(n[t]??"").trim()==="";)t--;return t}function Ui(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 Hi(n){let e=Ui(n);if(e==null)return null;let t=Fi(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=Hi(e);return i?{kind:"reference",refId:i.refId,offset:i.operator==="-"?-i.magnitude:i.magnitude}:null}function x(n,e,t,i){n.push({code:e,attribute:t,value:i})}function Vi(n,e,t,i){if(e==null||e.trim()==="")return t.defaultStart===void 0?0:t.defaultStart;if(!n)return x(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)?(x(i,"unresolved-start-reference",y.start,e),null):Math.max(0,r+n.offset)}var Wi=1e-9;function Bi(n,e){return Math.abs(n-e)<=Wi}function $i(n,e,t){let i=N(n);if(i==null){x(t,"deprecated-end",y.derivedEnd,n),x(t,"invalid-end",y.derivedEnd,n);return}if(e==null){x(t,"deprecated-end",y.derivedEnd,n);return}Bi(i,e)||(x(t,"deprecated-end",y.derivedEnd,n),x(t,"conflicting-end",y.derivedEnd,n))}function Gi(n,e,t){let i=N(n);return i==null||i<0?(x(t,"invalid-duration",y.duration,n),{duration:null,end:null,durationSource:"invalid"}):{duration:i,end:e==null?null:e+i,durationSource:"duration"}}function zi(n,e,t){x(t,"deprecated-end",y.derivedEnd,n);let i=N(n);return i==null?(x(t,"invalid-end",y.derivedEnd,n),{duration:null,end:null,durationSource:"invalid"}):e==null?{duration:null,end:i,durationSource:"legacy-end"}:i<e?(x(t,"end-before-start",y.derivedEnd,n),{duration:null,end:null,durationSource:"invalid"}):{duration:i-e,end:i,durationSource:"legacy-end"}}function ji(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"}:zi(r,e,t);let o=Gi(i,e,t);return r!=null&&$i(r,o.end,t),o}function tn(n,e,t,i){let r=N(n);return r==null||!Number.isInteger(r)?(x(i,"invalid-track-index",e,n),{trackIndex:0,trackSource:"invalid"}):{trackIndex:r,trackSource:t}}function qi(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 x(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;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 et(n,e={}){let t=[],i=n.getAttribute(y.start),r=oe(i),o=Vi(r,i,e,t),a=ji(n,o,t),s=qi(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 Yi(n){return Qt(n.getAttribute("data-automation"),tt(n))}function nt(n){return Re(e=>n.getAttribute(e))}function ae(n,e){return Xi(e,nt(n),Yi(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 Xi(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 Ki=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(Ki));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"}),ta=Object.freeze([G.start,G.duration,G.trackIndex]),na=Object.freeze([G.derivedEnd]),ia=Object.freeze([G.derivedEnd,G.legacyTrack]);function Zi(n){if(n==null||n.trim()==="")return null;let e=Number(n);return Number.isFinite(e)?e:null}var ln=n=>{let e=Zi(n);return e!==null&&e>=0?e:null};function Ji(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 Qi(n){return dn(n.basis)==="global"?n.authoredStart:n.hostStart+n.authoredStart}function cn(n){return pn(n)?Qi({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 Ji(e=>n.getAttribute(e))}function fn(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,h)=>{let g=s(h);if(g){for(let k of g.querySelectorAll(`[id="${d}"]`))if(s(k)===g)return k}let R=i.getElementById(d);return R||(Array.from(i.querySelectorAll("[data-composition-id]")).find(k=>k.getAttribute("data-composition-id")===d)??null)},u=(d,h)=>t?d.getAttribute(h):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,f=d=>d!=null&&Number.isFinite(d)&&d>0?d:null,v=d=>{let h=d.getAttribute("data-composition-id");return h?f(se(e[h])):null},b=d=>{let h=o.get(d);if(h!==void 0)return h;let g=c(d)??f(P(d)?ae(d,d.duration):null)??f(Ie(d))??v(d);return o.set(d,g),g},S="[data-composition-src], [data-composition-id], [data-composition-file]",_=d=>d.matches(S),A=d=>!d.hasAttribute("data-composition-id")||oe(d.getAttribute("data-start"))?null:d.parentElement?.closest(`[data-start], ${S}`)??null,C=(d,h)=>fn(T(d,h),A(d)??d),M=(d,h)=>{let g=d.hasAttribute("data-composition-id")?d.parentElement?.closest("[data-composition-id]"):d.closest("[data-composition-id]");return g?C(g,h):0},I=(d,h)=>{let g=oe(d.getAttribute("data-start"));if(!g){let H=A(d);return H?T(H,h):h}if(g.kind==="absolute")return M(d,h)+Math.max(0,g.value);let R=l(g.refId,d);if(!R)return h;let k=T(R,0),ve=b(R)??0,Se=Math.min(0,M(d,0));return Math.max(Se,k+ve+g.offset)},T=(d,h)=>{let g=r.get(d);if(g!==void 0)return g??h;if(a.has(d))return h;a.add(d);try{let R=I(d,h);return r.set(d,R),R}finally{a.delete(d)}},U=d=>{let h=d.closest("[data-composition-id]");return{authoredStart:V(d.getAttribute("data-start")),hostStart:h?C(h,0):0,hasAutoStart:d.hasAttribute("data-hf-auto-start"),basis:d.getAttribute(un)}};return{resolveStartForElement:(d,h=0)=>T(d,Math.max(0,h)),resolveDurationForElement:d=>b(d),resolveMediaStartForElement:d=>{let h=U(d);return cn({...h,ordinaryStart:()=>T(d,h.hostStart)})},resolveHostStartForElement:d=>M(d,0),resolveHostSlotsForElement:d=>{let h=[];for(let g=d.parentElement;g;g=g.parentElement){if(!_(g)||A(g)||ot(g)<=0)continue;let R=T(g,0),k=c(g);h.push({start:R,end:k?R+k:1/0})}return h},isRootGlobalMediaStartForElement:d=>P(d)&&mn(U(d))}}function hn(){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 er(n){return{width:Te(n.getAttribute("data-width")),height:Te(n.getAttribute("data-height"))}}function tr(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 nr(n,e){return tr(n,e)?.seconds??null}function ir(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 rr=n=>n.hasAttribute("data-composition-id")||n.hasAttribute("data-composition-src");function or(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)||rr(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 ar(n){return sr(n).seconds}function sr(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(f=>f??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=f=>({seconds:f,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=ar({declared:V(e.getAttribute("data-duration")),timeline:()=>null,floors:()=>[nr(n,{mediaStart:t.resolveMediaStartForElement,mediaDuration:it}),ir(e,t)],fallback:0,derived:()=>or(e,t,{unregisteredLottie:!1}).seconds??0});return{...er(e),fps:hn().canonicalFps,durationSeconds:i}}var lr="hyperframes-studio-preview";var st="data-hf-player-frame";function ur(n){return Ee()&&n.defaultView?.frameElement?.hasAttribute(st)===!0}function _n(n){return n.querySelector(`meta[name="${lr}"]`)!==null||ur(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.5/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 dr(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 cr(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=cr(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:dr(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.5",
|
|
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.5"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
34
|
"@types/bun": "^1.1.0",
|