@hyperframes/shader-transitions 0.8.145 → 0.8.147
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/dist/index.cjs +1 -2
- package/dist/index.global.js +1 -2
- package/dist/index.js +1 -2
- package/package.json +1 -1
- package/dist/index.cjs.map +0 -1
- package/dist/index.global.js.map +0 -1
- package/dist/index.js.map +0 -1
package/dist/index.cjs
CHANGED
|
@@ -12,7 +12,7 @@ ${t.src?"":t.textContent||""}`).join(`
|
|
|
12
12
|
`);return Br(`${e}
|
|
13
13
|
${r}`)}function eo(A){let e=document.getElementById(A);return e?Br(`${vf(document)}
|
|
14
14
|
${Hf(document)}
|
|
15
|
-
${yf(e)}`):"missing"}function to(A,e){for(let r of e)A.style.removeProperty(r);A.getAttribute("style")?.trim()===""&&A.removeAttribute("style")}function yf(A){let e=A.cloneNode(!0);return to(e,["opacity","visibility","pointer-events"]),e.querySelectorAll("[data-start]").forEach(r=>{to(r,["visibility"])}),e.outerHTML}function ir(A,e,r){return`${A}:sample:${e}:${r}`}function If(){return typeof indexedDB>"u"?Promise.resolve(null):new Promise(A=>{let e=indexedDB.open(gf,wf);e.onupgradeneeded=()=>{let r=e.result;r.objectStoreNames.contains(MA)||r.createObjectStore(MA,{keyPath:"key"})},e.onerror=()=>A(null),e.onblocked=()=>A(null),e.onsuccess=()=>{let r=e.result;r.onversionchange=()=>{r.close(),lt=null},A(r)}})}var lt=null;function ar(A){try{A?.close()}catch{}lt=null}function Hn(){return lt=lt||If(),lt}async function mn(A){let e=await Hn();return e?new Promise(r=>{try{let n=e.transaction(MA,"readonly").objectStore(MA).get(A);n.onerror=()=>r(null),n.onsuccess=()=>{let s=n.result;s&&typeof s=="object"&&"blob"in s&&s.blob instanceof Blob?r(s):r(null)}}catch{ar(e),r(null)}}):null}async function bf(A){let e=await Hn();return e?new Promise(r=>{try{let t=e.transaction(MA,"readwrite");t.oncomplete=()=>r(!0),t.onerror=()=>r(!1),t.objectStore(MA).put(A)}catch{ar(e),r(!1)}}):!1}function ro(A){return new Promise(e=>{try{A.toBlob(r=>e(r),"image/png")}catch{e(null)}})}async function xf(A,e,r=df){let t=await Hn();if(!t)return;let n=await new Promise(w=>{try{let U=t.transaction(MA,"readonly").objectStore(MA).getAll();U.onerror=()=>w([]),U.onsuccess=()=>{let p=[];for(let v of U.result)if(v&&typeof v=="object"&&"key"in v&&typeof v.key=="string"){let y="updatedAt"in v&&typeof v.updatedAt=="number"?v.updatedAt:0;p.push({key:v.key,updatedAt:y})}w(p)}}catch{ar(t),w([])}}),s=`${A}:`,i=w=>{for(let x of e)if(w.startsWith(`${x}:sample:`))return!0;return!1},o=n.filter(w=>w.key.startsWith(s)&&!i(w.key)).map(w=>w.key),a=new Set(o),B=n.filter(w=>!a.has(w.key)),l=B.filter(w=>i(w.key)).length,u=B.filter(w=>!i(w.key)).sort((w,x)=>x.updatedAt-w.updatedAt),f=Math.max(0,r-l),d=u.length>f?u.slice(f).map(w=>w.key):[],g=Array.from(new Set([...o,...d]));g.length!==0&&await new Promise(w=>{try{let x=t.transaction(MA,"readwrite");x.oncomplete=()=>w(),x.onerror=()=>w();let U=x.objectStore(MA);for(let p of g)U.delete(p)}catch{ar(t),w()}})}function no(A){return typeof createImageBitmap=="function"?createImageBitmap(A):new Promise((e,r)=>{let t=URL.createObjectURL(A),n=new Image;n.onload=()=>{URL.revokeObjectURL(t),e(n)},n.onerror=()=>{URL.revokeObjectURL(t),r(new Error("[HyperShader] Failed to decode cached snapshot"))},n.src=t})}function so(A){typeof ImageBitmap<"u"&&A instanceof ImageBitmap&&A.close()}function io(A,e,r){let t=SA(A);return A.bindTexture(A.TEXTURE_2D,t),A.texImage2D(A.TEXTURE_2D,0,A.RGBA,e,r,0,A.RGBA,A.UNSIGNED_BYTE,null),t}function oo(A,e){let r=A.createFramebuffer();if(!r)throw new Error("[HyperShader] Failed to create framebuffer");return A.bindFramebuffer(A.FRAMEBUFFER,r),A.framebufferTexture2D(A.FRAMEBUFFER,A.COLOR_ATTACHMENT0,A.TEXTURE_2D,e,0),A.bindFramebuffer(A.FRAMEBUFFER,null),r}function Tf(A,e,r){let t=A?.ownerDocument||document,n=A||t.body;if(!n)return null;n.querySelector("[data-hyper-shader-loading]")?.remove();let s=t.createElement("div");s.setAttribute("data-hyper-shader-loading",""),s.setAttribute("data-hyperframes-ignore",""),s.setAttribute("data-hyperframes-picker-block",""),s.setAttribute("data-hf-ignore",""),s.setAttribute("data-no-capture",""),s.setAttribute("data-no-inspect",""),s.setAttribute("data-no-pick",""),s.setAttribute("draggable","false"),s.setAttribute("role","status"),s.setAttribute("aria-label","Preparing scene transitions"),s.style.cssText=["position:absolute","inset:0",`width:${e}px`,`height:${r}px`,"z-index:2147483647","display:none","place-items:center","opacity:1","transition:opacity 240ms ease-out","background:#030504","pointer-events:auto","color:#f4f7fb","cursor:default","touch-action:none","user-select:none","-webkit-user-select:none","-webkit-user-drag:none"].join(";");let i=y=>{y.preventDefault(),y.stopPropagation()};for(let y of["selectstart","dragstart","pointerdown","mousedown","touchstart"])s.addEventListener(y,i,{capture:!0});let o=t.createElement("div");o.setAttribute("draggable","false"),o.style.cssText=["display:grid","grid-template-rows:172px 72px 44px 44px 54px","justify-items:center","align-items:center","gap:0","width:min(1040px,82%)","padding:42px","box-sizing:border-box","text-align:center","font-family:Inter,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif","user-select:none","-webkit-user-select:none","-webkit-user-drag:none"].join(";");let a=t.createElement("div");a.setAttribute("data-hf-loader-mark-frame",""),a.style.cssText=["width:172px","height:172px","display:grid","place-items:center","overflow:visible","transform-origin:50% 50%","will-change:transform,opacity","user-select:none","-webkit-user-select:none","-webkit-user-drag:none"].join(";"),a.innerHTML=['<svg width="156" height="156" viewBox="0 0 100 100" fill="none" aria-hidden="true" draggable="false" style="display:block;overflow:visible;filter:drop-shadow(0 0 7px rgba(79,219,94,.2));user-select:none;-webkit-user-select:none">','<g data-hf-loader-mark transform="translate(50 50)">','<g data-hf-loader-core transform="scale(1)" opacity=".92">','<g transform="translate(-50 -50)">','<path data-hf-loader-left 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(#hyper-shader-loader-grad-left)"/>','<path data-hf-loader-right 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(#hyper-shader-loader-grad-right)"/>',"</g>","</g>","</g>","<defs>",'<linearGradient id="hyper-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="hyper-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 B=a.querySelector("svg");if(!B)return null;B.setAttribute("draggable","false");let l=t.createElement("div");l.style.cssText=["width:100%","height:72px","display:flex","align-items:center","justify-content:center","overflow:hidden","white-space:nowrap","text-overflow:ellipsis","font:600 44px/1.15 Inter,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif","letter-spacing:0","text-align:center","color:#f4f7fb"].join(";");let u=t.createElement("span");u.textContent=sr[0]??"Preparing scene transitions";let f=t.createElement("div");f.textContent="Sampling animated scene frames so shader transitions stay in motion.",f.style.cssText=["width:min(760px,100%)","height:44px","overflow:hidden","white-space:nowrap","text-overflow:ellipsis","color:rgba(244,247,251,0.64)","font:400 24px/1.5 Inter,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif"].join(";"),l.appendChild(u);let d=t.createElement("div");d.setAttribute("aria-hidden","true"),d.style.cssText=["width:min(520px,100%)","height:10px","overflow:hidden","border-radius:999px","background:rgba(255,255,255,0.1)"].join(";");let g=t.createElement("div");g.style.cssText=["width:100%","height:100%","transform:scaleX(0)","transform-origin:left center","border-radius:inherit","background:linear-gradient(90deg,#06e3fa,#4fdb5e)","transition:transform 160ms ease"].join(";");let w=t.createElement("div");w.style.cssText=["width:min(560px,100%)","height:54px","overflow:hidden","display:grid","grid-template-rows:repeat(2,27px)","font:500 18px/27px 'IBM Plex Mono','SF Mono','Fira Code',monospace","font-variant-numeric:tabular-nums","color:rgba(244,247,251,0.48)"].join(";");let x=y=>{let I=t.createElement("div");I.style.cssText=["display:grid","grid-template-columns:minmax(0,1fr) auto","align-items:center","column-gap:28px","width:100%","height:27px","white-space:nowrap"].join(";");let C=t.createElement("span");C.textContent=y,C.style.cssText=["overflow:hidden","text-overflow:ellipsis","text-align:left","min-width:0"].join(";");let b=t.createElement("span");return b.style.cssText=["min-width:76px","text-align:right"].join(";"),I.appendChild(C),I.appendChild(b),w.appendChild(I),{row:I,label:C,value:b}},U=x("transition"),p=x("transition frame");d.appendChild(g),o.appendChild(a),o.appendChild(l),o.appendChild(f),o.appendChild(d),o.appendChild(w),s.appendChild(o),n.appendChild(s);let v=null;return{show:()=>{v&&(clearTimeout(v),v=null),s.style.display="grid",s.style.opacity="1",s.style.pointerEvents="auto"},update:y=>{let{progress:I,total:C}=y,b=C>0?le(I/C,0,1):0,_=Math.min(sr.length-1,Math.floor(b*sr.length)),S=sr[_]??"Preparing scene transitions";u.textContent=S,g.style.transform=`scaleX(${b})`;let K=y.currentTransition!==void 0&&y.transitionTotal!==void 0?`${y.currentTransition}/${y.transitionTotal}`:C>0?`${I}/${C}`:"",R=y.transitionFrame!==void 0&&y.transitionFrames!==void 0?`${y.transitionFrame}/${y.transitionFrames}`:"",J=y.phase==="cached"?"loading cached transition frames":y.phase==="finalizing"?"finalizing":"rendering transition frames";U.label.textContent=y.currentTransition!==void 0?"transition":"transition frames",U.value.textContent=K,p.label.textContent=J,p.value.textContent=R,p.row.style.visibility=R?"visible":"hidden",s.setAttribute("aria-valuenow",String(Math.round(b*100)))},hide:()=>{v&&clearTimeout(v),s.style.display!=="none"&&(s.style.opacity="0",s.style.pointerEvents="none",v=setTimeout(()=>{s.style.display="none",s.style.opacity="1",s.style.pointerEvents="auto",v=null},240))}}}function co(A){let{bgColor:e,scenes:r,transitions:t}=A;if(r.length!==t.length+1)throw new Error(`[HyperShader] init(): expected scenes.length === transitions.length + 1, got scenes=${r.length}, transitions=${t.length}`);if(typeof document<"u"){let c=[],Q=[];for(let h of r){let F=document.getElementById(h);F?F.classList.contains("scene")||Q.push(h):c.push(h)}if(c.length>0)throw new Error(`[HyperShader] init(): scene ids not found in DOM: ${c.join(", ")}`);if(Q.length>0)throw new Error(`[HyperShader] init(): elements found but missing .scene class: ${Q.join(", ")}`)}if(typeof window<"u"){let c=window;c.__hf&&(c.__hf.transitions=t.map((Q,h)=>({time:Q.time,duration:Q.duration??or,shader:Q.shader,ease:Q.ease??vn,fromScene:r[h]??"",toScene:r[h+1]??""})))}let n=A.accentColor?ao(A.accentColor):gt,s=document.querySelector("[data-composition-id]"),i=A.compositionId||s?.getAttribute("data-composition-id")||"main",o=Number(s?.getAttribute("data-width")),a=Number(s?.getAttribute("data-height")),B=Number.isFinite(o)&&o>0?o:ge,l=Number.isFinite(a)&&a>0?a:we;if(typeof window<"u"&&!!window.__HF_VIRTUAL_TIME__)return Lf(A,r,t,i,s);let f={active:!1,prog:null,progress:0,transitionIndex:-1},d=document.getElementById("gl-canvas");d||(d=document.createElement("canvas"),d.id="gl-canvas",d.style.cssText="position:absolute;top:0;left:0;z-index:100;pointer-events:none;display:none;",(s||document.body).appendChild(d)),d.width=B,d.height=l,d.style.width=`${B}px`,d.style.height=`${l}px`;let g=Qe(d,B,l);if(!g){console.warn("[HyperShader] WebGL unavailable \u2014 shader transitions disabled.");let c=A.timeline||gsap.timeline({paused:!0});return En(i,c,A.timeline),c}let w=de(g),x=new Map;for(let c of t)if(c.shader!==void 0&&!x.has(c.shader))try{x.set(c.shader,Ce(g,Ue(c.shader)))}catch(Q){console.error(`[HyperShader] Failed to compile "${c.shader}":`,Q)}let U=d,p=le(hf(A.previewCaptureFps,30),1,60),v=pf(),y=mf(),I=Math.max(1,Math.round(B*v)),C=Math.max(1,Math.round(l*v)),b=[],_=Ur(g,ff,["precision mediump float;","varying vec2 v_uv;","uniform sampler2D u_a;","uniform sampler2D u_b;","uniform float u_mix;","void main(){","gl_FragColor=mix(texture2D(u_a,v_uv),texture2D(u_b,v_uv),u_mix);","}"].join("")),S={a:g.getUniformLocation(_,"u_a"),b:g.getUniformLocation(_,"u_b"),mix:g.getUniformLocation(_,"u_mix"),pos:g.getAttribLocation(_,"a_pos")},K=io(g,I,C),R=io(g,I,C),J=oo(g,K),M=oo(g,R),O=null,eA=()=>y!=="internal"?null:(O=O||Tf(s,B,l),O),G=!1,X=!1,dA=0,aA=0,BA=new WeakMap,FA=()=>{aA=performance.now()+120},RA=c=>{BA.has(c)||BA.set(c,c.style.pointerEvents)},CA=(c,Q,h)=>{RA(c),FA(),c.style.opacity=h,c.style.pointerEvents=Q?BA.get(c)??"":"none"},LA=(c,Q,h)=>{CA(c,Q,h),c.style.visibility=Q?"visible":"hidden"},hA=(c,Q,h,F)=>{r.forEach(T=>{let L=document.getElementById(T);L&&(T===c?LA(L,!0,h):T===Q?LA(L,!0,F):CA(L,!1,"0"))})},OA=c=>{c.width=0,c.height=0},WA=c=>zi(c,e,B,l,{forceVisible:!0,scale:v}),uo=()=>new Promise(c=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>c())})}),In=c=>!!(c?.fromTex&&c.toTex),fo=(c,Q)=>{if(c.frames.length===0)return null;let h=le(Q,0,1)*(c.frames.length-1),F=Math.floor(h),T=Math.ceil(h),L=c.frames[F]??c.frames[c.frames.length-1],k=c.frames[T]??L;return!In(L)||!In(k)?null:{a:L,b:k,mix:h-F}},bn=(c,Q,h,F)=>{g.bindFramebuffer(g.FRAMEBUFFER,c),g.viewport(0,0,I,C),g.useProgram(_),g.activeTexture(g.TEXTURE0),g.bindTexture(g.TEXTURE_2D,Q),g.uniform1i(S.a,0),g.activeTexture(g.TEXTURE1),g.bindTexture(g.TEXTURE_2D,h),g.uniform1i(S.b,1),g.uniform1f(S.mix,F),g.bindBuffer(g.ARRAY_BUFFER,w),g.enableVertexAttribArray(S.pos),g.vertexAttribPointer(S.pos,2,g.FLOAT,!1,0,0),g.drawArrays(g.TRIANGLE_STRIP,0,4),g.bindFramebuffer(g.FRAMEBUFFER,null),g.viewport(0,0,B,l)},xn=c=>{On(c).then(Q=>{if(!Q)return;let h=N.time();h>=c.time&&h<c.time+c.duration&&ne()})},go=c=>{let Q=0;for(let h=0;h<b.length;h+=1){let F=b[h];F&&c>=F.time+F.duration&&(Q=h+1)}return le(Q,0,r.length-1)},Tn=c=>{let Q=go(c);r.forEach((h,F)=>{let T=document.getElementById(h);if(!T)return;let L=F===Q;CA(T,L,L?"1":"0")})},Ln=(c,Q)=>{let h=document.getElementById(c.fromId),F=document.getElementById(c.toId);if(!h||!F)return;let T=Q*Q*(3-2*Q);U.style.display="none",hA(c.fromId,c.toId,String(1-T),String(T))},ne=()=>{if(X)return;let c=N.time(),Q=b.find(k=>!k.fallback&&k.ready&&!k.dirty&&!k.textureReady&&c>=k.time-Ao&&c<k.time+k.duration);Q&&xn(Q);let h=b.findIndex(k=>c>=k.time&&c<k.time+k.duration);if(h<0){f.active=!1,f.transitionIndex=-1,U.style.display="none",Tn(c);return}let F=b[h];if(!F||F.dirty||!F.ready){U.style.display="none";return}if(F.fallback||F.prog===null){f.active=!0,f.transitionIndex=h,f.prog=null,f.progress=le((c-F.time)/F.duration,0,1),Ln(F,f.progress);return}if(!F.textureReady){xn(F),U.style.display="none";return}let T=F.prog;f.active=!0,f.transitionIndex=h,f.prog=T,f.progress=le((c-F.time)/F.duration,0,1),Qr(F);let L=fo(F,f.progress);if(!L){U.style.display="none";return}hA(F.fromId,F.toId,"1","1"),bn(J,L.a.fromTex,L.b.fromTex,L.mix),bn(M,L.a.toTex,L.b.toTex,L.mix),U.style.display="block",he(g,w,T,K,R,f.progress,n,B,l)},N;if(A.timeline){N=A.timeline;let c=Number(s?.getAttribute("data-duration")||"40");N.to({t:0},{t:1,duration:c,ease:"none",onUpdate:ne},0)}else N=gsap.timeline({paused:!0,onUpdate:ne});let cr=0,Se=c=>(...Q)=>{cr+=1;try{return c(...Q)}finally{cr-=1}},lr=Se(N.play.bind(N)),ur=Se(N.pause.bind(N)),Ke=Se(N.time.bind(N)),Sn=typeof N.seek=="function"?Se(N.seek.bind(N)):null,ut=typeof N.totalTime=="function"?N.totalTime.bind(N):null,Kn=N;for(let c of["timeScale","paused","reversed"]){let Q=Kn[c];typeof Q=="function"&&(Kn[c]=Se(Q.bind(N)))}let GA=()=>{let c=Ke();return typeof c=="number"&&Number.isFinite(c)?c:0},uA=GA(),De=c=>{typeof c=="number"&&Number.isFinite(c)&&(uA=c)},ft=(c,Q)=>{let h=c[0];return typeof h=="number"&&Number.isFinite(h)?h:Q},wo=(c,Q)=>{let h=Ke(c,Q);return typeof h=="number"?N:h},pA=c=>{dA+=1;try{return c()}finally{dA-=1,aA=performance.now()+120}},IA=!1,JA=[],se=!1;N.play=((...c)=>{De(c[0]);let Q=ft(c,uA);if(!_e()||!Co(Q))return se=!1,IA=!0,JA=c,Nn(),N;let h=pA(()=>lr(...c));return uA=GA(),h}),N.pause=((...c)=>{if(IA=!1,JA=[],De(c[0]),X)return se=!0,N;let Q=pA(()=>ur(...c));return uA=GA(),c.length>0&&ne(),Q}),N.time=((...c)=>{if(c.length===0)return X||(uA=GA()),uA;if(De(c[0]),X)return N;let Q=pA(()=>Ke(...c));return X||(uA=GA()),ne(),Q}),Sn&&(N.seek=((...c)=>{if(De(c[0]),X)return N;let Q=pA(()=>Sn(...c));return X||(uA=GA()),ne(),Q})),ut&&(N.totalTime=((...c)=>cr>0?ut(...c):c.length===0?X?uA:ut():(De(c[0]),ut(...c)))),qi(),d.style.display="none";for(let c=0;c<t.length;c++){let Q=t[c],h=r[c],F=r[c+1];if(!h||!F)continue;let T=Q.shader!==void 0,L=T?x.get(Q.shader)??null:null,k=!T||L===null;T&&L===null&&console.warn(`[HyperShader] Shader "${Q.shader}" failed to compile \u2014 falling back to CSS crossfade.`);let W=k?null:L,E=Q.duration??or,D=Q.ease??vn,q=Q.time,V=b.length;b.push({index:V,time:q,duration:E,fromId:h,toId:F,prog:W,frames:[],cacheKey:"",dirty:!k,ready:k,fallback:k,persisted:k,textureReady:!1,texturePromise:null,textureGeneration:0,textureAccess:0}),N.call(()=>{X||pA(()=>{let fA=document.getElementById(h),YA=document.getElementById(F);if(!fA||!YA)return;f.prog=W,f.transitionIndex=V,f.progress=0,f.active=!0;let bA=b[V];if(bA?.fallback){Ln(bA,0);return}U.style.display=bA?.ready&&!bA.dirty&&bA.textureReady?"block":"none",hA(h,F,"1","1")})},null,q);let sA={p:0};N.to(sA,{p:1,duration:E,ease:D,onUpdate:()=>{f.progress=sA.p}},q),N.call(()=>{pA(()=>{f.active=!1,f.transitionIndex=-1,U.style.display="none",Tn(q+E)})},null,q+E)}let Qo=c=>Math.max(2,Math.ceil(c.duration*p)+1),_e=()=>b.every(c=>c.ready&&!c.dirty),Dn=c=>{let Q=[],h=new Set,F=L=>{h.has(L.index)||L.fallback||L.dirty||!L.ready||(Q.push(L),h.add(L.index))};for(let L of b)c>=L.time&&c<L.time+L.duration&&F(L);let T=b.find(L=>L.time>=c);T&&F(T);for(let L of b)L.time>=c&&L.time-c<=Ao&&F(L);return Q.slice(0,$i)},Co=c=>Dn(c).every(Q=>Q.textureReady),_n=0,fr=c=>{c.textureGeneration+=1;for(let Q of c.frames)Q.fromTex&&(g.deleteTexture(Q.fromTex),Q.fromTex=null),Q.toTex&&(g.deleteTexture(Q.toTex),Q.toTex=null);c.textureReady=!1},gr=c=>c.prog===null,wr=c=>{if(fr(c),c.texturePromise=null,c.frames=[],c.lastError=void 0,gr(c)){c.ready=!0,c.fallback=!0,c.persisted=!0,c.textureReady=!1;return}c.ready=!1,c.fallback=!1,c.persisted=!1,c.textureReady=!1},Qr=c=>{_n+=1,c.textureAccess=_n},ho=c=>{let Q=b.filter(h=>h!==c&&h.textureReady).sort((h,F)=>h.textureAccess-F.textureAccess);for(;Q.length>=$i;){let h=Q.shift();if(!h)break;fr(h)}},Uo=(c,Q)=>{let h=[Qf,i,c.index,c.fromId,eo(c.fromId),c.toId,eo(c.toId),t[c.index]?.shader||"unknown",c.time,c.duration,Q,p,v,I,C,B,l].join("|");return`${i}:${c.index}:${Br(h)}`},mA=c=>{let Q=window;Q.__hf=Q.__hf||{},Q.__hf.shaderTransitions=Q.__hf.shaderTransitions||{};let F={...Q.__hf.shaderTransitions[i]||{ready:!1,progress:0,total:0,dirtyTransitions:b.length,captureScale:v,textureWidth:I,textureHeight:C,fps:p,loading:!0},...c};if(F.dirtyTransitions=b.filter(T=>T.dirty||!T.ready).length,Q.__hf.shaderTransitions[i]=F,window.parent?.postMessage({source:"hf-preview",type:"shader-transition-state",compositionId:i,state:F},"*"),F.loading){let T=eA();T?.show(),T?.update({progress:F.progress,total:F.total,currentTransition:F.currentTransition,transitionTotal:F.transitionTotal,transitionFrame:F.transitionFrame,transitionFrames:F.transitionFrames,phase:F.phase})}F.ready?O?.hide():F.loading||O?.hide()},Mn=()=>X||dA>0||performance.now()<aA||!N.paused(),Rn=c=>{if(c.size===0)return;let Q=!1;for(let h of b)!c.has(h.fromId)&&!c.has(h.toId)||gr(h)||(wr(h),h.dirty=!0,h.cacheKey="",Q=!0);Q&&(G=_e(),mA({ready:G,progress:0,total:0,currentTransition:void 0,transitionTotal:void 0,transitionFrame:void 0,transitionFrames:void 0,phase:void 0,loading:!1}),window.dispatchEvent(new CustomEvent("hyperShader:dirty",{detail:{compositionId:i,scenes:Array.from(c)}})))},Fo=()=>{let c=r.map(F=>document.getElementById(F)).filter(F=>F instanceof HTMLElement),Q=[];for(let F of c){let T=new MutationObserver(L=>{if(Mn())return;let k=new Set;for(let W of L){let E=W.target instanceof Element?W.target:W.target.parentElement;if(E)for(let D of c)(D===E||D.contains(E))&&k.add(D.id)}Rn(k)});T.observe(F,{attributes:!0,characterData:!0,childList:!0,subtree:!0}),Q.push(T)}let h=new MutationObserver(()=>{Mn()||Rn(new Set(r))});return h.observe(document.head,{attributes:!0,characterData:!0,childList:!0,subtree:!0}),Q.push(h),Q},po=async(c,Q,h)=>{let F=[];for(let T=0;T<Q;T+=1){let[L,k]=await Promise.all([mn(ir(c.cacheKey,T,"from")),mn(ir(c.cacheKey,T,"to"))]);if(!L||!k){for(let W of F)g.deleteTexture(W.fromTex),g.deleteTexture(W.toTex);return!1}F.push({sampleIndex:T,fromBlob:L.blob,toBlob:k.blob,fromTex:null,toTex:null}),h(T+1)}return c.frames=F,c.ready=!0,c.dirty=!1,c.fallback=!1,c.persisted=!0,c.textureReady=!1,!0},On=c=>{if(c.fallback||c.dirty||!c.ready)return Promise.resolve(!1);if(c.textureReady)return Qr(c),Promise.resolve(!0);if(c.texturePromise)return c.texturePromise;let Q=c.textureGeneration,h=c.frames,F=[],T=()=>c.textureGeneration!==Q||c.dirty||c.frames!==h,L=()=>{let E=new Set;for(let D of F)E.has(D)||(g.deleteTexture(D),E.add(D));for(let D of h)D.fromTex&&!E.has(D.fromTex)&&(g.deleteTexture(D.fromTex),E.add(D.fromTex)),D.toTex&&!E.has(D.toTex)&&(g.deleteTexture(D.toTex),E.add(D.toTex)),D.fromTex=null,D.toTex=null},k=async(E,D)=>{let q=D==="from"?E.fromBlob:E.toBlob;if(q)return q;let V=await mn(ir(c.cacheKey,E.sampleIndex,D));if(V?.blob)return V.blob;throw new Error("[HyperShader] Cached transition snapshot blob is unavailable")},W=Promise.resolve(!1);return W=(async()=>{for(let E of h){if(T())return L(),!1;if(!E.fromTex){let D=await k(E,"from");if(T())return L(),!1;let q=await no(D),V=SA(g);F.push(V);try{if(NA(g,V,q),T())return L(),!1;E.fromTex=V}finally{so(q)}}if(!E.toTex){let D=await k(E,"to");if(T())return L(),!1;let q=await no(D),V=SA(g);F.push(V);try{if(NA(g,V,q),T())return L(),!1;E.toTex=V}finally{so(q)}}c.persisted&&(E.fromBlob=null,E.toBlob=null)}return T()?(L(),!1):(c.textureReady=h.every(E=>!!(E.fromTex&&E.toTex)),c.textureReady&&(Qr(c),ho(c)),c.textureReady)})().catch(E=>(L(),T()||(fr(c),c.fallback=!0,c.ready=!0,c.dirty=!1,c.lastError=E instanceof Error?E.message:String(E),mA({ready:_e(),loading:!1,error:c.lastError})),!1)).finally(()=>{c.texturePromise===W&&(c.texturePromise=null)}),c.texturePromise=W,W},dr=async c=>{for(let Q of Dn(c))await On(Q)},Gn=async(c,Q,h,F)=>F?bf({key:ir(c.cacheKey,Q,h),blob:F,width:I,height:C,updatedAt:c.index*1e6+Q*2+(h==="to"?1:0)}):!1,mo=async(c,Q,h)=>{wr(c);let F=!0;for(let T=0;T<Q;T+=1){let L=c.time+c.duration*T/(Q-1);pA(()=>{Ke(L,!1)}),await uo(),pA(()=>{Ke(L,!0)});let k=document.getElementById(c.fromId),W=document.getElementById(c.toId);if(!k||!W)continue;let[E,D]=await Promise.all([WA(k),WA(W)]),[q,V]=await Promise.all([ro(E),ro(D)]);if(OA(E),OA(D),!q||!V)throw new Error("[HyperShader] Failed to encode transition snapshot");c.frames.push({sampleIndex:T,fromBlob:q,toBlob:V,fromTex:null,toTex:null}),(await Promise.all([Gn(c,T,"from",q),Gn(c,T,"to",V)])).every(Boolean)||(F=!1,c.lastError="[HyperShader] Failed to persist one or more transition snapshots"),h(T+1)}c.ready=!0,c.dirty=!1,c.fallback=!1,c.persisted=F,c.textureReady=!1},ue=null,Nn=()=>ue||(ue=(async()=>{let c=b.filter(E=>!gr(E)&&(E.dirty||!E.ready)),Q=c.map(E=>({cache:E,sampleCount:Qo(E)}));for(let E of Q)E.cache.cacheKey=Uo(E.cache,E.sampleCount);let h=Q.reduce((E,D)=>E+D.sampleCount,0),F=Q[0],T=!1;if(mA({ready:!1,progress:0,total:h,currentTransition:F?1:void 0,transitionTotal:Q.length||void 0,transitionFrame:F?0:void 0,transitionFrames:F?.sampleCount,phase:F?"cached":void 0,loading:T}),c.length===0){if(G=!0,mA({ready:!0,progress:0,total:0,currentTransition:void 0,transitionTotal:void 0,transitionFrame:void 0,transitionFrames:void 0,phase:void 0,loading:!1}),IA){let E=JA,D=ft(E,uA);await dr(D),IA&&(IA=!1,JA=[],se=!1,pA(()=>lr(...E)),uA=GA())}ue=null;return}uA=GA();let L=N.paused(),k=r.map(E=>{let D=document.getElementById(E);return{scene:D,opacity:D?.style.opacity??"",pointerEvents:D?.style.pointerEvents??""}});X=!0,U.style.display="none",ur();let W=0;try{for(let D=0;D<Q.length;D+=1){let q=Q[D];if(!q)continue;let{cache:V,sampleCount:sA}=q,fA=D+1,YA=W;wr(V);try{mA({ready:!1,progress:YA,total:h,currentTransition:fA,transitionTotal:Q.length,transitionFrame:0,transitionFrames:sA,phase:"cached",loading:T}),await po(V,sA,Me=>{W=YA+Me,mA({ready:!1,progress:W,total:h,currentTransition:fA,transitionTotal:Q.length,transitionFrame:Me,transitionFrames:sA,phase:"cached",loading:T})})||(W=YA,T=!0,mA({ready:!1,progress:W,total:h,currentTransition:fA,transitionTotal:Q.length,transitionFrame:0,transitionFrames:sA,phase:"capturing",loading:!0}),await mo(V,sA,Me=>{W=YA+Me,mA({ready:!1,progress:W,total:h,currentTransition:fA,transitionTotal:Q.length,transitionFrame:Me,transitionFrames:sA,phase:"capturing",loading:!0})}),!V.persisted&&V.lastError&&mA({ready:!1,loading:T,error:V.lastError}))}catch(bA){W=YA+sA,V.fallback=!0,V.ready=!0,V.dirty=!1,V.lastError=bA instanceof Error?bA.message:String(bA),console.warn("[HyperShader] Transition capture failed; using CSS fallback:",bA),mA({ready:!1,progress:W,total:h,currentTransition:fA,transitionTotal:Q.length,transitionFrame:sA,transitionFrames:sA,phase:"finalizing",loading:T,error:V.lastError})}W=YA+sA}xf(i,new Set(b.map(D=>D.cacheKey).filter(Boolean))),G=_e();let E=Q[Q.length-1];mA({ready:G,progress:W,total:h,currentTransition:Q.length,transitionTotal:Q.length,transitionFrame:E?.sampleCount,transitionFrames:E?.sampleCount,phase:"finalizing",loading:!1})}catch(E){console.warn("[HyperShader] Pre-capture failed, keeping DOM fallback visible:",E),G=_e(),mA({ready:G,progress:W,total:h,phase:"finalizing",loading:!1,error:E instanceof Error?E.message:String(E)})}finally{let E=uA,D=(IA||!L)&&!se,q=IA?JA:[],V=ft(q,E),sA=null;D&&(await dr(V),sA=V),D=(IA||!L)&&!se,q=IA?JA:[],V=ft(q,E),D&&V!==sA&&await dr(V),f.active=!1,f.transitionIndex=-1,U.style.display="none";try{pA(()=>{wo(E,!1)})}catch(fA){console.warn("[HyperShader] A timeline callback failed while restoring the playhead:",fA)}X=!1,uA=E;for(let fA of k)fA.scene&&(fA.scene.style.opacity=fA.opacity,fA.scene.style.pointerEvents=fA.pointerEvents);ne(),window.dispatchEvent(new CustomEvent("hyperShader:ready",{detail:{compositionId:i,progress:W,total:h}})),ue=null,D?(IA=!1,JA=[],se=!1,pA(()=>lr(...q)),uA=GA()):(IA=!1,JA=[],se=!1,ur())}})(),ue),vo=Fo();window.addEventListener("beforeunload",()=>{for(let c of vo)c.disconnect()},{once:!0});let Eo=Promise.resolve().then(()=>Nn()),Cr=window;return Cr.__hf=Cr.__hf||{},Cr.__hf.shaderTransitionsReady=Eo,window.__hfSuppressSceneMutations=c=>pA(c),En(i,N,A.timeline),N}function En(A,e,r){if(!r){let t=window;t.__timelines=t.__timelines||{},t.__timelines[A]=e}}function Lf(A,e,r,t,n){let s=A.timeline||gsap.timeline({paused:!0});if(A.timeline){let o=Number(n?.getAttribute("data-duration")||"40");s.to({t:0},{t:1,duration:o,ease:"none"},0)}for(let o=1;o<e.length;o++){let a=e[o];a&&s.set(`#${a}`,{opacity:0},0)}for(let o=0;o<r.length;o++){let a=r[o],B=e[o],l=e[o+1];if(!B||!l)continue;let u=a.duration??or,f=a.ease??vn,d=a.time;a.shader===void 0?(s.fromTo(`#${l}`,{opacity:0},{opacity:1,duration:u,ease:f},d),s.fromTo(`#${B}`,{opacity:1},{opacity:0,duration:u,ease:f},d)):(s.set(`#${l}`,{opacity:1},d),s.set(`#${B}`,{opacity:0},d+u))}if(typeof window<"u"&&!!window.__HF_PAGE_SIDE_COMPOSITING__){let o=A.bgColor??"#000",a=A.accentColor?ao(A.accentColor):gt,B=Number(n?.getAttribute("data-width")),l=Number(n?.getAttribute("data-height")),u=Number.isFinite(B)&&B>0?B:1920,f=Number.isFinite(l)&&l>0?l:1080;nr({scenes:e,transitions:r,bgColor:o,accentColors:a,width:u,height:f,defaultDuration:or})}return En(t,s,A.timeline),s}var Sf=new Map([["domain-warp-dissolve","domain-warp"],["chromatic-radial-split","chromatic-split"]]);function yn(A,e){if(!Number.isFinite(e)||e<=0)throw new Error(`[playSeamTransitionLoop] ${A} must be a finite number above 0, got ${e}`)}function lo(A,e,r,t,n={}){let s=Ue(Sf.get(t)??t),i=n.width??A.width,o=n.height??A.height,a=n.loopMs??1e3;yn("width",i),yn("height",o),yn("loopMs",a);let B=Qe(A,i,o);if(!B)throw new Error(`[playSeamTransitionLoop] No WebGL context available for "${t}"`);let l=B,u=null,f=null,d=null,g=null,w;try{u=de(l),f=Ce(l,s),d=SA(l),g=SA(l),NA(l,d,e),NA(l,g,r),w={quadBuf:u,prog:f,texFrom:d,texTo:g}}catch(C){throw d&&l.deleteTexture(d),g&&l.deleteTexture(g),f&&l.deleteProgram(f),u&&l.deleteBuffer(u),C}let x=!1,U=0,p=null,v=()=>{},y=new Promise(C=>{v=C});function I(C){if(x)return;let b=!1;p===null&&(p=C,b=!0);let _=(C-p)%a/a,S=_<.5?_*2:(1-_)*2;he(l,w.quadBuf,w.prog,w.texFrom,w.texTo,S,void 0,i,o),b&&v(),U=requestAnimationFrame(I)}return U=requestAnimationFrame(I),{ready:y,stop:()=>{x||(x=!0,cancelAnimationFrame(U),v(),l.deleteTexture(w.texFrom),l.deleteTexture(w.texTo),l.deleteProgram(w.prog),l.deleteBuffer(w.quadBuf))}}}0&&(module.exports={PAGE_COMPOSITOR_BUILD_CANARY,PAGE_COMPOSITOR_CANVAS_ID,SHADER_NAMES,init,installPageSideCompositor,isHtmlInCanvasCaptureSupported,isPageSideCompositingSupported,playSeamTransitionLoop});
|
|
15
|
+
${yf(e)}`):"missing"}function to(A,e){for(let r of e)A.style.removeProperty(r);A.getAttribute("style")?.trim()===""&&A.removeAttribute("style")}function yf(A){let e=A.cloneNode(!0);return to(e,["opacity","visibility","pointer-events"]),e.querySelectorAll("[data-start]").forEach(r=>{to(r,["visibility"])}),e.outerHTML}function ir(A,e,r){return`${A}:sample:${e}:${r}`}function If(){return typeof indexedDB>"u"?Promise.resolve(null):new Promise(A=>{let e=indexedDB.open(gf,wf);e.onupgradeneeded=()=>{let r=e.result;r.objectStoreNames.contains(MA)||r.createObjectStore(MA,{keyPath:"key"})},e.onerror=()=>A(null),e.onblocked=()=>A(null),e.onsuccess=()=>{let r=e.result;r.onversionchange=()=>{r.close(),lt=null},A(r)}})}var lt=null;function ar(A){try{A?.close()}catch{}lt=null}function Hn(){return lt=lt||If(),lt}async function mn(A){let e=await Hn();return e?new Promise(r=>{try{let n=e.transaction(MA,"readonly").objectStore(MA).get(A);n.onerror=()=>r(null),n.onsuccess=()=>{let s=n.result;s&&typeof s=="object"&&"blob"in s&&s.blob instanceof Blob?r(s):r(null)}}catch{ar(e),r(null)}}):null}async function bf(A){let e=await Hn();return e?new Promise(r=>{try{let t=e.transaction(MA,"readwrite");t.oncomplete=()=>r(!0),t.onerror=()=>r(!1),t.objectStore(MA).put(A)}catch{ar(e),r(!1)}}):!1}function ro(A){return new Promise(e=>{try{A.toBlob(r=>e(r),"image/png")}catch{e(null)}})}async function xf(A,e,r=df){let t=await Hn();if(!t)return;let n=await new Promise(w=>{try{let U=t.transaction(MA,"readonly").objectStore(MA).getAll();U.onerror=()=>w([]),U.onsuccess=()=>{let p=[];for(let v of U.result)if(v&&typeof v=="object"&&"key"in v&&typeof v.key=="string"){let y="updatedAt"in v&&typeof v.updatedAt=="number"?v.updatedAt:0;p.push({key:v.key,updatedAt:y})}w(p)}}catch{ar(t),w([])}}),s=`${A}:`,i=w=>{for(let x of e)if(w.startsWith(`${x}:sample:`))return!0;return!1},o=n.filter(w=>w.key.startsWith(s)&&!i(w.key)).map(w=>w.key),a=new Set(o),B=n.filter(w=>!a.has(w.key)),l=B.filter(w=>i(w.key)).length,u=B.filter(w=>!i(w.key)).sort((w,x)=>x.updatedAt-w.updatedAt),f=Math.max(0,r-l),d=u.length>f?u.slice(f).map(w=>w.key):[],g=Array.from(new Set([...o,...d]));g.length!==0&&await new Promise(w=>{try{let x=t.transaction(MA,"readwrite");x.oncomplete=()=>w(),x.onerror=()=>w();let U=x.objectStore(MA);for(let p of g)U.delete(p)}catch{ar(t),w()}})}function no(A){return typeof createImageBitmap=="function"?createImageBitmap(A):new Promise((e,r)=>{let t=URL.createObjectURL(A),n=new Image;n.onload=()=>{URL.revokeObjectURL(t),e(n)},n.onerror=()=>{URL.revokeObjectURL(t),r(new Error("[HyperShader] Failed to decode cached snapshot"))},n.src=t})}function so(A){typeof ImageBitmap<"u"&&A instanceof ImageBitmap&&A.close()}function io(A,e,r){let t=SA(A);return A.bindTexture(A.TEXTURE_2D,t),A.texImage2D(A.TEXTURE_2D,0,A.RGBA,e,r,0,A.RGBA,A.UNSIGNED_BYTE,null),t}function oo(A,e){let r=A.createFramebuffer();if(!r)throw new Error("[HyperShader] Failed to create framebuffer");return A.bindFramebuffer(A.FRAMEBUFFER,r),A.framebufferTexture2D(A.FRAMEBUFFER,A.COLOR_ATTACHMENT0,A.TEXTURE_2D,e,0),A.bindFramebuffer(A.FRAMEBUFFER,null),r}function Tf(A,e,r){let t=A?.ownerDocument||document,n=A||t.body;if(!n)return null;n.querySelector("[data-hyper-shader-loading]")?.remove();let s=t.createElement("div");s.setAttribute("data-hyper-shader-loading",""),s.setAttribute("data-hyperframes-ignore",""),s.setAttribute("data-hyperframes-picker-block",""),s.setAttribute("data-hf-ignore",""),s.setAttribute("data-no-capture",""),s.setAttribute("data-no-inspect",""),s.setAttribute("data-no-pick",""),s.setAttribute("draggable","false"),s.setAttribute("role","status"),s.setAttribute("aria-label","Preparing scene transitions"),s.style.cssText=["position:absolute","inset:0",`width:${e}px`,`height:${r}px`,"z-index:2147483647","display:none","place-items:center","opacity:1","transition:opacity 240ms ease-out","background:#030504","pointer-events:auto","color:#f4f7fb","cursor:default","touch-action:none","user-select:none","-webkit-user-select:none","-webkit-user-drag:none"].join(";");let i=y=>{y.preventDefault(),y.stopPropagation()};for(let y of["selectstart","dragstart","pointerdown","mousedown","touchstart"])s.addEventListener(y,i,{capture:!0});let o=t.createElement("div");o.setAttribute("draggable","false"),o.style.cssText=["display:grid","grid-template-rows:172px 72px 44px 44px 54px","justify-items:center","align-items:center","gap:0","width:min(1040px,82%)","padding:42px","box-sizing:border-box","text-align:center","font-family:Inter,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif","user-select:none","-webkit-user-select:none","-webkit-user-drag:none"].join(";");let a=t.createElement("div");a.setAttribute("data-hf-loader-mark-frame",""),a.style.cssText=["width:172px","height:172px","display:grid","place-items:center","overflow:visible","transform-origin:50% 50%","will-change:transform,opacity","user-select:none","-webkit-user-select:none","-webkit-user-drag:none"].join(";"),a.innerHTML=['<svg width="156" height="156" viewBox="0 0 100 100" fill="none" aria-hidden="true" draggable="false" style="display:block;overflow:visible;filter:drop-shadow(0 0 7px rgba(79,219,94,.2));user-select:none;-webkit-user-select:none">','<g data-hf-loader-mark transform="translate(50 50)">','<g data-hf-loader-core transform="scale(1)" opacity=".92">','<g transform="translate(-50 -50)">','<path data-hf-loader-left 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(#hyper-shader-loader-grad-left)"/>','<path data-hf-loader-right 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(#hyper-shader-loader-grad-right)"/>',"</g>","</g>","</g>","<defs>",'<linearGradient id="hyper-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="hyper-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 B=a.querySelector("svg");if(!B)return null;B.setAttribute("draggable","false");let l=t.createElement("div");l.style.cssText=["width:100%","height:72px","display:flex","align-items:center","justify-content:center","overflow:hidden","white-space:nowrap","text-overflow:ellipsis","font:600 44px/1.15 Inter,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif","letter-spacing:0","text-align:center","color:#f4f7fb"].join(";");let u=t.createElement("span");u.textContent=sr[0]??"Preparing scene transitions";let f=t.createElement("div");f.textContent="Sampling animated scene frames so shader transitions stay in motion.",f.style.cssText=["width:min(760px,100%)","height:44px","overflow:hidden","white-space:nowrap","text-overflow:ellipsis","color:rgba(244,247,251,0.64)","font:400 24px/1.5 Inter,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif"].join(";"),l.appendChild(u);let d=t.createElement("div");d.setAttribute("aria-hidden","true"),d.style.cssText=["width:min(520px,100%)","height:10px","overflow:hidden","border-radius:999px","background:rgba(255,255,255,0.1)"].join(";");let g=t.createElement("div");g.style.cssText=["width:100%","height:100%","transform:scaleX(0)","transform-origin:left center","border-radius:inherit","background:linear-gradient(90deg,#06e3fa,#4fdb5e)","transition:transform 160ms ease"].join(";");let w=t.createElement("div");w.style.cssText=["width:min(560px,100%)","height:54px","overflow:hidden","display:grid","grid-template-rows:repeat(2,27px)","font:500 18px/27px 'IBM Plex Mono','SF Mono','Fira Code',monospace","font-variant-numeric:tabular-nums","color:rgba(244,247,251,0.48)"].join(";");let x=y=>{let I=t.createElement("div");I.style.cssText=["display:grid","grid-template-columns:minmax(0,1fr) auto","align-items:center","column-gap:28px","width:100%","height:27px","white-space:nowrap"].join(";");let C=t.createElement("span");C.textContent=y,C.style.cssText=["overflow:hidden","text-overflow:ellipsis","text-align:left","min-width:0"].join(";");let b=t.createElement("span");return b.style.cssText=["min-width:76px","text-align:right"].join(";"),I.appendChild(C),I.appendChild(b),w.appendChild(I),{row:I,label:C,value:b}},U=x("transition"),p=x("transition frame");d.appendChild(g),o.appendChild(a),o.appendChild(l),o.appendChild(f),o.appendChild(d),o.appendChild(w),s.appendChild(o),n.appendChild(s);let v=null;return{show:()=>{v&&(clearTimeout(v),v=null),s.style.display="grid",s.style.opacity="1",s.style.pointerEvents="auto"},update:y=>{let{progress:I,total:C}=y,b=C>0?le(I/C,0,1):0,_=Math.min(sr.length-1,Math.floor(b*sr.length)),S=sr[_]??"Preparing scene transitions";u.textContent=S,g.style.transform=`scaleX(${b})`;let K=y.currentTransition!==void 0&&y.transitionTotal!==void 0?`${y.currentTransition}/${y.transitionTotal}`:C>0?`${I}/${C}`:"",R=y.transitionFrame!==void 0&&y.transitionFrames!==void 0?`${y.transitionFrame}/${y.transitionFrames}`:"",J=y.phase==="cached"?"loading cached transition frames":y.phase==="finalizing"?"finalizing":"rendering transition frames";U.label.textContent=y.currentTransition!==void 0?"transition":"transition frames",U.value.textContent=K,p.label.textContent=J,p.value.textContent=R,p.row.style.visibility=R?"visible":"hidden",s.setAttribute("aria-valuenow",String(Math.round(b*100)))},hide:()=>{v&&clearTimeout(v),s.style.display!=="none"&&(s.style.opacity="0",s.style.pointerEvents="none",v=setTimeout(()=>{s.style.display="none",s.style.opacity="1",s.style.pointerEvents="auto",v=null},240))}}}function co(A){let{bgColor:e,scenes:r,transitions:t}=A;if(r.length!==t.length+1)throw new Error(`[HyperShader] init(): expected scenes.length === transitions.length + 1, got scenes=${r.length}, transitions=${t.length}`);if(typeof document<"u"){let c=[],Q=[];for(let h of r){let F=document.getElementById(h);F?F.classList.contains("scene")||Q.push(h):c.push(h)}if(c.length>0)throw new Error(`[HyperShader] init(): scene ids not found in DOM: ${c.join(", ")}`);if(Q.length>0)throw new Error(`[HyperShader] init(): elements found but missing .scene class: ${Q.join(", ")}`)}if(typeof window<"u"){let c=window;c.__hf&&(c.__hf.transitions=t.map((Q,h)=>({time:Q.time,duration:Q.duration??or,shader:Q.shader,ease:Q.ease??vn,fromScene:r[h]??"",toScene:r[h+1]??""})))}let n=A.accentColor?ao(A.accentColor):gt,s=document.querySelector("[data-composition-id]"),i=A.compositionId||s?.getAttribute("data-composition-id")||"main",o=Number(s?.getAttribute("data-width")),a=Number(s?.getAttribute("data-height")),B=Number.isFinite(o)&&o>0?o:ge,l=Number.isFinite(a)&&a>0?a:we;if(typeof window<"u"&&!!window.__HF_VIRTUAL_TIME__)return Lf(A,r,t,i,s);let f={active:!1,prog:null,progress:0,transitionIndex:-1},d=document.getElementById("gl-canvas");d||(d=document.createElement("canvas"),d.id="gl-canvas",d.style.cssText="position:absolute;top:0;left:0;z-index:100;pointer-events:none;display:none;",(s||document.body).appendChild(d)),d.width=B,d.height=l,d.style.width=`${B}px`,d.style.height=`${l}px`;let g=Qe(d,B,l);if(!g){console.warn("[HyperShader] WebGL unavailable, shader transitions disabled.");let c=A.timeline||gsap.timeline({paused:!0});return En(i,c,A.timeline),c}let w=de(g),x=new Map;for(let c of t)if(c.shader!==void 0&&!x.has(c.shader))try{x.set(c.shader,Ce(g,Ue(c.shader)))}catch(Q){console.error(`[HyperShader] Failed to compile "${c.shader}":`,Q)}let U=d,p=le(hf(A.previewCaptureFps,30),1,60),v=pf(),y=mf(),I=Math.max(1,Math.round(B*v)),C=Math.max(1,Math.round(l*v)),b=[],_=Ur(g,ff,["precision mediump float;","varying vec2 v_uv;","uniform sampler2D u_a;","uniform sampler2D u_b;","uniform float u_mix;","void main(){","gl_FragColor=mix(texture2D(u_a,v_uv),texture2D(u_b,v_uv),u_mix);","}"].join("")),S={a:g.getUniformLocation(_,"u_a"),b:g.getUniformLocation(_,"u_b"),mix:g.getUniformLocation(_,"u_mix"),pos:g.getAttribLocation(_,"a_pos")},K=io(g,I,C),R=io(g,I,C),J=oo(g,K),M=oo(g,R),O=null,eA=()=>y!=="internal"?null:(O=O||Tf(s,B,l),O),G=!1,X=!1,dA=0,aA=0,BA=new WeakMap,FA=()=>{aA=performance.now()+120},RA=c=>{BA.has(c)||BA.set(c,c.style.pointerEvents)},CA=(c,Q,h)=>{RA(c),FA(),c.style.opacity=h,c.style.pointerEvents=Q?BA.get(c)??"":"none"},LA=(c,Q,h)=>{CA(c,Q,h),c.style.visibility=Q?"visible":"hidden"},hA=(c,Q,h,F)=>{r.forEach(T=>{let L=document.getElementById(T);L&&(T===c?LA(L,!0,h):T===Q?LA(L,!0,F):CA(L,!1,"0"))})},OA=c=>{c.width=0,c.height=0},WA=c=>zi(c,e,B,l,{forceVisible:!0,scale:v}),uo=()=>new Promise(c=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>c())})}),In=c=>!!(c?.fromTex&&c.toTex),fo=(c,Q)=>{if(c.frames.length===0)return null;let h=le(Q,0,1)*(c.frames.length-1),F=Math.floor(h),T=Math.ceil(h),L=c.frames[F]??c.frames[c.frames.length-1],k=c.frames[T]??L;return!In(L)||!In(k)?null:{a:L,b:k,mix:h-F}},bn=(c,Q,h,F)=>{g.bindFramebuffer(g.FRAMEBUFFER,c),g.viewport(0,0,I,C),g.useProgram(_),g.activeTexture(g.TEXTURE0),g.bindTexture(g.TEXTURE_2D,Q),g.uniform1i(S.a,0),g.activeTexture(g.TEXTURE1),g.bindTexture(g.TEXTURE_2D,h),g.uniform1i(S.b,1),g.uniform1f(S.mix,F),g.bindBuffer(g.ARRAY_BUFFER,w),g.enableVertexAttribArray(S.pos),g.vertexAttribPointer(S.pos,2,g.FLOAT,!1,0,0),g.drawArrays(g.TRIANGLE_STRIP,0,4),g.bindFramebuffer(g.FRAMEBUFFER,null),g.viewport(0,0,B,l)},xn=c=>{On(c).then(Q=>{if(!Q)return;let h=N.time();h>=c.time&&h<c.time+c.duration&&ne()})},go=c=>{let Q=0;for(let h=0;h<b.length;h+=1){let F=b[h];F&&c>=F.time+F.duration&&(Q=h+1)}return le(Q,0,r.length-1)},Tn=c=>{let Q=go(c);r.forEach((h,F)=>{let T=document.getElementById(h);if(!T)return;let L=F===Q;CA(T,L,L?"1":"0")})},Ln=(c,Q)=>{let h=document.getElementById(c.fromId),F=document.getElementById(c.toId);if(!h||!F)return;let T=Q*Q*(3-2*Q);U.style.display="none",hA(c.fromId,c.toId,String(1-T),String(T))},ne=()=>{if(X)return;let c=N.time(),Q=b.find(k=>!k.fallback&&k.ready&&!k.dirty&&!k.textureReady&&c>=k.time-Ao&&c<k.time+k.duration);Q&&xn(Q);let h=b.findIndex(k=>c>=k.time&&c<k.time+k.duration);if(h<0){f.active=!1,f.transitionIndex=-1,U.style.display="none",Tn(c);return}let F=b[h];if(!F||F.dirty||!F.ready){U.style.display="none";return}if(F.fallback||F.prog===null){f.active=!0,f.transitionIndex=h,f.prog=null,f.progress=le((c-F.time)/F.duration,0,1),Ln(F,f.progress);return}if(!F.textureReady){xn(F),U.style.display="none";return}let T=F.prog;f.active=!0,f.transitionIndex=h,f.prog=T,f.progress=le((c-F.time)/F.duration,0,1),Qr(F);let L=fo(F,f.progress);if(!L){U.style.display="none";return}hA(F.fromId,F.toId,"1","1"),bn(J,L.a.fromTex,L.b.fromTex,L.mix),bn(M,L.a.toTex,L.b.toTex,L.mix),U.style.display="block",he(g,w,T,K,R,f.progress,n,B,l)},N;if(A.timeline){N=A.timeline;let c=Number(s?.getAttribute("data-duration")||"40");N.to({t:0},{t:1,duration:c,ease:"none",onUpdate:ne},0)}else N=gsap.timeline({paused:!0,onUpdate:ne});let cr=0,Se=c=>(...Q)=>{cr+=1;try{return c(...Q)}finally{cr-=1}},lr=Se(N.play.bind(N)),ur=Se(N.pause.bind(N)),Ke=Se(N.time.bind(N)),Sn=typeof N.seek=="function"?Se(N.seek.bind(N)):null,ut=typeof N.totalTime=="function"?N.totalTime.bind(N):null,Kn=N;for(let c of["timeScale","paused","reversed"]){let Q=Kn[c];typeof Q=="function"&&(Kn[c]=Se(Q.bind(N)))}let GA=()=>{let c=Ke();return typeof c=="number"&&Number.isFinite(c)?c:0},uA=GA(),De=c=>{typeof c=="number"&&Number.isFinite(c)&&(uA=c)},ft=(c,Q)=>{let h=c[0];return typeof h=="number"&&Number.isFinite(h)?h:Q},wo=(c,Q)=>{let h=Ke(c,Q);return typeof h=="number"?N:h},pA=c=>{dA+=1;try{return c()}finally{dA-=1,aA=performance.now()+120}},IA=!1,JA=[],se=!1;N.play=((...c)=>{De(c[0]);let Q=ft(c,uA);if(!_e()||!Co(Q))return se=!1,IA=!0,JA=c,Nn(),N;let h=pA(()=>lr(...c));return uA=GA(),h}),N.pause=((...c)=>{if(IA=!1,JA=[],De(c[0]),X)return se=!0,N;let Q=pA(()=>ur(...c));return uA=GA(),c.length>0&&ne(),Q}),N.time=((...c)=>{if(c.length===0)return X||(uA=GA()),uA;if(De(c[0]),X)return N;let Q=pA(()=>Ke(...c));return X||(uA=GA()),ne(),Q}),Sn&&(N.seek=((...c)=>{if(De(c[0]),X)return N;let Q=pA(()=>Sn(...c));return X||(uA=GA()),ne(),Q})),ut&&(N.totalTime=((...c)=>cr>0?ut(...c):c.length===0?X?uA:ut():(De(c[0]),ut(...c)))),qi(),d.style.display="none";for(let c=0;c<t.length;c++){let Q=t[c],h=r[c],F=r[c+1];if(!h||!F)continue;let T=Q.shader!==void 0,L=T?x.get(Q.shader)??null:null,k=!T||L===null;T&&L===null&&console.warn(`[HyperShader] Shader "${Q.shader}" failed to compile, falling back to CSS crossfade.`);let W=k?null:L,E=Q.duration??or,D=Q.ease??vn,q=Q.time,V=b.length;b.push({index:V,time:q,duration:E,fromId:h,toId:F,prog:W,frames:[],cacheKey:"",dirty:!k,ready:k,fallback:k,persisted:k,textureReady:!1,texturePromise:null,textureGeneration:0,textureAccess:0}),N.call(()=>{X||pA(()=>{let fA=document.getElementById(h),YA=document.getElementById(F);if(!fA||!YA)return;f.prog=W,f.transitionIndex=V,f.progress=0,f.active=!0;let bA=b[V];if(bA?.fallback){Ln(bA,0);return}U.style.display=bA?.ready&&!bA.dirty&&bA.textureReady?"block":"none",hA(h,F,"1","1")})},null,q);let sA={p:0};N.to(sA,{p:1,duration:E,ease:D,onUpdate:()=>{f.progress=sA.p}},q),N.call(()=>{pA(()=>{f.active=!1,f.transitionIndex=-1,U.style.display="none",Tn(q+E)})},null,q+E)}let Qo=c=>Math.max(2,Math.ceil(c.duration*p)+1),_e=()=>b.every(c=>c.ready&&!c.dirty),Dn=c=>{let Q=[],h=new Set,F=L=>{h.has(L.index)||L.fallback||L.dirty||!L.ready||(Q.push(L),h.add(L.index))};for(let L of b)c>=L.time&&c<L.time+L.duration&&F(L);let T=b.find(L=>L.time>=c);T&&F(T);for(let L of b)L.time>=c&&L.time-c<=Ao&&F(L);return Q.slice(0,$i)},Co=c=>Dn(c).every(Q=>Q.textureReady),_n=0,fr=c=>{c.textureGeneration+=1;for(let Q of c.frames)Q.fromTex&&(g.deleteTexture(Q.fromTex),Q.fromTex=null),Q.toTex&&(g.deleteTexture(Q.toTex),Q.toTex=null);c.textureReady=!1},gr=c=>c.prog===null,wr=c=>{if(fr(c),c.texturePromise=null,c.frames=[],c.lastError=void 0,gr(c)){c.ready=!0,c.fallback=!0,c.persisted=!0,c.textureReady=!1;return}c.ready=!1,c.fallback=!1,c.persisted=!1,c.textureReady=!1},Qr=c=>{_n+=1,c.textureAccess=_n},ho=c=>{let Q=b.filter(h=>h!==c&&h.textureReady).sort((h,F)=>h.textureAccess-F.textureAccess);for(;Q.length>=$i;){let h=Q.shift();if(!h)break;fr(h)}},Uo=(c,Q)=>{let h=[Qf,i,c.index,c.fromId,eo(c.fromId),c.toId,eo(c.toId),t[c.index]?.shader||"unknown",c.time,c.duration,Q,p,v,I,C,B,l].join("|");return`${i}:${c.index}:${Br(h)}`},mA=c=>{let Q=window;Q.__hf=Q.__hf||{},Q.__hf.shaderTransitions=Q.__hf.shaderTransitions||{};let F={...Q.__hf.shaderTransitions[i]||{ready:!1,progress:0,total:0,dirtyTransitions:b.length,captureScale:v,textureWidth:I,textureHeight:C,fps:p,loading:!0},...c};if(F.dirtyTransitions=b.filter(T=>T.dirty||!T.ready).length,Q.__hf.shaderTransitions[i]=F,window.parent?.postMessage({source:"hf-preview",type:"shader-transition-state",compositionId:i,state:F},"*"),F.loading){let T=eA();T?.show(),T?.update({progress:F.progress,total:F.total,currentTransition:F.currentTransition,transitionTotal:F.transitionTotal,transitionFrame:F.transitionFrame,transitionFrames:F.transitionFrames,phase:F.phase})}F.ready?O?.hide():F.loading||O?.hide()},Mn=()=>X||dA>0||performance.now()<aA||!N.paused(),Rn=c=>{if(c.size===0)return;let Q=!1;for(let h of b)!c.has(h.fromId)&&!c.has(h.toId)||gr(h)||(wr(h),h.dirty=!0,h.cacheKey="",Q=!0);Q&&(G=_e(),mA({ready:G,progress:0,total:0,currentTransition:void 0,transitionTotal:void 0,transitionFrame:void 0,transitionFrames:void 0,phase:void 0,loading:!1}),window.dispatchEvent(new CustomEvent("hyperShader:dirty",{detail:{compositionId:i,scenes:Array.from(c)}})))},Fo=()=>{let c=r.map(F=>document.getElementById(F)).filter(F=>F instanceof HTMLElement),Q=[];for(let F of c){let T=new MutationObserver(L=>{if(Mn())return;let k=new Set;for(let W of L){let E=W.target instanceof Element?W.target:W.target.parentElement;if(E)for(let D of c)(D===E||D.contains(E))&&k.add(D.id)}Rn(k)});T.observe(F,{attributes:!0,characterData:!0,childList:!0,subtree:!0}),Q.push(T)}let h=new MutationObserver(()=>{Mn()||Rn(new Set(r))});return h.observe(document.head,{attributes:!0,characterData:!0,childList:!0,subtree:!0}),Q.push(h),Q},po=async(c,Q,h)=>{let F=[];for(let T=0;T<Q;T+=1){let[L,k]=await Promise.all([mn(ir(c.cacheKey,T,"from")),mn(ir(c.cacheKey,T,"to"))]);if(!L||!k){for(let W of F)g.deleteTexture(W.fromTex),g.deleteTexture(W.toTex);return!1}F.push({sampleIndex:T,fromBlob:L.blob,toBlob:k.blob,fromTex:null,toTex:null}),h(T+1)}return c.frames=F,c.ready=!0,c.dirty=!1,c.fallback=!1,c.persisted=!0,c.textureReady=!1,!0},On=c=>{if(c.fallback||c.dirty||!c.ready)return Promise.resolve(!1);if(c.textureReady)return Qr(c),Promise.resolve(!0);if(c.texturePromise)return c.texturePromise;let Q=c.textureGeneration,h=c.frames,F=[],T=()=>c.textureGeneration!==Q||c.dirty||c.frames!==h,L=()=>{let E=new Set;for(let D of F)E.has(D)||(g.deleteTexture(D),E.add(D));for(let D of h)D.fromTex&&!E.has(D.fromTex)&&(g.deleteTexture(D.fromTex),E.add(D.fromTex)),D.toTex&&!E.has(D.toTex)&&(g.deleteTexture(D.toTex),E.add(D.toTex)),D.fromTex=null,D.toTex=null},k=async(E,D)=>{let q=D==="from"?E.fromBlob:E.toBlob;if(q)return q;let V=await mn(ir(c.cacheKey,E.sampleIndex,D));if(V?.blob)return V.blob;throw new Error("[HyperShader] Cached transition snapshot blob is unavailable")},W=Promise.resolve(!1);return W=(async()=>{for(let E of h){if(T())return L(),!1;if(!E.fromTex){let D=await k(E,"from");if(T())return L(),!1;let q=await no(D),V=SA(g);F.push(V);try{if(NA(g,V,q),T())return L(),!1;E.fromTex=V}finally{so(q)}}if(!E.toTex){let D=await k(E,"to");if(T())return L(),!1;let q=await no(D),V=SA(g);F.push(V);try{if(NA(g,V,q),T())return L(),!1;E.toTex=V}finally{so(q)}}c.persisted&&(E.fromBlob=null,E.toBlob=null)}return T()?(L(),!1):(c.textureReady=h.every(E=>!!(E.fromTex&&E.toTex)),c.textureReady&&(Qr(c),ho(c)),c.textureReady)})().catch(E=>(L(),T()||(fr(c),c.fallback=!0,c.ready=!0,c.dirty=!1,c.lastError=E instanceof Error?E.message:String(E),mA({ready:_e(),loading:!1,error:c.lastError})),!1)).finally(()=>{c.texturePromise===W&&(c.texturePromise=null)}),c.texturePromise=W,W},dr=async c=>{for(let Q of Dn(c))await On(Q)},Gn=async(c,Q,h,F)=>F?bf({key:ir(c.cacheKey,Q,h),blob:F,width:I,height:C,updatedAt:c.index*1e6+Q*2+(h==="to"?1:0)}):!1,mo=async(c,Q,h)=>{wr(c);let F=!0;for(let T=0;T<Q;T+=1){let L=c.time+c.duration*T/(Q-1);pA(()=>{Ke(L,!1)}),await uo(),pA(()=>{Ke(L,!0)});let k=document.getElementById(c.fromId),W=document.getElementById(c.toId);if(!k||!W)continue;let[E,D]=await Promise.all([WA(k),WA(W)]),[q,V]=await Promise.all([ro(E),ro(D)]);if(OA(E),OA(D),!q||!V)throw new Error("[HyperShader] Failed to encode transition snapshot");c.frames.push({sampleIndex:T,fromBlob:q,toBlob:V,fromTex:null,toTex:null}),(await Promise.all([Gn(c,T,"from",q),Gn(c,T,"to",V)])).every(Boolean)||(F=!1,c.lastError="[HyperShader] Failed to persist one or more transition snapshots"),h(T+1)}c.ready=!0,c.dirty=!1,c.fallback=!1,c.persisted=F,c.textureReady=!1},ue=null,Nn=()=>ue||(ue=(async()=>{let c=b.filter(E=>!gr(E)&&(E.dirty||!E.ready)),Q=c.map(E=>({cache:E,sampleCount:Qo(E)}));for(let E of Q)E.cache.cacheKey=Uo(E.cache,E.sampleCount);let h=Q.reduce((E,D)=>E+D.sampleCount,0),F=Q[0],T=!1;if(mA({ready:!1,progress:0,total:h,currentTransition:F?1:void 0,transitionTotal:Q.length||void 0,transitionFrame:F?0:void 0,transitionFrames:F?.sampleCount,phase:F?"cached":void 0,loading:T}),c.length===0){if(G=!0,mA({ready:!0,progress:0,total:0,currentTransition:void 0,transitionTotal:void 0,transitionFrame:void 0,transitionFrames:void 0,phase:void 0,loading:!1}),IA){let E=JA,D=ft(E,uA);await dr(D),IA&&(IA=!1,JA=[],se=!1,pA(()=>lr(...E)),uA=GA())}ue=null;return}uA=GA();let L=N.paused(),k=r.map(E=>{let D=document.getElementById(E);return{scene:D,opacity:D?.style.opacity??"",pointerEvents:D?.style.pointerEvents??""}});X=!0,U.style.display="none",ur();let W=0;try{for(let D=0;D<Q.length;D+=1){let q=Q[D];if(!q)continue;let{cache:V,sampleCount:sA}=q,fA=D+1,YA=W;wr(V);try{mA({ready:!1,progress:YA,total:h,currentTransition:fA,transitionTotal:Q.length,transitionFrame:0,transitionFrames:sA,phase:"cached",loading:T}),await po(V,sA,Me=>{W=YA+Me,mA({ready:!1,progress:W,total:h,currentTransition:fA,transitionTotal:Q.length,transitionFrame:Me,transitionFrames:sA,phase:"cached",loading:T})})||(W=YA,T=!0,mA({ready:!1,progress:W,total:h,currentTransition:fA,transitionTotal:Q.length,transitionFrame:0,transitionFrames:sA,phase:"capturing",loading:!0}),await mo(V,sA,Me=>{W=YA+Me,mA({ready:!1,progress:W,total:h,currentTransition:fA,transitionTotal:Q.length,transitionFrame:Me,transitionFrames:sA,phase:"capturing",loading:!0})}),!V.persisted&&V.lastError&&mA({ready:!1,loading:T,error:V.lastError}))}catch(bA){W=YA+sA,V.fallback=!0,V.ready=!0,V.dirty=!1,V.lastError=bA instanceof Error?bA.message:String(bA),console.warn("[HyperShader] Transition capture failed; using CSS fallback:",bA),mA({ready:!1,progress:W,total:h,currentTransition:fA,transitionTotal:Q.length,transitionFrame:sA,transitionFrames:sA,phase:"finalizing",loading:T,error:V.lastError})}W=YA+sA}xf(i,new Set(b.map(D=>D.cacheKey).filter(Boolean))),G=_e();let E=Q[Q.length-1];mA({ready:G,progress:W,total:h,currentTransition:Q.length,transitionTotal:Q.length,transitionFrame:E?.sampleCount,transitionFrames:E?.sampleCount,phase:"finalizing",loading:!1})}catch(E){console.warn("[HyperShader] Pre-capture failed, keeping DOM fallback visible:",E),G=_e(),mA({ready:G,progress:W,total:h,phase:"finalizing",loading:!1,error:E instanceof Error?E.message:String(E)})}finally{let E=uA,D=(IA||!L)&&!se,q=IA?JA:[],V=ft(q,E),sA=null;D&&(await dr(V),sA=V),D=(IA||!L)&&!se,q=IA?JA:[],V=ft(q,E),D&&V!==sA&&await dr(V),f.active=!1,f.transitionIndex=-1,U.style.display="none";try{pA(()=>{wo(E,!1)})}catch(fA){console.warn("[HyperShader] A timeline callback failed while restoring the playhead:",fA)}X=!1,uA=E;for(let fA of k)fA.scene&&(fA.scene.style.opacity=fA.opacity,fA.scene.style.pointerEvents=fA.pointerEvents);ne(),window.dispatchEvent(new CustomEvent("hyperShader:ready",{detail:{compositionId:i,progress:W,total:h}})),ue=null,D?(IA=!1,JA=[],se=!1,pA(()=>lr(...q)),uA=GA()):(IA=!1,JA=[],se=!1,ur())}})(),ue),vo=Fo();window.addEventListener("beforeunload",()=>{for(let c of vo)c.disconnect()},{once:!0});let Eo=Promise.resolve().then(()=>Nn()),Cr=window;return Cr.__hf=Cr.__hf||{},Cr.__hf.shaderTransitionsReady=Eo,window.__hfSuppressSceneMutations=c=>pA(c),En(i,N,A.timeline),N}function En(A,e,r){if(!r){let t=window;t.__timelines=t.__timelines||{},t.__timelines[A]=e}}function Lf(A,e,r,t,n){let s=A.timeline||gsap.timeline({paused:!0});if(A.timeline){let o=Number(n?.getAttribute("data-duration")||"40");s.to({t:0},{t:1,duration:o,ease:"none"},0)}for(let o=1;o<e.length;o++){let a=e[o];a&&s.set(`#${a}`,{opacity:0},0)}for(let o=0;o<r.length;o++){let a=r[o],B=e[o],l=e[o+1];if(!B||!l)continue;let u=a.duration??or,f=a.ease??vn,d=a.time;a.shader===void 0?(s.fromTo(`#${l}`,{opacity:0},{opacity:1,duration:u,ease:f},d),s.fromTo(`#${B}`,{opacity:1},{opacity:0,duration:u,ease:f},d)):(s.set(`#${l}`,{opacity:1},d),s.set(`#${B}`,{opacity:0},d+u))}if(typeof window<"u"&&!!window.__HF_PAGE_SIDE_COMPOSITING__){let o=A.bgColor??"#000",a=A.accentColor?ao(A.accentColor):gt,B=Number(n?.getAttribute("data-width")),l=Number(n?.getAttribute("data-height")),u=Number.isFinite(B)&&B>0?B:1920,f=Number.isFinite(l)&&l>0?l:1080;nr({scenes:e,transitions:r,bgColor:o,accentColors:a,width:u,height:f,defaultDuration:or})}return En(t,s,A.timeline),s}var Sf=new Map([["domain-warp-dissolve","domain-warp"],["chromatic-radial-split","chromatic-split"]]);function yn(A,e){if(!Number.isFinite(e)||e<=0)throw new Error(`[playSeamTransitionLoop] ${A} must be a finite number above 0, got ${e}`)}function lo(A,e,r,t,n={}){let s=Ue(Sf.get(t)??t),i=n.width??A.width,o=n.height??A.height,a=n.loopMs??1e3;yn("width",i),yn("height",o),yn("loopMs",a);let B=Qe(A,i,o);if(!B)throw new Error(`[playSeamTransitionLoop] No WebGL context available for "${t}"`);let l=B,u=null,f=null,d=null,g=null,w;try{u=de(l),f=Ce(l,s),d=SA(l),g=SA(l),NA(l,d,e),NA(l,g,r),w={quadBuf:u,prog:f,texFrom:d,texTo:g}}catch(C){throw d&&l.deleteTexture(d),g&&l.deleteTexture(g),f&&l.deleteProgram(f),u&&l.deleteBuffer(u),C}let x=!1,U=0,p=null,v=()=>{},y=new Promise(C=>{v=C});function I(C){if(x)return;let b=!1;p===null&&(p=C,b=!0);let _=(C-p)%a/a,S=_<.5?_*2:(1-_)*2;he(l,w.quadBuf,w.prog,w.texFrom,w.texTo,S,void 0,i,o),b&&v(),U=requestAnimationFrame(I)}return U=requestAnimationFrame(I),{ready:y,stop:()=>{x||(x=!0,cancelAnimationFrame(U),v(),l.deleteTexture(w.texFrom),l.deleteTexture(w.texTo),l.deleteProgram(w.prog),l.deleteBuffer(w.quadBuf))}}}0&&(module.exports={PAGE_COMPOSITOR_BUILD_CANARY,PAGE_COMPOSITOR_CANVAS_ID,SHADER_NAMES,init,installPageSideCompositor,isHtmlInCanvasCaptureSupported,isPageSideCompositingSupported,playSeamTransitionLoop});
|
|
16
16
|
/*! Bundled license information:
|
|
17
17
|
|
|
18
18
|
html2canvas/dist/html2canvas.esm.js:
|
|
@@ -36,4 +36,3 @@ html2canvas/dist/html2canvas.esm.js:
|
|
|
36
36
|
PERFORMANCE OF THIS SOFTWARE.
|
|
37
37
|
***************************************************************************** *)
|
|
38
38
|
*/
|
|
39
|
-
//# sourceMappingURL=index.cjs.map
|
package/dist/index.global.js
CHANGED
|
@@ -12,7 +12,7 @@ ${t.src?"":t.textContent||""}`).join(`
|
|
|
12
12
|
`);return Br(`${e}
|
|
13
13
|
${r}`)}function eo(A){let e=document.getElementById(A);return e?Br(`${vf(document)}
|
|
14
14
|
${Hf(document)}
|
|
15
|
-
${yf(e)}`):"missing"}function to(A,e){for(let r of e)A.style.removeProperty(r);A.getAttribute("style")?.trim()===""&&A.removeAttribute("style")}function yf(A){let e=A.cloneNode(!0);return to(e,["opacity","visibility","pointer-events"]),e.querySelectorAll("[data-start]").forEach(r=>{to(r,["visibility"])}),e.outerHTML}function ir(A,e,r){return`${A}:sample:${e}:${r}`}function If(){return typeof indexedDB>"u"?Promise.resolve(null):new Promise(A=>{let e=indexedDB.open(gf,wf);e.onupgradeneeded=()=>{let r=e.result;r.objectStoreNames.contains(MA)||r.createObjectStore(MA,{keyPath:"key"})},e.onerror=()=>A(null),e.onblocked=()=>A(null),e.onsuccess=()=>{let r=e.result;r.onversionchange=()=>{r.close(),lt=null},A(r)}})}var lt=null;function ar(A){try{A?.close()}catch{}lt=null}function Hn(){return lt=lt||If(),lt}async function mn(A){let e=await Hn();return e?new Promise(r=>{try{let n=e.transaction(MA,"readonly").objectStore(MA).get(A);n.onerror=()=>r(null),n.onsuccess=()=>{let s=n.result;s&&typeof s=="object"&&"blob"in s&&s.blob instanceof Blob?r(s):r(null)}}catch{ar(e),r(null)}}):null}async function bf(A){let e=await Hn();return e?new Promise(r=>{try{let t=e.transaction(MA,"readwrite");t.oncomplete=()=>r(!0),t.onerror=()=>r(!1),t.objectStore(MA).put(A)}catch{ar(e),r(!1)}}):!1}function ro(A){return new Promise(e=>{try{A.toBlob(r=>e(r),"image/png")}catch{e(null)}})}async function xf(A,e,r=df){let t=await Hn();if(!t)return;let n=await new Promise(w=>{try{let U=t.transaction(MA,"readonly").objectStore(MA).getAll();U.onerror=()=>w([]),U.onsuccess=()=>{let p=[];for(let v of U.result)if(v&&typeof v=="object"&&"key"in v&&typeof v.key=="string"){let y="updatedAt"in v&&typeof v.updatedAt=="number"?v.updatedAt:0;p.push({key:v.key,updatedAt:y})}w(p)}}catch{ar(t),w([])}}),s=`${A}:`,i=w=>{for(let x of e)if(w.startsWith(`${x}:sample:`))return!0;return!1},o=n.filter(w=>w.key.startsWith(s)&&!i(w.key)).map(w=>w.key),a=new Set(o),B=n.filter(w=>!a.has(w.key)),l=B.filter(w=>i(w.key)).length,u=B.filter(w=>!i(w.key)).sort((w,x)=>x.updatedAt-w.updatedAt),f=Math.max(0,r-l),d=u.length>f?u.slice(f).map(w=>w.key):[],g=Array.from(new Set([...o,...d]));g.length!==0&&await new Promise(w=>{try{let x=t.transaction(MA,"readwrite");x.oncomplete=()=>w(),x.onerror=()=>w();let U=x.objectStore(MA);for(let p of g)U.delete(p)}catch{ar(t),w()}})}function no(A){return typeof createImageBitmap=="function"?createImageBitmap(A):new Promise((e,r)=>{let t=URL.createObjectURL(A),n=new Image;n.onload=()=>{URL.revokeObjectURL(t),e(n)},n.onerror=()=>{URL.revokeObjectURL(t),r(new Error("[HyperShader] Failed to decode cached snapshot"))},n.src=t})}function so(A){typeof ImageBitmap<"u"&&A instanceof ImageBitmap&&A.close()}function io(A,e,r){let t=SA(A);return A.bindTexture(A.TEXTURE_2D,t),A.texImage2D(A.TEXTURE_2D,0,A.RGBA,e,r,0,A.RGBA,A.UNSIGNED_BYTE,null),t}function oo(A,e){let r=A.createFramebuffer();if(!r)throw new Error("[HyperShader] Failed to create framebuffer");return A.bindFramebuffer(A.FRAMEBUFFER,r),A.framebufferTexture2D(A.FRAMEBUFFER,A.COLOR_ATTACHMENT0,A.TEXTURE_2D,e,0),A.bindFramebuffer(A.FRAMEBUFFER,null),r}function Tf(A,e,r){let t=A?.ownerDocument||document,n=A||t.body;if(!n)return null;n.querySelector("[data-hyper-shader-loading]")?.remove();let s=t.createElement("div");s.setAttribute("data-hyper-shader-loading",""),s.setAttribute("data-hyperframes-ignore",""),s.setAttribute("data-hyperframes-picker-block",""),s.setAttribute("data-hf-ignore",""),s.setAttribute("data-no-capture",""),s.setAttribute("data-no-inspect",""),s.setAttribute("data-no-pick",""),s.setAttribute("draggable","false"),s.setAttribute("role","status"),s.setAttribute("aria-label","Preparing scene transitions"),s.style.cssText=["position:absolute","inset:0",`width:${e}px`,`height:${r}px`,"z-index:2147483647","display:none","place-items:center","opacity:1","transition:opacity 240ms ease-out","background:#030504","pointer-events:auto","color:#f4f7fb","cursor:default","touch-action:none","user-select:none","-webkit-user-select:none","-webkit-user-drag:none"].join(";");let i=y=>{y.preventDefault(),y.stopPropagation()};for(let y of["selectstart","dragstart","pointerdown","mousedown","touchstart"])s.addEventListener(y,i,{capture:!0});let o=t.createElement("div");o.setAttribute("draggable","false"),o.style.cssText=["display:grid","grid-template-rows:172px 72px 44px 44px 54px","justify-items:center","align-items:center","gap:0","width:min(1040px,82%)","padding:42px","box-sizing:border-box","text-align:center","font-family:Inter,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif","user-select:none","-webkit-user-select:none","-webkit-user-drag:none"].join(";");let a=t.createElement("div");a.setAttribute("data-hf-loader-mark-frame",""),a.style.cssText=["width:172px","height:172px","display:grid","place-items:center","overflow:visible","transform-origin:50% 50%","will-change:transform,opacity","user-select:none","-webkit-user-select:none","-webkit-user-drag:none"].join(";"),a.innerHTML=['<svg width="156" height="156" viewBox="0 0 100 100" fill="none" aria-hidden="true" draggable="false" style="display:block;overflow:visible;filter:drop-shadow(0 0 7px rgba(79,219,94,.2));user-select:none;-webkit-user-select:none">','<g data-hf-loader-mark transform="translate(50 50)">','<g data-hf-loader-core transform="scale(1)" opacity=".92">','<g transform="translate(-50 -50)">','<path data-hf-loader-left 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(#hyper-shader-loader-grad-left)"/>','<path data-hf-loader-right 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(#hyper-shader-loader-grad-right)"/>',"</g>","</g>","</g>","<defs>",'<linearGradient id="hyper-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="hyper-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 B=a.querySelector("svg");if(!B)return null;B.setAttribute("draggable","false");let l=t.createElement("div");l.style.cssText=["width:100%","height:72px","display:flex","align-items:center","justify-content:center","overflow:hidden","white-space:nowrap","text-overflow:ellipsis","font:600 44px/1.15 Inter,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif","letter-spacing:0","text-align:center","color:#f4f7fb"].join(";");let u=t.createElement("span");u.textContent=sr[0]??"Preparing scene transitions";let f=t.createElement("div");f.textContent="Sampling animated scene frames so shader transitions stay in motion.",f.style.cssText=["width:min(760px,100%)","height:44px","overflow:hidden","white-space:nowrap","text-overflow:ellipsis","color:rgba(244,247,251,0.64)","font:400 24px/1.5 Inter,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif"].join(";"),l.appendChild(u);let d=t.createElement("div");d.setAttribute("aria-hidden","true"),d.style.cssText=["width:min(520px,100%)","height:10px","overflow:hidden","border-radius:999px","background:rgba(255,255,255,0.1)"].join(";");let g=t.createElement("div");g.style.cssText=["width:100%","height:100%","transform:scaleX(0)","transform-origin:left center","border-radius:inherit","background:linear-gradient(90deg,#06e3fa,#4fdb5e)","transition:transform 160ms ease"].join(";");let w=t.createElement("div");w.style.cssText=["width:min(560px,100%)","height:54px","overflow:hidden","display:grid","grid-template-rows:repeat(2,27px)","font:500 18px/27px 'IBM Plex Mono','SF Mono','Fira Code',monospace","font-variant-numeric:tabular-nums","color:rgba(244,247,251,0.48)"].join(";");let x=y=>{let I=t.createElement("div");I.style.cssText=["display:grid","grid-template-columns:minmax(0,1fr) auto","align-items:center","column-gap:28px","width:100%","height:27px","white-space:nowrap"].join(";");let C=t.createElement("span");C.textContent=y,C.style.cssText=["overflow:hidden","text-overflow:ellipsis","text-align:left","min-width:0"].join(";");let b=t.createElement("span");return b.style.cssText=["min-width:76px","text-align:right"].join(";"),I.appendChild(C),I.appendChild(b),w.appendChild(I),{row:I,label:C,value:b}},U=x("transition"),p=x("transition frame");d.appendChild(g),o.appendChild(a),o.appendChild(l),o.appendChild(f),o.appendChild(d),o.appendChild(w),s.appendChild(o),n.appendChild(s);let v=null;return{show:()=>{v&&(clearTimeout(v),v=null),s.style.display="grid",s.style.opacity="1",s.style.pointerEvents="auto"},update:y=>{let{progress:I,total:C}=y,b=C>0?le(I/C,0,1):0,_=Math.min(sr.length-1,Math.floor(b*sr.length)),S=sr[_]??"Preparing scene transitions";u.textContent=S,g.style.transform=`scaleX(${b})`;let K=y.currentTransition!==void 0&&y.transitionTotal!==void 0?`${y.currentTransition}/${y.transitionTotal}`:C>0?`${I}/${C}`:"",R=y.transitionFrame!==void 0&&y.transitionFrames!==void 0?`${y.transitionFrame}/${y.transitionFrames}`:"",J=y.phase==="cached"?"loading cached transition frames":y.phase==="finalizing"?"finalizing":"rendering transition frames";U.label.textContent=y.currentTransition!==void 0?"transition":"transition frames",U.value.textContent=K,p.label.textContent=J,p.value.textContent=R,p.row.style.visibility=R?"visible":"hidden",s.setAttribute("aria-valuenow",String(Math.round(b*100)))},hide:()=>{v&&clearTimeout(v),s.style.display!=="none"&&(s.style.opacity="0",s.style.pointerEvents="none",v=setTimeout(()=>{s.style.display="none",s.style.opacity="1",s.style.pointerEvents="auto",v=null},240))}}}function co(A){let{bgColor:e,scenes:r,transitions:t}=A;if(r.length!==t.length+1)throw new Error(`[HyperShader] init(): expected scenes.length === transitions.length + 1, got scenes=${r.length}, transitions=${t.length}`);if(typeof document<"u"){let c=[],Q=[];for(let h of r){let F=document.getElementById(h);F?F.classList.contains("scene")||Q.push(h):c.push(h)}if(c.length>0)throw new Error(`[HyperShader] init(): scene ids not found in DOM: ${c.join(", ")}`);if(Q.length>0)throw new Error(`[HyperShader] init(): elements found but missing .scene class: ${Q.join(", ")}`)}if(typeof window<"u"){let c=window;c.__hf&&(c.__hf.transitions=t.map((Q,h)=>({time:Q.time,duration:Q.duration??or,shader:Q.shader,ease:Q.ease??vn,fromScene:r[h]??"",toScene:r[h+1]??""})))}let n=A.accentColor?ao(A.accentColor):gt,s=document.querySelector("[data-composition-id]"),i=A.compositionId||s?.getAttribute("data-composition-id")||"main",o=Number(s?.getAttribute("data-width")),a=Number(s?.getAttribute("data-height")),B=Number.isFinite(o)&&o>0?o:ge,l=Number.isFinite(a)&&a>0?a:we;if(typeof window<"u"&&!!window.__HF_VIRTUAL_TIME__)return Lf(A,r,t,i,s);let f={active:!1,prog:null,progress:0,transitionIndex:-1},d=document.getElementById("gl-canvas");d||(d=document.createElement("canvas"),d.id="gl-canvas",d.style.cssText="position:absolute;top:0;left:0;z-index:100;pointer-events:none;display:none;",(s||document.body).appendChild(d)),d.width=B,d.height=l,d.style.width=`${B}px`,d.style.height=`${l}px`;let g=Qe(d,B,l);if(!g){console.warn("[HyperShader] WebGL unavailable \u2014 shader transitions disabled.");let c=A.timeline||gsap.timeline({paused:!0});return En(i,c,A.timeline),c}let w=de(g),x=new Map;for(let c of t)if(c.shader!==void 0&&!x.has(c.shader))try{x.set(c.shader,Ce(g,Ue(c.shader)))}catch(Q){console.error(`[HyperShader] Failed to compile "${c.shader}":`,Q)}let U=d,p=le(hf(A.previewCaptureFps,30),1,60),v=pf(),y=mf(),I=Math.max(1,Math.round(B*v)),C=Math.max(1,Math.round(l*v)),b=[],_=Ur(g,ff,["precision mediump float;","varying vec2 v_uv;","uniform sampler2D u_a;","uniform sampler2D u_b;","uniform float u_mix;","void main(){","gl_FragColor=mix(texture2D(u_a,v_uv),texture2D(u_b,v_uv),u_mix);","}"].join("")),S={a:g.getUniformLocation(_,"u_a"),b:g.getUniformLocation(_,"u_b"),mix:g.getUniformLocation(_,"u_mix"),pos:g.getAttribLocation(_,"a_pos")},K=io(g,I,C),R=io(g,I,C),J=oo(g,K),M=oo(g,R),O=null,eA=()=>y!=="internal"?null:(O=O||Tf(s,B,l),O),G=!1,X=!1,dA=0,aA=0,BA=new WeakMap,FA=()=>{aA=performance.now()+120},RA=c=>{BA.has(c)||BA.set(c,c.style.pointerEvents)},CA=(c,Q,h)=>{RA(c),FA(),c.style.opacity=h,c.style.pointerEvents=Q?BA.get(c)??"":"none"},LA=(c,Q,h)=>{CA(c,Q,h),c.style.visibility=Q?"visible":"hidden"},hA=(c,Q,h,F)=>{r.forEach(T=>{let L=document.getElementById(T);L&&(T===c?LA(L,!0,h):T===Q?LA(L,!0,F):CA(L,!1,"0"))})},OA=c=>{c.width=0,c.height=0},WA=c=>zi(c,e,B,l,{forceVisible:!0,scale:v}),uo=()=>new Promise(c=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>c())})}),In=c=>!!(c?.fromTex&&c.toTex),fo=(c,Q)=>{if(c.frames.length===0)return null;let h=le(Q,0,1)*(c.frames.length-1),F=Math.floor(h),T=Math.ceil(h),L=c.frames[F]??c.frames[c.frames.length-1],k=c.frames[T]??L;return!In(L)||!In(k)?null:{a:L,b:k,mix:h-F}},bn=(c,Q,h,F)=>{g.bindFramebuffer(g.FRAMEBUFFER,c),g.viewport(0,0,I,C),g.useProgram(_),g.activeTexture(g.TEXTURE0),g.bindTexture(g.TEXTURE_2D,Q),g.uniform1i(S.a,0),g.activeTexture(g.TEXTURE1),g.bindTexture(g.TEXTURE_2D,h),g.uniform1i(S.b,1),g.uniform1f(S.mix,F),g.bindBuffer(g.ARRAY_BUFFER,w),g.enableVertexAttribArray(S.pos),g.vertexAttribPointer(S.pos,2,g.FLOAT,!1,0,0),g.drawArrays(g.TRIANGLE_STRIP,0,4),g.bindFramebuffer(g.FRAMEBUFFER,null),g.viewport(0,0,B,l)},xn=c=>{On(c).then(Q=>{if(!Q)return;let h=N.time();h>=c.time&&h<c.time+c.duration&&ne()})},go=c=>{let Q=0;for(let h=0;h<b.length;h+=1){let F=b[h];F&&c>=F.time+F.duration&&(Q=h+1)}return le(Q,0,r.length-1)},Tn=c=>{let Q=go(c);r.forEach((h,F)=>{let T=document.getElementById(h);if(!T)return;let L=F===Q;CA(T,L,L?"1":"0")})},Ln=(c,Q)=>{let h=document.getElementById(c.fromId),F=document.getElementById(c.toId);if(!h||!F)return;let T=Q*Q*(3-2*Q);U.style.display="none",hA(c.fromId,c.toId,String(1-T),String(T))},ne=()=>{if(X)return;let c=N.time(),Q=b.find(k=>!k.fallback&&k.ready&&!k.dirty&&!k.textureReady&&c>=k.time-Ao&&c<k.time+k.duration);Q&&xn(Q);let h=b.findIndex(k=>c>=k.time&&c<k.time+k.duration);if(h<0){f.active=!1,f.transitionIndex=-1,U.style.display="none",Tn(c);return}let F=b[h];if(!F||F.dirty||!F.ready){U.style.display="none";return}if(F.fallback||F.prog===null){f.active=!0,f.transitionIndex=h,f.prog=null,f.progress=le((c-F.time)/F.duration,0,1),Ln(F,f.progress);return}if(!F.textureReady){xn(F),U.style.display="none";return}let T=F.prog;f.active=!0,f.transitionIndex=h,f.prog=T,f.progress=le((c-F.time)/F.duration,0,1),Qr(F);let L=fo(F,f.progress);if(!L){U.style.display="none";return}hA(F.fromId,F.toId,"1","1"),bn(J,L.a.fromTex,L.b.fromTex,L.mix),bn(M,L.a.toTex,L.b.toTex,L.mix),U.style.display="block",he(g,w,T,K,R,f.progress,n,B,l)},N;if(A.timeline){N=A.timeline;let c=Number(s?.getAttribute("data-duration")||"40");N.to({t:0},{t:1,duration:c,ease:"none",onUpdate:ne},0)}else N=gsap.timeline({paused:!0,onUpdate:ne});let cr=0,Se=c=>(...Q)=>{cr+=1;try{return c(...Q)}finally{cr-=1}},lr=Se(N.play.bind(N)),ur=Se(N.pause.bind(N)),Ke=Se(N.time.bind(N)),Sn=typeof N.seek=="function"?Se(N.seek.bind(N)):null,ut=typeof N.totalTime=="function"?N.totalTime.bind(N):null,Kn=N;for(let c of["timeScale","paused","reversed"]){let Q=Kn[c];typeof Q=="function"&&(Kn[c]=Se(Q.bind(N)))}let GA=()=>{let c=Ke();return typeof c=="number"&&Number.isFinite(c)?c:0},uA=GA(),De=c=>{typeof c=="number"&&Number.isFinite(c)&&(uA=c)},ft=(c,Q)=>{let h=c[0];return typeof h=="number"&&Number.isFinite(h)?h:Q},wo=(c,Q)=>{let h=Ke(c,Q);return typeof h=="number"?N:h},pA=c=>{dA+=1;try{return c()}finally{dA-=1,aA=performance.now()+120}},IA=!1,JA=[],se=!1;N.play=((...c)=>{De(c[0]);let Q=ft(c,uA);if(!_e()||!Co(Q))return se=!1,IA=!0,JA=c,Nn(),N;let h=pA(()=>lr(...c));return uA=GA(),h}),N.pause=((...c)=>{if(IA=!1,JA=[],De(c[0]),X)return se=!0,N;let Q=pA(()=>ur(...c));return uA=GA(),c.length>0&&ne(),Q}),N.time=((...c)=>{if(c.length===0)return X||(uA=GA()),uA;if(De(c[0]),X)return N;let Q=pA(()=>Ke(...c));return X||(uA=GA()),ne(),Q}),Sn&&(N.seek=((...c)=>{if(De(c[0]),X)return N;let Q=pA(()=>Sn(...c));return X||(uA=GA()),ne(),Q})),ut&&(N.totalTime=((...c)=>cr>0?ut(...c):c.length===0?X?uA:ut():(De(c[0]),ut(...c)))),qi(),d.style.display="none";for(let c=0;c<t.length;c++){let Q=t[c],h=r[c],F=r[c+1];if(!h||!F)continue;let T=Q.shader!==void 0,L=T?x.get(Q.shader)??null:null,k=!T||L===null;T&&L===null&&console.warn(`[HyperShader] Shader "${Q.shader}" failed to compile \u2014 falling back to CSS crossfade.`);let W=k?null:L,E=Q.duration??or,D=Q.ease??vn,q=Q.time,V=b.length;b.push({index:V,time:q,duration:E,fromId:h,toId:F,prog:W,frames:[],cacheKey:"",dirty:!k,ready:k,fallback:k,persisted:k,textureReady:!1,texturePromise:null,textureGeneration:0,textureAccess:0}),N.call(()=>{X||pA(()=>{let fA=document.getElementById(h),YA=document.getElementById(F);if(!fA||!YA)return;f.prog=W,f.transitionIndex=V,f.progress=0,f.active=!0;let bA=b[V];if(bA?.fallback){Ln(bA,0);return}U.style.display=bA?.ready&&!bA.dirty&&bA.textureReady?"block":"none",hA(h,F,"1","1")})},null,q);let sA={p:0};N.to(sA,{p:1,duration:E,ease:D,onUpdate:()=>{f.progress=sA.p}},q),N.call(()=>{pA(()=>{f.active=!1,f.transitionIndex=-1,U.style.display="none",Tn(q+E)})},null,q+E)}let Qo=c=>Math.max(2,Math.ceil(c.duration*p)+1),_e=()=>b.every(c=>c.ready&&!c.dirty),Dn=c=>{let Q=[],h=new Set,F=L=>{h.has(L.index)||L.fallback||L.dirty||!L.ready||(Q.push(L),h.add(L.index))};for(let L of b)c>=L.time&&c<L.time+L.duration&&F(L);let T=b.find(L=>L.time>=c);T&&F(T);for(let L of b)L.time>=c&&L.time-c<=Ao&&F(L);return Q.slice(0,$i)},Co=c=>Dn(c).every(Q=>Q.textureReady),_n=0,fr=c=>{c.textureGeneration+=1;for(let Q of c.frames)Q.fromTex&&(g.deleteTexture(Q.fromTex),Q.fromTex=null),Q.toTex&&(g.deleteTexture(Q.toTex),Q.toTex=null);c.textureReady=!1},gr=c=>c.prog===null,wr=c=>{if(fr(c),c.texturePromise=null,c.frames=[],c.lastError=void 0,gr(c)){c.ready=!0,c.fallback=!0,c.persisted=!0,c.textureReady=!1;return}c.ready=!1,c.fallback=!1,c.persisted=!1,c.textureReady=!1},Qr=c=>{_n+=1,c.textureAccess=_n},ho=c=>{let Q=b.filter(h=>h!==c&&h.textureReady).sort((h,F)=>h.textureAccess-F.textureAccess);for(;Q.length>=$i;){let h=Q.shift();if(!h)break;fr(h)}},Uo=(c,Q)=>{let h=[Qf,i,c.index,c.fromId,eo(c.fromId),c.toId,eo(c.toId),t[c.index]?.shader||"unknown",c.time,c.duration,Q,p,v,I,C,B,l].join("|");return`${i}:${c.index}:${Br(h)}`},mA=c=>{let Q=window;Q.__hf=Q.__hf||{},Q.__hf.shaderTransitions=Q.__hf.shaderTransitions||{};let F={...Q.__hf.shaderTransitions[i]||{ready:!1,progress:0,total:0,dirtyTransitions:b.length,captureScale:v,textureWidth:I,textureHeight:C,fps:p,loading:!0},...c};if(F.dirtyTransitions=b.filter(T=>T.dirty||!T.ready).length,Q.__hf.shaderTransitions[i]=F,window.parent?.postMessage({source:"hf-preview",type:"shader-transition-state",compositionId:i,state:F},"*"),F.loading){let T=eA();T?.show(),T?.update({progress:F.progress,total:F.total,currentTransition:F.currentTransition,transitionTotal:F.transitionTotal,transitionFrame:F.transitionFrame,transitionFrames:F.transitionFrames,phase:F.phase})}F.ready?O?.hide():F.loading||O?.hide()},Mn=()=>X||dA>0||performance.now()<aA||!N.paused(),Rn=c=>{if(c.size===0)return;let Q=!1;for(let h of b)!c.has(h.fromId)&&!c.has(h.toId)||gr(h)||(wr(h),h.dirty=!0,h.cacheKey="",Q=!0);Q&&(G=_e(),mA({ready:G,progress:0,total:0,currentTransition:void 0,transitionTotal:void 0,transitionFrame:void 0,transitionFrames:void 0,phase:void 0,loading:!1}),window.dispatchEvent(new CustomEvent("hyperShader:dirty",{detail:{compositionId:i,scenes:Array.from(c)}})))},Fo=()=>{let c=r.map(F=>document.getElementById(F)).filter(F=>F instanceof HTMLElement),Q=[];for(let F of c){let T=new MutationObserver(L=>{if(Mn())return;let k=new Set;for(let W of L){let E=W.target instanceof Element?W.target:W.target.parentElement;if(E)for(let D of c)(D===E||D.contains(E))&&k.add(D.id)}Rn(k)});T.observe(F,{attributes:!0,characterData:!0,childList:!0,subtree:!0}),Q.push(T)}let h=new MutationObserver(()=>{Mn()||Rn(new Set(r))});return h.observe(document.head,{attributes:!0,characterData:!0,childList:!0,subtree:!0}),Q.push(h),Q},po=async(c,Q,h)=>{let F=[];for(let T=0;T<Q;T+=1){let[L,k]=await Promise.all([mn(ir(c.cacheKey,T,"from")),mn(ir(c.cacheKey,T,"to"))]);if(!L||!k){for(let W of F)g.deleteTexture(W.fromTex),g.deleteTexture(W.toTex);return!1}F.push({sampleIndex:T,fromBlob:L.blob,toBlob:k.blob,fromTex:null,toTex:null}),h(T+1)}return c.frames=F,c.ready=!0,c.dirty=!1,c.fallback=!1,c.persisted=!0,c.textureReady=!1,!0},On=c=>{if(c.fallback||c.dirty||!c.ready)return Promise.resolve(!1);if(c.textureReady)return Qr(c),Promise.resolve(!0);if(c.texturePromise)return c.texturePromise;let Q=c.textureGeneration,h=c.frames,F=[],T=()=>c.textureGeneration!==Q||c.dirty||c.frames!==h,L=()=>{let E=new Set;for(let D of F)E.has(D)||(g.deleteTexture(D),E.add(D));for(let D of h)D.fromTex&&!E.has(D.fromTex)&&(g.deleteTexture(D.fromTex),E.add(D.fromTex)),D.toTex&&!E.has(D.toTex)&&(g.deleteTexture(D.toTex),E.add(D.toTex)),D.fromTex=null,D.toTex=null},k=async(E,D)=>{let q=D==="from"?E.fromBlob:E.toBlob;if(q)return q;let V=await mn(ir(c.cacheKey,E.sampleIndex,D));if(V?.blob)return V.blob;throw new Error("[HyperShader] Cached transition snapshot blob is unavailable")},W=Promise.resolve(!1);return W=(async()=>{for(let E of h){if(T())return L(),!1;if(!E.fromTex){let D=await k(E,"from");if(T())return L(),!1;let q=await no(D),V=SA(g);F.push(V);try{if(NA(g,V,q),T())return L(),!1;E.fromTex=V}finally{so(q)}}if(!E.toTex){let D=await k(E,"to");if(T())return L(),!1;let q=await no(D),V=SA(g);F.push(V);try{if(NA(g,V,q),T())return L(),!1;E.toTex=V}finally{so(q)}}c.persisted&&(E.fromBlob=null,E.toBlob=null)}return T()?(L(),!1):(c.textureReady=h.every(E=>!!(E.fromTex&&E.toTex)),c.textureReady&&(Qr(c),ho(c)),c.textureReady)})().catch(E=>(L(),T()||(fr(c),c.fallback=!0,c.ready=!0,c.dirty=!1,c.lastError=E instanceof Error?E.message:String(E),mA({ready:_e(),loading:!1,error:c.lastError})),!1)).finally(()=>{c.texturePromise===W&&(c.texturePromise=null)}),c.texturePromise=W,W},dr=async c=>{for(let Q of Dn(c))await On(Q)},Gn=async(c,Q,h,F)=>F?bf({key:ir(c.cacheKey,Q,h),blob:F,width:I,height:C,updatedAt:c.index*1e6+Q*2+(h==="to"?1:0)}):!1,mo=async(c,Q,h)=>{wr(c);let F=!0;for(let T=0;T<Q;T+=1){let L=c.time+c.duration*T/(Q-1);pA(()=>{Ke(L,!1)}),await uo(),pA(()=>{Ke(L,!0)});let k=document.getElementById(c.fromId),W=document.getElementById(c.toId);if(!k||!W)continue;let[E,D]=await Promise.all([WA(k),WA(W)]),[q,V]=await Promise.all([ro(E),ro(D)]);if(OA(E),OA(D),!q||!V)throw new Error("[HyperShader] Failed to encode transition snapshot");c.frames.push({sampleIndex:T,fromBlob:q,toBlob:V,fromTex:null,toTex:null}),(await Promise.all([Gn(c,T,"from",q),Gn(c,T,"to",V)])).every(Boolean)||(F=!1,c.lastError="[HyperShader] Failed to persist one or more transition snapshots"),h(T+1)}c.ready=!0,c.dirty=!1,c.fallback=!1,c.persisted=F,c.textureReady=!1},ue=null,Nn=()=>ue||(ue=(async()=>{let c=b.filter(E=>!gr(E)&&(E.dirty||!E.ready)),Q=c.map(E=>({cache:E,sampleCount:Qo(E)}));for(let E of Q)E.cache.cacheKey=Uo(E.cache,E.sampleCount);let h=Q.reduce((E,D)=>E+D.sampleCount,0),F=Q[0],T=!1;if(mA({ready:!1,progress:0,total:h,currentTransition:F?1:void 0,transitionTotal:Q.length||void 0,transitionFrame:F?0:void 0,transitionFrames:F?.sampleCount,phase:F?"cached":void 0,loading:T}),c.length===0){if(G=!0,mA({ready:!0,progress:0,total:0,currentTransition:void 0,transitionTotal:void 0,transitionFrame:void 0,transitionFrames:void 0,phase:void 0,loading:!1}),IA){let E=JA,D=ft(E,uA);await dr(D),IA&&(IA=!1,JA=[],se=!1,pA(()=>lr(...E)),uA=GA())}ue=null;return}uA=GA();let L=N.paused(),k=r.map(E=>{let D=document.getElementById(E);return{scene:D,opacity:D?.style.opacity??"",pointerEvents:D?.style.pointerEvents??""}});X=!0,U.style.display="none",ur();let W=0;try{for(let D=0;D<Q.length;D+=1){let q=Q[D];if(!q)continue;let{cache:V,sampleCount:sA}=q,fA=D+1,YA=W;wr(V);try{mA({ready:!1,progress:YA,total:h,currentTransition:fA,transitionTotal:Q.length,transitionFrame:0,transitionFrames:sA,phase:"cached",loading:T}),await po(V,sA,Me=>{W=YA+Me,mA({ready:!1,progress:W,total:h,currentTransition:fA,transitionTotal:Q.length,transitionFrame:Me,transitionFrames:sA,phase:"cached",loading:T})})||(W=YA,T=!0,mA({ready:!1,progress:W,total:h,currentTransition:fA,transitionTotal:Q.length,transitionFrame:0,transitionFrames:sA,phase:"capturing",loading:!0}),await mo(V,sA,Me=>{W=YA+Me,mA({ready:!1,progress:W,total:h,currentTransition:fA,transitionTotal:Q.length,transitionFrame:Me,transitionFrames:sA,phase:"capturing",loading:!0})}),!V.persisted&&V.lastError&&mA({ready:!1,loading:T,error:V.lastError}))}catch(bA){W=YA+sA,V.fallback=!0,V.ready=!0,V.dirty=!1,V.lastError=bA instanceof Error?bA.message:String(bA),console.warn("[HyperShader] Transition capture failed; using CSS fallback:",bA),mA({ready:!1,progress:W,total:h,currentTransition:fA,transitionTotal:Q.length,transitionFrame:sA,transitionFrames:sA,phase:"finalizing",loading:T,error:V.lastError})}W=YA+sA}xf(i,new Set(b.map(D=>D.cacheKey).filter(Boolean))),G=_e();let E=Q[Q.length-1];mA({ready:G,progress:W,total:h,currentTransition:Q.length,transitionTotal:Q.length,transitionFrame:E?.sampleCount,transitionFrames:E?.sampleCount,phase:"finalizing",loading:!1})}catch(E){console.warn("[HyperShader] Pre-capture failed, keeping DOM fallback visible:",E),G=_e(),mA({ready:G,progress:W,total:h,phase:"finalizing",loading:!1,error:E instanceof Error?E.message:String(E)})}finally{let E=uA,D=(IA||!L)&&!se,q=IA?JA:[],V=ft(q,E),sA=null;D&&(await dr(V),sA=V),D=(IA||!L)&&!se,q=IA?JA:[],V=ft(q,E),D&&V!==sA&&await dr(V),f.active=!1,f.transitionIndex=-1,U.style.display="none";try{pA(()=>{wo(E,!1)})}catch(fA){console.warn("[HyperShader] A timeline callback failed while restoring the playhead:",fA)}X=!1,uA=E;for(let fA of k)fA.scene&&(fA.scene.style.opacity=fA.opacity,fA.scene.style.pointerEvents=fA.pointerEvents);ne(),window.dispatchEvent(new CustomEvent("hyperShader:ready",{detail:{compositionId:i,progress:W,total:h}})),ue=null,D?(IA=!1,JA=[],se=!1,pA(()=>lr(...q)),uA=GA()):(IA=!1,JA=[],se=!1,ur())}})(),ue),vo=Fo();window.addEventListener("beforeunload",()=>{for(let c of vo)c.disconnect()},{once:!0});let Eo=Promise.resolve().then(()=>Nn()),Cr=window;return Cr.__hf=Cr.__hf||{},Cr.__hf.shaderTransitionsReady=Eo,window.__hfSuppressSceneMutations=c=>pA(c),En(i,N,A.timeline),N}function En(A,e,r){if(!r){let t=window;t.__timelines=t.__timelines||{},t.__timelines[A]=e}}function Lf(A,e,r,t,n){let s=A.timeline||gsap.timeline({paused:!0});if(A.timeline){let o=Number(n?.getAttribute("data-duration")||"40");s.to({t:0},{t:1,duration:o,ease:"none"},0)}for(let o=1;o<e.length;o++){let a=e[o];a&&s.set(`#${a}`,{opacity:0},0)}for(let o=0;o<r.length;o++){let a=r[o],B=e[o],l=e[o+1];if(!B||!l)continue;let u=a.duration??or,f=a.ease??vn,d=a.time;a.shader===void 0?(s.fromTo(`#${l}`,{opacity:0},{opacity:1,duration:u,ease:f},d),s.fromTo(`#${B}`,{opacity:1},{opacity:0,duration:u,ease:f},d)):(s.set(`#${l}`,{opacity:1},d),s.set(`#${B}`,{opacity:0},d+u))}if(typeof window<"u"&&!!window.__HF_PAGE_SIDE_COMPOSITING__){let o=A.bgColor??"#000",a=A.accentColor?ao(A.accentColor):gt,B=Number(n?.getAttribute("data-width")),l=Number(n?.getAttribute("data-height")),u=Number.isFinite(B)&&B>0?B:1920,f=Number.isFinite(l)&&l>0?l:1080;nr({scenes:e,transitions:r,bgColor:o,accentColors:a,width:u,height:f,defaultDuration:or})}return En(t,s,A.timeline),s}var Sf=new Map([["domain-warp-dissolve","domain-warp"],["chromatic-radial-split","chromatic-split"]]);function yn(A,e){if(!Number.isFinite(e)||e<=0)throw new Error(`[playSeamTransitionLoop] ${A} must be a finite number above 0, got ${e}`)}function lo(A,e,r,t,n={}){let s=Ue(Sf.get(t)??t),i=n.width??A.width,o=n.height??A.height,a=n.loopMs??1e3;yn("width",i),yn("height",o),yn("loopMs",a);let B=Qe(A,i,o);if(!B)throw new Error(`[playSeamTransitionLoop] No WebGL context available for "${t}"`);let l=B,u=null,f=null,d=null,g=null,w;try{u=de(l),f=Ce(l,s),d=SA(l),g=SA(l),NA(l,d,e),NA(l,g,r),w={quadBuf:u,prog:f,texFrom:d,texTo:g}}catch(C){throw d&&l.deleteTexture(d),g&&l.deleteTexture(g),f&&l.deleteProgram(f),u&&l.deleteBuffer(u),C}let x=!1,U=0,p=null,v=()=>{},y=new Promise(C=>{v=C});function I(C){if(x)return;let b=!1;p===null&&(p=C,b=!0);let _=(C-p)%a/a,S=_<.5?_*2:(1-_)*2;he(l,w.quadBuf,w.prog,w.texFrom,w.texTo,S,void 0,i,o),b&&v(),U=requestAnimationFrame(I)}return U=requestAnimationFrame(I),{ready:y,stop:()=>{x||(x=!0,cancelAnimationFrame(U),v(),l.deleteTexture(w.texFrom),l.deleteTexture(w.texTo),l.deleteProgram(w.prog),l.deleteBuffer(w.quadBuf))}}}return To(Kf);})();
|
|
15
|
+
${yf(e)}`):"missing"}function to(A,e){for(let r of e)A.style.removeProperty(r);A.getAttribute("style")?.trim()===""&&A.removeAttribute("style")}function yf(A){let e=A.cloneNode(!0);return to(e,["opacity","visibility","pointer-events"]),e.querySelectorAll("[data-start]").forEach(r=>{to(r,["visibility"])}),e.outerHTML}function ir(A,e,r){return`${A}:sample:${e}:${r}`}function If(){return typeof indexedDB>"u"?Promise.resolve(null):new Promise(A=>{let e=indexedDB.open(gf,wf);e.onupgradeneeded=()=>{let r=e.result;r.objectStoreNames.contains(MA)||r.createObjectStore(MA,{keyPath:"key"})},e.onerror=()=>A(null),e.onblocked=()=>A(null),e.onsuccess=()=>{let r=e.result;r.onversionchange=()=>{r.close(),lt=null},A(r)}})}var lt=null;function ar(A){try{A?.close()}catch{}lt=null}function Hn(){return lt=lt||If(),lt}async function mn(A){let e=await Hn();return e?new Promise(r=>{try{let n=e.transaction(MA,"readonly").objectStore(MA).get(A);n.onerror=()=>r(null),n.onsuccess=()=>{let s=n.result;s&&typeof s=="object"&&"blob"in s&&s.blob instanceof Blob?r(s):r(null)}}catch{ar(e),r(null)}}):null}async function bf(A){let e=await Hn();return e?new Promise(r=>{try{let t=e.transaction(MA,"readwrite");t.oncomplete=()=>r(!0),t.onerror=()=>r(!1),t.objectStore(MA).put(A)}catch{ar(e),r(!1)}}):!1}function ro(A){return new Promise(e=>{try{A.toBlob(r=>e(r),"image/png")}catch{e(null)}})}async function xf(A,e,r=df){let t=await Hn();if(!t)return;let n=await new Promise(w=>{try{let U=t.transaction(MA,"readonly").objectStore(MA).getAll();U.onerror=()=>w([]),U.onsuccess=()=>{let p=[];for(let v of U.result)if(v&&typeof v=="object"&&"key"in v&&typeof v.key=="string"){let y="updatedAt"in v&&typeof v.updatedAt=="number"?v.updatedAt:0;p.push({key:v.key,updatedAt:y})}w(p)}}catch{ar(t),w([])}}),s=`${A}:`,i=w=>{for(let x of e)if(w.startsWith(`${x}:sample:`))return!0;return!1},o=n.filter(w=>w.key.startsWith(s)&&!i(w.key)).map(w=>w.key),a=new Set(o),B=n.filter(w=>!a.has(w.key)),l=B.filter(w=>i(w.key)).length,u=B.filter(w=>!i(w.key)).sort((w,x)=>x.updatedAt-w.updatedAt),f=Math.max(0,r-l),d=u.length>f?u.slice(f).map(w=>w.key):[],g=Array.from(new Set([...o,...d]));g.length!==0&&await new Promise(w=>{try{let x=t.transaction(MA,"readwrite");x.oncomplete=()=>w(),x.onerror=()=>w();let U=x.objectStore(MA);for(let p of g)U.delete(p)}catch{ar(t),w()}})}function no(A){return typeof createImageBitmap=="function"?createImageBitmap(A):new Promise((e,r)=>{let t=URL.createObjectURL(A),n=new Image;n.onload=()=>{URL.revokeObjectURL(t),e(n)},n.onerror=()=>{URL.revokeObjectURL(t),r(new Error("[HyperShader] Failed to decode cached snapshot"))},n.src=t})}function so(A){typeof ImageBitmap<"u"&&A instanceof ImageBitmap&&A.close()}function io(A,e,r){let t=SA(A);return A.bindTexture(A.TEXTURE_2D,t),A.texImage2D(A.TEXTURE_2D,0,A.RGBA,e,r,0,A.RGBA,A.UNSIGNED_BYTE,null),t}function oo(A,e){let r=A.createFramebuffer();if(!r)throw new Error("[HyperShader] Failed to create framebuffer");return A.bindFramebuffer(A.FRAMEBUFFER,r),A.framebufferTexture2D(A.FRAMEBUFFER,A.COLOR_ATTACHMENT0,A.TEXTURE_2D,e,0),A.bindFramebuffer(A.FRAMEBUFFER,null),r}function Tf(A,e,r){let t=A?.ownerDocument||document,n=A||t.body;if(!n)return null;n.querySelector("[data-hyper-shader-loading]")?.remove();let s=t.createElement("div");s.setAttribute("data-hyper-shader-loading",""),s.setAttribute("data-hyperframes-ignore",""),s.setAttribute("data-hyperframes-picker-block",""),s.setAttribute("data-hf-ignore",""),s.setAttribute("data-no-capture",""),s.setAttribute("data-no-inspect",""),s.setAttribute("data-no-pick",""),s.setAttribute("draggable","false"),s.setAttribute("role","status"),s.setAttribute("aria-label","Preparing scene transitions"),s.style.cssText=["position:absolute","inset:0",`width:${e}px`,`height:${r}px`,"z-index:2147483647","display:none","place-items:center","opacity:1","transition:opacity 240ms ease-out","background:#030504","pointer-events:auto","color:#f4f7fb","cursor:default","touch-action:none","user-select:none","-webkit-user-select:none","-webkit-user-drag:none"].join(";");let i=y=>{y.preventDefault(),y.stopPropagation()};for(let y of["selectstart","dragstart","pointerdown","mousedown","touchstart"])s.addEventListener(y,i,{capture:!0});let o=t.createElement("div");o.setAttribute("draggable","false"),o.style.cssText=["display:grid","grid-template-rows:172px 72px 44px 44px 54px","justify-items:center","align-items:center","gap:0","width:min(1040px,82%)","padding:42px","box-sizing:border-box","text-align:center","font-family:Inter,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif","user-select:none","-webkit-user-select:none","-webkit-user-drag:none"].join(";");let a=t.createElement("div");a.setAttribute("data-hf-loader-mark-frame",""),a.style.cssText=["width:172px","height:172px","display:grid","place-items:center","overflow:visible","transform-origin:50% 50%","will-change:transform,opacity","user-select:none","-webkit-user-select:none","-webkit-user-drag:none"].join(";"),a.innerHTML=['<svg width="156" height="156" viewBox="0 0 100 100" fill="none" aria-hidden="true" draggable="false" style="display:block;overflow:visible;filter:drop-shadow(0 0 7px rgba(79,219,94,.2));user-select:none;-webkit-user-select:none">','<g data-hf-loader-mark transform="translate(50 50)">','<g data-hf-loader-core transform="scale(1)" opacity=".92">','<g transform="translate(-50 -50)">','<path data-hf-loader-left 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(#hyper-shader-loader-grad-left)"/>','<path data-hf-loader-right 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(#hyper-shader-loader-grad-right)"/>',"</g>","</g>","</g>","<defs>",'<linearGradient id="hyper-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="hyper-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 B=a.querySelector("svg");if(!B)return null;B.setAttribute("draggable","false");let l=t.createElement("div");l.style.cssText=["width:100%","height:72px","display:flex","align-items:center","justify-content:center","overflow:hidden","white-space:nowrap","text-overflow:ellipsis","font:600 44px/1.15 Inter,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif","letter-spacing:0","text-align:center","color:#f4f7fb"].join(";");let u=t.createElement("span");u.textContent=sr[0]??"Preparing scene transitions";let f=t.createElement("div");f.textContent="Sampling animated scene frames so shader transitions stay in motion.",f.style.cssText=["width:min(760px,100%)","height:44px","overflow:hidden","white-space:nowrap","text-overflow:ellipsis","color:rgba(244,247,251,0.64)","font:400 24px/1.5 Inter,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif"].join(";"),l.appendChild(u);let d=t.createElement("div");d.setAttribute("aria-hidden","true"),d.style.cssText=["width:min(520px,100%)","height:10px","overflow:hidden","border-radius:999px","background:rgba(255,255,255,0.1)"].join(";");let g=t.createElement("div");g.style.cssText=["width:100%","height:100%","transform:scaleX(0)","transform-origin:left center","border-radius:inherit","background:linear-gradient(90deg,#06e3fa,#4fdb5e)","transition:transform 160ms ease"].join(";");let w=t.createElement("div");w.style.cssText=["width:min(560px,100%)","height:54px","overflow:hidden","display:grid","grid-template-rows:repeat(2,27px)","font:500 18px/27px 'IBM Plex Mono','SF Mono','Fira Code',monospace","font-variant-numeric:tabular-nums","color:rgba(244,247,251,0.48)"].join(";");let x=y=>{let I=t.createElement("div");I.style.cssText=["display:grid","grid-template-columns:minmax(0,1fr) auto","align-items:center","column-gap:28px","width:100%","height:27px","white-space:nowrap"].join(";");let C=t.createElement("span");C.textContent=y,C.style.cssText=["overflow:hidden","text-overflow:ellipsis","text-align:left","min-width:0"].join(";");let b=t.createElement("span");return b.style.cssText=["min-width:76px","text-align:right"].join(";"),I.appendChild(C),I.appendChild(b),w.appendChild(I),{row:I,label:C,value:b}},U=x("transition"),p=x("transition frame");d.appendChild(g),o.appendChild(a),o.appendChild(l),o.appendChild(f),o.appendChild(d),o.appendChild(w),s.appendChild(o),n.appendChild(s);let v=null;return{show:()=>{v&&(clearTimeout(v),v=null),s.style.display="grid",s.style.opacity="1",s.style.pointerEvents="auto"},update:y=>{let{progress:I,total:C}=y,b=C>0?le(I/C,0,1):0,_=Math.min(sr.length-1,Math.floor(b*sr.length)),S=sr[_]??"Preparing scene transitions";u.textContent=S,g.style.transform=`scaleX(${b})`;let K=y.currentTransition!==void 0&&y.transitionTotal!==void 0?`${y.currentTransition}/${y.transitionTotal}`:C>0?`${I}/${C}`:"",R=y.transitionFrame!==void 0&&y.transitionFrames!==void 0?`${y.transitionFrame}/${y.transitionFrames}`:"",J=y.phase==="cached"?"loading cached transition frames":y.phase==="finalizing"?"finalizing":"rendering transition frames";U.label.textContent=y.currentTransition!==void 0?"transition":"transition frames",U.value.textContent=K,p.label.textContent=J,p.value.textContent=R,p.row.style.visibility=R?"visible":"hidden",s.setAttribute("aria-valuenow",String(Math.round(b*100)))},hide:()=>{v&&clearTimeout(v),s.style.display!=="none"&&(s.style.opacity="0",s.style.pointerEvents="none",v=setTimeout(()=>{s.style.display="none",s.style.opacity="1",s.style.pointerEvents="auto",v=null},240))}}}function co(A){let{bgColor:e,scenes:r,transitions:t}=A;if(r.length!==t.length+1)throw new Error(`[HyperShader] init(): expected scenes.length === transitions.length + 1, got scenes=${r.length}, transitions=${t.length}`);if(typeof document<"u"){let c=[],Q=[];for(let h of r){let F=document.getElementById(h);F?F.classList.contains("scene")||Q.push(h):c.push(h)}if(c.length>0)throw new Error(`[HyperShader] init(): scene ids not found in DOM: ${c.join(", ")}`);if(Q.length>0)throw new Error(`[HyperShader] init(): elements found but missing .scene class: ${Q.join(", ")}`)}if(typeof window<"u"){let c=window;c.__hf&&(c.__hf.transitions=t.map((Q,h)=>({time:Q.time,duration:Q.duration??or,shader:Q.shader,ease:Q.ease??vn,fromScene:r[h]??"",toScene:r[h+1]??""})))}let n=A.accentColor?ao(A.accentColor):gt,s=document.querySelector("[data-composition-id]"),i=A.compositionId||s?.getAttribute("data-composition-id")||"main",o=Number(s?.getAttribute("data-width")),a=Number(s?.getAttribute("data-height")),B=Number.isFinite(o)&&o>0?o:ge,l=Number.isFinite(a)&&a>0?a:we;if(typeof window<"u"&&!!window.__HF_VIRTUAL_TIME__)return Lf(A,r,t,i,s);let f={active:!1,prog:null,progress:0,transitionIndex:-1},d=document.getElementById("gl-canvas");d||(d=document.createElement("canvas"),d.id="gl-canvas",d.style.cssText="position:absolute;top:0;left:0;z-index:100;pointer-events:none;display:none;",(s||document.body).appendChild(d)),d.width=B,d.height=l,d.style.width=`${B}px`,d.style.height=`${l}px`;let g=Qe(d,B,l);if(!g){console.warn("[HyperShader] WebGL unavailable, shader transitions disabled.");let c=A.timeline||gsap.timeline({paused:!0});return En(i,c,A.timeline),c}let w=de(g),x=new Map;for(let c of t)if(c.shader!==void 0&&!x.has(c.shader))try{x.set(c.shader,Ce(g,Ue(c.shader)))}catch(Q){console.error(`[HyperShader] Failed to compile "${c.shader}":`,Q)}let U=d,p=le(hf(A.previewCaptureFps,30),1,60),v=pf(),y=mf(),I=Math.max(1,Math.round(B*v)),C=Math.max(1,Math.round(l*v)),b=[],_=Ur(g,ff,["precision mediump float;","varying vec2 v_uv;","uniform sampler2D u_a;","uniform sampler2D u_b;","uniform float u_mix;","void main(){","gl_FragColor=mix(texture2D(u_a,v_uv),texture2D(u_b,v_uv),u_mix);","}"].join("")),S={a:g.getUniformLocation(_,"u_a"),b:g.getUniformLocation(_,"u_b"),mix:g.getUniformLocation(_,"u_mix"),pos:g.getAttribLocation(_,"a_pos")},K=io(g,I,C),R=io(g,I,C),J=oo(g,K),M=oo(g,R),O=null,eA=()=>y!=="internal"?null:(O=O||Tf(s,B,l),O),G=!1,X=!1,dA=0,aA=0,BA=new WeakMap,FA=()=>{aA=performance.now()+120},RA=c=>{BA.has(c)||BA.set(c,c.style.pointerEvents)},CA=(c,Q,h)=>{RA(c),FA(),c.style.opacity=h,c.style.pointerEvents=Q?BA.get(c)??"":"none"},LA=(c,Q,h)=>{CA(c,Q,h),c.style.visibility=Q?"visible":"hidden"},hA=(c,Q,h,F)=>{r.forEach(T=>{let L=document.getElementById(T);L&&(T===c?LA(L,!0,h):T===Q?LA(L,!0,F):CA(L,!1,"0"))})},OA=c=>{c.width=0,c.height=0},WA=c=>zi(c,e,B,l,{forceVisible:!0,scale:v}),uo=()=>new Promise(c=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>c())})}),In=c=>!!(c?.fromTex&&c.toTex),fo=(c,Q)=>{if(c.frames.length===0)return null;let h=le(Q,0,1)*(c.frames.length-1),F=Math.floor(h),T=Math.ceil(h),L=c.frames[F]??c.frames[c.frames.length-1],k=c.frames[T]??L;return!In(L)||!In(k)?null:{a:L,b:k,mix:h-F}},bn=(c,Q,h,F)=>{g.bindFramebuffer(g.FRAMEBUFFER,c),g.viewport(0,0,I,C),g.useProgram(_),g.activeTexture(g.TEXTURE0),g.bindTexture(g.TEXTURE_2D,Q),g.uniform1i(S.a,0),g.activeTexture(g.TEXTURE1),g.bindTexture(g.TEXTURE_2D,h),g.uniform1i(S.b,1),g.uniform1f(S.mix,F),g.bindBuffer(g.ARRAY_BUFFER,w),g.enableVertexAttribArray(S.pos),g.vertexAttribPointer(S.pos,2,g.FLOAT,!1,0,0),g.drawArrays(g.TRIANGLE_STRIP,0,4),g.bindFramebuffer(g.FRAMEBUFFER,null),g.viewport(0,0,B,l)},xn=c=>{On(c).then(Q=>{if(!Q)return;let h=N.time();h>=c.time&&h<c.time+c.duration&&ne()})},go=c=>{let Q=0;for(let h=0;h<b.length;h+=1){let F=b[h];F&&c>=F.time+F.duration&&(Q=h+1)}return le(Q,0,r.length-1)},Tn=c=>{let Q=go(c);r.forEach((h,F)=>{let T=document.getElementById(h);if(!T)return;let L=F===Q;CA(T,L,L?"1":"0")})},Ln=(c,Q)=>{let h=document.getElementById(c.fromId),F=document.getElementById(c.toId);if(!h||!F)return;let T=Q*Q*(3-2*Q);U.style.display="none",hA(c.fromId,c.toId,String(1-T),String(T))},ne=()=>{if(X)return;let c=N.time(),Q=b.find(k=>!k.fallback&&k.ready&&!k.dirty&&!k.textureReady&&c>=k.time-Ao&&c<k.time+k.duration);Q&&xn(Q);let h=b.findIndex(k=>c>=k.time&&c<k.time+k.duration);if(h<0){f.active=!1,f.transitionIndex=-1,U.style.display="none",Tn(c);return}let F=b[h];if(!F||F.dirty||!F.ready){U.style.display="none";return}if(F.fallback||F.prog===null){f.active=!0,f.transitionIndex=h,f.prog=null,f.progress=le((c-F.time)/F.duration,0,1),Ln(F,f.progress);return}if(!F.textureReady){xn(F),U.style.display="none";return}let T=F.prog;f.active=!0,f.transitionIndex=h,f.prog=T,f.progress=le((c-F.time)/F.duration,0,1),Qr(F);let L=fo(F,f.progress);if(!L){U.style.display="none";return}hA(F.fromId,F.toId,"1","1"),bn(J,L.a.fromTex,L.b.fromTex,L.mix),bn(M,L.a.toTex,L.b.toTex,L.mix),U.style.display="block",he(g,w,T,K,R,f.progress,n,B,l)},N;if(A.timeline){N=A.timeline;let c=Number(s?.getAttribute("data-duration")||"40");N.to({t:0},{t:1,duration:c,ease:"none",onUpdate:ne},0)}else N=gsap.timeline({paused:!0,onUpdate:ne});let cr=0,Se=c=>(...Q)=>{cr+=1;try{return c(...Q)}finally{cr-=1}},lr=Se(N.play.bind(N)),ur=Se(N.pause.bind(N)),Ke=Se(N.time.bind(N)),Sn=typeof N.seek=="function"?Se(N.seek.bind(N)):null,ut=typeof N.totalTime=="function"?N.totalTime.bind(N):null,Kn=N;for(let c of["timeScale","paused","reversed"]){let Q=Kn[c];typeof Q=="function"&&(Kn[c]=Se(Q.bind(N)))}let GA=()=>{let c=Ke();return typeof c=="number"&&Number.isFinite(c)?c:0},uA=GA(),De=c=>{typeof c=="number"&&Number.isFinite(c)&&(uA=c)},ft=(c,Q)=>{let h=c[0];return typeof h=="number"&&Number.isFinite(h)?h:Q},wo=(c,Q)=>{let h=Ke(c,Q);return typeof h=="number"?N:h},pA=c=>{dA+=1;try{return c()}finally{dA-=1,aA=performance.now()+120}},IA=!1,JA=[],se=!1;N.play=((...c)=>{De(c[0]);let Q=ft(c,uA);if(!_e()||!Co(Q))return se=!1,IA=!0,JA=c,Nn(),N;let h=pA(()=>lr(...c));return uA=GA(),h}),N.pause=((...c)=>{if(IA=!1,JA=[],De(c[0]),X)return se=!0,N;let Q=pA(()=>ur(...c));return uA=GA(),c.length>0&&ne(),Q}),N.time=((...c)=>{if(c.length===0)return X||(uA=GA()),uA;if(De(c[0]),X)return N;let Q=pA(()=>Ke(...c));return X||(uA=GA()),ne(),Q}),Sn&&(N.seek=((...c)=>{if(De(c[0]),X)return N;let Q=pA(()=>Sn(...c));return X||(uA=GA()),ne(),Q})),ut&&(N.totalTime=((...c)=>cr>0?ut(...c):c.length===0?X?uA:ut():(De(c[0]),ut(...c)))),qi(),d.style.display="none";for(let c=0;c<t.length;c++){let Q=t[c],h=r[c],F=r[c+1];if(!h||!F)continue;let T=Q.shader!==void 0,L=T?x.get(Q.shader)??null:null,k=!T||L===null;T&&L===null&&console.warn(`[HyperShader] Shader "${Q.shader}" failed to compile, falling back to CSS crossfade.`);let W=k?null:L,E=Q.duration??or,D=Q.ease??vn,q=Q.time,V=b.length;b.push({index:V,time:q,duration:E,fromId:h,toId:F,prog:W,frames:[],cacheKey:"",dirty:!k,ready:k,fallback:k,persisted:k,textureReady:!1,texturePromise:null,textureGeneration:0,textureAccess:0}),N.call(()=>{X||pA(()=>{let fA=document.getElementById(h),YA=document.getElementById(F);if(!fA||!YA)return;f.prog=W,f.transitionIndex=V,f.progress=0,f.active=!0;let bA=b[V];if(bA?.fallback){Ln(bA,0);return}U.style.display=bA?.ready&&!bA.dirty&&bA.textureReady?"block":"none",hA(h,F,"1","1")})},null,q);let sA={p:0};N.to(sA,{p:1,duration:E,ease:D,onUpdate:()=>{f.progress=sA.p}},q),N.call(()=>{pA(()=>{f.active=!1,f.transitionIndex=-1,U.style.display="none",Tn(q+E)})},null,q+E)}let Qo=c=>Math.max(2,Math.ceil(c.duration*p)+1),_e=()=>b.every(c=>c.ready&&!c.dirty),Dn=c=>{let Q=[],h=new Set,F=L=>{h.has(L.index)||L.fallback||L.dirty||!L.ready||(Q.push(L),h.add(L.index))};for(let L of b)c>=L.time&&c<L.time+L.duration&&F(L);let T=b.find(L=>L.time>=c);T&&F(T);for(let L of b)L.time>=c&&L.time-c<=Ao&&F(L);return Q.slice(0,$i)},Co=c=>Dn(c).every(Q=>Q.textureReady),_n=0,fr=c=>{c.textureGeneration+=1;for(let Q of c.frames)Q.fromTex&&(g.deleteTexture(Q.fromTex),Q.fromTex=null),Q.toTex&&(g.deleteTexture(Q.toTex),Q.toTex=null);c.textureReady=!1},gr=c=>c.prog===null,wr=c=>{if(fr(c),c.texturePromise=null,c.frames=[],c.lastError=void 0,gr(c)){c.ready=!0,c.fallback=!0,c.persisted=!0,c.textureReady=!1;return}c.ready=!1,c.fallback=!1,c.persisted=!1,c.textureReady=!1},Qr=c=>{_n+=1,c.textureAccess=_n},ho=c=>{let Q=b.filter(h=>h!==c&&h.textureReady).sort((h,F)=>h.textureAccess-F.textureAccess);for(;Q.length>=$i;){let h=Q.shift();if(!h)break;fr(h)}},Uo=(c,Q)=>{let h=[Qf,i,c.index,c.fromId,eo(c.fromId),c.toId,eo(c.toId),t[c.index]?.shader||"unknown",c.time,c.duration,Q,p,v,I,C,B,l].join("|");return`${i}:${c.index}:${Br(h)}`},mA=c=>{let Q=window;Q.__hf=Q.__hf||{},Q.__hf.shaderTransitions=Q.__hf.shaderTransitions||{};let F={...Q.__hf.shaderTransitions[i]||{ready:!1,progress:0,total:0,dirtyTransitions:b.length,captureScale:v,textureWidth:I,textureHeight:C,fps:p,loading:!0},...c};if(F.dirtyTransitions=b.filter(T=>T.dirty||!T.ready).length,Q.__hf.shaderTransitions[i]=F,window.parent?.postMessage({source:"hf-preview",type:"shader-transition-state",compositionId:i,state:F},"*"),F.loading){let T=eA();T?.show(),T?.update({progress:F.progress,total:F.total,currentTransition:F.currentTransition,transitionTotal:F.transitionTotal,transitionFrame:F.transitionFrame,transitionFrames:F.transitionFrames,phase:F.phase})}F.ready?O?.hide():F.loading||O?.hide()},Mn=()=>X||dA>0||performance.now()<aA||!N.paused(),Rn=c=>{if(c.size===0)return;let Q=!1;for(let h of b)!c.has(h.fromId)&&!c.has(h.toId)||gr(h)||(wr(h),h.dirty=!0,h.cacheKey="",Q=!0);Q&&(G=_e(),mA({ready:G,progress:0,total:0,currentTransition:void 0,transitionTotal:void 0,transitionFrame:void 0,transitionFrames:void 0,phase:void 0,loading:!1}),window.dispatchEvent(new CustomEvent("hyperShader:dirty",{detail:{compositionId:i,scenes:Array.from(c)}})))},Fo=()=>{let c=r.map(F=>document.getElementById(F)).filter(F=>F instanceof HTMLElement),Q=[];for(let F of c){let T=new MutationObserver(L=>{if(Mn())return;let k=new Set;for(let W of L){let E=W.target instanceof Element?W.target:W.target.parentElement;if(E)for(let D of c)(D===E||D.contains(E))&&k.add(D.id)}Rn(k)});T.observe(F,{attributes:!0,characterData:!0,childList:!0,subtree:!0}),Q.push(T)}let h=new MutationObserver(()=>{Mn()||Rn(new Set(r))});return h.observe(document.head,{attributes:!0,characterData:!0,childList:!0,subtree:!0}),Q.push(h),Q},po=async(c,Q,h)=>{let F=[];for(let T=0;T<Q;T+=1){let[L,k]=await Promise.all([mn(ir(c.cacheKey,T,"from")),mn(ir(c.cacheKey,T,"to"))]);if(!L||!k){for(let W of F)g.deleteTexture(W.fromTex),g.deleteTexture(W.toTex);return!1}F.push({sampleIndex:T,fromBlob:L.blob,toBlob:k.blob,fromTex:null,toTex:null}),h(T+1)}return c.frames=F,c.ready=!0,c.dirty=!1,c.fallback=!1,c.persisted=!0,c.textureReady=!1,!0},On=c=>{if(c.fallback||c.dirty||!c.ready)return Promise.resolve(!1);if(c.textureReady)return Qr(c),Promise.resolve(!0);if(c.texturePromise)return c.texturePromise;let Q=c.textureGeneration,h=c.frames,F=[],T=()=>c.textureGeneration!==Q||c.dirty||c.frames!==h,L=()=>{let E=new Set;for(let D of F)E.has(D)||(g.deleteTexture(D),E.add(D));for(let D of h)D.fromTex&&!E.has(D.fromTex)&&(g.deleteTexture(D.fromTex),E.add(D.fromTex)),D.toTex&&!E.has(D.toTex)&&(g.deleteTexture(D.toTex),E.add(D.toTex)),D.fromTex=null,D.toTex=null},k=async(E,D)=>{let q=D==="from"?E.fromBlob:E.toBlob;if(q)return q;let V=await mn(ir(c.cacheKey,E.sampleIndex,D));if(V?.blob)return V.blob;throw new Error("[HyperShader] Cached transition snapshot blob is unavailable")},W=Promise.resolve(!1);return W=(async()=>{for(let E of h){if(T())return L(),!1;if(!E.fromTex){let D=await k(E,"from");if(T())return L(),!1;let q=await no(D),V=SA(g);F.push(V);try{if(NA(g,V,q),T())return L(),!1;E.fromTex=V}finally{so(q)}}if(!E.toTex){let D=await k(E,"to");if(T())return L(),!1;let q=await no(D),V=SA(g);F.push(V);try{if(NA(g,V,q),T())return L(),!1;E.toTex=V}finally{so(q)}}c.persisted&&(E.fromBlob=null,E.toBlob=null)}return T()?(L(),!1):(c.textureReady=h.every(E=>!!(E.fromTex&&E.toTex)),c.textureReady&&(Qr(c),ho(c)),c.textureReady)})().catch(E=>(L(),T()||(fr(c),c.fallback=!0,c.ready=!0,c.dirty=!1,c.lastError=E instanceof Error?E.message:String(E),mA({ready:_e(),loading:!1,error:c.lastError})),!1)).finally(()=>{c.texturePromise===W&&(c.texturePromise=null)}),c.texturePromise=W,W},dr=async c=>{for(let Q of Dn(c))await On(Q)},Gn=async(c,Q,h,F)=>F?bf({key:ir(c.cacheKey,Q,h),blob:F,width:I,height:C,updatedAt:c.index*1e6+Q*2+(h==="to"?1:0)}):!1,mo=async(c,Q,h)=>{wr(c);let F=!0;for(let T=0;T<Q;T+=1){let L=c.time+c.duration*T/(Q-1);pA(()=>{Ke(L,!1)}),await uo(),pA(()=>{Ke(L,!0)});let k=document.getElementById(c.fromId),W=document.getElementById(c.toId);if(!k||!W)continue;let[E,D]=await Promise.all([WA(k),WA(W)]),[q,V]=await Promise.all([ro(E),ro(D)]);if(OA(E),OA(D),!q||!V)throw new Error("[HyperShader] Failed to encode transition snapshot");c.frames.push({sampleIndex:T,fromBlob:q,toBlob:V,fromTex:null,toTex:null}),(await Promise.all([Gn(c,T,"from",q),Gn(c,T,"to",V)])).every(Boolean)||(F=!1,c.lastError="[HyperShader] Failed to persist one or more transition snapshots"),h(T+1)}c.ready=!0,c.dirty=!1,c.fallback=!1,c.persisted=F,c.textureReady=!1},ue=null,Nn=()=>ue||(ue=(async()=>{let c=b.filter(E=>!gr(E)&&(E.dirty||!E.ready)),Q=c.map(E=>({cache:E,sampleCount:Qo(E)}));for(let E of Q)E.cache.cacheKey=Uo(E.cache,E.sampleCount);let h=Q.reduce((E,D)=>E+D.sampleCount,0),F=Q[0],T=!1;if(mA({ready:!1,progress:0,total:h,currentTransition:F?1:void 0,transitionTotal:Q.length||void 0,transitionFrame:F?0:void 0,transitionFrames:F?.sampleCount,phase:F?"cached":void 0,loading:T}),c.length===0){if(G=!0,mA({ready:!0,progress:0,total:0,currentTransition:void 0,transitionTotal:void 0,transitionFrame:void 0,transitionFrames:void 0,phase:void 0,loading:!1}),IA){let E=JA,D=ft(E,uA);await dr(D),IA&&(IA=!1,JA=[],se=!1,pA(()=>lr(...E)),uA=GA())}ue=null;return}uA=GA();let L=N.paused(),k=r.map(E=>{let D=document.getElementById(E);return{scene:D,opacity:D?.style.opacity??"",pointerEvents:D?.style.pointerEvents??""}});X=!0,U.style.display="none",ur();let W=0;try{for(let D=0;D<Q.length;D+=1){let q=Q[D];if(!q)continue;let{cache:V,sampleCount:sA}=q,fA=D+1,YA=W;wr(V);try{mA({ready:!1,progress:YA,total:h,currentTransition:fA,transitionTotal:Q.length,transitionFrame:0,transitionFrames:sA,phase:"cached",loading:T}),await po(V,sA,Me=>{W=YA+Me,mA({ready:!1,progress:W,total:h,currentTransition:fA,transitionTotal:Q.length,transitionFrame:Me,transitionFrames:sA,phase:"cached",loading:T})})||(W=YA,T=!0,mA({ready:!1,progress:W,total:h,currentTransition:fA,transitionTotal:Q.length,transitionFrame:0,transitionFrames:sA,phase:"capturing",loading:!0}),await mo(V,sA,Me=>{W=YA+Me,mA({ready:!1,progress:W,total:h,currentTransition:fA,transitionTotal:Q.length,transitionFrame:Me,transitionFrames:sA,phase:"capturing",loading:!0})}),!V.persisted&&V.lastError&&mA({ready:!1,loading:T,error:V.lastError}))}catch(bA){W=YA+sA,V.fallback=!0,V.ready=!0,V.dirty=!1,V.lastError=bA instanceof Error?bA.message:String(bA),console.warn("[HyperShader] Transition capture failed; using CSS fallback:",bA),mA({ready:!1,progress:W,total:h,currentTransition:fA,transitionTotal:Q.length,transitionFrame:sA,transitionFrames:sA,phase:"finalizing",loading:T,error:V.lastError})}W=YA+sA}xf(i,new Set(b.map(D=>D.cacheKey).filter(Boolean))),G=_e();let E=Q[Q.length-1];mA({ready:G,progress:W,total:h,currentTransition:Q.length,transitionTotal:Q.length,transitionFrame:E?.sampleCount,transitionFrames:E?.sampleCount,phase:"finalizing",loading:!1})}catch(E){console.warn("[HyperShader] Pre-capture failed, keeping DOM fallback visible:",E),G=_e(),mA({ready:G,progress:W,total:h,phase:"finalizing",loading:!1,error:E instanceof Error?E.message:String(E)})}finally{let E=uA,D=(IA||!L)&&!se,q=IA?JA:[],V=ft(q,E),sA=null;D&&(await dr(V),sA=V),D=(IA||!L)&&!se,q=IA?JA:[],V=ft(q,E),D&&V!==sA&&await dr(V),f.active=!1,f.transitionIndex=-1,U.style.display="none";try{pA(()=>{wo(E,!1)})}catch(fA){console.warn("[HyperShader] A timeline callback failed while restoring the playhead:",fA)}X=!1,uA=E;for(let fA of k)fA.scene&&(fA.scene.style.opacity=fA.opacity,fA.scene.style.pointerEvents=fA.pointerEvents);ne(),window.dispatchEvent(new CustomEvent("hyperShader:ready",{detail:{compositionId:i,progress:W,total:h}})),ue=null,D?(IA=!1,JA=[],se=!1,pA(()=>lr(...q)),uA=GA()):(IA=!1,JA=[],se=!1,ur())}})(),ue),vo=Fo();window.addEventListener("beforeunload",()=>{for(let c of vo)c.disconnect()},{once:!0});let Eo=Promise.resolve().then(()=>Nn()),Cr=window;return Cr.__hf=Cr.__hf||{},Cr.__hf.shaderTransitionsReady=Eo,window.__hfSuppressSceneMutations=c=>pA(c),En(i,N,A.timeline),N}function En(A,e,r){if(!r){let t=window;t.__timelines=t.__timelines||{},t.__timelines[A]=e}}function Lf(A,e,r,t,n){let s=A.timeline||gsap.timeline({paused:!0});if(A.timeline){let o=Number(n?.getAttribute("data-duration")||"40");s.to({t:0},{t:1,duration:o,ease:"none"},0)}for(let o=1;o<e.length;o++){let a=e[o];a&&s.set(`#${a}`,{opacity:0},0)}for(let o=0;o<r.length;o++){let a=r[o],B=e[o],l=e[o+1];if(!B||!l)continue;let u=a.duration??or,f=a.ease??vn,d=a.time;a.shader===void 0?(s.fromTo(`#${l}`,{opacity:0},{opacity:1,duration:u,ease:f},d),s.fromTo(`#${B}`,{opacity:1},{opacity:0,duration:u,ease:f},d)):(s.set(`#${l}`,{opacity:1},d),s.set(`#${B}`,{opacity:0},d+u))}if(typeof window<"u"&&!!window.__HF_PAGE_SIDE_COMPOSITING__){let o=A.bgColor??"#000",a=A.accentColor?ao(A.accentColor):gt,B=Number(n?.getAttribute("data-width")),l=Number(n?.getAttribute("data-height")),u=Number.isFinite(B)&&B>0?B:1920,f=Number.isFinite(l)&&l>0?l:1080;nr({scenes:e,transitions:r,bgColor:o,accentColors:a,width:u,height:f,defaultDuration:or})}return En(t,s,A.timeline),s}var Sf=new Map([["domain-warp-dissolve","domain-warp"],["chromatic-radial-split","chromatic-split"]]);function yn(A,e){if(!Number.isFinite(e)||e<=0)throw new Error(`[playSeamTransitionLoop] ${A} must be a finite number above 0, got ${e}`)}function lo(A,e,r,t,n={}){let s=Ue(Sf.get(t)??t),i=n.width??A.width,o=n.height??A.height,a=n.loopMs??1e3;yn("width",i),yn("height",o),yn("loopMs",a);let B=Qe(A,i,o);if(!B)throw new Error(`[playSeamTransitionLoop] No WebGL context available for "${t}"`);let l=B,u=null,f=null,d=null,g=null,w;try{u=de(l),f=Ce(l,s),d=SA(l),g=SA(l),NA(l,d,e),NA(l,g,r),w={quadBuf:u,prog:f,texFrom:d,texTo:g}}catch(C){throw d&&l.deleteTexture(d),g&&l.deleteTexture(g),f&&l.deleteProgram(f),u&&l.deleteBuffer(u),C}let x=!1,U=0,p=null,v=()=>{},y=new Promise(C=>{v=C});function I(C){if(x)return;let b=!1;p===null&&(p=C,b=!0);let _=(C-p)%a/a,S=_<.5?_*2:(1-_)*2;he(l,w.quadBuf,w.prog,w.texFrom,w.texTo,S,void 0,i,o),b&&v(),U=requestAnimationFrame(I)}return U=requestAnimationFrame(I),{ready:y,stop:()=>{x||(x=!0,cancelAnimationFrame(U),v(),l.deleteTexture(w.texFrom),l.deleteTexture(w.texTo),l.deleteProgram(w.prog),l.deleteBuffer(w.quadBuf))}}}return To(Kf);})();
|
|
16
16
|
/*! Bundled license information:
|
|
17
17
|
|
|
18
18
|
html2canvas/dist/html2canvas.esm.js:
|
|
@@ -36,4 +36,3 @@ html2canvas/dist/html2canvas.esm.js:
|
|
|
36
36
|
PERFORMANCE OF THIS SOFTWARE.
|
|
37
37
|
***************************************************************************** *)
|
|
38
38
|
*/
|
|
39
|
-
//# sourceMappingURL=index.global.js.map
|
package/dist/index.js
CHANGED
|
@@ -12,7 +12,7 @@ ${t.src?"":t.textContent||""}`).join(`
|
|
|
12
12
|
`);return or(`${e}
|
|
13
13
|
${r}`)}function Ao(A){let e=document.getElementById(A);return e?or(`${wf(document)}
|
|
14
14
|
${df(document)}
|
|
15
|
-
${Cf(e)}`):"missing"}function eo(A,e){for(let r of e)A.style.removeProperty(r);A.getAttribute("style")?.trim()===""&&A.removeAttribute("style")}function Cf(A){let e=A.cloneNode(!0);return eo(e,["opacity","visibility","pointer-events"]),e.querySelectorAll("[data-start]").forEach(r=>{eo(r,["visibility"])}),e.outerHTML}function nr(A,e,r){return`${A}:sample:${e}:${r}`}function hf(){return typeof indexedDB>"u"?Promise.resolve(null):new Promise(A=>{let e=indexedDB.open(nf,sf);e.onupgradeneeded=()=>{let r=e.result;r.objectStoreNames.contains(MA)||r.createObjectStore(MA,{keyPath:"key"})},e.onerror=()=>A(null),e.onblocked=()=>A(null),e.onsuccess=()=>{let r=e.result;r.onversionchange=()=>{r.close(),ct=null},A(r)}})}var ct=null;function ir(A){try{A?.close()}catch{}ct=null}function pn(){return ct=ct||hf(),ct}async function hn(A){let e=await pn();return e?new Promise(r=>{try{let n=e.transaction(MA,"readonly").objectStore(MA).get(A);n.onerror=()=>r(null),n.onsuccess=()=>{let s=n.result;s&&typeof s=="object"&&"blob"in s&&s.blob instanceof Blob?r(s):r(null)}}catch{ir(e),r(null)}}):null}async function Uf(A){let e=await pn();return e?new Promise(r=>{try{let t=e.transaction(MA,"readwrite");t.oncomplete=()=>r(!0),t.onerror=()=>r(!1),t.objectStore(MA).put(A)}catch{ir(e),r(!1)}}):!1}function to(A){return new Promise(e=>{try{A.toBlob(r=>e(r),"image/png")}catch{e(null)}})}async function Ff(A,e,r=af){let t=await pn();if(!t)return;let n=await new Promise(w=>{try{let U=t.transaction(MA,"readonly").objectStore(MA).getAll();U.onerror=()=>w([]),U.onsuccess=()=>{let p=[];for(let v of U.result)if(v&&typeof v=="object"&&"key"in v&&typeof v.key=="string"){let y="updatedAt"in v&&typeof v.updatedAt=="number"?v.updatedAt:0;p.push({key:v.key,updatedAt:y})}w(p)}}catch{ir(t),w([])}}),s=`${A}:`,i=w=>{for(let x of e)if(w.startsWith(`${x}:sample:`))return!0;return!1},o=n.filter(w=>w.key.startsWith(s)&&!i(w.key)).map(w=>w.key),a=new Set(o),B=n.filter(w=>!a.has(w.key)),l=B.filter(w=>i(w.key)).length,u=B.filter(w=>!i(w.key)).sort((w,x)=>x.updatedAt-w.updatedAt),f=Math.max(0,r-l),d=u.length>f?u.slice(f).map(w=>w.key):[],g=Array.from(new Set([...o,...d]));g.length!==0&&await new Promise(w=>{try{let x=t.transaction(MA,"readwrite");x.oncomplete=()=>w(),x.onerror=()=>w();let U=x.objectStore(MA);for(let p of g)U.delete(p)}catch{ir(t),w()}})}function ro(A){return typeof createImageBitmap=="function"?createImageBitmap(A):new Promise((e,r)=>{let t=URL.createObjectURL(A),n=new Image;n.onload=()=>{URL.revokeObjectURL(t),e(n)},n.onerror=()=>{URL.revokeObjectURL(t),r(new Error("[HyperShader] Failed to decode cached snapshot"))},n.src=t})}function no(A){typeof ImageBitmap<"u"&&A instanceof ImageBitmap&&A.close()}function so(A,e,r){let t=SA(A);return A.bindTexture(A.TEXTURE_2D,t),A.texImage2D(A.TEXTURE_2D,0,A.RGBA,e,r,0,A.RGBA,A.UNSIGNED_BYTE,null),t}function io(A,e){let r=A.createFramebuffer();if(!r)throw new Error("[HyperShader] Failed to create framebuffer");return A.bindFramebuffer(A.FRAMEBUFFER,r),A.framebufferTexture2D(A.FRAMEBUFFER,A.COLOR_ATTACHMENT0,A.TEXTURE_2D,e,0),A.bindFramebuffer(A.FRAMEBUFFER,null),r}function pf(A,e,r){let t=A?.ownerDocument||document,n=A||t.body;if(!n)return null;n.querySelector("[data-hyper-shader-loading]")?.remove();let s=t.createElement("div");s.setAttribute("data-hyper-shader-loading",""),s.setAttribute("data-hyperframes-ignore",""),s.setAttribute("data-hyperframes-picker-block",""),s.setAttribute("data-hf-ignore",""),s.setAttribute("data-no-capture",""),s.setAttribute("data-no-inspect",""),s.setAttribute("data-no-pick",""),s.setAttribute("draggable","false"),s.setAttribute("role","status"),s.setAttribute("aria-label","Preparing scene transitions"),s.style.cssText=["position:absolute","inset:0",`width:${e}px`,`height:${r}px`,"z-index:2147483647","display:none","place-items:center","opacity:1","transition:opacity 240ms ease-out","background:#030504","pointer-events:auto","color:#f4f7fb","cursor:default","touch-action:none","user-select:none","-webkit-user-select:none","-webkit-user-drag:none"].join(";");let i=y=>{y.preventDefault(),y.stopPropagation()};for(let y of["selectstart","dragstart","pointerdown","mousedown","touchstart"])s.addEventListener(y,i,{capture:!0});let o=t.createElement("div");o.setAttribute("draggable","false"),o.style.cssText=["display:grid","grid-template-rows:172px 72px 44px 44px 54px","justify-items:center","align-items:center","gap:0","width:min(1040px,82%)","padding:42px","box-sizing:border-box","text-align:center","font-family:Inter,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif","user-select:none","-webkit-user-select:none","-webkit-user-drag:none"].join(";");let a=t.createElement("div");a.setAttribute("data-hf-loader-mark-frame",""),a.style.cssText=["width:172px","height:172px","display:grid","place-items:center","overflow:visible","transform-origin:50% 50%","will-change:transform,opacity","user-select:none","-webkit-user-select:none","-webkit-user-drag:none"].join(";"),a.innerHTML=['<svg width="156" height="156" viewBox="0 0 100 100" fill="none" aria-hidden="true" draggable="false" style="display:block;overflow:visible;filter:drop-shadow(0 0 7px rgba(79,219,94,.2));user-select:none;-webkit-user-select:none">','<g data-hf-loader-mark transform="translate(50 50)">','<g data-hf-loader-core transform="scale(1)" opacity=".92">','<g transform="translate(-50 -50)">','<path data-hf-loader-left 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(#hyper-shader-loader-grad-left)"/>','<path data-hf-loader-right 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(#hyper-shader-loader-grad-right)"/>',"</g>","</g>","</g>","<defs>",'<linearGradient id="hyper-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="hyper-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 B=a.querySelector("svg");if(!B)return null;B.setAttribute("draggable","false");let l=t.createElement("div");l.style.cssText=["width:100%","height:72px","display:flex","align-items:center","justify-content:center","overflow:hidden","white-space:nowrap","text-overflow:ellipsis","font:600 44px/1.15 Inter,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif","letter-spacing:0","text-align:center","color:#f4f7fb"].join(";");let u=t.createElement("span");u.textContent=rr[0]??"Preparing scene transitions";let f=t.createElement("div");f.textContent="Sampling animated scene frames so shader transitions stay in motion.",f.style.cssText=["width:min(760px,100%)","height:44px","overflow:hidden","white-space:nowrap","text-overflow:ellipsis","color:rgba(244,247,251,0.64)","font:400 24px/1.5 Inter,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif"].join(";"),l.appendChild(u);let d=t.createElement("div");d.setAttribute("aria-hidden","true"),d.style.cssText=["width:min(520px,100%)","height:10px","overflow:hidden","border-radius:999px","background:rgba(255,255,255,0.1)"].join(";");let g=t.createElement("div");g.style.cssText=["width:100%","height:100%","transform:scaleX(0)","transform-origin:left center","border-radius:inherit","background:linear-gradient(90deg,#06e3fa,#4fdb5e)","transition:transform 160ms ease"].join(";");let w=t.createElement("div");w.style.cssText=["width:min(560px,100%)","height:54px","overflow:hidden","display:grid","grid-template-rows:repeat(2,27px)","font:500 18px/27px 'IBM Plex Mono','SF Mono','Fira Code',monospace","font-variant-numeric:tabular-nums","color:rgba(244,247,251,0.48)"].join(";");let x=y=>{let I=t.createElement("div");I.style.cssText=["display:grid","grid-template-columns:minmax(0,1fr) auto","align-items:center","column-gap:28px","width:100%","height:27px","white-space:nowrap"].join(";");let C=t.createElement("span");C.textContent=y,C.style.cssText=["overflow:hidden","text-overflow:ellipsis","text-align:left","min-width:0"].join(";");let b=t.createElement("span");return b.style.cssText=["min-width:76px","text-align:right"].join(";"),I.appendChild(C),I.appendChild(b),w.appendChild(I),{row:I,label:C,value:b}},U=x("transition"),p=x("transition frame");d.appendChild(g),o.appendChild(a),o.appendChild(l),o.appendChild(f),o.appendChild(d),o.appendChild(w),s.appendChild(o),n.appendChild(s);let v=null;return{show:()=>{v&&(clearTimeout(v),v=null),s.style.display="grid",s.style.opacity="1",s.style.pointerEvents="auto"},update:y=>{let{progress:I,total:C}=y,b=C>0?le(I/C,0,1):0,_=Math.min(rr.length-1,Math.floor(b*rr.length)),S=rr[_]??"Preparing scene transitions";u.textContent=S,g.style.transform=`scaleX(${b})`;let K=y.currentTransition!==void 0&&y.transitionTotal!==void 0?`${y.currentTransition}/${y.transitionTotal}`:C>0?`${I}/${C}`:"",R=y.transitionFrame!==void 0&&y.transitionFrames!==void 0?`${y.transitionFrame}/${y.transitionFrames}`:"",J=y.phase==="cached"?"loading cached transition frames":y.phase==="finalizing"?"finalizing":"rendering transition frames";U.label.textContent=y.currentTransition!==void 0?"transition":"transition frames",U.value.textContent=K,p.label.textContent=J,p.value.textContent=R,p.row.style.visibility=R?"visible":"hidden",s.setAttribute("aria-valuenow",String(Math.round(b*100)))},hide:()=>{v&&clearTimeout(v),s.style.display!=="none"&&(s.style.opacity="0",s.style.pointerEvents="none",v=setTimeout(()=>{s.style.display="none",s.style.opacity="1",s.style.pointerEvents="auto",v=null},240))}}}function mf(A){let{bgColor:e,scenes:r,transitions:t}=A;if(r.length!==t.length+1)throw new Error(`[HyperShader] init(): expected scenes.length === transitions.length + 1, got scenes=${r.length}, transitions=${t.length}`);if(typeof document<"u"){let c=[],Q=[];for(let h of r){let F=document.getElementById(h);F?F.classList.contains("scene")||Q.push(h):c.push(h)}if(c.length>0)throw new Error(`[HyperShader] init(): scene ids not found in DOM: ${c.join(", ")}`);if(Q.length>0)throw new Error(`[HyperShader] init(): elements found but missing .scene class: ${Q.join(", ")}`)}if(typeof window<"u"){let c=window;c.__hf&&(c.__hf.transitions=t.map((Q,h)=>({time:Q.time,duration:Q.duration??sr,shader:Q.shader,ease:Q.ease??Un,fromScene:r[h]??"",toScene:r[h+1]??""})))}let n=A.accentColor?oo(A.accentColor):ft,s=document.querySelector("[data-composition-id]"),i=A.compositionId||s?.getAttribute("data-composition-id")||"main",o=Number(s?.getAttribute("data-width")),a=Number(s?.getAttribute("data-height")),B=Number.isFinite(o)&&o>0?o:ge,l=Number.isFinite(a)&&a>0?a:we;if(typeof window<"u"&&!!window.__HF_VIRTUAL_TIME__)return vf(A,r,t,i,s);let f={active:!1,prog:null,progress:0,transitionIndex:-1},d=document.getElementById("gl-canvas");d||(d=document.createElement("canvas"),d.id="gl-canvas",d.style.cssText="position:absolute;top:0;left:0;z-index:100;pointer-events:none;display:none;",(s||document.body).appendChild(d)),d.width=B,d.height=l,d.style.width=`${B}px`,d.style.height=`${l}px`;let g=Qe(d,B,l);if(!g){console.warn("[HyperShader] WebGL unavailable \u2014 shader transitions disabled.");let c=A.timeline||gsap.timeline({paused:!0});return Fn(i,c,A.timeline),c}let w=de(g),x=new Map;for(let c of t)if(c.shader!==void 0&&!x.has(c.shader))try{x.set(c.shader,Ce(g,Ue(c.shader)))}catch(Q){console.error(`[HyperShader] Failed to compile "${c.shader}":`,Q)}let U=d,p=le(cf(A.previewCaptureFps,30),1,60),v=ff(),y=gf(),I=Math.max(1,Math.round(B*v)),C=Math.max(1,Math.round(l*v)),b=[],_=dr(g,rf,["precision mediump float;","varying vec2 v_uv;","uniform sampler2D u_a;","uniform sampler2D u_b;","uniform float u_mix;","void main(){","gl_FragColor=mix(texture2D(u_a,v_uv),texture2D(u_b,v_uv),u_mix);","}"].join("")),S={a:g.getUniformLocation(_,"u_a"),b:g.getUniformLocation(_,"u_b"),mix:g.getUniformLocation(_,"u_mix"),pos:g.getAttribLocation(_,"a_pos")},K=so(g,I,C),R=so(g,I,C),J=io(g,K),M=io(g,R),O=null,eA=()=>y!=="internal"?null:(O=O||pf(s,B,l),O),G=!1,X=!1,dA=0,aA=0,BA=new WeakMap,FA=()=>{aA=performance.now()+120},RA=c=>{BA.has(c)||BA.set(c,c.style.pointerEvents)},CA=(c,Q,h)=>{RA(c),FA(),c.style.opacity=h,c.style.pointerEvents=Q?BA.get(c)??"":"none"},LA=(c,Q,h)=>{CA(c,Q,h),c.style.visibility=Q?"visible":"hidden"},hA=(c,Q,h,F)=>{r.forEach(T=>{let L=document.getElementById(T);L&&(T===c?LA(L,!0,h):T===Q?LA(L,!0,F):CA(L,!1,"0"))})},OA=c=>{c.width=0,c.height=0},WA=c=>Zi(c,e,B,l,{forceVisible:!0,scale:v}),Bo=()=>new Promise(c=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>c())})}),vn=c=>!!(c?.fromTex&&c.toTex),co=(c,Q)=>{if(c.frames.length===0)return null;let h=le(Q,0,1)*(c.frames.length-1),F=Math.floor(h),T=Math.ceil(h),L=c.frames[F]??c.frames[c.frames.length-1],k=c.frames[T]??L;return!vn(L)||!vn(k)?null:{a:L,b:k,mix:h-F}},En=(c,Q,h,F)=>{g.bindFramebuffer(g.FRAMEBUFFER,c),g.viewport(0,0,I,C),g.useProgram(_),g.activeTexture(g.TEXTURE0),g.bindTexture(g.TEXTURE_2D,Q),g.uniform1i(S.a,0),g.activeTexture(g.TEXTURE1),g.bindTexture(g.TEXTURE_2D,h),g.uniform1i(S.b,1),g.uniform1f(S.mix,F),g.bindBuffer(g.ARRAY_BUFFER,w),g.enableVertexAttribArray(S.pos),g.vertexAttribPointer(S.pos,2,g.FLOAT,!1,0,0),g.drawArrays(g.TRIANGLE_STRIP,0,4),g.bindFramebuffer(g.FRAMEBUFFER,null),g.viewport(0,0,B,l)},Hn=c=>{Dn(c).then(Q=>{if(!Q)return;let h=N.time();h>=c.time&&h<c.time+c.duration&&ne()})},lo=c=>{let Q=0;for(let h=0;h<b.length;h+=1){let F=b[h];F&&c>=F.time+F.duration&&(Q=h+1)}return le(Q,0,r.length-1)},yn=c=>{let Q=lo(c);r.forEach((h,F)=>{let T=document.getElementById(h);if(!T)return;let L=F===Q;CA(T,L,L?"1":"0")})},In=(c,Q)=>{let h=document.getElementById(c.fromId),F=document.getElementById(c.toId);if(!h||!F)return;let T=Q*Q*(3-2*Q);U.style.display="none",hA(c.fromId,c.toId,String(1-T),String(T))},ne=()=>{if(X)return;let c=N.time(),Q=b.find(k=>!k.fallback&&k.ready&&!k.dirty&&!k.textureReady&&c>=k.time-$i&&c<k.time+k.duration);Q&&Hn(Q);let h=b.findIndex(k=>c>=k.time&&c<k.time+k.duration);if(h<0){f.active=!1,f.transitionIndex=-1,U.style.display="none",yn(c);return}let F=b[h];if(!F||F.dirty||!F.ready){U.style.display="none";return}if(F.fallback||F.prog===null){f.active=!0,f.transitionIndex=h,f.prog=null,f.progress=le((c-F.time)/F.duration,0,1),In(F,f.progress);return}if(!F.textureReady){Hn(F),U.style.display="none";return}let T=F.prog;f.active=!0,f.transitionIndex=h,f.prog=T,f.progress=le((c-F.time)/F.duration,0,1),gr(F);let L=co(F,f.progress);if(!L){U.style.display="none";return}hA(F.fromId,F.toId,"1","1"),En(J,L.a.fromTex,L.b.fromTex,L.mix),En(M,L.a.toTex,L.b.toTex,L.mix),U.style.display="block",he(g,w,T,K,R,f.progress,n,B,l)},N;if(A.timeline){N=A.timeline;let c=Number(s?.getAttribute("data-duration")||"40");N.to({t:0},{t:1,duration:c,ease:"none",onUpdate:ne},0)}else N=gsap.timeline({paused:!0,onUpdate:ne});let ar=0,Se=c=>(...Q)=>{ar+=1;try{return c(...Q)}finally{ar-=1}},Br=Se(N.play.bind(N)),cr=Se(N.pause.bind(N)),Ke=Se(N.time.bind(N)),bn=typeof N.seek=="function"?Se(N.seek.bind(N)):null,lt=typeof N.totalTime=="function"?N.totalTime.bind(N):null,xn=N;for(let c of["timeScale","paused","reversed"]){let Q=xn[c];typeof Q=="function"&&(xn[c]=Se(Q.bind(N)))}let GA=()=>{let c=Ke();return typeof c=="number"&&Number.isFinite(c)?c:0},uA=GA(),De=c=>{typeof c=="number"&&Number.isFinite(c)&&(uA=c)},ut=(c,Q)=>{let h=c[0];return typeof h=="number"&&Number.isFinite(h)?h:Q},uo=(c,Q)=>{let h=Ke(c,Q);return typeof h=="number"?N:h},pA=c=>{dA+=1;try{return c()}finally{dA-=1,aA=performance.now()+120}},IA=!1,JA=[],se=!1;N.play=((...c)=>{De(c[0]);let Q=ut(c,uA);if(!_e()||!go(Q))return se=!1,IA=!0,JA=c,Mn(),N;let h=pA(()=>Br(...c));return uA=GA(),h}),N.pause=((...c)=>{if(IA=!1,JA=[],De(c[0]),X)return se=!0,N;let Q=pA(()=>cr(...c));return uA=GA(),c.length>0&&ne(),Q}),N.time=((...c)=>{if(c.length===0)return X||(uA=GA()),uA;if(De(c[0]),X)return N;let Q=pA(()=>Ke(...c));return X||(uA=GA()),ne(),Q}),bn&&(N.seek=((...c)=>{if(De(c[0]),X)return N;let Q=pA(()=>bn(...c));return X||(uA=GA()),ne(),Q})),lt&&(N.totalTime=((...c)=>ar>0?lt(...c):c.length===0?X?uA:lt():(De(c[0]),lt(...c)))),Ji(),d.style.display="none";for(let c=0;c<t.length;c++){let Q=t[c],h=r[c],F=r[c+1];if(!h||!F)continue;let T=Q.shader!==void 0,L=T?x.get(Q.shader)??null:null,k=!T||L===null;T&&L===null&&console.warn(`[HyperShader] Shader "${Q.shader}" failed to compile \u2014 falling back to CSS crossfade.`);let W=k?null:L,E=Q.duration??sr,D=Q.ease??Un,q=Q.time,V=b.length;b.push({index:V,time:q,duration:E,fromId:h,toId:F,prog:W,frames:[],cacheKey:"",dirty:!k,ready:k,fallback:k,persisted:k,textureReady:!1,texturePromise:null,textureGeneration:0,textureAccess:0}),N.call(()=>{X||pA(()=>{let fA=document.getElementById(h),YA=document.getElementById(F);if(!fA||!YA)return;f.prog=W,f.transitionIndex=V,f.progress=0,f.active=!0;let bA=b[V];if(bA?.fallback){In(bA,0);return}U.style.display=bA?.ready&&!bA.dirty&&bA.textureReady?"block":"none",hA(h,F,"1","1")})},null,q);let sA={p:0};N.to(sA,{p:1,duration:E,ease:D,onUpdate:()=>{f.progress=sA.p}},q),N.call(()=>{pA(()=>{f.active=!1,f.transitionIndex=-1,U.style.display="none",yn(q+E)})},null,q+E)}let fo=c=>Math.max(2,Math.ceil(c.duration*p)+1),_e=()=>b.every(c=>c.ready&&!c.dirty),Tn=c=>{let Q=[],h=new Set,F=L=>{h.has(L.index)||L.fallback||L.dirty||!L.ready||(Q.push(L),h.add(L.index))};for(let L of b)c>=L.time&&c<L.time+L.duration&&F(L);let T=b.find(L=>L.time>=c);T&&F(T);for(let L of b)L.time>=c&&L.time-c<=$i&&F(L);return Q.slice(0,zi)},go=c=>Tn(c).every(Q=>Q.textureReady),Ln=0,lr=c=>{c.textureGeneration+=1;for(let Q of c.frames)Q.fromTex&&(g.deleteTexture(Q.fromTex),Q.fromTex=null),Q.toTex&&(g.deleteTexture(Q.toTex),Q.toTex=null);c.textureReady=!1},ur=c=>c.prog===null,fr=c=>{if(lr(c),c.texturePromise=null,c.frames=[],c.lastError=void 0,ur(c)){c.ready=!0,c.fallback=!0,c.persisted=!0,c.textureReady=!1;return}c.ready=!1,c.fallback=!1,c.persisted=!1,c.textureReady=!1},gr=c=>{Ln+=1,c.textureAccess=Ln},wo=c=>{let Q=b.filter(h=>h!==c&&h.textureReady).sort((h,F)=>h.textureAccess-F.textureAccess);for(;Q.length>=zi;){let h=Q.shift();if(!h)break;lr(h)}},Qo=(c,Q)=>{let h=[of,i,c.index,c.fromId,Ao(c.fromId),c.toId,Ao(c.toId),t[c.index]?.shader||"unknown",c.time,c.duration,Q,p,v,I,C,B,l].join("|");return`${i}:${c.index}:${or(h)}`},mA=c=>{let Q=window;Q.__hf=Q.__hf||{},Q.__hf.shaderTransitions=Q.__hf.shaderTransitions||{};let F={...Q.__hf.shaderTransitions[i]||{ready:!1,progress:0,total:0,dirtyTransitions:b.length,captureScale:v,textureWidth:I,textureHeight:C,fps:p,loading:!0},...c};if(F.dirtyTransitions=b.filter(T=>T.dirty||!T.ready).length,Q.__hf.shaderTransitions[i]=F,window.parent?.postMessage({source:"hf-preview",type:"shader-transition-state",compositionId:i,state:F},"*"),F.loading){let T=eA();T?.show(),T?.update({progress:F.progress,total:F.total,currentTransition:F.currentTransition,transitionTotal:F.transitionTotal,transitionFrame:F.transitionFrame,transitionFrames:F.transitionFrames,phase:F.phase})}F.ready?O?.hide():F.loading||O?.hide()},Sn=()=>X||dA>0||performance.now()<aA||!N.paused(),Kn=c=>{if(c.size===0)return;let Q=!1;for(let h of b)!c.has(h.fromId)&&!c.has(h.toId)||ur(h)||(fr(h),h.dirty=!0,h.cacheKey="",Q=!0);Q&&(G=_e(),mA({ready:G,progress:0,total:0,currentTransition:void 0,transitionTotal:void 0,transitionFrame:void 0,transitionFrames:void 0,phase:void 0,loading:!1}),window.dispatchEvent(new CustomEvent("hyperShader:dirty",{detail:{compositionId:i,scenes:Array.from(c)}})))},Co=()=>{let c=r.map(F=>document.getElementById(F)).filter(F=>F instanceof HTMLElement),Q=[];for(let F of c){let T=new MutationObserver(L=>{if(Sn())return;let k=new Set;for(let W of L){let E=W.target instanceof Element?W.target:W.target.parentElement;if(E)for(let D of c)(D===E||D.contains(E))&&k.add(D.id)}Kn(k)});T.observe(F,{attributes:!0,characterData:!0,childList:!0,subtree:!0}),Q.push(T)}let h=new MutationObserver(()=>{Sn()||Kn(new Set(r))});return h.observe(document.head,{attributes:!0,characterData:!0,childList:!0,subtree:!0}),Q.push(h),Q},ho=async(c,Q,h)=>{let F=[];for(let T=0;T<Q;T+=1){let[L,k]=await Promise.all([hn(nr(c.cacheKey,T,"from")),hn(nr(c.cacheKey,T,"to"))]);if(!L||!k){for(let W of F)g.deleteTexture(W.fromTex),g.deleteTexture(W.toTex);return!1}F.push({sampleIndex:T,fromBlob:L.blob,toBlob:k.blob,fromTex:null,toTex:null}),h(T+1)}return c.frames=F,c.ready=!0,c.dirty=!1,c.fallback=!1,c.persisted=!0,c.textureReady=!1,!0},Dn=c=>{if(c.fallback||c.dirty||!c.ready)return Promise.resolve(!1);if(c.textureReady)return gr(c),Promise.resolve(!0);if(c.texturePromise)return c.texturePromise;let Q=c.textureGeneration,h=c.frames,F=[],T=()=>c.textureGeneration!==Q||c.dirty||c.frames!==h,L=()=>{let E=new Set;for(let D of F)E.has(D)||(g.deleteTexture(D),E.add(D));for(let D of h)D.fromTex&&!E.has(D.fromTex)&&(g.deleteTexture(D.fromTex),E.add(D.fromTex)),D.toTex&&!E.has(D.toTex)&&(g.deleteTexture(D.toTex),E.add(D.toTex)),D.fromTex=null,D.toTex=null},k=async(E,D)=>{let q=D==="from"?E.fromBlob:E.toBlob;if(q)return q;let V=await hn(nr(c.cacheKey,E.sampleIndex,D));if(V?.blob)return V.blob;throw new Error("[HyperShader] Cached transition snapshot blob is unavailable")},W=Promise.resolve(!1);return W=(async()=>{for(let E of h){if(T())return L(),!1;if(!E.fromTex){let D=await k(E,"from");if(T())return L(),!1;let q=await ro(D),V=SA(g);F.push(V);try{if(NA(g,V,q),T())return L(),!1;E.fromTex=V}finally{no(q)}}if(!E.toTex){let D=await k(E,"to");if(T())return L(),!1;let q=await ro(D),V=SA(g);F.push(V);try{if(NA(g,V,q),T())return L(),!1;E.toTex=V}finally{no(q)}}c.persisted&&(E.fromBlob=null,E.toBlob=null)}return T()?(L(),!1):(c.textureReady=h.every(E=>!!(E.fromTex&&E.toTex)),c.textureReady&&(gr(c),wo(c)),c.textureReady)})().catch(E=>(L(),T()||(lr(c),c.fallback=!0,c.ready=!0,c.dirty=!1,c.lastError=E instanceof Error?E.message:String(E),mA({ready:_e(),loading:!1,error:c.lastError})),!1)).finally(()=>{c.texturePromise===W&&(c.texturePromise=null)}),c.texturePromise=W,W},wr=async c=>{for(let Q of Tn(c))await Dn(Q)},_n=async(c,Q,h,F)=>F?Uf({key:nr(c.cacheKey,Q,h),blob:F,width:I,height:C,updatedAt:c.index*1e6+Q*2+(h==="to"?1:0)}):!1,Uo=async(c,Q,h)=>{fr(c);let F=!0;for(let T=0;T<Q;T+=1){let L=c.time+c.duration*T/(Q-1);pA(()=>{Ke(L,!1)}),await Bo(),pA(()=>{Ke(L,!0)});let k=document.getElementById(c.fromId),W=document.getElementById(c.toId);if(!k||!W)continue;let[E,D]=await Promise.all([WA(k),WA(W)]),[q,V]=await Promise.all([to(E),to(D)]);if(OA(E),OA(D),!q||!V)throw new Error("[HyperShader] Failed to encode transition snapshot");c.frames.push({sampleIndex:T,fromBlob:q,toBlob:V,fromTex:null,toTex:null}),(await Promise.all([_n(c,T,"from",q),_n(c,T,"to",V)])).every(Boolean)||(F=!1,c.lastError="[HyperShader] Failed to persist one or more transition snapshots"),h(T+1)}c.ready=!0,c.dirty=!1,c.fallback=!1,c.persisted=F,c.textureReady=!1},ue=null,Mn=()=>ue||(ue=(async()=>{let c=b.filter(E=>!ur(E)&&(E.dirty||!E.ready)),Q=c.map(E=>({cache:E,sampleCount:fo(E)}));for(let E of Q)E.cache.cacheKey=Qo(E.cache,E.sampleCount);let h=Q.reduce((E,D)=>E+D.sampleCount,0),F=Q[0],T=!1;if(mA({ready:!1,progress:0,total:h,currentTransition:F?1:void 0,transitionTotal:Q.length||void 0,transitionFrame:F?0:void 0,transitionFrames:F?.sampleCount,phase:F?"cached":void 0,loading:T}),c.length===0){if(G=!0,mA({ready:!0,progress:0,total:0,currentTransition:void 0,transitionTotal:void 0,transitionFrame:void 0,transitionFrames:void 0,phase:void 0,loading:!1}),IA){let E=JA,D=ut(E,uA);await wr(D),IA&&(IA=!1,JA=[],se=!1,pA(()=>Br(...E)),uA=GA())}ue=null;return}uA=GA();let L=N.paused(),k=r.map(E=>{let D=document.getElementById(E);return{scene:D,opacity:D?.style.opacity??"",pointerEvents:D?.style.pointerEvents??""}});X=!0,U.style.display="none",cr();let W=0;try{for(let D=0;D<Q.length;D+=1){let q=Q[D];if(!q)continue;let{cache:V,sampleCount:sA}=q,fA=D+1,YA=W;fr(V);try{mA({ready:!1,progress:YA,total:h,currentTransition:fA,transitionTotal:Q.length,transitionFrame:0,transitionFrames:sA,phase:"cached",loading:T}),await ho(V,sA,Me=>{W=YA+Me,mA({ready:!1,progress:W,total:h,currentTransition:fA,transitionTotal:Q.length,transitionFrame:Me,transitionFrames:sA,phase:"cached",loading:T})})||(W=YA,T=!0,mA({ready:!1,progress:W,total:h,currentTransition:fA,transitionTotal:Q.length,transitionFrame:0,transitionFrames:sA,phase:"capturing",loading:!0}),await Uo(V,sA,Me=>{W=YA+Me,mA({ready:!1,progress:W,total:h,currentTransition:fA,transitionTotal:Q.length,transitionFrame:Me,transitionFrames:sA,phase:"capturing",loading:!0})}),!V.persisted&&V.lastError&&mA({ready:!1,loading:T,error:V.lastError}))}catch(bA){W=YA+sA,V.fallback=!0,V.ready=!0,V.dirty=!1,V.lastError=bA instanceof Error?bA.message:String(bA),console.warn("[HyperShader] Transition capture failed; using CSS fallback:",bA),mA({ready:!1,progress:W,total:h,currentTransition:fA,transitionTotal:Q.length,transitionFrame:sA,transitionFrames:sA,phase:"finalizing",loading:T,error:V.lastError})}W=YA+sA}Ff(i,new Set(b.map(D=>D.cacheKey).filter(Boolean))),G=_e();let E=Q[Q.length-1];mA({ready:G,progress:W,total:h,currentTransition:Q.length,transitionTotal:Q.length,transitionFrame:E?.sampleCount,transitionFrames:E?.sampleCount,phase:"finalizing",loading:!1})}catch(E){console.warn("[HyperShader] Pre-capture failed, keeping DOM fallback visible:",E),G=_e(),mA({ready:G,progress:W,total:h,phase:"finalizing",loading:!1,error:E instanceof Error?E.message:String(E)})}finally{let E=uA,D=(IA||!L)&&!se,q=IA?JA:[],V=ut(q,E),sA=null;D&&(await wr(V),sA=V),D=(IA||!L)&&!se,q=IA?JA:[],V=ut(q,E),D&&V!==sA&&await wr(V),f.active=!1,f.transitionIndex=-1,U.style.display="none";try{pA(()=>{uo(E,!1)})}catch(fA){console.warn("[HyperShader] A timeline callback failed while restoring the playhead:",fA)}X=!1,uA=E;for(let fA of k)fA.scene&&(fA.scene.style.opacity=fA.opacity,fA.scene.style.pointerEvents=fA.pointerEvents);ne(),window.dispatchEvent(new CustomEvent("hyperShader:ready",{detail:{compositionId:i,progress:W,total:h}})),ue=null,D?(IA=!1,JA=[],se=!1,pA(()=>Br(...q)),uA=GA()):(IA=!1,JA=[],se=!1,cr())}})(),ue),Fo=Co();window.addEventListener("beforeunload",()=>{for(let c of Fo)c.disconnect()},{once:!0});let po=Promise.resolve().then(()=>Mn()),Qr=window;return Qr.__hf=Qr.__hf||{},Qr.__hf.shaderTransitionsReady=po,window.__hfSuppressSceneMutations=c=>pA(c),Fn(i,N,A.timeline),N}function Fn(A,e,r){if(!r){let t=window;t.__timelines=t.__timelines||{},t.__timelines[A]=e}}function vf(A,e,r,t,n){let s=A.timeline||gsap.timeline({paused:!0});if(A.timeline){let o=Number(n?.getAttribute("data-duration")||"40");s.to({t:0},{t:1,duration:o,ease:"none"},0)}for(let o=1;o<e.length;o++){let a=e[o];a&&s.set(`#${a}`,{opacity:0},0)}for(let o=0;o<r.length;o++){let a=r[o],B=e[o],l=e[o+1];if(!B||!l)continue;let u=a.duration??sr,f=a.ease??Un,d=a.time;a.shader===void 0?(s.fromTo(`#${l}`,{opacity:0},{opacity:1,duration:u,ease:f},d),s.fromTo(`#${B}`,{opacity:1},{opacity:0,duration:u,ease:f},d)):(s.set(`#${l}`,{opacity:1},d),s.set(`#${B}`,{opacity:0},d+u))}if(typeof window<"u"&&!!window.__HF_PAGE_SIDE_COMPOSITING__){let o=A.bgColor??"#000",a=A.accentColor?oo(A.accentColor):ft,B=Number(n?.getAttribute("data-width")),l=Number(n?.getAttribute("data-height")),u=Number.isFinite(B)&&B>0?B:1920,f=Number.isFinite(l)&&l>0?l:1080;Cn({scenes:e,transitions:r,bgColor:o,accentColors:a,width:u,height:f,defaultDuration:sr})}return Fn(t,s,A.timeline),s}var Ef=new Map([["domain-warp-dissolve","domain-warp"],["chromatic-radial-split","chromatic-split"]]);function mn(A,e){if(!Number.isFinite(e)||e<=0)throw new Error(`[playSeamTransitionLoop] ${A} must be a finite number above 0, got ${e}`)}function Hf(A,e,r,t,n={}){let s=Ue(Ef.get(t)??t),i=n.width??A.width,o=n.height??A.height,a=n.loopMs??1e3;mn("width",i),mn("height",o),mn("loopMs",a);let B=Qe(A,i,o);if(!B)throw new Error(`[playSeamTransitionLoop] No WebGL context available for "${t}"`);let l=B,u=null,f=null,d=null,g=null,w;try{u=de(l),f=Ce(l,s),d=SA(l),g=SA(l),NA(l,d,e),NA(l,g,r),w={quadBuf:u,prog:f,texFrom:d,texTo:g}}catch(C){throw d&&l.deleteTexture(d),g&&l.deleteTexture(g),f&&l.deleteProgram(f),u&&l.deleteBuffer(u),C}let x=!1,U=0,p=null,v=()=>{},y=new Promise(C=>{v=C});function I(C){if(x)return;let b=!1;p===null&&(p=C,b=!0);let _=(C-p)%a/a,S=_<.5?_*2:(1-_)*2;he(l,w.quadBuf,w.prog,w.texFrom,w.texTo,S,void 0,i,o),b&&v(),U=requestAnimationFrame(I)}return U=requestAnimationFrame(I),{ready:y,stop:()=>{x||(x=!0,cancelAnimationFrame(U),v(),l.deleteTexture(w.texFrom),l.deleteTexture(w.texTo),l.deleteProgram(w.prog),l.deleteBuffer(w.quadBuf))}}}export{qi as PAGE_COMPOSITOR_BUILD_CANARY,dn as PAGE_COMPOSITOR_CANVAS_ID,Nn as SHADER_NAMES,mf as init,Cn as installPageSideCompositor,tr as isHtmlInCanvasCaptureSupported,ji as isPageSideCompositingSupported,Hf as playSeamTransitionLoop};
|
|
15
|
+
${Cf(e)}`):"missing"}function eo(A,e){for(let r of e)A.style.removeProperty(r);A.getAttribute("style")?.trim()===""&&A.removeAttribute("style")}function Cf(A){let e=A.cloneNode(!0);return eo(e,["opacity","visibility","pointer-events"]),e.querySelectorAll("[data-start]").forEach(r=>{eo(r,["visibility"])}),e.outerHTML}function nr(A,e,r){return`${A}:sample:${e}:${r}`}function hf(){return typeof indexedDB>"u"?Promise.resolve(null):new Promise(A=>{let e=indexedDB.open(nf,sf);e.onupgradeneeded=()=>{let r=e.result;r.objectStoreNames.contains(MA)||r.createObjectStore(MA,{keyPath:"key"})},e.onerror=()=>A(null),e.onblocked=()=>A(null),e.onsuccess=()=>{let r=e.result;r.onversionchange=()=>{r.close(),ct=null},A(r)}})}var ct=null;function ir(A){try{A?.close()}catch{}ct=null}function pn(){return ct=ct||hf(),ct}async function hn(A){let e=await pn();return e?new Promise(r=>{try{let n=e.transaction(MA,"readonly").objectStore(MA).get(A);n.onerror=()=>r(null),n.onsuccess=()=>{let s=n.result;s&&typeof s=="object"&&"blob"in s&&s.blob instanceof Blob?r(s):r(null)}}catch{ir(e),r(null)}}):null}async function Uf(A){let e=await pn();return e?new Promise(r=>{try{let t=e.transaction(MA,"readwrite");t.oncomplete=()=>r(!0),t.onerror=()=>r(!1),t.objectStore(MA).put(A)}catch{ir(e),r(!1)}}):!1}function to(A){return new Promise(e=>{try{A.toBlob(r=>e(r),"image/png")}catch{e(null)}})}async function Ff(A,e,r=af){let t=await pn();if(!t)return;let n=await new Promise(w=>{try{let U=t.transaction(MA,"readonly").objectStore(MA).getAll();U.onerror=()=>w([]),U.onsuccess=()=>{let p=[];for(let v of U.result)if(v&&typeof v=="object"&&"key"in v&&typeof v.key=="string"){let y="updatedAt"in v&&typeof v.updatedAt=="number"?v.updatedAt:0;p.push({key:v.key,updatedAt:y})}w(p)}}catch{ir(t),w([])}}),s=`${A}:`,i=w=>{for(let x of e)if(w.startsWith(`${x}:sample:`))return!0;return!1},o=n.filter(w=>w.key.startsWith(s)&&!i(w.key)).map(w=>w.key),a=new Set(o),B=n.filter(w=>!a.has(w.key)),l=B.filter(w=>i(w.key)).length,u=B.filter(w=>!i(w.key)).sort((w,x)=>x.updatedAt-w.updatedAt),f=Math.max(0,r-l),d=u.length>f?u.slice(f).map(w=>w.key):[],g=Array.from(new Set([...o,...d]));g.length!==0&&await new Promise(w=>{try{let x=t.transaction(MA,"readwrite");x.oncomplete=()=>w(),x.onerror=()=>w();let U=x.objectStore(MA);for(let p of g)U.delete(p)}catch{ir(t),w()}})}function ro(A){return typeof createImageBitmap=="function"?createImageBitmap(A):new Promise((e,r)=>{let t=URL.createObjectURL(A),n=new Image;n.onload=()=>{URL.revokeObjectURL(t),e(n)},n.onerror=()=>{URL.revokeObjectURL(t),r(new Error("[HyperShader] Failed to decode cached snapshot"))},n.src=t})}function no(A){typeof ImageBitmap<"u"&&A instanceof ImageBitmap&&A.close()}function so(A,e,r){let t=SA(A);return A.bindTexture(A.TEXTURE_2D,t),A.texImage2D(A.TEXTURE_2D,0,A.RGBA,e,r,0,A.RGBA,A.UNSIGNED_BYTE,null),t}function io(A,e){let r=A.createFramebuffer();if(!r)throw new Error("[HyperShader] Failed to create framebuffer");return A.bindFramebuffer(A.FRAMEBUFFER,r),A.framebufferTexture2D(A.FRAMEBUFFER,A.COLOR_ATTACHMENT0,A.TEXTURE_2D,e,0),A.bindFramebuffer(A.FRAMEBUFFER,null),r}function pf(A,e,r){let t=A?.ownerDocument||document,n=A||t.body;if(!n)return null;n.querySelector("[data-hyper-shader-loading]")?.remove();let s=t.createElement("div");s.setAttribute("data-hyper-shader-loading",""),s.setAttribute("data-hyperframes-ignore",""),s.setAttribute("data-hyperframes-picker-block",""),s.setAttribute("data-hf-ignore",""),s.setAttribute("data-no-capture",""),s.setAttribute("data-no-inspect",""),s.setAttribute("data-no-pick",""),s.setAttribute("draggable","false"),s.setAttribute("role","status"),s.setAttribute("aria-label","Preparing scene transitions"),s.style.cssText=["position:absolute","inset:0",`width:${e}px`,`height:${r}px`,"z-index:2147483647","display:none","place-items:center","opacity:1","transition:opacity 240ms ease-out","background:#030504","pointer-events:auto","color:#f4f7fb","cursor:default","touch-action:none","user-select:none","-webkit-user-select:none","-webkit-user-drag:none"].join(";");let i=y=>{y.preventDefault(),y.stopPropagation()};for(let y of["selectstart","dragstart","pointerdown","mousedown","touchstart"])s.addEventListener(y,i,{capture:!0});let o=t.createElement("div");o.setAttribute("draggable","false"),o.style.cssText=["display:grid","grid-template-rows:172px 72px 44px 44px 54px","justify-items:center","align-items:center","gap:0","width:min(1040px,82%)","padding:42px","box-sizing:border-box","text-align:center","font-family:Inter,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif","user-select:none","-webkit-user-select:none","-webkit-user-drag:none"].join(";");let a=t.createElement("div");a.setAttribute("data-hf-loader-mark-frame",""),a.style.cssText=["width:172px","height:172px","display:grid","place-items:center","overflow:visible","transform-origin:50% 50%","will-change:transform,opacity","user-select:none","-webkit-user-select:none","-webkit-user-drag:none"].join(";"),a.innerHTML=['<svg width="156" height="156" viewBox="0 0 100 100" fill="none" aria-hidden="true" draggable="false" style="display:block;overflow:visible;filter:drop-shadow(0 0 7px rgba(79,219,94,.2));user-select:none;-webkit-user-select:none">','<g data-hf-loader-mark transform="translate(50 50)">','<g data-hf-loader-core transform="scale(1)" opacity=".92">','<g transform="translate(-50 -50)">','<path data-hf-loader-left 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(#hyper-shader-loader-grad-left)"/>','<path data-hf-loader-right 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(#hyper-shader-loader-grad-right)"/>',"</g>","</g>","</g>","<defs>",'<linearGradient id="hyper-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="hyper-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 B=a.querySelector("svg");if(!B)return null;B.setAttribute("draggable","false");let l=t.createElement("div");l.style.cssText=["width:100%","height:72px","display:flex","align-items:center","justify-content:center","overflow:hidden","white-space:nowrap","text-overflow:ellipsis","font:600 44px/1.15 Inter,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif","letter-spacing:0","text-align:center","color:#f4f7fb"].join(";");let u=t.createElement("span");u.textContent=rr[0]??"Preparing scene transitions";let f=t.createElement("div");f.textContent="Sampling animated scene frames so shader transitions stay in motion.",f.style.cssText=["width:min(760px,100%)","height:44px","overflow:hidden","white-space:nowrap","text-overflow:ellipsis","color:rgba(244,247,251,0.64)","font:400 24px/1.5 Inter,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif"].join(";"),l.appendChild(u);let d=t.createElement("div");d.setAttribute("aria-hidden","true"),d.style.cssText=["width:min(520px,100%)","height:10px","overflow:hidden","border-radius:999px","background:rgba(255,255,255,0.1)"].join(";");let g=t.createElement("div");g.style.cssText=["width:100%","height:100%","transform:scaleX(0)","transform-origin:left center","border-radius:inherit","background:linear-gradient(90deg,#06e3fa,#4fdb5e)","transition:transform 160ms ease"].join(";");let w=t.createElement("div");w.style.cssText=["width:min(560px,100%)","height:54px","overflow:hidden","display:grid","grid-template-rows:repeat(2,27px)","font:500 18px/27px 'IBM Plex Mono','SF Mono','Fira Code',monospace","font-variant-numeric:tabular-nums","color:rgba(244,247,251,0.48)"].join(";");let x=y=>{let I=t.createElement("div");I.style.cssText=["display:grid","grid-template-columns:minmax(0,1fr) auto","align-items:center","column-gap:28px","width:100%","height:27px","white-space:nowrap"].join(";");let C=t.createElement("span");C.textContent=y,C.style.cssText=["overflow:hidden","text-overflow:ellipsis","text-align:left","min-width:0"].join(";");let b=t.createElement("span");return b.style.cssText=["min-width:76px","text-align:right"].join(";"),I.appendChild(C),I.appendChild(b),w.appendChild(I),{row:I,label:C,value:b}},U=x("transition"),p=x("transition frame");d.appendChild(g),o.appendChild(a),o.appendChild(l),o.appendChild(f),o.appendChild(d),o.appendChild(w),s.appendChild(o),n.appendChild(s);let v=null;return{show:()=>{v&&(clearTimeout(v),v=null),s.style.display="grid",s.style.opacity="1",s.style.pointerEvents="auto"},update:y=>{let{progress:I,total:C}=y,b=C>0?le(I/C,0,1):0,_=Math.min(rr.length-1,Math.floor(b*rr.length)),S=rr[_]??"Preparing scene transitions";u.textContent=S,g.style.transform=`scaleX(${b})`;let K=y.currentTransition!==void 0&&y.transitionTotal!==void 0?`${y.currentTransition}/${y.transitionTotal}`:C>0?`${I}/${C}`:"",R=y.transitionFrame!==void 0&&y.transitionFrames!==void 0?`${y.transitionFrame}/${y.transitionFrames}`:"",J=y.phase==="cached"?"loading cached transition frames":y.phase==="finalizing"?"finalizing":"rendering transition frames";U.label.textContent=y.currentTransition!==void 0?"transition":"transition frames",U.value.textContent=K,p.label.textContent=J,p.value.textContent=R,p.row.style.visibility=R?"visible":"hidden",s.setAttribute("aria-valuenow",String(Math.round(b*100)))},hide:()=>{v&&clearTimeout(v),s.style.display!=="none"&&(s.style.opacity="0",s.style.pointerEvents="none",v=setTimeout(()=>{s.style.display="none",s.style.opacity="1",s.style.pointerEvents="auto",v=null},240))}}}function mf(A){let{bgColor:e,scenes:r,transitions:t}=A;if(r.length!==t.length+1)throw new Error(`[HyperShader] init(): expected scenes.length === transitions.length + 1, got scenes=${r.length}, transitions=${t.length}`);if(typeof document<"u"){let c=[],Q=[];for(let h of r){let F=document.getElementById(h);F?F.classList.contains("scene")||Q.push(h):c.push(h)}if(c.length>0)throw new Error(`[HyperShader] init(): scene ids not found in DOM: ${c.join(", ")}`);if(Q.length>0)throw new Error(`[HyperShader] init(): elements found but missing .scene class: ${Q.join(", ")}`)}if(typeof window<"u"){let c=window;c.__hf&&(c.__hf.transitions=t.map((Q,h)=>({time:Q.time,duration:Q.duration??sr,shader:Q.shader,ease:Q.ease??Un,fromScene:r[h]??"",toScene:r[h+1]??""})))}let n=A.accentColor?oo(A.accentColor):ft,s=document.querySelector("[data-composition-id]"),i=A.compositionId||s?.getAttribute("data-composition-id")||"main",o=Number(s?.getAttribute("data-width")),a=Number(s?.getAttribute("data-height")),B=Number.isFinite(o)&&o>0?o:ge,l=Number.isFinite(a)&&a>0?a:we;if(typeof window<"u"&&!!window.__HF_VIRTUAL_TIME__)return vf(A,r,t,i,s);let f={active:!1,prog:null,progress:0,transitionIndex:-1},d=document.getElementById("gl-canvas");d||(d=document.createElement("canvas"),d.id="gl-canvas",d.style.cssText="position:absolute;top:0;left:0;z-index:100;pointer-events:none;display:none;",(s||document.body).appendChild(d)),d.width=B,d.height=l,d.style.width=`${B}px`,d.style.height=`${l}px`;let g=Qe(d,B,l);if(!g){console.warn("[HyperShader] WebGL unavailable, shader transitions disabled.");let c=A.timeline||gsap.timeline({paused:!0});return Fn(i,c,A.timeline),c}let w=de(g),x=new Map;for(let c of t)if(c.shader!==void 0&&!x.has(c.shader))try{x.set(c.shader,Ce(g,Ue(c.shader)))}catch(Q){console.error(`[HyperShader] Failed to compile "${c.shader}":`,Q)}let U=d,p=le(cf(A.previewCaptureFps,30),1,60),v=ff(),y=gf(),I=Math.max(1,Math.round(B*v)),C=Math.max(1,Math.round(l*v)),b=[],_=dr(g,rf,["precision mediump float;","varying vec2 v_uv;","uniform sampler2D u_a;","uniform sampler2D u_b;","uniform float u_mix;","void main(){","gl_FragColor=mix(texture2D(u_a,v_uv),texture2D(u_b,v_uv),u_mix);","}"].join("")),S={a:g.getUniformLocation(_,"u_a"),b:g.getUniformLocation(_,"u_b"),mix:g.getUniformLocation(_,"u_mix"),pos:g.getAttribLocation(_,"a_pos")},K=so(g,I,C),R=so(g,I,C),J=io(g,K),M=io(g,R),O=null,eA=()=>y!=="internal"?null:(O=O||pf(s,B,l),O),G=!1,X=!1,dA=0,aA=0,BA=new WeakMap,FA=()=>{aA=performance.now()+120},RA=c=>{BA.has(c)||BA.set(c,c.style.pointerEvents)},CA=(c,Q,h)=>{RA(c),FA(),c.style.opacity=h,c.style.pointerEvents=Q?BA.get(c)??"":"none"},LA=(c,Q,h)=>{CA(c,Q,h),c.style.visibility=Q?"visible":"hidden"},hA=(c,Q,h,F)=>{r.forEach(T=>{let L=document.getElementById(T);L&&(T===c?LA(L,!0,h):T===Q?LA(L,!0,F):CA(L,!1,"0"))})},OA=c=>{c.width=0,c.height=0},WA=c=>Zi(c,e,B,l,{forceVisible:!0,scale:v}),Bo=()=>new Promise(c=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>c())})}),vn=c=>!!(c?.fromTex&&c.toTex),co=(c,Q)=>{if(c.frames.length===0)return null;let h=le(Q,0,1)*(c.frames.length-1),F=Math.floor(h),T=Math.ceil(h),L=c.frames[F]??c.frames[c.frames.length-1],k=c.frames[T]??L;return!vn(L)||!vn(k)?null:{a:L,b:k,mix:h-F}},En=(c,Q,h,F)=>{g.bindFramebuffer(g.FRAMEBUFFER,c),g.viewport(0,0,I,C),g.useProgram(_),g.activeTexture(g.TEXTURE0),g.bindTexture(g.TEXTURE_2D,Q),g.uniform1i(S.a,0),g.activeTexture(g.TEXTURE1),g.bindTexture(g.TEXTURE_2D,h),g.uniform1i(S.b,1),g.uniform1f(S.mix,F),g.bindBuffer(g.ARRAY_BUFFER,w),g.enableVertexAttribArray(S.pos),g.vertexAttribPointer(S.pos,2,g.FLOAT,!1,0,0),g.drawArrays(g.TRIANGLE_STRIP,0,4),g.bindFramebuffer(g.FRAMEBUFFER,null),g.viewport(0,0,B,l)},Hn=c=>{Dn(c).then(Q=>{if(!Q)return;let h=N.time();h>=c.time&&h<c.time+c.duration&&ne()})},lo=c=>{let Q=0;for(let h=0;h<b.length;h+=1){let F=b[h];F&&c>=F.time+F.duration&&(Q=h+1)}return le(Q,0,r.length-1)},yn=c=>{let Q=lo(c);r.forEach((h,F)=>{let T=document.getElementById(h);if(!T)return;let L=F===Q;CA(T,L,L?"1":"0")})},In=(c,Q)=>{let h=document.getElementById(c.fromId),F=document.getElementById(c.toId);if(!h||!F)return;let T=Q*Q*(3-2*Q);U.style.display="none",hA(c.fromId,c.toId,String(1-T),String(T))},ne=()=>{if(X)return;let c=N.time(),Q=b.find(k=>!k.fallback&&k.ready&&!k.dirty&&!k.textureReady&&c>=k.time-$i&&c<k.time+k.duration);Q&&Hn(Q);let h=b.findIndex(k=>c>=k.time&&c<k.time+k.duration);if(h<0){f.active=!1,f.transitionIndex=-1,U.style.display="none",yn(c);return}let F=b[h];if(!F||F.dirty||!F.ready){U.style.display="none";return}if(F.fallback||F.prog===null){f.active=!0,f.transitionIndex=h,f.prog=null,f.progress=le((c-F.time)/F.duration,0,1),In(F,f.progress);return}if(!F.textureReady){Hn(F),U.style.display="none";return}let T=F.prog;f.active=!0,f.transitionIndex=h,f.prog=T,f.progress=le((c-F.time)/F.duration,0,1),gr(F);let L=co(F,f.progress);if(!L){U.style.display="none";return}hA(F.fromId,F.toId,"1","1"),En(J,L.a.fromTex,L.b.fromTex,L.mix),En(M,L.a.toTex,L.b.toTex,L.mix),U.style.display="block",he(g,w,T,K,R,f.progress,n,B,l)},N;if(A.timeline){N=A.timeline;let c=Number(s?.getAttribute("data-duration")||"40");N.to({t:0},{t:1,duration:c,ease:"none",onUpdate:ne},0)}else N=gsap.timeline({paused:!0,onUpdate:ne});let ar=0,Se=c=>(...Q)=>{ar+=1;try{return c(...Q)}finally{ar-=1}},Br=Se(N.play.bind(N)),cr=Se(N.pause.bind(N)),Ke=Se(N.time.bind(N)),bn=typeof N.seek=="function"?Se(N.seek.bind(N)):null,lt=typeof N.totalTime=="function"?N.totalTime.bind(N):null,xn=N;for(let c of["timeScale","paused","reversed"]){let Q=xn[c];typeof Q=="function"&&(xn[c]=Se(Q.bind(N)))}let GA=()=>{let c=Ke();return typeof c=="number"&&Number.isFinite(c)?c:0},uA=GA(),De=c=>{typeof c=="number"&&Number.isFinite(c)&&(uA=c)},ut=(c,Q)=>{let h=c[0];return typeof h=="number"&&Number.isFinite(h)?h:Q},uo=(c,Q)=>{let h=Ke(c,Q);return typeof h=="number"?N:h},pA=c=>{dA+=1;try{return c()}finally{dA-=1,aA=performance.now()+120}},IA=!1,JA=[],se=!1;N.play=((...c)=>{De(c[0]);let Q=ut(c,uA);if(!_e()||!go(Q))return se=!1,IA=!0,JA=c,Mn(),N;let h=pA(()=>Br(...c));return uA=GA(),h}),N.pause=((...c)=>{if(IA=!1,JA=[],De(c[0]),X)return se=!0,N;let Q=pA(()=>cr(...c));return uA=GA(),c.length>0&&ne(),Q}),N.time=((...c)=>{if(c.length===0)return X||(uA=GA()),uA;if(De(c[0]),X)return N;let Q=pA(()=>Ke(...c));return X||(uA=GA()),ne(),Q}),bn&&(N.seek=((...c)=>{if(De(c[0]),X)return N;let Q=pA(()=>bn(...c));return X||(uA=GA()),ne(),Q})),lt&&(N.totalTime=((...c)=>ar>0?lt(...c):c.length===0?X?uA:lt():(De(c[0]),lt(...c)))),Ji(),d.style.display="none";for(let c=0;c<t.length;c++){let Q=t[c],h=r[c],F=r[c+1];if(!h||!F)continue;let T=Q.shader!==void 0,L=T?x.get(Q.shader)??null:null,k=!T||L===null;T&&L===null&&console.warn(`[HyperShader] Shader "${Q.shader}" failed to compile, falling back to CSS crossfade.`);let W=k?null:L,E=Q.duration??sr,D=Q.ease??Un,q=Q.time,V=b.length;b.push({index:V,time:q,duration:E,fromId:h,toId:F,prog:W,frames:[],cacheKey:"",dirty:!k,ready:k,fallback:k,persisted:k,textureReady:!1,texturePromise:null,textureGeneration:0,textureAccess:0}),N.call(()=>{X||pA(()=>{let fA=document.getElementById(h),YA=document.getElementById(F);if(!fA||!YA)return;f.prog=W,f.transitionIndex=V,f.progress=0,f.active=!0;let bA=b[V];if(bA?.fallback){In(bA,0);return}U.style.display=bA?.ready&&!bA.dirty&&bA.textureReady?"block":"none",hA(h,F,"1","1")})},null,q);let sA={p:0};N.to(sA,{p:1,duration:E,ease:D,onUpdate:()=>{f.progress=sA.p}},q),N.call(()=>{pA(()=>{f.active=!1,f.transitionIndex=-1,U.style.display="none",yn(q+E)})},null,q+E)}let fo=c=>Math.max(2,Math.ceil(c.duration*p)+1),_e=()=>b.every(c=>c.ready&&!c.dirty),Tn=c=>{let Q=[],h=new Set,F=L=>{h.has(L.index)||L.fallback||L.dirty||!L.ready||(Q.push(L),h.add(L.index))};for(let L of b)c>=L.time&&c<L.time+L.duration&&F(L);let T=b.find(L=>L.time>=c);T&&F(T);for(let L of b)L.time>=c&&L.time-c<=$i&&F(L);return Q.slice(0,zi)},go=c=>Tn(c).every(Q=>Q.textureReady),Ln=0,lr=c=>{c.textureGeneration+=1;for(let Q of c.frames)Q.fromTex&&(g.deleteTexture(Q.fromTex),Q.fromTex=null),Q.toTex&&(g.deleteTexture(Q.toTex),Q.toTex=null);c.textureReady=!1},ur=c=>c.prog===null,fr=c=>{if(lr(c),c.texturePromise=null,c.frames=[],c.lastError=void 0,ur(c)){c.ready=!0,c.fallback=!0,c.persisted=!0,c.textureReady=!1;return}c.ready=!1,c.fallback=!1,c.persisted=!1,c.textureReady=!1},gr=c=>{Ln+=1,c.textureAccess=Ln},wo=c=>{let Q=b.filter(h=>h!==c&&h.textureReady).sort((h,F)=>h.textureAccess-F.textureAccess);for(;Q.length>=zi;){let h=Q.shift();if(!h)break;lr(h)}},Qo=(c,Q)=>{let h=[of,i,c.index,c.fromId,Ao(c.fromId),c.toId,Ao(c.toId),t[c.index]?.shader||"unknown",c.time,c.duration,Q,p,v,I,C,B,l].join("|");return`${i}:${c.index}:${or(h)}`},mA=c=>{let Q=window;Q.__hf=Q.__hf||{},Q.__hf.shaderTransitions=Q.__hf.shaderTransitions||{};let F={...Q.__hf.shaderTransitions[i]||{ready:!1,progress:0,total:0,dirtyTransitions:b.length,captureScale:v,textureWidth:I,textureHeight:C,fps:p,loading:!0},...c};if(F.dirtyTransitions=b.filter(T=>T.dirty||!T.ready).length,Q.__hf.shaderTransitions[i]=F,window.parent?.postMessage({source:"hf-preview",type:"shader-transition-state",compositionId:i,state:F},"*"),F.loading){let T=eA();T?.show(),T?.update({progress:F.progress,total:F.total,currentTransition:F.currentTransition,transitionTotal:F.transitionTotal,transitionFrame:F.transitionFrame,transitionFrames:F.transitionFrames,phase:F.phase})}F.ready?O?.hide():F.loading||O?.hide()},Sn=()=>X||dA>0||performance.now()<aA||!N.paused(),Kn=c=>{if(c.size===0)return;let Q=!1;for(let h of b)!c.has(h.fromId)&&!c.has(h.toId)||ur(h)||(fr(h),h.dirty=!0,h.cacheKey="",Q=!0);Q&&(G=_e(),mA({ready:G,progress:0,total:0,currentTransition:void 0,transitionTotal:void 0,transitionFrame:void 0,transitionFrames:void 0,phase:void 0,loading:!1}),window.dispatchEvent(new CustomEvent("hyperShader:dirty",{detail:{compositionId:i,scenes:Array.from(c)}})))},Co=()=>{let c=r.map(F=>document.getElementById(F)).filter(F=>F instanceof HTMLElement),Q=[];for(let F of c){let T=new MutationObserver(L=>{if(Sn())return;let k=new Set;for(let W of L){let E=W.target instanceof Element?W.target:W.target.parentElement;if(E)for(let D of c)(D===E||D.contains(E))&&k.add(D.id)}Kn(k)});T.observe(F,{attributes:!0,characterData:!0,childList:!0,subtree:!0}),Q.push(T)}let h=new MutationObserver(()=>{Sn()||Kn(new Set(r))});return h.observe(document.head,{attributes:!0,characterData:!0,childList:!0,subtree:!0}),Q.push(h),Q},ho=async(c,Q,h)=>{let F=[];for(let T=0;T<Q;T+=1){let[L,k]=await Promise.all([hn(nr(c.cacheKey,T,"from")),hn(nr(c.cacheKey,T,"to"))]);if(!L||!k){for(let W of F)g.deleteTexture(W.fromTex),g.deleteTexture(W.toTex);return!1}F.push({sampleIndex:T,fromBlob:L.blob,toBlob:k.blob,fromTex:null,toTex:null}),h(T+1)}return c.frames=F,c.ready=!0,c.dirty=!1,c.fallback=!1,c.persisted=!0,c.textureReady=!1,!0},Dn=c=>{if(c.fallback||c.dirty||!c.ready)return Promise.resolve(!1);if(c.textureReady)return gr(c),Promise.resolve(!0);if(c.texturePromise)return c.texturePromise;let Q=c.textureGeneration,h=c.frames,F=[],T=()=>c.textureGeneration!==Q||c.dirty||c.frames!==h,L=()=>{let E=new Set;for(let D of F)E.has(D)||(g.deleteTexture(D),E.add(D));for(let D of h)D.fromTex&&!E.has(D.fromTex)&&(g.deleteTexture(D.fromTex),E.add(D.fromTex)),D.toTex&&!E.has(D.toTex)&&(g.deleteTexture(D.toTex),E.add(D.toTex)),D.fromTex=null,D.toTex=null},k=async(E,D)=>{let q=D==="from"?E.fromBlob:E.toBlob;if(q)return q;let V=await hn(nr(c.cacheKey,E.sampleIndex,D));if(V?.blob)return V.blob;throw new Error("[HyperShader] Cached transition snapshot blob is unavailable")},W=Promise.resolve(!1);return W=(async()=>{for(let E of h){if(T())return L(),!1;if(!E.fromTex){let D=await k(E,"from");if(T())return L(),!1;let q=await ro(D),V=SA(g);F.push(V);try{if(NA(g,V,q),T())return L(),!1;E.fromTex=V}finally{no(q)}}if(!E.toTex){let D=await k(E,"to");if(T())return L(),!1;let q=await ro(D),V=SA(g);F.push(V);try{if(NA(g,V,q),T())return L(),!1;E.toTex=V}finally{no(q)}}c.persisted&&(E.fromBlob=null,E.toBlob=null)}return T()?(L(),!1):(c.textureReady=h.every(E=>!!(E.fromTex&&E.toTex)),c.textureReady&&(gr(c),wo(c)),c.textureReady)})().catch(E=>(L(),T()||(lr(c),c.fallback=!0,c.ready=!0,c.dirty=!1,c.lastError=E instanceof Error?E.message:String(E),mA({ready:_e(),loading:!1,error:c.lastError})),!1)).finally(()=>{c.texturePromise===W&&(c.texturePromise=null)}),c.texturePromise=W,W},wr=async c=>{for(let Q of Tn(c))await Dn(Q)},_n=async(c,Q,h,F)=>F?Uf({key:nr(c.cacheKey,Q,h),blob:F,width:I,height:C,updatedAt:c.index*1e6+Q*2+(h==="to"?1:0)}):!1,Uo=async(c,Q,h)=>{fr(c);let F=!0;for(let T=0;T<Q;T+=1){let L=c.time+c.duration*T/(Q-1);pA(()=>{Ke(L,!1)}),await Bo(),pA(()=>{Ke(L,!0)});let k=document.getElementById(c.fromId),W=document.getElementById(c.toId);if(!k||!W)continue;let[E,D]=await Promise.all([WA(k),WA(W)]),[q,V]=await Promise.all([to(E),to(D)]);if(OA(E),OA(D),!q||!V)throw new Error("[HyperShader] Failed to encode transition snapshot");c.frames.push({sampleIndex:T,fromBlob:q,toBlob:V,fromTex:null,toTex:null}),(await Promise.all([_n(c,T,"from",q),_n(c,T,"to",V)])).every(Boolean)||(F=!1,c.lastError="[HyperShader] Failed to persist one or more transition snapshots"),h(T+1)}c.ready=!0,c.dirty=!1,c.fallback=!1,c.persisted=F,c.textureReady=!1},ue=null,Mn=()=>ue||(ue=(async()=>{let c=b.filter(E=>!ur(E)&&(E.dirty||!E.ready)),Q=c.map(E=>({cache:E,sampleCount:fo(E)}));for(let E of Q)E.cache.cacheKey=Qo(E.cache,E.sampleCount);let h=Q.reduce((E,D)=>E+D.sampleCount,0),F=Q[0],T=!1;if(mA({ready:!1,progress:0,total:h,currentTransition:F?1:void 0,transitionTotal:Q.length||void 0,transitionFrame:F?0:void 0,transitionFrames:F?.sampleCount,phase:F?"cached":void 0,loading:T}),c.length===0){if(G=!0,mA({ready:!0,progress:0,total:0,currentTransition:void 0,transitionTotal:void 0,transitionFrame:void 0,transitionFrames:void 0,phase:void 0,loading:!1}),IA){let E=JA,D=ut(E,uA);await wr(D),IA&&(IA=!1,JA=[],se=!1,pA(()=>Br(...E)),uA=GA())}ue=null;return}uA=GA();let L=N.paused(),k=r.map(E=>{let D=document.getElementById(E);return{scene:D,opacity:D?.style.opacity??"",pointerEvents:D?.style.pointerEvents??""}});X=!0,U.style.display="none",cr();let W=0;try{for(let D=0;D<Q.length;D+=1){let q=Q[D];if(!q)continue;let{cache:V,sampleCount:sA}=q,fA=D+1,YA=W;fr(V);try{mA({ready:!1,progress:YA,total:h,currentTransition:fA,transitionTotal:Q.length,transitionFrame:0,transitionFrames:sA,phase:"cached",loading:T}),await ho(V,sA,Me=>{W=YA+Me,mA({ready:!1,progress:W,total:h,currentTransition:fA,transitionTotal:Q.length,transitionFrame:Me,transitionFrames:sA,phase:"cached",loading:T})})||(W=YA,T=!0,mA({ready:!1,progress:W,total:h,currentTransition:fA,transitionTotal:Q.length,transitionFrame:0,transitionFrames:sA,phase:"capturing",loading:!0}),await Uo(V,sA,Me=>{W=YA+Me,mA({ready:!1,progress:W,total:h,currentTransition:fA,transitionTotal:Q.length,transitionFrame:Me,transitionFrames:sA,phase:"capturing",loading:!0})}),!V.persisted&&V.lastError&&mA({ready:!1,loading:T,error:V.lastError}))}catch(bA){W=YA+sA,V.fallback=!0,V.ready=!0,V.dirty=!1,V.lastError=bA instanceof Error?bA.message:String(bA),console.warn("[HyperShader] Transition capture failed; using CSS fallback:",bA),mA({ready:!1,progress:W,total:h,currentTransition:fA,transitionTotal:Q.length,transitionFrame:sA,transitionFrames:sA,phase:"finalizing",loading:T,error:V.lastError})}W=YA+sA}Ff(i,new Set(b.map(D=>D.cacheKey).filter(Boolean))),G=_e();let E=Q[Q.length-1];mA({ready:G,progress:W,total:h,currentTransition:Q.length,transitionTotal:Q.length,transitionFrame:E?.sampleCount,transitionFrames:E?.sampleCount,phase:"finalizing",loading:!1})}catch(E){console.warn("[HyperShader] Pre-capture failed, keeping DOM fallback visible:",E),G=_e(),mA({ready:G,progress:W,total:h,phase:"finalizing",loading:!1,error:E instanceof Error?E.message:String(E)})}finally{let E=uA,D=(IA||!L)&&!se,q=IA?JA:[],V=ut(q,E),sA=null;D&&(await wr(V),sA=V),D=(IA||!L)&&!se,q=IA?JA:[],V=ut(q,E),D&&V!==sA&&await wr(V),f.active=!1,f.transitionIndex=-1,U.style.display="none";try{pA(()=>{uo(E,!1)})}catch(fA){console.warn("[HyperShader] A timeline callback failed while restoring the playhead:",fA)}X=!1,uA=E;for(let fA of k)fA.scene&&(fA.scene.style.opacity=fA.opacity,fA.scene.style.pointerEvents=fA.pointerEvents);ne(),window.dispatchEvent(new CustomEvent("hyperShader:ready",{detail:{compositionId:i,progress:W,total:h}})),ue=null,D?(IA=!1,JA=[],se=!1,pA(()=>Br(...q)),uA=GA()):(IA=!1,JA=[],se=!1,cr())}})(),ue),Fo=Co();window.addEventListener("beforeunload",()=>{for(let c of Fo)c.disconnect()},{once:!0});let po=Promise.resolve().then(()=>Mn()),Qr=window;return Qr.__hf=Qr.__hf||{},Qr.__hf.shaderTransitionsReady=po,window.__hfSuppressSceneMutations=c=>pA(c),Fn(i,N,A.timeline),N}function Fn(A,e,r){if(!r){let t=window;t.__timelines=t.__timelines||{},t.__timelines[A]=e}}function vf(A,e,r,t,n){let s=A.timeline||gsap.timeline({paused:!0});if(A.timeline){let o=Number(n?.getAttribute("data-duration")||"40");s.to({t:0},{t:1,duration:o,ease:"none"},0)}for(let o=1;o<e.length;o++){let a=e[o];a&&s.set(`#${a}`,{opacity:0},0)}for(let o=0;o<r.length;o++){let a=r[o],B=e[o],l=e[o+1];if(!B||!l)continue;let u=a.duration??sr,f=a.ease??Un,d=a.time;a.shader===void 0?(s.fromTo(`#${l}`,{opacity:0},{opacity:1,duration:u,ease:f},d),s.fromTo(`#${B}`,{opacity:1},{opacity:0,duration:u,ease:f},d)):(s.set(`#${l}`,{opacity:1},d),s.set(`#${B}`,{opacity:0},d+u))}if(typeof window<"u"&&!!window.__HF_PAGE_SIDE_COMPOSITING__){let o=A.bgColor??"#000",a=A.accentColor?oo(A.accentColor):ft,B=Number(n?.getAttribute("data-width")),l=Number(n?.getAttribute("data-height")),u=Number.isFinite(B)&&B>0?B:1920,f=Number.isFinite(l)&&l>0?l:1080;Cn({scenes:e,transitions:r,bgColor:o,accentColors:a,width:u,height:f,defaultDuration:sr})}return Fn(t,s,A.timeline),s}var Ef=new Map([["domain-warp-dissolve","domain-warp"],["chromatic-radial-split","chromatic-split"]]);function mn(A,e){if(!Number.isFinite(e)||e<=0)throw new Error(`[playSeamTransitionLoop] ${A} must be a finite number above 0, got ${e}`)}function Hf(A,e,r,t,n={}){let s=Ue(Ef.get(t)??t),i=n.width??A.width,o=n.height??A.height,a=n.loopMs??1e3;mn("width",i),mn("height",o),mn("loopMs",a);let B=Qe(A,i,o);if(!B)throw new Error(`[playSeamTransitionLoop] No WebGL context available for "${t}"`);let l=B,u=null,f=null,d=null,g=null,w;try{u=de(l),f=Ce(l,s),d=SA(l),g=SA(l),NA(l,d,e),NA(l,g,r),w={quadBuf:u,prog:f,texFrom:d,texTo:g}}catch(C){throw d&&l.deleteTexture(d),g&&l.deleteTexture(g),f&&l.deleteProgram(f),u&&l.deleteBuffer(u),C}let x=!1,U=0,p=null,v=()=>{},y=new Promise(C=>{v=C});function I(C){if(x)return;let b=!1;p===null&&(p=C,b=!0);let _=(C-p)%a/a,S=_<.5?_*2:(1-_)*2;he(l,w.quadBuf,w.prog,w.texFrom,w.texTo,S,void 0,i,o),b&&v(),U=requestAnimationFrame(I)}return U=requestAnimationFrame(I),{ready:y,stop:()=>{x||(x=!0,cancelAnimationFrame(U),v(),l.deleteTexture(w.texFrom),l.deleteTexture(w.texTo),l.deleteProgram(w.prog),l.deleteBuffer(w.quadBuf))}}}export{qi as PAGE_COMPOSITOR_BUILD_CANARY,dn as PAGE_COMPOSITOR_CANVAS_ID,Nn as SHADER_NAMES,mf as init,Cn as installPageSideCompositor,tr as isHtmlInCanvasCaptureSupported,ji as isPageSideCompositingSupported,Hf as playSeamTransitionLoop};
|
|
16
16
|
/*! Bundled license information:
|
|
17
17
|
|
|
18
18
|
html2canvas/dist/html2canvas.esm.js:
|
|
@@ -36,4 +36,3 @@ html2canvas/dist/html2canvas.esm.js:
|
|
|
36
36
|
PERFORMANCE OF THIS SOFTWARE.
|
|
37
37
|
***************************************************************************** *)
|
|
38
38
|
*/
|
|
39
|
-
//# sourceMappingURL=index.js.map
|