@hyperframes/player 0.8.206 → 0.8.207

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{a as F}from"./chunk-5UNAHRPA.js";var Dt=t=>t!==null&&Number.isFinite(t)&&t>0;function Te(t){let e=t.clipEndsSeconds.filter(i=>i===null).length;if(Dt(t.authoredDurationSeconds))return{seconds:t.authoredDurationSeconds,source:"authored",pendingClips:e};let n=t.clipEndsSeconds.filter(Dt);return n.length>0?{seconds:Math.max(...n),source:"derived",pendingClips:e}:{seconds:null,source:"unresolved",pendingClips:e,reason:e>0?"every clip's length is still pending":"no authored duration and no clip with a length"}}var ri="http://www.w3.org/1999/xhtml";function Pt(t){return t!=null&&t.nodeType===1}function Ge(t){return Pt(t)&&t.namespaceURI===ri}function ze(t,e){return Ge(t)&&t.localName===e}function oi(t){return ze(t,"video")}function ai(t){return ze(t,"audio")}function M(t){return oi(t)||ai(t)}function qe(t){return ze(t,"img")}function Re(t){if(t==null||t.trim()==="")return null;let e=Number.parseInt(t,10);return Number.isFinite(e)&&e>0?e:null}function ne(t=document){let e=t.querySelector('[data-composition-id][data-root="true"]');return Ge(e)?e:t.querySelector("[data-composition-id]")}var B=Object.freeze({start:"data-start",duration:"data-duration",trackIndex:"data-track-index",derivedEnd:"data-end",legacyTrack:"data-layer"}),eo=Object.freeze([B.start,B.duration,B.trackIndex]),to=Object.freeze([B.derivedEnd]),no=Object.freeze([B.derivedEnd,B.legacyTrack]);function je(t){if(t==null||t.trim()==="")return null;let e=Number(t);return Number.isFinite(e)?e:null}var Nt=t=>{let e=je(t);return e!==null&&e>=0?e:null};function Lt(t){return Nt(t("data-playback-start"))??Nt(t("data-media-start"))??0}var ie=.1,re=10;function Ye(t){return Number.isFinite(t)&&t>0?Math.max(ie,Math.min(re,t)):1}function Ot(t,e=1){let n=Number.parseFloat(t("data-playback-rate")??"");return Ye(Number.isFinite(n)&&n>0?n:e)}function Xe(t){let e=je(t("data-duration"));return e!==null&&e>0?e:null}function Ft(t,e){let n=Xe(t);if(n!==null)return n;let i=je(t("data-end"));return i!==null?i-e:null}var si=3;function Ke(t,e,n){return Number.isFinite(t)?Math.max(0,t-e)/Ye(n):null}function Je(t){let{tag:e,authoredDurationSeconds:n,sourceDurationSeconds:i,mediaStartSeconds:r,playbackRate:o}=t;if(n!==null&&n>0)return{seconds:n,source:"authored"};if(e==="img")return{seconds:si,source:"default"};if(i===null)return{seconds:null,source:"pending",reason:"source duration not yet probed"};let a=Ke(i,r,o);return a===null?{seconds:null,source:"pending",reason:"source reported a non-finite duration"}:{seconds:a,source:"media"}}var Ut="data-fx-chain",ro=Ut.slice(5);var oe=(t="frequency",e="Frequency",n=1e3,i=20,r=2e4)=>({kind:"number",key:t,label:e,unit:"Hz",min:i,max:r,step:1,default:n,scale:"log",automatable:!0}),Ze=(t=.707,e="Bandwidth: higher is narrower.")=>({kind:"number",key:"q",label:"Q",unit:"",min:.1,max:20,step:.01,default:t,scale:"log",automatable:!0,hint:e}),xe=(t=-40,e=40,n=0)=>({kind:"number",key:"gain",label:"Gain",unit:"dB",min:t,max:e,step:.1,default:n,automatable:!0}),Vt={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:[xe(-60,12,0)],web:"gain-node"},{id:"peaking",label:"Peaking EQ",group:"filter",description:"Boost or cut a band, leaving everything either side alone.",params:[oe("frequency","Frequency",1e3),xe(-40,40,0),Ze(1)],web:"biquad-peaking"},{id:"lowshelf",label:"Low Shelf",group:"filter",description:"Lift or drop everything below the corner frequency.",params:[oe("frequency","Frequency",200,20,2e3),xe(-40,40,0)],web:"biquad-lowshelf"},{id:"highshelf",label:"High Shelf",group:"filter",description:"Lift or drop everything above the corner frequency.",params:[oe("frequency","Frequency",4e3,500,2e4),xe(-40,40,0)],web:"biquad-highshelf"},{id:"highpass",label:"High-pass",group:"filter",description:"Remove low frequencies: the usual fix for rumble on a voice.",params:[oe("frequency","Cutoff",300,20,2e4),Ze(.707),Vt],web:"biquad-highpass"},{id:"lowpass",label:"Low-pass",group:"filter",description:"Remove high frequencies, which darkens or muffles a track.",params:[oe("frequency","Cutoff",8e3,100,2e4),Ze(.707),Vt],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"}],oo=new Map(Ht.map(t=>[t.id,t]));var ao=Ht.map(t=>t.id);function ui(t){return 10**(t/20)}var $t=ui(12);var et="data-automation",bo=et.slice(5),Qe=1,di=512,P=class extends Error{constructor(e){super(e),this.name="AudioAutomationError"}},we="volume",ke="rate";function Bt(t){if(t===we)return{kind:"volume"};if(t===ke)return{kind:"rate"};let e=t.split(".");if(e.length===3&&e[0]==="fx"&&e[1]===ci){let r=e[2];return r?{kind:"preset",presetId:r}:null}if(e.length!==3||e[0]!=="fx")return null;let[,n,i]=e;return!n||!i?null:{kind:"fx",nodeId:n,param:i}}var ci="preset";var mi={min:0,max:$t,step:.01,unit:"",label:"Volume",scale:"linear",default:1};var pi={min:ie,max:re,step:.05,unit:"x",label:"Speed",scale:"log",default:1};function ae(t){if(typeof t=="number")return Number.isFinite(t)?t:null;if(typeof t=="string"&&t.trim()!==""){let e=Number(t);return Number.isFinite(e)?e:null}return null}function fi(t){let e=ae(t);return e===null||e===0?0:Math.min(1,Math.max(-1,e))}function Gt(t,e){let n=ae(t),i=ae(e);if(n===null||i===null)return null;let r=s=>Math.min(.999,Math.max(.001,s)),o=r(n),a=r(i);return Math.abs(o-a)<1e-6?null:{x:o,y:a}}function hi(t){let e=fi(t?.curve),n=Gt(t?.viaX,t?.viaY);return{...e?{curve:e}:{},...n?{viaX:n.x,viaY:n.y}:{}}}function bi(t,e){let n=ae(t?.t),i=ae(t?.v);if(n===null||i===null)return null;let r=e?Math.min(e.max,Math.max(e.min,i)):i;return{t:Math.max(0,n),v:r,...hi(t)}}function gi(t,e){let n=t.map(r=>bi(r,e)).filter(r=>r!==null).sort((r,o)=>r.t-o.t),i=[];for(let r of n)i.length>0&&i[i.length-1].t===r.t?i[i.length-1]=r:i.push(r);return i.slice(0,di)}function _i(t){let e=[];for(let n of t.lanes){if(!Bt(n.target))continue;let i=n.target===we?mi:n.target===ke?pi:null,r=gi(n.points??[],i);r.length>0&&e.push({target:n.target,points:r})}return{version:Qe,lanes:e}}function zt(t){let e;try{e=JSON.parse(t)}catch(r){throw new P(`Automation is not valid JSON: ${r.message}`)}if(typeof e!="object"||e===null)throw new P("Automation must be a JSON object.");let n=e;if(n.version!==Qe)throw new P(`Unsupported automation version: ${String(n.version)}`);if(!Array.isArray(n.lanes))throw new P("Automation is missing a `lanes` array.");let i=n.lanes.map((r,o)=>{if(typeof r!="object"||r===null)throw new P(`Lane ${o} is not an object.`);let a=r;if(typeof a.target!="string"||!Bt(a.target))throw new P(`Lane ${o} has an unreadable target: ${String(a.target)}`);if(!Array.isArray(a.points))throw new P(`Lane ${o} is missing a \`points\` array.`);return{target:a.target,points:a.points}});return _i({version:Qe,lanes:i})}function yi(t,e){return e?Math.pow(t,Math.pow(2,2*e)):t}function vi(t,e){let n=t-.5,i=e-.5,r=.999,o=1e6,a=n>0?n/(r-t):n<0?-n/(t-(1-r)):0,s=i>0?i/(r-e):i<0?-i/(e-(1-r)):0,u=Math.min(o,Math.max(1,a,s));return{cx:t+n/u,cy:e+i/u,w:u}}function Ai(t,e,n){let{cx:i,cy:r,w:o}=vi(e,n),a=2-2*o,s=t*a-1+2*o*i,u=-t*a-2*o*i,d=Ei(s,u,t),m=1-d,h=m*m+2*o*d*m+d*d;return h>0?(2*o*r*d*m+d*d)/h:t}function Ei(t,e,n){if(Math.abs(t)<1e-12)return Math.abs(e)<1e-12?n:-n/e;let i=Math.sqrt(Math.max(0,e*e-4*t*n)),r=(-e+i)/(2*t),o=(-e-i)/(2*t),a=s=>s>=-1e-9&&s<=1+1e-9;return a(r)?Math.min(1,Math.max(0,r)):a(o)?Math.min(1,Math.max(0,o)):n}function Si(t,e){let n=Gt(e.viaX,e.viaY);return n?Ai(Math.min(1,Math.max(0,t)),n.x,n.y):yi(t,e.curve)}function Ti(t,e,n,i){return i==="log"&&t>0&&e>0?Math.exp(Math.log(t)+(Math.log(e)-Math.log(t))*n):t+(e-t)*n}function Ie(t,e,n="linear"){let i=t.points;if(i.length===0)return 0;let r=i[0];if(e<=r.t)return r.v;let o=i[i.length-1];if(e>=o.t)return o.v;let a=0,s=i.length-1;for(;s-a>1;){let h=a+s>>1;i[h].t<=e?a=h:s=h}let u=i[a],d=i[s],m=d.t-u.t;return m<=0?d.v:Ti(u.v,d.v,Si((e-u.t)/m,u),n)}var Me=new Map,Ri=64;function qt(t,e=we){let n=`${e}\0${t}`,i=Me.get(n);if(i!==void 0)return i;let r=null;try{r=zt(t).lanes.find(o=>o.target===e)??null}catch{r=null}return Me.size>Ri&&Me.clear(),Me.set(n,r),r}var jt=48,Yt=new WeakMap;function xi(t){let e=t.points,n=e[0].v,i=e[e.length-1].v,r=[0],o=[0],a=u=>{let d=r[r.length-1];if(u<=d)return;let m=Ie(t,d,"log");r.push(u),o.push(o[o.length-1]+(m+Ie(t,u,"log"))/2*(u-d))},s=Math.max(0,e[0].t);a(s);for(let u=1;u<e.length;u+=1){let d=e[u-1].t,m=e[u].t;if(!(m<=0))for(let h=1;h<=jt;h+=1)a(Math.max(d,0)+(m-d)*h/jt)}return{ts:Float64Array.from(r),ss:Float64Array.from(o),firstRate:n,lastRate:i}}function wi(t){let e=Yt.get(t);return e||(e=xi(t),Yt.set(t,e)),e}function ki(t){return typeof t!="number"&&t.points.length>0}function Ii(t,e,n){let i=0,r=t.length-1;for(;r-i>1;){let o=i+r>>1;t[o]<=n?i=o:r=o}return e[i]+(e[r]-e[i])*(n-t[i])/(t[r]-t[i])}function tt(t,e){if(typeof t=="number")return e/t;if(!ki(t))return e;let{ts:n,ss:i,firstRate:r,lastRate:o}=wi(t),a=n.length-1;return e<=0?e/r:e>=i[a]?n[a]+(e-i[a])/o:Ii(i,n,e)}function Mi(t){return t?qt(t,ke):null}function Xt(t,e){return Mi(t)??e}var So=[{id:"montage",label:"Montage",points:[[0,.9],[.15,.3],[.5,2.5],[.85,.3],[1,.9]]},{id:"hero",label:"Hero",points:[[0,1],[.25,1.6],[.5,.25],[.75,1.6],[1,1]]},{id:"bullet",label:"Bullet",points:[[0,3],[.4,3],[.5,.15],[.6,3],[1,3]]},{id:"jump-cut",label:"Jump cut",points:[[0,.5],[.24,.5],[.26,3],[.5,3],[.52,.5],[.74,.5],[.76,3],[1,3]]},{id:"flash-in",label:"Flash in",points:[[0,.3],[.6,.6],[1,5]]},{id:"flash-out",label:"Flash out",points:[[0,5],[.4,.6],[1,.3]]},{id:"ramp-in",label:"Ramp in",points:[[0,.5],[1,1]]},{id:"ramp-out",label:"Ramp out",points:[[0,1],[1,.5]]},{id:"slowmo-middle",label:"Slow-mo middle",points:[[0,1],[1/3,.35],[2/3,.35],[1,1]]}];var y=Object.freeze({start:"data-start",duration:"data-duration",trackIndex:"data-track-index",derivedEnd:"data-end",legacyTrack:"data-layer"}),Ro=Object.freeze([y.start,y.duration,y.trackIndex]),xo=Object.freeze([y.derivedEnd]),wo=Object.freeze([y.derivedEnd,y.legacyTrack]);function N(t){if(t==null||t.trim()==="")return null;let e=Number(t);return Number.isFinite(e)?e:null}var Zt=/^[A-Za-z0-9_.:-]+$/;function Qt(t,e){let n=t.charCodeAt(e);return n>=48&&n<=57}function Kt(t,e){let n=e;for(;n>=0&&Qt(t,n);)n--;return n}function Ci(t,e){let n=e;for(;n>=0&&(t[n]??"").trim()==="";)n--;return n}function Di(t){let e=t.length-1;if(!Qt(t,e))return null;let n=Kt(t,e);return t[n]==="."&&(n=Kt(t,n-1)),n+1}function Pi(t){let e=Di(t);if(e==null)return null;let n=Ci(t,e-1),i=t[n];if(i!=="+"&&i!=="-")return null;let r=t.slice(0,n).trim();if(!Zt.test(r))return null;let o=Number(t.slice(e));return Number.isFinite(o)?{refId:r,operator:i,magnitude:o}:null}function se(t){let e=(t??"").trim();if(!e)return null;let n=N(e);if(n!=null)return{kind:"absolute",value:n};if(Zt.test(e))return{kind:"reference",refId:e,offset:0};let i=Pi(e);return i?{kind:"reference",refId:i.refId,offset:i.operator==="-"?-i.magnitude:i.magnitude}:null}function R(t,e,n,i){t.push({code:e,attribute:n,value:i})}function Ni(t,e,n,i){if(e==null||e.trim()==="")return n.defaultStart===void 0?0:n.defaultStart;if(!t)return R(i,"invalid-start",y.start,e),null;if(t.kind==="absolute")return Math.max(0,t.value);let r=n.resolveReferenceEnd?.(t.refId);return r==null||!Number.isFinite(r)?(R(i,"unresolved-start-reference",y.start,e),null):Math.max(0,r+t.offset)}var Li=1e-9;function Oi(t,e){return Math.abs(t-e)<=Li}function Fi(t,e,n){let i=N(t);if(i==null){R(n,"deprecated-end",y.derivedEnd,t),R(n,"invalid-end",y.derivedEnd,t);return}if(e==null){R(n,"deprecated-end",y.derivedEnd,t);return}Oi(i,e)||(R(n,"deprecated-end",y.derivedEnd,t),R(n,"conflicting-end",y.derivedEnd,t))}function Vi(t,e,n){let i=N(t);return i==null||i<0?(R(n,"invalid-duration",y.duration,t),{duration:null,end:null,durationSource:"invalid"}):{duration:i,end:e==null?null:e+i,durationSource:"duration"}}function Ui(t,e,n){R(n,"deprecated-end",y.derivedEnd,t);let i=N(t);return i==null?(R(n,"invalid-end",y.derivedEnd,t),{duration:null,end:null,durationSource:"invalid"}):e==null?{duration:null,end:i,durationSource:"legacy-end"}:i<e?(R(n,"end-before-start",y.derivedEnd,t),{duration:null,end:null,durationSource:"invalid"}):{duration:i-e,end:i,durationSource:"legacy-end"}}function Hi(t,e,n){let i=t.getAttribute(y.duration),r=t.getAttribute(y.derivedEnd);if(i==null)return r==null?{duration:null,end:null,durationSource:"missing"}:Ui(r,e,n);let o=Vi(i,e,n);return r!=null&&Fi(r,o.end,n),o}function Jt(t,e,n,i){let r=N(t);return r==null||!Number.isInteger(r)?(R(i,"invalid-track-index",e,t),{trackIndex:0,trackSource:"invalid"}):{trackIndex:r,trackSource:n}}function $i(t,e){let n=t.getAttribute(y.trackIndex),i=t.getAttribute(y.legacyTrack);if(n==null&&i==null)return{trackIndex:0,trackSource:"default"};if(n==null&&i!=null)return R(e,"deprecated-layer",y.legacyTrack,i),Jt(i,y.legacyTrack,"legacy-layer",e);let r=Jt(n??"",y.trackIndex,"track-index",e);if(i==null)return r;R(e,"deprecated-layer",y.legacyTrack,i);let o=N(i);return o!=null&&o!==r.trackIndex&&R(e,"conflicting-layer",y.legacyTrack,i),r}function nt(t,e={}){let n=[],i=t.getAttribute(y.start),r=se(i),o=Ni(r,i,e,n),a=Hi(t,o,n),s=$i(t,n);return{startExpression:r,start:o,...a,...s,diagnostics:n}}function L(t){return N(t)}function ue(t){return Ot(e=>t.getAttribute(e),M(t)?t.defaultPlaybackRate:1)}function it(t){return Xt(t.getAttribute("data-automation"),ue(t))}function Ce(t){return Lt(e=>t.getAttribute(e))}function G(t,e){return Wi(e,Ce(t),it(t))}function rt(t){let e=Je({tag:"video",authoredDurationSeconds:Xe(n=>t.getAttribute(n)),sourceDurationSeconds:Number.isFinite(t.duration)?t.duration:null,mediaStartSeconds:Ce(t),playbackRate:ue(t)});return e.source==="media"?G(t,t.duration):e.seconds}function De(t,e=0){return!qe(t)||!t.hasAttribute("data-start")&&!t.hasAttribute("data-track-index")?null:Je({tag:"img",authoredDurationSeconds:Ft(n=>t.getAttribute(n),e),sourceDurationSeconds:null,mediaStartSeconds:0,playbackRate:1}).seconds}function Wi(t,e,n){return typeof n=="number"?Ke(t,e,n):Number.isFinite(t)?tt(n,Math.max(0,t-e)):null}function en(){return globalThis}function z(t,e){if(typeof window>"u")return;let n=en(),i=n.__hf?.onSwallowed;if(i)try{i({label:t,error:e})}catch(r){}(n.__hfDebug||n.__HYPERFRAMES_DEBUG)&&console.debug(`[hyperframes] ${t} swallowed:`,e)}var Bi=t=>t.paused?.()===!0?(t.startTime?.()??0)+(t.totalDuration?.()??0)/Math.abs(t.timeScale?.()||1):0;function le(t){try{if(typeof t?.duration!="function")return null;let e=t.getChildren?.(!1,!1,!0),n=Array.isArray(e)?e:[],i=Math.max(Number(t.duration()),...n.map(Bi));return Number.isFinite(i)?i:null}catch(e){return z("runtime.timelineDuration",e),null}}var tn="data-hf-authored-duration",nn="data-hf-authored-end";function de(t){if(t==null||typeof t=="string"&&t.trim()==="")return null;let e=typeof t=="number"?t:Number(t);return Number.isFinite(e)?e:null}function Pe(t){let e=de(t.start);if(e==null)return null;let n=Math.max(0,e),i=de(t.duration),r=de(t.authoredDuration),o=i!=null&&i>0?i:r!=null&&r>0?r:null;if(o!=null)return{start:n,duration:o,end:n+o};let a=de(t.end),s=de(t.authoredEnd),u=a!=null&&a>n?a:s!=null&&s>n?s:null;return{start:n,duration:u==null?null:u-n,end:u}}var q=Object.freeze({start:"data-start",duration:"data-duration",trackIndex:"data-track-index",derivedEnd:"data-end",legacyTrack:"data-layer"}),Wo=Object.freeze([q.start,q.duration,q.trackIndex]),Bo=Object.freeze([q.derivedEnd]),Go=Object.freeze([q.derivedEnd,q.legacyTrack]);function Gi(t){if(t==null||t.trim()==="")return null;let e=Number(t);return Number.isFinite(e)?e:null}var rn=t=>{let e=Gi(t);return e!==null&&e>=0?e:null};function zi(t){return rn(t("data-playback-start"))??rn(t("data-media-start"))??0}var on="data-hf-media-start-basis";function an(t){return t?.trim().toLowerCase()==="global"?"global":"local"}function qi(t){return an(t.basis)==="global"?t.authoredStart:t.hostStart+t.authoredStart}function sn(t){return ln(t)?qi({authoredStart:t.authoredStart,hostStart:t.hostStart,basis:t.basis}):t.ordinaryStart()}function un(t){return ln(t)&&an(t.basis)==="global"}function ln(t){return!t.hasAutoStart&&t.authoredStart!=null&&t.hostStart!==0}function ot(t){return zi(e=>t.getAttribute(e))}function dn(t,e){return t-ot(e)}function $(t){let e=t.timelineRegistry??{},n=t.includeAuthoredTimingAttrs??!1,i=t.documentRef??document,r=new WeakMap,o=new WeakMap,a=new Set,s=l=>(l.hasAttribute("data-composition-id")?l.parentElement:l)?.closest("[data-composition-id]")??null,u=(l,f)=>{let g=s(f);if(g){for(let k of g.querySelectorAll(`[id="${l}"]`))if(s(k)===g)return k}let T=i.getElementById(l);return T||(Array.from(i.querySelectorAll("[data-composition-id]")).find(k=>k.getAttribute("data-composition-id")===l)??null)},d=(l,f)=>n?l.getAttribute(f):null,m=l=>Pe({start:0,duration:l.getAttribute("data-duration"),authoredDuration:d(l,"data-hf-authored-duration")})?.duration??Pe({start:w(l,0),end:l.getAttribute("data-end"),authoredEnd:d(l,"data-hf-authored-end")})?.duration??null,h=l=>l!=null&&Number.isFinite(l)&&l>0?l:null,v=l=>{let f=l.getAttribute("data-composition-id");return f?h(le(e[f])):null},b=l=>{let f=o.get(l);if(f!==void 0)return f;let g=m(l)??h(M(l)?G(l,l.duration):null)??h(De(l))??v(l);return o.set(l,g),g},A="[data-composition-src], [data-composition-id], [data-composition-file]",_=l=>l.matches(A),E=l=>!l.hasAttribute("data-composition-id")||se(l.getAttribute("data-start"))?null:l.parentElement?.closest(`[data-start], ${A}`)??null,C=(l,f)=>dn(w(l,f),E(l)??l),I=(l,f)=>{let g=l.hasAttribute("data-composition-id")?l.parentElement?.closest("[data-composition-id]"):l.closest("[data-composition-id]");return g?C(g,f):0},D=(l,f)=>{let g=se(l.getAttribute("data-start"));if(!g){let H=E(l);return H?w(H,f):f}if(g.kind==="absolute")return I(l,f)+Math.max(0,g.value);let T=u(g.refId,l);if(!T)return f;let k=w(T,0),Ae=b(T)??0,Ee=Math.min(0,I(l,0));return Math.max(Ee,k+Ae+g.offset)},w=(l,f)=>{let g=r.get(l);if(g!==void 0)return g??f;if(a.has(l))return f;a.add(l);try{let T=D(l,f);return r.set(l,T),T}finally{a.delete(l)}},V=l=>{let f=l.closest("[data-composition-id]");return{authoredStart:L(l.getAttribute("data-start")),hostStart:f?C(f,0):0,hasAutoStart:l.hasAttribute("data-hf-auto-start"),basis:l.getAttribute(on)}};return{resolveStartForElement:(l,f=0)=>w(l,Math.max(0,f)),resolveDurationForElement:l=>b(l),resolveMediaStartForElement:l=>{let f=V(l);return sn({...f,ordinaryStart:()=>w(l,f.hostStart)})},resolveHostStartForElement:l=>I(l,0),resolveHostSlotsForElement:l=>{let f=[];for(let g=l.parentElement;g;g=g.parentElement){if(!_(g)||E(g)||ot(g)<=0)continue;let T=w(g,0),k=m(g);f.push({start:T,end:k?T+k:1/0})}return f},isRootGlobalMediaStartForElement:l=>M(l)&&un(V(l))}}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,at=1/60,ce=t=>t!==null&&t>at?t:null;function ji(t){return{width:Re(t.getAttribute("data-width")),height:Re(t.getAttribute("data-height"))}}function Yi(t,e){let n=[];for(let i of t.querySelectorAll("video[data-start], audio[data-start]")){let r=e.mediaStart(i);if(!Number.isFinite(r))continue;let o=e.mediaDuration(i);o==null||o<=at||n.push(Math.max(0,r)+o)}return ce(Te({authoredDurationSeconds:null,clipEndsSeconds:n}).seconds)}function Xi(t,e){let n=[];for(let r of t.querySelectorAll("[data-composition-id][data-start]")){if(r.parentElement?.closest("[data-composition-id]")!==t)continue;let o=e.resolveStartForElement(r,0),a=e.resolveDurationForElement(r);!Number.isFinite(o)||a==null||a<=0||n.push(Math.max(0,o)+a)}let i=L(t.getAttribute("data-duration"));return ce(Te({authoredDurationSeconds:null,clipEndsSeconds:[i,...n]}).seconds)}var Ki=t=>t.hasAttribute("data-composition-id")||t.hasAttribute("data-composition-src");function Ji(t,e,{unregisteredLottie:n}){let i=[];for(let o of t.querySelectorAll("[data-start]")){let a=e.resolveStartForElement(o,0);if(!Number.isFinite(a))continue;let s=e.resolveDurationForElement(o);s!=null?i.push(Math.max(0,a)+s):(M(o)||Ki(o))&&i.push(null)}(n||t.querySelector("[data-lottie-src]"))&&i.push(null);let r=Te({authoredDurationSeconds:null,clipEndsSeconds:i});return r.pendingClips>0?{...r,seconds:null,source:"unresolved",reason:"a clip's length is pending"}:r}function Zi(t){if(t.declared!==null&&Number.isFinite(t.declared)&&t.declared>0)return t.declared;let e=ce(t.timeline()),n=Math.max(0,...t.floors().map(u=>u??0)),i=Number.isFinite(t.fallback)&&t.fallback>at?t.fallback:0,r=Math.max(n,i),a=e!==null&&e>=mn&&ce(r)!==null?null:e,s;return a!==null?s=Math.max(a,r):ce(n)!==null?s=r:i>0?s=i:s=t.derived(),s>0?s:0}function pn(t){let e=ne(t);if(!e)return null;let n=$({timelineRegistry:{},includeAuthoredTimingAttrs:!0,documentRef:t}),i=Zi({declared:L(e.getAttribute("data-duration")),timeline:()=>null,floors:()=>[Yi(t,{mediaStart:n.resolveMediaStartForElement,mediaDuration:rt}),Xi(e,n)],fallback:0,derived:()=>Ji(e,n,{unregisteredLottie:!1}).seconds??0});return{...ji(e),fps:cn().canonicalFps,durationSeconds:i}}var Ne="hyperframes-studio-preview";var fn="data-hf-upcoming";var hn="__hfPreviewErrors";var bn="data-hf-autostamped",j="data-hf-clip-hidden";function gn(t){return t.hasRuntime||t.runtimeInjected?!1:!!(t.hasNestedCompositions||t.hasTimelines&&t.attempts>=5)}function Y(t){return typeof t=="object"&&t!==null}function _n(t){return Y(t)&&typeof t.getDuration=="function"}function yn(t){return Y(t)&&typeof t.duration=="function"&&typeof t.time=="function"&&typeof t.seek=="function"&&typeof t.play=="function"&&typeof t.pause=="function"}var X="https://cdn.jsdelivr.net/npm/@hyperframes/core@0.8.206/dist/hyperframe.runtime.iife.js";function me(t){if(t===null)return null;let e=Number.parseInt(t,10);return Number.isFinite(e)&&e>0?e:null}function Qi(t){let e=t?.querySelector("[data-composition-id][data-width][data-height]")??t?.querySelector("[data-width][data-height]");if(!e)return null;let n=me(e.getAttribute("data-width")),i=me(e.getAttribute("data-height"));return n!==null&&i!==null?{width:n,height:i}:null}function er(t){return Array.isArray(t)?t.find(e=>typeof e=="string"&&e.trim()!==""&&e!=="[object Event]")??null:null}var Le=class{constructor(e,n){this._iframe=e;this._callbacks=n}_iframe;_callbacks;_interval=null;_runtimeInjected=!1;_runtimeScript=null;_failure=null;get failed(){return this._failure!==null&&this._failure.document===this._iframe.contentDocument}get runtimeInjected(){return this._runtimeInjected}start(){this.stop(),this._failure=null,this._runtimeInjected=!1;let e=0;this._interval=setInterval(()=>{e++;let n=null;try{n=this._poll(e)}catch(i){i instanceof DOMException&&i.name==="SecurityError"||(n={kind:"error",message:i instanceof Error?i.message:String(i)})}n??=this._deadlineOutcome(e),n&&(this.stop(),n.kind==="error"?(this._failure={document:this._iframe.contentDocument},this._callbacks.onError(n.message)):this._callbacks.onReady(n.result))},200)}_deadlineOutcome(e){return e<40||this._callbacks.hostOwnsDeadline?.()?null:{kind:"error",message:"Composition timeline not found after 8s"}}_poll(e){let n=this._iframe.contentWindow;if(!n)return null;let i=er(Reflect.get(n,hn));if(i!==null)return{kind:"error",message:i};let r=this._iframe.contentDocument,o=Reflect.get(n,"__timelines"),a=this.hasRuntimeBridge(n);if(gn({hasRuntime:a,hasTimelines:Y(o)&&Object.keys(o).length>0,hasNestedCompositions:!!r?.querySelector("[data-composition-src]"),runtimeInjected:this._runtimeInjected,attempts:e}))return this._injectRuntime(),null;if(this._runtimeInjected&&!a)return null;let s=this._resolveReadyResult(n,r);return s?{kind:"ready",result:s}:null}_resolveReadyResult(e,n){let i=this._resolvePlaybackDurationAdapter(e)??{kind:"document",getDuration:()=>0},r=i.getDuration();if(!Number.isFinite(r)||r<=0){if(i.kind==="direct-timeline")return null;r=n?pn(n)?.durationSeconds??0:0}return r<=0?null:{duration:r,adapter:{...i,getDuration:()=>r},compositionSize:Qi(n)}}stop(){this._runtimeScript&&(this._runtimeScript.onerror=null,this._runtimeScript=null),this.failed||(this._failure=null),this._interval!==null&&(clearInterval(this._interval),this._interval=null)}resolveDirectTimelineAdapter(){try{let e=this._iframe.contentWindow;return e?this._resolveDirectTimelineAdapterFromWindow(e):null}catch{return null}}resolveDirectTimelineAdapterFromWindow(e){return this._resolveDirectTimelineAdapterFromWindow(e)}hasRuntimeBridge(e){return Y(Reflect.get(e,"__player"))}_injectRuntime(){this._runtimeInjected=!0;try{let e=this._iframe.contentDocument;if(!e)return;let n=e.createElement("script");n.src=this._callbacks.resolveRuntimeUrl?.()??X,this._runtimeScript=n,n.onerror=()=>{this._runtimeScript!==n||this._iframe.contentDocument!==e||(this.stop(),this._failure={document:e},this._callbacks.onError("HyperFrames runtime failed to load from "+n.src))},(e.head||e.documentElement).appendChild(n),this._callbacks.onRuntimeInjected?.()}catch{}}_resolveDirectTimelineAdapterFromWindow(e){if(this.hasRuntimeBridge(e))return null;let n=Reflect.get(e,"__timelines");if(!Y(n))return null;let i=Object.keys(n);if(i.length===0)return null;let r=this._iframe.contentDocument?.querySelector("[data-composition-id]")?.getAttribute("data-composition-id"),o=r&&r in n?r:i[i.length-1],a=n[o];return yn(a)?a:null}_resolvePlaybackDurationAdapter(e){let n=Reflect.get(e,"__player");if(_n(n))return{kind:"runtime",getDuration:()=>n.getDuration()};let i=this._resolveDirectTimelineAdapterFromWindow(e);return i?{kind:"direct-timeline",timeline:i,getDuration:()=>i.duration()}:null}};var vn=`
1
+ import{a as G}from"./chunk-5UNAHRPA.js";var Ht=n=>n!==null&&Number.isFinite(n)&&n>0;function xe(n){let e=n.clipEndsSeconds.filter(i=>i===null).length;if(Ht(n.authoredDurationSeconds))return{seconds:n.authoredDurationSeconds,source:"authored",pendingClips:e};let t=n.clipEndsSeconds.filter(Ht);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 ci="http://www.w3.org/1999/xhtml";function $t(n){return n!=null&&n.nodeType===1}function Ye(n){return $t(n)&&n.namespaceURI===ci}function Ke(n,e){return Ye(n)&&n.localName===e}function mi(n){return Ke(n,"video")}function pi(n){return Ke(n,"audio")}function I(n){return mi(n)||pi(n)}function Xe(n){return Ke(n,"img")}function we(n){if(n==null||n.trim()==="")return null;let e=Number.parseInt(n,10);return Number.isFinite(e)&&e>0?e:null}function re(n=document){let e=n.querySelector('[data-composition-id][data-root="true"]');return Ye(e)?e:n.querySelector("[data-composition-id]")}var j=Object.freeze({start:"data-start",duration:"data-duration",trackIndex:"data-track-index",derivedEnd:"data-end",legacyTrack:"data-layer"}),mo=Object.freeze([j.start,j.duration,j.trackIndex]),po=Object.freeze([j.derivedEnd]),fo=Object.freeze([j.derivedEnd,j.legacyTrack]);function Ze(n){if(n==null||n.trim()==="")return null;let e=Number(n);return Number.isFinite(e)?e:null}var Wt=n=>{let e=Ze(n);return e!==null&&e>=0?e:null};function ke(n){return Wt(n("data-playback-start"))??Wt(n("data-media-start"))??0}var oe=.1,ae=10;function Je(n){return Number.isFinite(n)&&n>0?Math.max(oe,Math.min(ae,n)):1}function Bt(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 Gt(n,e){let t=Qe(n);if(t!==null)return t;let i=Ze(n("data-end"));return i!==null?i-e:null}var fi=3;function et(n,e,t){return Number.isFinite(n)?Math.max(0,n-e)/Je(t):null}function tt(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:fi,source:"default"};if(i===null)return{seconds:null,source:"pending",reason:"source duration not yet probed"};let a=et(i,r,o);return a===null?{seconds:null,source:"pending",reason:"source reported a non-finite duration"}:{seconds:a,source:"media"}}var zt="data-fx-chain",bo=zt.slice(5);var se=(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}),nt=(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}),Me=(n=-40,e=40,t=0)=>({kind:"number",key:"gain",label:"Gain",unit:"dB",min:n,max:e,step:.1,default:t,automatable:!0}),jt={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."},qt=[{id:"gain",label:"Gain",group:"dynamics",description:"Raise or lower the whole signal. Automate it to duck under something else.",params:[Me(-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:[se("frequency","Frequency",1e3),Me(-40,40,0),nt(1)],web:"biquad-peaking"},{id:"lowshelf",label:"Low Shelf",group:"filter",description:"Lift or drop everything below the corner frequency.",params:[se("frequency","Frequency",200,20,2e3),Me(-40,40,0)],web:"biquad-lowshelf"},{id:"highshelf",label:"High Shelf",group:"filter",description:"Lift or drop everything above the corner frequency.",params:[se("frequency","Frequency",4e3,500,2e4),Me(-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:[se("frequency","Cutoff",300,20,2e4),nt(.707),jt],web:"biquad-highpass"},{id:"lowpass",label:"Low-pass",group:"filter",description:"Remove high frequencies, which darkens or muffles a track.",params:[se("frequency","Cutoff",8e3,100,2e4),nt(.707),jt],web:"biquad-lowpass"},{id:"compressor",label:"Compressor",group:"dynamics",description:"Pull loud parts down so the quiet ones can come up.",params:[{kind:"number",key:"threshold",label:"Threshold",unit:"dB",min:-60,max:0,step:.5,default:-24,hint:"Level above which the compressor starts working."},{kind:"number",key:"ratio",label:"Ratio",unit:":1",min:1,max:20,step:.1,default:4},{kind:"number",key:"attack",label:"Attack",unit:"ms",min:.01,max:2e3,step:.1,default:20,scale:"log"},{kind:"number",key:"release",label:"Release",unit:"ms",min:.01,max:9e3,step:1,default:250,scale:"log"},{kind:"number",key:"knee",label:"Knee",unit:"",min:1,max:8,step:.01,default:2.83,hint:"1 is a hard corner; higher eases into it."},{kind:"number",key:"makeup",label:"Makeup",unit:"dB",min:0,max:36,step:.1,default:0},{kind:"number",key:"mix",label:"Mix",unit:"",min:0,max:1,step:.01,default:1,hint:"Below 1 blends the dry signal back in."}],web:"worklet-compressor"},{id:"limiter",label:"Limiter",group:"dynamics",description:"Peak limiter that follows the signal's level. It has no lookahead, so a fast peak or an inter-sample peak can pass the ceiling; use the true-peak limiter for a delivery limit.",params:[{kind:"number",key:"limit",label:"Ceiling",unit:"dB",min:-24,max:0,step:.1,default:-1},{kind:"number",key:"attack",label:"Attack",unit:"ms",min:.1,max:80,step:.1,default:5},{kind:"number",key:"release",label:"Release",unit:"ms",min:1,max:8e3,step:1,default:50,scale:"log"},{kind:"number",key:"level_out",label:"Output",unit:"dB",min:-24,max:24,step:.1,default:0}],web:"worklet-limiter"},{id:"truepeak",label:"True-peak limiter",group:"dynamics",description:"Lookahead limiter that holds a 4x estimate of the inter-sample peak at a dBTP ceiling; full-band noise can land up to about 1.7 dB above it. Adds lookahead plus about 0.3 ms of latency.",params:[{kind:"number",key:"ceiling",label:"Ceiling",unit:"dBTP",min:-24,max:0,step:.1,default:-1,hint:"Target true peak, measured on a 4x oversampled signal. Dense full-band sound can end up to about 1.7 dB above it."},{kind:"number",key:"lookahead",label:"Lookahead",unit:"ms",min:.5,max:10,step:.1,default:3,hint:"How far ahead the gain starts falling. Longer is smoother and adds the same latency."},{kind:"number",key:"release",label:"Release",unit:"ms",min:10,max:2e3,step:1,default:80,scale:"log"}],web:"worklet-truepeak"},{id:"gate",label:"Noise Gate",group:"dynamics",description:"Silence the track when it drops below the threshold.",params:[{kind:"number",key:"threshold",label:"Threshold",unit:"dB",min:-80,max:0,step:.5,default:-35},{kind:"number",key:"range",label:"Range",unit:"dB",min:-80,max:0,step:.5,default:-24,hint:"How far down the gate pulls when closed."},{kind:"number",key:"ratio",label:"Ratio",unit:":1",min:1,max:20,step:.1,default:10},{kind:"number",key:"attack",label:"Attack",unit:"ms",min:.01,max:9e3,step:.1,default:1,scale:"log"},{kind:"number",key:"release",label:"Release",unit:"ms",min:.01,max:9e3,step:1,default:100,scale:"log"},{kind:"number",key:"knee",label:"Knee",unit:"",min:1,max:8,step:.01,default:2.83}],web:"worklet-gate"},{id:"saturate",label:"Saturation",group:"nonlinear",description:"Soft-clip the waveform for warmth or outright distortion.",params:[{kind:"enum",key:"type",label:"Curve",options:[{value:"tanh",label:"Tanh"},{value:"atan",label:"Arctan"},{value:"cubic",label:"Cubic"},{value:"exp",label:"Exponential"},{value:"alg",label:"Algebraic"},{value:"quintic",label:"Quintic"},{value:"sin",label:"Sine"},{value:"erf",label:"Error function"},{value:"hard",label:"Hard clip"}],default:"tanh"},{kind:"number",key:"threshold",label:"Threshold",unit:"dB",min:-40,max:0,step:.1,default:-6},{kind:"number",key:"output",automatable:!0,label:"Output",unit:"dB",min:-24,max:24,step:.1,default:0},{kind:"number",key:"oversample",label:"Oversample",unit:"x",min:1,max:8,step:1,default:4,hint:"Higher costs more but keeps aliasing down."}],web:"waveshaper"},{id:"bitcrush",label:"Bitcrush",group:"nonlinear",description:"Drop bit depth and sample rate for a lo-fi, digital sound.",params:[{kind:"number",key:"bits",label:"Bit depth",unit:"bit",min:1,max:32,step:.1,default:8},{kind:"number",key:"samples",label:"Sample hold",unit:"x",min:1,max:250,step:1,default:1,hint:"Repeats each sample N times, a crude downsample."},{kind:"number",key:"mix",label:"Mix",unit:"",min:0,max:1,step:.01,default:1}],web:"worklet-bitcrush"},{id:"pitchshift",label:"Pitch shift",group:"time",description:"Shifts pitch up or down without changing playback speed. Adds ~50 ms of latency.",params:[{kind:"number",key:"semitones",label:"Semitones",unit:"st",min:-12,max:12,step:1,default:0},{kind:"number",key:"mix",label:"Mix",unit:"",min:0,max:1,step:.01,default:1}],web:"worklet-pitchshift"},{id:"delay",label:"Delay",group:"time",description:"Repeating echoes behind the dry signal.",params:[{kind:"number",key:"time",automatable:!0,label:"Time",unit:"ms",min:1,max:5e3,step:1,default:250,scale:"log"},{kind:"number",key:"feedback",automatable:!0,label:"Feedback",unit:"",min:.01,max:.95,step:.01,default:.35},{kind:"number",key:"mix",automatable:!0,label:"Mix",unit:"",min:0,max:1,step:.01,default:.4}],web:"delay-feedback"},{id:"chorus",label:"Chorus",group:"time",description:"Detuned copies of the signal for width and thickness.",params:[{kind:"number",key:"delay",automatable:!0,label:"Delay",unit:"ms",min:1,max:100,step:.1,default:7},{kind:"number",key:"depth",automatable:!0,label:"Depth",unit:"ms",min:0,max:10,step:.01,default:2},{kind:"number",key:"speed",automatable:!0,label:"Rate",unit:"Hz",min:.01,max:10,step:.01,default:1},{kind:"number",key:"mix",automatable:!0,label:"Mix",unit:"",min:0,max:1,step:.01,default:.5}],web:"chorus-lfo"},{id:"phaser",label:"Phaser",group:"time",description:"Sweeping notches moving through the spectrum.",params:[{kind:"number",key:"in_gain",automatable:!0,label:"Input",unit:"",min:0,max:1,step:.01,default:.4},{kind:"number",key:"out_gain",automatable:!0,label:"Output",unit:"",min:0,max:2,step:.01,default:.74},{kind:"number",key:"delay",label:"Delay",unit:"ms",min:.1,max:5,step:.1,default:3},{kind:"number",key:"decay",label:"Decay",unit:"",min:0,max:.99,step:.01,default:.4},{kind:"number",key:"speed",automatable:!0,label:"Rate",unit:"Hz",min:.1,max:2,step:.01,default:.5},{kind:"enum",key:"type",label:"Waveform",options:[{value:"0",label:"Triangular"},{value:"1",label:"Sinusoidal"}],default:"0"}],web:"allpass-phaser"},{id:"reverb",label:"Reverb",group:"time",description:"Room tail. Both ends convolve the same generated impulse, so preview matches render.",params:[{kind:"number",key:"size",label:"Room size",unit:"",min:.05,max:1,step:.01,default:.7},{kind:"number",key:"damping",label:"Damping",unit:"",min:0,max:1,step:.01,default:.5,hint:"Higher rolls the top off the tail faster."},{kind:"number",key:"wet",automatable:!0,label:"Wet",unit:"",min:0,max:1,step:.01,default:.35},{kind:"number",key:"dry",automatable:!0,label:"Dry",unit:"",min:0,max:1,step:.01,default:.7}],web:"convolver"}],go=new Map(qt.map(n=>[n.id,n]));var _o=qt.map(n=>n.id);function hi(n){return 10**(n/20)}var Yt=hi(12);var rt="data-automation",wo=rt.slice(5),it=1,gi=512,P=class extends Error{constructor(e){super(e),this.name="AudioAutomationError"}},Ie="volume",Ce="rate";function Xt(n){if(n===Ie)return{kind:"volume"};if(n===Ce)return{kind:"rate"};let e=n.split(".");if(e.length===3&&e[0]==="fx"&&e[1]===_i){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 _i="preset";var yi={min:0,max:Yt,step:.01,unit:"",label:"Volume",scale:"linear",default:1};var vi={min:oe,max:ae,step:.05,unit:"x",label:"Speed",scale:"log",default:1};function ue(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 Ai(n){let e=ue(n);return e===null||e===0?0:Math.min(1,Math.max(-1,e))}function Zt(n,e){let t=ue(n),i=ue(e);if(t===null||i===null)return null;let r=s=>Math.min(.999,Math.max(.001,s)),o=r(t),a=r(i);return Math.abs(o-a)<1e-6?null:{x:o,y:a}}function Si(n){let e=Ai(n?.curve),t=Zt(n?.viaX,n?.viaY);return{...e?{curve:e}:{},...t?{viaX:t.x,viaY:t.y}:{}}}function Ei(n,e){let t=ue(n?.t),i=ue(n?.v);if(t===null||i===null)return null;let r=e?Math.min(e.max,Math.max(e.min,i)):i;return{t:Math.max(0,t),v:r,...Si(n)}}function Ti(n,e){let t=n.map(r=>Ei(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,gi)}function Ri(n){let e=[];for(let t of n.lanes){if(!Xt(t.target))continue;let i=t.target===Ie?yi:t.target===Ce?vi:null,r=Ti(t.points??[],i);r.length>0&&e.push({target:t.target,points:r})}return{version:it,lanes:e}}function Jt(n){let e;try{e=JSON.parse(n)}catch(r){throw new P(`Automation is not valid JSON: ${r.message}`)}if(typeof e!="object"||e===null)throw new P("Automation must be a JSON object.");let t=e;if(t.version!==it)throw new P(`Unsupported automation version: ${String(t.version)}`);if(!Array.isArray(t.lanes))throw new P("Automation is missing a `lanes` array.");let i=t.lanes.map((r,o)=>{if(typeof r!="object"||r===null)throw new P(`Lane ${o} is not an object.`);let a=r;if(typeof a.target!="string"||!Xt(a.target))throw new P(`Lane ${o} has an unreadable target: ${String(a.target)}`);if(!Array.isArray(a.points))throw new P(`Lane ${o} is missing a \`points\` array.`);return{target:a.target,points:a.points}});return Ri({version:it,lanes:i})}function xi(n,e){return e?Math.pow(n,Math.pow(2,2*e)):n}function wi(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,u=Math.min(o,Math.max(1,a,s));return{cx:n+t/u,cy:e+i/u,w:u}}function ki(n,e,t){let{cx:i,cy:r,w:o}=wi(e,t),a=2-2*o,s=n*a-1+2*o*i,u=-n*a-2*o*i,d=Mi(s,u,n),m=1-d,h=m*m+2*o*d*m+d*d;return h>0?(2*o*r*d*m+d*d)/h:n}function Mi(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 Ii(n,e){let t=Zt(e.viaX,e.viaY);return t?ki(Math.min(1,Math.max(0,n)),t.x,t.y):xi(n,e.curve)}function Ci(n,e,t,i){return i==="log"&&n>0&&e>0?Math.exp(Math.log(n)+(Math.log(e)-Math.log(n))*t):n+(e-n)*t}function De(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 u=i[a],d=i[s],m=d.t-u.t;return m<=0?d.v:Ci(u.v,d.v,Ii((e-u.t)/m,u),t)}var Ne=new Map,Di=64;function Qt(n,e=Ie){let t=`${e}\0${n}`,i=Ne.get(t);if(i!==void 0)return i;let r=null;try{r=Jt(n).lanes.find(o=>o.target===e)??null}catch{r=null}return Ne.size>Di&&Ne.clear(),Ne.set(t,r),r}var en=48,tn=new WeakMap;function Ni(n){let e=n.points,t=e[0].v,i=e[e.length-1].v,r=[0],o=[0],a=u=>{let d=r[r.length-1];if(u<=d)return;let m=De(n,d,"log");r.push(u),o.push(o[o.length-1]+(m+De(n,u,"log"))/2*(u-d))},s=Math.max(0,e[0].t);a(s);for(let u=1;u<e.length;u+=1){let d=e[u-1].t,m=e[u].t;if(!(m<=0))for(let h=1;h<=en;h+=1)a(Math.max(d,0)+(m-d)*h/en)}return{ts:Float64Array.from(r),ss:Float64Array.from(o),firstRate:t,lastRate:i}}function Pi(n){let e=tn.get(n);return e||(e=Ni(n),tn.set(n,e)),e}function Li(n){return typeof n!="number"&&n.points.length>0}function Oi(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 ot(n,e){if(typeof n=="number")return e/n;if(!Li(n))return e;let{ts:t,ss:i,firstRate:r,lastRate:o}=Pi(n),a=t.length-1;return e<=0?e/r:e>=i[a]?t[a]+(e-i[a])/o:Oi(i,t,e)}function Fi(n){return n?Qt(n,Ce):null}function nn(n,e){return Fi(n)??e}var Po=[{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"}),Oo=Object.freeze([y.start,y.duration,y.trackIndex]),Fo=Object.freeze([y.derivedEnd]),Uo=Object.freeze([y.derivedEnd,y.legacyTrack]);function L(n){if(n==null||n.trim()==="")return null;let e=Number(n);return Number.isFinite(e)?e:null}var an=/^[A-Za-z0-9_.:-]+$/;function sn(n,e){let t=n.charCodeAt(e);return t>=48&&t<=57}function rn(n,e){let t=e;for(;t>=0&&sn(n,t);)t--;return t}function Ui(n,e){let t=e;for(;t>=0&&(n[t]??"").trim()==="";)t--;return t}function Vi(n){let e=n.length-1;if(!sn(n,e))return null;let t=rn(n,e);return n[t]==="."&&(t=rn(n,t-1)),t+1}function Hi(n){let e=Vi(n);if(e==null)return null;let t=Ui(n,e-1),i=n[t];if(i!=="+"&&i!=="-")return null;let r=n.slice(0,t).trim();if(!an.test(r))return null;let o=Number(n.slice(e));return Number.isFinite(o)?{refId:r,operator:i,magnitude:o}:null}function le(n){let e=(n??"").trim();if(!e)return null;let t=L(e);if(t!=null)return{kind:"absolute",value:t};if(an.test(e))return{kind:"reference",refId:e,offset:0};let i=Hi(e);return i?{kind:"reference",refId:i.refId,offset:i.operator==="-"?-i.magnitude:i.magnitude}:null}function x(n,e,t,i){n.push({code:e,attribute:t,value:i})}function $i(n,e,t,i){if(e==null||e.trim()==="")return t.defaultStart===void 0?0:t.defaultStart;if(!n)return x(i,"invalid-start",y.start,e),null;if(n.kind==="absolute")return Math.max(0,n.value);let r=t.resolveReferenceEnd?.(n.refId);return r==null||!Number.isFinite(r)?(x(i,"unresolved-start-reference",y.start,e),null):Math.max(0,r+n.offset)}var Wi=1e-9;function Bi(n,e){return Math.abs(n-e)<=Wi}function Gi(n,e,t){let i=L(n);if(i==null){x(t,"deprecated-end",y.derivedEnd,n),x(t,"invalid-end",y.derivedEnd,n);return}if(e==null){x(t,"deprecated-end",y.derivedEnd,n);return}Bi(i,e)||(x(t,"deprecated-end",y.derivedEnd,n),x(t,"conflicting-end",y.derivedEnd,n))}function ji(n,e,t){let i=L(n);return i==null||i<0?(x(t,"invalid-duration",y.duration,n),{duration:null,end:null,durationSource:"invalid"}):{duration:i,end:e==null?null:e+i,durationSource:"duration"}}function zi(n,e,t){x(t,"deprecated-end",y.derivedEnd,n);let i=L(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 qi(n,e,t){let i=n.getAttribute(y.duration),r=n.getAttribute(y.derivedEnd);if(i==null)return r==null?{duration:null,end:null,durationSource:"missing"}:zi(r,e,t);let o=ji(i,e,t);return r!=null&&Gi(r,o.end,t),o}function on(n,e,t,i){let r=L(n);return r==null||!Number.isInteger(r)?(x(i,"invalid-track-index",e,n),{trackIndex:0,trackSource:"invalid"}):{trackIndex:r,trackSource:t}}function Yi(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),on(i,y.legacyTrack,"legacy-layer",e);let r=on(t??"",y.trackIndex,"track-index",e);if(i==null)return r;x(e,"deprecated-layer",y.legacyTrack,i);let o=L(i);return o!=null&&o!==r.trackIndex&&x(e,"conflicting-layer",y.legacyTrack,i),r}function at(n,e={}){let t=[],i=n.getAttribute(y.start),r=le(i),o=$i(r,i,e,t),a=qi(n,o,t),s=Yi(n,t);return{startExpression:r,start:o,...a,...s,diagnostics:t}}function O(n){return L(n)}function de(n){return Bt(e=>n.getAttribute(e),I(n)?n.defaultPlaybackRate:1)}function st(n){return nn(n.getAttribute("data-automation"),de(n))}function Pe(n){return ke(e=>n.getAttribute(e))}function z(n,e){return Ki(e,Pe(n),st(n))}function ut(n){let e=tt({tag:"video",authoredDurationSeconds:Qe(t=>n.getAttribute(t)),sourceDurationSeconds:Number.isFinite(n.duration)?n.duration:null,mediaStartSeconds:Pe(n),playbackRate:de(n)});return e.source==="media"?z(n,n.duration):e.seconds}function Le(n,e=0){return!Xe(n)||!n.hasAttribute("data-start")&&!n.hasAttribute("data-track-index")?null:tt({tag:"img",authoredDurationSeconds:Gt(t=>n.getAttribute(t),e),sourceDurationSeconds:null,mediaStartSeconds:0,playbackRate:1}).seconds}function Ki(n,e,t){return typeof t=="number"?et(n,e,t):Number.isFinite(n)?ot(t,Math.max(0,n-e)):null}function un(){return globalThis}function q(n,e){if(typeof window>"u")return;let t=un(),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 Xi=n=>n.paused?.()===!0?(n.startTime?.()??0)+(n.totalDuration?.()??0)/Math.abs(n.timeScale?.()||1):0;function ce(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(Xi));return Number.isFinite(i)?i:null}catch(e){return q("runtime.timelineDuration",e),null}}var ln="data-hf-authored-duration",dn="data-hf-authored-end";function me(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 Oe(n){let e=me(n.start);if(e==null)return null;let t=Math.max(0,e),i=me(n.duration),r=me(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=me(n.end),s=me(n.authoredEnd),u=a!=null&&a>t?a:s!=null&&s>t?s:null;return{start:t,duration:u==null?null:u-t,end:u}}var Y=Object.freeze({start:"data-start",duration:"data-duration",trackIndex:"data-track-index",derivedEnd:"data-end",legacyTrack:"data-layer"}),Qo=Object.freeze([Y.start,Y.duration,Y.trackIndex]),ea=Object.freeze([Y.derivedEnd]),ta=Object.freeze([Y.derivedEnd,Y.legacyTrack]);function Zi(n){if(n==null||n.trim()==="")return null;let e=Number(n);return Number.isFinite(e)?e:null}var cn=n=>{let e=Zi(n);return e!==null&&e>=0?e:null};function Ji(n){return cn(n("data-playback-start"))??cn(n("data-media-start"))??0}var mn="data-hf-media-start-basis";function pn(n){return n?.trim().toLowerCase()==="global"?"global":"local"}function Qi(n){return pn(n.basis)==="global"?n.authoredStart:n.hostStart+n.authoredStart}function fn(n){return bn(n)?Qi({authoredStart:n.authoredStart,hostStart:n.hostStart,basis:n.basis}):n.ordinaryStart()}function hn(n){return bn(n)&&pn(n.basis)==="global"}function bn(n){return!n.hasAutoStart&&n.authoredStart!=null&&n.hostStart!==0}function lt(n){return Ji(e=>n.getAttribute(e))}function gn(n,e){return n-lt(e)}function $(n){let e=n.timelineRegistry??{},t=n.includeAuthoredTimingAttrs??!1,i=n.documentRef??document,r=new WeakMap,o=new WeakMap,a=new Set,s=l=>(l.hasAttribute("data-composition-id")?l.parentElement:l)?.closest("[data-composition-id]")??null,u=(l,f)=>{let g=s(f);if(g){for(let k of g.querySelectorAll(`[id="${l}"]`))if(s(k)===g)return k}let R=i.getElementById(l);return R||(Array.from(i.querySelectorAll("[data-composition-id]")).find(k=>k.getAttribute("data-composition-id")===l)??null)},d=(l,f)=>t?l.getAttribute(f):null,m=l=>Oe({start:0,duration:l.getAttribute("data-duration"),authoredDuration:d(l,"data-hf-authored-duration")})?.duration??Oe({start:T(l,0),end:l.getAttribute("data-end"),authoredEnd:d(l,"data-hf-authored-end")})?.duration??null,h=l=>l!=null&&Number.isFinite(l)&&l>0?l:null,v=l=>{let f=l.getAttribute("data-composition-id");return f?h(ce(e[f])):null},b=l=>{let f=o.get(l);if(f!==void 0)return f;let g=m(l)??h(I(l)?z(l,l.duration):null)??h(Le(l))??v(l);return o.set(l,g),g},A="[data-composition-src], [data-composition-id], [data-composition-file]",_=l=>l.matches(A),S=l=>!l.hasAttribute("data-composition-id")||le(l.getAttribute("data-start"))?null:l.parentElement?.closest(`[data-start], ${A}`)??null,C=(l,f)=>gn(T(l,f),S(l)??l),M=(l,f)=>{let g=l.hasAttribute("data-composition-id")?l.parentElement?.closest("[data-composition-id]"):l.closest("[data-composition-id]");return g?C(g,f):0},D=(l,f)=>{let g=le(l.getAttribute("data-start"));if(!g){let H=S(l);return H?T(H,f):f}if(g.kind==="absolute")return M(l,f)+Math.max(0,g.value);let R=u(g.refId,l);if(!R)return f;let k=T(R,0),Te=b(R)??0,Re=Math.min(0,M(l,0));return Math.max(Re,k+Te+g.offset)},T=(l,f)=>{let g=r.get(l);if(g!==void 0)return g??f;if(a.has(l))return f;a.add(l);try{let R=D(l,f);return r.set(l,R),R}finally{a.delete(l)}},V=l=>{let f=l.closest("[data-composition-id]");return{authoredStart:O(l.getAttribute("data-start")),hostStart:f?C(f,0):0,hasAutoStart:l.hasAttribute("data-hf-auto-start"),basis:l.getAttribute(mn)}};return{resolveStartForElement:(l,f=0)=>T(l,Math.max(0,f)),resolveDurationForElement:l=>b(l),resolveMediaStartForElement:l=>{let f=V(l);return fn({...f,ordinaryStart:()=>T(l,f.hostStart)})},resolveHostStartForElement:l=>M(l,0),resolveHostSlotsForElement:l=>{let f=[];for(let g=l.parentElement;g;g=g.parentElement){if(!_(g)||S(g)||lt(g)<=0)continue;let R=T(g,0),k=m(g);f.push({start:R,end:k?R+k:1/0})}return f},isRootGlobalMediaStartForElement:l=>I(l)&&hn(V(l))}}function _n(){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 yn=7200,dt=1/60,pe=n=>n!==null&&n>dt?n:null;function er(n){return{width:we(n.getAttribute("data-width")),height:we(n.getAttribute("data-height"))}}function tr(n,e){let t=[];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);o==null||o<=dt||t.push(Math.max(0,r)+o)}return pe(xe({authoredDurationSeconds:null,clipEndsSeconds:t}).seconds)}function nr(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=O(n.getAttribute("data-duration"));return pe(xe({authoredDurationSeconds:null,clipEndsSeconds:[i,...t]}).seconds)}var ir=n=>n.hasAttribute("data-composition-id")||n.hasAttribute("data-composition-src");function rr(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):(I(o)||ir(o))&&i.push(null)}(t||n.querySelector("[data-lottie-src]"))&&i.push(null);let r=xe({authoredDurationSeconds:null,clipEndsSeconds:i});return r.pendingClips>0?{...r,seconds:null,source:"unresolved",reason:"a clip's length is pending"}:r}function or(n){if(n.declared!==null&&Number.isFinite(n.declared)&&n.declared>0)return n.declared;let e=pe(n.timeline()),t=Math.max(0,...n.floors().map(u=>u??0)),i=Number.isFinite(n.fallback)&&n.fallback>dt?n.fallback:0,r=Math.max(t,i),a=e!==null&&e>=yn&&pe(r)!==null?null:e,s;return a!==null?s=Math.max(a,r):pe(t)!==null?s=r:i>0?s=i:s=n.derived(),s>0?s:0}function vn(n){let e=re(n);if(!e)return null;let t=$({timelineRegistry:{},includeAuthoredTimingAttrs:!0,documentRef:n}),i=or({declared:O(e.getAttribute("data-duration")),timeline:()=>null,floors:()=>[tr(n,{mediaStart:t.resolveMediaStartForElement,mediaDuration:ut}),nr(e,t)],fallback:0,derived:()=>rr(e,t,{unregisteredLottie:!1}).seconds??0});return{...er(e),fps:_n().canonicalFps,durationSeconds:i}}var Fe="hyperframes-studio-preview";var An="data-hf-upcoming";var Sn="__hfPreviewErrors";var En="data-hf-autostamped",K="data-hf-clip-hidden";function Tn(n){return n.hasRuntime||n.runtimeInjected?!1:!!(n.hasNestedCompositions||n.hasTimelines&&n.attempts>=5)}function X(n){return typeof n=="object"&&n!==null}function Rn(n){return X(n)&&typeof n.getDuration=="function"}function xn(n){return X(n)&&typeof n.duration=="function"&&typeof n.time=="function"&&typeof n.seek=="function"&&typeof n.play=="function"&&typeof n.pause=="function"}var Z="https://cdn.jsdelivr.net/npm/@hyperframes/core@0.8.207/dist/hyperframe.runtime.iife.js";function fe(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=fe(e.getAttribute("data-width")),i=fe(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 Ue=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,Sn));if(i!==null)return{kind:"error",message:i};let r=this._iframe.contentDocument,o=Reflect.get(t,"__timelines"),a=this.hasRuntimeBridge(t);if(Tn({hasRuntime:a,hasTimelines:X(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?vn(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 X(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?.()??Z,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(!X(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 xn(a)?a:null}_resolvePlaybackDurationAdapter(e){let t=Reflect.get(e,"__player");if(Rn(t))return{kind:"runtime",getDuration:()=>t.getDuration()};let i=this._resolveDirectTimelineAdapterFromWindow(e);return i?{kind:"direct-timeline",timeline:i,getDuration:()=>i.duration()}:null}};var wn=`
2
2
  :host {
3
3
  display: block;
4
4
  position: relative;
@@ -474,5 +474,5 @@ import{a as F}from"./chunk-5UNAHRPA.js";var Dt=t=>t!==null&&Number.isFinite(t)&&
474
474
  background: var(--hfp-accent, #fff);
475
475
  pointer-events: none;
476
476
  }
477
- `,An='<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>',En='<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>',st='<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>',ut='<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>',Sn='<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 K(t){return Number.isInteger(t)?`${t}x`:`${t}x`}function lt(t){if(!Number.isFinite(t)||t<0)return"0:00";let e=Math.floor(t),n=Math.floor(e/60),i=e%60;return`${n}:${i.toString().padStart(2,"0")}`}function Rn(t,e,n={}){let i=n.speedPresets??Tn,r=document.createElement("div");r.className="hfp-controls",r.addEventListener("click",c=>{c.stopPropagation()});let o=document.createElement("button");o.className="hfp-play-btn",o.type="button",o.innerHTML=`<span class="hfp-ico hfp-ico-play">${An}</span><span class="hfp-ico hfp-ico-pause">${En}</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 u=document.createElement("span");u.className="hfp-time",u.textContent="0:00 / 0:00";let d=document.createElement("div");d.className="hfp-speed-wrap";let m=document.createElement("button");m.className="hfp-speed-btn",m.type="button",m.textContent="1x",m.setAttribute("aria-label","Playback speed: 1x");let h=document.createElement("div");h.className="hfp-speed-menu",h.setAttribute("role","menu");for(let c of i){let p=document.createElement("button");p.className="hfp-speed-option",p.type="button",p.setAttribute("role","menuitem"),p.dataset.speed=String(c),p.textContent=K(c),c===1&&p.classList.add("hfp-active"),h.appendChild(p)}d.appendChild(h),d.appendChild(m);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=st,b.setAttribute("aria-label","Mute");let A=document.createElement("div");A.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 E=document.createElement("div");E.className="hfp-volume-fill",E.style.width="100%",_.appendChild(E),A.appendChild(_),v.appendChild(A),v.appendChild(b),n.audioLocked&&(v.style.display="none"),r.appendChild(o),r.appendChild(a),r.appendChild(u),r.appendChild(v),r.appendChild(d),t.appendChild(r);let C=!1,I=!1,D=1,w=null,V=i.indexOf(1);V===-1&&(V=0);let ee=(c,p)=>c?Sn:p===0?ut:p<.5?ut:st;o.addEventListener("click",c=>{c.stopPropagation(),C?e.onPause():e.onPlay()}),b.addEventListener("click",c=>{c.stopPropagation(),e.onMuteToggle()});let U=!1,te=c=>{let p=_.getBoundingClientRect(),S=Math.max(0,Math.min(1,(c-p.left)/p.width));D=S,E.style.width=`${S*100}%`,_.setAttribute("aria-valuenow",String(Math.round(S*100))),I&&S>0&&e.onMuteToggle(),b.innerHTML=ee(I,S),e.onVolumeChange(S)};_.addEventListener("mousedown",c=>{c.stopPropagation(),U=!0,te(c.clientX)});let l=c=>{U&&te(c.clientX)},f=()=>{U=!1};document.addEventListener("mousemove",l),document.addEventListener("mouseup",f),_.addEventListener("touchstart",c=>{U=!0;let p=c.touches[0];p&&te(p.clientX)},{passive:!0});let g=c=>{if(U){let p=c.touches[0];p&&te(p.clientX)}},T=()=>{U=!1};document.addEventListener("touchmove",g,{passive:!0}),document.addEventListener("touchend",T);let k=.05;_.addEventListener("keydown",c=>{let p=D;if(c.key==="ArrowRight"||c.key==="ArrowUp")p=Math.min(1,D+k);else if(c.key==="ArrowLeft"||c.key==="ArrowDown")p=Math.max(0,D-k);else return;c.preventDefault(),c.stopPropagation(),D=p,E.style.width=`${p*100}%`,_.setAttribute("aria-valuenow",String(Math.round(p*100))),I&&p>0&&e.onMuteToggle(),b.innerHTML=ee(I,p),e.onVolumeChange(p)});let Ae=c=>{for(let p of h.querySelectorAll(".hfp-speed-option"))p.classList.toggle("hfp-active",p.dataset.speed===String(c))};m.addEventListener("click",c=>{c.stopPropagation();let p=h.classList.toggle("hfp-open");m.setAttribute("aria-expanded",String(p))}),h.addEventListener("click",c=>{c.stopPropagation();let p=c.target.closest(".hfp-speed-option");if(!p)return;let S=parseFloat(p.dataset.speed);V=i.indexOf(S),m.textContent=K(S),m.setAttribute("aria-label",`Playback speed: ${K(S)}`),Ae(S),h.classList.remove("hfp-open"),m.setAttribute("aria-expanded","false"),e.onSpeedChange(S)});let Ee=()=>{h.classList.remove("hfp-open"),m.setAttribute("aria-expanded","false")};document.addEventListener("click",Ee);let H=c=>{let p=a.getBoundingClientRect(),S=Math.max(0,Math.min(1,(c-p.left)/p.width));e.onSeek(S)},O=!1;a.addEventListener("mousedown",c=>{c.stopPropagation(),O=!0,e.onScrubStart?.(),H(c.clientX)});let Rt=c=>{O&&H(c.clientX)},xt=()=>{O&&(O=!1,e.onScrubEnd?.())};document.addEventListener("mousemove",Rt),document.addEventListener("mouseup",xt),a.addEventListener("touchstart",c=>{O=!0,e.onScrubStart?.();let p=c.touches[0];p&&H(p.clientX)},{passive:!0});let wt=c=>{if(O){let p=c.touches[0];p&&H(p.clientX)}},kt=()=>{O&&(O=!1,e.onScrubEnd?.())};document.addEventListener("touchmove",wt,{passive:!0}),document.addEventListener("touchend",kt);let It=()=>{w&&clearTimeout(w),w=setTimeout(()=>{C&&r.classList.add("hfp-hidden")},3e3)},Se=t instanceof ShadowRoot?t.host:t,Mt=()=>{r.classList.remove("hfp-hidden"),It()},Ct=()=>{C&&r.classList.add("hfp-hidden")};return Se.addEventListener("mousemove",Mt),Se.addEventListener("mouseleave",Ct),{updateTime(c,p){let S=p>0?Math.min(c,p):c,ii=p>0?S/p*100:0;s.style.width=`${ii}%`,u.textContent=`${lt(S)} / ${lt(p)}`},updatePlaying(c){C=c,o.classList.toggle("hfp-playing",c),o.setAttribute("aria-label",c?"Pause":"Play"),c?It():r.classList.remove("hfp-hidden")},updateSpeed(c){let p=i.indexOf(c);p!==-1&&(V=p),m.textContent=K(c),m.setAttribute("aria-label",`Playback speed: ${K(c)}`),Ae(c)},updateMuted(c){I=c,b.innerHTML=ee(c,D),b.setAttribute("aria-label",c?"Unmute":"Mute")},updateVolume(c){D=c,E.style.width=`${c*100}%`,_.setAttribute("aria-valuenow",String(Math.round(c*100))),b.innerHTML=ee(I,c)},setVolumeControlsHidden(c){v.style.display=c?"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",l),document.removeEventListener("mouseup",f),document.removeEventListener("touchmove",g),document.removeEventListener("touchend",T),document.removeEventListener("click",Ee),Se.removeEventListener("mousemove",Mt),Se.removeEventListener("mouseleave",Ct),w&&clearTimeout(w),r.remove()}}}function xn(t,e,n,i,r,o=!1){let a=i?i.split(",").map(Number).filter(d=>!isNaN(d)&&d>0):void 0,s={...a?{speedPresets:a}:{},audioLocked:o},u=Rn(t,r,s);return u.updateMuted(e),u.updateVolume(n),u}function dt(t,e,n){return e?(n||(n=document.createElement("img"),n.className="hfp-poster",t.appendChild(n)),n.src=e,n):(n?.remove(),null)}function wn(t){return t.composedPath().some(e=>e instanceof HTMLElement&&e.classList.contains("hfp-controls"))}var Oe=null;function kn(t,e){if(typeof CSSStyleSheet<"u")try{Oe||(Oe=new CSSStyleSheet,Oe.replaceSync(e)),t.adoptedStyleSheets=[Oe];return}catch{}let n=document.createElement("style");n.textContent=e,t.appendChild(n)}function In(){let t=document.createElement("div");t.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",t.appendChild(e),{container:t,iframe:e}}function Mn(t,e,n,i){let r=t.offsetWidth,o=t.offsetHeight;if(r===0||o===0)return!1;let a=Math.min(r/n,o/i);return e.style.width=`${n}px`,e.style.height=`${i}px`,e.style.transform=`translate(-50%, -50%) scale(${a})`,!0}function tr(t,e,n){if(n.end<=0)return!1;let i=n.shown<n.end&&e>0?e+.001:0;return t+i>=n.end}var Fe=class{constructor(e){this._callbacks=e}_callbacks;_raf=null;_lastUpdateMs=0;_tick=null;start(e,n,i,r,o){this.stop();let a=null,s=0,u=0,d=()=>{if(r()){this._raf=null;return}let m;try{m=e.time()}catch{this._raf=null;return}let h=i(),v=o();v.end>0&&(m=Math.min(m,v.end));let b=a===null?0:m-a;b!==0&&(u=Math.min(b,s),s=b),a=m;let A=tr(m,u,v);A&&(m=v.shown);let _=performance.now();if((_-this._lastUpdateMs>100||A)&&(this._lastUpdateMs=_,this._callbacks.onTimeUpdate(m,h)),A){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(d)};this._tick=d,this._raf=requestAnimationFrame(d)}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(t){let e=Array.from(t.querySelectorAll("[data-composition-id]"));if(e.length===0)return t.body?[t.body]:[];let n=[];for(let i of e)ir(i)||n.push(i);return nr(t),n}function nr(t){let e=t.body;if(!e||typeof console>"u"||typeof console.warn!="function")return;let n=e.querySelectorAll("audio[data-start], video[data-start]");if(n.length===0)return;let i=[];for(let r of n)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 ir(t){let e=t.parentElement;for(;e;){if(e.hasAttribute("data-composition-id"))return!0;e=e.parentElement}return!1}var Dn=t=>4*Number.EPSILON*Math.max(1,Math.abs(t));function pe(t,e){return!Number.isFinite(t)||!Number.isFinite(e)?t===e:Math.abs(t-e)<=Dn(Math.max(Math.abs(t),Math.abs(e)))}var Pn=(t,e)=>t>=e||pe(t,e),Ve=(t,e,n)=>Pn(t,e)&&t<n&&!pe(t,n),rr=1e-6,ct=(t,e,n,i)=>Ve(t,e,n)||Pn(t,e)&&i>0&&n>=i-rr;var or="data-fade-in",ar="data-fade-out",ja=or.slice(5),Ya=ar.slice(5),sr=Object.freeze({fadeIn:0,fadeOut:0});var Nn=':not([muted]):is(:not([data-has-audio]),[data-has-audio="true"])',Ka=`audio[data-start], video[data-start]${Nn}`;var lr=`[data-start]:not(video, audio, img, [${fn}], [${bn}])`,gs=`${lr}[${j}]`,_s=`meta[name="${Ne}"]`;var ys=`[${j}][${j}]`,vs=`[${j}][style*="visibility: hidden"]`;var ou=1/16;var cr=["backdrop-filter","clip-path","filter","mask","mask-border-source","mask-image","perspective","rotate","scale","transform","translate","-webkit-mask-image"],du=new Set([...cr,"contain","isolation","mask-border","mix-blend-mode","opacity"]);function mr(t){return Number.isFinite(t)&&t>0?t:30}function pr(t){return Number.isFinite(t)&&t>0?t:0}function Ln(t,e){let n=mr(e),i=pr(t),r=i*n,o=Math.round(r);return Math.abs(r-o)<=.001?o/n:i}function On(t,e,n){return{start:Ln(t,n),end:Number.isFinite(e)?Ln(e,n):e}}var fr=["seconds-time","rational-fps","seek-keep-playing","composition-manifest-v1","runtime-data","play-range"];function hr(t,e){let n=Math.abs(t),i=Math.abs(e);for(;i!==0;){let r=n%i;n=i,i=r}return n||1}function br(t){let e=Number.isFinite(t)&&t>0?t:30,n=Number.isInteger(e)?1:1e6,i=Math.round(e*n),r=hr(i,n);return{numerator:i/r,denominator:n/r}}function Fn(t,e,n){return Math.max(t,(Math.ceil(e*n-1e-6)-1)/n)}function gr(t){if(typeof t!="object"||t===null)return null;let e=t;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 mt(t){return{protocolVersion:1,capabilities:fr,fps:br(t)}}function Vn(t){let e=t.offsetWidth,n=t.getBoundingClientRect().width;return e>0&&n>0?n/e:null}function _r(t){return Array.isArray(t)&&t.every(e=>typeof e=="string")}function Un(t,e=30){if(typeof t!="object"||t===null)return{status:"legacy",fps:e};let n=t;if(n.protocolVersion===void 0)return{status:"legacy",fps:e};if(n.protocolVersion!==1)return{status:"unsupported",code:"unsupported_protocol_version",receivedVersion:n.protocolVersion};let i=gr(n.fps);return i===null||!_r(n.capabilities)?{status:"unsupported",code:"invalid_protocol_metadata",receivedVersion:n.protocolVersion}:{status:"supported",fps:i,metadata:n}}function yr(t,e){let n=t.tagName.toLowerCase();if(n==="script"||n==="style"||n==="link"||n==="meta")return null;let r=n==="video"||n==="audio"?e.resolver.resolveMediaStartForElement(t):e.resolver.resolveStartForElement(t,0),o=e.resolver.resolveDurationForElement(t),a=t.getAttribute("data-composition-id");if(a){let u=e.timelineRegistry[a],d=le(u);!(t.hasAttribute("data-duration")||t.hasAttribute("data-end")||t.hasAttribute(tn)||t.hasAttribute(nn))&&(o==null||o<=0)&&d!=null&&d>0&&(o=d)}let s=a!==null&&t===ne(t.ownerDocument);return{start:r,end:!s&&o!=null&&o>0?r+o:Number.POSITIVE_INFINITY}}function Hn(t,e){let n=yr(t,e);if(!n)return!1;let i=e.exportRenderSeek?On(n.start,n.end,e.canonicalFps):n;return ct(e.currentTime,i.start,i.end,e.compositionDuration)}var J="first-frame",vr=3;function fe(t){let e=t.ownerDocument?.defaultView;return e&&t instanceof e.Element?!0:t instanceof Element}function x(t){if(!fe(t)||t.tagName!=="AUDIO"&&t.tagName!=="VIDEO")return!1;let e=t.ownerDocument?.defaultView;return e&&t instanceof e.HTMLMediaElement?!0:t instanceof HTMLMediaElement}function Ar(t){return t.hasAttribute("data-start")||t.hasAttribute("data-track-index")}function Er(t,e,n){let i=t;for(;i;){if(Ar(i)&&!Hn(i,{currentTime:0,compositionDuration:Number.POSITIVE_INFINITY,canonicalFps:30,exportRenderSeek:!1,timelineRegistry:n,resolver:e}))return!1;i=i.parentElement}return!0}function $n(t,e,n,i){return e==="all"?!0:Er(t,n,i)}function Ue(t,{scope:e="all"}={}){let n=t.defaultView,i=$({documentRef:t,timelineRegistry:n?.__timelines,includeAuthoredTimingAttrs:!0}),r=t.querySelector(`meta[name="${Ne}"]`)!==null,o=Array.from(t.querySelectorAll("video, audio")).filter(x).filter(u=>$n(u,r&&u.preload!=="auto"?J:e,i,n?.__timelines??{})).filter(u=>u.readyState<vr),a=Array.from(t.querySelectorAll("img")).filter(u=>$n(u,u.getAttribute("loading")?.toLowerCase()==="lazy"?J:e,i,n?.__timelines??{})).filter(u=>!u.complete),s=t.fonts?.status==="loading";return{pendingMedia:o,pendingImages:a,fontsLoading:s}}function Sr(t,{pendingMedia:e,pendingImages:n,fontsLoading:i},r){let o=e.map(u=>new Promise(d=>{if(u.error){d();return}let m=()=>{u.removeEventListener("canplay",m),u.removeEventListener("error",m),r.removeEventListener("abort",m),d()};u.addEventListener("canplay",m),u.addEventListener("error",m),r.addEventListener("abort",m,{once:!0})})),a=n.map(u=>u.decode?u.decode().catch(()=>{}):Promise.resolve()),s=i&&t.fonts?t.fonts.ready.then(()=>{}):Promise.resolve();return Promise.all([...o,...a,s]).then(()=>{})}function Tr(t,e,{scope:n="all"}={}){let i=Ue(t,{scope:n});return i.pendingMedia.length===0&&i.pendingImages.length===0&&!i.fontsLoading?null:Sr(t,i,e)}var Rr=50;function xr(t,e){let n=t.defaultView;return!n||n.__renderReady||!n.__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(n.__renderReady){o();return}r=setTimeout(a,Rr)};a()})}var wr=50,kr=1.5,Ir=2,Mr=1500;function pt(t,e){return new Promise(n=>{if(e.aborted){n(-1);return}let i=0,r=()=>{t.cancelAnimationFrame?.(i),n(-1)};e.addEventListener("abort",r,{once:!0}),i=t.requestAnimationFrame(o=>{e.removeEventListener("abort",r),n(o)})})}function Cr(t,e){let n=t.defaultView;return n?(async()=>{let i=await pt(n,e);if(e.aborted)return;let r=await pt(n,e),o=r-i,a=0;for(;!e.aborted&&a<Ir;){if(r-i>=Mr)return;let s=await pt(n,e);if(e.aborted)return;let u=s-r;o=Math.min(o,u),a=u<wr||u<=o*kr?a+1:0,r=s}})():null}var Dr=8e3;function Pr(t,e,n={}){let i=n.inputs??[(d,m)=>Tr(d,m,{scope:n.scope}),xr,Cr],r=new AbortController,o=i.map(d=>d(t,r.signal)).filter(d=>d!==null);if(o.length===0){e({timedOut:!1});return}let a=n.timeoutMs??Dr,s,u=new Promise(d=>{s=setTimeout(()=>d("timed-out"),a)});Promise.race([Promise.all(o).then(()=>"done"),u]).then(d=>{clearTimeout(s),r.abort(),e({timedOut:d==="timed-out"})})}function Wn(t,e,n={}){Pr(t,e,{...n,scope:J})}var Nr=.05,Lr=2,He=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 n of this._entries)n!==this._urlAudioEntry&&(n.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 n of this._entries)n.el.muted=e}updateVolume(e){for(let n of this._entries)n.el.volume=e}updatePlaybackRate(e){for(let n of this._entries)n.el.playbackRate=e}_playEntry(e){e.el.src&&e.el.play().catch(n=>this._reportPlaybackError(n))}_playEntryIfActive(e){this._refreshEntryBounds(e),this._inWindow(e,this._getCurrentTime())&&this._playEntry(e)}_refreshEntryBounds(e){if(!e.source?.isConnected)return;let n=nt(e.source);e.start=n.start??0,e.duration=n.duration!=null&&n.duration>0?n.duration:Number.POSITIVE_INFINITY}_inWindow(e,n){return Ve(n,e.start,e.start+e.duration)}_gateEntryPlayback(e,n){return this._inWindow(e,n)?(this._audioOwner==="parent"&&!this._isPaused()&&e.el.paused&&this._playEntry(e),!0):(e.el.paused||e.el.pause(),e.driftSamples=0,!1)}playAll(){for(let e of this._entries)this._playEntryIfActive(e)}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 n of this._entries)this._refreshEntryBounds(n),this._inWindow(n,e)&&(n.el.currentTime=F(e-n.start))}scrubAll(e){for(let n of this._entries)this._refreshEntryBounds(n),this._inWindow(n,e)?(n.el.currentTime=F(e-n.start),this._playEntry(n)):n.el.paused||n.el.pause()}mirrorTime(e,n){let i=n?.force===!0;for(let r of this._entries){if(this._refreshEntryBounds(r),!this._gateEntryPlayback(r,e))continue;let o=e-r.start;Math.abs(r.el.currentTime-o)>Nr?(r.driftSamples+=1,(i||r.driftSamples>=Lr)&&(r.el.currentTime=F(o),r.driftSamples=0)):r.driftSamples=0}}promoteToParentProxy(e,n){if(this._audioOwner==="parent")return;if(this._audioOwner="parent",e)for(let r of e.querySelectorAll("video, audio"))x(r)&&(r.muted=!0);for(let r of[...this._entries])this._repointToSource(r);let i=this._getCurrentTime();n?n(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 n=e.querySelectorAll("audio[data-start], video[data-start]");for(let i of n)x(i)&&this._adoptIframeMedia(i);this._observeDynamicMedia(e)}setupFromUrl(e){if(this._urlAudioSrc===e&&this._urlAudioEntry)return;this.teardownUrlAudio();let n=this._createEntry(e,"audio",0,1/0);this._urlAudioEntry=n,this._urlAudioSrc=e,n&&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 n=this._entries.indexOf(e);n!==-1&&this._entries.splice(n,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,n,i,r,o){if(this._urlTaken(e))return null;let a=n==="video"?document.createElement("video"):new Audio;a.preload="auto",a.src=e,a.load(),a.muted=this._getMuted(),a.volume=this._getVolume();let s=this._getPlaybackRate();s!==1&&(a.playbackRate=s);let u={el:a,start:i,duration:r,driftSamples:0,source:o};return this._entries.push(u),u}_resolveIframeMediaSrc(e){let n=e.getAttribute("src")||e.querySelector("source")?.getAttribute("src");return n?new URL(n,e.ownerDocument.baseURI).href:null}_adoptIframeMedia(e){if(e.preload==="metadata"||e.preload==="none")return;let n=this._resolveIframeMediaSrc(e);if(!n)return;let i=nt(e),r=i.start??0,o=i.duration??Number.POSITIVE_INFINITY,a=e.tagName==="VIDEO"?"video":"audio",s=this._createEntry(n,a,r,o,e);s&&this._audioOwner==="parent"&&(this.mirrorTime(this._getCurrentTime(),{force:!0}),this._isPaused()||this._playEntryIfActive(s))}_followIframeMediaSrc(e){let n=this._entries.find(i=>i.source===e);if(!n)return this._adoptIframeMedia(e);this._audioOwner!=="parent"||!this._repointToSource(n)||(this.mirrorTime(this._getCurrentTime(),{force:!0}),this._isPaused()||this._playEntryIfActive(n))}_urlTaken(e,n){return this._entries.some(i=>i===n||i.source&&!i.source.isConnected?!1:(i.source&&this._resolveIframeMediaSrc(i.source)||i.el.src)===e)}_repointToSource(e){let n=e.source?this._resolveIframeMediaSrc(e.source):null;return!n||e.el.src===n?!1:this._urlTaken(n,e)?(this._removeEntry(e),!1):(e.el.src=n,e.el.load(),!0)}_detachIframeMedia(e){let n=this._entries.find(i=>i.source===e);n&&this._removeEntry(n)}_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 n=new MutationObserver(o=>{for(let a of o){if(a.type==="attributes"&&a.attributeName==="src"){let s=a.target;x(s)&&s.matches("audio[data-start], video[data-start]")&&this._followIframeMediaSrc(s);continue}if(a.type==="attributes"&&a.attributeName==="preload"){let s=a.target;x(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(!fe(s))continue;let u=[];x(s)&&s.matches("audio[data-start], video[data-start]")&&u.push(s);let d=s.querySelectorAll("audio[data-start], video[data-start]");for(let m of d)x(m)&&u.push(m);for(let m of u)this._adoptIframeMedia(m)}for(let s of a.removedNodes){if(!fe(s))continue;let u=[];x(s)&&s.matches("audio[data-start], video[data-start]")&&u.push(s);let d=s.querySelectorAll("audio[data-start], video[data-start]");for(let m of d)x(m)&&u.push(m);for(let m of u)this._detachIframeMedia(m)}}}),i={childList:!0,subtree:!0,attributes:!0,attributeFilter:["preload","src"]},r=Cn(e);for(let o of r)n.observe(o,i);this._mediaObserver=n}};function ft(t,e,n){if(t===null&&e===null)return{range:null,clamped:!1};let i=t??0,r=e!==null&&n>0&&e>n,o=r?n:e,a=o??(n>0?n:1/0);return!(i>=0)||!(a>i)?{range:null,clamped:!0}:{range:{start:i,end:o},clamped:r}}function he(t,e,n){let i=t.end??e;return i<e?Fn(t.start,i,n):i}function ht(t,e,n,i){return t<e.start||t>=he(e,n,i)}var Or=100;function Fr(t,e){return typeof t.currentTime=="number"&&Number.isFinite(t.currentTime)?t.currentTime:(t.frame??0)/e}function Bn(t,e,n){return n<=0?!1:t.ended===!0?!0:t.ended===!1&&!t.isPlaying?!1:e>=n}function Vr(t,e,n,i,r,o){let{duration:a}=n;if(!r){let s=Bn(t,e,a);return{start:0,shownAtEnd:a,atEnd:s,stopRuntime:!1,entering:!1}}if(t.ownsRange){let s=i&&t.ended===!0&&!t.isPlaying;return{start:r.start,shownAtEnd:e,atEnd:s,stopRuntime:!1,entering:!1}}return Ur(t,e,n,i,r,o)}function Ur(t,e,n,i,r,o){let a=r.end??n.duration,s=n.enteringRange===!0&&(e<r.start||e>=a);return{start:r.start,shownAtEnd:he(r,n.duration,o),atEnd:i&&!s&&Bn(t,e,a),stopRuntime:t.isPlaying,entering:s}}function Gn(t,e,n,i){let r=Fr(t,e),o=!n.paused,a=o||t.isPlaying,s=i.getPlayRange?.(),u=Vr(t,r,n,a,s,e),{atEnd:d,start:m}=u,h=n.duration>0?Math.min(r,n.duration):r,v=d?u.shownAtEnd:h,b=!t.isPlaying,A=d&&a;if(A&&i.getLoop())return i.media.audioOwner==="parent"&&i.media.pauseAll(),i.seek(m),i.play(),{...n,currentTime:m,paused:!1,enteringRange:!0};let _={...n,currentTime:v,paused:b,enteringRange:u.entering};i.media.audioOwner==="parent"&&(o&&b?i.media.pauseAll():!o&&!b&&i.media.playAll(),i.media.mirrorTime(v));let E=performance.now(),C=b!==n.paused;return(E-n.lastUpdateMs>Or||C)&&(_.lastUpdateMs=E,i.updateControlsTime(v,n.duration),i.updateControlsPlaying(!b),i.dispatchEvent(new CustomEvent("timeupdate",{detail:{currentTime:v}}))),A&&(u.stopRuntime&&i.seek(v),i.media.audioOwner==="parent"&&i.media.pauseAll(),_.paused=!0,i.updateControlsPlaying(!1),i.dispatchEvent(new Event("ended"))),_}function Hr(t){return Array.isArray(t)?t.filter(e=>typeof e=="object"&&e!==null&&typeof e.id=="string"&&typeof e.start=="number"&&typeof e.duration=="number"):[]}function zn(t,e,n){if(t.source!==e)return;let i=t.data;if(!i||i.source!=="hf-preview")return;let r=Un(i);if(r.status==="unsupported"){n.dispatchEvent(new CustomEvent("runtimeprotocolerror",{detail:{code:r.code,receivedVersion:r.receivedVersion}}));return}n.setRuntimeFps?.(r.fps);let o=r.status==="supported"&&r.metadata.capabilities.includes("play-range");if(n.setRuntimeOwnsPlayRange?.(o),i.type==="shader-transition-state"){let a=i.state&&typeof i.state=="object"?i.state:{};n.shaderLoader.update(a,n.getShaderLoadingMode()),n.dispatchEvent(new CustomEvent("shadertransitionstate",{detail:{compositionId:i.compositionId,state:a}}));return}if(i.type==="ready"){n.onRuntimeReady();return}if(i.type==="assets-ready"){n.onRuntimeAssetsReady?.(i.timedOut===!0);return}if(i.type==="runtime-data-error"){n.onRuntimeDataError?.(i.channel,i.requestId,i.message);return}if(i.type==="runtime-data-applied"){n.onRuntimeDataApplied?.(i.channel,i.requestId);return}if(i.type==="state"){n.setPlaybackState(Gn({frame:i.frame??0,currentTime:i.currentTime,ended:typeof i.ended=="boolean"?i.ended:void 0,isPlaying:!!i.isPlaying,ownsRange:o},r.fps,n.getPlaybackState(),n));return}if(i.type==="media-autoplay-blocked"){if(n.shouldPromoteMediaAutoplayFallback?.()===!1)return;let a=null;try{a=n.getIframeDoc()}catch{}n.media.promoteToParentProxy(a,(s,u)=>n.media.mirrorTime(s,u)),n.sendControl("set-media-output-muted",{muted:!0});return}if(i.type==="timeline"&&i.durationInFrames>0){let a=Number(i.durationSeconds),s=Number(i.durationInFrames),u=Number.isFinite(a)&&a>0?a:s/r.fps;if(Number.isFinite(i.compositionWidth)&&i.compositionWidth>0&&Number.isFinite(i.compositionHeight)&&i.compositionHeight>0&&n.setCompositionSize(i.compositionWidth,i.compositionHeight),Number.isFinite(u)&&u>0){let d=n.getPlaybackState();n.setPlaybackState({...d,duration:u}),n.updateControlsTime(d.currentTime,u),n.onRuntimeTimelineReady(u,typeof i.assetsReady=="boolean"?i.assetsReady:void 0)}n.setScenes(Hr(i.scenes));return}i.type==="stage-size"&&Number.isFinite(i.width)&&i.width>0&&Number.isFinite(i.height)&&i.height>0&&n.setCompositionSize(i.width,i.height)}function $r(t,e){return t.includes(e)?!0:/hyperframe\.runtime\.iife\.js|__hyperframes\s*=/.test(t)}var Wr=new Set([">"," "," ",`
478
- `,"\r","\f"]);function bt(t,e){let n=t.toLowerCase(),i=`<${e}`,r=0;for(;r<n.length;){let o=n.indexOf(i,r);if(o<0)return null;let a=n[o+i.length];if(Wr.has(a)){let s=n.indexOf(">",o+i.length);return s<0?null:{index:o,end:s+1}}r=o+i.length}return null}function qn(t,e){if(!t||$r(t,e))return t;let n=`<script src="${e}"></script>`,i=bt(t,"head");if(i)return t.slice(0,i.end)+n+t.slice(i.end);let r=bt(t,"body");if(r)return t.slice(0,r.index)+n+t.slice(r.index);let o=bt(t,"html");return o?t.slice(0,o.end)+n+t.slice(o.end):n+t}var W="shader-capture-scale",Z="shader-loading",$e="runtime-src",jn="__hf_shader_capture_scale",Yn="__hf_shader_loading",Q=["Preparing scene transitions","Sampling outgoing scene motion","Sampling incoming scene motion","Caching transition frames","Finalizing transition preview"];function gt(t){if(t===null)return null;let e=Number(t);return!Number.isFinite(e)||e<=0?null:String(Math.min(1,Math.max(.25,e)))}function Br(t){if(t===null||t.trim()==="")return"composition";let e=t.trim().toLowerCase();return e==="none"||e==="false"||e==="0"||e==="off"?"none":e==="player"||e==="true"||e==="1"||e==="on"?"player":"composition"}function Xn(t,e){return t.filter(n=>n!==""&&n.split("=")[0]!==e)}function Gr(t,e,n){let i=t.indexOf("#"),r=i>=0?t.slice(0,i):t,o=i>=0?t.slice(i):"",a=r.indexOf("?"),s=a>=0?r.slice(0,a):r,u=a>=0?r.slice(a+1):"",d=Xn(u.split("&"),jn);d=Xn(d,Yn),e!==null&&d.push(`${jn}=${encodeURIComponent(e)}`),n!=="composition"&&d.push(`${Yn}=${encodeURIComponent(n)}`);let m=d.join("&");return`${s}${m?`?${m}`:""}${o}`}function zr(t,e,n){if(e===null&&n==="composition")return t;let i=[];e!==null&&i.push(`window.__HF_SHADER_CAPTURE_SCALE=${JSON.stringify(e)};`),n!=="composition"&&i.push(`window.__HF_SHADER_LOADING=${JSON.stringify(n)};`);let r=`<script data-hyperframes-player-shader-options>${i.join("")}</script>`;return/<head\b[^>]*>/i.test(t)?t.replace(/<head\b[^>]*>/i,o=>`${o}${r}`):/<html\b[^>]*>/i.test(t)?t.replace(/<html\b[^>]*>/i,o=>`${o}${r}`):`${r}${t}`}function be(t){return Br(t.getAttribute(Z))}function Kn(t){return Number(gt(t.getAttribute(W))??"1")}function Jn(t,e){return Gr(e,gt(t.getAttribute(W)),be(t))}function ge(t,e){return qn(zr(e,gt(t.getAttribute(W)),be(t)),_t(t))}function _t(t){let e=t.getAttribute($e)?.trim();if(!e)return X;try{let n=new URL(e,document.baseURI),i=n.protocol==="http:"||n.protocol==="https:",r=n.hostname==="127.0.0.1"||n.hostname==="localhost"||n.hostname==="[::1]";return i&&(r||n.origin===location.origin)?n.href:X}catch{return X}}function Zn(){let t=document.createElement("div");t.className="hfp-shader-loader",t.setAttribute("role","status"),t.setAttribute("aria-live","polite"),t.setAttribute("aria-label","Preparing scene transitions"),t.setAttribute("data-hyperframes-ignore",""),t.draggable=!1;let e=b=>{b.preventDefault(),b.stopPropagation()};for(let b of["selectstart","dragstart","pointerdown","mousedown","click","dblclick","contextmenu","touchstart"])t.addEventListener(b,e,{capture:!0});let n=document.createElement("div");n.className="hfp-shader-loader-panel",n.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=Q[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 u=document.createElement("div");u.className="hfp-shader-loader-fill",s.appendChild(u);let d=document.createElement("div");d.className="hfp-shader-loader-progress";let m=b=>{let A=document.createElement("div");A.className="hfp-shader-loader-row";let _=document.createElement("span");_.className="hfp-shader-loader-label",_.textContent=b;let E=document.createElement("span");return E.className="hfp-shader-loader-value",A.appendChild(_),A.appendChild(E),d.appendChild(A),{row:A,label:_,value:E}},h=m("transition"),v=m("transition frame");return n.appendChild(i),n.appendChild(r),n.appendChild(a),n.appendChild(s),n.appendChild(d),t.appendChild(n),{root:t,fill:u,title:o,detail:a,transitionValue:h.value,transitionRow:h.row,frameLabel:v.label,frameValue:v.value,frameRow:v.row}}var qr=420;function We(t,e,n){e.textContent=n,t.style.visibility=n?"visible":"hidden"}var Be=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 n=this._el.root.classList;n.contains("hfp-visible")||n.contains("hfp-hiding")?this._hiddenCallbacks.push(e):e()}_flushHidden(){let e=this._hiddenCallbacks;this._hiddenCallbacks=[];for(let n of e)n()}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)",We(this._el.transitionRow,this._el.transitionValue,""),We(this._el.frameRow,this._el.frameValue,"")}update(e,n){let i=n==="player"&&e.loading&&!e.ready;if(this._drawingAssets&&!i)return;if(n!=="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(Q.length-1,Math.floor(a*Q.length));this._el.title.textContent=Q[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 u=e.currentTransition!==void 0&&e.transitionTotal!==void 0?`${e.currentTransition}/${e.transitionTotal}`:o>0?`${r}/${o}`:"",d=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",We(this._el.transitionRow,this._el.transitionValue,u),We(this._el.frameRow,this._el.frameValue,d),this._el.root.setAttribute("aria-valuenow",String(Math.round(a*100))),this.show()}showAssetsLoading(){this.reset(),this._el.title.textContent="Loading assets",this._el.detail.textContent="Waiting for images, video and fonts to finish loading.",this._el.root.setAttribute("aria-label","Loading assets"),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()},qr)}};function Qn(t){return t?.trim().toLowerCase().startsWith("video/")??!1}function ei(t){let e=document.createElement("video");e.className="hfp-video",e.playsInline=!0,e.preload="metadata";let n=new AbortController,{signal:i}=n;return e.addEventListener("loadedmetadata",()=>t.onMetadata(e),{signal:i}),e.addEventListener("durationchange",()=>t.onDurationChange(e),{signal:i}),e.addEventListener("resize",()=>t.onResize(e),{signal:i}),e.addEventListener("play",()=>t.onPlay(e),{signal:i}),e.addEventListener("pause",()=>t.onPause(e),{signal:i}),e.addEventListener("timeupdate",()=>t.onTimeUpdate(),{signal:i}),e.addEventListener("error",()=>t.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=F(o)},play:()=>e.play().catch(o=>{i.aborted||t.onPlayRejected(o)}),pause:()=>e.pause(),timeScale:o=>{e.defaultPlaybackRate=o,e.playbackRate=o}},destroy:()=>{n.abort(),e.pause(),e.removeAttribute("src"),e.load(),e.remove()}}}var jr=.1,Yr=5,yt="sandbox-origin",ti=1e4,vt=8e3,At="assets-loading",_e="assets-loading-ui",Et="low-power-idle",ni="disable-click-to-play",ye="range-start",ve="range-end",Xr=150;function St(t){return!Number.isFinite(t)||t<=0?1:Math.max(jr,Math.min(Yr,t))}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,$e,W,Z,_e,Et,ye,ve]}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;_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}=In(),this.sizer.className="hfp-sizer",this.shadow.appendChild(this.sizer),this.shadow.appendChild(this.container);let e=Zn();this.shadow.appendChild(e.root),this.shaderLoader=new Be(e),this._media=new He({dispatchEvent:n=>this._emit(n),getMuted:()=>this.muted,getVolume:()=>this._volume,getPlaybackRate:()=>this.playbackRate,getCurrentTime:()=>this._currentTime,isPaused:()=>this._paused}),this._directTimelineClock=new Fe({onTimeUpdate:(n,i)=>{this._currentTime=n,this.controlsApi?.updateTime(n,i),this._emit(new CustomEvent("timeupdate",{detail:{currentTime:n}}))},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 Le(this.iframe,{resolveRuntimeUrl:()=>_t(this),hostOwnsDeadline:()=>this.hasAttribute("no-load-timeout"),onReady:n=>this._onProbeReady(n),onError:n=>this._emit(new CustomEvent("error",{detail:{message:n}}))}),this.addEventListener("click",n=>{this.disableClickToPlay||wn(n)||(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=dt(this.shadow,this.getAttribute("poster"),this.posterEl)),this.hasAttribute("audio-src")&&this._media.setupFromUrl(this.getAttribute("audio-src")),this.hasAttribute("srcdoc")&&(this.iframe.srcdoc=ge(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,n,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=ge(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&&n!==i);break;case"width":this._setCompositionSize(me(i)??1920,this._compositionHeight);break;case"height":this._setCompositionSize(this._compositionWidth,me(i)??1080);break;case"controls":i!==null?this._setupControls():(this.controlsApi?.destroy(),this.controlsApi=null);break;case"poster":this.posterEl=dt(this.shadow,i,this.posterEl);break;case"playback-rate":{let r=St(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 _e:i==="none"&&this.shaderLoader.hideAssetsLoading();break;case Et:this._sendControl("set-idle-heartbeat",{slow:i!==null});break;case ye:case ve:this._applyPlayRange(!0);break;case W:case Z:case $e: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=ge(this,e);return}let n=this.getAttribute("src");n===null?this.iframe.src="about:blank":this._loadSrc(n)}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 n=this._ready?this._playRange():null;n?ht(this._currentTime,n,this._duration,this._runtimeFps)&&(this.seek(n.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.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,n){this._sendControl("set-color-grading",{target:e,grading:n})}clearColorGrading(e){this._sendControl("set-color-grading",{target:e,grading:null})}setColorGradingCompare(e,n){this._sendControl("set-color-grading-compare",{target:e,compare:n})}clearColorGradingCompare(e){this._sendControl("set-color-grading-compare",{target:e,compare:{enabled:!1}})}setRuntimeData(e,n){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(n);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 St(parseFloat(this.getAttribute("playback-rate")||"1"))}set playbackRate(e){this.setAttribute("playback-rate",String(St(e)))}get shaderCaptureScale(){return Kn(this)}set shaderCaptureScale(e){this.setAttribute(W,String(e))}get shaderLoading(){return be(this)}set shaderLoading(e){e==="composition"?this.removeAttribute(Z):this.setAttribute(Z,e)}get assetsLoadingUi(){return this.getAttribute(_e)==="none"?"none":"player"}set assetsLoadingUi(e){e==="none"?this.setAttribute(_e,"none"):this.removeAttribute(_e)}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(ni)}set disableClickToPlay(e){this.toggleAttribute(ni,e)}get loop(){return this.hasAttribute("loop")}set loop(e){e?this.setAttribute("loop",""):this.removeAttribute("loop")}get rangeStart(){return this._readSeconds(ye)}set rangeStart(e){this._writeSeconds(ye,e)}get rangeEnd(){return this._readSeconds(ve)}set rangeEnd(e){this._writeSeconds(ve,e)}_readSeconds(e){let n=this.getAttribute(e);return n===null?null:Number(n)}_writeSeconds(e,n){n==null?this.removeAttribute(e):this.setAttribute(e,String(n))}_hasPlayRange(){return this.hasAttribute(ye)||this.hasAttribute(ve)}_playRange(){return ft(this.rangeStart,this.rangeEnd,this._duration).range}_sendPlayRange(e){let n=e?.end??null;this._sendControl("set-play-range",{startSeconds:e?.start??null,endSeconds:n})}_applyPlayRange(e){let{range:n,clamped:i}=ft(this.rangeStart,this.rangeEnd,this._duration);this._sendPlayRange(n),this._ready&&(this._reportRangeClamp(n,i),n&&e&&!this._pendingPlay&&this._moveIntoPlayRange(n))}_reportRangeClamp(e,n){let i=n?`${this.rangeStart},${this.rangeEnd},${this._duration}`:"";if(i===this._rangeClampReported||(this._rangeClampReported=i,!n))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(),n=e?.end??this._duration;if(!e)return{end:n,shown:n};let i=he(e,this._duration,this._runtimeFps);return{end:n,shown:i<n?(i+n)/2:i}}_sendControl(e,n={}){try{let i=this.iframe.contentWindow;return i?(i.postMessage({...n,source:"hf-parent",type:"control",action:e,...mt(this._runtimeFps)},"*"),!0):((e==="set-runtime-data"||e==="clear-runtime-data")&&this._rejectRuntimeDataDelivery(n.channel,n.requestId,"Composition iframe is unavailable"),!1)}catch(i){return(e==="set-runtime-data"||e==="clear-runtime-data")&&this._rejectRuntimeDataDelivery(n.channel,n.requestId,i instanceof Error?i.message:String(i)),!1}}_deliverRuntimeData(e,n){if(!this.isConnected||!this._runtimeBridgeReady)return;let i=this._beginRuntimeDataDelivery(e);this._trySetRuntimeDataDirect(e,n,i)||this._sendControl("set-runtime-data",{channel:e,payload:n,requestId:i})}_deliverRuntimeDataClear(e){if(!this.isConnected||!this._runtimeBridgeReady)return;let n=this._beginRuntimeDataDelivery(e);this._tryClearRuntimeDataDirect(e,n)||this._sendControl("clear-runtime-data",{channel:e,requestId:n})}_trySetRuntimeDataDirect(e,n,i){try{let r=this.iframe.contentWindow?.__hyperframes;return typeof r?.setRuntimeData!="function"?!1:(r.setRuntimeData(e,n,i),!0)}catch{return!1}}_tryClearRuntimeDataDirect(e,n){try{let i=this.iframe.contentWindow?.__hyperframes;return typeof i?.clearRuntimeData!="function"?!1:(i.clearRuntimeData(e,n),!0)}catch{return!1}}_replayRuntimeData(){for(let[e,n]of this._runtimeData)this._deliverRuntimeData(e,n)}_beginRuntimeDataDelivery(e){let n=this._pendingRuntimeData.get(e);n&&window.clearTimeout(n.timeoutId),this._runtimeDataRequestId+=1;let i=this._runtimeDataRequestId,r=window.setTimeout(()=>{this._rejectRuntimeDataDelivery(e,i,`Runtime data delivery timed out after ${ti}ms`)},ti);return this._pendingRuntimeData.set(e,{requestId:i,timeoutId:r}),i}_resolveRuntimeDataDelivery(e,n){let i=this._takeRuntimeDataDelivery(e,n);i&&this._emit(new CustomEvent("runtimedataapplied",{detail:{channel:e,requestId:i.requestId}}))}_rejectRuntimeDataDelivery(e,n,i){let r=this._takeRuntimeDataDelivery(e,n);r&&this._emit(new CustomEvent("runtimedataerror",{detail:{channel:e,requestId:r.requestId,message:typeof i=="string"?i:String(i)}}))}_takeRuntimeDataDelivery(e,n){if(typeof e!="string"||typeof n!="number"||!Number.isSafeInteger(n))return null;let i=this._pendingRuntimeData.get(e);return!i||i.requestId!==n?null:(window.clearTimeout(i.timeoutId),this._pendingRuntimeData.delete(e),i)}_rejectAllRuntimeDataDeliveries(e){for(let[n,i]of[...this._pendingRuntimeData])this._rejectRuntimeDataDelivery(n,i.requestId,e)}_getSameOriginIframeDocument(){try{return this.iframe.contentDocument}catch{return null}}_setIframeMediaMuted(e){let n=this._getSameOriginIframeDocument();if(n)for(let i of n.querySelectorAll("video, audio"))x(i)&&(i.muted=e||i.defaultMuted)}_stopIframeMedia(){let e=this._getSameOriginIframeDocument();if(e)for(let n of e.querySelectorAll("video, audio"))x(n)&&n.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(Et)}),this._sendDisplayScale()}_sendDisplayScale(){let e=Vn(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=ge(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 Qn(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=Jn(this,e)}_loadVideo(e){this._videoSource||(this._videoSource=ei({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:n,adapter:i}=this._videoSource;this._directTimelineAdapter=i,this._currentTime=0,this._duration=0,this.controlsApi?.updateTime(0,0),this._syncVideoAudio(),i.timeScale?.(this.playbackRate),n.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 n=this._videoSource?null:this.probe.resolveDirectTimelineAdapter(),i=n||this._directTimelineAdapter;if(!i)return!1;try{return e(i),n&&n!==this._directTimelineAdapter&&this._applyTimelineDuration(n.duration()),this._directTimelineAdapter=i,!0}catch{return!1}}_tryDirectTimelineSeek(e){return this._withDirectTimeline(n=>{n.seek(e,!1),n.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){zn(e,this.iframe.contentWindow,{getPlaybackState:()=>({currentTime:this._currentTime,duration:this._duration,paused:this._paused,lastUpdateMs:this._lastUpdateMs,enteringRange:this._enteringRange}),setPlaybackState:({currentTime:n,duration:i,paused:r,lastUpdateMs:o,enteringRange:a})=>{this._enteringRange=a===!0,this._currentTime=n,this._setDuration(i),this._paused=r,this._lastUpdateMs=o},getShaderLoadingMode:()=>be(this),shaderLoader:this.shaderLoader,setCompositionSize:(n,i)=>this._setCompositionSize(n,i),sendControl:(n,i)=>this._sendControl(n,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:(n,i)=>this._resolveRuntimeDataDelivery(n,i),onRuntimeDataError:(n,i,r)=>this._rejectRuntimeDataDelivery(n,i,r),onRuntimeTimelineReady:(n,i)=>this._onRuntimeTimelineReady(n,i),setRuntimeFps:n=>{this._runtimeFps=n},setRuntimeOwnsPlayRange:n=>{this._runtimeOwnsPlayRange=n},shouldPromoteMediaAutoplayFallback:()=>!this._isSlideshowPlayer(),setScenes:n=>{this._scenes=n,this._emit(new CustomEvent("scenes",{detail:{scenes:n}}))},updateControlsTime:(n,i)=>this.controlsApi?.updateTime(n,i),updateControlsPlaying:n=>this.controlsApi?.updatePlaying(n),dispatchEvent:n=>this._emit(n),seek:n=>this.seek(n),play:()=>this.play(),getLoop:()=>this.loop,getPlayRange:()=>this._playRange(),media:this._media})}_onRuntimeTimelineReady(e,n){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,n),this._playWhenWanted()}_onProbeReady(e){this._applyThenEmit(()=>this._applyProbeResult(e))}_applyProbeResult({duration:e,adapter:n,compositionSize:i}){this._setDuration(e),this._directTimelineAdapter=n.kind==="direct-timeline"?n.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,n){this._clearAssetsLoadingShowTimer(),this._assetsReady=!1,this._painted=!1;let i=++this._assetsGeneration;if(!e){n===!1?(this._runtimeAssetsReadyGeneration=i,this._startAssetsLoadingOverlayTimer(i),setTimeout(()=>this._settleAssetsReady(i),vt)):this._settleAssetsReady(i);return}Wn(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(At,""),this.assetsLoadingUi!=="none"&&this.shaderLoader.showAssetsLoading())},Xr)}_hasPendingFirstFrameAssets(e){let{pendingMedia:n,pendingImages:i,fontsLoading:r}=Ue(e,{scope:J});return n.length>0||i.length>0||r}_warnStuckAssets(e){let{pendingMedia:n,pendingImages:i,fontsLoading:r}=Ue(e,{scope:J}),o=e.defaultView;console.warn(`[hyperframes-player] assets-loading timed out after ${vt}ms, playing anyway`,{stuckMedia:n.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(At),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.shaderLoader.reset(),this._media.resetForIframeLoad()}_invalidateAssetsWait(){this._clearAssetsLoadingShowTimer(),this._assetsReady=!1,this._painted=!1,this._assetsGeneration++,this.removeAttribute(At),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,n){let i=e!==this._compositionWidth||n!==this._compositionHeight;if(this._compositionWidth=e,this._compositionHeight=n,this.sizer.style.aspectRatio=`${e} / ${n}`,this._rescale(),!i)return;let r={compositionWidth:e,compositionHeight:n};this._emit(new CustomEvent("resize",{detail:r}))}_applyThenEmit(e){if(this._afterUpdate){e();return}let n=[];this._afterUpdate=n;let i=[],r=o=>{try{o()}catch(a){i.push(a)}};r(e);for(let o of n)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=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,n){this._media.mirrorTime(e,n)}_promoteToParentProxy(){let e=null;try{e=this.iframe.contentDocument}catch{}this._media.promoteToParentProxy(e,(n,i)=>this._mirrorParentMediaTime(n,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,K as formatSpeed,lt as formatTime};
477
+ `,kn='<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>',Mn='<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>',ct='<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>',mt='<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>',In='<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 Cn=[.25,.5,1,1.5,2,4];function J(n){return Number.isInteger(n)?`${n}x`:`${n}x`}function pt(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 Dn(n,e,t={}){let i=t.speedPresets??Cn,r=document.createElement("div");r.className="hfp-controls",r.addEventListener("click",c=>{c.stopPropagation()});let o=document.createElement("button");o.className="hfp-play-btn",o.type="button",o.innerHTML=`<span class="hfp-ico hfp-ico-play">${kn}</span><span class="hfp-ico hfp-ico-pause">${Mn}</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 u=document.createElement("span");u.className="hfp-time",u.textContent="0:00 / 0:00";let d=document.createElement("div");d.className="hfp-speed-wrap";let m=document.createElement("button");m.className="hfp-speed-btn",m.type="button",m.textContent="1x",m.setAttribute("aria-label","Playback speed: 1x");let h=document.createElement("div");h.className="hfp-speed-menu",h.setAttribute("role","menu");for(let c of i){let p=document.createElement("button");p.className="hfp-speed-option",p.type="button",p.setAttribute("role","menuitem"),p.dataset.speed=String(c),p.textContent=J(c),c===1&&p.classList.add("hfp-active"),h.appendChild(p)}d.appendChild(h),d.appendChild(m);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=ct,b.setAttribute("aria-label","Mute");let A=document.createElement("div");A.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 S=document.createElement("div");S.className="hfp-volume-fill",S.style.width="100%",_.appendChild(S),A.appendChild(_),v.appendChild(A),v.appendChild(b),t.audioLocked&&(v.style.display="none"),r.appendChild(o),r.appendChild(a),r.appendChild(u),r.appendChild(v),r.appendChild(d),n.appendChild(r);let C=!1,M=!1,D=1,T=null,V=i.indexOf(1);V===-1&&(V=0);let ne=(c,p)=>c?In:p===0?mt:p<.5?mt:ct;o.addEventListener("click",c=>{c.stopPropagation(),C?e.onPause():e.onPlay()}),b.addEventListener("click",c=>{c.stopPropagation(),e.onMuteToggle()});let F=!1,ie=c=>{let p=_.getBoundingClientRect(),E=Math.max(0,Math.min(1,(c-p.left)/p.width));D=E,S.style.width=`${E*100}%`,_.setAttribute("aria-valuenow",String(Math.round(E*100))),M&&E>0&&e.onMuteToggle(),b.innerHTML=ne(M,E),e.onVolumeChange(E)};_.addEventListener("mousedown",c=>{c.stopPropagation(),F=!0,ie(c.clientX)});let l=c=>{F&&ie(c.clientX)},f=()=>{F=!1};document.addEventListener("mousemove",l),document.addEventListener("mouseup",f),_.addEventListener("touchstart",c=>{F=!0;let p=c.touches[0];p&&ie(p.clientX)},{passive:!0});let g=c=>{if(F){let p=c.touches[0];p&&ie(p.clientX)}},R=()=>{F=!1};document.addEventListener("touchmove",g,{passive:!0}),document.addEventListener("touchend",R);let k=.05;_.addEventListener("keydown",c=>{let p=D;if(c.key==="ArrowRight"||c.key==="ArrowUp")p=Math.min(1,D+k);else if(c.key==="ArrowLeft"||c.key==="ArrowDown")p=Math.max(0,D-k);else return;c.preventDefault(),c.stopPropagation(),D=p,S.style.width=`${p*100}%`,_.setAttribute("aria-valuenow",String(Math.round(p*100))),M&&p>0&&e.onMuteToggle(),b.innerHTML=ne(M,p),e.onVolumeChange(p)});let Te=c=>{for(let p of h.querySelectorAll(".hfp-speed-option"))p.classList.toggle("hfp-active",p.dataset.speed===String(c))};m.addEventListener("click",c=>{c.stopPropagation();let p=h.classList.toggle("hfp-open");m.setAttribute("aria-expanded",String(p))}),h.addEventListener("click",c=>{c.stopPropagation();let p=c.target.closest(".hfp-speed-option");if(!p)return;let E=parseFloat(p.dataset.speed);V=i.indexOf(E),m.textContent=J(E),m.setAttribute("aria-label",`Playback speed: ${J(E)}`),Te(E),h.classList.remove("hfp-open"),m.setAttribute("aria-expanded","false"),e.onSpeedChange(E)});let Re=()=>{h.classList.remove("hfp-open"),m.setAttribute("aria-expanded","false")};document.addEventListener("click",Re);let H=c=>{let p=a.getBoundingClientRect(),E=Math.max(0,Math.min(1,(c-p.left)/p.width));e.onSeek(E)},N=!1;a.addEventListener("mousedown",c=>{c.stopPropagation(),N=!0,e.onScrubStart?.(),H(c.clientX)});let Nt=c=>{N&&H(c.clientX)},Pt=()=>{N&&(N=!1,e.onScrubEnd?.())};document.addEventListener("mousemove",Nt),document.addEventListener("mouseup",Pt),a.addEventListener("touchstart",c=>{N=!0,e.onScrubStart?.();let p=c.touches[0];p&&H(p.clientX)},{passive:!0});let Lt=c=>{if(N){let p=c.touches[0];p&&H(p.clientX)}},Ot=()=>{N&&(N=!1,e.onScrubEnd?.())};document.addEventListener("touchmove",Lt,{passive:!0}),document.addEventListener("touchend",Ot);let Ft=()=>C&&!N&&!F&&!r.querySelector(":focus-visible"),Ut=()=>{r.classList.remove("hfp-hidden"),T&&clearTimeout(T),T=setTimeout(()=>{Ft()&&r.classList.add("hfp-hidden")},3e3)},U=n instanceof ShadowRoot?n.host:n,B=()=>Ut(),Vt=()=>{Ft()&&r.classList.add("hfp-hidden")};return U.addEventListener("mousemove",B),U.addEventListener("keydown",B),U.addEventListener("focusin",B),U.addEventListener("mouseleave",Vt),{updateTime(c,p){let E=p>0?Math.min(c,p):c,di=p>0?E/p*100:0;s.style.width=`${di}%`,u.textContent=`${pt(E)} / ${pt(p)}`},updatePlaying(c){let p=c!==C;C=c,o.classList.toggle("hfp-playing",c),o.setAttribute("aria-label",c?"Pause":"Play"),c?p&&Ut():(T&&clearTimeout(T),r.classList.remove("hfp-hidden"))},updateSpeed(c){let p=i.indexOf(c);p!==-1&&(V=p),m.textContent=J(c),m.setAttribute("aria-label",`Playback speed: ${J(c)}`),Te(c)},updateMuted(c){M=c,b.innerHTML=ne(c,D),b.setAttribute("aria-label",c?"Unmute":"Mute")},updateVolume(c){D=c,S.style.width=`${c*100}%`,_.setAttribute("aria-valuenow",String(Math.round(c*100))),b.innerHTML=ne(M,c)},setVolumeControlsHidden(c){v.style.display=c?"none":""},show(){r.style.display=""},hide(){r.style.display="none"},destroy(){document.removeEventListener("mousemove",Nt),document.removeEventListener("mouseup",Pt),document.removeEventListener("touchmove",Lt),document.removeEventListener("touchend",Ot),document.removeEventListener("mousemove",l),document.removeEventListener("mouseup",f),document.removeEventListener("touchmove",g),document.removeEventListener("touchend",R),document.removeEventListener("click",Re),U.removeEventListener("mousemove",B),U.removeEventListener("keydown",B),U.removeEventListener("focusin",B),U.removeEventListener("mouseleave",Vt),T&&clearTimeout(T),r.remove()}}}function Nn(n,e,t,i,r,o=!1){let a=i?i.split(",").map(Number).filter(d=>!isNaN(d)&&d>0):void 0,s={...a?{speedPresets:a}:{},audioLocked:o},u=Dn(n,r,s);return u.updateMuted(e),u.updateVolume(t),u}function ft(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 Pn(n){return n.composedPath().some(e=>e instanceof HTMLElement&&e.classList.contains("hfp-controls"))}var Ve=null;function Ln(n,e){if(typeof CSSStyleSheet<"u")try{Ve||(Ve=new CSSStyleSheet,Ve.replaceSync(e)),n.adoptedStyleSheets=[Ve];return}catch{}let t=document.createElement("style");t.textContent=e,n.appendChild(t)}function On(){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 Fn(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 ur(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 He=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,u=0,d=()=>{if(r()){this._raf=null;return}let m;try{m=e.time()}catch{this._raf=null;return}let h=i(),v=o();v.end>0&&(m=Math.min(m,v.end));let b=a===null?0:m-a;b!==0&&(u=Math.min(b,s),s=b),a=m;let A=ur(m,u,v);A&&(m=v.shown);let _=performance.now();if((_-this._lastUpdateMs>100||A)&&(this._lastUpdateMs=_,this._callbacks.onTimeUpdate(m,h)),A){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(d)};this._tick=d,this._raf=requestAnimationFrame(d)}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 Un(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 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 dr(n){let e=n.parentElement;for(;e;){if(e.hasAttribute("data-composition-id"))return!0;e=e.parentElement}return!1}var Vn=n=>4*Number.EPSILON*Math.max(1,Math.abs(n));function he(n,e){return!Number.isFinite(n)||!Number.isFinite(e)?n===e:Math.abs(n-e)<=Vn(Math.max(Math.abs(n),Math.abs(e)))}var Hn=(n,e)=>n>=e||he(n,e),$e=(n,e,t)=>Hn(n,e)&&n<t&&!he(n,t),cr=1e-6,ht=(n,e,t,i)=>$e(n,e,t)||Hn(n,e)&&i>0&&t>=i-cr;var mr="data-fade-in",pr="data-fade-out",rs=mr.slice(5),os=pr.slice(5),fr=Object.freeze({fadeIn:0,fadeOut:0});var $n=':not([muted]):is(:not([data-has-audio]),[data-has-audio="true"])',ss=`audio[data-start], video[data-start]${$n}`;var br=`[data-start]:not(video, audio, img, [${An}], [${En}])`,ks=`${br}[${K}]`,Ms=`meta[name="${Fe}"]`;var Is=`[${K}][${K}]`,Cs=`[${K}][style*="visibility: hidden"]`;var gr=[[.3,.25],[.1,.1]],_r=.01,yr=.1,vr=.1,be=new WeakMap;function bt(n,e,t,i,r=n.tagName==="AUDIO"){let o=Math.abs(e);if(r&&i&&o>vr)return be.delete(n),{rate:t,seek:!0};let a=Math.sign(e),s=be.get(n);if(o>.04)be.set(n,a);else if(s!==a||o<=_r)return be.delete(n),{rate:t,seek:!1};let u=gr.find(([m])=>o>m)?.[1]??.03,d=r?Math.min(u,yr):u;return{rate:t*(1+a*d),seek:!1}}function gt(n){be.delete(n)}var yu=1/16;var Sr=["backdrop-filter","clip-path","filter","mask","mask-border-source","mask-image","perspective","rotate","scale","transform","translate","-webkit-mask-image"],Ru=new Set([...Sr,"contain","isolation","mask-border","mix-blend-mode","opacity"]);function Er(n){return Number.isFinite(n)&&n>0?n:30}function Tr(n){return Number.isFinite(n)&&n>0?n:0}function Wn(n,e){let t=Er(e),i=Tr(n),r=i*t,o=Math.round(r);return Math.abs(r-o)<=.001?o/t:i}function Bn(n,e,t){return{start:Wn(n,t),end:Number.isFinite(e)?Wn(e,t):e}}var Rr=["seconds-time","rational-fps","seek-keep-playing","composition-manifest-v1","runtime-data","play-range"];function xr(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 wr(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=xr(r,i);return{numerator:r/o,denominator:i/o}}function Gn(n,e,t){return Math.max(n,(Math.ceil(e*t-1e-6)-1)/t)}function kr(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 _t(n){return{protocolVersion:1,capabilities:Rr,fps:wr(n)}}function jn(n){let e=n.offsetWidth,t=n.getBoundingClientRect().width;return e>0&&t>0?t/e:null}function Mr(n){return Array.isArray(n)&&n.every(e=>typeof e=="string")}function zn(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=kr(t.fps);return i===null||!Mr(t.capabilities)?{status:"unsupported",code:"invalid_protocol_metadata",receivedVersion:t.protocolVersion}:{status:"supported",fps:i,metadata:t}}function Ir(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 u=e.timelineRegistry[a],d=ce(u);!(n.hasAttribute("data-duration")||n.hasAttribute("data-end")||n.hasAttribute(ln)||n.hasAttribute(dn))&&(o==null||o<=0)&&d!=null&&d>0&&(o=d)}let s=a!==null&&n===re(n.ownerDocument);return{start:r,end:!s&&o!=null&&o>0?r+o:Number.POSITIVE_INFINITY}}function qn(n,e){let t=Ir(n,e);if(!t)return!1;let i=e.exportRenderSeek?Bn(t.start,t.end,e.canonicalFps):t;return ht(e.currentTime,i.start,i.end,e.compositionDuration)}var Q="first-frame",Cr=3;function ge(n){let e=n.ownerDocument?.defaultView;return e&&n instanceof e.Element?!0:n instanceof Element}function w(n){if(!ge(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 Dr(n){return n.hasAttribute("data-start")||n.hasAttribute("data-track-index")}function Nr(n,e,t){let i=n;for(;i;){if(Dr(i)&&!qn(i,{currentTime:0,compositionDuration:Number.POSITIVE_INFINITY,canonicalFps:30,exportRenderSeek:!1,timelineRegistry:t,resolver:e}))return!1;i=i.parentElement}return!0}function Yn(n,e,t,i){return e==="all"?!0:Nr(n,t,i)}function Be(n,{scope:e="all"}={}){let t=n.defaultView,i=$({documentRef:n,timelineRegistry:t?.__timelines,includeAuthoredTimingAttrs:!0}),r=n.querySelector(`meta[name="${Fe}"]`)!==null,o=Array.from(n.querySelectorAll("video, audio")).filter(w).filter(u=>Yn(u,r&&u.preload!=="auto"?Q:e,i,t?.__timelines??{})).filter(u=>u.readyState<Cr),a=Array.from(n.querySelectorAll("img")).filter(u=>Yn(u,u.getAttribute("loading")?.toLowerCase()==="lazy"?Q:e,i,t?.__timelines??{})).filter(u=>!u.complete),s=n.fonts?.status==="loading";return{pendingMedia:o,pendingImages:a,fontsLoading:s}}function Pr(n,{pendingMedia:e,pendingImages:t,fontsLoading:i},r){let o=e.map(u=>new Promise(d=>{if(u.error){d();return}let m=()=>{u.removeEventListener("canplay",m),u.removeEventListener("error",m),r.removeEventListener("abort",m),d()};u.addEventListener("canplay",m),u.addEventListener("error",m),r.addEventListener("abort",m,{once:!0})})),a=t.map(u=>u.decode?u.decode().catch(()=>{}):Promise.resolve()),s=i&&n.fonts?n.fonts.ready.then(()=>{}):Promise.resolve();return Promise.all([...o,...a,s]).then(()=>{})}function Lr(n,e,{scope:t="all"}={}){let i=Be(n,{scope:t});return i.pendingMedia.length===0&&i.pendingImages.length===0&&!i.fontsLoading?null:Pr(n,i,e)}var Or=50;function Fr(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,Or)};a()})}var Ur=50,Vr=1.5,Hr=2,$r=1500;function yt(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 Wr(n,e){let t=n.defaultView;return t?(async()=>{let i=await yt(t,e);if(e.aborted)return;let r=await yt(t,e),o=r-i,a=0;for(;!e.aborted&&a<Hr;){if(r-i>=$r)return;let s=await yt(t,e);if(e.aborted)return;let u=s-r;o=Math.min(o,u),a=u<Ur||u<=o*Vr?a+1:0,r=s}})():null}var Br=8e3;function Gr(n,e,t={}){let i=t.inputs??[(d,m)=>Lr(d,m,{scope:t.scope}),Fr,Wr],r=new AbortController,o=i.map(d=>d(n,r.signal)).filter(d=>d!==null);if(o.length===0){e({timedOut:!1});return}let a=t.timeoutMs??Br,s,u=new Promise(d=>{s=setTimeout(()=>d("timed-out"),a)});Promise.race([Promise.all(o).then(()=>"done"),u]).then(d=>{clearTimeout(s),r.abort(),e({timedOut:d==="timed-out"})})}function Kn(n,e,t={}){Gr(n,e,{...t,scope:Q})}function vt(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 At(n){return{start:vt(n,["data-start"],0),duration:vt(n,["data-duration"],0),mediaStart:ke(e=>n.getAttribute(e)),playbackRate:vt(n,["data-playback-rate"],1)}}var jr=.004,zr=1.5,Ge=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=at(e.source);e.start=t.start??0,e.mediaStart=At(e.source).mediaStart,e.duration=t.duration!=null&&t.duration>0?t.duration:Number.POSITIVE_INFINITY}_inWindow(e,t){return $e(t,e.start,e.start+e.duration)}_preseekUpcoming(e,t){let i=e.start-t;i<=0||i>zr||!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=G(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){gt(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)}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)<jr;e.lastOffset=i;let{rate:o,seek:a}=bt(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 u=this._getPlaybackRate();u!==1&&(a.playbackRate=u);let d={el:a,start:i,duration:r,mediaStart:o?At(o).mediaStart:0,source:o};return a.addEventListener("seeked",()=>this._noteSeekLanded(d)),this._entries.push(d),d}_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(u=>u.source===e)||e.tagName==="VIDEO"&&e.hasAttribute("muted"))return;let t=this._resolveIframeMediaSrc(e);if(!t)return;let i=at(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(!ge(s))continue;let u=[];w(s)&&s.matches("audio[data-start], video[data-start]")&&u.push(s);let d=s.querySelectorAll("audio[data-start], video[data-start]");for(let m of d)w(m)&&u.push(m);for(let m of u)this._adoptIframeMedia(m)}for(let s of a.removedNodes){if(!ge(s))continue;let u=[];w(s)&&s.matches("audio[data-start], video[data-start]")&&u.push(s);let d=s.querySelectorAll("audio[data-start], video[data-start]");for(let m of d)w(m)&&u.push(m);for(let m of u)this._detachIframeMedia(m)}}}),i={childList:!0,subtree:!0,attributes:!0,attributeFilter:["preload","src"]},r=Un(e);for(let o of r)t.observe(o,i);this._mediaObserver=t}};function St(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 _e(n,e,t){let i=n.end??e;return i<e?Gn(n.start,i,t):i}function Et(n,e,t,i){return n<e.start||n>=_e(e,t,i)}var qr=100;function Yr(n,e){return typeof n.currentTime=="number"&&Number.isFinite(n.currentTime)?n.currentTime:(n.frame??0)/e}function Xn(n,e,t){return t<=0?!1:n.ended===!0?!0:n.ended===!1&&!n.isPlaying?!1:e>=t}function Kr(n,e,t,i,r,o){let{duration:a}=t;if(!r){let s=Xn(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 Xr(n,e,t,i,r,o)}function Xr(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:_e(r,t.duration,o),atEnd:i&&!s&&Xn(n,e,a),stopRuntime:n.isPlaying,entering:s}}function Zn(n,e,t,i){let r=Yr(n,e),o=!t.paused,a=o||n.isPlaying,s=i.getPlayRange?.(),u=Kr(n,r,t,a,s,e),{atEnd:d,start:m}=u,h=t.duration>0?Math.min(r,t.duration):r,v=d?u.shownAtEnd:h,b=!n.isPlaying,A=d&&a;if(A&&i.getLoop())return i.media.audioOwner==="parent"&&i.media.pauseAll(),i.seek(m),i.play(),{...t,currentTime:m,paused:!1,enteringRange:!0};let _={...t,currentTime:v,paused:b,enteringRange:u.entering};i.media.audioOwner==="parent"&&(o&&b?i.media.pauseAll():!o&&!b&&i.media.playAll(),i.media.mirrorTime(v));let S=performance.now(),C=b!==t.paused;return(S-t.lastUpdateMs>qr||C)&&(_.lastUpdateMs=S,i.updateControlsTime(v,t.duration),i.updateControlsPlaying(!b),i.dispatchEvent(new CustomEvent("timeupdate",{detail:{currentTime:v}}))),A&&(u.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 Jn(n,e,t){if(n.source!==e)return;let i=n.data;if(!i||i.source!=="hf-preview")return;let r=zn(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(Zn({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));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,u)=>t.media.mirrorTime(s,u)),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),u=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(u)&&u>0){let d=t.getPlaybackState();t.setPlaybackState({...d,duration:u}),t.updateControlsTime(d.currentTime,u),t.onRuntimeTimelineReady(u,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 Tt(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 Qn(n,e){if(!n||Jr(n,e))return n;let t=`<script src="${e}"></script>`,i=Tt(n,"head");if(i)return n.slice(0,i.end)+t+n.slice(i.end);let r=Tt(n,"body");if(r)return n.slice(0,r.index)+t+n.slice(r.index);let o=Tt(n,"html");return o?n.slice(0,o.end)+t+n.slice(o.end):t+n}var W="shader-capture-scale",ee="shader-loading",je="runtime-src",ei="__hf_shader_capture_scale",ti="__hf_shader_loading",te=["Preparing scene transitions","Sampling outgoing scene motion","Sampling incoming scene motion","Caching transition frames","Finalizing transition preview"];function Rt(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 eo(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 ni(n,e){return n.filter(t=>t!==""&&t.split("=")[0]!==e)}function to(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,u=a>=0?r.slice(a+1):"",d=ni(u.split("&"),ei);d=ni(d,ti),e!==null&&d.push(`${ei}=${encodeURIComponent(e)}`),t!=="composition"&&d.push(`${ti}=${encodeURIComponent(t)}`);let m=d.join("&");return`${s}${m?`?${m}`:""}${o}`}function no(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 ye(n){return eo(n.getAttribute(ee))}function ii(n){return Number(Rt(n.getAttribute(W))??"1")}function ri(n,e){return to(e,Rt(n.getAttribute(W)),ye(n))}function ve(n,e){return Qn(no(e,Rt(n.getAttribute(W)),ye(n)),xt(n))}function xt(n){let e=n.getAttribute(je)?.trim();if(!e)return Z;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:Z}catch{return Z}}function oi(){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=te[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 u=document.createElement("div");u.className="hfp-shader-loader-fill",s.appendChild(u);let d=document.createElement("div");d.className="hfp-shader-loader-progress";let m=b=>{let A=document.createElement("div");A.className="hfp-shader-loader-row";let _=document.createElement("span");_.className="hfp-shader-loader-label",_.textContent=b;let S=document.createElement("span");return S.className="hfp-shader-loader-value",A.appendChild(_),A.appendChild(S),d.appendChild(A),{row:A,label:_,value:S}},h=m("transition"),v=m("transition frame");return t.appendChild(i),t.appendChild(r),t.appendChild(a),t.appendChild(s),t.appendChild(d),n.appendChild(t),{root:n,fill:u,title:o,detail:a,transitionValue:h.value,transitionRow:h.row,frameLabel:v.label,frameValue:v.value,frameRow:v.row}}var io=420;function ze(n,e,t){e.textContent=t,n.style.visibility=t?"visible":"hidden"}var qe=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)",ze(this._el.transitionRow,this._el.transitionValue,""),ze(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(te.length-1,Math.floor(a*te.length));this._el.title.textContent=te[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 u=e.currentTransition!==void 0&&e.transitionTotal!==void 0?`${e.currentTransition}/${e.transitionTotal}`:o>0?`${r}/${o}`:"",d=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",ze(this._el.transitionRow,this._el.transitionValue,u),ze(this._el.frameRow,this._el.frameValue,d),this._el.root.setAttribute("aria-valuenow",String(Math.round(a*100))),this.show()}showAssetsLoading(){this.reset(),this._el.title.textContent="Loading assets",this._el.detail.textContent="Waiting for images, video and fonts to finish loading.",this._el.root.setAttribute("aria-label","Loading assets"),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()},io)}};function ai(n){return n?.trim().toLowerCase().startsWith("video/")??!1}function si(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=G(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 ro=.1,oo=5,wt="sandbox-origin",ui=1e4,kt=8e3,Mt="assets-loading",Ae="assets-loading-ui",It="low-power-idle",li="disable-click-to-play",Se="range-start",Ee="range-end",ao=150;function Ct(n){return!Number.isFinite(n)||n<=0?1:Math.max(ro,Math.min(oo,n))}var Dt=class extends HTMLElement{static get observedAttributes(){return["src","srcdoc","width","height","controls","muted","audio-locked","volume","poster","playback-rate","audio-src","type",wt,je,W,ee,Ae,It,Se,Ee]}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;_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"}),Ln(this.shadow,wn),{container:this.container,iframe:this.iframe}=On(),this.sizer.className="hfp-sizer",this.shadow.appendChild(this.sizer),this.shadow.appendChild(this.container);let e=oi();this.shadow.appendChild(e.root),this.shaderLoader=new qe(e),this._media=new Ge({dispatchEvent:t=>this._emit(t),getMuted:()=>this.muted,getVolume:()=>this._volume,getPlaybackRate:()=>this.playbackRate,getCurrentTime:()=>this._currentTime,isPaused:()=>this._paused}),this._directTimelineClock=new He({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 Ue(this.iframe,{resolveRuntimeUrl:()=>xt(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||Pn(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=ft(this.shadow,this.getAttribute("poster"),this.posterEl)),this.hasAttribute("audio-src")&&this._media.setupFromUrl(this.getAttribute("audio-src")),this.hasAttribute("srcdoc")&&(this.iframe.srcdoc=ve(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=ve(this,i);else{this.iframe.removeAttribute("srcdoc");let r=this.getAttribute("src");r!==null&&this._wantsVideo()&&this._navigateSrc(r)}break;case wt:this._applySandboxOriginPolicy(this.isConnected&&t!==i);break;case"width":this._setCompositionSize(fe(i)??1920,this._compositionHeight);break;case"height":this._setCompositionSize(this._compositionWidth,fe(i)??1080);break;case"controls":i!==null?this._setupControls():(this.controlsApi?.destroy(),this.controlsApi=null);break;case"poster":this.posterEl=ft(this.shadow,i,this.posterEl);break;case"playback-rate":{let r=Ct(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 Ae:i==="none"&&this.shaderLoader.hideAssetsLoading();break;case It:this._sendControl("set-idle-heartbeat",{slow:i!==null});break;case Se:case Ee:this._applyPlayRange(!0);break;case W:case ee:case je:if(!this.isConnected)break;this._reloadShaderOptions();break}}_applySandboxOriginPolicy(e=!1){this.hasAttribute(wt)?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=ve(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?Et(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.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 Ct(parseFloat(this.getAttribute("playback-rate")||"1"))}set playbackRate(e){this.setAttribute("playback-rate",String(Ct(e)))}get shaderCaptureScale(){return ii(this)}set shaderCaptureScale(e){this.setAttribute(W,String(e))}get shaderLoading(){return ye(this)}set shaderLoading(e){e==="composition"?this.removeAttribute(ee):this.setAttribute(ee,e)}get assetsLoadingUi(){return this.getAttribute(Ae)==="none"?"none":"player"}set assetsLoadingUi(e){e==="none"?this.setAttribute(Ae,"none"):this.removeAttribute(Ae)}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(li)}set disableClickToPlay(e){this.toggleAttribute(li,e)}get loop(){return this.hasAttribute("loop")}set loop(e){e?this.setAttribute("loop",""):this.removeAttribute("loop")}get rangeStart(){return this._readSeconds(Se)}set rangeStart(e){this._writeSeconds(Se,e)}get rangeEnd(){return this._readSeconds(Ee)}set rangeEnd(e){this._writeSeconds(Ee,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(Se)||this.hasAttribute(Ee)}_playRange(){return St(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}=St(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){Et(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=_e(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,..._t(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 ${ui}ms`)},ui);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(It)}),this._sendDisplayScale()}_sendDisplayScale(){let e=jn(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=ve(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 ai(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=ri(this,e)}_loadVideo(e){this._videoSource||(this._videoSource=si({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){Jn(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:()=>ye(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),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),kt)):this._settleAssetsReady(i);return}Kn(e,({timedOut:r})=>{i===this._assetsGeneration&&(r&&this._warnStuckAssets(e),this._settleAssetsReady(i))},{timeoutMs:kt}),this._assetsReady||this._startAssetsLoadingOverlayTimer(i)}_startAssetsLoadingOverlayTimer(e){this._assetsLoadingShowTimer=setTimeout(()=>{this._assetsLoadingShowTimer=null,!(e!==this._assetsGeneration||this._assetsReady)&&(this.setAttribute(Mt,""),this.assetsLoadingUi!=="none"&&this.shaderLoader.showAssetsLoading())},ao)}_hasPendingFirstFrameAssets(e){let{pendingMedia:t,pendingImages:i,fontsLoading:r}=Be(e,{scope:Q});return t.length>0||i.length>0||r}_warnStuckAssets(e){let{pendingMedia:t,pendingImages:i,fontsLoading:r}=Be(e,{scope:Q}),o=e.defaultView;console.warn(`[hyperframes-player] assets-loading timed out after ${kt}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(Mt),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.shaderLoader.reset(),this._media.resetForIframeLoad()}_invalidateAssetsWait(){this._clearAssetsLoadingShowTimer(),this._assetsReady=!1,this._painted=!1,this._assetsGeneration++,this.removeAttribute(Mt),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=Fn(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=Nn(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",Dt);export{Dt as HyperframesPlayer,Cn as SPEED_PRESETS,J as formatSpeed,pt as formatTime};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hyperframes/player",
3
- "version": "0.8.206",
3
+ "version": "0.8.207",
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.206"
31
+ "@hyperframes/core": "0.8.207"
32
32
  },
33
33
  "devDependencies": {
34
34
  "@types/bun": "^1.1.0",