@hyperframes/player 0.8.196 → 0.8.197
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 ze=Object.defineProperty;var ri=Object.getOwnPropertyDescriptor;var oi=Object.getOwnPropertyNames;var ai=Object.prototype.hasOwnProperty;var si=(t,e)=>{for(var n in e)ze(t,n,{get:e[n],enumerable:!0})},ui=(t,e,n,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of oi(e))!ai.call(t,r)&&r!==n&&ze(t,r,{get:()=>e[r],enumerable:!(i=ri(e,r))||i.enumerable});return t};var li=t=>ui(ze({},"__esModule",{value:!0}),t);var no={};si(no,{HyperframesPlayer:()=>Ge,SPEED_PRESETS:()=>ct,formatSpeed:()=>U,formatTime:()=>Le});module.exports=li(no);var Pt=t=>t!==null&&Number.isFinite(t)&&t>0;function Se(t){let e=t.clipEndsSeconds.filter(i=>i===null).length;if(Pt(t.authoredDurationSeconds))return{seconds:t.authoredDurationSeconds,source:"authored",pendingClips:e};let n=t.clipEndsSeconds.filter(Pt);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 di="http://www.w3.org/1999/xhtml";function Nt(t){return t!=null&&t.nodeType===1}function qe(t){return Nt(t)&&t.namespaceURI===di}function je(t,e){return qe(t)&&t.localName===e}function ci(t){return je(t,"video")}function mi(t){return je(t,"audio")}function I(t){return ci(t)||mi(t)}function Ye(t){return je(t,"img")}function Ee(t){if(t==null||t.trim()==="")return null;let e=Number.parseInt(t,10);return Number.isFinite(e)&&e>0?e:null}function Te(t=document){let e=t.querySelector('[data-composition-id][data-root="true"]');return qe(e)?e:t.querySelector("[data-composition-id]")}var W=Object.freeze({start:"data-start",duration:"data-duration",trackIndex:"data-track-index",derivedEnd:"data-end",legacyTrack:"data-layer"}),uo=Object.freeze([W.start,W.duration,W.trackIndex]),lo=Object.freeze([W.derivedEnd]),co=Object.freeze([W.derivedEnd,W.legacyTrack]);function Xe(t){if(t==null||t.trim()==="")return null;let e=Number(t);return Number.isFinite(e)?e:null}var Lt=t=>{let e=Xe(t);return e!==null&&e>=0?e:null};function Ot(t){return Lt(t("data-playback-start"))??Lt(t("data-media-start"))??0}var Q=.1,ee=10;function Ke(t){return Number.isFinite(t)&&t>0?Math.max(Q,Math.min(ee,t)):1}function Ft(t,e=1){let n=Number.parseFloat(t("data-playback-rate")??"");return Ke(Number.isFinite(n)&&n>0?n:e)}function Je(t){let e=Xe(t("data-duration"));return e!==null&&e>0?e:null}function Vt(t,e){let n=Je(t);if(n!==null)return n;let i=Xe(t("data-end"));return i!==null?i-e:null}var pi=3;function Ze(t,e,n){return Number.isFinite(t)?Math.max(0,t-e)/Ke(n):null}function Qe(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:pi,source:"default"};if(i===null)return{seconds:null,source:"pending",reason:"source duration not yet probed"};let a=Ze(i,r,o);return a===null?{seconds:null,source:"pending",reason:"source reported a non-finite duration"}:{seconds:a,source:"media"}}var Ht="data-fx-chain",po=Ht.slice(5);var te=(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}),et=(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}),Re=(t=-40,e=40,n=0)=>({kind:"number",key:"gain",label:"Gain",unit:"dB",min:t,max:e,step:.1,default:n,automatable:!0}),Ut={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."},Wt=[{id:"gain",label:"Gain",group:"dynamics",description:"Raise or lower the whole signal. Automate it to duck under something else.",params:[Re(-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:[te("frequency","Frequency",1e3),Re(-40,40,0),et(1)],web:"biquad-peaking"},{id:"lowshelf",label:"Low Shelf",group:"filter",description:"Lift or drop everything below the corner frequency.",params:[te("frequency","Frequency",200,20,2e3),Re(-40,40,0)],web:"biquad-lowshelf"},{id:"highshelf",label:"High Shelf",group:"filter",description:"Lift or drop everything above the corner frequency.",params:[te("frequency","Frequency",4e3,500,2e4),Re(-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:[te("frequency","Cutoff",300,20,2e4),et(.707),Ut],web:"biquad-highpass"},{id:"lowpass",label:"Low-pass",group:"filter",description:"Remove high frequencies, which darkens or muffles a track.",params:[te("frequency","Cutoff",8e3,100,2e4),et(.707),Ut],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"}],fo=new Map(Wt.map(t=>[t.id,t]));var ho=Wt.map(t=>t.id);function fi(t){return 10**(t/20)}var $t=fi(12);var nt="data-automation",To=nt.slice(5),tt=1,bi=512,D=class extends Error{constructor(e){super(e),this.name="AudioAutomationError"}},we="volume",xe="rate";function Gt(t){if(t===we)return{kind:"volume"};if(t===xe)return{kind:"rate"};let e=t.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[,n,i]=e;return!n||!i?null:{kind:"fx",nodeId:n,param:i}}var gi="preset";var _i={min:0,max:$t,step:.01,unit:"",label:"Volume",scale:"linear",default:1};var yi={min:Q,max:ee,step:.05,unit:"x",label:"Speed",scale:"log",default:1};function ne(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 vi(t){let e=ne(t);return e===null||e===0?0:Math.min(1,Math.max(-1,e))}function zt(t,e){let n=ne(t),i=ne(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 Ai(t){let e=vi(t?.curve),n=zt(t?.viaX,t?.viaY);return{...e?{curve:e}:{},...n?{viaX:n.x,viaY:n.y}:{}}}function Si(t,e){let n=ne(t?.t),i=ne(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,...Ai(t)}}function Ei(t,e){let n=t.map(r=>Si(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,bi)}function Ti(t){let e=[];for(let n of t.lanes){if(!Gt(n.target))continue;let i=n.target===we?_i:n.target===xe?yi:null,r=Ei(n.points??[],i);r.length>0&&e.push({target:n.target,points:r})}return{version:tt,lanes:e}}function qt(t){let e;try{e=JSON.parse(t)}catch(r){throw new D(`Automation is not valid JSON: ${r.message}`)}if(typeof e!="object"||e===null)throw new D("Automation must be a JSON object.");let n=e;if(n.version!==tt)throw new D(`Unsupported automation version: ${String(n.version)}`);if(!Array.isArray(n.lanes))throw new D("Automation is missing a `lanes` array.");let i=n.lanes.map((r,o)=>{if(typeof r!="object"||r===null)throw new D(`Lane ${o} is not an object.`);let a=r;if(typeof a.target!="string"||!Gt(a.target))throw new D(`Lane ${o} has an unreadable target: ${String(a.target)}`);if(!Array.isArray(a.points))throw new D(`Lane ${o} is missing a \`points\` array.`);return{target:a.target,points:a.points}});return Ti({version:tt,lanes:i})}function Ri(t,e){return e?Math.pow(t,Math.pow(2,2*e)):t}function wi(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,u=Math.min(o,Math.max(1,a,s));return{cx:t+n/u,cy:e+i/u,w:u}}function xi(t,e,n){let{cx:i,cy:r,w:o}=wi(e,n),a=2-2*o,s=t*a-1+2*o*i,u=-t*a-2*o*i,c=ki(s,u,t),m=1-c,b=m*m+2*o*c*m+c*c;return b>0?(2*o*r*c*m+c*c)/b:t}function ki(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 Mi(t,e){let n=zt(e.viaX,e.viaY);return n?xi(Math.min(1,Math.max(0,t)),n.x,n.y):Ri(t,e.curve)}function Ii(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 ke(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 b=a+s>>1;i[b].t<=e?a=b:s=b}let u=i[a],c=i[s],m=c.t-u.t;return m<=0?c.v:Ii(u.v,c.v,Mi((e-u.t)/m,u),n)}var Me=new Map,Di=64;function jt(t,e=we){let n=`${e}\0${t}`,i=Me.get(n);if(i!==void 0)return i;let r=null;try{r=qt(t).lanes.find(o=>o.target===e)??null}catch{r=null}return Me.size>Di&&Me.clear(),Me.set(n,r),r}var Yt=48,Xt=new WeakMap;function Ci(t){let e=t.points,n=e[0].v,i=e[e.length-1].v,r=[0],o=[0],a=u=>{let c=r[r.length-1];if(u<=c)return;let m=ke(t,c,"log");r.push(u),o.push(o[o.length-1]+(m+ke(t,u,"log"))/2*(u-c))},s=Math.max(0,e[0].t);a(s);for(let u=1;u<e.length;u+=1){let c=e[u-1].t,m=e[u].t;if(!(m<=0))for(let b=1;b<=Yt;b+=1)a(Math.max(c,0)+(m-c)*b/Yt)}return{ts:Float64Array.from(r),ss:Float64Array.from(o),firstRate:n,lastRate:i}}function Pi(t){let e=Xt.get(t);return e||(e=Ci(t),Xt.set(t,e)),e}function Ni(t){return typeof t!="number"&&t.points.length>0}function Li(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 it(t,e){if(typeof t=="number")return e/t;if(!Ni(t))return e;let{ts:n,ss:i,firstRate:r,lastRate:o}=Pi(t),a=n.length-1;return e<=0?e/r:e>=i[a]?n[a]+(e-i[a])/o:Li(i,n,e)}function Oi(t){return t?jt(t,xe):null}function Kt(t,e){return Oi(t)??e}var Do=[{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"}),Po=Object.freeze([y.start,y.duration,y.trackIndex]),No=Object.freeze([y.derivedEnd]),Lo=Object.freeze([y.derivedEnd,y.legacyTrack]);function C(t){if(t==null||t.trim()==="")return null;let e=Number(t);return Number.isFinite(e)?e:null}var Qt=/^[A-Za-z0-9_.:-]+$/;function en(t,e){let n=t.charCodeAt(e);return n>=48&&n<=57}function Jt(t,e){let n=e;for(;n>=0&&en(t,n);)n--;return n}function Fi(t,e){let n=e;for(;n>=0&&(t[n]??"").trim()==="";)n--;return n}function Vi(t){let e=t.length-1;if(!en(t,e))return null;let n=Jt(t,e);return t[n]==="."&&(n=Jt(t,n-1)),n+1}function Ui(t){let e=Vi(t);if(e==null)return null;let n=Fi(t,e-1),i=t[n];if(i!=="+"&&i!=="-")return null;let r=t.slice(0,n).trim();if(!Qt.test(r))return null;let o=Number(t.slice(e));return Number.isFinite(o)?{refId:r,operator:i,magnitude:o}:null}function ie(t){let e=(t??"").trim();if(!e)return null;let n=C(e);if(n!=null)return{kind:"absolute",value:n};if(Qt.test(e))return{kind:"reference",refId:e,offset:0};let i=Ui(e);return i?{kind:"reference",refId:i.refId,offset:i.operator==="-"?-i.magnitude:i.magnitude}:null}function w(t,e,n,i){t.push({code:e,attribute:n,value:i})}function Hi(t,e,n,i){if(e==null||e.trim()==="")return n.defaultStart===void 0?0:n.defaultStart;if(!t)return w(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)?(w(i,"unresolved-start-reference",y.start,e),null):Math.max(0,r+t.offset)}var Wi=1e-9;function $i(t,e){return Math.abs(t-e)<=Wi}function Bi(t,e,n){let i=C(t);if(i==null){w(n,"deprecated-end",y.derivedEnd,t),w(n,"invalid-end",y.derivedEnd,t);return}if(e==null){w(n,"deprecated-end",y.derivedEnd,t);return}$i(i,e)||(w(n,"deprecated-end",y.derivedEnd,t),w(n,"conflicting-end",y.derivedEnd,t))}function Gi(t,e,n){let i=C(t);return i==null||i<0?(w(n,"invalid-duration",y.duration,t),{duration:null,end:null,durationSource:"invalid"}):{duration:i,end:e==null?null:e+i,durationSource:"duration"}}function zi(t,e,n){w(n,"deprecated-end",y.derivedEnd,t);let i=C(t);return i==null?(w(n,"invalid-end",y.derivedEnd,t),{duration:null,end:null,durationSource:"invalid"}):e==null?{duration:null,end:i,durationSource:"legacy-end"}:i<e?(w(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"}:zi(r,e,n);let o=Gi(i,e,n);return r!=null&&Bi(r,o.end,n),o}function Zt(t,e,n,i){let r=C(t);return r==null||!Number.isInteger(r)?(w(i,"invalid-track-index",e,t),{trackIndex:0,trackSource:"invalid"}):{trackIndex:r,trackSource:n}}function ji(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 w(e,"deprecated-layer",y.legacyTrack,i),Zt(i,y.legacyTrack,"legacy-layer",e);let r=Zt(n??"",y.trackIndex,"track-index",e);if(i==null)return r;w(e,"deprecated-layer",y.legacyTrack,i);let o=C(i);return o!=null&&o!==r.trackIndex&&w(e,"conflicting-layer",y.legacyTrack,i),r}function rt(t,e={}){let n=[],i=t.getAttribute(y.start),r=ie(i),o=Hi(r,i,e,n),a=qi(t,o,n),s=ji(t,n);return{startExpression:r,start:o,...a,...s,diagnostics:n}}function P(t){return C(t)}function re(t){return Ft(e=>t.getAttribute(e),I(t)?t.defaultPlaybackRate:1)}function ot(t){return Kt(t.getAttribute("data-automation"),re(t))}function Ie(t){return Ot(e=>t.getAttribute(e))}function $(t,e){return Yi(e,Ie(t),ot(t))}function at(t){let e=Qe({tag:"video",authoredDurationSeconds:Je(n=>t.getAttribute(n)),sourceDurationSeconds:Number.isFinite(t.duration)?t.duration:null,mediaStartSeconds:Ie(t),playbackRate:re(t)});return e.source==="media"?$(t,t.duration):e.seconds}function De(t,e=0){return!Ye(t)||!t.hasAttribute("data-start")&&!t.hasAttribute("data-track-index")?null:Qe({tag:"img",authoredDurationSeconds:Vt(n=>t.getAttribute(n),e),sourceDurationSeconds:null,mediaStartSeconds:0,playbackRate:1}).seconds}function Yi(t,e,n){return typeof n=="number"?Ze(t,e,n):Number.isFinite(t)?it(n,Math.max(0,t-e)):null}function tn(){return globalThis}function B(t,e){if(typeof window>"u")return;let n=tn(),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 Xi=t=>t.paused?.()===!0?(t.startTime?.()??0)+(t.totalDuration?.()??0)/Math.abs(t.timeScale?.()||1):0;function oe(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(Xi));return Number.isFinite(i)?i:null}catch(e){return B("runtime.timelineDuration",e),null}}var nn="data-hf-authored-duration",rn="data-hf-authored-end";function ae(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=ae(t.start);if(e==null)return null;let n=Math.max(0,e),i=ae(t.duration),r=ae(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=ae(t.end),s=ae(t.authoredEnd),u=a!=null&&a>n?a:s!=null&&s>n?s:null;return{start:n,duration:u==null?null:u-n,end:u}}var G=Object.freeze({start:"data-start",duration:"data-duration",trackIndex:"data-track-index",derivedEnd:"data-end",legacyTrack:"data-layer"}),Ko=Object.freeze([G.start,G.duration,G.trackIndex]),Jo=Object.freeze([G.derivedEnd]),Zo=Object.freeze([G.derivedEnd,G.legacyTrack]);function Ki(t){if(t==null||t.trim()==="")return null;let e=Number(t);return Number.isFinite(e)?e:null}var on=t=>{let e=Ki(t);return e!==null&&e>=0?e:null};function Ji(t){return on(t("data-playback-start"))??on(t("data-media-start"))??0}var an="data-hf-media-start-basis";function sn(t){return t?.trim().toLowerCase()==="global"?"global":"local"}function Zi(t){return sn(t.basis)==="global"?t.authoredStart:t.hostStart+t.authoredStart}function un(t){return dn(t)?Zi({authoredStart:t.authoredStart,hostStart:t.hostStart,basis:t.basis}):t.ordinaryStart()}function ln(t){return dn(t)&&sn(t.basis)==="global"}function dn(t){return!t.hasAutoStart&&t.authoredStart!=null&&t.hostStart!==0}function st(t){return Ji(e=>t.getAttribute(e))}function cn(t,e){return t-st(e)}function V(t){let e=t.timelineRegistry??{},n=t.includeAuthoredTimingAttrs??!1,i=t.documentRef??document,r=new WeakMap,o=new WeakMap,a=new Set,s=l=>(l.hasAttribute("data-composition-id")?l.parentElement:l)?.closest("[data-composition-id]")??null,u=(l,f)=>{let _=s(f);if(_){for(let k of _.querySelectorAll(`[id="${l}"]`))if(s(k)===_)return k}let R=i.getElementById(l);return R||(Array.from(i.querySelectorAll("[data-composition-id]")).find(k=>k.getAttribute("data-composition-id")===l)??null)},c=(l,f)=>n?l.getAttribute(f):null,m=l=>Ce({start:0,duration:l.getAttribute("data-duration"),authoredDuration:c(l,"data-hf-authored-duration")})?.duration??Ce({start:T(l,0),end:l.getAttribute("data-end"),authoredEnd:c(l,"data-hf-authored-end")})?.duration??null,b=l=>l!=null&&Number.isFinite(l)&&l>0?l:null,v=l=>{let f=l.getAttribute("data-composition-id");return f?b(oe(e[f])):null},g=l=>{let f=o.get(l);if(f!==void 0)return f;let _=m(l)??b(I(l)?$(l,l.duration):null)??b(De(l))??v(l);return o.set(l,_),_},A=l=>l.hasAttribute("data-composition-src")||l.hasAttribute("data-composition-id")||l.hasAttribute("data-composition-file"),h=l=>{let f=l.parentElement;return!f||!l.hasAttribute("data-composition-id")||ie(l.getAttribute("data-start"))?null:A(f)?f:null},E=(l,f)=>cn(T(l,f),h(l)??l),M=(l,f)=>{let _=l.hasAttribute("data-composition-id")?l.parentElement?.closest("[data-composition-id]"):l.closest("[data-composition-id]");return _?E(_,f):0},N=(l,f)=>{let _=ie(l.getAttribute("data-start"));if(!_){let Z=h(l);return Z?T(Z,f):f}if(_.kind==="absolute")return M(l,f)+Math.max(0,_.value);let R=u(_.refId,l);if(!R)return f;let k=T(R,0),_e=g(R)??0,ye=Math.min(0,M(l,0));return Math.max(ye,k+_e+_.offset)},T=(l,f)=>{let _=r.get(l);if(_!==void 0)return _??f;if(a.has(l))return f;a.add(l);try{let R=N(l,f);return r.set(l,R),R}finally{a.delete(l)}},L=l=>{let f=l.closest("[data-composition-id]");return{authoredStart:P(l.getAttribute("data-start")),hostStart:f?E(f,0):0,hasAutoStart:l.hasAttribute("data-hf-auto-start"),basis:l.getAttribute(an)}};return{resolveStartForElement:(l,f=0)=>T(l,Math.max(0,f)),resolveDurationForElement:l=>g(l),resolveMediaStartForElement:l=>{let f=L(l);return un({...f,ordinaryStart:()=>T(l,f.hostStart)})},resolveHostStartForElement:l=>M(l,0),resolveHostSlotsForElement:l=>{let f=[];for(let _=l.parentElement;_;_=_.parentElement){if(!A(_)||h(_)||st(_)<=0)continue;let R=T(_,0),k=m(_);f.push({start:R,end:k?R+k:1/0})}return f},isRootGlobalMediaStartForElement:l=>I(l)&&ln(L(l))}}function mn(){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 pn=7200,ut=1/60,se=t=>t!==null&&t>ut?t:null;function Qi(t){return{width:Ee(t.getAttribute("data-width")),height:Ee(t.getAttribute("data-height"))}}function er(t,e){let n=[];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);o==null||o<=ut||n.push(Math.max(0,r)+o)}return se(Se({authoredDurationSeconds:null,clipEndsSeconds:n}).seconds)}function tr(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=P(t.getAttribute("data-duration"));return se(Se({authoredDurationSeconds:null,clipEndsSeconds:[i,...n]}).seconds)}var nr=t=>t.hasAttribute("data-composition-id")||t.hasAttribute("data-composition-src");function ir(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):(I(o)||nr(o))&&i.push(null)}(n||t.querySelector("[data-lottie-src]"))&&i.push(null);let r=Se({authoredDurationSeconds:null,clipEndsSeconds:i});return r.pendingClips>0?{...r,seconds:null,source:"unresolved",reason:"a clip's length is pending"}:r}function rr(t){if(t.declared!==null&&Number.isFinite(t.declared)&&t.declared>0)return t.declared;let e=se(t.timeline()),n=Math.max(0,...t.floors().map(u=>u??0)),i=Number.isFinite(t.fallback)&&t.fallback>ut?t.fallback:0,r=Math.max(n,i),a=e!==null&&e>=pn&&se(r)!==null?null:e,s;return a!==null?s=Math.max(a,r):se(n)!==null?s=r:i>0?s=i:s=t.derived(),s>0?s:0}function fn(t){let e=Te(t);if(!e)return null;let n=V({timelineRegistry:{},includeAuthoredTimingAttrs:!0,documentRef:t}),i=rr({declared:P(e.getAttribute("data-duration")),timeline:()=>null,floors:()=>[er(t,{mediaStart:n.resolveMediaStartForElement,mediaDuration:at}),tr(e,n)],fallback:0,derived:()=>ir(e,n,{unregisteredLottie:!1}).seconds??0});return{...Qi(e),fps:mn().canonicalFps,durationSeconds:i}}var Pe="hyperframes-studio-preview";var hn="data-hf-upcoming";var bn="__hfPreviewErrors";var gn="data-hf-autostamped";function _n(t){return t.hasRuntime||t.runtimeInjected?!1:!!(t.hasNestedCompositions||t.hasTimelines&&t.attempts>=5)}function z(t){return typeof t=="object"&&t!==null}function yn(t){return z(t)&&typeof t.getDuration=="function"}function vn(t){return z(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.8.196/dist/hyperframe.runtime.iife.js";function ue(t){if(t===null)return null;let e=Number.parseInt(t,10);return Number.isFinite(e)&&e>0?e:null}function or(t){let e=t?.querySelector("[data-composition-id][data-width][data-height]")??t?.querySelector("[data-width][data-height]");if(!e)return null;let n=ue(e.getAttribute("data-width")),i=ue(e.getAttribute("data-height"));return n!==null&&i!==null?{width:n,height:i}:null}function ar(t){return Array.isArray(t)?t.find(e=>typeof e=="string"&&e.trim()!==""&&e!=="[object Event]")??null:null}var Ne=class{constructor(e,n){this._iframe=e;this._callbacks=n}_iframe;_callbacks;_interval=null;_runtimeInjected=!1;_runtimeScript=null;_failure=null;get failed(){return this._failure!==null&&this._failure.document===this._iframe.contentDocument}get runtimeInjected(){return this._runtimeInjected}start(){this.stop(),this._failure=null,this._runtimeInjected=!1;let e=0;this._interval=setInterval(()=>{e++;let n=null;try{n=this._poll(e)}catch(i){i instanceof DOMException&&i.name==="SecurityError"||(n={kind:"error",message:i instanceof Error?i.message:String(i)})}n??=this._deadlineOutcome(e),n&&(this.stop(),n.kind==="error"?(this._failure={document:this._iframe.contentDocument},this._callbacks.onError(n.message)):this._callbacks.onReady(n.result))},200)}_deadlineOutcome(e){return e<40||this._callbacks.hostOwnsDeadline?.()?null:{kind:"error",message:"Composition timeline not found after 8s"}}_poll(e){let n=this._iframe.contentWindow;if(!n)return null;let i=ar(Reflect.get(n,bn));if(i!==null)return{kind:"error",message:i};let r=this._iframe.contentDocument,o=Reflect.get(n,"__timelines"),a=this.hasRuntimeBridge(n);if(_n({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(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?fn(n)?.durationSeconds??0:0}return r<=0?null:{duration:r,adapter:{...i,getDuration:()=>r},compositionSize:or(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 z(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(!z(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 vn(a)?a:null}_resolvePlaybackDurationAdapter(e){let n=Reflect.get(e,"__player");if(yn(n))return{kind:"runtime",getDuration:()=>n.getDuration()};let i=this._resolveDirectTimelineAdapterFromWindow(e);return i?{kind:"direct-timeline",timeline:i,getDuration:()=>i.duration()}:null}};var An=`
|
|
1
|
+
"use strict";var ze=Object.defineProperty;var ri=Object.getOwnPropertyDescriptor;var oi=Object.getOwnPropertyNames;var ai=Object.prototype.hasOwnProperty;var si=(t,e)=>{for(var n in e)ze(t,n,{get:e[n],enumerable:!0})},ui=(t,e,n,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of oi(e))!ai.call(t,r)&&r!==n&&ze(t,r,{get:()=>e[r],enumerable:!(i=ri(e,r))||i.enumerable});return t};var li=t=>ui(ze({},"__esModule",{value:!0}),t);var no={};si(no,{HyperframesPlayer:()=>Ge,SPEED_PRESETS:()=>ct,formatSpeed:()=>U,formatTime:()=>Le});module.exports=li(no);var Pt=t=>t!==null&&Number.isFinite(t)&&t>0;function Se(t){let e=t.clipEndsSeconds.filter(i=>i===null).length;if(Pt(t.authoredDurationSeconds))return{seconds:t.authoredDurationSeconds,source:"authored",pendingClips:e};let n=t.clipEndsSeconds.filter(Pt);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 di="http://www.w3.org/1999/xhtml";function Nt(t){return t!=null&&t.nodeType===1}function qe(t){return Nt(t)&&t.namespaceURI===di}function je(t,e){return qe(t)&&t.localName===e}function ci(t){return je(t,"video")}function mi(t){return je(t,"audio")}function I(t){return ci(t)||mi(t)}function Ye(t){return je(t,"img")}function Ee(t){if(t==null||t.trim()==="")return null;let e=Number.parseInt(t,10);return Number.isFinite(e)&&e>0?e:null}function Te(t=document){let e=t.querySelector('[data-composition-id][data-root="true"]');return qe(e)?e:t.querySelector("[data-composition-id]")}var W=Object.freeze({start:"data-start",duration:"data-duration",trackIndex:"data-track-index",derivedEnd:"data-end",legacyTrack:"data-layer"}),uo=Object.freeze([W.start,W.duration,W.trackIndex]),lo=Object.freeze([W.derivedEnd]),co=Object.freeze([W.derivedEnd,W.legacyTrack]);function Xe(t){if(t==null||t.trim()==="")return null;let e=Number(t);return Number.isFinite(e)?e:null}var Lt=t=>{let e=Xe(t);return e!==null&&e>=0?e:null};function Ot(t){return Lt(t("data-playback-start"))??Lt(t("data-media-start"))??0}var Q=.1,ee=10;function Ke(t){return Number.isFinite(t)&&t>0?Math.max(Q,Math.min(ee,t)):1}function Ft(t,e=1){let n=Number.parseFloat(t("data-playback-rate")??"");return Ke(Number.isFinite(n)&&n>0?n:e)}function Je(t){let e=Xe(t("data-duration"));return e!==null&&e>0?e:null}function Vt(t,e){let n=Je(t);if(n!==null)return n;let i=Xe(t("data-end"));return i!==null?i-e:null}var pi=3;function Ze(t,e,n){return Number.isFinite(t)?Math.max(0,t-e)/Ke(n):null}function Qe(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:pi,source:"default"};if(i===null)return{seconds:null,source:"pending",reason:"source duration not yet probed"};let a=Ze(i,r,o);return a===null?{seconds:null,source:"pending",reason:"source reported a non-finite duration"}:{seconds:a,source:"media"}}var Ht="data-fx-chain",po=Ht.slice(5);var te=(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}),et=(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}),Re=(t=-40,e=40,n=0)=>({kind:"number",key:"gain",label:"Gain",unit:"dB",min:t,max:e,step:.1,default:n,automatable:!0}),Ut={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."},Wt=[{id:"gain",label:"Gain",group:"dynamics",description:"Raise or lower the whole signal. Automate it to duck under something else.",params:[Re(-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:[te("frequency","Frequency",1e3),Re(-40,40,0),et(1)],web:"biquad-peaking"},{id:"lowshelf",label:"Low Shelf",group:"filter",description:"Lift or drop everything below the corner frequency.",params:[te("frequency","Frequency",200,20,2e3),Re(-40,40,0)],web:"biquad-lowshelf"},{id:"highshelf",label:"High Shelf",group:"filter",description:"Lift or drop everything above the corner frequency.",params:[te("frequency","Frequency",4e3,500,2e4),Re(-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:[te("frequency","Cutoff",300,20,2e4),et(.707),Ut],web:"biquad-highpass"},{id:"lowpass",label:"Low-pass",group:"filter",description:"Remove high frequencies, which darkens or muffles a track.",params:[te("frequency","Cutoff",8e3,100,2e4),et(.707),Ut],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"}],fo=new Map(Wt.map(t=>[t.id,t]));var ho=Wt.map(t=>t.id);function fi(t){return 10**(t/20)}var $t=fi(12);var nt="data-automation",To=nt.slice(5),tt=1,bi=512,D=class extends Error{constructor(e){super(e),this.name="AudioAutomationError"}},we="volume",xe="rate";function Gt(t){if(t===we)return{kind:"volume"};if(t===xe)return{kind:"rate"};let e=t.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[,n,i]=e;return!n||!i?null:{kind:"fx",nodeId:n,param:i}}var gi="preset";var _i={min:0,max:$t,step:.01,unit:"",label:"Volume",scale:"linear",default:1};var yi={min:Q,max:ee,step:.05,unit:"x",label:"Speed",scale:"log",default:1};function ne(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 vi(t){let e=ne(t);return e===null||e===0?0:Math.min(1,Math.max(-1,e))}function zt(t,e){let n=ne(t),i=ne(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 Ai(t){let e=vi(t?.curve),n=zt(t?.viaX,t?.viaY);return{...e?{curve:e}:{},...n?{viaX:n.x,viaY:n.y}:{}}}function Si(t,e){let n=ne(t?.t),i=ne(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,...Ai(t)}}function Ei(t,e){let n=t.map(r=>Si(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,bi)}function Ti(t){let e=[];for(let n of t.lanes){if(!Gt(n.target))continue;let i=n.target===we?_i:n.target===xe?yi:null,r=Ei(n.points??[],i);r.length>0&&e.push({target:n.target,points:r})}return{version:tt,lanes:e}}function qt(t){let e;try{e=JSON.parse(t)}catch(r){throw new D(`Automation is not valid JSON: ${r.message}`)}if(typeof e!="object"||e===null)throw new D("Automation must be a JSON object.");let n=e;if(n.version!==tt)throw new D(`Unsupported automation version: ${String(n.version)}`);if(!Array.isArray(n.lanes))throw new D("Automation is missing a `lanes` array.");let i=n.lanes.map((r,o)=>{if(typeof r!="object"||r===null)throw new D(`Lane ${o} is not an object.`);let a=r;if(typeof a.target!="string"||!Gt(a.target))throw new D(`Lane ${o} has an unreadable target: ${String(a.target)}`);if(!Array.isArray(a.points))throw new D(`Lane ${o} is missing a \`points\` array.`);return{target:a.target,points:a.points}});return Ti({version:tt,lanes:i})}function Ri(t,e){return e?Math.pow(t,Math.pow(2,2*e)):t}function wi(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,u=Math.min(o,Math.max(1,a,s));return{cx:t+n/u,cy:e+i/u,w:u}}function xi(t,e,n){let{cx:i,cy:r,w:o}=wi(e,n),a=2-2*o,s=t*a-1+2*o*i,u=-t*a-2*o*i,c=ki(s,u,t),m=1-c,b=m*m+2*o*c*m+c*c;return b>0?(2*o*r*c*m+c*c)/b:t}function ki(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 Mi(t,e){let n=zt(e.viaX,e.viaY);return n?xi(Math.min(1,Math.max(0,t)),n.x,n.y):Ri(t,e.curve)}function Ii(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 ke(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 b=a+s>>1;i[b].t<=e?a=b:s=b}let u=i[a],c=i[s],m=c.t-u.t;return m<=0?c.v:Ii(u.v,c.v,Mi((e-u.t)/m,u),n)}var Me=new Map,Di=64;function jt(t,e=we){let n=`${e}\0${t}`,i=Me.get(n);if(i!==void 0)return i;let r=null;try{r=qt(t).lanes.find(o=>o.target===e)??null}catch{r=null}return Me.size>Di&&Me.clear(),Me.set(n,r),r}var Yt=48,Xt=new WeakMap;function Ci(t){let e=t.points,n=e[0].v,i=e[e.length-1].v,r=[0],o=[0],a=u=>{let c=r[r.length-1];if(u<=c)return;let m=ke(t,c,"log");r.push(u),o.push(o[o.length-1]+(m+ke(t,u,"log"))/2*(u-c))},s=Math.max(0,e[0].t);a(s);for(let u=1;u<e.length;u+=1){let c=e[u-1].t,m=e[u].t;if(!(m<=0))for(let b=1;b<=Yt;b+=1)a(Math.max(c,0)+(m-c)*b/Yt)}return{ts:Float64Array.from(r),ss:Float64Array.from(o),firstRate:n,lastRate:i}}function Pi(t){let e=Xt.get(t);return e||(e=Ci(t),Xt.set(t,e)),e}function Ni(t){return typeof t!="number"&&t.points.length>0}function Li(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 it(t,e){if(typeof t=="number")return e/t;if(!Ni(t))return e;let{ts:n,ss:i,firstRate:r,lastRate:o}=Pi(t),a=n.length-1;return e<=0?e/r:e>=i[a]?n[a]+(e-i[a])/o:Li(i,n,e)}function Oi(t){return t?jt(t,xe):null}function Kt(t,e){return Oi(t)??e}var Do=[{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"}),Po=Object.freeze([y.start,y.duration,y.trackIndex]),No=Object.freeze([y.derivedEnd]),Lo=Object.freeze([y.derivedEnd,y.legacyTrack]);function C(t){if(t==null||t.trim()==="")return null;let e=Number(t);return Number.isFinite(e)?e:null}var Qt=/^[A-Za-z0-9_.:-]+$/;function en(t,e){let n=t.charCodeAt(e);return n>=48&&n<=57}function Jt(t,e){let n=e;for(;n>=0&&en(t,n);)n--;return n}function Fi(t,e){let n=e;for(;n>=0&&(t[n]??"").trim()==="";)n--;return n}function Vi(t){let e=t.length-1;if(!en(t,e))return null;let n=Jt(t,e);return t[n]==="."&&(n=Jt(t,n-1)),n+1}function Ui(t){let e=Vi(t);if(e==null)return null;let n=Fi(t,e-1),i=t[n];if(i!=="+"&&i!=="-")return null;let r=t.slice(0,n).trim();if(!Qt.test(r))return null;let o=Number(t.slice(e));return Number.isFinite(o)?{refId:r,operator:i,magnitude:o}:null}function ie(t){let e=(t??"").trim();if(!e)return null;let n=C(e);if(n!=null)return{kind:"absolute",value:n};if(Qt.test(e))return{kind:"reference",refId:e,offset:0};let i=Ui(e);return i?{kind:"reference",refId:i.refId,offset:i.operator==="-"?-i.magnitude:i.magnitude}:null}function w(t,e,n,i){t.push({code:e,attribute:n,value:i})}function Hi(t,e,n,i){if(e==null||e.trim()==="")return n.defaultStart===void 0?0:n.defaultStart;if(!t)return w(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)?(w(i,"unresolved-start-reference",y.start,e),null):Math.max(0,r+t.offset)}var Wi=1e-9;function $i(t,e){return Math.abs(t-e)<=Wi}function Bi(t,e,n){let i=C(t);if(i==null){w(n,"deprecated-end",y.derivedEnd,t),w(n,"invalid-end",y.derivedEnd,t);return}if(e==null){w(n,"deprecated-end",y.derivedEnd,t);return}$i(i,e)||(w(n,"deprecated-end",y.derivedEnd,t),w(n,"conflicting-end",y.derivedEnd,t))}function Gi(t,e,n){let i=C(t);return i==null||i<0?(w(n,"invalid-duration",y.duration,t),{duration:null,end:null,durationSource:"invalid"}):{duration:i,end:e==null?null:e+i,durationSource:"duration"}}function zi(t,e,n){w(n,"deprecated-end",y.derivedEnd,t);let i=C(t);return i==null?(w(n,"invalid-end",y.derivedEnd,t),{duration:null,end:null,durationSource:"invalid"}):e==null?{duration:null,end:i,durationSource:"legacy-end"}:i<e?(w(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"}:zi(r,e,n);let o=Gi(i,e,n);return r!=null&&Bi(r,o.end,n),o}function Zt(t,e,n,i){let r=C(t);return r==null||!Number.isInteger(r)?(w(i,"invalid-track-index",e,t),{trackIndex:0,trackSource:"invalid"}):{trackIndex:r,trackSource:n}}function ji(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 w(e,"deprecated-layer",y.legacyTrack,i),Zt(i,y.legacyTrack,"legacy-layer",e);let r=Zt(n??"",y.trackIndex,"track-index",e);if(i==null)return r;w(e,"deprecated-layer",y.legacyTrack,i);let o=C(i);return o!=null&&o!==r.trackIndex&&w(e,"conflicting-layer",y.legacyTrack,i),r}function rt(t,e={}){let n=[],i=t.getAttribute(y.start),r=ie(i),o=Hi(r,i,e,n),a=qi(t,o,n),s=ji(t,n);return{startExpression:r,start:o,...a,...s,diagnostics:n}}function P(t){return C(t)}function re(t){return Ft(e=>t.getAttribute(e),I(t)?t.defaultPlaybackRate:1)}function ot(t){return Kt(t.getAttribute("data-automation"),re(t))}function Ie(t){return Ot(e=>t.getAttribute(e))}function $(t,e){return Yi(e,Ie(t),ot(t))}function at(t){let e=Qe({tag:"video",authoredDurationSeconds:Je(n=>t.getAttribute(n)),sourceDurationSeconds:Number.isFinite(t.duration)?t.duration:null,mediaStartSeconds:Ie(t),playbackRate:re(t)});return e.source==="media"?$(t,t.duration):e.seconds}function De(t,e=0){return!Ye(t)||!t.hasAttribute("data-start")&&!t.hasAttribute("data-track-index")?null:Qe({tag:"img",authoredDurationSeconds:Vt(n=>t.getAttribute(n),e),sourceDurationSeconds:null,mediaStartSeconds:0,playbackRate:1}).seconds}function Yi(t,e,n){return typeof n=="number"?Ze(t,e,n):Number.isFinite(t)?it(n,Math.max(0,t-e)):null}function tn(){return globalThis}function B(t,e){if(typeof window>"u")return;let n=tn(),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 Xi=t=>t.paused?.()===!0?(t.startTime?.()??0)+(t.totalDuration?.()??0)/Math.abs(t.timeScale?.()||1):0;function oe(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(Xi));return Number.isFinite(i)?i:null}catch(e){return B("runtime.timelineDuration",e),null}}var nn="data-hf-authored-duration",rn="data-hf-authored-end";function ae(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=ae(t.start);if(e==null)return null;let n=Math.max(0,e),i=ae(t.duration),r=ae(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=ae(t.end),s=ae(t.authoredEnd),u=a!=null&&a>n?a:s!=null&&s>n?s:null;return{start:n,duration:u==null?null:u-n,end:u}}var G=Object.freeze({start:"data-start",duration:"data-duration",trackIndex:"data-track-index",derivedEnd:"data-end",legacyTrack:"data-layer"}),Ko=Object.freeze([G.start,G.duration,G.trackIndex]),Jo=Object.freeze([G.derivedEnd]),Zo=Object.freeze([G.derivedEnd,G.legacyTrack]);function Ki(t){if(t==null||t.trim()==="")return null;let e=Number(t);return Number.isFinite(e)?e:null}var on=t=>{let e=Ki(t);return e!==null&&e>=0?e:null};function Ji(t){return on(t("data-playback-start"))??on(t("data-media-start"))??0}var an="data-hf-media-start-basis";function sn(t){return t?.trim().toLowerCase()==="global"?"global":"local"}function Zi(t){return sn(t.basis)==="global"?t.authoredStart:t.hostStart+t.authoredStart}function un(t){return dn(t)?Zi({authoredStart:t.authoredStart,hostStart:t.hostStart,basis:t.basis}):t.ordinaryStart()}function ln(t){return dn(t)&&sn(t.basis)==="global"}function dn(t){return!t.hasAutoStart&&t.authoredStart!=null&&t.hostStart!==0}function st(t){return Ji(e=>t.getAttribute(e))}function cn(t,e){return t-st(e)}function V(t){let e=t.timelineRegistry??{},n=t.includeAuthoredTimingAttrs??!1,i=t.documentRef??document,r=new WeakMap,o=new WeakMap,a=new Set,s=l=>(l.hasAttribute("data-composition-id")?l.parentElement:l)?.closest("[data-composition-id]")??null,u=(l,f)=>{let _=s(f);if(_){for(let k of _.querySelectorAll(`[id="${l}"]`))if(s(k)===_)return k}let R=i.getElementById(l);return R||(Array.from(i.querySelectorAll("[data-composition-id]")).find(k=>k.getAttribute("data-composition-id")===l)??null)},c=(l,f)=>n?l.getAttribute(f):null,m=l=>Ce({start:0,duration:l.getAttribute("data-duration"),authoredDuration:c(l,"data-hf-authored-duration")})?.duration??Ce({start:T(l,0),end:l.getAttribute("data-end"),authoredEnd:c(l,"data-hf-authored-end")})?.duration??null,b=l=>l!=null&&Number.isFinite(l)&&l>0?l:null,v=l=>{let f=l.getAttribute("data-composition-id");return f?b(oe(e[f])):null},g=l=>{let f=o.get(l);if(f!==void 0)return f;let _=m(l)??b(I(l)?$(l,l.duration):null)??b(De(l))??v(l);return o.set(l,_),_},A=l=>l.hasAttribute("data-composition-src")||l.hasAttribute("data-composition-id")||l.hasAttribute("data-composition-file"),h=l=>{let f=l.parentElement;return!f||!l.hasAttribute("data-composition-id")||ie(l.getAttribute("data-start"))?null:A(f)?f:null},E=(l,f)=>cn(T(l,f),h(l)??l),M=(l,f)=>{let _=l.hasAttribute("data-composition-id")?l.parentElement?.closest("[data-composition-id]"):l.closest("[data-composition-id]");return _?E(_,f):0},N=(l,f)=>{let _=ie(l.getAttribute("data-start"));if(!_){let Z=h(l);return Z?T(Z,f):f}if(_.kind==="absolute")return M(l,f)+Math.max(0,_.value);let R=u(_.refId,l);if(!R)return f;let k=T(R,0),_e=g(R)??0,ye=Math.min(0,M(l,0));return Math.max(ye,k+_e+_.offset)},T=(l,f)=>{let _=r.get(l);if(_!==void 0)return _??f;if(a.has(l))return f;a.add(l);try{let R=N(l,f);return r.set(l,R),R}finally{a.delete(l)}},L=l=>{let f=l.closest("[data-composition-id]");return{authoredStart:P(l.getAttribute("data-start")),hostStart:f?E(f,0):0,hasAutoStart:l.hasAttribute("data-hf-auto-start"),basis:l.getAttribute(an)}};return{resolveStartForElement:(l,f=0)=>T(l,Math.max(0,f)),resolveDurationForElement:l=>g(l),resolveMediaStartForElement:l=>{let f=L(l);return un({...f,ordinaryStart:()=>T(l,f.hostStart)})},resolveHostStartForElement:l=>M(l,0),resolveHostSlotsForElement:l=>{let f=[];for(let _=l.parentElement;_;_=_.parentElement){if(!A(_)||h(_)||st(_)<=0)continue;let R=T(_,0),k=m(_);f.push({start:R,end:k?R+k:1/0})}return f},isRootGlobalMediaStartForElement:l=>I(l)&&ln(L(l))}}function mn(){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 pn=7200,ut=1/60,se=t=>t!==null&&t>ut?t:null;function Qi(t){return{width:Ee(t.getAttribute("data-width")),height:Ee(t.getAttribute("data-height"))}}function er(t,e){let n=[];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);o==null||o<=ut||n.push(Math.max(0,r)+o)}return se(Se({authoredDurationSeconds:null,clipEndsSeconds:n}).seconds)}function tr(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=P(t.getAttribute("data-duration"));return se(Se({authoredDurationSeconds:null,clipEndsSeconds:[i,...n]}).seconds)}var nr=t=>t.hasAttribute("data-composition-id")||t.hasAttribute("data-composition-src");function ir(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):(I(o)||nr(o))&&i.push(null)}(n||t.querySelector("[data-lottie-src]"))&&i.push(null);let r=Se({authoredDurationSeconds:null,clipEndsSeconds:i});return r.pendingClips>0?{...r,seconds:null,source:"unresolved",reason:"a clip's length is pending"}:r}function rr(t){if(t.declared!==null&&Number.isFinite(t.declared)&&t.declared>0)return t.declared;let e=se(t.timeline()),n=Math.max(0,...t.floors().map(u=>u??0)),i=Number.isFinite(t.fallback)&&t.fallback>ut?t.fallback:0,r=Math.max(n,i),a=e!==null&&e>=pn&&se(r)!==null?null:e,s;return a!==null?s=Math.max(a,r):se(n)!==null?s=r:i>0?s=i:s=t.derived(),s>0?s:0}function fn(t){let e=Te(t);if(!e)return null;let n=V({timelineRegistry:{},includeAuthoredTimingAttrs:!0,documentRef:t}),i=rr({declared:P(e.getAttribute("data-duration")),timeline:()=>null,floors:()=>[er(t,{mediaStart:n.resolveMediaStartForElement,mediaDuration:at}),tr(e,n)],fallback:0,derived:()=>ir(e,n,{unregisteredLottie:!1}).seconds??0});return{...Qi(e),fps:mn().canonicalFps,durationSeconds:i}}var Pe="hyperframes-studio-preview";var hn="data-hf-upcoming";var bn="__hfPreviewErrors";var gn="data-hf-autostamped";function _n(t){return t.hasRuntime||t.runtimeInjected?!1:!!(t.hasNestedCompositions||t.hasTimelines&&t.attempts>=5)}function z(t){return typeof t=="object"&&t!==null}function yn(t){return z(t)&&typeof t.getDuration=="function"}function vn(t){return z(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.8.197/dist/hyperframe.runtime.iife.js";function ue(t){if(t===null)return null;let e=Number.parseInt(t,10);return Number.isFinite(e)&&e>0?e:null}function or(t){let e=t?.querySelector("[data-composition-id][data-width][data-height]")??t?.querySelector("[data-width][data-height]");if(!e)return null;let n=ue(e.getAttribute("data-width")),i=ue(e.getAttribute("data-height"));return n!==null&&i!==null?{width:n,height:i}:null}function ar(t){return Array.isArray(t)?t.find(e=>typeof e=="string"&&e.trim()!==""&&e!=="[object Event]")??null:null}var Ne=class{constructor(e,n){this._iframe=e;this._callbacks=n}_iframe;_callbacks;_interval=null;_runtimeInjected=!1;_runtimeScript=null;_failure=null;get failed(){return this._failure!==null&&this._failure.document===this._iframe.contentDocument}get runtimeInjected(){return this._runtimeInjected}start(){this.stop(),this._failure=null,this._runtimeInjected=!1;let e=0;this._interval=setInterval(()=>{e++;let n=null;try{n=this._poll(e)}catch(i){i instanceof DOMException&&i.name==="SecurityError"||(n={kind:"error",message:i instanceof Error?i.message:String(i)})}n??=this._deadlineOutcome(e),n&&(this.stop(),n.kind==="error"?(this._failure={document:this._iframe.contentDocument},this._callbacks.onError(n.message)):this._callbacks.onReady(n.result))},200)}_deadlineOutcome(e){return e<40||this._callbacks.hostOwnsDeadline?.()?null:{kind:"error",message:"Composition timeline not found after 8s"}}_poll(e){let n=this._iframe.contentWindow;if(!n)return null;let i=ar(Reflect.get(n,bn));if(i!==null)return{kind:"error",message:i};let r=this._iframe.contentDocument,o=Reflect.get(n,"__timelines"),a=this.hasRuntimeBridge(n);if(_n({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(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?fn(n)?.durationSeconds??0:0}return r<=0?null:{duration:r,adapter:{...i,getDuration:()=>r},compositionSize:or(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 z(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(!z(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 vn(a)?a:null}_resolvePlaybackDurationAdapter(e){let n=Reflect.get(e,"__player");if(yn(n))return{kind:"runtime",getDuration:()=>n.getDuration()};let i=this._resolveDirectTimelineAdapterFromWindow(e);return i?{kind:"direct-timeline",timeline:i,getDuration:()=>i.duration()}:null}};var An=`
|
|
2
2
|
:host {
|
|
3
3
|
display: block;
|
|
4
4
|
position: relative;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var HyperframesPlayer=(()=>{var ze=Object.defineProperty;var ri=Object.getOwnPropertyDescriptor;var oi=Object.getOwnPropertyNames;var ai=Object.prototype.hasOwnProperty;var si=(t,e)=>{for(var n in e)ze(t,n,{get:e[n],enumerable:!0})},ui=(t,e,n,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of oi(e))!ai.call(t,r)&&r!==n&&ze(t,r,{get:()=>e[r],enumerable:!(i=ri(e,r))||i.enumerable});return t};var li=t=>ui(ze({},"__esModule",{value:!0}),t);var no={};si(no,{HyperframesPlayer:()=>Ge,SPEED_PRESETS:()=>ct,formatSpeed:()=>U,formatTime:()=>Le});var Pt=t=>t!==null&&Number.isFinite(t)&&t>0;function Se(t){let e=t.clipEndsSeconds.filter(i=>i===null).length;if(Pt(t.authoredDurationSeconds))return{seconds:t.authoredDurationSeconds,source:"authored",pendingClips:e};let n=t.clipEndsSeconds.filter(Pt);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 di="http://www.w3.org/1999/xhtml";function Nt(t){return t!=null&&t.nodeType===1}function qe(t){return Nt(t)&&t.namespaceURI===di}function je(t,e){return qe(t)&&t.localName===e}function ci(t){return je(t,"video")}function mi(t){return je(t,"audio")}function I(t){return ci(t)||mi(t)}function Ye(t){return je(t,"img")}function Ee(t){if(t==null||t.trim()==="")return null;let e=Number.parseInt(t,10);return Number.isFinite(e)&&e>0?e:null}function Te(t=document){let e=t.querySelector('[data-composition-id][data-root="true"]');return qe(e)?e:t.querySelector("[data-composition-id]")}var W=Object.freeze({start:"data-start",duration:"data-duration",trackIndex:"data-track-index",derivedEnd:"data-end",legacyTrack:"data-layer"}),uo=Object.freeze([W.start,W.duration,W.trackIndex]),lo=Object.freeze([W.derivedEnd]),co=Object.freeze([W.derivedEnd,W.legacyTrack]);function Xe(t){if(t==null||t.trim()==="")return null;let e=Number(t);return Number.isFinite(e)?e:null}var Lt=t=>{let e=Xe(t);return e!==null&&e>=0?e:null};function Ot(t){return Lt(t("data-playback-start"))??Lt(t("data-media-start"))??0}var Q=.1,ee=10;function Ke(t){return Number.isFinite(t)&&t>0?Math.max(Q,Math.min(ee,t)):1}function Ft(t,e=1){let n=Number.parseFloat(t("data-playback-rate")??"");return Ke(Number.isFinite(n)&&n>0?n:e)}function Je(t){let e=Xe(t("data-duration"));return e!==null&&e>0?e:null}function Vt(t,e){let n=Je(t);if(n!==null)return n;let i=Xe(t("data-end"));return i!==null?i-e:null}var pi=3;function Ze(t,e,n){return Number.isFinite(t)?Math.max(0,t-e)/Ke(n):null}function Qe(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:pi,source:"default"};if(i===null)return{seconds:null,source:"pending",reason:"source duration not yet probed"};let a=Ze(i,r,o);return a===null?{seconds:null,source:"pending",reason:"source reported a non-finite duration"}:{seconds:a,source:"media"}}var Ht="data-fx-chain",po=Ht.slice(5);var te=(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}),et=(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}),Re=(t=-40,e=40,n=0)=>({kind:"number",key:"gain",label:"Gain",unit:"dB",min:t,max:e,step:.1,default:n,automatable:!0}),Ut={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."},Wt=[{id:"gain",label:"Gain",group:"dynamics",description:"Raise or lower the whole signal. Automate it to duck under something else.",params:[Re(-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:[te("frequency","Frequency",1e3),Re(-40,40,0),et(1)],web:"biquad-peaking"},{id:"lowshelf",label:"Low Shelf",group:"filter",description:"Lift or drop everything below the corner frequency.",params:[te("frequency","Frequency",200,20,2e3),Re(-40,40,0)],web:"biquad-lowshelf"},{id:"highshelf",label:"High Shelf",group:"filter",description:"Lift or drop everything above the corner frequency.",params:[te("frequency","Frequency",4e3,500,2e4),Re(-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:[te("frequency","Cutoff",300,20,2e4),et(.707),Ut],web:"biquad-highpass"},{id:"lowpass",label:"Low-pass",group:"filter",description:"Remove high frequencies, which darkens or muffles a track.",params:[te("frequency","Cutoff",8e3,100,2e4),et(.707),Ut],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"}],fo=new Map(Wt.map(t=>[t.id,t]));var ho=Wt.map(t=>t.id);function fi(t){return 10**(t/20)}var $t=fi(12);var nt="data-automation",To=nt.slice(5),tt=1,bi=512,D=class extends Error{constructor(e){super(e),this.name="AudioAutomationError"}},we="volume",xe="rate";function Gt(t){if(t===we)return{kind:"volume"};if(t===xe)return{kind:"rate"};let e=t.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[,n,i]=e;return!n||!i?null:{kind:"fx",nodeId:n,param:i}}var gi="preset";var _i={min:0,max:$t,step:.01,unit:"",label:"Volume",scale:"linear",default:1};var yi={min:Q,max:ee,step:.05,unit:"x",label:"Speed",scale:"log",default:1};function ne(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 vi(t){let e=ne(t);return e===null||e===0?0:Math.min(1,Math.max(-1,e))}function zt(t,e){let n=ne(t),i=ne(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 Ai(t){let e=vi(t?.curve),n=zt(t?.viaX,t?.viaY);return{...e?{curve:e}:{},...n?{viaX:n.x,viaY:n.y}:{}}}function Si(t,e){let n=ne(t?.t),i=ne(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,...Ai(t)}}function Ei(t,e){let n=t.map(r=>Si(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,bi)}function Ti(t){let e=[];for(let n of t.lanes){if(!Gt(n.target))continue;let i=n.target===we?_i:n.target===xe?yi:null,r=Ei(n.points??[],i);r.length>0&&e.push({target:n.target,points:r})}return{version:tt,lanes:e}}function qt(t){let e;try{e=JSON.parse(t)}catch(r){throw new D(`Automation is not valid JSON: ${r.message}`)}if(typeof e!="object"||e===null)throw new D("Automation must be a JSON object.");let n=e;if(n.version!==tt)throw new D(`Unsupported automation version: ${String(n.version)}`);if(!Array.isArray(n.lanes))throw new D("Automation is missing a `lanes` array.");let i=n.lanes.map((r,o)=>{if(typeof r!="object"||r===null)throw new D(`Lane ${o} is not an object.`);let a=r;if(typeof a.target!="string"||!Gt(a.target))throw new D(`Lane ${o} has an unreadable target: ${String(a.target)}`);if(!Array.isArray(a.points))throw new D(`Lane ${o} is missing a \`points\` array.`);return{target:a.target,points:a.points}});return Ti({version:tt,lanes:i})}function Ri(t,e){return e?Math.pow(t,Math.pow(2,2*e)):t}function wi(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,u=Math.min(o,Math.max(1,a,s));return{cx:t+n/u,cy:e+i/u,w:u}}function xi(t,e,n){let{cx:i,cy:r,w:o}=wi(e,n),a=2-2*o,s=t*a-1+2*o*i,u=-t*a-2*o*i,c=ki(s,u,t),m=1-c,b=m*m+2*o*c*m+c*c;return b>0?(2*o*r*c*m+c*c)/b:t}function ki(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 Mi(t,e){let n=zt(e.viaX,e.viaY);return n?xi(Math.min(1,Math.max(0,t)),n.x,n.y):Ri(t,e.curve)}function Ii(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 ke(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 b=a+s>>1;i[b].t<=e?a=b:s=b}let u=i[a],c=i[s],m=c.t-u.t;return m<=0?c.v:Ii(u.v,c.v,Mi((e-u.t)/m,u),n)}var Me=new Map,Di=64;function jt(t,e=we){let n=`${e}\0${t}`,i=Me.get(n);if(i!==void 0)return i;let r=null;try{r=qt(t).lanes.find(o=>o.target===e)??null}catch{r=null}return Me.size>Di&&Me.clear(),Me.set(n,r),r}var Yt=48,Xt=new WeakMap;function Ci(t){let e=t.points,n=e[0].v,i=e[e.length-1].v,r=[0],o=[0],a=u=>{let c=r[r.length-1];if(u<=c)return;let m=ke(t,c,"log");r.push(u),o.push(o[o.length-1]+(m+ke(t,u,"log"))/2*(u-c))},s=Math.max(0,e[0].t);a(s);for(let u=1;u<e.length;u+=1){let c=e[u-1].t,m=e[u].t;if(!(m<=0))for(let b=1;b<=Yt;b+=1)a(Math.max(c,0)+(m-c)*b/Yt)}return{ts:Float64Array.from(r),ss:Float64Array.from(o),firstRate:n,lastRate:i}}function Pi(t){let e=Xt.get(t);return e||(e=Ci(t),Xt.set(t,e)),e}function Ni(t){return typeof t!="number"&&t.points.length>0}function Li(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 it(t,e){if(typeof t=="number")return e/t;if(!Ni(t))return e;let{ts:n,ss:i,firstRate:r,lastRate:o}=Pi(t),a=n.length-1;return e<=0?e/r:e>=i[a]?n[a]+(e-i[a])/o:Li(i,n,e)}function Oi(t){return t?jt(t,xe):null}function Kt(t,e){return Oi(t)??e}var Do=[{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"}),Po=Object.freeze([y.start,y.duration,y.trackIndex]),No=Object.freeze([y.derivedEnd]),Lo=Object.freeze([y.derivedEnd,y.legacyTrack]);function C(t){if(t==null||t.trim()==="")return null;let e=Number(t);return Number.isFinite(e)?e:null}var Qt=/^[A-Za-z0-9_.:-]+$/;function en(t,e){let n=t.charCodeAt(e);return n>=48&&n<=57}function Jt(t,e){let n=e;for(;n>=0&&en(t,n);)n--;return n}function Fi(t,e){let n=e;for(;n>=0&&(t[n]??"").trim()==="";)n--;return n}function Vi(t){let e=t.length-1;if(!en(t,e))return null;let n=Jt(t,e);return t[n]==="."&&(n=Jt(t,n-1)),n+1}function Ui(t){let e=Vi(t);if(e==null)return null;let n=Fi(t,e-1),i=t[n];if(i!=="+"&&i!=="-")return null;let r=t.slice(0,n).trim();if(!Qt.test(r))return null;let o=Number(t.slice(e));return Number.isFinite(o)?{refId:r,operator:i,magnitude:o}:null}function ie(t){let e=(t??"").trim();if(!e)return null;let n=C(e);if(n!=null)return{kind:"absolute",value:n};if(Qt.test(e))return{kind:"reference",refId:e,offset:0};let i=Ui(e);return i?{kind:"reference",refId:i.refId,offset:i.operator==="-"?-i.magnitude:i.magnitude}:null}function w(t,e,n,i){t.push({code:e,attribute:n,value:i})}function Hi(t,e,n,i){if(e==null||e.trim()==="")return n.defaultStart===void 0?0:n.defaultStart;if(!t)return w(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)?(w(i,"unresolved-start-reference",y.start,e),null):Math.max(0,r+t.offset)}var Wi=1e-9;function $i(t,e){return Math.abs(t-e)<=Wi}function Bi(t,e,n){let i=C(t);if(i==null){w(n,"deprecated-end",y.derivedEnd,t),w(n,"invalid-end",y.derivedEnd,t);return}if(e==null){w(n,"deprecated-end",y.derivedEnd,t);return}$i(i,e)||(w(n,"deprecated-end",y.derivedEnd,t),w(n,"conflicting-end",y.derivedEnd,t))}function Gi(t,e,n){let i=C(t);return i==null||i<0?(w(n,"invalid-duration",y.duration,t),{duration:null,end:null,durationSource:"invalid"}):{duration:i,end:e==null?null:e+i,durationSource:"duration"}}function zi(t,e,n){w(n,"deprecated-end",y.derivedEnd,t);let i=C(t);return i==null?(w(n,"invalid-end",y.derivedEnd,t),{duration:null,end:null,durationSource:"invalid"}):e==null?{duration:null,end:i,durationSource:"legacy-end"}:i<e?(w(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"}:zi(r,e,n);let o=Gi(i,e,n);return r!=null&&Bi(r,o.end,n),o}function Zt(t,e,n,i){let r=C(t);return r==null||!Number.isInteger(r)?(w(i,"invalid-track-index",e,t),{trackIndex:0,trackSource:"invalid"}):{trackIndex:r,trackSource:n}}function ji(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 w(e,"deprecated-layer",y.legacyTrack,i),Zt(i,y.legacyTrack,"legacy-layer",e);let r=Zt(n??"",y.trackIndex,"track-index",e);if(i==null)return r;w(e,"deprecated-layer",y.legacyTrack,i);let o=C(i);return o!=null&&o!==r.trackIndex&&w(e,"conflicting-layer",y.legacyTrack,i),r}function rt(t,e={}){let n=[],i=t.getAttribute(y.start),r=ie(i),o=Hi(r,i,e,n),a=qi(t,o,n),s=ji(t,n);return{startExpression:r,start:o,...a,...s,diagnostics:n}}function P(t){return C(t)}function re(t){return Ft(e=>t.getAttribute(e),I(t)?t.defaultPlaybackRate:1)}function ot(t){return Kt(t.getAttribute("data-automation"),re(t))}function Ie(t){return Ot(e=>t.getAttribute(e))}function $(t,e){return Yi(e,Ie(t),ot(t))}function at(t){let e=Qe({tag:"video",authoredDurationSeconds:Je(n=>t.getAttribute(n)),sourceDurationSeconds:Number.isFinite(t.duration)?t.duration:null,mediaStartSeconds:Ie(t),playbackRate:re(t)});return e.source==="media"?$(t,t.duration):e.seconds}function De(t,e=0){return!Ye(t)||!t.hasAttribute("data-start")&&!t.hasAttribute("data-track-index")?null:Qe({tag:"img",authoredDurationSeconds:Vt(n=>t.getAttribute(n),e),sourceDurationSeconds:null,mediaStartSeconds:0,playbackRate:1}).seconds}function Yi(t,e,n){return typeof n=="number"?Ze(t,e,n):Number.isFinite(t)?it(n,Math.max(0,t-e)):null}function tn(){return globalThis}function B(t,e){if(typeof window>"u")return;let n=tn(),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 Xi=t=>t.paused?.()===!0?(t.startTime?.()??0)+(t.totalDuration?.()??0)/Math.abs(t.timeScale?.()||1):0;function oe(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(Xi));return Number.isFinite(i)?i:null}catch(e){return B("runtime.timelineDuration",e),null}}var nn="data-hf-authored-duration",rn="data-hf-authored-end";function ae(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=ae(t.start);if(e==null)return null;let n=Math.max(0,e),i=ae(t.duration),r=ae(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=ae(t.end),s=ae(t.authoredEnd),u=a!=null&&a>n?a:s!=null&&s>n?s:null;return{start:n,duration:u==null?null:u-n,end:u}}var G=Object.freeze({start:"data-start",duration:"data-duration",trackIndex:"data-track-index",derivedEnd:"data-end",legacyTrack:"data-layer"}),Ko=Object.freeze([G.start,G.duration,G.trackIndex]),Jo=Object.freeze([G.derivedEnd]),Zo=Object.freeze([G.derivedEnd,G.legacyTrack]);function Ki(t){if(t==null||t.trim()==="")return null;let e=Number(t);return Number.isFinite(e)?e:null}var on=t=>{let e=Ki(t);return e!==null&&e>=0?e:null};function Ji(t){return on(t("data-playback-start"))??on(t("data-media-start"))??0}var an="data-hf-media-start-basis";function sn(t){return t?.trim().toLowerCase()==="global"?"global":"local"}function Zi(t){return sn(t.basis)==="global"?t.authoredStart:t.hostStart+t.authoredStart}function un(t){return dn(t)?Zi({authoredStart:t.authoredStart,hostStart:t.hostStart,basis:t.basis}):t.ordinaryStart()}function ln(t){return dn(t)&&sn(t.basis)==="global"}function dn(t){return!t.hasAutoStart&&t.authoredStart!=null&&t.hostStart!==0}function st(t){return Ji(e=>t.getAttribute(e))}function cn(t,e){return t-st(e)}function V(t){let e=t.timelineRegistry??{},n=t.includeAuthoredTimingAttrs??!1,i=t.documentRef??document,r=new WeakMap,o=new WeakMap,a=new Set,s=l=>(l.hasAttribute("data-composition-id")?l.parentElement:l)?.closest("[data-composition-id]")??null,u=(l,f)=>{let _=s(f);if(_){for(let k of _.querySelectorAll(`[id="${l}"]`))if(s(k)===_)return k}let R=i.getElementById(l);return R||(Array.from(i.querySelectorAll("[data-composition-id]")).find(k=>k.getAttribute("data-composition-id")===l)??null)},c=(l,f)=>n?l.getAttribute(f):null,m=l=>Ce({start:0,duration:l.getAttribute("data-duration"),authoredDuration:c(l,"data-hf-authored-duration")})?.duration??Ce({start:T(l,0),end:l.getAttribute("data-end"),authoredEnd:c(l,"data-hf-authored-end")})?.duration??null,b=l=>l!=null&&Number.isFinite(l)&&l>0?l:null,v=l=>{let f=l.getAttribute("data-composition-id");return f?b(oe(e[f])):null},g=l=>{let f=o.get(l);if(f!==void 0)return f;let _=m(l)??b(I(l)?$(l,l.duration):null)??b(De(l))??v(l);return o.set(l,_),_},A=l=>l.hasAttribute("data-composition-src")||l.hasAttribute("data-composition-id")||l.hasAttribute("data-composition-file"),h=l=>{let f=l.parentElement;return!f||!l.hasAttribute("data-composition-id")||ie(l.getAttribute("data-start"))?null:A(f)?f:null},E=(l,f)=>cn(T(l,f),h(l)??l),M=(l,f)=>{let _=l.hasAttribute("data-composition-id")?l.parentElement?.closest("[data-composition-id]"):l.closest("[data-composition-id]");return _?E(_,f):0},N=(l,f)=>{let _=ie(l.getAttribute("data-start"));if(!_){let Z=h(l);return Z?T(Z,f):f}if(_.kind==="absolute")return M(l,f)+Math.max(0,_.value);let R=u(_.refId,l);if(!R)return f;let k=T(R,0),_e=g(R)??0,ye=Math.min(0,M(l,0));return Math.max(ye,k+_e+_.offset)},T=(l,f)=>{let _=r.get(l);if(_!==void 0)return _??f;if(a.has(l))return f;a.add(l);try{let R=N(l,f);return r.set(l,R),R}finally{a.delete(l)}},L=l=>{let f=l.closest("[data-composition-id]");return{authoredStart:P(l.getAttribute("data-start")),hostStart:f?E(f,0):0,hasAutoStart:l.hasAttribute("data-hf-auto-start"),basis:l.getAttribute(an)}};return{resolveStartForElement:(l,f=0)=>T(l,Math.max(0,f)),resolveDurationForElement:l=>g(l),resolveMediaStartForElement:l=>{let f=L(l);return un({...f,ordinaryStart:()=>T(l,f.hostStart)})},resolveHostStartForElement:l=>M(l,0),resolveHostSlotsForElement:l=>{let f=[];for(let _=l.parentElement;_;_=_.parentElement){if(!A(_)||h(_)||st(_)<=0)continue;let R=T(_,0),k=m(_);f.push({start:R,end:k?R+k:1/0})}return f},isRootGlobalMediaStartForElement:l=>I(l)&&ln(L(l))}}function mn(){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 pn=7200,ut=1/60,se=t=>t!==null&&t>ut?t:null;function Qi(t){return{width:Ee(t.getAttribute("data-width")),height:Ee(t.getAttribute("data-height"))}}function er(t,e){let n=[];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);o==null||o<=ut||n.push(Math.max(0,r)+o)}return se(Se({authoredDurationSeconds:null,clipEndsSeconds:n}).seconds)}function tr(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=P(t.getAttribute("data-duration"));return se(Se({authoredDurationSeconds:null,clipEndsSeconds:[i,...n]}).seconds)}var nr=t=>t.hasAttribute("data-composition-id")||t.hasAttribute("data-composition-src");function ir(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):(I(o)||nr(o))&&i.push(null)}(n||t.querySelector("[data-lottie-src]"))&&i.push(null);let r=Se({authoredDurationSeconds:null,clipEndsSeconds:i});return r.pendingClips>0?{...r,seconds:null,source:"unresolved",reason:"a clip's length is pending"}:r}function rr(t){if(t.declared!==null&&Number.isFinite(t.declared)&&t.declared>0)return t.declared;let e=se(t.timeline()),n=Math.max(0,...t.floors().map(u=>u??0)),i=Number.isFinite(t.fallback)&&t.fallback>ut?t.fallback:0,r=Math.max(n,i),a=e!==null&&e>=pn&&se(r)!==null?null:e,s;return a!==null?s=Math.max(a,r):se(n)!==null?s=r:i>0?s=i:s=t.derived(),s>0?s:0}function fn(t){let e=Te(t);if(!e)return null;let n=V({timelineRegistry:{},includeAuthoredTimingAttrs:!0,documentRef:t}),i=rr({declared:P(e.getAttribute("data-duration")),timeline:()=>null,floors:()=>[er(t,{mediaStart:n.resolveMediaStartForElement,mediaDuration:at}),tr(e,n)],fallback:0,derived:()=>ir(e,n,{unregisteredLottie:!1}).seconds??0});return{...Qi(e),fps:mn().canonicalFps,durationSeconds:i}}var Pe="hyperframes-studio-preview";var hn="data-hf-upcoming";var bn="__hfPreviewErrors";var gn="data-hf-autostamped";function _n(t){return t.hasRuntime||t.runtimeInjected?!1:!!(t.hasNestedCompositions||t.hasTimelines&&t.attempts>=5)}function z(t){return typeof t=="object"&&t!==null}function yn(t){return z(t)&&typeof t.getDuration=="function"}function vn(t){return z(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.8.196/dist/hyperframe.runtime.iife.js";function ue(t){if(t===null)return null;let e=Number.parseInt(t,10);return Number.isFinite(e)&&e>0?e:null}function or(t){let e=t?.querySelector("[data-composition-id][data-width][data-height]")??t?.querySelector("[data-width][data-height]");if(!e)return null;let n=ue(e.getAttribute("data-width")),i=ue(e.getAttribute("data-height"));return n!==null&&i!==null?{width:n,height:i}:null}function ar(t){return Array.isArray(t)?t.find(e=>typeof e=="string"&&e.trim()!==""&&e!=="[object Event]")??null:null}var Ne=class{constructor(e,n){this._iframe=e;this._callbacks=n}_iframe;_callbacks;_interval=null;_runtimeInjected=!1;_runtimeScript=null;_failure=null;get failed(){return this._failure!==null&&this._failure.document===this._iframe.contentDocument}get runtimeInjected(){return this._runtimeInjected}start(){this.stop(),this._failure=null,this._runtimeInjected=!1;let e=0;this._interval=setInterval(()=>{e++;let n=null;try{n=this._poll(e)}catch(i){i instanceof DOMException&&i.name==="SecurityError"||(n={kind:"error",message:i instanceof Error?i.message:String(i)})}n??=this._deadlineOutcome(e),n&&(this.stop(),n.kind==="error"?(this._failure={document:this._iframe.contentDocument},this._callbacks.onError(n.message)):this._callbacks.onReady(n.result))},200)}_deadlineOutcome(e){return e<40||this._callbacks.hostOwnsDeadline?.()?null:{kind:"error",message:"Composition timeline not found after 8s"}}_poll(e){let n=this._iframe.contentWindow;if(!n)return null;let i=ar(Reflect.get(n,bn));if(i!==null)return{kind:"error",message:i};let r=this._iframe.contentDocument,o=Reflect.get(n,"__timelines"),a=this.hasRuntimeBridge(n);if(_n({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(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?fn(n)?.durationSeconds??0:0}return r<=0?null:{duration:r,adapter:{...i,getDuration:()=>r},compositionSize:or(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 z(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(!z(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 vn(a)?a:null}_resolvePlaybackDurationAdapter(e){let n=Reflect.get(e,"__player");if(yn(n))return{kind:"runtime",getDuration:()=>n.getDuration()};let i=this._resolveDirectTimelineAdapterFromWindow(e);return i?{kind:"direct-timeline",timeline:i,getDuration:()=>i.duration()}:null}};var An=`
|
|
1
|
+
"use strict";var HyperframesPlayer=(()=>{var ze=Object.defineProperty;var ri=Object.getOwnPropertyDescriptor;var oi=Object.getOwnPropertyNames;var ai=Object.prototype.hasOwnProperty;var si=(t,e)=>{for(var n in e)ze(t,n,{get:e[n],enumerable:!0})},ui=(t,e,n,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of oi(e))!ai.call(t,r)&&r!==n&&ze(t,r,{get:()=>e[r],enumerable:!(i=ri(e,r))||i.enumerable});return t};var li=t=>ui(ze({},"__esModule",{value:!0}),t);var no={};si(no,{HyperframesPlayer:()=>Ge,SPEED_PRESETS:()=>ct,formatSpeed:()=>U,formatTime:()=>Le});var Pt=t=>t!==null&&Number.isFinite(t)&&t>0;function Se(t){let e=t.clipEndsSeconds.filter(i=>i===null).length;if(Pt(t.authoredDurationSeconds))return{seconds:t.authoredDurationSeconds,source:"authored",pendingClips:e};let n=t.clipEndsSeconds.filter(Pt);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 di="http://www.w3.org/1999/xhtml";function Nt(t){return t!=null&&t.nodeType===1}function qe(t){return Nt(t)&&t.namespaceURI===di}function je(t,e){return qe(t)&&t.localName===e}function ci(t){return je(t,"video")}function mi(t){return je(t,"audio")}function I(t){return ci(t)||mi(t)}function Ye(t){return je(t,"img")}function Ee(t){if(t==null||t.trim()==="")return null;let e=Number.parseInt(t,10);return Number.isFinite(e)&&e>0?e:null}function Te(t=document){let e=t.querySelector('[data-composition-id][data-root="true"]');return qe(e)?e:t.querySelector("[data-composition-id]")}var W=Object.freeze({start:"data-start",duration:"data-duration",trackIndex:"data-track-index",derivedEnd:"data-end",legacyTrack:"data-layer"}),uo=Object.freeze([W.start,W.duration,W.trackIndex]),lo=Object.freeze([W.derivedEnd]),co=Object.freeze([W.derivedEnd,W.legacyTrack]);function Xe(t){if(t==null||t.trim()==="")return null;let e=Number(t);return Number.isFinite(e)?e:null}var Lt=t=>{let e=Xe(t);return e!==null&&e>=0?e:null};function Ot(t){return Lt(t("data-playback-start"))??Lt(t("data-media-start"))??0}var Q=.1,ee=10;function Ke(t){return Number.isFinite(t)&&t>0?Math.max(Q,Math.min(ee,t)):1}function Ft(t,e=1){let n=Number.parseFloat(t("data-playback-rate")??"");return Ke(Number.isFinite(n)&&n>0?n:e)}function Je(t){let e=Xe(t("data-duration"));return e!==null&&e>0?e:null}function Vt(t,e){let n=Je(t);if(n!==null)return n;let i=Xe(t("data-end"));return i!==null?i-e:null}var pi=3;function Ze(t,e,n){return Number.isFinite(t)?Math.max(0,t-e)/Ke(n):null}function Qe(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:pi,source:"default"};if(i===null)return{seconds:null,source:"pending",reason:"source duration not yet probed"};let a=Ze(i,r,o);return a===null?{seconds:null,source:"pending",reason:"source reported a non-finite duration"}:{seconds:a,source:"media"}}var Ht="data-fx-chain",po=Ht.slice(5);var te=(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}),et=(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}),Re=(t=-40,e=40,n=0)=>({kind:"number",key:"gain",label:"Gain",unit:"dB",min:t,max:e,step:.1,default:n,automatable:!0}),Ut={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."},Wt=[{id:"gain",label:"Gain",group:"dynamics",description:"Raise or lower the whole signal. Automate it to duck under something else.",params:[Re(-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:[te("frequency","Frequency",1e3),Re(-40,40,0),et(1)],web:"biquad-peaking"},{id:"lowshelf",label:"Low Shelf",group:"filter",description:"Lift or drop everything below the corner frequency.",params:[te("frequency","Frequency",200,20,2e3),Re(-40,40,0)],web:"biquad-lowshelf"},{id:"highshelf",label:"High Shelf",group:"filter",description:"Lift or drop everything above the corner frequency.",params:[te("frequency","Frequency",4e3,500,2e4),Re(-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:[te("frequency","Cutoff",300,20,2e4),et(.707),Ut],web:"biquad-highpass"},{id:"lowpass",label:"Low-pass",group:"filter",description:"Remove high frequencies, which darkens or muffles a track.",params:[te("frequency","Cutoff",8e3,100,2e4),et(.707),Ut],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"}],fo=new Map(Wt.map(t=>[t.id,t]));var ho=Wt.map(t=>t.id);function fi(t){return 10**(t/20)}var $t=fi(12);var nt="data-automation",To=nt.slice(5),tt=1,bi=512,D=class extends Error{constructor(e){super(e),this.name="AudioAutomationError"}},we="volume",xe="rate";function Gt(t){if(t===we)return{kind:"volume"};if(t===xe)return{kind:"rate"};let e=t.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[,n,i]=e;return!n||!i?null:{kind:"fx",nodeId:n,param:i}}var gi="preset";var _i={min:0,max:$t,step:.01,unit:"",label:"Volume",scale:"linear",default:1};var yi={min:Q,max:ee,step:.05,unit:"x",label:"Speed",scale:"log",default:1};function ne(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 vi(t){let e=ne(t);return e===null||e===0?0:Math.min(1,Math.max(-1,e))}function zt(t,e){let n=ne(t),i=ne(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 Ai(t){let e=vi(t?.curve),n=zt(t?.viaX,t?.viaY);return{...e?{curve:e}:{},...n?{viaX:n.x,viaY:n.y}:{}}}function Si(t,e){let n=ne(t?.t),i=ne(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,...Ai(t)}}function Ei(t,e){let n=t.map(r=>Si(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,bi)}function Ti(t){let e=[];for(let n of t.lanes){if(!Gt(n.target))continue;let i=n.target===we?_i:n.target===xe?yi:null,r=Ei(n.points??[],i);r.length>0&&e.push({target:n.target,points:r})}return{version:tt,lanes:e}}function qt(t){let e;try{e=JSON.parse(t)}catch(r){throw new D(`Automation is not valid JSON: ${r.message}`)}if(typeof e!="object"||e===null)throw new D("Automation must be a JSON object.");let n=e;if(n.version!==tt)throw new D(`Unsupported automation version: ${String(n.version)}`);if(!Array.isArray(n.lanes))throw new D("Automation is missing a `lanes` array.");let i=n.lanes.map((r,o)=>{if(typeof r!="object"||r===null)throw new D(`Lane ${o} is not an object.`);let a=r;if(typeof a.target!="string"||!Gt(a.target))throw new D(`Lane ${o} has an unreadable target: ${String(a.target)}`);if(!Array.isArray(a.points))throw new D(`Lane ${o} is missing a \`points\` array.`);return{target:a.target,points:a.points}});return Ti({version:tt,lanes:i})}function Ri(t,e){return e?Math.pow(t,Math.pow(2,2*e)):t}function wi(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,u=Math.min(o,Math.max(1,a,s));return{cx:t+n/u,cy:e+i/u,w:u}}function xi(t,e,n){let{cx:i,cy:r,w:o}=wi(e,n),a=2-2*o,s=t*a-1+2*o*i,u=-t*a-2*o*i,c=ki(s,u,t),m=1-c,b=m*m+2*o*c*m+c*c;return b>0?(2*o*r*c*m+c*c)/b:t}function ki(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 Mi(t,e){let n=zt(e.viaX,e.viaY);return n?xi(Math.min(1,Math.max(0,t)),n.x,n.y):Ri(t,e.curve)}function Ii(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 ke(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 b=a+s>>1;i[b].t<=e?a=b:s=b}let u=i[a],c=i[s],m=c.t-u.t;return m<=0?c.v:Ii(u.v,c.v,Mi((e-u.t)/m,u),n)}var Me=new Map,Di=64;function jt(t,e=we){let n=`${e}\0${t}`,i=Me.get(n);if(i!==void 0)return i;let r=null;try{r=qt(t).lanes.find(o=>o.target===e)??null}catch{r=null}return Me.size>Di&&Me.clear(),Me.set(n,r),r}var Yt=48,Xt=new WeakMap;function Ci(t){let e=t.points,n=e[0].v,i=e[e.length-1].v,r=[0],o=[0],a=u=>{let c=r[r.length-1];if(u<=c)return;let m=ke(t,c,"log");r.push(u),o.push(o[o.length-1]+(m+ke(t,u,"log"))/2*(u-c))},s=Math.max(0,e[0].t);a(s);for(let u=1;u<e.length;u+=1){let c=e[u-1].t,m=e[u].t;if(!(m<=0))for(let b=1;b<=Yt;b+=1)a(Math.max(c,0)+(m-c)*b/Yt)}return{ts:Float64Array.from(r),ss:Float64Array.from(o),firstRate:n,lastRate:i}}function Pi(t){let e=Xt.get(t);return e||(e=Ci(t),Xt.set(t,e)),e}function Ni(t){return typeof t!="number"&&t.points.length>0}function Li(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 it(t,e){if(typeof t=="number")return e/t;if(!Ni(t))return e;let{ts:n,ss:i,firstRate:r,lastRate:o}=Pi(t),a=n.length-1;return e<=0?e/r:e>=i[a]?n[a]+(e-i[a])/o:Li(i,n,e)}function Oi(t){return t?jt(t,xe):null}function Kt(t,e){return Oi(t)??e}var Do=[{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"}),Po=Object.freeze([y.start,y.duration,y.trackIndex]),No=Object.freeze([y.derivedEnd]),Lo=Object.freeze([y.derivedEnd,y.legacyTrack]);function C(t){if(t==null||t.trim()==="")return null;let e=Number(t);return Number.isFinite(e)?e:null}var Qt=/^[A-Za-z0-9_.:-]+$/;function en(t,e){let n=t.charCodeAt(e);return n>=48&&n<=57}function Jt(t,e){let n=e;for(;n>=0&&en(t,n);)n--;return n}function Fi(t,e){let n=e;for(;n>=0&&(t[n]??"").trim()==="";)n--;return n}function Vi(t){let e=t.length-1;if(!en(t,e))return null;let n=Jt(t,e);return t[n]==="."&&(n=Jt(t,n-1)),n+1}function Ui(t){let e=Vi(t);if(e==null)return null;let n=Fi(t,e-1),i=t[n];if(i!=="+"&&i!=="-")return null;let r=t.slice(0,n).trim();if(!Qt.test(r))return null;let o=Number(t.slice(e));return Number.isFinite(o)?{refId:r,operator:i,magnitude:o}:null}function ie(t){let e=(t??"").trim();if(!e)return null;let n=C(e);if(n!=null)return{kind:"absolute",value:n};if(Qt.test(e))return{kind:"reference",refId:e,offset:0};let i=Ui(e);return i?{kind:"reference",refId:i.refId,offset:i.operator==="-"?-i.magnitude:i.magnitude}:null}function w(t,e,n,i){t.push({code:e,attribute:n,value:i})}function Hi(t,e,n,i){if(e==null||e.trim()==="")return n.defaultStart===void 0?0:n.defaultStart;if(!t)return w(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)?(w(i,"unresolved-start-reference",y.start,e),null):Math.max(0,r+t.offset)}var Wi=1e-9;function $i(t,e){return Math.abs(t-e)<=Wi}function Bi(t,e,n){let i=C(t);if(i==null){w(n,"deprecated-end",y.derivedEnd,t),w(n,"invalid-end",y.derivedEnd,t);return}if(e==null){w(n,"deprecated-end",y.derivedEnd,t);return}$i(i,e)||(w(n,"deprecated-end",y.derivedEnd,t),w(n,"conflicting-end",y.derivedEnd,t))}function Gi(t,e,n){let i=C(t);return i==null||i<0?(w(n,"invalid-duration",y.duration,t),{duration:null,end:null,durationSource:"invalid"}):{duration:i,end:e==null?null:e+i,durationSource:"duration"}}function zi(t,e,n){w(n,"deprecated-end",y.derivedEnd,t);let i=C(t);return i==null?(w(n,"invalid-end",y.derivedEnd,t),{duration:null,end:null,durationSource:"invalid"}):e==null?{duration:null,end:i,durationSource:"legacy-end"}:i<e?(w(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"}:zi(r,e,n);let o=Gi(i,e,n);return r!=null&&Bi(r,o.end,n),o}function Zt(t,e,n,i){let r=C(t);return r==null||!Number.isInteger(r)?(w(i,"invalid-track-index",e,t),{trackIndex:0,trackSource:"invalid"}):{trackIndex:r,trackSource:n}}function ji(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 w(e,"deprecated-layer",y.legacyTrack,i),Zt(i,y.legacyTrack,"legacy-layer",e);let r=Zt(n??"",y.trackIndex,"track-index",e);if(i==null)return r;w(e,"deprecated-layer",y.legacyTrack,i);let o=C(i);return o!=null&&o!==r.trackIndex&&w(e,"conflicting-layer",y.legacyTrack,i),r}function rt(t,e={}){let n=[],i=t.getAttribute(y.start),r=ie(i),o=Hi(r,i,e,n),a=qi(t,o,n),s=ji(t,n);return{startExpression:r,start:o,...a,...s,diagnostics:n}}function P(t){return C(t)}function re(t){return Ft(e=>t.getAttribute(e),I(t)?t.defaultPlaybackRate:1)}function ot(t){return Kt(t.getAttribute("data-automation"),re(t))}function Ie(t){return Ot(e=>t.getAttribute(e))}function $(t,e){return Yi(e,Ie(t),ot(t))}function at(t){let e=Qe({tag:"video",authoredDurationSeconds:Je(n=>t.getAttribute(n)),sourceDurationSeconds:Number.isFinite(t.duration)?t.duration:null,mediaStartSeconds:Ie(t),playbackRate:re(t)});return e.source==="media"?$(t,t.duration):e.seconds}function De(t,e=0){return!Ye(t)||!t.hasAttribute("data-start")&&!t.hasAttribute("data-track-index")?null:Qe({tag:"img",authoredDurationSeconds:Vt(n=>t.getAttribute(n),e),sourceDurationSeconds:null,mediaStartSeconds:0,playbackRate:1}).seconds}function Yi(t,e,n){return typeof n=="number"?Ze(t,e,n):Number.isFinite(t)?it(n,Math.max(0,t-e)):null}function tn(){return globalThis}function B(t,e){if(typeof window>"u")return;let n=tn(),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 Xi=t=>t.paused?.()===!0?(t.startTime?.()??0)+(t.totalDuration?.()??0)/Math.abs(t.timeScale?.()||1):0;function oe(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(Xi));return Number.isFinite(i)?i:null}catch(e){return B("runtime.timelineDuration",e),null}}var nn="data-hf-authored-duration",rn="data-hf-authored-end";function ae(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=ae(t.start);if(e==null)return null;let n=Math.max(0,e),i=ae(t.duration),r=ae(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=ae(t.end),s=ae(t.authoredEnd),u=a!=null&&a>n?a:s!=null&&s>n?s:null;return{start:n,duration:u==null?null:u-n,end:u}}var G=Object.freeze({start:"data-start",duration:"data-duration",trackIndex:"data-track-index",derivedEnd:"data-end",legacyTrack:"data-layer"}),Ko=Object.freeze([G.start,G.duration,G.trackIndex]),Jo=Object.freeze([G.derivedEnd]),Zo=Object.freeze([G.derivedEnd,G.legacyTrack]);function Ki(t){if(t==null||t.trim()==="")return null;let e=Number(t);return Number.isFinite(e)?e:null}var on=t=>{let e=Ki(t);return e!==null&&e>=0?e:null};function Ji(t){return on(t("data-playback-start"))??on(t("data-media-start"))??0}var an="data-hf-media-start-basis";function sn(t){return t?.trim().toLowerCase()==="global"?"global":"local"}function Zi(t){return sn(t.basis)==="global"?t.authoredStart:t.hostStart+t.authoredStart}function un(t){return dn(t)?Zi({authoredStart:t.authoredStart,hostStart:t.hostStart,basis:t.basis}):t.ordinaryStart()}function ln(t){return dn(t)&&sn(t.basis)==="global"}function dn(t){return!t.hasAutoStart&&t.authoredStart!=null&&t.hostStart!==0}function st(t){return Ji(e=>t.getAttribute(e))}function cn(t,e){return t-st(e)}function V(t){let e=t.timelineRegistry??{},n=t.includeAuthoredTimingAttrs??!1,i=t.documentRef??document,r=new WeakMap,o=new WeakMap,a=new Set,s=l=>(l.hasAttribute("data-composition-id")?l.parentElement:l)?.closest("[data-composition-id]")??null,u=(l,f)=>{let _=s(f);if(_){for(let k of _.querySelectorAll(`[id="${l}"]`))if(s(k)===_)return k}let R=i.getElementById(l);return R||(Array.from(i.querySelectorAll("[data-composition-id]")).find(k=>k.getAttribute("data-composition-id")===l)??null)},c=(l,f)=>n?l.getAttribute(f):null,m=l=>Ce({start:0,duration:l.getAttribute("data-duration"),authoredDuration:c(l,"data-hf-authored-duration")})?.duration??Ce({start:T(l,0),end:l.getAttribute("data-end"),authoredEnd:c(l,"data-hf-authored-end")})?.duration??null,b=l=>l!=null&&Number.isFinite(l)&&l>0?l:null,v=l=>{let f=l.getAttribute("data-composition-id");return f?b(oe(e[f])):null},g=l=>{let f=o.get(l);if(f!==void 0)return f;let _=m(l)??b(I(l)?$(l,l.duration):null)??b(De(l))??v(l);return o.set(l,_),_},A=l=>l.hasAttribute("data-composition-src")||l.hasAttribute("data-composition-id")||l.hasAttribute("data-composition-file"),h=l=>{let f=l.parentElement;return!f||!l.hasAttribute("data-composition-id")||ie(l.getAttribute("data-start"))?null:A(f)?f:null},E=(l,f)=>cn(T(l,f),h(l)??l),M=(l,f)=>{let _=l.hasAttribute("data-composition-id")?l.parentElement?.closest("[data-composition-id]"):l.closest("[data-composition-id]");return _?E(_,f):0},N=(l,f)=>{let _=ie(l.getAttribute("data-start"));if(!_){let Z=h(l);return Z?T(Z,f):f}if(_.kind==="absolute")return M(l,f)+Math.max(0,_.value);let R=u(_.refId,l);if(!R)return f;let k=T(R,0),_e=g(R)??0,ye=Math.min(0,M(l,0));return Math.max(ye,k+_e+_.offset)},T=(l,f)=>{let _=r.get(l);if(_!==void 0)return _??f;if(a.has(l))return f;a.add(l);try{let R=N(l,f);return r.set(l,R),R}finally{a.delete(l)}},L=l=>{let f=l.closest("[data-composition-id]");return{authoredStart:P(l.getAttribute("data-start")),hostStart:f?E(f,0):0,hasAutoStart:l.hasAttribute("data-hf-auto-start"),basis:l.getAttribute(an)}};return{resolveStartForElement:(l,f=0)=>T(l,Math.max(0,f)),resolveDurationForElement:l=>g(l),resolveMediaStartForElement:l=>{let f=L(l);return un({...f,ordinaryStart:()=>T(l,f.hostStart)})},resolveHostStartForElement:l=>M(l,0),resolveHostSlotsForElement:l=>{let f=[];for(let _=l.parentElement;_;_=_.parentElement){if(!A(_)||h(_)||st(_)<=0)continue;let R=T(_,0),k=m(_);f.push({start:R,end:k?R+k:1/0})}return f},isRootGlobalMediaStartForElement:l=>I(l)&&ln(L(l))}}function mn(){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 pn=7200,ut=1/60,se=t=>t!==null&&t>ut?t:null;function Qi(t){return{width:Ee(t.getAttribute("data-width")),height:Ee(t.getAttribute("data-height"))}}function er(t,e){let n=[];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);o==null||o<=ut||n.push(Math.max(0,r)+o)}return se(Se({authoredDurationSeconds:null,clipEndsSeconds:n}).seconds)}function tr(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=P(t.getAttribute("data-duration"));return se(Se({authoredDurationSeconds:null,clipEndsSeconds:[i,...n]}).seconds)}var nr=t=>t.hasAttribute("data-composition-id")||t.hasAttribute("data-composition-src");function ir(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):(I(o)||nr(o))&&i.push(null)}(n||t.querySelector("[data-lottie-src]"))&&i.push(null);let r=Se({authoredDurationSeconds:null,clipEndsSeconds:i});return r.pendingClips>0?{...r,seconds:null,source:"unresolved",reason:"a clip's length is pending"}:r}function rr(t){if(t.declared!==null&&Number.isFinite(t.declared)&&t.declared>0)return t.declared;let e=se(t.timeline()),n=Math.max(0,...t.floors().map(u=>u??0)),i=Number.isFinite(t.fallback)&&t.fallback>ut?t.fallback:0,r=Math.max(n,i),a=e!==null&&e>=pn&&se(r)!==null?null:e,s;return a!==null?s=Math.max(a,r):se(n)!==null?s=r:i>0?s=i:s=t.derived(),s>0?s:0}function fn(t){let e=Te(t);if(!e)return null;let n=V({timelineRegistry:{},includeAuthoredTimingAttrs:!0,documentRef:t}),i=rr({declared:P(e.getAttribute("data-duration")),timeline:()=>null,floors:()=>[er(t,{mediaStart:n.resolveMediaStartForElement,mediaDuration:at}),tr(e,n)],fallback:0,derived:()=>ir(e,n,{unregisteredLottie:!1}).seconds??0});return{...Qi(e),fps:mn().canonicalFps,durationSeconds:i}}var Pe="hyperframes-studio-preview";var hn="data-hf-upcoming";var bn="__hfPreviewErrors";var gn="data-hf-autostamped";function _n(t){return t.hasRuntime||t.runtimeInjected?!1:!!(t.hasNestedCompositions||t.hasTimelines&&t.attempts>=5)}function z(t){return typeof t=="object"&&t!==null}function yn(t){return z(t)&&typeof t.getDuration=="function"}function vn(t){return z(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.8.197/dist/hyperframe.runtime.iife.js";function ue(t){if(t===null)return null;let e=Number.parseInt(t,10);return Number.isFinite(e)&&e>0?e:null}function or(t){let e=t?.querySelector("[data-composition-id][data-width][data-height]")??t?.querySelector("[data-width][data-height]");if(!e)return null;let n=ue(e.getAttribute("data-width")),i=ue(e.getAttribute("data-height"));return n!==null&&i!==null?{width:n,height:i}:null}function ar(t){return Array.isArray(t)?t.find(e=>typeof e=="string"&&e.trim()!==""&&e!=="[object Event]")??null:null}var Ne=class{constructor(e,n){this._iframe=e;this._callbacks=n}_iframe;_callbacks;_interval=null;_runtimeInjected=!1;_runtimeScript=null;_failure=null;get failed(){return this._failure!==null&&this._failure.document===this._iframe.contentDocument}get runtimeInjected(){return this._runtimeInjected}start(){this.stop(),this._failure=null,this._runtimeInjected=!1;let e=0;this._interval=setInterval(()=>{e++;let n=null;try{n=this._poll(e)}catch(i){i instanceof DOMException&&i.name==="SecurityError"||(n={kind:"error",message:i instanceof Error?i.message:String(i)})}n??=this._deadlineOutcome(e),n&&(this.stop(),n.kind==="error"?(this._failure={document:this._iframe.contentDocument},this._callbacks.onError(n.message)):this._callbacks.onReady(n.result))},200)}_deadlineOutcome(e){return e<40||this._callbacks.hostOwnsDeadline?.()?null:{kind:"error",message:"Composition timeline not found after 8s"}}_poll(e){let n=this._iframe.contentWindow;if(!n)return null;let i=ar(Reflect.get(n,bn));if(i!==null)return{kind:"error",message:i};let r=this._iframe.contentDocument,o=Reflect.get(n,"__timelines"),a=this.hasRuntimeBridge(n);if(_n({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(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?fn(n)?.durationSeconds??0:0}return r<=0?null:{duration:r,adapter:{...i,getDuration:()=>r},compositionSize:or(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 z(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(!z(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 vn(a)?a:null}_resolvePlaybackDurationAdapter(e){let n=Reflect.get(e,"__player");if(yn(n))return{kind:"runtime",getDuration:()=>n.getDuration()};let i=this._resolveDirectTimelineAdapterFromWindow(e);return i?{kind:"direct-timeline",timeline:i,getDuration:()=>i.duration()}:null}};var An=`
|
|
2
2
|
:host {
|
|
3
3
|
display: block;
|
|
4
4
|
position: relative;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import"./chunk-DEBJRHNM.js";var Dt=t=>t!==null&&Number.isFinite(t)&&t>0;function Se(t){let e=t.clipEndsSeconds.filter(i=>i===null).length;if(Dt(t.authoredDurationSeconds))return{seconds:t.authoredDurationSeconds,source:"authored",pendingClips:e};let n=t.clipEndsSeconds.filter(Dt);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 ii="http://www.w3.org/1999/xhtml";function Ct(t){return t!=null&&t.nodeType===1}function Be(t){return Ct(t)&&t.namespaceURI===ii}function Ge(t,e){return Be(t)&&t.localName===e}function ri(t){return Ge(t,"video")}function oi(t){return Ge(t,"audio")}function I(t){return ri(t)||oi(t)}function ze(t){return Ge(t,"img")}function Ee(t){if(t==null||t.trim()==="")return null;let e=Number.parseInt(t,10);return Number.isFinite(e)&&e>0?e:null}function Te(t=document){let e=t.querySelector('[data-composition-id][data-root="true"]');return Be(e)?e:t.querySelector("[data-composition-id]")}var H=Object.freeze({start:"data-start",duration:"data-duration",trackIndex:"data-track-index",derivedEnd:"data-end",legacyTrack:"data-layer"}),Qr=Object.freeze([H.start,H.duration,H.trackIndex]),eo=Object.freeze([H.derivedEnd]),to=Object.freeze([H.derivedEnd,H.legacyTrack]);function qe(t){if(t==null||t.trim()==="")return null;let e=Number(t);return Number.isFinite(e)?e:null}var Pt=t=>{let e=qe(t);return e!==null&&e>=0?e:null};function Nt(t){return Pt(t("data-playback-start"))??Pt(t("data-media-start"))??0}var Q=.1,ee=10;function je(t){return Number.isFinite(t)&&t>0?Math.max(Q,Math.min(ee,t)):1}function Lt(t,e=1){let n=Number.parseFloat(t("data-playback-rate")??"");return je(Number.isFinite(n)&&n>0?n:e)}function Ye(t){let e=qe(t("data-duration"));return e!==null&&e>0?e:null}function Ot(t,e){let n=Ye(t);if(n!==null)return n;let i=qe(t("data-end"));return i!==null?i-e:null}var ai=3;function Xe(t,e,n){return Number.isFinite(t)?Math.max(0,t-e)/je(n):null}function Ke(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:ai,source:"default"};if(i===null)return{seconds:null,source:"pending",reason:"source duration not yet probed"};let a=Xe(i,r,o);return a===null?{seconds:null,source:"pending",reason:"source reported a non-finite duration"}:{seconds:a,source:"media"}}var Vt="data-fx-chain",io=Vt.slice(5);var te=(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}),Je=(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}),Re=(t=-40,e=40,n=0)=>({kind:"number",key:"gain",label:"Gain",unit:"dB",min:t,max:e,step:.1,default:n,automatable:!0}),Ft={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."},Ut=[{id:"gain",label:"Gain",group:"dynamics",description:"Raise or lower the whole signal. Automate it to duck under something else.",params:[Re(-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:[te("frequency","Frequency",1e3),Re(-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:[te("frequency","Frequency",200,20,2e3),Re(-40,40,0)],web:"biquad-lowshelf"},{id:"highshelf",label:"High Shelf",group:"filter",description:"Lift or drop everything above the corner frequency.",params:[te("frequency","Frequency",4e3,500,2e4),Re(-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:[te("frequency","Cutoff",300,20,2e4),Je(.707),Ft],web:"biquad-highpass"},{id:"lowpass",label:"Low-pass",group:"filter",description:"Remove high frequencies, which darkens or muffles a track.",params:[te("frequency","Cutoff",8e3,100,2e4),Je(.707),Ft],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"}],ro=new Map(Ut.map(t=>[t.id,t]));var oo=Ut.map(t=>t.id);function si(t){return 10**(t/20)}var Ht=si(12);var Qe="data-automation",ho=Qe.slice(5),Ze=1,li=512,D=class extends Error{constructor(e){super(e),this.name="AudioAutomationError"}},we="volume",xe="rate";function $t(t){if(t===we)return{kind:"volume"};if(t===xe)return{kind:"rate"};let e=t.split(".");if(e.length===3&&e[0]==="fx"&&e[1]===di){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 di="preset";var ci={min:0,max:Ht,step:.01,unit:"",label:"Volume",scale:"linear",default:1};var mi={min:Q,max:ee,step:.05,unit:"x",label:"Speed",scale:"log",default:1};function ne(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 pi(t){let e=ne(t);return e===null||e===0?0:Math.min(1,Math.max(-1,e))}function Bt(t,e){let n=ne(t),i=ne(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 fi(t){let e=pi(t?.curve),n=Bt(t?.viaX,t?.viaY);return{...e?{curve:e}:{},...n?{viaX:n.x,viaY:n.y}:{}}}function hi(t,e){let n=ne(t?.t),i=ne(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,...fi(t)}}function bi(t,e){let n=t.map(r=>hi(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,li)}function gi(t){let e=[];for(let n of t.lanes){if(!$t(n.target))continue;let i=n.target===we?ci:n.target===xe?mi:null,r=bi(n.points??[],i);r.length>0&&e.push({target:n.target,points:r})}return{version:Ze,lanes:e}}function Gt(t){let e;try{e=JSON.parse(t)}catch(r){throw new D(`Automation is not valid JSON: ${r.message}`)}if(typeof e!="object"||e===null)throw new D("Automation must be a JSON object.");let n=e;if(n.version!==Ze)throw new D(`Unsupported automation version: ${String(n.version)}`);if(!Array.isArray(n.lanes))throw new D("Automation is missing a `lanes` array.");let i=n.lanes.map((r,o)=>{if(typeof r!="object"||r===null)throw new D(`Lane ${o} is not an object.`);let a=r;if(typeof a.target!="string"||!$t(a.target))throw new D(`Lane ${o} has an unreadable target: ${String(a.target)}`);if(!Array.isArray(a.points))throw new D(`Lane ${o} is missing a \`points\` array.`);return{target:a.target,points:a.points}});return gi({version:Ze,lanes:i})}function _i(t,e){return e?Math.pow(t,Math.pow(2,2*e)):t}function yi(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,u=Math.min(o,Math.max(1,a,s));return{cx:t+n/u,cy:e+i/u,w:u}}function vi(t,e,n){let{cx:i,cy:r,w:o}=yi(e,n),a=2-2*o,s=t*a-1+2*o*i,u=-t*a-2*o*i,c=Ai(s,u,t),m=1-c,b=m*m+2*o*c*m+c*c;return b>0?(2*o*r*c*m+c*c)/b:t}function Ai(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 Si(t,e){let n=Bt(e.viaX,e.viaY);return n?vi(Math.min(1,Math.max(0,t)),n.x,n.y):_i(t,e.curve)}function Ei(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 ke(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 b=a+s>>1;i[b].t<=e?a=b:s=b}let u=i[a],c=i[s],m=c.t-u.t;return m<=0?c.v:Ei(u.v,c.v,Si((e-u.t)/m,u),n)}var Me=new Map,Ti=64;function zt(t,e=we){let n=`${e}\0${t}`,i=Me.get(n);if(i!==void 0)return i;let r=null;try{r=Gt(t).lanes.find(o=>o.target===e)??null}catch{r=null}return Me.size>Ti&&Me.clear(),Me.set(n,r),r}var qt=48,jt=new WeakMap;function Ri(t){let e=t.points,n=e[0].v,i=e[e.length-1].v,r=[0],o=[0],a=u=>{let c=r[r.length-1];if(u<=c)return;let m=ke(t,c,"log");r.push(u),o.push(o[o.length-1]+(m+ke(t,u,"log"))/2*(u-c))},s=Math.max(0,e[0].t);a(s);for(let u=1;u<e.length;u+=1){let c=e[u-1].t,m=e[u].t;if(!(m<=0))for(let b=1;b<=qt;b+=1)a(Math.max(c,0)+(m-c)*b/qt)}return{ts:Float64Array.from(r),ss:Float64Array.from(o),firstRate:n,lastRate:i}}function wi(t){let e=jt.get(t);return e||(e=Ri(t),jt.set(t,e)),e}function xi(t){return typeof t!="number"&&t.points.length>0}function ki(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 et(t,e){if(typeof t=="number")return e/t;if(!xi(t))return e;let{ts:n,ss:i,firstRate:r,lastRate:o}=wi(t),a=n.length-1;return e<=0?e/r:e>=i[a]?n[a]+(e-i[a])/o:ki(i,n,e)}function Mi(t){return t?zt(t,xe):null}function Yt(t,e){return Mi(t)??e}var So=[{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"}),To=Object.freeze([y.start,y.duration,y.trackIndex]),Ro=Object.freeze([y.derivedEnd]),wo=Object.freeze([y.derivedEnd,y.legacyTrack]);function C(t){if(t==null||t.trim()==="")return null;let e=Number(t);return Number.isFinite(e)?e:null}var Jt=/^[A-Za-z0-9_.:-]+$/;function Zt(t,e){let n=t.charCodeAt(e);return n>=48&&n<=57}function Xt(t,e){let n=e;for(;n>=0&&Zt(t,n);)n--;return n}function Ii(t,e){let n=e;for(;n>=0&&(t[n]??"").trim()==="";)n--;return n}function Di(t){let e=t.length-1;if(!Zt(t,e))return null;let n=Xt(t,e);return t[n]==="."&&(n=Xt(t,n-1)),n+1}function Ci(t){let e=Di(t);if(e==null)return null;let n=Ii(t,e-1),i=t[n];if(i!=="+"&&i!=="-")return null;let r=t.slice(0,n).trim();if(!Jt.test(r))return null;let o=Number(t.slice(e));return Number.isFinite(o)?{refId:r,operator:i,magnitude:o}:null}function ie(t){let e=(t??"").trim();if(!e)return null;let n=C(e);if(n!=null)return{kind:"absolute",value:n};if(Jt.test(e))return{kind:"reference",refId:e,offset:0};let i=Ci(e);return i?{kind:"reference",refId:i.refId,offset:i.operator==="-"?-i.magnitude:i.magnitude}:null}function w(t,e,n,i){t.push({code:e,attribute:n,value:i})}function Pi(t,e,n,i){if(e==null||e.trim()==="")return n.defaultStart===void 0?0:n.defaultStart;if(!t)return w(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)?(w(i,"unresolved-start-reference",y.start,e),null):Math.max(0,r+t.offset)}var Ni=1e-9;function Li(t,e){return Math.abs(t-e)<=Ni}function Oi(t,e,n){let i=C(t);if(i==null){w(n,"deprecated-end",y.derivedEnd,t),w(n,"invalid-end",y.derivedEnd,t);return}if(e==null){w(n,"deprecated-end",y.derivedEnd,t);return}Li(i,e)||(w(n,"deprecated-end",y.derivedEnd,t),w(n,"conflicting-end",y.derivedEnd,t))}function Fi(t,e,n){let i=C(t);return i==null||i<0?(w(n,"invalid-duration",y.duration,t),{duration:null,end:null,durationSource:"invalid"}):{duration:i,end:e==null?null:e+i,durationSource:"duration"}}function Vi(t,e,n){w(n,"deprecated-end",y.derivedEnd,t);let i=C(t);return i==null?(w(n,"invalid-end",y.derivedEnd,t),{duration:null,end:null,durationSource:"invalid"}):e==null?{duration:null,end:i,durationSource:"legacy-end"}:i<e?(w(n,"end-before-start",y.derivedEnd,t),{duration:null,end:null,durationSource:"invalid"}):{duration:i-e,end:i,durationSource:"legacy-end"}}function Ui(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"}:Vi(r,e,n);let o=Fi(i,e,n);return r!=null&&Oi(r,o.end,n),o}function Kt(t,e,n,i){let r=C(t);return r==null||!Number.isInteger(r)?(w(i,"invalid-track-index",e,t),{trackIndex:0,trackSource:"invalid"}):{trackIndex:r,trackSource:n}}function Hi(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 w(e,"deprecated-layer",y.legacyTrack,i),Kt(i,y.legacyTrack,"legacy-layer",e);let r=Kt(n??"",y.trackIndex,"track-index",e);if(i==null)return r;w(e,"deprecated-layer",y.legacyTrack,i);let o=C(i);return o!=null&&o!==r.trackIndex&&w(e,"conflicting-layer",y.legacyTrack,i),r}function tt(t,e={}){let n=[],i=t.getAttribute(y.start),r=ie(i),o=Pi(r,i,e,n),a=Ui(t,o,n),s=Hi(t,n);return{startExpression:r,start:o,...a,...s,diagnostics:n}}function P(t){return C(t)}function re(t){return Lt(e=>t.getAttribute(e),I(t)?t.defaultPlaybackRate:1)}function nt(t){return Yt(t.getAttribute("data-automation"),re(t))}function Ie(t){return Nt(e=>t.getAttribute(e))}function W(t,e){return Wi(e,Ie(t),nt(t))}function it(t){let e=Ke({tag:"video",authoredDurationSeconds:Ye(n=>t.getAttribute(n)),sourceDurationSeconds:Number.isFinite(t.duration)?t.duration:null,mediaStartSeconds:Ie(t),playbackRate:re(t)});return e.source==="media"?W(t,t.duration):e.seconds}function De(t,e=0){return!ze(t)||!t.hasAttribute("data-start")&&!t.hasAttribute("data-track-index")?null:Ke({tag:"img",authoredDurationSeconds:Ot(n=>t.getAttribute(n),e),sourceDurationSeconds:null,mediaStartSeconds:0,playbackRate:1}).seconds}function Wi(t,e,n){return typeof n=="number"?Xe(t,e,n):Number.isFinite(t)?et(n,Math.max(0,t-e)):null}function Qt(){return globalThis}function $(t,e){if(typeof window>"u")return;let n=Qt(),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 $i=t=>t.paused?.()===!0?(t.startTime?.()??0)+(t.totalDuration?.()??0)/Math.abs(t.timeScale?.()||1):0;function oe(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($i));return Number.isFinite(i)?i:null}catch(e){return $("runtime.timelineDuration",e),null}}var en="data-hf-authored-duration",tn="data-hf-authored-end";function ae(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=ae(t.start);if(e==null)return null;let n=Math.max(0,e),i=ae(t.duration),r=ae(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=ae(t.end),s=ae(t.authoredEnd),u=a!=null&&a>n?a:s!=null&&s>n?s:null;return{start:n,duration:u==null?null:u-n,end:u}}var B=Object.freeze({start:"data-start",duration:"data-duration",trackIndex:"data-track-index",derivedEnd:"data-end",legacyTrack:"data-layer"}),Wo=Object.freeze([B.start,B.duration,B.trackIndex]),$o=Object.freeze([B.derivedEnd]),Bo=Object.freeze([B.derivedEnd,B.legacyTrack]);function Bi(t){if(t==null||t.trim()==="")return null;let e=Number(t);return Number.isFinite(e)?e:null}var nn=t=>{let e=Bi(t);return e!==null&&e>=0?e:null};function Gi(t){return nn(t("data-playback-start"))??nn(t("data-media-start"))??0}var rn="data-hf-media-start-basis";function on(t){return t?.trim().toLowerCase()==="global"?"global":"local"}function zi(t){return on(t.basis)==="global"?t.authoredStart:t.hostStart+t.authoredStart}function an(t){return un(t)?zi({authoredStart:t.authoredStart,hostStart:t.hostStart,basis:t.basis}):t.ordinaryStart()}function sn(t){return un(t)&&on(t.basis)==="global"}function un(t){return!t.hasAutoStart&&t.authoredStart!=null&&t.hostStart!==0}function rt(t){return Gi(e=>t.getAttribute(e))}function ln(t,e){return t-rt(e)}function V(t){let e=t.timelineRegistry??{},n=t.includeAuthoredTimingAttrs??!1,i=t.documentRef??document,r=new WeakMap,o=new WeakMap,a=new Set,s=l=>(l.hasAttribute("data-composition-id")?l.parentElement:l)?.closest("[data-composition-id]")??null,u=(l,f)=>{let _=s(f);if(_){for(let k of _.querySelectorAll(`[id="${l}"]`))if(s(k)===_)return k}let R=i.getElementById(l);return R||(Array.from(i.querySelectorAll("[data-composition-id]")).find(k=>k.getAttribute("data-composition-id")===l)??null)},c=(l,f)=>n?l.getAttribute(f):null,m=l=>Ce({start:0,duration:l.getAttribute("data-duration"),authoredDuration:c(l,"data-hf-authored-duration")})?.duration??Ce({start:T(l,0),end:l.getAttribute("data-end"),authoredEnd:c(l,"data-hf-authored-end")})?.duration??null,b=l=>l!=null&&Number.isFinite(l)&&l>0?l:null,v=l=>{let f=l.getAttribute("data-composition-id");return f?b(oe(e[f])):null},g=l=>{let f=o.get(l);if(f!==void 0)return f;let _=m(l)??b(I(l)?W(l,l.duration):null)??b(De(l))??v(l);return o.set(l,_),_},A=l=>l.hasAttribute("data-composition-src")||l.hasAttribute("data-composition-id")||l.hasAttribute("data-composition-file"),h=l=>{let f=l.parentElement;return!f||!l.hasAttribute("data-composition-id")||ie(l.getAttribute("data-start"))?null:A(f)?f:null},E=(l,f)=>ln(T(l,f),h(l)??l),M=(l,f)=>{let _=l.hasAttribute("data-composition-id")?l.parentElement?.closest("[data-composition-id]"):l.closest("[data-composition-id]");return _?E(_,f):0},N=(l,f)=>{let _=ie(l.getAttribute("data-start"));if(!_){let Z=h(l);return Z?T(Z,f):f}if(_.kind==="absolute")return M(l,f)+Math.max(0,_.value);let R=u(_.refId,l);if(!R)return f;let k=T(R,0),_e=g(R)??0,ye=Math.min(0,M(l,0));return Math.max(ye,k+_e+_.offset)},T=(l,f)=>{let _=r.get(l);if(_!==void 0)return _??f;if(a.has(l))return f;a.add(l);try{let R=N(l,f);return r.set(l,R),R}finally{a.delete(l)}},L=l=>{let f=l.closest("[data-composition-id]");return{authoredStart:P(l.getAttribute("data-start")),hostStart:f?E(f,0):0,hasAutoStart:l.hasAttribute("data-hf-auto-start"),basis:l.getAttribute(rn)}};return{resolveStartForElement:(l,f=0)=>T(l,Math.max(0,f)),resolveDurationForElement:l=>g(l),resolveMediaStartForElement:l=>{let f=L(l);return an({...f,ordinaryStart:()=>T(l,f.hostStart)})},resolveHostStartForElement:l=>M(l,0),resolveHostSlotsForElement:l=>{let f=[];for(let _=l.parentElement;_;_=_.parentElement){if(!A(_)||h(_)||rt(_)<=0)continue;let R=T(_,0),k=m(_);f.push({start:R,end:k?R+k:1/0})}return f},isRootGlobalMediaStartForElement:l=>I(l)&&sn(L(l))}}function dn(){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 cn=7200,ot=1/60,se=t=>t!==null&&t>ot?t:null;function qi(t){return{width:Ee(t.getAttribute("data-width")),height:Ee(t.getAttribute("data-height"))}}function ji(t,e){let n=[];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);o==null||o<=ot||n.push(Math.max(0,r)+o)}return se(Se({authoredDurationSeconds:null,clipEndsSeconds:n}).seconds)}function Yi(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=P(t.getAttribute("data-duration"));return se(Se({authoredDurationSeconds:null,clipEndsSeconds:[i,...n]}).seconds)}var Xi=t=>t.hasAttribute("data-composition-id")||t.hasAttribute("data-composition-src");function Ki(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):(I(o)||Xi(o))&&i.push(null)}(n||t.querySelector("[data-lottie-src]"))&&i.push(null);let r=Se({authoredDurationSeconds:null,clipEndsSeconds:i});return r.pendingClips>0?{...r,seconds:null,source:"unresolved",reason:"a clip's length is pending"}:r}function Ji(t){if(t.declared!==null&&Number.isFinite(t.declared)&&t.declared>0)return t.declared;let e=se(t.timeline()),n=Math.max(0,...t.floors().map(u=>u??0)),i=Number.isFinite(t.fallback)&&t.fallback>ot?t.fallback:0,r=Math.max(n,i),a=e!==null&&e>=cn&&se(r)!==null?null:e,s;return a!==null?s=Math.max(a,r):se(n)!==null?s=r:i>0?s=i:s=t.derived(),s>0?s:0}function mn(t){let e=Te(t);if(!e)return null;let n=V({timelineRegistry:{},includeAuthoredTimingAttrs:!0,documentRef:t}),i=Ji({declared:P(e.getAttribute("data-duration")),timeline:()=>null,floors:()=>[ji(t,{mediaStart:n.resolveMediaStartForElement,mediaDuration:it}),Yi(e,n)],fallback:0,derived:()=>Ki(e,n,{unregisteredLottie:!1}).seconds??0});return{...qi(e),fps:dn().canonicalFps,durationSeconds:i}}var Pe="hyperframes-studio-preview";var pn="data-hf-upcoming";var fn="__hfPreviewErrors";var hn="data-hf-autostamped";function bn(t){return t.hasRuntime||t.runtimeInjected?!1:!!(t.hasNestedCompositions||t.hasTimelines&&t.attempts>=5)}function G(t){return typeof t=="object"&&t!==null}function gn(t){return G(t)&&typeof t.getDuration=="function"}function _n(t){return G(t)&&typeof t.duration=="function"&&typeof t.time=="function"&&typeof t.seek=="function"&&typeof t.play=="function"&&typeof t.pause=="function"}var z="https://cdn.jsdelivr.net/npm/@hyperframes/core@0.8.196/dist/hyperframe.runtime.iife.js";function ue(t){if(t===null)return null;let e=Number.parseInt(t,10);return Number.isFinite(e)&&e>0?e:null}function Zi(t){let e=t?.querySelector("[data-composition-id][data-width][data-height]")??t?.querySelector("[data-width][data-height]");if(!e)return null;let n=ue(e.getAttribute("data-width")),i=ue(e.getAttribute("data-height"));return n!==null&&i!==null?{width:n,height:i}:null}function Qi(t){return Array.isArray(t)?t.find(e=>typeof e=="string"&&e.trim()!==""&&e!=="[object Event]")??null:null}var Ne=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=Qi(Reflect.get(n,fn));if(i!==null)return{kind:"error",message:i};let r=this._iframe.contentDocument,o=Reflect.get(n,"__timelines"),a=this.hasRuntimeBridge(n);if(bn({hasRuntime:a,hasTimelines:G(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?mn(n)?.durationSeconds??0:0}return r<=0?null:{duration:r,adapter:{...i,getDuration:()=>r},compositionSize:Zi(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 G(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?.()??z,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(!G(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 _n(a)?a:null}_resolvePlaybackDurationAdapter(e){let n=Reflect.get(e,"__player");if(gn(n))return{kind:"runtime",getDuration:()=>n.getDuration()};let i=this._resolveDirectTimelineAdapterFromWindow(e);return i?{kind:"direct-timeline",timeline:i,getDuration:()=>i.duration()}:null}};var yn=`
|
|
1
|
+
import"./chunk-DEBJRHNM.js";var Dt=t=>t!==null&&Number.isFinite(t)&&t>0;function Se(t){let e=t.clipEndsSeconds.filter(i=>i===null).length;if(Dt(t.authoredDurationSeconds))return{seconds:t.authoredDurationSeconds,source:"authored",pendingClips:e};let n=t.clipEndsSeconds.filter(Dt);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 ii="http://www.w3.org/1999/xhtml";function Ct(t){return t!=null&&t.nodeType===1}function Be(t){return Ct(t)&&t.namespaceURI===ii}function Ge(t,e){return Be(t)&&t.localName===e}function ri(t){return Ge(t,"video")}function oi(t){return Ge(t,"audio")}function I(t){return ri(t)||oi(t)}function ze(t){return Ge(t,"img")}function Ee(t){if(t==null||t.trim()==="")return null;let e=Number.parseInt(t,10);return Number.isFinite(e)&&e>0?e:null}function Te(t=document){let e=t.querySelector('[data-composition-id][data-root="true"]');return Be(e)?e:t.querySelector("[data-composition-id]")}var H=Object.freeze({start:"data-start",duration:"data-duration",trackIndex:"data-track-index",derivedEnd:"data-end",legacyTrack:"data-layer"}),Qr=Object.freeze([H.start,H.duration,H.trackIndex]),eo=Object.freeze([H.derivedEnd]),to=Object.freeze([H.derivedEnd,H.legacyTrack]);function qe(t){if(t==null||t.trim()==="")return null;let e=Number(t);return Number.isFinite(e)?e:null}var Pt=t=>{let e=qe(t);return e!==null&&e>=0?e:null};function Nt(t){return Pt(t("data-playback-start"))??Pt(t("data-media-start"))??0}var Q=.1,ee=10;function je(t){return Number.isFinite(t)&&t>0?Math.max(Q,Math.min(ee,t)):1}function Lt(t,e=1){let n=Number.parseFloat(t("data-playback-rate")??"");return je(Number.isFinite(n)&&n>0?n:e)}function Ye(t){let e=qe(t("data-duration"));return e!==null&&e>0?e:null}function Ot(t,e){let n=Ye(t);if(n!==null)return n;let i=qe(t("data-end"));return i!==null?i-e:null}var ai=3;function Xe(t,e,n){return Number.isFinite(t)?Math.max(0,t-e)/je(n):null}function Ke(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:ai,source:"default"};if(i===null)return{seconds:null,source:"pending",reason:"source duration not yet probed"};let a=Xe(i,r,o);return a===null?{seconds:null,source:"pending",reason:"source reported a non-finite duration"}:{seconds:a,source:"media"}}var Vt="data-fx-chain",io=Vt.slice(5);var te=(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}),Je=(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}),Re=(t=-40,e=40,n=0)=>({kind:"number",key:"gain",label:"Gain",unit:"dB",min:t,max:e,step:.1,default:n,automatable:!0}),Ft={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."},Ut=[{id:"gain",label:"Gain",group:"dynamics",description:"Raise or lower the whole signal. Automate it to duck under something else.",params:[Re(-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:[te("frequency","Frequency",1e3),Re(-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:[te("frequency","Frequency",200,20,2e3),Re(-40,40,0)],web:"biquad-lowshelf"},{id:"highshelf",label:"High Shelf",group:"filter",description:"Lift or drop everything above the corner frequency.",params:[te("frequency","Frequency",4e3,500,2e4),Re(-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:[te("frequency","Cutoff",300,20,2e4),Je(.707),Ft],web:"biquad-highpass"},{id:"lowpass",label:"Low-pass",group:"filter",description:"Remove high frequencies, which darkens or muffles a track.",params:[te("frequency","Cutoff",8e3,100,2e4),Je(.707),Ft],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"}],ro=new Map(Ut.map(t=>[t.id,t]));var oo=Ut.map(t=>t.id);function si(t){return 10**(t/20)}var Ht=si(12);var Qe="data-automation",ho=Qe.slice(5),Ze=1,li=512,D=class extends Error{constructor(e){super(e),this.name="AudioAutomationError"}},we="volume",xe="rate";function $t(t){if(t===we)return{kind:"volume"};if(t===xe)return{kind:"rate"};let e=t.split(".");if(e.length===3&&e[0]==="fx"&&e[1]===di){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 di="preset";var ci={min:0,max:Ht,step:.01,unit:"",label:"Volume",scale:"linear",default:1};var mi={min:Q,max:ee,step:.05,unit:"x",label:"Speed",scale:"log",default:1};function ne(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 pi(t){let e=ne(t);return e===null||e===0?0:Math.min(1,Math.max(-1,e))}function Bt(t,e){let n=ne(t),i=ne(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 fi(t){let e=pi(t?.curve),n=Bt(t?.viaX,t?.viaY);return{...e?{curve:e}:{},...n?{viaX:n.x,viaY:n.y}:{}}}function hi(t,e){let n=ne(t?.t),i=ne(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,...fi(t)}}function bi(t,e){let n=t.map(r=>hi(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,li)}function gi(t){let e=[];for(let n of t.lanes){if(!$t(n.target))continue;let i=n.target===we?ci:n.target===xe?mi:null,r=bi(n.points??[],i);r.length>0&&e.push({target:n.target,points:r})}return{version:Ze,lanes:e}}function Gt(t){let e;try{e=JSON.parse(t)}catch(r){throw new D(`Automation is not valid JSON: ${r.message}`)}if(typeof e!="object"||e===null)throw new D("Automation must be a JSON object.");let n=e;if(n.version!==Ze)throw new D(`Unsupported automation version: ${String(n.version)}`);if(!Array.isArray(n.lanes))throw new D("Automation is missing a `lanes` array.");let i=n.lanes.map((r,o)=>{if(typeof r!="object"||r===null)throw new D(`Lane ${o} is not an object.`);let a=r;if(typeof a.target!="string"||!$t(a.target))throw new D(`Lane ${o} has an unreadable target: ${String(a.target)}`);if(!Array.isArray(a.points))throw new D(`Lane ${o} is missing a \`points\` array.`);return{target:a.target,points:a.points}});return gi({version:Ze,lanes:i})}function _i(t,e){return e?Math.pow(t,Math.pow(2,2*e)):t}function yi(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,u=Math.min(o,Math.max(1,a,s));return{cx:t+n/u,cy:e+i/u,w:u}}function vi(t,e,n){let{cx:i,cy:r,w:o}=yi(e,n),a=2-2*o,s=t*a-1+2*o*i,u=-t*a-2*o*i,c=Ai(s,u,t),m=1-c,b=m*m+2*o*c*m+c*c;return b>0?(2*o*r*c*m+c*c)/b:t}function Ai(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 Si(t,e){let n=Bt(e.viaX,e.viaY);return n?vi(Math.min(1,Math.max(0,t)),n.x,n.y):_i(t,e.curve)}function Ei(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 ke(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 b=a+s>>1;i[b].t<=e?a=b:s=b}let u=i[a],c=i[s],m=c.t-u.t;return m<=0?c.v:Ei(u.v,c.v,Si((e-u.t)/m,u),n)}var Me=new Map,Ti=64;function zt(t,e=we){let n=`${e}\0${t}`,i=Me.get(n);if(i!==void 0)return i;let r=null;try{r=Gt(t).lanes.find(o=>o.target===e)??null}catch{r=null}return Me.size>Ti&&Me.clear(),Me.set(n,r),r}var qt=48,jt=new WeakMap;function Ri(t){let e=t.points,n=e[0].v,i=e[e.length-1].v,r=[0],o=[0],a=u=>{let c=r[r.length-1];if(u<=c)return;let m=ke(t,c,"log");r.push(u),o.push(o[o.length-1]+(m+ke(t,u,"log"))/2*(u-c))},s=Math.max(0,e[0].t);a(s);for(let u=1;u<e.length;u+=1){let c=e[u-1].t,m=e[u].t;if(!(m<=0))for(let b=1;b<=qt;b+=1)a(Math.max(c,0)+(m-c)*b/qt)}return{ts:Float64Array.from(r),ss:Float64Array.from(o),firstRate:n,lastRate:i}}function wi(t){let e=jt.get(t);return e||(e=Ri(t),jt.set(t,e)),e}function xi(t){return typeof t!="number"&&t.points.length>0}function ki(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 et(t,e){if(typeof t=="number")return e/t;if(!xi(t))return e;let{ts:n,ss:i,firstRate:r,lastRate:o}=wi(t),a=n.length-1;return e<=0?e/r:e>=i[a]?n[a]+(e-i[a])/o:ki(i,n,e)}function Mi(t){return t?zt(t,xe):null}function Yt(t,e){return Mi(t)??e}var So=[{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"}),To=Object.freeze([y.start,y.duration,y.trackIndex]),Ro=Object.freeze([y.derivedEnd]),wo=Object.freeze([y.derivedEnd,y.legacyTrack]);function C(t){if(t==null||t.trim()==="")return null;let e=Number(t);return Number.isFinite(e)?e:null}var Jt=/^[A-Za-z0-9_.:-]+$/;function Zt(t,e){let n=t.charCodeAt(e);return n>=48&&n<=57}function Xt(t,e){let n=e;for(;n>=0&&Zt(t,n);)n--;return n}function Ii(t,e){let n=e;for(;n>=0&&(t[n]??"").trim()==="";)n--;return n}function Di(t){let e=t.length-1;if(!Zt(t,e))return null;let n=Xt(t,e);return t[n]==="."&&(n=Xt(t,n-1)),n+1}function Ci(t){let e=Di(t);if(e==null)return null;let n=Ii(t,e-1),i=t[n];if(i!=="+"&&i!=="-")return null;let r=t.slice(0,n).trim();if(!Jt.test(r))return null;let o=Number(t.slice(e));return Number.isFinite(o)?{refId:r,operator:i,magnitude:o}:null}function ie(t){let e=(t??"").trim();if(!e)return null;let n=C(e);if(n!=null)return{kind:"absolute",value:n};if(Jt.test(e))return{kind:"reference",refId:e,offset:0};let i=Ci(e);return i?{kind:"reference",refId:i.refId,offset:i.operator==="-"?-i.magnitude:i.magnitude}:null}function w(t,e,n,i){t.push({code:e,attribute:n,value:i})}function Pi(t,e,n,i){if(e==null||e.trim()==="")return n.defaultStart===void 0?0:n.defaultStart;if(!t)return w(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)?(w(i,"unresolved-start-reference",y.start,e),null):Math.max(0,r+t.offset)}var Ni=1e-9;function Li(t,e){return Math.abs(t-e)<=Ni}function Oi(t,e,n){let i=C(t);if(i==null){w(n,"deprecated-end",y.derivedEnd,t),w(n,"invalid-end",y.derivedEnd,t);return}if(e==null){w(n,"deprecated-end",y.derivedEnd,t);return}Li(i,e)||(w(n,"deprecated-end",y.derivedEnd,t),w(n,"conflicting-end",y.derivedEnd,t))}function Fi(t,e,n){let i=C(t);return i==null||i<0?(w(n,"invalid-duration",y.duration,t),{duration:null,end:null,durationSource:"invalid"}):{duration:i,end:e==null?null:e+i,durationSource:"duration"}}function Vi(t,e,n){w(n,"deprecated-end",y.derivedEnd,t);let i=C(t);return i==null?(w(n,"invalid-end",y.derivedEnd,t),{duration:null,end:null,durationSource:"invalid"}):e==null?{duration:null,end:i,durationSource:"legacy-end"}:i<e?(w(n,"end-before-start",y.derivedEnd,t),{duration:null,end:null,durationSource:"invalid"}):{duration:i-e,end:i,durationSource:"legacy-end"}}function Ui(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"}:Vi(r,e,n);let o=Fi(i,e,n);return r!=null&&Oi(r,o.end,n),o}function Kt(t,e,n,i){let r=C(t);return r==null||!Number.isInteger(r)?(w(i,"invalid-track-index",e,t),{trackIndex:0,trackSource:"invalid"}):{trackIndex:r,trackSource:n}}function Hi(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 w(e,"deprecated-layer",y.legacyTrack,i),Kt(i,y.legacyTrack,"legacy-layer",e);let r=Kt(n??"",y.trackIndex,"track-index",e);if(i==null)return r;w(e,"deprecated-layer",y.legacyTrack,i);let o=C(i);return o!=null&&o!==r.trackIndex&&w(e,"conflicting-layer",y.legacyTrack,i),r}function tt(t,e={}){let n=[],i=t.getAttribute(y.start),r=ie(i),o=Pi(r,i,e,n),a=Ui(t,o,n),s=Hi(t,n);return{startExpression:r,start:o,...a,...s,diagnostics:n}}function P(t){return C(t)}function re(t){return Lt(e=>t.getAttribute(e),I(t)?t.defaultPlaybackRate:1)}function nt(t){return Yt(t.getAttribute("data-automation"),re(t))}function Ie(t){return Nt(e=>t.getAttribute(e))}function W(t,e){return Wi(e,Ie(t),nt(t))}function it(t){let e=Ke({tag:"video",authoredDurationSeconds:Ye(n=>t.getAttribute(n)),sourceDurationSeconds:Number.isFinite(t.duration)?t.duration:null,mediaStartSeconds:Ie(t),playbackRate:re(t)});return e.source==="media"?W(t,t.duration):e.seconds}function De(t,e=0){return!ze(t)||!t.hasAttribute("data-start")&&!t.hasAttribute("data-track-index")?null:Ke({tag:"img",authoredDurationSeconds:Ot(n=>t.getAttribute(n),e),sourceDurationSeconds:null,mediaStartSeconds:0,playbackRate:1}).seconds}function Wi(t,e,n){return typeof n=="number"?Xe(t,e,n):Number.isFinite(t)?et(n,Math.max(0,t-e)):null}function Qt(){return globalThis}function $(t,e){if(typeof window>"u")return;let n=Qt(),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 $i=t=>t.paused?.()===!0?(t.startTime?.()??0)+(t.totalDuration?.()??0)/Math.abs(t.timeScale?.()||1):0;function oe(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($i));return Number.isFinite(i)?i:null}catch(e){return $("runtime.timelineDuration",e),null}}var en="data-hf-authored-duration",tn="data-hf-authored-end";function ae(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=ae(t.start);if(e==null)return null;let n=Math.max(0,e),i=ae(t.duration),r=ae(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=ae(t.end),s=ae(t.authoredEnd),u=a!=null&&a>n?a:s!=null&&s>n?s:null;return{start:n,duration:u==null?null:u-n,end:u}}var B=Object.freeze({start:"data-start",duration:"data-duration",trackIndex:"data-track-index",derivedEnd:"data-end",legacyTrack:"data-layer"}),Wo=Object.freeze([B.start,B.duration,B.trackIndex]),$o=Object.freeze([B.derivedEnd]),Bo=Object.freeze([B.derivedEnd,B.legacyTrack]);function Bi(t){if(t==null||t.trim()==="")return null;let e=Number(t);return Number.isFinite(e)?e:null}var nn=t=>{let e=Bi(t);return e!==null&&e>=0?e:null};function Gi(t){return nn(t("data-playback-start"))??nn(t("data-media-start"))??0}var rn="data-hf-media-start-basis";function on(t){return t?.trim().toLowerCase()==="global"?"global":"local"}function zi(t){return on(t.basis)==="global"?t.authoredStart:t.hostStart+t.authoredStart}function an(t){return un(t)?zi({authoredStart:t.authoredStart,hostStart:t.hostStart,basis:t.basis}):t.ordinaryStart()}function sn(t){return un(t)&&on(t.basis)==="global"}function un(t){return!t.hasAutoStart&&t.authoredStart!=null&&t.hostStart!==0}function rt(t){return Gi(e=>t.getAttribute(e))}function ln(t,e){return t-rt(e)}function V(t){let e=t.timelineRegistry??{},n=t.includeAuthoredTimingAttrs??!1,i=t.documentRef??document,r=new WeakMap,o=new WeakMap,a=new Set,s=l=>(l.hasAttribute("data-composition-id")?l.parentElement:l)?.closest("[data-composition-id]")??null,u=(l,f)=>{let _=s(f);if(_){for(let k of _.querySelectorAll(`[id="${l}"]`))if(s(k)===_)return k}let R=i.getElementById(l);return R||(Array.from(i.querySelectorAll("[data-composition-id]")).find(k=>k.getAttribute("data-composition-id")===l)??null)},c=(l,f)=>n?l.getAttribute(f):null,m=l=>Ce({start:0,duration:l.getAttribute("data-duration"),authoredDuration:c(l,"data-hf-authored-duration")})?.duration??Ce({start:T(l,0),end:l.getAttribute("data-end"),authoredEnd:c(l,"data-hf-authored-end")})?.duration??null,b=l=>l!=null&&Number.isFinite(l)&&l>0?l:null,v=l=>{let f=l.getAttribute("data-composition-id");return f?b(oe(e[f])):null},g=l=>{let f=o.get(l);if(f!==void 0)return f;let _=m(l)??b(I(l)?W(l,l.duration):null)??b(De(l))??v(l);return o.set(l,_),_},A=l=>l.hasAttribute("data-composition-src")||l.hasAttribute("data-composition-id")||l.hasAttribute("data-composition-file"),h=l=>{let f=l.parentElement;return!f||!l.hasAttribute("data-composition-id")||ie(l.getAttribute("data-start"))?null:A(f)?f:null},E=(l,f)=>ln(T(l,f),h(l)??l),M=(l,f)=>{let _=l.hasAttribute("data-composition-id")?l.parentElement?.closest("[data-composition-id]"):l.closest("[data-composition-id]");return _?E(_,f):0},N=(l,f)=>{let _=ie(l.getAttribute("data-start"));if(!_){let Z=h(l);return Z?T(Z,f):f}if(_.kind==="absolute")return M(l,f)+Math.max(0,_.value);let R=u(_.refId,l);if(!R)return f;let k=T(R,0),_e=g(R)??0,ye=Math.min(0,M(l,0));return Math.max(ye,k+_e+_.offset)},T=(l,f)=>{let _=r.get(l);if(_!==void 0)return _??f;if(a.has(l))return f;a.add(l);try{let R=N(l,f);return r.set(l,R),R}finally{a.delete(l)}},L=l=>{let f=l.closest("[data-composition-id]");return{authoredStart:P(l.getAttribute("data-start")),hostStart:f?E(f,0):0,hasAutoStart:l.hasAttribute("data-hf-auto-start"),basis:l.getAttribute(rn)}};return{resolveStartForElement:(l,f=0)=>T(l,Math.max(0,f)),resolveDurationForElement:l=>g(l),resolveMediaStartForElement:l=>{let f=L(l);return an({...f,ordinaryStart:()=>T(l,f.hostStart)})},resolveHostStartForElement:l=>M(l,0),resolveHostSlotsForElement:l=>{let f=[];for(let _=l.parentElement;_;_=_.parentElement){if(!A(_)||h(_)||rt(_)<=0)continue;let R=T(_,0),k=m(_);f.push({start:R,end:k?R+k:1/0})}return f},isRootGlobalMediaStartForElement:l=>I(l)&&sn(L(l))}}function dn(){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 cn=7200,ot=1/60,se=t=>t!==null&&t>ot?t:null;function qi(t){return{width:Ee(t.getAttribute("data-width")),height:Ee(t.getAttribute("data-height"))}}function ji(t,e){let n=[];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);o==null||o<=ot||n.push(Math.max(0,r)+o)}return se(Se({authoredDurationSeconds:null,clipEndsSeconds:n}).seconds)}function Yi(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=P(t.getAttribute("data-duration"));return se(Se({authoredDurationSeconds:null,clipEndsSeconds:[i,...n]}).seconds)}var Xi=t=>t.hasAttribute("data-composition-id")||t.hasAttribute("data-composition-src");function Ki(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):(I(o)||Xi(o))&&i.push(null)}(n||t.querySelector("[data-lottie-src]"))&&i.push(null);let r=Se({authoredDurationSeconds:null,clipEndsSeconds:i});return r.pendingClips>0?{...r,seconds:null,source:"unresolved",reason:"a clip's length is pending"}:r}function Ji(t){if(t.declared!==null&&Number.isFinite(t.declared)&&t.declared>0)return t.declared;let e=se(t.timeline()),n=Math.max(0,...t.floors().map(u=>u??0)),i=Number.isFinite(t.fallback)&&t.fallback>ot?t.fallback:0,r=Math.max(n,i),a=e!==null&&e>=cn&&se(r)!==null?null:e,s;return a!==null?s=Math.max(a,r):se(n)!==null?s=r:i>0?s=i:s=t.derived(),s>0?s:0}function mn(t){let e=Te(t);if(!e)return null;let n=V({timelineRegistry:{},includeAuthoredTimingAttrs:!0,documentRef:t}),i=Ji({declared:P(e.getAttribute("data-duration")),timeline:()=>null,floors:()=>[ji(t,{mediaStart:n.resolveMediaStartForElement,mediaDuration:it}),Yi(e,n)],fallback:0,derived:()=>Ki(e,n,{unregisteredLottie:!1}).seconds??0});return{...qi(e),fps:dn().canonicalFps,durationSeconds:i}}var Pe="hyperframes-studio-preview";var pn="data-hf-upcoming";var fn="__hfPreviewErrors";var hn="data-hf-autostamped";function bn(t){return t.hasRuntime||t.runtimeInjected?!1:!!(t.hasNestedCompositions||t.hasTimelines&&t.attempts>=5)}function G(t){return typeof t=="object"&&t!==null}function gn(t){return G(t)&&typeof t.getDuration=="function"}function _n(t){return G(t)&&typeof t.duration=="function"&&typeof t.time=="function"&&typeof t.seek=="function"&&typeof t.play=="function"&&typeof t.pause=="function"}var z="https://cdn.jsdelivr.net/npm/@hyperframes/core@0.8.197/dist/hyperframe.runtime.iife.js";function ue(t){if(t===null)return null;let e=Number.parseInt(t,10);return Number.isFinite(e)&&e>0?e:null}function Zi(t){let e=t?.querySelector("[data-composition-id][data-width][data-height]")??t?.querySelector("[data-width][data-height]");if(!e)return null;let n=ue(e.getAttribute("data-width")),i=ue(e.getAttribute("data-height"));return n!==null&&i!==null?{width:n,height:i}:null}function Qi(t){return Array.isArray(t)?t.find(e=>typeof e=="string"&&e.trim()!==""&&e!=="[object Event]")??null:null}var Ne=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=Qi(Reflect.get(n,fn));if(i!==null)return{kind:"error",message:i};let r=this._iframe.contentDocument,o=Reflect.get(n,"__timelines"),a=this.hasRuntimeBridge(n);if(bn({hasRuntime:a,hasTimelines:G(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?mn(n)?.durationSeconds??0:0}return r<=0?null:{duration:r,adapter:{...i,getDuration:()=>r},compositionSize:Zi(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 G(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?.()??z,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(!G(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 _n(a)?a:null}_resolvePlaybackDurationAdapter(e){let n=Reflect.get(e,"__player");if(gn(n))return{kind:"runtime",getDuration:()=>n.getDuration()};let i=this._resolveDirectTimelineAdapterFromWindow(e);return i?{kind:"direct-timeline",timeline:i,getDuration:()=>i.duration()}:null}};var yn=`
|
|
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.8.
|
|
3
|
+
"version": "0.8.197",
|
|
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.8.
|
|
31
|
+
"@hyperframes/core": "0.8.197"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
34
|
"@types/bun": "^1.1.0",
|