@hyperframes/player 0.8.223 → 0.8.225

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
- import{c as Se,d as It}from"./chunk-BVU3Q3TA.js";var Dt=n=>n!==null&&Number.isFinite(n)&&n>0;function We(n){let e=n.clipEndsSeconds.filter(i=>i===null).length;if(Dt(n.authoredDurationSeconds))return{seconds:n.authoredDurationSeconds,source:"authored",pendingClips:e};let t=n.clipEndsSeconds.filter(Dt);return t.length>0?{seconds:Math.max(...t),source:"derived",pendingClips:e}:{seconds:null,source:"unresolved",pendingClips:e,reason:e>0?"every clip's length is still pending":"no authored duration and no clip with a length"}}var si="http://www.w3.org/1999/xhtml";function Pt(n){return n!=null&&n.nodeType===1}function Be(n){return Pt(n)&&n.namespaceURI===si}function $e(n,e){return Be(n)&&n.localName===e}function li(n){return $e(n,"video")}function ui(n){return $e(n,"audio")}function P(n){return li(n)||ui(n)}function Lt(n){return $e(n,"img")}function Ae(n){if(n==null||n.trim()==="")return null;let e=Number.parseInt(n,10);return Number.isFinite(e)&&e>0?e:null}function Q(n=document){let e=n.querySelector('[data-composition-id][data-root="true"]');return Be(e)?e:n.querySelector("[data-composition-id]")}var $=Object.freeze({start:"data-start",duration:"data-duration",trackIndex:"data-track-index",derivedEnd:"data-end",legacyTrack:"data-layer"}),io=Object.freeze([$.start,$.duration,$.trackIndex]),ro=Object.freeze([$.derivedEnd]),oo=Object.freeze([$.derivedEnd,$.legacyTrack]);function Ge(n){if(n==null||n.trim()==="")return null;let e=Number(n);return Number.isFinite(e)?e:null}var Nt=n=>{let e=Ge(n);return e!==null&&e>=0?e:null};function Ee(n){return Nt(n("data-playback-start"))??Nt(n("data-media-start"))??0}var ee=.1,te=10;function ze(n){return Number.isFinite(n)&&n>0?Math.max(ee,Math.min(te,n)):1}function Ot(n,e=1){let t=Number.parseFloat(n("data-playback-rate")??"");return ze(Number.isFinite(t)&&t>0?t:e)}function je(n){let e=Ge(n("data-duration"));return e!==null&&e>0?e:null}function Ft(n,e){let t=je(n);if(t!==null)return t;let i=Ge(n("data-end"));return i!==null?i-e:null}var di=3;function qe(n,e,t){return Number.isFinite(n)?Math.max(0,n-e)/ze(t):null}function Ye(n){let{tag:e,authoredDurationSeconds:t,sourceDurationSeconds:i,mediaStartSeconds:r,playbackRate:o}=n;if(t!==null&&t>0)return{seconds:t,source:"authored"};if(e==="img")return{seconds:di,source:"default"};if(i===null)return{seconds:null,source:"pending",reason:"source duration not yet probed"};let a=qe(i,r,o);return a===null?{seconds:null,source:"pending",reason:"source reported a non-finite duration"}:{seconds:a,source:"media"}}var ci="data-fx-chain",so=ci.slice(5);var ne=(n="frequency",e="Frequency",t=1e3,i=20,r=2e4)=>({kind:"number",key:n,label:e,unit:"Hz",min:i,max:r,step:1,default:t,scale:"log",automatable:!0}),Xe=(n=.707,e="Bandwidth: higher is narrower.")=>({kind:"number",key:"q",label:"Q",unit:"",min:.1,max:20,step:.01,default:n,scale:"log",automatable:!0,hint:e}),Te=(n=-40,e=40,t=0)=>({kind:"number",key:"gain",label:"Gain",unit:"dB",min:n,max:e,step:.1,default:t,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."},Ht=[{id:"gain",label:"Gain",group:"dynamics",description:"Raise or lower the whole signal. Automate it to duck under something else.",params:[Te(-60,12,0)],web:"gain-node"},{id:"peaking",label:"Peaking EQ",group:"filter",description:"Boost or cut a band, leaving everything either side alone.",params:[ne("frequency","Frequency",1e3),Te(-40,40,0),Xe(1)],web:"biquad-peaking"},{id:"lowshelf",label:"Low Shelf",group:"filter",description:"Lift or drop everything below the corner frequency.",params:[ne("frequency","Frequency",200,20,2e3),Te(-40,40,0)],web:"biquad-lowshelf"},{id:"highshelf",label:"High Shelf",group:"filter",description:"Lift or drop everything above the corner frequency.",params:[ne("frequency","Frequency",4e3,500,2e4),Te(-40,40,0)],web:"biquad-highshelf"},{id:"highpass",label:"High-pass",group:"filter",description:"Remove low frequencies: the usual fix for rumble on a voice.",params:[ne("frequency","Cutoff",300,20,2e4),Xe(.707),Ut],web:"biquad-highpass"},{id:"lowpass",label:"Low-pass",group:"filter",description:"Remove high frequencies, which darkens or muffles a track.",params:[ne("frequency","Cutoff",8e3,100,2e4),Xe(.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"}],lo=new Map(Ht.map(n=>[n.id,n]));var uo=Ht.map(n=>n.id);function mi(n){return 10**(n/20)}var Vt=mi(12);var Wt="data-automation",So=Wt.slice(5),Ke=1,pi=512,L=class extends Error{constructor(e){super(e),this.name="AudioAutomationError"}},Re="volume",xe="rate";function Bt(n){if(n===Re)return{kind:"volume"};if(n===xe)return{kind:"rate"};let e=n.split(".");if(e.length===3&&e[0]==="fx"&&e[1]===fi){let r=e[2];return r?{kind:"preset",presetId:r}:null}if(e.length!==3||e[0]!=="fx")return null;let[,t,i]=e;return!t||!i?null:{kind:"fx",nodeId:t,param:i}}var fi="preset";var hi={min:0,max:Vt,step:.01,unit:"",label:"Volume",scale:"linear",default:1};var bi={min:ee,max:te,step:.05,unit:"x",label:"Speed",scale:"log",default:1};function ie(n){if(typeof n=="number")return Number.isFinite(n)?n:null;if(typeof n=="string"&&n.trim()!==""){let e=Number(n);return Number.isFinite(e)?e:null}return null}function gi(n){let e=ie(n);return e===null||e===0?0:Math.min(1,Math.max(-1,e))}function $t(n,e){let t=ie(n),i=ie(e);if(t===null||i===null)return null;let r=s=>Math.min(.999,Math.max(.001,s)),o=r(t),a=r(i);return Math.abs(o-a)<1e-6?null:{x:o,y:a}}function _i(n){let e=gi(n?.curve),t=$t(n?.viaX,n?.viaY);return{...e?{curve:e}:{},...t?{viaX:t.x,viaY:t.y}:{}}}function yi(n,e){let t=ie(n?.t),i=ie(n?.v);if(t===null||i===null)return null;let r=e?Math.min(e.max,Math.max(e.min,i)):i;return{t:Math.max(0,t),v:r,..._i(n)}}function vi(n,e){let t=n.map(r=>yi(r,e)).filter(r=>r!==null).sort((r,o)=>r.t-o.t),i=[];for(let r of t)i.length>0&&i[i.length-1].t===r.t?i[i.length-1]=r:i.push(r);return i.slice(0,pi)}function Si(n){let e=[];for(let t of n.lanes){if(!Bt(t.target))continue;let i=t.target===Re?hi:t.target===xe?bi:null,r=vi(t.points??[],i);r.length>0&&e.push({target:t.target,points:r})}return{version:Ke,lanes:e}}function Gt(n){let e;try{e=JSON.parse(n)}catch(r){throw new L(`Automation is not valid JSON: ${r.message}`)}if(typeof e!="object"||e===null)throw new L("Automation must be a JSON object.");let t=e;if(t.version!==Ke)throw new L(`Unsupported automation version: ${String(t.version)}`);if(!Array.isArray(t.lanes))throw new L("Automation is missing a `lanes` array.");let i=t.lanes.map((r,o)=>{if(typeof r!="object"||r===null)throw new L(`Lane ${o} is not an object.`);let a=r;if(typeof a.target!="string"||!Bt(a.target))throw new L(`Lane ${o} has an unreadable target: ${String(a.target)}`);if(!Array.isArray(a.points))throw new L(`Lane ${o} is missing a \`points\` array.`);return{target:a.target,points:a.points}});return Si({version:Ke,lanes:i})}function Ai(n,e){return e?Math.pow(n,Math.pow(2,2*e)):n}function Ei(n,e){let t=n-.5,i=e-.5,r=.999,o=1e6,a=t>0?t/(r-n):t<0?-t/(n-(1-r)):0,s=i>0?i/(r-e):i<0?-i/(e-(1-r)):0,l=Math.min(o,Math.max(1,a,s));return{cx:n+t/l,cy:e+i/l,w:l}}function Ti(n,e,t){let{cx:i,cy:r,w:o}=Ei(e,t),a=2-2*o,s=n*a-1+2*o*i,l=-n*a-2*o*i,u=Ri(s,l,n),c=1-u,h=c*c+2*o*u*c+u*u;return h>0?(2*o*r*u*c+u*u)/h:n}function Ri(n,e,t){if(Math.abs(n)<1e-12)return Math.abs(e)<1e-12?t:-t/e;let i=Math.sqrt(Math.max(0,e*e-4*n*t)),r=(-e+i)/(2*n),o=(-e-i)/(2*n),a=s=>s>=-1e-9&&s<=1+1e-9;return a(r)?Math.min(1,Math.max(0,r)):a(o)?Math.min(1,Math.max(0,o)):t}function xi(n,e){let t=$t(e.viaX,e.viaY);return t?Ti(Math.min(1,Math.max(0,n)),t.x,t.y):Ai(n,e.curve)}function wi(n,e,t,i){return i==="log"&&n>0&&e>0?Math.exp(Math.log(n)+(Math.log(e)-Math.log(n))*t):n+(e-n)*t}function we(n,e,t="linear"){let i=n.points;if(i.length===0)return 0;let r=i[0];if(e<=r.t)return r.v;let o=i[i.length-1];if(e>=o.t)return o.v;let a=0,s=i.length-1;for(;s-a>1;){let h=a+s>>1;i[h].t<=e?a=h:s=h}let l=i[a],u=i[s],c=u.t-l.t;return c<=0?u.v:wi(l.v,u.v,xi((e-l.t)/c,l),t)}var ke=new Map,ki=64;function zt(n,e=Re){let t=`${e}\0${n}`,i=ke.get(t);if(i!==void 0)return i;let r=null;try{r=Gt(n).lanes.find(o=>o.target===e)??null}catch{r=null}return ke.size>ki&&ke.clear(),ke.set(t,r),r}var jt=48,qt=new WeakMap;function Mi(n){let e=n.points,t=e[0].v,i=e[e.length-1].v,r=[0],o=[0],a=l=>{let u=r[r.length-1];if(l<=u)return;let c=we(n,u,"log");r.push(l),o.push(o[o.length-1]+(c+we(n,l,"log"))/2*(l-u))},s=Math.max(0,e[0].t);a(s);for(let l=1;l<e.length;l+=1){let u=e[l-1].t,c=e[l].t;if(!(c<=0))for(let h=1;h<=jt;h+=1)a(Math.max(u,0)+(c-u)*h/jt)}return{ts:Float64Array.from(r),ss:Float64Array.from(o),firstRate:t,lastRate:i}}function Ci(n){let e=qt.get(n);return e||(e=Mi(n),qt.set(n,e)),e}function Ii(n){return typeof n!="number"&&n.points.length>0}function Di(n,e,t){let i=0,r=n.length-1;for(;r-i>1;){let o=i+r>>1;n[o]<=t?i=o:r=o}return e[i]+(e[r]-e[i])*(t-n[i])/(n[r]-n[i])}function Yt(n,e){if(typeof n=="number")return e/n;if(!Ii(n))return e;let{ts:t,ss:i,firstRate:r,lastRate:o}=Ci(n),a=t.length-1;return e<=0?e/r:e>=i[a]?t[a]+(e-i[a])/o:Di(i,t,e)}function Pi(n){return n?zt(n,xe):null}function Xt(n,e){return Pi(n)??e}var ko=[{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"}),Co=Object.freeze([y.start,y.duration,y.trackIndex]),Io=Object.freeze([y.derivedEnd]),Do=Object.freeze([y.derivedEnd,y.legacyTrack]);function N(n){if(n==null||n.trim()==="")return null;let e=Number(n);return Number.isFinite(e)?e:null}var Jt=/^[A-Za-z0-9_.:-]+$/;function Qt(n,e){let t=n.charCodeAt(e);return t>=48&&t<=57}function Kt(n,e){let t=e;for(;t>=0&&Qt(n,t);)t--;return t}function Li(n,e){let t=e;for(;t>=0&&(n[t]??"").trim()==="";)t--;return t}function Ni(n){let e=n.length-1;if(!Qt(n,e))return null;let t=Kt(n,e);return n[t]==="."&&(t=Kt(n,t-1)),t+1}function Oi(n){let e=Ni(n);if(e==null)return null;let t=Li(n,e-1),i=n[t];if(i!=="+"&&i!=="-")return null;let r=n.slice(0,t).trim();if(!Jt.test(r))return null;let o=Number(n.slice(e));return Number.isFinite(o)?{refId:r,operator:i,magnitude:o}:null}function re(n){let e=(n??"").trim();if(!e)return null;let t=N(e);if(t!=null)return{kind:"absolute",value:t};if(Jt.test(e))return{kind:"reference",refId:e,offset:0};let i=Oi(e);return i?{kind:"reference",refId:i.refId,offset:i.operator==="-"?-i.magnitude:i.magnitude}:null}function x(n,e,t,i){n.push({code:e,attribute:t,value:i})}function Fi(n,e,t,i){if(e==null||e.trim()==="")return t.defaultStart===void 0?0:t.defaultStart;if(!n)return x(i,"invalid-start",y.start,e),null;if(n.kind==="absolute")return Math.max(0,n.value);let r=t.resolveReferenceEnd?.(n.refId);return r==null||!Number.isFinite(r)?(x(i,"unresolved-start-reference",y.start,e),null):Math.max(0,r+n.offset)}var Ui=1e-9;function Hi(n,e){return Math.abs(n-e)<=Ui}function Vi(n,e,t){let i=N(n);if(i==null){x(t,"deprecated-end",y.derivedEnd,n),x(t,"invalid-end",y.derivedEnd,n);return}if(e==null){x(t,"deprecated-end",y.derivedEnd,n);return}Hi(i,e)||(x(t,"deprecated-end",y.derivedEnd,n),x(t,"conflicting-end",y.derivedEnd,n))}function Wi(n,e,t){let i=N(n);return i==null||i<0?(x(t,"invalid-duration",y.duration,n),{duration:null,end:null,durationSource:"invalid"}):{duration:i,end:e==null?null:e+i,durationSource:"duration"}}function Bi(n,e,t){x(t,"deprecated-end",y.derivedEnd,n);let i=N(n);return i==null?(x(t,"invalid-end",y.derivedEnd,n),{duration:null,end:null,durationSource:"invalid"}):e==null?{duration:null,end:i,durationSource:"legacy-end"}:i<e?(x(t,"end-before-start",y.derivedEnd,n),{duration:null,end:null,durationSource:"invalid"}):{duration:i-e,end:i,durationSource:"legacy-end"}}function $i(n,e,t){let i=n.getAttribute(y.duration),r=n.getAttribute(y.derivedEnd);if(i==null)return r==null?{duration:null,end:null,durationSource:"missing"}:Bi(r,e,t);let o=Wi(i,e,t);return r!=null&&Vi(r,o.end,t),o}function Zt(n,e,t,i){let r=N(n);return r==null||!Number.isInteger(r)?(x(i,"invalid-track-index",e,n),{trackIndex:0,trackSource:"invalid"}):{trackIndex:r,trackSource:t}}function Gi(n,e){let t=n.getAttribute(y.trackIndex),i=n.getAttribute(y.legacyTrack);if(t==null&&i==null)return{trackIndex:0,trackSource:"default"};if(t==null&&i!=null)return x(e,"deprecated-layer",y.legacyTrack,i),Zt(i,y.legacyTrack,"legacy-layer",e);let r=Zt(t??"",y.trackIndex,"track-index",e);if(i==null)return r;x(e,"deprecated-layer",y.legacyTrack,i);let o=N(i);return o!=null&&o!==r.trackIndex&&x(e,"conflicting-layer",y.legacyTrack,i),r}function Ze(n,e={}){let t=[],i=n.getAttribute(y.start),r=re(i),o=Fi(r,i,e,t),a=$i(n,o,t),s=Gi(n,t);return{startExpression:r,start:o,...a,...s,diagnostics:t}}function V(n){return N(n)}function Je(n){return Ot(e=>n.getAttribute(e),P(n)?n.defaultPlaybackRate:1)}function zi(n){return Xt(n.getAttribute("data-automation"),Je(n))}function Qe(n){return Ee(e=>n.getAttribute(e))}function oe(n,e){return ji(e,Qe(n),zi(n))}function et(n){let e=Ye({tag:"video",authoredDurationSeconds:je(t=>n.getAttribute(t)),sourceDurationSeconds:Number.isFinite(n.duration)?n.duration:null,mediaStartSeconds:Qe(n),playbackRate:Je(n)});return e.source==="media"?oe(n,n.duration):e.seconds}function Me(n,e=0){return!Lt(n)||!n.hasAttribute("data-start")&&!n.hasAttribute("data-track-index")?null:Ye({tag:"img",authoredDurationSeconds:Ft(t=>n.getAttribute(t),e),sourceDurationSeconds:null,mediaStartSeconds:0,playbackRate:1}).seconds}function ji(n,e,t){return typeof t=="number"?qe(n,e,t):Number.isFinite(n)?Yt(t,Math.max(0,n-e)):null}function en(){return globalThis}function tt(n,e){if(typeof window>"u")return;let t=en(),i=t.__hf?.onSwallowed;if(i)try{i({label:n,error:e})}catch(r){}(t.__hfDebug||t.__HYPERFRAMES_DEBUG)&&console.debug(`[hyperframes] ${n} swallowed:`,e)}var qi=n=>n.paused?.()===!0?(n.startTime?.()??0)+(n.totalDuration?.()??0)/Math.abs(n.timeScale?.()||1):0;function ae(n){try{if(typeof n?.duration!="function")return null;let e=n.getChildren?.(!1,!1,!0),t=Array.isArray(e)?e:[],i=Math.max(Number(n.duration()),...t.map(qi));return Number.isFinite(i)?i:null}catch(e){return tt("runtime.timelineDuration",e),null}}var tn="data-hf-authored-duration",nn="data-hf-authored-end";function se(n){if(n==null||typeof n=="string"&&n.trim()==="")return null;let e=typeof n=="number"?n:Number(n);return Number.isFinite(e)?e:null}function Ce(n){let e=se(n.start);if(e==null)return null;let t=Math.max(0,e),i=se(n.duration),r=se(n.authoredDuration),o=i!=null&&i>0?i:r!=null&&r>0?r:null;if(o!=null)return{start:t,duration:o,end:t+o};let a=se(n.end),s=se(n.authoredEnd),l=a!=null&&a>t?a:s!=null&&s>t?s:null;return{start:t,duration:l==null?null:l-t,end:l}}var G=Object.freeze({start:"data-start",duration:"data-duration",trackIndex:"data-track-index",derivedEnd:"data-end",legacyTrack:"data-layer"}),qo=Object.freeze([G.start,G.duration,G.trackIndex]),Yo=Object.freeze([G.derivedEnd]),Xo=Object.freeze([G.derivedEnd,G.legacyTrack]);function Yi(n){if(n==null||n.trim()==="")return null;let e=Number(n);return Number.isFinite(e)?e:null}var rn=n=>{let e=Yi(n);return e!==null&&e>=0?e:null};function Xi(n){return rn(n("data-playback-start"))??rn(n("data-media-start"))??0}var on="data-hf-media-start-basis";function an(n){return n?.trim().toLowerCase()==="global"?"global":"local"}function Ki(n){return an(n.basis)==="global"?n.authoredStart:n.hostStart+n.authoredStart}function sn(n){return un(n)?Ki({authoredStart:n.authoredStart,hostStart:n.hostStart,basis:n.basis}):n.ordinaryStart()}function ln(n){return un(n)&&an(n.basis)==="global"}function un(n){return!n.hasAutoStart&&n.authoredStart!=null&&n.hostStart!==0}function nt(n){return Xi(e=>n.getAttribute(e))}function dn(n,e){return n-nt(e)}function le(n){let e=n.timelineRegistry??{},t=n.includeAuthoredTimingAttrs??!1,i=n.documentRef??document,r=new WeakMap,o=new WeakMap,a=new Set,s=d=>(d.hasAttribute("data-composition-id")?d.parentElement:d)?.closest("[data-composition-id]")??null,l=(d,f)=>{let g=s(f);if(g){for(let k of g.querySelectorAll(`[id="${d}"]`))if(s(k)===g)return k}let R=i.getElementById(d);return R||(Array.from(i.querySelectorAll("[data-composition-id]")).find(k=>k.getAttribute("data-composition-id")===d)??null)},u=(d,f)=>t?d.getAttribute(f):null,c=d=>Ce({start:0,duration:d.getAttribute("data-duration"),authoredDuration:u(d,"data-hf-authored-duration")})?.duration??Ce({start:T(d,0),end:d.getAttribute("data-end"),authoredEnd:u(d,"data-hf-authored-end")})?.duration??null,h=d=>d!=null&&Number.isFinite(d)&&d>0?d:null,v=d=>{let f=d.getAttribute("data-composition-id");return f?h(ae(e[f])):null},b=d=>{let f=o.get(d);if(f!==void 0)return f;let g=c(d)??h(P(d)?oe(d,d.duration):null)??h(Me(d))??v(d);return o.set(d,g),g},S="[data-composition-src], [data-composition-id], [data-composition-file]",_=d=>d.matches(S),A=d=>!d.hasAttribute("data-composition-id")||re(d.getAttribute("data-start"))?null:d.parentElement?.closest(`[data-start], ${S}`)??null,C=(d,f)=>dn(T(d,f),A(d)??d),M=(d,f)=>{let g=d.hasAttribute("data-composition-id")?d.parentElement?.closest("[data-composition-id]"):d.closest("[data-composition-id]");return g?C(g,f):0},I=(d,f)=>{let g=re(d.getAttribute("data-start"));if(!g){let H=A(d);return H?T(H,f):f}if(g.kind==="absolute")return M(d,f)+Math.max(0,g.value);let R=l(g.refId,d);if(!R)return f;let k=T(R,0),ye=b(R)??0,ve=Math.min(0,M(d,0));return Math.max(ve,k+ye+g.offset)},T=(d,f)=>{let g=r.get(d);if(g!==void 0)return g??f;if(a.has(d))return f;a.add(d);try{let R=I(d,f);return r.set(d,R),R}finally{a.delete(d)}},U=d=>{let f=d.closest("[data-composition-id]");return{authoredStart:V(d.getAttribute("data-start")),hostStart:f?C(f,0):0,hasAutoStart:d.hasAttribute("data-hf-auto-start"),basis:d.getAttribute(on)}};return{resolveStartForElement:(d,f=0)=>T(d,Math.max(0,f)),resolveDurationForElement:d=>b(d),resolveMediaStartForElement:d=>{let f=U(d);return sn({...f,ordinaryStart:()=>T(d,f.hostStart)})},resolveHostStartForElement:d=>M(d,0),resolveHostSlotsForElement:d=>{let f=[];for(let g=d.parentElement;g;g=g.parentElement){if(!_(g)||A(g)||nt(g)<=0)continue;let R=T(g,0),k=c(g);f.push({start:R,end:k?R+k:1/0})}return f},isRootGlobalMediaStartForElement:d=>P(d)&&ln(U(d))}}function cn(){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 mn=7200,it=1/60,ue=n=>n!==null&&n>it?n:null;function Zi(n){return{width:Ae(n.getAttribute("data-width")),height:Ae(n.getAttribute("data-height"))}}function Ji(n,e){let t=null;for(let i of n.querySelectorAll("video[data-start], audio[data-start]")){let r=e.mediaStart(i);if(!Number.isFinite(r))continue;let o=e.mediaDuration(i);if(o==null||o<=it)continue;let a=Math.max(0,r)+o;(!t||a>t.seconds)&&(t={seconds:a,element:i})}return t&&ue(t.seconds)!==null?t:null}function Qi(n,e){return Ji(n,e)?.seconds??null}function er(n,e){let t=[];for(let r of n.querySelectorAll("[data-composition-id][data-start]")){if(r.parentElement?.closest("[data-composition-id]")!==n)continue;let o=e.resolveStartForElement(r,0),a=e.resolveDurationForElement(r);!Number.isFinite(o)||a==null||a<=0||t.push(Math.max(0,o)+a)}let i=V(n.getAttribute("data-duration"));return ue(We({authoredDurationSeconds:null,clipEndsSeconds:[i,...t]}).seconds)}var tr=n=>n.hasAttribute("data-composition-id")||n.hasAttribute("data-composition-src");function nr(n,e,{unregisteredLottie:t}){let i=[];for(let o of n.querySelectorAll("[data-start]")){let a=e.resolveStartForElement(o,0);if(!Number.isFinite(a))continue;let s=e.resolveDurationForElement(o);s!=null?i.push(Math.max(0,a)+s):(P(o)||tr(o))&&i.push(null)}(t||n.querySelector("[data-lottie-src]"))&&i.push(null);let r=We({authoredDurationSeconds:null,clipEndsSeconds:i});return r.pendingClips>0?{...r,seconds:null,source:"unresolved",reason:"a clip's length is pending"}:r}function ir(n){return rr(n).seconds}function rr(n){if(n.declared!==null&&Number.isFinite(n.declared)&&n.declared>0)return{seconds:n.declared,from:"declared",floorIndex:null};let e=ue(n.timeline()),t=n.floors().map(h=>h??0),i=Math.max(0,...t),r=Number.isFinite(n.fallback)&&n.fallback>it?n.fallback:0,o=Math.max(i,r),s=e!==null&&e>=mn&&ue(o)!==null?null:e,l=i>=r,u=h=>({seconds:h,from:l?"floor":"fallback",floorIndex:l?t.indexOf(i):null});if(s!==null)return s>=o?{seconds:s,from:"timeline",floorIndex:null}:u(o);if(ue(i)!==null)return u(o);if(r>0)return{seconds:r,from:"fallback",floorIndex:null};let c=n.derived();return{seconds:c>0?c:0,from:"derived",floorIndex:null}}function pn(n){let e=Q(n);if(!e)return null;let t=le({timelineRegistry:{},includeAuthoredTimingAttrs:!0,documentRef:n}),i=ir({declared:V(e.getAttribute("data-duration")),timeline:()=>null,floors:()=>[Qi(n,{mediaStart:t.resolveMediaStartForElement,mediaDuration:et}),er(e,t)],fallback:0,derived:()=>nr(e,t,{unregisteredLottie:!1}).seconds??0});return{...Zi(e),fps:cn().canonicalFps,durationSeconds:i}}var fn="hyperframes-studio-preview";var hn="__hfPreviewErrors";function bn(n){return n.hasRuntime||n.runtimeInjected?!1:!!(n.hasNestedCompositions||n.hasTimelines&&n.attempts>=5)}function z(n){return typeof n=="object"&&n!==null}function gn(n){return z(n)&&typeof n.getDuration=="function"}function _n(n){return z(n)&&typeof n.duration=="function"&&typeof n.time=="function"&&typeof n.seek=="function"&&typeof n.play=="function"&&typeof n.pause=="function"}var j="https://cdn.jsdelivr.net/npm/@hyperframes/core@0.8.223/dist/hyperframe.runtime.iife.js";function de(n){if(n===null)return null;let e=Number.parseInt(n,10);return Number.isFinite(e)&&e>0?e:null}function or(n){let e=n?.querySelector("[data-composition-id][data-width][data-height]")??n?.querySelector("[data-width][data-height]");if(!e)return null;let t=de(e.getAttribute("data-width")),i=de(e.getAttribute("data-height"));return t!==null&&i!==null?{width:t,height:i}:null}function ar(n){return Array.isArray(n)?n.find(e=>typeof e=="string"&&e.trim()!==""&&e!=="[object Event]")??null:null}var Ie=class{constructor(e,t){this._iframe=e;this._callbacks=t}_iframe;_callbacks;_interval=null;_runtimeInjected=!1;_runtimeScript=null;_failure=null;get failed(){return this._failure!==null&&this._failure.document===this._iframe.contentDocument}get runtimeInjected(){return this._runtimeInjected}start(){this.stop(),this._failure=null,this._runtimeInjected=!1;let e=0;this._interval=setInterval(()=>{e++;let t=null;try{t=this._poll(e)}catch(i){i instanceof DOMException&&i.name==="SecurityError"||(t={kind:"error",message:i instanceof Error?i.message:String(i)})}t??=this._deadlineOutcome(e),t&&(this.stop(),t.kind==="error"?(this._failure={document:this._iframe.contentDocument},this._callbacks.onError(t.message)):this._callbacks.onReady(t.result))},200)}_deadlineOutcome(e){return e<40||this._callbacks.hostOwnsDeadline?.()?null:{kind:"error",message:"Composition timeline not found after 8s"}}_poll(e){let t=this._iframe.contentWindow;if(!t)return null;let i=ar(Reflect.get(t,hn));if(i!==null)return{kind:"error",message:i};let r=this._iframe.contentDocument,o=Reflect.get(t,"__timelines"),a=this.hasRuntimeBridge(t);if(bn({hasRuntime:a,hasTimelines:z(o)&&Object.keys(o).length>0,hasNestedCompositions:!!r?.querySelector("[data-composition-src]"),runtimeInjected:this._runtimeInjected,attempts:e}))return this._injectRuntime(),null;if(this._runtimeInjected&&!a)return null;let s=this._resolveReadyResult(t,r);return s?{kind:"ready",result:s}:null}_resolveReadyResult(e,t){let i=this._resolvePlaybackDurationAdapter(e)??{kind:"document",getDuration:()=>0},r=i.getDuration();if(!Number.isFinite(r)||r<=0){if(i.kind==="direct-timeline")return null;r=t?pn(t)?.durationSeconds??0:0}return r<=0?null:{duration:r,adapter:{...i,getDuration:()=>r},compositionSize:or(t)}}stop(){this._runtimeScript&&(this._runtimeScript.onerror=null,this._runtimeScript=null),this.failed||(this._failure=null),this._interval!==null&&(clearInterval(this._interval),this._interval=null)}resolveDirectTimelineAdapter(){try{let e=this._iframe.contentWindow;return e?this._resolveDirectTimelineAdapterFromWindow(e):null}catch{return null}}resolveDirectTimelineAdapterFromWindow(e){return this._resolveDirectTimelineAdapterFromWindow(e)}hasRuntimeBridge(e){return z(Reflect.get(e,"__player"))}_injectRuntime(){this._runtimeInjected=!0;try{let e=this._iframe.contentDocument;if(!e)return;let t=e.createElement("script");t.src=this._callbacks.resolveRuntimeUrl?.()??j,this._runtimeScript=t,t.onerror=()=>{this._runtimeScript!==t||this._iframe.contentDocument!==e||(this.stop(),this._failure={document:e},this._callbacks.onError("HyperFrames runtime failed to load from "+t.src))},(e.head||e.documentElement).appendChild(t),this._callbacks.onRuntimeInjected?.()}catch{}}_resolveDirectTimelineAdapterFromWindow(e){if(this.hasRuntimeBridge(e))return null;let t=Reflect.get(e,"__timelines");if(!z(t))return null;let i=Object.keys(t);if(i.length===0)return null;let r=this._iframe.contentDocument?.querySelector("[data-composition-id]")?.getAttribute("data-composition-id"),o=r&&r in t?r:i[i.length-1],a=t[o];return _n(a)?a:null}_resolvePlaybackDurationAdapter(e){let t=Reflect.get(e,"__player");if(gn(t))return{kind:"runtime",getDuration:()=>t.getDuration()};let i=this._resolveDirectTimelineAdapterFromWindow(e);return i?{kind:"direct-timeline",timeline:i,getDuration:()=>i.duration()}:null}};var yn=`
1
+ import{c as Se,d as Dt}from"./chunk-BVU3Q3TA.js";var Pt=n=>n!==null&&Number.isFinite(n)&&n>0;function Be(n){let e=n.clipEndsSeconds.filter(i=>i===null).length;if(Pt(n.authoredDurationSeconds))return{seconds:n.authoredDurationSeconds,source:"authored",pendingClips:e};let t=n.clipEndsSeconds.filter(Pt);return t.length>0?{seconds:Math.max(...t),source:"derived",pendingClips:e}:{seconds:null,source:"unresolved",pendingClips:e,reason:e>0?"every clip's length is still pending":"no authored duration and no clip with a length"}}var li="http://www.w3.org/1999/xhtml";function Lt(n){return n!=null&&n.nodeType===1}function $e(n){return Lt(n)&&n.namespaceURI===li}function Ge(n,e){return $e(n)&&n.localName===e}function ui(n){return Ge(n,"video")}function di(n){return Ge(n,"audio")}function P(n){return ui(n)||di(n)}function Nt(n){return Ge(n,"img")}function Ae(n){if(n==null||n.trim()==="")return null;let e=Number.parseInt(n,10);return Number.isFinite(e)&&e>0?e:null}function Q(n=document){let e=n.querySelector('[data-composition-id][data-root="true"]');return $e(e)?e:n.querySelector("[data-composition-id]")}var $=Object.freeze({start:"data-start",duration:"data-duration",trackIndex:"data-track-index",derivedEnd:"data-end",legacyTrack:"data-layer"}),ro=Object.freeze([$.start,$.duration,$.trackIndex]),oo=Object.freeze([$.derivedEnd]),ao=Object.freeze([$.derivedEnd,$.legacyTrack]);function ze(n){if(n==null||n.trim()==="")return null;let e=Number(n);return Number.isFinite(e)?e:null}var Ot=n=>{let e=ze(n);return e!==null&&e>=0?e:null};function Ee(n){return Ot(n("data-playback-start"))??Ot(n("data-media-start"))??0}var ee=.1,te=10;function je(n){return Number.isFinite(n)&&n>0?Math.max(ee,Math.min(te,n)):1}function Ft(n,e=1){let t=Number.parseFloat(n("data-playback-rate")??"");return je(Number.isFinite(t)&&t>0?t:e)}function qe(n){let e=ze(n("data-duration"));return e!==null&&e>0?e:null}function Ut(n,e){let t=qe(n);if(t!==null)return t;let i=ze(n("data-end"));return i!==null?i-e:null}var ci=3;function Ye(n,e,t){return Number.isFinite(n)?Math.max(0,n-e)/je(t):null}function Xe(n){let{tag:e,authoredDurationSeconds:t,sourceDurationSeconds:i,mediaStartSeconds:r,playbackRate:o}=n;if(t!==null&&t>0)return{seconds:t,source:"authored"};if(e==="img")return{seconds:ci,source:"default"};if(i===null)return{seconds:null,source:"pending",reason:"source duration not yet probed"};let a=Ye(i,r,o);return a===null?{seconds:null,source:"pending",reason:"source reported a non-finite duration"}:{seconds:a,source:"media"}}var mi="data-fx-chain",lo=mi.slice(5);var ne=(n="frequency",e="Frequency",t=1e3,i=20,r=2e4)=>({kind:"number",key:n,label:e,unit:"Hz",min:i,max:r,step:1,default:t,scale:"log",automatable:!0}),Ke=(n=.707,e="Bandwidth: higher is narrower.")=>({kind:"number",key:"q",label:"Q",unit:"",min:.1,max:20,step:.01,default:n,scale:"log",automatable:!0,hint:e}),Te=(n=-40,e=40,t=0)=>({kind:"number",key:"gain",label:"Gain",unit:"dB",min:n,max:e,step:.1,default:t,automatable:!0}),Ht={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."},Vt=[{id:"gain",label:"Gain",group:"dynamics",description:"Raise or lower the whole signal. Automate it to duck under something else.",params:[Te(-60,12,0)],web:"gain-node"},{id:"peaking",label:"Peaking EQ",group:"filter",description:"Boost or cut a band, leaving everything either side alone.",params:[ne("frequency","Frequency",1e3),Te(-40,40,0),Ke(1)],web:"biquad-peaking"},{id:"lowshelf",label:"Low Shelf",group:"filter",description:"Lift or drop everything below the corner frequency.",params:[ne("frequency","Frequency",200,20,2e3),Te(-40,40,0)],web:"biquad-lowshelf"},{id:"highshelf",label:"High Shelf",group:"filter",description:"Lift or drop everything above the corner frequency.",params:[ne("frequency","Frequency",4e3,500,2e4),Te(-40,40,0)],web:"biquad-highshelf"},{id:"highpass",label:"High-pass",group:"filter",description:"Remove low frequencies: the usual fix for rumble on a voice.",params:[ne("frequency","Cutoff",300,20,2e4),Ke(.707),Ht],web:"biquad-highpass"},{id:"lowpass",label:"Low-pass",group:"filter",description:"Remove high frequencies, which darkens or muffles a track.",params:[ne("frequency","Cutoff",8e3,100,2e4),Ke(.707),Ht],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"}],uo=new Map(Vt.map(n=>[n.id,n]));var co=Vt.map(n=>n.id);function pi(n){return 10**(n/20)}var Wt=pi(12);var Bt="data-automation",Ao=Bt.slice(5),Ze=1,fi=512,L=class extends Error{constructor(e){super(e),this.name="AudioAutomationError"}},Re="volume",xe="rate";function $t(n){if(n===Re)return{kind:"volume"};if(n===xe)return{kind:"rate"};let e=n.split(".");if(e.length===3&&e[0]==="fx"&&e[1]===hi){let r=e[2];return r?{kind:"preset",presetId:r}:null}if(e.length!==3||e[0]!=="fx")return null;let[,t,i]=e;return!t||!i?null:{kind:"fx",nodeId:t,param:i}}var hi="preset";var bi={min:0,max:Wt,step:.01,unit:"",label:"Volume",scale:"linear",default:1};var gi={min:ee,max:te,step:.05,unit:"x",label:"Speed",scale:"log",default:1};function ie(n){if(typeof n=="number")return Number.isFinite(n)?n:null;if(typeof n=="string"&&n.trim()!==""){let e=Number(n);return Number.isFinite(e)?e:null}return null}function _i(n){let e=ie(n);return e===null||e===0?0:Math.min(1,Math.max(-1,e))}function Gt(n,e){let t=ie(n),i=ie(e);if(t===null||i===null)return null;let r=s=>Math.min(.999,Math.max(.001,s)),o=r(t),a=r(i);return Math.abs(o-a)<1e-6?null:{x:o,y:a}}function yi(n){let e=_i(n?.curve),t=Gt(n?.viaX,n?.viaY);return{...e?{curve:e}:{},...t?{viaX:t.x,viaY:t.y}:{}}}function vi(n,e){let t=ie(n?.t),i=ie(n?.v);if(t===null||i===null)return null;let r=e?Math.min(e.max,Math.max(e.min,i)):i;return{t:Math.max(0,t),v:r,...yi(n)}}function Si(n,e){let t=n.map(r=>vi(r,e)).filter(r=>r!==null).sort((r,o)=>r.t-o.t),i=[];for(let r of t)i.length>0&&i[i.length-1].t===r.t?i[i.length-1]=r:i.push(r);return i.slice(0,fi)}function Ai(n){let e=[];for(let t of n.lanes){if(!$t(t.target))continue;let i=t.target===Re?bi:t.target===xe?gi:null,r=Si(t.points??[],i);r.length>0&&e.push({target:t.target,points:r})}return{version:Ze,lanes:e}}function zt(n){let e;try{e=JSON.parse(n)}catch(r){throw new L(`Automation is not valid JSON: ${r.message}`)}if(typeof e!="object"||e===null)throw new L("Automation must be a JSON object.");let t=e;if(t.version!==Ze)throw new L(`Unsupported automation version: ${String(t.version)}`);if(!Array.isArray(t.lanes))throw new L("Automation is missing a `lanes` array.");let i=t.lanes.map((r,o)=>{if(typeof r!="object"||r===null)throw new L(`Lane ${o} is not an object.`);let a=r;if(typeof a.target!="string"||!$t(a.target))throw new L(`Lane ${o} has an unreadable target: ${String(a.target)}`);if(!Array.isArray(a.points))throw new L(`Lane ${o} is missing a \`points\` array.`);return{target:a.target,points:a.points}});return Ai({version:Ze,lanes:i})}function Ei(n,e){return e?Math.pow(n,Math.pow(2,2*e)):n}function Ti(n,e){let t=n-.5,i=e-.5,r=.999,o=1e6,a=t>0?t/(r-n):t<0?-t/(n-(1-r)):0,s=i>0?i/(r-e):i<0?-i/(e-(1-r)):0,l=Math.min(o,Math.max(1,a,s));return{cx:n+t/l,cy:e+i/l,w:l}}function Ri(n,e,t){let{cx:i,cy:r,w:o}=Ti(e,t),a=2-2*o,s=n*a-1+2*o*i,l=-n*a-2*o*i,u=xi(s,l,n),c=1-u,f=c*c+2*o*u*c+u*u;return f>0?(2*o*r*u*c+u*u)/f:n}function xi(n,e,t){if(Math.abs(n)<1e-12)return Math.abs(e)<1e-12?t:-t/e;let i=Math.sqrt(Math.max(0,e*e-4*n*t)),r=(-e+i)/(2*n),o=(-e-i)/(2*n),a=s=>s>=-1e-9&&s<=1+1e-9;return a(r)?Math.min(1,Math.max(0,r)):a(o)?Math.min(1,Math.max(0,o)):t}function wi(n,e){let t=Gt(e.viaX,e.viaY);return t?Ri(Math.min(1,Math.max(0,n)),t.x,t.y):Ei(n,e.curve)}function ki(n,e,t,i){return i==="log"&&n>0&&e>0?Math.exp(Math.log(n)+(Math.log(e)-Math.log(n))*t):n+(e-n)*t}function we(n,e,t="linear"){let i=n.points;if(i.length===0)return 0;let r=i[0];if(e<=r.t)return r.v;let o=i[i.length-1];if(e>=o.t)return o.v;let a=0,s=i.length-1;for(;s-a>1;){let f=a+s>>1;i[f].t<=e?a=f:s=f}let l=i[a],u=i[s],c=u.t-l.t;return c<=0?u.v:ki(l.v,u.v,wi((e-l.t)/c,l),t)}var ke=new Map,Mi=64;function jt(n,e=Re){let t=`${e}\0${n}`,i=ke.get(t);if(i!==void 0)return i;let r=null;try{r=zt(n).lanes.find(o=>o.target===e)??null}catch{r=null}return ke.size>Mi&&ke.clear(),ke.set(t,r),r}var qt=48,Yt=new WeakMap;function Ci(n){let e=n.points,t=e[0].v,i=e[e.length-1].v,r=[0],o=[0],a=l=>{let u=r[r.length-1];if(l<=u)return;let c=we(n,u,"log");r.push(l),o.push(o[o.length-1]+(c+we(n,l,"log"))/2*(l-u))},s=Math.max(0,e[0].t);a(s);for(let l=1;l<e.length;l+=1){let u=e[l-1].t,c=e[l].t;if(!(c<=0))for(let f=1;f<=qt;f+=1)a(Math.max(u,0)+(c-u)*f/qt)}return{ts:Float64Array.from(r),ss:Float64Array.from(o),firstRate:t,lastRate:i}}function Ii(n){let e=Yt.get(n);return e||(e=Ci(n),Yt.set(n,e)),e}function Di(n){return typeof n!="number"&&n.points.length>0}function Pi(n,e,t){let i=0,r=n.length-1;for(;r-i>1;){let o=i+r>>1;n[o]<=t?i=o:r=o}return e[i]+(e[r]-e[i])*(t-n[i])/(n[r]-n[i])}function Xt(n,e){if(typeof n=="number")return e/n;if(!Di(n))return e;let{ts:t,ss:i,firstRate:r,lastRate:o}=Ii(n),a=t.length-1;return e<=0?e/r:e>=i[a]?t[a]+(e-i[a])/o:Pi(i,t,e)}function Li(n){return n?jt(n,xe):null}function Kt(n,e){return Li(n)??e}var Mo=[{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"}),Io=Object.freeze([y.start,y.duration,y.trackIndex]),Do=Object.freeze([y.derivedEnd]),Po=Object.freeze([y.derivedEnd,y.legacyTrack]);function N(n){if(n==null||n.trim()==="")return null;let e=Number(n);return Number.isFinite(e)?e:null}var Qt=/^[A-Za-z0-9_.:-]+$/;function en(n,e){let t=n.charCodeAt(e);return t>=48&&t<=57}function Zt(n,e){let t=e;for(;t>=0&&en(n,t);)t--;return t}function Ni(n,e){let t=e;for(;t>=0&&(n[t]??"").trim()==="";)t--;return t}function Oi(n){let e=n.length-1;if(!en(n,e))return null;let t=Zt(n,e);return n[t]==="."&&(t=Zt(n,t-1)),t+1}function Fi(n){let e=Oi(n);if(e==null)return null;let t=Ni(n,e-1),i=n[t];if(i!=="+"&&i!=="-")return null;let r=n.slice(0,t).trim();if(!Qt.test(r))return null;let o=Number(n.slice(e));return Number.isFinite(o)?{refId:r,operator:i,magnitude:o}:null}function re(n){let e=(n??"").trim();if(!e)return null;let t=N(e);if(t!=null)return{kind:"absolute",value:t};if(Qt.test(e))return{kind:"reference",refId:e,offset:0};let i=Fi(e);return i?{kind:"reference",refId:i.refId,offset:i.operator==="-"?-i.magnitude:i.magnitude}:null}function x(n,e,t,i){n.push({code:e,attribute:t,value:i})}function Ui(n,e,t,i){if(e==null||e.trim()==="")return t.defaultStart===void 0?0:t.defaultStart;if(!n)return x(i,"invalid-start",y.start,e),null;if(n.kind==="absolute")return Math.max(0,n.value);let r=t.resolveReferenceEnd?.(n.refId);return r==null||!Number.isFinite(r)?(x(i,"unresolved-start-reference",y.start,e),null):Math.max(0,r+n.offset)}var Hi=1e-9;function Vi(n,e){return Math.abs(n-e)<=Hi}function Wi(n,e,t){let i=N(n);if(i==null){x(t,"deprecated-end",y.derivedEnd,n),x(t,"invalid-end",y.derivedEnd,n);return}if(e==null){x(t,"deprecated-end",y.derivedEnd,n);return}Vi(i,e)||(x(t,"deprecated-end",y.derivedEnd,n),x(t,"conflicting-end",y.derivedEnd,n))}function Bi(n,e,t){let i=N(n);return i==null||i<0?(x(t,"invalid-duration",y.duration,n),{duration:null,end:null,durationSource:"invalid"}):{duration:i,end:e==null?null:e+i,durationSource:"duration"}}function $i(n,e,t){x(t,"deprecated-end",y.derivedEnd,n);let i=N(n);return i==null?(x(t,"invalid-end",y.derivedEnd,n),{duration:null,end:null,durationSource:"invalid"}):e==null?{duration:null,end:i,durationSource:"legacy-end"}:i<e?(x(t,"end-before-start",y.derivedEnd,n),{duration:null,end:null,durationSource:"invalid"}):{duration:i-e,end:i,durationSource:"legacy-end"}}function Gi(n,e,t){let i=n.getAttribute(y.duration),r=n.getAttribute(y.derivedEnd);if(i==null)return r==null?{duration:null,end:null,durationSource:"missing"}:$i(r,e,t);let o=Bi(i,e,t);return r!=null&&Wi(r,o.end,t),o}function Jt(n,e,t,i){let r=N(n);return r==null||!Number.isInteger(r)?(x(i,"invalid-track-index",e,n),{trackIndex:0,trackSource:"invalid"}):{trackIndex:r,trackSource:t}}function zi(n,e){let t=n.getAttribute(y.trackIndex),i=n.getAttribute(y.legacyTrack);if(t==null&&i==null)return{trackIndex:0,trackSource:"default"};if(t==null&&i!=null)return x(e,"deprecated-layer",y.legacyTrack,i),Jt(i,y.legacyTrack,"legacy-layer",e);let r=Jt(t??"",y.trackIndex,"track-index",e);if(i==null)return r;x(e,"deprecated-layer",y.legacyTrack,i);let o=N(i);return o!=null&&o!==r.trackIndex&&x(e,"conflicting-layer",y.legacyTrack,i),r}function Je(n,e={}){let t=[],i=n.getAttribute(y.start),r=re(i),o=Ui(r,i,e,t),a=Gi(n,o,t),s=zi(n,t);return{startExpression:r,start:o,...a,...s,diagnostics:t}}function V(n){return N(n)}function Qe(n){return Ft(e=>n.getAttribute(e),P(n)?n.defaultPlaybackRate:1)}function ji(n){return Kt(n.getAttribute("data-automation"),Qe(n))}function et(n){return Ee(e=>n.getAttribute(e))}function oe(n,e){return qi(e,et(n),ji(n))}function tt(n){let e=Xe({tag:"video",authoredDurationSeconds:qe(t=>n.getAttribute(t)),sourceDurationSeconds:Number.isFinite(n.duration)?n.duration:null,mediaStartSeconds:et(n),playbackRate:Qe(n)});return e.source==="media"?oe(n,n.duration):e.seconds}function Me(n,e=0){return!Nt(n)||!n.hasAttribute("data-start")&&!n.hasAttribute("data-track-index")?null:Xe({tag:"img",authoredDurationSeconds:Ut(t=>n.getAttribute(t),e),sourceDurationSeconds:null,mediaStartSeconds:0,playbackRate:1}).seconds}function qi(n,e,t){return typeof t=="number"?Ye(n,e,t):Number.isFinite(n)?Xt(t,Math.max(0,n-e)):null}function tn(){return globalThis}function nt(n,e){if(typeof window>"u")return;let t=tn(),i=t.__hf?.onSwallowed;if(i)try{i({label:n,error:e})}catch(r){}(t.__hfDebug||t.__HYPERFRAMES_DEBUG)&&console.debug(`[hyperframes] ${n} swallowed:`,e)}var Yi=n=>n.paused?.()===!0?(n.startTime?.()??0)+(n.totalDuration?.()??0)/Math.abs(n.timeScale?.()||1):0;function ae(n){try{if(typeof n?.duration!="function")return null;let e=n.getChildren?.(!1,!1,!0),t=Array.isArray(e)?e:[],i=Math.max(Number(n.duration()),...t.map(Yi));return Number.isFinite(i)?i:null}catch(e){return nt("runtime.timelineDuration",e),null}}var nn="data-hf-authored-duration",rn="data-hf-authored-end";function se(n){if(n==null||typeof n=="string"&&n.trim()==="")return null;let e=typeof n=="number"?n:Number(n);return Number.isFinite(e)?e:null}function Ce(n){let e=se(n.start);if(e==null)return null;let t=Math.max(0,e),i=se(n.duration),r=se(n.authoredDuration),o=i!=null&&i>0?i:r!=null&&r>0?r:null;if(o!=null)return{start:t,duration:o,end:t+o};let a=se(n.end),s=se(n.authoredEnd),l=a!=null&&a>t?a:s!=null&&s>t?s:null;return{start:t,duration:l==null?null:l-t,end:l}}var G=Object.freeze({start:"data-start",duration:"data-duration",trackIndex:"data-track-index",derivedEnd:"data-end",legacyTrack:"data-layer"}),Yo=Object.freeze([G.start,G.duration,G.trackIndex]),Xo=Object.freeze([G.derivedEnd]),Ko=Object.freeze([G.derivedEnd,G.legacyTrack]);function Xi(n){if(n==null||n.trim()==="")return null;let e=Number(n);return Number.isFinite(e)?e:null}var on=n=>{let e=Xi(n);return e!==null&&e>=0?e:null};function Ki(n){return on(n("data-playback-start"))??on(n("data-media-start"))??0}var an="data-hf-media-start-basis";function sn(n){return n?.trim().toLowerCase()==="global"?"global":"local"}function Zi(n){return sn(n.basis)==="global"?n.authoredStart:n.hostStart+n.authoredStart}function ln(n){return dn(n)?Zi({authoredStart:n.authoredStart,hostStart:n.hostStart,basis:n.basis}):n.ordinaryStart()}function un(n){return dn(n)&&sn(n.basis)==="global"}function dn(n){return!n.hasAutoStart&&n.authoredStart!=null&&n.hostStart!==0}function it(n){return Ki(e=>n.getAttribute(e))}function cn(n,e){return n-it(e)}function le(n){let e=n.timelineRegistry??{},t=n.includeAuthoredTimingAttrs??!1,i=n.documentRef??document,r=new WeakMap,o=new WeakMap,a=new Set,s=d=>(d.hasAttribute("data-composition-id")?d.parentElement:d)?.closest("[data-composition-id]")??null,l=(d,h)=>{let g=s(h);if(g){for(let k of g.querySelectorAll(`[id="${d}"]`))if(s(k)===g)return k}let R=i.getElementById(d);return R||(Array.from(i.querySelectorAll("[data-composition-id]")).find(k=>k.getAttribute("data-composition-id")===d)??null)},u=(d,h)=>t?d.getAttribute(h):null,c=d=>Ce({start:0,duration:d.getAttribute("data-duration"),authoredDuration:u(d,"data-hf-authored-duration")})?.duration??Ce({start:T(d,0),end:d.getAttribute("data-end"),authoredEnd:u(d,"data-hf-authored-end")})?.duration??null,f=d=>d!=null&&Number.isFinite(d)&&d>0?d:null,v=d=>{let h=d.getAttribute("data-composition-id");return h?f(ae(e[h])):null},b=d=>{let h=o.get(d);if(h!==void 0)return h;let g=c(d)??f(P(d)?oe(d,d.duration):null)??f(Me(d))??v(d);return o.set(d,g),g},S="[data-composition-src], [data-composition-id], [data-composition-file]",_=d=>d.matches(S),A=d=>!d.hasAttribute("data-composition-id")||re(d.getAttribute("data-start"))?null:d.parentElement?.closest(`[data-start], ${S}`)??null,C=(d,h)=>cn(T(d,h),A(d)??d),M=(d,h)=>{let g=d.hasAttribute("data-composition-id")?d.parentElement?.closest("[data-composition-id]"):d.closest("[data-composition-id]");return g?C(g,h):0},I=(d,h)=>{let g=re(d.getAttribute("data-start"));if(!g){let H=A(d);return H?T(H,h):h}if(g.kind==="absolute")return M(d,h)+Math.max(0,g.value);let R=l(g.refId,d);if(!R)return h;let k=T(R,0),ye=b(R)??0,ve=Math.min(0,M(d,0));return Math.max(ve,k+ye+g.offset)},T=(d,h)=>{let g=r.get(d);if(g!==void 0)return g??h;if(a.has(d))return h;a.add(d);try{let R=I(d,h);return r.set(d,R),R}finally{a.delete(d)}},U=d=>{let h=d.closest("[data-composition-id]");return{authoredStart:V(d.getAttribute("data-start")),hostStart:h?C(h,0):0,hasAutoStart:d.hasAttribute("data-hf-auto-start"),basis:d.getAttribute(an)}};return{resolveStartForElement:(d,h=0)=>T(d,Math.max(0,h)),resolveDurationForElement:d=>b(d),resolveMediaStartForElement:d=>{let h=U(d);return ln({...h,ordinaryStart:()=>T(d,h.hostStart)})},resolveHostStartForElement:d=>M(d,0),resolveHostSlotsForElement:d=>{let h=[];for(let g=d.parentElement;g;g=g.parentElement){if(!_(g)||A(g)||it(g)<=0)continue;let R=T(g,0),k=c(g);h.push({start:R,end:k?R+k:1/0})}return h},isRootGlobalMediaStartForElement:d=>P(d)&&un(U(d))}}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,rt=1/60,ue=n=>n!==null&&n>rt?n:null;function Ji(n){return{width:Ae(n.getAttribute("data-width")),height:Ae(n.getAttribute("data-height"))}}function Qi(n,e){let t=null;for(let i of n.querySelectorAll("video[data-start], audio[data-start]")){let r=e.mediaStart(i);if(!Number.isFinite(r))continue;let o=e.mediaDuration(i);if(o==null||o<=rt)continue;let a=Math.max(0,r)+o;(!t||a>t.seconds)&&(t={seconds:a,element:i})}return t&&ue(t.seconds)!==null?t:null}function er(n,e){return Qi(n,e)?.seconds??null}function tr(n,e){let t=[];for(let r of n.querySelectorAll("[data-composition-id][data-start]")){if(r.parentElement?.closest("[data-composition-id]")!==n)continue;let o=e.resolveStartForElement(r,0),a=e.resolveDurationForElement(r);!Number.isFinite(o)||a==null||a<=0||t.push(Math.max(0,o)+a)}let i=V(n.getAttribute("data-duration"));return ue(Be({authoredDurationSeconds:null,clipEndsSeconds:[i,...t]}).seconds)}var nr=n=>n.hasAttribute("data-composition-id")||n.hasAttribute("data-composition-src");function ir(n,e,{unregisteredLottie:t}){let i=[];for(let o of n.querySelectorAll("[data-start]")){let a=e.resolveStartForElement(o,0);if(!Number.isFinite(a))continue;let s=e.resolveDurationForElement(o);s!=null?i.push(Math.max(0,a)+s):(P(o)||nr(o))&&i.push(null)}(t||n.querySelector("[data-lottie-src]"))&&i.push(null);let r=Be({authoredDurationSeconds:null,clipEndsSeconds:i});return r.pendingClips>0?{...r,seconds:null,source:"unresolved",reason:"a clip's length is pending"}:r}function rr(n){return or(n).seconds}function or(n){if(n.declared!==null&&Number.isFinite(n.declared)&&n.declared>0)return{seconds:n.declared,from:"declared",floorIndex:null};let e=ue(n.timeline()),t=n.floors().map(f=>f??0),i=Math.max(0,...t),r=Number.isFinite(n.fallback)&&n.fallback>rt?n.fallback:0,o=Math.max(i,r),s=e!==null&&e>=pn&&ue(o)!==null?null:e,l=i>=r,u=f=>({seconds:f,from:l?"floor":"fallback",floorIndex:l?t.indexOf(i):null});if(s!==null)return s>=o?{seconds:s,from:"timeline",floorIndex:null}:u(o);if(ue(i)!==null)return u(o);if(r>0)return{seconds:r,from:"fallback",floorIndex:null};let c=n.derived();return{seconds:c>0?c:0,from:"derived",floorIndex:null}}function fn(n){let e=Q(n);if(!e)return null;let t=le({timelineRegistry:{},includeAuthoredTimingAttrs:!0,documentRef:n}),i=rr({declared:V(e.getAttribute("data-duration")),timeline:()=>null,floors:()=>[er(n,{mediaStart:t.resolveMediaStartForElement,mediaDuration:tt}),tr(e,t)],fallback:0,derived:()=>ir(e,t,{unregisteredLottie:!1}).seconds??0});return{...Ji(e),fps:mn().canonicalFps,durationSeconds:i}}var hn="hyperframes-studio-preview";var bn="__hfPreviewErrors";function gn(n){return n.hasRuntime||n.runtimeInjected?!1:!!(n.hasNestedCompositions||n.hasTimelines&&n.attempts>=5)}function z(n){return typeof n=="object"&&n!==null}function _n(n){return z(n)&&typeof n.getDuration=="function"}function yn(n){return z(n)&&typeof n.duration=="function"&&typeof n.time=="function"&&typeof n.seek=="function"&&typeof n.play=="function"&&typeof n.pause=="function"}var j="https://cdn.jsdelivr.net/npm/@hyperframes/core@0.8.225/dist/hyperframe.runtime.iife.js";function de(n){if(n===null)return null;let e=Number.parseInt(n,10);return Number.isFinite(e)&&e>0?e:null}function ar(n){let e=n?.querySelector("[data-composition-id][data-width][data-height]")??n?.querySelector("[data-width][data-height]");if(!e)return null;let t=de(e.getAttribute("data-width")),i=de(e.getAttribute("data-height"));return t!==null&&i!==null?{width:t,height:i}:null}function sr(n){return Array.isArray(n)?n.find(e=>typeof e=="string"&&e.trim()!==""&&e!=="[object Event]")??null:null}var Ie=class{constructor(e,t){this._iframe=e;this._callbacks=t}_iframe;_callbacks;_interval=null;_runtimeInjected=!1;_runtimeScript=null;_failure=null;get failed(){return this._failure!==null&&this._failure.document===this._iframe.contentDocument}get runtimeInjected(){return this._runtimeInjected}start(){this.stop(),this._failure=null,this._runtimeInjected=!1;let e=0;this._interval=setInterval(()=>{e++;let t=null;try{t=this._poll(e)}catch(i){i instanceof DOMException&&i.name==="SecurityError"||(t={kind:"error",message:i instanceof Error?i.message:String(i)})}t??=this._deadlineOutcome(e),t&&(this.stop(),t.kind==="error"?(this._failure={document:this._iframe.contentDocument},this._callbacks.onError(t.message)):this._callbacks.onReady(t.result))},200)}_deadlineOutcome(e){return e<40||this._callbacks.hostOwnsDeadline?.()?null:{kind:"error",message:"Composition timeline not found after 8s"}}_poll(e){let t=this._iframe.contentWindow;if(!t)return null;let i=sr(Reflect.get(t,bn));if(i!==null)return{kind:"error",message:i};let r=this._iframe.contentDocument,o=Reflect.get(t,"__timelines"),a=this.hasRuntimeBridge(t);if(gn({hasRuntime:a,hasTimelines:z(o)&&Object.keys(o).length>0,hasNestedCompositions:!!r?.querySelector("[data-composition-src]"),runtimeInjected:this._runtimeInjected,attempts:e}))return this._injectRuntime(),null;if(this._runtimeInjected&&!a)return null;let s=this._resolveReadyResult(t,r);return s?{kind:"ready",result:s}:null}_resolveReadyResult(e,t){let i=this._resolvePlaybackDurationAdapter(e)??{kind:"document",getDuration:()=>0},r=i.getDuration();if(!Number.isFinite(r)||r<=0){if(i.kind==="direct-timeline")return null;r=t?fn(t)?.durationSeconds??0:0}return r<=0?null:{duration:r,adapter:{...i,getDuration:()=>r},compositionSize:ar(t)}}stop(){this._runtimeScript&&(this._runtimeScript.onerror=null,this._runtimeScript=null),this.failed||(this._failure=null),this._interval!==null&&(clearInterval(this._interval),this._interval=null)}resolveDirectTimelineAdapter(){try{let e=this._iframe.contentWindow;return e?this._resolveDirectTimelineAdapterFromWindow(e):null}catch{return null}}resolveDirectTimelineAdapterFromWindow(e){return this._resolveDirectTimelineAdapterFromWindow(e)}hasRuntimeBridge(e){return z(Reflect.get(e,"__player"))}_injectRuntime(){this._runtimeInjected=!0;try{let e=this._iframe.contentDocument;if(!e)return;let t=e.createElement("script");t.src=this._callbacks.resolveRuntimeUrl?.()??j,this._runtimeScript=t,t.onerror=()=>{this._runtimeScript!==t||this._iframe.contentDocument!==e||(this.stop(),this._failure={document:e},this._callbacks.onError("HyperFrames runtime failed to load from "+t.src))},(e.head||e.documentElement).appendChild(t),this._callbacks.onRuntimeInjected?.()}catch{}}_resolveDirectTimelineAdapterFromWindow(e){if(this.hasRuntimeBridge(e))return null;let t=Reflect.get(e,"__timelines");if(!z(t))return null;let i=Object.keys(t);if(i.length===0)return null;let r=this._iframe.contentDocument?.querySelector("[data-composition-id]")?.getAttribute("data-composition-id"),o=r&&r in t?r:i[i.length-1],a=t[o];return yn(a)?a:null}_resolvePlaybackDurationAdapter(e){let t=Reflect.get(e,"__player");if(_n(t))return{kind:"runtime",getDuration:()=>t.getDuration()};let i=this._resolveDirectTimelineAdapterFromWindow(e);return i?{kind:"direct-timeline",timeline:i,getDuration:()=>i.duration()}:null}};var vn=`
2
2
  :host {
3
3
  display: block;
4
4
  position: relative;
@@ -474,5 +474,5 @@ import{c as Se,d as It}from"./chunk-BVU3Q3TA.js";var Dt=n=>n!==null&&Number.isFi
474
474
  background: var(--hfp-accent, #fff);
475
475
  pointer-events: none;
476
476
  }
477
- `,vn='<svg width="24" height="24" viewBox="46 21 54 56" fill="currentColor"><path d="M87.5129 57.5141L56.9696 73.5433C52.8371 75.7098 48.7046 73.2553 49.6688 69.2104L58.9483 30.1391C59.9125 26.0942 65.2097 23.6397 68.3154 25.8062L91.2447 41.8354C96.4668 45.4796 94.4631 53.8699 87.5129 57.5141Z"/></svg>',Sn='<svg width="24" height="24" viewBox="0 0 18 18" fill="currentColor"><rect x="3" y="2" width="4" height="14"/><rect x="11" y="2" width="4" height="14"/></svg>',rt='<svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor"><path d="M3 9v6h4l5 5V4L7 9H3z"/><path d="M16.5 12c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02z"/><path d="M14 3.23v2.06c2.89.86 5 3.54 5 6.71s-2.11 5.85-5 6.71v2.06c4.01-.91 7-4.49 7-8.77s-2.99-7.86-7-8.77z"/></svg>',ot='<svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor"><path d="M3 9v6h4l5 5V4L7 9H3z"/><path d="M16.5 12c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02z"/></svg>',An='<svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor"><path d="M3 9v6h4l5 5V4L7 9H3z"/><path d="M16.5 12c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02z" opacity="0.3"/><line x1="18" y1="7" x2="14" y2="17" stroke="currentColor" stroke-width="2"/></svg>';var En=[.25,.5,1,1.5,2,4];function q(n){return Number.isInteger(n)?`${n}x`:`${n}x`}function at(n){if(!Number.isFinite(n)||n<0)return"0:00";let e=Math.floor(n),t=Math.floor(e/60),i=e%60;return`${t}:${i.toString().padStart(2,"0")}`}function Tn(n,e,t={}){let i=t.speedPresets??En,r=document.createElement("div");r.className="hfp-controls",r.addEventListener("click",m=>{m.stopPropagation()});let o=document.createElement("button");o.className="hfp-play-btn",o.type="button",o.innerHTML=`<span class="hfp-ico hfp-ico-play">${vn}</span><span class="hfp-ico hfp-ico-pause">${Sn}</span>`,o.setAttribute("aria-label","Play");let a=document.createElement("div");a.className="hfp-scrubber";let s=document.createElement("div");s.className="hfp-progress",s.style.width="0%",a.appendChild(s);let l=document.createElement("span");l.className="hfp-time",l.textContent="0:00 / 0:00";let u=document.createElement("div");u.className="hfp-speed-wrap";let c=document.createElement("button");c.className="hfp-speed-btn",c.type="button",c.textContent="1x",c.setAttribute("aria-label","Playback speed: 1x");let h=document.createElement("div");h.className="hfp-speed-menu",h.setAttribute("role","menu");for(let m of i){let p=document.createElement("button");p.className="hfp-speed-option",p.type="button",p.setAttribute("role","menuitem"),p.dataset.speed=String(m),p.textContent=q(m),m===1&&p.classList.add("hfp-active"),h.appendChild(p)}u.appendChild(h),u.appendChild(c);let v=document.createElement("div");v.className="hfp-volume-wrap";let b=document.createElement("button");b.className="hfp-mute-btn",b.type="button",b.innerHTML=rt,b.setAttribute("aria-label","Mute");let S=document.createElement("div");S.className="hfp-volume-slider-wrap";let _=document.createElement("div");_.className="hfp-volume-slider",_.setAttribute("role","slider"),_.setAttribute("aria-label","Volume"),_.setAttribute("aria-valuemin","0"),_.setAttribute("aria-valuemax","100"),_.setAttribute("aria-valuenow","100"),_.tabIndex=0;let A=document.createElement("div");A.className="hfp-volume-fill",A.style.width="100%",_.appendChild(A),S.appendChild(_),v.appendChild(S),v.appendChild(b),t.audioLocked&&(v.style.display="none"),r.appendChild(o),r.appendChild(a),r.appendChild(l),r.appendChild(v),r.appendChild(u),n.appendChild(r);let C=!1,M=!1,I=1,T=null,U=i.indexOf(1);U===-1&&(U=0);let Z=(m,p)=>m?An:p===0?ot:p<.5?ot:rt;o.addEventListener("click",m=>{m.stopPropagation(),C?e.onPause():e.onPlay()}),b.addEventListener("click",m=>{m.stopPropagation(),e.onMuteToggle()});let O=!1,J=m=>{let p=_.getBoundingClientRect(),E=Math.max(0,Math.min(1,(m-p.left)/p.width));I=E,A.style.width=`${E*100}%`,_.setAttribute("aria-valuenow",String(Math.round(E*100))),M&&E>0&&e.onMuteToggle(),b.innerHTML=Z(M,E),e.onVolumeChange(E)};_.addEventListener("mousedown",m=>{m.stopPropagation(),O=!0,J(m.clientX)});let d=m=>{O&&J(m.clientX)},f=()=>{O=!1};document.addEventListener("mousemove",d),document.addEventListener("mouseup",f),_.addEventListener("touchstart",m=>{O=!0;let p=m.touches[0];p&&J(p.clientX)},{passive:!0});let g=m=>{if(O){let p=m.touches[0];p&&J(p.clientX)}},R=()=>{O=!1};document.addEventListener("touchmove",g,{passive:!0}),document.addEventListener("touchend",R);let k=.05;_.addEventListener("keydown",m=>{let p=I;if(m.key==="ArrowRight"||m.key==="ArrowUp")p=Math.min(1,I+k);else if(m.key==="ArrowLeft"||m.key==="ArrowDown")p=Math.max(0,I-k);else return;m.preventDefault(),m.stopPropagation(),I=p,A.style.width=`${p*100}%`,_.setAttribute("aria-valuenow",String(Math.round(p*100))),M&&p>0&&e.onMuteToggle(),b.innerHTML=Z(M,p),e.onVolumeChange(p)});let ye=m=>{for(let p of h.querySelectorAll(".hfp-speed-option"))p.classList.toggle("hfp-active",p.dataset.speed===String(m))};c.addEventListener("click",m=>{m.stopPropagation();let p=h.classList.toggle("hfp-open");c.setAttribute("aria-expanded",String(p))}),h.addEventListener("click",m=>{m.stopPropagation();let p=m.target.closest(".hfp-speed-option");if(!p)return;let E=parseFloat(p.dataset.speed);U=i.indexOf(E),c.textContent=q(E),c.setAttribute("aria-label",`Playback speed: ${q(E)}`),ye(E),h.classList.remove("hfp-open"),c.setAttribute("aria-expanded","false"),e.onSpeedChange(E)});let ve=()=>{h.classList.remove("hfp-open"),c.setAttribute("aria-expanded","false")};document.addEventListener("click",ve);let H=m=>{let p=a.getBoundingClientRect(),E=Math.max(0,Math.min(1,(m-p.left)/p.width));e.onSeek(E)},D=!1;a.addEventListener("mousedown",m=>{m.stopPropagation(),D=!0,e.onScrubStart?.(),H(m.clientX)});let Tt=m=>{D&&H(m.clientX)},Rt=()=>{D&&(D=!1,e.onScrubEnd?.())};document.addEventListener("mousemove",Tt),document.addEventListener("mouseup",Rt),a.addEventListener("touchstart",m=>{D=!0,e.onScrubStart?.();let p=m.touches[0];p&&H(p.clientX)},{passive:!0});let xt=m=>{if(D){let p=m.touches[0];p&&H(p.clientX)}},wt=()=>{D&&(D=!1,e.onScrubEnd?.())};document.addEventListener("touchmove",xt,{passive:!0}),document.addEventListener("touchend",wt);let kt=()=>C&&!D&&!O&&!r.querySelector(":focus-visible"),Mt=()=>{r.classList.remove("hfp-hidden"),T&&clearTimeout(T),T=setTimeout(()=>{kt()&&r.classList.add("hfp-hidden")},3e3)},F=n instanceof ShadowRoot?n.host:n,B=()=>Mt(),Ct=()=>{kt()&&r.classList.add("hfp-hidden")};return F.addEventListener("mousemove",B),F.addEventListener("keydown",B),F.addEventListener("focusin",B),F.addEventListener("mouseleave",Ct),{updateTime(m,p){let E=p>0?Math.min(m,p):m,ai=p>0?E/p*100:0;s.style.width=`${ai}%`,l.textContent=`${at(E)} / ${at(p)}`},updatePlaying(m){let p=m!==C;C=m,o.classList.toggle("hfp-playing",m),o.setAttribute("aria-label",m?"Pause":"Play"),m?p&&Mt():(T&&clearTimeout(T),r.classList.remove("hfp-hidden"))},updateSpeed(m){let p=i.indexOf(m);p!==-1&&(U=p),c.textContent=q(m),c.setAttribute("aria-label",`Playback speed: ${q(m)}`),ye(m)},updateMuted(m){M=m,b.innerHTML=Z(m,I),b.setAttribute("aria-label",m?"Unmute":"Mute")},updateVolume(m){I=m,A.style.width=`${m*100}%`,_.setAttribute("aria-valuenow",String(Math.round(m*100))),b.innerHTML=Z(M,m)},setVolumeControlsHidden(m){v.style.display=m?"none":""},show(){r.style.display=""},hide(){r.style.display="none"},destroy(){document.removeEventListener("mousemove",Tt),document.removeEventListener("mouseup",Rt),document.removeEventListener("touchmove",xt),document.removeEventListener("touchend",wt),document.removeEventListener("mousemove",d),document.removeEventListener("mouseup",f),document.removeEventListener("touchmove",g),document.removeEventListener("touchend",R),document.removeEventListener("click",ve),F.removeEventListener("mousemove",B),F.removeEventListener("keydown",B),F.removeEventListener("focusin",B),F.removeEventListener("mouseleave",Ct),T&&clearTimeout(T),r.remove()}}}function Rn(n,e,t,i,r,o=!1){let a=i?i.split(",").map(Number).filter(u=>!isNaN(u)&&u>0):void 0,s={...a?{speedPresets:a}:{},audioLocked:o},l=Tn(n,r,s);return l.updateMuted(e),l.updateVolume(t),l}function st(n,e,t){return e?(t||(t=document.createElement("img"),t.className="hfp-poster",n.appendChild(t)),t.src=e,t):(t?.remove(),null)}function xn(n){return n.composedPath().some(e=>e instanceof HTMLElement&&e.classList.contains("hfp-controls"))}var De=null;function wn(n,e){if(typeof CSSStyleSheet<"u")try{De||(De=new CSSStyleSheet,De.replaceSync(e)),n.adoptedStyleSheets=[De];return}catch{}let t=document.createElement("style");t.textContent=e,n.appendChild(t)}function kn(){let n=document.createElement("div");n.className="hfp-container";let e=document.createElement("iframe");return e.className="hfp-iframe",e.sandbox.add("allow-scripts","allow-same-origin"),e.allow="autoplay; fullscreen",e.referrerPolicy="no-referrer",e.title="HyperFrames Composition",n.appendChild(e),{container:n,iframe:e}}function Mn(n,e,t,i){let r=n.offsetWidth,o=n.offsetHeight;if(r===0||o===0)return!1;let a=Math.min(r/t,o/i);return e.style.width=`${t}px`,e.style.height=`${i}px`,e.style.transform=`translate(-50%, -50%) scale(${a})`,!0}function sr(n,e,t){if(t.end<=0)return!1;let i=t.shown<t.end&&e>0?e+.001:0;return n+i>=t.end}var Pe=class{constructor(e){this._callbacks=e}_callbacks;_raf=null;_lastUpdateMs=0;_tick=null;start(e,t,i,r,o){this.stop();let a=null,s=0,l=0,u=()=>{if(r()){this._raf=null;return}let c;try{c=e.time()}catch{this._raf=null;return}let h=i(),v=o();v.end>0&&(c=Math.min(c,v.end));let b=a===null?0:c-a;b!==0&&(l=Math.min(b,s),s=b),a=c;let S=sr(c,l,v);S&&(c=v.shown);let _=performance.now();if((_-this._lastUpdateMs>100||S)&&(this._lastUpdateMs=_,this._callbacks.onTimeUpdate(c,h)),S){if(this._callbacks.getLoop()){this._callbacks.restart();return}try{e.pause(),v.shown<v.end&&e.seek(v.shown,!1)}catch{}this._callbacks.onPaused(),this._raf=null;return}this._raf=requestAnimationFrame(u)};this._tick=u,this._raf=requestAnimationFrame(u)}poll(){this._raf===null||!this._tick||(cancelAnimationFrame(this._raf),this._tick())}stop(){this._raf!==null&&(cancelAnimationFrame(this._raf),this._raf=null)}get isRunning(){return this._raf!==null}};function Cn(n){let e=Array.from(n.querySelectorAll("[data-composition-id]"));if(e.length===0)return n.body?[n.body]:[];let t=[];for(let i of e)ur(i)||t.push(i);return lr(n),t}function lr(n){let e=n.body;if(!e||typeof console>"u"||typeof console.warn!="function")return;let t=e.querySelectorAll("audio[data-start], video[data-start]");if(t.length===0)return;let i=[];for(let r of t)r.closest("[data-composition-id]")||i.push(r);i.length!==0&&console.warn(`[hyperframes-player] selectMediaObserverTargets: composition hosts are present, but ${i.length} body-level timed media element(s) sit outside every [data-composition-id] subtree and will not be observed. Move them inside a composition host or the parent-frame proxy will never adopt them.`,i)}function ur(n){let e=n.parentElement;for(;e;){if(e.hasAttribute("data-composition-id"))return!0;e=e.parentElement}return!1}var dr=["backdrop-filter","clip-path","filter","mask","mask-border-source","mask-image","perspective","rotate","scale","transform","translate","-webkit-mask-image"],Va=new Set([...dr,"contain","isolation","mask-border","mix-blend-mode","opacity"]);var In=n=>4*Number.EPSILON*Math.max(1,Math.abs(n));function Le(n,e){return!Number.isFinite(n)||!Number.isFinite(e)?n===e:Math.abs(n-e)<=In(Math.max(Math.abs(n),Math.abs(e)))}var Dn=(n,e)=>n>=e||Le(n,e),lt=(n,e,t)=>Dn(n,e)&&n<t&&!Le(n,t),cr=1e-6,Pn=(n,e,t,i)=>lt(n,e,t)||Dn(n,e)&&i>0&&t>=i-cr;function mr(n){return Number.isFinite(n)&&n>0?n:30}function pr(n){return Number.isFinite(n)&&n>0?n:0}function Ln(n,e){let t=mr(e),i=pr(n),r=i*t,o=Math.round(r);return Math.abs(r-o)<=.001?o/t:i}function Nn(n,e,t){return{start:Ln(n,t),end:Number.isFinite(e)?Ln(e,t):e}}var fr=["seconds-time","rational-fps","seek-keep-playing","composition-manifest-v1","runtime-data","play-range"];function hr(n,e){let t=Math.abs(n),i=Math.abs(e);for(;i!==0;){let r=t%i;t=i,i=r}return t||1}function br(n){let e=Number.isFinite(n)&&n>0?n:30,t=Math.abs(e*1001-Math.round(e*1001))<1e-6,i=Number.isInteger(e)?1:t?1001:1e6,r=Math.round(e*i),o=hr(r,i);return{numerator:r/o,denominator:i/o}}function On(n,e,t){return Math.max(n,(Math.ceil(e*t-1e-6)-1)/t)}function gr(n){if(typeof n!="object"||n===null)return null;let e=n;return!Number.isFinite(e.numerator)||!Number.isFinite(e.denominator)||(e.numerator??0)<=0||(e.denominator??0)<=0?null:Number(e.numerator)/Number(e.denominator)}function ut(n){return{protocolVersion:1,capabilities:fr,fps:br(n)}}function Fn(n){let e=n.offsetWidth,t=n.getBoundingClientRect().width;return e>0&&t>0?t/e:null}function _r(n){return Array.isArray(n)&&n.every(e=>typeof e=="string")}function Un(n,e=30){if(typeof n!="object"||n===null)return{status:"legacy",fps:e};let t=n;if(t.protocolVersion===void 0)return{status:"legacy",fps:e};if(t.protocolVersion!==1)return{status:"unsupported",code:"unsupported_protocol_version",receivedVersion:t.protocolVersion};let i=gr(t.fps);return i===null||!_r(t.capabilities)?{status:"unsupported",code:"invalid_protocol_metadata",receivedVersion:t.protocolVersion}:{status:"supported",fps:i,metadata:t}}function yr(n,e){let t=n.tagName.toLowerCase();if(t==="script"||t==="style"||t==="link"||t==="meta")return null;let r=t==="video"||t==="audio"?e.resolver.resolveMediaStartForElement(n):e.resolver.resolveStartForElement(n,0),o=e.resolver.resolveDurationForElement(n),a=n.getAttribute("data-composition-id");if(a){let l=e.timelineRegistry[a],u=ae(l);!(n.hasAttribute("data-duration")||n.hasAttribute("data-end")||n.hasAttribute(tn)||n.hasAttribute(nn))&&(o==null||o<=0)&&u!=null&&u>0&&(o=u)}let s=a!==null&&n===Q(n.ownerDocument);return{start:r,end:!s&&o!=null&&o>0?r+o:Number.POSITIVE_INFINITY}}function Hn(n,e){let t=yr(n,e);if(!t)return!1;let i=e.exportRenderSeek?Nn(t.start,t.end,e.canonicalFps):t;return Pn(e.currentTime,i.start,i.end,e.compositionDuration)}var Y="first-frame",vr=3;function ce(n){let e=n.ownerDocument?.defaultView;return e&&n instanceof e.Element?!0:n instanceof Element}function w(n){if(!ce(n)||n.tagName!=="AUDIO"&&n.tagName!=="VIDEO")return!1;let e=n.ownerDocument?.defaultView;return e&&n instanceof e.HTMLMediaElement?!0:n instanceof HTMLMediaElement}function Sr(n){return n.hasAttribute("data-start")||n.hasAttribute("data-track-index")}function Ar(n,e,t){let i=n;for(;i;){if(Sr(i)&&!Hn(i,{currentTime:0,compositionDuration:Number.POSITIVE_INFINITY,canonicalFps:30,exportRenderSeek:!1,timelineRegistry:t,resolver:e}))return!1;i=i.parentElement}return!0}function Vn(n,e,t,i){return e==="all"?!0:Ar(n,t,i)}function Ne(n,{scope:e="all"}={}){let t=n.defaultView,i=le({documentRef:n,timelineRegistry:t?.__timelines,includeAuthoredTimingAttrs:!0}),r=n.querySelector(`meta[name="${fn}"]`)!==null,o=Array.from(n.querySelectorAll("video, audio")).filter(w).filter(l=>Vn(l,r&&l.preload!=="auto"?Y:e,i,t?.__timelines??{})).filter(l=>l.readyState<vr),a=Array.from(n.querySelectorAll("img")).filter(l=>Vn(l,l.getAttribute("loading")?.toLowerCase()==="lazy"?Y:e,i,t?.__timelines??{})).filter(l=>!l.complete),s=n.fonts?.status==="loading";return{pendingMedia:o,pendingImages:a,fontsLoading:s}}function Er(n,{pendingMedia:e,pendingImages:t,fontsLoading:i},r){let o=e.map(l=>new Promise(u=>{if(l.error){u();return}let c=()=>{l.removeEventListener("canplay",c),l.removeEventListener("error",c),r.removeEventListener("abort",c),u()};l.addEventListener("canplay",c),l.addEventListener("error",c),r.addEventListener("abort",c,{once:!0})})),a=t.map(l=>l.decode?l.decode().catch(()=>{}):Promise.resolve()),s=i&&n.fonts?n.fonts.ready.then(()=>{}):Promise.resolve();return Promise.all([...o,...a,s]).then(()=>{})}function Tr(n,e,{scope:t="all"}={}){let i=Ne(n,{scope:t});return i.pendingMedia.length===0&&i.pendingImages.length===0&&!i.fontsLoading?null:Er(n,i,e)}var Rr=50;function xr(n,e){let t=n.defaultView;return!t||t.__renderReady||!t.__hf?null:new Promise(i=>{let r,o=()=>{r!==void 0&&clearTimeout(r),e.removeEventListener("abort",o),i()};if(e.aborted){o();return}e.addEventListener("abort",o,{once:!0});let a=()=>{if(t.__renderReady){o();return}r=setTimeout(a,Rr)};a()})}var wr=50,kr=1.5,Mr=2,Cr=1500;function dt(n,e){return new Promise(t=>{if(e.aborted){t(-1);return}let i=0,r=()=>{n.cancelAnimationFrame?.(i),t(-1)};e.addEventListener("abort",r,{once:!0}),i=n.requestAnimationFrame(o=>{e.removeEventListener("abort",r),t(o)})})}function Ir(n,e){let t=n.defaultView;return t?(async()=>{let i=await dt(t,e);if(e.aborted)return;let r=await dt(t,e),o=r-i,a=0;for(;!e.aborted&&a<Mr;){if(r-i>=Cr)return;let s=await dt(t,e);if(e.aborted)return;let l=s-r;o=Math.min(o,l),a=l<wr||l<=o*kr?a+1:0,r=s}})():null}var Dr=8e3;function Pr(n,e,t={}){let i=t.inputs??[(u,c)=>Tr(u,c,{scope:t.scope}),xr,Ir],r=new AbortController,o=i.map(u=>u(n,r.signal)).filter(u=>u!==null);if(o.length===0){e({timedOut:!1});return}let a=t.timeoutMs??Dr,s,l=new Promise(u=>{s=setTimeout(()=>u("timed-out"),a)});Promise.race([Promise.all(o).then(()=>"done"),l]).then(u=>{clearTimeout(s),r.abort(),e({timedOut:u==="timed-out"})})}function Wn(n,e,t={}){Pr(n,e,{...t,scope:Y})}function ct(n,e,t){for(let i of e){let r=n.getAttribute(i);if(r===null||r.trim()==="")continue;let o=Number(r);if(Number.isFinite(o))return o}return t}function mt(n){return{start:ct(n,["data-start"],0),duration:ct(n,["data-duration"],0),mediaStart:Ee(e=>n.getAttribute(e)),playbackRate:ct(n,["data-playback-rate"],1)}}var Lr=[[.3,.25],[.1,.1]],Nr=.01,Or=.1,Fr=.1,me=new WeakMap;function Bn(n,e,t,i,r=n.tagName==="AUDIO"){let o=Math.abs(e);if(r&&i&&o>Fr)return me.delete(n),{rate:t,seek:!0};let a=Math.sign(e),s=me.get(n);if(o>.04)me.set(n,a);else if(s!==a||o<=Nr)return me.delete(n),{rate:t,seek:!1};let l=Lr.find(([c])=>o>c)?.[1]??.03,u=r?Math.min(l,Or):l;return{rate:t*(1+a*u),seek:!1}}function $n(n){me.delete(n)}var Ur=.004,Hr=1.5,Oe=class{_entries=[];_mediaObserver;_playbackErrorPosted=!1;_audioOwner="runtime";_urlAudioEntry=null;_urlAudioSrc=null;_dispatchEvent;_getMuted;_getVolume;_getPlaybackRate;_getCurrentTime;_isPaused;constructor(e){this._dispatchEvent=e.dispatchEvent,this._getMuted=e.getMuted,this._getVolume=e.getVolume,this._getPlaybackRate=e.getPlaybackRate,this._getCurrentTime=e.getCurrentTime,this._isPaused=e.isPaused}get audioOwner(){return this._audioOwner}get entries(){return this._entries}resetForIframeLoad(){this._playbackErrorPosted=!1;let e=this._audioOwner==="parent";this._audioOwner="runtime",this.pauseAll();for(let t of this._entries)t!==this._urlAudioEntry&&(t.el.src="");this._entries=this._urlAudioEntry?[this._urlAudioEntry]:[],this._urlAudioSrc&&!this._urlAudioEntry&&(this._urlAudioEntry=this._createEntry(this._urlAudioSrc,"audio",0,1/0)),this.teardownObserver(),e&&this._dispatchEvent(new CustomEvent("audioownershipchange",{detail:{owner:"runtime",reason:"iframe-reload"}}))}destroy(){this.teardownObserver();for(let e of this._entries)e.el.pause(),e.el.src="";this._entries=[],this._urlAudioEntry=null,this._urlAudioSrc=null,this._audioOwner="runtime",this._playbackErrorPosted=!1}updateMuted(e){for(let t of this._entries)t.el.muted=e}updateVolume(e){for(let t of this._entries)t.el.volume=e}updatePlaybackRate(e){for(let t of this._entries)t.el.playbackRate=e}_playEntry(e){e.el.src&&e.el.play().catch(t=>this._reportPlaybackError(t))}_playEntryIfActive(e){this._refreshEntryBounds(e),this._inWindow(e,this._getCurrentTime())&&this._playEntry(e)}_refreshEntryBounds(e){if(!e.source?.isConnected)return;let t=Ze(e.source);e.start=t.start??0,e.mediaStart=mt(e.source).mediaStart,e.duration=t.duration!=null&&t.duration>0?t.duration:Number.POSITIVE_INFINITY}_inWindow(e,t){return lt(t,e.start,e.start+e.duration)}_preseekUpcoming(e,t){let i=e.start-t;i<=0||i>Hr||!e.el.paused||Math.abs(e.el.currentTime-e.mediaStart)>.04&&this._seekTo(e,e.mediaStart)}_seekTo(e,t,i=!1){let r=i?(e.seekLatency??0)*this._getPlaybackRate():0;e.seekIssuedAt=i?performance.now():void 0,e.el.currentTime=Se(t+r)}_noteSeekLanded(e){if(e.seekIssuedAt===void 0)return;let t=(performance.now()-e.seekIssuedAt)/1e3;e.seekLatency=e.seekLatency===void 0?t:(e.seekLatency+t)/2,e.seekIssuedAt=void 0}_releaseSteering(e){$n(e.el),e.lastOffset=void 0;let t=this._getPlaybackRate();e.el.playbackRate!==t&&(e.el.playbackRate=t)}_mediaTime(e,t){return t-e.start+e.mediaStart}_gateEntryPlayback(e,t){return this._inWindow(e,t)?(this._audioOwner==="parent"&&!this._isPaused()&&e.el.paused&&this._playEntry(e),!0):(e.el.paused||e.el.pause(),this._releaseSteering(e),!1)}playAll(){for(let e of this._entries)this._playEntryIfActive(e)}primeAll(){if(It())for(let e of this._entries)e.el.paused&&(e.el.play().catch(()=>{}),e.el.pause())}pauseAll(){for(let e of this._entries)e.el.pause()}stopAdoptedMedia(){for(let e of this._entries)e.source&&e.el.pause()}seekAll(e){for(let t of this._entries)this._refreshEntryBounds(t),this._inWindow(t,e)&&this._jumpTo(t,this._mediaTime(t,e))}scrubAll(e){for(let t of this._entries)this._refreshEntryBounds(t),this._inWindow(t,e)?(this._jumpTo(t,this._mediaTime(t,e)),this._playEntry(t)):t.el.paused||t.el.pause()}mirrorTime(e,t){let i=t?.force===!0;for(let r of this._entries){this._refreshEntryBounds(r),this._preseekUpcoming(r,e);let o=r.el.paused;if(!this._gateEntryPlayback(r,e))continue;let a=this._mediaTime(r,e),s=a-r.el.currentTime;if(i||o){Math.abs(s)>.04&&this._jumpTo(r,a);continue}this._steer(r,a,s)}}_steer(e,t,i){let r=e.lastOffset!==void 0&&Math.abs(i-e.lastOffset)<Ur;e.lastOffset=i;let{rate:o,seek:a}=Bn(e.el,i,this._getPlaybackRate(),r,!0);a?this._jumpTo(e,t,!0):Math.abs(e.el.playbackRate-o)>1e-6&&(e.el.playbackRate=o)}_jumpTo(e,t,i=!1){this._seekTo(e,t,i),this._releaseSteering(e)}promoteToParentProxy(e,t){if(this._audioOwner==="parent")return;if(this._audioOwner="parent",e)for(let r of e.querySelectorAll("video, audio"))w(r)&&(r.muted=!0);for(let r of[...this._entries])this._repointToSource(r);let i=this._getCurrentTime();t?t(i,{force:!0}):this.mirrorTime(i,{force:!0}),this._isPaused()||this.playAll(),this._dispatchEvent(new CustomEvent("audioownershipchange",{detail:{owner:"parent",reason:"autoplay-blocked"}}))}setupFromIframe(e){let t=e.querySelectorAll("audio[data-start], video[data-start]");for(let i of t)w(i)&&this._adoptIframeMedia(i);this._observeDynamicMedia(e)}setupFromUrl(e){if(this._urlAudioSrc===e&&this._urlAudioEntry)return;this.teardownUrlAudio();let t=this._createEntry(e,"audio",0,1/0);this._urlAudioEntry=t,this._urlAudioSrc=e,t&&this._audioOwner==="parent"&&!this._isPaused()&&(this.mirrorTime(this._getCurrentTime(),{force:!0}),this.playAll())}teardownUrlAudio(){let e=this._urlAudioEntry;if(this._urlAudioEntry=null,this._urlAudioSrc=null,!e)return;e.el.pause(),e.el.src="";let t=this._entries.indexOf(e);t!==-1&&this._entries.splice(t,1)}teardownObserver(){this._mediaObserver?.disconnect(),this._mediaObserver=void 0}_reportPlaybackError(e){this._playbackErrorPosted||(this._playbackErrorPosted=!0,this._dispatchEvent(new CustomEvent("playbackerror",{detail:{source:"parent-proxy",error:e}})))}_createEntry(e,t,i,r,o){if(!o&&this._urlTaken(e))return null;let a=t==="video"?document.createElement("video"):new Audio;a.preload="auto";let s=o?.getAttribute("crossorigin");s!=null&&a.setAttribute("crossorigin",s),a.src=e,a.load(),a.muted=this._getMuted(),a.volume=this._getVolume();let l=this._getPlaybackRate();l!==1&&(a.playbackRate=l);let u={el:a,start:i,duration:r,mediaStart:o?mt(o).mediaStart:0,source:o};return a.addEventListener("seeked",()=>this._noteSeekLanded(u)),this._entries.push(u),u}_resolveIframeMediaSrc(e){let t=e.getAttribute("src")||e.querySelector("source")?.getAttribute("src");return t?new URL(t,e.ownerDocument.baseURI).href:null}_adoptIframeMedia(e){if(e.preload==="metadata"||e.preload==="none"||this._entries.some(l=>l.source===e)||e.tagName==="VIDEO"&&e.hasAttribute("muted"))return;let t=this._resolveIframeMediaSrc(e);if(!t)return;let i=Ze(e),r=i.start??0,o=i.duration??Number.POSITIVE_INFINITY,a=e.tagName==="VIDEO"?"video":"audio",s=this._createEntry(t,a,r,o,e);s&&this._audioOwner==="parent"&&(this.mirrorTime(this._getCurrentTime(),{force:!0}),this._isPaused()||this._playEntryIfActive(s))}_followIframeMediaSrc(e){let t=this._entries.find(i=>i.source===e);if(!t)return this._adoptIframeMedia(e);this._audioOwner!=="parent"||!this._repointToSource(t)||(this.mirrorTime(this._getCurrentTime(),{force:!0}),this._isPaused()||this._playEntryIfActive(t))}_urlTaken(e){return this._entries.some(t=>t.source&&!t.source.isConnected?!1:(t.source&&this._resolveIframeMediaSrc(t.source)||t.el.src)===e)}_repointToSource(e){let t=e.source?this._resolveIframeMediaSrc(e.source):null;return!t||e.el.src===t?!1:(e.el.src=t,e.el.load(),!0)}_detachIframeMedia(e){let t=this._entries.find(i=>i.source===e);t&&this._removeEntry(t)}_removeEntry(e){e.el.pause(),e.el.src="",this._entries.splice(this._entries.indexOf(e),1)}_observeDynamicMedia(e){if(this.teardownObserver(),typeof MutationObserver>"u"||!e.body)return;let t=new MutationObserver(o=>{for(let a of o){if(a.type==="attributes"&&a.attributeName==="src"){let s=a.target;w(s)&&s.matches("audio[data-start], video[data-start]")&&this._followIframeMediaSrc(s);continue}if(a.type==="attributes"&&a.attributeName==="preload"){let s=a.target;w(s)&&s.matches("audio[data-start], video[data-start]")&&(s.preload==="auto"?this._adoptIframeMedia(s):this._detachIframeMedia(s));continue}for(let s of a.addedNodes){if(!ce(s))continue;let l=[];w(s)&&s.matches("audio[data-start], video[data-start]")&&l.push(s);let u=s.querySelectorAll("audio[data-start], video[data-start]");for(let c of u)w(c)&&l.push(c);for(let c of l)this._adoptIframeMedia(c)}for(let s of a.removedNodes){if(!ce(s))continue;let l=[];w(s)&&s.matches("audio[data-start], video[data-start]")&&l.push(s);let u=s.querySelectorAll("audio[data-start], video[data-start]");for(let c of u)w(c)&&l.push(c);for(let c of l)this._detachIframeMedia(c)}}}),i={childList:!0,subtree:!0,attributes:!0,attributeFilter:["preload","src"]},r=Cn(e);for(let o of r)t.observe(o,i);this._mediaObserver=t}};function pt(n,e,t){if(n===null&&e===null)return{range:null,clamped:!1};let i=n??0,r=e!==null&&t>0&&e>t,o=r?t:e,a=o??(t>0?t:1/0);return!(i>=0)||!(a>i)?{range:null,clamped:!0}:{range:{start:i,end:o},clamped:r}}function pe(n,e,t){let i=n.end??e;return i<e?On(n.start,i,t):i}function ft(n,e,t,i){return n<e.start||n>=pe(e,t,i)}var Vr=100;function Wr(n,e){return typeof n.currentTime=="number"&&Number.isFinite(n.currentTime)?n.currentTime:(n.frame??0)/e}function zn(n,e,t){return t<=0?!1:n.ended===!0?!0:n.ended===!1&&!n.isPlaying?!1:e>=t}function Br(n,e,t,i,r,o){let{duration:a}=t;if(!r){let s=zn(n,e,a);return{start:0,shownAtEnd:a,atEnd:s,stopRuntime:!1,entering:!1}}if(n.ownsRange){let s=i&&n.ended===!0&&!n.isPlaying;return{start:r.start,shownAtEnd:e,atEnd:s,stopRuntime:!1,entering:!1}}return $r(n,e,t,i,r,o)}function $r(n,e,t,i,r,o){let a=r.end??t.duration,s=t.enteringRange===!0&&(e<r.start||e>=a);return{start:r.start,shownAtEnd:pe(r,t.duration,o),atEnd:i&&!s&&zn(n,e,a),stopRuntime:n.isPlaying,entering:s}}function jn(n,e,t,i){let r=Wr(n,e),o=!t.paused,a=o||n.isPlaying,s=i.getPlayRange?.(),l=Br(n,r,t,a,s,e),{atEnd:u,start:c}=l,h=t.duration>0?Math.min(r,t.duration):r,v=u?l.shownAtEnd:h,b=!n.isPlaying,S=u&&a;if(S&&i.getLoop())return i.media.audioOwner==="parent"&&i.media.pauseAll(),i.seek(c),i.play(),{...t,currentTime:c,paused:!1,enteringRange:!0};let _={...t,currentTime:v,paused:b,enteringRange:l.entering};i.media.audioOwner==="parent"&&(o&&b?i.media.pauseAll():!o&&!b&&i.media.playAll(),i.media.mirrorTime(v));let A=performance.now(),C=b!==t.paused;return(A-t.lastUpdateMs>Vr||C)&&(_.lastUpdateMs=A,i.updateControlsTime(v,t.duration),i.updateControlsPlaying(!b),i.dispatchEvent(new CustomEvent("timeupdate",{detail:{currentTime:v}}))),S&&(l.stopRuntime&&i.seek(v),i.media.audioOwner==="parent"&&i.media.pauseAll(),_.paused=!0,i.updateControlsPlaying(!1),i.dispatchEvent(new Event("ended"))),_}function Gr(n){return Array.isArray(n)?n.filter(e=>typeof e=="object"&&e!==null&&typeof e.id=="string"&&typeof e.start=="number"&&typeof e.duration=="number"):[]}function qn(n,e,t){if(n.source!==e)return;let i=n.data;if(!i||i.source!=="hf-preview")return;let r=Un(i);if(r.status==="unsupported"){t.dispatchEvent(new CustomEvent("runtimeprotocolerror",{detail:{code:r.code,receivedVersion:r.receivedVersion}}));return}t.setRuntimeFps?.(r.fps);let o=r.status==="supported"&&r.metadata.capabilities.includes("play-range");if(t.setRuntimeOwnsPlayRange?.(o),i.type==="shader-transition-state"){let a=i.state&&typeof i.state=="object"?i.state:{};t.shaderLoader.update(a,t.getShaderLoadingMode()),t.dispatchEvent(new CustomEvent("shadertransitionstate",{detail:{compositionId:i.compositionId,state:a}}));return}if(i.type==="ready"){t.onRuntimeReady();return}if(i.type==="assets-ready"){t.onRuntimeAssetsReady?.(i.timedOut===!0);return}if(i.type==="runtime-data-error"){t.onRuntimeDataError?.(i.channel,i.requestId,i.message);return}if(i.type==="runtime-data-applied"){t.onRuntimeDataApplied?.(i.channel,i.requestId);return}if(i.type==="state"){t.setPlaybackState(jn({frame:i.frame??0,currentTime:i.currentTime,ended:typeof i.ended=="boolean"?i.ended:void 0,isPlaying:!!i.isPlaying,ownsRange:o},r.fps,t.getPlaybackState(),t)),t.setBuffering?.(i.buffering===!0);return}if(i.type==="media-autoplay-blocked"){if(t.shouldPromoteMediaAutoplayFallback?.()===!1)return;let a=null;try{a=t.getIframeDoc()}catch{}t.media.promoteToParentProxy(a,(s,l)=>t.media.mirrorTime(s,l)),t.sendControl("set-media-output-muted",{muted:!0});return}if(i.type==="timeline"&&i.durationInFrames>0){let a=Number(i.durationSeconds),s=Number(i.durationInFrames),l=Number.isFinite(a)&&a>0?a:s/r.fps;if(Number.isFinite(i.compositionWidth)&&i.compositionWidth>0&&Number.isFinite(i.compositionHeight)&&i.compositionHeight>0&&t.setCompositionSize(i.compositionWidth,i.compositionHeight),Number.isFinite(l)&&l>0){let u=t.getPlaybackState();t.setPlaybackState({...u,duration:l}),t.updateControlsTime(u.currentTime,l),t.onRuntimeTimelineReady(l,typeof i.assetsReady=="boolean"?i.assetsReady:void 0)}t.setScenes(Gr(i.scenes));return}i.type==="stage-size"&&Number.isFinite(i.width)&&i.width>0&&Number.isFinite(i.height)&&i.height>0&&t.setCompositionSize(i.width,i.height)}function zr(n,e){return n.includes(e)?!0:/hyperframe\.runtime\.iife\.js|__hyperframes\s*=/.test(n)}var jr=new Set([">"," "," ",`
478
- `,"\r","\f"]);function ht(n,e){let t=n.toLowerCase(),i=`<${e}`,r=0;for(;r<t.length;){let o=t.indexOf(i,r);if(o<0)return null;let a=t[o+i.length];if(jr.has(a)){let s=t.indexOf(">",o+i.length);return s<0?null:{index:o,end:s+1}}r=o+i.length}return null}function Yn(n,e){if(!n||zr(n,e))return n;let t=`<script src="${e}"></script>`,i=ht(n,"head");if(i)return n.slice(0,i.end)+t+n.slice(i.end);let r=ht(n,"body");if(r)return n.slice(0,r.index)+t+n.slice(r.index);let o=ht(n,"html");return o?n.slice(0,o.end)+t+n.slice(o.end):t+n}var W="shader-capture-scale",X="shader-loading",Fe="runtime-src",Xn="__hf_shader_capture_scale",Kn="__hf_shader_loading",K=["Preparing scene transitions","Sampling outgoing scene motion","Sampling incoming scene motion","Caching transition frames","Finalizing transition preview"];function bt(n){if(n===null)return null;let e=Number(n);return!Number.isFinite(e)||e<=0?null:String(Math.min(1,Math.max(.25,e)))}function qr(n){if(n===null||n.trim()==="")return"composition";let e=n.trim().toLowerCase();return e==="none"||e==="false"||e==="0"||e==="off"?"none":e==="player"||e==="true"||e==="1"||e==="on"?"player":"composition"}function Zn(n,e){return n.filter(t=>t!==""&&t.split("=")[0]!==e)}function Yr(n,e,t){let i=n.indexOf("#"),r=i>=0?n.slice(0,i):n,o=i>=0?n.slice(i):"",a=r.indexOf("?"),s=a>=0?r.slice(0,a):r,l=a>=0?r.slice(a+1):"",u=Zn(l.split("&"),Xn);u=Zn(u,Kn),e!==null&&u.push(`${Xn}=${encodeURIComponent(e)}`),t!=="composition"&&u.push(`${Kn}=${encodeURIComponent(t)}`);let c=u.join("&");return`${s}${c?`?${c}`:""}${o}`}function Xr(n,e,t){if(e===null&&t==="composition")return n;let i=[];e!==null&&i.push(`window.__HF_SHADER_CAPTURE_SCALE=${JSON.stringify(e)};`),t!=="composition"&&i.push(`window.__HF_SHADER_LOADING=${JSON.stringify(t)};`);let r=`<script data-hyperframes-player-shader-options>${i.join("")}</script>`;return/<head\b[^>]*>/i.test(n)?n.replace(/<head\b[^>]*>/i,o=>`${o}${r}`):/<html\b[^>]*>/i.test(n)?n.replace(/<html\b[^>]*>/i,o=>`${o}${r}`):`${r}${n}`}function fe(n){return qr(n.getAttribute(X))}function Jn(n){return Number(bt(n.getAttribute(W))??"1")}function Qn(n,e){return Yr(e,bt(n.getAttribute(W)),fe(n))}function he(n,e){return Yn(Xr(e,bt(n.getAttribute(W)),fe(n)),gt(n))}function gt(n){let e=n.getAttribute(Fe)?.trim();if(!e)return j;try{let t=new URL(e,document.baseURI),i=t.protocol==="http:"||t.protocol==="https:",r=t.hostname==="127.0.0.1"||t.hostname==="localhost"||t.hostname==="[::1]";return i&&(r||t.origin===location.origin)?t.href:j}catch{return j}}function ei(){let n=document.createElement("div");n.className="hfp-shader-loader",n.setAttribute("role","status"),n.setAttribute("aria-live","polite"),n.setAttribute("aria-label","Preparing scene transitions"),n.setAttribute("data-hyperframes-ignore",""),n.draggable=!1;let e=b=>{b.preventDefault(),b.stopPropagation()};for(let b of["selectstart","dragstart","pointerdown","mousedown","click","dblclick","contextmenu","touchstart"])n.addEventListener(b,e,{capture:!0});let t=document.createElement("div");t.className="hfp-shader-loader-panel",t.draggable=!1;let i=document.createElement("div");i.className="hfp-shader-loader-mark",i.draggable=!1,i.innerHTML=['<svg width="78" height="78" viewBox="0 0 100 100" fill="none" aria-hidden="true" draggable="false">','<path d="M10.1851 57.8021L33.1145 73.8313C36.2202 75.9978 41.5173 73.5433 42.4816 69.4984L51.7611 30.4271C52.7253 26.3822 48.5802 23.9277 44.4602 26.0942L13.917 42.1235C6.96677 45.7676 4.97564 54.1579 10.1851 57.8021Z" fill="url(#hfp-shader-loader-grad-left)"/>','<path d="M87.5129 57.5141L56.9696 73.5433C52.8371 75.7098 48.7046 73.2553 49.6688 69.2104L58.9483 30.1391C59.9125 26.0942 65.2097 23.6397 68.3154 25.8062L91.2447 41.8354C96.4668 45.4796 94.4631 53.8699 87.5129 57.5141Z" fill="url(#hfp-shader-loader-grad-right)"/>',"<defs>",'<linearGradient id="hfp-shader-loader-grad-left" x1="48.5676" y1="25" x2="44.7804" y2="71.9384" gradientUnits="userSpaceOnUse">','<stop stop-color="#06E3FA"/>','<stop offset="1" stop-color="#4FDB5E"/>',"</linearGradient>",'<linearGradient id="hfp-shader-loader-grad-right" x1="54.8282" y1="73.8392" x2="72.0989" y2="32.8932" gradientUnits="userSpaceOnUse">','<stop stop-color="#06E3FA"/>','<stop offset="1" stop-color="#4FDB5E"/>',"</linearGradient>","</defs>","</svg>"].join("");let r=document.createElement("div");r.className="hfp-shader-loader-title";let o=document.createElement("span");o.className="hfp-shader-loader-title-text",o.textContent=K[0]||"Preparing scene transitions",r.appendChild(o);let a=document.createElement("div");a.className="hfp-shader-loader-detail",a.textContent="Rendering animated scene samples for shader transitions.";let s=document.createElement("div");s.className="hfp-shader-loader-track",s.setAttribute("aria-hidden","true");let l=document.createElement("div");l.className="hfp-shader-loader-fill",s.appendChild(l);let u=document.createElement("div");u.className="hfp-shader-loader-progress";let c=b=>{let S=document.createElement("div");S.className="hfp-shader-loader-row";let _=document.createElement("span");_.className="hfp-shader-loader-label",_.textContent=b;let A=document.createElement("span");return A.className="hfp-shader-loader-value",S.appendChild(_),S.appendChild(A),u.appendChild(S),{row:S,label:_,value:A}},h=c("transition"),v=c("transition frame");return t.appendChild(i),t.appendChild(r),t.appendChild(a),t.appendChild(s),t.appendChild(u),n.appendChild(t),{root:n,fill:l,title:o,detail:a,transitionValue:h.value,transitionRow:h.row,frameLabel:v.label,frameValue:v.value,frameRow:v.row}}var Kr=420;function Ue(n,e,t){e.textContent=t,n.style.visibility=t?"visible":"hidden"}var He=class{_el;_hideTimeout=null;_hiddenCallbacks=[];_drawingAssets=!1;constructor(e){this._el=e}show(){this._hideTimeout&&(clearTimeout(this._hideTimeout),this._hideTimeout=null),this._el.root.classList.remove("hfp-hiding"),this._el.root.classList.add("hfp-visible")}hide(){if(this._el.root.classList.contains("hfp-hiding")){this._hideTimeout||this._scheduleCleanup();return}this._el.root.classList.contains("hfp-visible")&&(this._el.root.classList.add("hfp-hiding"),this._el.root.classList.remove("hfp-visible"),this._scheduleCleanup())}whenHidden(e){let t=this._el.root.classList;t.contains("hfp-visible")||t.contains("hfp-hiding")?this._hiddenCallbacks.push(e):e()}_flushHidden(){let e=this._hiddenCallbacks;this._hiddenCallbacks=[];for(let t of e)t()}reset(){this._hideTimeout&&(clearTimeout(this._hideTimeout),this._hideTimeout=null),this._el.root.classList.remove("hfp-visible","hfp-hiding"),this._drawingAssets=!1,this._flushHidden(),this._el.fill.style.transform="scaleX(0)",Ue(this._el.transitionRow,this._el.transitionValue,""),Ue(this._el.frameRow,this._el.frameValue,"")}update(e,t){let i=t==="player"&&e.loading&&!e.ready;if(this._drawingAssets&&!i)return;if(t!=="player"){this.reset();return}if(e.ready||!e.loading){this.hide();return}this._el.root.setAttribute("aria-label","Preparing scene transitions"),this._drawingAssets=!1;let r=typeof e.progress=="number"&&Number.isFinite(e.progress)?e.progress:0,o=typeof e.total=="number"&&Number.isFinite(e.total)?e.total:0,a=o>0?Math.min(1,Math.max(0,r/o)):0,s=Math.min(K.length-1,Math.floor(a*K.length));this._el.title.textContent=K[s]||"Preparing scene transitions",this._el.detail.textContent=e.phase==="cached"?"Loading cached transition frames before playback.":e.phase==="finalizing"?"Uploading transition textures for smooth playback.":"Rendering animated scene samples for shader transitions.",this._el.fill.style.transform=`scaleX(${a})`;let l=e.currentTransition!==void 0&&e.transitionTotal!==void 0?`${e.currentTransition}/${e.transitionTotal}`:o>0?`${r}/${o}`:"",u=e.transitionFrame!==void 0&&e.transitionFrames!==void 0?`${e.transitionFrame}/${e.transitionFrames}`:"";this._el.frameLabel.textContent=e.phase==="cached"?"cached transition frames":e.phase==="finalizing"?"finalizing transition frames":"rendering transition frames",Ue(this._el.transitionRow,this._el.transitionValue,l),Ue(this._el.frameRow,this._el.frameValue,u),this._el.root.setAttribute("aria-valuenow",String(Math.round(a*100))),this.show()}showAssetsLoading(e="Loading assets",t="Waiting for images, video and fonts to finish loading."){this.reset(),this._el.title.textContent=e,this._el.detail.textContent=t,this._el.root.setAttribute("aria-label",e),this._drawingAssets=!0,this.show()}hideAssetsLoading(){this._drawingAssets&&this.hide()}get hideTimeout(){return this._hideTimeout}destroy(){this._hideTimeout&&(clearTimeout(this._hideTimeout),this._hideTimeout=null),this._hiddenCallbacks=[]}_scheduleCleanup(){this._hideTimeout&&clearTimeout(this._hideTimeout),this._hideTimeout=setTimeout(()=>{this._el.root.classList.remove("hfp-hiding"),this._hideTimeout=null,this._flushHidden()},Kr)}};function ti(n){return n?.trim().toLowerCase().startsWith("video/")??!1}function ni(n){let e=document.createElement("video");e.className="hfp-video",e.playsInline=!0,e.preload="metadata";let t=new AbortController,{signal:i}=t;return e.addEventListener("loadedmetadata",()=>n.onMetadata(e),{signal:i}),e.addEventListener("durationchange",()=>n.onDurationChange(e),{signal:i}),e.addEventListener("resize",()=>n.onResize(e),{signal:i}),e.addEventListener("play",()=>n.onPlay(e),{signal:i}),e.addEventListener("pause",()=>n.onPause(e),{signal:i}),e.addEventListener("timeupdate",()=>n.onTimeUpdate(),{signal:i}),e.addEventListener("error",()=>n.onError(e.error?.message||"Video failed to load",e.error?.code??null),{signal:i}),{video:e,adapter:{duration:()=>e.duration,time:()=>e.currentTime,seek:o=>{e.currentTime=Se(o)},play:()=>e.play().catch(o=>{i.aborted||n.onPlayRejected(o)}),pause:()=>e.pause(),timeScale:o=>{e.defaultPlaybackRate=o,e.playbackRate=o}},destroy:()=>{t.abort(),e.pause(),e.removeAttribute("src"),e.load(),e.remove()}}}var Zr=.1,Jr=5,_t="sandbox-origin",ii=1e4,yt=8e3,vt="assets-loading",be="assets-loading-ui",Ve="buffering",St="low-power-idle",ri="disable-click-to-play",ge="range-start",_e="range-end",oi=150;function At(n){return!Number.isFinite(n)||n<=0?1:Math.max(Zr,Math.min(Jr,n))}var Et=class extends HTMLElement{static get observedAttributes(){return["src","srcdoc","width","height","controls","muted","audio-locked","volume","poster","playback-rate","audio-src","type",_t,Fe,W,X,be,St,ge,_e]}shadow;container;sizer=document.createElement("div");iframe;posterEl=null;controlsApi=null;resizeObserver;shaderLoader;probe;_ready=!1;_readyDocument=null;_connected=!1;_assetsReady=!1;_painted=!1;_pendingPlay=!1;_assetsGeneration=0;_assetsLoadingShowTimer=null;_bufferingShowTimer=null;_currentTime=0;_duration=0;_paused=!0;_scrubbing=!1;_lastUpdateMs=0;_volume=1;_compositionWidth=1920;_compositionHeight=1080;_rescaleWarned=!1;_directTimelineAdapter=null;_directTimelineClock;_parentTickRaf=null;_media;_scenes=[];_runtimeFps=30;_runtimeBridgeReady=!1;_runtimeAssetsReadyGeneration=-1;_runtimeData=new Map;_runtimeDataRequestId=0;_pendingRuntimeData=new Map;_afterUpdate=null;_videoSource=null;_runtimeOwnsPlayRange=!1;_enteringRange=!1;_rangeClampReported="";constructor(){super(),this.shadow=this.attachShadow({mode:"open"}),wn(this.shadow,yn),{container:this.container,iframe:this.iframe}=kn(),this.sizer.className="hfp-sizer",this.shadow.appendChild(this.sizer),this.shadow.appendChild(this.container);let e=ei();this.shadow.appendChild(e.root),this.shaderLoader=new He(e),this._media=new Oe({dispatchEvent:t=>this._emit(t),getMuted:()=>this.muted,getVolume:()=>this._volume,getPlaybackRate:()=>this.playbackRate,getCurrentTime:()=>this._currentTime,isPaused:()=>this._paused}),this._directTimelineClock=new Pe({onTimeUpdate:(t,i)=>{this._currentTime=t,this.controlsApi?.updateTime(t,i),this._emit(new CustomEvent("timeupdate",{detail:{currentTime:t}}))},getLoop:()=>this.loop,restart:()=>{this.seek(this._playRange()?.start??0),this.play()},onPaused:()=>{this._media.audioOwner==="parent"&&this._media.pauseAll(),this._paused=!0,this.controlsApi?.updatePlaying(!1),this._emit(new Event("ended"))},onEnded:()=>this.loop}),this.probe=new Ie(this.iframe,{resolveRuntimeUrl:()=>gt(this),hostOwnsDeadline:()=>this.hasAttribute("no-load-timeout"),onReady:t=>this._onProbeReady(t),onError:t=>this._emit(new CustomEvent("error",{detail:{message:t}}))}),this.addEventListener("click",t=>{this.disableClickToPlay||xn(t)||(this._paused?this.play():this.pause())}),this.resizeObserver=new ResizeObserver(()=>this._rescale()),this._onMessage=this._onMessage.bind(this),this._onIframeLoad=this._onIframeLoad.bind(this),this.iframe.addEventListener("load",this._onIframeLoad)}connectedCallback(){this._connected=!0,this._applySandboxOriginPolicy(),this.resizeObserver.observe(this),window.addEventListener("message",this._onMessage),this.hasAttribute("controls")&&this._setupControls(),this.hasAttribute("poster")&&(this.posterEl=st(this.shadow,this.getAttribute("poster"),this.posterEl)),this.hasAttribute("audio-src")&&this._media.setupFromUrl(this.getAttribute("audio-src")),this.hasAttribute("srcdoc")&&(this.iframe.srcdoc=he(this,this.getAttribute("srcdoc"))),this.hasAttribute("src")&&this._loadSrc(this.getAttribute("src")),!this.hasAttribute("audio-locked")&&this._isLockedHostEnvironment()&&this._applyAudioLock(!0)}disconnectedCallback(){this._connected=!1,this._teardownVideo(),this._sendControl("pause"),this._stopIframeMedia(),this.resizeObserver.disconnect(),window.removeEventListener("message",this._onMessage),this.probe.stop(),this._directTimelineClock.stop(),this._stopParentTickClock(),this._directTimelineAdapter=null,this.shaderLoader.destroy(),this._media.destroy(),this.controlsApi?.destroy(),this.controlsApi=null,this._paused=!0,this._pendingPlay=!1,this._abandonComposition("Player disconnected before runtime data was applied")}attributeChangedCallback(e,t,i){switch(e){case"src":if(!this.isConnected)break;i&&this._navigateSrc(i);break;case"type":{let r=this.getAttribute("src");if(!this.isConnected||r===null||!!this._videoSource===this._wantsVideo())break;this._navigateSrc(r);break}case"srcdoc":if(!this.isConnected)break;if(this._pendingPlay=!1,this._abandonComposition("Composition navigated before runtime data was applied"),i!==null)this._pauseForVideoSwitch(),this._teardownVideo(),this.iframe.srcdoc=he(this,i);else{this.iframe.removeAttribute("srcdoc");let r=this.getAttribute("src");r!==null&&this._wantsVideo()&&this._navigateSrc(r)}break;case _t:this._applySandboxOriginPolicy(this.isConnected&&t!==i);break;case"width":this._setCompositionSize(de(i)??1920,this._compositionHeight);break;case"height":this._setCompositionSize(this._compositionWidth,de(i)??1080);break;case"controls":i!==null?this._setupControls():(this.controlsApi?.destroy(),this.controlsApi=null);break;case"poster":this.posterEl=st(this.shadow,i,this.posterEl);break;case"playback-rate":{let r=At(parseFloat(i||"1"));this._media.updatePlaybackRate(r),this._sendControl("set-playback-rate",{playbackRate:r}),this._directTimelineAdapter?.timeScale?.(r),this.controlsApi?.updateSpeed(r),this._emit(new Event("ratechange"));break}case"muted":this._handleMutedChange(i);break;case"audio-locked":this._applyAudioLock(i!==null);break;case"volume":{let r=Math.max(0,Math.min(1,parseFloat(i||"1")));this._volume=r,this._syncVideoAudio(),this._media.updateVolume(r),this._sendControl("set-volume",{volume:r}),this.controlsApi?.updateVolume(r),this._emit(new Event("volumechange"));break}case"audio-src":i?this._media.setupFromUrl(i):this._media.teardownUrlAudio();break;case be:i==="none"&&this.shaderLoader.hideAssetsLoading();break;case St:this._sendControl("set-idle-heartbeat",{slow:i!==null});break;case ge:case _e:this._applyPlayRange(!0);break;case W:case X:case Fe:if(!this.isConnected)break;this._reloadShaderOptions();break}}_applySandboxOriginPolicy(e=!1){this.hasAttribute(_t)?this.iframe.sandbox.remove("allow-same-origin"):this.iframe.sandbox.add("allow-same-origin"),e&&this._reloadForSandboxOriginPolicy()}_reloadForSandboxOriginPolicy(){if(this._videoSource)return;this._abandonComposition("Sandbox policy changed before runtime data was applied");let e=this.getAttribute("srcdoc");if(e!==null){this.iframe.srcdoc=he(this,e);return}let t=this.getAttribute("src");t===null?this.iframe.src="about:blank":this._loadSrc(t)}get iframeElement(){return this.iframe}get scenes(){return this._scenes}play(){this._play(!0)}_play(e){if(this._ready&&!this._assetsReady){this._pendingPlay=!0;return}this._pendingPlay=!1,this.posterEl?.remove(),this.posterEl=null;let t=this._ready?this._playRange():null;t?ft(this._currentTime,t,this._duration,this._runtimeFps)&&(this.seek(t.start),this._enteringRange=!0):this._duration>0&&this._currentTime>=this._duration&&this.seek(0),this._paused=!1;let i=this._tryDirectTimelinePlay(),r=!1;this._sendDisplayScale(),i||(this._sendControl("play"),this._ready&&!this._directTimelineAdapter?this._startParentTickClock():this._ready||(this._pendingPlay=!0,r=!0)),this._media.audioOwner==="parent"?this._media.playAll():this._media.primeAll(),this.controlsApi?.updatePlaying(!0),!r&&e&&this._emit(new Event("play")),i&&this._directTimelineAdapter&&this._directTimelineClock.start(this._directTimelineAdapter,()=>this._currentTime,()=>this._duration,()=>this._paused,()=>this._clockStop())}pause(){this._pendingPlay=!1,this._tryDirectTimelinePause()?this._showPausedVideoTime():this._sendControl("pause"),this._directTimelineClock.stop(),this._stopParentTickClock(),this._media.audioOwner==="parent"&&this._media.pauseAll(),this._paused=!0,this.controlsApi?.updatePlaying(!1),this._emit(new Event("pause"))}stopMedia(){this._sendControl("stop-media"),this._stopIframeMedia(),this._media.stopAdoptedMedia()}seek(e){this._pendingPlay=!1,!this._trySyncSeek(e)&&!this._tryDirectTimelineSeek(e)&&this._sendControl("seek",{timeSeconds:e,frame:Math.round(e*this._runtimeFps)}),this._directTimelineClock.stop(),this._stopParentTickClock(),this._currentTime=e,this._media.audioOwner==="parent"&&(this._scrubbing?this._media.scrubAll(e):(this._media.pauseAll(),this._media.seekAll(e))),this._paused=!0,this.controlsApi?.updatePlaying(!1),this.controlsApi?.updateTime(this._currentTime,this._duration)}setColorGrading(e,t){this._sendControl("set-color-grading",{target:e,grading:t})}clearColorGrading(e){this._sendControl("set-color-grading",{target:e,grading:null})}setColorGradingCompare(e,t){this._sendControl("set-color-grading-compare",{target:e,compare:t})}clearColorGradingCompare(e){this._sendControl("set-color-grading-compare",{target:e,compare:{enabled:!1}})}setRuntimeData(e,t){if(!/^[a-z][a-z0-9-]{0,63}$/.test(e))throw new Error(`Invalid HyperFrames runtime-data channel: ${e}`);if(typeof structuredClone!="function")throw new Error("HyperFrames runtime data requires structuredClone support; refusing an unverified payload");let i=structuredClone(t);this._runtimeData.set(e,i),this._deliverRuntimeData(e,i)}clearRuntimeData(e){if(!/^[a-z][a-z0-9-]{0,63}$/.test(e))throw new Error(`Invalid HyperFrames runtime-data channel: ${e}`);this._runtimeData.delete(e),this._deliverRuntimeDataClear(e)}get currentTime(){return this._currentTime}set currentTime(e){this.seek(e)}get duration(){return this._duration}get compositionWidth(){return this._compositionWidth}get compositionHeight(){return this._compositionHeight}get paused(){return this._paused}get ready(){return this._ready}get assetsReady(){return this._assetsReady}get painted(){return this._painted}get playbackRate(){return At(parseFloat(this.getAttribute("playback-rate")||"1"))}set playbackRate(e){this.setAttribute("playback-rate",String(At(e)))}get shaderCaptureScale(){return Jn(this)}set shaderCaptureScale(e){this.setAttribute(W,String(e))}get shaderLoading(){return fe(this)}set shaderLoading(e){e==="composition"?this.removeAttribute(X):this.setAttribute(X,e)}get assetsLoadingUi(){return this.getAttribute(be)==="none"?"none":"player"}set assetsLoadingUi(e){e==="none"?this.setAttribute(be,"none"):this.removeAttribute(be)}get muted(){return this.hasAttribute("muted")}set muted(e){e?this.setAttribute("muted",""):this.removeAttribute("muted")}get audioLocked(){return this.hasAttribute("audio-locked")}set audioLocked(e){e?this.setAttribute("audio-locked",""):this.removeAttribute("audio-locked")}_isLockedHostEnvironment(){if(typeof navigator>"u")return!1;let e=navigator.userAgent||"";return/\bClaude\/\d/.test(e)&&/\bElectron\b/.test(e)}_isAudioLocked(){return this.hasAttribute("audio-locked")||this._isLockedHostEnvironment()}_isSlideshowPlayer(){return this.closest("hyperframes-slideshow")!==null}_handleMutedChange(e){if(e===null&&this._isAudioLocked()){this.setAttribute("muted","");return}this._media.updateMuted(e!==null),this._syncVideoAudio(),this._setIframeMediaMuted(e!==null),this._sendControl("set-muted",{muted:e!==null}),this.controlsApi?.updateMuted(e!==null),this._emit(new Event("volumechange"))}_applyAudioLock(e){e&&(this.muted=!0),this.controlsApi?.setVolumeControlsHidden(e)}get volume(){return this._volume}set volume(e){this.setAttribute("volume",String(Math.max(0,Math.min(1,e))))}get disableClickToPlay(){return this.hasAttribute(ri)}set disableClickToPlay(e){this.toggleAttribute(ri,e)}get loop(){return this.hasAttribute("loop")}set loop(e){e?this.setAttribute("loop",""):this.removeAttribute("loop")}get rangeStart(){return this._readSeconds(ge)}set rangeStart(e){this._writeSeconds(ge,e)}get rangeEnd(){return this._readSeconds(_e)}set rangeEnd(e){this._writeSeconds(_e,e)}_readSeconds(e){let t=this.getAttribute(e);return t===null?null:Number(t)}_writeSeconds(e,t){t==null?this.removeAttribute(e):this.setAttribute(e,String(t))}_hasPlayRange(){return this.hasAttribute(ge)||this.hasAttribute(_e)}_playRange(){return pt(this.rangeStart,this.rangeEnd,this._duration).range}_sendPlayRange(e){let t=e?.end??null;this._sendControl("set-play-range",{startSeconds:e?.start??null,endSeconds:t})}_applyPlayRange(e){let{range:t,clamped:i}=pt(this.rangeStart,this.rangeEnd,this._duration);this._sendPlayRange(t),this._ready&&(this._reportRangeClamp(t,i),t&&e&&!this._pendingPlay&&this._moveIntoPlayRange(t))}_reportRangeClamp(e,t){let i=t?`${this.rangeStart},${this.rangeEnd},${this._duration}`:"";if(i===this._rangeClampReported||(this._rangeClampReported=i,!t))return;let r={rangeStart:e?.start??null,rangeEnd:e?.end??null};this._emit(new CustomEvent("rangeclamped",{detail:{...r,duration:this._duration}}))}_moveIntoPlayRange(e){ft(this._currentTime,e,this._duration,this._runtimeFps)&&(this._paused?this.seek(e.start):this._jumpWhilePlaying(e.start))}_jumpWhilePlaying(e){this._directTimelineAdapter?(this._directTimelineAdapter.seek(e,!1),this._currentTime=e):this._runtimeOwnsPlayRange||(this.seek(e),this._enteringRange=!0,this._play(!1))}_clockStop(){let e=this._playRange(),t=e?.end??this._duration;if(!e)return{end:t,shown:t};let i=pe(e,this._duration,this._runtimeFps);return{end:t,shown:i<t?(i+t)/2:i}}_sendControl(e,t={}){try{let i=this.iframe.contentWindow;return i?(i.postMessage({...t,source:"hf-parent",type:"control",action:e,...ut(this._runtimeFps)},"*"),!0):((e==="set-runtime-data"||e==="clear-runtime-data")&&this._rejectRuntimeDataDelivery(t.channel,t.requestId,"Composition iframe is unavailable"),!1)}catch(i){return(e==="set-runtime-data"||e==="clear-runtime-data")&&this._rejectRuntimeDataDelivery(t.channel,t.requestId,i instanceof Error?i.message:String(i)),!1}}_deliverRuntimeData(e,t){if(!this.isConnected||!this._runtimeBridgeReady)return;let i=this._beginRuntimeDataDelivery(e);this._trySetRuntimeDataDirect(e,t,i)||this._sendControl("set-runtime-data",{channel:e,payload:t,requestId:i})}_deliverRuntimeDataClear(e){if(!this.isConnected||!this._runtimeBridgeReady)return;let t=this._beginRuntimeDataDelivery(e);this._tryClearRuntimeDataDirect(e,t)||this._sendControl("clear-runtime-data",{channel:e,requestId:t})}_trySetRuntimeDataDirect(e,t,i){try{let r=this.iframe.contentWindow?.__hyperframes;return typeof r?.setRuntimeData!="function"?!1:(r.setRuntimeData(e,t,i),!0)}catch{return!1}}_tryClearRuntimeDataDirect(e,t){try{let i=this.iframe.contentWindow?.__hyperframes;return typeof i?.clearRuntimeData!="function"?!1:(i.clearRuntimeData(e,t),!0)}catch{return!1}}_replayRuntimeData(){for(let[e,t]of this._runtimeData)this._deliverRuntimeData(e,t)}_beginRuntimeDataDelivery(e){let t=this._pendingRuntimeData.get(e);t&&window.clearTimeout(t.timeoutId),this._runtimeDataRequestId+=1;let i=this._runtimeDataRequestId,r=window.setTimeout(()=>{this._rejectRuntimeDataDelivery(e,i,`Runtime data delivery timed out after ${ii}ms`)},ii);return this._pendingRuntimeData.set(e,{requestId:i,timeoutId:r}),i}_resolveRuntimeDataDelivery(e,t){let i=this._takeRuntimeDataDelivery(e,t);i&&this._emit(new CustomEvent("runtimedataapplied",{detail:{channel:e,requestId:i.requestId}}))}_rejectRuntimeDataDelivery(e,t,i){let r=this._takeRuntimeDataDelivery(e,t);r&&this._emit(new CustomEvent("runtimedataerror",{detail:{channel:e,requestId:r.requestId,message:typeof i=="string"?i:String(i)}}))}_takeRuntimeDataDelivery(e,t){if(typeof e!="string"||typeof t!="number"||!Number.isSafeInteger(t))return null;let i=this._pendingRuntimeData.get(e);return!i||i.requestId!==t?null:(window.clearTimeout(i.timeoutId),this._pendingRuntimeData.delete(e),i)}_rejectAllRuntimeDataDeliveries(e){for(let[t,i]of[...this._pendingRuntimeData])this._rejectRuntimeDataDelivery(t,i.requestId,e)}_getSameOriginIframeDocument(){try{return this.iframe.contentDocument}catch{return null}}_setIframeMediaMuted(e){let t=this._getSameOriginIframeDocument();if(t)for(let i of t.querySelectorAll("video, audio"))w(i)&&(i.muted=e||i.defaultMuted)}_stopIframeMedia(){let e=this._getSameOriginIframeDocument();if(e)for(let t of e.querySelectorAll("video, audio"))w(t)&&t.pause()}_replayBridgeState(){this._sendControl("set-muted",{muted:this.muted}),this._sendControl("set-volume",{volume:this._volume}),this._sendControl("set-playback-rate",{playbackRate:this.playbackRate}),this._sendControl("set-native-media-sync-disabled",{disabled:this._isSlideshowPlayer()}),this._sendControl("set-web-audio-media-disabled",{disabled:this._isSlideshowPlayer()}),this._sendControl("set-idle-heartbeat",{slow:this.hasAttribute(St)}),this._sendDisplayScale()}_sendDisplayScale(){let e=Fn(this.iframe);e&&this._sendControl("set-display-scale",{scale:e})}_reloadShaderOptions(){if(!this._videoSource){if(this._abandonComposition("Shader options changed before runtime data was applied"),this.hasAttribute("srcdoc")){this.iframe.srcdoc=he(this,this.getAttribute("srcdoc")||"");return}this.hasAttribute("src")&&this._loadSrc(this.getAttribute("src")||"")}}_navigateSrc(e){this._pendingPlay=!1,this._pauseForVideoSwitch(),this._abandonComposition("Composition navigated before runtime data was applied"),this._loadSrc(e)}_wantsVideo(){return ti(this.getAttribute("type"))&&!this.hasAttribute("srcdoc")}_pauseForVideoSwitch(){!this._videoSource&&!this._wantsVideo()||(this._paused=!0,this.controlsApi?.updatePlaying(!1))}_loadSrc(e){if(this._wantsVideo()){this._loadVideo(e);return}this._teardownVideo(),this.iframe.src=Qn(this,e)}_loadVideo(e){this._videoSource||(this._videoSource=ni({onMetadata:r=>this._applyThenEmit(()=>this._onVideoReady(r)),onDurationChange:r=>this._applyTimelineDuration(r.duration),onResize:r=>this._applyVideoSize(r),onPlay:r=>{!r.paused&&this._paused&&this.play()},onPause:r=>{r.paused&&!r.ended&&!this._paused&&this.pause()},onTimeUpdate:()=>{document.hidden&&this._playRange()&&this._directTimelineClock.poll()},onError:(r,o)=>{this._paused||this.pause(),this._emit(new CustomEvent("error",{detail:{message:r,code:o}}))},onPlayRejected:r=>this._onVideoPlayRejected(r)}),this.container.appendChild(this._videoSource.video),this.iframe.hidden=!0,this.iframe.src="about:blank"),this.probe.stop();let{video:t,adapter:i}=this._videoSource;this._directTimelineAdapter=i,this._currentTime=0,this._duration=0,this.controlsApi?.updateTime(0,0),this._syncVideoAudio(),i.timeScale?.(this.playbackRate),t.src=e}_teardownVideo(){this._videoSource&&(this._videoSource.destroy(),this._videoSource=null,this.iframe.hidden=!1)}_syncVideoAudio(){this._videoSource&&(this._videoSource.video.muted=this.muted,this._videoSource.video.volume=this._volume)}_onVideoReady(e){this._applyTimelineDuration(e.duration),this._applyVideoSize(e),this._ready=!0,this._dispatchReady(),this._waitForAssetsReady(null),this._afterEvents(()=>{this.hasAttribute("autoplay")&&this._paused&&this.play()})}_applyTimelineDuration(e){!Number.isFinite(e)||e<=0||(this._setDuration(e),this.controlsApi?.updateTime(this._currentTime,e))}_applyVideoSize(e){e.videoWidth>0&&e.videoHeight>0&&this._setCompositionSize(e.videoWidth,e.videoHeight)}_onVideoPlayRejected(e){e instanceof DOMException&&e.name==="NotAllowedError"&&(this._paused||this.pause(),this._emit(new CustomEvent("playbackerror",{detail:{source:"video",error:e}})))}_trySyncSeek(e){if(this._videoSource)return!1;try{let i=this.iframe.contentWindow?.__player;return typeof i?.seek!="function"?!1:(i.seek.call(i,e),!0)}catch{return!1}}_withDirectTimeline(e){let t=this._videoSource?null:this.probe.resolveDirectTimelineAdapter(),i=t||this._directTimelineAdapter;if(!i)return!1;try{return e(i),t&&t!==this._directTimelineAdapter&&this._applyTimelineDuration(t.duration()),this._directTimelineAdapter=i,!0}catch{return!1}}_tryDirectTimelineSeek(e){return this._withDirectTimeline(t=>{t.seek(e,!1),t.pause()})}_tryDirectTimelinePlay(){return this._withDirectTimeline(e=>{e.play()})}_tryDirectTimelinePause(){return this._withDirectTimeline(e=>{e.pause()})}_showPausedVideoTime(){this._videoSource&&(this._currentTime=this._videoSource.video.currentTime,this.controlsApi?.updateTime(this._currentTime,this._duration),this._emit(new CustomEvent("timeupdate",{detail:{currentTime:this._currentTime}})))}_startParentTickClock(){this._stopParentTickClock();let e=()=>{if(this._paused){this._parentTickRaf=null;return}this._sendControl("tick"),this._parentTickRaf=requestAnimationFrame(e)};this._parentTickRaf=requestAnimationFrame(e)}_stopParentTickClock(){this._parentTickRaf!==null&&(cancelAnimationFrame(this._parentTickRaf),this._parentTickRaf=null)}_onMessage(e){this._videoSource||this.probe.failed||this._applyThenEmit(()=>this._handleRuntimeMessage(e))}_handleRuntimeMessage(e){qn(e,this.iframe.contentWindow,{getPlaybackState:()=>({currentTime:this._currentTime,duration:this._duration,paused:this._paused,lastUpdateMs:this._lastUpdateMs,enteringRange:this._enteringRange}),setPlaybackState:({currentTime:t,duration:i,paused:r,lastUpdateMs:o,enteringRange:a})=>{this._enteringRange=a===!0,this._currentTime=t,this._setDuration(i),this._paused=r,this._lastUpdateMs=o},getShaderLoadingMode:()=>fe(this),shaderLoader:this.shaderLoader,setCompositionSize:(t,i)=>this._setCompositionSize(t,i),sendControl:(t,i)=>this._sendControl(t,i),getIframeDoc:()=>this.iframe.contentDocument,onRuntimeReady:()=>{this._runtimeBridgeReady=!0,this._replayBridgeState(),this._hasPlayRange()&&this._sendPlayRange(this._playRange()),this._replayRuntimeData()},onRuntimeAssetsReady:()=>{this._runtimeAssetsReadyGeneration===this._assetsGeneration&&this._settleAssetsReady(this._assetsGeneration)},onRuntimeDataApplied:(t,i)=>this._resolveRuntimeDataDelivery(t,i),onRuntimeDataError:(t,i,r)=>this._rejectRuntimeDataDelivery(t,i,r),onRuntimeTimelineReady:(t,i)=>this._onRuntimeTimelineReady(t,i),setBuffering:t=>this._setBuffering(t),setRuntimeFps:t=>{this._runtimeFps=t},setRuntimeOwnsPlayRange:t=>{this._runtimeOwnsPlayRange=t},shouldPromoteMediaAutoplayFallback:()=>!this._isSlideshowPlayer(),setScenes:t=>{this._scenes=t,this._emit(new CustomEvent("scenes",{detail:{scenes:t}}))},updateControlsTime:(t,i)=>this.controlsApi?.updateTime(t,i),updateControlsPlaying:t=>this.controlsApi?.updatePlaying(t),dispatchEvent:t=>this._emit(t),seek:t=>this.seek(t),play:()=>this.play(),getLoop:()=>this.loop,getPlayRange:()=>this._playRange(),media:this._media})}_onRuntimeTimelineReady(e,t){if(this._ready)return;this.probe.stop(),this._setDuration(e),this._directTimelineAdapter=null,this._ready=!0,this.controlsApi?.updateTime(this._currentTime,e),this._dispatchReady();let i=this._getSameOriginIframeDocument();i&&this._media.setupFromIframe(i),this._replayBridgeState(),this._setIframeMediaMuted(this.muted),this._waitForAssetsReady(i,t),this._playWhenWanted()}_onProbeReady(e){this._applyThenEmit(()=>this._applyProbeResult(e))}_applyProbeResult({duration:e,adapter:t,compositionSize:i}){this._setDuration(e),this._directTimelineAdapter=t.kind==="direct-timeline"?t.timeline:null,i&&this._setCompositionSize(i.width,i.height),this._ready=!0,this.controlsApi?.updateTime(0,e),this._dispatchReady();let r=this._getSameOriginIframeDocument();r&&this._media.setupFromIframe(r),this._setIframeMediaMuted(this.muted),this._waitForAssetsReady(r),this._playWhenWanted()}_waitForAssetsReady(e,t){this._clearAssetsLoadingShowTimer(),this._assetsReady=!1,this._painted=!1;let i=++this._assetsGeneration;if(!e){t===!1?(this._runtimeAssetsReadyGeneration=i,this._startAssetsLoadingOverlayTimer(i),setTimeout(()=>this._settleAssetsReady(i),yt)):this._settleAssetsReady(i);return}Wn(e,({timedOut:r})=>{i===this._assetsGeneration&&(r&&this._warnStuckAssets(e),this._settleAssetsReady(i))},{timeoutMs:yt}),this._assetsReady||this._startAssetsLoadingOverlayTimer(i)}_startAssetsLoadingOverlayTimer(e){this._assetsLoadingShowTimer=setTimeout(()=>{this._assetsLoadingShowTimer=null,!(e!==this._assetsGeneration||this._assetsReady)&&(this.setAttribute(vt,""),this.assetsLoadingUi!=="none"&&this.shaderLoader.showAssetsLoading())},oi)}_setBuffering(e){if(e){if(this._bufferingShowTimer!==null||this.hasAttribute(Ve))return;this._bufferingShowTimer=setTimeout(()=>{this._bufferingShowTimer=null,this.setAttribute(Ve,""),this.assetsLoadingUi!=="none"&&this.shaderLoader.showAssetsLoading("Buffering","")},oi);return}this._bufferingShowTimer!==null&&clearTimeout(this._bufferingShowTimer),this._bufferingShowTimer=null,this.hasAttribute(Ve)&&(this.removeAttribute(Ve),this.shaderLoader.hideAssetsLoading())}_hasPendingFirstFrameAssets(e){let{pendingMedia:t,pendingImages:i,fontsLoading:r}=Ne(e,{scope:Y});return t.length>0||i.length>0||r}_warnStuckAssets(e){let{pendingMedia:t,pendingImages:i,fontsLoading:r}=Ne(e,{scope:Y}),o=e.defaultView;console.warn(`[hyperframes-player] assets-loading timed out after ${yt}ms, playing anyway`,{stuckMedia:t.map(a=>a.currentSrc||a.getAttribute("src")||`<${a.tagName.toLowerCase()}>`),stuckImages:i.map(a=>a.currentSrc||a.getAttribute("src")||"<img>"),fontsLoading:r,computeReady:o?.__renderReady===!0,documentHidden:e.hidden===!0})}_settleAssetsReady(e){e!==this._assetsGeneration||this._assetsReady||(this._clearAssetsLoadingShowTimer(),this._assetsReady=!0,this.removeAttribute(vt),this.shaderLoader.hideAssetsLoading(),this._emit(new Event("assetsready")),this.shaderLoader.whenHidden(()=>{e===this._assetsGeneration&&(this._painted=!0,this._emit(new Event("painted")))}),this._afterEvents(()=>{this._pendingPlay&&this.play()}))}_abandonComposition(e){this.probe.stop(),this._ready=!1,this._readyDocument=null,this._invalidateAssetsWait(),this._releaseDocument(),this._runtimeBridgeReady=!1,this._rejectAllRuntimeDataDeliveries(e)}_releaseDocument(){this._runtimeOwnsPlayRange=!1,this._enteringRange=!1,this._directTimelineAdapter=null,this._directTimelineClock.stop(),this._stopParentTickClock(),this._setBuffering(!1),this.shaderLoader.reset(),this._media.resetForIframeLoad()}_invalidateAssetsWait(){this._clearAssetsLoadingShowTimer(),this._assetsReady=!1,this._painted=!1,this._assetsGeneration++,this.removeAttribute(vt),this.shaderLoader.hide()}_clearAssetsLoadingShowTimer(){this._assetsLoadingShowTimer!==null&&(clearTimeout(this._assetsLoadingShowTimer),this._assetsLoadingShowTimer=null)}_dispatchReady(){this._readyDocument=this._getSameOriginIframeDocument();let e={duration:this._duration,compositionWidth:this._compositionWidth,compositionHeight:this._compositionHeight};this._emit(new CustomEvent("ready",{detail:e})),this._rescale(),this._rangeClampReported="",this._hasPlayRange()&&this._applyPlayRange(!0)}_setDuration(e){e!==this._duration&&(this._duration=e,this._ready&&(this._emit(new CustomEvent("durationchange",{detail:{duration:e}})),this._hasPlayRange()&&this._applyPlayRange(!1)))}_setCompositionSize(e,t){let i=e!==this._compositionWidth||t!==this._compositionHeight;if(this._compositionWidth=e,this._compositionHeight=t,this.sizer.style.aspectRatio=`${e} / ${t}`,this._rescale(),!i)return;let r={compositionWidth:e,compositionHeight:t};this._emit(new CustomEvent("resize",{detail:r}))}_applyThenEmit(e){if(this._afterUpdate){e();return}let t=[];this._afterUpdate=t;let i=[],r=o=>{try{o()}catch(a){i.push(a)}};r(e);for(let o of t)r(o);if(this._afterUpdate=null,i.length>0)throw i[0]}_afterEvents(e){this._afterUpdate?this._afterUpdate.push(e):e()}_playWhenWanted(){this._afterEvents(()=>{(this.hasAttribute("autoplay")||this._pendingPlay)&&this.play()})}_emit(e){this._afterEvents(()=>this.dispatchEvent(e))}_rescale(){let e=Mn(this,this.iframe,this._compositionWidth,this._compositionHeight);e&&this._sendDisplayScale(),!e&&this._ready&&!this._rescaleWarned&&(this._rescaleWarned=!0,console.warn("[hyperframes-player] rescale no-op after ready: zero-size player element",{src:this.getAttribute("src"),offsetWidth:this.offsetWidth,offsetHeight:this.offsetHeight,compositionWidth:this._compositionWidth,compositionHeight:this._compositionHeight}))}_onIframeLoad(){if(!this._connected||this._videoSource)return;let e=this._getSameOriginIframeDocument();if(this._ready&&e===this._readyDocument){e&&this._hasPendingFirstFrameAssets(e)&&this._waitForAssetsReady(e);return}this._ready=!1,this._invalidateAssetsWait(),this._releaseDocument(),this.probe.start()}_setupControls(){this.controlsApi||(this.controlsApi=Rn(this.shadow,this.muted,this._volume,this.getAttribute("speed-presets"),{onPlay:()=>this.play(),onPause:()=>this.pause(),onSeek:e=>this.seek(e*this._duration),onScrubStart:()=>{this._scrubbing=!0},onScrubEnd:()=>{this._scrubbing=!1,this.seek(this._currentTime)},onSpeedChange:e=>{this.playbackRate=e},onMuteToggle:()=>{this.muted=!this.muted},onVolumeChange:e=>{this.volume=e}},this._isAudioLocked()),this.controlsApi.updateTime(this._currentTime,this._duration),this.controlsApi.updatePlaying(!this._paused),this.controlsApi.updateSpeed(this.playbackRate))}get _audioOwner(){return this._media.audioOwner}get _parentMedia(){return this._media.entries}_mirrorParentMediaTime(e,t){this._media.mirrorTime(e,t)}_promoteToParentProxy(){let e=null;try{e=this.iframe.contentDocument}catch{}this._media.promoteToParentProxy(e,(t,i)=>this._mirrorParentMediaTime(t,i)),this._sendControl("set-media-output-muted",{muted:!0})}_observeDynamicMedia(e){this._media.setupFromIframe(e)}};customElements.get("hyperframes-player")||customElements.define("hyperframes-player",Et);export{Et as HyperframesPlayer,En as SPEED_PRESETS,q as formatSpeed,at as formatTime};
477
+ `,Sn='<svg width="24" height="24" viewBox="46 21 54 56" fill="currentColor"><path d="M87.5129 57.5141L56.9696 73.5433C52.8371 75.7098 48.7046 73.2553 49.6688 69.2104L58.9483 30.1391C59.9125 26.0942 65.2097 23.6397 68.3154 25.8062L91.2447 41.8354C96.4668 45.4796 94.4631 53.8699 87.5129 57.5141Z"/></svg>',An='<svg width="24" height="24" viewBox="0 0 18 18" fill="currentColor"><rect x="3" y="2" width="4" height="14"/><rect x="11" y="2" width="4" height="14"/></svg>',ot='<svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor"><path d="M3 9v6h4l5 5V4L7 9H3z"/><path d="M16.5 12c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02z"/><path d="M14 3.23v2.06c2.89.86 5 3.54 5 6.71s-2.11 5.85-5 6.71v2.06c4.01-.91 7-4.49 7-8.77s-2.99-7.86-7-8.77z"/></svg>',at='<svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor"><path d="M3 9v6h4l5 5V4L7 9H3z"/><path d="M16.5 12c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02z"/></svg>',En='<svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor"><path d="M3 9v6h4l5 5V4L7 9H3z"/><path d="M16.5 12c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02z" opacity="0.3"/><line x1="18" y1="7" x2="14" y2="17" stroke="currentColor" stroke-width="2"/></svg>';var Tn=[.25,.5,1,1.5,2,4];function q(n){return Number.isInteger(n)?`${n}x`:`${n}x`}function st(n){if(!Number.isFinite(n)||n<0)return"0:00";let e=Math.floor(n),t=Math.floor(e/60),i=e%60;return`${t}:${i.toString().padStart(2,"0")}`}function Rn(n,e,t={}){let i=t.speedPresets??Tn,r=document.createElement("div");r.className="hfp-controls",r.addEventListener("click",m=>{m.stopPropagation()});let o=document.createElement("button");o.className="hfp-play-btn",o.type="button",o.innerHTML=`<span class="hfp-ico hfp-ico-play">${Sn}</span><span class="hfp-ico hfp-ico-pause">${An}</span>`,o.setAttribute("aria-label","Play");let a=document.createElement("div");a.className="hfp-scrubber";let s=document.createElement("div");s.className="hfp-progress",s.style.width="0%",a.appendChild(s);let l=document.createElement("span");l.className="hfp-time",l.textContent="0:00 / 0:00";let u=document.createElement("div");u.className="hfp-speed-wrap";let c=document.createElement("button");c.className="hfp-speed-btn",c.type="button",c.textContent="1x",c.setAttribute("aria-label","Playback speed: 1x");let f=document.createElement("div");f.className="hfp-speed-menu",f.setAttribute("role","menu");for(let m of i){let p=document.createElement("button");p.className="hfp-speed-option",p.type="button",p.setAttribute("role","menuitem"),p.dataset.speed=String(m),p.textContent=q(m),m===1&&p.classList.add("hfp-active"),f.appendChild(p)}u.appendChild(f),u.appendChild(c);let v=document.createElement("div");v.className="hfp-volume-wrap";let b=document.createElement("button");b.className="hfp-mute-btn",b.type="button",b.innerHTML=ot,b.setAttribute("aria-label","Mute");let S=document.createElement("div");S.className="hfp-volume-slider-wrap";let _=document.createElement("div");_.className="hfp-volume-slider",_.setAttribute("role","slider"),_.setAttribute("aria-label","Volume"),_.setAttribute("aria-valuemin","0"),_.setAttribute("aria-valuemax","100"),_.setAttribute("aria-valuenow","100"),_.tabIndex=0;let A=document.createElement("div");A.className="hfp-volume-fill",A.style.width="100%",_.appendChild(A),S.appendChild(_),v.appendChild(S),v.appendChild(b),t.audioLocked&&(v.style.display="none"),r.appendChild(o),r.appendChild(a),r.appendChild(l),r.appendChild(v),r.appendChild(u),n.appendChild(r);let C=!1,M=!1,I=1,T=null,U=i.indexOf(1);U===-1&&(U=0);let Z=(m,p)=>m?En:p===0?at:p<.5?at:ot;o.addEventListener("click",m=>{m.stopPropagation(),C?e.onPause():e.onPlay()}),b.addEventListener("click",m=>{m.stopPropagation(),e.onMuteToggle()});let O=!1,J=m=>{let p=_.getBoundingClientRect(),E=Math.max(0,Math.min(1,(m-p.left)/p.width));I=E,A.style.width=`${E*100}%`,_.setAttribute("aria-valuenow",String(Math.round(E*100))),M&&E>0&&e.onMuteToggle(),b.innerHTML=Z(M,E),e.onVolumeChange(E)};_.addEventListener("mousedown",m=>{m.stopPropagation(),O=!0,J(m.clientX)});let d=m=>{O&&J(m.clientX)},h=()=>{O=!1};document.addEventListener("mousemove",d),document.addEventListener("mouseup",h),_.addEventListener("touchstart",m=>{O=!0;let p=m.touches[0];p&&J(p.clientX)},{passive:!0});let g=m=>{if(O){let p=m.touches[0];p&&J(p.clientX)}},R=()=>{O=!1};document.addEventListener("touchmove",g,{passive:!0}),document.addEventListener("touchend",R);let k=.05;_.addEventListener("keydown",m=>{let p=I;if(m.key==="ArrowRight"||m.key==="ArrowUp")p=Math.min(1,I+k);else if(m.key==="ArrowLeft"||m.key==="ArrowDown")p=Math.max(0,I-k);else return;m.preventDefault(),m.stopPropagation(),I=p,A.style.width=`${p*100}%`,_.setAttribute("aria-valuenow",String(Math.round(p*100))),M&&p>0&&e.onMuteToggle(),b.innerHTML=Z(M,p),e.onVolumeChange(p)});let ye=m=>{for(let p of f.querySelectorAll(".hfp-speed-option"))p.classList.toggle("hfp-active",p.dataset.speed===String(m))};c.addEventListener("click",m=>{m.stopPropagation();let p=f.classList.toggle("hfp-open");c.setAttribute("aria-expanded",String(p))}),f.addEventListener("click",m=>{m.stopPropagation();let p=m.target.closest(".hfp-speed-option");if(!p)return;let E=parseFloat(p.dataset.speed);U=i.indexOf(E),c.textContent=q(E),c.setAttribute("aria-label",`Playback speed: ${q(E)}`),ye(E),f.classList.remove("hfp-open"),c.setAttribute("aria-expanded","false"),e.onSpeedChange(E)});let ve=()=>{f.classList.remove("hfp-open"),c.setAttribute("aria-expanded","false")};document.addEventListener("click",ve);let H=m=>{let p=a.getBoundingClientRect(),E=Math.max(0,Math.min(1,(m-p.left)/p.width));e.onSeek(E)},D=!1;a.addEventListener("mousedown",m=>{m.stopPropagation(),D=!0,e.onScrubStart?.(),H(m.clientX)});let Rt=m=>{D&&H(m.clientX)},xt=()=>{D&&(D=!1,e.onScrubEnd?.())};document.addEventListener("mousemove",Rt),document.addEventListener("mouseup",xt),a.addEventListener("touchstart",m=>{D=!0,e.onScrubStart?.();let p=m.touches[0];p&&H(p.clientX)},{passive:!0});let wt=m=>{if(D){let p=m.touches[0];p&&H(p.clientX)}},kt=()=>{D&&(D=!1,e.onScrubEnd?.())};document.addEventListener("touchmove",wt,{passive:!0}),document.addEventListener("touchend",kt);let Mt=()=>C&&!D&&!O&&!r.querySelector(":focus-visible"),Ct=()=>{r.classList.remove("hfp-hidden"),T&&clearTimeout(T),T=setTimeout(()=>{Mt()&&r.classList.add("hfp-hidden")},3e3)},F=n instanceof ShadowRoot?n.host:n,B=()=>Ct(),It=()=>{Mt()&&r.classList.add("hfp-hidden")};return F.addEventListener("mousemove",B),F.addEventListener("keydown",B),F.addEventListener("focusin",B),F.addEventListener("mouseleave",It),{updateTime(m,p){let E=p>0?Math.min(m,p):m,si=p>0?E/p*100:0;s.style.width=`${si}%`,l.textContent=`${st(E)} / ${st(p)}`},updatePlaying(m){let p=m!==C;C=m,o.classList.toggle("hfp-playing",m),o.setAttribute("aria-label",m?"Pause":"Play"),m?p&&Ct():(T&&clearTimeout(T),r.classList.remove("hfp-hidden"))},updateSpeed(m){let p=i.indexOf(m);p!==-1&&(U=p),c.textContent=q(m),c.setAttribute("aria-label",`Playback speed: ${q(m)}`),ye(m)},updateMuted(m){M=m,b.innerHTML=Z(m,I),b.setAttribute("aria-label",m?"Unmute":"Mute")},updateVolume(m){I=m,A.style.width=`${m*100}%`,_.setAttribute("aria-valuenow",String(Math.round(m*100))),b.innerHTML=Z(M,m)},setVolumeControlsHidden(m){v.style.display=m?"none":""},show(){r.style.display=""},hide(){r.style.display="none"},destroy(){document.removeEventListener("mousemove",Rt),document.removeEventListener("mouseup",xt),document.removeEventListener("touchmove",wt),document.removeEventListener("touchend",kt),document.removeEventListener("mousemove",d),document.removeEventListener("mouseup",h),document.removeEventListener("touchmove",g),document.removeEventListener("touchend",R),document.removeEventListener("click",ve),F.removeEventListener("mousemove",B),F.removeEventListener("keydown",B),F.removeEventListener("focusin",B),F.removeEventListener("mouseleave",It),T&&clearTimeout(T),r.remove()}}}function xn(n,e,t,i,r,o=!1){let a=i?i.split(",").map(Number).filter(u=>!isNaN(u)&&u>0):void 0,s={...a?{speedPresets:a}:{},audioLocked:o},l=Rn(n,r,s);return l.updateMuted(e),l.updateVolume(t),l}function lt(n,e,t){return e?(t||(t=document.createElement("img"),t.className="hfp-poster",n.appendChild(t)),t.src=e,t):(t?.remove(),null)}function wn(n){return n.composedPath().some(e=>e instanceof HTMLElement&&e.classList.contains("hfp-controls"))}var De=null;function kn(n,e){if(typeof CSSStyleSheet<"u")try{De||(De=new CSSStyleSheet,De.replaceSync(e)),n.adoptedStyleSheets=[De];return}catch{}let t=document.createElement("style");t.textContent=e,n.appendChild(t)}function Mn(){let n=document.createElement("div");n.className="hfp-container";let e=document.createElement("iframe");return e.className="hfp-iframe",e.sandbox.add("allow-scripts","allow-same-origin"),e.allow="autoplay; fullscreen",e.referrerPolicy="no-referrer",e.title="HyperFrames Composition",n.appendChild(e),{container:n,iframe:e}}function Cn(n,e,t,i){let r=n.offsetWidth,o=n.offsetHeight;if(r===0||o===0)return!1;let a=Math.min(r/t,o/i);return e.style.width=`${t}px`,e.style.height=`${i}px`,e.style.transform=`translate(-50%, -50%) scale(${a})`,!0}function lr(n,e,t){if(t.end<=0)return!1;let i=t.shown<t.end&&e>0?e+.001:0;return n+i>=t.end}var Pe=class{constructor(e){this._callbacks=e}_callbacks;_raf=null;_lastUpdateMs=0;_tick=null;start(e,t,i,r,o){this.stop();let a=null,s=0,l=0,u=()=>{if(r()){this._raf=null;return}let c;try{c=e.time()}catch{this._raf=null;return}let f=i(),v=o();v.end>0&&(c=Math.min(c,v.end));let b=a===null?0:c-a;b!==0&&(l=Math.min(b,s),s=b),a=c;let S=lr(c,l,v);S&&(c=v.shown);let _=performance.now();if((_-this._lastUpdateMs>100||S)&&(this._lastUpdateMs=_,this._callbacks.onTimeUpdate(c,f)),S){if(this._callbacks.getLoop()){this._callbacks.restart();return}try{e.pause(),v.shown<v.end&&e.seek(v.shown,!1)}catch{}this._callbacks.onPaused(),this._raf=null;return}this._raf=requestAnimationFrame(u)};this._tick=u,this._raf=requestAnimationFrame(u)}poll(){this._raf===null||!this._tick||(cancelAnimationFrame(this._raf),this._tick())}stop(){this._raf!==null&&(cancelAnimationFrame(this._raf),this._raf=null)}get isRunning(){return this._raf!==null}};function In(n){let e=Array.from(n.querySelectorAll("[data-composition-id]"));if(e.length===0)return n.body?[n.body]:[];let t=[];for(let i of e)dr(i)||t.push(i);return ur(n),t}function ur(n){let e=n.body;if(!e||typeof console>"u"||typeof console.warn!="function")return;let t=e.querySelectorAll("audio[data-start], video[data-start]");if(t.length===0)return;let i=[];for(let r of t)r.closest("[data-composition-id]")||i.push(r);i.length!==0&&console.warn(`[hyperframes-player] selectMediaObserverTargets: composition hosts are present, but ${i.length} body-level timed media element(s) sit outside every [data-composition-id] subtree and will not be observed. Move them inside a composition host or the parent-frame proxy will never adopt them.`,i)}function dr(n){let e=n.parentElement;for(;e;){if(e.hasAttribute("data-composition-id"))return!0;e=e.parentElement}return!1}var cr=["backdrop-filter","clip-path","filter","mask","mask-border-source","mask-image","perspective","rotate","scale","transform","translate","-webkit-mask-image"],Wa=new Set([...cr,"contain","isolation","mask-border","mix-blend-mode","opacity"]);var Dn=n=>4*Number.EPSILON*Math.max(1,Math.abs(n));function Le(n,e){return!Number.isFinite(n)||!Number.isFinite(e)?n===e:Math.abs(n-e)<=Dn(Math.max(Math.abs(n),Math.abs(e)))}var Pn=(n,e)=>n>=e||Le(n,e),ut=(n,e,t)=>Pn(n,e)&&n<t&&!Le(n,t),mr=1e-6,Ln=(n,e,t,i)=>ut(n,e,t)||Pn(n,e)&&i>0&&t>=i-mr;function pr(n){return Number.isFinite(n)&&n>0?n:30}function fr(n){return Number.isFinite(n)&&n>0?n:0}function Nn(n,e){let t=pr(e),i=fr(n),r=i*t,o=Math.round(r);return Math.abs(r-o)<=.001?o/t:i}function On(n,e,t){return{start:Nn(n,t),end:Number.isFinite(e)?Nn(e,t):e}}var hr=["seconds-time","rational-fps","seek-keep-playing","composition-manifest-v1","runtime-data","play-range"];function br(n,e){let t=Math.abs(n),i=Math.abs(e);for(;i!==0;){let r=t%i;t=i,i=r}return t||1}function gr(n){let e=Number.isFinite(n)&&n>0?n:30,t=Math.abs(e*1001-Math.round(e*1001))<1e-6,i=Number.isInteger(e)?1:t?1001:1e6,r=Math.round(e*i),o=br(r,i);return{numerator:r/o,denominator:i/o}}function Fn(n,e,t){return Math.max(n,(Math.ceil(e*t-1e-6)-1)/t)}function _r(n){if(typeof n!="object"||n===null)return null;let e=n;return!Number.isFinite(e.numerator)||!Number.isFinite(e.denominator)||(e.numerator??0)<=0||(e.denominator??0)<=0?null:Number(e.numerator)/Number(e.denominator)}function dt(n){return{protocolVersion:1,capabilities:hr,fps:gr(n)}}function Un(n){let e=n.offsetWidth,t=n.getBoundingClientRect().width;return e>0&&t>0?t/e:null}function yr(n){return Array.isArray(n)&&n.every(e=>typeof e=="string")}function Hn(n,e=30){if(typeof n!="object"||n===null)return{status:"legacy",fps:e};let t=n;if(t.protocolVersion===void 0)return{status:"legacy",fps:e};if(t.protocolVersion!==1)return{status:"unsupported",code:"unsupported_protocol_version",receivedVersion:t.protocolVersion};let i=_r(t.fps);return i===null||!yr(t.capabilities)?{status:"unsupported",code:"invalid_protocol_metadata",receivedVersion:t.protocolVersion}:{status:"supported",fps:i,metadata:t}}function vr(n,e){let t=n.tagName.toLowerCase();if(t==="script"||t==="style"||t==="link"||t==="meta")return null;let r=t==="video"||t==="audio"?e.resolver.resolveMediaStartForElement(n):e.resolver.resolveStartForElement(n,0),o=e.resolver.resolveDurationForElement(n),a=n.getAttribute("data-composition-id");if(a){let l=e.timelineRegistry[a],u=ae(l);!(n.hasAttribute("data-duration")||n.hasAttribute("data-end")||n.hasAttribute(nn)||n.hasAttribute(rn))&&(o==null||o<=0)&&u!=null&&u>0&&(o=u)}let s=a!==null&&n===Q(n.ownerDocument);return{start:r,end:!s&&o!=null&&o>0?r+o:Number.POSITIVE_INFINITY}}function Vn(n,e){let t=vr(n,e);if(!t)return!1;let i=e.exportRenderSeek?On(t.start,t.end,e.canonicalFps):t;return Ln(e.currentTime,i.start,i.end,e.compositionDuration)}var Y="first-frame",Sr=3;function ce(n){let e=n.ownerDocument?.defaultView;return e&&n instanceof e.Element?!0:n instanceof Element}function w(n){if(!ce(n)||n.tagName!=="AUDIO"&&n.tagName!=="VIDEO")return!1;let e=n.ownerDocument?.defaultView;return e&&n instanceof e.HTMLMediaElement?!0:n instanceof HTMLMediaElement}function Ar(n){return n.hasAttribute("data-start")||n.hasAttribute("data-track-index")}function Er(n,e,t){let i=n;for(;i;){if(Ar(i)&&!Vn(i,{currentTime:0,compositionDuration:Number.POSITIVE_INFINITY,canonicalFps:30,exportRenderSeek:!1,timelineRegistry:t,resolver:e}))return!1;i=i.parentElement}return!0}function Wn(n,e,t,i){return e==="all"?!0:Er(n,t,i)}function Ne(n,{scope:e="all"}={}){let t=n.defaultView,i=le({documentRef:n,timelineRegistry:t?.__timelines,includeAuthoredTimingAttrs:!0}),r=n.querySelector(`meta[name="${hn}"]`)!==null,o=Array.from(n.querySelectorAll("video, audio")).filter(w).filter(l=>Wn(l,r&&l.preload!=="auto"?Y:e,i,t?.__timelines??{})).filter(l=>l.readyState<Sr),a=Array.from(n.querySelectorAll("img")).filter(l=>Wn(l,l.getAttribute("loading")?.toLowerCase()==="lazy"?Y:e,i,t?.__timelines??{})).filter(l=>!l.complete),s=n.fonts?.status==="loading";return{pendingMedia:o,pendingImages:a,fontsLoading:s}}function Tr(n,{pendingMedia:e,pendingImages:t,fontsLoading:i},r){let o=e.map(l=>new Promise(u=>{if(l.error){u();return}let c=()=>{l.removeEventListener("canplay",c),l.removeEventListener("error",c),r.removeEventListener("abort",c),u()};l.addEventListener("canplay",c),l.addEventListener("error",c),r.addEventListener("abort",c,{once:!0})})),a=t.map(l=>l.decode?l.decode().catch(()=>{}):Promise.resolve()),s=i&&n.fonts?n.fonts.ready.then(()=>{}):Promise.resolve();return Promise.all([...o,...a,s]).then(()=>{})}function Rr(n,e,{scope:t="all"}={}){let i=Ne(n,{scope:t});return i.pendingMedia.length===0&&i.pendingImages.length===0&&!i.fontsLoading?null:Tr(n,i,e)}var xr=50;function wr(n,e){let t=n.defaultView;return!t||t.__renderReady||!t.__hf?null:new Promise(i=>{let r,o=()=>{r!==void 0&&clearTimeout(r),e.removeEventListener("abort",o),i()};if(e.aborted){o();return}e.addEventListener("abort",o,{once:!0});let a=()=>{if(t.__renderReady){o();return}r=setTimeout(a,xr)};a()})}var kr=50,Mr=1.5,Cr=2,Ir=1500;function ct(n,e){return new Promise(t=>{if(e.aborted){t(-1);return}let i=0,r=()=>{n.cancelAnimationFrame?.(i),t(-1)};e.addEventListener("abort",r,{once:!0}),i=n.requestAnimationFrame(o=>{e.removeEventListener("abort",r),t(o)})})}function Dr(n,e){let t=n.defaultView;return t?(async()=>{let i=await ct(t,e);if(e.aborted)return;let r=await ct(t,e),o=r-i,a=0;for(;!e.aborted&&a<Cr;){if(r-i>=Ir)return;let s=await ct(t,e);if(e.aborted)return;let l=s-r;o=Math.min(o,l),a=l<kr||l<=o*Mr?a+1:0,r=s}})():null}var Pr=8e3;function Lr(n,e,t={}){let i=t.inputs??[(u,c)=>Rr(u,c,{scope:t.scope}),wr,Dr],r=new AbortController,o=i.map(u=>u(n,r.signal)).filter(u=>u!==null);if(o.length===0){e({timedOut:!1});return}let a=t.timeoutMs??Pr,s,l=new Promise(u=>{s=setTimeout(()=>u("timed-out"),a)});Promise.race([Promise.all(o).then(()=>"done"),l]).then(u=>{clearTimeout(s),r.abort(),e({timedOut:u==="timed-out"})})}function Bn(n,e,t={}){Lr(n,e,{...t,scope:Y})}function mt(n,e,t){for(let i of e){let r=n.getAttribute(i);if(r===null||r.trim()==="")continue;let o=Number(r);if(Number.isFinite(o))return o}return t}function pt(n){return{start:mt(n,["data-start"],0),duration:mt(n,["data-duration"],0),mediaStart:Ee(e=>n.getAttribute(e)),playbackRate:mt(n,["data-playback-rate"],1)}}var Nr=[[.3,.25],[.1,.1]],Or=.01,Fr=.1,Ur=.1,me=new WeakMap,Oe=new WeakSet;function $n(n,e,t,i,r=n.tagName==="AUDIO"){let o=Math.abs(e);i&&o<=.04&&Oe.delete(n);let a=!Oe.has(n)||o>.5;if(r&&i&&o>Ur&&a)return me.delete(n),Oe.add(n),{rate:t,seek:!0};let s=Math.sign(e),l=me.get(n);if(o>.04)me.set(n,s);else if(l!==s||o<=Or)return me.delete(n),{rate:t,seek:!1};let u=Nr.find(([f])=>o>f)?.[1]??.03,c=r?Math.min(u,Fr):u;return{rate:t*(1+s*c),seek:!1}}function Gn(n){me.delete(n),Oe.delete(n)}var Hr=.004,Vr=1.5,Fe=class{_entries=[];_mediaObserver;_playbackErrorPosted=!1;_audioOwner="runtime";_urlAudioEntry=null;_urlAudioSrc=null;_dispatchEvent;_getMuted;_getVolume;_getPlaybackRate;_getCurrentTime;_isPaused;constructor(e){this._dispatchEvent=e.dispatchEvent,this._getMuted=e.getMuted,this._getVolume=e.getVolume,this._getPlaybackRate=e.getPlaybackRate,this._getCurrentTime=e.getCurrentTime,this._isPaused=e.isPaused}get audioOwner(){return this._audioOwner}get entries(){return this._entries}resetForIframeLoad(){this._playbackErrorPosted=!1;let e=this._audioOwner==="parent";this._audioOwner="runtime",this.pauseAll();for(let t of this._entries)t!==this._urlAudioEntry&&(t.el.src="");this._entries=this._urlAudioEntry?[this._urlAudioEntry]:[],this._urlAudioSrc&&!this._urlAudioEntry&&(this._urlAudioEntry=this._createEntry(this._urlAudioSrc,"audio",0,1/0)),this.teardownObserver(),e&&this._dispatchEvent(new CustomEvent("audioownershipchange",{detail:{owner:"runtime",reason:"iframe-reload"}}))}destroy(){this.teardownObserver();for(let e of this._entries)e.el.pause(),e.el.src="";this._entries=[],this._urlAudioEntry=null,this._urlAudioSrc=null,this._audioOwner="runtime",this._playbackErrorPosted=!1}updateMuted(e){for(let t of this._entries)t.el.muted=e}updateVolume(e){for(let t of this._entries)t.el.volume=e}updatePlaybackRate(e){for(let t of this._entries)t.el.playbackRate=e}_playEntry(e){e.el.src&&e.el.play().catch(t=>this._reportPlaybackError(t))}_playEntryIfActive(e){this._refreshEntryBounds(e),this._inWindow(e,this._getCurrentTime())&&this._playEntry(e)}_refreshEntryBounds(e){if(!e.source?.isConnected)return;let t=Je(e.source);e.start=t.start??0,e.mediaStart=pt(e.source).mediaStart,e.duration=t.duration!=null&&t.duration>0?t.duration:Number.POSITIVE_INFINITY}_inWindow(e,t){return ut(t,e.start,e.start+e.duration)}_preseekUpcoming(e,t){let i=e.start-t;i<=0||i>Vr||!e.el.paused||Math.abs(e.el.currentTime-e.mediaStart)>.04&&this._seekTo(e,e.mediaStart)}_seekTo(e,t,i=!1){let r=i?(e.seekLatency??0)*this._getPlaybackRate():0;e.seekIssuedAt=i?performance.now():void 0,e.el.currentTime=Se(t+r)}_noteSeekLanded(e){if(e.seekIssuedAt===void 0)return;let t=(performance.now()-e.seekIssuedAt)/1e3;e.seekLatency=e.seekLatency===void 0?t:(e.seekLatency+t)/2,e.seekIssuedAt=void 0}_releaseSteering(e){Gn(e.el),e.lastOffset=void 0;let t=this._getPlaybackRate();e.el.playbackRate!==t&&(e.el.playbackRate=t)}_mediaTime(e,t){return t-e.start+e.mediaStart}_gateEntryPlayback(e,t){return this._inWindow(e,t)?(this._audioOwner==="parent"&&!this._isPaused()&&e.el.paused&&this._playEntry(e),!0):(e.el.paused||e.el.pause(),this._releaseSteering(e),!1)}playAll(){for(let e of this._entries)this._playEntryIfActive(e)}primeAll(){if(Dt())for(let e of this._entries)e.el.paused&&(e.el.play().catch(()=>{}),e.el.pause())}pauseAll(){for(let e of this._entries)e.el.pause()}stopAdoptedMedia(){for(let e of this._entries)e.source&&e.el.pause()}seekAll(e){for(let t of this._entries)this._refreshEntryBounds(t),this._inWindow(t,e)&&this._jumpTo(t,this._mediaTime(t,e))}scrubAll(e){for(let t of this._entries)this._refreshEntryBounds(t),this._inWindow(t,e)?(this._jumpTo(t,this._mediaTime(t,e)),this._playEntry(t)):t.el.paused||t.el.pause()}mirrorTime(e,t){let i=t?.force===!0;for(let r of this._entries){this._refreshEntryBounds(r),this._preseekUpcoming(r,e);let o=r.el.paused;if(!this._gateEntryPlayback(r,e))continue;let a=this._mediaTime(r,e),s=a-r.el.currentTime;if(i||o){Math.abs(s)>.04&&this._jumpTo(r,a);continue}this._steer(r,a,s)}}_steer(e,t,i){let r=e.lastOffset!==void 0&&Math.abs(i-e.lastOffset)<Hr;e.lastOffset=i;let{rate:o,seek:a}=$n(e.el,i,this._getPlaybackRate(),r,!0);a?this._jumpTo(e,t,!0):Math.abs(e.el.playbackRate-o)>1e-6&&(e.el.playbackRate=o)}_jumpTo(e,t,i=!1){this._seekTo(e,t,i),this._releaseSteering(e)}promoteToParentProxy(e,t){if(this._audioOwner==="parent")return;if(this._audioOwner="parent",e)for(let r of e.querySelectorAll("video, audio"))w(r)&&(r.muted=!0);for(let r of[...this._entries])this._repointToSource(r);let i=this._getCurrentTime();t?t(i,{force:!0}):this.mirrorTime(i,{force:!0}),this._isPaused()||this.playAll(),this._dispatchEvent(new CustomEvent("audioownershipchange",{detail:{owner:"parent",reason:"autoplay-blocked"}}))}setupFromIframe(e){let t=e.querySelectorAll("audio[data-start], video[data-start]");for(let i of t)w(i)&&this._adoptIframeMedia(i);this._observeDynamicMedia(e)}setupFromUrl(e){if(this._urlAudioSrc===e&&this._urlAudioEntry)return;this.teardownUrlAudio();let t=this._createEntry(e,"audio",0,1/0);this._urlAudioEntry=t,this._urlAudioSrc=e,t&&this._audioOwner==="parent"&&!this._isPaused()&&(this.mirrorTime(this._getCurrentTime(),{force:!0}),this.playAll())}teardownUrlAudio(){let e=this._urlAudioEntry;if(this._urlAudioEntry=null,this._urlAudioSrc=null,!e)return;e.el.pause(),e.el.src="";let t=this._entries.indexOf(e);t!==-1&&this._entries.splice(t,1)}teardownObserver(){this._mediaObserver?.disconnect(),this._mediaObserver=void 0}_reportPlaybackError(e){this._playbackErrorPosted||(this._playbackErrorPosted=!0,this._dispatchEvent(new CustomEvent("playbackerror",{detail:{source:"parent-proxy",error:e}})))}_createEntry(e,t,i,r,o){if(!o&&this._urlTaken(e))return null;let a=t==="video"?document.createElement("video"):new Audio;a.preload="auto";let s=o?.getAttribute("crossorigin");s!=null&&a.setAttribute("crossorigin",s),a.src=e,a.load(),a.muted=this._getMuted(),a.volume=this._getVolume();let l=this._getPlaybackRate();l!==1&&(a.playbackRate=l);let u={el:a,start:i,duration:r,mediaStart:o?pt(o).mediaStart:0,source:o};return a.addEventListener("seeked",()=>this._noteSeekLanded(u)),this._entries.push(u),u}_resolveIframeMediaSrc(e){let t=e.getAttribute("src")||e.querySelector("source")?.getAttribute("src");return t?new URL(t,e.ownerDocument.baseURI).href:null}_adoptIframeMedia(e){if(e.preload==="metadata"||e.preload==="none"||this._entries.some(l=>l.source===e)||e.tagName==="VIDEO"&&e.hasAttribute("muted"))return;let t=this._resolveIframeMediaSrc(e);if(!t)return;let i=Je(e),r=i.start??0,o=i.duration??Number.POSITIVE_INFINITY,a=e.tagName==="VIDEO"?"video":"audio",s=this._createEntry(t,a,r,o,e);s&&this._audioOwner==="parent"&&(this.mirrorTime(this._getCurrentTime(),{force:!0}),this._isPaused()||this._playEntryIfActive(s))}_followIframeMediaSrc(e){let t=this._entries.find(i=>i.source===e);if(!t)return this._adoptIframeMedia(e);this._audioOwner!=="parent"||!this._repointToSource(t)||(this.mirrorTime(this._getCurrentTime(),{force:!0}),this._isPaused()||this._playEntryIfActive(t))}_urlTaken(e){return this._entries.some(t=>t.source&&!t.source.isConnected?!1:(t.source&&this._resolveIframeMediaSrc(t.source)||t.el.src)===e)}_repointToSource(e){let t=e.source?this._resolveIframeMediaSrc(e.source):null;return!t||e.el.src===t?!1:(e.el.src=t,e.el.load(),!0)}_detachIframeMedia(e){let t=this._entries.find(i=>i.source===e);t&&this._removeEntry(t)}_removeEntry(e){e.el.pause(),e.el.src="",this._entries.splice(this._entries.indexOf(e),1)}_observeDynamicMedia(e){if(this.teardownObserver(),typeof MutationObserver>"u"||!e.body)return;let t=new MutationObserver(o=>{for(let a of o){if(a.type==="attributes"&&a.attributeName==="src"){let s=a.target;w(s)&&s.matches("audio[data-start], video[data-start]")&&this._followIframeMediaSrc(s);continue}if(a.type==="attributes"&&a.attributeName==="preload"){let s=a.target;w(s)&&s.matches("audio[data-start], video[data-start]")&&(s.preload==="auto"?this._adoptIframeMedia(s):this._detachIframeMedia(s));continue}for(let s of a.addedNodes){if(!ce(s))continue;let l=[];w(s)&&s.matches("audio[data-start], video[data-start]")&&l.push(s);let u=s.querySelectorAll("audio[data-start], video[data-start]");for(let c of u)w(c)&&l.push(c);for(let c of l)this._adoptIframeMedia(c)}for(let s of a.removedNodes){if(!ce(s))continue;let l=[];w(s)&&s.matches("audio[data-start], video[data-start]")&&l.push(s);let u=s.querySelectorAll("audio[data-start], video[data-start]");for(let c of u)w(c)&&l.push(c);for(let c of l)this._detachIframeMedia(c)}}}),i={childList:!0,subtree:!0,attributes:!0,attributeFilter:["preload","src"]},r=In(e);for(let o of r)t.observe(o,i);this._mediaObserver=t}};function ft(n,e,t){if(n===null&&e===null)return{range:null,clamped:!1};let i=n??0,r=e!==null&&t>0&&e>t,o=r?t:e,a=o??(t>0?t:1/0);return!(i>=0)||!(a>i)?{range:null,clamped:!0}:{range:{start:i,end:o},clamped:r}}function pe(n,e,t){let i=n.end??e;return i<e?Fn(n.start,i,t):i}function ht(n,e,t,i){return n<e.start||n>=pe(e,t,i)}var Wr=100;function Br(n,e){return typeof n.currentTime=="number"&&Number.isFinite(n.currentTime)?n.currentTime:(n.frame??0)/e}function jn(n,e,t){return t<=0?!1:n.ended===!0?!0:n.ended===!1&&!n.isPlaying?!1:e>=t}function $r(n,e,t,i,r,o){let{duration:a}=t;if(!r){let s=jn(n,e,a);return{start:0,shownAtEnd:a,atEnd:s,stopRuntime:!1,entering:!1}}if(n.ownsRange){let s=i&&n.ended===!0&&!n.isPlaying;return{start:r.start,shownAtEnd:e,atEnd:s,stopRuntime:!1,entering:!1}}return Gr(n,e,t,i,r,o)}function Gr(n,e,t,i,r,o){let a=r.end??t.duration,s=t.enteringRange===!0&&(e<r.start||e>=a);return{start:r.start,shownAtEnd:pe(r,t.duration,o),atEnd:i&&!s&&jn(n,e,a),stopRuntime:n.isPlaying,entering:s}}function qn(n,e,t,i){let r=Br(n,e),o=!t.paused,a=o||n.isPlaying,s=i.getPlayRange?.(),l=$r(n,r,t,a,s,e),{atEnd:u,start:c}=l,f=t.duration>0?Math.min(r,t.duration):r,v=u?l.shownAtEnd:f,b=!n.isPlaying,S=u&&a;if(S&&i.getLoop())return i.media.audioOwner==="parent"&&i.media.pauseAll(),i.seek(c),i.play(),{...t,currentTime:c,paused:!1,enteringRange:!0};let _={...t,currentTime:v,paused:b,enteringRange:l.entering};i.media.audioOwner==="parent"&&(o&&b?i.media.pauseAll():!o&&!b&&i.media.playAll(),i.media.mirrorTime(v));let A=performance.now(),C=b!==t.paused;return(A-t.lastUpdateMs>Wr||C)&&(_.lastUpdateMs=A,i.updateControlsTime(v,t.duration),i.updateControlsPlaying(!b),i.dispatchEvent(new CustomEvent("timeupdate",{detail:{currentTime:v}}))),S&&(l.stopRuntime&&i.seek(v),i.media.audioOwner==="parent"&&i.media.pauseAll(),_.paused=!0,i.updateControlsPlaying(!1),i.dispatchEvent(new Event("ended"))),_}function zr(n){return Array.isArray(n)?n.filter(e=>typeof e=="object"&&e!==null&&typeof e.id=="string"&&typeof e.start=="number"&&typeof e.duration=="number"):[]}function Yn(n,e,t){if(n.source!==e)return;let i=n.data;if(!i||i.source!=="hf-preview")return;let r=Hn(i);if(r.status==="unsupported"){t.dispatchEvent(new CustomEvent("runtimeprotocolerror",{detail:{code:r.code,receivedVersion:r.receivedVersion}}));return}t.setRuntimeFps?.(r.fps);let o=r.status==="supported"&&r.metadata.capabilities.includes("play-range");if(t.setRuntimeOwnsPlayRange?.(o),i.type==="shader-transition-state"){let a=i.state&&typeof i.state=="object"?i.state:{};t.shaderLoader.update(a,t.getShaderLoadingMode()),t.dispatchEvent(new CustomEvent("shadertransitionstate",{detail:{compositionId:i.compositionId,state:a}}));return}if(i.type==="ready"){t.onRuntimeReady();return}if(i.type==="assets-ready"){t.onRuntimeAssetsReady?.(i.timedOut===!0);return}if(i.type==="runtime-data-error"){t.onRuntimeDataError?.(i.channel,i.requestId,i.message);return}if(i.type==="runtime-data-applied"){t.onRuntimeDataApplied?.(i.channel,i.requestId);return}if(i.type==="state"){t.setPlaybackState(qn({frame:i.frame??0,currentTime:i.currentTime,ended:typeof i.ended=="boolean"?i.ended:void 0,isPlaying:!!i.isPlaying,ownsRange:o},r.fps,t.getPlaybackState(),t)),t.setBuffering?.(i.buffering===!0);return}if(i.type==="media-autoplay-blocked"){if(t.shouldPromoteMediaAutoplayFallback?.()===!1)return;let a=null;try{a=t.getIframeDoc()}catch{}t.media.promoteToParentProxy(a,(s,l)=>t.media.mirrorTime(s,l)),t.sendControl("set-media-output-muted",{muted:!0});return}if(i.type==="timeline"&&i.durationInFrames>0){let a=Number(i.durationSeconds),s=Number(i.durationInFrames),l=Number.isFinite(a)&&a>0?a:s/r.fps;if(Number.isFinite(i.compositionWidth)&&i.compositionWidth>0&&Number.isFinite(i.compositionHeight)&&i.compositionHeight>0&&t.setCompositionSize(i.compositionWidth,i.compositionHeight),Number.isFinite(l)&&l>0){let u=t.getPlaybackState();t.setPlaybackState({...u,duration:l}),t.updateControlsTime(u.currentTime,l),t.onRuntimeTimelineReady(l,typeof i.assetsReady=="boolean"?i.assetsReady:void 0)}t.setScenes(zr(i.scenes));return}i.type==="stage-size"&&Number.isFinite(i.width)&&i.width>0&&Number.isFinite(i.height)&&i.height>0&&t.setCompositionSize(i.width,i.height)}function jr(n,e){return n.includes(e)?!0:/hyperframe\.runtime\.iife\.js|__hyperframes\s*=/.test(n)}var qr=new Set([">"," "," ",`
478
+ `,"\r","\f"]);function bt(n,e){let t=n.toLowerCase(),i=`<${e}`,r=0;for(;r<t.length;){let o=t.indexOf(i,r);if(o<0)return null;let a=t[o+i.length];if(qr.has(a)){let s=t.indexOf(">",o+i.length);return s<0?null:{index:o,end:s+1}}r=o+i.length}return null}function Xn(n,e){if(!n||jr(n,e))return n;let t=`<script src="${e}"></script>`,i=bt(n,"head");if(i)return n.slice(0,i.end)+t+n.slice(i.end);let r=bt(n,"body");if(r)return n.slice(0,r.index)+t+n.slice(r.index);let o=bt(n,"html");return o?n.slice(0,o.end)+t+n.slice(o.end):t+n}var W="shader-capture-scale",X="shader-loading",Ue="runtime-src",Kn="__hf_shader_capture_scale",Zn="__hf_shader_loading",K=["Preparing scene transitions","Sampling outgoing scene motion","Sampling incoming scene motion","Caching transition frames","Finalizing transition preview"];function gt(n){if(n===null)return null;let e=Number(n);return!Number.isFinite(e)||e<=0?null:String(Math.min(1,Math.max(.25,e)))}function Yr(n){if(n===null||n.trim()==="")return"composition";let e=n.trim().toLowerCase();return e==="none"||e==="false"||e==="0"||e==="off"?"none":e==="player"||e==="true"||e==="1"||e==="on"?"player":"composition"}function Jn(n,e){return n.filter(t=>t!==""&&t.split("=")[0]!==e)}function Xr(n,e,t){let i=n.indexOf("#"),r=i>=0?n.slice(0,i):n,o=i>=0?n.slice(i):"",a=r.indexOf("?"),s=a>=0?r.slice(0,a):r,l=a>=0?r.slice(a+1):"",u=Jn(l.split("&"),Kn);u=Jn(u,Zn),e!==null&&u.push(`${Kn}=${encodeURIComponent(e)}`),t!=="composition"&&u.push(`${Zn}=${encodeURIComponent(t)}`);let c=u.join("&");return`${s}${c?`?${c}`:""}${o}`}function Kr(n,e,t){if(e===null&&t==="composition")return n;let i=[];e!==null&&i.push(`window.__HF_SHADER_CAPTURE_SCALE=${JSON.stringify(e)};`),t!=="composition"&&i.push(`window.__HF_SHADER_LOADING=${JSON.stringify(t)};`);let r=`<script data-hyperframes-player-shader-options>${i.join("")}</script>`;return/<head\b[^>]*>/i.test(n)?n.replace(/<head\b[^>]*>/i,o=>`${o}${r}`):/<html\b[^>]*>/i.test(n)?n.replace(/<html\b[^>]*>/i,o=>`${o}${r}`):`${r}${n}`}function fe(n){return Yr(n.getAttribute(X))}function Qn(n){return Number(gt(n.getAttribute(W))??"1")}function ei(n,e){return Xr(e,gt(n.getAttribute(W)),fe(n))}function he(n,e){return Xn(Kr(e,gt(n.getAttribute(W)),fe(n)),_t(n))}function _t(n){let e=n.getAttribute(Ue)?.trim();if(!e)return j;try{let t=new URL(e,document.baseURI),i=t.protocol==="http:"||t.protocol==="https:",r=t.hostname==="127.0.0.1"||t.hostname==="localhost"||t.hostname==="[::1]";return i&&(r||t.origin===location.origin)?t.href:j}catch{return j}}function ti(){let n=document.createElement("div");n.className="hfp-shader-loader",n.setAttribute("role","status"),n.setAttribute("aria-live","polite"),n.setAttribute("aria-label","Preparing scene transitions"),n.setAttribute("data-hyperframes-ignore",""),n.draggable=!1;let e=b=>{b.preventDefault(),b.stopPropagation()};for(let b of["selectstart","dragstart","pointerdown","mousedown","click","dblclick","contextmenu","touchstart"])n.addEventListener(b,e,{capture:!0});let t=document.createElement("div");t.className="hfp-shader-loader-panel",t.draggable=!1;let i=document.createElement("div");i.className="hfp-shader-loader-mark",i.draggable=!1,i.innerHTML=['<svg width="78" height="78" viewBox="0 0 100 100" fill="none" aria-hidden="true" draggable="false">','<path d="M10.1851 57.8021L33.1145 73.8313C36.2202 75.9978 41.5173 73.5433 42.4816 69.4984L51.7611 30.4271C52.7253 26.3822 48.5802 23.9277 44.4602 26.0942L13.917 42.1235C6.96677 45.7676 4.97564 54.1579 10.1851 57.8021Z" fill="url(#hfp-shader-loader-grad-left)"/>','<path d="M87.5129 57.5141L56.9696 73.5433C52.8371 75.7098 48.7046 73.2553 49.6688 69.2104L58.9483 30.1391C59.9125 26.0942 65.2097 23.6397 68.3154 25.8062L91.2447 41.8354C96.4668 45.4796 94.4631 53.8699 87.5129 57.5141Z" fill="url(#hfp-shader-loader-grad-right)"/>',"<defs>",'<linearGradient id="hfp-shader-loader-grad-left" x1="48.5676" y1="25" x2="44.7804" y2="71.9384" gradientUnits="userSpaceOnUse">','<stop stop-color="#06E3FA"/>','<stop offset="1" stop-color="#4FDB5E"/>',"</linearGradient>",'<linearGradient id="hfp-shader-loader-grad-right" x1="54.8282" y1="73.8392" x2="72.0989" y2="32.8932" gradientUnits="userSpaceOnUse">','<stop stop-color="#06E3FA"/>','<stop offset="1" stop-color="#4FDB5E"/>',"</linearGradient>","</defs>","</svg>"].join("");let r=document.createElement("div");r.className="hfp-shader-loader-title";let o=document.createElement("span");o.className="hfp-shader-loader-title-text",o.textContent=K[0]||"Preparing scene transitions",r.appendChild(o);let a=document.createElement("div");a.className="hfp-shader-loader-detail",a.textContent="Rendering animated scene samples for shader transitions.";let s=document.createElement("div");s.className="hfp-shader-loader-track",s.setAttribute("aria-hidden","true");let l=document.createElement("div");l.className="hfp-shader-loader-fill",s.appendChild(l);let u=document.createElement("div");u.className="hfp-shader-loader-progress";let c=b=>{let S=document.createElement("div");S.className="hfp-shader-loader-row";let _=document.createElement("span");_.className="hfp-shader-loader-label",_.textContent=b;let A=document.createElement("span");return A.className="hfp-shader-loader-value",S.appendChild(_),S.appendChild(A),u.appendChild(S),{row:S,label:_,value:A}},f=c("transition"),v=c("transition frame");return t.appendChild(i),t.appendChild(r),t.appendChild(a),t.appendChild(s),t.appendChild(u),n.appendChild(t),{root:n,fill:l,title:o,detail:a,transitionValue:f.value,transitionRow:f.row,frameLabel:v.label,frameValue:v.value,frameRow:v.row}}var Zr=420;function He(n,e,t){e.textContent=t,n.style.visibility=t?"visible":"hidden"}var Ve=class{_el;_hideTimeout=null;_hiddenCallbacks=[];_drawingAssets=!1;constructor(e){this._el=e}show(){this._hideTimeout&&(clearTimeout(this._hideTimeout),this._hideTimeout=null),this._el.root.classList.remove("hfp-hiding"),this._el.root.classList.add("hfp-visible")}hide(){if(this._el.root.classList.contains("hfp-hiding")){this._hideTimeout||this._scheduleCleanup();return}this._el.root.classList.contains("hfp-visible")&&(this._el.root.classList.add("hfp-hiding"),this._el.root.classList.remove("hfp-visible"),this._scheduleCleanup())}whenHidden(e){let t=this._el.root.classList;t.contains("hfp-visible")||t.contains("hfp-hiding")?this._hiddenCallbacks.push(e):e()}_flushHidden(){let e=this._hiddenCallbacks;this._hiddenCallbacks=[];for(let t of e)t()}reset(){this._hideTimeout&&(clearTimeout(this._hideTimeout),this._hideTimeout=null),this._el.root.classList.remove("hfp-visible","hfp-hiding"),this._drawingAssets=!1,this._flushHidden(),this._el.fill.style.transform="scaleX(0)",He(this._el.transitionRow,this._el.transitionValue,""),He(this._el.frameRow,this._el.frameValue,"")}update(e,t){let i=t==="player"&&e.loading&&!e.ready;if(this._drawingAssets&&!i)return;if(t!=="player"){this.reset();return}if(e.ready||!e.loading){this.hide();return}this._el.root.setAttribute("aria-label","Preparing scene transitions"),this._drawingAssets=!1;let r=typeof e.progress=="number"&&Number.isFinite(e.progress)?e.progress:0,o=typeof e.total=="number"&&Number.isFinite(e.total)?e.total:0,a=o>0?Math.min(1,Math.max(0,r/o)):0,s=Math.min(K.length-1,Math.floor(a*K.length));this._el.title.textContent=K[s]||"Preparing scene transitions",this._el.detail.textContent=e.phase==="cached"?"Loading cached transition frames before playback.":e.phase==="finalizing"?"Uploading transition textures for smooth playback.":"Rendering animated scene samples for shader transitions.",this._el.fill.style.transform=`scaleX(${a})`;let l=e.currentTransition!==void 0&&e.transitionTotal!==void 0?`${e.currentTransition}/${e.transitionTotal}`:o>0?`${r}/${o}`:"",u=e.transitionFrame!==void 0&&e.transitionFrames!==void 0?`${e.transitionFrame}/${e.transitionFrames}`:"";this._el.frameLabel.textContent=e.phase==="cached"?"cached transition frames":e.phase==="finalizing"?"finalizing transition frames":"rendering transition frames",He(this._el.transitionRow,this._el.transitionValue,l),He(this._el.frameRow,this._el.frameValue,u),this._el.root.setAttribute("aria-valuenow",String(Math.round(a*100))),this.show()}showAssetsLoading(e="Loading assets",t="Waiting for images, video and fonts to finish loading."){this.reset(),this._el.title.textContent=e,this._el.detail.textContent=t,this._el.root.setAttribute("aria-label",e),this._drawingAssets=!0,this.show()}hideAssetsLoading(){this._drawingAssets&&this.hide()}get hideTimeout(){return this._hideTimeout}destroy(){this._hideTimeout&&(clearTimeout(this._hideTimeout),this._hideTimeout=null),this._hiddenCallbacks=[]}_scheduleCleanup(){this._hideTimeout&&clearTimeout(this._hideTimeout),this._hideTimeout=setTimeout(()=>{this._el.root.classList.remove("hfp-hiding"),this._hideTimeout=null,this._flushHidden()},Zr)}};function ni(n){return n?.trim().toLowerCase().startsWith("video/")??!1}function ii(n){let e=document.createElement("video");e.className="hfp-video",e.playsInline=!0,e.preload="metadata";let t=new AbortController,{signal:i}=t;return e.addEventListener("loadedmetadata",()=>n.onMetadata(e),{signal:i}),e.addEventListener("durationchange",()=>n.onDurationChange(e),{signal:i}),e.addEventListener("resize",()=>n.onResize(e),{signal:i}),e.addEventListener("play",()=>n.onPlay(e),{signal:i}),e.addEventListener("pause",()=>n.onPause(e),{signal:i}),e.addEventListener("timeupdate",()=>n.onTimeUpdate(),{signal:i}),e.addEventListener("error",()=>n.onError(e.error?.message||"Video failed to load",e.error?.code??null),{signal:i}),{video:e,adapter:{duration:()=>e.duration,time:()=>e.currentTime,seek:o=>{e.currentTime=Se(o)},play:()=>e.play().catch(o=>{i.aborted||n.onPlayRejected(o)}),pause:()=>e.pause(),timeScale:o=>{e.defaultPlaybackRate=o,e.playbackRate=o}},destroy:()=>{t.abort(),e.pause(),e.removeAttribute("src"),e.load(),e.remove()}}}var Jr=.1,Qr=5,yt="sandbox-origin",ri=1e4,vt=8e3,St="assets-loading",be="assets-loading-ui",We="buffering",At="low-power-idle",oi="disable-click-to-play",ge="range-start",_e="range-end",ai=150;function Et(n){return!Number.isFinite(n)||n<=0?1:Math.max(Jr,Math.min(Qr,n))}var Tt=class extends HTMLElement{static get observedAttributes(){return["src","srcdoc","width","height","controls","muted","audio-locked","volume","poster","playback-rate","audio-src","type",yt,Ue,W,X,be,At,ge,_e]}shadow;container;sizer=document.createElement("div");iframe;posterEl=null;controlsApi=null;resizeObserver;shaderLoader;probe;_ready=!1;_readyDocument=null;_connected=!1;_assetsReady=!1;_painted=!1;_pendingPlay=!1;_assetsGeneration=0;_assetsLoadingShowTimer=null;_bufferingShowTimer=null;_currentTime=0;_duration=0;_paused=!0;_scrubbing=!1;_lastUpdateMs=0;_volume=1;_compositionWidth=1920;_compositionHeight=1080;_rescaleWarned=!1;_directTimelineAdapter=null;_directTimelineClock;_parentTickRaf=null;_media;_scenes=[];_runtimeFps=30;_runtimeBridgeReady=!1;_runtimeAssetsReadyGeneration=-1;_runtimeData=new Map;_runtimeDataRequestId=0;_pendingRuntimeData=new Map;_afterUpdate=null;_videoSource=null;_runtimeOwnsPlayRange=!1;_enteringRange=!1;_rangeClampReported="";constructor(){super(),this.shadow=this.attachShadow({mode:"open"}),kn(this.shadow,vn),{container:this.container,iframe:this.iframe}=Mn(),this.sizer.className="hfp-sizer",this.shadow.appendChild(this.sizer),this.shadow.appendChild(this.container);let e=ti();this.shadow.appendChild(e.root),this.shaderLoader=new Ve(e),this._media=new Fe({dispatchEvent:t=>this._emit(t),getMuted:()=>this.muted,getVolume:()=>this._volume,getPlaybackRate:()=>this.playbackRate,getCurrentTime:()=>this._currentTime,isPaused:()=>this._paused}),this._directTimelineClock=new Pe({onTimeUpdate:(t,i)=>{this._currentTime=t,this.controlsApi?.updateTime(t,i),this._emit(new CustomEvent("timeupdate",{detail:{currentTime:t}}))},getLoop:()=>this.loop,restart:()=>{this.seek(this._playRange()?.start??0),this.play()},onPaused:()=>{this._media.audioOwner==="parent"&&this._media.pauseAll(),this._paused=!0,this.controlsApi?.updatePlaying(!1),this._emit(new Event("ended"))},onEnded:()=>this.loop}),this.probe=new Ie(this.iframe,{resolveRuntimeUrl:()=>_t(this),hostOwnsDeadline:()=>this.hasAttribute("no-load-timeout"),onReady:t=>this._onProbeReady(t),onError:t=>this._emit(new CustomEvent("error",{detail:{message:t}}))}),this.addEventListener("click",t=>{this.disableClickToPlay||wn(t)||(this._paused?this.play():this.pause())}),this.resizeObserver=new ResizeObserver(()=>this._rescale()),this._onMessage=this._onMessage.bind(this),this._onIframeLoad=this._onIframeLoad.bind(this),this.iframe.addEventListener("load",this._onIframeLoad)}connectedCallback(){this._connected=!0,this._applySandboxOriginPolicy(),this.resizeObserver.observe(this),window.addEventListener("message",this._onMessage),this.hasAttribute("controls")&&this._setupControls(),this.hasAttribute("poster")&&(this.posterEl=lt(this.shadow,this.getAttribute("poster"),this.posterEl)),this.hasAttribute("audio-src")&&this._media.setupFromUrl(this.getAttribute("audio-src")),this.hasAttribute("srcdoc")&&(this.iframe.srcdoc=he(this,this.getAttribute("srcdoc"))),this.hasAttribute("src")&&this._loadSrc(this.getAttribute("src")),!this.hasAttribute("audio-locked")&&this._isLockedHostEnvironment()&&this._applyAudioLock(!0)}disconnectedCallback(){this._connected=!1,this._teardownVideo(),this._sendControl("pause"),this._stopIframeMedia(),this.resizeObserver.disconnect(),window.removeEventListener("message",this._onMessage),this.probe.stop(),this._directTimelineClock.stop(),this._stopParentTickClock(),this._directTimelineAdapter=null,this.shaderLoader.destroy(),this._media.destroy(),this.controlsApi?.destroy(),this.controlsApi=null,this._paused=!0,this._pendingPlay=!1,this._abandonComposition("Player disconnected before runtime data was applied")}attributeChangedCallback(e,t,i){switch(e){case"src":if(!this.isConnected)break;i&&this._navigateSrc(i);break;case"type":{let r=this.getAttribute("src");if(!this.isConnected||r===null||!!this._videoSource===this._wantsVideo())break;this._navigateSrc(r);break}case"srcdoc":if(!this.isConnected)break;if(this._pendingPlay=!1,this._abandonComposition("Composition navigated before runtime data was applied"),i!==null)this._pauseForVideoSwitch(),this._teardownVideo(),this.iframe.srcdoc=he(this,i);else{this.iframe.removeAttribute("srcdoc");let r=this.getAttribute("src");r!==null&&this._wantsVideo()&&this._navigateSrc(r)}break;case yt:this._applySandboxOriginPolicy(this.isConnected&&t!==i);break;case"width":this._setCompositionSize(de(i)??1920,this._compositionHeight);break;case"height":this._setCompositionSize(this._compositionWidth,de(i)??1080);break;case"controls":i!==null?this._setupControls():(this.controlsApi?.destroy(),this.controlsApi=null);break;case"poster":this.posterEl=lt(this.shadow,i,this.posterEl);break;case"playback-rate":{let r=Et(parseFloat(i||"1"));this._media.updatePlaybackRate(r),this._sendControl("set-playback-rate",{playbackRate:r}),this._directTimelineAdapter?.timeScale?.(r),this.controlsApi?.updateSpeed(r),this._emit(new Event("ratechange"));break}case"muted":this._handleMutedChange(i);break;case"audio-locked":this._applyAudioLock(i!==null);break;case"volume":{let r=Math.max(0,Math.min(1,parseFloat(i||"1")));this._volume=r,this._syncVideoAudio(),this._media.updateVolume(r),this._sendControl("set-volume",{volume:r}),this.controlsApi?.updateVolume(r),this._emit(new Event("volumechange"));break}case"audio-src":i?this._media.setupFromUrl(i):this._media.teardownUrlAudio();break;case be:i==="none"&&this.shaderLoader.hideAssetsLoading();break;case At:this._sendControl("set-idle-heartbeat",{slow:i!==null});break;case ge:case _e:this._applyPlayRange(!0);break;case W:case X:case Ue:if(!this.isConnected)break;this._reloadShaderOptions();break}}_applySandboxOriginPolicy(e=!1){this.hasAttribute(yt)?this.iframe.sandbox.remove("allow-same-origin"):this.iframe.sandbox.add("allow-same-origin"),e&&this._reloadForSandboxOriginPolicy()}_reloadForSandboxOriginPolicy(){if(this._videoSource)return;this._abandonComposition("Sandbox policy changed before runtime data was applied");let e=this.getAttribute("srcdoc");if(e!==null){this.iframe.srcdoc=he(this,e);return}let t=this.getAttribute("src");t===null?this.iframe.src="about:blank":this._loadSrc(t)}get iframeElement(){return this.iframe}get scenes(){return this._scenes}play(){this._play(!0)}_play(e){if(this._ready&&!this._assetsReady){this._pendingPlay=!0;return}this._pendingPlay=!1,this.posterEl?.remove(),this.posterEl=null;let t=this._ready?this._playRange():null;t?ht(this._currentTime,t,this._duration,this._runtimeFps)&&(this.seek(t.start),this._enteringRange=!0):this._duration>0&&this._currentTime>=this._duration&&this.seek(0),this._paused=!1;let i=this._tryDirectTimelinePlay(),r=!1;this._sendDisplayScale(),i||(this._sendControl("play"),this._ready&&!this._directTimelineAdapter?this._startParentTickClock():this._ready||(this._pendingPlay=!0,r=!0)),this._media.audioOwner==="parent"?this._media.playAll():this._media.primeAll(),this.controlsApi?.updatePlaying(!0),!r&&e&&this._emit(new Event("play")),i&&this._directTimelineAdapter&&this._directTimelineClock.start(this._directTimelineAdapter,()=>this._currentTime,()=>this._duration,()=>this._paused,()=>this._clockStop())}pause(){this._pendingPlay=!1,this._tryDirectTimelinePause()?this._showPausedVideoTime():this._sendControl("pause"),this._directTimelineClock.stop(),this._stopParentTickClock(),this._media.audioOwner==="parent"&&this._media.pauseAll(),this._paused=!0,this.controlsApi?.updatePlaying(!1),this._emit(new Event("pause"))}stopMedia(){this._sendControl("stop-media"),this._stopIframeMedia(),this._media.stopAdoptedMedia()}seek(e){this._pendingPlay=!1,!this._trySyncSeek(e)&&!this._tryDirectTimelineSeek(e)&&this._sendControl("seek",{timeSeconds:e,frame:Math.round(e*this._runtimeFps)}),this._directTimelineClock.stop(),this._stopParentTickClock(),this._currentTime=e,this._media.audioOwner==="parent"&&(this._scrubbing?this._media.scrubAll(e):(this._media.pauseAll(),this._media.seekAll(e))),this._paused=!0,this.controlsApi?.updatePlaying(!1),this.controlsApi?.updateTime(this._currentTime,this._duration)}setColorGrading(e,t){this._sendControl("set-color-grading",{target:e,grading:t})}clearColorGrading(e){this._sendControl("set-color-grading",{target:e,grading:null})}setColorGradingCompare(e,t){this._sendControl("set-color-grading-compare",{target:e,compare:t})}clearColorGradingCompare(e){this._sendControl("set-color-grading-compare",{target:e,compare:{enabled:!1}})}setRuntimeData(e,t){if(!/^[a-z][a-z0-9-]{0,63}$/.test(e))throw new Error(`Invalid HyperFrames runtime-data channel: ${e}`);if(typeof structuredClone!="function")throw new Error("HyperFrames runtime data requires structuredClone support; refusing an unverified payload");let i=structuredClone(t);this._runtimeData.set(e,i),this._deliverRuntimeData(e,i)}clearRuntimeData(e){if(!/^[a-z][a-z0-9-]{0,63}$/.test(e))throw new Error(`Invalid HyperFrames runtime-data channel: ${e}`);this._runtimeData.delete(e),this._deliverRuntimeDataClear(e)}get currentTime(){return this._currentTime}set currentTime(e){this.seek(e)}get duration(){return this._duration}get compositionWidth(){return this._compositionWidth}get compositionHeight(){return this._compositionHeight}get paused(){return this._paused}get ready(){return this._ready}get assetsReady(){return this._assetsReady}get painted(){return this._painted}get playbackRate(){return Et(parseFloat(this.getAttribute("playback-rate")||"1"))}set playbackRate(e){this.setAttribute("playback-rate",String(Et(e)))}get shaderCaptureScale(){return Qn(this)}set shaderCaptureScale(e){this.setAttribute(W,String(e))}get shaderLoading(){return fe(this)}set shaderLoading(e){e==="composition"?this.removeAttribute(X):this.setAttribute(X,e)}get assetsLoadingUi(){return this.getAttribute(be)==="none"?"none":"player"}set assetsLoadingUi(e){e==="none"?this.setAttribute(be,"none"):this.removeAttribute(be)}get muted(){return this.hasAttribute("muted")}set muted(e){e?this.setAttribute("muted",""):this.removeAttribute("muted")}get audioLocked(){return this.hasAttribute("audio-locked")}set audioLocked(e){e?this.setAttribute("audio-locked",""):this.removeAttribute("audio-locked")}_isLockedHostEnvironment(){if(typeof navigator>"u")return!1;let e=navigator.userAgent||"";return/\bClaude\/\d/.test(e)&&/\bElectron\b/.test(e)}_isAudioLocked(){return this.hasAttribute("audio-locked")||this._isLockedHostEnvironment()}_isSlideshowPlayer(){return this.closest("hyperframes-slideshow")!==null}_handleMutedChange(e){if(e===null&&this._isAudioLocked()){this.setAttribute("muted","");return}this._media.updateMuted(e!==null),this._syncVideoAudio(),this._setIframeMediaMuted(e!==null),this._sendControl("set-muted",{muted:e!==null}),this.controlsApi?.updateMuted(e!==null),this._emit(new Event("volumechange"))}_applyAudioLock(e){e&&(this.muted=!0),this.controlsApi?.setVolumeControlsHidden(e)}get volume(){return this._volume}set volume(e){this.setAttribute("volume",String(Math.max(0,Math.min(1,e))))}get disableClickToPlay(){return this.hasAttribute(oi)}set disableClickToPlay(e){this.toggleAttribute(oi,e)}get loop(){return this.hasAttribute("loop")}set loop(e){e?this.setAttribute("loop",""):this.removeAttribute("loop")}get rangeStart(){return this._readSeconds(ge)}set rangeStart(e){this._writeSeconds(ge,e)}get rangeEnd(){return this._readSeconds(_e)}set rangeEnd(e){this._writeSeconds(_e,e)}_readSeconds(e){let t=this.getAttribute(e);return t===null?null:Number(t)}_writeSeconds(e,t){t==null?this.removeAttribute(e):this.setAttribute(e,String(t))}_hasPlayRange(){return this.hasAttribute(ge)||this.hasAttribute(_e)}_playRange(){return ft(this.rangeStart,this.rangeEnd,this._duration).range}_sendPlayRange(e){let t=e?.end??null;this._sendControl("set-play-range",{startSeconds:e?.start??null,endSeconds:t})}_applyPlayRange(e){let{range:t,clamped:i}=ft(this.rangeStart,this.rangeEnd,this._duration);this._sendPlayRange(t),this._ready&&(this._reportRangeClamp(t,i),t&&e&&!this._pendingPlay&&this._moveIntoPlayRange(t))}_reportRangeClamp(e,t){let i=t?`${this.rangeStart},${this.rangeEnd},${this._duration}`:"";if(i===this._rangeClampReported||(this._rangeClampReported=i,!t))return;let r={rangeStart:e?.start??null,rangeEnd:e?.end??null};this._emit(new CustomEvent("rangeclamped",{detail:{...r,duration:this._duration}}))}_moveIntoPlayRange(e){ht(this._currentTime,e,this._duration,this._runtimeFps)&&(this._paused?this.seek(e.start):this._jumpWhilePlaying(e.start))}_jumpWhilePlaying(e){this._directTimelineAdapter?(this._directTimelineAdapter.seek(e,!1),this._currentTime=e):this._runtimeOwnsPlayRange||(this.seek(e),this._enteringRange=!0,this._play(!1))}_clockStop(){let e=this._playRange(),t=e?.end??this._duration;if(!e)return{end:t,shown:t};let i=pe(e,this._duration,this._runtimeFps);return{end:t,shown:i<t?(i+t)/2:i}}_sendControl(e,t={}){try{let i=this.iframe.contentWindow;return i?(i.postMessage({...t,source:"hf-parent",type:"control",action:e,...dt(this._runtimeFps)},"*"),!0):((e==="set-runtime-data"||e==="clear-runtime-data")&&this._rejectRuntimeDataDelivery(t.channel,t.requestId,"Composition iframe is unavailable"),!1)}catch(i){return(e==="set-runtime-data"||e==="clear-runtime-data")&&this._rejectRuntimeDataDelivery(t.channel,t.requestId,i instanceof Error?i.message:String(i)),!1}}_deliverRuntimeData(e,t){if(!this.isConnected||!this._runtimeBridgeReady)return;let i=this._beginRuntimeDataDelivery(e);this._trySetRuntimeDataDirect(e,t,i)||this._sendControl("set-runtime-data",{channel:e,payload:t,requestId:i})}_deliverRuntimeDataClear(e){if(!this.isConnected||!this._runtimeBridgeReady)return;let t=this._beginRuntimeDataDelivery(e);this._tryClearRuntimeDataDirect(e,t)||this._sendControl("clear-runtime-data",{channel:e,requestId:t})}_trySetRuntimeDataDirect(e,t,i){try{let r=this.iframe.contentWindow?.__hyperframes;return typeof r?.setRuntimeData!="function"?!1:(r.setRuntimeData(e,t,i),!0)}catch{return!1}}_tryClearRuntimeDataDirect(e,t){try{let i=this.iframe.contentWindow?.__hyperframes;return typeof i?.clearRuntimeData!="function"?!1:(i.clearRuntimeData(e,t),!0)}catch{return!1}}_replayRuntimeData(){for(let[e,t]of this._runtimeData)this._deliverRuntimeData(e,t)}_beginRuntimeDataDelivery(e){let t=this._pendingRuntimeData.get(e);t&&window.clearTimeout(t.timeoutId),this._runtimeDataRequestId+=1;let i=this._runtimeDataRequestId,r=window.setTimeout(()=>{this._rejectRuntimeDataDelivery(e,i,`Runtime data delivery timed out after ${ri}ms`)},ri);return this._pendingRuntimeData.set(e,{requestId:i,timeoutId:r}),i}_resolveRuntimeDataDelivery(e,t){let i=this._takeRuntimeDataDelivery(e,t);i&&this._emit(new CustomEvent("runtimedataapplied",{detail:{channel:e,requestId:i.requestId}}))}_rejectRuntimeDataDelivery(e,t,i){let r=this._takeRuntimeDataDelivery(e,t);r&&this._emit(new CustomEvent("runtimedataerror",{detail:{channel:e,requestId:r.requestId,message:typeof i=="string"?i:String(i)}}))}_takeRuntimeDataDelivery(e,t){if(typeof e!="string"||typeof t!="number"||!Number.isSafeInteger(t))return null;let i=this._pendingRuntimeData.get(e);return!i||i.requestId!==t?null:(window.clearTimeout(i.timeoutId),this._pendingRuntimeData.delete(e),i)}_rejectAllRuntimeDataDeliveries(e){for(let[t,i]of[...this._pendingRuntimeData])this._rejectRuntimeDataDelivery(t,i.requestId,e)}_getSameOriginIframeDocument(){try{return this.iframe.contentDocument}catch{return null}}_setIframeMediaMuted(e){let t=this._getSameOriginIframeDocument();if(t)for(let i of t.querySelectorAll("video, audio"))w(i)&&(i.muted=e||i.defaultMuted)}_stopIframeMedia(){let e=this._getSameOriginIframeDocument();if(e)for(let t of e.querySelectorAll("video, audio"))w(t)&&t.pause()}_replayBridgeState(){this._sendControl("set-muted",{muted:this.muted}),this._sendControl("set-volume",{volume:this._volume}),this._sendControl("set-playback-rate",{playbackRate:this.playbackRate}),this._sendControl("set-native-media-sync-disabled",{disabled:this._isSlideshowPlayer()}),this._sendControl("set-web-audio-media-disabled",{disabled:this._isSlideshowPlayer()}),this._sendControl("set-idle-heartbeat",{slow:this.hasAttribute(At)}),this._sendDisplayScale()}_sendDisplayScale(){let e=Un(this.iframe);e&&this._sendControl("set-display-scale",{scale:e})}_reloadShaderOptions(){if(!this._videoSource){if(this._abandonComposition("Shader options changed before runtime data was applied"),this.hasAttribute("srcdoc")){this.iframe.srcdoc=he(this,this.getAttribute("srcdoc")||"");return}this.hasAttribute("src")&&this._loadSrc(this.getAttribute("src")||"")}}_navigateSrc(e){this._pendingPlay=!1,this._pauseForVideoSwitch(),this._abandonComposition("Composition navigated before runtime data was applied"),this._loadSrc(e)}_wantsVideo(){return ni(this.getAttribute("type"))&&!this.hasAttribute("srcdoc")}_pauseForVideoSwitch(){!this._videoSource&&!this._wantsVideo()||(this._paused=!0,this.controlsApi?.updatePlaying(!1))}_loadSrc(e){if(this._wantsVideo()){this._loadVideo(e);return}this._teardownVideo(),this.iframe.src=ei(this,e)}_loadVideo(e){this._videoSource||(this._videoSource=ii({onMetadata:r=>this._applyThenEmit(()=>this._onVideoReady(r)),onDurationChange:r=>this._applyTimelineDuration(r.duration),onResize:r=>this._applyVideoSize(r),onPlay:r=>{!r.paused&&this._paused&&this.play()},onPause:r=>{r.paused&&!r.ended&&!this._paused&&this.pause()},onTimeUpdate:()=>{document.hidden&&this._playRange()&&this._directTimelineClock.poll()},onError:(r,o)=>{this._paused||this.pause(),this._emit(new CustomEvent("error",{detail:{message:r,code:o}}))},onPlayRejected:r=>this._onVideoPlayRejected(r)}),this.container.appendChild(this._videoSource.video),this.iframe.hidden=!0,this.iframe.src="about:blank"),this.probe.stop();let{video:t,adapter:i}=this._videoSource;this._directTimelineAdapter=i,this._currentTime=0,this._duration=0,this.controlsApi?.updateTime(0,0),this._syncVideoAudio(),i.timeScale?.(this.playbackRate),t.src=e}_teardownVideo(){this._videoSource&&(this._videoSource.destroy(),this._videoSource=null,this.iframe.hidden=!1)}_syncVideoAudio(){this._videoSource&&(this._videoSource.video.muted=this.muted,this._videoSource.video.volume=this._volume)}_onVideoReady(e){this._applyTimelineDuration(e.duration),this._applyVideoSize(e),this._ready=!0,this._dispatchReady(),this._waitForAssetsReady(null),this._afterEvents(()=>{this.hasAttribute("autoplay")&&this._paused&&this.play()})}_applyTimelineDuration(e){!Number.isFinite(e)||e<=0||(this._setDuration(e),this.controlsApi?.updateTime(this._currentTime,e))}_applyVideoSize(e){e.videoWidth>0&&e.videoHeight>0&&this._setCompositionSize(e.videoWidth,e.videoHeight)}_onVideoPlayRejected(e){e instanceof DOMException&&e.name==="NotAllowedError"&&(this._paused||this.pause(),this._emit(new CustomEvent("playbackerror",{detail:{source:"video",error:e}})))}_trySyncSeek(e){if(this._videoSource)return!1;try{let i=this.iframe.contentWindow?.__player;return typeof i?.seek!="function"?!1:(i.seek.call(i,e),!0)}catch{return!1}}_withDirectTimeline(e){let t=this._videoSource?null:this.probe.resolveDirectTimelineAdapter(),i=t||this._directTimelineAdapter;if(!i)return!1;try{return e(i),t&&t!==this._directTimelineAdapter&&this._applyTimelineDuration(t.duration()),this._directTimelineAdapter=i,!0}catch{return!1}}_tryDirectTimelineSeek(e){return this._withDirectTimeline(t=>{t.seek(e,!1),t.pause()})}_tryDirectTimelinePlay(){return this._withDirectTimeline(e=>{e.play()})}_tryDirectTimelinePause(){return this._withDirectTimeline(e=>{e.pause()})}_showPausedVideoTime(){this._videoSource&&(this._currentTime=this._videoSource.video.currentTime,this.controlsApi?.updateTime(this._currentTime,this._duration),this._emit(new CustomEvent("timeupdate",{detail:{currentTime:this._currentTime}})))}_startParentTickClock(){this._stopParentTickClock();let e=()=>{if(this._paused){this._parentTickRaf=null;return}this._sendControl("tick"),this._parentTickRaf=requestAnimationFrame(e)};this._parentTickRaf=requestAnimationFrame(e)}_stopParentTickClock(){this._parentTickRaf!==null&&(cancelAnimationFrame(this._parentTickRaf),this._parentTickRaf=null)}_onMessage(e){this._videoSource||this.probe.failed||this._applyThenEmit(()=>this._handleRuntimeMessage(e))}_handleRuntimeMessage(e){Yn(e,this.iframe.contentWindow,{getPlaybackState:()=>({currentTime:this._currentTime,duration:this._duration,paused:this._paused,lastUpdateMs:this._lastUpdateMs,enteringRange:this._enteringRange}),setPlaybackState:({currentTime:t,duration:i,paused:r,lastUpdateMs:o,enteringRange:a})=>{this._enteringRange=a===!0,this._currentTime=t,this._setDuration(i),this._paused=r,this._lastUpdateMs=o},getShaderLoadingMode:()=>fe(this),shaderLoader:this.shaderLoader,setCompositionSize:(t,i)=>this._setCompositionSize(t,i),sendControl:(t,i)=>this._sendControl(t,i),getIframeDoc:()=>this.iframe.contentDocument,onRuntimeReady:()=>{this._runtimeBridgeReady=!0,this._replayBridgeState(),this._hasPlayRange()&&this._sendPlayRange(this._playRange()),this._replayRuntimeData()},onRuntimeAssetsReady:()=>{this._runtimeAssetsReadyGeneration===this._assetsGeneration&&this._settleAssetsReady(this._assetsGeneration)},onRuntimeDataApplied:(t,i)=>this._resolveRuntimeDataDelivery(t,i),onRuntimeDataError:(t,i,r)=>this._rejectRuntimeDataDelivery(t,i,r),onRuntimeTimelineReady:(t,i)=>this._onRuntimeTimelineReady(t,i),setBuffering:t=>this._setBuffering(t),setRuntimeFps:t=>{this._runtimeFps=t},setRuntimeOwnsPlayRange:t=>{this._runtimeOwnsPlayRange=t},shouldPromoteMediaAutoplayFallback:()=>!this._isSlideshowPlayer(),setScenes:t=>{this._scenes=t,this._emit(new CustomEvent("scenes",{detail:{scenes:t}}))},updateControlsTime:(t,i)=>this.controlsApi?.updateTime(t,i),updateControlsPlaying:t=>this.controlsApi?.updatePlaying(t),dispatchEvent:t=>this._emit(t),seek:t=>this.seek(t),play:()=>this.play(),getLoop:()=>this.loop,getPlayRange:()=>this._playRange(),media:this._media})}_onRuntimeTimelineReady(e,t){if(this._ready)return;this.probe.stop(),this._setDuration(e),this._directTimelineAdapter=null,this._ready=!0,this.controlsApi?.updateTime(this._currentTime,e),this._dispatchReady();let i=this._getSameOriginIframeDocument();i&&this._media.setupFromIframe(i),this._replayBridgeState(),this._setIframeMediaMuted(this.muted),this._waitForAssetsReady(i,t),this._playWhenWanted()}_onProbeReady(e){this._applyThenEmit(()=>this._applyProbeResult(e))}_applyProbeResult({duration:e,adapter:t,compositionSize:i}){this._setDuration(e),this._directTimelineAdapter=t.kind==="direct-timeline"?t.timeline:null,i&&this._setCompositionSize(i.width,i.height),this._ready=!0,this.controlsApi?.updateTime(0,e),this._dispatchReady();let r=this._getSameOriginIframeDocument();r&&this._media.setupFromIframe(r),this._setIframeMediaMuted(this.muted),this._waitForAssetsReady(r),this._playWhenWanted()}_waitForAssetsReady(e,t){this._clearAssetsLoadingShowTimer(),this._assetsReady=!1,this._painted=!1;let i=++this._assetsGeneration;if(!e){t===!1?(this._runtimeAssetsReadyGeneration=i,this._startAssetsLoadingOverlayTimer(i),setTimeout(()=>this._settleAssetsReady(i),vt)):this._settleAssetsReady(i);return}Bn(e,({timedOut:r})=>{i===this._assetsGeneration&&(r&&this._warnStuckAssets(e),this._settleAssetsReady(i))},{timeoutMs:vt}),this._assetsReady||this._startAssetsLoadingOverlayTimer(i)}_startAssetsLoadingOverlayTimer(e){this._assetsLoadingShowTimer=setTimeout(()=>{this._assetsLoadingShowTimer=null,!(e!==this._assetsGeneration||this._assetsReady)&&(this.setAttribute(St,""),this.assetsLoadingUi!=="none"&&this.shaderLoader.showAssetsLoading())},ai)}_setBuffering(e){if(e){if(this._bufferingShowTimer!==null||this.hasAttribute(We))return;this._bufferingShowTimer=setTimeout(()=>{this._bufferingShowTimer=null,this.setAttribute(We,""),this.assetsLoadingUi!=="none"&&this.shaderLoader.showAssetsLoading("Buffering","")},ai);return}this._bufferingShowTimer!==null&&clearTimeout(this._bufferingShowTimer),this._bufferingShowTimer=null,this.hasAttribute(We)&&(this.removeAttribute(We),this.shaderLoader.hideAssetsLoading())}_hasPendingFirstFrameAssets(e){let{pendingMedia:t,pendingImages:i,fontsLoading:r}=Ne(e,{scope:Y});return t.length>0||i.length>0||r}_warnStuckAssets(e){let{pendingMedia:t,pendingImages:i,fontsLoading:r}=Ne(e,{scope:Y}),o=e.defaultView;console.warn(`[hyperframes-player] assets-loading timed out after ${vt}ms, playing anyway`,{stuckMedia:t.map(a=>a.currentSrc||a.getAttribute("src")||`<${a.tagName.toLowerCase()}>`),stuckImages:i.map(a=>a.currentSrc||a.getAttribute("src")||"<img>"),fontsLoading:r,computeReady:o?.__renderReady===!0,documentHidden:e.hidden===!0})}_settleAssetsReady(e){e!==this._assetsGeneration||this._assetsReady||(this._clearAssetsLoadingShowTimer(),this._assetsReady=!0,this.removeAttribute(St),this.shaderLoader.hideAssetsLoading(),this._emit(new Event("assetsready")),this.shaderLoader.whenHidden(()=>{e===this._assetsGeneration&&(this._painted=!0,this._emit(new Event("painted")))}),this._afterEvents(()=>{this._pendingPlay&&this.play()}))}_abandonComposition(e){this.probe.stop(),this._ready=!1,this._readyDocument=null,this._invalidateAssetsWait(),this._releaseDocument(),this._runtimeBridgeReady=!1,this._rejectAllRuntimeDataDeliveries(e)}_releaseDocument(){this._runtimeOwnsPlayRange=!1,this._enteringRange=!1,this._directTimelineAdapter=null,this._directTimelineClock.stop(),this._stopParentTickClock(),this._setBuffering(!1),this.shaderLoader.reset(),this._media.resetForIframeLoad()}_invalidateAssetsWait(){this._clearAssetsLoadingShowTimer(),this._assetsReady=!1,this._painted=!1,this._assetsGeneration++,this.removeAttribute(St),this.shaderLoader.hide()}_clearAssetsLoadingShowTimer(){this._assetsLoadingShowTimer!==null&&(clearTimeout(this._assetsLoadingShowTimer),this._assetsLoadingShowTimer=null)}_dispatchReady(){this._readyDocument=this._getSameOriginIframeDocument();let e={duration:this._duration,compositionWidth:this._compositionWidth,compositionHeight:this._compositionHeight};this._emit(new CustomEvent("ready",{detail:e})),this._rescale(),this._rangeClampReported="",this._hasPlayRange()&&this._applyPlayRange(!0)}_setDuration(e){e!==this._duration&&(this._duration=e,this._ready&&(this._emit(new CustomEvent("durationchange",{detail:{duration:e}})),this._hasPlayRange()&&this._applyPlayRange(!1)))}_setCompositionSize(e,t){let i=e!==this._compositionWidth||t!==this._compositionHeight;if(this._compositionWidth=e,this._compositionHeight=t,this.sizer.style.aspectRatio=`${e} / ${t}`,this._rescale(),!i)return;let r={compositionWidth:e,compositionHeight:t};this._emit(new CustomEvent("resize",{detail:r}))}_applyThenEmit(e){if(this._afterUpdate){e();return}let t=[];this._afterUpdate=t;let i=[],r=o=>{try{o()}catch(a){i.push(a)}};r(e);for(let o of t)r(o);if(this._afterUpdate=null,i.length>0)throw i[0]}_afterEvents(e){this._afterUpdate?this._afterUpdate.push(e):e()}_playWhenWanted(){this._afterEvents(()=>{(this.hasAttribute("autoplay")||this._pendingPlay)&&this.play()})}_emit(e){this._afterEvents(()=>this.dispatchEvent(e))}_rescale(){let e=Cn(this,this.iframe,this._compositionWidth,this._compositionHeight);e&&this._sendDisplayScale(),!e&&this._ready&&!this._rescaleWarned&&(this._rescaleWarned=!0,console.warn("[hyperframes-player] rescale no-op after ready: zero-size player element",{src:this.getAttribute("src"),offsetWidth:this.offsetWidth,offsetHeight:this.offsetHeight,compositionWidth:this._compositionWidth,compositionHeight:this._compositionHeight}))}_onIframeLoad(){if(!this._connected||this._videoSource)return;let e=this._getSameOriginIframeDocument();if(this._ready&&e===this._readyDocument){e&&this._hasPendingFirstFrameAssets(e)&&this._waitForAssetsReady(e);return}this._ready=!1,this._invalidateAssetsWait(),this._releaseDocument(),this.probe.start()}_setupControls(){this.controlsApi||(this.controlsApi=xn(this.shadow,this.muted,this._volume,this.getAttribute("speed-presets"),{onPlay:()=>this.play(),onPause:()=>this.pause(),onSeek:e=>this.seek(e*this._duration),onScrubStart:()=>{this._scrubbing=!0},onScrubEnd:()=>{this._scrubbing=!1,this.seek(this._currentTime)},onSpeedChange:e=>{this.playbackRate=e},onMuteToggle:()=>{this.muted=!this.muted},onVolumeChange:e=>{this.volume=e}},this._isAudioLocked()),this.controlsApi.updateTime(this._currentTime,this._duration),this.controlsApi.updatePlaying(!this._paused),this.controlsApi.updateSpeed(this.playbackRate))}get _audioOwner(){return this._media.audioOwner}get _parentMedia(){return this._media.entries}_mirrorParentMediaTime(e,t){this._media.mirrorTime(e,t)}_promoteToParentProxy(){let e=null;try{e=this.iframe.contentDocument}catch{}this._media.promoteToParentProxy(e,(t,i)=>this._mirrorParentMediaTime(t,i)),this._sendControl("set-media-output-muted",{muted:!0})}_observeDynamicMedia(e){this._media.setupFromIframe(e)}};customElements.get("hyperframes-player")||customElements.define("hyperframes-player",Tt);export{Tt as HyperframesPlayer,Tn as SPEED_PRESETS,q as formatSpeed,st as formatTime};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hyperframes/player",
3
- "version": "0.8.223",
3
+ "version": "0.8.225",
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.223"
31
+ "@hyperframes/core": "0.8.225"
32
32
  },
33
33
  "devDependencies": {
34
34
  "@types/bun": "^1.1.0",