shaders 3.2.470 → 3.2.471

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.
@@ -0,0 +1,12 @@
1
+ export type ShadersFramework = 'react' | 'vue' | 'svelte' | 'solid';
2
+ export interface ShadersConfig {
3
+ /** UI framework the installed components target (`shaders/<framework>`). */
4
+ framework: ShadersFramework;
5
+ /**
6
+ * ID of the shaders.com project this codebase is connected to. Set by
7
+ * `npx shaders init`; shaders saved to that project can be installed into
8
+ * this codebase and kept up to date.
9
+ */
10
+ project?: string;
11
+ }
12
+ export declare function defineConfig(config: ShadersConfig): ShadersConfig;
package/dist/config.js ADDED
@@ -0,0 +1,6 @@
1
+ function defineConfig(config) {
2
+ return config;
3
+ }
4
+ export {
5
+ defineConfig
6
+ };
package/dist/js/bundle.js CHANGED
@@ -1,4 +1,4 @@
1
- /* shaders@3.2.470/js — ESM bundle for CDN consumption (no bundler required). https://shaders.com */
1
+ /* shaders@3.2.471/js — ESM bundle for CDN consumption (no bundler required). https://shaders.com */
2
2
  var au=class extends Error{reason;constructor(e,t,s){super(t??`[gpu] WebGPU unavailable (${e})`),this.name="GpuUnavailableError",this.reason=e,s?.cause!==void 0&&(this.cause=s.cause)}};function Xy(e){return!!e&&typeof e=="object"&&e.name==="GpuUnavailableError"&&typeof e.reason=="string"}var Ny=null;function m6(e){Ny=e}function l1(){if(Ny!==null)return Ny;let e=globalThis.__SHADERS_DEBUG__;if(e!=null)return!!e;try{if(typeof localStorage<"u"&&localStorage.getItem("shaders:debug")==="1")return!0}catch{}return!1}function rn(...e){l1()&&console.warn(...e)}function gr(...e){l1()&&console.error(...e)}function Hy(){return typeof navigator<"u"&&!!navigator.gpu}var i1=null;function jy(){return i1||(i1=(async()=>{if(!Hy())return{supported:!1,reason:"unsupported"};try{return await navigator.gpu.requestAdapter({powerPreference:"high-performance"})?{supported:!0}:{supported:!1,reason:"no-adapter"}}catch(e){return gr("[gpu] adapter probe threw:",e),{supported:!1,reason:"no-adapter"}}})(),i1)}var Cq=new Set(["unsupported","no-adapter","no-device","out-of-memory","gpu-error"]),$y=null;function f6(e){$y||!Cq.has(e)||($y=e)}function _6(){return $y}function Gr(e,t){let s=e.length;Array.isArray(e[0])||(e=[e]),Array.isArray(t[0])||(t=t.map(i=>[i]));let r=t[0].length,o=t[0].map((i,l)=>t.map(c=>c[l])),a=e.map(i=>o.map(l=>{let c=0;if(!Array.isArray(i)){for(let d of l)c+=i*d;return c}for(let d=0;d<i.length;d++)c+=i[d]*(l[d]||0);return c}));return s===1&&(a=a[0]),r===1?a.map(i=>i[0]):a}function mm(e){return Vl(e)==="string"}function Vl(e){return(Object.prototype.toString.call(e).match(/^\[object\s+(.*?)\]$/)[1]||"").toLowerCase()}function g1(e,{precision:t,unit:s}){return ql(e)?"none":mw(e,t)+(s??"")}function ql(e){return Number.isNaN(e)||e instanceof Number&&e?.none}function yo(e){return ql(e)?0:e}function mw(e,t){if(e===0)return 0;let s=~~e,r=0;s&&t&&(r=~~Math.log10(Math.abs(s))+1);let o=10**(t-r);return Math.floor(e*o+.5)/o}var Mq={deg:1,grad:.9,rad:180/Math.PI,turn:360};function fw(e){if(!e)return;e=e.trim();let t=/^([a-z]+)\((.+?)\)$/i,s=/^-?[\d.]+$/,r=/%|deg|g?rad|turn$/,o=/\/?\s*(none|[-\w.]+(?:%|deg|g?rad|turn)?)/g,a=e.match(t);if(a){let i=[];return a[2].replace(o,(l,c)=>{let d=c.match(r),u=c;if(d){let p=d[0],f=u.slice(0,-p.length);p==="%"?(u=new Number(f/100),u.type="<percentage>"):(u=new Number(f*Mq[p]),u.type="<angle>",u.unit=p)}else s.test(u)?(u=new Number(u),u.type="<number>"):u==="none"&&(u=new Number(NaN),u.none=!0);l.startsWith("/")&&(u=u instanceof Number?u:new Number(u),u.alpha=!0),typeof u=="object"&&u instanceof Number&&(u.raw=c),i.push(u)}),{name:a[1].toLowerCase(),rawName:a[1],rawArgs:a[2],args:i}}}function _w(e){return e[e.length-1]}function dm(e,t,s){return isNaN(e)?t:isNaN(t)?e:e+(t-e)*s}function vw(e,t,s){return(s-e)/(t-e)}function f0(e,t,s){return dm(t[0],t[1],vw(e[0],e[1],s))}function hw(e){return e.map(t=>t.split("|").map(s=>{s=s.trim();let r=s.match(/^(<[a-z]+>)\[(-?[.\d]+),\s*(-?[.\d]+)\]?$/);if(r){let o=new String(r[1]);return o.range=[+r[2],+r[3]],o}return s}))}function gw(e,t,s){return Math.max(Math.min(s,t),e)}function A1(e,t){return Math.sign(e)===Math.sign(t)?e:-e}function hi(e,t){return A1(Math.abs(e)**t,e)}function _0(e,t){return t===0?0:e/t}function yw(e,t,s=0,r=e.length){for(;s<r;){let o=s+r>>1;e[o]<t?s=o+1:r=o}return s}var Eq=Object.freeze({__proto__:null,bisectLeft:yw,clamp:gw,copySign:A1,interpolate:dm,interpolateInv:vw,isNone:ql,isString:mm,last:_w,mapRange:f0,multiplyMatrices:Gr,parseCoordGrammar:hw,parseFunction:fw,serializeNumber:g1,skipNone:yo,spow:hi,toPrecision:mw,type:Vl,zdiv:_0}),kq=class{add(e,t,s){if(typeof arguments[0]!="string"){for(var e in arguments[0])this.add(e,arguments[0][e],arguments[1]);return}(Array.isArray(e)?e:[e]).forEach(function(r){this[r]=this[r]||[],t&&this[r][s?"unshift":"push"](t)},this)}run(e,t){this[e]=this[e]||[],this[e].forEach(function(s){s.call(t&&t.context?t.context:t,t)})}},Nl=new kq,nn={gamut_mapping:"css",precision:5,deltaE:"76",verbose:globalThis?.process?.env?.NODE_ENV?.toLowerCase()!=="test",warn:function(t){this.verbose&&globalThis?.console?.warn?.(t)}},ga={D50:[.3457/.3585,1,.2958/.3585],D65:[.3127/.329,1,.3583/.329]};function n0(e){return Array.isArray(e)?e:ga[e]}function y1(e,t,s,r={}){if(e=n0(e),t=n0(t),!e||!t)throw new TypeError(`Missing white point to convert ${e?"":"from"}${!e&&!t?"/":""}${t?"":"to"}`);if(e===t)return s;let o={W1:e,W2:t,XYZ:s,options:r};if(Nl.run("chromatic-adaptation-start",o),o.M||(o.W1===ga.D65&&o.W2===ga.D50?o.M=[[1.0479297925449969,.022946870601609652,-.05019226628920524],[.02962780877005599,.9904344267538799,-.017073799063418826],[-.009243040646204504,.015055191490298152,.7518742814281371]]:o.W1===ga.D50&&o.W2===ga.D65&&(o.M=[[.955473421488075,-.02309845494876471,.06325924320057072],[-.0283697093338637,1.0099953980813041,.021041441191917323],[.012314014864481998,-.020507649298898964,1.330365926242124]])),Nl.run("chromatic-adaptation-end",o),o.M)return Gr(o.M,o.XYZ);throw new TypeError("Only Bradford CAT with white points D50 and D65 supported for now.")}var Bq=new Set(["<number>","<percentage>","<angle>"]);function v6(e,t,s,r){return Object.entries(e.coords).map(([o,a],i)=>{let l=t.coordGrammar[i],c=r[i],d=c?.type,u;if(c.none?u=l.find(_=>Bq.has(_)):u=l.find(_=>_==d),!u){let _=a.name||o;throw new TypeError(`${d??c.raw} not allowed for ${_} in ${s}()`)}let p=u.range;d==="<percentage>"&&(p||=[0,1]);let f=a.range||a.refRange;return p&&f&&(r[i]=f0(p,f,r[i])),u})}function bw(e,{meta:t}={}){let s={str:String(e)?.trim()};if(Nl.run("parse-start",s),s.color)return s.color;if(s.parsed=fw(s.str),s.parsed){let r=s.parsed.name;if(r==="color"){let o=s.parsed.args.shift(),a=o.startsWith("--")?o.substring(2):`--${o}`,i=[o,a],l=s.parsed.rawArgs.indexOf("/")>0?s.parsed.args.pop():1;for(let u of Xt.all){let p=u.getFormat("color");if(p&&(i.includes(p.id)||p.ids?.filter(f=>i.includes(f)).length)){let f=Object.keys(u.coords).map((v,g)=>s.parsed.args[g]||0),_;return p.coordGrammar&&(_=v6(u,p,"color",f)),t&&Object.assign(t,{formatId:"color",types:_}),p.id.startsWith("--")&&!o.startsWith("--")&&nn.warn(`${u.name} is a non-standard space and not currently supported in the CSS spec. Use prefixed color(${p.id}) instead of color(${o}).`),o.startsWith("--")&&!p.id.startsWith("--")&&nn.warn(`${u.name} is a standard space and supported in the CSS spec. Use color(${p.id}) instead of prefixed color(${o}).`),{spaceId:u.id,coords:f,alpha:l}}}let c="",d=o in Xt.registry?o:a;if(d in Xt.registry){let u=Xt.registry[d].formats?.color?.id;u&&(c=`Did you mean color(${u})?`)}throw new TypeError(`Cannot parse color(${o}). `+(c||"Missing a plugin?"))}else for(let o of Xt.all){let a=o.getFormat(r);if(a&&a.type==="function"){let i=1;(a.lastAlpha||_w(s.parsed.args).alpha)&&(i=s.parsed.args.pop());let l=s.parsed.args,c;return a.coordGrammar&&(c=v6(o,a,r,l)),t&&Object.assign(t,{formatId:a.name,types:c}),{spaceId:o.id,coords:l,alpha:i}}}}else for(let r of Xt.all)for(let o in r.formats){let a=r.formats[o];if(a.type!=="custom"||a.test&&!a.test(s.str))continue;let i=a.parse(s.str);if(i)return i.alpha??=1,t&&(t.formatId=o),i}throw new TypeError(`Could not parse ${e} as a color. Missing a plugin?`)}function ws(e){if(Array.isArray(e))return e.map(ws);if(!e)throw new TypeError("Empty color reference");mm(e)&&(e=bw(e));let t=e.space||e.spaceId;return t instanceof Xt||(e.space=Xt.get(t)),e.alpha===void 0&&(e.alpha=1),e}var zq=75e-6,Xt=class Zn{constructor(t){this.id=t.id,this.name=t.name,this.base=t.base?Zn.get(t.base):null,this.aliases=t.aliases,this.base&&(this.fromBase=t.fromBase,this.toBase=t.toBase);let s=t.coords??this.base.coords;for(let r in s)"name"in s[r]||(s[r].name=r);this.coords=s,this.white=n0(t.white??this.base.white??"D65"),this.formats=t.formats??{};for(let r in this.formats){let o=this.formats[r];o.type||="function",o.name||=r}this.formats.color?.id||(this.formats.color={...this.formats.color??{},id:t.cssId||this.id}),t.gamutSpace?this.gamutSpace=t.gamutSpace==="self"?this:Zn.get(t.gamutSpace):this.isPolar?this.gamutSpace=this.base:this.gamutSpace=this,this.gamutSpace.isUnbounded&&(this.inGamut=(r,o)=>!0),this.referred=t.referred,Object.defineProperty(this,"path",{value:Rq(this).reverse(),writable:!1,enumerable:!0,configurable:!0}),Nl.run("colorspace-init-end",this)}inGamut(t,{epsilon:s=zq}={}){if(!this.equals(this.gamutSpace))return t=this.to(this.gamutSpace,t),this.gamutSpace.inGamut(t,{epsilon:s});let r=Object.values(this.coords);return t.every((o,a)=>{let i=r[a];if(i.type!=="angle"&&i.range){if(Number.isNaN(o))return!0;let[l,c]=i.range;return(l===void 0||o>=l-s)&&(c===void 0||o<=c+s)}return!0})}get isUnbounded(){return Object.values(this.coords).every(t=>!("range"in t))}get cssId(){return this.formats?.color?.id||this.id}get isPolar(){for(let t in this.coords)if(this.coords[t].type==="angle")return!0;return!1}getFormat(t){if(typeof t=="object")return t=h6(t,this),t;let s;return t==="default"?s=Object.values(this.formats)[0]:s=this.formats[t],s?(s=h6(s,this),s):null}equals(t){return t?this===t||this.id===t||this.id===t.id:!1}to(t,s){if(arguments.length===1){let l=ws(t);[t,s]=[l.space,l.coords]}if(t=Zn.get(t),this.equals(t))return s;s=s.map(l=>Number.isNaN(l)?0:l);let r=this.path,o=t.path,a,i;for(let l=0;l<r.length&&r[l].equals(o[l]);l++)a=r[l],i=l;if(!a)throw new Error(`Cannot convert between color spaces ${this} and ${t}: no connection space was found`);for(let l=r.length-1;l>i;l--)s=r[l].toBase(s);for(let l=i+1;l<o.length;l++)s=o[l].fromBase(s);return s}from(t,s){if(arguments.length===1){let r=ws(t);[t,s]=[r.space,r.coords]}return t=Zn.get(t),t.to(this,s)}toString(){return`${this.name} (${this.id})`}getMinCoords(){let t=[];for(let s in this.coords){let r=this.coords[s],o=r.range||r.refRange;t.push(o?.min??0)}return t}static registry={};static get all(){return[...new Set(Object.values(Zn.registry))]}static register(t,s){if(arguments.length===1&&(s=arguments[0],t=s.id),s=this.get(s),this.registry[t]&&this.registry[t]!==s)throw new Error(`Duplicate color space registration: '${t}'`);if(this.registry[t]=s,arguments.length===1&&s.aliases)for(let r of s.aliases)this.register(r,s);return s}static get(t,...s){if(!t||t instanceof Zn)return t;if(Vl(t)==="string"){let r=Zn.registry[t.toLowerCase()];if(!r)throw new TypeError(`No color space found with id = "${t}"`);return r}if(s.length)return Zn.get(...s);throw new TypeError(`${t} is not a valid color space`)}static resolveCoord(t,s){let r=Vl(t),o,a;if(r==="string"?t.includes(".")?[o,a]=t.split("."):[o,a]=[,t]:Array.isArray(t)?[o,a]=t:(o=t.space,a=t.coordId),o=Zn.get(o),o||(o=s),!o)throw new TypeError(`Cannot resolve coordinate reference ${t}: No color space specified and relative references are not allowed here`);if(r=Vl(a),r==="number"||r==="string"&&a>=0){let c=Object.entries(o.coords)[a];if(c)return{space:o,id:c[0],index:a,...c[1]}}o=Zn.get(o);let i=a.toLowerCase(),l=0;for(let c in o.coords){let d=o.coords[c];if(c.toLowerCase()===i||d.name?.toLowerCase()===i)return{space:o,id:c,index:l,...d};l++}throw new TypeError(`No "${a}" coordinate found in ${o.name}. Its coordinates are: ${Object.keys(o.coords).join(", ")}`)}static DEFAULT_FORMAT={type:"functions",name:"color"}};function Rq(e){let t=[e];for(let s=e;s=s.base;)t.push(s);return t}function h6(e,{coords:t}={}){if(e.coords&&!e.coordGrammar){e.type||="function",e.name||="color",e.coordGrammar=hw(e.coords);let s=Object.entries(t).map(([r,o],a)=>{let i=e.coordGrammar[a][0],l=o.range||o.refRange,c=i.range,d="";return i=="<percentage>"?(c=[0,100],d="%"):i=="<angle>"&&(d="deg"),{fromRange:l,toRange:c,suffix:d}});e.serializeCoords=(r,o)=>r.map((a,i)=>{let{fromRange:l,toRange:c,suffix:d}=s[i];return l&&c&&(a=f0(l,c,a)),a=g1(a,{precision:o,unit:d}),a})}return e}var Zo=new Xt({id:"xyz-d65",name:"XYZ D65",coords:{x:{name:"X"},y:{name:"Y"},z:{name:"Z"}},white:"D65",formats:{color:{ids:["xyz-d65","xyz"]}},aliases:["xyz"]}),Fa=class extends Xt{constructor(e){e.coords||(e.coords={r:{range:[0,1],name:"Red"},g:{range:[0,1],name:"Green"},b:{range:[0,1],name:"Blue"}}),e.base||(e.base=Zo),e.toXYZ_M&&e.fromXYZ_M&&(e.toBase??=t=>{let s=Gr(e.toXYZ_M,t);return this.white!==this.base.white&&(s=y1(this.white,this.base.white,s)),s},e.fromBase??=t=>(t=y1(this.base.white,this.white,t),Gr(e.fromXYZ_M,t))),e.referred??="display",super(e)}};function fm(e,t){return e=ws(e),!t||e.space.equals(t)?e.coords.slice():(t=Xt.get(t),t.from(e))}function on(e,t){e=ws(e);let{space:s,index:r}=Xt.resolveCoord(t,e.space);return fm(e,s)[r]}function v0(e,t,s){return e=ws(e),t=Xt.get(t),e.coords=t.to(e.space,s),e}v0.returns="color";function il(e,t,s){if(e=ws(e),arguments.length===2&&Vl(arguments[1])==="object"){let r=arguments[1];for(let o in r)il(e,o,r[o])}else{typeof s=="function"&&(s=s(on(e,t)));let{space:r,index:o}=Xt.resolveCoord(t,e.space),a=fm(e,r);a[o]=s,v0(e,r,a)}return e}il.returns="color";var h0=new Xt({id:"xyz-d50",name:"XYZ D50",white:"D50",base:Zo,fromBase:e=>y1(Zo.white,"D50",e),toBase:e=>y1("D50",Zo.white,e)}),Dq=216/24389,g6=24/116,c1=24389/27,Ky=ga.D50,an=new Xt({id:"lab",name:"Lab",coords:{l:{refRange:[0,100],name:"Lightness"},a:{refRange:[-125,125]},b:{refRange:[-125,125]}},white:Ky,base:h0,fromBase(e){let t=e.map((s,r)=>s/Ky[r]).map(s=>s>Dq?Math.cbrt(s):(c1*s+16)/116);return[116*t[1]-16,500*(t[0]-t[1]),200*(t[1]-t[2])]},toBase(e){let t=[];return t[1]=(e[0]+16)/116,t[0]=e[1]/500+t[1],t[2]=t[1]-e[2]/200,[t[0]>g6?Math.pow(t[0],3):(116*t[0]-16)/c1,e[0]>8?Math.pow((e[0]+16)/116,3):e[0]/c1,t[2]>g6?Math.pow(t[2],3):(116*t[2]-16)/c1].map((s,r)=>s*Ky[r])},formats:{lab:{coords:["<number> | <percentage>","<number> | <percentage>[-1,1]","<number> | <percentage>[-1,1]"]}}});function gi(e){return(e%360+360)%360}function Lq(e,t){if(e==="raw")return t;let[s,r]=t.map(gi),o=r-s;return e==="increasing"?o<0&&(r+=360):e==="decreasing"?o>0&&(s+=360):e==="longer"?-180<o&&o<180&&(o>0?s+=360:r+=360):e==="shorter"&&(o>180?s+=360:o<-180&&(r+=360)),[s,r]}var um=new Xt({id:"lch",name:"LCH",coords:{l:{refRange:[0,100],name:"Lightness"},c:{refRange:[0,150],name:"Chroma"},h:{refRange:[0,360],type:"angle",name:"Hue"}},base:an,fromBase(e){let[t,s,r]=e,o,a=.02;return Math.abs(s)<a&&Math.abs(r)<a?o=NaN:o=Math.atan2(r,s)*180/Math.PI,[t,Math.sqrt(s**2+r**2),gi(o)]},toBase(e){let[t,s,r]=e;return s<0&&(s=0),isNaN(r)&&(r=0),[t,s*Math.cos(r*Math.PI/180),s*Math.sin(r*Math.PI/180)]},formats:{lch:{coords:["<number> | <percentage>","<number> | <percentage>","<number> | <angle>"]}}}),y6=25**7,b1=Math.PI,b6=180/b1,nu=b1/180;function x6(e){let t=e*e;return t*t*t*e}function xw(e,t,{kL:s=1,kC:r=1,kH:o=1}={}){[e,t]=ws([e,t]);let[a,i,l]=an.from(e),c=um.from(an,[a,i,l])[1],[d,u,p]=an.from(t),f=um.from(an,[d,u,p])[1];c<0&&(c=0),f<0&&(f=0);let _=x6((c+f)/2),v=.5*(1-Math.sqrt(_/(_+y6))),g=(1+v)*i,y=(1+v)*u,x=Math.sqrt(g**2+l**2),w=Math.sqrt(y**2+p**2),P=g===0&&l===0?0:Math.atan2(l,g),C=y===0&&p===0?0:Math.atan2(p,y);P<0&&(P+=2*b1),C<0&&(C+=2*b1),P*=b6,C*=b6;let k=d-a,z=w-x,U=C-P,L=P+C,B=Math.abs(U),D;x*w===0?D=0:B<=180?D=U:U>180?D=U-360:U<-180?D=U+360:nn.warn("the unthinkable has happened");let G=2*Math.sqrt(w*x)*Math.sin(D*nu/2),F=(a+d)/2,V=(x+w)/2,W=x6(V),q;x*w===0?q=L:B<=180?q=L/2:L<360?q=(L+360)/2:q=(L-360)/2;let $=(F-50)**2,Q=1+.015*$/Math.sqrt(20+$),ee=1+.045*V,re=1;re-=.17*Math.cos((q-30)*nu),re+=.24*Math.cos(2*q*nu),re+=.32*Math.cos((3*q+6)*nu),re-=.2*Math.cos((4*q-63)*nu);let ne=1+.015*V*re,ce=30*Math.exp(-1*((q-275)/25)**2),oe=2*Math.sqrt(W/(W+y6)),we=-1*Math.sin(2*ce*nu)*oe,de=(k/(s*Q))**2;return de+=(z/(r*ee))**2,de+=(G/(o*ne))**2,de+=we*(z/(r*ee))*(G/(o*ne)),Math.sqrt(de)}var Uq=[[.819022437996703,.3619062600528904,-.1288737815209879],[.0329836539323885,.9292868615863434,.0361446663506424],[.0481771893596242,.2642395317527308,.6335478284694309]],Oq=[[1.2268798758459243,-.5578149944602171,.2813910456659647],[-.0405757452148008,1.112286803280317,-.0717110580655164],[-.0763729366746601,-.4214933324022432,1.5869240198367816]],Gq=[[.210454268309314,.7936177747023054,-.0040720430116193],[1.9779985324311684,-2.42859224204858,.450593709617411],[.0259040424655478,.7827717124575296,-.8086757549230774]],Fq=[[1,.3963377773761749,.2158037573099136],[1,-.1055613458156586,-.0638541728258133],[1,-.0894841775298119,-1.2914855480194092]],du=new Xt({id:"oklab",name:"Oklab",coords:{l:{refRange:[0,1],name:"Lightness"},a:{refRange:[-.4,.4]},b:{refRange:[-.4,.4]}},white:"D65",base:Zo,fromBase(e){return Gr(Gq,Gr(Uq,e).map(t=>Math.cbrt(t)))},toBase(e){return Gr(Oq,Gr(Fq,e).map(t=>t**3))},formats:{oklab:{coords:["<percentage> | <number>","<number> | <percentage>[-1,1]","<number> | <percentage>[-1,1]"]}}});function i0(e,t){[e,t]=ws([e,t]);let[s,r,o]=du.from(e),[a,i,l]=du.from(t),c=s-a,d=r-i,u=o-l;return Math.sqrt(c**2+d**2+u**2)}var Iq=75e-6;function Xc(e,t,{epsilon:s=Iq}={}){e=ws(e),t||(t=e.space),t=Xt.get(t);let r=e.coords;return t!==e.space&&(r=t.from(e)),t.inGamut(r,{epsilon:s})}function uu(e){return{space:e.space,coords:e.coords.slice(),alpha:e.alpha}}function Aw(e,t,s="lab"){s=Xt.get(s);let r=s.from(e),o=s.from(t);return Math.sqrt(r.reduce((a,i,l)=>{let c=o[l];return isNaN(i)||isNaN(c)?a:a+(c-i)**2},0))}function Yq(e,t){return Aw(e,t,"lab")}var A6=Math.PI/180;function Wq(e,t,{l:s=2,c:r=1}={}){[e,t]=ws([e,t]);let[o,a,i]=an.from(e),[,l,c]=um.from(an,[o,a,i]),[d,u,p]=an.from(t),f=um.from(an,[d,u,p])[1];l<0&&(l=0),f<0&&(f=0);let _=o-d,v=l-f,g=a-u,y=i-p,x=g**2+y**2-v**2,w=.511;o>=16&&(w=.040975*o/(1+.01765*o));let P=.0638*l/(1+.0131*l)+.638,C;Number.isNaN(c)&&(c=0),c>=164&&c<=345?C=.56+Math.abs(.2*Math.cos((c+168)*A6)):C=.36+Math.abs(.4*Math.cos((c+35)*A6));let k=Math.pow(l,4),z=Math.sqrt(k/(k+1900)),U=P*(z*C+1-z),L=(_/(s*w))**2;return L+=(v/(r*P))**2,L+=x/U**2,Math.sqrt(L)}var w6=203,g0=new Xt({id:"xyz-abs-d65",cssId:"--xyz-abs-d65",name:"Absolute XYZ D65",coords:{x:{refRange:[0,9504.7],name:"Xa"},y:{refRange:[0,1e4],name:"Ya"},z:{refRange:[0,10888.3],name:"Za"}},base:Zo,fromBase(e){return e.map(t=>Math.max(t*w6,0))},toBase(e){return e.map(t=>Math.max(t/w6,0))}}),d1=1.15,u1=.66,T6=2610/2**14,Vq=2**14/2610,S6=3424/2**12,P6=2413/2**7,C6=2392/2**7,qq=1.7*2523/2**5,M6=2**5/(1.7*2523),p1=-.56,Qy=16295499532821565e-27,Nq=[[.41478972,.579999,.014648],[-.20151,1.120649,.0531008],[-.0166008,.2648,.6684799]],$q=[[1.9242264357876067,-1.0047923125953657,.037651404030618],[.35031676209499907,.7264811939316552,-.06538442294808501],[-.09098281098284752,-.3127282905230739,1.5227665613052603]],Xq=[[.5,.5,0],[3.524,-4.066708,.542708],[.199076,1.096799,-1.295875]],Hq=[[1,.1386050432715393,.05804731615611886],[.9999999999999999,-.1386050432715393,-.05804731615611886],[.9999999999999998,-.09601924202631895,-.8118918960560388]],ww=new Xt({id:"jzazbz",name:"Jzazbz",coords:{jz:{refRange:[0,1],name:"Jz"},az:{refRange:[-.5,.5]},bz:{refRange:[-.5,.5]}},base:g0,fromBase(e){let[t,s,r]=e,[o,a,i]=Gr(Xq,Gr(Nq,[d1*t-(d1-1)*r,u1*s-(u1-1)*t,r]).map(function(l){return((S6+P6*(l/1e4)**T6)/(1+C6*(l/1e4)**T6))**qq}));return[(1+p1)*o/(1+p1*o)-Qy,a,i]},toBase(e){let[t,s,r]=e,[o,a,i]=Gr($q,Gr(Hq,[(t+Qy)/(1+p1-p1*(t+Qy)),s,r]).map(function(c){return 1e4*((S6-c**M6)/(C6*c**M6-P6))**Vq})),l=(o+(d1-1)*i)/d1;return[l,(a+(u1-1)*l)/u1,i]},formats:{color:{coords:["<number> | <percentage>","<number> | <percentage>[-1,1]","<number> | <percentage>[-1,1]"]}}}),l0=new Xt({id:"jzczhz",name:"JzCzHz",coords:{jz:{refRange:[0,1],name:"Jz"},cz:{refRange:[0,1],name:"Chroma"},hz:{refRange:[0,360],type:"angle",name:"Hue"}},base:ww,fromBase(e){let[t,s,r]=e,o,a=2e-4;return Math.abs(s)<a&&Math.abs(r)<a?o=NaN:o=Math.atan2(r,s)*180/Math.PI,[t,Math.sqrt(s**2+r**2),gi(o)]},toBase(e){return[e[0],e[1]*Math.cos(e[2]*Math.PI/180),e[1]*Math.sin(e[2]*Math.PI/180)]}});function jq(e,t){[e,t]=ws([e,t]);let[s,r,o]=l0.from(e),[a,i,l]=l0.from(t),c=s-a,d=r-i;Number.isNaN(o)&&Number.isNaN(l)?(o=0,l=0):Number.isNaN(o)?o=l:Number.isNaN(l)&&(l=o);let u=o-l,p=2*Math.sqrt(r*i)*Math.sin(u/2*(Math.PI/180));return Math.sqrt(c**2+d**2+p**2)}var Tw=3424/4096,Sw=2413/128,Pw=2392/128,E6=2610/16384,Kq=2523/32,Qq=16384/2610,k6=32/2523,Zq=[[.3592832590121217,.6976051147779502,-.035891593232029],[-.1920808463704993,1.100476797037432,.0753748658519118],[.0070797844607479,.0748396662186362,.8433265453898765]],Jq=[[2048/4096,2048/4096,0],[6610/4096,-13613/4096,7003/4096],[17933/4096,-17390/4096,-543/4096]],eN=[[.9999999999999998,.0086090370379328,.111029625003026],[.9999999999999998,-.0086090370379328,-.1110296250030259],[.9999999999999998,.5600313357106791,-.3206271749873188]],tN=[[2.0701522183894223,-1.3263473389671563,.2066510476294053],[.3647385209748072,.6805660249472273,-.0453045459220347],[-.0497472075358123,-.0492609666966131,1.1880659249923042]],c0=new Xt({id:"ictcp",name:"ICTCP",coords:{i:{refRange:[0,1],name:"I"},ct:{refRange:[-.5,.5],name:"CT"},cp:{refRange:[-.5,.5],name:"CP"}},base:g0,fromBase(e){return sN(Gr(Zq,e))},toBase(e){return Gr(tN,rN(e))}});function sN(e){return Gr(Jq,e.map(function(t){return((Tw+Sw*(t/1e4)**E6)/(1+Pw*(t/1e4)**E6))**Kq}))}function rN(e){return Gr(eN,e).map(function(t){return 1e4*(Math.max(t**k6-Tw,0)/(Sw-Pw*t**k6))**Qq})}function oN(e,t){[e,t]=ws([e,t]);let[s,r,o]=c0.from(e),[a,i,l]=c0.from(t);return 720*Math.sqrt((s-a)**2+.25*(r-i)**2+(o-l)**2)}var aN=ga.D65,Cw=.42,B6=1/Cw,Zy=2*Math.PI,Mw=[[.401288,.650173,-.051461],[-.250268,1.204414,.045854],[-.002079,.048952,.953127]],nN=[[1.8620678550872327,-1.0112546305316843,.14918677544445175],[.38752654323613717,.6214474419314753,-.008973985167612518],[-.015841498849333856,-.03412293802851557,1.0499644368778496]],iN=[[460,451,288],[460,-891,-261],[460,-220,-6300]],lN={dark:[.8,.525,.8],dim:[.9,.59,.9],average:[1,.69,1]},$c={h:[20.14,90,164.25,237.53,380.14],e:[.8,.7,1,1.2,.8],H:[0,100,200,300,400]},cN=180/Math.PI,z6=Math.PI/180;function Ew(e,t){return e.map(s=>{let r=hi(t*Math.abs(s)*.01,Cw);return 400*A1(r,s)/(r+27.13)})}function dN(e,t){let s=100/t*27.13**B6;return e.map(r=>{let o=Math.abs(r);return A1(s*hi(o/(400-o),B6),r)})}function uN(e){let t=gi(e);t<=$c.h[0]&&(t+=360);let s=yw($c.h,t)-1,[r,o]=$c.h.slice(s,s+2),[a,i]=$c.e.slice(s,s+2),l=$c.H[s],c=(t-r)/a;return l+100*c/(c+(o-t)/i)}function pN(e){let t=(e%400+400)%400,s=Math.floor(.01*t);t=t%100;let[r,o]=$c.h.slice(s,s+2),[a,i]=$c.e.slice(s,s+2);return gi((t*(i*r-a*o)-100*r*i)/(t*(i-a)-100*i))}function kw(e,t,s,r,o){let a={};a.discounting=o,a.refWhite=e,a.surround=r;let i=e.map(_=>_*100);a.la=t,a.yb=s;let l=i[1],c=Gr(Mw,i);r=lN[a.surround];let d=r[0];a.c=r[1],a.nc=r[2];let u=(1/(5*a.la+1))**4;a.fl=u*a.la+.1*(1-u)*(1-u)*Math.cbrt(5*a.la),a.flRoot=a.fl**.25,a.n=a.yb/l,a.z=1.48+Math.sqrt(a.n),a.nbb=.725*a.n**-.2,a.ncb=a.nbb;let p=o?1:Math.max(Math.min(d*(1-1/3.6*Math.exp((-a.la-42)/92)),1),0);a.dRgb=c.map(_=>dm(1,l/_,p)),a.dRgbInv=a.dRgb.map(_=>1/_);let f=Ew(c.map((_,v)=>_*a.dRgb[v]),a.fl);return a.aW=a.nbb*(2*f[0]+f[1]+.05*f[2]),a}var R6=kw(aN,64/Math.PI*.2,20,"average",!1);function d0(e,t){if(!(e.J!==void 0^e.Q!==void 0))throw new Error("Conversion requires one and only one: 'J' or 'Q'");if(!(e.C!==void 0^e.M!==void 0^e.s!==void 0))throw new Error("Conversion requires one and only one: 'C', 'M' or 's'");if(!(e.h!==void 0^e.H!==void 0))throw new Error("Conversion requires one and only one: 'h' or 'H'");if(e.J===0||e.Q===0)return[0,0,0];let s=0;e.h!==void 0?s=gi(e.h)*z6:s=pN(e.H)*z6;let r=Math.cos(s),o=Math.sin(s),a=0;e.J!==void 0?a=hi(e.J,1/2)*.1:e.Q!==void 0&&(a=.25*t.c*e.Q/((t.aW+4)*t.flRoot));let i=0;e.C!==void 0?i=e.C/a:e.M!==void 0?i=e.M/t.flRoot/a:e.s!==void 0&&(i=4e-4*e.s**2*(t.aW+4)/t.c);let l=hi(i*Math.pow(1.64-Math.pow(.29,t.n),-.73),10/9),c=.25*(Math.cos(s+2)+3.8),d=t.aW*hi(a,2/t.c/t.z),u=5e4/13*t.nc*t.ncb*c,p=d/t.nbb,f=23*(p+.305)*_0(l,23*u+l*(11*r+108*o));return Gr(nN,dN(Gr(iN,[p,f*r,f*o]).map(_=>_*1/1403),t.fl).map((_,v)=>_*t.dRgbInv[v])).map(_=>_/100)}function Bw(e,t){let s=Ew(Gr(Mw,e.map(g=>g*100)).map((g,y)=>g*t.dRgb[y]),t.fl),r=s[0]+(-12*s[1]+s[2])/11,o=(s[0]+s[1]-2*s[2])/9,a=(Math.atan2(o,r)%Zy+Zy)%Zy,i=.25*(Math.cos(a+2)+3.8),l=hi(5e4/13*t.nc*t.ncb*_0(i*Math.sqrt(r**2+o**2),s[0]+s[1]+1.05*s[2]+.305),.9)*Math.pow(1.64-Math.pow(.29,t.n),.73),c=hi(t.nbb*(2*s[0]+s[1]+.05*s[2])/t.aW,.5*t.c*t.z),d=100*hi(c,2),u=4/t.c*c*(t.aW+4)*t.flRoot,p=l*c,f=p*t.flRoot,_=gi(a*cN),v=uN(_);return{J:d,C:p,h:_,s:50*hi(t.c*l/(t.aW+4),1/2),Q:u,M:f,H:v}}var mN=new Xt({id:"cam16-jmh",cssId:"--cam16-jmh",name:"CAM16-JMh",coords:{j:{refRange:[0,100],name:"J"},m:{refRange:[0,105],name:"Colorfulness"},h:{refRange:[0,360],type:"angle",name:"Hue"}},base:Zo,fromBase(e){let t=Bw(e,R6);return[t.J,t.M,t.h]},toBase(e){return d0({J:e[0],M:e[1],h:e[2]},R6)}}),fN=ga.D65,_N=216/24389,zw=24389/27;function vN(e){return 116*(e>_N?Math.cbrt(e):(zw*e+16)/116)-16}function u0(e){return e>8?Math.pow((e+16)/116,3):e/zw}function hN(e,t){let[s,r,o]=e,a=[],i=0;if(o===0)return[0,0,0];let l=u0(o);o>0?i=.00379058511492914*o**2+.608983189401032*o+.9155088574762233:i=9514440756550361e-21*o**2+.08693057439788597*o-21.928975842194614;let c=2e-12,d=15,u=0,p=1/0;for(;u<=d;){a=d0({J:i,C:r,h:s},t);let f=Math.abs(a[1]-l);if(f<p){if(f<=c)return a;p=f}i=i-(a[1]-l)*i/(2*a[1]),u+=1}return d0({J:i,C:r,h:s},t)}function gN(e,t){let s=vN(e[1]);if(s===0)return[0,0,0];let r=Bw(e,y0);return[gi(r.h),r.C,s]}var y0=kw(fN,200/Math.PI*u0(50),u0(50)*100,"average",!1),pm=new Xt({id:"hct",name:"HCT",coords:{h:{refRange:[0,360],type:"angle",name:"Hue"},c:{refRange:[0,145],name:"Colorfulness"},t:{refRange:[0,100],name:"Tone"}},base:Zo,fromBase(e){return gN(e)},toBase(e){return hN(e,y0)},formats:{color:{id:"--hct",coords:["<number> | <angle>","<percentage> | <number>","<percentage> | <number>"]}}}),yN=Math.PI/180,D6=[1,.007,.0228];function L6(e){e[1]<0&&(e=pm.fromBase(pm.toBase(e)));let t=Math.log(Math.max(1+D6[2]*e[1]*y0.flRoot,1))/D6[2],s=e[0]*yN,r=t*Math.cos(s),o=t*Math.sin(s);return[e[2],r,o]}function bN(e,t){[e,t]=ws([e,t]);let[s,r,o]=L6(pm.from(e)),[a,i,l]=L6(pm.from(t));return Math.sqrt((s-a)**2+(r-i)**2+(o-l)**2)}var pu={deltaE76:Yq,deltaECMC:Wq,deltaE2000:xw,deltaEJz:jq,deltaEITP:oN,deltaEOK:i0,deltaEHCT:bN};function xN(e){let t=e?Math.floor(Math.log10(Math.abs(e))):0;return Math.max(parseFloat(`1e${t-2}`),1e-6)}var U6={hct:{method:"hct.c",jnd:2,deltaEMethod:"hct",blackWhiteClamp:{}},"hct-tonal":{method:"hct.c",jnd:0,deltaEMethod:"hct",blackWhiteClamp:{channel:"hct.t",min:0,max:100}}};function $l(e,{method:t=nn.gamut_mapping,space:s=void 0,deltaEMethod:r="",jnd:o=2,blackWhiteClamp:a={}}={}){if(e=ws(e),mm(arguments[1])?s=arguments[1]:s||(s=e.space),s=Xt.get(s),Xc(e,s,{epsilon:0}))return e;let i;if(t==="css")i=AN(e,{space:s});else{if(t!=="clip"&&!Xc(e,s)){Object.prototype.hasOwnProperty.call(U6,t)&&({method:t,jnd:o,deltaEMethod:r,blackWhiteClamp:a}=U6[t]);let l=xw;if(r!==""){for(let d in pu)if("deltae"+r.toLowerCase()===d.toLowerCase()){l=pu[d];break}}let c=$l(Or(e,s),{method:"clip",space:s});if(l(e,c)>o){if(Object.keys(a).length===3){let x=Xt.resolveCoord(a.channel),w=on(Or(e,x.space),x.id);if(ql(w)&&(w=0),w>=a.max)return Or({space:"xyz-d65",coords:ga.D65},e.space);if(w<=a.min)return Or({space:"xyz-d65",coords:[0,0,0]},e.space)}let d=Xt.resolveCoord(t),u=d.space,p=d.id,f=Or(e,u);f.coords.forEach((x,w)=>{ql(x)&&(f.coords[w]=0)});let _=(d.range||d.refRange)[0],v=xN(o),g=_,y=on(f,p);for(;y-g>v;){let x=uu(f);x=$l(x,{space:s,method:"clip"}),l(f,x)-o<v?g=on(f,p):y=on(f,p),il(f,p,(g+y)/2)}i=Or(f,s)}else i=c}else i=Or(e,s);if(t==="clip"||!Xc(i,s,{epsilon:0})){let l=Object.values(s.coords).map(c=>c.range||[]);i.coords=i.coords.map((c,d)=>{let[u,p]=l[d];return u!==void 0&&(c=Math.max(u,c)),p!==void 0&&(c=Math.min(c,p)),c})}}return s!==e.space&&(i=Or(i,e.space)),e.coords=i.coords,e}$l.returns="color";var O6={WHITE:{space:du,coords:[1,0,0]},BLACK:{space:du,coords:[0,0,0]}};function AN(e,{space:t}={}){e=ws(e),t||(t=e.space),t=Xt.get(t);let o=Xt.get("oklch");if(t.isUnbounded)return Or(e,t);let a=Or(e,o),i=a.coords[0];if(i>=1){let v=Or(O6.WHITE,t);return v.alpha=e.alpha,Or(v,t)}if(i<=0){let v=Or(O6.BLACK,t);return v.alpha=e.alpha,Or(v,t)}if(Xc(a,t,{epsilon:0}))return Or(a,t);function l(v){let g=Or(v,t),y=Object.values(t.coords);return g.coords=g.coords.map((x,w)=>{if("range"in y[w]){let[P,C]=y[w].range;return gw(P,x,C)}return x}),g}let c=0,d=a.coords[1],u=!0,p=uu(a),f=l(p),_=i0(f,p);if(_<.02)return f;for(;d-c>1e-4;){let v=(c+d)/2;if(p.coords[1]=v,u&&Xc(p,t,{epsilon:0}))c=v;else if(f=l(p),_=i0(f,p),_<.02){if(.02-_<1e-4)break;u=!1,c=v}else d=v}return f}function Or(e,t,{inGamut:s}={}){e=ws(e),t=Xt.get(t);let r=t.from(e),o={space:t,coords:r,alpha:e.alpha};return s&&(o=$l(o,s===!0?void 0:s)),o}Or.returns="color";function cm(e,{precision:t=nn.precision,format:s="default",inGamut:r=!0,...o}={}){let a;e=ws(e);let i=s;s=e.space.getFormat(s)??e.space.getFormat("default")??Xt.DEFAULT_FORMAT;let l=e.coords.slice();if(r||=s.toGamut,r&&!Xc(e)&&(l=$l(uu(e),r===!0?void 0:r).coords),s.type==="custom")if(o.precision=t,s.serialize)a=s.serialize(l,e.alpha,o);else throw new TypeError(`format ${i} can only be used to parse colors, not for serialization`);else{let c=s.name||"color";s.serializeCoords?l=s.serializeCoords(l,t):t!==null&&(l=l.map(f=>g1(f,{precision:t})));let d=[...l];if(c==="color"){let f=s.id||s.ids?.[0]||e.space.id;d.unshift(f)}let u=e.alpha;t!==null&&(u=g1(u,{precision:t}));let p=e.alpha>=1||s.noAlpha?"":`${s.commas?",":" /"} ${u}`;a=`${c}(${d.join(s.commas?", ":" ")}${p})`}return a}var w1=new Fa({id:"rec2020-linear",cssId:"--rec2020-linear",name:"Linear REC.2020",white:"D65",toXYZ_M:[[.6369580483012914,.14461690358620832,.1688809751641721],[.2627002120112671,.6779980715188708,.05930171646986196],[0,.028072693049087428,1.060985057710791]],fromXYZ_M:[[1.716651187971268,-.355670783776392,-.25336628137366],[-.666684351832489,1.616481236634939,.0157685458139111],[.017639857445311,-.042770613257809,.942103121235474]]}),m1=1.09929682680944,G6=.018053968510807,Rw=new Fa({id:"rec2020",name:"REC.2020",base:w1,toBase(e){return e.map(function(t){return t<G6*4.5?t/4.5:Math.pow((t+m1-1)/m1,1/.45)})},fromBase(e){return e.map(function(t){return t>=G6?m1*Math.pow(t,.45)-(m1-1):4.5*t})}}),Dw=new Fa({id:"p3-linear",cssId:"--display-p3-linear",name:"Linear P3",white:"D65",toXYZ_M:[[.4865709486482162,.26566769316909306,.1982172852343625],[.2289745640697488,.6917385218365064,.079286914093745],[0,.04511338185890264,1.043944368900976]],fromXYZ_M:[[2.493496911941425,-.9313836179191239,-.40271078445071684],[-.8294889695615747,1.7626640603183463,.023624685841943577],[.03584583024378447,-.07617238926804182,.9568845240076872]]}),wN=[[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],Eo=[[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],Lw=new Fa({id:"srgb-linear",name:"Linear sRGB",white:"D65",toXYZ_M:wN,fromXYZ_M:Eo}),F6={aliceblue:[240/255,248/255,1],antiquewhite:[250/255,235/255,215/255],aqua:[0,1,1],aquamarine:[127/255,1,212/255],azure:[240/255,1,1],beige:[245/255,245/255,220/255],bisque:[1,228/255,196/255],black:[0,0,0],blanchedalmond:[1,235/255,205/255],blue:[0,0,1],blueviolet:[138/255,43/255,226/255],brown:[165/255,42/255,42/255],burlywood:[222/255,184/255,135/255],cadetblue:[95/255,158/255,160/255],chartreuse:[127/255,1,0],chocolate:[210/255,105/255,30/255],coral:[1,127/255,80/255],cornflowerblue:[100/255,149/255,237/255],cornsilk:[1,248/255,220/255],crimson:[220/255,20/255,60/255],cyan:[0,1,1],darkblue:[0,0,139/255],darkcyan:[0,139/255,139/255],darkgoldenrod:[184/255,134/255,11/255],darkgray:[169/255,169/255,169/255],darkgreen:[0,100/255,0],darkgrey:[169/255,169/255,169/255],darkkhaki:[189/255,183/255,107/255],darkmagenta:[139/255,0,139/255],darkolivegreen:[85/255,107/255,47/255],darkorange:[1,140/255,0],darkorchid:[153/255,50/255,204/255],darkred:[139/255,0,0],darksalmon:[233/255,150/255,122/255],darkseagreen:[143/255,188/255,143/255],darkslateblue:[72/255,61/255,139/255],darkslategray:[47/255,79/255,79/255],darkslategrey:[47/255,79/255,79/255],darkturquoise:[0,206/255,209/255],darkviolet:[148/255,0,211/255],deeppink:[1,20/255,147/255],deepskyblue:[0,191/255,1],dimgray:[105/255,105/255,105/255],dimgrey:[105/255,105/255,105/255],dodgerblue:[30/255,144/255,1],firebrick:[178/255,34/255,34/255],floralwhite:[1,250/255,240/255],forestgreen:[34/255,139/255,34/255],fuchsia:[1,0,1],gainsboro:[220/255,220/255,220/255],ghostwhite:[248/255,248/255,1],gold:[1,215/255,0],goldenrod:[218/255,165/255,32/255],gray:[128/255,128/255,128/255],green:[0,128/255,0],greenyellow:[173/255,1,47/255],grey:[128/255,128/255,128/255],honeydew:[240/255,1,240/255],hotpink:[1,105/255,180/255],indianred:[205/255,92/255,92/255],indigo:[75/255,0,130/255],ivory:[1,1,240/255],khaki:[240/255,230/255,140/255],lavender:[230/255,230/255,250/255],lavenderblush:[1,240/255,245/255],lawngreen:[124/255,252/255,0],lemonchiffon:[1,250/255,205/255],lightblue:[173/255,216/255,230/255],lightcoral:[240/255,128/255,128/255],lightcyan:[224/255,1,1],lightgoldenrodyellow:[250/255,250/255,210/255],lightgray:[211/255,211/255,211/255],lightgreen:[144/255,238/255,144/255],lightgrey:[211/255,211/255,211/255],lightpink:[1,182/255,193/255],lightsalmon:[1,160/255,122/255],lightseagreen:[32/255,178/255,170/255],lightskyblue:[135/255,206/255,250/255],lightslategray:[119/255,136/255,153/255],lightslategrey:[119/255,136/255,153/255],lightsteelblue:[176/255,196/255,222/255],lightyellow:[1,1,224/255],lime:[0,1,0],limegreen:[50/255,205/255,50/255],linen:[250/255,240/255,230/255],magenta:[1,0,1],maroon:[128/255,0,0],mediumaquamarine:[102/255,205/255,170/255],mediumblue:[0,0,205/255],mediumorchid:[186/255,85/255,211/255],mediumpurple:[147/255,112/255,219/255],mediumseagreen:[60/255,179/255,113/255],mediumslateblue:[123/255,104/255,238/255],mediumspringgreen:[0,250/255,154/255],mediumturquoise:[72/255,209/255,204/255],mediumvioletred:[199/255,21/255,133/255],midnightblue:[25/255,25/255,112/255],mintcream:[245/255,1,250/255],mistyrose:[1,228/255,225/255],moccasin:[1,228/255,181/255],navajowhite:[1,222/255,173/255],navy:[0,0,128/255],oldlace:[253/255,245/255,230/255],olive:[128/255,128/255,0],olivedrab:[107/255,142/255,35/255],orange:[1,165/255,0],orangered:[1,69/255,0],orchid:[218/255,112/255,214/255],palegoldenrod:[238/255,232/255,170/255],palegreen:[152/255,251/255,152/255],paleturquoise:[175/255,238/255,238/255],palevioletred:[219/255,112/255,147/255],papayawhip:[1,239/255,213/255],peachpuff:[1,218/255,185/255],peru:[205/255,133/255,63/255],pink:[1,192/255,203/255],plum:[221/255,160/255,221/255],powderblue:[176/255,224/255,230/255],purple:[128/255,0,128/255],rebeccapurple:[102/255,51/255,153/255],red:[1,0,0],rosybrown:[188/255,143/255,143/255],royalblue:[65/255,105/255,225/255],saddlebrown:[139/255,69/255,19/255],salmon:[250/255,128/255,114/255],sandybrown:[244/255,164/255,96/255],seagreen:[46/255,139/255,87/255],seashell:[1,245/255,238/255],sienna:[160/255,82/255,45/255],silver:[192/255,192/255,192/255],skyblue:[135/255,206/255,235/255],slateblue:[106/255,90/255,205/255],slategray:[112/255,128/255,144/255],slategrey:[112/255,128/255,144/255],snow:[1,250/255,250/255],springgreen:[0,1,127/255],steelblue:[70/255,130/255,180/255],tan:[210/255,180/255,140/255],teal:[0,128/255,128/255],thistle:[216/255,191/255,216/255],tomato:[1,99/255,71/255],turquoise:[64/255,224/255,208/255],violet:[238/255,130/255,238/255],wheat:[245/255,222/255,179/255],white:[1,1,1],whitesmoke:[245/255,245/255,245/255],yellow:[1,1,0],yellowgreen:[154/255,205/255,50/255]},I6=Array(3).fill("<percentage> | <number>[0, 255]"),Y6=Array(3).fill("<number>[0, 255]"),mu=new Fa({id:"srgb",name:"sRGB",base:Lw,fromBase:e=>e.map(t=>{let s=t<0?-1:1,r=t*s;return r>.0031308?s*(1.055*r**(1/2.4)-.055):12.92*t}),toBase:e=>e.map(t=>{let s=t<0?-1:1,r=t*s;return r<=.04045?t/12.92:s*((r+.055)/1.055)**2.4}),formats:{rgb:{coords:I6},rgb_number:{name:"rgb",commas:!0,coords:Y6,noAlpha:!0},color:{},rgba:{coords:I6,commas:!0,lastAlpha:!0},rgba_number:{name:"rgba",commas:!0,coords:Y6},hex:{type:"custom",toGamut:!0,test:e=>/^#([a-f0-9]{3,4}){1,2}$/i.test(e),parse(e){e.length<=5&&(e=e.replace(/[a-f0-9]/gi,"$&$&"));let t=[];return e.replace(/[a-f0-9]{2}/gi,s=>{t.push(parseInt(s,16)/255)}),{spaceId:"srgb",coords:t.slice(0,3),alpha:t.slice(3)[0]}},serialize:(e,t,{collapse:s=!0}={})=>{t<1&&e.push(t),e=e.map(o=>Math.round(o*255));let r=s&&e.every(o=>o%17===0);return"#"+e.map(o=>r?(o/17).toString(16):o.toString(16).padStart(2,"0")).join("")}},keyword:{type:"custom",test:e=>/^[a-z]+$/i.test(e),parse(e){e=e.toLowerCase();let t={spaceId:"srgb",coords:null,alpha:1};if(e==="transparent"?(t.coords=F6.black,t.alpha=0):t.coords=F6[e],t.coords)return t}}}}),Uw=new Fa({id:"p3",cssId:"display-p3",name:"P3",base:Dw,fromBase:mu.fromBase,toBase:mu.toBase});nn.display_space=mu;var TN;if(typeof CSS<"u"&&CSS.supports)for(let e of[an,Rw,Uw]){let t=cm({space:e,coords:e.getMinCoords(),alpha:1});if(CSS.supports("color",t)){nn.display_space=e;break}}function SN(e,{space:t=nn.display_space,...s}={}){let r=cm(e,s);if(typeof CSS>"u"||CSS.supports("color",r)||!nn.display_space)r=new String(r),r.color=e;else{let o=e;if((e.coords.some(ql)||ql(e.alpha))&&!(TN??=CSS.supports("color","hsl(none 50% 50%)"))&&(o=uu(e),o.coords=o.coords.map(yo),o.alpha=yo(o.alpha),r=cm(o,s),CSS.supports("color",r)))return r=new String(r),r.color=o,r;o=Or(o,t),r=new String(cm(o,s)),r.color=o}return r}function PN(e,t){return e=ws(e),t=ws(t),e.space===t.space&&e.alpha===t.alpha&&e.coords.every((s,r)=>s===t.coords[r])}function Xl(e){return on(e,[Zo,"y"])}function Ow(e,t){il(e,[Zo,"y"],t)}function CN(e){Object.defineProperty(e.prototype,"luminance",{get(){return Xl(this)},set(t){Ow(this,t)}})}var MN=Object.freeze({__proto__:null,getLuminance:Xl,register:CN,setLuminance:Ow});function EN(e,t){e=ws(e),t=ws(t);let s=Math.max(Xl(e),0),r=Math.max(Xl(t),0);return r>s&&([s,r]=[r,s]),(s+.05)/(r+.05)}var kN=.56,BN=.57,zN=.62,RN=.65,W6=.022,DN=1.414,LN=.1,UN=5e-4,ON=1.14,V6=.027,GN=1.14;function q6(e){return e>=W6?e:e+(W6-e)**DN}function iu(e){let t=e<0?-1:1,s=Math.abs(e);return t*Math.pow(s,2.4)}function FN(e,t){t=ws(t),e=ws(e);let s,r,o,a,i,l;t=Or(t,"srgb"),[a,i,l]=t.coords;let c=iu(a)*.2126729+iu(i)*.7151522+iu(l)*.072175;e=Or(e,"srgb"),[a,i,l]=e.coords;let d=iu(a)*.2126729+iu(i)*.7151522+iu(l)*.072175,u=q6(c),p=q6(d),f=p>u;return Math.abs(p-u)<UN?r=0:f?(s=p**kN-u**BN,r=s*ON):(s=p**RN-u**zN,r=s*GN),Math.abs(r)<LN?o=0:r>0?o=r-V6:o=r+V6,o*100}function IN(e,t){e=ws(e),t=ws(t);let s=Math.max(Xl(e),0),r=Math.max(Xl(t),0);r>s&&([s,r]=[r,s]);let o=s+r;return o===0?0:(s-r)/o}var YN=5e4;function WN(e,t){e=ws(e),t=ws(t);let s=Math.max(Xl(e),0),r=Math.max(Xl(t),0);return r>s&&([s,r]=[r,s]),r===0?YN:(s-r)/r}function VN(e,t){e=ws(e),t=ws(t);let s=on(e,[an,"l"]),r=on(t,[an,"l"]);return Math.abs(s-r)}var qN=216/24389,N6=24/116,f1=24389/27,Jy=ga.D65,p0=new Xt({id:"lab-d65",name:"Lab D65",coords:{l:{refRange:[0,100],name:"Lightness"},a:{refRange:[-125,125]},b:{refRange:[-125,125]}},white:Jy,base:Zo,fromBase(e){let t=e.map((s,r)=>s/Jy[r]).map(s=>s>qN?Math.cbrt(s):(f1*s+16)/116);return[116*t[1]-16,500*(t[0]-t[1]),200*(t[1]-t[2])]},toBase(e){let t=[];return t[1]=(e[0]+16)/116,t[0]=e[1]/500+t[1],t[2]=t[1]-e[2]/200,[t[0]>N6?Math.pow(t[0],3):(116*t[0]-16)/f1,e[0]>8?Math.pow((e[0]+16)/116,3):e[0]/f1,t[2]>N6?Math.pow(t[2],3):(116*t[2]-16)/f1].map((s,r)=>s*Jy[r])},formats:{"lab-d65":{coords:["<number> | <percentage>","<number> | <percentage>[-1,1]","<number> | <percentage>[-1,1]"]}}}),e0=Math.pow(5,.5)*.5+.5;function NN(e,t){e=ws(e),t=ws(t);let s=on(e,[p0,"l"]),r=on(t,[p0,"l"]),o=Math.abs(Math.pow(s,e0)-Math.pow(r,e0)),a=Math.pow(o,1/e0)*Math.SQRT2-40;return a<7.5?0:a}var h1=Object.freeze({__proto__:null,contrastAPCA:FN,contrastDeltaPhi:NN,contrastLstar:VN,contrastMichelson:IN,contrastWCAG21:EN,contrastWeber:WN});function $N(e,t,s={}){mm(s)&&(s={algorithm:s});let{algorithm:r,...o}=s;if(!r){let a=Object.keys(h1).map(i=>i.replace(/^contrast/,"")).join(", ");throw new TypeError(`contrast() function needs a contrast algorithm. Please specify one of: ${a}`)}e=ws(e),t=ws(t);for(let a in h1)if("contrast"+r.toLowerCase()===a.toLowerCase())return h1[a](e,t,o);throw new TypeError(`Unknown contrast algorithm: ${r}`)}function T1(e){let[t,s,r]=fm(e,Zo),o=t+15*s+3*r;return[4*t/o,9*s/o]}function Gw(e){let[t,s,r]=fm(e,Zo),o=t+s+r;return[t/o,s/o]}function XN(e){Object.defineProperty(e.prototype,"uv",{get(){return T1(this)}}),Object.defineProperty(e.prototype,"xy",{get(){return Gw(this)}})}var HN=Object.freeze({__proto__:null,register:XN,uv:T1,xy:Gw});function lm(e,t,s={}){mm(s)&&(s={method:s});let{method:r=nn.deltaE,...o}=s;for(let a in pu)if("deltae"+r.toLowerCase()===a.toLowerCase())return pu[a](e,t,o);throw new TypeError(`Unknown deltaE method: ${r}`)}function jN(e,t=.25){return il(e,[Xt.get("oklch","lch"),"l"],s=>s*(1+t))}function KN(e,t=.25){return il(e,[Xt.get("oklch","lch"),"l"],s=>s*(1-t))}var QN=Object.freeze({__proto__:null,darken:KN,lighten:jN});function Fw(e,t,s=.5,r={}){return[e,t]=[ws(e),ws(t)],Vl(s)==="object"&&([s,r]=[.5,s]),_m(e,t,r)(s)}function Iw(e,t,s={}){let r;b0(e)&&([r,s]=[e,t],[e,t]=r.rangeArgs.colors);let{maxDeltaE:o,deltaEMethod:a,steps:i=2,maxSteps:l=1e3,...c}=s;r||([e,t]=[ws(e),ws(t)],r=_m(e,t,c));let d=lm(e,t),u=o>0?Math.max(i,Math.ceil(d/o)+1):i,p=[];if(l!==void 0&&(u=Math.min(u,l)),u===1)p=[{p:.5,color:r(.5)}];else{let f=1/(u-1);p=Array.from({length:u},(_,v)=>{let g=v*f;return{p:g,color:r(g)}})}if(o>0){let f=p.reduce((_,v,g)=>{if(g===0)return 0;let y=lm(v.color,p[g-1].color,a);return Math.max(_,y)},0);for(;f>o;){f=0;for(let _=1;_<p.length&&p.length<l;_++){let v=p[_-1],g=p[_],y=(g.p+v.p)/2,x=r(y);f=Math.max(f,lm(x,v.color),lm(x,g.color)),p.splice(_,0,{p:y,color:r(y)}),_++}}}return p=p.map(f=>f.color),p}function _m(e,t,s={}){if(b0(e)){let[c,d]=[e,t];return _m(...c.rangeArgs.colors,{...c.rangeArgs.options,...d})}let{space:r,outputSpace:o,progression:a,premultiplied:i}=s;e=ws(e),t=ws(t),e=uu(e),t=uu(t);let l={colors:[e,t],options:s};if(r?r=Xt.get(r):r=Xt.registry[nn.interpolationSpace]||e.space,o=o?Xt.get(o):r,e=Or(e,r),t=Or(t,r),e=$l(e),t=$l(t),r.coords.h&&r.coords.h.type==="angle"){let c=s.hue=s.hue||"shorter",d=[r,"h"],[u,p]=[on(e,d),on(t,d)];isNaN(u)&&!isNaN(p)?u=p:isNaN(p)&&!isNaN(u)&&(p=u),[u,p]=Lq(c,[u,p]),il(e,d,u),il(t,d,p)}return i&&(e.coords=e.coords.map(c=>c*e.alpha),t.coords=t.coords.map(c=>c*t.alpha)),Object.assign(c=>{c=a?a(c):c;let d=e.coords.map((f,_)=>{let v=t.coords[_];return dm(f,v,c)}),u=dm(e.alpha,t.alpha,c),p={space:r,coords:d,alpha:u};return i&&(p.coords=p.coords.map(f=>f/u)),o!==r&&(p=Or(p,o)),p},{rangeArgs:l})}function b0(e){return Vl(e)==="function"&&!!e.rangeArgs}nn.interpolationSpace="lab";function ZN(e){e.defineFunction("mix",Fw,{returns:"color"}),e.defineFunction("range",_m,{returns:"function<color>"}),e.defineFunction("steps",Iw,{returns:"array<color>"})}var JN=Object.freeze({__proto__:null,isRange:b0,mix:Fw,range:_m,register:ZN,steps:Iw}),Yw=new Xt({id:"hsl",name:"HSL",coords:{h:{refRange:[0,360],type:"angle",name:"Hue"},s:{range:[0,100],name:"Saturation"},l:{range:[0,100],name:"Lightness"}},base:mu,fromBase:e=>{let t=Math.max(...e),s=Math.min(...e),[r,o,a]=e,[i,l,c]=[NaN,0,(s+t)/2],d=t-s;if(d!==0){switch(l=c===0||c===1?0:(t-c)/Math.min(c,1-c),t){case r:i=(o-a)/d+(o<a?6:0);break;case o:i=(a-r)/d+2;break;case a:i=(r-o)/d+4}i=i*60}return l<0&&(i+=180,l=Math.abs(l)),i>=360&&(i-=360),[i,l*100,c*100]},toBase:e=>{let[t,s,r]=e;t=t%360,t<0&&(t+=360),s/=100,r/=100;function o(a){let i=(a+t/30)%12,l=s*Math.min(r,1-r);return r-l*Math.max(-1,Math.min(i-3,9-i,1))}return[o(0),o(8),o(4)]},formats:{hsl:{coords:["<number> | <angle>","<percentage>","<percentage>"]},hsla:{coords:["<number> | <angle>","<percentage>","<percentage>"],commas:!0,lastAlpha:!0}}}),Ww=new Xt({id:"hsv",name:"HSV",coords:{h:{refRange:[0,360],type:"angle",name:"Hue"},s:{range:[0,100],name:"Saturation"},v:{range:[0,100],name:"Value"}},base:Yw,fromBase(e){let[t,s,r]=e;s/=100,r/=100;let o=r+s*Math.min(r,1-r);return[t,o===0?0:200*(1-r/o),100*o]},toBase(e){let[t,s,r]=e;s/=100,r/=100;let o=r*(1-s/2);return[t,o===0||o===1?0:(r-o)/Math.min(o,1-o)*100,o*100]},formats:{color:{id:"--hsv",coords:["<number> | <angle>","<percentage> | <number>","<percentage> | <number>"]}}}),e$=new Xt({id:"hwb",name:"HWB",coords:{h:{refRange:[0,360],type:"angle",name:"Hue"},w:{range:[0,100],name:"Whiteness"},b:{range:[0,100],name:"Blackness"}},base:Ww,fromBase(e){let[t,s,r]=e;return[t,r*(100-s)/100,100-r]},toBase(e){let[t,s,r]=e;s/=100,r/=100;let o=s+r;if(o>=1)return[t,0,s/o*100];let a=1-r;return[t,(a===0?0:1-s/a)*100,a*100]},formats:{hwb:{coords:["<number> | <angle>","<percentage> | <number>","<percentage> | <number>"]}}}),Vw=new Fa({id:"a98rgb-linear",cssId:"--a98-rgb-linear",name:"Linear Adobe\xAE 98 RGB compatible",white:"D65",toXYZ_M:[[.5766690429101305,.1855582379065463,.1882286462349947],[.29734497525053605,.6273635662554661,.07529145849399788],[.02703136138641234,.07068885253582723,.9913375368376388]],fromXYZ_M:[[2.0415879038107465,-.5650069742788596,-.34473135077832956],[-.9692436362808795,1.8759675015077202,.04155505740717557],[.013444280632031142,-.11836239223101838,1.0151749943912054]]}),t$=new Fa({id:"a98rgb",cssId:"a98-rgb",name:"Adobe\xAE 98 RGB compatible",base:Vw,toBase:e=>e.map(t=>Math.pow(Math.abs(t),563/256)*Math.sign(t)),fromBase:e=>e.map(t=>Math.pow(Math.abs(t),256/563)*Math.sign(t))}),qw=new Fa({id:"prophoto-linear",cssId:"--prophoto-rgb-linear",name:"Linear ProPhoto",white:"D50",base:h0,toXYZ_M:[[.7977666449006423,.13518129740053308,.0313477341283922],[.2880748288194013,.711835234241873,8993693872564e-17],[0,0,.8251046025104602]],fromXYZ_M:[[1.3457868816471583,-.25557208737979464,-.05110186497554526],[-.5446307051249019,1.5082477428451468,.02052744743642139],[0,0,1.2119675456389452]]}),s$=1/512,r$=16/512,o$=new Fa({id:"prophoto",cssId:"prophoto-rgb",name:"ProPhoto",base:qw,toBase(e){return e.map(t=>t<r$?t/16:t**1.8)},fromBase(e){return e.map(t=>t>=s$?t**(1/1.8):16*t)}}),a$=new Xt({id:"oklch",name:"Oklch",coords:{l:{refRange:[0,1],name:"Lightness"},c:{refRange:[0,.4],name:"Chroma"},h:{refRange:[0,360],type:"angle",name:"Hue"}},white:"D65",base:du,fromBase(e){let[t,s,r]=e,o,a=2e-4;return Math.abs(s)<a&&Math.abs(r)<a?o=NaN:o=Math.atan2(r,s)*180/Math.PI,[t,Math.sqrt(s**2+r**2),gi(o)]},toBase(e){let[t,s,r]=e,o,a;return isNaN(r)?(o=0,a=0):(o=s*Math.cos(r*Math.PI/180),a=s*Math.sin(r*Math.PI/180)),[t,o,a]},formats:{oklch:{coords:["<percentage> | <number>","<number> | <percentage>[0,1]","<number> | <angle>"]}}}),Nw=ga.D65,n$=216/24389,$6=24389/27,[X6,H6]=T1({space:Zo,coords:Nw}),$w=new Xt({id:"luv",name:"Luv",coords:{l:{refRange:[0,100],name:"Lightness"},u:{refRange:[-215,215]},v:{refRange:[-215,215]}},white:Nw,base:Zo,fromBase(e){let t=[yo(e[0]),yo(e[1]),yo(e[2])],s=t[1],[r,o]=T1({space:Zo,coords:t});if(!Number.isFinite(r)||!Number.isFinite(o))return[0,0,0];let a=s<=n$?$6*s:116*Math.cbrt(s)-16;return[a,13*a*(r-X6),13*a*(o-H6)]},toBase(e){let[t,s,r]=e;if(t===0||ql(t))return[0,0,0];s=yo(s),r=yo(r);let o=s/(13*t)+X6,a=r/(13*t)+H6,i=t<=8?t/$6:Math.pow((t+16)/116,3);return[i*(9*o/(4*a)),i,i*((12-3*o-20*a)/(4*a))]},formats:{color:{id:"--luv",coords:["<number> | <percentage>","<number> | <percentage>[-1,1]","<number> | <percentage>[-1,1]"]}}}),x0=new Xt({id:"lchuv",name:"LChuv",coords:{l:{refRange:[0,100],name:"Lightness"},c:{refRange:[0,220],name:"Chroma"},h:{refRange:[0,360],type:"angle",name:"Hue"}},base:$w,fromBase(e){let[t,s,r]=e,o,a=.02;return Math.abs(s)<a&&Math.abs(r)<a?o=NaN:o=Math.atan2(r,s)*180/Math.PI,[t,Math.sqrt(s**2+r**2),gi(o)]},toBase(e){let[t,s,r]=e;return s<0&&(s=0),isNaN(r)&&(r=0),[t,s*Math.cos(r*Math.PI/180),s*Math.sin(r*Math.PI/180)]},formats:{color:{id:"--lchuv",coords:["<number> | <percentage>","<number> | <percentage>","<number> | <angle>"]}}}),i$=216/24389,l$=24389/27,j6=Eo[0][0],K6=Eo[0][1],t0=Eo[0][2],Q6=Eo[1][0],Z6=Eo[1][1],s0=Eo[1][2],J6=Eo[2][0],ew=Eo[2][1],r0=Eo[2][2];function lu(e,t,s){let r=t/(Math.sin(s)-e*Math.cos(s));return r<0?1/0:r}function x1(e){let t=Math.pow(e+16,3)/1560896,s=t>i$?t:e/l$,r=s*(284517*j6-94839*t0),o=s*(838422*t0+769860*K6+731718*j6),a=s*(632260*t0-126452*K6),i=s*(284517*Q6-94839*s0),l=s*(838422*s0+769860*Z6+731718*Q6),c=s*(632260*s0-126452*Z6),d=s*(284517*J6-94839*r0),u=s*(838422*r0+769860*ew+731718*J6),p=s*(632260*r0-126452*ew);return{r0s:r/a,r0i:o*e/a,r1s:r/(a+126452),r1i:(o-769860)*e/(a+126452),g0s:i/c,g0i:l*e/c,g1s:i/(c+126452),g1i:(l-769860)*e/(c+126452),b0s:d/p,b0i:u*e/p,b1s:d/(p+126452),b1i:(u-769860)*e/(p+126452)}}function tw(e,t){let s=t/360*Math.PI*2,r=lu(e.r0s,e.r0i,s),o=lu(e.r1s,e.r1i,s),a=lu(e.g0s,e.g0i,s),i=lu(e.g1s,e.g1i,s),l=lu(e.b0s,e.b0i,s),c=lu(e.b1s,e.b1i,s);return Math.min(r,o,a,i,l,c)}var c$=new Xt({id:"hsluv",name:"HSLuv",coords:{h:{refRange:[0,360],type:"angle",name:"Hue"},s:{range:[0,100],name:"Saturation"},l:{range:[0,100],name:"Lightness"}},base:x0,gamutSpace:mu,fromBase(e){let[t,s,r]=[yo(e[0]),yo(e[1]),yo(e[2])],o;return t>99.9999999?(o=0,t=100):t<1e-8?(o=0,t=0):o=s/tw(x1(t),r)*100,[r,o,t]},toBase(e){let[t,s,r]=[yo(e[0]),yo(e[1]),yo(e[2])],o;return r>99.9999999?(r=100,o=0):r<1e-8?(r=0,o=0):o=tw(x1(r),t)/100*s,[r,o,t]},formats:{color:{id:"--hsluv",coords:["<number> | <angle>","<percentage> | <number>","<percentage> | <number>"]}}});Eo[0][0];Eo[0][1];Eo[0][2];Eo[1][0];Eo[1][1];Eo[1][2];Eo[2][0];Eo[2][1];Eo[2][2];function cu(e,t){return Math.abs(t)/Math.sqrt(Math.pow(e,2)+1)}function sw(e){let t=cu(e.r0s,e.r0i),s=cu(e.r1s,e.r1i),r=cu(e.g0s,e.g0i),o=cu(e.g1s,e.g1i),a=cu(e.b0s,e.b0i),i=cu(e.b1s,e.b1i);return Math.min(t,s,r,o,a,i)}var d$=new Xt({id:"hpluv",name:"HPLuv",coords:{h:{refRange:[0,360],type:"angle",name:"Hue"},s:{range:[0,100],name:"Saturation"},l:{range:[0,100],name:"Lightness"}},base:x0,gamutSpace:"self",fromBase(e){let[t,s,r]=[yo(e[0]),yo(e[1]),yo(e[2])],o;return t>99.9999999?(o=0,t=100):t<1e-8?(o=0,t=0):o=s/sw(x1(t))*100,[r,o,t]},toBase(e){let[t,s,r]=[yo(e[0]),yo(e[1]),yo(e[2])],o;return r>99.9999999?(r=100,o=0):r<1e-8?(r=0,o=0):o=sw(x1(r))/100*s,[r,o,t]},formats:{color:{id:"--hpluv",coords:["<number> | <angle>","<percentage> | <number>","<percentage> | <number>"]}}}),rw=203,ow=2610/2**14,u$=2**14/2610,p$=2523/2**5,aw=2**5/2523,nw=3424/2**12,iw=2413/2**7,lw=2392/2**7,m$=new Fa({id:"rec2100pq",cssId:"rec2100-pq",name:"REC.2100-PQ",base:w1,toBase(e){return e.map(function(t){return(Math.max(t**aw-nw,0)/(iw-lw*t**aw))**u$*1e4/rw})},fromBase(e){return e.map(function(t){let s=Math.max(t*rw/1e4,0);return((nw+iw*s**ow)/(1+lw*s**ow))**p$})}}),cw=.17883277,dw=.28466892,uw=.55991073,o0=3.7743,f$=new Fa({id:"rec2100hlg",cssId:"rec2100-hlg",name:"REC.2100-HLG",referred:"scene",base:w1,toBase(e){return e.map(function(t){return t<=.5?t**2/3*o0:(Math.exp((t-uw)/cw)+dw)/12*o0})},fromBase(e){return e.map(function(t){return t/=o0,t<=1/12?Math.sqrt(3*t):cw*Math.log(12*t-dw)+uw})}}),Xw={};Nl.add("chromatic-adaptation-start",e=>{e.options.method&&(e.M=Hw(e.W1,e.W2,e.options.method))});Nl.add("chromatic-adaptation-end",e=>{e.M||(e.M=Hw(e.W1,e.W2,e.options.method))});function S1({id:e,toCone_M:t,fromCone_M:s}){Xw[e]=arguments[0]}function Hw(e,t,s="Bradford"){let r=Xw[s],[o,a,i]=Gr(r.toCone_M,e),[l,c,d]=Gr(r.toCone_M,t),u=Gr([[l/o,0,0],[0,c/a,0],[0,0,d/i]],r.toCone_M);return Gr(r.fromCone_M,u)}S1({id:"von Kries",toCone_M:[[.40024,.7076,-.08081],[-.2263,1.16532,.0457],[0,0,.91822]],fromCone_M:[[1.8599363874558397,-1.1293816185800916,.21989740959619328],[.3611914362417676,.6388124632850422,-6370596838649899e-21],[0,0,1.0890636230968613]]});S1({id:"Bradford",toCone_M:[[.8951,.2664,-.1614],[-.7502,1.7135,.0367],[.0389,-.0685,1.0296]],fromCone_M:[[.9869929054667121,-.14705425642099013,.15996265166373122],[.4323052697233945,.5183602715367774,.049291228212855594],[-.00852866457517732,.04004282165408486,.96848669578755]]});S1({id:"CAT02",toCone_M:[[.7328,.4296,-.1624],[-.7036,1.6975,.0061],[.003,.0136,.9834]],fromCone_M:[[1.0961238208355142,-.27886900021828726,.18274517938277307],[.4543690419753592,.4735331543074117,.07209780371722911],[-.009627608738429355,-.00569803121611342,1.0153256399545427]]});S1({id:"CAT16",toCone_M:[[.401288,.650173,-.051461],[-.250268,1.204414,.045854],[-.002079,.048952,.953127]],fromCone_M:[[1.862067855087233,-1.0112546305316845,.14918677544445172],[.3875265432361372,.6214474419314753,-.008973985167612521],[-.01584149884933386,-.03412293802851557,1.0499644368778496]]});Object.assign(ga,{A:[1.0985,1,.35585],C:[.98074,1,1.18232],D55:[.95682,1,.92149],D75:[.94972,1,1.22638],E:[1,1,1],F2:[.99186,1,.67393],F7:[.95041,1,1.08747],F11:[1.00962,1,.6435]});ga.ACES=[.32168/.33767,1,.34065/.33767];var jw=new Fa({id:"acescg",cssId:"--acescg",name:"ACEScg",coords:{r:{range:[0,65504],name:"Red"},g:{range:[0,65504],name:"Green"},b:{range:[0,65504],name:"Blue"}},referred:"scene",white:ga.ACES,toXYZ_M:[[.6624541811085053,.13400420645643313,.1561876870049078],[.27222871678091454,.6740817658111484,.05368951740793705],[-.005574649490394108,.004060733528982826,1.0103391003129971]],fromXYZ_M:[[1.6410233796943257,-.32480329418479,-.23642469523761225],[-.6636628587229829,1.6153315916573379,.016756347685530137],[.011721894328375376,-.008284441996237409,.9883948585390215]]}),_1=2**-16,a0=-.35828683,v1=(Math.log2(65504)+9.72)/17.52,_$=new Fa({id:"acescc",cssId:"--acescc",name:"ACEScc",coords:{r:{range:[a0,v1],name:"Red"},g:{range:[a0,v1],name:"Green"},b:{range:[a0,v1],name:"Blue"}},referred:"scene",base:jw,toBase(e){let t=-.3013698630136986;return e.map(function(s){return s<=t?(2**(s*17.52-9.72)-_1)*2:s<v1?2**(s*17.52-9.72):65504})},fromBase(e){return e.map(function(t){return t<=0?(Math.log2(_1)+9.72)/17.52:t<_1?(Math.log2(_1+t*.5)+9.72)/17.52:(Math.log2(t)+9.72)/17.52})}}),pw=Object.freeze({__proto__:null,A98RGB:t$,A98RGB_Linear:Vw,ACEScc:_$,ACEScg:jw,CAM16_JMh:mN,HCT:pm,HPLuv:d$,HSL:Yw,HSLuv:c$,HSV:Ww,HWB:e$,ICTCP:c0,JzCzHz:l0,Jzazbz:ww,LCH:um,LCHuv:x0,Lab:an,Lab_D65:p0,Luv:$w,OKLCH:a$,OKLab:du,P3:Uw,P3_Linear:Dw,ProPhoto:o$,ProPhoto_Linear:qw,REC_2020:Rw,REC_2020_Linear:w1,REC_2100_HLG:f$,REC_2100_PQ:m$,XYZ_ABS_D65:g0,XYZ_D50:h0,XYZ_D65:Zo,sRGB:mu,sRGB_Linear:Lw}),ya=class Ga{constructor(...t){let s;t.length===1&&(s=ws(t[0]));let r,o,a;s?(r=s.space||s.spaceId,o=s.coords,a=s.alpha):[r,o,a]=t,Object.defineProperty(this,"space",{value:Xt.get(r),writable:!1,enumerable:!0,configurable:!0}),this.coords=o?o.slice():[0,0,0],this.alpha=a>1||a===void 0?1:a<0?0:a;for(let i=0;i<this.coords.length;i++)this.coords[i]==="NaN"&&(this.coords[i]=NaN);for(let i in this.space.coords)Object.defineProperty(this,i,{get:()=>this.get(i),set:l=>this.set(i,l)})}get spaceId(){return this.space.id}clone(){return new Ga(this.space,this.coords,this.alpha)}toJSON(){return{spaceId:this.spaceId,coords:this.coords,alpha:this.alpha}}display(...t){let s=SN(this,...t);return s.color=new Ga(s.color),s}static get(t,...s){return t instanceof Ga?t:new Ga(t,...s)}static defineFunction(t,s,r=s){let{instance:o=!0,returns:a}=r,i=function(...l){let c=s(...l);if(a==="color")c=Ga.get(c);else if(a==="function<color>"){let d=c;c=function(...u){let p=d(...u);return Ga.get(p)},Object.assign(c,d)}else a==="array<color>"&&(c=c.map(d=>Ga.get(d)));return c};t in Ga||(Ga[t]=i),o&&(Ga.prototype[t]=function(...l){return i(this,...l)})}static defineFunctions(t){for(let s in t)Ga.defineFunction(s,t[s],t[s])}static extend(t){if(t.register)t.register(Ga);else for(let s in t)Ga.defineFunction(s,t[s])}};ya.defineFunctions({get:on,getAll:fm,set:il,setAll:v0,to:Or,equals:PN,inGamut:Xc,toGamut:$l,distance:Aw,toString:cm});Object.assign(ya,{util:Eq,hooks:Nl,WHITES:ga,Space:Xt,spaces:Xt.registry,parse:bw,defaults:nn});for(let e of Object.keys(pw))Xt.register(pw[e]);for(let e in Xt.registry)m0(e,Xt.registry[e]);Nl.add("colorspace-init-end",e=>{m0(e.id,e),e.aliases?.forEach(t=>{m0(t,e)})});function m0(e,t){let s=e.replace(/-/g,"_");Object.defineProperty(ya.prototype,s,{get(){let r=this.getAll(e);return typeof Proxy>"u"?r:new Proxy(r,{has:(o,a)=>{try{return Xt.resolveCoord([t,a]),!0}catch{}return Reflect.has(o,a)},get:(o,a,i)=>{if(a&&typeof a!="symbol"&&!(a in o)){let{index:l}=Xt.resolveCoord([t,a]);if(l>=0)return o[l]}return Reflect.get(o,a,i)},set:(o,a,i,l)=>{if(a&&typeof a!="symbol"&&!(a in o)||a>=0){let{index:c}=Xt.resolveCoord([t,a]);if(c>=0)return o[c]=i,this.setAll(e,o),!0}return Reflect.set(o,a,i,l)}})},set(r){this.setAll(e,r)},configurable:!0,enumerable:!0})}ya.extend(pu);ya.extend({deltaE:lm});Object.assign(ya,{deltaEMethods:pu});ya.extend(QN);ya.extend({contrast:$N});ya.extend(HN);ya.extend(MN);ya.extend(JN);ya.extend(h1);var Kw="p3-linear",Qw=e=>{Kw=e},os=e=>e?1:-1;function v$(e){try{let t=new ya(e),s=Kw==="srgb"?"srgb-linear":"p3-linear",r=t.to(s).coords,o=Number(t.alpha);return{r:Number.isFinite(r?.[0])?r[0]:0,g:Number.isFinite(r?.[1])?r[1]:0,b:Number.isFinite(r?.[2])?r[2]:0,a:Number.isFinite(o)?o:1}}catch{return{r:0,g:0,b:0,a:0}}}var ie=e=>v$(e),Xe=e=>{let t=.5,s=.5,r=(a,i=!1)=>{if(typeof a=="number")return a;if(typeof a=="object"&&a!==null)return a.value;let l=a.toLowerCase().trim();if(i){if(l==="top")return 0;if(l==="bottom")return 1;if(l==="center")return .5}else{if(l==="left")return 0;if(l==="right")return 1;if(l==="center")return .5}return console.warn(`Invalid position value: ${a}. Defaulting to center.`),.5};if(typeof e=="string"){let a=e.toLowerCase().trim().split(/\s+/);a.includes("left")?t=0:a.includes("right")?t=1:(a.includes("center")||a.length===1&&(a[0]==="top"||a[0]==="bottom"))&&(t=.5),a.includes("top")?s=0:a.includes("bottom")?s=1:(a.includes("center")||a.length===1&&(a[0]==="left"||a[0]==="right"))&&(s=.5),a.length===1&&a[0]==="center"&&(t=.5,s=.5)}else typeof e=="object"&&e!==null?(t=r(e.x,!1),s=r(e.y,!0)):console.warn(`Invalid position value provided: ${e}. Defaulting to center.`);let o=1-s;return{x:t,y:o}},us=e=>{if(typeof e=="number")return(e%360+360)%360;let t=e.toLowerCase().trim();switch(t){case"to right":return 0;case"to bottom":return 90;case"to left":return 180;case"to top":return 270;case"to bottom right":case"to right bottom":return 45;case"to bottom left":case"to left bottom":return 135;case"to top left":case"to left top":return 225;case"to top right":case"to right top":return 315;case"from left":return 0;case"from top":return 90;case"from right":return 180;case"from bottom":return 270;case"from top left":return 45;case"from top right":return 135;case"from bottom right":return 225;case"from bottom left":return 315;default:let s=t.match(/^(-?\d*\.?\d+)(deg|rad|turn)?$/);if(s){let[,r,o="deg"]=s,a=parseFloat(r);switch(o){case"deg":return(a%360+360)%360;case"rad":return(a*180/Math.PI%360+360)%360;case"turn":return(a*360%360+360)%360;default:return(a%360+360)%360}}return console.warn(`Invalid angle value: ${e}. Defaulting to 0 degrees.`),0}},Fr=e=>{let t={stretch:0,transparent:1,mirror:2,wrap:3}[e.toLowerCase()];return t===void 0?(console.warn(`Invalid edge mode: ${e}. Defaulting to 'stretch'.`),0):t},Zw=e=>({outside:0,center:1,inside:2})[e?.toLowerCase()]??1,pt=[{label:"Linear RGB",value:"linear"},{label:"OKLCh",value:"oklch"},{label:"OKLAB",value:"oklab"},{label:"HSL",value:"hsl"},{label:"HSV",value:"hsv"},{label:"LCH",value:"lch"}],st=e=>{let t={linear:0,oklch:1,oklab:2,hsl:3,hsv:4,lch:5}[e.toLowerCase()];return t===void 0?(console.warn(`Invalid color space mode: ${e}. Defaulting to 'linear'.`),0):t};var h$=Object.defineProperty,jr=e=>{let t={};for(var s in e)h$(t,s,{get:e[s],enumerable:!0});return t};function ln(e){typeof Symbol[e]>"u"&&Object.defineProperty(Symbol,e,{value:Symbol.for(`Symbol.${e}`),writable:!1,enumerable:!1,configurable:!1})}function Jw(e,t){return typeof e?.[t]=="function"}function ku(e,t,s,r){let o=Jo.deferOperation;return Jw(e,s)&&(o=e[s](e,t)),o===Jo.deferOperation&&Jw(t,s)&&(o=t[s](e,t)),o===Jo.deferOperation?r(e,t):o}var g$=(e,t)=>e+t;function y$(e,t){return(typeof e=="number"||typeof e=="string")&&(typeof t=="number"||typeof t=="string")?e+t:ku(e,t,Jo.plus,g$)}var b$=(e,t)=>e-t;function x$(e,t){return typeof e=="number"&&typeof t=="number"?e-t:ku(e,t,Jo.minus,b$)}var A$=(e,t)=>e*t;function w$(e,t){return typeof e=="number"&&typeof t=="number"?e*t:ku(e,t,Jo.star,A$)}var T$=(e,t)=>e/t;function S$(e,t){return typeof e=="number"&&typeof t=="number"?e/t:ku(e,t,Jo.slash,T$)}var P$=(e,t)=>e**t;function C$(e,t){return typeof e=="number"&&typeof t=="number"?e**t:ku(e,t,Jo.starStar,P$)}var M$=(e,t)=>e%t;function E$(e,t){return typeof e=="number"&&typeof t=="number"?e%t:ku(e,t,Jo.percent,M$)}var Jo=(ln("deferOperation"),ln("operatorPlus"),ln("operatorMinus"),ln("operatorStar"),ln("operatorSlash"),ln("operatorStarStar"),ln("operatorPercent"),ln("operatorEqEq"),ln("operatorPrePlusPlus"),ln("operatorPreMinusMinus"),ln("operatorPostPlusPlus"),ln("operatorPostMinusMinus"),ln("operatorPreMinus"),globalThis.__tsover_add=y$,globalThis.__tsover_sub=x$,globalThis.__tsover_mul=w$,globalThis.__tsover_div=S$,globalThis.__tsover_pow=C$,globalThis.__tsover_mod=E$,{deferOperation:Symbol.deferOperation,plus:Symbol.operatorPlus,minus:Symbol.operatorMinus,star:Symbol.operatorStar,slash:Symbol.operatorSlash,starStar:Symbol.operatorStarStar,percent:Symbol.operatorPercent,eqEq:Symbol.operatorEqEq,prePlusPlus:Symbol.operatorPrePlusPlus,preMinusMinus:Symbol.operatorPreMinusMinus,postPlusPlus:Symbol.operatorPostPlusPlus,postMinusMinus:Symbol.operatorPostMinusMinus,preMinus:Symbol.operatorPreMinus}),vv=!1,Ab=!1,Lo="0.12.3",ye=Symbol(`typegpu:${Lo}:$internal`),He=Symbol(`typegpu:${Lo}:$soul`),$a=Symbol(`typegpu:${Lo}:$gpuValueOf`),Do=Symbol(`typegpu:${Lo}:$getNameForward`),xa=Symbol(`typegpu:${Lo}:$providing`),rc=Symbol(`typegpu:${Lo}:$ownSnippet`),Ws=Symbol(`typegpu:${Lo}:$resolve`),wb=Symbol(`typegpu:${Lo}:$cast`),xo=Symbol(`typegpu:${Lo}:$gpuCallable`),Bu=Symbol(`typegpu:${Lo}:$repr`);`${Lo}`;`${Lo}`;`${Lo}`;`${Lo}`;`${Lo}`;`${Lo}`;`${Lo}`;`${Lo}`;`${Lo}`;function vs(e){return!!e?.[ye]}var Er={[ye]:{},type:"void",toString(){return"void"}},k$=["bool","f32","f16","i32","u32","u16","vec2f","vec2h","vec2i","vec2u","vec2<bool>","vec3f","vec3h","vec3i","vec3u","vec3<bool>","vec4f","vec4h","vec4i","vec4u","vec4<bool>","mat2x2f","mat3x3f","mat4x4f","struct","array","ptr","atomic","decorated","abstractInt","abstractFloat","void","texture_1d","texture_storage_1d","texture_2d","texture_storage_2d","texture_multisampled_2d","texture_depth_2d","texture_depth_multisampled_2d","texture_2d_array","texture_storage_2d_array","texture_depth_2d_array","texture_cube","texture_depth_cube","texture_cube_array","texture_depth_cube_array","texture_3d","texture_storage_3d","texture_external","sampler","sampler_comparison"];function sa(e){let t=e;return vs(t)&&typeof t.kind=="string"&&t.kind.startsWith("vec")}function B$(e){return sa(e)&&e.kind.includes("b")}function z$(e){let t=e;return vs(t)&&typeof t.type=="string"&&t.type.startsWith("vec2")}function R$(e){let t=e;return vs(t)&&typeof t.type=="string"&&t.type.startsWith("vec3")}function D$(e){let t=e;return vs(t)&&typeof t.type=="string"&&t.type.startsWith("vec4")}function Ks(e){return z$(e)||R$(e)||D$(e)}function Tb(e){return Ks(e)&&e.type.includes("b")}function ti(e){let t=e;return vs(t)&&typeof t.kind?.startsWith=="function"&&t.kind.startsWith("mat")}function dS(e){return vs(e)&&e?.type==="mat2x2f"}function uS(e){return vs(e)&&e?.type==="mat3x3f"}function L$(e){return vs(e)&&e?.type==="mat4x4f"}function Ci(e){return dS(e)||uS(e)||L$(e)}function pS(e){return vs(e)&&["abstractInt","i32","u32"].includes(e?.type)}function U$(e){return Ks(e)&&pS(e.primitive)}function e7(e){return sa(e)&&["vec2f","vec3f","vec4f"].includes(e.kind)}function Z1(e){return sa(e)&&/[iu]$/.test(e.kind)}function mS(e){return sa(e)&&/[u]$/.test(e.kind)}function cd(e){return vs(e)&&k$.includes(e?.type)}function uo(e){return vs(e)&&e?.type==="array"}function _r(e){return vs(e)&&e?.type==="struct"}function ra(e){return vs(e)&&e?.type==="ptr"}function of(e){return vs(e)&&e?.type==="atomic"}function fS(e){return vs(e)&&e?.type==="@align"}function _S(e){return vs(e)&&e?.type==="@size"}function vS(e){return vs(e)&&e?.type==="@location"}function O$(e){return vs(e)&&e?.type==="@builtin"}function bl(e){return vs(e)&&e?.type==="decorated"}function hv(e){return vs(e)&&e.type==="void"}function Kl(e){return vs(e)&&e.type==="bool"}function R0(e){let t=e?.type;return vs(e)&&(t==="abstractInt"||t==="abstractFloat"||t==="f32"||t==="f16"||t==="i32"||t==="u32")}function Sb(e){let t=e?.type;return vs(e)&&(t==="f16"||t==="vec2h"||t==="vec3h"||t==="vec4h")}var G$=["abstractInt","abstractFloat","f32","f16","i32","u32","bool"];function ei(e){return!vs(e)||G$.includes(e?.type)}function gv(e){return e.schema}var F$=["deprecated","suspicious","fallback","precision-loss","implicit-conversion","webgpu-feature-missing","webgpu-limits-exceeded","locations-mismatched","log-limit-exceeded","external-omitted","uniform-schema-misaligned"],I$=class{#e;#t;#s=new WeakMap;constructor(e){e?this.#e=["webgpu-feature-missing","webgpu-limits-exceeded","locations-mismatched","log-limit-exceeded","external-omitted"]:this.#e=F$,this.#t=new Set(this.#e)}disable(e){this.#t.delete(e)}reset(){this.#t=new Set(this.#e)}warn(e,...t){this.#t.has(e)&&console.warn(`\u26A0\uFE0F [${e}] `,...t)}warnOnce(e,t,s,...r){if(!this.#t.has(e))return;let o=this.#s.get(t);o||(o=new Set,this.#s.set(t,o));let a=`${e}:${s}`;o.has(a)||(o.add(a),this.warn(e,...r))}},hS=new I$(!(vv||Ab)),nr=hS,gS=hS;function Wa(e){if(Array.isArray(e))return`[${e.map(Wa).join(", ")}]`;let t=String(e);if(t!=="[object Object]")return t;try{return JSON.stringify(e)}catch(s){return nr.warn("suspicious","Error parsing JSON:",s),"<invalid json>"}}function D0(e){return sa(e)||ti(e)?e.toString():Array.isArray(e)?`[${e.map(D0).join(", ")}]`:e&&typeof e=="object"?`{ ${Object.entries(e).map(([t,s])=>`${t}: ${D0(s)}`).join(", ")} }`:String(e)}function Y$(e){let t={};for(let[s,r]of Object.entries(e))Object.defineProperty(t,s,{get:r,enumerable:!0});return t}function W$(e){if(e.v===1){let t=e.externals;return{...e,externals:typeof t=="function"?t:()=>t}}if(e.v===2){let t=Y$(e?.externals);return{...e,externals:()=>t}}throw new Error(`Unrecognized TypeGPU metadata format: ${Wa(e)}`)}var yS="0.12.3",hl=globalThis;hl.__TYPEGPU_VERSION__!==void 0&&console.warn(`Found duplicate TypeGPU version. First was ${hl.__TYPEGPU_VERSION__}, this one is ${yS}. This may cause unexpected behavior.`);hl.__TYPEGPU_VERSION__=yS;hl.__TYPEGPU_AUTONAME__=(e,t)=>bu(e)&&vs(e)&&!ct(e)?e.$name(t):e;var J1=new WeakMap;function bu(e){return!!e?.$name}function bS(e){return!!e?.[Do]}function xS(e){return e?.[He]}function ct(e){return bS(e)?ct(e[Do]):J1.get(e)??xS(e)?.label??hl.__TYPEGPU_META__?.get(e)?.name}function ss(e,t){if(bS(e)){ss(e[Do],t);return}J1.set(e,t);let s=xS(e);s&&(s.label=t)}var t7=new WeakMap;function Pb(e){let t=hl.__TYPEGPU_META__?.get(e);if(t){hl.__TYPEGPU_META__?.delete(e);let s=W$(t);t7.set(e,s),t.name&&J1.get(e)===void 0&&J1.set(e,t.name)}return t7.get(e)}function xu(e){return typeof e=="function"&&!!Pb(e)}var Cb=(vv||Ab)&&{get enabled(){return!!hl.__TYPEGPU_MEASURE_PERF__},record(e,t){let s=hl.__TYPEGPU_PERF_RECORDS__??=new Map,r=s.get(e);r||(r=[],s.set(e,r)),r.push(t)}}||void 0,A0="Invariant failed";function Lr(e,t){if(e)return;if(!vv&&!Ab)throw new Error(A0);let s=typeof t=="function"?t():t,r=s?`${A0}: ${s}`:A0;throw new Error(r)}var hu=class L0 extends Error{cause;trace;constructor(t,s){let r=s.map(o=>`- ${xu(o)?`fn*:${ct(o)}`:o}`);r.length>20&&(r=[...r.slice(0,11),"...",...r.slice(-10)]),super(`Resolution of the following tree failed:
3
3
  ${r.join(`
4
4
  `)}: ${t&&typeof t=="object"&&"message"in t?t.message:t}`),this.cause=t,this.trace=s,Object.setPrototypeOf(this,L0.prototype)}appendToTrace(t){let s=[t,...this.trace];return new L0(this.cause,s)}},s7=class U0 extends Error{cause;trace;constructor(t,s){let r=s.map(o=>`- ${o}`);r.length>20&&(r=[...r.slice(0,11),"...",...r.slice(-10)]),super(`Execution of the following tree failed:
@@ -269,4 +269,4 @@ The element must be a direct child of a <canvas layoutsubtree>.`,y),u=!0)}}}}}),
269
269
  const uv = array<vec2f, 3>(vec2f(0, 1), vec2f(2, 1), vec2f(0, -1));
270
270
 
271
271
  return Out(vec4f(pos[in.vertexIndex], 0, 1), uv[in.vertexIndex]);
272
- }`,"fullScreenTriangle");gS.disable("external-omitted");var Yfe=["float32-filterable","timestamp-query"],J5=new WeakMap,Z5=new WeakMap,e6=new WeakSet,$p=null,Wfe=new WeakSet;async function Vfe(e={}){if(e.device&&!e6.has(e.device)){let r=e.device,o=J5.get(r);o||(o=A.initFromDevice({device:r}),J5.set(r,o));let a=aq(o,e.onDeviceLost);return{root:o,device:r,adapter:e.adapter,createdDevice:!1,release:a}}e.device&&rn("[gpu] injected GPU device was lost \u2014 falling back to the shared default device");let t=await qfe(),s=aq(t.root,e.onDeviceLost);return{root:t.root,device:t.device,adapter:t.adapter,createdDevice:!1,release:s}}async function qfe(){for(;;){let t=$p;if(!t)break;let s=await t.catch(()=>null);if(s&&!Wfe.has(t)&&!e6.has(s.device))return s;$p===t&&($p=null)}let e=Nfe();$p=e;try{return await e}catch(t){throw $p===e&&($p=null),t}}async function Nfe(){if(typeof navigator>"u"||!navigator.gpu)throw new au("unsupported","[gpu] WebGPU is not available in this environment (navigator.gpu is undefined).");let e;try{e=await A.init({adapter:{powerPreference:"high-performance"},device:{optionalFeatures:Yfe}})}catch(t){let s=await jy();throw new au(s.supported?"no-device":s.reason??"init-failed",void 0,{cause:t})}if(!e.device)throw new au("no-device","[gpu] adapter returned no device.");return J5.set(e.device,e),{root:e,device:e.device,createdDevice:!0}}function $fe(e,t,s={}){return e.configureContext({canvas:t,alphaMode:"premultiplied",...s})}function aq(e,t){let s=e.device,r=Z5.get(s);if(r||(r=new Set,Z5.set(s,r),e.device.lost.then(a=>{if(e6.add(s),a.reason!=="destroyed")for(let i of[...Z5.get(s)??[]])i(a)})),!t)return()=>{};let o=r;return o.add(t),()=>o.delete(t)}function Xfe(){let e={value:0,advance(t,s){e.value+=t*s}};return e}var nq=new WeakMap;function Jd(e){let t=nq.get(e);return t||(t=Xfe(),nq.set(e,t)),t}var Hfe=(globalThis.__TYPEGPU_AUTONAME__??(e=>e))(tt({time:n,viewportSize:m,logicalViewportSize:m,aspect:n,pointer:m,pointerActive:n}),"SystemUniforms");A.fn([m,m],m)((e=>(globalThis.__TYPEGPU_META__??=new WeakMap).set(e.f=((t,s)=>{"use gpu";return aa(t,s)}),{v:2,name:void 0,ast:{params:[{type:"i",name:"uv"},{type:"i",name:"viewportSize"}],body:[0,[[10,[6,"std.mul",["uv","viewportSize"]]]]]},externals:{"std.mul":()=>aa}})&&e.f)({}));A.fn([m],n)((e=>(globalThis.__TYPEGPU_META__??=new WeakMap).set(e.f=(t=>{"use gpu";return __tsover_div(t.x,t.y)}),{v:2,name:void 0,ast:{params:[{type:"i",name:"viewportSize"}],body:[0,[[10,[1,[7,"viewportSize","x"],"/",[7,"viewportSize","y"]]]]]},externals:{}})&&e.f)({}));function jfe(e){let t=2166136261,s=e.join("");for(let r=0;r<s.length;r++)t^=s.charCodeAt(r),t=Math.imul(t,16777619);return`${(t>>>0).toString(16).padStart(8,"0")}:${s.length}`}function Kfe(e={}){let t=e.maxSize??4,s=e.dispose,r=new Map,o=0,a=null,i=null;function l(d){d.lastUsed=++o}function c(){for(;r.size>t;){let d=null;for(let u of r.values())u.hash===a||u.hash===i||(!d||u.lastUsed<d.lastUsed)&&(d=u);if(!d)break;r.delete(d.hash),s?.(d.value,d.hash)}}return{getOrBuild(d,u){let p=r.get(d);if(p)return l(p),d===a?i=null:i=d,p.value;let f=u(),_={hash:d,value:f,lastUsed:++o};return r.set(d,_),a===null?(a=d,i=null):i=d,c(),f},markReady(d){if(d!==i)return;let u=r.get(d);u&&(a=d,i=null,l(u),c())},get renderValue(){let d=a??i;return d?r.get(d)?.value??null:null},get activeHash(){return a},get pendingHash(){return i},release(d){let u=r.get(d);u&&(r.delete(d),s?.(u.value,d),a===d&&(a=null),i===d&&(i=null))},has(d){return r.has(d)},get size(){return r.size},clear(){for(let d of r.values())s?.(d.value,d.hash);r.clear(),a=null,i=null}}}var Xp="passManager";function Qfe(e,t){let{textureManager:s,dispatcher:r}=t,o=t.canvasFormat??Zfe(),a=t.rttFormat??"rgba16float",i=e.device?.limits?.maxSampledTexturesPerShaderStage,l=t.maxSampledTextures??(typeof i=="number"&&i>0?i:16),c=t.fullScreenTriangle??Ife,d=new Map,u=new Set,p=null;function f(){let B=s.samplers;try{return e.createBindGroup(Ox,{linearClamp:B.linearClamp,nearestClamp:B.nearestClamp,linearRepeat:B.linearRepeat,nearestRepeat:B.nearestRepeat})}catch(D){gr(`[${Xp}] failed to build sampler bind group:`,D);return}}function _(B,D){let G=new Set;for(let F of B.textures)if(F.kind==="rtt")if(G.add(F.key),d.has(F.key))d.get(F.key).resize(D.width,D.height);else{let V=s.createRenderTexture({width:D.width,height:D.height,format:a,label:`rtt:${F.key}`});d.set(F.key,V),u.add(V)}for(let[F,V]of[...d])G.has(F)||(V.destroy(),u.delete(V),d.delete(F))}function v(B,D){if(!B.textureLayout||B.reads.length===0)return;let G={};for(let F of B.reads){let V=d.get(F),W=D?.[F],q=V??W;if(!q){gr(`[${Xp}] pass "${B.entry}" reads unknown texture "${F}"`);return}G[F]=q.texture}B.reads.length>l&&rn(`[${Xp}] pass samples ${B.reads.length} textures (> device limit ~${l}); composition may fail on this device.`);try{return e.createBindGroup(B.textureLayout,G)}catch(F){gr(`[${Xp}] failed to build texture bind group:`,F);return}}function g(B,D){return e.createRenderPipeline({vertex:c,fragment:B.entry,targets:{format:D}})}function y(B,D){if(!B.externalLayout||B.externalReads.length===0)return;let G=B.externalReads;if(G.length===1){let V=D.get(G[0]);if(!V){gr(`[${Xp}] external read "${G[0]}" has no registered source`);return}return s.createExternalTextureBinding({layout:B.externalLayout,entryKey:G[0],getSource:V})}let F=null;return{update(){let V={};for(let W of G){let q=D.get(W)?.();if(!q)return F=null,null;try{V[W]=e.device.importExternalTexture({source:q})}catch{return F=null,null}}return F=e.createBindGroup(B.externalLayout,V),F},get current(){return F},destroy(){F=null}}}function x(B,D,G,F){let V=D.kind==="canvas"?o:a,W=B.reads.filter($=>G?.[$]),q=new Map(W.map($=>[$,G[$].texture]));return{fragment:B,pipeline:g(B,V),textureBindGroup:v(B,G),externalBinding:y(B,F),target:D,mediaReads:W,mediaSnapshot:q}}function w(B,D,G,F){_(B,G);for(let Q of B.computeSteps)Q.bindInputs?.(ee=>d.get(ee)??F?.[ee]);let V=f(),W=new Map;for(let Q of B.externalTextures)W.set(Q.key,Q.getSource);let q=B.rttPasses.map(Q=>x(Q.fragment,{kind:"rtt",key:Q.textureKey},F,W)),$=x(B.finalPass,{kind:"canvas"},F,W);p={ir:B,uniformBindGroup:D,samplerBindGroup:V,computeSteps:B.computeSteps,rttPasses:q,finalPass:$,size:G,mediaResources:F}}function P(B,D){let G=B.pipeline;if(p?.uniformBindGroup&&(G=G.with(p.uniformBindGroup)),B.mediaReads&&B.mediaReads.length>0&&p?.mediaResources){let F=!1;for(let V of B.mediaReads)p.mediaResources[V].texture!==B.mediaSnapshot.get(V)&&(F=!0);if(F){B.textureBindGroup=v(B.fragment,p.mediaResources);for(let V of B.mediaReads)B.mediaSnapshot.set(V,p.mediaResources[V].texture)}}if(B.textureBindGroup&&(G=G.with(B.textureBindGroup)),B.fragment.usesSamplers&&p?.samplerBindGroup&&(G=G.with(p.samplerBindGroup)),B.fragment.externalReads.length>0){let F=B.externalBinding?.update()??null;if(!F){B.externalSkipLogged||(rn(`[${Xp}] external texture not ready \u2014 skipping pass (${B.fragment.externalReads.join(", ")})`),B.externalSkipLogged=!0);return}G=G.with(F)}G.withColorAttachment({view:D}).draw(3)}function C(B,D,G){if(p){for(let F of p.computeSteps){let V=F.getComputeNodes(D);V&&V.length&&r.dispatch(V)}G?.(),k(),P(p.finalPass,B)}}function k(){if(p)for(let B of p.rttPasses){let D=d.get(B.target.key);D&&P(B,z(D))}}function z(B){return e.unwrap(B.texture).createView()}function U(B){if(!(!B.fragment.textureLayout||B.fragment.reads.length===0)&&(B.textureBindGroup=v(B.fragment,p?.mediaResources),B.mediaReads&&B.mediaSnapshot&&p?.mediaResources))for(let D of B.mediaReads)B.mediaSnapshot.set(D,p.mediaResources[D].texture)}function L(B,D){let G=!1;for(let F of d.values())F.resize(B,D)&&(G=!0);if(!p)return G;if(p.size={width:B,height:D},!G)return!1;for(let F of p.computeSteps)F.bindInputs?.(V=>d.get(V)??p.mediaResources?.[V]);for(let F of p.rttPasses)U(F);return U(p.finalPass),!0}return{setComposition:w,render:C,repaintRtt:k,resize:L,get textureCount(){return u.size},get passCount(){return p?p.rttPasses.length+1:0},dispose(){for(let B of[...u])B.destroy();u.clear(),d.clear(),p=null}}}function Zfe(){return typeof navigator<"u"&&navigator.gpu?navigator.gpu.getPreferredCanvasFormat():"bgra8unorm"}function iq(e){return`${e}-srgb`}function Jfe(e){let t=new Set;function s(_,...v){return e.createTexture.call(e,_).$usage(...v)}let r,o,a,i,l={get linearClamp(){return r??=e.createSampler({magFilter:"linear",minFilter:"linear",mipmapFilter:"linear",addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge"})},get nearestClamp(){return o??=e.createSampler({magFilter:"nearest",minFilter:"nearest",addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge"})},get linearRepeat(){return a??=e.createSampler({magFilter:"linear",minFilter:"linear",mipmapFilter:"linear",addressModeU:"repeat",addressModeV:"repeat"})},get nearestRepeat(){return i??=e.createSampler({magFilter:"nearest",minFilter:"nearest",addressModeU:"repeat",addressModeV:"repeat"})}};function c(_,v,g,y,x){let w={texture:_,width:v,height:g,format:y,write(P){_.write(P)},unwrap(){return e.unwrap(_)},createSrgbView(){if(x)return e.unwrap(_).createView({format:iq(y)})},generateMipmaps(){_.generateMipmaps?.()},destroy(){t.has(w)&&(_.destroy(),t.delete(w))}};return t.add(w),w}function d(_){let{width:v,height:g,srgb:y=!1,mipLevelCount:x}=_,w=_.format??"rgba8unorm";return c(s({size:[v,g],format:w,...y?{viewFormats:[iq(w)]}:{},...x?{mipLevelCount:x}:{}},"sampled","render"),v,g,w,y)}function u(_){let{width:v,height:g,format:y,data:x}=_,w=c(s({size:[v,g],format:y},"sampled"),v,g,y,!1);return x&&w.write(x),w}function p(_){let v=_.format??"rgba16float",{mipLevelCount:g}=_,y=_.width,x=_.height;function w(C,k){return c(s({size:[C,k],format:v,...g?{mipLevelCount:g}:{}},"sampled","render"),C,k,v,!1)}let P=w(y,x);return{get texture(){return P.texture},get width(){return y},get height(){return x},format:v,write(C){P.write(C)},unwrap(){return P.unwrap()},createSrgbView(){return P.createSrgbView()},generateMipmaps(){P.generateMipmaps()},resize(C,k){return C===y&&k===x?!1:(P.destroy(),y=C,x=k,P=w(C,k),!0)},destroy(){P.destroy()}}}function f(_){let{layout:v,entryKey:g,getSource:y,staticEntries:x={}}=_,w=null;return{update(){let P=y();if(!P)return w=null,null;let C;try{C=e.device.importExternalTexture({source:P})}catch{return w=null,null}return w=e.createBindGroup(v,{...x,[g]:C}),w},get current(){return w},destroy(){w=null}}}return{samplers:l,createMediaTexture:d,createDataTexture:u,createRenderTexture:p,createExternalTextureBinding:f,get textureCount(){return t.size},destroy(){for(let _ of[...t])_.destroy();t.clear()}}}function e_e(e,t){let s=Q5(e)?.definition?.naturalSizeKey;if(!s)return null;if("fixed"in s)return s.fixed||null;let r=t[s.fromProp];return typeof r=="string"&&r?r:null}function t_e(e,t,s){if(!e||typeof e!="object")return null;let r=(i,l)=>!i||typeof i!="object"||typeof i.value!="number"?null:i.unit==="px"?i.value:i.value*l,o=r(e.width,t),a=r(e.height,s);return o!=null&&a!=null&&o>0&&a>0?{widthPx:o,heightPx:a}:null}function s_e(e,t,s){let{type:r,decl:o,props:a,boundingBox:i}=e;if(!(t>0)||!(s>0)||e.requiresChild)return null;if(o?.computeBounds){let u=o.computeBounds(a,t,s);return u.widthPx>0&&u.heightPx>0?{widthPx:u.widthPx,heightPx:u.heightPx}:null}let l=o?.propBindings;if(l?.width&&l?.height){let u=Ef(l.width,a[l.width.prop],t,s),p=Ef(l.height,a[l.height.prop],t,s);return u>0&&p>0?{widthPx:u,heightPx:p}:null}let c=t_e(i,t,s);if(c)return c;let d=e_e(r,a);if(d){let u=oU(d);if(u)return{widthPx:u.width,heightPx:u.height}}return null}function r_e(e,t){return e==null?0:typeof e=="number"?e:e.unit==="px"?e.value:e.value*t}function t6(e,t,s){return!e||e.mode!=="column"&&e.mode!=="row"?null:{mode:e.mode,gapPx:Math.max(0,r_e(e.gap,e.mode==="column"?s:t)),align:e.align??"center",anchor:e.anchor??"center",anchorOffsetX:e.anchorOffset?.x??0,anchorOffsetY:e.anchorOffset?.y??0}}var lq=e=>({ox:e.includes("left")?"start":e.includes("right")?"end":"center",oy:e.includes("top")?"start":e.includes("bottom")?"end":"center"}),zy=(e,t,s,r)=>e==="start"?r:e==="end"?s-t-r:(s-t)/2+r;function Ry(e,t){let s=0,r=0;for(let o of t){let a=e.mode==="column"?o.size.heightPx:o.size.widthPx,i=e.mode==="column"?o.size.widthPx:o.size.heightPx;s+=a,r=Math.max(r,i)}return t.length>1&&(s+=e.gapPx*(t.length-1)),e.mode==="column"?{widthPx:r,heightPx:s}:{widthPx:s,heightPx:r}}function o_e(e,t,s,r){let o=new Map;if(t.length===0)return o;let a=Ry(e,t),{ox:i,oy:l}=lq(e.anchor),c=zy(i,a.widthPx,s,e.anchorOffsetX),d=zy(l,a.heightPx,r,e.anchorOffsetY),u=(f,_)=>e.align==="start"?0:e.align==="end"?_-f:(_-f)/2,p=0;for(let f of t)if(e.mode==="column"){let _=c+u(f.size.widthPx,a.widthPx)+f.size.widthPx/2,v=d+p+f.size.heightPx/2;o.set(f.id,{centerXPx:_,centerYPx:v}),p+=f.size.heightPx+e.gapPx}else{let _=c+p+f.size.widthPx/2,v=d+u(f.size.heightPx,a.heightPx)+f.size.heightPx/2;o.set(f.id,{centerXPx:_,centerYPx:v}),p+=f.size.widthPx+e.gapPx}return o}function a_e(e,t,s){let r=t6(e.layout,t,s);if(r){let o=s6(e,t,s);return o.length===0?null:Ry(r,o)}return s_e({type:e.componentName,decl:e.decl,props:e.props,boundingBox:e.boundingBox,requiresChild:e.requiresChild,availableWidthPx:t},t,s)}function s6(e,t,s){let r=[];for(let o of e.children){if(o.visible===!1||o.absolute)continue;let a=a_e(o,t,s);a&&r.push({id:o.id,size:a,view:o})}return r}function n_e(e,t,s){if(!e.decl?.computeBounds)return{x:0,y:0};let r=e.decl.computeBounds(e.props,t,s),o=typeof e.props.center?.x=="number"?e.props.center.x:.5,a=typeof e.props.center?.y=="number"?e.props.center.y:.5;return{x:r.centerXPx-o*t,y:r.centerYPx-a*s}}function i_e(e,t,s,r,o,a,i,l){let c=t6(e.layout,o,a);if(c){cq(e,c,o,a,i,{centerXPx:s,centerYPx:r},l);return}let d=e.decl?.propBindings?.x?.prop??e.decl?.propBindings?.y?.prop;if(d){if(!e.positionDriven){let u=n_e(e,o,a);i.push({kind:"position",id:e.id,prop:d,value:{x:(s-u.x)/o,y:(r-u.y)/a}})}return}i.push({kind:"box",id:e.id,xPx:s-t.widthPx/2,yPx:r-t.heightPx/2,widthPx:t.widthPx,heightPx:t.heightPx})}function cq(e,t,s,r,o,a,i,l){let c=l??s6(e,s,r);if(c.length===0)return;let d=t;if(a){let p=Ry(t,c);d={...t,anchor:"top-left",anchorOffsetX:a.centerXPx-p.widthPx/2,anchorOffsetY:a.centerYPx-p.heightPx/2}}if(i){let p=Ry(d,c),{ox:f,oy:_}=lq(d.anchor);i.set(e.id,{leftPx:zy(f,p.widthPx,s,d.anchorOffsetX),topPx:zy(_,p.heightPx,r,d.anchorOffsetY),widthPx:p.widthPx,heightPx:p.heightPx})}let u=o_e(d,c,s,r);for(let p of c){let f=u.get(p.id);f&&i_e(p.view,p.size,f.centerXPx,f.centerYPx,s,r,o,i)}}function l_e(e,t,s,r){let o=[],a=i=>{let l=t6(i.layout,t,s);if(l){let c=s6(i,t,s);cq(i,l,t,s,o,void 0,r,c);let d=new Set(c.map(u=>u.id));for(let u of i.children)u.visible!==!1&&(d.has(u.id)||a(u));return}for(let c of i.children)c.visible!==!1&&a(c)};for(let i of e)i.visible!==!1&&a(i);return o}var c_e=class{frameTimesMs=[];frameTimesIndex=0;frameTimesCount=0;maxSamples=60;targetFrameTime=16.67;jankFrameCount=0;totalFrameCount=0;memorySnapshots=[];memorySnapshotIndex=0;maxMemorySnapshots=300;nodeCount=0;rttNodeCount=0;lastCpuTime=null;lastGpuTime=null;isRendering=!1;lastFrameTimestamp=0;frameIntervals=[];frameIntervalsIndex=0;frameIntervalsCount=0;pushToCircularBuffer(e,t,s,r,o){return e.length<o?(e.push(t),{index:e.length,count:e.length}):(e[s%o]=t,{index:s+1,count:o})}getBufferValues(e,t){return t<=e.length?e.slice(0,t):e}recordFrame(e){let t=this.pushToCircularBuffer(this.frameTimesMs,e,this.frameTimesIndex,this.frameTimesCount,this.maxSamples);this.frameTimesIndex=t.index,this.frameTimesCount=t.count,this.totalFrameCount++,e>this.targetFrameTime&&this.jankFrameCount++;let s=performance.now();if(this.lastFrameTimestamp>0){let r=s-this.lastFrameTimestamp,o=this.pushToCircularBuffer(this.frameIntervals,r,this.frameIntervalsIndex,this.frameIntervalsCount,this.maxSamples);this.frameIntervalsIndex=o.index,this.frameIntervalsCount=o.count}this.lastFrameTimestamp=s,this.recordMemorySnapshot()}recordCpuTime(e){this.lastCpuTime=e}recordGpuTime(e){this.lastGpuTime=e}updateNodeCounts(e,t){this.nodeCount=e,this.rttNodeCount=t}setRendering(e){this.isRendering=e}recordMemorySnapshot(){if(!performance.memory)return;let e=performance.now(),t=performance.memory.usedJSHeapSize;if(this.memorySnapshots.length<this.maxMemorySnapshots)this.memorySnapshots.push({time:e,bytes:t});else{let s=this.memorySnapshots[this.memorySnapshotIndex];s.time=e,s.bytes=t,this.memorySnapshotIndex=(this.memorySnapshotIndex+1)%this.maxMemorySnapshots}}calculateMemoryGrowthRate(){if(this.memorySnapshots.length<2)return null;let e=this.memorySnapshots.length,t=e<this.maxMemorySnapshots?0:this.memorySnapshotIndex,s=e<this.maxMemorySnapshots?e-1:(this.memorySnapshotIndex-1+e)%e,r=this.memorySnapshots[t],o=this.memorySnapshots[s],a=(o.time-r.time)/1e3;return a<=0?null:(o.bytes-r.bytes)/(1024*1024)/a}calculateStdDev(e){if(e.length===0)return 0;let t=e.reduce((r,o)=>r+o,0)/e.length,s=0;for(let r=0;r<e.length;r++){let o=e[r]-t;s+=o*o}return Math.sqrt(s/e.length)}sortBuffer=[];calculateP99(e){let t=e.length;if(t===0)return 0;for(;this.sortBuffer.length<t;)this.sortBuffer.push(0);for(let r=0;r<t;r++)this.sortBuffer[r]=e[r];for(let r=1;r<t;r++){let o=this.sortBuffer[r],a=r-1;for(;a>=0&&this.sortBuffer[a]>o;)this.sortBuffer[a+1]=this.sortBuffer[a],a--;this.sortBuffer[a+1]=o}let s=Math.floor(t*.99);return this.sortBuffer[Math.min(s,t-1)]}calculateComplexityScore(){return this.nodeCount+this.rttNodeCount*10}calculateIntensityScore(){let e=this.getBufferValues(this.frameTimesMs,this.frameTimesCount),t=e.length;if(t===0)return{score:0,label:"N/A"};let s=e.reduce((u,p)=>u+p,0)/t,r=Math.min(s/16.67*100,100),o=this.calculateComplexityScore(),a=Math.min(o/100*100,100),i=0;this.lastGpuTime!==null&&(i=Math.min(this.lastGpuTime/16.67*100,100));let l=this.lastGpuTime!==null?{frame:.4,gpu:.4,complexity:.2}:{frame:.7,gpu:0,complexity:.3},c=Math.round(r*l.frame+i*l.gpu+a*l.complexity),d;return c<=20?d="Very Light":c<=40?d="Light":c<=60?d="Medium":c<=80?d="Heavy":d="Very Heavy",{score:Math.min(c,100),label:d}}getStats(e){let t=this.getBufferValues(this.frameTimesMs,this.frameTimesCount),s=this.getBufferValues(this.frameIntervals,this.frameIntervalsCount),r=t.length,o=s.length>0?1e3/(s.reduce((P,C)=>P+C,0)/s.length):0,a=r>0?t.reduce((P,C)=>P+C,0)/r:0,i=r>0?Math.min(...t):0,l=r>0?Math.max(...t):0,c=this.calculateP99(t),d=this.calculateStdDev(t),u=this.totalFrameCount>0?this.jankFrameCount/this.totalFrameCount*100:0,p=performance.memory,f=p?p.usedJSHeapSize/(1024*1024):null,_=this.calculateMemoryGrowthRate(),v=a>0?a/this.targetFrameTime*100:0,g=e?.render?.calls??null,y=e?.programs?.length??null,x=e?.memory?.textures??null,w=this.calculateIntensityScore();return{fps:Math.round(o),avgFrameTime:Math.round(a*100)/100,minFrameTime:Math.round(i*100)/100,maxFrameTime:Math.round(l*100)/100,p99FrameTime:Math.round(c*100)/100,stdDevFrameTime:Math.round(d*100)/100,jankCount:this.jankFrameCount,jankPercent:Math.round(u*10)/10,nodeCount:this.nodeCount,rttNodeCount:this.rttNodeCount,complexityScore:this.calculateComplexityScore(),memoryUsedMB:f!==null?Math.round(f*100)/100:null,memoryGrowthRate:_!==null?Math.round(_*1e3)/1e3:null,cpuTime:this.lastCpuTime!==null?Math.round(this.lastCpuTime*100)/100:null,gpuTime:this.lastGpuTime!==null?Math.round(this.lastGpuTime*100)/100:null,budgetUsed:Math.round(v*10)/10,drawCalls:g,shaderPrograms:y,textureCount:x,intensityScore:w.score,intensityLabel:w.label,isRendering:this.isRendering}}reset(){this.frameTimesMs.length=0,this.frameTimesIndex=0,this.frameTimesCount=0,this.frameIntervals.length=0,this.frameIntervalsIndex=0,this.frameIntervalsCount=0,this.lastFrameTimestamp=0,this.jankFrameCount=0,this.totalFrameCount=0,this.memorySnapshots.length=0,this.memorySnapshotIndex=0,this.sortBuffer.length=0,this.lastCpuTime=null,this.lastGpuTime=null}},d_e=32,u_e=5,p_e=(()=>{let e=0,t=new Set,s=(d,u)=>{t.forEach(p=>{try{p[d](u)}catch(f){gr("[Shaders] Error in pointer handler:",f)}})},r=d=>s("onMouseMove",d),o=d=>s("onTouchMove",d),a=d=>s("onMouseDown",d),i=d=>s("onTouchStart",d),l=()=>s("onMouseUp"),c=()=>s("onTouchEnd");return{register(d){return t.add(d),e++,e===1&&typeof window<"u"&&(window.addEventListener("mousemove",r),window.addEventListener("touchmove",o),window.addEventListener("mousedown",a,!0),window.addEventListener("touchstart",i,!0),window.addEventListener("mouseup",l,!0),window.addEventListener("touchend",c,!0)),()=>{t.delete(d),e--,e===0&&typeof window<"u"&&(window.removeEventListener("mousemove",r),window.removeEventListener("touchmove",o),window.removeEventListener("mousedown",a,!0),window.removeEventListener("touchstart",i,!0),window.removeEventListener("mouseup",l,!0),window.removeEventListener("touchend",c,!0))}}}})();function m_e(e){if(!e)return!1;let t=e;if(typeof e=="string")try{t=JSON.parse(e)}catch{return!1}if(!t||typeof t!="object")return!1;for(let s in t){let r=t[s];if(r&&typeof r=="object"&&r.type==="mouse")return!0}return!1}function dq(){let e=null,t=null,s=null,r=null,o=null,a=null,i=!1,l=!1,c=!1,d=null,u=new Map,p=null,f=new Map,_=[],v=[],g=Kfe({maxSize:4,dispose:H=>Zp(H)}),y=new Set,x=null,w=null,P=!0,C=0,k=0,z=0,U=0,L=1,B=8192,D=0,G=0,F=!1,V=()=>z||C||1,W=()=>U||k||1,q=!0,$=!1,Q=!1,ee=0,re=0,ne=0,ce=null,oe=null,we=-10,de=-10,xe=!1,Te=!1,Oe=null,Ee=!1,Re=null,Ne=null,ke=null,Ce=null,Se=null,$e=null,We=!1,ut="p3-linear",yt="linear",Qe=!1,lt=null,vt=null,wt=!1,St=!1,kt=null,It=!1,Yt=null,Qt=null,ns=!1,hs=null,rs=null,Ss=0,gs=0,fs=new c_e,ys={deltaTime:0,pointer:{x:-10,y:-10,seen:!1},pointerActive:!1,dimensions:{width:0,height:0}},Js=xk(()=>am()),wr=H=>H.replace(/[^a-zA-Z0-9_]/g,"_"),ir=H=>{let Z=f.get(H);if(!Z)return[];let se=[];for(let be of Z){let me=u.get(be);me&&se.push(me)}return se},Dr=H=>{let Z=wr(H);for(let[se,be]of u)if(be.metadata.id===Z)return se;return null},Mr=(H,Z)=>{if(Z==="center")return;let se=H.boundingBoxDeclaration;if(!se)return;let be={};for(let[me,Pe]of Object.entries(H.uniforms))be[me]=Pe._rawDimensional!==void 0?Pe._rawDimensional:Pe.value;return fe(H,be.shapeSdfUrl),m3(se,be,V(),W())},io=new WeakMap,fe=(H,Z)=>{if(typeof Z!="string"||!Z||vk(Z))return;let se=io.get(H)??new Set;io.set(H,se),!se.has(Z)&&(se.add(Z),mh(Z,()=>{se.delete(Z),u.get(H.id)===H&&(Ye(H),pr()&&Us(),Ua())}))},Ye=H=>{let Z=H.boundingBoxDeclaration,se=H.extraDimProps,be=Xu(Z,se);if(!be)return;let me=H.uniforms.origin?.value??"center",Pe=Mr(H,me),Ke=[...be.positionProps,...be.sizeProps.keys()];for(let bt of Ke){let Pt=H.uniforms[bt];if(!Pt||Pt._rawDimensional===void 0)continue;let $t=Df(Z,bt,Pt._rawDimensional,me,V(),W(),se,Pe);Pt.value=$t,al(H,bt,$t)}},De=(H,Z,se)=>{if(typeof se=="number")return se;let be=H.uniforms.origin?.value??"center",me=Df(H.boundingBoxDeclaration,Z,se,be,V(),W(),H.extraDimProps);return typeof me=="number"?me:se?.value??0},ze=()=>{let{width:H,height:Z}=nl();return H/Math.max(1,Z)},Ge=H=>{let Z=H.metadata.transform;return{offsetX:Z?.offsetX??0,offsetY:Z?.offsetY??0,rotation:Z?.rotation??0,scale:Z?.scale??1,anchorX:Z?.anchorX??.5,anchorY:Z?.anchorY??.5,aspectRatio:ze()}},et=H=>{let Z=H.metadata.boundingBox;if(!Z)return null;let se=Ux(Z,V(),W());return{centerX:se.centerX,centerY:se.centerY,halfWidth:se.halfWidthUV,halfHeight:se.halfHeightUV,cornerRadius:se.cornerRadiusUV,rotation:se.rotation,aspectRatio:ze()}},_t=H=>!!H.metadata.boundingBox&&!!H.boundingBoxDeclaration&&!Hv(H.metadata.boundingBox),zt=H=>{let Z=H.boundingBoxDeclaration;if(!Z||!H.uniforms||!Z.computeBounds&&!Z.propBindings)return null;let se={};for(let[Pt,$t]of Object.entries(H.uniforms))se[Pt]=$t._rawDimensional!==void 0?$t._rawDimensional:$t.value;let be=m3(Z,se,V(),W());if(be.hwx<=0&&be.hhy<=0)return null;let me=.5,Pe=.5,Ke=Z.propBindings?.x?.prop??Z.propBindings?.y?.prop,bt=Ke?H.uniforms[Ke]?.value:void 0;if(bt&&typeof bt.x=="number"&&typeof bt.y=="number"&&(me=bt.x,Pe=bt.y),Ke){let Pt=H.metadata.maps?.[Ke];if(Pt?.type==="mouse-position"){let $t=H.mouseDriverState[Ke];$t&&(me=$t.liveX??(typeof Pt.x=="number"?Pt.x:$t.currentX),Pe=$t.liveY??(typeof Pt.y=="number"?Pt.y:$t.currentY))}}return{centerX:me,centerY:Pe,halfWidth:be.hwx,halfHeight:be.hhy}},Lt=H=>{if(!H.definition.wantsBoundsParams)return null;let Z=ir(H.id).sort((se,be)=>se.metadata.renderOrder-be.metadata.renderOrder);for(let se of Z){if(se.metadata.visible===!1)continue;if(_t(se))return null;let be=zt(se);if(be)return be}return null},Ut=()=>{for(let H of u.values()){if(!H.definition.wantsBoundsParams)continue;let Z=Lt(H);Z&&(lr(H,"_childBounds_centerX",Z.centerX),lr(H,"_childBounds_centerY",Z.centerY),lr(H,"_childBounds_halfWidth",Z.halfWidth),lr(H,"_childBounds_halfHeight",Z.halfHeight))}},Hs=!1,Us=()=>{Hs=!0,Ua()},pr=()=>{for(let H of u.values()){let Z=H.metadata.flow?.mode;if(Z==="column"||Z==="row")return!0}return!1},go=H=>{let Z={};for(let[Pe,Ke]of Object.entries(H.uniforms))Z[Pe]=Ke._rawDimensional!==void 0?Ke._rawDimensional:Ke.value;let se=H.boundingBoxDeclaration?.propBindings?.x?.prop??H.boundingBoxDeclaration?.propBindings?.y?.prop,be=se?H.uniforms[se]?.value:void 0,me=!!(se&&(be?.type==="mouse-position"||H.metadata.maps?.[se]));return{id:H.id,componentName:H.componentName,visible:H.metadata.visible!==!1,absolute:H.metadata.absolute===!0,requiresChild:H.requiresChild,layout:H.metadata.flow,decl:H.boundingBoxDeclaration,props:Z,boundingBox:H.metadata.boundingBox,positionDriven:me,children:ir(H.id).sort((Pe,Ke)=>Pe.metadata.renderOrder-Ke.metadata.renderOrder).map(go)}},lo=()=>{if(!pr()){Hs=!1;return}let H=V(),Z=W();if(H<=1||Z<=1)return;Hs=!1;let se=[];for(let me of u.values())me.parentId===null&&se.push(go(me));let be=l_e(se,H,Z);for(let me of be){let Pe=u.get(me.id);if(Pe)if(me.kind==="position"){let Ke=Pe.uniforms[me.prop];if(!Ke)continue;let bt=Ke.value,Pt=bt&&typeof bt=="object"?{...bt,x:me.value.x,y:me.value.y}:me.value;Ke.value=Pt,al(Pe,me.prop,Pt)}else{let Ke=_t(Pe);if(Pe.metadata.boundingBox={x:{value:me.xPx,unit:"px"},y:{value:me.yPx,unit:"px"},width:{value:me.widthPx,unit:"px"},height:{value:me.heightPx,unit:"px"},origin:"top-left",rotation:Pe.metadata.boundingBox?.rotation??0,...Pe.metadata.boundingBox?.cornerRadius?{cornerRadius:Pe.metadata.boundingBox.cornerRadius}:{},...Pe.metadata.boundingBox?.lockAspect!==void 0?{lockAspect:Pe.metadata.boundingBox.lockAspect}:{}},!Ke&&_t(Pe))vi();else{let bt=et(Pe);if(bt)for(let[Pt,$t]of Object.entries(bt))lr(Pe,`_bbox_${Pt}`,$t)}}}},js=()=>{Hs&&lo()},La=null,da=()=>{pr()&&Us()},Hn=()=>{La||(La=aU(()=>{pr()&&Us()})),typeof document<"u"&&document.fonts?.addEventListener&&document.fonts.addEventListener("loadingdone",da)};Hn();let jn=H=>fl(H.metadata.transform),_i=(H,Z,se)=>{let be=H.mapValues[Z]??{inputMin:0,inputMax:1,outputMin:0,outputMax:1,curve:0};if(se.type==="map"){let me=se;be.inputMin=me.inputMin,be.inputMax=me.inputMax,be.outputMin=De(H,Z,me.outputMin),be.outputMax=De(H,Z,me.outputMax),be.curve=me.curve??0}else if(se.type==="mouse"){let me=se;be.outputMin=De(H,Z,me.outputMin),be.outputMax=De(H,Z,me.outputMax),be.curve=me.curve??0}else if(se.type==="auto-animate"){let me=se;be.outputMin=De(H,Z,me.outputMin),be.outputMax=De(H,Z,me.outputMax)}return H.mapValues[Z]=be,be},Hp=(H,Z,se)=>{let be=H.mouseDriverState[Z];if(be)return be;if(se.type==="mouse-position"){let me=se.x===void 0||se.x==="mouse",Pe=se.y===void 0||se.y==="mouse";be={currentX:me?we:se.x,currentY:Pe?de:se.y,velocityX:0,velocityY:0,pointerSnapped:Te}}else be={currentX:Math.max(.001,se.axis==="x"?we:de),currentY:0,velocityX:0,velocityY:0,pointerSnapped:Te};return H.mouseDriverState[Z]=be,be},jp=H=>{let Z=H.metadata.maps;if(Z)for(let[se,be]of Object.entries(Z))se in H.uniforms&&(be.type==="map"?_i(H,se,be):be.type==="mouse-position"?Hp(H,se,be):be.type==="mouse"?(Hp(H,se,be),_i(H,se,be)):be.type==="auto-animate"&&(H.autoAnimateState[se]||(H.autoAnimateState[se]={}),_i(H,se,be)))},tu=H=>{let Z=H.definition.animatedTime;return(Z?H.uniforms[Z.speed]:void 0)??H},Kp=(H,Z)=>H.uniforms[Z]??H,N_=H=>{let Z=[];for(let[me,Pe]of Object.entries(H.uniforms))Z.push({name:me,initial:Pe.value,transform:Pe.transform,cpu:Pe.cpu,schema:Pe.schema});if(Z.push({name:"_opacity",schema:n,initial:H.metadata.opacity??1}),H.definition.animatedTime&&Z.push({name:"_animTime",schema:n,initial:Jd(tu(H)).value}),H.definition.extraAnimatedTimes)for(let[me,Pe]of Object.entries(H.definition.extraAnimatedTimes))Z.push({name:`_animTime_${me}`,schema:n,initial:Jd(Kp(H,Pe)).value});let se=H.definition.extraFields;if(se)for(let[me,Pe]of Object.entries(se))Z.push({name:me,schema:Pe.schema,initial:Pe.initial});if(jn(H)){let me=Ge(H);for(let[Pe,Ke]of Object.entries(me))Z.push({name:`_xform_${Pe}`,schema:n,initial:Ke})}if(_t(H)){let me=et(H);if(me)for(let[Pe,Ke]of Object.entries(me))Z.push({name:`_bbox_${Pe}`,schema:n,initial:Ke})}if(H.definition.wantsBoundsParams){let me=Lt(H)??{centerX:.5,centerY:.5,halfWidth:.5,halfHeight:.5};for(let[Pe,Ke]of Object.entries(me))Z.push({name:`_childBounds_${Pe}`,schema:n,initial:Ke})}let be=H.metadata.maps;if(be){jp(H);for(let[me,Pe]of Object.entries(be))if(me in H.uniforms){if(Pe.type==="map"){let Ke=H.mapValues[me];Z.push({name:`_map_${me}_inputMin`,schema:n,initial:Ke.inputMin}),Z.push({name:`_map_${me}_inputMax`,schema:n,initial:Ke.inputMax}),Z.push({name:`_map_${me}_outputMin`,schema:n,initial:Ke.outputMin}),Z.push({name:`_map_${me}_outputMax`,schema:n,initial:Ke.outputMax}),Z.push({name:`_map_${me}_curve`,schema:n,initial:Ke.curve})}else if(Pe.type==="mouse-position"){let Ke=H.mouseDriverState[me];Z.push({name:`_smoothed_${me}`,schema:m,initial:[Ke.currentX,1-Ke.currentY]})}else if(Pe.type==="mouse"){let Ke=H.mapValues[me];Z.push({name:`_smoothed_${me}`,schema:n,initial:Ke.outputMin})}else if(Pe.type==="auto-animate"){let Ke=H.mapValues[me];Z.push({name:`_smoothed_${me}`,schema:n,initial:Ke.outputMin})}}}return Z},al=(H,Z,se)=>{let be=H._liveHandles?.[Z];be&&(lt?.(ut),pM(be,se))},lr=(H,Z,se)=>{let be=H._liveHandles?.[Z];be instanceof ai&&(be.value=se)},$_=(H,Z,se)=>{let be=H._liveHandles?.[Z];be instanceof ai?be.value=se:be instanceof Wm&&Array.isArray(se)&&(be.array=se)},X_=H=>{for(let Z of Object.values(H.uniforms))if(Z.transform===st){let se=Z.value;if(typeof se=="string")return st(se);if(typeof se=="number")return se}return 0},H_=H=>{if(!H.uniforms.convertedColorsArray)return;let Z=null;for(let Pe of Object.values(H.uniforms))if(Pe.transform===yc){Z=Pe.value??null;break}let se=r3(Z,Rf),be=o3(se.colors,se.stopCount,X_(H)),me=(Pe,Ke)=>{let bt=H.uniforms[Pe];bt&&(bt.value=Ke),al(H,Pe,Ke)};me("colorsArray",se.colors),me("positionsArray",se.positions),me("convertedColorsArray",be),me("stopCount",se.stopCount)},Qp=(H,Z)=>{let se=H.uniforms[Z],be=se?._listSpec;if(!se||!be)return;let me=se._rawList,Pe=new Set,Ke=l3(me,be,{color:Rf,drivenPosition:($t,er,Tr)=>{let mr=IE(Z,$t,er);Pe.add(mr);let ts=Hp(H,mr,Tr);return ts.liveX!==void 0&&ts.liveY!==void 0?{x:ts.liveX,y:1-ts.liveY}:void 0}});for(let $t of Object.keys(H.mouseDriverState)){let er=i3($t);er&&er.prop===Z&&!Pe.has($t)&&delete H.mouseDriverState[$t]}se.value=Ke,al(H,Z,Ke);let bt=c3(Ke,be),Pt=($t,er)=>{let Tr=H.uniforms[$t];Tr&&(Tr.value=er),al(H,$t,er)};for(let[$t,er]of Object.entries(bt.fields))Pt(Bf(Z,$t),er);Pt(zf(Z),bt.count)},Dy=(H,Z)=>{let se=H.metadata.maps?.[Z];if(se)return se;let be=i3(Z);if(!be)return;let me=H.uniforms[be.prop]?._rawList,Pe=(Array.isArray(me)?me[be.index]:void 0)?.[be.field];return ah(Pe)?Pe:void 0},Ly=H=>Object.values(H.uniforms).some(Z=>Z._listSpec&&d3(Z._rawList,Z._listSpec)),j_=H=>{if(lr(H,"_opacity",H.metadata.opacity??1),H.definition.animatedTime&&lr(H,"_animTime",Jd(tu(H)).value),H.definition.extraAnimatedTimes)for(let[se,be]of Object.entries(H.definition.extraAnimatedTimes))lr(H,`_animTime_${se}`,Jd(Kp(H,be)).value);if(jn(H))for(let[se,be]of Object.entries(Ge(H)))lr(H,`_xform_${se}`,be);if(_t(H)){let se=et(H);if(se)for(let[be,me]of Object.entries(se))lr(H,`_bbox_${be}`,me)}let Z=H.metadata.maps;if(Z){for(let[se,be]of Object.entries(Z))if(be.type==="map"&&H.mapValues[se]){let me=H.mapValues[se];lr(H,`_map_${se}_inputMin`,me.inputMin),lr(H,`_map_${se}_inputMax`,me.inputMax),lr(H,`_map_${se}_outputMin`,me.outputMin),lr(H,`_map_${se}_outputMax`,me.outputMax),lr(H,`_map_${se}_curve`,me.curve)}}},Uy=(H,Z)=>{let se={};for(let be of Object.keys(H.uniforms)){let me=Z[be];me&&(se[be]=me)}return se},Oy=H=>{let Z={};for(let[se,be]of Object.entries(H.uniforms))Z[se]={accessorPath:"",cpu:!!be.cpu,value:be.value};return Z},Gy=(H,Z)=>({id:H.id,customId:H.metadata.id,componentName:H.componentName,parentId:H.parentId,definition:H.definition,metadata:H.metadata,handles:Z,domCanvas:H.domCanvas}),K_=(H,Z)=>{let se=new Map,be=Pe=>Gy(Pe,H&&Z?Uy(Pe,Z.get(Pe.id)??{}):Oy(Pe)),me=Pe=>{let Ke=se.get(Pe);if(Ke)return Ke;let bt=u.get(Pe);if(!bt)return;let Pt=be(bt);return se.set(Pe,Pt),Pt};return{rootId:p,getNode:me,getChildren:Pe=>ir(Pe).map(Ke=>me(Ke.id)),resolveCustomId:Pe=>Dr(Pe),store:{gpuAccessor:(Pe,Ke)=>H?H.gpuAccessor(Pe,Ke):"",layout:H?.layout}}},Q_=()=>({toneMapping:yt,flipY:!1,premultiplyAlpha:!0,canvas:a??void 0,dimensions:nl(),gpu:t?{device:t.device,root:t}:void 0,writeExtraField:(H,Z,se)=>{let be=u.get(H);be&&$_(be,Z,se)},createMediaTexture:H=>{if(!r)throw new Error("[gpu] createMediaTexture before init");return r.createMediaTexture(H)},createDataTexture:H=>{if(!r)throw new Error("[gpu] createDataTexture before init");return r.createDataTexture(H)},resolveMapWindow:(H,Z)=>{let se=u.get(H),be=se?.metadata.maps?.[Z];if(!se||!be||be.type!=="map")return;let me=_i(se,Z,be);return{inputMin:me.inputMin,inputMax:me.inputMax,outputMin:me.outputMin,outputMax:me.outputMax,curve:me.curve}},resolveDriverCpuValue:(H,Z)=>{let se=u.get(H);if(!se)return;if(Z==="_animTime"||Z.startsWith("_animTime_")){let me=se._liveHandles?.[Z];return me instanceof ai?me.value:void 0}let be=se.metadata.maps?.[Z];if(be){if(be.type==="mouse-position"){let me=se.mouseDriverState[Z];return!me||me.liveX===void 0||me.liveY===void 0?void 0:{x:me.liveX,y:1-me.liveY}}if(be.type==="mouse"||be.type==="auto-animate"){let me=se._liveHandles?.[`_smoothed_${Z}`];return me instanceof ai?me.value:void 0}}}}),Fy=()=>{let H=[];for(let[Z,se]of u){let be=se.metadata;H.push(`aopac:${Z}:${(be.opacity??1)<1}`);let me=se.uniforms.stopCount?.value;typeof me=="number"&&H.push(`stops:${Z}:${me>1?me:0}`);for(let[Pe,Ke]of Object.entries(se.uniforms)){if(!Ke.compileTimeWhen)continue;let bt=Ke._lastCompiledValue;typeof bt!="number"&&typeof bt!="boolean"||H.push(`ctw:${Z}:${Pe}:${String(bt)}`)}if(be.maps){let Pe=Object.entries(be.maps).sort(([Ke],[bt])=>Ke<bt?-1:Ke>bt?1:0).map(([Ke,bt])=>{let Pt=bt;return`${Ke}=${Pt.type}:${Pt.source??""}:${Pt.channel??""}:${Pt.axis??""}`}).join(",");H.push(`mapfp:${Z}:${Pe}`)}}return H},Z_=()=>p?jfe([...mE(K_(null,null),Q_()),...Fy()]):null,nl=()=>({width:Math.max(1,Math.round(C*L)),height:Math.max(1,Math.round(k*L))}),Iy=H=>{let Z={};for(let se of H.textures)se.kind!=="rtt"&&se.resource&&(Z[se.key]=se.resource);return Z},J_=H=>{if(!t||!r||!o)throw new Error("[gpu] buildComposition before init");let Z=uM(t,{systemSchema:Hfe}),se=new Map;for(let[Ke,bt]of u)se.set(Ke,Z.defineNode(Ke,N_(bt)));Z.defineSystem(),Z.finalize();let be=pE(K_(Z,se),Q_()),me=Qfe(t,{textureManager:r,dispatcher:o});me.setComposition(be,Z.bindGroup,nl(),Iy(be));let Pe={hash:H,store:Z,ir:be,passManager:me,handlesById:se,fresh:!0};return y.add(Pe),Pe},Zp=H=>{try{for(let Z of H.ir.onCleanup)Z()}catch(Z){gr("[gpu] composition onCleanup error:",Z)}try{H.passManager.dispose()}catch(Z){gr("[gpu] passManager dispose error:",Z)}try{H.store.destroy()}catch(Z){gr("[gpu] store destroy error:",Z)}y.delete(H),x===H&&(x=null)},Yy=H=>{let Z=!1;for(let[se,be]of H.handlesById){let me=u.get(se);me&&me._liveHandles!==be&&(me._liveHandles=be,Z=!0)}if(!(H===x&&!Z)){if(!H.fresh){for(let se of u.values()){for(let[be,me]of Object.entries(se.uniforms))al(se,be,me.value);jp(se),j_(se)}H.store.writeAll()}H.fresh=!1,x=H,!wt&&H.ir.composedNodeIds.size>0&&(St=!0)}},vi=()=>{P=!0,pr()&&(Hs=!0),Ua()},Ua=()=>{Yt||Js.running||oe===null&&typeof requestAnimationFrame=="function"&&(oe=requestAnimationFrame(()=>{oe=null,am()}))},Jp=(H,Z,se,be,me={},Pe,Ke)=>{if(Yt)return;if(Z===null){let ts=_.findIndex(Fo=>Fo.id===H);if(ts!==-1){_.splice(ts,1),v=v.filter(Fo=>Fo.id!==H);return}em(H);return}if(!Pe){console.error(`[gpu] registerNode("${H}") requires a componentDefinition`);return}if(!c){let ts=_.findIndex(Kn=>Kn.id===H),Fo={id:H,definition:Pe,parentId:se,metadata:be,uniforms:me,domCanvas:Ke};ts!==-1?(_[ts]=Fo,v=v.filter(Kn=>Kn.id!==H)):_.push(Fo);return}let bt=0;if(se!==null){let ts=f.get(se);if(ts&&ts.size>0){let Fo=0;for(let Kn of ts){let Oa=u.get(Kn);Oa&&Oa.metadata.renderOrder>Fo&&(Fo=Oa.metadata.renderOrder)}bt=Fo+1}}let Pt={blendMode:be?.blendMode||"normal",opacity:be?.opacity,visible:be?.visible!==!1,id:be?.id?wr(be.id):be?.id,mask:be?.mask,maps:be?.maps,renderOrder:be?.renderOrder!==void 0?be.renderOrder:bt,transform:be?.transform,boundingBox:be?.boundingBox,flow:be?.flow,absolute:be?.absolute},$t=Pe.boundingBoxDeclaration,er=Pe.props?p3(Pe.props):void 0,Tr={id:H,componentName:Pe.name||"Unknown",parentId:se,definition:Pe,metadata:Pt,uniforms:me,domCanvas:Ke,requiresRTT:!!Pe.requiresRTT,requiresChild:!!Pe.requiresChild,blendWithChildren:!!Pe.blendWithChildren,acceptsUVContext:!!Pe.acceptsUVContext,providesUVContextViaCompute:!!Pe.providesUVContextViaCompute,usesPointer:!!Pe.usesPointer,hasUvRemap:!!Pe.uvRemap,boundingBoxDeclaration:$t,wantsBoundsParams:!!Pe.wantsBoundsParams,extraDimProps:er,mouseDriverState:{},autoAnimateState:{},mapValues:{},_liveHandles:null};if($t||er){let ts=Xu($t,er);if(ts){let Fo=me.origin?.value??"center",Kn=Mr(Tr,Fo);for(let Oa of[...ts.positionProps,...ts.sizeProps.keys()]){let ha=me[Oa];ha&&(ha._rawDimensional===void 0&&(ha._rawDimensional=ha.value),ha.value=Df($t,Oa,ha._rawDimensional,Fo,V(),W(),er,Kn))}}}for(let ts of Object.values(me))ts.compileTimeWhen&&ts._lastCompiledValue===void 0&&(ts._lastCompiledValue=ts.value);u.set(H,Tr),se===null&&(p=H);let mr=f.get(se)||new Set;mr.add(H),f.set(se,mr),nm(),vi(),pr()&&Us()},e1=H=>{_.some(Z=>Z.id===H.id)&&v.push(H)},su=(H,Z,se)=>{let be=u.get(H);if(!be){e1({id:H,kind:"uniform",name:Z,value:se});return}let me=be.uniforms[Z];if(!me)return;let Pe=be.boundingBoxDeclaration,Ke=be.extraDimProps;if((Pe||Ke)&&f3(Pe,Z,Ke)){me._rawDimensional=se;let bt=be.uniforms.origin?.value??"center",Pt=Mr(be,bt);se=Df(Pe,Z,se,bt,V(),W(),Ke,Pt)}if(me.transform===wd){me._rawList=se,Qp(be,Z),nm(),Ua();return}if(me.value=se,al(be,Z,se),(me.transform===yc||me.transform===st)&&H_(be),Z==="origin"&&Pe)Ye(be);else if(Pe&&(be.uniforms.origin?.value??"center")!=="center"){let bt=Xu(Pe,Ke),Pt=!!Pe.computeBounds||(bt?.sizeProps.has(Z)??!1),$t=bt?.positionProps.has(Z)??!1;Pt&&!$t&&Ye(be)}if(Z==="shape"&&nm(),pr()&&Us(),me.compileTime){vi();return}if(me.compileTimeWhen){let bt=me._lastCompiledValue;if(me.compileTimeWhen(bt,se)){me._lastCompiledValue=se,vi();return}}Ua()},t1=(H,Z)=>{let se=u.get(H);if(!se){e1({id:H,kind:"metadata",metadata:Z});return}let be=!1;if(Z.blendMode!==void 0&&se.metadata.blendMode!==Z.blendMode&&(se.metadata.blendMode=Z.blendMode,be=!0),Z.opacity!==void 0&&se.metadata.opacity!==Z.opacity){let me=se.metadata.opacity??1,Pe=Z.opacity;se.metadata.opacity=Pe,lr(se,"_opacity",Pe),me>=1!=Pe>=1&&(be=!0)}if(Z.renderOrder!==void 0&&se.metadata.renderOrder!==Z.renderOrder&&(se.metadata.renderOrder=Z.renderOrder,be=!0),"visible"in Z){let me=Z.visible!==!1;se.metadata.visible!==me&&(se.metadata.visible=me,be=!0)}if(Z.id!==void 0){let me=wr(Z.id);se.metadata.id!==me&&(se.metadata.id=me,be=!0)}if("mask"in Z&&(se.metadata.mask?.source!==Z.mask?.source||se.metadata.mask?.type!==Z.mask?.type)&&(se.metadata.mask=Z.mask,be=!0),"maps"in Z&&JSON.stringify(se.metadata.maps)!==JSON.stringify(Z.maps)){let me=se.metadata.maps,Pe=Z.maps;if(se.metadata.maps=Pe,nm(),(()=>{if(!me||!Pe)return!0;let Ke=Object.keys(me),bt=Object.keys(Pe);if(Ke.length!==bt.length||!Ke.every(Pt=>Pt in Pe))return!0;for(let Pt of bt){let $t=me[Pt],er=Pe[Pt];if($t.type!==er.type)return!0;if(er.type==="map"){let Tr=$t,mr=er;if(Tr.source!==mr.source||Tr.channel!==mr.channel)return!0}else if(er.type==="mouse"&&$t.axis!==er.axis)return!0}return!1})()){if(me&&Pe)for(let Ke of Object.keys(me))Ke in Pe&&me[Ke].type!==Pe[Ke].type&&(delete se.mouseDriverState[Ke],delete se.autoAnimateState[Ke],delete se.mapValues[Ke]);be=!0}else if(Pe)for(let[Ke,bt]of Object.entries(Pe)){let Pt=_i(se,Ke,bt);bt.type==="map"&&(lr(se,`_map_${Ke}_inputMin`,Pt.inputMin),lr(se,`_map_${Ke}_inputMax`,Pt.inputMax),lr(se,`_map_${Ke}_outputMin`,Pt.outputMin),lr(se,`_map_${Ke}_outputMax`,Pt.outputMax),lr(se,`_map_${Ke}_curve`,Pt.curve))}}if(Z.transform!==void 0){let me=se.metadata.transform,Pe={offsetX:Z.transform.offsetX??me?.offsetX??0,offsetY:Z.transform.offsetY??me?.offsetY??0,rotation:Z.transform.rotation??me?.rotation??0,scale:Z.transform.scale??me?.scale??1,anchorX:Z.transform.anchorX??me?.anchorX??.5,anchorY:Z.transform.anchorY??me?.anchorY??.5,edges:Z.transform.edges??me?.edges??"transparent"},Ke=jn(se);se.metadata.transform=Pe;let bt=fl(Pe);if(Ke!==bt||me&&me.edges!==Pe.edges)be=!0;else if(bt)for(let[Pt,$t]of Object.entries(Ge(se)))lr(se,`_xform_${Pt}`,$t)}if(Z.boundingBox!==void 0&&Z.boundingBox!==null&&se.boundingBoxDeclaration!==void 0){let me=_t(se);se.metadata.boundingBox=Z.boundingBox;let Pe=_t(se);if(me!==Pe)be=!0;else if(Pe){let Ke=et(se);if(Ke)for(let[bt,Pt]of Object.entries(Ke))lr(se,`_bbox_${bt}`,Pt)}}else Z.boundingBox===null&&se.metadata.boundingBox!==void 0&&(se.metadata.boundingBox=void 0,be=!0);if("flow"in Z&&JSON.stringify(se.metadata.flow)!==JSON.stringify(Z.flow)){let me=se.metadata.flow?.mode==="column"||se.metadata.flow?.mode==="row";se.metadata.flow=Z.flow??void 0;let Pe=se.metadata.flow?.mode==="column"||se.metadata.flow?.mode==="row";if(me&&!Pe){let Ke=bt=>{for(let Pt of ir(bt))Ye(Pt),Ke(Pt.id)};Ke(H)}Us()}"absolute"in Z&&se.metadata.absolute!==Z.absolute&&(se.metadata.absolute=Z.absolute,Z.absolute&&Ye(se),Us()),pr()&&Us(),be?vi():Ua()},em=H=>{let Z=u.get(H);if(!Z)return;for(let be of ir(H))em(be.id);p===H&&(p=null);let se=f.get(Z.parentId);se&&(se.delete(H),se.size===0&&f.delete(Z.parentId)),u.delete(H),nm(),vi(),pr()&&Us()},s1=()=>{let H=ys.deltaTime;ne=gk(ce,ne,H,performance.now());for(let Z of u.values()){let se=Z.metadata.maps??{};for(let be in Z.mouseDriverState){let me=Z.mouseDriverState[be],Pe=Dy(Z,be);if(Pe){if(Pe.type==="mouse-position"){let Ke=Pe.smoothing??0,bt=Pe.momentum??0,Pt=Pe.x===void 0||Pe.x==="mouse",$t=Pe.y===void 0||Pe.y==="mouse";!me.pointerSnapped&&Te&&(me.pointerSnapped=!0,Pt&&(me.currentX=we,me.velocityX=0),$t&&(me.currentY=de,me.velocityY=0));let er,Tr;if(Pt){let[Qn,ou]=Wf(me.currentX,me.velocityX,we,Ke,bt,H);me.currentX=Qn,me.velocityX=ou,er=Qn}else er=Pe.x,me.velocityX=0;if($t){let[Qn,ou]=Wf(me.currentY,me.velocityY,de,Ke,bt,H);me.currentY=Qn,me.velocityY=ou,Tr=Qn}else Tr=Pe.y,me.velocityY=0;let mr=Pe.reach??1,ts=Pe.originX??.5,Fo=Pe.originY??.5,Kn=Pe.invertX?-1:1,Oa=Pe.invertY?-1:1,ha=ts+Kn*(er-ts)*mr,Pn=Fo+Oa*(Tr-Fo)*mr,Nc=ha,im=Pn,n1=Z.metadata.boundingBox;if(n1&&Z.boundingBoxDeclaration?.supportsResizeFit&&_t(Z)){let Qn=Ux(n1,V(),W()),ou=cE(ha,Pn,{centerX:Qn.centerX,centerY:Qn.centerY,halfWidthUV:Qn.halfWidthUV,halfHeightUV:Qn.halfHeightUV,rotationDeg:Qn.rotation,aspectRatio:ze()});Nc=ou.x,im=ou.y}me.liveX=Nc,me.liveY=im;let p6=Z._liveHandles?.[`_smoothed_${be}`];p6 instanceof ai&&p6.setComponents(Nc,1-im)}else if(Pe.type==="mouse"){let Ke=Pe.smoothing??0,bt=Pe.momentum??0,Pt=Pe.axis==="x"?we:de;!me.pointerSnapped&&Te&&(me.pointerSnapped=!0,me.currentX=Math.max(.001,Pt),me.velocityX=0);let[$t,er]=Wf(me.currentX,me.velocityX,Pt,Ke,bt,H);me.currentX=$t,me.velocityX=er;let Tr=Math.max(.001,$t),mr=Z.mapValues[be],ts=mr?mr.outputMin+(mr.outputMax-mr.outputMin)*Math.pow(Tr,Math.pow(2,-mr.curve*2)):Tr;me.liveScalar=ts,lr(Z,`_smoothed_${be}`,ts)}}}for(let[be,me]of Object.entries(Z.uniforms))me._listSpec&&d3(me._rawList,me._listSpec)&&Qp(Z,be);for(let be in Z.autoAnimateState){let me=se[be];if(!me||me.type!=="auto-animate")continue;let Pe=ne*(me.speed??1)*.2,Ke,bt=me.easing??me.waveform??"sine";if(me.mode==="loop")Ke=q3((Pe%1+1)%1,bt);else{let ts=(Pe%1+1)%1;Ke=q3(ts<.5?ts*2:(1-ts)*2,bt)}let Pt=Z.mapValues[be],$t=Pt?Pt.outputMin:De(Z,be,me.outputMin),er=Pt?Pt.outputMax:De(Z,be,me.outputMax),Tr=$t+Ke*(er-$t),mr=Z.uniforms[be];if(mr?.compileTimeWhen){let ts=mr._lastCompiledValue;mr.compileTimeWhen(ts,Tr)&&(mr._lastCompiledValue=Tr,vi())}lr(Z,`_smoothed_${be}`,Tr)}}},tm=()=>{let H=ys.deltaTime;for(let Z of u.values()){let se=Z.definition.animatedTime;if(se){let me=Z.uniforms[se.speed],Pe=me&&Number(me.value)||0,Ke=Jd(tu(Z));Ke.advance(H,Pe),lr(Z,"_animTime",Ke.value)}let be=Z.definition.extraAnimatedTimes;if(be)for(let[me,Pe]of Object.entries(be)){let Ke=Z.uniforms[Pe],bt=Ke&&Number(Ke.value)||0,Pt=Jd(Kp(Z,Pe));Pt.advance(H,bt),lr(Z,`_animTime_${me}`,Pt.value)}}},ru=(H,Z)=>hk(H,Z,{maxTextureDim:B,pixelRatio:L,viewportWidth:typeof window<"u"?window.innerWidth:H,viewportHeight:typeof window<"u"?window.innerHeight:Z}),sm=()=>{let H=(typeof window<"u"?window.devicePixelRatio:1)||1;return Math.min(H,TE())},Yl=(H,Z,se,be)=>{if(F&&H===C&&Z===k&&se===z&&be===U){let{width:bt,height:Pt}=nl();if(!a||a.width===bt&&a.height===Pt)return}C=H,k=Z,z=se,U=be,u3(se,be),F||(F=!0,u.size>0&&vi());let{width:me,height:Pe}=nl();a&&(a.width=me,a.height=Pe);let Ke=!1;for(let bt of y)bt.passManager.resize(me,Pe)&&(Ke=!0);for(let bt of y)for(let Pt of bt.ir.onResize)try{Pt({width:me,height:Pe})}catch($t){gr("[gpu] composition onResize error:",$t)}for(let bt of u.values()){if(jn(bt)&&lr(bt,"_xform_aspectRatio",ze()),_t(bt)){let Pt=et(bt);if(Pt)for(let[$t,er]of Object.entries(Pt))lr(bt,`_bbox_${$t}`,er)}Ye(bt)}if(lo(),Ke)for(let bt of y)n6(bt.store),bt.store.flush(),bt.passManager.repaintRtt();ee=0,am()},rm=(H,Z)=>{H<=0||Z<=0||H===D&&Z===G||(D=H,G=Z,$e={width:H,height:Z},!We&&typeof requestAnimationFrame=="function"&&(We=!0,requestAnimationFrame(()=>{if(We=!1,!$e)return;let se=$e;$e=null;let{width:be,height:me}=ru(se.width,se.height);Yl(be,me,se.width,se.height)})))},r1=H=>{let Z=H[0];if(!Z)return;let se,be;if(Z.contentBoxSize){let me=Array.isArray(Z.contentBoxSize)?Z.contentBoxSize[0]:Z.contentBoxSize;me?(se=Math.round(me.inlineSize),be=Math.round(me.blockSize)):(se=Math.round(Z.contentRect.width),be=Math.round(Z.contentRect.height))}else se=Math.round(Z.contentRect.width),be=Math.round(Z.contentRect.height);se===0||be===0||rm(se,be)},Wy=H=>{let Z=H[0];Z&&($=Z.isIntersecting)},om=()=>i&&!!t&&!!s&&C>0&&k>0,n6=H=>{let Z=H.systemHandles,{width:se,height:be}=nl(),me=sm(),Pe=(Ke,bt)=>{let Pt=Z[Ke];Pt instanceof ai&&(Pt.value=bt)};Pe("time",ne),Pe("viewportSize",[se,be]),Pe("logicalViewportSize",[V()*me,W()*me]),Pe("aspect",se/Math.max(1,be)),Pe("pointer",[we,de]),Pe("pointerActive",xe?1:0)},i6=H=>{for(let Z of H)try{Z(ys)}catch(se){gr("[gpu] render callback error:",se)}},l6=H=>{if(Yt||!om())return;let Z=performance.now(),se;if(H!==void 0)se=H;else{let Ke=yk(Z,{lastRenderTime:ee,isVisible:$,forceFullFrameRate:Q,minInterval:re});if(!Ke.render)return;se=Ke.deltaTime}ee=Z,Qe&&performance.mark("shader-cpu-start");let be=we>-5;ys.deltaTime=se,ys.pointer.x=be?we:.5,ys.pointer.y=be?de:.5,ys.pointer.seen=Te,ys.pointerActive=xe,ys.dimensions.width=C,ys.dimensions.height=k;let me=null,Pe=null;try{bk({updateDrivers:()=>{s1(),tm(),Ut(),js()},ensureComposition:()=>((P||w===null)&&(w=Z_(),P=!1),w===null?!1:(me=g.getOrBuild(w,()=>J_(w)),Yy(me),!!x)),beforeRender:()=>i6(x.ir.onBeforeRender),flush:()=>{n6(x.store),x.store.flush()},render:()=>{if(Qe&&performance.mark("shader-gpu-start"),Pe=g.renderValue??me,Pe?.passManager.render(s,ys,()=>x?.store.flush()),Qe){performance.mark("shader-gpu-end");try{performance.measure("shader-gpu-time","shader-gpu-start","shader-gpu-end");let Ke=performance.getEntriesByName("shader-gpu-time")[0];Ke&&fs.recordGpuTime(Ke.duration),performance.clearMeasures("shader-gpu-time"),performance.clearMarks("shader-gpu-start"),performance.clearMarks("shader-gpu-end")}catch{}}},markReady:()=>{g.markReady(w),St&&!wt&&(wt=!0,St=!1,vt&&queueMicrotask(vt))},afterRender:()=>i6((Pe??x).ir.onAfterRender)}),gs=0}catch(Ke){wq(Ke);return}if(Qe){performance.mark("shader-cpu-end");try{performance.measure("shader-cpu-time","shader-cpu-start","shader-cpu-end");let Ke=performance.getEntriesByName("shader-cpu-time")[0];Ke&&fs.recordCpuTime(Ke.duration),performance.clearMarks("shader-cpu-start"),performance.clearMarks("shader-cpu-end"),performance.clearMeasures("shader-cpu-time")}catch{}}fs.recordFrame(performance.now()-Z)},am=()=>l6(void 0),_q=async H=>{if(Yt)return;if(!om())throw new Error("Renderer is not ready");let Z=Js.running;Z&&o1(),ee=0,am(),t&&H?.waitForGpu!==!1&&await N3(t),Z&&Vy()},vq=async(H,Z)=>{l6(H),t&&Z?.waitForGpu!==!1&&await N3(t)},Vy=()=>{Yt||Js.running||!q||(fs.setRendering(!0),Js.start())},o1=()=>{Js.running&&(Js.stop(),fs.setRendering(!1))},a1=H=>{if(!a)return;Oe=a.getBoundingClientRect();let Z,se;if("touches"in H){if(H.touches.length===0)return;Z=H.touches[0].clientX,se=H.touches[0].clientY}else Z=H.clientX,se=H.clientY;we=(Z-Oe.left)/Oe.width,de=(se-Oe.top)/Oe.height,Te=!0},hq=H=>{!i||!a||(a1(H),xe=!0,Ua())},gq=H=>{!i||!a||(a1(H),xe=!0,Ua())},yq=()=>{i&&(xe=!1,Ua())},bq=()=>{i&&(xe=!1,Ua())},c6=(H,Z)=>{if(!i||!a)return!1;let se=a.getBoundingClientRect();return se.width===0||se.height===0?!1:H>=se.left&&H<=se.right&&Z>=se.top&&Z<=se.bottom},xq=H=>{H.button===0&&c6(H.clientX,H.clientY)&&(xe=!0,a1(H),Ua())},Aq=H=>{H.touches.length!==0&&c6(H.touches[0].clientX,H.touches[0].clientY)&&(xe=!0,a1(H),Ua())},nm=()=>{let H=!1;for(let Z of u.values()){if(Z.usesPointer){H=!0;break}if(m_e(Z.uniforms?.shape?.value)||Ly(Z)){H=!0;break}if(Z.metadata.maps){for(let se of Object.values(Z.metadata.maps))if(se&&typeof se=="object"&&"type"in se){let be=se.type;if(be==="mouse"||be==="mouse-position"){H=!0;break}}if(H)break}}H&&!Ee?(Ee=!0,!Re&&a&&(Re=p_e.register({onMouseMove:hq,onTouchMove:gq,onMouseDown:xq,onTouchStart:Aq,onMouseUp:yq,onTouchEnd:bq}))):!H&&Ee&&(Ee=!1,Re&&(Re(),Re=null))},d6=()=>{if(_.length===0)return;let H=[..._];_=[];for(let se of H)Jp(se.id,se.definition.fragment,se.parentId,se.metadata,se.uniforms,se.definition,se.domCanvas);let Z=v;v=[];for(let se of Z)se.kind==="uniform"?su(se.id,se.name,se.value):t1(se.id,se.metadata)},Wl=(H,Z)=>{if(!Yt){Yt=H,f6(H),gr(`[gpu] renderer stopped (${H}):`,Z);try{qy()}catch(se){gr("[gpu] cleanup during failure threw:",se)}if(!ns&&Qt){ns=!0;let se=Qt;queueMicrotask(()=>{try{se(H,Z)}catch(be){gr("[gpu] onUnavailable callback threw:",be)}})}}},wq=H=>{if(Xy(H)){Wl(H.reason,H);return}gs++,gs===1&&gr("[gpu] render error:",H),gs>=u_e&&Wl("render-failed",H)},Tq=H=>{!H||typeof H.addEventListener!="function"||(u6(),hs=H,rs=Z=>{try{Z.preventDefault()}catch{}let se=Z.error;if(gr("[gpu] uncaptured device error:",se),typeof GPUOutOfMemoryError<"u"&&se instanceof GPUOutOfMemoryError){Wl("out-of-memory",se);return}if(typeof GPUInternalError<"u"&&se instanceof GPUInternalError){Wl("gpu-error",se);return}Ss++,Ss>=d_e&&Wl("gpu-error",se)},H.addEventListener("uncapturederror",rs))},u6=()=>{if(hs&&rs)try{hs.removeEventListener("uncapturederror",rs)}catch{}hs=null,rs=null},Sq=H=>{if(!It){It=!0;try{o1()}catch{}if(kt){let Z=kt;queueMicrotask(()=>{try{Z(H)}catch(se){gr("[gpu] onDeviceLost callback threw:",se)}});return}Wl("device-lost",H)}},Pq=async H=>{if(H.context!==void 0)throw new Error("[gpu] initialize({ context }) is not supported \u2014 this renderer is WebGPU-only. Remove the WebGL `context` option.");if(Yt)return;let Z=_6();if(Z){Wl(Z);return}if(i||l)return;let{canvas:se,resizeTarget:be,enablePerformanceTracking:me=!1,colorSpace:Pe="p3-linear",toneMapping:Ke="linear",gpu:bt,forceFullFrameRate:Pt=!1,observeElement:$t=!0,timeOrigin:er}=H;er!=null&&(ce=er),Qe=me,Q=Pt,ut=Pe,yt=Ke,Hn(),l=!0,d=new AbortController;let Tr=d;try{if(lt=WE,lt(Pe),Tr.signal.aborted||(a=se,e=await Vfe({device:bt?.device,adapter:bt?.adapter,onDeviceLost:Pn=>Sq(Pn.message||Pn.reason||"unknown")}),Tr.signal.aborted))return;t=e.root,Tq(t.device),L=sm();let mr=t.device.limits?.maxTextureDimension2D;typeof mr=="number"&&mr>0&&(B=mr),r=Jfe(t),o=vE(t),typeof window<"u"&&(Ce=()=>qy(),window.addEventListener("beforeunload",Ce),Se=()=>{if(D>0&&G>0){let Pn=D,Nc=G;D=0,G=0,rm(Pn,Nc)}},window.addEventListener("resize",Se,{passive:!0}));let ts=se.getBoundingClientRect();Oe=ts,$=!$t||ts.width>0&&ts.height>0&&ts.top<window.innerHeight&&ts.bottom>0&&ts.left<window.innerWidth&&ts.right>0,q=!0;let Fo=ts.width>0?ts.width:se.width,Kn=ts.height>0?ts.height:se.height,Oa=Math.round(Fo),ha=Math.round(Kn);if(Oa>0&&ha>0){D=Oa,G=ha;let{width:Pn,height:Nc}=ru(Oa,ha);C=Pn,k=Nc,z=Oa,U=ha,F=!0,u3(Oa,ha);let{width:im,height:n1}=nl();se.width=im,se.height=n1}else F=!1;if(s=$fe(t,se),$t&&typeof ResizeObserver<"u"){let Pn=be??se.parentElement;Pn?(Ne=new ResizeObserver(r1),Ne.observe(Pn)):console.warn("[gpu] no element available for resize observation \u2014 use resize() manually"),typeof IntersectionObserver<"u"&&(ke=new IntersectionObserver(Wy,{threshold:0,rootMargin:"128px"}),ke.observe(se))}if(Tr.signal.aborted)return;i=!0,c=!0,d6(),C>0&&k>0&&am(),q&&Vy()}catch(mr){let ts=Xy(mr)?mr.reason:"init-failed";l=!1,d===Tr&&(d=null),Wl(ts,mr);return}finally{l=!1,d===Tr&&(d=null)}},qy=()=>{d&&d.abort(),Ne&&(Ne.disconnect(),Ne=null),ke&&(ke.disconnect(),ke=null),Re&&(Re(),Re=null),Ce&&typeof window<"u"&&(window.removeEventListener("beforeunload",Ce),Ce=null),Se&&typeof window<"u"&&(window.removeEventListener("resize",Se),Se=null),oe!==null&&typeof cancelAnimationFrame=="function"&&(cancelAnimationFrame(oe),oe=null),o1(),u6(),La?.(),La=null,typeof document<"u"&&document.fonts?.removeEventListener&&document.fonts.removeEventListener("loadingdone",da);try{e?.release?.()}catch{}g.clear();for(let H of[...y])Zp(H);x=null;try{r?.destroy()}catch{}try{e?.createdDevice&&t?.destroy()}catch{}u.clear(),p=null,f.clear(),_=[],v=[],c=!1,$e=null,We=!1,a=null,s=null,r=null,o=null,t=null,e=null,i=!1,l=!1,F=!1,d=null,C=0,k=0,z=0,U=0,w=null,P=!0,$=!1,q=!0,we=-10,de=-10,xe=!1,Te=!1,Ee=!1,vt=null,wt=!1,St=!1,kt=null,It=!1,Ss=0,gs=0};return{initialize:Pq,cleanup:qy,registerNode:Jp,removeNode:em,updateUniformValue:su,updateNodeMetadata:t1,isInitialized:()=>i,resize:(H,Z)=>{t&&rm(H,Z)},startAnimation:Vy,stopAnimation:o1,renderAndWait:_q,renderSyntheticFrame:vq,getPerformanceStats:()=>{let H=Math.max(0,u.size-1),Z=x?x.ir.rttPasses.length:0;fs.updateNodeCounts(H,Z);let se={render:{calls:x?x.passManager.passCount:0},programs:{length:g.size},memory:{textures:r?r.textureCount:0}};return fs.getStats(se)},getLiveDriverValue:(H,Z)=>{let se=u.get(H)?.mouseDriverState?.[Z];return!se||se.liveX===void 0||se.liveY===void 0?null:{x:se.liveX,y:se.liveY}},getLiveScalarValue:(H,Z)=>{let se=u.get(H);if(!se)return null;let be=se.metadata.maps?.[Z];if(be?.type==="auto-animate"){let me=se._liveHandles?.[`_smoothed_${Z}`],Pe=me instanceof ai?me.value:void 0;return typeof Pe=="number"?Pe:null}return be?.type==="mouse"?se.mouseDriverState[Z]?.liveScalar??null:null},getNodeRegistry:()=>({nodes:new Map(u)}),getRendererType:()=>"webgpu",getInternalRenderer:()=>t?{device:t.device,adapter:e?.adapter,root:t}:null,setForceFullFrameRate:H=>{let Z=Q;return Q=H,Z},beginRecordingResolution:(H,Z,se)=>{if(!t||H<=0||Z<=0)return()=>{};let be=L,me=C,Pe=k,Ke=z,bt=U,Pt=D,$t=G;return L=se,Yl(H,Z,H,Z),()=>{t&&(L=be,Yl(me,Pe,Ke,bt),D=Pt,G=$t)}},setResolutionScale:H=>{if(!t)return;let Z=Math.max(.05,Math.min(H,1)),se=Math.max(.01,sm()*Z);if(Math.abs(L-se)<.001)return;L=se;let be=z||C,me=U||k;if(be<=0||me<=0)return;let{width:Pe,height:Ke}=ru(be,me);Yl(Pe,Ke,be,me)},setFrameRateCap:H=>{re=H&&H>0?1e3/Math.max(H,10)-1:0},setTimeOrigin:H=>{ce=H},setOnReady:H=>{vt=H,H&&wt&&queueMicrotask(H)},setOnDeviceLost:H=>{kt=H},setOnUnavailable:H=>{if(Qt=H,H&&Yt&&!ns){ns=!0;let Z=Yt;queueMicrotask(()=>{try{H(Z)}catch(se){gr("[gpu] onUnavailable callback threw:",se)}})}},getFailureReason:()=>Yt,__testing:{needsTransformation:fl,findChildNodes:ir,buildFieldInits:H=>{let Z=u.get(H);return Z?N_(Z):null},ensureDriverState:H=>{let Z=u.get(H);Z&&jp(Z)},stepMouseDrivers:H=>{ys.deltaTime=H,s1()},stepAnimatedTime:H=>{ys.deltaTime=H,tm()},getAnimatedTimeValue:H=>{let Z=u.get(H);return Z?.definition.animatedTime?Jd(tu(Z)).value:null},writeExtraField:(H,Z,se)=>{let be=u.get(H);be&&$_(be,Z,se)},readExtraField:(H,Z)=>{let se=u.get(H)?._liveHandles?.[Z];return se instanceof ai?se.value:void 0},getNodeRegistry:()=>({nodes:u,rootId:p,parentToChildren:f}),getParentToChildren:()=>f,getPendingRegistrations:()=>[..._],getFrameDiagnostics:()=>({deltaTime:ys.deltaTime,pointerX:we,pointerY:de,pointerActive:xe,globalElapsedTime:ne,lastRenderTime:ee,isVisible:$,forceFullFrameRate:Q,sharedTimeOrigin:ce,animating:Js.running,mouseListenersNeeded:Ee}),computeStructuralHash:Z_,isStructuralDirty:()=>P,clearStructuralDirty:()=>{P=!1},setTestReady:H=>{i=!0,c=!0,H&&(C=H.width,k=H.height,z=H.width,U=H.height,F=!0),d6()}}}}var eu={samplingRate:.05,collectionDuration:5e3,warmupDuration:500,sampleInterval:500,apiEndpoint:"https://shaders.com/api/telemetry"};function f_e(e){return e.includes("Edg/")||e.includes("EdgiOS")?"Edge":e.includes("OPR/")||e.includes("Opera/")?"Opera":e.includes("Chrome/")||e.includes("CriOS")?"Chrome":e.includes("Firefox/")||e.includes("FxiOS")?"Firefox":e.includes("Safari/")&&!e.includes("Chrome")?"Safari":"Other"}function __e(e){return/iPad|Tablet|PlayBook/i.test(e)||/Android/i.test(e)&&!/Mobile/i.test(e)?"tablet":/Mobile|Android|webOS|iPhone|iPod|BlackBerry|IEMobile|Opera Mini/i.test(e)?"mobile":"desktop"}function v_e(){if(typeof window>"u"||typeof navigator>"u")return{domain:"unknown",browserFamily:"unknown",deviceType:"unknown"};let e=navigator.userAgent;return{domain:window.location.hostname,browserFamily:f_e(e),deviceType:__e(e)}}var h_e=class{renderer;version;sourceType;sessionId;frameSamples=[];sampleInterval=null;stopped=!1;constructor(e,t,s){this.renderer=e,this.version=t,this.sourceType=s,this.sessionId=`tel_${Date.now()}_${Math.random().toString(36).substring(2,9)}`}stop(){this.stopped=!0,this.sampleInterval&&(clearInterval(this.sampleInterval),this.sampleInterval=null)}async start(){try{if(await this.sleep(eu.warmupDuration),this.stopped||(this.sampleInterval=setInterval(()=>{if(!this.stopped)try{let e=this.renderer.getPerformanceStats();this.frameSamples.push(e)}catch(e){gr("Telemetry sampling error:",e)}},eu.sampleInterval),await this.sleep(eu.collectionDuration-eu.warmupDuration),this.stopped))return;if(this.sampleInterval&&(clearInterval(this.sampleInterval),this.sampleInterval=null),!this.stopped&&this.frameSamples.length>=5){let e=this.aggregateData();await this.sendTelemetry(e)}}catch(e){gr("Telemetry collection error:",e)}}sleep(e){return new Promise(t=>setTimeout(t,e))}aggregateData(){let e=this.aggregatePerformance(),t=this.detectRendererType(),s=this.extractComponents(),r=v_e();return{sessionId:this.sessionId,timestamp:Date.now(),collectionDuration:eu.collectionDuration,version:this.version,sourceType:this.sourceType,performance:e,renderer:t,components:s,environment:r}}aggregatePerformance(){if(this.frameSamples.length===0)return{fps:0,frameTime:{avg:0,min:0,max:0,p99:0},jankPercent:0,budgetUsed:0};let e=this.frameSamples.map(p=>p.avgFrameTime),t=this.frameSamples.map(p=>p.jankPercent),s=this.frameSamples.map(p=>p.budgetUsed),r=this.frameSamples.map(p=>p.fps),o=this.calculateMedian(r),a=this.calculateMean(e),i=Math.min(...e),l=Math.max(...e),c=this.calculatePercentile(e,99),d=this.calculateMean(t),u=this.calculateMean(s);return{fps:Math.round(o*10)/10,frameTime:{avg:Math.round(a*10)/10,min:Math.round(i*10)/10,max:Math.round(l*10)/10,p99:Math.round(c*10)/10},jankPercent:Math.round(d*10)/10,budgetUsed:Math.round(u*10)/10}}detectRendererType(){let e=this.frameSamples[this.frameSamples.length-1];return{type:this.renderer.getRendererType?.()||"webgl",drawCalls:e?.drawCalls??null,textureCount:e?.textureCount??null}}extractComponents(){try{let e=this.renderer.getNodeRegistry(),t=[];for(let[s,r]of e.nodes)r.parentId!==null&&t.push({name:r.componentName,requiresRTT:r.requiresRTT,renderOrder:r.metadata.renderOrder});return t.sort((s,r)=>s.renderOrder-r.renderOrder)}catch(e){return gr("Failed to extract components:",e),[]}}async sendTelemetry(e){try{let t=await fetch(eu.apiEndpoint,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});t.ok||rn("Telemetry send failed:",t.status,t.statusText)}catch(t){gr("Telemetry send error:",t)}}calculateMean(e){return e.length===0?0:e.reduce((t,s)=>t+s,0)/e.length}calculateMedian(e){if(e.length===0)return 0;let t=[...e].sort((r,o)=>r-o),s=Math.floor(t.length/2);return t.length%2===0?(t[s-1]+t[s])/2:t[s]}calculatePercentile(e,t){if(e.length===0)return 0;let s=[...e].sort((o,a)=>o-a),r=Math.ceil(t/100*s.length)-1;return s[Math.max(0,r)]}};function g_e(e=!1,t=!1){return e||typeof navigator<"u"&&navigator.doNotTrack==="1"?!1:t?!0:Math.random()<eu.samplingRate}function uq(e,t,s=!1,r=!1){return g_e(s,r)?new h_e(e,t,r?"preview":"shader"):null}function pq(){if(typeof window>"u"||!window.location)return!1;let e=window.location.hostname;return!e.includes("shaders.com")&&e!=="localhost"&&e!=="127.0.0.1"}function r6(e){if(typeof e!="object"||e===null||!("type"in e))return!1;let t=e;return t.type==="map"||t.type==="mouse"||t.type==="mouse-position"||t.type==="auto-animate"}var mq=new Set(["opacity","blendMode","visible","transform","boundingBox","maskSource","maskType","flow","absolute"]);async function o6(e,t,s){let r=new Map;if(By().forEach(B=>{r.set(B.definition.name,B.definition);for(let D of B.definition.deprecatedNames??[])r.set(D,B.definition)}),!e.style.width||!e.style.height){let B=e.getBoundingClientRect(),D=B.width>0?B.width:e.width,G=B.height>0?B.height:e.height;D>0&&!e.style.width&&(e.style.width=`${D}px`),G>0&&!e.style.height&&(e.style.height=`${G}px`)}function o(B){return{...B,props:B.props?{...B.props}:void 0,children:B.children?.map(o)}}let a={...t,components:t.components.map(o)},i=null,l=!1,c=!1,d=3,u=6e4,p=0,f=0,_=null;function v(B){try{s?.onError?.(B)}catch(D){gr("[createShader] onError callback threw:",D)}}let g=!1;function y(B){g||(g=!0,_=B,v(B))}function x(B,D,G,F,V){let W=r.get(G.type);if(!W){console.warn(`[createShader] Unknown component type: ${G.type}`);return}let q=G.id||`${G.type}_${Date.now()}_${Math.random().toString(36).slice(2,9)}`,$={};for(let[re,ne]of Object.entries(G.props||{}))!mq.has(re)&&Object.prototype.hasOwnProperty.call(W.props,re)&&r6(ne)&&($[re]=ne);let Q=_3(W,Object.fromEntries(Object.entries(W.props).map(([re,ne])=>{let ce=G.props?.[re]!==void 0?G.props[re]:ne.default;return[re,r6(ce)?ne.default:ce]})),q),ee={blendMode:G.props?.blendMode||"normal",opacity:G.props?.opacity,visible:G.props?.visible,renderOrder:V,id:G.id,maps:Object.keys($).length>0?{...$}:void 0,mask:G.props?.maskSource?{source:G.props.maskSource,type:G.props.maskType||"alpha"}:void 0,transform:G.props?.transform?{offsetX:0,offsetY:0,rotation:0,scale:1,anchorX:.5,anchorY:.5,edges:"transparent",...G.props.transform}:void 0,boundingBox:Xv(G.props?.boundingBox),flow:G.props?.flow,absolute:G.props?.absolute};B.registerNode(q,W.fragment,F,ee,Q,W),D.set(q,{componentDef:W,uniforms:Q,nodeId:q,component:G,currentMaps:{...$}}),G.children?.forEach((re,ne)=>{x(B,D,re,q,ne)})}async function w(){let B=dq(),D=new Map;s?.onReady&&B.setOnReady(s.onReady),B.setOnUnavailable(V=>{l||y(V)}),await B.initialize({canvas:e,resizeTarget:e,enablePerformanceTracking:s?.enablePerformanceTracking||!1,colorSpace:s?.colorSpace,toneMapping:s?.toneMapping,observeElement:s?.observeElement,gpu:s?.gpu});let G={renderer:B,nodeEntryMap:D,telemetryCollector:null,telemetryStartTimeout:null};B.setOnDeviceLost(V=>{if(l||c||_||i!==null&&i!==G)return;c=!0,v(V);let W=Date.now();if(W-f>u&&(p=0),f=W,++p>d){P(G),i=null,c=!1,y("unrecoverable");return}(async()=>{try{if(P(G),i=null,l)return;let q=await w();if(l){P(q);return}i=q}catch(q){gr("[createShader] rebuild after device loss failed:",q),y("rebuild_failed")}finally{c=!1}})()});let F="shader-root";if(B.registerNode(F,ch.fragment,null,null,{},ch),a.components.forEach((V,W)=>{x(B,D,V,F,W)}),pq()){let W=0,q=()=>{if(l||_||i!==G||++W>40){G.telemetryStartTimeout=null;return}B.getPerformanceStats().fps>0?(G.telemetryCollector=uq(B,"3.2.470",s?.disableTelemetry||!1,!1),G.telemetryCollector&&G.telemetryCollector.start(),G.telemetryStartTimeout=null):G.telemetryStartTimeout=setTimeout(q,500)};G.telemetryStartTimeout=setTimeout(q,500)}return G}function P(B){if(B.telemetryCollector){try{B.telemetryCollector.stop()}catch{}B.telemetryCollector=null}B.telemetryStartTimeout!==null&&(clearTimeout(B.telemetryStartTimeout),B.telemetryStartTimeout=null);try{B.renderer.cleanup()}catch{}}i=await w();function C(B,D){if(!i)return;let{renderer:G,nodeEntryMap:F}=i,V=F.get(B);if(!V){console.warn(`[createShader] Component ID not found: ${B}`);return}V.component.props||(V.component.props={});let W=V.component.props;for(let[q,$]of Object.entries(D))if(mq.has(q))if(q==="maskSource")G.updateNodeMetadata(V.nodeId,{mask:$?{source:$,type:D.maskType||W.maskType||"alpha"}:void 0}),W.maskSource=$,"maskType"in D&&(W.maskType=D.maskType);else{if(q==="maskType")continue;q==="transform"?(G.updateNodeMetadata(V.nodeId,{transform:$}),W.transform=$):q==="boundingBox"?(G.updateNodeMetadata(V.nodeId,{boundingBox:Xv($)}),W.boundingBox=$):(G.updateNodeMetadata(V.nodeId,{[q]:$}),W[q]=$)}else r6($)?Object.prototype.hasOwnProperty.call(V.componentDef.props,q)?(V.currentMaps[q]=$,G.updateNodeMetadata(V.nodeId,{maps:{...V.currentMaps}}),W[q]=$):console.warn(`[createShader] Ignoring PropDriver for unknown prop "${q}" on ${V.component.type}`):(q in V.currentMaps&&(delete V.currentMaps[q],G.updateNodeMetadata(V.nodeId,{maps:Object.keys(V.currentMaps).length>0?{...V.currentMaps}:void 0})),Object.prototype.hasOwnProperty.call(V.componentDef.props,q)&&(G.updateUniformValue(V.nodeId,q,$),W[q]=$))}function k(B,D){let G=e.getBoundingClientRect(),F=B??(G.width>0?G.width:e.width),V=D??(G.height>0?G.height:e.height);F>0&&V>0&&(e.style.width=`${F}px`,e.style.height=`${V}px`,i&&i.renderer.resize(F,V))}function z(){l=!0,i&&(P(i),i=null)}function U(){i&&i.renderer.stopAnimation()}function L(){i&&i.renderer.startAnimation()}return{update:C,resize:k,pause:U,resume:L,destroy:z,getFailureReason:()=>_}}var y_e="shaders-preview-key";function b_e(e,t){let s=new TextEncoder().encode(t),r=new Uint8Array(e.length);for(let o=0;o<e.length;o++)r[o]=e[o]^s[o%s.length];return r}function fq(e){try{let t=atob(e),s=new Uint8Array(t.length);for(let i=0;i<t.length;i++)s[i]=t.charCodeAt(i);let r=b_e(s,y_e),o=new TextDecoder().decode(r),a=JSON.parse(o);if(typeof a!="object"||a===null||Array.isArray(a))throw new Error("unexpected shape");return a}catch{throw new Error("Failed to decode preview definition: invalid data")}}var x_e="https://shaders.com",A_e="Unlock your Shaders Pro license",w_e="https://shaders.com/dashboard?pricing=true",T_e=new Set(["break","case","catch","class","const","continue","default","delete","do","else","export","extends","finally","for","function","if","import","in","instanceof","new","return","super","switch","this","throw","try","typeof","var","void","while","with","yield"]);function S_e(e,t){let s=e.replace(/[^A-Za-z0-9]+/g," ").trim();if(!s)return t;let r=s.split(/\s+/).map((a,i)=>i===0?a.charAt(0).toLowerCase()+a.slice(1):a.charAt(0).toUpperCase()+a.slice(1)).join(""),o=/^[A-Za-z_$]/.test(r)?r:`_${r}`;return T_e.has(o)?`_${o}`:o}function P_e(e){let t=new Set(["style"]),s=new Map;return e?.length&&e.forEach((r,o)=>{if(!r.targets?.length)return;let a=S_e(r.label,`keyProp${o}`),i=a,l=1;for(;t.has(i);)l++,i=`${a}${l}`;t.add(i),s.set(i,r)}),s}function a6(e,t){for(let s of t){if(s.id===e)return s;let r=s.children;if(r?.length){let o=a6(e,r);if(o)return o}}return null}function C_e(e,t,s){if(t)for(let[r,o]of Object.entries(t)){let a=s.get(r);if(a)for(let i of a.targets??[]){let l=a6(i.component_id,e);l?.props&&i.prop in l.props&&(l.props[i.prop]=o)}}}async function M_e(e,t){if(!t.shader&&!t.presetId||t.shader&&t.presetId)throw new Error("Exactly one of shader (preview token) or presetId must be provided");let s=t.apiBaseUrl||x_e,r=t.presetId&&t.version?`?version=${encodeURIComponent(t.version)}`:"",o=t.shader?`${s}/api/preview/shader/${encodeURIComponent(t.shader)}`:`${s}/api/preview/preset/${encodeURIComponent(t.presetId)}${r}`,a=await fetch(o);if(!a.ok)throw new Error(`Failed to fetch preview: ${a.status} ${a.statusText}`);let i=await a.json(),l=i.preset??i.shader;if(!l?.definition||typeof l.definition!="string")throw new Error("Preview response missing encoded definition");let c=fq(l.definition),d=Array.isArray(l.key_props)?l.key_props:null,u=P_e(d),p=new Map;for(let w of u.values())for(let P of w.targets??[]){let C=a6(P.component_id,c.components);C?.props&&P.prop in C.props&&p.set(`${P.component_id}:${P.prop}`,C.props[P.prop])}C_e(c.components,t.configuration,u);let f=await o6(e,c,{isPreview:!0,enablePerformanceTracking:!0}),{overlay:_,savedPosition:v,parentEl:g}=E_e(e),y=f.destroy.bind(f),x=f;return x.destroy=()=>{g&&v!==void 0&&(g.style.position=v),_.remove(),y()},x.setConfiguration=w=>{if(d?.length)for(let[P,C]of u){let k=Object.prototype.hasOwnProperty.call(w,P)&&w[P]!==void 0;for(let z of C.targets??[]){let U=k?w[P]:p.get(`${z.component_id}:${z.prop}`);U!==void 0&&f.update(z.component_id,{[z.prop]:U})}}},x}function E_e(e){let t=e.parentElement,s;t&&getComputedStyle(t).position==="static"&&(s=t.style.position,t.style.position="relative");let r=document.createElement("a");return r.href=w_e,r.target="_blank",r.rel="noopener noreferrer",r.textContent=A_e,Object.assign(r.style,{position:"absolute",bottom:"8px",right:"12px",fontSize:"11px",fontFamily:"system-ui, -apple-system, sans-serif",color:"rgba(255, 255, 255, 0.5)",textDecoration:"none",zIndex:"10",pointerEvents:"auto",transition:"color 0.2s ease"}),r.addEventListener("mouseenter",()=>{r.style.color="rgba(255, 255, 255, 0.8)"}),r.addEventListener("mouseleave",()=>{r.style.color="rgba(255, 255, 255, 0.5)"}),t&&t.appendChild(r),{overlay:r,savedPosition:s,parentEl:t}}async function k_e(e){if(typeof navigator>"u"||!navigator.gpu)return null;try{let t=await navigator.gpu.requestAdapter({powerPreference:e?.powerPreference??"high-performance"});return t?{device:await t.requestDevice({requiredFeatures:[...t.features]}),adapter:t}:null}catch(t){return rn("[shaders] createSharedDevice failed; callers should fall back to per-instance device:",t),null}}export{M_e as createPreview,o6 as createShader,k_e as createSharedDevice,jy as getWebGPUSupport,l1 as isShadersDebug,Hy as isWebGPUSupported,m6 as setShadersDebug};
272
+ }`,"fullScreenTriangle");gS.disable("external-omitted");var Yfe=["float32-filterable","timestamp-query"],J5=new WeakMap,Z5=new WeakMap,e6=new WeakSet,$p=null,Wfe=new WeakSet;async function Vfe(e={}){if(e.device&&!e6.has(e.device)){let r=e.device,o=J5.get(r);o||(o=A.initFromDevice({device:r}),J5.set(r,o));let a=aq(o,e.onDeviceLost);return{root:o,device:r,adapter:e.adapter,createdDevice:!1,release:a}}e.device&&rn("[gpu] injected GPU device was lost \u2014 falling back to the shared default device");let t=await qfe(),s=aq(t.root,e.onDeviceLost);return{root:t.root,device:t.device,adapter:t.adapter,createdDevice:!1,release:s}}async function qfe(){for(;;){let t=$p;if(!t)break;let s=await t.catch(()=>null);if(s&&!Wfe.has(t)&&!e6.has(s.device))return s;$p===t&&($p=null)}let e=Nfe();$p=e;try{return await e}catch(t){throw $p===e&&($p=null),t}}async function Nfe(){if(typeof navigator>"u"||!navigator.gpu)throw new au("unsupported","[gpu] WebGPU is not available in this environment (navigator.gpu is undefined).");let e;try{e=await A.init({adapter:{powerPreference:"high-performance"},device:{optionalFeatures:Yfe}})}catch(t){let s=await jy();throw new au(s.supported?"no-device":s.reason??"init-failed",void 0,{cause:t})}if(!e.device)throw new au("no-device","[gpu] adapter returned no device.");return J5.set(e.device,e),{root:e,device:e.device,createdDevice:!0}}function $fe(e,t,s={}){return e.configureContext({canvas:t,alphaMode:"premultiplied",...s})}function aq(e,t){let s=e.device,r=Z5.get(s);if(r||(r=new Set,Z5.set(s,r),e.device.lost.then(a=>{if(e6.add(s),a.reason!=="destroyed")for(let i of[...Z5.get(s)??[]])i(a)})),!t)return()=>{};let o=r;return o.add(t),()=>o.delete(t)}function Xfe(){let e={value:0,advance(t,s){e.value+=t*s}};return e}var nq=new WeakMap;function Jd(e){let t=nq.get(e);return t||(t=Xfe(),nq.set(e,t)),t}var Hfe=(globalThis.__TYPEGPU_AUTONAME__??(e=>e))(tt({time:n,viewportSize:m,logicalViewportSize:m,aspect:n,pointer:m,pointerActive:n}),"SystemUniforms");A.fn([m,m],m)((e=>(globalThis.__TYPEGPU_META__??=new WeakMap).set(e.f=((t,s)=>{"use gpu";return aa(t,s)}),{v:2,name:void 0,ast:{params:[{type:"i",name:"uv"},{type:"i",name:"viewportSize"}],body:[0,[[10,[6,"std.mul",["uv","viewportSize"]]]]]},externals:{"std.mul":()=>aa}})&&e.f)({}));A.fn([m],n)((e=>(globalThis.__TYPEGPU_META__??=new WeakMap).set(e.f=(t=>{"use gpu";return __tsover_div(t.x,t.y)}),{v:2,name:void 0,ast:{params:[{type:"i",name:"viewportSize"}],body:[0,[[10,[1,[7,"viewportSize","x"],"/",[7,"viewportSize","y"]]]]]},externals:{}})&&e.f)({}));function jfe(e){let t=2166136261,s=e.join("");for(let r=0;r<s.length;r++)t^=s.charCodeAt(r),t=Math.imul(t,16777619);return`${(t>>>0).toString(16).padStart(8,"0")}:${s.length}`}function Kfe(e={}){let t=e.maxSize??4,s=e.dispose,r=new Map,o=0,a=null,i=null;function l(d){d.lastUsed=++o}function c(){for(;r.size>t;){let d=null;for(let u of r.values())u.hash===a||u.hash===i||(!d||u.lastUsed<d.lastUsed)&&(d=u);if(!d)break;r.delete(d.hash),s?.(d.value,d.hash)}}return{getOrBuild(d,u){let p=r.get(d);if(p)return l(p),d===a?i=null:i=d,p.value;let f=u(),_={hash:d,value:f,lastUsed:++o};return r.set(d,_),a===null?(a=d,i=null):i=d,c(),f},markReady(d){if(d!==i)return;let u=r.get(d);u&&(a=d,i=null,l(u),c())},get renderValue(){let d=a??i;return d?r.get(d)?.value??null:null},get activeHash(){return a},get pendingHash(){return i},release(d){let u=r.get(d);u&&(r.delete(d),s?.(u.value,d),a===d&&(a=null),i===d&&(i=null))},has(d){return r.has(d)},get size(){return r.size},clear(){for(let d of r.values())s?.(d.value,d.hash);r.clear(),a=null,i=null}}}var Xp="passManager";function Qfe(e,t){let{textureManager:s,dispatcher:r}=t,o=t.canvasFormat??Zfe(),a=t.rttFormat??"rgba16float",i=e.device?.limits?.maxSampledTexturesPerShaderStage,l=t.maxSampledTextures??(typeof i=="number"&&i>0?i:16),c=t.fullScreenTriangle??Ife,d=new Map,u=new Set,p=null;function f(){let B=s.samplers;try{return e.createBindGroup(Ox,{linearClamp:B.linearClamp,nearestClamp:B.nearestClamp,linearRepeat:B.linearRepeat,nearestRepeat:B.nearestRepeat})}catch(D){gr(`[${Xp}] failed to build sampler bind group:`,D);return}}function _(B,D){let G=new Set;for(let F of B.textures)if(F.kind==="rtt")if(G.add(F.key),d.has(F.key))d.get(F.key).resize(D.width,D.height);else{let V=s.createRenderTexture({width:D.width,height:D.height,format:a,label:`rtt:${F.key}`});d.set(F.key,V),u.add(V)}for(let[F,V]of[...d])G.has(F)||(V.destroy(),u.delete(V),d.delete(F))}function v(B,D){if(!B.textureLayout||B.reads.length===0)return;let G={};for(let F of B.reads){let V=d.get(F),W=D?.[F],q=V??W;if(!q){gr(`[${Xp}] pass "${B.entry}" reads unknown texture "${F}"`);return}G[F]=q.texture}B.reads.length>l&&rn(`[${Xp}] pass samples ${B.reads.length} textures (> device limit ~${l}); composition may fail on this device.`);try{return e.createBindGroup(B.textureLayout,G)}catch(F){gr(`[${Xp}] failed to build texture bind group:`,F);return}}function g(B,D){return e.createRenderPipeline({vertex:c,fragment:B.entry,targets:{format:D}})}function y(B,D){if(!B.externalLayout||B.externalReads.length===0)return;let G=B.externalReads;if(G.length===1){let V=D.get(G[0]);if(!V){gr(`[${Xp}] external read "${G[0]}" has no registered source`);return}return s.createExternalTextureBinding({layout:B.externalLayout,entryKey:G[0],getSource:V})}let F=null;return{update(){let V={};for(let W of G){let q=D.get(W)?.();if(!q)return F=null,null;try{V[W]=e.device.importExternalTexture({source:q})}catch{return F=null,null}}return F=e.createBindGroup(B.externalLayout,V),F},get current(){return F},destroy(){F=null}}}function x(B,D,G,F){let V=D.kind==="canvas"?o:a,W=B.reads.filter($=>G?.[$]),q=new Map(W.map($=>[$,G[$].texture]));return{fragment:B,pipeline:g(B,V),textureBindGroup:v(B,G),externalBinding:y(B,F),target:D,mediaReads:W,mediaSnapshot:q}}function w(B,D,G,F){_(B,G);for(let Q of B.computeSteps)Q.bindInputs?.(ee=>d.get(ee)??F?.[ee]);let V=f(),W=new Map;for(let Q of B.externalTextures)W.set(Q.key,Q.getSource);let q=B.rttPasses.map(Q=>x(Q.fragment,{kind:"rtt",key:Q.textureKey},F,W)),$=x(B.finalPass,{kind:"canvas"},F,W);p={ir:B,uniformBindGroup:D,samplerBindGroup:V,computeSteps:B.computeSteps,rttPasses:q,finalPass:$,size:G,mediaResources:F}}function P(B,D){let G=B.pipeline;if(p?.uniformBindGroup&&(G=G.with(p.uniformBindGroup)),B.mediaReads&&B.mediaReads.length>0&&p?.mediaResources){let F=!1;for(let V of B.mediaReads)p.mediaResources[V].texture!==B.mediaSnapshot.get(V)&&(F=!0);if(F){B.textureBindGroup=v(B.fragment,p.mediaResources);for(let V of B.mediaReads)B.mediaSnapshot.set(V,p.mediaResources[V].texture)}}if(B.textureBindGroup&&(G=G.with(B.textureBindGroup)),B.fragment.usesSamplers&&p?.samplerBindGroup&&(G=G.with(p.samplerBindGroup)),B.fragment.externalReads.length>0){let F=B.externalBinding?.update()??null;if(!F){B.externalSkipLogged||(rn(`[${Xp}] external texture not ready \u2014 skipping pass (${B.fragment.externalReads.join(", ")})`),B.externalSkipLogged=!0);return}G=G.with(F)}G.withColorAttachment({view:D}).draw(3)}function C(B,D,G){if(p){for(let F of p.computeSteps){let V=F.getComputeNodes(D);V&&V.length&&r.dispatch(V)}G?.(),k(),P(p.finalPass,B)}}function k(){if(p)for(let B of p.rttPasses){let D=d.get(B.target.key);D&&P(B,z(D))}}function z(B){return e.unwrap(B.texture).createView()}function U(B){if(!(!B.fragment.textureLayout||B.fragment.reads.length===0)&&(B.textureBindGroup=v(B.fragment,p?.mediaResources),B.mediaReads&&B.mediaSnapshot&&p?.mediaResources))for(let D of B.mediaReads)B.mediaSnapshot.set(D,p.mediaResources[D].texture)}function L(B,D){let G=!1;for(let F of d.values())F.resize(B,D)&&(G=!0);if(!p)return G;if(p.size={width:B,height:D},!G)return!1;for(let F of p.computeSteps)F.bindInputs?.(V=>d.get(V)??p.mediaResources?.[V]);for(let F of p.rttPasses)U(F);return U(p.finalPass),!0}return{setComposition:w,render:C,repaintRtt:k,resize:L,get textureCount(){return u.size},get passCount(){return p?p.rttPasses.length+1:0},dispose(){for(let B of[...u])B.destroy();u.clear(),d.clear(),p=null}}}function Zfe(){return typeof navigator<"u"&&navigator.gpu?navigator.gpu.getPreferredCanvasFormat():"bgra8unorm"}function iq(e){return`${e}-srgb`}function Jfe(e){let t=new Set;function s(_,...v){return e.createTexture.call(e,_).$usage(...v)}let r,o,a,i,l={get linearClamp(){return r??=e.createSampler({magFilter:"linear",minFilter:"linear",mipmapFilter:"linear",addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge"})},get nearestClamp(){return o??=e.createSampler({magFilter:"nearest",minFilter:"nearest",addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge"})},get linearRepeat(){return a??=e.createSampler({magFilter:"linear",minFilter:"linear",mipmapFilter:"linear",addressModeU:"repeat",addressModeV:"repeat"})},get nearestRepeat(){return i??=e.createSampler({magFilter:"nearest",minFilter:"nearest",addressModeU:"repeat",addressModeV:"repeat"})}};function c(_,v,g,y,x){let w={texture:_,width:v,height:g,format:y,write(P){_.write(P)},unwrap(){return e.unwrap(_)},createSrgbView(){if(x)return e.unwrap(_).createView({format:iq(y)})},generateMipmaps(){_.generateMipmaps?.()},destroy(){t.has(w)&&(_.destroy(),t.delete(w))}};return t.add(w),w}function d(_){let{width:v,height:g,srgb:y=!1,mipLevelCount:x}=_,w=_.format??"rgba8unorm";return c(s({size:[v,g],format:w,...y?{viewFormats:[iq(w)]}:{},...x?{mipLevelCount:x}:{}},"sampled","render"),v,g,w,y)}function u(_){let{width:v,height:g,format:y,data:x}=_,w=c(s({size:[v,g],format:y},"sampled"),v,g,y,!1);return x&&w.write(x),w}function p(_){let v=_.format??"rgba16float",{mipLevelCount:g}=_,y=_.width,x=_.height;function w(C,k){return c(s({size:[C,k],format:v,...g?{mipLevelCount:g}:{}},"sampled","render"),C,k,v,!1)}let P=w(y,x);return{get texture(){return P.texture},get width(){return y},get height(){return x},format:v,write(C){P.write(C)},unwrap(){return P.unwrap()},createSrgbView(){return P.createSrgbView()},generateMipmaps(){P.generateMipmaps()},resize(C,k){return C===y&&k===x?!1:(P.destroy(),y=C,x=k,P=w(C,k),!0)},destroy(){P.destroy()}}}function f(_){let{layout:v,entryKey:g,getSource:y,staticEntries:x={}}=_,w=null;return{update(){let P=y();if(!P)return w=null,null;let C;try{C=e.device.importExternalTexture({source:P})}catch{return w=null,null}return w=e.createBindGroup(v,{...x,[g]:C}),w},get current(){return w},destroy(){w=null}}}return{samplers:l,createMediaTexture:d,createDataTexture:u,createRenderTexture:p,createExternalTextureBinding:f,get textureCount(){return t.size},destroy(){for(let _ of[...t])_.destroy();t.clear()}}}function e_e(e,t){let s=Q5(e)?.definition?.naturalSizeKey;if(!s)return null;if("fixed"in s)return s.fixed||null;let r=t[s.fromProp];return typeof r=="string"&&r?r:null}function t_e(e,t,s){if(!e||typeof e!="object")return null;let r=(i,l)=>!i||typeof i!="object"||typeof i.value!="number"?null:i.unit==="px"?i.value:i.value*l,o=r(e.width,t),a=r(e.height,s);return o!=null&&a!=null&&o>0&&a>0?{widthPx:o,heightPx:a}:null}function s_e(e,t,s){let{type:r,decl:o,props:a,boundingBox:i}=e;if(!(t>0)||!(s>0)||e.requiresChild)return null;if(o?.computeBounds){let u=o.computeBounds(a,t,s);return u.widthPx>0&&u.heightPx>0?{widthPx:u.widthPx,heightPx:u.heightPx}:null}let l=o?.propBindings;if(l?.width&&l?.height){let u=Ef(l.width,a[l.width.prop],t,s),p=Ef(l.height,a[l.height.prop],t,s);return u>0&&p>0?{widthPx:u,heightPx:p}:null}let c=t_e(i,t,s);if(c)return c;let d=e_e(r,a);if(d){let u=oU(d);if(u)return{widthPx:u.width,heightPx:u.height}}return null}function r_e(e,t){return e==null?0:typeof e=="number"?e:e.unit==="px"?e.value:e.value*t}function t6(e,t,s){return!e||e.mode!=="column"&&e.mode!=="row"?null:{mode:e.mode,gapPx:Math.max(0,r_e(e.gap,e.mode==="column"?s:t)),align:e.align??"center",anchor:e.anchor??"center",anchorOffsetX:e.anchorOffset?.x??0,anchorOffsetY:e.anchorOffset?.y??0}}var lq=e=>({ox:e.includes("left")?"start":e.includes("right")?"end":"center",oy:e.includes("top")?"start":e.includes("bottom")?"end":"center"}),zy=(e,t,s,r)=>e==="start"?r:e==="end"?s-t-r:(s-t)/2+r;function Ry(e,t){let s=0,r=0;for(let o of t){let a=e.mode==="column"?o.size.heightPx:o.size.widthPx,i=e.mode==="column"?o.size.widthPx:o.size.heightPx;s+=a,r=Math.max(r,i)}return t.length>1&&(s+=e.gapPx*(t.length-1)),e.mode==="column"?{widthPx:r,heightPx:s}:{widthPx:s,heightPx:r}}function o_e(e,t,s,r){let o=new Map;if(t.length===0)return o;let a=Ry(e,t),{ox:i,oy:l}=lq(e.anchor),c=zy(i,a.widthPx,s,e.anchorOffsetX),d=zy(l,a.heightPx,r,e.anchorOffsetY),u=(f,_)=>e.align==="start"?0:e.align==="end"?_-f:(_-f)/2,p=0;for(let f of t)if(e.mode==="column"){let _=c+u(f.size.widthPx,a.widthPx)+f.size.widthPx/2,v=d+p+f.size.heightPx/2;o.set(f.id,{centerXPx:_,centerYPx:v}),p+=f.size.heightPx+e.gapPx}else{let _=c+p+f.size.widthPx/2,v=d+u(f.size.heightPx,a.heightPx)+f.size.heightPx/2;o.set(f.id,{centerXPx:_,centerYPx:v}),p+=f.size.widthPx+e.gapPx}return o}function a_e(e,t,s){let r=t6(e.layout,t,s);if(r){let o=s6(e,t,s);return o.length===0?null:Ry(r,o)}return s_e({type:e.componentName,decl:e.decl,props:e.props,boundingBox:e.boundingBox,requiresChild:e.requiresChild,availableWidthPx:t},t,s)}function s6(e,t,s){let r=[];for(let o of e.children){if(o.visible===!1||o.absolute)continue;let a=a_e(o,t,s);a&&r.push({id:o.id,size:a,view:o})}return r}function n_e(e,t,s){if(!e.decl?.computeBounds)return{x:0,y:0};let r=e.decl.computeBounds(e.props,t,s),o=typeof e.props.center?.x=="number"?e.props.center.x:.5,a=typeof e.props.center?.y=="number"?e.props.center.y:.5;return{x:r.centerXPx-o*t,y:r.centerYPx-a*s}}function i_e(e,t,s,r,o,a,i,l){let c=t6(e.layout,o,a);if(c){cq(e,c,o,a,i,{centerXPx:s,centerYPx:r},l);return}let d=e.decl?.propBindings?.x?.prop??e.decl?.propBindings?.y?.prop;if(d){if(!e.positionDriven){let u=n_e(e,o,a);i.push({kind:"position",id:e.id,prop:d,value:{x:(s-u.x)/o,y:(r-u.y)/a}})}return}i.push({kind:"box",id:e.id,xPx:s-t.widthPx/2,yPx:r-t.heightPx/2,widthPx:t.widthPx,heightPx:t.heightPx})}function cq(e,t,s,r,o,a,i,l){let c=l??s6(e,s,r);if(c.length===0)return;let d=t;if(a){let p=Ry(t,c);d={...t,anchor:"top-left",anchorOffsetX:a.centerXPx-p.widthPx/2,anchorOffsetY:a.centerYPx-p.heightPx/2}}if(i){let p=Ry(d,c),{ox:f,oy:_}=lq(d.anchor);i.set(e.id,{leftPx:zy(f,p.widthPx,s,d.anchorOffsetX),topPx:zy(_,p.heightPx,r,d.anchorOffsetY),widthPx:p.widthPx,heightPx:p.heightPx})}let u=o_e(d,c,s,r);for(let p of c){let f=u.get(p.id);f&&i_e(p.view,p.size,f.centerXPx,f.centerYPx,s,r,o,i)}}function l_e(e,t,s,r){let o=[],a=i=>{let l=t6(i.layout,t,s);if(l){let c=s6(i,t,s);cq(i,l,t,s,o,void 0,r,c);let d=new Set(c.map(u=>u.id));for(let u of i.children)u.visible!==!1&&(d.has(u.id)||a(u));return}for(let c of i.children)c.visible!==!1&&a(c)};for(let i of e)i.visible!==!1&&a(i);return o}var c_e=class{frameTimesMs=[];frameTimesIndex=0;frameTimesCount=0;maxSamples=60;targetFrameTime=16.67;jankFrameCount=0;totalFrameCount=0;memorySnapshots=[];memorySnapshotIndex=0;maxMemorySnapshots=300;nodeCount=0;rttNodeCount=0;lastCpuTime=null;lastGpuTime=null;isRendering=!1;lastFrameTimestamp=0;frameIntervals=[];frameIntervalsIndex=0;frameIntervalsCount=0;pushToCircularBuffer(e,t,s,r,o){return e.length<o?(e.push(t),{index:e.length,count:e.length}):(e[s%o]=t,{index:s+1,count:o})}getBufferValues(e,t){return t<=e.length?e.slice(0,t):e}recordFrame(e){let t=this.pushToCircularBuffer(this.frameTimesMs,e,this.frameTimesIndex,this.frameTimesCount,this.maxSamples);this.frameTimesIndex=t.index,this.frameTimesCount=t.count,this.totalFrameCount++,e>this.targetFrameTime&&this.jankFrameCount++;let s=performance.now();if(this.lastFrameTimestamp>0){let r=s-this.lastFrameTimestamp,o=this.pushToCircularBuffer(this.frameIntervals,r,this.frameIntervalsIndex,this.frameIntervalsCount,this.maxSamples);this.frameIntervalsIndex=o.index,this.frameIntervalsCount=o.count}this.lastFrameTimestamp=s,this.recordMemorySnapshot()}recordCpuTime(e){this.lastCpuTime=e}recordGpuTime(e){this.lastGpuTime=e}updateNodeCounts(e,t){this.nodeCount=e,this.rttNodeCount=t}setRendering(e){this.isRendering=e}recordMemorySnapshot(){if(!performance.memory)return;let e=performance.now(),t=performance.memory.usedJSHeapSize;if(this.memorySnapshots.length<this.maxMemorySnapshots)this.memorySnapshots.push({time:e,bytes:t});else{let s=this.memorySnapshots[this.memorySnapshotIndex];s.time=e,s.bytes=t,this.memorySnapshotIndex=(this.memorySnapshotIndex+1)%this.maxMemorySnapshots}}calculateMemoryGrowthRate(){if(this.memorySnapshots.length<2)return null;let e=this.memorySnapshots.length,t=e<this.maxMemorySnapshots?0:this.memorySnapshotIndex,s=e<this.maxMemorySnapshots?e-1:(this.memorySnapshotIndex-1+e)%e,r=this.memorySnapshots[t],o=this.memorySnapshots[s],a=(o.time-r.time)/1e3;return a<=0?null:(o.bytes-r.bytes)/(1024*1024)/a}calculateStdDev(e){if(e.length===0)return 0;let t=e.reduce((r,o)=>r+o,0)/e.length,s=0;for(let r=0;r<e.length;r++){let o=e[r]-t;s+=o*o}return Math.sqrt(s/e.length)}sortBuffer=[];calculateP99(e){let t=e.length;if(t===0)return 0;for(;this.sortBuffer.length<t;)this.sortBuffer.push(0);for(let r=0;r<t;r++)this.sortBuffer[r]=e[r];for(let r=1;r<t;r++){let o=this.sortBuffer[r],a=r-1;for(;a>=0&&this.sortBuffer[a]>o;)this.sortBuffer[a+1]=this.sortBuffer[a],a--;this.sortBuffer[a+1]=o}let s=Math.floor(t*.99);return this.sortBuffer[Math.min(s,t-1)]}calculateComplexityScore(){return this.nodeCount+this.rttNodeCount*10}calculateIntensityScore(){let e=this.getBufferValues(this.frameTimesMs,this.frameTimesCount),t=e.length;if(t===0)return{score:0,label:"N/A"};let s=e.reduce((u,p)=>u+p,0)/t,r=Math.min(s/16.67*100,100),o=this.calculateComplexityScore(),a=Math.min(o/100*100,100),i=0;this.lastGpuTime!==null&&(i=Math.min(this.lastGpuTime/16.67*100,100));let l=this.lastGpuTime!==null?{frame:.4,gpu:.4,complexity:.2}:{frame:.7,gpu:0,complexity:.3},c=Math.round(r*l.frame+i*l.gpu+a*l.complexity),d;return c<=20?d="Very Light":c<=40?d="Light":c<=60?d="Medium":c<=80?d="Heavy":d="Very Heavy",{score:Math.min(c,100),label:d}}getStats(e){let t=this.getBufferValues(this.frameTimesMs,this.frameTimesCount),s=this.getBufferValues(this.frameIntervals,this.frameIntervalsCount),r=t.length,o=s.length>0?1e3/(s.reduce((P,C)=>P+C,0)/s.length):0,a=r>0?t.reduce((P,C)=>P+C,0)/r:0,i=r>0?Math.min(...t):0,l=r>0?Math.max(...t):0,c=this.calculateP99(t),d=this.calculateStdDev(t),u=this.totalFrameCount>0?this.jankFrameCount/this.totalFrameCount*100:0,p=performance.memory,f=p?p.usedJSHeapSize/(1024*1024):null,_=this.calculateMemoryGrowthRate(),v=a>0?a/this.targetFrameTime*100:0,g=e?.render?.calls??null,y=e?.programs?.length??null,x=e?.memory?.textures??null,w=this.calculateIntensityScore();return{fps:Math.round(o),avgFrameTime:Math.round(a*100)/100,minFrameTime:Math.round(i*100)/100,maxFrameTime:Math.round(l*100)/100,p99FrameTime:Math.round(c*100)/100,stdDevFrameTime:Math.round(d*100)/100,jankCount:this.jankFrameCount,jankPercent:Math.round(u*10)/10,nodeCount:this.nodeCount,rttNodeCount:this.rttNodeCount,complexityScore:this.calculateComplexityScore(),memoryUsedMB:f!==null?Math.round(f*100)/100:null,memoryGrowthRate:_!==null?Math.round(_*1e3)/1e3:null,cpuTime:this.lastCpuTime!==null?Math.round(this.lastCpuTime*100)/100:null,gpuTime:this.lastGpuTime!==null?Math.round(this.lastGpuTime*100)/100:null,budgetUsed:Math.round(v*10)/10,drawCalls:g,shaderPrograms:y,textureCount:x,intensityScore:w.score,intensityLabel:w.label,isRendering:this.isRendering}}reset(){this.frameTimesMs.length=0,this.frameTimesIndex=0,this.frameTimesCount=0,this.frameIntervals.length=0,this.frameIntervalsIndex=0,this.frameIntervalsCount=0,this.lastFrameTimestamp=0,this.jankFrameCount=0,this.totalFrameCount=0,this.memorySnapshots.length=0,this.memorySnapshotIndex=0,this.sortBuffer.length=0,this.lastCpuTime=null,this.lastGpuTime=null}},d_e=32,u_e=5,p_e=(()=>{let e=0,t=new Set,s=(d,u)=>{t.forEach(p=>{try{p[d](u)}catch(f){gr("[Shaders] Error in pointer handler:",f)}})},r=d=>s("onMouseMove",d),o=d=>s("onTouchMove",d),a=d=>s("onMouseDown",d),i=d=>s("onTouchStart",d),l=()=>s("onMouseUp"),c=()=>s("onTouchEnd");return{register(d){return t.add(d),e++,e===1&&typeof window<"u"&&(window.addEventListener("mousemove",r),window.addEventListener("touchmove",o),window.addEventListener("mousedown",a,!0),window.addEventListener("touchstart",i,!0),window.addEventListener("mouseup",l,!0),window.addEventListener("touchend",c,!0)),()=>{t.delete(d),e--,e===0&&typeof window<"u"&&(window.removeEventListener("mousemove",r),window.removeEventListener("touchmove",o),window.removeEventListener("mousedown",a,!0),window.removeEventListener("touchstart",i,!0),window.removeEventListener("mouseup",l,!0),window.removeEventListener("touchend",c,!0))}}}})();function m_e(e){if(!e)return!1;let t=e;if(typeof e=="string")try{t=JSON.parse(e)}catch{return!1}if(!t||typeof t!="object")return!1;for(let s in t){let r=t[s];if(r&&typeof r=="object"&&r.type==="mouse")return!0}return!1}function dq(){let e=null,t=null,s=null,r=null,o=null,a=null,i=!1,l=!1,c=!1,d=null,u=new Map,p=null,f=new Map,_=[],v=[],g=Kfe({maxSize:4,dispose:H=>Zp(H)}),y=new Set,x=null,w=null,P=!0,C=0,k=0,z=0,U=0,L=1,B=8192,D=0,G=0,F=!1,V=()=>z||C||1,W=()=>U||k||1,q=!0,$=!1,Q=!1,ee=0,re=0,ne=0,ce=null,oe=null,we=-10,de=-10,xe=!1,Te=!1,Oe=null,Ee=!1,Re=null,Ne=null,ke=null,Ce=null,Se=null,$e=null,We=!1,ut="p3-linear",yt="linear",Qe=!1,lt=null,vt=null,wt=!1,St=!1,kt=null,It=!1,Yt=null,Qt=null,ns=!1,hs=null,rs=null,Ss=0,gs=0,fs=new c_e,ys={deltaTime:0,pointer:{x:-10,y:-10,seen:!1},pointerActive:!1,dimensions:{width:0,height:0}},Js=xk(()=>am()),wr=H=>H.replace(/[^a-zA-Z0-9_]/g,"_"),ir=H=>{let Z=f.get(H);if(!Z)return[];let se=[];for(let be of Z){let me=u.get(be);me&&se.push(me)}return se},Dr=H=>{let Z=wr(H);for(let[se,be]of u)if(be.metadata.id===Z)return se;return null},Mr=(H,Z)=>{if(Z==="center")return;let se=H.boundingBoxDeclaration;if(!se)return;let be={};for(let[me,Pe]of Object.entries(H.uniforms))be[me]=Pe._rawDimensional!==void 0?Pe._rawDimensional:Pe.value;return fe(H,be.shapeSdfUrl),m3(se,be,V(),W())},io=new WeakMap,fe=(H,Z)=>{if(typeof Z!="string"||!Z||vk(Z))return;let se=io.get(H)??new Set;io.set(H,se),!se.has(Z)&&(se.add(Z),mh(Z,()=>{se.delete(Z),u.get(H.id)===H&&(Ye(H),pr()&&Us(),Ua())}))},Ye=H=>{let Z=H.boundingBoxDeclaration,se=H.extraDimProps,be=Xu(Z,se);if(!be)return;let me=H.uniforms.origin?.value??"center",Pe=Mr(H,me),Ke=[...be.positionProps,...be.sizeProps.keys()];for(let bt of Ke){let Pt=H.uniforms[bt];if(!Pt||Pt._rawDimensional===void 0)continue;let $t=Df(Z,bt,Pt._rawDimensional,me,V(),W(),se,Pe);Pt.value=$t,al(H,bt,$t)}},De=(H,Z,se)=>{if(typeof se=="number")return se;let be=H.uniforms.origin?.value??"center",me=Df(H.boundingBoxDeclaration,Z,se,be,V(),W(),H.extraDimProps);return typeof me=="number"?me:se?.value??0},ze=()=>{let{width:H,height:Z}=nl();return H/Math.max(1,Z)},Ge=H=>{let Z=H.metadata.transform;return{offsetX:Z?.offsetX??0,offsetY:Z?.offsetY??0,rotation:Z?.rotation??0,scale:Z?.scale??1,anchorX:Z?.anchorX??.5,anchorY:Z?.anchorY??.5,aspectRatio:ze()}},et=H=>{let Z=H.metadata.boundingBox;if(!Z)return null;let se=Ux(Z,V(),W());return{centerX:se.centerX,centerY:se.centerY,halfWidth:se.halfWidthUV,halfHeight:se.halfHeightUV,cornerRadius:se.cornerRadiusUV,rotation:se.rotation,aspectRatio:ze()}},_t=H=>!!H.metadata.boundingBox&&!!H.boundingBoxDeclaration&&!Hv(H.metadata.boundingBox),zt=H=>{let Z=H.boundingBoxDeclaration;if(!Z||!H.uniforms||!Z.computeBounds&&!Z.propBindings)return null;let se={};for(let[Pt,$t]of Object.entries(H.uniforms))se[Pt]=$t._rawDimensional!==void 0?$t._rawDimensional:$t.value;let be=m3(Z,se,V(),W());if(be.hwx<=0&&be.hhy<=0)return null;let me=.5,Pe=.5,Ke=Z.propBindings?.x?.prop??Z.propBindings?.y?.prop,bt=Ke?H.uniforms[Ke]?.value:void 0;if(bt&&typeof bt.x=="number"&&typeof bt.y=="number"&&(me=bt.x,Pe=bt.y),Ke){let Pt=H.metadata.maps?.[Ke];if(Pt?.type==="mouse-position"){let $t=H.mouseDriverState[Ke];$t&&(me=$t.liveX??(typeof Pt.x=="number"?Pt.x:$t.currentX),Pe=$t.liveY??(typeof Pt.y=="number"?Pt.y:$t.currentY))}}return{centerX:me,centerY:Pe,halfWidth:be.hwx,halfHeight:be.hhy}},Lt=H=>{if(!H.definition.wantsBoundsParams)return null;let Z=ir(H.id).sort((se,be)=>se.metadata.renderOrder-be.metadata.renderOrder);for(let se of Z){if(se.metadata.visible===!1)continue;if(_t(se))return null;let be=zt(se);if(be)return be}return null},Ut=()=>{for(let H of u.values()){if(!H.definition.wantsBoundsParams)continue;let Z=Lt(H);Z&&(lr(H,"_childBounds_centerX",Z.centerX),lr(H,"_childBounds_centerY",Z.centerY),lr(H,"_childBounds_halfWidth",Z.halfWidth),lr(H,"_childBounds_halfHeight",Z.halfHeight))}},Hs=!1,Us=()=>{Hs=!0,Ua()},pr=()=>{for(let H of u.values()){let Z=H.metadata.flow?.mode;if(Z==="column"||Z==="row")return!0}return!1},go=H=>{let Z={};for(let[Pe,Ke]of Object.entries(H.uniforms))Z[Pe]=Ke._rawDimensional!==void 0?Ke._rawDimensional:Ke.value;let se=H.boundingBoxDeclaration?.propBindings?.x?.prop??H.boundingBoxDeclaration?.propBindings?.y?.prop,be=se?H.uniforms[se]?.value:void 0,me=!!(se&&(be?.type==="mouse-position"||H.metadata.maps?.[se]));return{id:H.id,componentName:H.componentName,visible:H.metadata.visible!==!1,absolute:H.metadata.absolute===!0,requiresChild:H.requiresChild,layout:H.metadata.flow,decl:H.boundingBoxDeclaration,props:Z,boundingBox:H.metadata.boundingBox,positionDriven:me,children:ir(H.id).sort((Pe,Ke)=>Pe.metadata.renderOrder-Ke.metadata.renderOrder).map(go)}},lo=()=>{if(!pr()){Hs=!1;return}let H=V(),Z=W();if(H<=1||Z<=1)return;Hs=!1;let se=[];for(let me of u.values())me.parentId===null&&se.push(go(me));let be=l_e(se,H,Z);for(let me of be){let Pe=u.get(me.id);if(Pe)if(me.kind==="position"){let Ke=Pe.uniforms[me.prop];if(!Ke)continue;let bt=Ke.value,Pt=bt&&typeof bt=="object"?{...bt,x:me.value.x,y:me.value.y}:me.value;Ke.value=Pt,al(Pe,me.prop,Pt)}else{let Ke=_t(Pe);if(Pe.metadata.boundingBox={x:{value:me.xPx,unit:"px"},y:{value:me.yPx,unit:"px"},width:{value:me.widthPx,unit:"px"},height:{value:me.heightPx,unit:"px"},origin:"top-left",rotation:Pe.metadata.boundingBox?.rotation??0,...Pe.metadata.boundingBox?.cornerRadius?{cornerRadius:Pe.metadata.boundingBox.cornerRadius}:{},...Pe.metadata.boundingBox?.lockAspect!==void 0?{lockAspect:Pe.metadata.boundingBox.lockAspect}:{}},!Ke&&_t(Pe))vi();else{let bt=et(Pe);if(bt)for(let[Pt,$t]of Object.entries(bt))lr(Pe,`_bbox_${Pt}`,$t)}}}},js=()=>{Hs&&lo()},La=null,da=()=>{pr()&&Us()},Hn=()=>{La||(La=aU(()=>{pr()&&Us()})),typeof document<"u"&&document.fonts?.addEventListener&&document.fonts.addEventListener("loadingdone",da)};Hn();let jn=H=>fl(H.metadata.transform),_i=(H,Z,se)=>{let be=H.mapValues[Z]??{inputMin:0,inputMax:1,outputMin:0,outputMax:1,curve:0};if(se.type==="map"){let me=se;be.inputMin=me.inputMin,be.inputMax=me.inputMax,be.outputMin=De(H,Z,me.outputMin),be.outputMax=De(H,Z,me.outputMax),be.curve=me.curve??0}else if(se.type==="mouse"){let me=se;be.outputMin=De(H,Z,me.outputMin),be.outputMax=De(H,Z,me.outputMax),be.curve=me.curve??0}else if(se.type==="auto-animate"){let me=se;be.outputMin=De(H,Z,me.outputMin),be.outputMax=De(H,Z,me.outputMax)}return H.mapValues[Z]=be,be},Hp=(H,Z,se)=>{let be=H.mouseDriverState[Z];if(be)return be;if(se.type==="mouse-position"){let me=se.x===void 0||se.x==="mouse",Pe=se.y===void 0||se.y==="mouse";be={currentX:me?we:se.x,currentY:Pe?de:se.y,velocityX:0,velocityY:0,pointerSnapped:Te}}else be={currentX:Math.max(.001,se.axis==="x"?we:de),currentY:0,velocityX:0,velocityY:0,pointerSnapped:Te};return H.mouseDriverState[Z]=be,be},jp=H=>{let Z=H.metadata.maps;if(Z)for(let[se,be]of Object.entries(Z))se in H.uniforms&&(be.type==="map"?_i(H,se,be):be.type==="mouse-position"?Hp(H,se,be):be.type==="mouse"?(Hp(H,se,be),_i(H,se,be)):be.type==="auto-animate"&&(H.autoAnimateState[se]||(H.autoAnimateState[se]={}),_i(H,se,be)))},tu=H=>{let Z=H.definition.animatedTime;return(Z?H.uniforms[Z.speed]:void 0)??H},Kp=(H,Z)=>H.uniforms[Z]??H,N_=H=>{let Z=[];for(let[me,Pe]of Object.entries(H.uniforms))Z.push({name:me,initial:Pe.value,transform:Pe.transform,cpu:Pe.cpu,schema:Pe.schema});if(Z.push({name:"_opacity",schema:n,initial:H.metadata.opacity??1}),H.definition.animatedTime&&Z.push({name:"_animTime",schema:n,initial:Jd(tu(H)).value}),H.definition.extraAnimatedTimes)for(let[me,Pe]of Object.entries(H.definition.extraAnimatedTimes))Z.push({name:`_animTime_${me}`,schema:n,initial:Jd(Kp(H,Pe)).value});let se=H.definition.extraFields;if(se)for(let[me,Pe]of Object.entries(se))Z.push({name:me,schema:Pe.schema,initial:Pe.initial});if(jn(H)){let me=Ge(H);for(let[Pe,Ke]of Object.entries(me))Z.push({name:`_xform_${Pe}`,schema:n,initial:Ke})}if(_t(H)){let me=et(H);if(me)for(let[Pe,Ke]of Object.entries(me))Z.push({name:`_bbox_${Pe}`,schema:n,initial:Ke})}if(H.definition.wantsBoundsParams){let me=Lt(H)??{centerX:.5,centerY:.5,halfWidth:.5,halfHeight:.5};for(let[Pe,Ke]of Object.entries(me))Z.push({name:`_childBounds_${Pe}`,schema:n,initial:Ke})}let be=H.metadata.maps;if(be){jp(H);for(let[me,Pe]of Object.entries(be))if(me in H.uniforms){if(Pe.type==="map"){let Ke=H.mapValues[me];Z.push({name:`_map_${me}_inputMin`,schema:n,initial:Ke.inputMin}),Z.push({name:`_map_${me}_inputMax`,schema:n,initial:Ke.inputMax}),Z.push({name:`_map_${me}_outputMin`,schema:n,initial:Ke.outputMin}),Z.push({name:`_map_${me}_outputMax`,schema:n,initial:Ke.outputMax}),Z.push({name:`_map_${me}_curve`,schema:n,initial:Ke.curve})}else if(Pe.type==="mouse-position"){let Ke=H.mouseDriverState[me];Z.push({name:`_smoothed_${me}`,schema:m,initial:[Ke.currentX,1-Ke.currentY]})}else if(Pe.type==="mouse"){let Ke=H.mapValues[me];Z.push({name:`_smoothed_${me}`,schema:n,initial:Ke.outputMin})}else if(Pe.type==="auto-animate"){let Ke=H.mapValues[me];Z.push({name:`_smoothed_${me}`,schema:n,initial:Ke.outputMin})}}}return Z},al=(H,Z,se)=>{let be=H._liveHandles?.[Z];be&&(lt?.(ut),pM(be,se))},lr=(H,Z,se)=>{let be=H._liveHandles?.[Z];be instanceof ai&&(be.value=se)},$_=(H,Z,se)=>{let be=H._liveHandles?.[Z];be instanceof ai?be.value=se:be instanceof Wm&&Array.isArray(se)&&(be.array=se)},X_=H=>{for(let Z of Object.values(H.uniforms))if(Z.transform===st){let se=Z.value;if(typeof se=="string")return st(se);if(typeof se=="number")return se}return 0},H_=H=>{if(!H.uniforms.convertedColorsArray)return;let Z=null;for(let Pe of Object.values(H.uniforms))if(Pe.transform===yc){Z=Pe.value??null;break}let se=r3(Z,Rf),be=o3(se.colors,se.stopCount,X_(H)),me=(Pe,Ke)=>{let bt=H.uniforms[Pe];bt&&(bt.value=Ke),al(H,Pe,Ke)};me("colorsArray",se.colors),me("positionsArray",se.positions),me("convertedColorsArray",be),me("stopCount",se.stopCount)},Qp=(H,Z)=>{let se=H.uniforms[Z],be=se?._listSpec;if(!se||!be)return;let me=se._rawList,Pe=new Set,Ke=l3(me,be,{color:Rf,drivenPosition:($t,er,Tr)=>{let mr=IE(Z,$t,er);Pe.add(mr);let ts=Hp(H,mr,Tr);return ts.liveX!==void 0&&ts.liveY!==void 0?{x:ts.liveX,y:1-ts.liveY}:void 0}});for(let $t of Object.keys(H.mouseDriverState)){let er=i3($t);er&&er.prop===Z&&!Pe.has($t)&&delete H.mouseDriverState[$t]}se.value=Ke,al(H,Z,Ke);let bt=c3(Ke,be),Pt=($t,er)=>{let Tr=H.uniforms[$t];Tr&&(Tr.value=er),al(H,$t,er)};for(let[$t,er]of Object.entries(bt.fields))Pt(Bf(Z,$t),er);Pt(zf(Z),bt.count)},Dy=(H,Z)=>{let se=H.metadata.maps?.[Z];if(se)return se;let be=i3(Z);if(!be)return;let me=H.uniforms[be.prop]?._rawList,Pe=(Array.isArray(me)?me[be.index]:void 0)?.[be.field];return ah(Pe)?Pe:void 0},Ly=H=>Object.values(H.uniforms).some(Z=>Z._listSpec&&d3(Z._rawList,Z._listSpec)),j_=H=>{if(lr(H,"_opacity",H.metadata.opacity??1),H.definition.animatedTime&&lr(H,"_animTime",Jd(tu(H)).value),H.definition.extraAnimatedTimes)for(let[se,be]of Object.entries(H.definition.extraAnimatedTimes))lr(H,`_animTime_${se}`,Jd(Kp(H,be)).value);if(jn(H))for(let[se,be]of Object.entries(Ge(H)))lr(H,`_xform_${se}`,be);if(_t(H)){let se=et(H);if(se)for(let[be,me]of Object.entries(se))lr(H,`_bbox_${be}`,me)}let Z=H.metadata.maps;if(Z){for(let[se,be]of Object.entries(Z))if(be.type==="map"&&H.mapValues[se]){let me=H.mapValues[se];lr(H,`_map_${se}_inputMin`,me.inputMin),lr(H,`_map_${se}_inputMax`,me.inputMax),lr(H,`_map_${se}_outputMin`,me.outputMin),lr(H,`_map_${se}_outputMax`,me.outputMax),lr(H,`_map_${se}_curve`,me.curve)}}},Uy=(H,Z)=>{let se={};for(let be of Object.keys(H.uniforms)){let me=Z[be];me&&(se[be]=me)}return se},Oy=H=>{let Z={};for(let[se,be]of Object.entries(H.uniforms))Z[se]={accessorPath:"",cpu:!!be.cpu,value:be.value};return Z},Gy=(H,Z)=>({id:H.id,customId:H.metadata.id,componentName:H.componentName,parentId:H.parentId,definition:H.definition,metadata:H.metadata,handles:Z,domCanvas:H.domCanvas}),K_=(H,Z)=>{let se=new Map,be=Pe=>Gy(Pe,H&&Z?Uy(Pe,Z.get(Pe.id)??{}):Oy(Pe)),me=Pe=>{let Ke=se.get(Pe);if(Ke)return Ke;let bt=u.get(Pe);if(!bt)return;let Pt=be(bt);return se.set(Pe,Pt),Pt};return{rootId:p,getNode:me,getChildren:Pe=>ir(Pe).map(Ke=>me(Ke.id)),resolveCustomId:Pe=>Dr(Pe),store:{gpuAccessor:(Pe,Ke)=>H?H.gpuAccessor(Pe,Ke):"",layout:H?.layout}}},Q_=()=>({toneMapping:yt,flipY:!1,premultiplyAlpha:!0,canvas:a??void 0,dimensions:nl(),gpu:t?{device:t.device,root:t}:void 0,writeExtraField:(H,Z,se)=>{let be=u.get(H);be&&$_(be,Z,se)},createMediaTexture:H=>{if(!r)throw new Error("[gpu] createMediaTexture before init");return r.createMediaTexture(H)},createDataTexture:H=>{if(!r)throw new Error("[gpu] createDataTexture before init");return r.createDataTexture(H)},resolveMapWindow:(H,Z)=>{let se=u.get(H),be=se?.metadata.maps?.[Z];if(!se||!be||be.type!=="map")return;let me=_i(se,Z,be);return{inputMin:me.inputMin,inputMax:me.inputMax,outputMin:me.outputMin,outputMax:me.outputMax,curve:me.curve}},resolveDriverCpuValue:(H,Z)=>{let se=u.get(H);if(!se)return;if(Z==="_animTime"||Z.startsWith("_animTime_")){let me=se._liveHandles?.[Z];return me instanceof ai?me.value:void 0}let be=se.metadata.maps?.[Z];if(be){if(be.type==="mouse-position"){let me=se.mouseDriverState[Z];return!me||me.liveX===void 0||me.liveY===void 0?void 0:{x:me.liveX,y:1-me.liveY}}if(be.type==="mouse"||be.type==="auto-animate"){let me=se._liveHandles?.[`_smoothed_${Z}`];return me instanceof ai?me.value:void 0}}}}),Fy=()=>{let H=[];for(let[Z,se]of u){let be=se.metadata;H.push(`aopac:${Z}:${(be.opacity??1)<1}`);let me=se.uniforms.stopCount?.value;typeof me=="number"&&H.push(`stops:${Z}:${me>1?me:0}`);for(let[Pe,Ke]of Object.entries(se.uniforms)){if(!Ke.compileTimeWhen)continue;let bt=Ke._lastCompiledValue;typeof bt!="number"&&typeof bt!="boolean"||H.push(`ctw:${Z}:${Pe}:${String(bt)}`)}if(be.maps){let Pe=Object.entries(be.maps).sort(([Ke],[bt])=>Ke<bt?-1:Ke>bt?1:0).map(([Ke,bt])=>{let Pt=bt;return`${Ke}=${Pt.type}:${Pt.source??""}:${Pt.channel??""}:${Pt.axis??""}`}).join(",");H.push(`mapfp:${Z}:${Pe}`)}}return H},Z_=()=>p?jfe([...mE(K_(null,null),Q_()),...Fy()]):null,nl=()=>({width:Math.max(1,Math.round(C*L)),height:Math.max(1,Math.round(k*L))}),Iy=H=>{let Z={};for(let se of H.textures)se.kind!=="rtt"&&se.resource&&(Z[se.key]=se.resource);return Z},J_=H=>{if(!t||!r||!o)throw new Error("[gpu] buildComposition before init");let Z=uM(t,{systemSchema:Hfe}),se=new Map;for(let[Ke,bt]of u)se.set(Ke,Z.defineNode(Ke,N_(bt)));Z.defineSystem(),Z.finalize();let be=pE(K_(Z,se),Q_()),me=Qfe(t,{textureManager:r,dispatcher:o});me.setComposition(be,Z.bindGroup,nl(),Iy(be));let Pe={hash:H,store:Z,ir:be,passManager:me,handlesById:se,fresh:!0};return y.add(Pe),Pe},Zp=H=>{try{for(let Z of H.ir.onCleanup)Z()}catch(Z){gr("[gpu] composition onCleanup error:",Z)}try{H.passManager.dispose()}catch(Z){gr("[gpu] passManager dispose error:",Z)}try{H.store.destroy()}catch(Z){gr("[gpu] store destroy error:",Z)}y.delete(H),x===H&&(x=null)},Yy=H=>{let Z=!1;for(let[se,be]of H.handlesById){let me=u.get(se);me&&me._liveHandles!==be&&(me._liveHandles=be,Z=!0)}if(!(H===x&&!Z)){if(!H.fresh){for(let se of u.values()){for(let[be,me]of Object.entries(se.uniforms))al(se,be,me.value);jp(se),j_(se)}H.store.writeAll()}H.fresh=!1,x=H,!wt&&H.ir.composedNodeIds.size>0&&(St=!0)}},vi=()=>{P=!0,pr()&&(Hs=!0),Ua()},Ua=()=>{Yt||Js.running||oe===null&&typeof requestAnimationFrame=="function"&&(oe=requestAnimationFrame(()=>{oe=null,am()}))},Jp=(H,Z,se,be,me={},Pe,Ke)=>{if(Yt)return;if(Z===null){let ts=_.findIndex(Fo=>Fo.id===H);if(ts!==-1){_.splice(ts,1),v=v.filter(Fo=>Fo.id!==H);return}em(H);return}if(!Pe){console.error(`[gpu] registerNode("${H}") requires a componentDefinition`);return}if(!c){let ts=_.findIndex(Kn=>Kn.id===H),Fo={id:H,definition:Pe,parentId:se,metadata:be,uniforms:me,domCanvas:Ke};ts!==-1?(_[ts]=Fo,v=v.filter(Kn=>Kn.id!==H)):_.push(Fo);return}let bt=0;if(se!==null){let ts=f.get(se);if(ts&&ts.size>0){let Fo=0;for(let Kn of ts){let Oa=u.get(Kn);Oa&&Oa.metadata.renderOrder>Fo&&(Fo=Oa.metadata.renderOrder)}bt=Fo+1}}let Pt={blendMode:be?.blendMode||"normal",opacity:be?.opacity,visible:be?.visible!==!1,id:be?.id?wr(be.id):be?.id,mask:be?.mask,maps:be?.maps,renderOrder:be?.renderOrder!==void 0?be.renderOrder:bt,transform:be?.transform,boundingBox:be?.boundingBox,flow:be?.flow,absolute:be?.absolute},$t=Pe.boundingBoxDeclaration,er=Pe.props?p3(Pe.props):void 0,Tr={id:H,componentName:Pe.name||"Unknown",parentId:se,definition:Pe,metadata:Pt,uniforms:me,domCanvas:Ke,requiresRTT:!!Pe.requiresRTT,requiresChild:!!Pe.requiresChild,blendWithChildren:!!Pe.blendWithChildren,acceptsUVContext:!!Pe.acceptsUVContext,providesUVContextViaCompute:!!Pe.providesUVContextViaCompute,usesPointer:!!Pe.usesPointer,hasUvRemap:!!Pe.uvRemap,boundingBoxDeclaration:$t,wantsBoundsParams:!!Pe.wantsBoundsParams,extraDimProps:er,mouseDriverState:{},autoAnimateState:{},mapValues:{},_liveHandles:null};if($t||er){let ts=Xu($t,er);if(ts){let Fo=me.origin?.value??"center",Kn=Mr(Tr,Fo);for(let Oa of[...ts.positionProps,...ts.sizeProps.keys()]){let ha=me[Oa];ha&&(ha._rawDimensional===void 0&&(ha._rawDimensional=ha.value),ha.value=Df($t,Oa,ha._rawDimensional,Fo,V(),W(),er,Kn))}}}for(let ts of Object.values(me))ts.compileTimeWhen&&ts._lastCompiledValue===void 0&&(ts._lastCompiledValue=ts.value);u.set(H,Tr),se===null&&(p=H);let mr=f.get(se)||new Set;mr.add(H),f.set(se,mr),nm(),vi(),pr()&&Us()},e1=H=>{_.some(Z=>Z.id===H.id)&&v.push(H)},su=(H,Z,se)=>{let be=u.get(H);if(!be){e1({id:H,kind:"uniform",name:Z,value:se});return}let me=be.uniforms[Z];if(!me)return;let Pe=be.boundingBoxDeclaration,Ke=be.extraDimProps;if((Pe||Ke)&&f3(Pe,Z,Ke)){me._rawDimensional=se;let bt=be.uniforms.origin?.value??"center",Pt=Mr(be,bt);se=Df(Pe,Z,se,bt,V(),W(),Ke,Pt)}if(me.transform===wd){me._rawList=se,Qp(be,Z),nm(),Ua();return}if(me.value=se,al(be,Z,se),(me.transform===yc||me.transform===st)&&H_(be),Z==="origin"&&Pe)Ye(be);else if(Pe&&(be.uniforms.origin?.value??"center")!=="center"){let bt=Xu(Pe,Ke),Pt=!!Pe.computeBounds||(bt?.sizeProps.has(Z)??!1),$t=bt?.positionProps.has(Z)??!1;Pt&&!$t&&Ye(be)}if(Z==="shape"&&nm(),pr()&&Us(),me.compileTime){vi();return}if(me.compileTimeWhen){let bt=me._lastCompiledValue;if(me.compileTimeWhen(bt,se)){me._lastCompiledValue=se,vi();return}}Ua()},t1=(H,Z)=>{let se=u.get(H);if(!se){e1({id:H,kind:"metadata",metadata:Z});return}let be=!1;if(Z.blendMode!==void 0&&se.metadata.blendMode!==Z.blendMode&&(se.metadata.blendMode=Z.blendMode,be=!0),Z.opacity!==void 0&&se.metadata.opacity!==Z.opacity){let me=se.metadata.opacity??1,Pe=Z.opacity;se.metadata.opacity=Pe,lr(se,"_opacity",Pe),me>=1!=Pe>=1&&(be=!0)}if(Z.renderOrder!==void 0&&se.metadata.renderOrder!==Z.renderOrder&&(se.metadata.renderOrder=Z.renderOrder,be=!0),"visible"in Z){let me=Z.visible!==!1;se.metadata.visible!==me&&(se.metadata.visible=me,be=!0)}if(Z.id!==void 0){let me=wr(Z.id);se.metadata.id!==me&&(se.metadata.id=me,be=!0)}if("mask"in Z&&(se.metadata.mask?.source!==Z.mask?.source||se.metadata.mask?.type!==Z.mask?.type)&&(se.metadata.mask=Z.mask,be=!0),"maps"in Z&&JSON.stringify(se.metadata.maps)!==JSON.stringify(Z.maps)){let me=se.metadata.maps,Pe=Z.maps;if(se.metadata.maps=Pe,nm(),(()=>{if(!me||!Pe)return!0;let Ke=Object.keys(me),bt=Object.keys(Pe);if(Ke.length!==bt.length||!Ke.every(Pt=>Pt in Pe))return!0;for(let Pt of bt){let $t=me[Pt],er=Pe[Pt];if($t.type!==er.type)return!0;if(er.type==="map"){let Tr=$t,mr=er;if(Tr.source!==mr.source||Tr.channel!==mr.channel)return!0}else if(er.type==="mouse"&&$t.axis!==er.axis)return!0}return!1})()){if(me&&Pe)for(let Ke of Object.keys(me))Ke in Pe&&me[Ke].type!==Pe[Ke].type&&(delete se.mouseDriverState[Ke],delete se.autoAnimateState[Ke],delete se.mapValues[Ke]);be=!0}else if(Pe)for(let[Ke,bt]of Object.entries(Pe)){let Pt=_i(se,Ke,bt);bt.type==="map"&&(lr(se,`_map_${Ke}_inputMin`,Pt.inputMin),lr(se,`_map_${Ke}_inputMax`,Pt.inputMax),lr(se,`_map_${Ke}_outputMin`,Pt.outputMin),lr(se,`_map_${Ke}_outputMax`,Pt.outputMax),lr(se,`_map_${Ke}_curve`,Pt.curve))}}if(Z.transform!==void 0){let me=se.metadata.transform,Pe={offsetX:Z.transform.offsetX??me?.offsetX??0,offsetY:Z.transform.offsetY??me?.offsetY??0,rotation:Z.transform.rotation??me?.rotation??0,scale:Z.transform.scale??me?.scale??1,anchorX:Z.transform.anchorX??me?.anchorX??.5,anchorY:Z.transform.anchorY??me?.anchorY??.5,edges:Z.transform.edges??me?.edges??"transparent"},Ke=jn(se);se.metadata.transform=Pe;let bt=fl(Pe);if(Ke!==bt||me&&me.edges!==Pe.edges)be=!0;else if(bt)for(let[Pt,$t]of Object.entries(Ge(se)))lr(se,`_xform_${Pt}`,$t)}if(Z.boundingBox!==void 0&&Z.boundingBox!==null&&se.boundingBoxDeclaration!==void 0){let me=_t(se);se.metadata.boundingBox=Z.boundingBox;let Pe=_t(se);if(me!==Pe)be=!0;else if(Pe){let Ke=et(se);if(Ke)for(let[bt,Pt]of Object.entries(Ke))lr(se,`_bbox_${bt}`,Pt)}}else Z.boundingBox===null&&se.metadata.boundingBox!==void 0&&(se.metadata.boundingBox=void 0,be=!0);if("flow"in Z&&JSON.stringify(se.metadata.flow)!==JSON.stringify(Z.flow)){let me=se.metadata.flow?.mode==="column"||se.metadata.flow?.mode==="row";se.metadata.flow=Z.flow??void 0;let Pe=se.metadata.flow?.mode==="column"||se.metadata.flow?.mode==="row";if(me&&!Pe){let Ke=bt=>{for(let Pt of ir(bt))Ye(Pt),Ke(Pt.id)};Ke(H)}Us()}"absolute"in Z&&se.metadata.absolute!==Z.absolute&&(se.metadata.absolute=Z.absolute,Z.absolute&&Ye(se),Us()),pr()&&Us(),be?vi():Ua()},em=H=>{let Z=u.get(H);if(!Z)return;for(let be of ir(H))em(be.id);p===H&&(p=null);let se=f.get(Z.parentId);se&&(se.delete(H),se.size===0&&f.delete(Z.parentId)),u.delete(H),nm(),vi(),pr()&&Us()},s1=()=>{let H=ys.deltaTime;ne=gk(ce,ne,H,performance.now());for(let Z of u.values()){let se=Z.metadata.maps??{};for(let be in Z.mouseDriverState){let me=Z.mouseDriverState[be],Pe=Dy(Z,be);if(Pe){if(Pe.type==="mouse-position"){let Ke=Pe.smoothing??0,bt=Pe.momentum??0,Pt=Pe.x===void 0||Pe.x==="mouse",$t=Pe.y===void 0||Pe.y==="mouse";!me.pointerSnapped&&Te&&(me.pointerSnapped=!0,Pt&&(me.currentX=we,me.velocityX=0),$t&&(me.currentY=de,me.velocityY=0));let er,Tr;if(Pt){let[Qn,ou]=Wf(me.currentX,me.velocityX,we,Ke,bt,H);me.currentX=Qn,me.velocityX=ou,er=Qn}else er=Pe.x,me.velocityX=0;if($t){let[Qn,ou]=Wf(me.currentY,me.velocityY,de,Ke,bt,H);me.currentY=Qn,me.velocityY=ou,Tr=Qn}else Tr=Pe.y,me.velocityY=0;let mr=Pe.reach??1,ts=Pe.originX??.5,Fo=Pe.originY??.5,Kn=Pe.invertX?-1:1,Oa=Pe.invertY?-1:1,ha=ts+Kn*(er-ts)*mr,Pn=Fo+Oa*(Tr-Fo)*mr,Nc=ha,im=Pn,n1=Z.metadata.boundingBox;if(n1&&Z.boundingBoxDeclaration?.supportsResizeFit&&_t(Z)){let Qn=Ux(n1,V(),W()),ou=cE(ha,Pn,{centerX:Qn.centerX,centerY:Qn.centerY,halfWidthUV:Qn.halfWidthUV,halfHeightUV:Qn.halfHeightUV,rotationDeg:Qn.rotation,aspectRatio:ze()});Nc=ou.x,im=ou.y}me.liveX=Nc,me.liveY=im;let p6=Z._liveHandles?.[`_smoothed_${be}`];p6 instanceof ai&&p6.setComponents(Nc,1-im)}else if(Pe.type==="mouse"){let Ke=Pe.smoothing??0,bt=Pe.momentum??0,Pt=Pe.axis==="x"?we:de;!me.pointerSnapped&&Te&&(me.pointerSnapped=!0,me.currentX=Math.max(.001,Pt),me.velocityX=0);let[$t,er]=Wf(me.currentX,me.velocityX,Pt,Ke,bt,H);me.currentX=$t,me.velocityX=er;let Tr=Math.max(.001,$t),mr=Z.mapValues[be],ts=mr?mr.outputMin+(mr.outputMax-mr.outputMin)*Math.pow(Tr,Math.pow(2,-mr.curve*2)):Tr;me.liveScalar=ts,lr(Z,`_smoothed_${be}`,ts)}}}for(let[be,me]of Object.entries(Z.uniforms))me._listSpec&&d3(me._rawList,me._listSpec)&&Qp(Z,be);for(let be in Z.autoAnimateState){let me=se[be];if(!me||me.type!=="auto-animate")continue;let Pe=ne*(me.speed??1)*.2,Ke,bt=me.easing??me.waveform??"sine";if(me.mode==="loop")Ke=q3((Pe%1+1)%1,bt);else{let ts=(Pe%1+1)%1;Ke=q3(ts<.5?ts*2:(1-ts)*2,bt)}let Pt=Z.mapValues[be],$t=Pt?Pt.outputMin:De(Z,be,me.outputMin),er=Pt?Pt.outputMax:De(Z,be,me.outputMax),Tr=$t+Ke*(er-$t),mr=Z.uniforms[be];if(mr?.compileTimeWhen){let ts=mr._lastCompiledValue;mr.compileTimeWhen(ts,Tr)&&(mr._lastCompiledValue=Tr,vi())}lr(Z,`_smoothed_${be}`,Tr)}}},tm=()=>{let H=ys.deltaTime;for(let Z of u.values()){let se=Z.definition.animatedTime;if(se){let me=Z.uniforms[se.speed],Pe=me&&Number(me.value)||0,Ke=Jd(tu(Z));Ke.advance(H,Pe),lr(Z,"_animTime",Ke.value)}let be=Z.definition.extraAnimatedTimes;if(be)for(let[me,Pe]of Object.entries(be)){let Ke=Z.uniforms[Pe],bt=Ke&&Number(Ke.value)||0,Pt=Jd(Kp(Z,Pe));Pt.advance(H,bt),lr(Z,`_animTime_${me}`,Pt.value)}}},ru=(H,Z)=>hk(H,Z,{maxTextureDim:B,pixelRatio:L,viewportWidth:typeof window<"u"?window.innerWidth:H,viewportHeight:typeof window<"u"?window.innerHeight:Z}),sm=()=>{let H=(typeof window<"u"?window.devicePixelRatio:1)||1;return Math.min(H,TE())},Yl=(H,Z,se,be)=>{if(F&&H===C&&Z===k&&se===z&&be===U){let{width:bt,height:Pt}=nl();if(!a||a.width===bt&&a.height===Pt)return}C=H,k=Z,z=se,U=be,u3(se,be),F||(F=!0,u.size>0&&vi());let{width:me,height:Pe}=nl();a&&(a.width=me,a.height=Pe);let Ke=!1;for(let bt of y)bt.passManager.resize(me,Pe)&&(Ke=!0);for(let bt of y)for(let Pt of bt.ir.onResize)try{Pt({width:me,height:Pe})}catch($t){gr("[gpu] composition onResize error:",$t)}for(let bt of u.values()){if(jn(bt)&&lr(bt,"_xform_aspectRatio",ze()),_t(bt)){let Pt=et(bt);if(Pt)for(let[$t,er]of Object.entries(Pt))lr(bt,`_bbox_${$t}`,er)}Ye(bt)}if(lo(),Ke)for(let bt of y)n6(bt.store),bt.store.flush(),bt.passManager.repaintRtt();ee=0,am()},rm=(H,Z)=>{H<=0||Z<=0||H===D&&Z===G||(D=H,G=Z,$e={width:H,height:Z},!We&&typeof requestAnimationFrame=="function"&&(We=!0,requestAnimationFrame(()=>{if(We=!1,!$e)return;let se=$e;$e=null;let{width:be,height:me}=ru(se.width,se.height);Yl(be,me,se.width,se.height)})))},r1=H=>{let Z=H[0];if(!Z)return;let se,be;if(Z.contentBoxSize){let me=Array.isArray(Z.contentBoxSize)?Z.contentBoxSize[0]:Z.contentBoxSize;me?(se=Math.round(me.inlineSize),be=Math.round(me.blockSize)):(se=Math.round(Z.contentRect.width),be=Math.round(Z.contentRect.height))}else se=Math.round(Z.contentRect.width),be=Math.round(Z.contentRect.height);se===0||be===0||rm(se,be)},Wy=H=>{let Z=H[0];Z&&($=Z.isIntersecting)},om=()=>i&&!!t&&!!s&&C>0&&k>0,n6=H=>{let Z=H.systemHandles,{width:se,height:be}=nl(),me=sm(),Pe=(Ke,bt)=>{let Pt=Z[Ke];Pt instanceof ai&&(Pt.value=bt)};Pe("time",ne),Pe("viewportSize",[se,be]),Pe("logicalViewportSize",[V()*me,W()*me]),Pe("aspect",se/Math.max(1,be)),Pe("pointer",[we,de]),Pe("pointerActive",xe?1:0)},i6=H=>{for(let Z of H)try{Z(ys)}catch(se){gr("[gpu] render callback error:",se)}},l6=H=>{if(Yt||!om())return;let Z=performance.now(),se;if(H!==void 0)se=H;else{let Ke=yk(Z,{lastRenderTime:ee,isVisible:$,forceFullFrameRate:Q,minInterval:re});if(!Ke.render)return;se=Ke.deltaTime}ee=Z,Qe&&performance.mark("shader-cpu-start");let be=we>-5;ys.deltaTime=se,ys.pointer.x=be?we:.5,ys.pointer.y=be?de:.5,ys.pointer.seen=Te,ys.pointerActive=xe,ys.dimensions.width=C,ys.dimensions.height=k;let me=null,Pe=null;try{bk({updateDrivers:()=>{s1(),tm(),Ut(),js()},ensureComposition:()=>((P||w===null)&&(w=Z_(),P=!1),w===null?!1:(me=g.getOrBuild(w,()=>J_(w)),Yy(me),!!x)),beforeRender:()=>i6(x.ir.onBeforeRender),flush:()=>{n6(x.store),x.store.flush()},render:()=>{if(Qe&&performance.mark("shader-gpu-start"),Pe=g.renderValue??me,Pe?.passManager.render(s,ys,()=>x?.store.flush()),Qe){performance.mark("shader-gpu-end");try{performance.measure("shader-gpu-time","shader-gpu-start","shader-gpu-end");let Ke=performance.getEntriesByName("shader-gpu-time")[0];Ke&&fs.recordGpuTime(Ke.duration),performance.clearMeasures("shader-gpu-time"),performance.clearMarks("shader-gpu-start"),performance.clearMarks("shader-gpu-end")}catch{}}},markReady:()=>{g.markReady(w),St&&!wt&&(wt=!0,St=!1,vt&&queueMicrotask(vt))},afterRender:()=>i6((Pe??x).ir.onAfterRender)}),gs=0}catch(Ke){wq(Ke);return}if(Qe){performance.mark("shader-cpu-end");try{performance.measure("shader-cpu-time","shader-cpu-start","shader-cpu-end");let Ke=performance.getEntriesByName("shader-cpu-time")[0];Ke&&fs.recordCpuTime(Ke.duration),performance.clearMarks("shader-cpu-start"),performance.clearMarks("shader-cpu-end"),performance.clearMeasures("shader-cpu-time")}catch{}}fs.recordFrame(performance.now()-Z)},am=()=>l6(void 0),_q=async H=>{if(Yt)return;if(!om())throw new Error("Renderer is not ready");let Z=Js.running;Z&&o1(),ee=0,am(),t&&H?.waitForGpu!==!1&&await N3(t),Z&&Vy()},vq=async(H,Z)=>{l6(H),t&&Z?.waitForGpu!==!1&&await N3(t)},Vy=()=>{Yt||Js.running||!q||(fs.setRendering(!0),Js.start())},o1=()=>{Js.running&&(Js.stop(),fs.setRendering(!1))},a1=H=>{if(!a)return;Oe=a.getBoundingClientRect();let Z,se;if("touches"in H){if(H.touches.length===0)return;Z=H.touches[0].clientX,se=H.touches[0].clientY}else Z=H.clientX,se=H.clientY;we=(Z-Oe.left)/Oe.width,de=(se-Oe.top)/Oe.height,Te=!0},hq=H=>{!i||!a||(a1(H),xe=!0,Ua())},gq=H=>{!i||!a||(a1(H),xe=!0,Ua())},yq=()=>{i&&(xe=!1,Ua())},bq=()=>{i&&(xe=!1,Ua())},c6=(H,Z)=>{if(!i||!a)return!1;let se=a.getBoundingClientRect();return se.width===0||se.height===0?!1:H>=se.left&&H<=se.right&&Z>=se.top&&Z<=se.bottom},xq=H=>{H.button===0&&c6(H.clientX,H.clientY)&&(xe=!0,a1(H),Ua())},Aq=H=>{H.touches.length!==0&&c6(H.touches[0].clientX,H.touches[0].clientY)&&(xe=!0,a1(H),Ua())},nm=()=>{let H=!1;for(let Z of u.values()){if(Z.usesPointer){H=!0;break}if(m_e(Z.uniforms?.shape?.value)||Ly(Z)){H=!0;break}if(Z.metadata.maps){for(let se of Object.values(Z.metadata.maps))if(se&&typeof se=="object"&&"type"in se){let be=se.type;if(be==="mouse"||be==="mouse-position"){H=!0;break}}if(H)break}}H&&!Ee?(Ee=!0,!Re&&a&&(Re=p_e.register({onMouseMove:hq,onTouchMove:gq,onMouseDown:xq,onTouchStart:Aq,onMouseUp:yq,onTouchEnd:bq}))):!H&&Ee&&(Ee=!1,Re&&(Re(),Re=null))},d6=()=>{if(_.length===0)return;let H=[..._];_=[];for(let se of H)Jp(se.id,se.definition.fragment,se.parentId,se.metadata,se.uniforms,se.definition,se.domCanvas);let Z=v;v=[];for(let se of Z)se.kind==="uniform"?su(se.id,se.name,se.value):t1(se.id,se.metadata)},Wl=(H,Z)=>{if(!Yt){Yt=H,f6(H),gr(`[gpu] renderer stopped (${H}):`,Z);try{qy()}catch(se){gr("[gpu] cleanup during failure threw:",se)}if(!ns&&Qt){ns=!0;let se=Qt;queueMicrotask(()=>{try{se(H,Z)}catch(be){gr("[gpu] onUnavailable callback threw:",be)}})}}},wq=H=>{if(Xy(H)){Wl(H.reason,H);return}gs++,gs===1&&gr("[gpu] render error:",H),gs>=u_e&&Wl("render-failed",H)},Tq=H=>{!H||typeof H.addEventListener!="function"||(u6(),hs=H,rs=Z=>{try{Z.preventDefault()}catch{}let se=Z.error;if(gr("[gpu] uncaptured device error:",se),typeof GPUOutOfMemoryError<"u"&&se instanceof GPUOutOfMemoryError){Wl("out-of-memory",se);return}if(typeof GPUInternalError<"u"&&se instanceof GPUInternalError){Wl("gpu-error",se);return}Ss++,Ss>=d_e&&Wl("gpu-error",se)},H.addEventListener("uncapturederror",rs))},u6=()=>{if(hs&&rs)try{hs.removeEventListener("uncapturederror",rs)}catch{}hs=null,rs=null},Sq=H=>{if(!It){It=!0;try{o1()}catch{}if(kt){let Z=kt;queueMicrotask(()=>{try{Z(H)}catch(se){gr("[gpu] onDeviceLost callback threw:",se)}});return}Wl("device-lost",H)}},Pq=async H=>{if(H.context!==void 0)throw new Error("[gpu] initialize({ context }) is not supported \u2014 this renderer is WebGPU-only. Remove the WebGL `context` option.");if(Yt)return;let Z=_6();if(Z){Wl(Z);return}if(i||l)return;let{canvas:se,resizeTarget:be,enablePerformanceTracking:me=!1,colorSpace:Pe="p3-linear",toneMapping:Ke="linear",gpu:bt,forceFullFrameRate:Pt=!1,observeElement:$t=!0,timeOrigin:er}=H;er!=null&&(ce=er),Qe=me,Q=Pt,ut=Pe,yt=Ke,Hn(),l=!0,d=new AbortController;let Tr=d;try{if(lt=WE,lt(Pe),Tr.signal.aborted||(a=se,e=await Vfe({device:bt?.device,adapter:bt?.adapter,onDeviceLost:Pn=>Sq(Pn.message||Pn.reason||"unknown")}),Tr.signal.aborted))return;t=e.root,Tq(t.device),L=sm();let mr=t.device.limits?.maxTextureDimension2D;typeof mr=="number"&&mr>0&&(B=mr),r=Jfe(t),o=vE(t),typeof window<"u"&&(Ce=()=>qy(),window.addEventListener("beforeunload",Ce),Se=()=>{if(D>0&&G>0){let Pn=D,Nc=G;D=0,G=0,rm(Pn,Nc)}},window.addEventListener("resize",Se,{passive:!0}));let ts=se.getBoundingClientRect();Oe=ts,$=!$t||ts.width>0&&ts.height>0&&ts.top<window.innerHeight&&ts.bottom>0&&ts.left<window.innerWidth&&ts.right>0,q=!0;let Fo=ts.width>0?ts.width:se.width,Kn=ts.height>0?ts.height:se.height,Oa=Math.round(Fo),ha=Math.round(Kn);if(Oa>0&&ha>0){D=Oa,G=ha;let{width:Pn,height:Nc}=ru(Oa,ha);C=Pn,k=Nc,z=Oa,U=ha,F=!0,u3(Oa,ha);let{width:im,height:n1}=nl();se.width=im,se.height=n1}else F=!1;if(s=$fe(t,se),$t&&typeof ResizeObserver<"u"){let Pn=be??se.parentElement;Pn?(Ne=new ResizeObserver(r1),Ne.observe(Pn)):console.warn("[gpu] no element available for resize observation \u2014 use resize() manually"),typeof IntersectionObserver<"u"&&(ke=new IntersectionObserver(Wy,{threshold:0,rootMargin:"128px"}),ke.observe(se))}if(Tr.signal.aborted)return;i=!0,c=!0,d6(),C>0&&k>0&&am(),q&&Vy()}catch(mr){let ts=Xy(mr)?mr.reason:"init-failed";l=!1,d===Tr&&(d=null),Wl(ts,mr);return}finally{l=!1,d===Tr&&(d=null)}},qy=()=>{d&&d.abort(),Ne&&(Ne.disconnect(),Ne=null),ke&&(ke.disconnect(),ke=null),Re&&(Re(),Re=null),Ce&&typeof window<"u"&&(window.removeEventListener("beforeunload",Ce),Ce=null),Se&&typeof window<"u"&&(window.removeEventListener("resize",Se),Se=null),oe!==null&&typeof cancelAnimationFrame=="function"&&(cancelAnimationFrame(oe),oe=null),o1(),u6(),La?.(),La=null,typeof document<"u"&&document.fonts?.removeEventListener&&document.fonts.removeEventListener("loadingdone",da);try{e?.release?.()}catch{}g.clear();for(let H of[...y])Zp(H);x=null;try{r?.destroy()}catch{}try{e?.createdDevice&&t?.destroy()}catch{}u.clear(),p=null,f.clear(),_=[],v=[],c=!1,$e=null,We=!1,a=null,s=null,r=null,o=null,t=null,e=null,i=!1,l=!1,F=!1,d=null,C=0,k=0,z=0,U=0,w=null,P=!0,$=!1,q=!0,we=-10,de=-10,xe=!1,Te=!1,Ee=!1,vt=null,wt=!1,St=!1,kt=null,It=!1,Ss=0,gs=0};return{initialize:Pq,cleanup:qy,registerNode:Jp,removeNode:em,updateUniformValue:su,updateNodeMetadata:t1,isInitialized:()=>i,resize:(H,Z)=>{t&&rm(H,Z)},startAnimation:Vy,stopAnimation:o1,renderAndWait:_q,renderSyntheticFrame:vq,getPerformanceStats:()=>{let H=Math.max(0,u.size-1),Z=x?x.ir.rttPasses.length:0;fs.updateNodeCounts(H,Z);let se={render:{calls:x?x.passManager.passCount:0},programs:{length:g.size},memory:{textures:r?r.textureCount:0}};return fs.getStats(se)},getLiveDriverValue:(H,Z)=>{let se=u.get(H)?.mouseDriverState?.[Z];return!se||se.liveX===void 0||se.liveY===void 0?null:{x:se.liveX,y:se.liveY}},getLiveScalarValue:(H,Z)=>{let se=u.get(H);if(!se)return null;let be=se.metadata.maps?.[Z];if(be?.type==="auto-animate"){let me=se._liveHandles?.[`_smoothed_${Z}`],Pe=me instanceof ai?me.value:void 0;return typeof Pe=="number"?Pe:null}return be?.type==="mouse"?se.mouseDriverState[Z]?.liveScalar??null:null},getNodeRegistry:()=>({nodes:new Map(u)}),getRendererType:()=>"webgpu",getInternalRenderer:()=>t?{device:t.device,adapter:e?.adapter,root:t}:null,setForceFullFrameRate:H=>{let Z=Q;return Q=H,Z},beginRecordingResolution:(H,Z,se)=>{if(!t||H<=0||Z<=0)return()=>{};let be=L,me=C,Pe=k,Ke=z,bt=U,Pt=D,$t=G;return L=se,Yl(H,Z,H,Z),()=>{t&&(L=be,Yl(me,Pe,Ke,bt),D=Pt,G=$t)}},setResolutionScale:H=>{if(!t)return;let Z=Math.max(.05,Math.min(H,1)),se=Math.max(.01,sm()*Z);if(Math.abs(L-se)<.001)return;L=se;let be=z||C,me=U||k;if(be<=0||me<=0)return;let{width:Pe,height:Ke}=ru(be,me);Yl(Pe,Ke,be,me)},setFrameRateCap:H=>{re=H&&H>0?1e3/Math.max(H,10)-1:0},setTimeOrigin:H=>{ce=H},setOnReady:H=>{vt=H,H&&wt&&queueMicrotask(H)},setOnDeviceLost:H=>{kt=H},setOnUnavailable:H=>{if(Qt=H,H&&Yt&&!ns){ns=!0;let Z=Yt;queueMicrotask(()=>{try{H(Z)}catch(se){gr("[gpu] onUnavailable callback threw:",se)}})}},getFailureReason:()=>Yt,__testing:{needsTransformation:fl,findChildNodes:ir,buildFieldInits:H=>{let Z=u.get(H);return Z?N_(Z):null},ensureDriverState:H=>{let Z=u.get(H);Z&&jp(Z)},stepMouseDrivers:H=>{ys.deltaTime=H,s1()},stepAnimatedTime:H=>{ys.deltaTime=H,tm()},getAnimatedTimeValue:H=>{let Z=u.get(H);return Z?.definition.animatedTime?Jd(tu(Z)).value:null},writeExtraField:(H,Z,se)=>{let be=u.get(H);be&&$_(be,Z,se)},readExtraField:(H,Z)=>{let se=u.get(H)?._liveHandles?.[Z];return se instanceof ai?se.value:void 0},getNodeRegistry:()=>({nodes:u,rootId:p,parentToChildren:f}),getParentToChildren:()=>f,getPendingRegistrations:()=>[..._],getFrameDiagnostics:()=>({deltaTime:ys.deltaTime,pointerX:we,pointerY:de,pointerActive:xe,globalElapsedTime:ne,lastRenderTime:ee,isVisible:$,forceFullFrameRate:Q,sharedTimeOrigin:ce,animating:Js.running,mouseListenersNeeded:Ee}),computeStructuralHash:Z_,isStructuralDirty:()=>P,clearStructuralDirty:()=>{P=!1},setTestReady:H=>{i=!0,c=!0,H&&(C=H.width,k=H.height,z=H.width,U=H.height,F=!0),d6()}}}}var eu={samplingRate:.05,collectionDuration:5e3,warmupDuration:500,sampleInterval:500,apiEndpoint:"https://shaders.com/api/telemetry"};function f_e(e){return e.includes("Edg/")||e.includes("EdgiOS")?"Edge":e.includes("OPR/")||e.includes("Opera/")?"Opera":e.includes("Chrome/")||e.includes("CriOS")?"Chrome":e.includes("Firefox/")||e.includes("FxiOS")?"Firefox":e.includes("Safari/")&&!e.includes("Chrome")?"Safari":"Other"}function __e(e){return/iPad|Tablet|PlayBook/i.test(e)||/Android/i.test(e)&&!/Mobile/i.test(e)?"tablet":/Mobile|Android|webOS|iPhone|iPod|BlackBerry|IEMobile|Opera Mini/i.test(e)?"mobile":"desktop"}function v_e(){if(typeof window>"u"||typeof navigator>"u")return{domain:"unknown",browserFamily:"unknown",deviceType:"unknown"};let e=navigator.userAgent;return{domain:window.location.hostname,browserFamily:f_e(e),deviceType:__e(e)}}var h_e=class{renderer;version;sourceType;sessionId;frameSamples=[];sampleInterval=null;stopped=!1;constructor(e,t,s){this.renderer=e,this.version=t,this.sourceType=s,this.sessionId=`tel_${Date.now()}_${Math.random().toString(36).substring(2,9)}`}stop(){this.stopped=!0,this.sampleInterval&&(clearInterval(this.sampleInterval),this.sampleInterval=null)}async start(){try{if(await this.sleep(eu.warmupDuration),this.stopped||(this.sampleInterval=setInterval(()=>{if(!this.stopped)try{let e=this.renderer.getPerformanceStats();this.frameSamples.push(e)}catch(e){gr("Telemetry sampling error:",e)}},eu.sampleInterval),await this.sleep(eu.collectionDuration-eu.warmupDuration),this.stopped))return;if(this.sampleInterval&&(clearInterval(this.sampleInterval),this.sampleInterval=null),!this.stopped&&this.frameSamples.length>=5){let e=this.aggregateData();await this.sendTelemetry(e)}}catch(e){gr("Telemetry collection error:",e)}}sleep(e){return new Promise(t=>setTimeout(t,e))}aggregateData(){let e=this.aggregatePerformance(),t=this.detectRendererType(),s=this.extractComponents(),r=v_e();return{sessionId:this.sessionId,timestamp:Date.now(),collectionDuration:eu.collectionDuration,version:this.version,sourceType:this.sourceType,performance:e,renderer:t,components:s,environment:r}}aggregatePerformance(){if(this.frameSamples.length===0)return{fps:0,frameTime:{avg:0,min:0,max:0,p99:0},jankPercent:0,budgetUsed:0};let e=this.frameSamples.map(p=>p.avgFrameTime),t=this.frameSamples.map(p=>p.jankPercent),s=this.frameSamples.map(p=>p.budgetUsed),r=this.frameSamples.map(p=>p.fps),o=this.calculateMedian(r),a=this.calculateMean(e),i=Math.min(...e),l=Math.max(...e),c=this.calculatePercentile(e,99),d=this.calculateMean(t),u=this.calculateMean(s);return{fps:Math.round(o*10)/10,frameTime:{avg:Math.round(a*10)/10,min:Math.round(i*10)/10,max:Math.round(l*10)/10,p99:Math.round(c*10)/10},jankPercent:Math.round(d*10)/10,budgetUsed:Math.round(u*10)/10}}detectRendererType(){let e=this.frameSamples[this.frameSamples.length-1];return{type:this.renderer.getRendererType?.()||"webgl",drawCalls:e?.drawCalls??null,textureCount:e?.textureCount??null}}extractComponents(){try{let e=this.renderer.getNodeRegistry(),t=[];for(let[s,r]of e.nodes)r.parentId!==null&&t.push({name:r.componentName,requiresRTT:r.requiresRTT,renderOrder:r.metadata.renderOrder});return t.sort((s,r)=>s.renderOrder-r.renderOrder)}catch(e){return gr("Failed to extract components:",e),[]}}async sendTelemetry(e){try{let t=await fetch(eu.apiEndpoint,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});t.ok||rn("Telemetry send failed:",t.status,t.statusText)}catch(t){gr("Telemetry send error:",t)}}calculateMean(e){return e.length===0?0:e.reduce((t,s)=>t+s,0)/e.length}calculateMedian(e){if(e.length===0)return 0;let t=[...e].sort((r,o)=>r-o),s=Math.floor(t.length/2);return t.length%2===0?(t[s-1]+t[s])/2:t[s]}calculatePercentile(e,t){if(e.length===0)return 0;let s=[...e].sort((o,a)=>o-a),r=Math.ceil(t/100*s.length)-1;return s[Math.max(0,r)]}};function g_e(e=!1,t=!1){return e||typeof navigator<"u"&&navigator.doNotTrack==="1"?!1:t?!0:Math.random()<eu.samplingRate}function uq(e,t,s=!1,r=!1){return g_e(s,r)?new h_e(e,t,r?"preview":"shader"):null}function pq(){if(typeof window>"u"||!window.location)return!1;let e=window.location.hostname;return!e.includes("shaders.com")&&e!=="localhost"&&e!=="127.0.0.1"}function r6(e){if(typeof e!="object"||e===null||!("type"in e))return!1;let t=e;return t.type==="map"||t.type==="mouse"||t.type==="mouse-position"||t.type==="auto-animate"}var mq=new Set(["opacity","blendMode","visible","transform","boundingBox","maskSource","maskType","flow","absolute"]);async function o6(e,t,s){let r=new Map;if(By().forEach(B=>{r.set(B.definition.name,B.definition);for(let D of B.definition.deprecatedNames??[])r.set(D,B.definition)}),!e.style.width||!e.style.height){let B=e.getBoundingClientRect(),D=B.width>0?B.width:e.width,G=B.height>0?B.height:e.height;D>0&&!e.style.width&&(e.style.width=`${D}px`),G>0&&!e.style.height&&(e.style.height=`${G}px`)}function o(B){return{...B,props:B.props?{...B.props}:void 0,children:B.children?.map(o)}}let a={...t,components:t.components.map(o)},i=null,l=!1,c=!1,d=3,u=6e4,p=0,f=0,_=null;function v(B){try{s?.onError?.(B)}catch(D){gr("[createShader] onError callback threw:",D)}}let g=!1;function y(B){g||(g=!0,_=B,v(B))}function x(B,D,G,F,V){let W=r.get(G.type);if(!W){console.warn(`[createShader] Unknown component type: ${G.type}`);return}let q=G.id||`${G.type}_${Date.now()}_${Math.random().toString(36).slice(2,9)}`,$={};for(let[re,ne]of Object.entries(G.props||{}))!mq.has(re)&&Object.prototype.hasOwnProperty.call(W.props,re)&&r6(ne)&&($[re]=ne);let Q=_3(W,Object.fromEntries(Object.entries(W.props).map(([re,ne])=>{let ce=G.props?.[re]!==void 0?G.props[re]:ne.default;return[re,r6(ce)?ne.default:ce]})),q),ee={blendMode:G.props?.blendMode||"normal",opacity:G.props?.opacity,visible:G.props?.visible,renderOrder:V,id:G.id,maps:Object.keys($).length>0?{...$}:void 0,mask:G.props?.maskSource?{source:G.props.maskSource,type:G.props.maskType||"alpha"}:void 0,transform:G.props?.transform?{offsetX:0,offsetY:0,rotation:0,scale:1,anchorX:.5,anchorY:.5,edges:"transparent",...G.props.transform}:void 0,boundingBox:Xv(G.props?.boundingBox),flow:G.props?.flow,absolute:G.props?.absolute};B.registerNode(q,W.fragment,F,ee,Q,W),D.set(q,{componentDef:W,uniforms:Q,nodeId:q,component:G,currentMaps:{...$}}),G.children?.forEach((re,ne)=>{x(B,D,re,q,ne)})}async function w(){let B=dq(),D=new Map;s?.onReady&&B.setOnReady(s.onReady),B.setOnUnavailable(V=>{l||y(V)}),await B.initialize({canvas:e,resizeTarget:e,enablePerformanceTracking:s?.enablePerformanceTracking||!1,colorSpace:s?.colorSpace,toneMapping:s?.toneMapping,observeElement:s?.observeElement,gpu:s?.gpu});let G={renderer:B,nodeEntryMap:D,telemetryCollector:null,telemetryStartTimeout:null};B.setOnDeviceLost(V=>{if(l||c||_||i!==null&&i!==G)return;c=!0,v(V);let W=Date.now();if(W-f>u&&(p=0),f=W,++p>d){P(G),i=null,c=!1,y("unrecoverable");return}(async()=>{try{if(P(G),i=null,l)return;let q=await w();if(l){P(q);return}i=q}catch(q){gr("[createShader] rebuild after device loss failed:",q),y("rebuild_failed")}finally{c=!1}})()});let F="shader-root";if(B.registerNode(F,ch.fragment,null,null,{},ch),a.components.forEach((V,W)=>{x(B,D,V,F,W)}),pq()){let W=0,q=()=>{if(l||_||i!==G||++W>40){G.telemetryStartTimeout=null;return}B.getPerformanceStats().fps>0?(G.telemetryCollector=uq(B,"3.2.471",s?.disableTelemetry||!1,!1),G.telemetryCollector&&G.telemetryCollector.start(),G.telemetryStartTimeout=null):G.telemetryStartTimeout=setTimeout(q,500)};G.telemetryStartTimeout=setTimeout(q,500)}return G}function P(B){if(B.telemetryCollector){try{B.telemetryCollector.stop()}catch{}B.telemetryCollector=null}B.telemetryStartTimeout!==null&&(clearTimeout(B.telemetryStartTimeout),B.telemetryStartTimeout=null);try{B.renderer.cleanup()}catch{}}i=await w();function C(B,D){if(!i)return;let{renderer:G,nodeEntryMap:F}=i,V=F.get(B);if(!V){console.warn(`[createShader] Component ID not found: ${B}`);return}V.component.props||(V.component.props={});let W=V.component.props;for(let[q,$]of Object.entries(D))if(mq.has(q))if(q==="maskSource")G.updateNodeMetadata(V.nodeId,{mask:$?{source:$,type:D.maskType||W.maskType||"alpha"}:void 0}),W.maskSource=$,"maskType"in D&&(W.maskType=D.maskType);else{if(q==="maskType")continue;q==="transform"?(G.updateNodeMetadata(V.nodeId,{transform:$}),W.transform=$):q==="boundingBox"?(G.updateNodeMetadata(V.nodeId,{boundingBox:Xv($)}),W.boundingBox=$):(G.updateNodeMetadata(V.nodeId,{[q]:$}),W[q]=$)}else r6($)?Object.prototype.hasOwnProperty.call(V.componentDef.props,q)?(V.currentMaps[q]=$,G.updateNodeMetadata(V.nodeId,{maps:{...V.currentMaps}}),W[q]=$):console.warn(`[createShader] Ignoring PropDriver for unknown prop "${q}" on ${V.component.type}`):(q in V.currentMaps&&(delete V.currentMaps[q],G.updateNodeMetadata(V.nodeId,{maps:Object.keys(V.currentMaps).length>0?{...V.currentMaps}:void 0})),Object.prototype.hasOwnProperty.call(V.componentDef.props,q)&&(G.updateUniformValue(V.nodeId,q,$),W[q]=$))}function k(B,D){let G=e.getBoundingClientRect(),F=B??(G.width>0?G.width:e.width),V=D??(G.height>0?G.height:e.height);F>0&&V>0&&(e.style.width=`${F}px`,e.style.height=`${V}px`,i&&i.renderer.resize(F,V))}function z(){l=!0,i&&(P(i),i=null)}function U(){i&&i.renderer.stopAnimation()}function L(){i&&i.renderer.startAnimation()}return{update:C,resize:k,pause:U,resume:L,destroy:z,getFailureReason:()=>_}}var y_e="shaders-preview-key";function b_e(e,t){let s=new TextEncoder().encode(t),r=new Uint8Array(e.length);for(let o=0;o<e.length;o++)r[o]=e[o]^s[o%s.length];return r}function fq(e){try{let t=atob(e),s=new Uint8Array(t.length);for(let i=0;i<t.length;i++)s[i]=t.charCodeAt(i);let r=b_e(s,y_e),o=new TextDecoder().decode(r),a=JSON.parse(o);if(typeof a!="object"||a===null||Array.isArray(a))throw new Error("unexpected shape");return a}catch{throw new Error("Failed to decode preview definition: invalid data")}}var x_e="https://shaders.com",A_e="Unlock your Shaders Pro license",w_e="https://shaders.com/dashboard?pricing=true",T_e=new Set(["break","case","catch","class","const","continue","default","delete","do","else","export","extends","finally","for","function","if","import","in","instanceof","new","return","super","switch","this","throw","try","typeof","var","void","while","with","yield"]);function S_e(e,t){let s=e.replace(/[^A-Za-z0-9]+/g," ").trim();if(!s)return t;let r=s.split(/\s+/).map((a,i)=>i===0?a.charAt(0).toLowerCase()+a.slice(1):a.charAt(0).toUpperCase()+a.slice(1)).join(""),o=/^[A-Za-z_$]/.test(r)?r:`_${r}`;return T_e.has(o)?`_${o}`:o}function P_e(e){let t=new Set(["style"]),s=new Map;return e?.length&&e.forEach((r,o)=>{if(!r.targets?.length)return;let a=S_e(r.label,`keyProp${o}`),i=a,l=1;for(;t.has(i);)l++,i=`${a}${l}`;t.add(i),s.set(i,r)}),s}function a6(e,t){for(let s of t){if(s.id===e)return s;let r=s.children;if(r?.length){let o=a6(e,r);if(o)return o}}return null}function C_e(e,t,s){if(t)for(let[r,o]of Object.entries(t)){let a=s.get(r);if(a)for(let i of a.targets??[]){let l=a6(i.component_id,e);l?.props&&i.prop in l.props&&(l.props[i.prop]=o)}}}async function M_e(e,t){if(!t.shader&&!t.presetId||t.shader&&t.presetId)throw new Error("Exactly one of shader (preview token) or presetId must be provided");let s=t.apiBaseUrl||x_e,r=t.presetId&&t.version?`?version=${encodeURIComponent(t.version)}`:"",o=t.shader?`${s}/api/preview/shader/${encodeURIComponent(t.shader)}`:`${s}/api/preview/preset/${encodeURIComponent(t.presetId)}${r}`,a=await fetch(o);if(!a.ok)throw new Error(`Failed to fetch preview: ${a.status} ${a.statusText}`);let i=await a.json(),l=i.preset??i.shader;if(!l?.definition||typeof l.definition!="string")throw new Error("Preview response missing encoded definition");let c=fq(l.definition),d=Array.isArray(l.key_props)?l.key_props:null,u=P_e(d),p=new Map;for(let w of u.values())for(let P of w.targets??[]){let C=a6(P.component_id,c.components);C?.props&&P.prop in C.props&&p.set(`${P.component_id}:${P.prop}`,C.props[P.prop])}C_e(c.components,t.configuration,u);let f=await o6(e,c,{isPreview:!0,enablePerformanceTracking:!0}),{overlay:_,savedPosition:v,parentEl:g}=E_e(e),y=f.destroy.bind(f),x=f;return x.destroy=()=>{g&&v!==void 0&&(g.style.position=v),_.remove(),y()},x.setConfiguration=w=>{if(d?.length)for(let[P,C]of u){let k=Object.prototype.hasOwnProperty.call(w,P)&&w[P]!==void 0;for(let z of C.targets??[]){let U=k?w[P]:p.get(`${z.component_id}:${z.prop}`);U!==void 0&&f.update(z.component_id,{[z.prop]:U})}}},x}function E_e(e){let t=e.parentElement,s;t&&getComputedStyle(t).position==="static"&&(s=t.style.position,t.style.position="relative");let r=document.createElement("a");return r.href=w_e,r.target="_blank",r.rel="noopener noreferrer",r.textContent=A_e,Object.assign(r.style,{position:"absolute",bottom:"8px",right:"12px",fontSize:"11px",fontFamily:"system-ui, -apple-system, sans-serif",color:"rgba(255, 255, 255, 0.5)",textDecoration:"none",zIndex:"10",pointerEvents:"auto",transition:"color 0.2s ease"}),r.addEventListener("mouseenter",()=>{r.style.color="rgba(255, 255, 255, 0.8)"}),r.addEventListener("mouseleave",()=>{r.style.color="rgba(255, 255, 255, 0.5)"}),t&&t.appendChild(r),{overlay:r,savedPosition:s,parentEl:t}}async function k_e(e){if(typeof navigator>"u"||!navigator.gpu)return null;try{let t=await navigator.gpu.requestAdapter({powerPreference:e?.powerPreference??"high-performance"});return t?{device:await t.requestDevice({requiredFeatures:[...t.features]}),adapter:t}:null}catch(t){return rn("[shaders] createSharedDevice failed; callers should fall back to per-instance device:",t),null}}export{M_e as createPreview,o6 as createShader,k_e as createSharedDevice,jy as getWebGPUSupport,l1 as isShadersDebug,Hy as isWebGPUSupported,m6 as setShadersDebug};
@@ -184,7 +184,7 @@ async function createShader(canvas, preset, options) {
184
184
  return;
185
185
  }
186
186
  if (renderer.getPerformanceStats().fps > 0) {
187
- state.telemetryCollector = startTelemetry(renderer, "3.2.470", options?.disableTelemetry || false, false);
187
+ state.telemetryCollector = startTelemetry(renderer, "3.2.471", options?.disableTelemetry || false, false);
188
188
  if (state.telemetryCollector) state.telemetryCollector.start();
189
189
  state.telemetryStartTimeout = null;
190
190
  } else state.telemetryStartTimeout = setTimeout(checkRendering, 500);