@hyperframes/player 0.8.86 → 0.8.87
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.
- package/README.md +7 -0
- package/dist/hyperframes-player.cjs +3 -3
- package/dist/hyperframes-player.cjs.map +1 -1
- package/dist/hyperframes-player.d.cts +28 -0
- package/dist/hyperframes-player.d.ts +28 -0
- package/dist/hyperframes-player.global.js +3 -3
- package/dist/hyperframes-player.global.js.map +1 -1
- package/dist/hyperframes-player.js +3 -3
- package/dist/hyperframes-player.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import"./chunk-QJ3QTT32.js";function
|
|
1
|
+
import"./chunk-QJ3QTT32.js";function ht(n){return n.hasRuntime||n.runtimeInjected?!1:!!(n.hasNestedCompositions||n.hasTimelines&&n.attempts>=5)}function V(n){return typeof n=="object"&&n!==null}function bt(n){return V(n)&&typeof n.getDuration=="function"}function gt(n){return V(n)&&typeof n.duration=="function"&&typeof n.time=="function"&&typeof n.seek=="function"&&typeof n.play=="function"&&typeof n.pause=="function"}var P="https://cdn.jsdelivr.net/npm/@hyperframes/core@0.8.87/dist/hyperframe.runtime.iife.js";function U(n){if(n===null)return null;let e=Number.parseInt(n,10);return Number.isFinite(e)&&e>0?e:null}function Mn(n){let e=n?.querySelector("[data-composition-id][data-width][data-height]")??n?.querySelector("[data-width][data-height]");if(!e)return null;let t=U(e.getAttribute("data-width")),i=U(e.getAttribute("data-height"));return t!==null&&i!==null?{width:t,height:i}:null}var ae=class{constructor(e,t){this._iframe=e;this._callbacks=t}_iframe;_callbacks;_interval=null;_runtimeInjected=!1;get runtimeInjected(){return this._runtimeInjected}start(){this.stop(),this._runtimeInjected=!1;let e=0;this._interval=setInterval(()=>{e++;try{let t=this._iframe.contentWindow;if(!t)return;let i=!!(t.__hf||t.__player),r=!!(t.__timelines&&Object.keys(t.__timelines).length>0),o=!!this._iframe.contentDocument?.querySelector("[data-composition-src]");if(ht({hasRuntime:i,hasTimelines:r,hasNestedCompositions:o,runtimeInjected:this._runtimeInjected,attempts:e})){this._injectRuntime();return}if(this._runtimeInjected&&!i)return;let a=this._resolvePlaybackDurationAdapter(t);if(a&&a.getDuration()>0){this.stop();let s=Mn(this._iframe.contentDocument);this._callbacks.onReady({duration:a.getDuration(),adapter:a,compositionSize:s});return}}catch{}e>=40&&(this.stop(),this._callbacks.onError("Composition timeline not found after 8s"))},200)}stop(){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 Reflect.get(e,"__hf")!==void 0||V(Reflect.get(e,"__player"))}_injectRuntime(){this._runtimeInjected=!0;try{let e=this._iframe.contentDocument;if(!e)return;let t=e.createElement("script");t.src=P,(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(!V(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 gt(a)?a:null}_resolvePlaybackDurationAdapter(e){let t=Reflect.get(e,"__player");if(bt(t))return{kind:"runtime",getDuration:()=>t.getDuration()};let i=this._resolveDirectTimelineAdapterFromWindow(e);return i?{kind:"direct-timeline",timeline:i,getDuration:()=>i.duration()}:null}};var _t=`
|
|
2
2
|
:host {
|
|
3
3
|
display: block;
|
|
4
4
|
position: relative;
|
|
@@ -469,6 +469,6 @@ import"./chunk-QJ3QTT32.js";function dt(n){return n.hasRuntime||n.runtimeInjecte
|
|
|
469
469
|
background: var(--hfp-accent, #fff);
|
|
470
470
|
pointer-events: none;
|
|
471
471
|
}
|
|
472
|
-
`,ft='<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>',ht='<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>',Te='<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>',xe='<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>',bt='<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 gt=[.25,.5,1,1.5,2,4];function re(n){return Number.isInteger(n)?`${n}x`:`${n}x`}function we(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 _t(n,e,t={}){let i=t.speedPresets??gt,r=document.createElement("div");r.className="hfp-controls",r.addEventListener("click",d=>{d.stopPropagation()});let o=document.createElement("button");o.className="hfp-play-btn",o.type="button",o.innerHTML=`<span class="hfp-ico hfp-ico-play">${ft}</span><span class="hfp-ico hfp-ico-pause">${ht}</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 l=document.createElement("div");l.className="hfp-speed-wrap";let c=document.createElement("button");c.className="hfp-speed-btn",c.type="button",c.textContent="1x",c.setAttribute("aria-label","Playback speed");let g=document.createElement("div");g.className="hfp-speed-menu",g.setAttribute("role","menu");for(let d of i){let p=document.createElement("button");p.className="hfp-speed-option",p.type="button",p.setAttribute("role","menuitem"),p.dataset.speed=String(d),p.textContent=re(d),d===1&&p.classList.add("hfp-active"),g.appendChild(p)}l.appendChild(g),l.appendChild(c);let m=document.createElement("div");m.className="hfp-volume-wrap";let f=document.createElement("button");f.className="hfp-mute-btn",f.type="button",f.innerHTML=Te,f.setAttribute("aria-label","Mute");let h=document.createElement("div");h.className="hfp-volume-slider-wrap";let b=document.createElement("div");b.className="hfp-volume-slider",b.setAttribute("role","slider"),b.setAttribute("aria-label","Volume"),b.setAttribute("aria-valuemin","0"),b.setAttribute("aria-valuemax","100"),b.setAttribute("aria-valuenow","100"),b.tabIndex=0;let y=document.createElement("div");y.className="hfp-volume-fill",y.style.width="100%",b.appendChild(y),h.appendChild(b),m.appendChild(h),m.appendChild(f),t.audioLocked&&(m.style.display="none"),r.appendChild(o),r.appendChild(a),r.appendChild(u),r.appendChild(m),r.appendChild(l),n.appendChild(r);let S=!1,v=!1,w=1,A=null,R=i.indexOf(1);R===-1&&(R=0);let Q=(d,p)=>d?bt:p===0?xe:p<.5?xe:Te;o.addEventListener("click",d=>{d.stopPropagation(),S?e.onPause():e.onPlay()}),f.addEventListener("click",d=>{d.stopPropagation(),e.onMuteToggle()});let N=!1,ee=d=>{let p=b.getBoundingClientRect(),E=Math.max(0,Math.min(1,(d-p.left)/p.width));w=E,y.style.width=`${E*100}%`,b.setAttribute("aria-valuenow",String(Math.round(E*100))),v&&E>0&&e.onMuteToggle(),f.innerHTML=Q(v,E),e.onVolumeChange(E)};b.addEventListener("mousedown",d=>{d.stopPropagation(),N=!0,ee(d.clientX)});let Ke=d=>{N&&ee(d.clientX)},Je=()=>{N=!1};document.addEventListener("mousemove",Ke),document.addEventListener("mouseup",Je),b.addEventListener("touchstart",d=>{N=!0;let p=d.touches[0];p&&ee(p.clientX)},{passive:!0});let Ze=d=>{if(N){let p=d.touches[0];p&&ee(p.clientX)}},Qe=()=>{N=!1};document.addEventListener("touchmove",Ze,{passive:!0}),document.addEventListener("touchend",Qe);let et=.05;b.addEventListener("keydown",d=>{let p=w;if(d.key==="ArrowRight"||d.key==="ArrowUp")p=Math.min(1,w+et);else if(d.key==="ArrowLeft"||d.key==="ArrowDown")p=Math.max(0,w-et);else return;d.preventDefault(),d.stopPropagation(),w=p,y.style.width=`${p*100}%`,b.setAttribute("aria-valuenow",String(Math.round(p*100))),v&&p>0&&e.onMuteToggle(),f.innerHTML=Q(v,p),e.onVolumeChange(p)});let tt=d=>{for(let p of g.querySelectorAll(".hfp-speed-option"))p.classList.toggle("hfp-active",p.dataset.speed===String(d))};c.addEventListener("click",d=>{d.stopPropagation();let p=g.classList.toggle("hfp-open");c.setAttribute("aria-expanded",String(p))}),g.addEventListener("click",d=>{d.stopPropagation();let p=d.target.closest(".hfp-speed-option");if(!p)return;let E=parseFloat(p.dataset.speed);R=i.indexOf(E),c.textContent=re(E),tt(E),g.classList.remove("hfp-open"),c.setAttribute("aria-expanded","false"),e.onSpeedChange(E)});let nt=()=>{g.classList.remove("hfp-open"),c.setAttribute("aria-expanded","false")};document.addEventListener("click",nt);let te=d=>{let p=a.getBoundingClientRect(),E=Math.max(0,Math.min(1,(d-p.left)/p.width));e.onSeek(E)},I=!1;a.addEventListener("mousedown",d=>{d.stopPropagation(),I=!0,e.onScrubStart?.(),te(d.clientX)});let it=d=>{I&&te(d.clientX)},rt=()=>{I&&(I=!1,e.onScrubEnd?.())};document.addEventListener("mousemove",it),document.addEventListener("mouseup",rt),a.addEventListener("touchstart",d=>{I=!0,e.onScrubStart?.();let p=d.touches[0];p&&te(p.clientX)},{passive:!0});let ot=d=>{if(I){let p=d.touches[0];p&&te(p.clientX)}},at=()=>{I&&(I=!1,e.onScrubEnd?.())};document.addEventListener("touchmove",ot,{passive:!0}),document.addEventListener("touchend",at);let st=()=>{A&&clearTimeout(A),A=setTimeout(()=>{S&&r.classList.add("hfp-hidden")},3e3)},ne=n instanceof ShadowRoot?n.host:n,ut=()=>{r.classList.remove("hfp-hidden"),st()},lt=()=>{S&&r.classList.add("hfp-hidden")};return ne.addEventListener("mousemove",ut),ne.addEventListener("mouseleave",lt),{updateTime(d,p){let E=p>0?Math.min(d,p):d,An=p>0?E/p*100:0;s.style.width=`${An}%`,u.textContent=`${we(E)} / ${we(p)}`},updatePlaying(d){S=d,o.classList.toggle("hfp-playing",d),o.setAttribute("aria-label",d?"Pause":"Play"),d?st():r.classList.remove("hfp-hidden")},updateSpeed(d){let p=i.indexOf(d);p!==-1&&(R=p),c.textContent=re(d),tt(d)},updateMuted(d){v=d,f.innerHTML=Q(d,w),f.setAttribute("aria-label",d?"Unmute":"Mute")},updateVolume(d){w=d,y.style.width=`${d*100}%`,b.setAttribute("aria-valuenow",String(Math.round(d*100))),f.innerHTML=Q(v,d)},setVolumeControlsHidden(d){m.style.display=d?"none":""},show(){r.style.display=""},hide(){r.style.display="none"},destroy(){document.removeEventListener("mousemove",it),document.removeEventListener("mouseup",rt),document.removeEventListener("touchmove",ot),document.removeEventListener("touchend",at),document.removeEventListener("mousemove",Ke),document.removeEventListener("mouseup",Je),document.removeEventListener("touchmove",Ze),document.removeEventListener("touchend",Qe),document.removeEventListener("click",nt),ne.removeEventListener("mousemove",ut),ne.removeEventListener("mouseleave",lt),A&&clearTimeout(A),r.remove()}}}function yt(n,e,t,i,r,o=!1){let a=i?i.split(",").map(Number).filter(l=>!isNaN(l)&&l>0):void 0,s={...a?{speedPresets:a}:{},audioLocked:o},u=_t(n,r,s);return u.updateMuted(e),u.updateVolume(t),u}function Re(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 vt(n){return n.composedPath().some(e=>e instanceof HTMLElement&&e.classList.contains("hfp-controls"))}var oe=null;function At(n,e){if(typeof CSSStyleSheet<"u")try{oe||(oe=new CSSStyleSheet,oe.replaceSync(e)),n.adoptedStyleSheets=[oe];return}catch{}let t=document.createElement("style");t.textContent=e,n.appendChild(t)}function Et(){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 St(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}var ae=class{constructor(e){this._callbacks=e}_callbacks;_raf=null;_lastUpdateMs=0;start(e,t,i,r){this.stop();let o=()=>{if(r()){this._raf=null;return}let a;try{a=e.time()}catch{this._raf=null;return}let s=i();s>0&&(a=Math.min(a,s));let u=s>0&&a>=s,l=performance.now();if((l-this._lastUpdateMs>100||u)&&(this._lastUpdateMs=l,this._callbacks.onTimeUpdate(a,s)),u){if(this._callbacks.getLoop()){this._callbacks.restart();return}try{e.pause()}catch{}this._callbacks.onPaused(),this._raf=null;return}this._raf=requestAnimationFrame(o)};this._raf=requestAnimationFrame(o)}stop(){this._raf!==null&&(cancelAnimationFrame(this._raf),this._raf=null)}get isRunning(){return this._raf!==null}};function Tt(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)Tn(i)||t.push(i);return Sn(n),t}function Sn(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 Tn(n){let e=n.parentElement;for(;e;){if(e.hasAttribute("data-composition-id"))return!0;e=e.parentElement}return!1}function xt(){return globalThis}function H(n,e){if(typeof window>"u")return;let t=xt(),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 wt="data-hf-authored-duration",Rt="data-hf-authored-end";function W(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 se(n){let e=W(n.start);if(e==null)return null;let t=Math.max(0,e),i=W(n.duration),r=W(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=W(n.end),s=W(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 P=Object.freeze({start:"data-start",duration:"data-duration",trackIndex:"data-track-index",derivedEnd:"data-end",legacyTrack:"data-layer"}),Ar=Object.freeze([P.start,P.duration,P.trackIndex]),Er=Object.freeze([P.derivedEnd]),Sr=Object.freeze([P.derivedEnd,P.legacyTrack]);function ke(n){if(n==null||n.trim()==="")return null;let e=Number(n);return Number.isFinite(e)?e:null}var kt=n=>{let e=ke(n);return e!==null&&e>=0?e:null};function Mt(n){return kt(n("data-playback-start"))??kt(n("data-media-start"))??0}var G=.1,$=10;function Me(n){return Number.isFinite(n)&&n>0?Math.max(G,Math.min($,n)):1}function It(n,e=1){let t=Number.parseFloat(n("data-playback-rate")??"");return Me(Number.isFinite(t)&&t>0?t:e)}function Ct(n){let e=ke(n("data-duration"));return e!==null&&e>0?e:null}function Dt(n,e){let t=Ct(n);if(t!==null)return t;let i=ke(n("data-end"));return i!==null?i-e:null}var xn=3;function Ie(n,e,t){return Number.isFinite(n)?Math.max(0,n-e)/Me(t):null}function Nt(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:xn,source:"default"};if(i===null)return{seconds:null,source:"pending",reason:"source duration not yet probed"};let a=Ie(i,r,o);return a===null?{seconds:null,source:"pending",reason:"source reported a non-finite duration"}:{seconds:a,source:"media"}}var Pt="data-fx-chain",xr=Pt.slice(5);var B=(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}),Ce=(n=.707,e="Bandwidth \u2014 higher is narrower.")=>({kind:"number",key:"q",label:"Q",unit:"",min:.1,max:20,step:.01,default:n,scale:"log",automatable:!0,hint:e}),ue=(n=-40,e=40,t=0)=>({kind:"number",key:"gain",label:"Gain",unit:"dB",min:n,max:e,step:.1,default:t,automatable:!0}),Lt={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."},Ot=[{id:"gain",label:"Gain",group:"dynamics",description:"Raise or lower the whole signal. Automate it to duck under something else.",params:[ue(-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:[B("frequency","Frequency",1e3),ue(-40,40,0),Ce(1)],web:"biquad-peaking"},{id:"lowshelf",label:"Low Shelf",group:"filter",description:"Lift or drop everything below the corner frequency.",params:[B("frequency","Frequency",200,20,2e3),ue(-40,40,0)],web:"biquad-lowshelf"},{id:"highshelf",label:"High Shelf",group:"filter",description:"Lift or drop everything above the corner frequency.",params:[B("frequency","Frequency",4e3,500,2e4),ue(-40,40,0)],web:"biquad-highshelf"},{id:"highpass",label:"High-pass",group:"filter",description:"Remove low frequencies \u2014 the usual fix for rumble on a voice.",params:[B("frequency","Cutoff",300,20,2e4),Ce(.707),Lt],web:"biquad-highpass"},{id:"lowpass",label:"Low-pass",group:"filter",description:"Remove high frequencies \u2014 darkens or muffles a track.",params:[B("frequency","Cutoff",8e3,100,2e4),Ce(.707),Lt],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:"Hard ceiling \u2014 nothing gets past the 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:"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 \u2014 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"}],wr=new Map(Ot.map(n=>[n.id,n]));var Rr=Ot.map(n=>n.id);function wn(n){return 10**(n/20)}var Ft=wn(12);var Ne="data-automation",Or=Ne.slice(5),De=1,Rn=512,k=class extends Error{constructor(e){super(e),this.name="AudioAutomationError"}},le="volume",de="rate";function Vt(n){if(n===le)return{kind:"volume"};if(n===de)return{kind:"rate"};let e=n.split(".");if(e.length===3&&e[0]==="fx"&&e[1]===kn){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 kn="preset";var Mn={min:0,max:Ft,step:.01,unit:"",label:"Volume",scale:"linear",default:1},In={min:G,max:$,step:.05,unit:"x",label:"Speed",scale:"log",default:1};function z(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 Cn(n){let e=z(n);return e===null||e===0?0:Math.min(1,Math.max(-1,e))}function Ut(n,e){let t=z(n),i=z(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 Dn(n){let e=Cn(n?.curve),t=Ut(n?.viaX,n?.viaY);return{...e?{curve:e}:{},...t?{viaX:t.x,viaY:t.y}:{}}}function Nn(n,e){let t=z(n?.t),i=z(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,...Dn(n)}}function Ln(n,e){let t=n.map(r=>Nn(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,Rn)}function Pn(n){let e=[];for(let t of n.lanes){if(!Vt(t.target))continue;let i=t.target===le?Mn:t.target===de?In:null,r=Ln(t.points??[],i);r.length>0&&e.push({target:t.target,points:r})}return{version:De,lanes:e}}function Ht(n){let e;try{e=JSON.parse(n)}catch(r){throw new k(`Automation is not valid JSON: ${r.message}`)}if(typeof e!="object"||e===null)throw new k("Automation must be a JSON object.");let t=e;if(t.version!==De)throw new k(`Unsupported automation version: ${String(t.version)}`);if(!Array.isArray(t.lanes))throw new k("Automation is missing a `lanes` array.");let i=t.lanes.map((r,o)=>{if(typeof r!="object"||r===null)throw new k(`Lane ${o} is not an object.`);let a=r;if(typeof a.target!="string"||!Vt(a.target))throw new k(`Lane ${o} has an unreadable target: ${String(a.target)}`);if(!Array.isArray(a.points))throw new k(`Lane ${o} is missing a \`points\` array.`);return{target:a.target,points:a.points}});return Pn({version:De,lanes:i})}function On(n,e){return e?Math.pow(n,Math.pow(2,2*e)):n}function Fn(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 Vn(n,e,t){let{cx:i,cy:r,w:o}=Fn(e,t),a=2-2*o,s=n*a-1+2*o*i,u=-n*a-2*o*i,l=Un(s,u,n),c=1-l,g=c*c+2*o*l*c+l*l;return g>0?(2*o*r*l*c+l*l)/g:n}function Un(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 Hn(n,e){let t=Ut(e.viaX,e.viaY);return t?Vn(Math.min(1,Math.max(0,n)),t.x,t.y):On(n,e.curve)}function Wn(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 ce(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 g=a+s>>1;i[g].t<=e?a=g:s=g}let u=i[a],l=i[s],c=l.t-u.t;return c<=0?l.v:Wn(u.v,l.v,Hn((e-u.t)/c,u),t)}var me=new Map,Gn=64;function Wt(n,e=le){let t=`${e}\0${n}`,i=me.get(t);if(i!==void 0)return i;let r=null;try{r=Ht(n).lanes.find(o=>o.target===e)??null}catch{r=null}return me.size>Gn&&me.clear(),me.set(t,r),r}var Gt=48,$t=new WeakMap;function $n(n){let e=n.points,t=e[0].v,i=e[e.length-1].v,r=[0],o=[0],a=u=>{let l=r[r.length-1];if(u<=l)return;let c=ce(n,l,"log");r.push(u),o.push(o[o.length-1]+(c+ce(n,u,"log"))/2*(u-l))},s=Math.max(0,e[0].t);a(s);for(let u=1;u<e.length;u+=1){let l=e[u-1].t,c=e[u].t;if(!(c<=0))for(let g=1;g<=Gt;g+=1)a(Math.max(l,0)+(c-l)*g/Gt)}return{ts:Float64Array.from(r),ss:Float64Array.from(o),firstRate:t,lastRate:i}}function Bn(n){let e=$t.get(n);return e||(e=$n(n),$t.set(n,e)),e}function zn(n){return typeof n!="number"&&n.points.length>0}function jn(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 Le(n,e){if(typeof n=="number")return e/n;if(!zn(n))return e;let{ts:t,ss:i,firstRate:r,lastRate:o}=Bn(n),a=t.length-1;return e<=0?e/r:e>=i[a]?t[a]+(e-i[a])/o:jn(i,t,e)}function qn(n){return n?Wt(n,de):null}function Bt(n,e){return qn(n)??e}var Yn="http://www.w3.org/1999/xhtml";function zt(n){return n!=null&&n.nodeType===1}function jt(n){return zt(n)&&n.namespaceURI===Yn}function Pe(n,e){return jt(n)&&n.localName===e}function Xn(n){return Pe(n,"video")}function Kn(n){return Pe(n,"audio")}function C(n){return Xn(n)||Kn(n)}function Oe(n){return Pe(n,"img")}var _=Object.freeze({start:"data-start",duration:"data-duration",trackIndex:"data-track-index",derivedEnd:"data-end",legacyTrack:"data-layer"}),zr=Object.freeze([_.start,_.duration,_.trackIndex]),jr=Object.freeze([_.derivedEnd]),qr=Object.freeze([_.derivedEnd,_.legacyTrack]);function M(n){if(n==null||n.trim()==="")return null;let e=Number(n);return Number.isFinite(e)?e:null}var Xt=/^[A-Za-z0-9_.:-]+$/;function Kt(n,e){let t=n.charCodeAt(e);return t>=48&&t<=57}function qt(n,e){let t=e;for(;t>=0&&Kt(n,t);)t--;return t}function Jn(n,e){let t=e;for(;t>=0&&(n[t]??"").trim()==="";)t--;return t}function Zn(n){let e=n.length-1;if(!Kt(n,e))return null;let t=qt(n,e);return n[t]==="."&&(t=qt(n,t-1)),t+1}function Qn(n){let e=Zn(n);if(e==null)return null;let t=Jn(n,e-1),i=n[t];if(i!=="+"&&i!=="-")return null;let r=n.slice(0,t).trim();if(!Xt.test(r))return null;let o=Number(n.slice(e));return Number.isFinite(o)?{refId:r,operator:i,magnitude:o}:null}function pe(n){let e=(n??"").trim();if(!e)return null;let t=M(e);if(t!=null)return{kind:"absolute",value:t};if(Xt.test(e))return{kind:"reference",refId:e,offset:0};let i=Qn(e);return i?{kind:"reference",refId:i.refId,offset:i.operator==="-"?-i.magnitude:i.magnitude}:null}function T(n,e,t,i){n.push({code:e,attribute:t,value:i})}function ei(n,e,t,i){if(e==null||e.trim()==="")return t.defaultStart===void 0?0:t.defaultStart;if(!n)return T(i,"invalid-start",_.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)?(T(i,"unresolved-start-reference",_.start,e),null):Math.max(0,r+n.offset)}var ti=1e-9;function ni(n,e){return Math.abs(n-e)<=ti}function ii(n,e,t){let i=M(n);if(i==null){T(t,"deprecated-end",_.derivedEnd,n),T(t,"invalid-end",_.derivedEnd,n);return}if(e==null){T(t,"deprecated-end",_.derivedEnd,n);return}ni(i,e)||(T(t,"deprecated-end",_.derivedEnd,n),T(t,"conflicting-end",_.derivedEnd,n))}function ri(n,e,t){let i=M(n);return i==null||i<0?(T(t,"invalid-duration",_.duration,n),{duration:null,end:null,durationSource:"invalid"}):{duration:i,end:e==null?null:e+i,durationSource:"duration"}}function oi(n,e,t){T(t,"deprecated-end",_.derivedEnd,n);let i=M(n);return i==null?(T(t,"invalid-end",_.derivedEnd,n),{duration:null,end:null,durationSource:"invalid"}):e==null?{duration:null,end:i,durationSource:"legacy-end"}:i<e?(T(t,"end-before-start",_.derivedEnd,n),{duration:null,end:null,durationSource:"invalid"}):{duration:i-e,end:i,durationSource:"legacy-end"}}function ai(n,e,t){let i=n.getAttribute(_.duration),r=n.getAttribute(_.derivedEnd);if(i==null)return r==null?{duration:null,end:null,durationSource:"missing"}:oi(r,e,t);let o=ri(i,e,t);return r!=null&&ii(r,o.end,t),o}function Yt(n,e,t,i){let r=M(n);return r==null||!Number.isInteger(r)?(T(i,"invalid-track-index",e,n),{trackIndex:0,trackSource:"invalid"}):{trackIndex:r,trackSource:t}}function si(n,e){let t=n.getAttribute(_.trackIndex),i=n.getAttribute(_.legacyTrack);if(t==null&&i==null)return{trackIndex:0,trackSource:"default"};if(t==null&&i!=null)return T(e,"deprecated-layer",_.legacyTrack,i),Yt(i,_.legacyTrack,"legacy-layer",e);let r=Yt(t??"",_.trackIndex,"track-index",e);if(i==null)return r;T(e,"deprecated-layer",_.legacyTrack,i);let o=M(i);return o!=null&&o!==r.trackIndex&&T(e,"conflicting-layer",_.legacyTrack,i),r}function Fe(n,e={}){let t=[],i=n.getAttribute(_.start),r=pe(i),o=ei(r,i,e,t),a=ai(n,o,t),s=si(n,t);return{startExpression:r,start:o,...a,...s,diagnostics:t}}function j(n){return M(n)}function fe(n){return It(e=>n.getAttribute(e),C(n)?n.defaultPlaybackRate:1)}function Ve(n){return Bt(n.getAttribute("data-automation"),fe(n))}function Jt(n){return Mt(e=>n.getAttribute(e))}function q(n,e){return ui(e,Jt(n),Ve(n))}function he(n,e=0){return!Oe(n)||!n.hasAttribute("data-start")&&!n.hasAttribute("data-track-index")?null:Nt({tag:"img",authoredDurationSeconds:Dt(t=>n.getAttribute(t),e),sourceDurationSeconds:null,mediaStartSeconds:0,playbackRate:1}).seconds}function ui(n,e,t){return typeof t=="number"?Ie(n,e,t):Number.isFinite(n)?Le(t,Math.max(0,n-e)):null}var Zt="data-hf-media-start-basis";function li(n){return n?.trim().toLowerCase()==="global"?"global":"local"}function di(n){return li(n.basis)==="global"?n.authoredStart:n.hostStart+n.authoredStart}function Qt(n){return n.hasAutoStart||n.authoredStart==null||n.hostStart<=0?n.ordinaryStart():di({authoredStart:n.authoredStart,hostStart:n.hostStart,basis:n.basis})}function be(n){let e=n.timelineRegistry??{},t=n.includeAuthoredTimingAttrs??!1,i=n.documentRef??document,r=new WeakMap,o=new WeakMap,a=new Set,s=m=>{let f=i.getElementById(m);return f||(i.querySelector(`[data-composition-id="${CSS.escape(m)}"]`)??null)},u=m=>{let f=o.get(m);if(f!==void 0)return f;let h=null,b=se({start:0,duration:m.getAttribute("data-duration"),authoredDuration:t?m.getAttribute("data-hf-authored-duration"):null});if(b?.duration!=null&&b.duration>0&&(h=b.duration),h==null||h<=0){let y=c(m,0),S=se({start:y,end:m.getAttribute("data-end"),authoredEnd:t?m.getAttribute("data-hf-authored-end"):null});S?.duration!=null&&S.duration>0&&(h=S.duration)}if((h==null||h<=0)&&C(m)&&(h=q(m,m.duration)),(h==null||h<=0)&&(h=he(m)),h==null||h<=0){let y=m.getAttribute("data-composition-id");if(y){let S=e[y]??null;if(S&&typeof S.duration=="function")try{let v=Number(S.duration());Number.isFinite(v)&&v>0&&(h=v)}catch(v){H("runtime.startResolver.site1",v)}}}return h!=null&&Number.isFinite(h)&&h>0?(o.set(m,h),h):(o.set(m,null),null)},l=(m,f)=>{if(m.hasAttribute("data-composition-id")){let b=m.parentElement?.closest("[data-composition-id]");return b?c(b,f):0}let h=m.closest("[data-composition-id]");return h?c(h,f):0},c=(m,f)=>{let h=r.get(m);if(h!==void 0)return h??f;if(a.has(m))return f;a.add(m);try{let b=pe(m.getAttribute("data-start"));if(!b){if(m.hasAttribute("data-composition-id")){let A=m.parentElement;if(A&&(A.hasAttribute("data-composition-src")||A.hasAttribute("data-composition-id")||A.hasAttribute("data-composition-file"))){let R=c(A,f);return r.set(m,R),R}}return r.set(m,f),f}if(b.kind==="absolute"){let A=Math.max(0,b.value),R=Math.max(0,l(m,f)+A);return r.set(m,R),R}let y=s(b.refId);if(!y)return r.set(m,f),f;let S=c(y,0),v=u(y);if(v==null||v<=0){let A=Math.max(0,S+b.offset);return r.set(m,A),A}let w=Math.max(0,S+v+b.offset);return r.set(m,w),w}finally{a.delete(m)}};return{resolveStartForElement:(m,f=0)=>c(m,Math.max(0,f)),resolveDurationForElement:m=>u(m),resolveMediaStartForElement:m=>{let f=m.closest("[data-composition-id]"),h=f?c(f,0):0;return Qt({authoredStart:j(m.getAttribute("data-start")),hostStart:h,hasAutoStart:m.hasAttribute("data-hf-auto-start"),basis:m.getAttribute(Zt),ordinaryStart:()=>c(m,h)})}}}var mi=n=>4*Number.EPSILON*Math.max(1,Math.abs(n));function ge(n,e){return!Number.isFinite(n)||!Number.isFinite(e)?n===e:Math.abs(n-e)<=mi(Math.max(Math.abs(n),Math.abs(e)))}var en=(n,e)=>n>=e||ge(n,e),_e=(n,e,t)=>en(n,e)&&n<t&&!ge(n,t),pi=1e-6,Ue=(n,e,t,i)=>_e(n,e,t)||en(n,e)&&i>0&&t>=i-pi;var hi="data-fade-in",bi="data-fade-out",wo=hi.slice(5),Ro=bi.slice(5),gi=Object.freeze({fadeIn:0,fadeOut:0});var yi=["backdrop-filter","clip-path","filter","mask","mask-border-source","mask-image","perspective","rotate","scale","transform","translate","-webkit-mask-image"],la=new Set([...yi,"contain","isolation","mask-border","mix-blend-mode","opacity"]);function vi(n){return Number.isFinite(n)&&n>0?n:30}function Ai(n){return Number.isFinite(n)&&n>0?n:0}function tn(n,e){let t=vi(e),i=Ai(n),r=i*t,o=Math.round(r);return Math.abs(r-o)<=.001?o/t:i}function nn(n,e,t){return{start:tn(n,t),end:Number.isFinite(e)?tn(e,t):e}}var Ei=["seconds-time","rational-fps","seek-keep-playing","composition-manifest-v1","runtime-data"];function Si(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 Ti(n){let e=Number.isFinite(n)&&n>0?n:30,t=Number.isInteger(e)?1:1e6,i=Math.round(e*t),r=Si(i,t);return{numerator:i/r,denominator:t/r}}function xi(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 He(n){return{protocolVersion:1,capabilities:Ei,fps:Ti(n)}}function wi(n){return Array.isArray(n)&&n.every(e=>typeof e=="string")}function rn(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=xi(t.fps);return i===null||!wi(t.capabilities)?{status:"unsupported",code:"invalid_protocol_metadata",receivedVersion:t.protocolVersion}:{status:"supported",fps:i,metadata:t}}function on(n,e){let t=n.tagName.toLowerCase();if(t==="script"||t==="style"||t==="link"||t==="meta")return!1;let r=t==="video"||t==="audio"?e.resolver.resolveMediaStartForElement(n):e.resolver.resolveStartForElement(n,0),o=e.resolver.resolveDurationForElement(n),a=n.getAttribute("data-composition-id");if(a){let l=e.timelineRegistry[a],c=l&&typeof l.duration=="function"?Number(l.duration()):null;!(n.hasAttribute("data-duration")||n.hasAttribute("data-end")||n.hasAttribute(wt)||n.hasAttribute(Rt))&&(o==null||o<=0)&&c!=null&&Number.isFinite(c)&&c>0&&(o=c)}let s=o!=null&&o>0?r+o:Number.POSITIVE_INFINITY,u=e.exportRenderSeek?nn(r,s,e.canonicalFps):{start:r,end:s};return Ue(e.currentTime,u.start,u.end,e.compositionDuration)}var Y="first-frame",Ri=3;function X(n){let e=n.ownerDocument?.defaultView;return e&&n instanceof e.Element?!0:n instanceof Element}function x(n){if(!X(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 ki(n){return n.hasAttribute("data-start")||n.hasAttribute("data-track-index")}function Mi(n,e,t){let i=n;for(;i;){if(ki(i)&&!on(i,{currentTime:0,compositionDuration:Number.POSITIVE_INFINITY,canonicalFps:30,exportRenderSeek:!1,timelineRegistry:t,resolver:e}))return!1;i=i.parentElement}return!0}function an(n,e,t,i){return e==="all"?!0:Mi(n,t,i)}function ye(n,{scope:e="all"}={}){let t=n.defaultView,i=be({documentRef:n,timelineRegistry:t?.__timelines,includeAuthoredTimingAttrs:!0}),r=Array.from(n.querySelectorAll("video, audio")).filter(x).filter(s=>an(s,e,i,t?.__timelines??{})).filter(s=>s.readyState<Ri),o=Array.from(n.querySelectorAll("img")).filter(s=>an(s,s.getAttribute("loading")?.toLowerCase()==="lazy"?Y:e,i,t?.__timelines??{})).filter(s=>!s.complete),a=n.fonts?.status==="loading";return{pendingMedia:r,pendingImages:o,fontsLoading:a}}function Ii(n,{pendingMedia:e,pendingImages:t,fontsLoading:i},r){let o=e.map(u=>new Promise(l=>{if(u.error){l();return}let c=()=>{u.removeEventListener("canplay",c),u.removeEventListener("error",c),r.removeEventListener("abort",c),l()};u.addEventListener("canplay",c),u.addEventListener("error",c),r.addEventListener("abort",c,{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 Ci(n,e,{scope:t="all"}={}){let i=ye(n,{scope:t});return i.pendingMedia.length===0&&i.pendingImages.length===0&&!i.fontsLoading?null:Ii(n,i,e)}var Di=50;function Ni(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,Di)};a()})}var Li=50,Pi=2,Oi=1500;function We(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 Fi(n,e){let t=n.defaultView;return t?(async()=>{let i=await We(t,e);if(e.aborted)return;let r=await We(t,e),o=0;for(;!e.aborted&&o<Pi;){if(r-i>=Oi)return;let a=await We(t,e);if(e.aborted)return;o=a-r<Li?o+1:0,r=a}})():null}var Vi=8e3;function Ui(n,e,t={}){let i=t.inputs??[(l,c)=>Ci(l,c,{scope:t.scope}),Ni,Fi],r=new AbortController,o=i.map(l=>l(n,r.signal)).filter(l=>l!==null);if(o.length===0){e({timedOut:!1});return}let a=t.timeoutMs??Vi,s,u=new Promise(l=>{s=setTimeout(()=>l("timed-out"),a)});Promise.race([Promise.all(o).then(()=>"done"),u]).then(l=>{clearTimeout(s),r.abort(),e({timedOut:l==="timed-out"})})}function sn(n,e,t={}){Ui(n,e,{...t,scope:Y})}var Hi=.05,Wi=2,ve=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=Fe(e.source);e.start=t.start??0,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)}_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(),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 t of this._entries)this._refreshEntryBounds(t),this._inWindow(t,e)&&(t.el.currentTime=e-t.start)}scrubAll(e){for(let t of this._entries)this._refreshEntryBounds(t),this._inWindow(t,e)?(t.el.currentTime=e-t.start,this._playEntry(t)):t.el.paused||t.el.pause()}mirrorTime(e,t){let i=t?.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)>Hi?(r.driftSamples+=1,(i||r.driftSamples>=Wi)&&(r.el.currentTime=o,r.driftSamples=0)):r.driftSamples=0}}promoteToParentProxy(e,t){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();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)x(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(this._urlTaken(e))return null;let a=t==="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 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")return;let t=this._resolveIframeMediaSrc(e);if(!t)return;let i=Fe(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,t){return this._entries.some(i=>i===t||i.source&&!i.source.isConnected?!1:(i.source&&this._resolveIframeMediaSrc(i.source)||i.el.src)===e)}_repointToSource(e){let t=e.source?this._resolveIframeMediaSrc(e.source):null;return!t||e.el.src===t?!1:this._urlTaken(t,e)?(this._removeEntry(e),!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;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);continue}for(let s of a.addedNodes){if(!X(s))continue;let u=[];x(s)&&s.matches("audio[data-start], video[data-start]")&&u.push(s);let l=s.querySelectorAll("audio[data-start], video[data-start]");for(let c of l)x(c)&&u.push(c);for(let c of u)this._adoptIframeMedia(c)}for(let s of a.removedNodes){if(!X(s))continue;let u=[];x(s)&&s.matches("audio[data-start], video[data-start]")&&u.push(s);let l=s.querySelectorAll("audio[data-start], video[data-start]");for(let c of l)x(c)&&u.push(c);for(let c of u)this._detachIframeMedia(c)}}}),i={childList:!0,subtree:!0,attributes:!0,attributeFilter:["preload","src"]},r=Tt(e);for(let o of r)t.observe(o,i);this._mediaObserver=t}};function Gi(n,e){return typeof n.currentTime=="number"&&Number.isFinite(n.currentTime)?n.currentTime:(n.frame??0)/e}function $i(n,e,t){return t<=0?!1:n.ended===!0?!0:n.ended===!1&&!n.isPlaying?!1:e>=t}function un(n,e,t,i){let r=Gi(n,e),o=$i(n,r,t.duration),a=t.duration>0?Math.min(r,t.duration):r,s=o?t.duration:a,u=!t.paused,l=!n.isPlaying,c=o&&(u||n.isPlaying);if(c&&i.getLoop())return i.media.audioOwner==="parent"&&i.media.pauseAll(),i.seek(0),i.play(),{...t,currentTime:0,paused:!1};let g={...t,currentTime:s,paused:l};i.media.audioOwner==="parent"&&(u&&l?i.media.pauseAll():!u&&!l&&i.media.playAll(),i.media.mirrorTime(s));let m=performance.now(),f=l!==t.paused;return(m-t.lastUpdateMs>100||f)&&(g.lastUpdateMs=m,i.updateControlsTime(s,t.duration),i.updateControlsPlaying(!l),i.dispatchEvent(new CustomEvent("timeupdate",{detail:{currentTime:s}}))),c&&(i.media.audioOwner==="parent"&&i.media.pauseAll(),g.paused=!0,i.updateControlsPlaying(!1),i.dispatchEvent(new Event("ended"))),g}function Bi(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 ln(n,e,t){if(n.source!==e)return;let i=n.data;if(!i||i.source!=="hf-preview")return;let r=rn(i);if(r.status==="unsupported"){t.dispatchEvent(new CustomEvent("runtimeprotocolerror",{detail:{code:r.code,receivedVersion:r.receivedVersion}}));return}if(t.setRuntimeFps?.(r.fps),i.type==="shader-transition-state"){let o=i.state&&typeof i.state=="object"?i.state:{};t.shaderLoader.update(o,t.getShaderLoadingMode()),t.dispatchEvent(new CustomEvent("shadertransitionstate",{detail:{compositionId:i.compositionId,state:o}}));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(un({frame:i.frame??0,currentTime:i.currentTime,ended:typeof i.ended=="boolean"?i.ended:void 0,isPlaying:!!i.isPlaying},r.fps,t.getPlaybackState(),t));return}if(i.type==="media-autoplay-blocked"){if(t.shouldPromoteMediaAutoplayFallback?.()===!1)return;let o=null;try{o=t.getIframeDoc()}catch{}t.media.promoteToParentProxy(o,(a,s)=>t.media.mirrorTime(a,s)),t.sendControl("set-media-output-muted",{muted:!0});return}if(i.type==="timeline"&&i.durationInFrames>0){let o=Number(i.durationSeconds),a=Number(i.durationInFrames),s=Number.isFinite(o)&&o>0?o:a/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(s)&&s>0){let u=t.getPlaybackState();t.setPlaybackState({...u,duration:s}),t.updateControlsTime(u.currentTime,s),t.onRuntimeTimelineReady(s,typeof i.assetsReady=="boolean"?i.assetsReady:void 0)}t.setScenes(Bi(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 zi(n,e){return n.includes(e)?!0:/hyperframe\.runtime\.iife\.js|__hyperframes\s*=/.test(n)}var ji=new Set([">"," "," ",`
|
|
473
|
-
`,"\r","\f"]);function Ge(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(ji.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 dn(n,e){if(!n||zi(n,e))return n;let t=`<script src="${e}"></script>`,i=Ge(n,"head");if(i)return n.slice(0,i.end)+t+n.slice(i.end);let r=Ge(n,"body");if(r)return n.slice(0,r.index)+t+n.slice(r.index);let o=Ge(n,"html");return o?n.slice(0,o.end)+t+n.slice(o.end):t+n}var D="shader-capture-scale",O="shader-loading",Ae="runtime-src",cn="__hf_shader_capture_scale",mn="__hf_shader_loading",F=["Preparing scene transitions","Sampling outgoing scene motion","Sampling incoming scene motion","Caching transition frames","Finalizing transition preview"];function $e(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 qi(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 pn(n,e){return n.filter(t=>t!==""&&t.split("=")[0]!==e)}function Yi(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):"",l=pn(u.split("&"),cn);l=pn(l,mn),e!==null&&l.push(`${cn}=${encodeURIComponent(e)}`),t!=="composition"&&l.push(`${mn}=${encodeURIComponent(t)}`);let c=l.join("&");return`${s}${c?`?${c}`:""}${o}`}function Xi(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 K(n){return qi(n.getAttribute(O))}function fn(n){return Number($e(n.getAttribute(D))??"1")}function hn(n,e){return Yi(e,$e(n.getAttribute(D)),K(n))}function J(n,e){return dn(Xi(e,$e(n.getAttribute(D)),K(n)),Ki(n))}function Ki(n){let e=n.getAttribute(Ae)?.trim();if(!e)return L;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:L}catch{return L}}function bn(){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=f=>{f.preventDefault(),f.stopPropagation()};for(let f of["selectstart","dragstart","pointerdown","mousedown","click","dblclick","contextmenu","touchstart"])n.addEventListener(f,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=F[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 l=document.createElement("div");l.className="hfp-shader-loader-progress";let c=f=>{let h=document.createElement("div");h.className="hfp-shader-loader-row";let b=document.createElement("span");b.className="hfp-shader-loader-label",b.textContent=f;let y=document.createElement("span");return y.className="hfp-shader-loader-value",h.appendChild(b),h.appendChild(y),l.appendChild(h),{row:h,label:b,value:y}},g=c("transition"),m=c("transition frame");return t.appendChild(i),t.appendChild(r),t.appendChild(a),t.appendChild(s),t.appendChild(l),n.appendChild(t),{root:n,fill:u,title:o,detail:a,transitionValue:g.value,transitionRow:g.row,frameLabel:m.label,frameValue:m.value,frameRow:m.row}}var Ji=420;function Ee(n,e,t){e.textContent=t,n.style.visibility=t?"visible":"hidden"}var Se=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)",Ee(this._el.transitionRow,this._el.transitionValue,""),Ee(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(F.length-1,Math.floor(a*F.length));this._el.title.textContent=F[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}`:"",l=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",Ee(this._el.transitionRow,this._el.transitionValue,u),Ee(this._el.frameRow,this._el.frameValue,l),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()},Ji)}};function gn(n){return n?.trim().toLowerCase().startsWith("video/")??!1}function _n(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("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=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 Zi=.1,Qi=5,Be="sandbox-origin",yn=1e4,ze=8e3,je="assets-loading",Z="assets-loading-ui",qe="low-power-idle",vn="disable-click-to-play",er=150;function Ye(n){return!Number.isFinite(n)||n<=0?1:Math.max(Zi,Math.min(Qi,n))}var Xe=class extends HTMLElement{static get observedAttributes(){return["src","srcdoc","width","height","controls","muted","audio-locked","volume","poster","playback-rate","audio-src","type",Be,Ae,D,O,Z,qe]}shadow;container;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;constructor(){super(),this.shadow=this.attachShadow({mode:"open"}),At(this.shadow,pt),{container:this.container,iframe:this.iframe}=Et(),this.shadow.appendChild(this.container);let e=bn();this.shadow.appendChild(e.root),this.shaderLoader=new Se(e),this._media=new ve({dispatchEvent:t=>this._emit(t),getMuted:()=>this.muted,getVolume:()=>this._volume,getPlaybackRate:()=>this.playbackRate,getCurrentTime:()=>this._currentTime,isPaused:()=>this._paused}),this._directTimelineClock=new ae({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(0),this.play()},onPaused:()=>{this._media.audioOwner==="parent"&&this._media.pauseAll(),this._paused=!0,this.controlsApi?.updatePlaying(!1),this._emit(new Event("ended"))},onEnded:()=>this.loop}),this.probe=new ie(this.iframe,{onReady:t=>this._onProbeReady(t),onError:t=>this._emit(new CustomEvent("error",{detail:{message:t}}))}),this.addEventListener("click",t=>{this.disableClickToPlay||vt(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=Re(this.shadow,this.getAttribute("poster"),this.posterEl)),this.hasAttribute("audio-src")&&this._media.setupFromUrl(this.getAttribute("audio-src")),this.hasAttribute("srcdoc")&&(this.iframe.srcdoc=J(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=J(this,i);else{this.iframe.removeAttribute("srcdoc");let r=this.getAttribute("src");r!==null&&this._wantsVideo()&&this._navigateSrc(r)}break;case Be:this._applySandboxOriginPolicy(this.isConnected&&t!==i);break;case"width":this._setCompositionSize(U(i)??1920,this._compositionHeight);break;case"height":this._setCompositionSize(this._compositionWidth,U(i)??1080);break;case"controls":i!==null?this._setupControls():(this.controlsApi?.destroy(),this.controlsApi=null);break;case"poster":this.posterEl=Re(this.shadow,i,this.posterEl);break;case"playback-rate":{let r=Ye(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 Z:i==="none"&&this.shaderLoader.hideAssetsLoading();break;case qe:this._sendControl("set-idle-heartbeat",{slow:i!==null});break;case D:case O:case Ae:if(!this.isConnected)break;this._reloadShaderOptions();break}}_applySandboxOriginPolicy(e=!1){this.hasAttribute(Be)?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=J(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(){if(this._ready&&!this._assetsReady){this._pendingPlay=!0;return}this._pendingPlay=!1,this.posterEl?.remove(),this.posterEl=null,this._duration>0&&this._currentTime>=this._duration&&this.seek(0),this._paused=!1;let e=this._tryDirectTimelinePlay(),t=!1;e||(this._sendControl("play"),this._ready&&!this._directTimelineAdapter?this._startParentTickClock():this._ready||(this._pendingPlay=!0,t=!0)),this._media.audioOwner==="parent"&&this._media.playAll(),this.controlsApi?.updatePlaying(!0),t||this._emit(new Event("play")),e&&this._directTimelineAdapter&&this._directTimelineClock.start(this._directTimelineAdapter,()=>this._currentTime,()=>this._duration,()=>this._paused)}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 Ye(parseFloat(this.getAttribute("playback-rate")||"1"))}set playbackRate(e){this.setAttribute("playback-rate",String(Ye(e)))}get shaderCaptureScale(){return fn(this)}set shaderCaptureScale(e){this.setAttribute(D,String(e))}get shaderLoading(){return K(this)}set shaderLoading(e){e==="composition"?this.removeAttribute(O):this.setAttribute(O,e)}get assetsLoadingUi(){return this.getAttribute(Z)==="none"?"none":"player"}set assetsLoadingUi(e){e==="none"?this.setAttribute(Z,"none"):this.removeAttribute(Z)}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(vn)}set disableClickToPlay(e){this.toggleAttribute(vn,e)}get loop(){return this.hasAttribute("loop")}set loop(e){e?this.setAttribute("loop",""):this.removeAttribute("loop")}_sendControl(e,t={}){try{let i=this.iframe.contentWindow;return i?(i.postMessage({...t,source:"hf-parent",type:"control",action:e,...He(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 ${yn}ms`)},yn);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"))x(i)&&(i.muted=e||i.defaultMuted)}_stopIframeMedia(){let e=this._getSameOriginIframeDocument();if(e)for(let t of e.querySelectorAll("video, audio"))x(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(qe)})}_reloadShaderOptions(){if(!this._videoSource){if(this._abandonComposition("Shader options changed before runtime data was applied"),this.hasAttribute("srcdoc")){this.iframe.srcdoc=J(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 gn(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=hn(this,e)}_loadVideo(e){this._videoSource||(this._videoSource=_n({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()},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._applyThenEmit(()=>this._handleRuntimeMessage(e))}_handleRuntimeMessage(e){ln(e,this.iframe.contentWindow,{getPlaybackState:()=>({currentTime:this._currentTime,duration:this._duration,paused:this._paused,lastUpdateMs:this._lastUpdateMs}),setPlaybackState:({currentTime:t,duration:i,paused:r,lastUpdateMs:o})=>{this._currentTime=t,this._setDuration(i),this._paused=r,this._lastUpdateMs=o},getShaderLoadingMode:()=>K(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._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},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,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),ze)):this._settleAssetsReady(i);return}sn(e,({timedOut:r})=>{i===this._assetsGeneration&&(r&&this._warnStuckAssets(e),this._settleAssetsReady(i))},{timeoutMs:ze}),this._assetsReady||this._startAssetsLoadingOverlayTimer(i)}_startAssetsLoadingOverlayTimer(e){this._assetsLoadingShowTimer=setTimeout(()=>{this._assetsLoadingShowTimer=null,!(e!==this._assetsGeneration||this._assetsReady)&&(this.setAttribute(je,""),this.assetsLoadingUi!=="none"&&this.shaderLoader.showAssetsLoading())},er)}_hasPendingFirstFrameAssets(e){let{pendingMedia:t,pendingImages:i,fontsLoading:r}=ye(e,{scope:Y});return t.length>0||i.length>0||r}_warnStuckAssets(e){let{pendingMedia:t,pendingImages:i,fontsLoading:r}=ye(e,{scope:Y}),o=e.defaultView;console.warn(`[hyperframes-player] assets-loading timed out after ${ze}ms \u2014 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(je),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._ready=!1,this._readyDocument=null,this._invalidateAssetsWait(),this._releaseDocument(),this._runtimeBridgeReady=!1,this._rejectAllRuntimeDataDeliveries(e)}_releaseDocument(){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(je),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()}_setDuration(e){e!==this._duration&&(this._duration=e,this._ready&&this._emit(new CustomEvent("durationchange",{detail:{duration:e}})))}_setCompositionSize(e,t){let i=e!==this._compositionWidth||t!==this._compositionHeight;if(this._compositionWidth=e,this._compositionHeight=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(){!St(this,this.iframe,this._compositionWidth,this._compositionHeight)&&this._ready&&!this._rescaleWarned&&(this._rescaleWarned=!0,console.warn("[hyperframes-player] rescale no-op after ready \u2014 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=yt(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()))}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",Xe);export{Xe as HyperframesPlayer,gt as SPEED_PRESETS,re as formatSpeed,we as formatTime};
|
|
472
|
+
`,yt='<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>',vt='<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>',xe='<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>',ke='<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>',At='<svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor"><path d="M3 9v6h4l5 5V4L7 9H3z"/><path d="M16.5 12c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02z" opacity="0.3"/><line x1="18" y1="7" x2="14" y2="17" stroke="currentColor" stroke-width="2"/></svg>';var St=[.25,.5,1,1.5,2,4];function se(n){return Number.isInteger(n)?`${n}x`:`${n}x`}function Me(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 Et(n,e,t={}){let i=t.speedPresets??St,r=document.createElement("div");r.className="hfp-controls",r.addEventListener("click",m=>{m.stopPropagation()});let o=document.createElement("button");o.className="hfp-play-btn",o.type="button",o.innerHTML=`<span class="hfp-ico hfp-ico-play">${yt}</span><span class="hfp-ico hfp-ico-pause">${vt}</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 l=document.createElement("button");l.className="hfp-speed-btn",l.type="button",l.textContent="1x",l.setAttribute("aria-label","Playback speed");let g=document.createElement("div");g.className="hfp-speed-menu",g.setAttribute("role","menu");for(let m of i){let p=document.createElement("button");p.className="hfp-speed-option",p.type="button",p.setAttribute("role","menuitem"),p.dataset.speed=String(m),p.textContent=se(m),m===1&&p.classList.add("hfp-active"),g.appendChild(p)}d.appendChild(g),d.appendChild(l);let c=document.createElement("div");c.className="hfp-volume-wrap";let f=document.createElement("button");f.className="hfp-mute-btn",f.type="button",f.innerHTML=xe,f.setAttribute("aria-label","Mute");let h=document.createElement("div");h.className="hfp-volume-slider-wrap";let b=document.createElement("div");b.className="hfp-volume-slider",b.setAttribute("role","slider"),b.setAttribute("aria-label","Volume"),b.setAttribute("aria-valuemin","0"),b.setAttribute("aria-valuemax","100"),b.setAttribute("aria-valuenow","100"),b.tabIndex=0;let y=document.createElement("div");y.className="hfp-volume-fill",y.style.width="100%",b.appendChild(y),h.appendChild(b),c.appendChild(h),c.appendChild(f),t.audioLocked&&(c.style.display="none"),r.appendChild(o),r.appendChild(a),r.appendChild(u),r.appendChild(c),r.appendChild(d),n.appendChild(r);let v=!1,A=!1,w=1,S=null,x=i.indexOf(1);x===-1&&(x=0);let ne=(m,p)=>m?At:p===0?ke:p<.5?ke:xe;o.addEventListener("click",m=>{m.stopPropagation(),v?e.onPause():e.onPlay()}),f.addEventListener("click",m=>{m.stopPropagation(),e.onMuteToggle()});let N=!1,ie=m=>{let p=b.getBoundingClientRect(),E=Math.max(0,Math.min(1,(m-p.left)/p.width));w=E,y.style.width=`${E*100}%`,b.setAttribute("aria-valuenow",String(Math.round(E*100))),A&&E>0&&e.onMuteToggle(),f.innerHTML=ne(A,E),e.onVolumeChange(E)};b.addEventListener("mousedown",m=>{m.stopPropagation(),N=!0,ie(m.clientX)});let tt=m=>{N&&ie(m.clientX)},nt=()=>{N=!1};document.addEventListener("mousemove",tt),document.addEventListener("mouseup",nt),b.addEventListener("touchstart",m=>{N=!0;let p=m.touches[0];p&&ie(p.clientX)},{passive:!0});let it=m=>{if(N){let p=m.touches[0];p&&ie(p.clientX)}},rt=()=>{N=!1};document.addEventListener("touchmove",it,{passive:!0}),document.addEventListener("touchend",rt);let ot=.05;b.addEventListener("keydown",m=>{let p=w;if(m.key==="ArrowRight"||m.key==="ArrowUp")p=Math.min(1,w+ot);else if(m.key==="ArrowLeft"||m.key==="ArrowDown")p=Math.max(0,w-ot);else return;m.preventDefault(),m.stopPropagation(),w=p,y.style.width=`${p*100}%`,b.setAttribute("aria-valuenow",String(Math.round(p*100))),A&&p>0&&e.onMuteToggle(),f.innerHTML=ne(A,p),e.onVolumeChange(p)});let at=m=>{for(let p of g.querySelectorAll(".hfp-speed-option"))p.classList.toggle("hfp-active",p.dataset.speed===String(m))};l.addEventListener("click",m=>{m.stopPropagation();let p=g.classList.toggle("hfp-open");l.setAttribute("aria-expanded",String(p))}),g.addEventListener("click",m=>{m.stopPropagation();let p=m.target.closest(".hfp-speed-option");if(!p)return;let E=parseFloat(p.dataset.speed);x=i.indexOf(E),l.textContent=se(E),at(E),g.classList.remove("hfp-open"),l.setAttribute("aria-expanded","false"),e.onSpeedChange(E)});let st=()=>{g.classList.remove("hfp-open"),l.setAttribute("aria-expanded","false")};document.addEventListener("click",st);let re=m=>{let p=a.getBoundingClientRect(),E=Math.max(0,Math.min(1,(m-p.left)/p.width));e.onSeek(E)},I=!1;a.addEventListener("mousedown",m=>{m.stopPropagation(),I=!0,e.onScrubStart?.(),re(m.clientX)});let ut=m=>{I&&re(m.clientX)},lt=()=>{I&&(I=!1,e.onScrubEnd?.())};document.addEventListener("mousemove",ut),document.addEventListener("mouseup",lt),a.addEventListener("touchstart",m=>{I=!0,e.onScrubStart?.();let p=m.touches[0];p&&re(p.clientX)},{passive:!0});let dt=m=>{if(I){let p=m.touches[0];p&&re(p.clientX)}},ct=()=>{I&&(I=!1,e.onScrubEnd?.())};document.addEventListener("touchmove",dt,{passive:!0}),document.addEventListener("touchend",ct);let mt=()=>{S&&clearTimeout(S),S=setTimeout(()=>{v&&r.classList.add("hfp-hidden")},3e3)},oe=n instanceof ShadowRoot?n.host:n,pt=()=>{r.classList.remove("hfp-hidden"),mt()},ft=()=>{v&&r.classList.add("hfp-hidden")};return oe.addEventListener("mousemove",pt),oe.addEventListener("mouseleave",ft),{updateTime(m,p){let E=p>0?Math.min(m,p):m,kn=p>0?E/p*100:0;s.style.width=`${kn}%`,u.textContent=`${Me(E)} / ${Me(p)}`},updatePlaying(m){v=m,o.classList.toggle("hfp-playing",m),o.setAttribute("aria-label",m?"Pause":"Play"),m?mt():r.classList.remove("hfp-hidden")},updateSpeed(m){let p=i.indexOf(m);p!==-1&&(x=p),l.textContent=se(m),at(m)},updateMuted(m){A=m,f.innerHTML=ne(m,w),f.setAttribute("aria-label",m?"Unmute":"Mute")},updateVolume(m){w=m,y.style.width=`${m*100}%`,b.setAttribute("aria-valuenow",String(Math.round(m*100))),f.innerHTML=ne(A,m)},setVolumeControlsHidden(m){c.style.display=m?"none":""},show(){r.style.display=""},hide(){r.style.display="none"},destroy(){document.removeEventListener("mousemove",ut),document.removeEventListener("mouseup",lt),document.removeEventListener("touchmove",dt),document.removeEventListener("touchend",ct),document.removeEventListener("mousemove",tt),document.removeEventListener("mouseup",nt),document.removeEventListener("touchmove",it),document.removeEventListener("touchend",rt),document.removeEventListener("click",st),oe.removeEventListener("mousemove",pt),oe.removeEventListener("mouseleave",ft),S&&clearTimeout(S),r.remove()}}}function Tt(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=Et(n,r,s);return u.updateMuted(e),u.updateVolume(t),u}function Ie(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 Rt(n){return n.composedPath().some(e=>e instanceof HTMLElement&&e.classList.contains("hfp-controls"))}var ue=null;function wt(n,e){if(typeof CSSStyleSheet<"u")try{ue||(ue=new CSSStyleSheet,ue.replaceSync(e)),n.adoptedStyleSheets=[ue];return}catch{}let t=document.createElement("style");t.textContent=e,n.appendChild(t)}function xt(){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 kt(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 In(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 le=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 l;try{l=e.time()}catch{this._raf=null;return}let g=i(),c=o();c.end>0&&(l=Math.min(l,c.end));let f=a===null?0:l-a;f!==0&&(u=Math.min(f,s),s=f),a=l;let h=In(l,u,c);h&&(l=c.shown);let b=performance.now();if((b-this._lastUpdateMs>100||h)&&(this._lastUpdateMs=b,this._callbacks.onTimeUpdate(l,g)),h){if(this._callbacks.getLoop()){this._callbacks.restart();return}try{e.pause(),c.shown<c.end&&e.seek(c.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 Mt(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)Dn(i)||t.push(i);return Cn(n),t}function Cn(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 Dn(n){let e=n.parentElement;for(;e;){if(e.hasAttribute("data-composition-id"))return!0;e=e.parentElement}return!1}function It(){return globalThis}function H(n,e){if(typeof window>"u")return;let t=It(),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 Ct="data-hf-authored-duration",Dt="data-hf-authored-end";function W(n){if(n==null||typeof n=="string"&&n.trim()==="")return null;let e=typeof n=="number"?n:Number(n);return Number.isFinite(e)?e:null}function de(n){let e=W(n.start);if(e==null)return null;let t=Math.max(0,e),i=W(n.duration),r=W(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=W(n.end),s=W(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 L=Object.freeze({start:"data-start",duration:"data-duration",trackIndex:"data-track-index",derivedEnd:"data-end",legacyTrack:"data-layer"}),Cr=Object.freeze([L.start,L.duration,L.trackIndex]),Dr=Object.freeze([L.derivedEnd]),Nr=Object.freeze([L.derivedEnd,L.legacyTrack]);function Ce(n){if(n==null||n.trim()==="")return null;let e=Number(n);return Number.isFinite(e)?e:null}var Nt=n=>{let e=Ce(n);return e!==null&&e>=0?e:null};function Pt(n){return Nt(n("data-playback-start"))??Nt(n("data-media-start"))??0}var G=.1,B=10;function De(n){return Number.isFinite(n)&&n>0?Math.max(G,Math.min(B,n)):1}function Lt(n,e=1){let t=Number.parseFloat(n("data-playback-rate")??"");return De(Number.isFinite(t)&&t>0?t:e)}function Ot(n){let e=Ce(n("data-duration"));return e!==null&&e>0?e:null}function Ft(n,e){let t=Ot(n);if(t!==null)return t;let i=Ce(n("data-end"));return i!==null?i-e:null}var Nn=3;function Ne(n,e,t){return Number.isFinite(n)?Math.max(0,n-e)/De(t):null}function Vt(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:Nn,source:"default"};if(i===null)return{seconds:null,source:"pending",reason:"source duration not yet probed"};let a=Ne(i,r,o);return a===null?{seconds:null,source:"pending",reason:"source reported a non-finite duration"}:{seconds:a,source:"media"}}var Ht="data-fx-chain",Lr=Ht.slice(5);var $=(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}),Pe=(n=.707,e="Bandwidth \u2014 higher is narrower.")=>({kind:"number",key:"q",label:"Q",unit:"",min:.1,max:20,step:.01,default:n,scale:"log",automatable:!0,hint:e}),ce=(n=-40,e=40,t=0)=>({kind:"number",key:"gain",label:"Gain",unit:"dB",min:n,max:e,step:.1,default:t,automatable:!0}),Ut={kind:"enum",key:"poles",label:"Slope",options:[{value:"1",label:"6 dB/oct"},{value:"2",label:"12 dB/oct"}],default:"2",hint:"Two poles is the usual biquad; one pole is gentler."},Wt=[{id:"gain",label:"Gain",group:"dynamics",description:"Raise or lower the whole signal. Automate it to duck under something else.",params:[ce(-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:[$("frequency","Frequency",1e3),ce(-40,40,0),Pe(1)],web:"biquad-peaking"},{id:"lowshelf",label:"Low Shelf",group:"filter",description:"Lift or drop everything below the corner frequency.",params:[$("frequency","Frequency",200,20,2e3),ce(-40,40,0)],web:"biquad-lowshelf"},{id:"highshelf",label:"High Shelf",group:"filter",description:"Lift or drop everything above the corner frequency.",params:[$("frequency","Frequency",4e3,500,2e4),ce(-40,40,0)],web:"biquad-highshelf"},{id:"highpass",label:"High-pass",group:"filter",description:"Remove low frequencies \u2014 the usual fix for rumble on a voice.",params:[$("frequency","Cutoff",300,20,2e4),Pe(.707),Ut],web:"biquad-highpass"},{id:"lowpass",label:"Low-pass",group:"filter",description:"Remove high frequencies \u2014 darkens or muffles a track.",params:[$("frequency","Cutoff",8e3,100,2e4),Pe(.707),Ut],web:"biquad-lowpass"},{id:"compressor",label:"Compressor",group:"dynamics",description:"Pull loud parts down so the quiet ones can come up.",params:[{kind:"number",key:"threshold",label:"Threshold",unit:"dB",min:-60,max:0,step:.5,default:-24,hint:"Level above which the compressor starts working."},{kind:"number",key:"ratio",label:"Ratio",unit:":1",min:1,max:20,step:.1,default:4},{kind:"number",key:"attack",label:"Attack",unit:"ms",min:.01,max:2e3,step:.1,default:20,scale:"log"},{kind:"number",key:"release",label:"Release",unit:"ms",min:.01,max:9e3,step:1,default:250,scale:"log"},{kind:"number",key:"knee",label:"Knee",unit:"",min:1,max:8,step:.01,default:2.83,hint:"1 is a hard corner; higher eases into it."},{kind:"number",key:"makeup",label:"Makeup",unit:"dB",min:0,max:36,step:.1,default:0},{kind:"number",key:"mix",label:"Mix",unit:"",min:0,max:1,step:.01,default:1,hint:"Below 1 blends the dry signal back in."}],web:"worklet-compressor"},{id:"limiter",label:"Limiter",group:"dynamics",description:"Hard ceiling \u2014 nothing gets past the 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:"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 \u2014 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"}],Or=new Map(Wt.map(n=>[n.id,n]));var Fr=Wt.map(n=>n.id);function Pn(n){return 10**(n/20)}var Gt=Pn(12);var Oe="data-automation",jr=Oe.slice(5),Le=1,Ln=512,k=class extends Error{constructor(e){super(e),this.name="AudioAutomationError"}},me="volume",pe="rate";function Bt(n){if(n===me)return{kind:"volume"};if(n===pe)return{kind:"rate"};let e=n.split(".");if(e.length===3&&e[0]==="fx"&&e[1]===On){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 On="preset";var Fn={min:0,max:Gt,step:.01,unit:"",label:"Volume",scale:"linear",default:1},Vn={min:G,max:B,step:.05,unit:"x",label:"Speed",scale:"log",default:1};function z(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 Un(n){let e=z(n);return e===null||e===0?0:Math.min(1,Math.max(-1,e))}function $t(n,e){let t=z(n),i=z(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 Hn(n){let e=Un(n?.curve),t=$t(n?.viaX,n?.viaY);return{...e?{curve:e}:{},...t?{viaX:t.x,viaY:t.y}:{}}}function Wn(n,e){let t=z(n?.t),i=z(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,...Hn(n)}}function Gn(n,e){let t=n.map(r=>Wn(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,Ln)}function Bn(n){let e=[];for(let t of n.lanes){if(!Bt(t.target))continue;let i=t.target===me?Fn:t.target===pe?Vn:null,r=Gn(t.points??[],i);r.length>0&&e.push({target:t.target,points:r})}return{version:Le,lanes:e}}function zt(n){let e;try{e=JSON.parse(n)}catch(r){throw new k(`Automation is not valid JSON: ${r.message}`)}if(typeof e!="object"||e===null)throw new k("Automation must be a JSON object.");let t=e;if(t.version!==Le)throw new k(`Unsupported automation version: ${String(t.version)}`);if(!Array.isArray(t.lanes))throw new k("Automation is missing a `lanes` array.");let i=t.lanes.map((r,o)=>{if(typeof r!="object"||r===null)throw new k(`Lane ${o} is not an object.`);let a=r;if(typeof a.target!="string"||!Bt(a.target))throw new k(`Lane ${o} has an unreadable target: ${String(a.target)}`);if(!Array.isArray(a.points))throw new k(`Lane ${o} is missing a \`points\` array.`);return{target:a.target,points:a.points}});return Bn({version:Le,lanes:i})}function $n(n,e){return e?Math.pow(n,Math.pow(2,2*e)):n}function zn(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 jn(n,e,t){let{cx:i,cy:r,w:o}=zn(e,t),a=2-2*o,s=n*a-1+2*o*i,u=-n*a-2*o*i,d=qn(s,u,n),l=1-d,g=l*l+2*o*d*l+d*d;return g>0?(2*o*r*d*l+d*d)/g:n}function qn(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 Yn(n,e){let t=$t(e.viaX,e.viaY);return t?jn(Math.min(1,Math.max(0,n)),t.x,t.y):$n(n,e.curve)}function Xn(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 fe(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 g=a+s>>1;i[g].t<=e?a=g:s=g}let u=i[a],d=i[s],l=d.t-u.t;return l<=0?d.v:Xn(u.v,d.v,Yn((e-u.t)/l,u),t)}var he=new Map,Kn=64;function jt(n,e=me){let t=`${e}\0${n}`,i=he.get(t);if(i!==void 0)return i;let r=null;try{r=zt(n).lanes.find(o=>o.target===e)??null}catch{r=null}return he.size>Kn&&he.clear(),he.set(t,r),r}var qt=48,Yt=new WeakMap;function Jn(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 l=fe(n,d,"log");r.push(u),o.push(o[o.length-1]+(l+fe(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,l=e[u].t;if(!(l<=0))for(let g=1;g<=qt;g+=1)a(Math.max(d,0)+(l-d)*g/qt)}return{ts:Float64Array.from(r),ss:Float64Array.from(o),firstRate:t,lastRate:i}}function Zn(n){let e=Yt.get(n);return e||(e=Jn(n),Yt.set(n,e)),e}function Qn(n){return typeof n!="number"&&n.points.length>0}function ei(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 Fe(n,e){if(typeof n=="number")return e/n;if(!Qn(n))return e;let{ts:t,ss:i,firstRate:r,lastRate:o}=Zn(n),a=t.length-1;return e<=0?e/r:e>=i[a]?t[a]+(e-i[a])/o:ei(i,t,e)}function ti(n){return n?jt(n,pe):null}function Xt(n,e){return ti(n)??e}var ni="http://www.w3.org/1999/xhtml";function Kt(n){return n!=null&&n.nodeType===1}function Jt(n){return Kt(n)&&n.namespaceURI===ni}function Ve(n,e){return Jt(n)&&n.localName===e}function ii(n){return Ve(n,"video")}function ri(n){return Ve(n,"audio")}function C(n){return ii(n)||ri(n)}function Ue(n){return Ve(n,"img")}var _=Object.freeze({start:"data-start",duration:"data-duration",trackIndex:"data-track-index",derivedEnd:"data-end",legacyTrack:"data-layer"}),to=Object.freeze([_.start,_.duration,_.trackIndex]),no=Object.freeze([_.derivedEnd]),io=Object.freeze([_.derivedEnd,_.legacyTrack]);function M(n){if(n==null||n.trim()==="")return null;let e=Number(n);return Number.isFinite(e)?e:null}var en=/^[A-Za-z0-9_.:-]+$/;function tn(n,e){let t=n.charCodeAt(e);return t>=48&&t<=57}function Zt(n,e){let t=e;for(;t>=0&&tn(n,t);)t--;return t}function oi(n,e){let t=e;for(;t>=0&&(n[t]??"").trim()==="";)t--;return t}function ai(n){let e=n.length-1;if(!tn(n,e))return null;let t=Zt(n,e);return n[t]==="."&&(t=Zt(n,t-1)),t+1}function si(n){let e=ai(n);if(e==null)return null;let t=oi(n,e-1),i=n[t];if(i!=="+"&&i!=="-")return null;let r=n.slice(0,t).trim();if(!en.test(r))return null;let o=Number(n.slice(e));return Number.isFinite(o)?{refId:r,operator:i,magnitude:o}:null}function be(n){let e=(n??"").trim();if(!e)return null;let t=M(e);if(t!=null)return{kind:"absolute",value:t};if(en.test(e))return{kind:"reference",refId:e,offset:0};let i=si(e);return i?{kind:"reference",refId:i.refId,offset:i.operator==="-"?-i.magnitude:i.magnitude}:null}function T(n,e,t,i){n.push({code:e,attribute:t,value:i})}function ui(n,e,t,i){if(e==null||e.trim()==="")return t.defaultStart===void 0?0:t.defaultStart;if(!n)return T(i,"invalid-start",_.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)?(T(i,"unresolved-start-reference",_.start,e),null):Math.max(0,r+n.offset)}var li=1e-9;function di(n,e){return Math.abs(n-e)<=li}function ci(n,e,t){let i=M(n);if(i==null){T(t,"deprecated-end",_.derivedEnd,n),T(t,"invalid-end",_.derivedEnd,n);return}if(e==null){T(t,"deprecated-end",_.derivedEnd,n);return}di(i,e)||(T(t,"deprecated-end",_.derivedEnd,n),T(t,"conflicting-end",_.derivedEnd,n))}function mi(n,e,t){let i=M(n);return i==null||i<0?(T(t,"invalid-duration",_.duration,n),{duration:null,end:null,durationSource:"invalid"}):{duration:i,end:e==null?null:e+i,durationSource:"duration"}}function pi(n,e,t){T(t,"deprecated-end",_.derivedEnd,n);let i=M(n);return i==null?(T(t,"invalid-end",_.derivedEnd,n),{duration:null,end:null,durationSource:"invalid"}):e==null?{duration:null,end:i,durationSource:"legacy-end"}:i<e?(T(t,"end-before-start",_.derivedEnd,n),{duration:null,end:null,durationSource:"invalid"}):{duration:i-e,end:i,durationSource:"legacy-end"}}function fi(n,e,t){let i=n.getAttribute(_.duration),r=n.getAttribute(_.derivedEnd);if(i==null)return r==null?{duration:null,end:null,durationSource:"missing"}:pi(r,e,t);let o=mi(i,e,t);return r!=null&&ci(r,o.end,t),o}function Qt(n,e,t,i){let r=M(n);return r==null||!Number.isInteger(r)?(T(i,"invalid-track-index",e,n),{trackIndex:0,trackSource:"invalid"}):{trackIndex:r,trackSource:t}}function hi(n,e){let t=n.getAttribute(_.trackIndex),i=n.getAttribute(_.legacyTrack);if(t==null&&i==null)return{trackIndex:0,trackSource:"default"};if(t==null&&i!=null)return T(e,"deprecated-layer",_.legacyTrack,i),Qt(i,_.legacyTrack,"legacy-layer",e);let r=Qt(t??"",_.trackIndex,"track-index",e);if(i==null)return r;T(e,"deprecated-layer",_.legacyTrack,i);let o=M(i);return o!=null&&o!==r.trackIndex&&T(e,"conflicting-layer",_.legacyTrack,i),r}function He(n,e={}){let t=[],i=n.getAttribute(_.start),r=be(i),o=ui(r,i,e,t),a=fi(n,o,t),s=hi(n,t);return{startExpression:r,start:o,...a,...s,diagnostics:t}}function j(n){return M(n)}function ge(n){return Lt(e=>n.getAttribute(e),C(n)?n.defaultPlaybackRate:1)}function We(n){return Xt(n.getAttribute("data-automation"),ge(n))}function nn(n){return Pt(e=>n.getAttribute(e))}function q(n,e){return bi(e,nn(n),We(n))}function _e(n,e=0){return!Ue(n)||!n.hasAttribute("data-start")&&!n.hasAttribute("data-track-index")?null:Vt({tag:"img",authoredDurationSeconds:Ft(t=>n.getAttribute(t),e),sourceDurationSeconds:null,mediaStartSeconds:0,playbackRate:1}).seconds}function bi(n,e,t){return typeof t=="number"?Ne(n,e,t):Number.isFinite(n)?Fe(t,Math.max(0,n-e)):null}var rn="data-hf-media-start-basis";function gi(n){return n?.trim().toLowerCase()==="global"?"global":"local"}function _i(n){return gi(n.basis)==="global"?n.authoredStart:n.hostStart+n.authoredStart}function on(n){return n.hasAutoStart||n.authoredStart==null||n.hostStart<=0?n.ordinaryStart():_i({authoredStart:n.authoredStart,hostStart:n.hostStart,basis:n.basis})}function ye(n){let e=n.timelineRegistry??{},t=n.includeAuthoredTimingAttrs??!1,i=n.documentRef??document,r=new WeakMap,o=new WeakMap,a=new Set,s=c=>{let f=i.getElementById(c);return f||(i.querySelector(`[data-composition-id="${CSS.escape(c)}"]`)??null)},u=c=>{let f=o.get(c);if(f!==void 0)return f;let h=null,b=de({start:0,duration:c.getAttribute("data-duration"),authoredDuration:t?c.getAttribute("data-hf-authored-duration"):null});if(b?.duration!=null&&b.duration>0&&(h=b.duration),h==null||h<=0){let y=l(c,0),v=de({start:y,end:c.getAttribute("data-end"),authoredEnd:t?c.getAttribute("data-hf-authored-end"):null});v?.duration!=null&&v.duration>0&&(h=v.duration)}if((h==null||h<=0)&&C(c)&&(h=q(c,c.duration)),(h==null||h<=0)&&(h=_e(c)),h==null||h<=0){let y=c.getAttribute("data-composition-id");if(y){let v=e[y]??null;if(v&&typeof v.duration=="function")try{let A=Number(v.duration());Number.isFinite(A)&&A>0&&(h=A)}catch(A){H("runtime.startResolver.site1",A)}}}return h!=null&&Number.isFinite(h)&&h>0?(o.set(c,h),h):(o.set(c,null),null)},d=(c,f)=>{if(c.hasAttribute("data-composition-id")){let b=c.parentElement?.closest("[data-composition-id]");return b?l(b,f):0}let h=c.closest("[data-composition-id]");return h?l(h,f):0},l=(c,f)=>{let h=r.get(c);if(h!==void 0)return h??f;if(a.has(c))return f;a.add(c);try{let b=be(c.getAttribute("data-start"));if(!b){if(c.hasAttribute("data-composition-id")){let S=c.parentElement;if(S&&(S.hasAttribute("data-composition-src")||S.hasAttribute("data-composition-id")||S.hasAttribute("data-composition-file"))){let x=l(S,f);return r.set(c,x),x}}return r.set(c,f),f}if(b.kind==="absolute"){let S=Math.max(0,b.value),x=Math.max(0,d(c,f)+S);return r.set(c,x),x}let y=s(b.refId);if(!y)return r.set(c,f),f;let v=l(y,0),A=u(y);if(A==null||A<=0){let S=Math.max(0,v+b.offset);return r.set(c,S),S}let w=Math.max(0,v+A+b.offset);return r.set(c,w),w}finally{a.delete(c)}};return{resolveStartForElement:(c,f=0)=>l(c,Math.max(0,f)),resolveDurationForElement:c=>u(c),resolveMediaStartForElement:c=>{let f=c.closest("[data-composition-id]"),h=f?l(f,0):0;return on({authoredStart:j(c.getAttribute("data-start")),hostStart:h,hasAutoStart:c.hasAttribute("data-hf-auto-start"),basis:c.getAttribute(rn),ordinaryStart:()=>l(c,h)})}}}var vi=n=>4*Number.EPSILON*Math.max(1,Math.abs(n));function ve(n,e){return!Number.isFinite(n)||!Number.isFinite(e)?n===e:Math.abs(n-e)<=vi(Math.max(Math.abs(n),Math.abs(e)))}var an=(n,e)=>n>=e||ve(n,e),Ae=(n,e,t)=>an(n,e)&&n<t&&!ve(n,t),Ai=1e-6,Ge=(n,e,t,i)=>Ae(n,e,t)||an(n,e)&&i>0&&t>=i-Ai;var Ei="data-fade-in",Ti="data-fade-out",Oo=Ei.slice(5),Fo=Ti.slice(5),Ri=Object.freeze({fadeIn:0,fadeOut:0});var xi=["backdrop-filter","clip-path","filter","mask","mask-border-source","mask-image","perspective","rotate","scale","transform","translate","-webkit-mask-image"],ya=new Set([...xi,"contain","isolation","mask-border","mix-blend-mode","opacity"]);function ki(n){return Number.isFinite(n)&&n>0?n:30}function Mi(n){return Number.isFinite(n)&&n>0?n:0}function sn(n,e){let t=ki(e),i=Mi(n),r=i*t,o=Math.round(r);return Math.abs(r-o)<=.001?o/t:i}function un(n,e,t){return{start:sn(n,t),end:Number.isFinite(e)?sn(e,t):e}}var Ii=["seconds-time","rational-fps","seek-keep-playing","composition-manifest-v1","runtime-data","play-range"];function Ci(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 Di(n){let e=Number.isFinite(n)&&n>0?n:30,t=Number.isInteger(e)?1:1e6,i=Math.round(e*t),r=Ci(i,t);return{numerator:i/r,denominator:t/r}}function ln(n,e,t){return Math.max(n,(Math.ceil(e*t-1e-6)-1)/t)}function Ni(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 Be(n){return{protocolVersion:1,capabilities:Ii,fps:Di(n)}}function Pi(n){return Array.isArray(n)&&n.every(e=>typeof e=="string")}function dn(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=Ni(t.fps);return i===null||!Pi(t.capabilities)?{status:"unsupported",code:"invalid_protocol_metadata",receivedVersion:t.protocolVersion}:{status:"supported",fps:i,metadata:t}}function cn(n,e){let t=n.tagName.toLowerCase();if(t==="script"||t==="style"||t==="link"||t==="meta")return!1;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 d=e.timelineRegistry[a],l=d&&typeof d.duration=="function"?Number(d.duration()):null;!(n.hasAttribute("data-duration")||n.hasAttribute("data-end")||n.hasAttribute(Ct)||n.hasAttribute(Dt))&&(o==null||o<=0)&&l!=null&&Number.isFinite(l)&&l>0&&(o=l)}let s=o!=null&&o>0?r+o:Number.POSITIVE_INFINITY,u=e.exportRenderSeek?un(r,s,e.canonicalFps):{start:r,end:s};return Ge(e.currentTime,u.start,u.end,e.compositionDuration)}var Y="first-frame",Li=3;function X(n){let e=n.ownerDocument?.defaultView;return e&&n instanceof e.Element?!0:n instanceof Element}function R(n){if(!X(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 Oi(n){return n.hasAttribute("data-start")||n.hasAttribute("data-track-index")}function Fi(n,e,t){let i=n;for(;i;){if(Oi(i)&&!cn(i,{currentTime:0,compositionDuration:Number.POSITIVE_INFINITY,canonicalFps:30,exportRenderSeek:!1,timelineRegistry:t,resolver:e}))return!1;i=i.parentElement}return!0}function mn(n,e,t,i){return e==="all"?!0:Fi(n,t,i)}function Se(n,{scope:e="all"}={}){let t=n.defaultView,i=ye({documentRef:n,timelineRegistry:t?.__timelines,includeAuthoredTimingAttrs:!0}),r=Array.from(n.querySelectorAll("video, audio")).filter(R).filter(s=>mn(s,e,i,t?.__timelines??{})).filter(s=>s.readyState<Li),o=Array.from(n.querySelectorAll("img")).filter(s=>mn(s,s.getAttribute("loading")?.toLowerCase()==="lazy"?Y:e,i,t?.__timelines??{})).filter(s=>!s.complete),a=n.fonts?.status==="loading";return{pendingMedia:r,pendingImages:o,fontsLoading:a}}function Vi(n,{pendingMedia:e,pendingImages:t,fontsLoading:i},r){let o=e.map(u=>new Promise(d=>{if(u.error){d();return}let l=()=>{u.removeEventListener("canplay",l),u.removeEventListener("error",l),r.removeEventListener("abort",l),d()};u.addEventListener("canplay",l),u.addEventListener("error",l),r.addEventListener("abort",l,{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 Ui(n,e,{scope:t="all"}={}){let i=Se(n,{scope:t});return i.pendingMedia.length===0&&i.pendingImages.length===0&&!i.fontsLoading?null:Vi(n,i,e)}var Hi=50;function Wi(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,Hi)};a()})}var Gi=50,Bi=2,$i=1500;function $e(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 zi(n,e){let t=n.defaultView;return t?(async()=>{let i=await $e(t,e);if(e.aborted)return;let r=await $e(t,e),o=0;for(;!e.aborted&&o<Bi;){if(r-i>=$i)return;let a=await $e(t,e);if(e.aborted)return;o=a-r<Gi?o+1:0,r=a}})():null}var ji=8e3;function qi(n,e,t={}){let i=t.inputs??[(d,l)=>Ui(d,l,{scope:t.scope}),Wi,zi],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??ji,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 pn(n,e,t={}){qi(n,e,{...t,scope:Y})}var Yi=.05,Xi=2,Ee=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=He(e.source);e.start=t.start??0,e.duration=t.duration!=null&&t.duration>0?t.duration:Number.POSITIVE_INFINITY}_inWindow(e,t){return Ae(t,e.start,e.start+e.duration)}_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(),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 t of this._entries)this._refreshEntryBounds(t),this._inWindow(t,e)&&(t.el.currentTime=e-t.start)}scrubAll(e){for(let t of this._entries)this._refreshEntryBounds(t),this._inWindow(t,e)?(t.el.currentTime=e-t.start,this._playEntry(t)):t.el.paused||t.el.pause()}mirrorTime(e,t){let i=t?.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)>Yi?(r.driftSamples+=1,(i||r.driftSamples>=Xi)&&(r.el.currentTime=o,r.driftSamples=0)):r.driftSamples=0}}promoteToParentProxy(e,t){if(this._audioOwner==="parent")return;if(this._audioOwner="parent",e)for(let r of e.querySelectorAll("video, audio"))R(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)R(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(this._urlTaken(e))return null;let a=t==="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 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")return;let t=this._resolveIframeMediaSrc(e);if(!t)return;let i=He(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,t){return this._entries.some(i=>i===t||i.source&&!i.source.isConnected?!1:(i.source&&this._resolveIframeMediaSrc(i.source)||i.el.src)===e)}_repointToSource(e){let t=e.source?this._resolveIframeMediaSrc(e.source):null;return!t||e.el.src===t?!1:this._urlTaken(t,e)?(this._removeEntry(e),!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;R(s)&&s.matches("audio[data-start], video[data-start]")&&this._followIframeMediaSrc(s);continue}if(a.type==="attributes"&&a.attributeName==="preload"){let s=a.target;R(s)&&s.matches("audio[data-start], video[data-start]")&&s.preload==="auto"&&this._adoptIframeMedia(s);continue}for(let s of a.addedNodes){if(!X(s))continue;let u=[];R(s)&&s.matches("audio[data-start], video[data-start]")&&u.push(s);let d=s.querySelectorAll("audio[data-start], video[data-start]");for(let l of d)R(l)&&u.push(l);for(let l of u)this._adoptIframeMedia(l)}for(let s of a.removedNodes){if(!X(s))continue;let u=[];R(s)&&s.matches("audio[data-start], video[data-start]")&&u.push(s);let d=s.querySelectorAll("audio[data-start], video[data-start]");for(let l of d)R(l)&&u.push(l);for(let l of u)this._detachIframeMedia(l)}}}),i={childList:!0,subtree:!0,attributes:!0,attributeFilter:["preload","src"]},r=Mt(e);for(let o of r)t.observe(o,i);this._mediaObserver=t}};function ze(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 K(n,e,t){let i=n.end??e;return i<e?ln(n.start,i,t):i}function je(n,e,t,i){return n<e.start||n>=K(e,t,i)}var Ki=100;function Ji(n,e){return typeof n.currentTime=="number"&&Number.isFinite(n.currentTime)?n.currentTime:(n.frame??0)/e}function fn(n,e,t){return t<=0?!1:n.ended===!0?!0:n.ended===!1&&!n.isPlaying?!1:e>=t}function Zi(n,e,t,i,r,o){let{duration:a}=t;if(!r){let s=fn(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 Qi(n,e,t,i,r,o)}function Qi(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:K(r,t.duration,o),atEnd:i&&!s&&fn(n,e,a),stopRuntime:n.isPlaying,entering:s}}function hn(n,e,t,i){let r=Ji(n,e),o=!t.paused,a=o||n.isPlaying,s=i.getPlayRange?.(),u=Zi(n,r,t,a,s,e),{atEnd:d,start:l}=u,g=t.duration>0?Math.min(r,t.duration):r,c=d?u.shownAtEnd:g,f=!n.isPlaying,h=d&&a;if(h&&i.getLoop())return i.media.audioOwner==="parent"&&i.media.pauseAll(),i.seek(l),i.play(),{...t,currentTime:l,paused:!1,enteringRange:!0};let b={...t,currentTime:c,paused:f,enteringRange:u.entering};i.media.audioOwner==="parent"&&(o&&f?i.media.pauseAll():!o&&!f&&i.media.playAll(),i.media.mirrorTime(c));let y=performance.now(),v=f!==t.paused;return(y-t.lastUpdateMs>Ki||v)&&(b.lastUpdateMs=y,i.updateControlsTime(c,t.duration),i.updateControlsPlaying(!f),i.dispatchEvent(new CustomEvent("timeupdate",{detail:{currentTime:c}}))),h&&(u.stopRuntime&&i.seek(c),i.media.audioOwner==="parent"&&i.media.pauseAll(),b.paused=!0,i.updateControlsPlaying(!1),i.dispatchEvent(new Event("ended"))),b}function er(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 bn(n,e,t){if(n.source!==e)return;let i=n.data;if(!i||i.source!=="hf-preview")return;let r=dn(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(hn({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(er(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 tr(n,e){return n.includes(e)?!0:/hyperframe\.runtime\.iife\.js|__hyperframes\s*=/.test(n)}var nr=new Set([">"," "," ",`
|
|
473
|
+
`,"\r","\f"]);function qe(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(nr.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 gn(n,e){if(!n||tr(n,e))return n;let t=`<script src="${e}"></script>`,i=qe(n,"head");if(i)return n.slice(0,i.end)+t+n.slice(i.end);let r=qe(n,"body");if(r)return n.slice(0,r.index)+t+n.slice(r.index);let o=qe(n,"html");return o?n.slice(0,o.end)+t+n.slice(o.end):t+n}var D="shader-capture-scale",O="shader-loading",Te="runtime-src",_n="__hf_shader_capture_scale",yn="__hf_shader_loading",F=["Preparing scene transitions","Sampling outgoing scene motion","Sampling incoming scene motion","Caching transition frames","Finalizing transition preview"];function Ye(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 ir(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 vn(n,e){return n.filter(t=>t!==""&&t.split("=")[0]!==e)}function rr(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=vn(u.split("&"),_n);d=vn(d,yn),e!==null&&d.push(`${_n}=${encodeURIComponent(e)}`),t!=="composition"&&d.push(`${yn}=${encodeURIComponent(t)}`);let l=d.join("&");return`${s}${l?`?${l}`:""}${o}`}function or(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 J(n){return ir(n.getAttribute(O))}function An(n){return Number(Ye(n.getAttribute(D))??"1")}function Sn(n,e){return rr(e,Ye(n.getAttribute(D)),J(n))}function Z(n,e){return gn(or(e,Ye(n.getAttribute(D)),J(n)),ar(n))}function ar(n){let e=n.getAttribute(Te)?.trim();if(!e)return P;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:P}catch{return P}}function En(){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=f=>{f.preventDefault(),f.stopPropagation()};for(let f of["selectstart","dragstart","pointerdown","mousedown","click","dblclick","contextmenu","touchstart"])n.addEventListener(f,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=F[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 l=f=>{let h=document.createElement("div");h.className="hfp-shader-loader-row";let b=document.createElement("span");b.className="hfp-shader-loader-label",b.textContent=f;let y=document.createElement("span");return y.className="hfp-shader-loader-value",h.appendChild(b),h.appendChild(y),d.appendChild(h),{row:h,label:b,value:y}},g=l("transition"),c=l("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:g.value,transitionRow:g.row,frameLabel:c.label,frameValue:c.value,frameRow:c.row}}var sr=420;function Re(n,e,t){e.textContent=t,n.style.visibility=t?"visible":"hidden"}var we=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)",Re(this._el.transitionRow,this._el.transitionValue,""),Re(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(F.length-1,Math.floor(a*F.length));this._el.title.textContent=F[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",Re(this._el.transitionRow,this._el.transitionValue,u),Re(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()},sr)}};function Tn(n){return n?.trim().toLowerCase().startsWith("video/")??!1}function Rn(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=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 ur=.1,lr=5,Xe="sandbox-origin",wn=1e4,Ke=8e3,Je="assets-loading",Q="assets-loading-ui",Ze="low-power-idle",xn="disable-click-to-play",ee="range-start",te="range-end",dr=150;function Qe(n){return!Number.isFinite(n)||n<=0?1:Math.max(ur,Math.min(lr,n))}var et=class extends HTMLElement{static get observedAttributes(){return["src","srcdoc","width","height","controls","muted","audio-locked","volume","poster","playback-rate","audio-src","type",Xe,Te,D,O,Q,Ze,ee,te]}shadow;container;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"}),wt(this.shadow,_t),{container:this.container,iframe:this.iframe}=xt(),this.shadow.appendChild(this.container);let e=En();this.shadow.appendChild(e.root),this.shaderLoader=new we(e),this._media=new Ee({dispatchEvent:t=>this._emit(t),getMuted:()=>this.muted,getVolume:()=>this._volume,getPlaybackRate:()=>this.playbackRate,getCurrentTime:()=>this._currentTime,isPaused:()=>this._paused}),this._directTimelineClock=new le({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 ae(this.iframe,{onReady:t=>this._onProbeReady(t),onError:t=>this._emit(new CustomEvent("error",{detail:{message:t}}))}),this.addEventListener("click",t=>{this.disableClickToPlay||Rt(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=Ie(this.shadow,this.getAttribute("poster"),this.posterEl)),this.hasAttribute("audio-src")&&this._media.setupFromUrl(this.getAttribute("audio-src")),this.hasAttribute("srcdoc")&&(this.iframe.srcdoc=Z(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=Z(this,i);else{this.iframe.removeAttribute("srcdoc");let r=this.getAttribute("src");r!==null&&this._wantsVideo()&&this._navigateSrc(r)}break;case Xe:this._applySandboxOriginPolicy(this.isConnected&&t!==i);break;case"width":this._setCompositionSize(U(i)??1920,this._compositionHeight);break;case"height":this._setCompositionSize(this._compositionWidth,U(i)??1080);break;case"controls":i!==null?this._setupControls():(this.controlsApi?.destroy(),this.controlsApi=null);break;case"poster":this.posterEl=Ie(this.shadow,i,this.posterEl);break;case"playback-rate":{let r=Qe(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 Q:i==="none"&&this.shaderLoader.hideAssetsLoading();break;case Ze:this._sendControl("set-idle-heartbeat",{slow:i!==null});break;case ee:case te:this._applyPlayRange(!0);break;case D:case O:case Te:if(!this.isConnected)break;this._reloadShaderOptions();break}}_applySandboxOriginPolicy(e=!1){this.hasAttribute(Xe)?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=Z(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?je(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;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 Qe(parseFloat(this.getAttribute("playback-rate")||"1"))}set playbackRate(e){this.setAttribute("playback-rate",String(Qe(e)))}get shaderCaptureScale(){return An(this)}set shaderCaptureScale(e){this.setAttribute(D,String(e))}get shaderLoading(){return J(this)}set shaderLoading(e){e==="composition"?this.removeAttribute(O):this.setAttribute(O,e)}get assetsLoadingUi(){return this.getAttribute(Q)==="none"?"none":"player"}set assetsLoadingUi(e){e==="none"?this.setAttribute(Q,"none"):this.removeAttribute(Q)}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(xn)}set disableClickToPlay(e){this.toggleAttribute(xn,e)}get loop(){return this.hasAttribute("loop")}set loop(e){e?this.setAttribute("loop",""):this.removeAttribute("loop")}get rangeStart(){return this._readSeconds(ee)}set rangeStart(e){this._writeSeconds(ee,e)}get rangeEnd(){return this._readSeconds(te)}set rangeEnd(e){this._writeSeconds(te,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(ee)||this.hasAttribute(te)}_playRange(){return ze(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}=ze(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){je(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=K(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,...Be(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 ${wn}ms`)},wn);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"))R(i)&&(i.muted=e||i.defaultMuted)}_stopIframeMedia(){let e=this._getSameOriginIframeDocument();if(e)for(let t of e.querySelectorAll("video, audio"))R(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(Ze)})}_reloadShaderOptions(){if(!this._videoSource){if(this._abandonComposition("Shader options changed before runtime data was applied"),this.hasAttribute("srcdoc")){this.iframe.srcdoc=Z(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 Tn(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=Sn(this,e)}_loadVideo(e){this._videoSource||(this._videoSource=Rn({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._applyThenEmit(()=>this._handleRuntimeMessage(e))}_handleRuntimeMessage(e){bn(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:()=>J(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),Ke)):this._settleAssetsReady(i);return}pn(e,({timedOut:r})=>{i===this._assetsGeneration&&(r&&this._warnStuckAssets(e),this._settleAssetsReady(i))},{timeoutMs:Ke}),this._assetsReady||this._startAssetsLoadingOverlayTimer(i)}_startAssetsLoadingOverlayTimer(e){this._assetsLoadingShowTimer=setTimeout(()=>{this._assetsLoadingShowTimer=null,!(e!==this._assetsGeneration||this._assetsReady)&&(this.setAttribute(Je,""),this.assetsLoadingUi!=="none"&&this.shaderLoader.showAssetsLoading())},dr)}_hasPendingFirstFrameAssets(e){let{pendingMedia:t,pendingImages:i,fontsLoading:r}=Se(e,{scope:Y});return t.length>0||i.length>0||r}_warnStuckAssets(e){let{pendingMedia:t,pendingImages:i,fontsLoading:r}=Se(e,{scope:Y}),o=e.defaultView;console.warn(`[hyperframes-player] assets-loading timed out after ${Ke}ms \u2014 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(Je),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._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(Je),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._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(){!kt(this,this.iframe,this._compositionWidth,this._compositionHeight)&&this._ready&&!this._rescaleWarned&&(this._rescaleWarned=!0,console.warn("[hyperframes-player] rescale no-op after ready \u2014 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=Tt(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()))}get _audioOwner(){return this._media.audioOwner}get _parentMedia(){return this._media.entries}_mirrorParentMediaTime(e,t){this._media.mirrorTime(e,t)}_promoteToParentProxy(){let e=null;try{e=this.iframe.contentDocument}catch{}this._media.promoteToParentProxy(e,(t,i)=>this._mirrorParentMediaTime(t,i)),this._sendControl("set-media-output-muted",{muted:!0})}_observeDynamicMedia(e){this._media.setupFromIframe(e)}};customElements.get("hyperframes-player")||customElements.define("hyperframes-player",et);export{et as HyperframesPlayer,St as SPEED_PRESETS,se as formatSpeed,Me as formatTime};
|
|
474
474
|
//# sourceMappingURL=hyperframes-player.js.map
|