shaders 4.0.0 → 4.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -0
- package/dist/cli.js +156 -146
- package/dist/core/docs-manifest.json +2 -2
- package/dist/core/llms.txt +1 -1
- package/dist/js/bundle.js +2 -2
- package/dist/js/createShader.js +1 -1
- package/dist/react/Shader.js +1 -1
- package/dist/react/bundle.js +2 -2
- package/dist/solid/engine/Shader.js +1 -1
- package/dist/svelte/index.js +1 -1
- package/dist/vue/Shader.vue_vue_type_script_setup_true_lang.js +1 -1
- package/package.json +1 -1
package/dist/core/llms.txt
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Shaders std vocabulary (engine 4.0.
|
|
1
|
+
# Shaders std vocabulary (engine 4.0.1)
|
|
2
2
|
|
|
3
3
|
Compose shaders from these words with `defineShader` from `shaders/std`. Every word is a plain TypeScript
|
|
4
4
|
function; the engine lowers the composition to WGSL at runtime. A `wgsl` body is the escape hatch.
|
package/dist/js/bundle.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* shaders@4.0.
|
|
1
|
+
/* shaders@4.0.1/js — ESM bundle for CDN consumption (no bundler required). https://shaders.com */
|
|
2
2
|
var qd=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 Ay(e){return!!e&&typeof e=="object"&&e.name==="GpuUnavailableError"&&typeof e.reason=="string"}var by=null;function k5(e){by=e}function Yp(){if(by!==null)return by;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}var B5=!1;function z5(){B5=!0}function gf(...e){(Yp()||B5)&&console.error(...e)}function bn(...e){Yp()&&console.warn(...e)}function wr(...e){Yp()&&console.error(...e)}function wy(){return typeof navigator<"u"&&!!navigator.gpu}var hf=null;function Ty(){return hf||(hf=(async()=>{if(!wy())return{supported:!1,reason:"unsupported"};try{return await navigator.gpu.requestAdapter({powerPreference:"high-performance"})?{supported:!0}:{supported:!1,reason:"no-adapter"}}catch(e){return wr("[gpu] adapter probe threw:",e),{supported:!1,reason:"no-adapter"}}})(),hf)}var wW=new Set(["unsupported","no-adapter","no-device","out-of-memory","gpu-error"]),xy=null;function R5(e){xy||!wW.has(e)||(xy=e)}function D5(){return xy}function Lr(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 Xp(e){return kl(e)==="string"}function kl(e){return(Object.prototype.toString.call(e).match(/^\[object\s+(.*?)\]$/)[1]||"").toLowerCase()}function Mf(e,{precision:t,unit:s}){return Bl(e)?"none":z6(e,t)+(s??"")}function Bl(e){return Number.isNaN(e)||e instanceof Number&&e?.none}function uo(e){return Bl(e)?0:e}function z6(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 TW={deg:1,grad:.9,rad:180/Math.PI,turn:360};function R6(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],_=u.slice(0,-p.length);p==="%"?(u=new Number(_/100),u.type="<percentage>"):(u=new Number(_*TW[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 D6(e){return e[e.length-1]}function Vp(e,t,s){return isNaN(e)?t:isNaN(t)?e:e+(t-e)*s}function L6(e,t,s){return(s-e)/(t-e)}function qy(e,t,s){return Vp(t[0],t[1],L6(e[0],e[1],s))}function U6(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 O6(e,t,s){return Math.max(Math.min(s,t),e)}function zf(e,t){return Math.sign(e)===Math.sign(t)?e:-e}function ci(e,t){return zf(Math.abs(e)**t,e)}function Vy(e,t){return t===0?0:e/t}function G6(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 SW=Object.freeze({__proto__:null,bisectLeft:G6,clamp:O6,copySign:zf,interpolate:Vp,interpolateInv:L6,isNone:Bl,isString:Xp,last:D6,mapRange:qy,multiplyMatrices:Lr,parseCoordGrammar:U6,parseFunction:R6,serializeNumber:Mf,skipNone:uo,spow:ci,toPrecision:z6,type:kl,zdiv:Vy}),PW=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)})}},zl=new PW,tn={gamut_mapping:"css",precision:5,deltaE:"76",verbose:globalThis?.process?.env?.NODE_ENV?.toLowerCase()!=="test",warn:function(t){this.verbose&&globalThis?.console?.warn?.(t)}},_a={D50:[.3457/.3585,1,.2958/.3585],D65:[.3127/.329,1,.3583/.329]};function Ly(e){return Array.isArray(e)?e:_a[e]}function Ef(e,t,s,r={}){if(e=Ly(e),t=Ly(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(zl.run("chromatic-adaptation-start",o),o.M||(o.W1===_a.D65&&o.W2===_a.D50?o.M=[[1.0479297925449969,.022946870601609652,-.05019226628920524],[.02962780877005599,.9904344267538799,-.017073799063418826],[-.009243040646204504,.015055191490298152,.7518742814281371]]:o.W1===_a.D50&&o.W2===_a.D65&&(o.M=[[.955473421488075,-.02309845494876471,.06325924320057072],[-.0283697093338637,1.0099953980813041,.021041441191917323],[.012314014864481998,-.020507649298898964,1.330365926242124]])),zl.run("chromatic-adaptation-end",o),o.M)return Lr(o.M,o.XYZ);throw new TypeError("Only Bradford CAT with white points D50 and D65 supported for now.")}var CW=new Set(["<number>","<percentage>","<angle>"]);function L5(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(f=>CW.has(f)):u=l.find(f=>f==d),!u){let f=a.name||o;throw new TypeError(`${d??c.raw} not allowed for ${f} in ${s}()`)}let p=u.range;d==="<percentage>"&&(p||=[0,1]);let _=a.range||a.refRange;return p&&_&&(r[i]=qy(p,_,r[i])),u})}function F6(e,{meta:t}={}){let s={str:String(e)?.trim()};if(zl.run("parse-start",s),s.color)return s.color;if(s.parsed=R6(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 Nt.all){let p=u.getFormat("color");if(p&&(i.includes(p.id)||p.ids?.filter(_=>i.includes(_)).length)){let _=Object.keys(u.coords).map((v,g)=>s.parsed.args[g]||0),f;return p.coordGrammar&&(f=L5(u,p,"color",_)),t&&Object.assign(t,{formatId:"color",types:f}),p.id.startsWith("--")&&!o.startsWith("--")&&tn.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("--")&&tn.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:_,alpha:l}}}let c="",d=o in Nt.registry?o:a;if(d in Nt.registry){let u=Nt.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 Nt.all){let a=o.getFormat(r);if(a&&a.type==="function"){let i=1;(a.lastAlpha||D6(s.parsed.args).alpha)&&(i=s.parsed.args.pop());let l=s.parsed.args,c;return a.coordGrammar&&(c=L5(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 Nt.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 hs(e){if(Array.isArray(e))return e.map(hs);if(!e)throw new TypeError("Empty color reference");Xp(e)&&(e=F6(e));let t=e.space||e.spaceId;return t instanceof Nt||(e.space=Nt.get(t)),e.alpha===void 0&&(e.alpha=1),e}var MW=75e-6,Nt=class $n{constructor(t){this.id=t.id,this.name=t.name,this.base=t.base?$n.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=Ly(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:$n.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:EW(this).reverse(),writable:!1,enumerable:!0,configurable:!0}),zl.run("colorspace-init-end",this)}inGamut(t,{epsilon:s=MW}={}){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=U5(t,this),t;let s;return t==="default"?s=Object.values(this.formats)[0]:s=this.formats[t],s?(s=U5(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=hs(t);[t,s]=[l.space,l.coords]}if(t=$n.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=hs(t);[t,s]=[r.space,r.coords]}return t=$n.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($n.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 $n)return t;if(kl(t)==="string"){let r=$n.registry[t.toLowerCase()];if(!r)throw new TypeError(`No color space found with id = "${t}"`);return r}if(s.length)return $n.get(...s);throw new TypeError(`${t} is not a valid color space`)}static resolveCoord(t,s){let r=kl(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=$n.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=kl(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=$n.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 EW(e){let t=[e];for(let s=e;s=s.base;)t.push(s);return t}function U5(e,{coords:t}={}){if(e.coords&&!e.coordGrammar){e.type||="function",e.name||="color",e.coordGrammar=U6(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=qy(l,c,a)),a=Mf(a,{precision:o,unit:d}),a})}return e}var Xo=new Nt({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"]}),La=class extends Nt{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=Xo),e.toXYZ_M&&e.fromXYZ_M&&(e.toBase??=t=>{let s=Lr(e.toXYZ_M,t);return this.white!==this.base.white&&(s=Ef(this.white,this.base.white,s)),s},e.fromBase??=t=>(t=Ef(this.base.white,this.white,t),Lr(e.fromXYZ_M,t))),e.referred??="display",super(e)}};function Hp(e,t){return e=hs(e),!t||e.space.equals(t)?e.coords.slice():(t=Nt.get(t),t.from(e))}function Ja(e,t){e=hs(e);let{space:s,index:r}=Nt.resolveCoord(t,e.space);return Hp(e,s)[r]}function Ny(e,t,s){return e=hs(e),t=Nt.get(t),e.coords=t.to(e.space,s),e}Ny.returns="color";function qi(e,t,s){if(e=hs(e),arguments.length===2&&kl(arguments[1])==="object"){let r=arguments[1];for(let o in r)qi(e,o,r[o])}else{typeof s=="function"&&(s=s(Ja(e,t)));let{space:r,index:o}=Nt.resolveCoord(t,e.space),a=Hp(e,r);a[o]=s,Ny(e,r,a)}return e}qi.returns="color";var $y=new Nt({id:"xyz-d50",name:"XYZ D50",white:"D50",base:Xo,fromBase:e=>Ef(Xo.white,"D50",e),toBase:e=>Ef("D50",Xo.white,e)}),kW=216/24389,O5=24/116,yf=24389/27,Sy=_a.D50,en=new Nt({id:"lab",name:"Lab",coords:{l:{refRange:[0,100],name:"Lightness"},a:{refRange:[-125,125]},b:{refRange:[-125,125]}},white:Sy,base:$y,fromBase(e){let t=e.map((s,r)=>s/Sy[r]).map(s=>s>kW?Math.cbrt(s):(yf*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]>O5?Math.pow(t[0],3):(116*t[0]-16)/yf,e[0]>8?Math.pow((e[0]+16)/116,3):e[0]/yf,t[2]>O5?Math.pow(t[2],3):(116*t[2]-16)/yf].map((s,r)=>s*Sy[r])},formats:{lab:{coords:["<number> | <percentage>","<number> | <percentage>[-1,1]","<number> | <percentage>[-1,1]"]}}});function di(e){return(e%360+360)%360}function BW(e,t){if(e==="raw")return t;let[s,r]=t.map(di),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 Np=new Nt({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:en,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),di(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>"]}}}),G5=25**7,kf=Math.PI,F5=180/kf,Vd=kf/180;function I5(e){let t=e*e;return t*t*t*e}function I6(e,t,{kL:s=1,kC:r=1,kH:o=1}={}){[e,t]=hs([e,t]);let[a,i,l]=en.from(e),c=Np.from(en,[a,i,l])[1],[d,u,p]=en.from(t),_=Np.from(en,[d,u,p])[1];c<0&&(c=0),_<0&&(_=0);let f=I5((c+_)/2),v=.5*(1-Math.sqrt(f/(f+G5))),g=(1+v)*i,y=(1+v)*u,b=Math.sqrt(g**2+l**2),A=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*kf),C<0&&(C+=2*kf),P*=F5,C*=F5;let E=d-a,z=A-b,U=C-P,L=P+C,k=Math.abs(U),D;b*A===0?D=0:k<=180?D=U:U>180?D=U-360:U<-180?D=U+360:tn.warn("the unthinkable has happened");let O=2*Math.sqrt(A*b)*Math.sin(D*Vd/2),F=(a+d)/2,q=(b+A)/2,Y=I5(q),V;b*A===0?V=L:k<=180?V=L/2:L<360?V=(L+360)/2:V=(L-360)/2;let $=(F-50)**2,Q=1+.015*$/Math.sqrt(20+$),se=1+.045*q,ee=1;ee-=.17*Math.cos((V-30)*Vd),ee+=.24*Math.cos(2*V*Vd),ee+=.32*Math.cos((3*V+6)*Vd),ee-=.2*Math.cos((4*V-63)*Vd);let oe=1+.015*q*ee,le=30*Math.exp(-1*((V-275)/25)**2),re=2*Math.sqrt(Y/(Y+G5)),we=-1*Math.sin(2*le*Vd)*re,de=(E/(s*Q))**2;return de+=(z/(r*se))**2,de+=(O/(o*oe))**2,de+=we*(z/(r*se))*(O/(o*oe)),Math.sqrt(de)}var zW=[[.819022437996703,.3619062600528904,-.1288737815209879],[.0329836539323885,.9292868615863434,.0361446663506424],[.0481771893596242,.2642395317527308,.6335478284694309]],RW=[[1.2268798758459243,-.5578149944602171,.2813910456659647],[-.0405757452148008,1.112286803280317,-.0717110580655164],[-.0763729366746601,-.4214933324022432,1.5869240198367816]],DW=[[.210454268309314,.7936177747023054,-.0040720430116193],[1.9779985324311684,-2.42859224204858,.450593709617411],[.0259040424655478,.7827717124575296,-.8086757549230774]],LW=[[1,.3963377773761749,.2158037573099136],[1,-.1055613458156586,-.0638541728258133],[1,-.0894841775298119,-1.2914855480194092]],Hd=new Nt({id:"oklab",name:"Oklab",coords:{l:{refRange:[0,1],name:"Lightness"},a:{refRange:[-.4,.4]},b:{refRange:[-.4,.4]}},white:"D65",base:Xo,fromBase(e){return Lr(DW,Lr(zW,e).map(t=>Math.cbrt(t)))},toBase(e){return Lr(RW,Lr(LW,e).map(t=>t**3))},formats:{oklab:{coords:["<percentage> | <number>","<number> | <percentage>[-1,1]","<number> | <percentage>[-1,1]"]}}});function Uy(e,t){[e,t]=hs([e,t]);let[s,r,o]=Hd.from(e),[a,i,l]=Hd.from(t),c=s-a,d=r-i,u=o-l;return Math.sqrt(c**2+d**2+u**2)}var UW=75e-6;function Lc(e,t,{epsilon:s=UW}={}){e=hs(e),t||(t=e.space),t=Nt.get(t);let r=e.coords;return t!==e.space&&(r=t.from(e)),t.inGamut(r,{epsilon:s})}function jd(e){return{space:e.space,coords:e.coords.slice(),alpha:e.alpha}}function Y6(e,t,s="lab"){s=Nt.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 OW(e,t){return Y6(e,t,"lab")}var Y5=Math.PI/180;function GW(e,t,{l:s=2,c:r=1}={}){[e,t]=hs([e,t]);let[o,a,i]=en.from(e),[,l,c]=Np.from(en,[o,a,i]),[d,u,p]=en.from(t),_=Np.from(en,[d,u,p])[1];l<0&&(l=0),_<0&&(_=0);let f=o-d,v=l-_,g=a-u,y=i-p,b=g**2+y**2-v**2,A=.511;o>=16&&(A=.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)*Y5)):C=.36+Math.abs(.4*Math.cos((c+35)*Y5));let E=Math.pow(l,4),z=Math.sqrt(E/(E+1900)),U=P*(z*C+1-z),L=(f/(s*A))**2;return L+=(v/(r*P))**2,L+=b/U**2,Math.sqrt(L)}var W5=203,Xy=new Nt({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:Xo,fromBase(e){return e.map(t=>Math.max(t*W5,0))},toBase(e){return e.map(t=>Math.max(t/W5,0))}}),bf=1.15,xf=.66,q5=2610/2**14,FW=2**14/2610,V5=3424/2**12,N5=2413/2**7,$5=2392/2**7,IW=1.7*2523/2**5,X5=2**5/(1.7*2523),Af=-.56,Py=16295499532821565e-27,YW=[[.41478972,.579999,.014648],[-.20151,1.120649,.0531008],[-.0166008,.2648,.6684799]],WW=[[1.9242264357876067,-1.0047923125953657,.037651404030618],[.35031676209499907,.7264811939316552,-.06538442294808501],[-.09098281098284752,-.3127282905230739,1.5227665613052603]],qW=[[.5,.5,0],[3.524,-4.066708,.542708],[.199076,1.096799,-1.295875]],VW=[[1,.1386050432715393,.05804731615611886],[.9999999999999999,-.1386050432715393,-.05804731615611886],[.9999999999999998,-.09601924202631895,-.8118918960560388]],W6=new Nt({id:"jzazbz",name:"Jzazbz",coords:{jz:{refRange:[0,1],name:"Jz"},az:{refRange:[-.5,.5]},bz:{refRange:[-.5,.5]}},base:Xy,fromBase(e){let[t,s,r]=e,[o,a,i]=Lr(qW,Lr(YW,[bf*t-(bf-1)*r,xf*s-(xf-1)*t,r]).map(function(l){return((V5+N5*(l/1e4)**q5)/(1+$5*(l/1e4)**q5))**IW}));return[(1+Af)*o/(1+Af*o)-Py,a,i]},toBase(e){let[t,s,r]=e,[o,a,i]=Lr(WW,Lr(VW,[(t+Py)/(1+Af-Af*(t+Py)),s,r]).map(function(c){return 1e4*((V5-c**X5)/($5*c**X5-N5))**FW})),l=(o+(bf-1)*i)/bf;return[l,(a+(xf-1)*l)/xf,i]},formats:{color:{coords:["<number> | <percentage>","<number> | <percentage>[-1,1]","<number> | <percentage>[-1,1]"]}}}),Oy=new Nt({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:W6,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),di(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 NW(e,t){[e,t]=hs([e,t]);let[s,r,o]=Oy.from(e),[a,i,l]=Oy.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 q6=3424/4096,V6=2413/128,N6=2392/128,H5=2610/16384,$W=2523/32,XW=16384/2610,j5=32/2523,HW=[[.3592832590121217,.6976051147779502,-.035891593232029],[-.1920808463704993,1.100476797037432,.0753748658519118],[.0070797844607479,.0748396662186362,.8433265453898765]],jW=[[2048/4096,2048/4096,0],[6610/4096,-13613/4096,7003/4096],[17933/4096,-17390/4096,-543/4096]],KW=[[.9999999999999998,.0086090370379328,.111029625003026],[.9999999999999998,-.0086090370379328,-.1110296250030259],[.9999999999999998,.5600313357106791,-.3206271749873188]],QW=[[2.0701522183894223,-1.3263473389671563,.2066510476294053],[.3647385209748072,.6805660249472273,-.0453045459220347],[-.0497472075358123,-.0492609666966131,1.1880659249923042]],Gy=new Nt({id:"ictcp",name:"ICTCP",coords:{i:{refRange:[0,1],name:"I"},ct:{refRange:[-.5,.5],name:"CT"},cp:{refRange:[-.5,.5],name:"CP"}},base:Xy,fromBase(e){return ZW(Lr(HW,e))},toBase(e){return Lr(QW,JW(e))}});function ZW(e){return Lr(jW,e.map(function(t){return((q6+V6*(t/1e4)**H5)/(1+N6*(t/1e4)**H5))**$W}))}function JW(e){return Lr(KW,e).map(function(t){return 1e4*(Math.max(t**j5-q6,0)/(V6-N6*t**j5))**XW})}function eq(e,t){[e,t]=hs([e,t]);let[s,r,o]=Gy.from(e),[a,i,l]=Gy.from(t);return 720*Math.sqrt((s-a)**2+.25*(r-i)**2+(o-l)**2)}var tq=_a.D65,$6=.42,K5=1/$6,Cy=2*Math.PI,X6=[[.401288,.650173,-.051461],[-.250268,1.204414,.045854],[-.002079,.048952,.953127]],sq=[[1.8620678550872327,-1.0112546305316843,.14918677544445175],[.38752654323613717,.6214474419314753,-.008973985167612518],[-.015841498849333856,-.03412293802851557,1.0499644368778496]],rq=[[460,451,288],[460,-891,-261],[460,-220,-6300]],oq={dark:[.8,.525,.8],dim:[.9,.59,.9],average:[1,.69,1]},Dc={h:[20.14,90,164.25,237.53,380.14],e:[.8,.7,1,1.2,.8],H:[0,100,200,300,400]},aq=180/Math.PI,Q5=Math.PI/180;function H6(e,t){return e.map(s=>{let r=ci(t*Math.abs(s)*.01,$6);return 400*zf(r,s)/(r+27.13)})}function nq(e,t){let s=100/t*27.13**K5;return e.map(r=>{let o=Math.abs(r);return zf(s*ci(o/(400-o),K5),r)})}function iq(e){let t=di(e);t<=Dc.h[0]&&(t+=360);let s=G6(Dc.h,t)-1,[r,o]=Dc.h.slice(s,s+2),[a,i]=Dc.e.slice(s,s+2),l=Dc.H[s],c=(t-r)/a;return l+100*c/(c+(o-t)/i)}function lq(e){let t=(e%400+400)%400,s=Math.floor(.01*t);t=t%100;let[r,o]=Dc.h.slice(s,s+2),[a,i]=Dc.e.slice(s,s+2);return di((t*(i*r-a*o)-100*r*i)/(t*(i-a)-100*i))}function j6(e,t,s,r,o){let a={};a.discounting=o,a.refWhite=e,a.surround=r;let i=e.map(f=>f*100);a.la=t,a.yb=s;let l=i[1],c=Lr(X6,i);r=oq[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(f=>Vp(1,l/f,p)),a.dRgbInv=a.dRgb.map(f=>1/f);let _=H6(c.map((f,v)=>f*a.dRgb[v]),a.fl);return a.aW=a.nbb*(2*_[0]+_[1]+.05*_[2]),a}var Z5=j6(tq,64/Math.PI*.2,20,"average",!1);function Fy(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=di(e.h)*Q5:s=lq(e.H)*Q5;let r=Math.cos(s),o=Math.sin(s),a=0;e.J!==void 0?a=ci(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=ci(i*Math.pow(1.64-Math.pow(.29,t.n),-.73),10/9),c=.25*(Math.cos(s+2)+3.8),d=t.aW*ci(a,2/t.c/t.z),u=5e4/13*t.nc*t.ncb*c,p=d/t.nbb,_=23*(p+.305)*Vy(l,23*u+l*(11*r+108*o));return Lr(sq,nq(Lr(rq,[p,_*r,_*o]).map(f=>f*1/1403),t.fl).map((f,v)=>f*t.dRgbInv[v])).map(f=>f/100)}function K6(e,t){let s=H6(Lr(X6,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)%Cy+Cy)%Cy,i=.25*(Math.cos(a+2)+3.8),l=ci(5e4/13*t.nc*t.ncb*Vy(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=ci(t.nbb*(2*s[0]+s[1]+.05*s[2])/t.aW,.5*t.c*t.z),d=100*ci(c,2),u=4/t.c*c*(t.aW+4)*t.flRoot,p=l*c,_=p*t.flRoot,f=di(a*aq),v=iq(f);return{J:d,C:p,h:f,s:50*ci(t.c*l/(t.aW+4),1/2),Q:u,M:_,H:v}}var cq=new Nt({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:Xo,fromBase(e){let t=K6(e,Z5);return[t.J,t.M,t.h]},toBase(e){return Fy({J:e[0],M:e[1],h:e[2]},Z5)}}),dq=_a.D65,uq=216/24389,Q6=24389/27;function pq(e){return 116*(e>uq?Math.cbrt(e):(Q6*e+16)/116)-16}function Iy(e){return e>8?Math.pow((e+16)/116,3):e/Q6}function mq(e,t){let[s,r,o]=e,a=[],i=0;if(o===0)return[0,0,0];let l=Iy(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=Fy({J:i,C:r,h:s},t);let _=Math.abs(a[1]-l);if(_<p){if(_<=c)return a;p=_}i=i-(a[1]-l)*i/(2*a[1]),u+=1}return Fy({J:i,C:r,h:s},t)}function _q(e,t){let s=pq(e[1]);if(s===0)return[0,0,0];let r=K6(e,Hy);return[di(r.h),r.C,s]}var Hy=j6(dq,200/Math.PI*Iy(50),Iy(50)*100,"average",!1),$p=new Nt({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:Xo,fromBase(e){return _q(e)},toBase(e){return mq(e,Hy)},formats:{color:{id:"--hct",coords:["<number> | <angle>","<percentage> | <number>","<percentage> | <number>"]}}}),fq=Math.PI/180,J5=[1,.007,.0228];function e6(e){e[1]<0&&(e=$p.fromBase($p.toBase(e)));let t=Math.log(Math.max(1+J5[2]*e[1]*Hy.flRoot,1))/J5[2],s=e[0]*fq,r=t*Math.cos(s),o=t*Math.sin(s);return[e[2],r,o]}function vq(e,t){[e,t]=hs([e,t]);let[s,r,o]=e6($p.from(e)),[a,i,l]=e6($p.from(t));return Math.sqrt((s-a)**2+(r-i)**2+(o-l)**2)}var Kd={deltaE76:OW,deltaECMC:GW,deltaE2000:I6,deltaEJz:NW,deltaEITP:eq,deltaEOK:Uy,deltaEHCT:vq};function hq(e){let t=e?Math.floor(Math.log10(Math.abs(e))):0;return Math.max(parseFloat(`1e${t-2}`),1e-6)}var t6={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 Rl(e,{method:t=tn.gamut_mapping,space:s=void 0,deltaEMethod:r="",jnd:o=2,blackWhiteClamp:a={}}={}){if(e=hs(e),Xp(arguments[1])?s=arguments[1]:s||(s=e.space),s=Nt.get(s),Lc(e,s,{epsilon:0}))return e;let i;if(t==="css")i=gq(e,{space:s});else{if(t!=="clip"&&!Lc(e,s)){Object.prototype.hasOwnProperty.call(t6,t)&&({method:t,jnd:o,deltaEMethod:r,blackWhiteClamp:a}=t6[t]);let l=I6;if(r!==""){for(let d in Kd)if("deltae"+r.toLowerCase()===d.toLowerCase()){l=Kd[d];break}}let c=Rl(Dr(e,s),{method:"clip",space:s});if(l(e,c)>o){if(Object.keys(a).length===3){let b=Nt.resolveCoord(a.channel),A=Ja(Dr(e,b.space),b.id);if(Bl(A)&&(A=0),A>=a.max)return Dr({space:"xyz-d65",coords:_a.D65},e.space);if(A<=a.min)return Dr({space:"xyz-d65",coords:[0,0,0]},e.space)}let d=Nt.resolveCoord(t),u=d.space,p=d.id,_=Dr(e,u);_.coords.forEach((b,A)=>{Bl(b)&&(_.coords[A]=0)});let f=(d.range||d.refRange)[0],v=hq(o),g=f,y=Ja(_,p);for(;y-g>v;){let b=jd(_);b=Rl(b,{space:s,method:"clip"}),l(_,b)-o<v?g=Ja(_,p):y=Ja(_,p),qi(_,p,(g+y)/2)}i=Dr(_,s)}else i=c}else i=Dr(e,s);if(t==="clip"||!Lc(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=Dr(i,e.space)),e.coords=i.coords,e}Rl.returns="color";var s6={WHITE:{space:Hd,coords:[1,0,0]},BLACK:{space:Hd,coords:[0,0,0]}};function gq(e,{space:t}={}){e=hs(e),t||(t=e.space),t=Nt.get(t);let o=Nt.get("oklch");if(t.isUnbounded)return Dr(e,t);let a=Dr(e,o),i=a.coords[0];if(i>=1){let v=Dr(s6.WHITE,t);return v.alpha=e.alpha,Dr(v,t)}if(i<=0){let v=Dr(s6.BLACK,t);return v.alpha=e.alpha,Dr(v,t)}if(Lc(a,t,{epsilon:0}))return Dr(a,t);function l(v){let g=Dr(v,t),y=Object.values(t.coords);return g.coords=g.coords.map((b,A)=>{if("range"in y[A]){let[P,C]=y[A].range;return O6(P,b,C)}return b}),g}let c=0,d=a.coords[1],u=!0,p=jd(a),_=l(p),f=Uy(_,p);if(f<.02)return _;for(;d-c>1e-4;){let v=(c+d)/2;if(p.coords[1]=v,u&&Lc(p,t,{epsilon:0}))c=v;else if(_=l(p),f=Uy(_,p),f<.02){if(.02-f<1e-4)break;u=!1,c=v}else d=v}return _}function Dr(e,t,{inGamut:s}={}){e=hs(e),t=Nt.get(t);let r=t.from(e),o={space:t,coords:r,alpha:e.alpha};return s&&(o=Rl(o,s===!0?void 0:s)),o}Dr.returns="color";function qp(e,{precision:t=tn.precision,format:s="default",inGamut:r=!0,...o}={}){let a;e=hs(e);let i=s;s=e.space.getFormat(s)??e.space.getFormat("default")??Nt.DEFAULT_FORMAT;let l=e.coords.slice();if(r||=s.toGamut,r&&!Lc(e)&&(l=Rl(jd(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(_=>Mf(_,{precision:t})));let d=[...l];if(c==="color"){let _=s.id||s.ids?.[0]||e.space.id;d.unshift(_)}let u=e.alpha;t!==null&&(u=Mf(u,{precision:t}));let p=e.alpha>=1||s.noAlpha?"":`${s.commas?",":" /"} ${u}`;a=`${c}(${d.join(s.commas?", ":" ")}${p})`}return a}var Rf=new La({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]]}),wf=1.09929682680944,r6=.018053968510807,Z6=new La({id:"rec2020",name:"REC.2020",base:Rf,toBase(e){return e.map(function(t){return t<r6*4.5?t/4.5:Math.pow((t+wf-1)/wf,1/.45)})},fromBase(e){return e.map(function(t){return t>=r6?wf*Math.pow(t,.45)-(wf-1):4.5*t})}}),J6=new La({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]]}),yq=[[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],yo=[[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],ew=new La({id:"srgb-linear",name:"Linear sRGB",white:"D65",toXYZ_M:yq,fromXYZ_M:yo}),o6={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]},a6=Array(3).fill("<percentage> | <number>[0, 255]"),n6=Array(3).fill("<number>[0, 255]"),Qd=new La({id:"srgb",name:"sRGB",base:ew,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:a6},rgb_number:{name:"rgb",commas:!0,coords:n6,noAlpha:!0},color:{},rgba:{coords:a6,commas:!0,lastAlpha:!0},rgba_number:{name:"rgba",commas:!0,coords:n6},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=o6.black,t.alpha=0):t.coords=o6[e],t.coords)return t}}}}),tw=new La({id:"p3",cssId:"display-p3",name:"P3",base:J6,fromBase:Qd.fromBase,toBase:Qd.toBase});tn.display_space=Qd;var bq;if(typeof CSS<"u"&&CSS.supports)for(let e of[en,Z6,tw]){let t=qp({space:e,coords:e.getMinCoords(),alpha:1});if(CSS.supports("color",t)){tn.display_space=e;break}}function xq(e,{space:t=tn.display_space,...s}={}){let r=qp(e,s);if(typeof CSS>"u"||CSS.supports("color",r)||!tn.display_space)r=new String(r),r.color=e;else{let o=e;if((e.coords.some(Bl)||Bl(e.alpha))&&!(bq??=CSS.supports("color","hsl(none 50% 50%)"))&&(o=jd(e),o.coords=o.coords.map(uo),o.alpha=uo(o.alpha),r=qp(o,s),CSS.supports("color",r)))return r=new String(r),r.color=o,r;o=Dr(o,t),r=new String(qp(o,s)),r.color=o}return r}function Aq(e,t){return e=hs(e),t=hs(t),e.space===t.space&&e.alpha===t.alpha&&e.coords.every((s,r)=>s===t.coords[r])}function Dl(e){return Ja(e,[Xo,"y"])}function sw(e,t){qi(e,[Xo,"y"],t)}function wq(e){Object.defineProperty(e.prototype,"luminance",{get(){return Dl(this)},set(t){sw(this,t)}})}var Tq=Object.freeze({__proto__:null,getLuminance:Dl,register:wq,setLuminance:sw});function Sq(e,t){e=hs(e),t=hs(t);let s=Math.max(Dl(e),0),r=Math.max(Dl(t),0);return r>s&&([s,r]=[r,s]),(s+.05)/(r+.05)}var Pq=.56,Cq=.57,Mq=.62,Eq=.65,i6=.022,kq=1.414,Bq=.1,zq=5e-4,Rq=1.14,l6=.027,Dq=1.14;function c6(e){return e>=i6?e:e+(i6-e)**kq}function Nd(e){let t=e<0?-1:1,s=Math.abs(e);return t*Math.pow(s,2.4)}function Lq(e,t){t=hs(t),e=hs(e);let s,r,o,a,i,l;t=Dr(t,"srgb"),[a,i,l]=t.coords;let c=Nd(a)*.2126729+Nd(i)*.7151522+Nd(l)*.072175;e=Dr(e,"srgb"),[a,i,l]=e.coords;let d=Nd(a)*.2126729+Nd(i)*.7151522+Nd(l)*.072175,u=c6(c),p=c6(d),_=p>u;return Math.abs(p-u)<zq?r=0:_?(s=p**Pq-u**Cq,r=s*Rq):(s=p**Eq-u**Mq,r=s*Dq),Math.abs(r)<Bq?o=0:r>0?o=r-l6:o=r+l6,o*100}function Uq(e,t){e=hs(e),t=hs(t);let s=Math.max(Dl(e),0),r=Math.max(Dl(t),0);r>s&&([s,r]=[r,s]);let o=s+r;return o===0?0:(s-r)/o}var Oq=5e4;function Gq(e,t){e=hs(e),t=hs(t);let s=Math.max(Dl(e),0),r=Math.max(Dl(t),0);return r>s&&([s,r]=[r,s]),r===0?Oq:(s-r)/r}function Fq(e,t){e=hs(e),t=hs(t);let s=Ja(e,[en,"l"]),r=Ja(t,[en,"l"]);return Math.abs(s-r)}var Iq=216/24389,d6=24/116,Tf=24389/27,My=_a.D65,Yy=new Nt({id:"lab-d65",name:"Lab D65",coords:{l:{refRange:[0,100],name:"Lightness"},a:{refRange:[-125,125]},b:{refRange:[-125,125]}},white:My,base:Xo,fromBase(e){let t=e.map((s,r)=>s/My[r]).map(s=>s>Iq?Math.cbrt(s):(Tf*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]>d6?Math.pow(t[0],3):(116*t[0]-16)/Tf,e[0]>8?Math.pow((e[0]+16)/116,3):e[0]/Tf,t[2]>d6?Math.pow(t[2],3):(116*t[2]-16)/Tf].map((s,r)=>s*My[r])},formats:{"lab-d65":{coords:["<number> | <percentage>","<number> | <percentage>[-1,1]","<number> | <percentage>[-1,1]"]}}}),Ey=Math.pow(5,.5)*.5+.5;function Yq(e,t){e=hs(e),t=hs(t);let s=Ja(e,[Yy,"l"]),r=Ja(t,[Yy,"l"]),o=Math.abs(Math.pow(s,Ey)-Math.pow(r,Ey)),a=Math.pow(o,1/Ey)*Math.SQRT2-40;return a<7.5?0:a}var Cf=Object.freeze({__proto__:null,contrastAPCA:Lq,contrastDeltaPhi:Yq,contrastLstar:Fq,contrastMichelson:Uq,contrastWCAG21:Sq,contrastWeber:Gq});function Wq(e,t,s={}){Xp(s)&&(s={algorithm:s});let{algorithm:r,...o}=s;if(!r){let a=Object.keys(Cf).map(i=>i.replace(/^contrast/,"")).join(", ");throw new TypeError(`contrast() function needs a contrast algorithm. Please specify one of: ${a}`)}e=hs(e),t=hs(t);for(let a in Cf)if("contrast"+r.toLowerCase()===a.toLowerCase())return Cf[a](e,t,o);throw new TypeError(`Unknown contrast algorithm: ${r}`)}function Df(e){let[t,s,r]=Hp(e,Xo),o=t+15*s+3*r;return[4*t/o,9*s/o]}function rw(e){let[t,s,r]=Hp(e,Xo),o=t+s+r;return[t/o,s/o]}function qq(e){Object.defineProperty(e.prototype,"uv",{get(){return Df(this)}}),Object.defineProperty(e.prototype,"xy",{get(){return rw(this)}})}var Vq=Object.freeze({__proto__:null,register:qq,uv:Df,xy:rw});function Wp(e,t,s={}){Xp(s)&&(s={method:s});let{method:r=tn.deltaE,...o}=s;for(let a in Kd)if("deltae"+r.toLowerCase()===a.toLowerCase())return Kd[a](e,t,o);throw new TypeError(`Unknown deltaE method: ${r}`)}function Nq(e,t=.25){return qi(e,[Nt.get("oklch","lch"),"l"],s=>s*(1+t))}function $q(e,t=.25){return qi(e,[Nt.get("oklch","lch"),"l"],s=>s*(1-t))}var Xq=Object.freeze({__proto__:null,darken:$q,lighten:Nq});function ow(e,t,s=.5,r={}){return[e,t]=[hs(e),hs(t)],kl(s)==="object"&&([s,r]=[.5,s]),jp(e,t,r)(s)}function aw(e,t,s={}){let r;jy(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]=[hs(e),hs(t)],r=jp(e,t,c));let d=Wp(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 _=1/(u-1);p=Array.from({length:u},(f,v)=>{let g=v*_;return{p:g,color:r(g)}})}if(o>0){let _=p.reduce((f,v,g)=>{if(g===0)return 0;let y=Wp(v.color,p[g-1].color,a);return Math.max(f,y)},0);for(;_>o;){_=0;for(let f=1;f<p.length&&p.length<l;f++){let v=p[f-1],g=p[f],y=(g.p+v.p)/2,b=r(y);_=Math.max(_,Wp(b,v.color),Wp(b,g.color)),p.splice(f,0,{p:y,color:r(y)}),f++}}}return p=p.map(_=>_.color),p}function jp(e,t,s={}){if(jy(e)){let[c,d]=[e,t];return jp(...c.rangeArgs.colors,{...c.rangeArgs.options,...d})}let{space:r,outputSpace:o,progression:a,premultiplied:i}=s;e=hs(e),t=hs(t),e=jd(e),t=jd(t);let l={colors:[e,t],options:s};if(r?r=Nt.get(r):r=Nt.registry[tn.interpolationSpace]||e.space,o=o?Nt.get(o):r,e=Dr(e,r),t=Dr(t,r),e=Rl(e),t=Rl(t),r.coords.h&&r.coords.h.type==="angle"){let c=s.hue=s.hue||"shorter",d=[r,"h"],[u,p]=[Ja(e,d),Ja(t,d)];isNaN(u)&&!isNaN(p)?u=p:isNaN(p)&&!isNaN(u)&&(p=u),[u,p]=BW(c,[u,p]),qi(e,d,u),qi(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[f];return Vp(_,v,c)}),u=Vp(e.alpha,t.alpha,c),p={space:r,coords:d,alpha:u};return i&&(p.coords=p.coords.map(_=>_/u)),o!==r&&(p=Dr(p,o)),p},{rangeArgs:l})}function jy(e){return kl(e)==="function"&&!!e.rangeArgs}tn.interpolationSpace="lab";function Hq(e){e.defineFunction("mix",ow,{returns:"color"}),e.defineFunction("range",jp,{returns:"function<color>"}),e.defineFunction("steps",aw,{returns:"array<color>"})}var jq=Object.freeze({__proto__:null,isRange:jy,mix:ow,range:jp,register:Hq,steps:aw}),nw=new Nt({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:Qd,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}}}),iw=new Nt({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:nw,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>"]}}}),Kq=new Nt({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:iw,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>"]}}}),lw=new La({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]]}),Qq=new La({id:"a98rgb",cssId:"a98-rgb",name:"Adobe\xAE 98 RGB compatible",base:lw,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))}),cw=new La({id:"prophoto-linear",cssId:"--prophoto-rgb-linear",name:"Linear ProPhoto",white:"D50",base:$y,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]]}),Zq=1/512,Jq=16/512,eV=new La({id:"prophoto",cssId:"prophoto-rgb",name:"ProPhoto",base:cw,toBase(e){return e.map(t=>t<Jq?t/16:t**1.8)},fromBase(e){return e.map(t=>t>=Zq?t**(1/1.8):16*t)}}),tV=new Nt({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:Hd,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),di(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>"]}}}),dw=_a.D65,sV=216/24389,u6=24389/27,[p6,m6]=Df({space:Xo,coords:dw}),uw=new Nt({id:"luv",name:"Luv",coords:{l:{refRange:[0,100],name:"Lightness"},u:{refRange:[-215,215]},v:{refRange:[-215,215]}},white:dw,base:Xo,fromBase(e){let t=[uo(e[0]),uo(e[1]),uo(e[2])],s=t[1],[r,o]=Df({space:Xo,coords:t});if(!Number.isFinite(r)||!Number.isFinite(o))return[0,0,0];let a=s<=sV?u6*s:116*Math.cbrt(s)-16;return[a,13*a*(r-p6),13*a*(o-m6)]},toBase(e){let[t,s,r]=e;if(t===0||Bl(t))return[0,0,0];s=uo(s),r=uo(r);let o=s/(13*t)+p6,a=r/(13*t)+m6,i=t<=8?t/u6: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]"]}}}),Ky=new Nt({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:uw,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),di(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>"]}}}),rV=216/24389,oV=24389/27,_6=yo[0][0],f6=yo[0][1],ky=yo[0][2],v6=yo[1][0],h6=yo[1][1],By=yo[1][2],g6=yo[2][0],y6=yo[2][1],zy=yo[2][2];function $d(e,t,s){let r=t/(Math.sin(s)-e*Math.cos(s));return r<0?1/0:r}function Bf(e){let t=Math.pow(e+16,3)/1560896,s=t>rV?t:e/oV,r=s*(284517*_6-94839*ky),o=s*(838422*ky+769860*f6+731718*_6),a=s*(632260*ky-126452*f6),i=s*(284517*v6-94839*By),l=s*(838422*By+769860*h6+731718*v6),c=s*(632260*By-126452*h6),d=s*(284517*g6-94839*zy),u=s*(838422*zy+769860*y6+731718*g6),p=s*(632260*zy-126452*y6);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 b6(e,t){let s=t/360*Math.PI*2,r=$d(e.r0s,e.r0i,s),o=$d(e.r1s,e.r1i,s),a=$d(e.g0s,e.g0i,s),i=$d(e.g1s,e.g1i,s),l=$d(e.b0s,e.b0i,s),c=$d(e.b1s,e.b1i,s);return Math.min(r,o,a,i,l,c)}var aV=new Nt({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:Ky,gamutSpace:Qd,fromBase(e){let[t,s,r]=[uo(e[0]),uo(e[1]),uo(e[2])],o;return t>99.9999999?(o=0,t=100):t<1e-8?(o=0,t=0):o=s/b6(Bf(t),r)*100,[r,o,t]},toBase(e){let[t,s,r]=[uo(e[0]),uo(e[1]),uo(e[2])],o;return r>99.9999999?(r=100,o=0):r<1e-8?(r=0,o=0):o=b6(Bf(r),t)/100*s,[r,o,t]},formats:{color:{id:"--hsluv",coords:["<number> | <angle>","<percentage> | <number>","<percentage> | <number>"]}}});yo[0][0];yo[0][1];yo[0][2];yo[1][0];yo[1][1];yo[1][2];yo[2][0];yo[2][1];yo[2][2];function Xd(e,t){return Math.abs(t)/Math.sqrt(Math.pow(e,2)+1)}function x6(e){let t=Xd(e.r0s,e.r0i),s=Xd(e.r1s,e.r1i),r=Xd(e.g0s,e.g0i),o=Xd(e.g1s,e.g1i),a=Xd(e.b0s,e.b0i),i=Xd(e.b1s,e.b1i);return Math.min(t,s,r,o,a,i)}var nV=new Nt({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:Ky,gamutSpace:"self",fromBase(e){let[t,s,r]=[uo(e[0]),uo(e[1]),uo(e[2])],o;return t>99.9999999?(o=0,t=100):t<1e-8?(o=0,t=0):o=s/x6(Bf(t))*100,[r,o,t]},toBase(e){let[t,s,r]=[uo(e[0]),uo(e[1]),uo(e[2])],o;return r>99.9999999?(r=100,o=0):r<1e-8?(r=0,o=0):o=x6(Bf(r))/100*s,[r,o,t]},formats:{color:{id:"--hpluv",coords:["<number> | <angle>","<percentage> | <number>","<percentage> | <number>"]}}}),A6=203,w6=2610/2**14,iV=2**14/2610,lV=2523/2**5,T6=2**5/2523,S6=3424/2**12,P6=2413/2**7,C6=2392/2**7,cV=new La({id:"rec2100pq",cssId:"rec2100-pq",name:"REC.2100-PQ",base:Rf,toBase(e){return e.map(function(t){return(Math.max(t**T6-S6,0)/(P6-C6*t**T6))**iV*1e4/A6})},fromBase(e){return e.map(function(t){let s=Math.max(t*A6/1e4,0);return((S6+P6*s**w6)/(1+C6*s**w6))**lV})}}),M6=.17883277,E6=.28466892,k6=.55991073,Ry=3.7743,dV=new La({id:"rec2100hlg",cssId:"rec2100-hlg",name:"REC.2100-HLG",referred:"scene",base:Rf,toBase(e){return e.map(function(t){return t<=.5?t**2/3*Ry:(Math.exp((t-k6)/M6)+E6)/12*Ry})},fromBase(e){return e.map(function(t){return t/=Ry,t<=1/12?Math.sqrt(3*t):M6*Math.log(12*t-E6)+k6})}}),pw={};zl.add("chromatic-adaptation-start",e=>{e.options.method&&(e.M=mw(e.W1,e.W2,e.options.method))});zl.add("chromatic-adaptation-end",e=>{e.M||(e.M=mw(e.W1,e.W2,e.options.method))});function Lf({id:e,toCone_M:t,fromCone_M:s}){pw[e]=arguments[0]}function mw(e,t,s="Bradford"){let r=pw[s],[o,a,i]=Lr(r.toCone_M,e),[l,c,d]=Lr(r.toCone_M,t),u=Lr([[l/o,0,0],[0,c/a,0],[0,0,d/i]],r.toCone_M);return Lr(r.fromCone_M,u)}Lf({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]]});Lf({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]]});Lf({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]]});Lf({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(_a,{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]});_a.ACES=[.32168/.33767,1,.34065/.33767];var _w=new La({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:_a.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]]}),Sf=2**-16,Dy=-.35828683,Pf=(Math.log2(65504)+9.72)/17.52,uV=new La({id:"acescc",cssId:"--acescc",name:"ACEScc",coords:{r:{range:[Dy,Pf],name:"Red"},g:{range:[Dy,Pf],name:"Green"},b:{range:[Dy,Pf],name:"Blue"}},referred:"scene",base:_w,toBase(e){let t=-.3013698630136986;return e.map(function(s){return s<=t?(2**(s*17.52-9.72)-Sf)*2:s<Pf?2**(s*17.52-9.72):65504})},fromBase(e){return e.map(function(t){return t<=0?(Math.log2(Sf)+9.72)/17.52:t<Sf?(Math.log2(Sf+t*.5)+9.72)/17.52:(Math.log2(t)+9.72)/17.52})}}),B6=Object.freeze({__proto__:null,A98RGB:Qq,A98RGB_Linear:lw,ACEScc:uV,ACEScg:_w,CAM16_JMh:cq,HCT:$p,HPLuv:nV,HSL:nw,HSLuv:aV,HSV:iw,HWB:Kq,ICTCP:Gy,JzCzHz:Oy,Jzazbz:W6,LCH:Np,LCHuv:Ky,Lab:en,Lab_D65:Yy,Luv:uw,OKLCH:tV,OKLab:Hd,P3:tw,P3_Linear:J6,ProPhoto:eV,ProPhoto_Linear:cw,REC_2020:Z6,REC_2020_Linear:Rf,REC_2100_HLG:dV,REC_2100_PQ:cV,XYZ_ABS_D65:Xy,XYZ_D50:$y,XYZ_D65:Xo,sRGB:Qd,sRGB_Linear:ew}),fa=class Da{constructor(...t){let s;t.length===1&&(s=hs(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:Nt.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 Da(this.space,this.coords,this.alpha)}toJSON(){return{spaceId:this.spaceId,coords:this.coords,alpha:this.alpha}}display(...t){let s=xq(this,...t);return s.color=new Da(s.color),s}static get(t,...s){return t instanceof Da?t:new Da(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=Da.get(c);else if(a==="function<color>"){let d=c;c=function(...u){let p=d(...u);return Da.get(p)},Object.assign(c,d)}else a==="array<color>"&&(c=c.map(d=>Da.get(d)));return c};t in Da||(Da[t]=i),o&&(Da.prototype[t]=function(...l){return i(this,...l)})}static defineFunctions(t){for(let s in t)Da.defineFunction(s,t[s],t[s])}static extend(t){if(t.register)t.register(Da);else for(let s in t)Da.defineFunction(s,t[s])}};fa.defineFunctions({get:Ja,getAll:Hp,set:qi,setAll:Ny,to:Dr,equals:Aq,inGamut:Lc,toGamut:Rl,distance:Y6,toString:qp});Object.assign(fa,{util:SW,hooks:zl,WHITES:_a,Space:Nt,spaces:Nt.registry,parse:F6,defaults:tn});for(let e of Object.keys(B6))Nt.register(B6[e]);for(let e in Nt.registry)Wy(e,Nt.registry[e]);zl.add("colorspace-init-end",e=>{Wy(e.id,e),e.aliases?.forEach(t=>{Wy(t,e)})});function Wy(e,t){let s=e.replace(/-/g,"_");Object.defineProperty(fa.prototype,s,{get(){let r=this.getAll(e);return typeof Proxy>"u"?r:new Proxy(r,{has:(o,a)=>{try{return Nt.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}=Nt.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}=Nt.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})}fa.extend(Kd);fa.extend({deltaE:Wp});Object.assign(fa,{deltaEMethods:Kd});fa.extend(Xq);fa.extend({contrast:Wq});fa.extend(Vq);fa.extend(Tq);fa.extend(jq);fa.extend(Cf);var fw="p3-linear",vw=e=>{fw=e},rs=e=>e?1:-1;function pV(e){try{let t=new fa(e),s=fw==="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=>pV(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}},is=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}},Ur=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},hw=e=>({outside:0,center:1,inside:2})[e?.toLowerCase()]??1,ct=[{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 mV=Object.defineProperty,Eo=e=>{let t={};for(var s in e)mV(t,s,{get:e[s],enumerable:!0});return t};function sn(e){typeof Symbol[e]>"u"&&Object.defineProperty(Symbol,e,{value:Symbol.for(`Symbol.${e}`),writable:!1,enumerable:!1,configurable:!1})}function gw(e,t){return typeof e?.[t]=="function"}function Wu(e,t,s,r){let o=Ho.deferOperation;return gw(e,s)&&(o=e[s](e,t)),o===Ho.deferOperation&&gw(t,s)&&(o=t[s](e,t)),o===Ho.deferOperation?r(e,t):o}var _V=(e,t)=>e+t;function fV(e,t){return(typeof e=="number"||typeof e=="string")&&(typeof t=="number"||typeof t=="string")?e+t:Wu(e,t,Ho.plus,_V)}var vV=(e,t)=>e-t;function hV(e,t){return typeof e=="number"&&typeof t=="number"?e-t:Wu(e,t,Ho.minus,vV)}var gV=(e,t)=>e*t;function yV(e,t){return typeof e=="number"&&typeof t=="number"?e*t:Wu(e,t,Ho.star,gV)}var bV=(e,t)=>e/t;function xV(e,t){return typeof e=="number"&&typeof t=="number"?e/t:Wu(e,t,Ho.slash,bV)}var AV=(e,t)=>e**t;function wV(e,t){return typeof e=="number"&&typeof t=="number"?e**t:Wu(e,t,Ho.starStar,AV)}var TV=(e,t)=>e%t;function SV(e,t){return typeof e=="number"&&typeof t=="number"?e%t:Wu(e,t,Ho.percent,TV)}var Ho=(sn("deferOperation"),sn("operatorPlus"),sn("operatorMinus"),sn("operatorStar"),sn("operatorSlash"),sn("operatorStarStar"),sn("operatorPercent"),sn("operatorEqEq"),sn("operatorPrePlusPlus"),sn("operatorPreMinusMinus"),sn("operatorPostPlusPlus"),sn("operatorPostMinusMinus"),sn("operatorPreMinus"),globalThis.__tsover_add=fV,globalThis.__tsover_sub=hV,globalThis.__tsover_mul=yV,globalThis.__tsover_div=xV,globalThis.__tsover_pow=wV,globalThis.__tsover_mod=SV,{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}),ah=!1,kx=!1,ko="0.12.3",fe=Symbol(`typegpu:${ko}:$internal`),je=Symbol(`typegpu:${ko}:$soul`),Xa=Symbol(`typegpu:${ko}:$gpuValueOf`),Co=Symbol(`typegpu:${ko}:$getNameForward`),ga=Symbol(`typegpu:${ko}:$providing`),Kl=Symbol(`typegpu:${ko}:$ownSnippet`),Is=Symbol(`typegpu:${ko}:$resolve`),Bx=Symbol(`typegpu:${ko}:$cast`),mo=Symbol(`typegpu:${ko}:$gpuCallable`),qu=Symbol(`typegpu:${ko}:$repr`);`${ko}`;`${ko}`;`${ko}`;`${ko}`;`${ko}`;`${ko}`;`${ko}`;`${ko}`;`${ko}`;function ms(e){return!!e?.[fe]}var kr={[fe]:{},type:"void",toString(){return"void"}},PV=["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 Zo(e){let t=e;return ms(t)&&typeof t.kind=="string"&&t.kind.startsWith("vec")}function CV(e){return Zo(e)&&e.kind.includes("b")}function MV(e){let t=e;return ms(t)&&typeof t.type=="string"&&t.type.startsWith("vec2")}function EV(e){let t=e;return ms(t)&&typeof t.type=="string"&&t.type.startsWith("vec3")}function kV(e){let t=e;return ms(t)&&typeof t.type=="string"&&t.type.startsWith("vec4")}function Hs(e){return MV(e)||EV(e)||kV(e)}function zx(e){return Hs(e)&&e.type.includes("b")}function Kn(e){let t=e;return ms(t)&&typeof t.kind?.startsWith=="function"&&t.kind.startsWith("mat")}function xC(e){return ms(e)&&e?.type==="mat2x2f"}function AC(e){return ms(e)&&e?.type==="mat3x3f"}function BV(e){return ms(e)&&e?.type==="mat4x4f"}function yi(e){return xC(e)||AC(e)||BV(e)}function wC(e){return ms(e)&&["abstractInt","i32","u32"].includes(e?.type)}function zV(e){return Hs(e)&&wC(e.primitive)}function yw(e){return Zo(e)&&["vec2f","vec3f","vec4f"].includes(e.kind)}function D1(e){return Zo(e)&&/[iu]$/.test(e.kind)}function TC(e){return Zo(e)&&/[u]$/.test(e.kind)}function hd(e){return ms(e)&&PV.includes(e?.type)}function oo(e){return ms(e)&&e?.type==="array"}function pr(e){return ms(e)&&e?.type==="struct"}function ea(e){return ms(e)&&e?.type==="ptr"}function nh(e){return ms(e)&&e?.type==="atomic"}function SC(e){return ms(e)&&e?.type==="@align"}function PC(e){return ms(e)&&e?.type==="@size"}function CC(e){return ms(e)&&e?.type==="@location"}function RV(e){return ms(e)&&e?.type==="@builtin"}function vl(e){return ms(e)&&e?.type==="decorated"}function ih(e){return ms(e)&&e.type==="void"}function Gl(e){return ms(e)&&e.type==="bool"}function Q0(e){let t=e?.type;return ms(e)&&(t==="abstractInt"||t==="abstractFloat"||t==="f32"||t==="f16"||t==="i32"||t==="u32")}function Rx(e){let t=e?.type;return ms(e)&&(t==="f16"||t==="vec2h"||t==="vec3h"||t==="vec4h")}var DV=["abstractInt","abstractFloat","f32","f16","i32","u32","bool"];function jn(e){return!ms(e)||DV.includes(e?.type)}function lh(e){return e.schema}var LV=["deprecated","suspicious","fallback","precision-loss","implicit-conversion","webgpu-feature-missing","webgpu-limits-exceeded","locations-mismatched","log-limit-exceeded","external-omitted","uniform-schema-misaligned"],UV=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=LV,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))}},MC=new UV(!(ah||kx)),tr=MC,EC=MC;function cn(e){if(Array.isArray(e))return`[${e.map(cn).join(", ")}]`;let t=String(e);if(t!=="[object Object]")return t;try{return JSON.stringify(e)}catch(s){return tr.warn("suspicious","Error parsing JSON:",s),"<invalid json>"}}function Z0(e){return Zo(e)||Kn(e)?e.toString():Array.isArray(e)?`[${e.map(Z0).join(", ")}]`:e&&typeof e=="object"?`{ ${Object.entries(e).map(([t,s])=>`${t}: ${Z0(s)}`).join(", ")} }`:String(e)}function OV(e){let t={};for(let[s,r]of Object.entries(e))Object.defineProperty(t,s,{get:r,enumerable:!0});return t}function GV(e){if(e.v===1){let t=e.externals;return{...e,externals:typeof t=="function"?t:()=>t}}if(e.v===2){let t=OV(e?.externals);return{...e,externals:()=>t}}throw new Error(`Unrecognized TypeGPU metadata format: ${cn(e)}`)}var kC="0.12.3",il=globalThis;il.__TYPEGPU_VERSION__!==void 0&&console.warn(`Found duplicate TypeGPU version. First was ${il.__TYPEGPU_VERSION__}, this one is ${kC}. This may cause unexpected behavior.`);il.__TYPEGPU_VERSION__=kC;il.__TYPEGPU_AUTONAME__=(e,t)=>gu(e)&&ms(e)&&!it(e)?e.$name(t):e;var L1=new WeakMap;function gu(e){return!!e?.$name}function BC(e){return!!e?.[Co]}function zC(e){return e?.[je]}function it(e){return BC(e)?it(e[Co]):L1.get(e)??zC(e)?.label??il.__TYPEGPU_META__?.get(e)?.name}function Jt(e,t){if(BC(e)){Jt(e[Co],t);return}L1.set(e,t);let s=zC(e);s&&(s.label=t)}var bw=new WeakMap;function Dx(e){let t=il.__TYPEGPU_META__?.get(e);if(t){il.__TYPEGPU_META__?.delete(e);let s=GV(t);bw.set(e,s),t.name&&L1.get(e)===void 0&&L1.set(e,t.name)}return bw.get(e)}function yu(e){return typeof e=="function"&&!!Dx(e)}var Lx=(ah||kx)&&{get enabled(){return!!il.__TYPEGPU_MEASURE_PERF__},record(e,t){let s=il.__TYPEGPU_PERF_RECORDS__??=new Map,r=s.get(e);r||(r=[],s.set(e,r)),r.push(t)}}||void 0,Qy="Invariant failed";function Mr(e,t){if(e)return;if(!ah&&!kx)throw new Error(Qy);let s=typeof t=="function"?t():t,r=s?`${Qy}: ${s}`:Qy;throw new Error(r)}var lu=class J0 extends Error{cause;trace;constructor(t,s){let r=s.map(o=>`- ${yu(o)?`fn*:${it(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,J0.prototype)}appendToTrace(t){let s=[t,...this.trace];return new J0(this.cause,s)}},xw=class eb 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:
|
|
@@ -271,4 +271,4 @@ The element must be a direct child of a <canvas layoutsubtree>.`,y),u=!0)}}}}}),
|
|
|
271
271
|
const uv = array<vec2f, 3>(vec2f(0, 1), vec2f(2, 1), vec2f(0, -1));
|
|
272
272
|
|
|
273
273
|
return Out(vec4f(pos[in.vertexIndex], 0, 1), uv[in.vertexIndex]);
|
|
274
|
-
}`,"fullScreenTriangle");EC.disable("external-omitted");var Ife=["float32-filterable","timestamp-query"],f5=new WeakMap,_5=new WeakMap,v5=new WeakSet,Cp=null,Yfe=new WeakSet;async function Wfe(e={}){if(e.device&&!v5.has(e.device)){let r=e.device,o=f5.get(r);o||(o=w.initFromDevice({device:r}),f5.set(r,o));let a=tW(o,e.onDeviceLost);return{root:o,device:r,adapter:e.adapter,createdDevice:!1,release:a}}e.device&&bn("[gpu] injected GPU device was lost \u2014 falling back to the shared default device");let t=await qfe(),s=tW(t.root,e.onDeviceLost);return{root:t.root,device:t.device,adapter:t.adapter,createdDevice:!1,release:s}}async function qfe(){for(;;){let t=Cp;if(!t)break;let s=await t.catch(()=>null);if(s&&!Yfe.has(t)&&!v5.has(s.device))return s;Cp===t&&(Cp=null)}let e=Vfe();Cp=e;try{return await e}catch(t){throw Cp===e&&(Cp=null),t}}async function Vfe(){if(typeof navigator>"u"||!navigator.gpu)throw new qd("unsupported","[gpu] WebGPU is not available in this environment (navigator.gpu is undefined).");let e;try{e=await w.init({adapter:{powerPreference:"high-performance"},device:{optionalFeatures:Ife}})}catch(t){let s=await Ty();throw new qd(s.supported?"no-device":s.reason??"init-failed",void 0,{cause:t})}if(!e.device)throw new qd("no-device","[gpu] adapter returned no device.");return f5.set(e.device,e),{root:e,device:e.device,createdDevice:!0}}function Nfe(e,t,s={}){return e.configureContext({canvas:t,alphaMode:"premultiplied",...s})}function tW(e,t){let s=e.device,r=_5.get(s);if(r||(r=new Set,_5.set(s,r),e.device.lost.then(a=>{if(v5.add(s),a.reason!=="destroyed")for(let i of[..._5.get(s)??[]])i(a)})),!t)return()=>{};let o=r;return o.add(t),()=>o.delete(t)}function $fe(){let e={value:0,advance(t,s){e.value+=t*s}};return e}var sW=new WeakMap;function Ud(e){let t=sW.get(e);return t||(t=$fe(),sW.set(e,t)),t}var Xfe=(globalThis.__TYPEGPU_AUTONAME__??(e=>e))(ft({time:n,viewportSize:m,logicalViewportSize:m,aspect:n,pointer:m,pointerActive:n}),"SystemUniforms");w.fn([m,m],m)((e=>(globalThis.__TYPEGPU_META__??=new WeakMap).set(e.f=((t,s)=>{"use gpu";return sa(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":()=>sa}})&&e.f)({}));w.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 Hfe(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 jfe(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 _=u(),f={hash:d,value:_,lastUsed:++o};return r.set(d,f),a===null?(a=d,i=null):i=d,c(),_},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 Mp="passManager";function Kfe(e,t){let{textureManager:s,dispatcher:r}=t,o=t.canvasFormat??Qfe(),a=t.rttFormat??"rgba16float",i=e.device?.limits?.maxSampledTexturesPerShaderStage,l=t.maxSampledTextures??(typeof i=="number"&&i>0?i:16),c=t.fullScreenTriangle??Ffe,d=new Map,u=new Set,p=null;function _(){let k=s.samplers;try{return e.createBindGroup(FA,{linearClamp:k.linearClamp,nearestClamp:k.nearestClamp,linearRepeat:k.linearRepeat,nearestRepeat:k.nearestRepeat})}catch(D){wr(`[${Mp}] failed to build sampler bind group:`,D);return}}function f(k,D){let O=new Set;for(let F of k.textures)if(F.kind==="rtt")if(O.add(F.key),d.has(F.key))d.get(F.key).resize(D.width,D.height);else{let q=s.createRenderTexture({width:D.width,height:D.height,format:a,label:`rtt:${F.key}`});d.set(F.key,q),u.add(q)}for(let[F,q]of[...d])O.has(F)||(q.destroy(),u.delete(q),d.delete(F))}function v(k,D){if(!k.textureLayout||k.reads.length===0)return;let O={};for(let F of k.reads){let q=d.get(F),Y=D?.[F],V=q??Y;if(!V){wr(`[${Mp}] pass "${k.entry}" reads unknown texture "${F}"`);return}O[F]=V.texture}k.reads.length>l&&bn(`[${Mp}] pass samples ${k.reads.length} textures (> device limit ~${l}); composition may fail on this device.`);try{return e.createBindGroup(k.textureLayout,O)}catch(F){wr(`[${Mp}] failed to build texture bind group:`,F);return}}function g(k,D){return e.createRenderPipeline({vertex:c,fragment:k.entry,targets:{format:D}})}function y(k,D){if(!k.externalLayout||k.externalReads.length===0)return;let O=k.externalReads;if(O.length===1){let q=D.get(O[0]);if(!q){wr(`[${Mp}] external read "${O[0]}" has no registered source`);return}return s.createExternalTextureBinding({layout:k.externalLayout,entryKey:O[0],getSource:q})}let F=null;return{update(){let q={};for(let Y of O){let V=D.get(Y)?.();if(!V)return F=null,null;try{q[Y]=e.device.importExternalTexture({source:V})}catch{return F=null,null}}return F=e.createBindGroup(k.externalLayout,q),F},get current(){return F},destroy(){F=null}}}function b(k,D,O,F){let q=D.kind==="canvas"?o:a,Y=k.reads.filter($=>O?.[$]),V=new Map(Y.map($=>[$,O[$].texture]));return{fragment:k,pipeline:g(k,q),textureBindGroup:v(k,O),externalBinding:y(k,F),target:D,mediaReads:Y,mediaSnapshot:V}}function A(k,D,O,F){f(k,O);for(let Q of k.computeSteps)Q.bindInputs?.(se=>d.get(se)??F?.[se]);let q=_(),Y=new Map;for(let Q of k.externalTextures)Y.set(Q.key,Q.getSource);let V=k.rttPasses.map(Q=>b(Q.fragment,{kind:"rtt",key:Q.textureKey},F,Y)),$=b(k.finalPass,{kind:"canvas"},F,Y);p={ir:k,uniformBindGroup:D,samplerBindGroup:q,computeSteps:k.computeSteps,rttPasses:V,finalPass:$,size:O,mediaResources:F}}function P(k,D){let O=k.pipeline;if(p?.uniformBindGroup&&(O=O.with(p.uniformBindGroup)),k.mediaReads&&k.mediaReads.length>0&&p?.mediaResources){let F=!1;for(let q of k.mediaReads)p.mediaResources[q].texture!==k.mediaSnapshot.get(q)&&(F=!0);if(F){k.textureBindGroup=v(k.fragment,p.mediaResources);for(let q of k.mediaReads)k.mediaSnapshot.set(q,p.mediaResources[q].texture)}}if(k.textureBindGroup&&(O=O.with(k.textureBindGroup)),k.fragment.usesSamplers&&p?.samplerBindGroup&&(O=O.with(p.samplerBindGroup)),k.fragment.externalReads.length>0){let F=k.externalBinding?.update()??null;if(!F){k.externalSkipLogged||(bn(`[${Mp}] external texture not ready \u2014 skipping pass (${k.fragment.externalReads.join(", ")})`),k.externalSkipLogged=!0);return}O=O.with(F)}O.withColorAttachment({view:D}).draw(3)}function C(k,D,O){if(p){for(let F of p.computeSteps){let q=F.getComputeNodes(D);q&&q.length&&r.dispatch(q)}O?.(),E(),P(p.finalPass,k)}}function E(){if(p)for(let k of p.rttPasses){let D=d.get(k.target.key);D&&P(k,z(D))}}function z(k){return e.unwrap(k.texture).createView()}function U(k){if(!(!k.fragment.textureLayout||k.fragment.reads.length===0)&&(k.textureBindGroup=v(k.fragment,p?.mediaResources),k.mediaReads&&k.mediaSnapshot&&p?.mediaResources))for(let D of k.mediaReads)k.mediaSnapshot.set(D,p.mediaResources[D].texture)}function L(k,D){let O=!1;for(let F of d.values())F.resize(k,D)&&(O=!0);if(!p)return O;if(p.size={width:k,height:D},!O)return!1;for(let F of p.computeSteps)F.bindInputs?.(q=>d.get(q)??p.mediaResources?.[q]);for(let F of p.rttPasses)U(F);return U(p.finalPass),!0}return{setComposition:A,render:C,repaintRtt:E,resize:L,get textureCount(){return u.size},get passCount(){return p?p.rttPasses.length+1:0},dispose(){for(let k of[...u])k.destroy();u.clear(),d.clear(),p=null}}}function Qfe(){return typeof navigator<"u"&&navigator.gpu?navigator.gpu.getPreferredCanvasFormat():"bgra8unorm"}function rW(e){return`${e}-srgb`}function Zfe(e){let t=new Set;function s(f,...v){return e.createTexture.call(e,f).$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(f,v,g,y,b){let A={texture:f,width:v,height:g,format:y,write(P){f.write(P)},unwrap(){return e.unwrap(f)},createSrgbView(){if(b)return e.unwrap(f).createView({format:rW(y)})},generateMipmaps(){f.generateMipmaps?.()},destroy(){t.has(A)&&(f.destroy(),t.delete(A))}};return t.add(A),A}function d(f){let{width:v,height:g,srgb:y=!1,mipLevelCount:b}=f,A=f.format??"rgba8unorm";return c(s({size:[v,g],format:A,...y?{viewFormats:[rW(A)]}:{},...b?{mipLevelCount:b}:{}},"sampled","render"),v,g,A,y)}function u(f){let{width:v,height:g,format:y,data:b}=f,A=c(s({size:[v,g],format:y},"sampled"),v,g,y,!1);return b&&A.write(b),A}function p(f){let v=f.format??"rgba16float",{mipLevelCount:g}=f,y=f.width,b=f.height;function A(C,E){return c(s({size:[C,E],format:v,...g?{mipLevelCount:g}:{}},"sampled","render"),C,E,v,!1)}let P=A(y,b);return{get texture(){return P.texture},get width(){return y},get height(){return b},format:v,write(C){P.write(C)},unwrap(){return P.unwrap()},createSrgbView(){return P.createSrgbView()},generateMipmaps(){P.generateMipmaps()},resize(C,E){return C===y&&E===b?!1:(P.destroy(),y=C,b=E,P=A(C,E),!0)},destroy(){P.destroy()}}}function _(f){let{layout:v,entryKey:g,getSource:y,staticEntries:b={}}=f,A=null;return{update(){let P=y();if(!P)return A=null,null;let C;try{C=e.device.importExternalTexture({source:P})}catch{return A=null,null}return A=e.createBindGroup(v,{...b,[g]:C}),A},get current(){return A},destroy(){A=null}}}return{samplers:l,createMediaTexture:d,createDataTexture:u,createRenderTexture:p,createExternalTextureBinding:_,get textureCount(){return t.size},destroy(){for(let f of[...t])f.destroy();t.clear()}}}function Jfe(e,t){let s=m5(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 e1e(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 t1e(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=jm(l.width,a[l.width.prop],t,s),p=jm(l.height,a[l.height.prop],t,s);return u>0&&p>0?{widthPx:u,heightPx:p}:null}let c=e1e(i,t,s);if(c)return c;let d=Jfe(r,a);if(d){let u=W4(d);if(u)return{widthPx:u.width,heightPx:u.height}}return null}function s1e(e,t){return e==null?0:typeof e=="number"?e:e.unit==="px"?e.value:e.value*t}function h5(e,t,s){return!e||e.mode!=="column"&&e.mode!=="row"?null:{mode:e.mode,gapPx:Math.max(0,s1e(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 oW=e=>({ox:e.includes("left")?"start":e.includes("right")?"end":"center",oy:e.includes("top")?"start":e.includes("bottom")?"end":"center"}),iy=(e,t,s,r)=>e==="start"?r:e==="end"?s-t-r:(s-t)/2+r;function ly(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 r1e(e,t,s,r){let o=new Map;if(t.length===0)return o;let a=ly(e,t),{ox:i,oy:l}=oW(e.anchor),c=iy(i,a.widthPx,s,e.anchorOffsetX),d=iy(l,a.heightPx,r,e.anchorOffsetY),u=(_,f)=>e.align==="start"?0:e.align==="end"?f-_:(f-_)/2,p=0;for(let _ of t)if(e.mode==="column"){let f=c+u(_.size.widthPx,a.widthPx)+_.size.widthPx/2,v=d+p+_.size.heightPx/2;o.set(_.id,{centerXPx:f,centerYPx:v}),p+=_.size.heightPx+e.gapPx}else{let f=c+p+_.size.widthPx/2,v=d+u(_.size.heightPx,a.heightPx)+_.size.heightPx/2;o.set(_.id,{centerXPx:f,centerYPx:v}),p+=_.size.widthPx+e.gapPx}return o}function o1e(e,t,s){let r=h5(e.layout,t,s);if(r){let o=g5(e,t,s);return o.length===0?null:ly(r,o)}return t1e({type:e.componentName,decl:e.decl,props:e.props,boundingBox:e.boundingBox,requiresChild:e.requiresChild,availableWidthPx:t},t,s)}function g5(e,t,s){let r=[];for(let o of e.children){if(o.visible===!1||o.absolute)continue;let a=o1e(o,t,s);a&&r.push({id:o.id,size:a,view:o})}return r}function a1e(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 n1e(e,t,s,r,o,a,i,l){let c=h5(e.layout,o,a);if(c){aW(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=a1e(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 aW(e,t,s,r,o,a,i,l){let c=l??g5(e,s,r);if(c.length===0)return;let d=t;if(a){let p=ly(t,c);d={...t,anchor:"top-left",anchorOffsetX:a.centerXPx-p.widthPx/2,anchorOffsetY:a.centerYPx-p.heightPx/2}}if(i){let p=ly(d,c),{ox:_,oy:f}=oW(d.anchor);i.set(e.id,{leftPx:iy(_,p.widthPx,s,d.anchorOffsetX),topPx:iy(f,p.heightPx,r,d.anchorOffsetY),widthPx:p.widthPx,heightPx:p.heightPx})}let u=r1e(d,c,s,r);for(let p of c){let _=u.get(p.id);_&&n1e(p.view,p.size,_.centerXPx,_.centerYPx,s,r,o,i)}}function i1e(e,t,s,r){let o=[],a=i=>{let l=h5(i.layout,t,s);if(l){let c=g5(i,t,s);aW(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 l1e=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,_=p?p.usedJSHeapSize/(1024*1024):null,f=this.calculateMemoryGrowthRate(),v=a>0?a/this.targetFrameTime*100:0,g=e?.render?.calls??null,y=e?.programs?.length??null,b=e?.memory?.textures??null,A=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:_!==null?Math.round(_*100)/100:null,memoryGrowthRate:f!==null?Math.round(f*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:b,intensityScore:A.score,intensityLabel:A.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}},c1e=32,d1e=5,u1e=(()=>{let e=0,t=new Set,s=(d,u)=>{t.forEach(p=>{try{p[d](u)}catch(_){wr("[Shaders] Error in pointer handler:",_)}})},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 p1e(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 nW(){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,_=new Map,f=[],v=[],g=jfe({maxSize:4,dispose:X=>cf(X)}),y=new Set,b=null,A=null,P=!0,C=0,E=0,z=0,U=0,L=1,k=8192,D=0,O=0,F=!1,q=()=>z||C||1,Y=()=>U||E||1,V=!0,$=!1,Q=!1,se=0,ee=0,oe=0,le=null,re=null,we=-10,de=-10,xe=!1,Ae=!1,Re=null,Me=!1,ze=null,Ye=null,ke=null,Ce=null,Te=null,qe=null,Ve=!1,rt="p3-linear",pt="linear",Qe=!1,lt=null,vt=null,ht=!1,St=!1,Mt=null,Rt=!1,Ft=null,Qt=null,os=!1,cs=null,ss=null,Ss=0,ds=0,us=new l1e,_s={deltaTime:0,pointer:{x:-10,y:-10,seen:!1},pointerActive:!1,dimensions:{width:0,height:0}},js=TB(()=>Gp()),xr=X=>X.replace(/[^a-zA-Z0-9_]/g,"_"),rr=X=>{let Z=_.get(X);if(!Z)return[];let J=[];for(let ge of Z){let ue=u.get(ge);ue&&J.push(ue)}return J},Cr=X=>{let Z=xr(X);for(let[J,ge]of u)if(ge.metadata.id===Z)return J;return null},Sr=(X,Z)=>{if(Z==="center")return;let J=X.boundingBoxDeclaration;if(!J)return;let ge={};for(let[ue,Pe]of Object.entries(X.uniforms))ge[ue]=Pe._rawDimensional!==void 0?Pe._rawDimensional:Pe.value;return co(X,ge.shapeSdfUrl),I3(J,ge,q(),Y())},lo=new WeakMap,co=(X,Z)=>{if(typeof Z!="string"||!Z||yB(Z))return;let J=lo.get(X)??new Set;lo.set(X,J),!J.has(Z)&&(J.add(Z),Ih(Z,()=>{J.delete(Z),u.get(X.id)===X&&(pe(X),zs()&&Ls(),pa())}))},pe=X=>{let Z=X.boundingBoxDeclaration,J=X.extraDimProps,ge=rp(Z,J);if(!ge)return;let ue=X.uniforms.origin?.value??"center",Pe=Sr(X,ue),Ne=[...ge.positionProps,...ge.sizeProps.keys()];for(let dt of Ne){let xt=X.uniforms[dt];if(!xt||xt._rawDimensional===void 0)continue;let Vt=M_(Z,dt,xt._rawDimensional,ue,q(),Y(),J,Pe);xt.value=Vt,Yi(X,dt,Vt)}},Ie=(X,Z,J)=>{if(typeof J=="number")return J;let ge=X.uniforms.origin?.value??"center",ue=M_(X.boundingBoxDeclaration,Z,J,ge,q(),Y(),X.extraDimProps);return typeof ue=="number"?ue:J?.value??0},De=()=>{let{width:X,height:Z}=Wi();return X/Math.max(1,Z)},Be=X=>{let Z=X.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:De()}},Le=X=>{let Z=X.metadata.boundingBox;if(!Z)return null;let J=GA(Z,q(),Y());return{centerX:J.centerX,centerY:J.centerY,halfWidth:J.halfWidthUV,halfHeight:J.halfHeightUV,cornerRadius:J.cornerRadiusUV,rotation:J.rotation,aspectRatio:De()}},Je=X=>!!X.metadata.boundingBox&&!!X.boundingBoxDeclaration&&!Bh(X.metadata.boundingBox),gt=X=>{let Z=X.boundingBoxDeclaration;if(!Z||!X.uniforms||!Z.computeBounds&&!Z.propBindings)return null;let J={};for(let[xt,Vt]of Object.entries(X.uniforms))J[xt]=Vt._rawDimensional!==void 0?Vt._rawDimensional:Vt.value;let ge=I3(Z,J,q(),Y());if(ge.hwx<=0&&ge.hhy<=0)return null;let ue=.5,Pe=.5,Ne=Z.propBindings?.x?.prop??Z.propBindings?.y?.prop,dt=Ne?X.uniforms[Ne]?.value:void 0;if(dt&&typeof dt.x=="number"&&typeof dt.y=="number"&&(ue=dt.x,Pe=dt.y),Ne){let xt=X.metadata.maps?.[Ne];if(xt?.type==="mouse-position"){let Vt=X.mouseDriverState[Ne];Vt&&(ue=Vt.liveX??(typeof xt.x=="number"?xt.x:Vt.currentX),Pe=Vt.liveY??(typeof xt.y=="number"?xt.y:Vt.currentY))}}return{centerX:ue,centerY:Pe,halfWidth:ge.hwx,halfHeight:ge.hhy}},Bt=X=>{if(!X.definition.wantsBoundsParams)return null;let Z=rr(X.id).sort((J,ge)=>J.metadata.renderOrder-ge.metadata.renderOrder);for(let J of Z){if(J.metadata.visible===!1)continue;if(Je(J))return null;let ge=gt(J);if(ge)return ge}return null},Dt=()=>{for(let X of u.values()){if(!X.definition.wantsBoundsParams)continue;let Z=Bt(X);Z&&(or(X,"_childBounds_centerX",Z.centerX),or(X,"_childBounds_centerY",Z.centerY),or(X,"_childBounds_halfWidth",Z.halfWidth),or(X,"_childBounds_halfHeight",Z.halfHeight))}},Lt=!1,Ls=()=>{Lt=!0,pa()},zs=()=>{for(let X of u.values()){let Z=X.metadata.flow?.mode;if(Z==="column"||Z==="row")return!0}return!1},Rr=X=>{let Z={};for(let[Pe,Ne]of Object.entries(X.uniforms))Z[Pe]=Ne._rawDimensional!==void 0?Ne._rawDimensional:Ne.value;let J=X.boundingBoxDeclaration?.propBindings?.x?.prop??X.boundingBoxDeclaration?.propBindings?.y?.prop,ge=J?X.uniforms[J]?.value:void 0,ue=!!(J&&(ge?.type==="mouse-position"||X.metadata.maps?.[J]));return{id:X.id,componentName:X.componentName,visible:X.metadata.visible!==!1,absolute:X.metadata.absolute===!0,requiresChild:X.requiresChild,layout:X.metadata.flow,decl:X.boundingBoxDeclaration,props:Z,boundingBox:X.metadata.boundingBox,positionDriven:ue,children:rr(X.id).sort((Pe,Ne)=>Pe.metadata.renderOrder-Ne.metadata.renderOrder).map(Rr)}},$o=()=>{if(!zs()){Lt=!1;return}let X=q(),Z=Y();if(X<=1||Z<=1)return;Lt=!1;let J=[];for(let ue of u.values())ue.parentId===null&&J.push(Rr(ue));let ge=i1e(J,X,Z);for(let ue of ge){let Pe=u.get(ue.id);if(Pe)if(ue.kind==="position"){let Ne=Pe.uniforms[ue.prop];if(!Ne)continue;let dt=Ne.value,xt=dt&&typeof dt=="object"?{...dt,x:ue.value.x,y:ue.value.y}:ue.value;Ne.value=xt,Yi(Pe,ue.prop,xt)}else{let Ne=Je(Pe);if(Pe.metadata.boundingBox={x:{value:ue.xPx,unit:"px"},y:{value:ue.yPx,unit:"px"},width:{value:ue.widthPx,unit:"px"},height:{value:ue.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}:{}},!Ne&&Je(Pe))li();else{let dt=Le(Pe);if(dt)for(let[xt,Vt]of Object.entries(dt))or(Pe,`_bbox_${xt}`,Vt)}}}},eo=()=>{Lt&&$o()},Ks=null,hn=()=>{zs()&&Ls()},aa=()=>{Ks||(Ks=q4(()=>{zs()&&Ls()})),typeof document<"u"&&document.fonts?.addEventListener&&document.fonts.addEventListener("loadingdone",hn)};aa();let na=X=>Zi(X.metadata.transform),gn=(X,Z,J)=>{let ge=X.mapValues[Z]??{inputMin:0,inputMax:1,outputMin:0,outputMax:1,curve:0};if(J.type==="map"){let ue=J;ge.inputMin=ue.inputMin,ge.inputMax=ue.inputMax,ge.outputMin=Ie(X,Z,ue.outputMin),ge.outputMax=Ie(X,Z,ue.outputMax),ge.curve=ue.curve??0}else if(J.type==="mouse"){let ue=J;ge.outputMin=Ie(X,Z,ue.outputMin),ge.outputMax=Ie(X,Z,ue.outputMax),ge.curve=ue.curve??0}else if(J.type==="auto-animate"){let ue=J;ge.outputMin=Ie(X,Z,ue.outputMin),ge.outputMax=Ie(X,Z,ue.outputMax)}return X.mapValues[Z]=ge,ge},Ep=(X,Z,J)=>{let ge=X.mouseDriverState[Z];if(ge)return ge;if(J.type==="mouse-position"){let ue=J.x===void 0||J.x==="mouse",Pe=J.y===void 0||J.y==="mouse";ge={currentX:ue?we:J.x,currentY:Pe?de:J.y,velocityX:0,velocityY:0,pointerSnapped:Ae}}else ge={currentX:Math.max(.001,J.axis==="x"?we:de),currentY:0,velocityX:0,velocityY:0,pointerSnapped:Ae};return X.mouseDriverState[Z]=ge,ge},kp=X=>{let Z=X.metadata.maps;if(Z)for(let[J,ge]of Object.entries(Z))J in X.uniforms&&(ge.type==="map"?gn(X,J,ge):ge.type==="mouse-position"?Ep(X,J,ge):ge.type==="mouse"?(Ep(X,J,ge),gn(X,J,ge)):ge.type==="auto-animate"&&(X.autoAnimateState[J]||(X.autoAnimateState[J]={}),gn(X,J,ge)))},Gd=X=>{let Z=X.definition.animatedTime;return(Z?X.uniforms[Z.speed]:void 0)??X},Bp=(X,Z)=>X.uniforms[Z]??X,J_=X=>{let Z=[];for(let[ue,Pe]of Object.entries(X.uniforms))Z.push({name:ue,initial:Pe.value,transform:Pe.transform,cpu:Pe.cpu,schema:Pe.schema});if(Z.push({name:"_opacity",schema:n,initial:X.metadata.opacity??1}),X.definition.animatedTime&&Z.push({name:"_animTime",schema:n,initial:Ud(Gd(X)).value}),X.definition.extraAnimatedTimes)for(let[ue,Pe]of Object.entries(X.definition.extraAnimatedTimes))Z.push({name:`_animTime_${ue}`,schema:n,initial:Ud(Bp(X,Pe)).value});let J=X.definition.extraFields;if(J)for(let[ue,Pe]of Object.entries(J))Z.push({name:ue,schema:Pe.schema,initial:Pe.initial});if(na(X)){let ue=Be(X);for(let[Pe,Ne]of Object.entries(ue))Z.push({name:`_xform_${Pe}`,schema:n,initial:Ne})}if(Je(X)){let ue=Le(X);if(ue)for(let[Pe,Ne]of Object.entries(ue))Z.push({name:`_bbox_${Pe}`,schema:n,initial:Ne})}if(X.definition.wantsBoundsParams){let ue=Bt(X)??{centerX:.5,centerY:.5,halfWidth:.5,halfHeight:.5};for(let[Pe,Ne]of Object.entries(ue))Z.push({name:`_childBounds_${Pe}`,schema:n,initial:Ne})}let ge=X.metadata.maps;if(ge){kp(X);for(let[ue,Pe]of Object.entries(ge))if(ue in X.uniforms){if(Pe.type==="map"){let Ne=X.mapValues[ue];Z.push({name:`_map_${ue}_inputMin`,schema:n,initial:Ne.inputMin}),Z.push({name:`_map_${ue}_inputMax`,schema:n,initial:Ne.inputMax}),Z.push({name:`_map_${ue}_outputMin`,schema:n,initial:Ne.outputMin}),Z.push({name:`_map_${ue}_outputMax`,schema:n,initial:Ne.outputMax}),Z.push({name:`_map_${ue}_curve`,schema:n,initial:Ne.curve})}else if(Pe.type==="mouse-position"){let Ne=X.mouseDriverState[ue];Z.push({name:`_smoothed_${ue}`,schema:m,initial:[Ne.currentX,1-Ne.currentY]})}else if(Pe.type==="mouse"){let Ne=X.mapValues[ue];Z.push({name:`_smoothed_${ue}`,schema:n,initial:Ne.outputMin})}else if(Pe.type==="auto-animate"){let Ne=X.mapValues[ue];Z.push({name:`_smoothed_${ue}`,schema:n,initial:Ne.outputMin})}}}return Z},Yi=(X,Z,J)=>{let ge=X._liveHandles?.[Z];ge&&(lt?.(rt),Sk(ge,J))},or=(X,Z,J)=>{let ge=X._liveHandles?.[Z];ge instanceof si&&(ge.value=J)},ef=(X,Z,J)=>{let ge=X._liveHandles?.[Z];ge instanceof si?ge.value=J:ge instanceof Im&&Array.isArray(J)&&(ge.array=J)},tf=X=>{for(let Z of Object.values(X.uniforms))if(Z.transform===st){let J=Z.value;if(typeof J=="string")return st(J);if(typeof J=="number")return J}return 0},sf=X=>{if(!X.uniforms.convertedColorsArray)return;let Z=null;for(let Pe of Object.values(X.uniforms))if(Pe.transform===fl){Z=Pe.value??null;break}let J=HA(Z,P_),ge=jA(J.colors,J.stopCount,tf(X)),ue=(Pe,Ne)=>{let dt=X.uniforms[Pe];dt&&(dt.value=Ne),Yi(X,Pe,Ne)};ue("colorsArray",J.colors),ue("positionsArray",J.positions),ue("convertedColorsArray",ge),ue("stopCount",J.stopCount)},zp=(X,Z)=>{let J=X.uniforms[Z],ge=J?._listSpec;if(!J||!ge)return;let ue=J._rawList,Pe=new Set,Ne=L3(ue,ge,{color:P_,drivenPosition:(Vt,Qs,Ar)=>{let ir=az(Z,Vt,Qs);Pe.add(ir);let es=Ep(X,ir,Ar);return es.liveX!==void 0&&es.liveY!==void 0?{x:es.liveX,y:1-es.liveY}:void 0}});for(let Vt of Object.keys(X.mouseDriverState)){let Qs=D3(Vt);Qs&&Qs.prop===Z&&!Pe.has(Vt)&&delete X.mouseDriverState[Vt]}J.value=Ne,Yi(X,Z,Ne);let dt=U3(Ne,ge),xt=(Vt,Qs)=>{let Ar=X.uniforms[Vt];Ar&&(Ar.value=Qs),Yi(X,Vt,Qs)};for(let[Vt,Qs]of Object.entries(dt.fields))xt(Nh(Z,Vt),Qs);xt($h(Z),dt.count)},cy=(X,Z)=>{let J=X.metadata.maps?.[Z];if(J)return J;let ge=D3(Z);if(!ge)return;let ue=X.uniforms[ge.prop]?._rawList,Pe=(Array.isArray(ue)?ue[ge.index]:void 0)?.[ge.field];return Xh(Pe)?Pe:void 0},dy=X=>Object.values(X.uniforms).some(Z=>Z._listSpec&&O3(Z._rawList,Z._listSpec)),rf=X=>{if(or(X,"_opacity",X.metadata.opacity??1),X.definition.animatedTime&&or(X,"_animTime",Ud(Gd(X)).value),X.definition.extraAnimatedTimes)for(let[J,ge]of Object.entries(X.definition.extraAnimatedTimes))or(X,`_animTime_${J}`,Ud(Bp(X,ge)).value);if(na(X))for(let[J,ge]of Object.entries(Be(X)))or(X,`_xform_${J}`,ge);if(Je(X)){let J=Le(X);if(J)for(let[ge,ue]of Object.entries(J))or(X,`_bbox_${ge}`,ue)}let Z=X.metadata.maps;if(Z){for(let[J,ge]of Object.entries(Z))if(ge.type==="map"&&X.mapValues[J]){let ue=X.mapValues[J];or(X,`_map_${J}_inputMin`,ue.inputMin),or(X,`_map_${J}_inputMax`,ue.inputMax),or(X,`_map_${J}_outputMin`,ue.outputMin),or(X,`_map_${J}_outputMax`,ue.outputMax),or(X,`_map_${J}_curve`,ue.curve)}}},uy=(X,Z)=>{let J={};for(let ge of Object.keys(X.uniforms)){let ue=Z[ge];ue&&(J[ge]=ue)}return J},py=X=>{let Z={};for(let[J,ge]of Object.entries(X.uniforms))Z[J]={accessorPath:"",cpu:!!ge.cpu,value:ge.value};return Z},my=(X,Z)=>({id:X.id,customId:X.metadata.id,componentName:X.componentName,parentId:X.parentId,definition:X.definition,metadata:X.metadata,handles:Z,domCanvas:X.domCanvas}),of=(X,Z)=>{let J=new Map,ge=Pe=>my(Pe,X&&Z?uy(Pe,Z.get(Pe.id)??{}):py(Pe)),ue=Pe=>{let Ne=J.get(Pe);if(Ne)return Ne;let dt=u.get(Pe);if(!dt)return;let xt=ge(dt);return J.set(Pe,xt),xt};return{rootId:p,getNode:ue,getChildren:Pe=>rr(Pe).map(Ne=>ue(Ne.id)),resolveCustomId:Pe=>Cr(Pe),store:{gpuAccessor:(Pe,Ne)=>X?X.gpuAccessor(Pe,Ne):"",layout:X?.layout}}},af=()=>({toneMapping:pt,flipY:!1,premultiplyAlpha:!0,canvas:a??void 0,dimensions:Wi(),gpu:t?{device:t.device,root:t}:void 0,writeExtraField:(X,Z,J)=>{let ge=u.get(X);ge&&ef(ge,Z,J)},createMediaTexture:X=>{if(!r)throw new Error("[gpu] createMediaTexture before init");return r.createMediaTexture(X)},createDataTexture:X=>{if(!r)throw new Error("[gpu] createDataTexture before init");return r.createDataTexture(X)},resolveMapWindow:(X,Z)=>{let J=u.get(X),ge=J?.metadata.maps?.[Z];if(!J||!ge||ge.type!=="map")return;let ue=gn(J,Z,ge);return{inputMin:ue.inputMin,inputMax:ue.inputMax,outputMin:ue.outputMin,outputMax:ue.outputMax,curve:ue.curve}},resolveDriverCpuValue:(X,Z)=>{let J=u.get(X);if(!J)return;if(Z==="_animTime"||Z.startsWith("_animTime_")){let ue=J._liveHandles?.[Z];return ue instanceof si?ue.value:void 0}let ge=J.metadata.maps?.[Z];if(ge){if(ge.type==="mouse-position"){let ue=J.mouseDriverState[Z];return!ue||ue.liveX===void 0||ue.liveY===void 0?void 0:{x:ue.liveX,y:1-ue.liveY}}if(ge.type==="mouse"||ge.type==="auto-animate"){let ue=J._liveHandles?.[`_smoothed_${Z}`];return ue instanceof si?ue.value:void 0}}}}),_y=()=>{let X=[];for(let[Z,J]of u){let ge=J.metadata;X.push(`aopac:${Z}:${(ge.opacity??1)<1}`);let ue=J.uniforms.stopCount?.value;typeof ue=="number"&&X.push(`stops:${Z}:${ue>1?ue:0}`);for(let[Pe,Ne]of Object.entries(J.uniforms)){if(!Ne.compileTimeWhen)continue;let dt=Ne._lastCompiledValue;typeof dt!="number"&&typeof dt!="boolean"||X.push(`ctw:${Z}:${Pe}:${String(dt)}`)}if(ge.maps){let Pe=Object.entries(ge.maps).sort(([Ne],[dt])=>Ne<dt?-1:Ne>dt?1:0).map(([Ne,dt])=>{let xt=dt;return`${Ne}=${xt.type}:${xt.source??""}:${xt.channel??""}:${xt.axis??""}`}).join(",");X.push(`mapfp:${Z}:${Pe}`)}}return X},nf=()=>p?Hfe([...v4(of(null,null),af()),..._y()]):null,Wi=()=>({width:Math.max(1,Math.round(C*L)),height:Math.max(1,Math.round(E*L))}),fy=X=>{let Z={};for(let J of X.textures)J.kind!=="rtt"&&J.resource&&(Z[J.key]=J.resource);return Z},lf=X=>{if(!t||!r||!o)throw new Error("[gpu] buildComposition before init");let Z=Tk(t,{systemSchema:Xfe}),J=new Map;for(let[dt,xt]of u)J.set(dt,Z.defineNode(dt,J_(xt)));Z.defineSystem(),Z.finalize();let ge=f4(of(Z,J),af()),ue=Kfe(t,{textureManager:r,dispatcher:o}),Pe={hash:X,store:Z,ir:ge,passManager:ue,handlesById:J,fresh:!0,validationFrames:3},Ne=ge.usesCustomWgsl?t.device:void 0;Ne&&Ne.pushErrorScope("validation");try{ue.setComposition(ge,Z.bindGroup,Wi(),fy(ge))}finally{Ne&&Ne.popErrorScope().then(dt=>{dt&&!Pe.broken&&Rp(Pe,dt.message)}).catch(()=>{})}return y.add(Pe),Pe},Rp=(X,Z)=>{X.broken=Z,gf("[gpu] a shader in this composition failed GPU validation \u2014 it will not draw until it changes. If you are writing a wgsl`\u2026` body, the message below points at the line:\n"+Z)},cf=X=>{try{for(let Z of X.ir.onCleanup)Z()}catch(Z){wr("[gpu] composition onCleanup error:",Z)}try{X.passManager.dispose()}catch(Z){wr("[gpu] passManager dispose error:",Z)}try{X.store.destroy()}catch(Z){wr("[gpu] store destroy error:",Z)}y.delete(X),b===X&&(b=null)},vy=X=>{let Z=!1;for(let[J,ge]of X.handlesById){let ue=u.get(J);ue&&ue._liveHandles!==ge&&(ue._liveHandles=ge,Z=!0)}if(!(X===b&&!Z)){if(!X.fresh){for(let J of u.values()){for(let[ge,ue]of Object.entries(J.uniforms))Yi(J,ge,ue.value);kp(J),rf(J)}X.store.writeAll()}X.fresh=!1,b=X,!ht&&X.ir.composedNodeIds.size>0&&(St=!0)}},li=()=>{P=!0,zs()&&(Lt=!0),pa()},pa=()=>{Ft||js.running||re===null&&typeof requestAnimationFrame=="function"&&(re=requestAnimationFrame(()=>{re=null,Gp()}))},df=(X,Z,J,ge,ue={},Pe,Ne)=>{if(Ft)return;if(Z===null){let es=f.findIndex(Uo=>Uo.id===X);if(es!==-1){f.splice(es,1),v=v.filter(Uo=>Uo.id!==X);return}Dp(X);return}if(!Pe){console.error(`[gpu] registerNode("${X}") requires a componentDefinition`);return}if(!c){let es=f.findIndex(Vn=>Vn.id===X),Uo={id:X,definition:Pe,parentId:J,metadata:ge,uniforms:ue,domCanvas:Ne};es!==-1?(f[es]=Uo,v=v.filter(Vn=>Vn.id!==X)):f.push(Uo);return}let dt=0;if(J!==null){let es=_.get(J);if(es&&es.size>0){let Uo=0;for(let Vn of es){let Ra=u.get(Vn);Ra&&Ra.metadata.renderOrder>Uo&&(Uo=Ra.metadata.renderOrder)}dt=Uo+1}}let xt={blendMode:ge?.blendMode||"normal",opacity:ge?.opacity,visible:ge?.visible!==!1,id:ge?.id?xr(ge.id):ge?.id,mask:ge?.mask,maps:ge?.maps,renderOrder:ge?.renderOrder!==void 0?ge.renderOrder:dt,transform:ge?.transform,boundingBox:ge?.boundingBox,flow:ge?.flow,absolute:ge?.absolute},Vt=Pe.boundingBoxDeclaration,Qs=Pe.props?F3(Pe.props):void 0,Ar={id:X,componentName:Pe.name||"Unknown",parentId:J,definition:Pe,metadata:xt,uniforms:ue,domCanvas:Ne,requiresRTT:!!Pe.requiresRTT,requiresChild:!!Pe.requiresChild,blendWithChildren:!!Pe.blendWithChildren,acceptsUVContext:!!Pe.acceptsUVContext,providesUVContextViaCompute:!!Pe.providesUVContextViaCompute,usesPointer:!!Pe.usesPointer,hasUvRemap:!!Pe.uvRemap,boundingBoxDeclaration:Vt,wantsBoundsParams:!!Pe.wantsBoundsParams,extraDimProps:Qs,mouseDriverState:{},autoAnimateState:{},mapValues:{},_liveHandles:null};if(Vt||Qs){let es=rp(Vt,Qs);if(es){let Uo=ue.origin?.value??"center",Vn=Sr(Ar,Uo);for(let Ra of[...es.positionProps,...es.sizeProps.keys()]){let ma=ue[Ra];ma&&(ma._rawDimensional===void 0&&(ma._rawDimensional=ma.value),ma.value=M_(Vt,Ra,ma._rawDimensional,Uo,q(),Y(),Qs,Vn))}}}for(let es of Object.values(ue))es.compileTimeWhen&&es._lastCompiledValue===void 0&&(es._lastCompiledValue=es.value);u.set(X,Ar),J===null&&(p=X);let ir=_.get(J)||new Set;ir.add(X),_.set(J,ir),Fp(),li(),zs()&&Ls()},Fd=X=>{f.some(Z=>Z.id===X.id)&&v.push(X)},uf=(X,Z,J)=>{let ge=u.get(X);if(!ge){Fd({id:X,kind:"uniform",name:Z,value:J});return}let ue=ge.uniforms[Z];if(!ue)return;let Pe=ge.boundingBoxDeclaration,Ne=ge.extraDimProps;if((Pe||Ne)&&Y3(Pe,Z,Ne)){ue._rawDimensional=J;let dt=ge.uniforms.origin?.value??"center",xt=Sr(ge,dt);J=M_(Pe,Z,J,dt,q(),Y(),Ne,xt)}if(ue.transform===cc){ue._rawList=J,zp(ge,Z),Fp(),pa();return}if(ue.value=J,Yi(ge,Z,J),(ue.transform===fl||ue.transform===st)&&sf(ge),Z==="origin"&&Pe)pe(ge);else if(Pe&&(ge.uniforms.origin?.value??"center")!=="center"){let dt=rp(Pe,Ne),xt=!!Pe.computeBounds||(dt?.sizeProps.has(Z)??!1),Vt=dt?.positionProps.has(Z)??!1;xt&&!Vt&&pe(ge)}if(Z==="shape"&&Fp(),zs()&&Ls(),ue.compileTime){li();return}if(ue.compileTimeWhen){let dt=ue._lastCompiledValue;if(ue.compileTimeWhen(dt,J)){ue._lastCompiledValue=J,li();return}}pa()},pf=(X,Z)=>{let J=u.get(X);if(!J){Fd({id:X,kind:"metadata",metadata:Z});return}let ge=!1;if(Z.blendMode!==void 0&&J.metadata.blendMode!==Z.blendMode&&(J.metadata.blendMode=Z.blendMode,ge=!0),Z.opacity!==void 0&&J.metadata.opacity!==Z.opacity){let ue=J.metadata.opacity??1,Pe=Z.opacity;J.metadata.opacity=Pe,or(J,"_opacity",Pe),ue>=1!=Pe>=1&&(ge=!0)}if(Z.renderOrder!==void 0&&J.metadata.renderOrder!==Z.renderOrder&&(J.metadata.renderOrder=Z.renderOrder,ge=!0),"visible"in Z){let ue=Z.visible!==!1;J.metadata.visible!==ue&&(J.metadata.visible=ue,ge=!0)}if(Z.id!==void 0){let ue=xr(Z.id);J.metadata.id!==ue&&(J.metadata.id=ue,ge=!0)}if("mask"in Z&&(J.metadata.mask?.source!==Z.mask?.source||J.metadata.mask?.type!==Z.mask?.type)&&(J.metadata.mask=Z.mask,ge=!0),"maps"in Z&&JSON.stringify(J.metadata.maps)!==JSON.stringify(Z.maps)){let ue=J.metadata.maps,Pe=Z.maps;if(J.metadata.maps=Pe,Fp(),(()=>{if(!ue||!Pe)return!0;let Ne=Object.keys(ue),dt=Object.keys(Pe);if(Ne.length!==dt.length||!Ne.every(xt=>xt in Pe))return!0;for(let xt of dt){let Vt=ue[xt],Qs=Pe[xt];if(Vt.type!==Qs.type)return!0;if(Qs.type==="map"){let Ar=Vt,ir=Qs;if(Ar.source!==ir.source||Ar.channel!==ir.channel)return!0}else if(Qs.type==="mouse"&&Vt.axis!==Qs.axis)return!0}return!1})()){if(ue&&Pe)for(let Ne of Object.keys(ue))Ne in Pe&&ue[Ne].type!==Pe[Ne].type&&(delete J.mouseDriverState[Ne],delete J.autoAnimateState[Ne],delete J.mapValues[Ne]);ge=!0}else if(Pe)for(let[Ne,dt]of Object.entries(Pe)){let xt=gn(J,Ne,dt);dt.type==="map"&&(or(J,`_map_${Ne}_inputMin`,xt.inputMin),or(J,`_map_${Ne}_inputMax`,xt.inputMax),or(J,`_map_${Ne}_outputMin`,xt.outputMin),or(J,`_map_${Ne}_outputMax`,xt.outputMax),or(J,`_map_${Ne}_curve`,xt.curve))}}if(Z.transform!==void 0){let ue=J.metadata.transform,Pe={offsetX:Z.transform.offsetX??ue?.offsetX??0,offsetY:Z.transform.offsetY??ue?.offsetY??0,rotation:Z.transform.rotation??ue?.rotation??0,scale:Z.transform.scale??ue?.scale??1,anchorX:Z.transform.anchorX??ue?.anchorX??.5,anchorY:Z.transform.anchorY??ue?.anchorY??.5,edges:Z.transform.edges??ue?.edges??"transparent"},Ne=na(J);J.metadata.transform=Pe;let dt=Zi(Pe);if(Ne!==dt||ue&&ue.edges!==Pe.edges)ge=!0;else if(dt)for(let[xt,Vt]of Object.entries(Be(J)))or(J,`_xform_${xt}`,Vt)}if(Z.boundingBox!==void 0&&Z.boundingBox!==null&&J.boundingBoxDeclaration!==void 0){let ue=Je(J);J.metadata.boundingBox=Z.boundingBox;let Pe=Je(J);if(ue!==Pe)ge=!0;else if(Pe){let Ne=Le(J);if(Ne)for(let[dt,xt]of Object.entries(Ne))or(J,`_bbox_${dt}`,xt)}}else Z.boundingBox===null&&J.metadata.boundingBox!==void 0&&(J.metadata.boundingBox=void 0,ge=!0);if("flow"in Z&&JSON.stringify(J.metadata.flow)!==JSON.stringify(Z.flow)){let ue=J.metadata.flow?.mode==="column"||J.metadata.flow?.mode==="row";J.metadata.flow=Z.flow??void 0;let Pe=J.metadata.flow?.mode==="column"||J.metadata.flow?.mode==="row";if(ue&&!Pe){let Ne=dt=>{for(let xt of rr(dt))pe(xt),Ne(xt.id)};Ne(X)}Ls()}"absolute"in Z&&J.metadata.absolute!==Z.absolute&&(J.metadata.absolute=Z.absolute,Z.absolute&&pe(J),Ls()),zs()&&Ls(),ge?li():pa()},Dp=X=>{let Z=u.get(X);if(!Z)return;for(let ge of rr(X))Dp(ge.id);p===X&&(p=null);let J=_.get(Z.parentId);J&&(J.delete(X),J.size===0&&_.delete(Z.parentId)),u.delete(X),Fp(),li(),zs()&&Ls()},Lp=()=>{let X=_s.deltaTime;oe=xB(le,oe,X,performance.now());for(let Z of u.values()){let J=Z.metadata.maps??{};for(let ge in Z.mouseDriverState){let ue=Z.mouseDriverState[ge],Pe=cy(Z,ge);if(Pe){if(Pe.type==="mouse-position"){let Ne=Pe.smoothing??0,dt=Pe.momentum??0,xt=Pe.x===void 0||Pe.x==="mouse",Vt=Pe.y===void 0||Pe.y==="mouse";!ue.pointerSnapped&&Ae&&(ue.pointerSnapped=!0,xt&&(ue.currentX=we,ue.velocityX=0),Vt&&(ue.currentY=de,ue.velocityY=0));let Qs,Ar;if(xt){let[Nn,Wd]=A_(ue.currentX,ue.velocityX,we,Ne,dt,X);ue.currentX=Nn,ue.velocityX=Wd,Qs=Nn}else Qs=Pe.x,ue.velocityX=0;if(Vt){let[Nn,Wd]=A_(ue.currentY,ue.velocityY,de,Ne,dt,X);ue.currentY=Nn,ue.velocityY=Wd,Ar=Nn}else Ar=Pe.y,ue.velocityY=0;let ir=Pe.reach??1,es=Pe.originX??.5,Uo=Pe.originY??.5,Vn=Pe.invertX?-1:1,Ra=Pe.invertY?-1:1,ma=es+Vn*(Qs-es)*ir,yn=Uo+Ra*(Ar-Uo)*ir,Rc=ma,Ip=yn,vf=Z.metadata.boundingBox;if(vf&&Z.boundingBoxDeclaration?.supportsResizeFit&&Je(Z)){let Nn=GA(vf,q(),Y()),Wd=m4(ma,yn,{centerX:Nn.centerX,centerY:Nn.centerY,halfWidthUV:Nn.halfWidthUV,halfHeightUV:Nn.halfHeightUV,rotationDeg:Nn.rotation,aspectRatio:De()});Rc=Wd.x,Ip=Wd.y}ue.liveX=Rc,ue.liveY=Ip;let E5=Z._liveHandles?.[`_smoothed_${ge}`];E5 instanceof si&&E5.setComponents(Rc,1-Ip)}else if(Pe.type==="mouse"){let Ne=Pe.smoothing??0,dt=Pe.momentum??0,xt=Pe.axis==="x"?we:de;!ue.pointerSnapped&&Ae&&(ue.pointerSnapped=!0,ue.currentX=Math.max(.001,xt),ue.velocityX=0);let[Vt,Qs]=A_(ue.currentX,ue.velocityX,xt,Ne,dt,X);ue.currentX=Vt,ue.velocityX=Qs;let Ar=Math.max(.001,Vt),ir=Z.mapValues[ge],es=ir?ir.outputMin+(ir.outputMax-ir.outputMin)*Math.pow(Ar,Math.pow(2,-ir.curve*2)):Ar;ue.liveScalar=es,or(Z,`_smoothed_${ge}`,es)}}}for(let[ge,ue]of Object.entries(Z.uniforms))ue._listSpec&&O3(ue._rawList,ue._listSpec)&&zp(Z,ge);for(let ge in Z.autoAnimateState){let ue=J[ge];if(!ue||ue.type!=="auto-animate")continue;let Pe=oe*(ue.speed??1)*.2,Ne,dt=ue.easing??ue.waveform??"sine";if(ue.mode==="loop")Ne=i3((Pe%1+1)%1,dt);else{let es=(Pe%1+1)%1;Ne=i3(es<.5?es*2:(1-es)*2,dt)}let xt=Z.mapValues[ge],Vt=xt?xt.outputMin:Ie(Z,ge,ue.outputMin),Qs=xt?xt.outputMax:Ie(Z,ge,ue.outputMax),Ar=Vt+Ne*(Qs-Vt),ir=Z.uniforms[ge];if(ir?.compileTimeWhen){let es=ir._lastCompiledValue;ir.compileTimeWhen(es,Ar)&&(ir._lastCompiledValue=Ar,li())}or(Z,`_smoothed_${ge}`,Ar)}}},Up=()=>{let X=_s.deltaTime;for(let Z of u.values()){let J=Z.definition.animatedTime;if(J){let ue=Z.uniforms[J.speed],Pe=ue&&Number(ue.value)||0,Ne=Ud(Gd(Z));Ne.advance(X,Pe),or(Z,"_animTime",Ne.value)}let ge=Z.definition.extraAnimatedTimes;if(ge)for(let[ue,Pe]of Object.entries(ge)){let Ne=Z.uniforms[Pe],dt=Ne&&Number(Ne.value)||0,xt=Ud(Bp(Z,Pe));xt.advance(X,dt),or(Z,`_animTime_${ue}`,xt.value)}}},Op=(X,Z)=>bB(X,Z,{maxTextureDim:k,pixelRatio:L,viewportWidth:typeof window<"u"?window.innerWidth:X,viewportHeight:typeof window<"u"?window.innerHeight:Z}),zc=()=>{let X=(typeof window<"u"?window.devicePixelRatio:1)||1;return Math.min(X,aB())},Id=(X,Z,J,ge)=>{if(F&&X===C&&Z===E&&J===z&&ge===U){let{width:dt,height:xt}=Wi();if(!a||a.width===dt&&a.height===xt)return}C=X,E=Z,z=J,U=ge,G3(J,ge),F||(F=!0,u.size>0&&li());let{width:ue,height:Pe}=Wi();a&&(a.width=ue,a.height=Pe);let Ne=!1;for(let dt of y)dt.passManager.resize(ue,Pe)&&(Ne=!0);for(let dt of y)for(let xt of dt.ir.onResize)try{xt({width:ue,height:Pe})}catch(Vt){wr("[gpu] composition onResize error:",Vt)}for(let dt of u.values()){if(na(dt)&&or(dt,"_xform_aspectRatio",De()),Je(dt)){let xt=Le(dt);if(xt)for(let[Vt,Qs]of Object.entries(xt))or(dt,`_bbox_${Vt}`,Qs)}pe(dt)}if($o(),Ne)for(let dt of y)w5(dt.store),dt.store.flush(),dt.passManager.repaintRtt();se=0,Gp()},Yd=(X,Z)=>{X<=0||Z<=0||X===D&&Z===O||(D=X,O=Z,qe={width:X,height:Z},!Ve&&typeof requestAnimationFrame=="function"&&(Ve=!0,requestAnimationFrame(()=>{if(Ve=!1,!qe)return;let J=qe;qe=null;let{width:ge,height:ue}=Op(J.width,J.height);Id(ge,ue,J.width,J.height)})))},hy=X=>{let Z=X[0];if(!Z)return;let J,ge;if(Z.contentBoxSize){let ue=Array.isArray(Z.contentBoxSize)?Z.contentBoxSize[0]:Z.contentBoxSize;ue?(J=Math.round(ue.inlineSize),ge=Math.round(ue.blockSize)):(J=Math.round(Z.contentRect.width),ge=Math.round(Z.contentRect.height))}else J=Math.round(Z.contentRect.width),ge=Math.round(Z.contentRect.height);J===0||ge===0||Yd(J,ge)},mf=X=>{let Z=X[0];Z&&($=Z.isIntersecting)},A5=()=>i&&!!t&&!!s&&C>0&&E>0,w5=X=>{let Z=X.systemHandles,{width:J,height:ge}=Wi(),ue=zc(),Pe=(Ne,dt)=>{let xt=Z[Ne];xt instanceof si&&(xt.value=dt)};Pe("time",oe),Pe("viewportSize",[J,ge]),Pe("logicalViewportSize",[q()*ue,Y()*ue]),Pe("aspect",J/Math.max(1,ge)),Pe("pointer",[we,de]),Pe("pointerActive",xe?1:0)},T5=X=>{for(let Z of X)try{Z(_s)}catch(J){wr("[gpu] render callback error:",J)}},S5=X=>{if(Ft||!A5())return;let Z=performance.now(),J;if(X!==void 0)J=X;else{let Ne=AB(Z,{lastRenderTime:se,isVisible:$,forceFullFrameRate:Q,minInterval:ee});if(!Ne.render)return;J=Ne.deltaTime}se=Z,Qe&&performance.mark("shader-cpu-start");let ge=we>-5;_s.deltaTime=J,_s.pointer.x=ge?we:.5,_s.pointer.y=ge?de:.5,_s.pointer.seen=Ae,_s.pointerActive=xe,_s.dimensions.width=C,_s.dimensions.height=E;let ue=null,Pe=null;try{wB({updateDrivers:()=>{Lp(),Up(),Dt(),eo()},ensureComposition:()=>((P||A===null)&&(A=nf(),P=!1),A===null?!1:(ue=g.getOrBuild(A,()=>lf(A)),vy(ue),!!b)),beforeRender:()=>T5(b.ir.onBeforeRender),flush:()=>{w5(b.store),b.store.flush()},render:()=>{if(Qe&&performance.mark("shader-gpu-start"),Pe=g.renderValue??ue,Pe?.broken)return!1;let Ne=Pe,dt=Ne&&Ne.validationFrames>0&&Ne.ir.usesCustomWgsl?t?.device:void 0;dt&&dt.pushErrorScope("validation");try{Ne?.passManager.render(s,_s,()=>b?.store.flush())}finally{dt&&Ne&&(Ne.validationFrames--,dt.popErrorScope().then(xt=>{xt&&!Ne.broken&&Rp(Ne,xt.message)}).catch(()=>{}))}if(Qe){performance.mark("shader-gpu-end");try{performance.measure("shader-gpu-time","shader-gpu-start","shader-gpu-end");let xt=performance.getEntriesByName("shader-gpu-time")[0];xt&&us.recordGpuTime(xt.duration),performance.clearMeasures("shader-gpu-time"),performance.clearMarks("shader-gpu-start"),performance.clearMarks("shader-gpu-end")}catch{}}},markReady:()=>{g.markReady(A),St&&!ht&&(ht=!0,St=!1,vt&&queueMicrotask(vt))},afterRender:()=>T5((Pe??b).ir.onAfterRender)}),ds=0}catch(Ne){yW(Ne);return}if(Qe){performance.mark("shader-cpu-end");try{performance.measure("shader-cpu-time","shader-cpu-start","shader-cpu-end");let Ne=performance.getEntriesByName("shader-cpu-time")[0];Ne&&us.recordCpuTime(Ne.duration),performance.clearMarks("shader-cpu-start"),performance.clearMarks("shader-cpu-end"),performance.clearMeasures("shader-cpu-time")}catch{}}us.recordFrame(performance.now()-Z)},Gp=()=>S5(void 0),uW=async X=>{if(Ft)return;if(!A5())throw new Error("Renderer is not ready");let Z=js.running;Z&&_f(),se=0,Gp(),t&&X?.waitForGpu!==!1&&await l3(t),Z&&gy()},pW=async(X,Z)=>{S5(X),t&&Z?.waitForGpu!==!1&&await l3(t)},gy=()=>{Ft||js.running||!V||(us.setRendering(!0),js.start())},_f=()=>{js.running&&(js.stop(),us.setRendering(!1))},ff=X=>{if(!a)return;Re=a.getBoundingClientRect();let Z,J;if("touches"in X){if(X.touches.length===0)return;Z=X.touches[0].clientX,J=X.touches[0].clientY}else Z=X.clientX,J=X.clientY;we=(Z-Re.left)/Re.width,de=(J-Re.top)/Re.height,Ae=!0},mW=X=>{!i||!a||(ff(X),xe=!0,pa())},_W=X=>{!i||!a||(ff(X),xe=!0,pa())},fW=()=>{i&&(xe=!1,pa())},vW=()=>{i&&(xe=!1,pa())},P5=(X,Z)=>{if(!i||!a)return!1;let J=a.getBoundingClientRect();return J.width===0||J.height===0?!1:X>=J.left&&X<=J.right&&Z>=J.top&&Z<=J.bottom},hW=X=>{X.button===0&&P5(X.clientX,X.clientY)&&(xe=!0,ff(X),pa())},gW=X=>{X.touches.length!==0&&P5(X.touches[0].clientX,X.touches[0].clientY)&&(xe=!0,ff(X),pa())},Fp=()=>{let X=!1;for(let Z of u.values()){if(Z.usesPointer){X=!0;break}if(p1e(Z.uniforms?.shape?.value)||dy(Z)){X=!0;break}if(Z.metadata.maps){for(let J of Object.values(Z.metadata.maps))if(J&&typeof J=="object"&&"type"in J){let ge=J.type;if(ge==="mouse"||ge==="mouse-position"){X=!0;break}}if(X)break}}X&&!Me?(Me=!0,!ze&&a&&(ze=u1e.register({onMouseMove:mW,onTouchMove:_W,onMouseDown:hW,onTouchStart:gW,onMouseUp:fW,onTouchEnd:vW}))):!X&&Me&&(Me=!1,ze&&(ze(),ze=null))},C5=()=>{if(f.length===0)return;let X=[...f];f=[];for(let J of X)df(J.id,J.definition.fragment,J.parentId,J.metadata,J.uniforms,J.definition,J.domCanvas);let Z=v;v=[];for(let J of Z)J.kind==="uniform"?uf(J.id,J.name,J.value):pf(J.id,J.metadata)},El=(X,Z)=>{if(!Ft){Ft=X,R5(X),wr(`[gpu] renderer stopped (${X}):`,Z);try{yy()}catch(J){wr("[gpu] cleanup during failure threw:",J)}if(!os&&Qt){os=!0;let J=Qt;queueMicrotask(()=>{try{J(X,Z)}catch(ge){wr("[gpu] onUnavailable callback threw:",ge)}})}}},yW=X=>{if(Ay(X)){El(X.reason,X);return}ds++,ds===1&&gf("[gpu] render error:",X),ds>=d1e&&El("render-failed",X)},bW=X=>{!X||typeof X.addEventListener!="function"||(M5(),cs=X,ss=Z=>{try{Z.preventDefault()}catch{}let J=Z.error;if(gf("[gpu] uncaptured device error (a custom WGSL body that fails to compile reports here \u2014 read the message for the line):",J),typeof GPUOutOfMemoryError<"u"&&J instanceof GPUOutOfMemoryError){El("out-of-memory",J);return}if(typeof GPUInternalError<"u"&&J instanceof GPUInternalError){El("gpu-error",J);return}Ss++,Ss>=c1e&&El("gpu-error",J)},X.addEventListener("uncapturederror",ss))},M5=()=>{if(cs&&ss)try{cs.removeEventListener("uncapturederror",ss)}catch{}cs=null,ss=null},xW=X=>{if(!Rt){Rt=!0;try{_f()}catch{}if(Mt){let Z=Mt;queueMicrotask(()=>{try{Z(X)}catch(J){wr("[gpu] onDeviceLost callback threw:",J)}});return}El("device-lost",X)}},AW=async X=>{if(X.context!==void 0)throw new Error("[gpu] initialize({ context }) is not supported \u2014 this renderer is WebGPU-only. Remove the WebGL `context` option.");if(Ft)return;let Z=D5();if(Z){El(Z);return}if(i||l)return;let{canvas:J,resizeTarget:ge,enablePerformanceTracking:ue=!1,colorSpace:Pe="p3-linear",toneMapping:Ne="linear",gpu:dt,forceFullFrameRate:xt=!1,observeElement:Vt=!0,timeOrigin:Qs}=X;Qs!=null&&(le=Qs),Qe=ue,Q=xt,rt=Pe,pt=Ne,aa(),l=!0,d=new AbortController;let Ar=d;try{if(lt=iz,lt(Pe),Ar.signal.aborted||(a=J,e=await Wfe({device:dt?.device,adapter:dt?.adapter,onDeviceLost:yn=>xW(yn.message||yn.reason||"unknown")}),Ar.signal.aborted))return;t=e.root,bW(t.device),L=zc();let ir=t.device.limits?.maxTextureDimension2D;typeof ir=="number"&&ir>0&&(k=ir),r=Zfe(t),o=x4(t),typeof window<"u"&&(Ce=()=>yy(),window.addEventListener("beforeunload",Ce),Te=()=>{if(D>0&&O>0){let yn=D,Rc=O;D=0,O=0,Yd(yn,Rc)}},window.addEventListener("resize",Te,{passive:!0}));let es=J.getBoundingClientRect();Re=es,$=!Vt||es.width>0&&es.height>0&&es.top<window.innerHeight&&es.bottom>0&&es.left<window.innerWidth&&es.right>0,V=!0;let Uo=es.width>0?es.width:J.width,Vn=es.height>0?es.height:J.height,Ra=Math.round(Uo),ma=Math.round(Vn);if(Ra>0&&ma>0){D=Ra,O=ma;let{width:yn,height:Rc}=Op(Ra,ma);C=yn,E=Rc,z=Ra,U=ma,F=!0,G3(Ra,ma);let{width:Ip,height:vf}=Wi();J.width=Ip,J.height=vf}else F=!1;if(s=Nfe(t,J),Vt&&typeof ResizeObserver<"u"){let yn=ge??J.parentElement;yn?(Ye=new ResizeObserver(hy),Ye.observe(yn)):console.warn("[gpu] no element available for resize observation \u2014 use resize() manually"),typeof IntersectionObserver<"u"&&(ke=new IntersectionObserver(mf,{threshold:0,rootMargin:"128px"}),ke.observe(J))}if(Ar.signal.aborted)return;i=!0,c=!0,C5(),C>0&&E>0&&Gp(),V&&gy()}catch(ir){let es=Ay(ir)?ir.reason:"init-failed";l=!1,d===Ar&&(d=null),El(es,ir);return}finally{l=!1,d===Ar&&(d=null)}},yy=()=>{d&&d.abort(),Ye&&(Ye.disconnect(),Ye=null),ke&&(ke.disconnect(),ke=null),ze&&(ze(),ze=null),Ce&&typeof window<"u"&&(window.removeEventListener("beforeunload",Ce),Ce=null),Te&&typeof window<"u"&&(window.removeEventListener("resize",Te),Te=null),re!==null&&typeof cancelAnimationFrame=="function"&&(cancelAnimationFrame(re),re=null),_f(),M5(),Ks?.(),Ks=null,typeof document<"u"&&document.fonts?.removeEventListener&&document.fonts.removeEventListener("loadingdone",hn);try{e?.release?.()}catch{}g.clear();for(let X of[...y])cf(X);b=null;try{r?.destroy()}catch{}try{e?.createdDevice&&t?.destroy()}catch{}u.clear(),p=null,_.clear(),f=[],v=[],c=!1,qe=null,Ve=!1,a=null,s=null,r=null,o=null,t=null,e=null,i=!1,l=!1,F=!1,d=null,C=0,E=0,z=0,U=0,A=null,P=!0,$=!1,V=!0,we=-10,de=-10,xe=!1,Ae=!1,Me=!1,vt=null,ht=!1,St=!1,Mt=null,Rt=!1,Ss=0,ds=0};return{initialize:AW,cleanup:yy,registerNode:df,removeNode:Dp,updateUniformValue:uf,updateNodeMetadata:pf,isInitialized:()=>i,resize:(X,Z)=>{t&&Yd(X,Z)},startAnimation:gy,stopAnimation:_f,renderAndWait:uW,renderSyntheticFrame:pW,getPerformanceStats:()=>{let X=Math.max(0,u.size-1),Z=b?b.ir.rttPasses.length:0;us.updateNodeCounts(X,Z);let J={render:{calls:b?b.passManager.passCount:0},programs:{length:g.size},memory:{textures:r?r.textureCount:0}};return us.getStats(J)},getLiveDriverValue:(X,Z)=>{let J=u.get(X)?.mouseDriverState?.[Z];return!J||J.liveX===void 0||J.liveY===void 0?null:{x:J.liveX,y:J.liveY}},getLiveScalarValue:(X,Z)=>{let J=u.get(X);if(!J)return null;let ge=J.metadata.maps?.[Z];if(ge?.type==="auto-animate"){let ue=J._liveHandles?.[`_smoothed_${Z}`],Pe=ue instanceof si?ue.value:void 0;return typeof Pe=="number"?Pe:null}return ge?.type==="mouse"?J.mouseDriverState[Z]?.liveScalar??null:null},getNodeRegistry:()=>({nodes:new Map(u)}),getRendererType:()=>"webgpu",getInternalRenderer:()=>t?{device:t.device,adapter:e?.adapter,root:t}:null,setForceFullFrameRate:X=>{let Z=Q;return Q=X,Z},beginRecordingResolution:(X,Z,J)=>{if(!t||X<=0||Z<=0)return()=>{};let ge=L,ue=C,Pe=E,Ne=z,dt=U,xt=D,Vt=O;return L=J,Id(X,Z,X,Z),()=>{t&&(L=ge,Id(ue,Pe,Ne,dt),D=xt,O=Vt)}},setResolutionScale:X=>{if(!t)return;let Z=Math.max(.05,Math.min(X,1)),J=Math.max(.01,zc()*Z);if(Math.abs(L-J)<.001)return;L=J;let ge=z||C,ue=U||E;if(ge<=0||ue<=0)return;let{width:Pe,height:Ne}=Op(ge,ue);Id(Pe,Ne,ge,ue)},setFrameRateCap:X=>{ee=X&&X>0?1e3/Math.max(X,10)-1:0},setTimeOrigin:X=>{le=X},setOnReady:X=>{vt=X,X&&ht&&queueMicrotask(X)},setOnDeviceLost:X=>{Mt=X},setOnUnavailable:X=>{if(Qt=X,X&&Ft&&!os){os=!0;let Z=Ft;queueMicrotask(()=>{try{X(Z)}catch(J){wr("[gpu] onUnavailable callback threw:",J)}})}},getFailureReason:()=>Ft,__testing:{needsTransformation:Zi,findChildNodes:rr,buildFieldInits:X=>{let Z=u.get(X);return Z?J_(Z):null},ensureDriverState:X=>{let Z=u.get(X);Z&&kp(Z)},stepMouseDrivers:X=>{_s.deltaTime=X,Lp()},stepAnimatedTime:X=>{_s.deltaTime=X,Up()},getAnimatedTimeValue:X=>{let Z=u.get(X);return Z?.definition.animatedTime?Ud(Gd(Z)).value:null},writeExtraField:(X,Z,J)=>{let ge=u.get(X);ge&&ef(ge,Z,J)},readExtraField:(X,Z)=>{let J=u.get(X)?._liveHandles?.[Z];return J instanceof si?J.value:void 0},getNodeRegistry:()=>({nodes:u,rootId:p,parentToChildren:_}),getParentToChildren:()=>_,getPendingRegistrations:()=>[...f],getFrameDiagnostics:()=>({deltaTime:_s.deltaTime,pointerX:we,pointerY:de,pointerActive:xe,globalElapsedTime:oe,lastRenderTime:se,isVisible:$,forceFullFrameRate:Q,sharedTimeOrigin:le,animating:js.running,mouseListenersNeeded:Me}),computeStructuralHash:nf,isStructuralDirty:()=>P,clearStructuralDirty:()=>{P=!1},setTestReady:X=>{i=!0,c=!0,X&&(C=X.width,E=X.height,z=X.width,U=X.height,F=!0),C5()}}}}var Od={samplingRate:.05,collectionDuration:5e3,warmupDuration:500,sampleInterval:500,apiEndpoint:"https://shaders.com/api/telemetry"};function m1e(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 _1e(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 f1e(){if(typeof window>"u"||typeof navigator>"u")return{domain:"unknown",browserFamily:"unknown",deviceType:"unknown"};let e=navigator.userAgent;return{domain:window.location.hostname,browserFamily:m1e(e),deviceType:_1e(e)}}var v1e=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(Od.warmupDuration),this.stopped||(this.sampleInterval=setInterval(()=>{if(!this.stopped)try{let e=this.renderer.getPerformanceStats();this.frameSamples.push(e)}catch(e){wr("Telemetry sampling error:",e)}},Od.sampleInterval),await this.sleep(Od.collectionDuration-Od.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){wr("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=f1e();return{sessionId:this.sessionId,timestamp:Date.now(),collectionDuration:Od.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 wr("Failed to extract components:",e),[]}}async sendTelemetry(e){try{let t=await fetch(Od.apiEndpoint,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});t.ok||bn("Telemetry send failed:",t.status,t.statusText)}catch(t){wr("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 h1e(e=!1,t=!1){return e||typeof navigator<"u"&&navigator.doNotTrack==="1"?!1:t?!0:Math.random()<Od.samplingRate}function iW(e,t,s=!1,r=!1){return h1e(s,r)?new v1e(e,t,r?"preview":"shader"):null}function lW(){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 y5(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 cW=new Set(["opacity","blendMode","visible","transform","boundingBox","maskSource","maskType","flow","absolute"]);async function b5(e,t,s){let r=new Map;ny().forEach(k=>{r.set(k.definition.name,k.definition);for(let D of k.definition.deprecatedNames??[])r.set(D,k.definition)});for(let k of s?.components??[])r.set(k.name,k);if(!e.style.width||!e.style.height){let k=e.getBoundingClientRect(),D=k.width>0?k.width:e.width,O=k.height>0?k.height:e.height;D>0&&!e.style.width&&(e.style.width=`${D}px`),O>0&&!e.style.height&&(e.style.height=`${O}px`)}function o(k){return{...k,props:k.props?{...k.props}:void 0,children:k.children?.map(o)}}let a={...t,components:t.components.map(o)},i=null,l=!1,c=!1,d=3,u=6e4,p=0,_=0,f=null;function v(k){try{s?.onError?.(k)}catch(D){wr("[createShader] onError callback threw:",D)}}let g=!1;function y(k){g||(g=!0,f=k,v(k))}function b(k,D,O,F,q){let Y=r.get(O.type)??b2(O.type);if(!Y){console.warn(`[createShader] Unknown component type: ${O.type}`);return}let V=O.id||`${O.type}_${Date.now()}_${Math.random().toString(36).slice(2,9)}`,$={};for(let[ee,oe]of Object.entries(O.props||{}))!cW.has(ee)&&Object.prototype.hasOwnProperty.call(Y.props,ee)&&y5(oe)&&($[ee]=oe);let Q=q3(Y,Object.fromEntries(Object.entries(Y.props).map(([ee,oe])=>{let le=O.props?.[ee]!==void 0?O.props[ee]:oe.default;return[ee,y5(le)?oe.default:le]})),V),se={blendMode:O.props?.blendMode||"normal",opacity:O.props?.opacity,visible:O.props?.visible,renderOrder:q,id:O.id,maps:Object.keys($).length>0?{...$}:void 0,mask:O.props?.maskSource?{source:O.props.maskSource,type:O.props.maskType||"alpha"}:void 0,transform:O.props?.transform?{offsetX:0,offsetY:0,rotation:0,scale:1,anchorX:.5,anchorY:.5,edges:"transparent",...O.props.transform}:void 0,boundingBox:kh(O.props?.boundingBox),flow:O.props?.flow,absolute:O.props?.absolute};k.registerNode(V,Y.fragment,F,se,Q,Y),D.set(V,{componentDef:Y,uniforms:Q,nodeId:V,component:O,currentMaps:{...$}}),O.children?.forEach((ee,oe)=>{b(k,D,ee,V,oe)})}async function A(){let k=nW(),D=new Map;s?.onReady&&k.setOnReady(s.onReady),k.setOnUnavailable(q=>{l||y(q)}),await k.initialize({canvas:e,resizeTarget:e,enablePerformanceTracking:s?.enablePerformanceTracking||!1,colorSpace:s?.colorSpace,toneMapping:s?.toneMapping,observeElement:s?.observeElement,gpu:s?.gpu});let O={renderer:k,nodeEntryMap:D,telemetryCollector:null,telemetryStartTimeout:null};k.setOnDeviceLost(q=>{if(l||c||f||i!==null&&i!==O)return;c=!0,v(q);let Y=Date.now();if(Y-_>u&&(p=0),_=Y,++p>d){P(O),i=null,c=!1,y("unrecoverable");return}(async()=>{try{if(P(O),i=null,l)return;let V=await A();if(l){P(V);return}i=V}catch(V){wr("[createShader] rebuild after device loss failed:",V),y("rebuild_failed")}finally{c=!1}})()});let F="shader-root";if(k.registerNode(F,Hh.fragment,null,null,{},Hh),a.components.forEach((q,Y)=>{b(k,D,q,F,Y)}),lW()){let Y=0,V=()=>{if(l||f||i!==O||++Y>40){O.telemetryStartTimeout=null;return}k.getPerformanceStats().fps>0?(O.telemetryCollector=iW(k,"4.0.0",s?.disableTelemetry||!1,!1),O.telemetryCollector&&O.telemetryCollector.start(),O.telemetryStartTimeout=null):O.telemetryStartTimeout=setTimeout(V,500)};O.telemetryStartTimeout=setTimeout(V,500)}return O}function P(k){if(k.telemetryCollector){try{k.telemetryCollector.stop()}catch{}k.telemetryCollector=null}k.telemetryStartTimeout!==null&&(clearTimeout(k.telemetryStartTimeout),k.telemetryStartTimeout=null);try{k.renderer.cleanup()}catch{}}i=await A();function C(k,D){if(!i)return;let{renderer:O,nodeEntryMap:F}=i,q=F.get(k);if(!q){console.warn(`[createShader] Component ID not found: ${k}`);return}q.component.props||(q.component.props={});let Y=q.component.props;for(let[V,$]of Object.entries(D))if(cW.has(V))if(V==="maskSource")O.updateNodeMetadata(q.nodeId,{mask:$?{source:$,type:D.maskType||Y.maskType||"alpha"}:void 0}),Y.maskSource=$,"maskType"in D&&(Y.maskType=D.maskType);else{if(V==="maskType")continue;V==="transform"?(O.updateNodeMetadata(q.nodeId,{transform:$}),Y.transform=$):V==="boundingBox"?(O.updateNodeMetadata(q.nodeId,{boundingBox:kh($)}),Y.boundingBox=$):(O.updateNodeMetadata(q.nodeId,{[V]:$}),Y[V]=$)}else y5($)?Object.prototype.hasOwnProperty.call(q.componentDef.props,V)?(q.currentMaps[V]=$,O.updateNodeMetadata(q.nodeId,{maps:{...q.currentMaps}}),Y[V]=$):console.warn(`[createShader] Ignoring PropDriver for unknown prop "${V}" on ${q.component.type}`):(V in q.currentMaps&&(delete q.currentMaps[V],O.updateNodeMetadata(q.nodeId,{maps:Object.keys(q.currentMaps).length>0?{...q.currentMaps}:void 0})),Object.prototype.hasOwnProperty.call(q.componentDef.props,V)&&(O.updateUniformValue(q.nodeId,V,$),Y[V]=$))}function E(k,D){let O=e.getBoundingClientRect(),F=k??(O.width>0?O.width:e.width),q=D??(O.height>0?O.height:e.height);F>0&&q>0&&(e.style.width=`${F}px`,e.style.height=`${q}px`,i&&i.renderer.resize(F,q))}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:E,pause:U,resume:L,destroy:z,getFailureReason:()=>f}}var g1e="shaders-preview-key";function y1e(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 dW(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=y1e(s,g1e),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 b1e="https://shaders.com",x1e="Unlock your Shaders Pro license",A1e="https://shaders.com/dashboard?pricing=true",w1e=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 T1e(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 w1e.has(o)?`_${o}`:o}function S1e(e){let t=new Set(["style"]),s=new Map;return e?.length&&e.forEach((r,o)=>{if(!r.targets?.length)return;let a=T1e(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 x5(e,t){for(let s of t){if(s.id===e)return s;let r=s.children;if(r?.length){let o=x5(e,r);if(o)return o}}return null}function P1e(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=x5(i.component_id,e);l?.props&&i.prop in l.props&&(l.props[i.prop]=o)}}}async function C1e(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||b1e,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=dW(l.definition),d=Array.isArray(l.key_props)?l.key_props:null,u=S1e(d),p=new Map;for(let A of u.values())for(let P of A.targets??[]){let C=x5(P.component_id,c.components);C?.props&&P.prop in C.props&&p.set(`${P.component_id}:${P.prop}`,C.props[P.prop])}P1e(c.components,t.configuration,u);let _=await b5(e,c,{isPreview:!0,enablePerformanceTracking:!0}),{overlay:f,savedPosition:v,parentEl:g}=M1e(e),y=_.destroy.bind(_),b=_;return b.destroy=()=>{g&&v!==void 0&&(g.style.position=v),f.remove(),y()},b.setConfiguration=A=>{if(d?.length)for(let[P,C]of u){let E=Object.prototype.hasOwnProperty.call(A,P)&&A[P]!==void 0;for(let z of C.targets??[]){let U=E?A[P]:p.get(`${z.component_id}:${z.prop}`);U!==void 0&&_.update(z.component_id,{[z.prop]:U})}}},b}function M1e(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=A1e,r.target="_blank",r.rel="noopener noreferrer",r.textContent=x1e,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 E1e(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 bn("[shaders] createSharedDevice failed; callers should fall back to per-instance device:",t),null}}export{C1e as createPreview,b5 as createShader,E1e as createSharedDevice,Ty as getWebGPUSupport,Yp as isShadersDebug,wy as isWebGPUSupported,k5 as setShadersDebug};
|
|
274
|
+
}`,"fullScreenTriangle");EC.disable("external-omitted");var Ife=["float32-filterable","timestamp-query"],f5=new WeakMap,_5=new WeakMap,v5=new WeakSet,Cp=null,Yfe=new WeakSet;async function Wfe(e={}){if(e.device&&!v5.has(e.device)){let r=e.device,o=f5.get(r);o||(o=w.initFromDevice({device:r}),f5.set(r,o));let a=tW(o,e.onDeviceLost);return{root:o,device:r,adapter:e.adapter,createdDevice:!1,release:a}}e.device&&bn("[gpu] injected GPU device was lost \u2014 falling back to the shared default device");let t=await qfe(),s=tW(t.root,e.onDeviceLost);return{root:t.root,device:t.device,adapter:t.adapter,createdDevice:!1,release:s}}async function qfe(){for(;;){let t=Cp;if(!t)break;let s=await t.catch(()=>null);if(s&&!Yfe.has(t)&&!v5.has(s.device))return s;Cp===t&&(Cp=null)}let e=Vfe();Cp=e;try{return await e}catch(t){throw Cp===e&&(Cp=null),t}}async function Vfe(){if(typeof navigator>"u"||!navigator.gpu)throw new qd("unsupported","[gpu] WebGPU is not available in this environment (navigator.gpu is undefined).");let e;try{e=await w.init({adapter:{powerPreference:"high-performance"},device:{optionalFeatures:Ife}})}catch(t){let s=await Ty();throw new qd(s.supported?"no-device":s.reason??"init-failed",void 0,{cause:t})}if(!e.device)throw new qd("no-device","[gpu] adapter returned no device.");return f5.set(e.device,e),{root:e,device:e.device,createdDevice:!0}}function Nfe(e,t,s={}){return e.configureContext({canvas:t,alphaMode:"premultiplied",...s})}function tW(e,t){let s=e.device,r=_5.get(s);if(r||(r=new Set,_5.set(s,r),e.device.lost.then(a=>{if(v5.add(s),a.reason!=="destroyed")for(let i of[..._5.get(s)??[]])i(a)})),!t)return()=>{};let o=r;return o.add(t),()=>o.delete(t)}function $fe(){let e={value:0,advance(t,s){e.value+=t*s}};return e}var sW=new WeakMap;function Ud(e){let t=sW.get(e);return t||(t=$fe(),sW.set(e,t)),t}var Xfe=(globalThis.__TYPEGPU_AUTONAME__??(e=>e))(ft({time:n,viewportSize:m,logicalViewportSize:m,aspect:n,pointer:m,pointerActive:n}),"SystemUniforms");w.fn([m,m],m)((e=>(globalThis.__TYPEGPU_META__??=new WeakMap).set(e.f=((t,s)=>{"use gpu";return sa(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":()=>sa}})&&e.f)({}));w.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 Hfe(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 jfe(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 _=u(),f={hash:d,value:_,lastUsed:++o};return r.set(d,f),a===null?(a=d,i=null):i=d,c(),_},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 Mp="passManager";function Kfe(e,t){let{textureManager:s,dispatcher:r}=t,o=t.canvasFormat??Qfe(),a=t.rttFormat??"rgba16float",i=e.device?.limits?.maxSampledTexturesPerShaderStage,l=t.maxSampledTextures??(typeof i=="number"&&i>0?i:16),c=t.fullScreenTriangle??Ffe,d=new Map,u=new Set,p=null;function _(){let k=s.samplers;try{return e.createBindGroup(FA,{linearClamp:k.linearClamp,nearestClamp:k.nearestClamp,linearRepeat:k.linearRepeat,nearestRepeat:k.nearestRepeat})}catch(D){wr(`[${Mp}] failed to build sampler bind group:`,D);return}}function f(k,D){let O=new Set;for(let F of k.textures)if(F.kind==="rtt")if(O.add(F.key),d.has(F.key))d.get(F.key).resize(D.width,D.height);else{let q=s.createRenderTexture({width:D.width,height:D.height,format:a,label:`rtt:${F.key}`});d.set(F.key,q),u.add(q)}for(let[F,q]of[...d])O.has(F)||(q.destroy(),u.delete(q),d.delete(F))}function v(k,D){if(!k.textureLayout||k.reads.length===0)return;let O={};for(let F of k.reads){let q=d.get(F),Y=D?.[F],V=q??Y;if(!V){wr(`[${Mp}] pass "${k.entry}" reads unknown texture "${F}"`);return}O[F]=V.texture}k.reads.length>l&&bn(`[${Mp}] pass samples ${k.reads.length} textures (> device limit ~${l}); composition may fail on this device.`);try{return e.createBindGroup(k.textureLayout,O)}catch(F){wr(`[${Mp}] failed to build texture bind group:`,F);return}}function g(k,D){return e.createRenderPipeline({vertex:c,fragment:k.entry,targets:{format:D}})}function y(k,D){if(!k.externalLayout||k.externalReads.length===0)return;let O=k.externalReads;if(O.length===1){let q=D.get(O[0]);if(!q){wr(`[${Mp}] external read "${O[0]}" has no registered source`);return}return s.createExternalTextureBinding({layout:k.externalLayout,entryKey:O[0],getSource:q})}let F=null;return{update(){let q={};for(let Y of O){let V=D.get(Y)?.();if(!V)return F=null,null;try{q[Y]=e.device.importExternalTexture({source:V})}catch{return F=null,null}}return F=e.createBindGroup(k.externalLayout,q),F},get current(){return F},destroy(){F=null}}}function b(k,D,O,F){let q=D.kind==="canvas"?o:a,Y=k.reads.filter($=>O?.[$]),V=new Map(Y.map($=>[$,O[$].texture]));return{fragment:k,pipeline:g(k,q),textureBindGroup:v(k,O),externalBinding:y(k,F),target:D,mediaReads:Y,mediaSnapshot:V}}function A(k,D,O,F){f(k,O);for(let Q of k.computeSteps)Q.bindInputs?.(se=>d.get(se)??F?.[se]);let q=_(),Y=new Map;for(let Q of k.externalTextures)Y.set(Q.key,Q.getSource);let V=k.rttPasses.map(Q=>b(Q.fragment,{kind:"rtt",key:Q.textureKey},F,Y)),$=b(k.finalPass,{kind:"canvas"},F,Y);p={ir:k,uniformBindGroup:D,samplerBindGroup:q,computeSteps:k.computeSteps,rttPasses:V,finalPass:$,size:O,mediaResources:F}}function P(k,D){let O=k.pipeline;if(p?.uniformBindGroup&&(O=O.with(p.uniformBindGroup)),k.mediaReads&&k.mediaReads.length>0&&p?.mediaResources){let F=!1;for(let q of k.mediaReads)p.mediaResources[q].texture!==k.mediaSnapshot.get(q)&&(F=!0);if(F){k.textureBindGroup=v(k.fragment,p.mediaResources);for(let q of k.mediaReads)k.mediaSnapshot.set(q,p.mediaResources[q].texture)}}if(k.textureBindGroup&&(O=O.with(k.textureBindGroup)),k.fragment.usesSamplers&&p?.samplerBindGroup&&(O=O.with(p.samplerBindGroup)),k.fragment.externalReads.length>0){let F=k.externalBinding?.update()??null;if(!F){k.externalSkipLogged||(bn(`[${Mp}] external texture not ready \u2014 skipping pass (${k.fragment.externalReads.join(", ")})`),k.externalSkipLogged=!0);return}O=O.with(F)}O.withColorAttachment({view:D}).draw(3)}function C(k,D,O){if(p){for(let F of p.computeSteps){let q=F.getComputeNodes(D);q&&q.length&&r.dispatch(q)}O?.(),E(),P(p.finalPass,k)}}function E(){if(p)for(let k of p.rttPasses){let D=d.get(k.target.key);D&&P(k,z(D))}}function z(k){return e.unwrap(k.texture).createView()}function U(k){if(!(!k.fragment.textureLayout||k.fragment.reads.length===0)&&(k.textureBindGroup=v(k.fragment,p?.mediaResources),k.mediaReads&&k.mediaSnapshot&&p?.mediaResources))for(let D of k.mediaReads)k.mediaSnapshot.set(D,p.mediaResources[D].texture)}function L(k,D){let O=!1;for(let F of d.values())F.resize(k,D)&&(O=!0);if(!p)return O;if(p.size={width:k,height:D},!O)return!1;for(let F of p.computeSteps)F.bindInputs?.(q=>d.get(q)??p.mediaResources?.[q]);for(let F of p.rttPasses)U(F);return U(p.finalPass),!0}return{setComposition:A,render:C,repaintRtt:E,resize:L,get textureCount(){return u.size},get passCount(){return p?p.rttPasses.length+1:0},dispose(){for(let k of[...u])k.destroy();u.clear(),d.clear(),p=null}}}function Qfe(){return typeof navigator<"u"&&navigator.gpu?navigator.gpu.getPreferredCanvasFormat():"bgra8unorm"}function rW(e){return`${e}-srgb`}function Zfe(e){let t=new Set;function s(f,...v){return e.createTexture.call(e,f).$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(f,v,g,y,b){let A={texture:f,width:v,height:g,format:y,write(P){f.write(P)},unwrap(){return e.unwrap(f)},createSrgbView(){if(b)return e.unwrap(f).createView({format:rW(y)})},generateMipmaps(){f.generateMipmaps?.()},destroy(){t.has(A)&&(f.destroy(),t.delete(A))}};return t.add(A),A}function d(f){let{width:v,height:g,srgb:y=!1,mipLevelCount:b}=f,A=f.format??"rgba8unorm";return c(s({size:[v,g],format:A,...y?{viewFormats:[rW(A)]}:{},...b?{mipLevelCount:b}:{}},"sampled","render"),v,g,A,y)}function u(f){let{width:v,height:g,format:y,data:b}=f,A=c(s({size:[v,g],format:y},"sampled"),v,g,y,!1);return b&&A.write(b),A}function p(f){let v=f.format??"rgba16float",{mipLevelCount:g}=f,y=f.width,b=f.height;function A(C,E){return c(s({size:[C,E],format:v,...g?{mipLevelCount:g}:{}},"sampled","render"),C,E,v,!1)}let P=A(y,b);return{get texture(){return P.texture},get width(){return y},get height(){return b},format:v,write(C){P.write(C)},unwrap(){return P.unwrap()},createSrgbView(){return P.createSrgbView()},generateMipmaps(){P.generateMipmaps()},resize(C,E){return C===y&&E===b?!1:(P.destroy(),y=C,b=E,P=A(C,E),!0)},destroy(){P.destroy()}}}function _(f){let{layout:v,entryKey:g,getSource:y,staticEntries:b={}}=f,A=null;return{update(){let P=y();if(!P)return A=null,null;let C;try{C=e.device.importExternalTexture({source:P})}catch{return A=null,null}return A=e.createBindGroup(v,{...b,[g]:C}),A},get current(){return A},destroy(){A=null}}}return{samplers:l,createMediaTexture:d,createDataTexture:u,createRenderTexture:p,createExternalTextureBinding:_,get textureCount(){return t.size},destroy(){for(let f of[...t])f.destroy();t.clear()}}}function Jfe(e,t){let s=m5(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 e1e(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 t1e(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=jm(l.width,a[l.width.prop],t,s),p=jm(l.height,a[l.height.prop],t,s);return u>0&&p>0?{widthPx:u,heightPx:p}:null}let c=e1e(i,t,s);if(c)return c;let d=Jfe(r,a);if(d){let u=W4(d);if(u)return{widthPx:u.width,heightPx:u.height}}return null}function s1e(e,t){return e==null?0:typeof e=="number"?e:e.unit==="px"?e.value:e.value*t}function h5(e,t,s){return!e||e.mode!=="column"&&e.mode!=="row"?null:{mode:e.mode,gapPx:Math.max(0,s1e(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 oW=e=>({ox:e.includes("left")?"start":e.includes("right")?"end":"center",oy:e.includes("top")?"start":e.includes("bottom")?"end":"center"}),iy=(e,t,s,r)=>e==="start"?r:e==="end"?s-t-r:(s-t)/2+r;function ly(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 r1e(e,t,s,r){let o=new Map;if(t.length===0)return o;let a=ly(e,t),{ox:i,oy:l}=oW(e.anchor),c=iy(i,a.widthPx,s,e.anchorOffsetX),d=iy(l,a.heightPx,r,e.anchorOffsetY),u=(_,f)=>e.align==="start"?0:e.align==="end"?f-_:(f-_)/2,p=0;for(let _ of t)if(e.mode==="column"){let f=c+u(_.size.widthPx,a.widthPx)+_.size.widthPx/2,v=d+p+_.size.heightPx/2;o.set(_.id,{centerXPx:f,centerYPx:v}),p+=_.size.heightPx+e.gapPx}else{let f=c+p+_.size.widthPx/2,v=d+u(_.size.heightPx,a.heightPx)+_.size.heightPx/2;o.set(_.id,{centerXPx:f,centerYPx:v}),p+=_.size.widthPx+e.gapPx}return o}function o1e(e,t,s){let r=h5(e.layout,t,s);if(r){let o=g5(e,t,s);return o.length===0?null:ly(r,o)}return t1e({type:e.componentName,decl:e.decl,props:e.props,boundingBox:e.boundingBox,requiresChild:e.requiresChild,availableWidthPx:t},t,s)}function g5(e,t,s){let r=[];for(let o of e.children){if(o.visible===!1||o.absolute)continue;let a=o1e(o,t,s);a&&r.push({id:o.id,size:a,view:o})}return r}function a1e(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 n1e(e,t,s,r,o,a,i,l){let c=h5(e.layout,o,a);if(c){aW(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=a1e(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 aW(e,t,s,r,o,a,i,l){let c=l??g5(e,s,r);if(c.length===0)return;let d=t;if(a){let p=ly(t,c);d={...t,anchor:"top-left",anchorOffsetX:a.centerXPx-p.widthPx/2,anchorOffsetY:a.centerYPx-p.heightPx/2}}if(i){let p=ly(d,c),{ox:_,oy:f}=oW(d.anchor);i.set(e.id,{leftPx:iy(_,p.widthPx,s,d.anchorOffsetX),topPx:iy(f,p.heightPx,r,d.anchorOffsetY),widthPx:p.widthPx,heightPx:p.heightPx})}let u=r1e(d,c,s,r);for(let p of c){let _=u.get(p.id);_&&n1e(p.view,p.size,_.centerXPx,_.centerYPx,s,r,o,i)}}function i1e(e,t,s,r){let o=[],a=i=>{let l=h5(i.layout,t,s);if(l){let c=g5(i,t,s);aW(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 l1e=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,_=p?p.usedJSHeapSize/(1024*1024):null,f=this.calculateMemoryGrowthRate(),v=a>0?a/this.targetFrameTime*100:0,g=e?.render?.calls??null,y=e?.programs?.length??null,b=e?.memory?.textures??null,A=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:_!==null?Math.round(_*100)/100:null,memoryGrowthRate:f!==null?Math.round(f*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:b,intensityScore:A.score,intensityLabel:A.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}},c1e=32,d1e=5,u1e=(()=>{let e=0,t=new Set,s=(d,u)=>{t.forEach(p=>{try{p[d](u)}catch(_){wr("[Shaders] Error in pointer handler:",_)}})},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 p1e(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 nW(){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,_=new Map,f=[],v=[],g=jfe({maxSize:4,dispose:X=>cf(X)}),y=new Set,b=null,A=null,P=!0,C=0,E=0,z=0,U=0,L=1,k=8192,D=0,O=0,F=!1,q=()=>z||C||1,Y=()=>U||E||1,V=!0,$=!1,Q=!1,se=0,ee=0,oe=0,le=null,re=null,we=-10,de=-10,xe=!1,Ae=!1,Re=null,Me=!1,ze=null,Ye=null,ke=null,Ce=null,Te=null,qe=null,Ve=!1,rt="p3-linear",pt="linear",Qe=!1,lt=null,vt=null,ht=!1,St=!1,Mt=null,Rt=!1,Ft=null,Qt=null,os=!1,cs=null,ss=null,Ss=0,ds=0,us=new l1e,_s={deltaTime:0,pointer:{x:-10,y:-10,seen:!1},pointerActive:!1,dimensions:{width:0,height:0}},js=TB(()=>Gp()),xr=X=>X.replace(/[^a-zA-Z0-9_]/g,"_"),rr=X=>{let Z=_.get(X);if(!Z)return[];let J=[];for(let ge of Z){let ue=u.get(ge);ue&&J.push(ue)}return J},Cr=X=>{let Z=xr(X);for(let[J,ge]of u)if(ge.metadata.id===Z)return J;return null},Sr=(X,Z)=>{if(Z==="center")return;let J=X.boundingBoxDeclaration;if(!J)return;let ge={};for(let[ue,Pe]of Object.entries(X.uniforms))ge[ue]=Pe._rawDimensional!==void 0?Pe._rawDimensional:Pe.value;return co(X,ge.shapeSdfUrl),I3(J,ge,q(),Y())},lo=new WeakMap,co=(X,Z)=>{if(typeof Z!="string"||!Z||yB(Z))return;let J=lo.get(X)??new Set;lo.set(X,J),!J.has(Z)&&(J.add(Z),Ih(Z,()=>{J.delete(Z),u.get(X.id)===X&&(pe(X),zs()&&Ls(),pa())}))},pe=X=>{let Z=X.boundingBoxDeclaration,J=X.extraDimProps,ge=rp(Z,J);if(!ge)return;let ue=X.uniforms.origin?.value??"center",Pe=Sr(X,ue),Ne=[...ge.positionProps,...ge.sizeProps.keys()];for(let dt of Ne){let xt=X.uniforms[dt];if(!xt||xt._rawDimensional===void 0)continue;let Vt=M_(Z,dt,xt._rawDimensional,ue,q(),Y(),J,Pe);xt.value=Vt,Yi(X,dt,Vt)}},Ie=(X,Z,J)=>{if(typeof J=="number")return J;let ge=X.uniforms.origin?.value??"center",ue=M_(X.boundingBoxDeclaration,Z,J,ge,q(),Y(),X.extraDimProps);return typeof ue=="number"?ue:J?.value??0},De=()=>{let{width:X,height:Z}=Wi();return X/Math.max(1,Z)},Be=X=>{let Z=X.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:De()}},Le=X=>{let Z=X.metadata.boundingBox;if(!Z)return null;let J=GA(Z,q(),Y());return{centerX:J.centerX,centerY:J.centerY,halfWidth:J.halfWidthUV,halfHeight:J.halfHeightUV,cornerRadius:J.cornerRadiusUV,rotation:J.rotation,aspectRatio:De()}},Je=X=>!!X.metadata.boundingBox&&!!X.boundingBoxDeclaration&&!Bh(X.metadata.boundingBox),gt=X=>{let Z=X.boundingBoxDeclaration;if(!Z||!X.uniforms||!Z.computeBounds&&!Z.propBindings)return null;let J={};for(let[xt,Vt]of Object.entries(X.uniforms))J[xt]=Vt._rawDimensional!==void 0?Vt._rawDimensional:Vt.value;let ge=I3(Z,J,q(),Y());if(ge.hwx<=0&&ge.hhy<=0)return null;let ue=.5,Pe=.5,Ne=Z.propBindings?.x?.prop??Z.propBindings?.y?.prop,dt=Ne?X.uniforms[Ne]?.value:void 0;if(dt&&typeof dt.x=="number"&&typeof dt.y=="number"&&(ue=dt.x,Pe=dt.y),Ne){let xt=X.metadata.maps?.[Ne];if(xt?.type==="mouse-position"){let Vt=X.mouseDriverState[Ne];Vt&&(ue=Vt.liveX??(typeof xt.x=="number"?xt.x:Vt.currentX),Pe=Vt.liveY??(typeof xt.y=="number"?xt.y:Vt.currentY))}}return{centerX:ue,centerY:Pe,halfWidth:ge.hwx,halfHeight:ge.hhy}},Bt=X=>{if(!X.definition.wantsBoundsParams)return null;let Z=rr(X.id).sort((J,ge)=>J.metadata.renderOrder-ge.metadata.renderOrder);for(let J of Z){if(J.metadata.visible===!1)continue;if(Je(J))return null;let ge=gt(J);if(ge)return ge}return null},Dt=()=>{for(let X of u.values()){if(!X.definition.wantsBoundsParams)continue;let Z=Bt(X);Z&&(or(X,"_childBounds_centerX",Z.centerX),or(X,"_childBounds_centerY",Z.centerY),or(X,"_childBounds_halfWidth",Z.halfWidth),or(X,"_childBounds_halfHeight",Z.halfHeight))}},Lt=!1,Ls=()=>{Lt=!0,pa()},zs=()=>{for(let X of u.values()){let Z=X.metadata.flow?.mode;if(Z==="column"||Z==="row")return!0}return!1},Rr=X=>{let Z={};for(let[Pe,Ne]of Object.entries(X.uniforms))Z[Pe]=Ne._rawDimensional!==void 0?Ne._rawDimensional:Ne.value;let J=X.boundingBoxDeclaration?.propBindings?.x?.prop??X.boundingBoxDeclaration?.propBindings?.y?.prop,ge=J?X.uniforms[J]?.value:void 0,ue=!!(J&&(ge?.type==="mouse-position"||X.metadata.maps?.[J]));return{id:X.id,componentName:X.componentName,visible:X.metadata.visible!==!1,absolute:X.metadata.absolute===!0,requiresChild:X.requiresChild,layout:X.metadata.flow,decl:X.boundingBoxDeclaration,props:Z,boundingBox:X.metadata.boundingBox,positionDriven:ue,children:rr(X.id).sort((Pe,Ne)=>Pe.metadata.renderOrder-Ne.metadata.renderOrder).map(Rr)}},$o=()=>{if(!zs()){Lt=!1;return}let X=q(),Z=Y();if(X<=1||Z<=1)return;Lt=!1;let J=[];for(let ue of u.values())ue.parentId===null&&J.push(Rr(ue));let ge=i1e(J,X,Z);for(let ue of ge){let Pe=u.get(ue.id);if(Pe)if(ue.kind==="position"){let Ne=Pe.uniforms[ue.prop];if(!Ne)continue;let dt=Ne.value,xt=dt&&typeof dt=="object"?{...dt,x:ue.value.x,y:ue.value.y}:ue.value;Ne.value=xt,Yi(Pe,ue.prop,xt)}else{let Ne=Je(Pe);if(Pe.metadata.boundingBox={x:{value:ue.xPx,unit:"px"},y:{value:ue.yPx,unit:"px"},width:{value:ue.widthPx,unit:"px"},height:{value:ue.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}:{}},!Ne&&Je(Pe))li();else{let dt=Le(Pe);if(dt)for(let[xt,Vt]of Object.entries(dt))or(Pe,`_bbox_${xt}`,Vt)}}}},eo=()=>{Lt&&$o()},Ks=null,hn=()=>{zs()&&Ls()},aa=()=>{Ks||(Ks=q4(()=>{zs()&&Ls()})),typeof document<"u"&&document.fonts?.addEventListener&&document.fonts.addEventListener("loadingdone",hn)};aa();let na=X=>Zi(X.metadata.transform),gn=(X,Z,J)=>{let ge=X.mapValues[Z]??{inputMin:0,inputMax:1,outputMin:0,outputMax:1,curve:0};if(J.type==="map"){let ue=J;ge.inputMin=ue.inputMin,ge.inputMax=ue.inputMax,ge.outputMin=Ie(X,Z,ue.outputMin),ge.outputMax=Ie(X,Z,ue.outputMax),ge.curve=ue.curve??0}else if(J.type==="mouse"){let ue=J;ge.outputMin=Ie(X,Z,ue.outputMin),ge.outputMax=Ie(X,Z,ue.outputMax),ge.curve=ue.curve??0}else if(J.type==="auto-animate"){let ue=J;ge.outputMin=Ie(X,Z,ue.outputMin),ge.outputMax=Ie(X,Z,ue.outputMax)}return X.mapValues[Z]=ge,ge},Ep=(X,Z,J)=>{let ge=X.mouseDriverState[Z];if(ge)return ge;if(J.type==="mouse-position"){let ue=J.x===void 0||J.x==="mouse",Pe=J.y===void 0||J.y==="mouse";ge={currentX:ue?we:J.x,currentY:Pe?de:J.y,velocityX:0,velocityY:0,pointerSnapped:Ae}}else ge={currentX:Math.max(.001,J.axis==="x"?we:de),currentY:0,velocityX:0,velocityY:0,pointerSnapped:Ae};return X.mouseDriverState[Z]=ge,ge},kp=X=>{let Z=X.metadata.maps;if(Z)for(let[J,ge]of Object.entries(Z))J in X.uniforms&&(ge.type==="map"?gn(X,J,ge):ge.type==="mouse-position"?Ep(X,J,ge):ge.type==="mouse"?(Ep(X,J,ge),gn(X,J,ge)):ge.type==="auto-animate"&&(X.autoAnimateState[J]||(X.autoAnimateState[J]={}),gn(X,J,ge)))},Gd=X=>{let Z=X.definition.animatedTime;return(Z?X.uniforms[Z.speed]:void 0)??X},Bp=(X,Z)=>X.uniforms[Z]??X,J_=X=>{let Z=[];for(let[ue,Pe]of Object.entries(X.uniforms))Z.push({name:ue,initial:Pe.value,transform:Pe.transform,cpu:Pe.cpu,schema:Pe.schema});if(Z.push({name:"_opacity",schema:n,initial:X.metadata.opacity??1}),X.definition.animatedTime&&Z.push({name:"_animTime",schema:n,initial:Ud(Gd(X)).value}),X.definition.extraAnimatedTimes)for(let[ue,Pe]of Object.entries(X.definition.extraAnimatedTimes))Z.push({name:`_animTime_${ue}`,schema:n,initial:Ud(Bp(X,Pe)).value});let J=X.definition.extraFields;if(J)for(let[ue,Pe]of Object.entries(J))Z.push({name:ue,schema:Pe.schema,initial:Pe.initial});if(na(X)){let ue=Be(X);for(let[Pe,Ne]of Object.entries(ue))Z.push({name:`_xform_${Pe}`,schema:n,initial:Ne})}if(Je(X)){let ue=Le(X);if(ue)for(let[Pe,Ne]of Object.entries(ue))Z.push({name:`_bbox_${Pe}`,schema:n,initial:Ne})}if(X.definition.wantsBoundsParams){let ue=Bt(X)??{centerX:.5,centerY:.5,halfWidth:.5,halfHeight:.5};for(let[Pe,Ne]of Object.entries(ue))Z.push({name:`_childBounds_${Pe}`,schema:n,initial:Ne})}let ge=X.metadata.maps;if(ge){kp(X);for(let[ue,Pe]of Object.entries(ge))if(ue in X.uniforms){if(Pe.type==="map"){let Ne=X.mapValues[ue];Z.push({name:`_map_${ue}_inputMin`,schema:n,initial:Ne.inputMin}),Z.push({name:`_map_${ue}_inputMax`,schema:n,initial:Ne.inputMax}),Z.push({name:`_map_${ue}_outputMin`,schema:n,initial:Ne.outputMin}),Z.push({name:`_map_${ue}_outputMax`,schema:n,initial:Ne.outputMax}),Z.push({name:`_map_${ue}_curve`,schema:n,initial:Ne.curve})}else if(Pe.type==="mouse-position"){let Ne=X.mouseDriverState[ue];Z.push({name:`_smoothed_${ue}`,schema:m,initial:[Ne.currentX,1-Ne.currentY]})}else if(Pe.type==="mouse"){let Ne=X.mapValues[ue];Z.push({name:`_smoothed_${ue}`,schema:n,initial:Ne.outputMin})}else if(Pe.type==="auto-animate"){let Ne=X.mapValues[ue];Z.push({name:`_smoothed_${ue}`,schema:n,initial:Ne.outputMin})}}}return Z},Yi=(X,Z,J)=>{let ge=X._liveHandles?.[Z];ge&&(lt?.(rt),Sk(ge,J))},or=(X,Z,J)=>{let ge=X._liveHandles?.[Z];ge instanceof si&&(ge.value=J)},ef=(X,Z,J)=>{let ge=X._liveHandles?.[Z];ge instanceof si?ge.value=J:ge instanceof Im&&Array.isArray(J)&&(ge.array=J)},tf=X=>{for(let Z of Object.values(X.uniforms))if(Z.transform===st){let J=Z.value;if(typeof J=="string")return st(J);if(typeof J=="number")return J}return 0},sf=X=>{if(!X.uniforms.convertedColorsArray)return;let Z=null;for(let Pe of Object.values(X.uniforms))if(Pe.transform===fl){Z=Pe.value??null;break}let J=HA(Z,P_),ge=jA(J.colors,J.stopCount,tf(X)),ue=(Pe,Ne)=>{let dt=X.uniforms[Pe];dt&&(dt.value=Ne),Yi(X,Pe,Ne)};ue("colorsArray",J.colors),ue("positionsArray",J.positions),ue("convertedColorsArray",ge),ue("stopCount",J.stopCount)},zp=(X,Z)=>{let J=X.uniforms[Z],ge=J?._listSpec;if(!J||!ge)return;let ue=J._rawList,Pe=new Set,Ne=L3(ue,ge,{color:P_,drivenPosition:(Vt,Qs,Ar)=>{let ir=az(Z,Vt,Qs);Pe.add(ir);let es=Ep(X,ir,Ar);return es.liveX!==void 0&&es.liveY!==void 0?{x:es.liveX,y:1-es.liveY}:void 0}});for(let Vt of Object.keys(X.mouseDriverState)){let Qs=D3(Vt);Qs&&Qs.prop===Z&&!Pe.has(Vt)&&delete X.mouseDriverState[Vt]}J.value=Ne,Yi(X,Z,Ne);let dt=U3(Ne,ge),xt=(Vt,Qs)=>{let Ar=X.uniforms[Vt];Ar&&(Ar.value=Qs),Yi(X,Vt,Qs)};for(let[Vt,Qs]of Object.entries(dt.fields))xt(Nh(Z,Vt),Qs);xt($h(Z),dt.count)},cy=(X,Z)=>{let J=X.metadata.maps?.[Z];if(J)return J;let ge=D3(Z);if(!ge)return;let ue=X.uniforms[ge.prop]?._rawList,Pe=(Array.isArray(ue)?ue[ge.index]:void 0)?.[ge.field];return Xh(Pe)?Pe:void 0},dy=X=>Object.values(X.uniforms).some(Z=>Z._listSpec&&O3(Z._rawList,Z._listSpec)),rf=X=>{if(or(X,"_opacity",X.metadata.opacity??1),X.definition.animatedTime&&or(X,"_animTime",Ud(Gd(X)).value),X.definition.extraAnimatedTimes)for(let[J,ge]of Object.entries(X.definition.extraAnimatedTimes))or(X,`_animTime_${J}`,Ud(Bp(X,ge)).value);if(na(X))for(let[J,ge]of Object.entries(Be(X)))or(X,`_xform_${J}`,ge);if(Je(X)){let J=Le(X);if(J)for(let[ge,ue]of Object.entries(J))or(X,`_bbox_${ge}`,ue)}let Z=X.metadata.maps;if(Z){for(let[J,ge]of Object.entries(Z))if(ge.type==="map"&&X.mapValues[J]){let ue=X.mapValues[J];or(X,`_map_${J}_inputMin`,ue.inputMin),or(X,`_map_${J}_inputMax`,ue.inputMax),or(X,`_map_${J}_outputMin`,ue.outputMin),or(X,`_map_${J}_outputMax`,ue.outputMax),or(X,`_map_${J}_curve`,ue.curve)}}},uy=(X,Z)=>{let J={};for(let ge of Object.keys(X.uniforms)){let ue=Z[ge];ue&&(J[ge]=ue)}return J},py=X=>{let Z={};for(let[J,ge]of Object.entries(X.uniforms))Z[J]={accessorPath:"",cpu:!!ge.cpu,value:ge.value};return Z},my=(X,Z)=>({id:X.id,customId:X.metadata.id,componentName:X.componentName,parentId:X.parentId,definition:X.definition,metadata:X.metadata,handles:Z,domCanvas:X.domCanvas}),of=(X,Z)=>{let J=new Map,ge=Pe=>my(Pe,X&&Z?uy(Pe,Z.get(Pe.id)??{}):py(Pe)),ue=Pe=>{let Ne=J.get(Pe);if(Ne)return Ne;let dt=u.get(Pe);if(!dt)return;let xt=ge(dt);return J.set(Pe,xt),xt};return{rootId:p,getNode:ue,getChildren:Pe=>rr(Pe).map(Ne=>ue(Ne.id)),resolveCustomId:Pe=>Cr(Pe),store:{gpuAccessor:(Pe,Ne)=>X?X.gpuAccessor(Pe,Ne):"",layout:X?.layout}}},af=()=>({toneMapping:pt,flipY:!1,premultiplyAlpha:!0,canvas:a??void 0,dimensions:Wi(),gpu:t?{device:t.device,root:t}:void 0,writeExtraField:(X,Z,J)=>{let ge=u.get(X);ge&&ef(ge,Z,J)},createMediaTexture:X=>{if(!r)throw new Error("[gpu] createMediaTexture before init");return r.createMediaTexture(X)},createDataTexture:X=>{if(!r)throw new Error("[gpu] createDataTexture before init");return r.createDataTexture(X)},resolveMapWindow:(X,Z)=>{let J=u.get(X),ge=J?.metadata.maps?.[Z];if(!J||!ge||ge.type!=="map")return;let ue=gn(J,Z,ge);return{inputMin:ue.inputMin,inputMax:ue.inputMax,outputMin:ue.outputMin,outputMax:ue.outputMax,curve:ue.curve}},resolveDriverCpuValue:(X,Z)=>{let J=u.get(X);if(!J)return;if(Z==="_animTime"||Z.startsWith("_animTime_")){let ue=J._liveHandles?.[Z];return ue instanceof si?ue.value:void 0}let ge=J.metadata.maps?.[Z];if(ge){if(ge.type==="mouse-position"){let ue=J.mouseDriverState[Z];return!ue||ue.liveX===void 0||ue.liveY===void 0?void 0:{x:ue.liveX,y:1-ue.liveY}}if(ge.type==="mouse"||ge.type==="auto-animate"){let ue=J._liveHandles?.[`_smoothed_${Z}`];return ue instanceof si?ue.value:void 0}}}}),_y=()=>{let X=[];for(let[Z,J]of u){let ge=J.metadata;X.push(`aopac:${Z}:${(ge.opacity??1)<1}`);let ue=J.uniforms.stopCount?.value;typeof ue=="number"&&X.push(`stops:${Z}:${ue>1?ue:0}`);for(let[Pe,Ne]of Object.entries(J.uniforms)){if(!Ne.compileTimeWhen)continue;let dt=Ne._lastCompiledValue;typeof dt!="number"&&typeof dt!="boolean"||X.push(`ctw:${Z}:${Pe}:${String(dt)}`)}if(ge.maps){let Pe=Object.entries(ge.maps).sort(([Ne],[dt])=>Ne<dt?-1:Ne>dt?1:0).map(([Ne,dt])=>{let xt=dt;return`${Ne}=${xt.type}:${xt.source??""}:${xt.channel??""}:${xt.axis??""}`}).join(",");X.push(`mapfp:${Z}:${Pe}`)}}return X},nf=()=>p?Hfe([...v4(of(null,null),af()),..._y()]):null,Wi=()=>({width:Math.max(1,Math.round(C*L)),height:Math.max(1,Math.round(E*L))}),fy=X=>{let Z={};for(let J of X.textures)J.kind!=="rtt"&&J.resource&&(Z[J.key]=J.resource);return Z},lf=X=>{if(!t||!r||!o)throw new Error("[gpu] buildComposition before init");let Z=Tk(t,{systemSchema:Xfe}),J=new Map;for(let[dt,xt]of u)J.set(dt,Z.defineNode(dt,J_(xt)));Z.defineSystem(),Z.finalize();let ge=f4(of(Z,J),af()),ue=Kfe(t,{textureManager:r,dispatcher:o}),Pe={hash:X,store:Z,ir:ge,passManager:ue,handlesById:J,fresh:!0,validationFrames:3},Ne=ge.usesCustomWgsl?t.device:void 0;Ne&&Ne.pushErrorScope("validation");try{ue.setComposition(ge,Z.bindGroup,Wi(),fy(ge))}finally{Ne&&Ne.popErrorScope().then(dt=>{dt&&!Pe.broken&&Rp(Pe,dt.message)}).catch(()=>{})}return y.add(Pe),Pe},Rp=(X,Z)=>{X.broken=Z,gf("[gpu] a shader in this composition failed GPU validation \u2014 it will not draw until it changes. If you are writing a wgsl`\u2026` body, the message below points at the line:\n"+Z)},cf=X=>{try{for(let Z of X.ir.onCleanup)Z()}catch(Z){wr("[gpu] composition onCleanup error:",Z)}try{X.passManager.dispose()}catch(Z){wr("[gpu] passManager dispose error:",Z)}try{X.store.destroy()}catch(Z){wr("[gpu] store destroy error:",Z)}y.delete(X),b===X&&(b=null)},vy=X=>{let Z=!1;for(let[J,ge]of X.handlesById){let ue=u.get(J);ue&&ue._liveHandles!==ge&&(ue._liveHandles=ge,Z=!0)}if(!(X===b&&!Z)){if(!X.fresh){for(let J of u.values()){for(let[ge,ue]of Object.entries(J.uniforms))Yi(J,ge,ue.value);kp(J),rf(J)}X.store.writeAll()}X.fresh=!1,b=X,!ht&&X.ir.composedNodeIds.size>0&&(St=!0)}},li=()=>{P=!0,zs()&&(Lt=!0),pa()},pa=()=>{Ft||js.running||re===null&&typeof requestAnimationFrame=="function"&&(re=requestAnimationFrame(()=>{re=null,Gp()}))},df=(X,Z,J,ge,ue={},Pe,Ne)=>{if(Ft)return;if(Z===null){let es=f.findIndex(Uo=>Uo.id===X);if(es!==-1){f.splice(es,1),v=v.filter(Uo=>Uo.id!==X);return}Dp(X);return}if(!Pe){console.error(`[gpu] registerNode("${X}") requires a componentDefinition`);return}if(!c){let es=f.findIndex(Vn=>Vn.id===X),Uo={id:X,definition:Pe,parentId:J,metadata:ge,uniforms:ue,domCanvas:Ne};es!==-1?(f[es]=Uo,v=v.filter(Vn=>Vn.id!==X)):f.push(Uo);return}let dt=0;if(J!==null){let es=_.get(J);if(es&&es.size>0){let Uo=0;for(let Vn of es){let Ra=u.get(Vn);Ra&&Ra.metadata.renderOrder>Uo&&(Uo=Ra.metadata.renderOrder)}dt=Uo+1}}let xt={blendMode:ge?.blendMode||"normal",opacity:ge?.opacity,visible:ge?.visible!==!1,id:ge?.id?xr(ge.id):ge?.id,mask:ge?.mask,maps:ge?.maps,renderOrder:ge?.renderOrder!==void 0?ge.renderOrder:dt,transform:ge?.transform,boundingBox:ge?.boundingBox,flow:ge?.flow,absolute:ge?.absolute},Vt=Pe.boundingBoxDeclaration,Qs=Pe.props?F3(Pe.props):void 0,Ar={id:X,componentName:Pe.name||"Unknown",parentId:J,definition:Pe,metadata:xt,uniforms:ue,domCanvas:Ne,requiresRTT:!!Pe.requiresRTT,requiresChild:!!Pe.requiresChild,blendWithChildren:!!Pe.blendWithChildren,acceptsUVContext:!!Pe.acceptsUVContext,providesUVContextViaCompute:!!Pe.providesUVContextViaCompute,usesPointer:!!Pe.usesPointer,hasUvRemap:!!Pe.uvRemap,boundingBoxDeclaration:Vt,wantsBoundsParams:!!Pe.wantsBoundsParams,extraDimProps:Qs,mouseDriverState:{},autoAnimateState:{},mapValues:{},_liveHandles:null};if(Vt||Qs){let es=rp(Vt,Qs);if(es){let Uo=ue.origin?.value??"center",Vn=Sr(Ar,Uo);for(let Ra of[...es.positionProps,...es.sizeProps.keys()]){let ma=ue[Ra];ma&&(ma._rawDimensional===void 0&&(ma._rawDimensional=ma.value),ma.value=M_(Vt,Ra,ma._rawDimensional,Uo,q(),Y(),Qs,Vn))}}}for(let es of Object.values(ue))es.compileTimeWhen&&es._lastCompiledValue===void 0&&(es._lastCompiledValue=es.value);u.set(X,Ar),J===null&&(p=X);let ir=_.get(J)||new Set;ir.add(X),_.set(J,ir),Fp(),li(),zs()&&Ls()},Fd=X=>{f.some(Z=>Z.id===X.id)&&v.push(X)},uf=(X,Z,J)=>{let ge=u.get(X);if(!ge){Fd({id:X,kind:"uniform",name:Z,value:J});return}let ue=ge.uniforms[Z];if(!ue)return;let Pe=ge.boundingBoxDeclaration,Ne=ge.extraDimProps;if((Pe||Ne)&&Y3(Pe,Z,Ne)){ue._rawDimensional=J;let dt=ge.uniforms.origin?.value??"center",xt=Sr(ge,dt);J=M_(Pe,Z,J,dt,q(),Y(),Ne,xt)}if(ue.transform===cc){ue._rawList=J,zp(ge,Z),Fp(),pa();return}if(ue.value=J,Yi(ge,Z,J),(ue.transform===fl||ue.transform===st)&&sf(ge),Z==="origin"&&Pe)pe(ge);else if(Pe&&(ge.uniforms.origin?.value??"center")!=="center"){let dt=rp(Pe,Ne),xt=!!Pe.computeBounds||(dt?.sizeProps.has(Z)??!1),Vt=dt?.positionProps.has(Z)??!1;xt&&!Vt&&pe(ge)}if(Z==="shape"&&Fp(),zs()&&Ls(),ue.compileTime){li();return}if(ue.compileTimeWhen){let dt=ue._lastCompiledValue;if(ue.compileTimeWhen(dt,J)){ue._lastCompiledValue=J,li();return}}pa()},pf=(X,Z)=>{let J=u.get(X);if(!J){Fd({id:X,kind:"metadata",metadata:Z});return}let ge=!1;if(Z.blendMode!==void 0&&J.metadata.blendMode!==Z.blendMode&&(J.metadata.blendMode=Z.blendMode,ge=!0),Z.opacity!==void 0&&J.metadata.opacity!==Z.opacity){let ue=J.metadata.opacity??1,Pe=Z.opacity;J.metadata.opacity=Pe,or(J,"_opacity",Pe),ue>=1!=Pe>=1&&(ge=!0)}if(Z.renderOrder!==void 0&&J.metadata.renderOrder!==Z.renderOrder&&(J.metadata.renderOrder=Z.renderOrder,ge=!0),"visible"in Z){let ue=Z.visible!==!1;J.metadata.visible!==ue&&(J.metadata.visible=ue,ge=!0)}if(Z.id!==void 0){let ue=xr(Z.id);J.metadata.id!==ue&&(J.metadata.id=ue,ge=!0)}if("mask"in Z&&(J.metadata.mask?.source!==Z.mask?.source||J.metadata.mask?.type!==Z.mask?.type)&&(J.metadata.mask=Z.mask,ge=!0),"maps"in Z&&JSON.stringify(J.metadata.maps)!==JSON.stringify(Z.maps)){let ue=J.metadata.maps,Pe=Z.maps;if(J.metadata.maps=Pe,Fp(),(()=>{if(!ue||!Pe)return!0;let Ne=Object.keys(ue),dt=Object.keys(Pe);if(Ne.length!==dt.length||!Ne.every(xt=>xt in Pe))return!0;for(let xt of dt){let Vt=ue[xt],Qs=Pe[xt];if(Vt.type!==Qs.type)return!0;if(Qs.type==="map"){let Ar=Vt,ir=Qs;if(Ar.source!==ir.source||Ar.channel!==ir.channel)return!0}else if(Qs.type==="mouse"&&Vt.axis!==Qs.axis)return!0}return!1})()){if(ue&&Pe)for(let Ne of Object.keys(ue))Ne in Pe&&ue[Ne].type!==Pe[Ne].type&&(delete J.mouseDriverState[Ne],delete J.autoAnimateState[Ne],delete J.mapValues[Ne]);ge=!0}else if(Pe)for(let[Ne,dt]of Object.entries(Pe)){let xt=gn(J,Ne,dt);dt.type==="map"&&(or(J,`_map_${Ne}_inputMin`,xt.inputMin),or(J,`_map_${Ne}_inputMax`,xt.inputMax),or(J,`_map_${Ne}_outputMin`,xt.outputMin),or(J,`_map_${Ne}_outputMax`,xt.outputMax),or(J,`_map_${Ne}_curve`,xt.curve))}}if(Z.transform!==void 0){let ue=J.metadata.transform,Pe={offsetX:Z.transform.offsetX??ue?.offsetX??0,offsetY:Z.transform.offsetY??ue?.offsetY??0,rotation:Z.transform.rotation??ue?.rotation??0,scale:Z.transform.scale??ue?.scale??1,anchorX:Z.transform.anchorX??ue?.anchorX??.5,anchorY:Z.transform.anchorY??ue?.anchorY??.5,edges:Z.transform.edges??ue?.edges??"transparent"},Ne=na(J);J.metadata.transform=Pe;let dt=Zi(Pe);if(Ne!==dt||ue&&ue.edges!==Pe.edges)ge=!0;else if(dt)for(let[xt,Vt]of Object.entries(Be(J)))or(J,`_xform_${xt}`,Vt)}if(Z.boundingBox!==void 0&&Z.boundingBox!==null&&J.boundingBoxDeclaration!==void 0){let ue=Je(J);J.metadata.boundingBox=Z.boundingBox;let Pe=Je(J);if(ue!==Pe)ge=!0;else if(Pe){let Ne=Le(J);if(Ne)for(let[dt,xt]of Object.entries(Ne))or(J,`_bbox_${dt}`,xt)}}else Z.boundingBox===null&&J.metadata.boundingBox!==void 0&&(J.metadata.boundingBox=void 0,ge=!0);if("flow"in Z&&JSON.stringify(J.metadata.flow)!==JSON.stringify(Z.flow)){let ue=J.metadata.flow?.mode==="column"||J.metadata.flow?.mode==="row";J.metadata.flow=Z.flow??void 0;let Pe=J.metadata.flow?.mode==="column"||J.metadata.flow?.mode==="row";if(ue&&!Pe){let Ne=dt=>{for(let xt of rr(dt))pe(xt),Ne(xt.id)};Ne(X)}Ls()}"absolute"in Z&&J.metadata.absolute!==Z.absolute&&(J.metadata.absolute=Z.absolute,Z.absolute&&pe(J),Ls()),zs()&&Ls(),ge?li():pa()},Dp=X=>{let Z=u.get(X);if(!Z)return;for(let ge of rr(X))Dp(ge.id);p===X&&(p=null);let J=_.get(Z.parentId);J&&(J.delete(X),J.size===0&&_.delete(Z.parentId)),u.delete(X),Fp(),li(),zs()&&Ls()},Lp=()=>{let X=_s.deltaTime;oe=xB(le,oe,X,performance.now());for(let Z of u.values()){let J=Z.metadata.maps??{};for(let ge in Z.mouseDriverState){let ue=Z.mouseDriverState[ge],Pe=cy(Z,ge);if(Pe){if(Pe.type==="mouse-position"){let Ne=Pe.smoothing??0,dt=Pe.momentum??0,xt=Pe.x===void 0||Pe.x==="mouse",Vt=Pe.y===void 0||Pe.y==="mouse";!ue.pointerSnapped&&Ae&&(ue.pointerSnapped=!0,xt&&(ue.currentX=we,ue.velocityX=0),Vt&&(ue.currentY=de,ue.velocityY=0));let Qs,Ar;if(xt){let[Nn,Wd]=A_(ue.currentX,ue.velocityX,we,Ne,dt,X);ue.currentX=Nn,ue.velocityX=Wd,Qs=Nn}else Qs=Pe.x,ue.velocityX=0;if(Vt){let[Nn,Wd]=A_(ue.currentY,ue.velocityY,de,Ne,dt,X);ue.currentY=Nn,ue.velocityY=Wd,Ar=Nn}else Ar=Pe.y,ue.velocityY=0;let ir=Pe.reach??1,es=Pe.originX??.5,Uo=Pe.originY??.5,Vn=Pe.invertX?-1:1,Ra=Pe.invertY?-1:1,ma=es+Vn*(Qs-es)*ir,yn=Uo+Ra*(Ar-Uo)*ir,Rc=ma,Ip=yn,vf=Z.metadata.boundingBox;if(vf&&Z.boundingBoxDeclaration?.supportsResizeFit&&Je(Z)){let Nn=GA(vf,q(),Y()),Wd=m4(ma,yn,{centerX:Nn.centerX,centerY:Nn.centerY,halfWidthUV:Nn.halfWidthUV,halfHeightUV:Nn.halfHeightUV,rotationDeg:Nn.rotation,aspectRatio:De()});Rc=Wd.x,Ip=Wd.y}ue.liveX=Rc,ue.liveY=Ip;let E5=Z._liveHandles?.[`_smoothed_${ge}`];E5 instanceof si&&E5.setComponents(Rc,1-Ip)}else if(Pe.type==="mouse"){let Ne=Pe.smoothing??0,dt=Pe.momentum??0,xt=Pe.axis==="x"?we:de;!ue.pointerSnapped&&Ae&&(ue.pointerSnapped=!0,ue.currentX=Math.max(.001,xt),ue.velocityX=0);let[Vt,Qs]=A_(ue.currentX,ue.velocityX,xt,Ne,dt,X);ue.currentX=Vt,ue.velocityX=Qs;let Ar=Math.max(.001,Vt),ir=Z.mapValues[ge],es=ir?ir.outputMin+(ir.outputMax-ir.outputMin)*Math.pow(Ar,Math.pow(2,-ir.curve*2)):Ar;ue.liveScalar=es,or(Z,`_smoothed_${ge}`,es)}}}for(let[ge,ue]of Object.entries(Z.uniforms))ue._listSpec&&O3(ue._rawList,ue._listSpec)&&zp(Z,ge);for(let ge in Z.autoAnimateState){let ue=J[ge];if(!ue||ue.type!=="auto-animate")continue;let Pe=oe*(ue.speed??1)*.2,Ne,dt=ue.easing??ue.waveform??"sine";if(ue.mode==="loop")Ne=i3((Pe%1+1)%1,dt);else{let es=(Pe%1+1)%1;Ne=i3(es<.5?es*2:(1-es)*2,dt)}let xt=Z.mapValues[ge],Vt=xt?xt.outputMin:Ie(Z,ge,ue.outputMin),Qs=xt?xt.outputMax:Ie(Z,ge,ue.outputMax),Ar=Vt+Ne*(Qs-Vt),ir=Z.uniforms[ge];if(ir?.compileTimeWhen){let es=ir._lastCompiledValue;ir.compileTimeWhen(es,Ar)&&(ir._lastCompiledValue=Ar,li())}or(Z,`_smoothed_${ge}`,Ar)}}},Up=()=>{let X=_s.deltaTime;for(let Z of u.values()){let J=Z.definition.animatedTime;if(J){let ue=Z.uniforms[J.speed],Pe=ue&&Number(ue.value)||0,Ne=Ud(Gd(Z));Ne.advance(X,Pe),or(Z,"_animTime",Ne.value)}let ge=Z.definition.extraAnimatedTimes;if(ge)for(let[ue,Pe]of Object.entries(ge)){let Ne=Z.uniforms[Pe],dt=Ne&&Number(Ne.value)||0,xt=Ud(Bp(Z,Pe));xt.advance(X,dt),or(Z,`_animTime_${ue}`,xt.value)}}},Op=(X,Z)=>bB(X,Z,{maxTextureDim:k,pixelRatio:L,viewportWidth:typeof window<"u"?window.innerWidth:X,viewportHeight:typeof window<"u"?window.innerHeight:Z}),zc=()=>{let X=(typeof window<"u"?window.devicePixelRatio:1)||1;return Math.min(X,aB())},Id=(X,Z,J,ge)=>{if(F&&X===C&&Z===E&&J===z&&ge===U){let{width:dt,height:xt}=Wi();if(!a||a.width===dt&&a.height===xt)return}C=X,E=Z,z=J,U=ge,G3(J,ge),F||(F=!0,u.size>0&&li());let{width:ue,height:Pe}=Wi();a&&(a.width=ue,a.height=Pe);let Ne=!1;for(let dt of y)dt.passManager.resize(ue,Pe)&&(Ne=!0);for(let dt of y)for(let xt of dt.ir.onResize)try{xt({width:ue,height:Pe})}catch(Vt){wr("[gpu] composition onResize error:",Vt)}for(let dt of u.values()){if(na(dt)&&or(dt,"_xform_aspectRatio",De()),Je(dt)){let xt=Le(dt);if(xt)for(let[Vt,Qs]of Object.entries(xt))or(dt,`_bbox_${Vt}`,Qs)}pe(dt)}if($o(),Ne)for(let dt of y)w5(dt.store),dt.store.flush(),dt.passManager.repaintRtt();se=0,Gp()},Yd=(X,Z)=>{X<=0||Z<=0||X===D&&Z===O||(D=X,O=Z,qe={width:X,height:Z},!Ve&&typeof requestAnimationFrame=="function"&&(Ve=!0,requestAnimationFrame(()=>{if(Ve=!1,!qe)return;let J=qe;qe=null;let{width:ge,height:ue}=Op(J.width,J.height);Id(ge,ue,J.width,J.height)})))},hy=X=>{let Z=X[0];if(!Z)return;let J,ge;if(Z.contentBoxSize){let ue=Array.isArray(Z.contentBoxSize)?Z.contentBoxSize[0]:Z.contentBoxSize;ue?(J=Math.round(ue.inlineSize),ge=Math.round(ue.blockSize)):(J=Math.round(Z.contentRect.width),ge=Math.round(Z.contentRect.height))}else J=Math.round(Z.contentRect.width),ge=Math.round(Z.contentRect.height);J===0||ge===0||Yd(J,ge)},mf=X=>{let Z=X[0];Z&&($=Z.isIntersecting)},A5=()=>i&&!!t&&!!s&&C>0&&E>0,w5=X=>{let Z=X.systemHandles,{width:J,height:ge}=Wi(),ue=zc(),Pe=(Ne,dt)=>{let xt=Z[Ne];xt instanceof si&&(xt.value=dt)};Pe("time",oe),Pe("viewportSize",[J,ge]),Pe("logicalViewportSize",[q()*ue,Y()*ue]),Pe("aspect",J/Math.max(1,ge)),Pe("pointer",[we,de]),Pe("pointerActive",xe?1:0)},T5=X=>{for(let Z of X)try{Z(_s)}catch(J){wr("[gpu] render callback error:",J)}},S5=X=>{if(Ft||!A5())return;let Z=performance.now(),J;if(X!==void 0)J=X;else{let Ne=AB(Z,{lastRenderTime:se,isVisible:$,forceFullFrameRate:Q,minInterval:ee});if(!Ne.render)return;J=Ne.deltaTime}se=Z,Qe&&performance.mark("shader-cpu-start");let ge=we>-5;_s.deltaTime=J,_s.pointer.x=ge?we:.5,_s.pointer.y=ge?de:.5,_s.pointer.seen=Ae,_s.pointerActive=xe,_s.dimensions.width=C,_s.dimensions.height=E;let ue=null,Pe=null;try{wB({updateDrivers:()=>{Lp(),Up(),Dt(),eo()},ensureComposition:()=>((P||A===null)&&(A=nf(),P=!1),A===null?!1:(ue=g.getOrBuild(A,()=>lf(A)),vy(ue),!!b)),beforeRender:()=>T5(b.ir.onBeforeRender),flush:()=>{w5(b.store),b.store.flush()},render:()=>{if(Qe&&performance.mark("shader-gpu-start"),Pe=g.renderValue??ue,Pe?.broken)return!1;let Ne=Pe,dt=Ne&&Ne.validationFrames>0&&Ne.ir.usesCustomWgsl?t?.device:void 0;dt&&dt.pushErrorScope("validation");try{Ne?.passManager.render(s,_s,()=>b?.store.flush())}finally{dt&&Ne&&(Ne.validationFrames--,dt.popErrorScope().then(xt=>{xt&&!Ne.broken&&Rp(Ne,xt.message)}).catch(()=>{}))}if(Qe){performance.mark("shader-gpu-end");try{performance.measure("shader-gpu-time","shader-gpu-start","shader-gpu-end");let xt=performance.getEntriesByName("shader-gpu-time")[0];xt&&us.recordGpuTime(xt.duration),performance.clearMeasures("shader-gpu-time"),performance.clearMarks("shader-gpu-start"),performance.clearMarks("shader-gpu-end")}catch{}}},markReady:()=>{g.markReady(A),St&&!ht&&(ht=!0,St=!1,vt&&queueMicrotask(vt))},afterRender:()=>T5((Pe??b).ir.onAfterRender)}),ds=0}catch(Ne){yW(Ne);return}if(Qe){performance.mark("shader-cpu-end");try{performance.measure("shader-cpu-time","shader-cpu-start","shader-cpu-end");let Ne=performance.getEntriesByName("shader-cpu-time")[0];Ne&&us.recordCpuTime(Ne.duration),performance.clearMarks("shader-cpu-start"),performance.clearMarks("shader-cpu-end"),performance.clearMeasures("shader-cpu-time")}catch{}}us.recordFrame(performance.now()-Z)},Gp=()=>S5(void 0),uW=async X=>{if(Ft)return;if(!A5())throw new Error("Renderer is not ready");let Z=js.running;Z&&_f(),se=0,Gp(),t&&X?.waitForGpu!==!1&&await l3(t),Z&&gy()},pW=async(X,Z)=>{S5(X),t&&Z?.waitForGpu!==!1&&await l3(t)},gy=()=>{Ft||js.running||!V||(us.setRendering(!0),js.start())},_f=()=>{js.running&&(js.stop(),us.setRendering(!1))},ff=X=>{if(!a)return;Re=a.getBoundingClientRect();let Z,J;if("touches"in X){if(X.touches.length===0)return;Z=X.touches[0].clientX,J=X.touches[0].clientY}else Z=X.clientX,J=X.clientY;we=(Z-Re.left)/Re.width,de=(J-Re.top)/Re.height,Ae=!0},mW=X=>{!i||!a||(ff(X),xe=!0,pa())},_W=X=>{!i||!a||(ff(X),xe=!0,pa())},fW=()=>{i&&(xe=!1,pa())},vW=()=>{i&&(xe=!1,pa())},P5=(X,Z)=>{if(!i||!a)return!1;let J=a.getBoundingClientRect();return J.width===0||J.height===0?!1:X>=J.left&&X<=J.right&&Z>=J.top&&Z<=J.bottom},hW=X=>{X.button===0&&P5(X.clientX,X.clientY)&&(xe=!0,ff(X),pa())},gW=X=>{X.touches.length!==0&&P5(X.touches[0].clientX,X.touches[0].clientY)&&(xe=!0,ff(X),pa())},Fp=()=>{let X=!1;for(let Z of u.values()){if(Z.usesPointer){X=!0;break}if(p1e(Z.uniforms?.shape?.value)||dy(Z)){X=!0;break}if(Z.metadata.maps){for(let J of Object.values(Z.metadata.maps))if(J&&typeof J=="object"&&"type"in J){let ge=J.type;if(ge==="mouse"||ge==="mouse-position"){X=!0;break}}if(X)break}}X&&!Me?(Me=!0,!ze&&a&&(ze=u1e.register({onMouseMove:mW,onTouchMove:_W,onMouseDown:hW,onTouchStart:gW,onMouseUp:fW,onTouchEnd:vW}))):!X&&Me&&(Me=!1,ze&&(ze(),ze=null))},C5=()=>{if(f.length===0)return;let X=[...f];f=[];for(let J of X)df(J.id,J.definition.fragment,J.parentId,J.metadata,J.uniforms,J.definition,J.domCanvas);let Z=v;v=[];for(let J of Z)J.kind==="uniform"?uf(J.id,J.name,J.value):pf(J.id,J.metadata)},El=(X,Z)=>{if(!Ft){Ft=X,R5(X),wr(`[gpu] renderer stopped (${X}):`,Z);try{yy()}catch(J){wr("[gpu] cleanup during failure threw:",J)}if(!os&&Qt){os=!0;let J=Qt;queueMicrotask(()=>{try{J(X,Z)}catch(ge){wr("[gpu] onUnavailable callback threw:",ge)}})}}},yW=X=>{if(Ay(X)){El(X.reason,X);return}ds++,ds===1&&gf("[gpu] render error:",X),ds>=d1e&&El("render-failed",X)},bW=X=>{!X||typeof X.addEventListener!="function"||(M5(),cs=X,ss=Z=>{try{Z.preventDefault()}catch{}let J=Z.error;if(gf("[gpu] uncaptured device error (a custom WGSL body that fails to compile reports here \u2014 read the message for the line):",J),typeof GPUOutOfMemoryError<"u"&&J instanceof GPUOutOfMemoryError){El("out-of-memory",J);return}if(typeof GPUInternalError<"u"&&J instanceof GPUInternalError){El("gpu-error",J);return}Ss++,Ss>=c1e&&El("gpu-error",J)},X.addEventListener("uncapturederror",ss))},M5=()=>{if(cs&&ss)try{cs.removeEventListener("uncapturederror",ss)}catch{}cs=null,ss=null},xW=X=>{if(!Rt){Rt=!0;try{_f()}catch{}if(Mt){let Z=Mt;queueMicrotask(()=>{try{Z(X)}catch(J){wr("[gpu] onDeviceLost callback threw:",J)}});return}El("device-lost",X)}},AW=async X=>{if(X.context!==void 0)throw new Error("[gpu] initialize({ context }) is not supported \u2014 this renderer is WebGPU-only. Remove the WebGL `context` option.");if(Ft)return;let Z=D5();if(Z){El(Z);return}if(i||l)return;let{canvas:J,resizeTarget:ge,enablePerformanceTracking:ue=!1,colorSpace:Pe="p3-linear",toneMapping:Ne="linear",gpu:dt,forceFullFrameRate:xt=!1,observeElement:Vt=!0,timeOrigin:Qs}=X;Qs!=null&&(le=Qs),Qe=ue,Q=xt,rt=Pe,pt=Ne,aa(),l=!0,d=new AbortController;let Ar=d;try{if(lt=iz,lt(Pe),Ar.signal.aborted||(a=J,e=await Wfe({device:dt?.device,adapter:dt?.adapter,onDeviceLost:yn=>xW(yn.message||yn.reason||"unknown")}),Ar.signal.aborted))return;t=e.root,bW(t.device),L=zc();let ir=t.device.limits?.maxTextureDimension2D;typeof ir=="number"&&ir>0&&(k=ir),r=Zfe(t),o=x4(t),typeof window<"u"&&(Ce=()=>yy(),window.addEventListener("beforeunload",Ce),Te=()=>{if(D>0&&O>0){let yn=D,Rc=O;D=0,O=0,Yd(yn,Rc)}},window.addEventListener("resize",Te,{passive:!0}));let es=J.getBoundingClientRect();Re=es,$=!Vt||es.width>0&&es.height>0&&es.top<window.innerHeight&&es.bottom>0&&es.left<window.innerWidth&&es.right>0,V=!0;let Uo=es.width>0?es.width:J.width,Vn=es.height>0?es.height:J.height,Ra=Math.round(Uo),ma=Math.round(Vn);if(Ra>0&&ma>0){D=Ra,O=ma;let{width:yn,height:Rc}=Op(Ra,ma);C=yn,E=Rc,z=Ra,U=ma,F=!0,G3(Ra,ma);let{width:Ip,height:vf}=Wi();J.width=Ip,J.height=vf}else F=!1;if(s=Nfe(t,J),Vt&&typeof ResizeObserver<"u"){let yn=ge??J.parentElement;yn?(Ye=new ResizeObserver(hy),Ye.observe(yn)):console.warn("[gpu] no element available for resize observation \u2014 use resize() manually"),typeof IntersectionObserver<"u"&&(ke=new IntersectionObserver(mf,{threshold:0,rootMargin:"128px"}),ke.observe(J))}if(Ar.signal.aborted)return;i=!0,c=!0,C5(),C>0&&E>0&&Gp(),V&&gy()}catch(ir){let es=Ay(ir)?ir.reason:"init-failed";l=!1,d===Ar&&(d=null),El(es,ir);return}finally{l=!1,d===Ar&&(d=null)}},yy=()=>{d&&d.abort(),Ye&&(Ye.disconnect(),Ye=null),ke&&(ke.disconnect(),ke=null),ze&&(ze(),ze=null),Ce&&typeof window<"u"&&(window.removeEventListener("beforeunload",Ce),Ce=null),Te&&typeof window<"u"&&(window.removeEventListener("resize",Te),Te=null),re!==null&&typeof cancelAnimationFrame=="function"&&(cancelAnimationFrame(re),re=null),_f(),M5(),Ks?.(),Ks=null,typeof document<"u"&&document.fonts?.removeEventListener&&document.fonts.removeEventListener("loadingdone",hn);try{e?.release?.()}catch{}g.clear();for(let X of[...y])cf(X);b=null;try{r?.destroy()}catch{}try{e?.createdDevice&&t?.destroy()}catch{}u.clear(),p=null,_.clear(),f=[],v=[],c=!1,qe=null,Ve=!1,a=null,s=null,r=null,o=null,t=null,e=null,i=!1,l=!1,F=!1,d=null,C=0,E=0,z=0,U=0,A=null,P=!0,$=!1,V=!0,we=-10,de=-10,xe=!1,Ae=!1,Me=!1,vt=null,ht=!1,St=!1,Mt=null,Rt=!1,Ss=0,ds=0};return{initialize:AW,cleanup:yy,registerNode:df,removeNode:Dp,updateUniformValue:uf,updateNodeMetadata:pf,isInitialized:()=>i,resize:(X,Z)=>{t&&Yd(X,Z)},startAnimation:gy,stopAnimation:_f,renderAndWait:uW,renderSyntheticFrame:pW,getPerformanceStats:()=>{let X=Math.max(0,u.size-1),Z=b?b.ir.rttPasses.length:0;us.updateNodeCounts(X,Z);let J={render:{calls:b?b.passManager.passCount:0},programs:{length:g.size},memory:{textures:r?r.textureCount:0}};return us.getStats(J)},getLiveDriverValue:(X,Z)=>{let J=u.get(X)?.mouseDriverState?.[Z];return!J||J.liveX===void 0||J.liveY===void 0?null:{x:J.liveX,y:J.liveY}},getLiveScalarValue:(X,Z)=>{let J=u.get(X);if(!J)return null;let ge=J.metadata.maps?.[Z];if(ge?.type==="auto-animate"){let ue=J._liveHandles?.[`_smoothed_${Z}`],Pe=ue instanceof si?ue.value:void 0;return typeof Pe=="number"?Pe:null}return ge?.type==="mouse"?J.mouseDriverState[Z]?.liveScalar??null:null},getNodeRegistry:()=>({nodes:new Map(u)}),getRendererType:()=>"webgpu",getInternalRenderer:()=>t?{device:t.device,adapter:e?.adapter,root:t}:null,setForceFullFrameRate:X=>{let Z=Q;return Q=X,Z},beginRecordingResolution:(X,Z,J)=>{if(!t||X<=0||Z<=0)return()=>{};let ge=L,ue=C,Pe=E,Ne=z,dt=U,xt=D,Vt=O;return L=J,Id(X,Z,X,Z),()=>{t&&(L=ge,Id(ue,Pe,Ne,dt),D=xt,O=Vt)}},setResolutionScale:X=>{if(!t)return;let Z=Math.max(.05,Math.min(X,1)),J=Math.max(.01,zc()*Z);if(Math.abs(L-J)<.001)return;L=J;let ge=z||C,ue=U||E;if(ge<=0||ue<=0)return;let{width:Pe,height:Ne}=Op(ge,ue);Id(Pe,Ne,ge,ue)},setFrameRateCap:X=>{ee=X&&X>0?1e3/Math.max(X,10)-1:0},setTimeOrigin:X=>{le=X},setOnReady:X=>{vt=X,X&&ht&&queueMicrotask(X)},setOnDeviceLost:X=>{Mt=X},setOnUnavailable:X=>{if(Qt=X,X&&Ft&&!os){os=!0;let Z=Ft;queueMicrotask(()=>{try{X(Z)}catch(J){wr("[gpu] onUnavailable callback threw:",J)}})}},getFailureReason:()=>Ft,__testing:{needsTransformation:Zi,findChildNodes:rr,buildFieldInits:X=>{let Z=u.get(X);return Z?J_(Z):null},ensureDriverState:X=>{let Z=u.get(X);Z&&kp(Z)},stepMouseDrivers:X=>{_s.deltaTime=X,Lp()},stepAnimatedTime:X=>{_s.deltaTime=X,Up()},getAnimatedTimeValue:X=>{let Z=u.get(X);return Z?.definition.animatedTime?Ud(Gd(Z)).value:null},writeExtraField:(X,Z,J)=>{let ge=u.get(X);ge&&ef(ge,Z,J)},readExtraField:(X,Z)=>{let J=u.get(X)?._liveHandles?.[Z];return J instanceof si?J.value:void 0},getNodeRegistry:()=>({nodes:u,rootId:p,parentToChildren:_}),getParentToChildren:()=>_,getPendingRegistrations:()=>[...f],getFrameDiagnostics:()=>({deltaTime:_s.deltaTime,pointerX:we,pointerY:de,pointerActive:xe,globalElapsedTime:oe,lastRenderTime:se,isVisible:$,forceFullFrameRate:Q,sharedTimeOrigin:le,animating:js.running,mouseListenersNeeded:Me}),computeStructuralHash:nf,isStructuralDirty:()=>P,clearStructuralDirty:()=>{P=!1},setTestReady:X=>{i=!0,c=!0,X&&(C=X.width,E=X.height,z=X.width,U=X.height,F=!0),C5()}}}}var Od={samplingRate:.05,collectionDuration:5e3,warmupDuration:500,sampleInterval:500,apiEndpoint:"https://shaders.com/api/telemetry"};function m1e(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 _1e(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 f1e(){if(typeof window>"u"||typeof navigator>"u")return{domain:"unknown",browserFamily:"unknown",deviceType:"unknown"};let e=navigator.userAgent;return{domain:window.location.hostname,browserFamily:m1e(e),deviceType:_1e(e)}}var v1e=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(Od.warmupDuration),this.stopped||(this.sampleInterval=setInterval(()=>{if(!this.stopped)try{let e=this.renderer.getPerformanceStats();this.frameSamples.push(e)}catch(e){wr("Telemetry sampling error:",e)}},Od.sampleInterval),await this.sleep(Od.collectionDuration-Od.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){wr("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=f1e();return{sessionId:this.sessionId,timestamp:Date.now(),collectionDuration:Od.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 wr("Failed to extract components:",e),[]}}async sendTelemetry(e){try{let t=await fetch(Od.apiEndpoint,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});t.ok||bn("Telemetry send failed:",t.status,t.statusText)}catch(t){wr("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 h1e(e=!1,t=!1){return e||typeof navigator<"u"&&navigator.doNotTrack==="1"?!1:t?!0:Math.random()<Od.samplingRate}function iW(e,t,s=!1,r=!1){return h1e(s,r)?new v1e(e,t,r?"preview":"shader"):null}function lW(){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 y5(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 cW=new Set(["opacity","blendMode","visible","transform","boundingBox","maskSource","maskType","flow","absolute"]);async function b5(e,t,s){let r=new Map;ny().forEach(k=>{r.set(k.definition.name,k.definition);for(let D of k.definition.deprecatedNames??[])r.set(D,k.definition)});for(let k of s?.components??[])r.set(k.name,k);if(!e.style.width||!e.style.height){let k=e.getBoundingClientRect(),D=k.width>0?k.width:e.width,O=k.height>0?k.height:e.height;D>0&&!e.style.width&&(e.style.width=`${D}px`),O>0&&!e.style.height&&(e.style.height=`${O}px`)}function o(k){return{...k,props:k.props?{...k.props}:void 0,children:k.children?.map(o)}}let a={...t,components:t.components.map(o)},i=null,l=!1,c=!1,d=3,u=6e4,p=0,_=0,f=null;function v(k){try{s?.onError?.(k)}catch(D){wr("[createShader] onError callback threw:",D)}}let g=!1;function y(k){g||(g=!0,f=k,v(k))}function b(k,D,O,F,q){let Y=r.get(O.type)??b2(O.type);if(!Y){console.warn(`[createShader] Unknown component type: ${O.type}`);return}let V=O.id||`${O.type}_${Date.now()}_${Math.random().toString(36).slice(2,9)}`,$={};for(let[ee,oe]of Object.entries(O.props||{}))!cW.has(ee)&&Object.prototype.hasOwnProperty.call(Y.props,ee)&&y5(oe)&&($[ee]=oe);let Q=q3(Y,Object.fromEntries(Object.entries(Y.props).map(([ee,oe])=>{let le=O.props?.[ee]!==void 0?O.props[ee]:oe.default;return[ee,y5(le)?oe.default:le]})),V),se={blendMode:O.props?.blendMode||"normal",opacity:O.props?.opacity,visible:O.props?.visible,renderOrder:q,id:O.id,maps:Object.keys($).length>0?{...$}:void 0,mask:O.props?.maskSource?{source:O.props.maskSource,type:O.props.maskType||"alpha"}:void 0,transform:O.props?.transform?{offsetX:0,offsetY:0,rotation:0,scale:1,anchorX:.5,anchorY:.5,edges:"transparent",...O.props.transform}:void 0,boundingBox:kh(O.props?.boundingBox),flow:O.props?.flow,absolute:O.props?.absolute};k.registerNode(V,Y.fragment,F,se,Q,Y),D.set(V,{componentDef:Y,uniforms:Q,nodeId:V,component:O,currentMaps:{...$}}),O.children?.forEach((ee,oe)=>{b(k,D,ee,V,oe)})}async function A(){let k=nW(),D=new Map;s?.onReady&&k.setOnReady(s.onReady),k.setOnUnavailable(q=>{l||y(q)}),await k.initialize({canvas:e,resizeTarget:e,enablePerformanceTracking:s?.enablePerformanceTracking||!1,colorSpace:s?.colorSpace,toneMapping:s?.toneMapping,observeElement:s?.observeElement,gpu:s?.gpu});let O={renderer:k,nodeEntryMap:D,telemetryCollector:null,telemetryStartTimeout:null};k.setOnDeviceLost(q=>{if(l||c||f||i!==null&&i!==O)return;c=!0,v(q);let Y=Date.now();if(Y-_>u&&(p=0),_=Y,++p>d){P(O),i=null,c=!1,y("unrecoverable");return}(async()=>{try{if(P(O),i=null,l)return;let V=await A();if(l){P(V);return}i=V}catch(V){wr("[createShader] rebuild after device loss failed:",V),y("rebuild_failed")}finally{c=!1}})()});let F="shader-root";if(k.registerNode(F,Hh.fragment,null,null,{},Hh),a.components.forEach((q,Y)=>{b(k,D,q,F,Y)}),lW()){let Y=0,V=()=>{if(l||f||i!==O||++Y>40){O.telemetryStartTimeout=null;return}k.getPerformanceStats().fps>0?(O.telemetryCollector=iW(k,"4.0.1",s?.disableTelemetry||!1,!1),O.telemetryCollector&&O.telemetryCollector.start(),O.telemetryStartTimeout=null):O.telemetryStartTimeout=setTimeout(V,500)};O.telemetryStartTimeout=setTimeout(V,500)}return O}function P(k){if(k.telemetryCollector){try{k.telemetryCollector.stop()}catch{}k.telemetryCollector=null}k.telemetryStartTimeout!==null&&(clearTimeout(k.telemetryStartTimeout),k.telemetryStartTimeout=null);try{k.renderer.cleanup()}catch{}}i=await A();function C(k,D){if(!i)return;let{renderer:O,nodeEntryMap:F}=i,q=F.get(k);if(!q){console.warn(`[createShader] Component ID not found: ${k}`);return}q.component.props||(q.component.props={});let Y=q.component.props;for(let[V,$]of Object.entries(D))if(cW.has(V))if(V==="maskSource")O.updateNodeMetadata(q.nodeId,{mask:$?{source:$,type:D.maskType||Y.maskType||"alpha"}:void 0}),Y.maskSource=$,"maskType"in D&&(Y.maskType=D.maskType);else{if(V==="maskType")continue;V==="transform"?(O.updateNodeMetadata(q.nodeId,{transform:$}),Y.transform=$):V==="boundingBox"?(O.updateNodeMetadata(q.nodeId,{boundingBox:kh($)}),Y.boundingBox=$):(O.updateNodeMetadata(q.nodeId,{[V]:$}),Y[V]=$)}else y5($)?Object.prototype.hasOwnProperty.call(q.componentDef.props,V)?(q.currentMaps[V]=$,O.updateNodeMetadata(q.nodeId,{maps:{...q.currentMaps}}),Y[V]=$):console.warn(`[createShader] Ignoring PropDriver for unknown prop "${V}" on ${q.component.type}`):(V in q.currentMaps&&(delete q.currentMaps[V],O.updateNodeMetadata(q.nodeId,{maps:Object.keys(q.currentMaps).length>0?{...q.currentMaps}:void 0})),Object.prototype.hasOwnProperty.call(q.componentDef.props,V)&&(O.updateUniformValue(q.nodeId,V,$),Y[V]=$))}function E(k,D){let O=e.getBoundingClientRect(),F=k??(O.width>0?O.width:e.width),q=D??(O.height>0?O.height:e.height);F>0&&q>0&&(e.style.width=`${F}px`,e.style.height=`${q}px`,i&&i.renderer.resize(F,q))}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:E,pause:U,resume:L,destroy:z,getFailureReason:()=>f}}var g1e="shaders-preview-key";function y1e(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 dW(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=y1e(s,g1e),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 b1e="https://shaders.com",x1e="Unlock your Shaders Pro license",A1e="https://shaders.com/dashboard?pricing=true",w1e=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 T1e(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 w1e.has(o)?`_${o}`:o}function S1e(e){let t=new Set(["style"]),s=new Map;return e?.length&&e.forEach((r,o)=>{if(!r.targets?.length)return;let a=T1e(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 x5(e,t){for(let s of t){if(s.id===e)return s;let r=s.children;if(r?.length){let o=x5(e,r);if(o)return o}}return null}function P1e(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=x5(i.component_id,e);l?.props&&i.prop in l.props&&(l.props[i.prop]=o)}}}async function C1e(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||b1e,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=dW(l.definition),d=Array.isArray(l.key_props)?l.key_props:null,u=S1e(d),p=new Map;for(let A of u.values())for(let P of A.targets??[]){let C=x5(P.component_id,c.components);C?.props&&P.prop in C.props&&p.set(`${P.component_id}:${P.prop}`,C.props[P.prop])}P1e(c.components,t.configuration,u);let _=await b5(e,c,{isPreview:!0,enablePerformanceTracking:!0}),{overlay:f,savedPosition:v,parentEl:g}=M1e(e),y=_.destroy.bind(_),b=_;return b.destroy=()=>{g&&v!==void 0&&(g.style.position=v),f.remove(),y()},b.setConfiguration=A=>{if(d?.length)for(let[P,C]of u){let E=Object.prototype.hasOwnProperty.call(A,P)&&A[P]!==void 0;for(let z of C.targets??[]){let U=E?A[P]:p.get(`${z.component_id}:${z.prop}`);U!==void 0&&_.update(z.component_id,{[z.prop]:U})}}},b}function M1e(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=A1e,r.target="_blank",r.rel="noopener noreferrer",r.textContent=x1e,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 E1e(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 bn("[shaders] createSharedDevice failed; callers should fall back to per-instance device:",t),null}}export{C1e as createPreview,b5 as createShader,E1e as createSharedDevice,Ty as getWebGPUSupport,Yp as isShadersDebug,wy as isWebGPUSupported,k5 as setShadersDebug};
|
package/dist/js/createShader.js
CHANGED
|
@@ -185,7 +185,7 @@ async function createShader(canvas, preset, options) {
|
|
|
185
185
|
return;
|
|
186
186
|
}
|
|
187
187
|
if (renderer.getPerformanceStats().fps > 0) {
|
|
188
|
-
state.telemetryCollector = startTelemetry(renderer, "4.0.
|
|
188
|
+
state.telemetryCollector = startTelemetry(renderer, "4.0.1", options?.disableTelemetry || false, false);
|
|
189
189
|
if (state.telemetryCollector) state.telemetryCollector.start();
|
|
190
190
|
state.telemetryStartTimeout = null;
|
|
191
191
|
} else state.telemetryStartTimeout = setTimeout(checkRendering, 500);
|