@splinetool/loader 0.9.69 → 0.9.72
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/build/SplineLoader.cjs +580 -193
- package/build/SplineLoader.js +580 -193
- package/build/removeOutlineLayers.d.ts +3 -0
- package/package.json +1 -1
package/build/SplineLoader.js
CHANGED
|
@@ -1,133 +1,7 @@
|
|
|
1
|
-
var zm=Object.create;var Sa=Object.defineProperty;var Rm=Object.getOwnPropertyDescriptor;var Fm=Object.getOwnPropertyNames;var Vm=Object.getPrototypeOf,Um=Object.prototype.hasOwnProperty;var jm=(n,t)=>()=>(t||n((t={exports:{}}).exports,t),t.exports),cc=(n,t)=>{for(var e in t)Sa(n,e,{get:t[e],enumerable:!0})},km=(n,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Fm(t))!Um.call(n,o)&&o!==e&&Sa(n,o,{get:()=>t[o],enumerable:!(r=Rm(t,o))||r.enumerable});return n};var Hm=(n,t,e)=>(e=n!=null?zm(Vm(n)):{},km(t||!n||!n.__esModule?Sa(e,"default",{value:n,enumerable:!0}):e,n));var nm=jm((ya,im)=>{(function(n,t){typeof ya=="object"&&typeof im<"u"?t(ya):typeof define=="function"&&define.amd?define(["exports"],t):t((n=typeof globalThis<"u"?globalThis:n||self).SVDJS={})})(ya,function(n){"use strict";n.SVD=function(t,e,r,o,i){if(e=e===void 0||e,r=r===void 0||r,i=1e-64/(o=o||Math.pow(2,-52)),!t)throw new TypeError("Matrix a is not defined");var s,a,l,c,h,p,u,d,m,g,x,y,b=t[0].length,C=t.length;if(C<b)throw new TypeError("Invalid matrix: m < n");for(var S=[],v=[],z=[],w=e==="f"?C:b,f=g=u=0;f<C;f++)v[f]=new Array(w).fill(0);for(f=0;f<b;f++)z[f]=new Array(b).fill(0);var D,L=new Array(b).fill(0);for(f=0;f<C;f++)for(s=0;s<b;s++)v[f][s]=t[f][s];for(f=0;f<b;f++){for(S[f]=u,m=0,l=f+1,s=f;s<C;s++)m+=Math.pow(v[s][f],2);if(m<i)u=0;else for(d=(p=v[f][f])*(u=p<0?Math.sqrt(m):-Math.sqrt(m))-m,v[f][f]=p-u,s=l;s<b;s++){for(m=0,a=f;a<C;a++)m+=v[a][f]*v[a][s];for(p=m/d,a=f;a<C;a++)v[a][s]=v[a][s]+p*v[a][f]}for(L[f]=u,m=0,s=l;s<b;s++)m+=Math.pow(v[f][s],2);if(m<i)u=0;else{for(d=(p=v[f][f+1])*(u=p<0?Math.sqrt(m):-Math.sqrt(m))-m,v[f][f+1]=p-u,s=l;s<b;s++)S[s]=v[f][s]/d;for(s=l;s<C;s++){for(m=0,a=l;a<b;a++)m+=v[s][a]*v[f][a];for(a=l;a<b;a++)v[s][a]=v[s][a]+m*S[a]}}g<(x=Math.abs(L[f])+Math.abs(S[f]))&&(g=x)}if(r)for(f=b-1;0<=f;f--){if(u!==0){for(d=v[f][f+1]*u,s=l;s<b;s++)z[s][f]=v[f][s]/d;for(s=l;s<b;s++){for(m=0,a=l;a<b;a++)m+=v[f][a]*z[a][s];for(a=l;a<b;a++)z[a][s]=z[a][s]+m*z[a][f]}}for(s=l;s<b;s++)z[f][s]=0,z[s][f]=0;z[f][f]=1,u=S[f],l=f}if(e){if(e==="f")for(f=b;f<C;f++){for(s=b;s<C;s++)v[f][s]=0;v[f][f]=1}for(f=b-1;0<=f;f--){for(l=f+1,u=L[f],s=l;s<w;s++)v[f][s]=0;if(u!==0){for(d=v[f][f]*u,s=l;s<w;s++){for(m=0,a=l;a<C;a++)m+=v[a][f]*v[a][s];for(p=m/d,a=f;a<C;a++)v[a][s]=v[a][s]+p*v[a][f]}for(s=f;s<C;s++)v[s][f]=v[s][f]/u}else for(s=f;s<C;s++)v[s][f]=0;v[f][f]=v[f][f]+1}}for(o*=g,a=b-1;0<=a;a--)for(var P=0;P<50;P++){for(D=!1,l=a;0<=l;l--){if(Math.abs(S[l])<=o){D=!0;break}if(Math.abs(L[l-1])<=o)break}if(!D){for(h=0,c=l-(m=1),f=l;f<a+1&&(p=m*S[f],S[f]=h*S[f],!(Math.abs(p)<=o));f++)if(u=L[f],L[f]=Math.sqrt(p*p+u*u),h=u/(d=L[f]),m=-p/d,e)for(s=0;s<C;s++)x=v[s][c],y=v[s][f],v[s][c]=x*h+y*m,v[s][f]=-x*m+y*h}if(y=L[a],l===a){if(y<0&&(L[a]=-y,r))for(s=0;s<b;s++)z[s][a]=-z[s][a];break}for(g=L[l],p=(((x=L[a-1])-y)*(x+y)+((u=S[a-1])-(d=S[a]))*(u+d))/(2*d*x),u=Math.sqrt(p*p+1),p=((g-y)*(g+y)+d*(x/(p<0?p-u:p+u)-d))/g,f=l+(m=h=1);f<a+1;f++){if(u=S[f],x=L[f],d=m*u,u*=h,y=Math.sqrt(p*p+d*d),p=g*(h=p/(S[f-1]=y))+u*(m=d/y),u=-g*m+u*h,d=x*m,x*=h,r)for(s=0;s<b;s++)g=z[s][f-1],y=z[s][f],z[s][f-1]=g*h+y*m,z[s][f]=-g*m+y*h;if(y=Math.sqrt(p*p+d*d),p=(h=p/(L[f-1]=y))*u+(m=d/y)*x,g=-m*u+h*x,e)for(s=0;s<C;s++)x=v[s][f-1],y=v[s][f],v[s][f-1]=x*h+y*m,v[s][f]=-x*m+y*h}S[l]=0,S[a]=p,L[a]=g}for(f=0;f<b;f++)L[f]<o&&(L[f]=0);return{u:v,q:L,v:z}},n.VERSION="1.1.1",Object.defineProperty(n,"__esModule",{value:!0})})});import{FileLoader as M1,Loader as P1}from"three";function hc(n){return Array.isArray(n)?n:[n]}var qm=typeof global=="object"&&global&&global.Object===Object&&global,Sn=qm;var Wm=typeof self=="object"&&self&&self.Object===Object&&self,$m=Sn||Wm||Function("return this")(),Fe=$m;var Jm=Fe.Symbol,nt=Jm;var pc=Object.prototype,Ym=pc.hasOwnProperty,Km=pc.toString,wi=nt?nt.toStringTag:void 0;function Xm(n){var t=Ym.call(n,wi),e=n[wi];try{n[wi]=void 0;var r=!0}catch{}var o=Km.call(n);return r&&(t?n[wi]=e:delete n[wi]),o}var uc=Xm;var Zm=Object.prototype,Qm=Zm.toString;function ef(n){return Qm.call(n)}var dc=ef;var tf="[object Null]",rf="[object Undefined]",mc=nt?nt.toStringTag:void 0;function of(n){return n==null?n===void 0?rf:tf:mc&&mc in Object(n)?uc(n):dc(n)}var vt=of;function nf(n){return n!=null&&typeof n=="object"}var Ze=nf;var sf="[object Symbol]";function af(n){return typeof n=="symbol"||Ze(n)&&vt(n)==sf}var ho=af;function lf(n,t){for(var e=-1,r=n==null?0:n.length,o=Array(r);++e<r;)o[e]=t(n[e],e,n);return o}var wn=lf;var cf=Array.isArray,Ve=cf;var hf=1/0,fc=nt?nt.prototype:void 0,gc=fc?fc.toString:void 0;function yc(n){if(typeof n=="string")return n;if(Ve(n))return wn(n,yc)+"";if(ho(n))return gc?gc.call(n):"";var t=n+"";return t=="0"&&1/n==-hf?"-0":t}var xc=yc;function pf(n){var t=typeof n;return n!=null&&(t=="object"||t=="function")}var Qe=pf;function uf(n){return n}var Nn=uf;var df="[object AsyncFunction]",mf="[object Function]",ff="[object GeneratorFunction]",gf="[object Proxy]";function yf(n){if(!Qe(n))return!1;var t=vt(n);return t==mf||t==ff||t==df||t==gf}var po=yf;var xf=Fe["__core-js_shared__"],Ln=xf;var bc=function(){var n=/[^.]+$/.exec(Ln&&Ln.keys&&Ln.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function bf(n){return!!bc&&bc in n}var vc=bf;var vf=Function.prototype,Sf=vf.toString;function wf(n){if(n!=null){try{return Sf.call(n)}catch{}try{return n+""}catch{}}return""}var pr=wf;var Nf=/[\\^$.*+?()[\]{}|]/g,Lf=/^\[object .+?Constructor\]$/,Cf=Function.prototype,Tf=Object.prototype,Mf=Cf.toString,Pf=Tf.hasOwnProperty,If=RegExp("^"+Mf.call(Pf).replace(Nf,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Of(n){if(!Qe(n)||vc(n))return!1;var t=po(n)?If:Lf;return t.test(pr(n))}var Sc=Of;function Af(n,t){return n?.[t]}var wc=Af;function Df(n,t){var e=wc(n,t);return Sc(e)?e:void 0}var dt=Df;var Bf=dt(Fe,"WeakMap"),Cn=Bf;var Nc=Object.create,Ef=function(){function n(){}return function(t){if(!Qe(t))return{};if(Nc)return Nc(t);n.prototype=t;var e=new n;return n.prototype=void 0,e}}(),Lc=Ef;function _f(n,t,e){switch(e.length){case 0:return n.call(t);case 1:return n.call(t,e[0]);case 2:return n.call(t,e[0],e[1]);case 3:return n.call(t,e[0],e[1],e[2])}return n.apply(t,e)}var Cc=_f;function Gf(n,t){var e=-1,r=n.length;for(t||(t=Array(r));++e<r;)t[e]=n[e];return t}var Tn=Gf;var zf=800,Rf=16,Ff=Date.now;function Vf(n){var t=0,e=0;return function(){var r=Ff(),o=Rf-(r-e);if(e=r,o>0){if(++t>=zf)return arguments[0]}else t=0;return n.apply(void 0,arguments)}}var Tc=Vf;function Uf(n){return function(){return n}}var Mc=Uf;var jf=function(){try{var n=dt(Object,"defineProperty");return n({},"",{}),n}catch{}}(),uo=jf;var kf=uo?function(n,t){return uo(n,"toString",{configurable:!0,enumerable:!1,value:Mc(t),writable:!0})}:Nn,Pc=kf;var Hf=Tc(Pc),Mn=Hf;function qf(n,t){for(var e=-1,r=n==null?0:n.length;++e<r&&t(n[e],e,n)!==!1;);return n}var Ic=qf;var Wf=9007199254740991,$f=/^(?:0|[1-9]\d*)$/;function Jf(n,t){var e=typeof n;return t=t??Wf,!!t&&(e=="number"||e!="symbol"&&$f.test(n))&&n>-1&&n%1==0&&n<t}var Pn=Jf;function Yf(n,t,e){t=="__proto__"&&uo?uo(n,t,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[t]=e}var mo=Yf;function Kf(n,t){return n===t||n!==n&&t!==t}var Lr=Kf;var Xf=Object.prototype,Zf=Xf.hasOwnProperty;function Qf(n,t,e){var r=n[t];(!(Zf.call(n,t)&&Lr(r,e))||e===void 0&&!(t in n))&&mo(n,t,e)}var In=Qf;function eg(n,t,e,r){var o=!e;e||(e={});for(var i=-1,s=t.length;++i<s;){var a=t[i],l=r?r(e[a],n[a],a,e,n):void 0;l===void 0&&(l=n[a]),o?mo(e,a,l):In(e,a,l)}return e}var Tt=eg;var Oc=Math.max;function tg(n,t,e){return t=Oc(t===void 0?n.length-1:t,0),function(){for(var r=arguments,o=-1,i=Oc(r.length-t,0),s=Array(i);++o<i;)s[o]=r[t+o];o=-1;for(var a=Array(t+1);++o<t;)a[o]=r[o];return a[t]=e(s),Cc(n,this,a)}}var On=tg;function rg(n,t){return Mn(On(n,t,Nn),n+"")}var Ac=rg;var og=9007199254740991;function ig(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=og}var An=ig;function ng(n){return n!=null&&An(n.length)&&!po(n)}var Cr=ng;function sg(n,t,e){if(!Qe(e))return!1;var r=typeof t;return(r=="number"?Cr(e)&&Pn(t,e.length):r=="string"&&t in e)?Lr(e[t],n):!1}var Dc=sg;function ag(n){return Ac(function(t,e){var r=-1,o=e.length,i=o>1?e[o-1]:void 0,s=o>2?e[2]:void 0;for(i=n.length>3&&typeof i=="function"?(o--,i):void 0,s&&Dc(e[0],e[1],s)&&(i=o<3?void 0:i,o=1),t=Object(t);++r<o;){var a=e[r];a&&n(t,a,r,i)}return t})}var Bc=ag;var lg=Object.prototype;function cg(n){var t=n&&n.constructor,e=typeof t=="function"&&t.prototype||lg;return n===e}var fo=cg;function hg(n,t){for(var e=-1,r=Array(n);++e<n;)r[e]=t(e);return r}var Ec=hg;var pg="[object Arguments]";function ug(n){return Ze(n)&&vt(n)==pg}var wa=ug;var _c=Object.prototype,dg=_c.hasOwnProperty,mg=_c.propertyIsEnumerable,fg=wa(function(){return arguments}())?wa:function(n){return Ze(n)&&dg.call(n,"callee")&&!mg.call(n,"callee")},Wr=fg;function gg(){return!1}var Gc=gg;var Fc=typeof exports=="object"&&exports&&!exports.nodeType&&exports,zc=Fc&&typeof module=="object"&&module&&!module.nodeType&&module,yg=zc&&zc.exports===Fc,Rc=yg?Fe.Buffer:void 0,xg=Rc?Rc.isBuffer:void 0,bg=xg||Gc,go=bg;var vg="[object Arguments]",Sg="[object Array]",wg="[object Boolean]",Ng="[object Date]",Lg="[object Error]",Cg="[object Function]",Tg="[object Map]",Mg="[object Number]",Pg="[object Object]",Ig="[object RegExp]",Og="[object Set]",Ag="[object String]",Dg="[object WeakMap]",Bg="[object ArrayBuffer]",Eg="[object DataView]",_g="[object Float32Array]",Gg="[object Float64Array]",zg="[object Int8Array]",Rg="[object Int16Array]",Fg="[object Int32Array]",Vg="[object Uint8Array]",Ug="[object Uint8ClampedArray]",jg="[object Uint16Array]",kg="[object Uint32Array]",Pe={};Pe[_g]=Pe[Gg]=Pe[zg]=Pe[Rg]=Pe[Fg]=Pe[Vg]=Pe[Ug]=Pe[jg]=Pe[kg]=!0;Pe[vg]=Pe[Sg]=Pe[Bg]=Pe[wg]=Pe[Eg]=Pe[Ng]=Pe[Lg]=Pe[Cg]=Pe[Tg]=Pe[Mg]=Pe[Pg]=Pe[Ig]=Pe[Og]=Pe[Ag]=Pe[Dg]=!1;function Hg(n){return Ze(n)&&An(n.length)&&!!Pe[vt(n)]}var Vc=Hg;function qg(n){return function(t){return n(t)}}var yo=qg;var Uc=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Ni=Uc&&typeof module=="object"&&module&&!module.nodeType&&module,Wg=Ni&&Ni.exports===Uc,Na=Wg&&Sn.process,$g=function(){try{var n=Ni&&Ni.require&&Ni.require("util").types;return n||Na&&Na.binding&&Na.binding("util")}catch{}}(),ur=$g;var jc=ur&&ur.isTypedArray,Jg=jc?yo(jc):Vc,Dn=Jg;var Yg=Object.prototype,Kg=Yg.hasOwnProperty;function Xg(n,t){var e=Ve(n),r=!e&&Wr(n),o=!e&&!r&&go(n),i=!e&&!r&&!o&&Dn(n),s=e||r||o||i,a=s?Ec(n.length,String):[],l=a.length;for(var c in n)(t||Kg.call(n,c))&&!(s&&(c=="length"||o&&(c=="offset"||c=="parent")||i&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||Pn(c,l)))&&a.push(c);return a}var Bn=Xg;function Zg(n,t){return function(e){return n(t(e))}}var En=Zg;var Qg=En(Object.keys,Object),kc=Qg;var ey=Object.prototype,ty=ey.hasOwnProperty;function ry(n){if(!fo(n))return kc(n);var t=[];for(var e in Object(n))ty.call(n,e)&&e!="constructor"&&t.push(e);return t}var Hc=ry;function oy(n){return Cr(n)?Bn(n):Hc(n)}var xo=oy;function iy(n){var t=[];if(n!=null)for(var e in Object(n))t.push(e);return t}var qc=iy;var ny=Object.prototype,sy=ny.hasOwnProperty;function ay(n){if(!Qe(n))return qc(n);var t=fo(n),e=[];for(var r in n)r=="constructor"&&(t||!sy.call(n,r))||e.push(r);return e}var Wc=ay;function ly(n){return Cr(n)?Bn(n,!0):Wc(n)}var qt=ly;var cy=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,hy=/^\w*$/;function py(n,t){if(Ve(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||ho(n)?!0:hy.test(n)||!cy.test(n)||t!=null&&n in Object(t)}var $c=py;var uy=dt(Object,"create"),dr=uy;function dy(){this.__data__=dr?dr(null):{},this.size=0}var Jc=dy;function my(n){var t=this.has(n)&&delete this.__data__[n];return this.size-=t?1:0,t}var Yc=my;var fy="__lodash_hash_undefined__",gy=Object.prototype,yy=gy.hasOwnProperty;function xy(n){var t=this.__data__;if(dr){var e=t[n];return e===fy?void 0:e}return yy.call(t,n)?t[n]:void 0}var Kc=xy;var by=Object.prototype,vy=by.hasOwnProperty;function Sy(n){var t=this.__data__;return dr?t[n]!==void 0:vy.call(t,n)}var Xc=Sy;var wy="__lodash_hash_undefined__";function Ny(n,t){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=dr&&t===void 0?wy:t,this}var Zc=Ny;function bo(n){var t=-1,e=n==null?0:n.length;for(this.clear();++t<e;){var r=n[t];this.set(r[0],r[1])}}bo.prototype.clear=Jc;bo.prototype.delete=Yc;bo.prototype.get=Kc;bo.prototype.has=Xc;bo.prototype.set=Zc;var La=bo;function Ly(){this.__data__=[],this.size=0}var Qc=Ly;function Cy(n,t){for(var e=n.length;e--;)if(Lr(n[e][0],t))return e;return-1}var Tr=Cy;var Ty=Array.prototype,My=Ty.splice;function Py(n){var t=this.__data__,e=Tr(t,n);if(e<0)return!1;var r=t.length-1;return e==r?t.pop():My.call(t,e,1),--this.size,!0}var eh=Py;function Iy(n){var t=this.__data__,e=Tr(t,n);return e<0?void 0:t[e][1]}var th=Iy;function Oy(n){return Tr(this.__data__,n)>-1}var rh=Oy;function Ay(n,t){var e=this.__data__,r=Tr(e,n);return r<0?(++this.size,e.push([n,t])):e[r][1]=t,this}var oh=Ay;function vo(n){var t=-1,e=n==null?0:n.length;for(this.clear();++t<e;){var r=n[t];this.set(r[0],r[1])}}vo.prototype.clear=Qc;vo.prototype.delete=eh;vo.prototype.get=th;vo.prototype.has=rh;vo.prototype.set=oh;var Mr=vo;var Dy=dt(Fe,"Map"),Pr=Dy;function By(){this.size=0,this.__data__={hash:new La,map:new(Pr||Mr),string:new La}}var ih=By;function Ey(n){var t=typeof n;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?n!=="__proto__":n===null}var nh=Ey;function _y(n,t){var e=n.__data__;return nh(t)?e[typeof t=="string"?"string":"hash"]:e.map}var Ir=_y;function Gy(n){var t=Ir(this,n).delete(n);return this.size-=t?1:0,t}var sh=Gy;function zy(n){return Ir(this,n).get(n)}var ah=zy;function Ry(n){return Ir(this,n).has(n)}var lh=Ry;function Fy(n,t){var e=Ir(this,n),r=e.size;return e.set(n,t),this.size+=e.size==r?0:1,this}var ch=Fy;function So(n){var t=-1,e=n==null?0:n.length;for(this.clear();++t<e;){var r=n[t];this.set(r[0],r[1])}}So.prototype.clear=ih;So.prototype.delete=sh;So.prototype.get=ah;So.prototype.has=lh;So.prototype.set=ch;var Li=So;var Vy="Expected a function";function Ca(n,t){if(typeof n!="function"||t!=null&&typeof t!="function")throw new TypeError(Vy);var e=function(){var r=arguments,o=t?t.apply(this,r):r[0],i=e.cache;if(i.has(o))return i.get(o);var s=n.apply(this,r);return e.cache=i.set(o,s)||i,s};return e.cache=new(Ca.Cache||Li),e}Ca.Cache=Li;var hh=Ca;var Uy=500;function jy(n){var t=hh(n,function(r){return e.size===Uy&&e.clear(),r}),e=t.cache;return t}var ph=jy;var ky=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Hy=/\\(\\)?/g,qy=ph(function(n){var t=[];return n.charCodeAt(0)===46&&t.push(""),n.replace(ky,function(e,r,o,i){t.push(o?i.replace(Hy,"$1"):r||e)}),t}),uh=qy;function Wy(n){return n==null?"":xc(n)}var dh=Wy;function $y(n,t){return Ve(n)?n:$c(n,t)?[n]:uh(dh(n))}var wo=$y;var Jy=1/0;function Yy(n){if(typeof n=="string"||ho(n))return n;var t=n+"";return t=="0"&&1/n==-Jy?"-0":t}var _n=Yy;function Ky(n,t){t=wo(t,n);for(var e=0,r=t.length;n!=null&&e<r;)n=n[_n(t[e++])];return e&&e==r?n:void 0}var mh=Ky;function Xy(n,t){for(var e=-1,r=t.length,o=n.length;++e<r;)n[o+e]=t[e];return n}var No=Xy;var fh=nt?nt.isConcatSpreadable:void 0;function Zy(n){return Ve(n)||Wr(n)||!!(fh&&n&&n[fh])}var gh=Zy;function yh(n,t,e,r,o){var i=-1,s=n.length;for(e||(e=gh),o||(o=[]);++i<s;){var a=n[i];t>0&&e(a)?t>1?yh(a,t-1,e,r,o):No(o,a):r||(o[o.length]=a)}return o}var xh=yh;function Qy(n){var t=n==null?0:n.length;return t?xh(n,1):[]}var bh=Qy;function ex(n){return Mn(On(n,void 0,bh),n+"")}var vh=ex;var tx=En(Object.getPrototypeOf,Object),Lo=tx;var rx="[object Object]",ox=Function.prototype,ix=Object.prototype,Sh=ox.toString,nx=ix.hasOwnProperty,sx=Sh.call(Object);function ax(n){if(!Ze(n)||vt(n)!=rx)return!1;var t=Lo(n);if(t===null)return!0;var e=nx.call(t,"constructor")&&t.constructor;return typeof e=="function"&&e instanceof e&&Sh.call(e)==sx}var Gn=ax;function lx(n,t,e){var r=-1,o=n.length;t<0&&(t=-t>o?0:o+t),e=e>o?o:e,e<0&&(e+=o),o=t>e?0:e-t>>>0,t>>>=0;for(var i=Array(o);++r<o;)i[r]=n[r+t];return i}var wh=lx;function cx(){this.__data__=new Mr,this.size=0}var Nh=cx;function hx(n){var t=this.__data__,e=t.delete(n);return this.size=t.size,e}var Lh=hx;function px(n){return this.__data__.get(n)}var Ch=px;function ux(n){return this.__data__.has(n)}var Th=ux;var dx=200;function mx(n,t){var e=this.__data__;if(e instanceof Mr){var r=e.__data__;if(!Pr||r.length<dx-1)return r.push([n,t]),this.size=++e.size,this;e=this.__data__=new Li(r)}return e.set(n,t),this.size=e.size,this}var Mh=mx;function Co(n){var t=this.__data__=new Mr(n);this.size=t.size}Co.prototype.clear=Nh;Co.prototype.delete=Lh;Co.prototype.get=Ch;Co.prototype.has=Th;Co.prototype.set=Mh;var zn=Co;function fx(n,t){return n&&Tt(t,xo(t),n)}var Ph=fx;function gx(n,t){return n&&Tt(t,qt(t),n)}var Ih=gx;var Bh=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Oh=Bh&&typeof module=="object"&&module&&!module.nodeType&&module,yx=Oh&&Oh.exports===Bh,Ah=yx?Fe.Buffer:void 0,Dh=Ah?Ah.allocUnsafe:void 0;function xx(n,t){if(t)return n.slice();var e=n.length,r=Dh?Dh(e):new n.constructor(e);return n.copy(r),r}var Rn=xx;function bx(n,t){for(var e=-1,r=n==null?0:n.length,o=0,i=[];++e<r;){var s=n[e];t(s,e,n)&&(i[o++]=s)}return i}var Eh=bx;function vx(){return[]}var Fn=vx;var Sx=Object.prototype,wx=Sx.propertyIsEnumerable,_h=Object.getOwnPropertySymbols,Nx=_h?function(n){return n==null?[]:(n=Object(n),Eh(_h(n),function(t){return wx.call(n,t)}))}:Fn,To=Nx;function Lx(n,t){return Tt(n,To(n),t)}var Gh=Lx;var Cx=Object.getOwnPropertySymbols,Tx=Cx?function(n){for(var t=[];n;)No(t,To(n)),n=Lo(n);return t}:Fn,Vn=Tx;function Mx(n,t){return Tt(n,Vn(n),t)}var zh=Mx;function Px(n,t,e){var r=t(n);return Ve(n)?r:No(r,e(n))}var Un=Px;function Ix(n){return Un(n,xo,To)}var Rh=Ix;function Ox(n){return Un(n,qt,Vn)}var jn=Ox;var Ax=dt(Fe,"DataView"),kn=Ax;var Dx=dt(Fe,"Promise"),Hn=Dx;var Bx=dt(Fe,"Set"),qn=Bx;var Fh="[object Map]",Ex="[object Object]",Vh="[object Promise]",Uh="[object Set]",jh="[object WeakMap]",kh="[object DataView]",_x=pr(kn),Gx=pr(Pr),zx=pr(Hn),Rx=pr(qn),Fx=pr(Cn),$r=vt;(kn&&$r(new kn(new ArrayBuffer(1)))!=kh||Pr&&$r(new Pr)!=Fh||Hn&&$r(Hn.resolve())!=Vh||qn&&$r(new qn)!=Uh||Cn&&$r(new Cn)!=jh)&&($r=function(n){var t=vt(n),e=t==Ex?n.constructor:void 0,r=e?pr(e):"";if(r)switch(r){case _x:return kh;case Gx:return Fh;case zx:return Vh;case Rx:return Uh;case Fx:return jh}return t});var Mo=$r;var Vx=Object.prototype,Ux=Vx.hasOwnProperty;function jx(n){var t=n.length,e=new n.constructor(t);return t&&typeof n[0]=="string"&&Ux.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var Hh=jx;var kx=Fe.Uint8Array,Ta=kx;function Hx(n){var t=new n.constructor(n.byteLength);return new Ta(t).set(new Ta(n)),t}var Po=Hx;function qx(n,t){var e=t?Po(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var qh=qx;var Wx=/\w*$/;function $x(n){var t=new n.constructor(n.source,Wx.exec(n));return t.lastIndex=n.lastIndex,t}var Wh=$x;var $h=nt?nt.prototype:void 0,Jh=$h?$h.valueOf:void 0;function Jx(n){return Jh?Object(Jh.call(n)):{}}var Yh=Jx;function Yx(n,t){var e=t?Po(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var Wn=Yx;var Kx="[object Boolean]",Xx="[object Date]",Zx="[object Map]",Qx="[object Number]",e0="[object RegExp]",t0="[object Set]",r0="[object String]",o0="[object Symbol]",i0="[object ArrayBuffer]",n0="[object DataView]",s0="[object Float32Array]",a0="[object Float64Array]",l0="[object Int8Array]",c0="[object Int16Array]",h0="[object Int32Array]",p0="[object Uint8Array]",u0="[object Uint8ClampedArray]",d0="[object Uint16Array]",m0="[object Uint32Array]";function f0(n,t,e){var r=n.constructor;switch(t){case i0:return Po(n);case Kx:case Xx:return new r(+n);case n0:return qh(n,e);case s0:case a0:case l0:case c0:case h0:case p0:case u0:case d0:case m0:return Wn(n,e);case Zx:return new r;case Qx:case r0:return new r(n);case e0:return Wh(n);case t0:return new r;case o0:return Yh(n)}}var Kh=f0;function g0(n){return typeof n.constructor=="function"&&!fo(n)?Lc(Lo(n)):{}}var $n=g0;var y0="[object Map]";function x0(n){return Ze(n)&&Mo(n)==y0}var Xh=x0;var Zh=ur&&ur.isMap,b0=Zh?yo(Zh):Xh,Qh=b0;var v0="[object Set]";function S0(n){return Ze(n)&&Mo(n)==v0}var ep=S0;var tp=ur&&ur.isSet,w0=tp?yo(tp):ep,rp=w0;var N0=1,L0=2,C0=4,op="[object Arguments]",T0="[object Array]",M0="[object Boolean]",P0="[object Date]",I0="[object Error]",ip="[object Function]",O0="[object GeneratorFunction]",A0="[object Map]",D0="[object Number]",np="[object Object]",B0="[object RegExp]",E0="[object Set]",_0="[object String]",G0="[object Symbol]",z0="[object WeakMap]",R0="[object ArrayBuffer]",F0="[object DataView]",V0="[object Float32Array]",U0="[object Float64Array]",j0="[object Int8Array]",k0="[object Int16Array]",H0="[object Int32Array]",q0="[object Uint8Array]",W0="[object Uint8ClampedArray]",$0="[object Uint16Array]",J0="[object Uint32Array]",Te={};Te[op]=Te[T0]=Te[R0]=Te[F0]=Te[M0]=Te[P0]=Te[V0]=Te[U0]=Te[j0]=Te[k0]=Te[H0]=Te[A0]=Te[D0]=Te[np]=Te[B0]=Te[E0]=Te[_0]=Te[G0]=Te[q0]=Te[W0]=Te[$0]=Te[J0]=!0;Te[I0]=Te[ip]=Te[z0]=!1;function Jn(n,t,e,r,o,i){var s,a=t&N0,l=t&L0,c=t&C0;if(e&&(s=o?e(n,r,o,i):e(n)),s!==void 0)return s;if(!Qe(n))return n;var h=Ve(n);if(h){if(s=Hh(n),!a)return Tn(n,s)}else{var p=Mo(n),u=p==ip||p==O0;if(go(n))return Rn(n,a);if(p==np||p==op||u&&!o){if(s=l||u?{}:$n(n),!a)return l?zh(n,Ih(s,n)):Gh(n,Ph(s,n))}else{if(!Te[p])return o?n:{};s=Kh(n,p,a)}}i||(i=new zn);var d=i.get(n);if(d)return d;i.set(n,s),rp(n)?n.forEach(function(x){s.add(Jn(x,t,e,x,n,i))}):Qh(n)&&n.forEach(function(x,y){s.set(y,Jn(x,t,e,y,n,i))});var m=c?l?jn:Rh:l?qt:xo,g=h?void 0:m(n);return Ic(g||n,function(x,y){g&&(y=x,x=n[y]),In(s,y,Jn(x,t,e,y,n,i))}),s}var Yn=Jn;var Y0=1,K0=4;function X0(n){return Yn(n,Y0|K0)}var Ci=X0;function Z0(n){return function(t,e,r){for(var o=-1,i=Object(t),s=r(t),a=s.length;a--;){var l=s[n?a:++o];if(e(i[l],l,i)===!1)break}return t}}var sp=Z0;var Q0=sp(),ap=Q0;function eb(n,t,e){(e!==void 0&&!Lr(n[t],e)||e===void 0&&!(t in n))&&mo(n,t,e)}var Ti=eb;function tb(n){return Ze(n)&&Cr(n)}var lp=tb;function rb(n,t){if(!(t==="constructor"&&typeof n[t]=="function")&&t!="__proto__")return n[t]}var Mi=rb;function ob(n){return Tt(n,qt(n))}var cp=ob;function ib(n,t,e,r,o,i,s){var a=Mi(n,e),l=Mi(t,e),c=s.get(l);if(c){Ti(n,e,c);return}var h=i?i(a,l,e+"",n,t,s):void 0,p=h===void 0;if(p){var u=Ve(l),d=!u&&go(l),m=!u&&!d&&Dn(l);h=l,u||d||m?Ve(a)?h=a:lp(a)?h=Tn(a):d?(p=!1,h=Rn(l,!0)):m?(p=!1,h=Wn(l,!0)):h=[]:Gn(l)||Wr(l)?(h=a,Wr(a)?h=cp(a):(!Qe(a)||po(a))&&(h=$n(l))):p=!1}p&&(s.set(l,h),o(h,l,r,i,s),s.delete(l)),Ti(n,e,h)}var hp=ib;function pp(n,t,e,r,o){n!==t&&ap(t,function(i,s){if(o||(o=new zn),Qe(i))hp(n,t,s,e,pp,r,o);else{var a=r?r(Mi(n,s),i,s+"",n,t,o):void 0;a===void 0&&(a=i),Ti(n,s,a)}},qt)}var up=pp;function nb(n){var t=n==null?0:n.length;return t?n[t-1]:void 0}var dp=nb;function sb(n,t){return t.length<2?n:mh(n,wh(t,0,-1))}var mp=sb;var ab=Bc(function(n,t,e){up(n,t,e)}),Jr=ab;function lb(n,t){return t=wo(t,n),n=mp(n,t),n==null||delete n[_n(dp(t))]}var fp=lb;function cb(n){return Gn(n)?void 0:n}var gp=cb;var hb=1,pb=2,ub=4,db=vh(function(n,t){var e={};if(n==null)return e;var r=!1;t=wn(t,function(i){return i=wo(i,n),r||(r=i.length>1),i}),Tt(n,jn(n),e),r&&(e=Yn(e,hb|pb|ub,gp));for(var o=t.length;o--;)fp(e,t[o]);return e}),Io=db;var Oo;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function t(r){return e.all.includes(r)}e.is=t})(Oo||(Oo={}));var Yr;(o=>{o.DefaultUp=[0,1,0],o.DefaultTargetOffset=1e3,o.defaultData={far:1e5,type:"OrthographicCamera",perspective:{near:5,fov:45,zoom:1},orthographic:{near:-1e5,zoom:1},up:o.DefaultUp,isUpVectorFlipped:!1,targetOffset:o.DefaultTargetOffset};function r(i){return i.type==="PerspectiveCamera"?i.perspective.zoom:i.orthographic.zoom}o.getZoom=r})(Yr||(Yr={}));var yp;(e=>{function n(r,o){return r[0]===o[0]&&r[1]===o[1]}e.isEqual=n;function t(r,o,i){return[r[0]+(o[0]-r[0])*i,r[1]+(o[1]-r[1])*i]}e.lerp=t})(yp||(yp={}));var Ao;(o=>{function n(i,s){return i[0]===s[0]&&i[1]===s[1]&&i[2]===s[2]}o.isEqual=n;function t(i,s){return[i[0]+s[0],i[1]+s[1],i[2]+s[2]]}o.add=t;function e(i,s){return[i[0]-s[0],i[1]-s[1],i[2]-s[2]]}o.sub=e;function r(i,s,a){return[i[0]+(s[0]-i[0])*a,i[1]+(s[1]-i[1])*a,i[2]+(s[2]-i[2])*a]}o.lerp=r})(Ao||(Ao={}));var xp;(e=>{function n(r,o){return r[0]===o[0]&&r[1]===o[1]&&r[2]===o[2]&&r[3]===o[3]}e.isEqual=n;function t(r,o,i){return[r[0]+(o[0]-r[0])*i,r[1]+(o[1]-r[1])*i,r[2]+(o[2]-r[2])*i,r[3]+(o[3]-r[3])*i]}e.lerp=t})(xp||(xp={}));var Or;(o=>{o.identity=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function t(i,s){for(let a=0;a<16;a++)if(i[a]!==s[a])return!1;return!0}o.isEqual=t;function e(i){return i??o.identity}o.simplify=e;function r(i,s){let a=s.slice(0);for(var l=0,c=s.length;l<c;l+=3){let h=i[3]*s[l]+i[7]*s[l+1]+i[11]*s[l+2]+i[15];a[l]=(i[0]*s[l]+i[4]*s[l+1]+i[8]*s[l+2]+i[12])/h,a[l+1]=(i[1]*s[l]+i[5]*s[l+1]+i[9]*s[l+2]+i[13])/h,a[l+2]=(i[2]*s[l]+i[6]*s[l+1]+i[10]*s[l+2]+i[14])/h}return a}o.applyMatrix4=r})(Or||(Or={}));var St;(l=>{l.white={r:1,g:1,b:1},l.red={r:1,g:0,b:0},l.black={r:0,g:0,b:0};function r(c){return{r:Math.round(c.r*255),g:Math.round(c.g*255),b:Math.round(c.b*255),a:1}}l.toRgb255a1=r;function o(c){return{r:c.r,g:c.g,b:c.b}}l.clone=o;function i(c){return c=Math.floor(c),{r:(c>>16&255)/255,g:(c>>8&255)/255,b:(c&255)/255}}l.fromHex=i;function s(c,h){return c.r===h.r&&c.g===h.g&&c.b===h.b}l.equals=s;function a(c,h,p){return{r:c.r+(h.r-c.r)*p,g:c.g+(h.g-c.g)*p,b:c.b+(h.b-c.b)*p}}l.lerp=a})(St||(St={}));var Wt;(s=>{s.white={...St.white,a:1};function t(a){return{r:a[0],g:a[1],b:a[2],a:a[3]}}s.from0to1=t;function e(a,l){return{...St.fromHex(a),a:l}}s.fromHexAndA=e;function r(a){return{r:Math.round(a.r*255),g:Math.round(a.g*255),b:Math.round(a.b*255),a:a.a}}s.toRgb255a1=r;function o(a,l){return St.equals(a,l)&&a.a===l.a}s.equals=o;function i(a,l,c){return{r:a.r+(l.r-a.r)*c,g:a.g+(l.g-a.g)*c,b:a.b+(l.b-a.b)*c,a:a.a+(l.a-a.a)*c}}s.lerp=i})(Wt||(Wt={}));var Kn;(t=>t.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(Kn||(Kn={}));var bp;(t=>t.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(bp||(bp={}));var vp;(t=>t.defaultData={control1:[.5,.05],control2:[.1,.3]})(vp||(vp={}));var Xn;(t=>{function n(e,r=.1){return{type:"radial",hideBase:!1,count:3,radial:{radius:Math.max(e[0],e[1])*2,start:0,end:360,alignment:!1,axis:"y",scale:[1,1,1],rotation:[0,0,0],position:[0,0,0]},linear:{scale:[1,1,1],rotation:[0,0,0],position:[e[0]+e[0]*r,0,0]},grid:{count:[2,2,2],size:e.map(o=>o*(1+r)),useCenter:!0}}}t.defaultData=n})(Xn||(Xn={}));var Mt=class{modifyById(t,e){let r=this;if(r[t]===void 0)throw new Error("not expected");{let i={...r,[t]:e};return Object.setPrototypeOf(i,Mt.prototype),i}}add(t,e){return this.runOp({type:1,id:t,data:e})?.data??this}runOp(t){let e=this;if(t.type===1){let r=e[t.id],o;r===void 0?o={type:2,id:t.id}:o={type:1,id:t.id,data:r};let{id:i,data:s}=t,a={...e,[i]:s};return Object.setPrototypeOf(a,Mt.prototype),{data:a,actual:t,reverse:o}}else if(t.type===2){let{id:r}=t,o=e[r];if(o===void 0)return null;{let i={...e};return Object.setPrototypeOf(i,Mt.prototype),delete i[r],{data:i,actual:t,reverse:{type:1,id:r,data:o}}}}throw new Error("illegal arg")}};function Pi(n){if(n.deepFreeze!==void 0){n.deepFreeze(n);return}let t=Object.getOwnPropertyNames(n);for(let e of t){let r=n[e];r&&typeof r=="object"&&Pi(r)}return Object.freeze(n)}function Sp(n,t){let e=0;for(;e<n.length&&e<t.length;){if(n[e]<t[e])return-1;if(n[e]>t[e])return 1;e+=1}return e!==t.length?-1:e!==n.length?1:0}var Zn=class extends Error{};function $t(n,t,e){if(n===void 0?t===void 0?(n=0,t=10):n=t-10:t===void 0&&(t=n+10),n>t){let i=n;n=t,t=i}let r=[],o=1/(e+1);for(let i=0;i<e;i++){let s=n+(t-n)*(i+.75+Math.random()*.5)*o;r.push(s)}return r}function Qn(n){return n instanceof Uint8Array||n instanceof Uint16Array||n instanceof Uint32Array||n instanceof Int8Array||n instanceof Int16Array||n instanceof Int32Array||n instanceof Float32Array||n instanceof Float64Array}function wp(){return typeof process<"u"}function Np(n,t){for(let e of n)t(e.id,e.data),Np(e.children,t)}function Lp(n,t){t(n.id,n.data);for(let e of n.children)Lp(e,t)}var Pt=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Pt.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Pi(this[e]),e++}fillCaches0(e,r){this.objCaches.set(e.id,e),this.parentCaches.set(e.id,r);for(let o of e.children)this.fillCaches0(o,e.id)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,this.parentCaches=new Map;for(let e of this)this.fillCaches0(e,null)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}isDescendantOf(e,r){for(;e;){let o=this.parent(e);if(o===r)return!0;e=o}return!1}data(e){return this.get(e)?.data}has(e){return this.childrenOf(e)!==void 0}get(e){return this.fillCaches(),this.objCaches.get(e)}childrenOf(e){return e===null?this:this.get(e)?.children}traverseFrom(e,r){if(e===null)this.traverse(r);else{let o=this.get(e);o&&Lp(o,r)}}traverse(e){Np(this,e)}totalSize(){return this.fillCaches(),this.objCaches.size}parent(e){return this.fillCaches(),this.parentCaches.get(e)}childrenArray(e){return e===null?this:this.get(e).children}modifyById(e,r){if(this.get(e)===void 0)throw new Error("not expected");{let i=this.parent(e),s=this.childrenArray(i),a=s.findIndex(h=>h.id===e);if(a<0)throw new Error("not expected");let l=s[a];return s=[...s],s[a]={...l,data:r},this.modifyArrayBy(i,s)}}modifyArrayBy(e,r){let o=e,i=r;for(;o!==null;){let a=i,l=o;if(o=this.parent(o),o===void 0)throw new Error;i=this.childrenArray(o);let c=i.findIndex(h=>h.id===l);if(c<0)throw new Error;i=[...i],i[c]={...i[c],children:a}}Object.setPrototypeOf(i,Pt.prototype);let s=i;return s.fillCaches(),s}runOp(e){switch(e.type){case 7:return this.addOp(e);case 8:return this.deleteOp(e);case 9:return this.moveOp(e)}}checkDuplicatedIdRec({id:e,children:r}){if(this.get(e)!==void 0)return!0;for(let o of r)if(this.checkDuplicatedIdRec(o))return!0;return!1}addOp(e){let{parent:r,fi:o,id:i,data:s,children:a}=e;if(r!==null&&this.get(r)===void 0)return null;if(this.checkDuplicatedIdRec(e))return null;{let l=r,c=this.childrenArray(l),h={fi:o,id:i,data:s,children:a};return c=[...c,h],c.sort((u,d)=>u.fi-d.fi),e.localIndex=c.indexOf(h),{data:this.modifyArrayBy(l,c),actual:e,reverse:{type:8,id:i}}}}deleteOp(e){let{id:r}=e;if(this.get(r)===null)return null;{let o=this.parent(r);if(o===void 0)return null;let i=this.childrenArray(o),s=i.findIndex(c=>c.id===r);e.localIndex=s,i=[...i];let a=i.splice(s,1)[0];return{data:this.modifyArrayBy(o,i),actual:e,reverse:{type:7,...a,parent:o}}}}moveOp(e){let{parent:r,fi:o,id:i}=e;if(r!==null&&this.get(r)===void 0)return this.deleteOp({type:8,id:i});if(r!==null){let d=r;for(;d!==null;){if(d===void 0)throw new Error;if(d===i)throw new Zn("cyclic tree");d=this.parent(d)}}let s=this.parent(i);if(s===void 0)return null;let a=s,l=this.childrenArray(s),c=l.findIndex(d=>d.id===i);l=[...l];let h=l.splice(c,1)[0],p=this.modifyArrayBy(s,l);s=r,l=p.childrenArray(s);let u=h.fi;return h={...h,fi:o},l=[...l,h],l.sort((d,m)=>d.fi-m.fi),e.localIndex=l.indexOf(h),p=p.modifyArrayBy(s,l),{data:p,actual:e,reverse:{type:9,parent:a,fi:u,id:i}}}previous(e,r){if(r===null){let i=this.childrenArray(e);return i.length===0?null:i[i.length-1].id}let o=null;for(let i of this.childrenArray(e)){if(i.id===r)return o;o=i.id}return null}traverseSortNext(e){let r=this.parent(e);if(r!==void 0){let o=this.childrenArray(r),i=o.findIndex(s=>s.id===e)+1;if(i<o.length)return o[i].id;if(r)return this.traverseSortNext(r)}}sortNext(e){let r=this.childrenArray(e);return r.length>0?r[0].id:this.traverseSortNext(e)}traverseSortPrevious(e){let r=this.childrenArray(e);return r.length>0?this.traverseSortPrevious(r[r.length-1].id):e}sortPrevious(e){let r=this.parent(e);if(r!==void 0){let o=this.childrenArray(r),i=o.findIndex(s=>s.id===e)-1;return i>=0?this.traverseSortPrevious(o[i].id):r}}getAllSorted(e){let r=[];for(let o of e){let i=this.getWithSortKey(o.id);i!==void 0&&r.push({...o,...i})}r.sort((o,i)=>Sp(o.sortKey,i.sortKey));for(let o of r)delete o.sortKey;return r}getWithSortKey(e){var r=e;let o=[],i=this.get(r),s=i;if(i!==void 0){for(;r;)o.splice(0,0,i.fi),r=this.parent(r),r!==null&&(i=this.get(r));return{...s,sortKey:o}}}insertBeforeHelper(e,r,o){return this.insertAfterHelper(e,this.previous(e,r),o)}insertAfterHelper(e,r,o){let i=this.childrenArray(e);if(r===null){if(i.length===0)return $t(0,o,o);{let s=i[0].fi;return $t(s-o,s,o)}}else{let s=this.get(r);if(s===void 0||this.parent(r)!==e)throw new Error("illegal args");let a=i.find(l=>l.fi>s.fi);if(a===void 0){let l=i[i.length-1].fi;return $t(l,l+o,o)}else return $t(s.fi,a.fi,o)}}};var es;(t=>{function n(e,r){if(Array.isArray(e)){let o=r.props,i={},s=[...e],a=!1;if(o)for(let l of Object.keys(o)){let c=parseInt(l);if(isNaN(c))throw new Error("wrong index");i[l]=s[c],s[c]=o[l],a=!0}return a?{data:s,actual:r,reverse:{type:0,props:i}}:null}else{let o=r.props,i={},s={...e},a=!1;if(o)for(let l of Object.keys(o)){i[l]=s[l];let c=o[l];c===void 0?delete s[l]:s[l]=c,a=!0}return a?{data:s,actual:r,reverse:{type:0,props:i}}:null}}t.runOp=n})(es||(es={}));var Ae=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Ae.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Pi(this[e]),e++}fillCaches0(e){this.objCaches.set(e.id,e)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,Object.getOwnPropertyDescriptor(this,"objCaches").enumerable=!1;for(let e of this)this.fillCaches0(e)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}data(e){return this.get(e)?.data}get(e){return this.fillCaches(),this.objCaches.get(e)}modifyById(e,r){if(this.get(e)===void 0)throw new Error("not expected");{let i=this,s=i.findIndex(c=>c.id===e);if(s<0)throw new Error("not expected");let a=i[s];return i=[...i],i[s]={...a,data:r},this.modifyArrayBy(i)}}modifyArrayBy(e){Object.setPrototypeOf(e,Ae.prototype);let r=e;return wp()||r.fillCaches(),r}runOp(e){switch(e.type){case 4:return this.addOp(e);case 5:return this.deleteOp(e);case 6:return this.moveOp(e)}}addOp(e){let{fi:r,id:o,data:i}=e,s=this,a={fi:r,id:o,data:i};return s=[...s,a],s.sort((c,h)=>c.fi-h.fi),e.localIndex=s.indexOf(a),{data:this.modifyArrayBy(s),actual:e,reverse:{type:5,id:o}}}deleteOp(e){let{id:r}=e,o=this,i=o.findIndex(l=>l.id===r);if(i===-1)return null;e.localIndex=i,o=[...o];let s=o.splice(i,1)[0];return{data:this.modifyArrayBy(o),actual:e,reverse:{type:4,...s}}}moveOp(e){let{fi:r,id:o}=e,i=this;i=[...i];let s=i.findIndex(h=>h.id===o);if(s===-1)return null;let a=i[s].fi,l={...i[s],fi:r};return i[s]=l,i.sort((h,p)=>h.fi-p.fi),e.localIndex=i.indexOf(l),{data:this.modifyArrayBy(i),actual:e,reverse:{type:6,fi:a,id:o}}}previous(e){if(e===null)return this.length===0?null:this[this.length-1].id;let r=null;for(let o of this){if(o.id===e)return r;r=o.id}return null}insertBeforeHelper(e,r){return this.insertAfterHelper(this.previous(e),r)}insertAfterHelper(e,r){let o=this;if(e===null){if(o.length===0)return $t(0,r,r);{let i=o[0].fi;return $t(i-r,i,r)}}else{let i=this.get(e);if(i===void 0)throw new Error("illegal args");let s=o.find(a=>a.fi>i.fi);if(s===void 0){let a=o[o.length-1].fi;return $t(a,a+r,r)}else return $t(i.fi,s.fi,r)}}};var Cp=Symbol(),rs=Symbol(),Do=class{reportOp(t,e){let r=this;if(e===null)return;r._current=e.data;let o=[];for(;!(r instanceof ts);){let i=r._path,s=r._current;if(i!==""&&o.splice(0,0,i),r=r._parent,r===null)return;r.update(i,s)}r.push(o,t,e.actual,e.reverse)}deleteChildren(t){if(this._children){let e=this._children[t];if(e){let r=e[rs];r&&r(),delete this._children[t]}}}},Pa=class extends Do{constructor(t,e,r){super(),this._parent=t,this._path=e,this._current=r}update(t,e){if(Array.isArray(this._current)){if(typeof t=="string"&&(t=parseInt(t),isNaN(t)))throw new Error("Invalid path");this._current=[...this._current],this._current[t]=e}else this._current={...this._current,[t]:e}}runOp(t){this.reportOp(t,es.runOp(this._current,t))}},Ia=class extends Do{constructor(t,e,r){super(),this._parent=t,this._path=e,this._current=r}update(t,e){this._current={...this._current,[t]:e},Object.setPrototypeOf(this._current,Mt.prototype)}runOp(t){this.reportOp(t,this._current.runOp(t))}},Tp={get(n,t){if(t===rs)return()=>{n._parent=null};if(t===Cp)return n._current;let{_current:e,_children:r}=n;if(t==="push"&&Array.isArray(e))throw new Error("not supported to expand array");let o=r===void 0?void 0:r[t];if(o!==void 0)return o;let i=e[t],s=os(n,t,i);return s!==i?(r===void 0&&(r={},n._children=r),r[t]=s,s):i},has(n,t){return t in n._current},ownKeys(n){return Reflect.ownKeys(n._current)},defineProperty(){throw Error("not supported")},getPrototypeOf(n){return Object.getPrototypeOf(n._current)},setPrototypeOf(){throw Error("not supported")},getOwnPropertyDescriptor(n,t){let e=n._current,r=Reflect.getOwnPropertyDescriptor(e,t);return r&&{writable:!0,configurable:!0,enumerable:r.enumerable,value:e[t]}}},mb={...Tp,set(n,t,e){let r={type:0,props:{[t]:Da(e)??e}};return n.deleteChildren(t),n.runOp(r),!0},deleteProperty(n,t){let e={type:0,props:{[t]:void 0}};return n.deleteChildren(t),n.runOp(e),!0}},fb={...Tp,set(n,t,e){return e===void 0?this.deleteProperty(n,t):(n.deleteChildren(t),n.runOp({type:1,id:t,data:e})),!0},deleteProperty(n,t){return n.runOp({type:2,id:t}),!0}},Bo=class extends Do{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[rs]=()=>{this._parent=null}}unproxy(){return this._current}update(t,e){this._current=this._current.modifyById(t,e)}runOp(t){this.reportOp(t,this._current.runOp(t))}randomId(){return this._current.randomId()}isDescendantOf(t,e){return this._current.isDescendantOf(t,e)}childrenOf(t){return this._current.childrenOf(t)}traverse(t){return this._current.traverse(t)}get(t){return this._current.get(t)}parent(t){return this._current.parent(t)}traverse(t){this._current.traverse((e,r)=>{t(e,this.data(e))})}data(t){let{_current:e,_children:r}=this,o=r===void 0?void 0:r[t];if(o!==void 0)return o;let i=e.get(t)?.data,s=os(this,t,i);return s!==i?(r===void 0&&(r={},this._children=r),r[t]=s,s):i}add(t,e,r,o,i){this.runOp({type:7,parent:t,fi:e,id:r,data:o,children:i})}move(t,e,r){this.runOp({type:9,parent:t,fi:e,id:r})}insertAfter(t,e,r){let o=this._current.insertAfterHelper(t,e,r.length);for(let i=0;i<r.length;i++){let s=r[i];this.add(t,o[i],s.id,s.data,s.children)}}insertBefore(t,e,r){let o=this._current.insertBeforeHelper(t,e,r.length);for(let i=0;i<r.length;i++){let s=r[i];this.add(t,o[i],s.id,s.data,s.children)}}moveAfter(t,e,r){let o=this._current.insertAfterHelper(t,e,r.length);for(let i=0;i<r.length;i++){let s=r[i];this.move(t,o[i],s)}}moveBefore(t,e,r){let o=this._current.insertBeforeHelper(t,e,r.length);for(let i=0;i<r.length;i++){let s=r[i];this.move(t,o[i],s)}}delete(t){this.deleteChildren(t),this.runOp({type:8,id:t})}sortNext(t){return this._current.sortNext(t)}sortPrevious(t){return this._current.sortPrevious(t)}getAllSorted(t){return this._current.getAllSorted(t)}},Eo=class extends Do{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[rs]=()=>{this._parent=null}}unproxy(){return this._current}get length(){return this._current.length}forEach(t){let e=this.length;for(let r=0;r<e;r++){let o=this._current[r].id;t(this.data(this._current[r].id),o)}}update(t,e){this._current=this._current.modifyById(t,e)}randomId(){return this._current.randomId()}get(t){return{...this._current.get(t),data:this.data(t)}}data(t){let{_current:e,_children:r}=this,o=r===void 0?void 0:r[t];if(o!==void 0)return o;let i=e.get(t)?.data,s=os(this,t,i);return s!==i?(r===void 0&&(r={},this._children=r),r[t]=s,s):i}runOp(t){this.reportOp(t,this._current.runOp(t))}add(t,e,r){this.runOp({type:4,fi:t,id:e,data:r})}move(t,e){this.runOp({type:6,fi:t,id:e})}insertAfter(t,e){let r=this._current.insertAfterHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(r[o],i.id,i.data)}}insertBefore(t,e){let r=this._current.insertBeforeHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(r[o],i.id,i.data)}}moveAfter(t,e){let r=this._current.insertAfterHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(r[o],i)}}moveBefore(t,e){let r=this._current.insertBeforeHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(r[o],i)}}delete(t){this.deleteChildren(t),this.runOp({type:5,id:t})}};function Ma(n,t,e){if(n.length>0){let r=n[n.length-1];if(r.type===0&&t.type===0&&is.equal(r.path,e)){Object.assign(r.props,t.props);return}}n.push({...t,path:e})}var ts=class{constructor(t){this.ts=[],this.actual=[],this.reverse=[],this._current=t}update(t,e){if(t!=="")throw new Error("");this._current=e}push(t,e,r,o){Ma(this.ts,e,t),Ma(this.actual,r,t),Ma(this.reverse,o,t)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function os(n,t,e){return e instanceof Pt?new Bo(n,t,e):e instanceof Ae?new Eo(n,t,e):e instanceof Mt?new Proxy(new Ia(n,t,e),fb):e!==null&&typeof e=="object"?Qn(e)?e:new Proxy(new Pa(n,t,e),mb):e}function Oa(n){let t=new ts(n);return[os(t,"",n),t]}function Aa(n,t){let[e,r]=Oa(n);return t(e),r.result()}function Da(n){return n instanceof Bo||n instanceof Eo?n._current:n!==null&&typeof n=="object"?n[Cp]:n}var is;(r=>{function n(o,i){if(i.length===o.length)for(var s=0;s<o.length;){if(o[s]!==i[s])return!1;s+=1}else return!1;return!0}r.equal=n;function t(o,i,s){let a=e(s,o);if(a!==void 0&&typeof a=="object"&&a!==null){let l={...i};return Object.keys(a).forEach(c=>{delete l[c]}),l}else return i}r.removeOverridden=t;function e(o,i,s=0){if(i.length<=s)return o;if((o instanceof Pt||o instanceof Bo)&&typeof i[s]=="string")return e(o.data(i[s]),i,s+1);if((o instanceof Ae||o instanceof Eo)&&typeof i[s]=="string")return e(o.data(i[s]),i,s+1);if(typeof i[s]=="number"&&Array.isArray(o))return e(o[i[s]],i,s+1);if(typeof i[s]=="string"&&typeof o=="object")return e(o[i[s]],i,s+1)}r.zoom=e})(is||(is={}));var ns=class{},Ii=class extends ns{constructor(e){super();this.id=e}},Oi=class extends ns{constructor(e){super();this.data=e}};var Ea;try{Ea=new TextDecoder}catch{}var Q,Dr,N=0;var Ep=[],_a=Ep,Ga=0,mt={},ve,Ar,It=0,Jt=0,wt,mr,st=[],we,Mp={useRecords:!1,mapsAsObjects:!0},Ai=class{},Ra=new Ai;Ra.name="MessagePack 0xC1";var _o=!1,Yt=class{constructor(t){t&&(t.useRecords===!1&&t.mapsAsObjects===void 0&&(t.mapsAsObjects=!0),t.structures?t.structures.sharedLength=t.structures.length:t.getStructures&&((t.structures=[]).uninitialized=!0,t.structures.sharedLength=0)),Object.assign(this,t)}unpack(t,e){if(Q)return Fp(()=>(as(),this?this.unpack(t,e):Yt.prototype.unpack.call(Mp,t,e)));Dr=e>-1?e:t.length,N=0,Ga=0,Jt=0,Ar=null,_a=Ep,wt=null,Q=t;try{we=t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))}catch(r){throw Q=null,t instanceof Uint8Array?r:new Error("Source must be a Uint8Array or Buffer but was a "+(t&&typeof t=="object"?t.constructor.name:typeof t))}if(this instanceof Yt){if(mt=this,this.structures)return ve=this.structures,ss();(!ve||ve.length>0)&&(ve=[])}else mt=Mp,(!ve||ve.length>0)&&(ve=[]);return ss()}unpackMultiple(t,e){let r,o=0;try{_o=!0;let i=t.length,s=this?this.unpack(t,i):hs.unpack(t,i);if(e){for(e(s);N<i;)if(o=N,e(ss())===!1)return}else{for(r=[s];N<i;)o=N,r.push(ss());return r}}catch(i){throw i.lastPosition=o,i.values=r,i}finally{_o=!1,as()}}_mergeStructures(t,e){t=t||[];for(let r=0,o=t.length;r<o;r++){let i=t[r];i&&(i.isShared=!0,r>=32&&(i.highByte=r-32>>5))}t.sharedLength=t.length;for(let r in e||[])if(r>=0){let o=t[r],i=e[r];i&&(o&&((t.restoreStructures||(t.restoreStructures=[]))[r]=o),t[r]=i)}return this.structures=t}decode(t,e){return this.unpack(t,e)}};function ss(){try{if(!mt.trusted&&!_o){let t=ve.sharedLength||0;t<ve.length&&(ve.length=t)}let n=Be();if(N==Dr)ve.restoreStructures&&Pp(),ve=null,Q=null,mr&&(mr=null);else if(N>Dr){let t=new Error("Unexpected end of MessagePack data");throw t.incomplete=!0,t}else if(!_o)throw new Error("Data read, but end of buffer not reached");return n}catch(n){throw ve.restoreStructures&&Pp(),as(),(n instanceof RangeError||n.message.startsWith("Unexpected end of buffer"))&&(n.incomplete=!0),n}}function Pp(){for(let n in ve.restoreStructures)ve[n]=ve.restoreStructures[n];ve.restoreStructures=null}function Be(){let n=Q[N++];if(n<160)if(n<128){if(n<64)return n;{let t=ve[n&63]||mt.getStructures&&_p()[n&63];return t?(t.read||(t.read=Fa(t,n&63)),t.read()):n}}else if(n<144)if(n-=128,mt.mapsAsObjects){let t={};for(let e=0;e<n;e++)t[zp()]=Be();return t}else{let t=new Map;for(let e=0;e<n;e++)t.set(Be(),Be());return t}else{n-=144;let t=new Array(n);for(let e=0;e<n;e++)t[e]=Be();return t}else if(n<192){let t=n-160;if(Jt>=N)return Ar.slice(N-It,(N+=t)-It);if(Jt==0&&Dr<140){let e=t<16?Va(t):Gp(t);if(e!=null)return e}return za(t)}else{let t;switch(n){case 192:return null;case 193:return wt?(t=Be(),t>0?wt[1].slice(wt.position1,wt.position1+=t):wt[0].slice(wt.position0,wt.position0-=t)):Ra;case 194:return!1;case 195:return!0;case 196:return Ba(Q[N++]);case 197:return t=we.getUint16(N),N+=2,Ba(t);case 198:return t=we.getUint32(N),N+=4,Ba(t);case 199:return Kr(Q[N++]);case 200:return t=we.getUint16(N),N+=2,Kr(t);case 201:return t=we.getUint32(N),N+=4,Kr(t);case 202:if(t=we.getFloat32(N),mt.useFloat32>2){let e=cs[(Q[N]&127)<<1|Q[N+1]>>7];return N+=4,(e*t+(t>0?.5:-.5)>>0)/e}return N+=4,t;case 203:return t=we.getFloat64(N),N+=8,t;case 204:return Q[N++];case 205:return t=we.getUint16(N),N+=2,t;case 206:return t=we.getUint32(N),N+=4,t;case 207:return mt.int64AsNumber?(t=we.getUint32(N)*4294967296,t+=we.getUint32(N+4)):t=we.getBigUint64(N),N+=8,t;case 208:return we.getInt8(N++);case 209:return t=we.getInt16(N),N+=2,t;case 210:return t=we.getInt32(N),N+=4,t;case 211:return mt.int64AsNumber?(t=we.getInt32(N)*4294967296,t+=we.getUint32(N+4)):t=we.getBigInt64(N),N+=8,t;case 212:if(t=Q[N++],t==114)return Bp(Q[N++]&63);{let e=st[t];if(e)return e.read?(N++,e.read(Be())):e.noBuffer?(N++,e()):e(Q.subarray(N,++N));throw new Error("Unknown extension "+t)}case 213:return t=Q[N],t==114?(N++,Bp(Q[N++]&63,Q[N++])):Kr(2);case 214:return Kr(4);case 215:return Kr(8);case 216:return Kr(16);case 217:return t=Q[N++],Jt>=N?Ar.slice(N-It,(N+=t)-It):yb(t);case 218:return t=we.getUint16(N),N+=2,Jt>=N?Ar.slice(N-It,(N+=t)-It):xb(t);case 219:return t=we.getUint32(N),N+=4,Jt>=N?Ar.slice(N-It,(N+=t)-It):bb(t);case 220:return t=we.getUint16(N),N+=2,Op(t);case 221:return t=we.getUint32(N),N+=4,Op(t);case 222:return t=we.getUint16(N),N+=2,Ap(t);case 223:return t=we.getUint32(N),N+=4,Ap(t);default:if(n>=224)return n-256;if(n===void 0){let e=new Error("Unexpected end of MessagePack data");throw e.incomplete=!0,e}throw new Error("Unknown MessagePack token "+n)}}}var gb=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function Fa(n,t){function e(){if(e.count++>2){let o=n.read=new Function("r","return function(){return {"+n.map(i=>gb.test(i)?i+":r()":"["+JSON.stringify(i)+"]:r()").join(",")+"}}")(Be);return n.highByte===0&&(n.read=Ip(t,n.read)),o()}let r={};for(let o=0,i=n.length;o<i;o++){let s=n[o];r[s]=Be()}return r}return e.count=0,n.highByte===0?Ip(t,e):e}var Ip=(n,t)=>function(){let e=Q[N++];if(e===0)return t();let r=n<32?-(n+(e<<5)):n+(e<<5),o=ve[r]||_p()[r];if(!o)throw new Error("Record id is not defined for "+r);return o.read||(o.read=Fa(o,n)),o.read()};function _p(){let n=Fp(()=>(Q=null,mt.getStructures()));return ve=mt._mergeStructures(n,ve)}var za=ls,yb=ls,xb=ls,bb=ls;function ls(n){let t;if(n<16&&(t=Va(n)))return t;if(n>64&&Ea)return Ea.decode(Q.subarray(N,N+=n));let e=N+n,r=[];for(t="";N<e;){let o=Q[N++];if((o&128)===0)r.push(o);else if((o&224)===192){let i=Q[N++]&63;r.push((o&31)<<6|i)}else if((o&240)===224){let i=Q[N++]&63,s=Q[N++]&63;r.push((o&31)<<12|i<<6|s)}else if((o&248)===240){let i=Q[N++]&63,s=Q[N++]&63,a=Q[N++]&63,l=(o&7)<<18|i<<12|s<<6|a;l>65535&&(l-=65536,r.push(l>>>10&1023|55296),l=56320|l&1023),r.push(l)}else r.push(o);r.length>=4096&&(t+=qe.apply(String,r),r.length=0)}return r.length>0&&(t+=qe.apply(String,r)),t}function Op(n){let t=new Array(n);for(let e=0;e<n;e++)t[e]=Be();return t}function Ap(n){if(mt.mapsAsObjects){let t={};for(let e=0;e<n;e++)t[zp()]=Be();return t}else{let t=new Map;for(let e=0;e<n;e++)t.set(Be(),Be());return t}}var qe=String.fromCharCode;function Gp(n){let t=N,e=new Array(n);for(let r=0;r<n;r++){let o=Q[N++];if((o&128)>0){N=t;return}e[r]=o}return qe.apply(String,e)}function Va(n){if(n<4)if(n<2){if(n===0)return"";{let t=Q[N++];if((t&128)>1){N-=1;return}return qe(t)}}else{let t=Q[N++],e=Q[N++];if((t&128)>0||(e&128)>0){N-=2;return}if(n<3)return qe(t,e);let r=Q[N++];if((r&128)>0){N-=3;return}return qe(t,e,r)}else{let t=Q[N++],e=Q[N++],r=Q[N++],o=Q[N++];if((t&128)>0||(e&128)>0||(r&128)>0||(o&128)>0){N-=4;return}if(n<6){if(n===4)return qe(t,e,r,o);{let i=Q[N++];if((i&128)>0){N-=5;return}return qe(t,e,r,o,i)}}else if(n<8){let i=Q[N++],s=Q[N++];if((i&128)>0||(s&128)>0){N-=6;return}if(n<7)return qe(t,e,r,o,i,s);let a=Q[N++];if((a&128)>0){N-=7;return}return qe(t,e,r,o,i,s,a)}else{let i=Q[N++],s=Q[N++],a=Q[N++],l=Q[N++];if((i&128)>0||(s&128)>0||(a&128)>0||(l&128)>0){N-=8;return}if(n<10){if(n===8)return qe(t,e,r,o,i,s,a,l);{let c=Q[N++];if((c&128)>0){N-=9;return}return qe(t,e,r,o,i,s,a,l,c)}}else if(n<12){let c=Q[N++],h=Q[N++];if((c&128)>0||(h&128)>0){N-=10;return}if(n<11)return qe(t,e,r,o,i,s,a,l,c,h);let p=Q[N++];if((p&128)>0){N-=11;return}return qe(t,e,r,o,i,s,a,l,c,h,p)}else{let c=Q[N++],h=Q[N++],p=Q[N++],u=Q[N++];if((c&128)>0||(h&128)>0||(p&128)>0||(u&128)>0){N-=12;return}if(n<14){if(n===12)return qe(t,e,r,o,i,s,a,l,c,h,p,u);{let d=Q[N++];if((d&128)>0){N-=13;return}return qe(t,e,r,o,i,s,a,l,c,h,p,u,d)}}else{let d=Q[N++],m=Q[N++];if((d&128)>0||(m&128)>0){N-=14;return}if(n<15)return qe(t,e,r,o,i,s,a,l,c,h,p,u,d,m);let g=Q[N++];if((g&128)>0){N-=15;return}return qe(t,e,r,o,i,s,a,l,c,h,p,u,d,m,g)}}}}}function Ba(n){return mt.copyBuffers?Uint8Array.prototype.slice.call(Q,N,N+=n):Q.subarray(N,N+=n)}function Kr(n){let t=Q[N++];if(st[t])return st[t](Q.subarray(N,N+=n));throw new Error("Unknown extension type "+t)}var Dp=new Array(4096);function zp(){let n=Q[N++];if(n>=160&&n<192){if(n=n-160,Jt>=N)return Ar.slice(N-It,(N+=n)-It);if(!(Jt==0&&Dr<180))return za(n)}else return N--,Be();let t=(n<<5^(n>1?we.getUint16(N):n>0?Q[N]:0))&4095,e=Dp[t],r=N,o=N+n-3,i,s=0;if(e&&e.bytes==n){for(;r<o;){if(i=we.getUint32(r),i!=e[s++]){r=1879048192;break}r+=4}for(o+=3;r<o;)if(i=Q[r++],i!=e[s++]){r=1879048192;break}if(r===o)return N=r,e.string;o-=3,r=N}for(e=[],Dp[t]=e,e.bytes=n;r<o;)i=we.getUint32(r),e.push(i),r+=4;for(o+=3;r<o;)i=Q[r++],e.push(i);let a=n<16?Va(n):Gp(n);return a!=null?e.string=a:e.string=za(n)}var Bp=(n,t)=>{var e=Be();let r=n;t!==void 0&&(n=n<32?-((t<<5)+n):(t<<5)+n,e.highByte=t);let o=ve[n];return o&&o.isShared&&((ve.restoreStructures||(ve.restoreStructures=[]))[n]=o),ve[n]=e,e.read=Fa(e,r),e.read()},Rp=typeof self=="object"?self:global;st[0]=()=>{};st[0].noBuffer=!0;st[101]=()=>{let n=Be();return(Rp[n[0]]||Error)(n[1])};st[105]=n=>{let t=we.getUint32(N-4);mr||(mr=new Map);let e=Q[N],r;e>=144&&e<160||e==220||e==221?r=[]:r={};let o={target:r};mr.set(t,o);let i=Be();return o.used?Object.assign(r,i):(o.target=i,i)};st[112]=n=>{let t=we.getUint32(N-4),e=mr.get(t);return e.used=!0,e.target};st[115]=()=>new Set(Be());var Ua=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(n=>n+"Array");st[116]=n=>{let t=n[0],e=Ua[t];if(!e)throw new Error("Could not find typed array for code "+t);return new Rp[e](Uint8Array.prototype.slice.call(n,1).buffer)};st[120]=()=>{let n=Be();return new RegExp(n[0],n[1])};st[98]=n=>{let t=(n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3],e=N;N+=t-4,wt=[Be(),Be()],wt.position0=0,wt.position1=0;let r=N;N=e;try{return Be()}finally{N=r}};st[255]=n=>n.length==4?new Date((n[0]*16777216+(n[1]<<16)+(n[2]<<8)+n[3])*1e3):n.length==8?new Date(((n[0]<<22)+(n[1]<<14)+(n[2]<<6)+(n[3]>>2))/1e6+((n[3]&3)*4294967296+n[4]*16777216+(n[5]<<16)+(n[6]<<8)+n[7])*1e3):n.length==12?new Date(((n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3])/1e6+((n[4]&128?-281474976710656:0)+n[6]*1099511627776+n[7]*4294967296+n[8]*16777216+(n[9]<<16)+(n[10]<<8)+n[11])*1e3):new Date("invalid");function Fp(n){let t=Dr,e=N,r=Ga,o=It,i=Jt,s=Ar,a=_a,l=mr,c=wt,h=new Uint8Array(Q.slice(0,Dr)),p=ve,u=ve.slice(0,ve.length),d=mt,m=_o,g=n();return Dr=t,N=e,Ga=r,It=o,Jt=i,Ar=s,_a=a,mr=l,wt=c,Q=h,_o=m,ve=p,ve.splice(0,ve.length,...u),mt=d,we=new DataView(Q.buffer,Q.byteOffset,Q.byteLength),g}function as(){Q=null,mr=null,ve=null}function Vp(n){n.unpack?st[n.type]=n.unpack:st[n.type]=n}var cs=new Array(147);for(let n=0;n<256;n++)cs[n]=+("1e"+Math.floor(45.15-n*.30103));var hs=new Yt({useRecords:!1}),vb=hs.unpack,Sb=hs.unpackMultiple,wb=hs.unpack,ps={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},Nb=new Float32Array(1),iA=new Uint8Array(Nb.buffer,0,4);var us;try{us=new TextEncoder}catch{}var ds,ka,ms=typeof Buffer<"u",ja=ms?Buffer.allocUnsafeSlow:Uint8Array,Hp=ms?Buffer:Uint8Array,Up=ms?4294967296:2144337920,G,_e,T=0,Kt,Xt=null,Lb=/[\u0080-\uFFFF]/,Di=Symbol("record-id"),Xr=class extends Yt{constructor(t){super(t),this.offset=0;let e,r,o,i,s,a,l=0,c=Hp.prototype.utf8Write?function(f,D,L){return G.utf8Write(f,D,L)}:us&&us.encodeInto?function(f,D){return us.encodeInto(f,G.subarray(D)).written}:!1,h=this;t||(t={});let p=t&&t.sequential,u=t.structures||t.saveStructures,d=t.maxSharedStructures;if(d==null&&(d=u?32:0),d>8160)throw new Error("Maximum maxSharedStructure is 8160");let m=t.maxOwnStructures;m==null&&(m=u?32:64),p&&!t.saveStructures&&(this.structures=[]);let g=d>32||m+d>64,x=d+64,y=d+m+64;if(y>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let b=[],C=0,S=0;this.pack=this.encode=function(f,D){if(G||(G=new ja(8192),_e=new DataView(G.buffer,0,8192),T=0),Kt=G.length-10,Kt-T<2048?(G=new ja(G.length),_e=new DataView(G.buffer,0,G.length),Kt=G.length-10,T=0):T=T+7&2147483640,r=T,a=h.structuredClone?new Map:null,h.bundleStrings?(Xt=["",""],G[T++]=214,G[T++]=98,Xt.position=T-r,T+=4):Xt=null,o=h.structures,o){o.uninitialized&&(o=h._mergeStructures(h.getStructures()));let L=o.sharedLength||0;if(L>d)throw new Error("Shared structures is larger than maximum shared structures, try increasing maxSharedStructures to "+o.sharedLength);if(!o.transitions){o.transitions=Object.create(null);for(let P=0;P<L;P++){let M=o[P];if(!M)continue;let I,k=o.transitions;for(let q=0,oe=M.length;q<oe;q++){let ce=M[q];I=k[ce],I||(I=k[ce]=Object.create(null)),k=I}k[Di]=P+64}l=L}p||(o.nextId=L+64)}i&&(i=!1),s=o||[];try{if(v(f),Xt){_e.setUint32(Xt.position+r,T-Xt.position-r);let L=Xt;Xt=null,v(L[0]),v(L[1])}if(h.offset=T,a&&a.idsToInsert){T+=a.idsToInsert.length*6,T>Kt&&w(T),h.offset=T;let L=Tb(G.subarray(r,T),a.idsToInsert);return a=null,L}return D&Wp?(G.start=r,G.end=T,G):G.subarray(r,T)}finally{if(o){if(S<10&&S++,C>1e4)o.transitions=null,S=0,C=0,b.length>0&&(b=[]);else if(b.length>0&&!p){for(let L=0,P=b.length;L<P;L++)b[L][Di]=0;b=[]}if(i&&h.saveStructures){let L=o.sharedLength||d;o.length>L&&(o=o.slice(0,L));let P=G.subarray(r,T);return h.saveStructures(o,l)===!1?(h._mergeStructures(h.getStructures()),h.pack(f)):(l=L,P)}}D&Bb&&(T=r)}};let v=f=>{T>Kt&&(G=w(T));var D=typeof f,L;if(D==="string"){let P=f.length;if(Xt&&P>=8&&P<4096){let k=Lb.test(f);Xt[k?0:1]+=f,G[T++]=193,v(k?-P:P);return}let M;P<32?M=1:P<256?M=2:P<65536?M=3:M=5;let I=P*3;if(T+I>Kt&&(G=w(T+I)),P<64||!c){let k,q,oe,ce=T+M;for(k=0;k<P;k++)q=f.charCodeAt(k),q<128?G[ce++]=q:q<2048?(G[ce++]=q>>6|192,G[ce++]=q&63|128):(q&64512)===55296&&((oe=f.charCodeAt(k+1))&64512)===56320?(q=65536+((q&1023)<<10)+(oe&1023),k++,G[ce++]=q>>18|240,G[ce++]=q>>12&63|128,G[ce++]=q>>6&63|128,G[ce++]=q&63|128):(G[ce++]=q>>12|224,G[ce++]=q>>6&63|128,G[ce++]=q&63|128);L=ce-T-M}else L=c(f,T+M,I);L<32?G[T++]=160|L:L<256?(M<2&&G.copyWithin(T+2,T+1,T+1+L),G[T++]=217,G[T++]=L):L<65536?(M<3&&G.copyWithin(T+3,T+2,T+2+L),G[T++]=218,G[T++]=L>>8,G[T++]=L&255):(M<5&&G.copyWithin(T+5,T+3,T+3+L),G[T++]=219,_e.setUint32(T,L),T+=4),T+=L}else if(D==="number")if(f>>>0===f)f<64?G[T++]=f:f<256?(G[T++]=204,G[T++]=f):f<65536?(G[T++]=205,G[T++]=f>>8,G[T++]=f&255):(G[T++]=206,_e.setUint32(T,f),T+=4);else if(f>>0===f)f>=-32?G[T++]=256+f:f>=-128?(G[T++]=208,G[T++]=f+256):f>=-32768?(G[T++]=209,_e.setInt16(T,f),T+=2):(G[T++]=210,_e.setInt32(T,f),T+=4);else{let P;if((P=this.useFloat32)>0&&f<4294967296&&f>=-2147483648){G[T++]=202,_e.setFloat32(T,f);let M;if(P<4||(M=f*cs[(G[T]&127)<<1|G[T+1]>>7])>>0===M){T+=4;return}else T--}G[T++]=203,_e.setFloat64(T,f),T+=8}else if(D==="object")if(!f)G[T++]=192;else{if(a){let M=a.get(f);if(M){if(!M.id){let I=a.idsToInsert||(a.idsToInsert=[]);M.id=I.push(M)}G[T++]=214,G[T++]=112,_e.setUint32(T,M.id),T+=4;return}else a.set(f,{offset:T-r})}let P=f.constructor;if(P===Object)z(f,!0);else if(P===Array){L=f.length,L<16?G[T++]=144|L:L<65536?(G[T++]=220,G[T++]=L>>8,G[T++]=L&255):(G[T++]=221,_e.setUint32(T,L),T+=4);for(let M=0;M<L;M++)v(f[M])}else if(P===Map){L=f.size,L<16?G[T++]=128|L:L<65536?(G[T++]=222,G[T++]=L>>8,G[T++]=L&255):(G[T++]=223,_e.setUint32(T,L),T+=4);for(let[M,I]of f)v(M),v(I)}else{for(let M=0,I=ds.length;M<I;M++){let k=ka[M];if(f instanceof k){let q=ds[M];if(q.write){q.type&&(G[T++]=212,G[T++]=q.type,G[T++]=0),v(q.write.call(this,f));return}let oe=G,ce=_e,ne=T;G=null;let J;try{J=q.pack.call(this,f,U=>(G=oe,oe=null,T+=U,T>Kt&&w(T),{target:G,targetView:_e,position:T-U}),v)}finally{oe&&(G=oe,_e=ce,T=ne,Kt=G.length-10)}J&&(J.length+T>Kt&&w(J.length+T),T=Cb(J,G,T,q.type));return}}z(f,!f.hasOwnProperty)}}else if(D==="boolean")G[T++]=f?195:194;else if(D==="bigint"){if(f<BigInt(1)<<BigInt(63)&&f>=-(BigInt(1)<<BigInt(63)))G[T++]=211,_e.setBigInt64(T,f);else if(f<BigInt(1)<<BigInt(64)&&f>0)G[T++]=207,_e.setBigUint64(T,f);else if(this.largeBigIntToFloat)G[T++]=203,_e.setFloat64(T,Number(f));else throw new RangeError(f+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");T+=8}else if(D==="undefined")this.encodeUndefinedAsNil?G[T++]=192:(G[T++]=212,G[T++]=0,G[T++]=0);else if(D==="function")v(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+D)},z=this.useRecords===!1?this.variableMapSize?f=>{let D=Object.keys(f),L=D.length;L<16?G[T++]=128|L:L<65536?(G[T++]=222,G[T++]=L>>8,G[T++]=L&255):(G[T++]=223,_e.setUint32(T,L),T+=4);let P;for(let M=0;M<L;M++)v(P=D[M]),v(f[P])}:(f,D)=>{G[T++]=222;let L=T-r;T+=2;let P=0;for(let M in f)(D||f.hasOwnProperty(M))&&(v(M),v(f[M]),P++);G[L+++r]=P>>8,G[L+r]=P&255}:f=>{let D=Object.keys(f),L,P=s.transitions||(s.transitions=Object.create(null)),M=0;for(let k=0,q=D.length;k<q;k++){let oe=D[k];L=P[oe],L||(L=P[oe]=Object.create(null),M++),P=L}let I=P[Di];if(I)I>=96&&g?(G[T++]=((I-=96)&31)+96,G[T++]=I>>5):G[T++]=I;else{I=s.nextId,I||(I=64),I<x&&this.shouldShareStructure&&!this.shouldShareStructure(D)?(I=s.nextOwnId,I<y||(I=x),s.nextOwnId=I+1):(I>=y&&(I=x),s.nextId=I+1);let k=D.highByte=I>=96&&g?I-96>>5:-1;P[Di]=I,s[I-64]=D,I<x?(D.isShared=!0,s.sharedLength=I-63,i=!0,k>=0?(G[T++]=(I&31)+96,G[T++]=k):G[T++]=I):(k>=0?(G[T++]=213,G[T++]=114,G[T++]=(I&31)+96,G[T++]=k):(G[T++]=212,G[T++]=114,G[T++]=I),M&&(C+=S*M),b.length>=m&&(b.shift()[Di]=0),b.push(P),v(D))}for(let k=0,q=D.length;k<q;k++)v(f[D[k]])},w=f=>{let D;if(f>16777216){if(f-r>Up)throw new Error("Packed buffer would be larger than maximum buffer size");D=Math.min(Up,Math.round(Math.max((f-r)*(f>67108864?1.25:2),4194304)/4096)*4096)}else D=(Math.max(f-r<<2,G.length-1)>>12)+1<<12;let L=new ja(D);return _e=new DataView(L.buffer,0,D),G.copy?G.copy(L,0,r,f):L.set(G.slice(r,f)),T-=r,r=0,Kt=L.length-10,G=L}}useBuffer(t){G=t,_e=new DataView(G.buffer,G.byteOffset,G.byteLength),T=0}};ka=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,Ai];ds=[{pack(n,t,e){let r=n.getTime()/1e3;if((this.useTimestamp32||n.getMilliseconds()===0)&&r>=0&&r<4294967296){let{target:o,targetView:i,position:s}=t(6);o[s++]=214,o[s++]=255,i.setUint32(s,r)}else if(r>0&&r<17179869184){let{target:o,targetView:i,position:s}=t(10);o[s++]=215,o[s++]=255,i.setUint32(s,n.getMilliseconds()*4e6+(r/1e3/4294967296>>0)),i.setUint32(s+4,r)}else if(isNaN(r)){if(this.onInvalidDate)return t(0),e(this.onInvalidDate());let{target:o,targetView:i,position:s}=t(3);o[s++]=212,o[s++]=255,o[s++]=255}else{let{target:o,targetView:i,position:s}=t(15);o[s++]=199,o[s++]=12,o[s++]=255,i.setUint32(s,n.getMilliseconds()*1e6),i.setBigInt64(s+4,BigInt(Math.floor(r)))}}},{pack(n,t,e){let r=Array.from(n),{target:o,position:i}=t(this.structuredClone?3:0);this.structuredClone&&(o[i++]=212,o[i++]=115,o[i++]=0),e(r)}},{pack(n,t,e){let{target:r,position:o}=t(this.structuredClone?3:0);this.structuredClone&&(r[o++]=212,r[o++]=101,r[o++]=0),e([n.name,n.message])}},{pack(n,t,e){let{target:r,position:o}=t(this.structuredClone?3:0);this.structuredClone&&(r[o++]=212,r[o++]=120,r[o++]=0),e([n.source,n.flags])}},{pack(n,t){this.structuredClone?jp(n,16,t):kp(ms?Buffer.from(n):new Uint8Array(n),t)}},{pack(n,t){let e=n.constructor;e!==Hp&&this.structuredClone?jp(n,Ua.indexOf(e.name),t):kp(n,t)}},{pack(n,t){let{target:e,position:r}=t(1);e[r]=193}}];function jp(n,t,e,r){let o=n.byteLength;if(o+1<256){var{target:i,position:s}=e(4+o);i[s++]=199,i[s++]=o+1}else if(o+1<65536){var{target:i,position:s}=e(5+o);i[s++]=200,i[s++]=o+1>>8,i[s++]=o+1&255}else{var{target:i,position:s,targetView:a}=e(7+o);i[s++]=201,a.setUint32(s,o+1),s+=4}i[s++]=116,i[s++]=t,i.set(new Uint8Array(n.buffer,n.byteOffset,n.byteLength),s)}function kp(n,t){let e=n.byteLength;var r,o;if(e<256){var{target:r,position:o}=t(e+2);r[o++]=196,r[o++]=e}else if(e<65536){var{target:r,position:o}=t(e+3);r[o++]=197,r[o++]=e>>8,r[o++]=e&255}else{var{target:r,position:o,targetView:i}=t(e+5);r[o++]=198,i.setUint32(o,e),o+=4}r.set(n,o)}function Cb(n,t,e,r){let o=n.length;switch(o){case 1:t[e++]=212;break;case 2:t[e++]=213;break;case 4:t[e++]=214;break;case 8:t[e++]=215;break;case 16:t[e++]=216;break;default:o<256?(t[e++]=199,t[e++]=o):o<65536?(t[e++]=200,t[e++]=o>>8,t[e++]=o&255):(t[e++]=201,t[e++]=o>>24,t[e++]=o>>16&255,t[e++]=o>>8&255,t[e++]=o&255)}return t[e++]=r,t.set(n,e),e+=o,e}function Tb(n,t){let e,r=t.length*6,o=n.length-r;for(t.sort((i,s)=>i.offset>s.offset?1:-1);e=t.pop();){let i=e.offset,s=e.id;n.copyWithin(i+r,i,o),r-=6;let a=i+r;n[a++]=214,n[a++]=105,n[a++]=s>>24,n[a++]=s>>16&255,n[a++]=s>>8&255,n[a++]=s&255,o=i}return n}function Zr(n){if(n.Class){if(!n.pack&&!n.write)throw new Error("Extension has no pack or write function");if(n.pack&&!n.type)throw new Error("Extension has no type (numeric code to identify the extension)");ka.unshift(n.Class),ds.unshift(n)}Vp(n)}var qp=new Xr({useRecords:!1}),Mb=qp.pack,Pb=qp.pack;var{NEVER:Ib,ALWAYS:Ob,DECIMAL_ROUND:Ab,DECIMAL_FIT:Db}=ps,Wp=512,Bb=1024;var $p=new Xr({structuredClone:!0});Zr({Class:Mt.prototype.constructor,type:1,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,Mt.prototype),n}});Zr({Class:Ae.prototype.constructor,type:2,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,Ae.prototype),n}});Zr({Class:Pt.prototype.constructor,type:3,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,Pt.prototype),n}});Zr({Class:Ii.prototype.constructor,type:4,write(n){return n.id},read(n){return new Ii(n)}});Zr({Class:Oi.prototype.constructor,type:5,write(n){return n.data},read(n){return new Oi(n)}});function Eb(n){var t=0;if(n.length===0)return t;for(let e=0;e<n.length;e++){let r=n[e];t=(t<<5)-t+r,t=t&t}return t}function Ha(n){if(Qn(n))return n;if(Array.isArray(n))return n.map(Ha);if(typeof n=="object"&&n!==null){let t={};for(let e of Object.keys(n).sort())t[e]=Ha(n[e]);return Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}else return n}var fs;(r=>{function n(o){return $p.pack(o)}r.serialize=n;function t(o){return $p.unpack(o)}r.deserialize=t;function e(o){return Eb(n(Ha(o))).toString()}r.checksum=e})(fs||(fs={}));var gs;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function t(r){return e.all.includes(r)}e.is=t})(gs||(gs={}));var ys;(e=>{function n(r){return t(r)}e.defaultData=n;function t(r){if(r==="PointLight")return{type:r,color:Wt.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,depth:1e5,helper:!0};if(r==="SpotLight")return{type:r,color:Wt.white,intensity:1,distance:2e3,decay:1,shadows:!0,penumbra:0,angle:30/180*Math.PI,depth:1e5,helper:!0,shadowResolution:1024,shadowRadius:1};if(r==="DirectionalLight")return{type:r,color:Wt.white,intensity:1,shadows:!0,size:1e3,depth:1e5,shadowResolution:1024,helper:!0,shadowRadius:1};throw new Error("not implemented")}})(ys||(ys={}));var qa;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function t(r,o){return r.castShadow===o.castShadow&&r.receiveShadow===o.receiveShadow}e.equals=t})(qa||(qa={}));var Wa;(e=>{e.defaultData={flatShading:!1,wireframe:!1,side:0};function t(r,o){return r.flatShading===o.flatShading&&r.side===o.side&&r.wireframe===o.wireframe}e.equals=t})(Wa||(Wa={}));var xs;(t=>t.defaultData={...Wa.defaultData,...qa.defaultData,cloner:null,booleanExclude:null})(xs||(xs={}));var $a=(o=>(o[o.Left=1]="Left",o[o.Right=2]="Right",o[o.Center=3]="Center",o[o.Justify=4]="Justify",o))($a||{}),Ja=(r=>(r[r.Top=1]="Top",r[r.Center=2]="Center",r[r.Bottom=3]="Bottom",r))(Ja||{}),Ya=(r=>(r[r.None=1]="None",r[r.Upper=2]="Upper",r[r.Lower=3]="Lower",r))(Ya||{}),bs;(t=>t.defaultData={width:100,height:100,horizontalAlign:1,verticalAlign:1,fontSize:16,lineHeight:1.5,letterSpacing:1,text:"",textTransform:1,color:Wt.fromHexAndA(6974058,1),alpha:1,font:"roboto_regular"})(bs||(bs={}));var Go;(r=>{function n(o,i){return o==="light"&&i?t(i):e(o)}r.defaultData=n;function t(o){switch(o){case"basic":return{type:"light",category:"basic",alpha:1,visible:!0,mode:0};case"phong":return{category:"phong",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1,visible:!0,mode:0};case"toon":return{category:"toon",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1,visible:!0,mode:0};case"lambert":return{category:"lambert",emissive:{r:0,g:0,b:0,a:1},type:"light",alpha:1,visible:!0,mode:0};case"physical":return{category:"physical",roughness:.2,metalness:.2,reflectivity:.2,type:"light",alpha:1,visible:!0,mode:0}}}function e(o){switch(o){case"texture":return{alpha:1,visible:!0,size:[128,128],mode:0,axis:"x",side:2,type:"texture",projection:0,texture:{image:"image_0",wrapping:1001,repeat:[1,1],offset:[0,0]},crop:!0};case"color":return{type:"color",alpha:1,visible:!0,mode:0,color:St.fromHex(4737101)};case"depth":return{type:"depth",alpha:1,visible:!0,mode:0,gradientType:1,smooth:!1,isVector:!0,isWorldSpace:!1,origin:[0,0,0],direction:[1,0,0],colors:[[1,1,1,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1]],steps:[0,1,1,1,1,1,1,1,1,1,1],num:2,near:50,far:200};case"normal":return{type:"normal",alpha:1,visible:!0,mode:0,cnormal:[1,1,1]};case"gradient":return{type:"gradient",alpha:1,visible:!0,mode:0,gradientType:0,smooth:!1,colors:[[0,0,0,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,1,1,1,1,1,1,1,1,1],num:2,angle:0,offset:[0,0],morph:[0,0]};case"noise":return{type:"noise",alpha:1,visible:!0,mode:0,size:[100,100,100],noiseType:0,scale:1,move:1,colorA:{...St.fromHex(6710886),a:1},colorB:{...St.fromHex(6710886),a:1},colorC:{...St.fromHex(16777215),a:1},colorD:{...St.fromHex(16777215),a:1},distortion:[1,1],fA:[1.7,9.2],fB:[8.3,2.8]};case"fresnel":return{type:"fresnel",alpha:1,visible:!0,mode:0,color:Wt.fromHexAndA(16777215,1),bias:.1,scale:1,intensity:2,factor:1};case"rainbow":return{type:"rainbow",alpha:1,visible:!0,mode:0,filmThickness:30,movement:0,wavelengths:[0,0,0],noiseStrength:0,noiseScale:1,offset:[0,0,0]};case"matcap":return{type:"matcap",alpha:1,visible:!0,mode:0,texture:{image:"matcap_0",wrapping:1001,repeat:[1,1],offset:[0,0]}};case"transmission":return{type:"transmission",alpha:1,visible:!0,mode:0,thickness:10,ior:1.5,roughness:1};case"displace":return{type:"displace",displacementType:"noise",noiseType:0,scale:10,movement:1,offset:[0,0,0],intensity:8,visible:!0}}}})(Go||(Go={}));var Qr;(a=>{function n(l){return!l.layers.some(h=>{if(h.data.type==="texture"&&h.data.projection!==0||h.data.type==="depth"&&!h.data.isWorldSpace||h.data.type==="noise"||h.data.type==="displace")return!0})&&!e(l)}a.isMergable=n;function t(l){let c="";return l.layers.forEach(h=>{Object.entries(h.data).forEach(([p,u])=>{c+=`${p}${u}`,Array.isArray(u)?u.forEach(d=>c+=`${d}`):typeof u=="object"?Object.values(u).forEach(d=>{typeof d=="number"?c+=`${d.toFixed(4)}`:c+=`${d}`}):c+=`${u}`})}),c}a.getHash=t;function e(l){let c=0;for(let h of l.layers)"alpha"in h.data&&h.data.type!=="light"&&h.data.type!=="fresnel"&&(c+=(1-c)*h.data.alpha);return c<1}a.isTransparent=e;function r(){return{layers:new Ae}}a.defaultEmptyData=r;function o(l="layer1",c="layer2"){return i("phong",l,c)}a.defaultData=o;function i(l,c="layer1",h="layer2"){let p=new Ae;return p.push({fi:0,data:Go.defaultData("light",l),id:c}),p.push({fi:1,data:Go.defaultData("color"),id:h}),{layers:p}}a.defaultTwoLayerData=i;function s(l,c="basic",h="layer1",p="layer2"){let u=Go.defaultData("texture");Object.assign(u.texture,{image:l});let d=new Ae;return d.push({fi:0,data:u,id:h}),d.push({fi:1,data:Go.defaultData("light",c),id:p}),{layers:d}}a.defaultTwoLayerTextureData=s})(Qr||(Qr={}));var zo;(t=>{function n(){return{points:new Ae,roundness:0,shapeHoles:[],isClosed:!1}}t.defaultData=n})(zo||(zo={}));var vs;(t=>{function n(e){return e==="PolygonGeometry"||e==="RectangleGeometry"||e==="StarGeometry"||e==="TriangleGeometry"||e==="EllipseGeometry"}t.is2DParametricMesh=n})(vs||(vs={}));var Bi;(t=>{function n(e){if(e==="RectangleGeometry")return{width:320,height:320,type:e,cornerRadius:[0,0,0,0],cornerType:0,depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="VectorGeometry")return{width:1,height:1,type:e,subdivisions:12,shape:zo.defaultData(),depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="BooleanGeometry")return{type:e,operation:2,width:0,height:0,depth:0,phongAngle:35};throw new Error("not implemented")}t.defaultData=n})(Bi||(Bi={}));var Ei;(o=>{o.identity={...Kn.identity,hiddenMatrix:Or.identity};function t(i){return{position:i.position,rotation:i.rotation,scale:i.scale,hiddenMatrix:i.hiddenMatrix}}o.fromObject=t;function e(i,s){return{position:s?.position||i.position,rotation:s?.rotation||i.rotation,scale:s?.scale||i.scale,hiddenMatrix:s?.hiddenMatrix||i.hiddenMatrix}}o.merge=e;function r(i,s){return{position:Ao.isEqual(i.position,s.position)?null:s.position,rotation:Ao.isEqual(i.rotation,s.rotation)?null:s.rotation,scale:Ao.isEqual(i.scale,s.scale)?null:s.scale,hiddenMatrix:Or.isEqual(i.hiddenMatrix,s.hiddenMatrix)?null:s.hiddenMatrix}}o.diff=r})(Ei||(Ei={}));var fr;(t=>t.defaultData={states:new Ae,events:new Ae,visible:!0,raycastLock:!1,...Ei.identity})(fr||(fr={}));var Jp;(t=>t.defaultData={type:"Empty",...fr.defaultData})(Jp||(Jp={}));var Ss;(t=>t.defaultData={type:"Mesh",...fr.defaultData,...xs.defaultData})(Ss||(Ss={}));var Yp;(t=>t.defaultData={type:"TextFrame",...fr.defaultData,...bs.defaultData})(Yp||(Yp={}));var ws;(t=>t.defaultData={...fr.defaultData,...Ei.identity,...Yr.defaultData})(ws||(ws={}));var Kp;(t=>{function n(e){return{...fr.defaultData,...ys.defaultData(e)}}t.defaultData=n})(Kp||(Kp={}));var Xp;(r=>(r.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:Or.identity,name:"Play Camera",visible:!0,raycastLock:!1,states:new Ae,events:new Ae,...Yr.defaultData},r.defaultMeshObject={name:"Rectangle",...fr.defaultData,...Ss.defaultData,geometry:Bi.defaultData("RectangleGeometry"),material:Qr.defaultTwoLayerData("basic","layer1","layer2")},r.defaultBooleanObject={name:"Boolean",...fr.defaultData,...Ss.defaultData,geometry:Bi.defaultData("BooleanGeometry"),material:Qr.defaultTwoLayerData("phong","layer1","layer2")}))(Xp||(Xp={}));var Zp;(e=>{function n(r,o){if(o===void 0)return r;let i={...r};return"material"in i&&"material"in o&&o.material&&(i.material=Aa(i.material,s=>{if(typeof s!="string")for(let[a,l]of Object.entries(o.material.layers)){let c=s.layers.data(a);c&&Jr(c,l)}}).data),i.materials&&o.materials&&(i.materials=Aa(i.materials,s=>{for(let a=0;a<i.materials.length;a++){let l=o.materials[a];if(typeof l!="string")for(let[c,h]of Object.entries(l.layers)){let p=s[a]?.layers?.data(c);p&&Jr(p,h)}}}).data),i}e.patchMaterialState=n;function t(r,o){if(o===void 0)return r;let i={...r};if(Object.assign(i,Ei.merge(i,o)),Oo.is(r.type)){i.orthographic={...i.orthographic},i.perspective={...i.perspective};let s=o;s.orthographic?.zoom!==void 0&&(i.orthographic.zoom=s.orthographic.zoom),s.perspective?.zoom!==void 0&&(i.perspective.zoom=s.perspective.zoom),s.isUpVectorFlipped!==void 0&&(i.isUpVectorFlipped=s.isUpVectorFlipped),s.targetOffset!==void 0&&(i.targetOffset=s.targetOffset)}else if(r.type==="Mesh")i.geometry={...i.geometry},Object.assign(i.geometry,o.geometry),i=n(i,o);else if(gs.is(r.type)){let s=o;i.intensity!==void 0&&(i.intensity=s.intensity),s.color!==void 0&&(typeof s.color=="string"?i.color=s.color:i.color=St.clone(s.color))}return i}e.patch=t})(Zp||(Zp={}));import{ConeBufferGeometry as zb}from"three";import{BufferGeometry as _b,CylinderBufferGeometry as Gb,Float32BufferAttribute as Ka,Vector2 as Gt,Vector3 as Ns}from"three";var eu=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:64,heightSegments:1,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadius:0,cornerSegments:8,hollow:0},n.parameters),r=e.width/2,o=e.radiusTop??r,i=e.radiusBottom??r;return o===i?(o=r,i=r):o>i?(o=r,i=i*r/o):(o=o*r/i,i=r),{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width),radiusTop:o,radiusBottom:i})}}static build(n){let{width:t,depth:e,height:r,radialSegments:o,heightSegments:i,openEnded:s,thetaStart:a,thetaLength:l,radiusTop:c,radiusBottom:h,cornerRadius:p,cornerSegments:u,hollow:d}=n.parameters,m;return p||d?m=new _i(c,h,r,o,i,s,a,l*Math.PI/180,p,p,u,d):m=new Gb(c,h,r,o,i,s,a,l*Math.PI/180),m.scale(1,1,e/t),Object.assign(m,{userData:{...n,type:"CylinderGeometry"}})}};function Br(n,t,e){e.x=n.x*t.x,e.y=n.y,e.z=n.x*t.y}function Qp(n){return new Gt(n.y,-n.x)}var _i=class extends _b{constructor(t,e,r,o,i,s,a,l,c,h,p,u,d=!1){super(),this.type="RoundedCylinderBufferGeometry",t=t!==void 0?t:1,e=e!==void 0?e:1,r=r||1,o=Math.floor(o)||8,i=Math.floor(i)||1,s=s!==void 0?s:!1,a=a!==void 0?a:0,l=l!==void 0?l:Math.PI*2,s&&(c=0,h=0);let m=[],g=[],x=[],y=[],b=0,C=r/2,S=new Ns,v=new Ns;d&&t==0&&(t=c),d&&e==0&&(e=h);let z=new Gt(t,C),w=new Gt(e,-C),f=null,D=null,L=null,P=null,M=z.clone().sub(w),I=0,k=0,q=0;u>0&&(I=Math.min(t,e)*(1-u),k=t-I,q=e-I);let oe=z.clone();oe.x-=I;let ce=Math.PI-M.angle(),ne=M.angle(),J=Math.tan(ne/2),U=Math.tan(ce/2),R=J+U,E=u?R:U,B=u?R:J;if(c=Math.min(c,(t-k)/E,M.length()/R),h=Math.min(h,(e-q)/B,M.length()/R),c>0){let V=c/J;f=z.clone().sub(new Gt(V,c)),u&&(L=f.clone(),L.x-=I-R*c),z.sub(M.clone().setLength(V))}if(h>0){let V=h/U;D=w.clone().sub(new Gt(V,-h)),w.add(M.clone().setLength(V)),u&&(P=D.clone(),P.x-=I-R*h,oe.sub(M.clone().setLength(V)))}M=z.clone().sub(w);let O=M.length()<.5,_=[];for(let V=0;V<=o;V++){let A=[],W=V/o,X=W*l+a,Z=new Gt(Math.sin(X),Math.cos(X));P&&D?(Y(A,W,Z,ce,h,P,-1,!0),Y(A,W,Z,ne,h,D,-1,!1)):D?(j(A,Z,D.x,0,-1),Y(A,W,Z,ne,h,D,-1,!1)):s||j(A,Z,e,q,-1);let H=Qp(M).normalize();if(Br(H,Z,S),!O)for(let K=0;K<=i;K++){let $=K/i,re=M.clone().multiplyScalar($).add(w);Br(re,Z,v),g.push(v.x,v.y,v.z),x.push(S.x,S.y,S.z),y.push(W,.5+v.y/r),A.push(b++)}if(L&&f?(Y(A,W,Z,ce,c,f,1,!1),Y(A,W,Z,ne,c,L,1,!0)):f?(Y(A,W,Z,ce,c,f,1,!1),j(A,Z,f.x,0,1)):s||j(A,Z,t,k,1),u&&!O){let K=Qp(M).multiplyScalar(-1).normalize();Br(K,Z,S);for(let $=0;$<=i;$++){let re=$/i,ae=M.clone().multiplyScalar(-re).add(oe);Br(ae,Z,v),g.push(v.x,v.y,v.z),x.push(S.x,S.y,S.z),y.push(W,.5+v.y/r),A.push(b++)}}u&&!s&&A.push(A[0]),_.push(A)}for(let V=0;V<_.length-1;V++)for(let A=0;A<_[0].length-1;A++){if(s&&u&&A==i)continue;let W=_[V][A],X=_[V+1][A],Z=_[V+1][A+1],H=_[V][A+1],K=g[Z*3+0],$=g[Z*3+2];m.push(W,X,H),(K!=0||$!=0)&&m.push(X,Z,H)}l<Math.PI*2&&(F(-1,_[0],a),F(1,_[_.length-1],a+l)),this.setIndex(m),this.setAttribute("position",new Ka(g,3)),this.setAttribute("normal",new Ka(x,3)),this.setAttribute("uv",new Ka(y,2));function Y(V,A,W,X,Z,H,K,$){for(let re=0;re<p+1;re++){let ae=re/p,ie=K<0?ae:1-ae;$&&(ie-=1),ie*=X;let me=new Gt(Math.sin(ie),Math.cos(ie)*K),De=me.clone().multiplyScalar(Z).add(H);Br(De,W,v),g.push(v.x,v.y,v.z),Br(me,W,S),x.push(S.x,S.y,S.z),y.push(A,.5+v.y/r),V.push(b++)}}function j(V,A,W,X,Z){let H=new Ns,K=new Gt,$=[W,X];Z<0&&$.reverse();for(let re of $)K.set(re,C*Z),Br(K,A,H),g.push(H.x,H.y,H.z),x.push(0,Z,0),y.push(.5,.5),V.push(b++)}function F(V,A,W){let X=new Gt(Math.sin(W),Math.cos(W)),Z=new Gt(-Math.cos(W),Math.sin(W)),H=new Ns,K=V<0?(ae,ie,me)=>m.push(ae,ie,me):(ae,ie,me)=>m.push(ae,me,ie),$=new Gt((t+e+k+q)/4,0);Br($,X,H),g.push(H.x,H.y,H.z),x.push(Z.x,0,Z.y),y.push(.5,.5);let re=b++;for(let ae of A){let ie=g.slice(ae*3,ae*3+3);g.push(...ie),x.push(Z.x,0,Z.y);let me=y.slice(ae*2,ae*2+2);y.push(...me),b++}for(let ae=re+1;ae<b-1;ae++)K(re,ae,ae+1);K(re,b-1,re+1)}}};var tu=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:32,heightSegments:8,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadiusTop:0,cornerRadiusBottom:0,cornerSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:t,depth:e,height:r,radialSegments:o,heightSegments:i,openEnded:s,thetaStart:a,thetaLength:l,cornerRadiusTop:c,cornerRadiusBottom:h,cornerSegments:p}=n.parameters,u;return c>0||h>0||l<360?u=new _i(0,t/2,r,o,i,s,a,l*Math.PI/180,c,h,p,0,!0):u=new zb(t/2,r,o,i,s),u.scale(1,1,e/t),Object.assign(u,{userData:{...n,type:"ConeGeometry"}})}};import{BoxBufferGeometry as Rb,BufferGeometry as Fb,Float32BufferAttribute as Xa,Vector3 as Gi}from"three";var ru=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,widthSegments:1,heightSegments:1,depthSegments:1,cornerRadius:0,cornerSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:t,height:e,depth:r,widthSegments:o,heightSegments:i,depthSegments:s,cornerRadius:a,cornerSegments:l}=n.parameters,c;return a==0?c=new Rb(t,e,r,o,i,s):c=new Qa(t,e,r,o,i,s,a,l),Object.assign(c,{userData:{...n,type:"CubeGeometry"}})}},Za=Math.PI/2,Qa=class extends Fb{constructor(t=1,e=1,r=1,o=1,i=1,s=1,a=0,l=4){super(),this.type="BoxBufferGeometry";let c=this;o=Math.floor(o),i=Math.floor(i),s=Math.floor(s),l=Math.floor(l),a=Math.min(a,t/2,e/2,r/2);let h=[],p=[],u=[],d=[],m=0,g=0;x("z","y","x",-1,-1,r,e,t,s,i,0),x("z","y","x",1,-1,r,e,-t,s,i,1),x("x","z","y",1,1,t,r,e,o,s,2),x("x","z","y",1,-1,t,r,-e,o,s,3),x("x","y","z",1,-1,t,e,r,o,i,4),x("x","y","z",-1,-1,t,e,-r,o,i,5),a>0&&(y("z","y","x",-1,-1,1,r,e,t,s,0),y("z","y","x",1,-1,-1,r,e,t,s,1),y("z","y","x",-1,1,-1,r,e,t,s,1),y("z","y","x",1,1,1,r,e,t,s,0),y("x","y","z",-1,-1,-1,t,e,r,o,0),y("x","y","z",1,-1,1,t,e,r,o,1),y("x","y","z",-1,1,1,t,e,r,o,0),y("x","y","z",1,1,-1,t,e,r,o,1),y("y","x","z",-1,-1,1,e,t,r,i,0),y("y","x","z",1,-1,-1,e,t,r,i,1),y("y","x","z",1,1,1,e,t,r,i,1),y("y","x","z",-1,1,-1,e,t,r,i,0),b(1,1,1),b(-1,1,1),b(1,-1,1),b(-1,-1,1),b(1,1,-1),b(-1,1,-1),b(1,-1,-1),b(-1,-1,-1)),this.setIndex(h),this.setAttribute("position",new Xa(p,3)),this.setAttribute("normal",new Xa(u,3)),this.setAttribute("uv",new Xa(d,2));function x(C,S,v,z,w,f,D,L,P,M,I){let k=(f-2*a)/P,q=(D-2*a)/M,oe=f/2-a,ce=D/2-a,ne=L/2,J=P+1,U=M+1,R=0,E=0,B=new Gi;for(let O=0;O<U;O++){let _=O*q-ce;for(let Y=0;Y<J;Y++){let j=Y*k-oe;B[C]=j*z,B[S]=_*w,B[v]=ne,p.push(B.x,B.y,B.z),B[C]=0,B[S]=0,B[v]=L>0?1:-1,u.push(B.x,B.y,B.z),d.push(Y/P),d.push(1-O/M),R+=1}}for(let O=0;O<M;O++)for(let _=0;_<P;_++){let Y=m+_+J*O,j=m+_+J*(O+1),F=m+(_+1)+J*(O+1),V=m+(_+1)+J*O;h.push(Y,j,V),h.push(j,F,V),E+=6}c.addGroup(g,E,I),g+=E,m+=R}function y(C,S,v,z,w,f,D,L,P,M,I){let k=(D-2*a)/M,q=D/2-a,oe=L/2-a,ce=P/2,ne=M+1,J=0,U=0,R=new Gi,E=new Gi;for(let B=0;B<l+1;B++){let O=B/l*Za,_=Math.sin(O)*a,Y=(1-Math.cos(O))*a,j=Math.sin(O),F=Math.cos(O);R[S]=(oe+_)*w,R[v]=(ce-Y)*f,E[C]=0,E[S]=j*Math.sign(R[S]),E[v]=F*Math.sign(R[v]);for(let V=0;V<ne;V++){let A=V*k-q;R[C]=A*z,p.push(R.x,R.y,R.z),u.push(E.x,E.y,E.z),d.push(V/M),d.push(0),J+=1}}for(let B=0;B<l;B++)for(let O=0;O<M;O++){let _=m+O+ne*B,Y=m+O+ne*(B+1),j=m+(O+1)+ne*(B+1),F=m+(O+1)+ne*B;h.push(_,Y,F),h.push(Y,j,F),U+=6}c.addGroup(g,U,I),g+=U,m+=J}function b(C,S,v){let z=new Gi,w=new Gi(t/2,e/2,r/2);w.subScalar(a);let f=[],D=C*S*v>0?(P,M,I)=>h.push(P,M,I):(P,M,I)=>h.push(P,I,M);for(let P=0;P<=l;P++){let M=[],I=Za*(1-P/l),k=Math.cos(I),q=Math.sin(I),oe=0;for(let ce=0;ce<=P;ce++){let ne=Math.cos(oe),J=Math.sin(oe);z.x=k*ne,z.y=q,z.z=k*J;let U=w.clone().addScaledVector(z,a);p.push(C*U.x,S*U.y,v*U.z),u.push(C*z.x,S*z.y,v*z.z),d.push(0,0),M.push(m++),oe+=Za/P}f.push(M)}let L=f.length-1;for(let P=0;P<L;P++){let M=f[P],I=f[P+1],k=M.length-1;D(M[0],I[1],I[0]);for(let q=1;q<=k;q++)D(M[q-1],M[q],I[q]),D(M[q],I[q+1],I[q])}}}};import{BufferGeometry as Vb,Float32BufferAttribute as el,Triangle as Ub,Vector3 as gr,Vector2 as tl}from"three";var Er=class extends Vb{constructor(t=[],e=[],r="",o=1,i=.2,s=4){super(),this.type="PolyhedronGeometryRound";let a=[],l=[],c=[];h(),p(),this.setAttribute("position",new el(a,3)),this.setAttribute("normal",new el(c,3)),this.setAttribute("uv",new el(l,2));return;function h(){i=Math.min(1-1e-5,i),i==0&&(s=0);let d={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[r],m=new gr,g=m.clone(),x=new Ub,y=i*o,b=o-y,C=s+1,S=new gr,v=(J,U)=>S.subVectors(J,U).normalize(),z=(J,U)=>Array(J).fill(void 0).map(U),w=z(t.length/3,(J,U)=>new gr().fromArray(t,U*3).setLength(o)),f=[],D=1e6;for(let J=0;J<w.length;J++){let U=w[J],R=[],E,B,O,_=1e10,Y=-1;for(;(Y=e.indexOf(J,Y+1))!=-1;){let A=Y-Y%3;E=e[A+(Y+1)%3],B=e[A+(Y+2)%3],O=U.distanceToSquared(w[E]),_=Math.min(_,O),R.push([E,B,O])}_+=1e-6;let j=[],F=0,V=R.length;for(let A=0;A<V;A++){[E,B,O]=R[F];let W=f[E]?.includes(J)==!0;O<=_&&j.push(E+ +W*D),F=R.findIndex(X=>X[0]==B)}f.push(j)}let L=[];{let J=0,U=0,R,E,B=d==3;for(let O=0;O<=s;O++){R=O*(O+1)/2,E=(O+1)*(O+2)/2;for(let _=0;_<s-O;_++)[J,U]=[R+_+O+2,E+_+O+3],L.push(R,E,...B?[U,R]:[J,E],U,J),[R,E]=[J,U];L.push(R,E,R+s+2)}}let P=m.clone(),M=m.clone(),I=m.clone(),k=m.clone(),q=m.clone(),oe=[],ce=z(w.length,()=>z(d,()=>m.clone()));for(let J=0;J<w.length;J++){m.copy(w[J]).normalize(),P.copy(m).multiplyScalar(b);let U=f[J];for(let j=0;j<U.length;j++){let F=U[j],V=U[(j+1)%d];x.setFromPointsAndIndices(w,J,F%D,V%D),x.b.sub(x.a).setLength(1e10).add(x.a),x.c.sub(x.a).setLength(1e10).add(x.a),x.closestPointToPoint(P,ce[J][j])}let R=[],E=[],B=[],O=new gr;s==0&&[...ce[J]].reduce((j,F)=>j.add(F),O).multiplyScalar(1/d);for(let j=0;j<d;j++){let F=[],V=(j-1+d)%d,A=ce[J][V],W=ce[J][j];m.copy(A).sub(P),g.copy(W).sub(P);let X=P.angleTo(m),Z=m.angleTo(g),H=Math.cos(X)*y;s==0?M.copy(O):M.copy(P).setLength(b+H),E.push(H);let K=[M,A,W];for(let $=0;$<2;$++){let re=K[$],ae=K[$+1];k.subVectors(re,P),q.subVectors(ae,P),I.crossVectors(k,q).normalize();for(let ie=0;ie<C;ie++){let me=[X,Z][$]*ie/C;m.copy(k).applyAxisAngle(I,me).add(P),R.push(m.clone()),$&&(v(m,P),F.push([ie==0?re:m.clone(),S.clone()]))}$&&(v(ae,P),F.push([ae,S.clone()]))}B.push(F)}oe.push(B);let _=2*C,Y=2;for(let j=0;j<d;j++){let F=_*j,V=_*((j+1)%d),A=[R[F]];for(let X=1;X<C;X++){k=R[F+X],q=R[V+X],A.push(k);for(let Z=1,H=X-Y+1;Z<=H;Z++)m.lerpVectors(k,q,Z/(H+1)),m.sub(P).setLength(E[j]).add(P),A.push(m.clone());A.push(q)}for(let X=0;X<C;X++)A.push(R[X+C+F]);A.push(R[V+C]);let W=L.map(X=>A[X]);a.push(...W.map(X=>[X.x,X.y,X.z]).flat()),c.push(...W.map(X=>(v(X,P),[S.x,S.y,S.z])).flat())}}let ne=[];for(let J=0;J<f.length;J++)for(let U=0;U<d;U++){let R=f[J][U];if(R<D){let E=f[R].findIndex(_=>_%D==J),B=oe[J][U],O=oe[R][E];for(let _=0;_<C;_++){let Y=B[_],j=O[C-_],F=B[_+1],V=O[C-(_+1)];[Y,j,F,F,j,V].forEach(A=>{a.push(A[0].x,A[0].y,A[0].z),c.push(A[1].x,A[1].y,A[1].z)})}ne.push(B[0][0],O[C][0],B[C][0],O[0][0])}}for(;ne.length;){let J,U,R,E;[J,U]=ne.splice(0,2);let B=[J];for(;J!=U;)B.push(U),R=ne.indexOf(U),E=R%2,U=ne.splice(R-E,2)[1-E];S.subVectors(B[0],B[1]).cross(m.subVectors(B[0],B[2])).normalize();let O=S.dot(B[0])<0;O&&S.negate();for(let _=1;_<=B.length-2;_++)[B[_+ +O],B[_+1-+O],B[0]].forEach(Y=>{a.push(Y.x,Y.y,Y.z),c.push(S.x,S.y,S.z)})}}function p(){let u=new gr;for(let w=0;w<a.length;w+=3){u.x=a[w+0],u.y=a[w+1],u.z=a[w+2];let f=v(u)/2/Math.PI+.5,D=z(u)/Math.PI+.5;l.push(f,1-D)}let d=new gr,m=new gr,g=new gr,x=new gr,y=new tl,b=new tl,C=new tl,S=(w,f,D,L)=>{L<0&&w.x===1&&(l[f]=w.x-1),D.x===0&&D.z===0&&(l[f]=L/2/Math.PI+.5)};for(let w=0,f=0;w<a.length;w+=9,f+=6){d.set(a[w+0],a[w+1],a[w+2]),m.set(a[w+3],a[w+4],a[w+5]),g.set(a[w+6],a[w+7],a[w+8]),y.set(l[f+0],l[f+1]),b.set(l[f+2],l[f+3]),C.set(l[f+4],l[f+5]),x.copy(d).add(m).add(g).divideScalar(3);let D=v(x);S(y,f+0,d,D),S(b,f+2,m,D),S(C,f+4,g,D)}for(let w=0;w<l.length;w+=6){let f=l[w+0],D=l[w+2],L=l[w+4],P=Math.max(f,D,L),M=Math.min(f,D,L);P>.9&&M<.1&&(f<.2&&(l[w+0]+=1),D<.2&&(l[w+2]+=1),L<.2&&(l[w+4]+=1))}function v(w){return Math.atan2(w.z,-w.x)}function z(w){return Math.atan2(-w.y,Math.sqrt(w.x*w.x+w.z*w.z))}}}static fromJSON(t){return new Er(t.vertices,t.indices,t.radius,t.corner,t.cornerSides)}};import{DodecahedronBufferGeometry as jb}from"three";var ou=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,detail:0,corner:0,cornerSides:4},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:t,height:e,depth:r,detail:o,corner:i,cornerSides:s}=n.parameters,a=o===0&&i!==0?new zi(t*.5,i,s):new jb(t*.5,o);return a.scale(1,e/t,r/t),Object.assign(a,{userData:{...n,type:"DodecahedronGeometry"}})}},zi=class extends Er{constructor(t=1,e=.2,r=4){let o=(1+Math.sqrt(5))/2,i=1/o,s=[-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-i,-o,0,-i,o,0,i,-o,0,i,o,-i,-o,0,-i,o,0,i,-o,0,i,o,0,-o,0,-i,o,0,-i,-o,0,i,o,0,i],a=[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9],l="DodecahedronGeometry";super(s,a,l,t,e,r),this.type=l}static fromJSON(t){return new zi(t.radius,t.corner,t.cornerSides)}};import{EventDispatcher as Qb,Plane as ev,Shape as xu,Vector2 as yr,Vector3 as tv,MathUtils as ll,LineCurve as cl,QuadraticBezierCurve as bu,CubicBezierCurve as Ms}from"three";import{CubicBezierCurve as Ls,EllipseCurve as kb,LineCurve as Cs,LineCurve3 as Hb,MathUtils as qb,QuadraticBezierCurve as ol,SplineCurve as Wb,Vector2 as et,Vector3 as su}from"three";var Ri=1e-12,Ro=class{constructor(t){this.position=new et;this.startPosition=new et;this.uuid=qb.generateUUID();this.position=t.clone()}start(){this.reset()}reset(){this.startPosition.copy(this.position)}applyOffset(t){this.position.copy(this.startPosition).add(t)}copy(t){return this.position.copy(t.position),this.startPosition.copy(t.startPosition),this}clone(){return new Ro(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},Fo=class extends Ro{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new Fo(this.parent).copy(this)}},zt=class extends Ro{constructor(e,r){super(r);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new Fo(this),new Fo(this))}static create(e,r){let o=new zt(e,new et(...r.position));return o.controls[0].position.set(...r.controlPrevious.position),o.controls[1].position.set(...r.controlNext.position),o.roundness=r.roundness,o.areControlsDirectionsMirrored=r.areControlsDirectionsMirrored,o}getOppositeControl(e){let r=this.controls.indexOf(e);return r===0?this.controls[1]:r===1?this.controls[0]:null}applyOffsetToControls(e,r=1){for(let o=0,i=this.controls.length;o<i;o++){let s=this.controls[o];this.position.distanceTo(s.position)<=r?s.position.copy(this.position):s.applyOffset(e)}}controlsMoved(){return!(this.position.equals(this.controls[0].position)&&this.position.equals(this.controls[1].position))}copy(e){return super.copy(e),this.controls[0].copy(e.controls[0]),this.controls[1].copy(e.controls[1]),this.roundness=e.roundness,this.uuid=e.uuid,this}clone(){return new zt(this.uuid,this.position).copy(this)}toJSON(){return super.toJSON().concat(this.controls[0].toJSON(),this.controls[1].toJSON(),[this.roundness])}computeTangents(){let e=this.curveBefore?.getTangentAt(1),r=this.curveAfter?.getTangentAt(0);return[e,r]}computeNormals(e=new et,r=new et){let[o,i]=this.computeTangents();return o&&i&&(iu(o,e),iu(i,r)),[e,r]}computeTangent(e=new et){let[r,o]=this.computeTangents();return r&&o&&e.copy(r).add(o).normalize(),e}computeNormal(e=new et){let[r,o]=this.computeNormals();return e.copy(r).add(o).normalize(),e}};function iu(n,t=new et){let e=n.length();return t.set(-n.y/e,n.x/e)}var il=n=>n,Vo=new et,Ts=new et,$b=new et,Jb=new et,Yb=new et,Kb=new et,au=new su,lu=new su;function cu(n){let t=new et;t.addVectors(n.v0,Vo.subVectors(n.v1,n.v0).multiplyScalar(2/3));let e=new et;return e.addVectors(n.v2,Ts.subVectors(n.v1,n.v2).multiplyScalar(2/3)),new Ls(n.v0,t,e,n.v2)}function Fi(n,t,e=Number.EPSILON){return Math.abs(n-t)<e}function Xb(n,t,e=Number.EPSILON){return n.distanceTo(t)<e}function Zb(n,t,e=Number.EPSILON){return n.distanceTo(t)<e}function nl(n,t,e){let r=Math.sqrt(Math.pow(t.x-n.x,2)+Math.pow(t.y-n.y,2)),o=Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2)),i=Math.sqrt(Math.pow(e.x-n.x,2)+Math.pow(e.y-n.y,2));return Math.acos((o*o+r*r-i*i)/(2*o*r))}function hu(n,t,e){return nu(n,t)&&nu(t,e)&&rl(n.position,t.position,e.position)}function rl(n,t,e){return Vo.copy(t).sub(n).cross(Ts.copy(e).sub(n))===0}function pu(n,t,e,r,o){let i=Math.sqrt(Math.pow(t.x-n.x,2)+Math.pow(t.y-n.y,2)),s=(n.y+t.y)/2,a=(n.x+t.x)/2,l=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(n.y-t.y)/i,c=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(t.x-n.x)/i;return r.set(a+l,s+c),o.set(a-l,s-c),[r,o]}function uu(n,t,e){let r=n.distanceTo(e),o=t.distanceTo(e);return r<o?t:n}function du(n,t,e,r,o,i){let s=t.x-n.x,a=t.y-n.y,l=e.x-n.x,c=e.y-n.y,h=Math.sqrt((s+l)*(s+l)+(a+c)*(a+c)),p;return nl(t,n,e)>Math.PI&&(h*=-1),Fi(c,a)?p=(a+c)*(r/h-.5)*8/3/(s-l):p=(s+l)*(r/h-.5)*8/3/(c-a),o.set(t.x-p*a,t.y+p*s),i.set(e.x+p*c,e.y-p*l),[o,i]}function sl(n,t){return n.position.equals(n.controls[1].position)&&t.position.equals(t.controls[0].position)}function nu(n,t){return rl(n.position,n.controls[1].position,t.position)&&rl(n.position,t.controls[0].position,t.position)}function mu(n,t,e,r,o=.5){let i=Vo.subVectors(t,n).multiplyScalar(o).add(n),s=Ts.subVectors(e,t).multiplyScalar(o).add(t),a=$b.subVectors(r,e).multiplyScalar(o).add(e),l=i,c=Jb.subVectors(s,i).multiplyScalar(o).add(i),h=Yb.subVectors(a,s).multiplyScalar(o).add(s),p=a,u=Kb.subVectors(h,c).multiplyScalar(o).add(c);return[n.x,n.y,l.x,l.y,c.x,c.y,u.x,u.y,h.x,h.y,p.x,p.y,r.x,r.y]}function fu(n,t,e=12,r=!0){let o=lu.set(0,0,0),i,s=0,a=[];for(let l=0;l<t.length;l++){let c=il(t[l]),h=Vo,p=_r(c,e);a.push(p);for(let u=0;u<=p;u++)if(c instanceof Ls||c instanceof ol||c instanceof Cs){if(c.getPoint(u/p,h),o.set(h.x,h.y,0),i!==void 0&&Zb(i,o))continue;i===void 0&&(i=au),i.copy(o),n.setXYZ(s,o.x,o.y,o.z),s++}}return r&&s>1&&!(n.getX(s-1)===n.getX(0)&&n.getY(s-1)===n.getY(0)&&n.getZ(s-1)===n.getZ(0))&&(n.setXYZ(s,n.getX(0),n.getY(0),n.getZ(0)),s++),n}function gu(n,t,e,r=12,o=!0){let i=lu.set(0,0,0),s=0,a=[];for(let l=0;l<t.length;l++){if(e[l]===!1)continue;let c,h=il(t[l]),p=Vo,u=_r(h,r);a.push(u);for(let d=0;d<=u;d++)if(h instanceof Ls||h instanceof ol||h instanceof Cs){if(h.getPoint(d/u,p),i.set(p.x,p.y,0),c?.equals(i))continue;c===void 0?c=au:(n.setXYZ(s,c.x,c.y,c.z),s++,n.setXYZ(s,i.x,i.y,i.z),s++),c.copy(i)}}return o&&s>1&&!(n.getX(s-1)===n.getX(0)&&n.getY(s-1)===n.getY(0)&&n.getZ(s-1)===n.getZ(0))&&(n.setXYZ(s,n.getX(0),n.getY(0),n.getZ(0)),s++),a}function al(n,t=12,e=!1){let r=[];for(let o=0,i=n.length;o<i;o++){let s=n[o],a=0;if(e&&s.roundedCurveCorner!==void 0){let l=_r(s.roundedCurveCorner,t)*.5;o>0&&(r[o-1]+=l),a+=l}s.curveAfter!==void 0&&(a+=_r(s.curveAfter,t)),r.push(a)}return n.length>0&&e&&n[0].roundedCurveCorner!==void 0&&(r[n.length-1]+=_r(n[0].roundedCurveCorner,t)*.5),r}function _r(n,t=12){return n&&n instanceof kb?t*2:n&&(n instanceof Cs||n instanceof Hb)?1:n&&n instanceof Wb?t*n.points.length:t}function yu(n,t,e=12,r=!0){let o,i=0;for(let s=0;s<t.length;s++){let a=il(t[s]),l=_r(a,e),c=Vo;for(let h=0;h<=l;h++)if(a instanceof Ls||a instanceof ol||a instanceof Cs){if(a.getPoint(h/l,c),o!==void 0&&Xb(o,c,Ri))continue;o===void 0&&(o=Ts),o.copy(c),n.push(c.x,c.y),i++}}return Fi(n[0],n[n.length-2],Ri)&&Fi(n[1],n[n.length-1],Ri)&&(n.pop(),n.pop()),r&&i>1&&!(Fi(n[i-1],n[1],Ri)&&Fi(n[i-2],n[0],Ri))&&(n.push(n[0],n[1]),i++),n}var hl=new yr,rv=new yr,ov=new yr,iv=new yr,nv=new yr,sv=new yr,be=class extends xu{constructor(e=100,r=100){super();this.points=[];this.shapeHoles=[];this.eventDispatcher=new Qb;this.plane=new ev(new tv(0,0,-1));this.subdivision=0;this.controlSnapDistance=4;this.pointIDs=0;this.isMesh2D=!1;this._roundness=0;this.isClosed=!1;this.useCubicForRoundedCorners=!0;this.uuid=ll.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=r}static createFromState(e,r,o){let i=new be;return i.isClosed=e.isClosed,i.points=e.points.map(s=>zt.create(s.id,s.data)),typeof e.roundness=="number"&&(i.roundness=e.roundness),i.shapeHoles=e.shapeHoles.map(s=>be.createFromState(s)),r!==void 0&&o!==void 0&&i.applySize(r,o),i.update(),i}get width(){return this._width}get height(){return this._height}get roundness(){return this._roundness}set roundness(e){if(this._roundness!==e){this._roundness=e;for(let r=0,o=this.points.length;r<o;r++)this.points[r].roundness=e;this.needsUpdate=!0}}getPointsIndexesByIds(e){return e.map(r=>this.getPointIndexById(r)).filter(r=>r>=0)}getPointIndexById(e){let r=this.points.length,o=this.points.findIndex(i=>i.uuid===e);if(o<0){let i=r;for(let s=0,a=this.shapeHoles.length;s<a;s++){let l=this.shapeHoles[s],c=l.points.length-1,h=l.getPointIndexById(e);if(h<0)i+=c;else return h+i}}return o}getLineIndexById(e){return this.getPointIndexById(e)}getBezierPoint(e){if(e<=this.points.length-1)return this.points[e];if(this.shapeHoles.length>0)for(let r=0,o=this.shapeHoles.length;r<o;r++){let i=this.shapeHoles[r],s=e-this.points.length;if(s<=i.points.length-1)return i.points[s]}throw new Error("This shape does not have a point for this index: "+e)}getBezierPointIndex(e){let r=this.points.indexOf(e);if(r>=0)return r;if(r=this.points.length,this.shapeHoles.length>0)for(let o=0,i=this.shapeHoles.length;o<i;o++){let s=this.shapeHoles[o],a=s.points.indexOf(e);if(a>=0)return r+a;r+=s.points.length}return-1}getAllPoints(){let e=[].concat(...this.shapeHoles.map(r=>r.points));return[...this.points,...e]}applySize(e,r){e===0&&(e=.001),r===0&&(r=.001),this._width=e,this._height=r}applyScale(e,r){let o=hl.set(e,r);for(let i=0,s=this.points.length;i<s;i++){let a=this.points[i];a.position.multiply(o),a.controls[0].position.multiply(o),a.controls[1].position.multiply(o)}for(let i=0,s=this.shapeHoles.length;i<s;i++)this.shapeHoles[i].applyScale(e,r);this._update(!1)}createPoint(e,r=0,o=ll.generateUUID()){let i;e instanceof yr?i=e:i=new yr(e,r);let s=new zt(o,i);return s.roundness=this.roundness,s}addPoint(e){this.points.push(e),this.needsUpdate=!0}addPointAt(e,r){this.points.splice(r,0,e),this.needsUpdate=!0}getPointByUuid(e){for(let r=0,o=this.points.length;r<o;r++){let i=this.points[r];if(i.uuid===e)return i}for(let r=0,o=this.shapeHoles.length;r<o;r++){let s=this.shapeHoles[r].getPointByUuid(e);if(s)return s}}getFirstPoint(){return this.points[0]}getLastPoint(){return this.points[this.points.length-1]}removePoint(e){let r=this.points.indexOf(e);r>=0&&this.points.splice(r,1),this.needsUpdate=!0}removePointById(e){let r=this.points.find(o=>o.uuid===e);r&&this.removePoint(r)}update(e=!0){for(let r=0,o=this.shapeHoles.length;r<o;r++)this.shapeHoles[r].update(!1);this._update(e)}extractShapePointsToBuffer(e,r=12,o=!1){this.subdivision=r,this.curveDivisions===void 0&&this.computeCurveDivisions(r);let i=o?this.roundedCurveDivisions:this.curveDivisions;return fu(e,o?this.roundedCurves:this.curves,r,this.autoClose),i.reduce((s,a)=>s+a,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=al(this.points,e,!1),this.roundedCurveDivisions=al(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,r,o=12){return gu(e,this.curves,r,o,this.autoClose).reduce((s,a)=>s+a,0)*2}extractShapePointsToFlatArray(e,r=12){return this.subdivision=r,this.curveDivisions===void 0&&this.computeCurveDivisions(r),yu(e,this.roundedCurves,r,this.autoClose)}getCurveIndexFromVertexId(e,r=!1){let o=0;this.curveDivisions===void 0&&this.computeCurveDivisions(this.subdivision);let i=r?this.roundedCurveDivisions:this.curveDivisions,s=0;r&&this.points[0].roundedCurveCorner!==void 0&&(s=_r(this.points[0].roundedCurveCorner,this.subdivision)*.5);let a=e-s;a<0&&(a+=i.reduce((l,c)=>l+c,0));for(let l=0,c=i.length;l<c;l++){let h=i[l];if(a<o+h)return[l,(a-o+1)/h];o+=h}return[0,1]}getCurveT(e,r,o){let i=this.points[e],s=this.points[e>=this.points.length-1?0:e+1],a=this.curveDivisions,l=a[e];if(sl(i,s)){let p=i.position.distanceTo(s.position);return i.position.distanceTo(hl.set(o.x,o.y))/p}let c=0;for(let p=0;p<e;p++)c+=a[p];return(r-c)/l}dispose(){this.eventDispatcher=null}_applyCurveForPoint(e,r){sl(r,e)?this.lineTo(e.position.x,e.position.y):this.bezierCurveTo(r.controls[1].position.x,r.controls[1].position.y,e.controls[0].position.x,e.controls[0].position.y,e.position.x,e.position.y);let o=this.curves[this.curves.length-1];e.curveBefore=o,r.curveAfter=o;let i=o.clone();e.roundedCurveBefore=i,r.roundedCurveAfter=i,e.roundedCurveCorner=void 0,this.roundedCurves.push(i)}_update(e=!0){if(this.curves=[],this.roundedCurves=[],!this.points.length)return;for(let o=0,i=this.points.length;o<i;o++){let s=this.points[o];if(o===0)this.moveTo(s.position.x,s.position.y);else{let a=this.points[o-1];this._applyCurveForPoint(s,a)}}let r=this.getLastPoint();if(r?.curveAfter&&(r.curveAfter=void 0),this.isClosed){let o=this.points[0],i=this.points[this.points.length-1];this._applyCurveForPoint(o,i)}if(this.points.length>2){let o=0;for(let i=0,s=this.points.length;i<s;i++){let a=this.points[i],l=this.points[i-1]??this.points[this.points.length-1],c=this.points[i+1]??this.points[0],h=a.roundness,p=l&&c&&hu(l,a,c);if(!a.controlsMoved()&&h>0&&!p){let u=a.curveBefore,d=a.curveAfter;if(u===void 0||d===void 0)continue;let m=a.roundedCurveBefore,g=a.roundedCurveAfter,x=u.getLength(),y=d.getLength(),b=Math.min(h,x*.499),C=Math.min(h,y*.499),S=Math.min(b,C),v=1-S/x,z=S/y,w=u.getPointAt(v,hl),f=d.getPointAt(z,rv);this._subSplitCurve(u,m,v,w,void 0),this._subSplitCurve(d,g,z,void 0,f);let D;if(this.useCubicForRoundedCorners){let L=nl(w,a.position,f)/2,P=Math.tan(L)*w.distanceTo(a.position),[M,I]=pu(w,f,P,ov,iv),k=uu(M,I,a.position),[q,oe]=du(k,w,f,P,nv,sv);D=new Ms(w.clone(),q.clone(),oe.clone(),f.clone())}else D=new bu(w.clone(),a.position.clone(),f.clone());a.roundedCurveCorner=D,this.roundedCurves.splice(i+o,0,D),o++}}}e&&this.eventDispatcher?.dispatchEvent({type:"update"})}_subSplitCurve(e,r,o,i,s){if(e instanceof cl)i!==void 0&&r.v2.copy(i),s!==void 0&&r.v1.copy(s);else{let a=e,l=r,c=a.getUtoTmapping(o,0),h=mu(a.v0,a.v1,a.v2,a.v3,c);return i!==void 0&&(l.v0.set(h[0],h[1]),l.v1.set(h[2],h[3]),l.v2.set(h[4],h[5]),l.v3.set(h[6],h[7])),s!==void 0&&(l.v0.set(h[6],h[7]),l.v1.set(h[8],h[9]),l.v2.set(h[10],h[11]),l.v3.set(h[12],h[13])),l}return r}clone(){let e=new be(this._width,this._height);return e.points=this.points.map(r=>r.clone()),e.isClosed=this.isClosed,e.roundness=this.roundness,e.isMesh2D=this.isMesh2D,e.shapeHoles=this.shapeHoles.map(r=>r.clone()),e}toJSON(){return{points:this.points.reduce((e,r)=>e.concat(r.toJSON()),[]),shapeHoles:this.shapeHoles.map(e=>e.toJSON()),isClosed:this.isClosed,roundness:this.roundness}}fromJSON(e){this.points=[],this.pointIDs=0;let r=e.points.length/7;for(let o=0;o<r;o++){let i=o*7,s=e.points[i+0],a=e.points[i+1],l=e.points[i+2],c=e.points[i+3],h=e.points[i+4],p=e.points[i+5],u=e.points[i+6],d=new zt(ll.generateUUID(),new yr(s,a));d.controls[0].position.set(l,c),d.controls[1].position.set(h,p),d.roundness=u,this.points.push(d)}return this.shapeHoles=e.shapeHoles?.length?e.shapeHoles.map(o=>{let i=new be;return i.fromJSON(o),i}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e){let r=(i,s)=>{s instanceof Ms&&s.v3.equals(i.position)&&i.controls[0].position.copy(s.v2)},o=i=>{let s=[],a,l;for(a=0,l=i.length;a<l;a++)i[a]instanceof bu&&(i[a]=cu(i[a]));for(a=0,l=i.length;a<l;a++){let p=i[a],u=a>0?i[a-1]:null,d;p instanceof Ms?(d=this.createPoint(p.v0),d.controls[1].position.copy(p.v1)):p instanceof cl&&(d=this.createPoint(p.v1)),d!==void 0&&(u!==null&&r(d,u),s.push(d))}let c=i[i.length-1],h=!1;return c instanceof Ms?c.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(c.v2),h=!0):c instanceof cl&&c.v2.equals(s[0].position)&&(h=!0),this.isClosed=h,s};return this.points=o(e.curves),e instanceof xu&&(this.shapeHoles=e.holes.map(i=>{let s=new be;return s.fromShape(i),s})),this.update(),this}};var ul=Math.PI*2;function pl({x:n,y:t},e,r,o,i){return{x:n*e+o,y:t*r+i}}function av(n,t){let e=t===1.5707963267948966?.551915024494:t===-1.5707963267948966?-.551915024494:1.3333333333333333*Math.tan(t/4),r=Math.cos(n),o=Math.sin(n),i=Math.cos(n+t),s=Math.sin(n+t);return[{x:r-o*e,y:o+r*e},{x:i+s*e,y:s-i*e},{x:i,y:s}]}function vu(n,t,e,r){let o=n*r-t*e<0?-1:1,i=Math.min(1,Math.max(-1,n*e+t*r));return o*Math.acos(i)}function lv(n,t,e,r,o,i,s,a,l,c){let h=Math.pow(o,2),p=Math.pow(i,2),u=Math.pow(s,2),d=Math.pow(a,2),m=h*p-h*d-p*u;m<0&&(m=0),m/=h*d+p*u,m=Math.sqrt(m)*(l===c?-1:1);let g=m*o/i*a,x=m*-i/o*s,y=g+(n+e)/2,b=x+(t+r)/2,C=(s-g)/o,S=(a-x)/i,v=(-s-g)/o,z=(-a-x)/i,w=vu(1,0,C,S),f=vu(C,S,v,z);return!c&&f>0&&(f-=ul),c&&f<0&&(f+=ul),{centerx:y,centery:b,ang1:w,ang2:f}}function Su({px:n,py:t,cx:e,cy:r,rx:o,ry:i,largeArcFlag:s,sweepFlag:a}){let l=[];if(o===0||i===0)return[];let c=(n-e)/2,h=(t-r)/2;if(c===0&&h===0)return[];o=Math.abs(o),i=Math.abs(i);let p=Math.pow(c,2)/Math.pow(o,2)+Math.pow(h,2)/Math.pow(i,2);p>1&&(o*=Math.sqrt(p),i*=Math.sqrt(p));let u=lv(n,t,e,r,o,i,c,h,s,a),{ang1:d,ang2:m}=u,{centerx:g,centery:x}=u,y=Math.abs(m)/(ul/4);Math.abs(1-y)<1e-7&&(y=1);let b=Math.max(Math.ceil(y),1);m/=b;for(let C=0;C<b;C++)l.push(av(d,m)),d+=m;return l.map(C=>{let{x:S,y:v}=pl(C[0],o,i,g,x),{x:z,y:w}=pl(C[1],o,i,g,x),{x:f,y:D}=pl(C[2],o,i,g,x);return{x1:S,y1:v,x2:z,y2:w,x:f,y:D}})}import{BufferAttribute as Is,BufferGeometry as dv}from"three";var Ie;(function(n){n[n.ODD=0]="ODD",n[n.NONZERO=1]="NONZERO",n[n.POSITIVE=2]="POSITIVE",n[n.NEGATIVE=3]="NEGATIVE",n[n.ABS_GEQ_TWO=4]="ABS_GEQ_TWO"})(Ie||(Ie={}));var je;(function(n){n[n.POLYGONS=0]="POLYGONS",n[n.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",n[n.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(je||(je={}));function he(n,t){if(!n)throw t||"Assertion Failed!"}var se=function(){function n(){}return n.vertEq=function(t,e){return t.s===e.s&&t.t===e.t},n.vertLeq=function(t,e){return t.s<e.s||t.s===e.s&&t.t<=e.t},n.transLeq=function(t,e){return t.t<e.t||t.t===e.t&&t.s<=e.s},n.edgeGoesLeft=function(t){return n.vertLeq(t.Dst,t.Org)},n.edgeGoesRight=function(t){return n.vertLeq(t.Org,t.Dst)},n.vertL1dist=function(t,e){return Math.abs(t.s-e.s)+Math.abs(t.t-e.t)},n.edgeEval=function(t,e,r){he(n.vertLeq(t,e)&&n.vertLeq(e,r));var o=e.s-t.s,i=r.s-e.s;return o+i>0?o<i?e.t-t.t+(t.t-r.t)*(o/(o+i)):e.t-r.t+(r.t-t.t)*(i/(o+i)):0},n.edgeSign=function(t,e,r){he(n.vertLeq(t,e)&&n.vertLeq(e,r));var o=e.s-t.s,i=r.s-e.s;return o+i>0?(e.t-r.t)*o+(e.t-t.t)*i:0},n.transEval=function(t,e,r){he(n.transLeq(t,e)&&n.transLeq(e,r));var o=e.t-t.t,i=r.t-e.t;return o+i>0?o<i?e.s-t.s+(t.s-r.s)*(o/(o+i)):e.s-r.s+(r.s-t.s)*(i/(o+i)):0},n.transSign=function(t,e,r){he(n.transLeq(t,e)&&n.transLeq(e,r));var o=e.t-t.t,i=r.t-e.t;return o+i>0?(e.s-r.s)*o+(e.s-t.s)*i:0},n.vertCCW=function(t,e,r){return t.s*(e.t-r.t)+e.s*(r.t-t.t)+r.s*(t.t-e.t)>=0},n.interpolate=function(t,e,r,o){return t=t<0?0:t,r=r<0?0:r,t<=r?r===0?(e+o)/2:e+(o-e)*(t/(t+r)):o+(e-o)*(r/(t+r))},n.intersect=function(t,e,r,o,i){var s,a,l;n.vertLeq(t,e)||(l=t,t=e,e=l),n.vertLeq(r,o)||(l=r,r=o,o=l),n.vertLeq(t,r)||(l=t,t=r,r=l,l=e,e=o,o=l),n.vertLeq(r,e)?n.vertLeq(e,o)?(s=n.edgeEval(t,r,e),a=n.edgeEval(r,e,o),s+a<0&&(s=-s,a=-a),i.s=n.interpolate(s,r.s,a,e.s)):(s=n.edgeSign(t,r,e),a=-n.edgeSign(t,o,e),s+a<0&&(s=-s,a=-a),i.s=n.interpolate(s,r.s,a,o.s)):i.s=(r.s+e.s)/2,n.transLeq(t,e)||(l=t,t=e,e=l),n.transLeq(r,o)||(l=r,r=o,o=l),n.transLeq(t,r)||(l=t,t=r,r=l,l=e,e=o,o=l),n.transLeq(r,e)?n.transLeq(e,o)?(s=n.transEval(t,r,e),a=n.transEval(r,e,o),s+a<0&&(s=-s,a=-a),i.t=n.interpolate(s,r.t,a,e.t)):(s=n.transSign(t,r,e),a=-n.transSign(t,o,e),s+a<0&&(s=-s,a=-a),i.t=n.interpolate(s,r.t,a,o.t)):i.t=(r.t+e.t)/2},n}(),Vi=function(){function n(){this.next=null,this.prev=null,this.anEdge=null,this.trail=null,this.n=0,this.marked=!1,this.inside=!1}return n}(),Ps=function(){function n(t){this.side=t,this.next=null,this.Org=null,this.Sym=null,this.Onext=null,this.Lnext=null,this.Lface=null,this.activeRegion=null,this.winding=0}return Object.defineProperty(n.prototype,"Rface",{get:function(){return this.Sym.Lface},set:function(t){this.Sym.Lface=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dst",{get:function(){return this.Sym.Org},set:function(t){this.Sym.Org=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Oprev",{get:function(){return this.Sym.Lnext},set:function(t){this.Sym.Lnext=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Lprev",{get:function(){return this.Onext.Sym},set:function(t){this.Onext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dprev",{get:function(){return this.Lnext.Sym},set:function(t){this.Lnext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Rprev",{get:function(){return this.Sym.Onext},set:function(t){this.Sym.Onext=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dnext",{get:function(){return this.Sym.Onext.Sym},set:function(t){this.Sym.Onext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Rnext",{get:function(){return this.Sym.Lnext.Sym},set:function(t){this.Sym.Lnext.Sym=t},enumerable:!0,configurable:!0}),n}(),Uo=function(){function n(){this.next=null,this.prev=null,this.anEdge=null,this.coords=[0,0,0],this.s=0,this.t=0,this.pqHandle=0,this.n=0,this.idx=0}return n}(),wu=function(){function n(){var t=new Uo,e=new Vi,r=new Ps(0),o=new Ps(1);t.next=t.prev=t,t.anEdge=null,e.next=e.prev=e,r.next=r,r.Sym=o,o.next=o,o.Sym=r,this.vHead=t,this.fHead=e,this.eHead=r,this.eHeadSym=o}return n.prototype.makeEdge_=function(t){var e=new Ps(0),r=new Ps(1);t.Sym.side<t.side&&(t=t.Sym);var o=t.Sym.next;return r.next=o,o.Sym.next=e,e.next=t,t.Sym.next=r,e.Sym=r,e.Onext=e,e.Lnext=r,e.Org=null,e.Lface=null,e.winding=0,e.activeRegion=null,r.Sym=e,r.Onext=r,r.Lnext=e,r.Org=null,r.Lface=null,r.winding=0,r.activeRegion=null,e},n.prototype.splice_=function(t,e){var r=t.Onext,o=e.Onext;r.Sym.Lnext=e,o.Sym.Lnext=t,t.Onext=o,e.Onext=r},n.prototype.makeVertex_=function(t,e,r){var o=t;he(o,"Vertex can't be null!");var i=r.prev;o.prev=i,i.next=o,o.next=r,r.prev=o,o.anEdge=e;var s=e;do s.Org=o,s=s.Onext;while(s!==e)},n.prototype.makeFace_=function(t,e,r){var o=t;he(o,"Face can't be null");var i=r.prev;o.prev=i,i.next=o,o.next=r,r.prev=o,o.anEdge=e,o.trail=null,o.marked=!1,o.inside=r.inside;var s=e;do s.Lface=o,s=s.Lnext;while(s!==e)},n.prototype.killEdge_=function(t){t.Sym.side<t.side&&(t=t.Sym);var e=t.next,r=t.Sym.next;e.Sym.next=r,r.Sym.next=e},n.prototype.killVertex_=function(t,e){var r=t.anEdge,o=r;do o.Org=e,o=o.Onext;while(o!==r);var i=t.prev,s=t.next;s.prev=i,i.next=s},n.prototype.killFace_=function(t,e){var r=t.anEdge,o=r;do o.Lface=e,o=o.Lnext;while(o!==r);var i=t.prev,s=t.next;s.prev=i,i.next=s},n.prototype.makeEdge=function(){var t=new Uo,e=new Uo,r=new Vi,o=this.makeEdge_(this.eHead);return this.makeVertex_(t,o,this.vHead),this.makeVertex_(e,o.Sym,this.vHead),this.makeFace_(r,o,this.fHead),o},n.prototype.splice=function(t,e){var r=!1,o=!1;if(t!==e){if(e.Org!==t.Org&&(o=!0,this.killVertex_(e.Org,t.Org)),e.Lface!==t.Lface&&(r=!0,this.killFace_(e.Lface,t.Lface)),this.splice_(e,t),!o){var i=new Uo;this.makeVertex_(i,e,t.Org),t.Org.anEdge=t}if(!r){var s=new Vi;this.makeFace_(s,e,t.Lface),t.Lface.anEdge=t}}},n.prototype.delete=function(t){var e=t.Sym,r=!1;if(t.Lface!==t.Rface&&(r=!0,this.killFace_(t.Lface,t.Rface)),t.Onext===t)this.killVertex_(t.Org,null);else if(t.Rface.anEdge=t.Oprev,t.Org.anEdge=t.Onext,this.splice_(t,t.Oprev),!r){var o=new Vi;this.makeFace_(o,t,t.Lface)}e.Onext===e?(this.killVertex_(e.Org,null),this.killFace_(e.Lface,null)):(t.Lface.anEdge=e.Oprev,e.Org.anEdge=e.Onext,this.splice_(e,e.Oprev)),this.killEdge_(t)},n.prototype.addEdgeVertex=function(t){var e=this.makeEdge_(t),r=e.Sym;this.splice_(e,t.Lnext),e.Org=t.Dst;var o=new Uo;return this.makeVertex_(o,r,e.Org),e.Lface=r.Lface=t.Lface,e},n.prototype.splitEdge=function(t){var e=this.addEdgeVertex(t),r=e.Sym;return this.splice_(t.Sym,t.Sym.Oprev),this.splice_(t.Sym,r),t.Dst=r.Org,r.Dst.anEdge=r.Sym,r.Rface=t.Rface,r.winding=t.winding,r.Sym.winding=t.Sym.winding,r.idx=t.idx,r.Sym.idx=t.Sym.idx,r},n.prototype.connect=function(t,e){var r=!1,o=this.makeEdge_(t),i=o.Sym;if(e.Lface!==t.Lface&&(r=!0,this.killFace_(e.Lface,t.Lface)),this.splice_(o,t.Lnext),this.splice_(i,e),o.Org=t.Dst,i.Org=e.Org,o.Lface=i.Lface=t.Lface,t.Lface.anEdge=i,!r){var s=new Vi;this.makeFace_(s,o,t.Lface)}return o},n.prototype.zapFace=function(t){var e=t.anEdge,r,o,i,s,a;o=e.Lnext;do r=o,o=r.Lnext,r.Lface=null,r.Rface===null&&(r.Onext===r?this.killVertex_(r.Org,null):(r.Org.anEdge=r.Onext,this.splice_(r,r.Oprev)),i=r.Sym,i.Onext===i?this.killVertex_(i.Org,null):(i.Org.anEdge=i.Onext,this.splice_(i,i.Oprev)),this.killEdge_(r));while(r!=e);s=t.prev,a=t.next,a.prev=s,s.next=a},n.prototype.countFaceVerts_=function(t){var e=t.anEdge,r=0;do r++,e=e.Lnext;while(e!==t.anEdge);return r},n.prototype.mergeConvexFaces=function(t){var e,r,o,i,s,a,l;for(e=this.fHead.next;e!==this.fHead;e=e.next)if(!!e.inside)for(r=e.anEdge,s=r.Org;o=r.Lnext,i=r.Sym,i&&i.Lface&&i.Lface.inside&&(a=this.countFaceVerts_(e),l=this.countFaceVerts_(i.Lface),a+l-2<=t&&se.vertCCW(r.Lprev.Org,r.Org,i.Lnext.Lnext.Org)&&se.vertCCW(i.Lprev.Org,i.Org,r.Lnext.Lnext.Org)&&(o=i.Lnext,this.delete(i),r=null,i=null)),!(r&&r.Lnext.Org===s);)r=o;return!0},n.prototype.check=function(){var t=this.fHead,e=this.vHead,r=this.eHead,o,i,s,a,l,c;for(i=t,i=t;(o=i.next)!==t;i=o){he(o.prev===i),l=o.anEdge;do he(l.Sym!==l),he(l.Sym.Sym===l),he(l.Lnext.Onext.Sym===l),he(l.Onext.Sym.Lnext===l),he(l.Lface===o),l=l.Lnext;while(l!==o.anEdge)}for(he(o.prev===i&&o.anEdge===null),a=e,a=e;(s=a.next)!==e;a=s){he(s.prev===a),l=s.anEdge;do he(l.Sym!==l),he(l.Sym.Sym===l),he(l.Lnext.Onext.Sym===l),he(l.Onext.Sym.Lnext===l),he(l.Org===s),l=l.Onext;while(l!==s.anEdge)}for(he(s.prev===a&&s.anEdge===null),c=r,c=r;(l=c.next)!==r;c=l)he(l.Sym.next===c.Sym),he(l.Sym!==l),he(l.Sym.Sym===l),he(l.Org!==null),he(l.Dst!==null),he(l.Lnext.Onext.Sym===l),he(l.Onext.Sym.Lnext===l);he(l.Sym.next===c.Sym&&l.Sym===this.eHeadSym&&l.Sym.Sym===l&&l.Org===null&&l.Dst===null&&l.Lface===null&&l.Rface===null)},n}(),Nu=function(){function n(){this.handle=null}return n}(),Lu=function(){function n(){this.key=null,this.node=0}return n}(),cv=function(){function n(t,e){this.leq=e,this.max=0,this.nodes=[],this.handles=[],this.initialized=!1,this.freeList=0,this.size=0,this.max=t,this.nodes=[],this.handles=[];for(var r=0;r<t+1;r++)this.nodes[r]=new Nu,this.handles[r]=new Lu;this.initialized=!1,this.nodes[1].handle=1,this.handles[1].key=null}return n.prototype.floatDown_=function(t){var e=this.nodes,r=this.handles,o,i,s;for(o=e[t].handle;;){if(s=t<<1,s<this.size&&this.leq(r[e[s+1].handle].key,r[e[s].handle].key)&&++s,he(s<=this.max),i=e[s].handle,s>this.size||this.leq(r[o].key,r[i].key)){e[t].handle=o,r[o].node=t;break}e[t].handle=i,r[i].node=t,t=s}},n.prototype.floatUp_=function(t){var e=this.nodes,r=this.handles,o,i,s;for(o=e[t].handle;;){if(s=t>>1,i=e[s].handle,s===0||this.leq(r[i].key,r[o].key)){e[t].handle=o,r[o].node=t;break}e[t].handle=i,r[i].node=t,t=s}},n.prototype.init=function(){for(var t=this.size;t>=1;--t)this.floatDown_(t);this.initialized=!0},n.prototype.min=function(){return this.handles[this.nodes[1].handle].key},n.prototype.insert=function(t){var e,r;if(e=++this.size,e*2>this.max){this.max*=2;var o,i;for(i=this.nodes.length,this.nodes.length=this.max+1,o=i;o<this.nodes.length;o++)this.nodes[o]=new Nu;for(i=this.handles.length,this.handles.length=this.max+1,o=i;o<this.handles.length;o++)this.handles[o]=new Lu}return this.freeList===0?r=e:(r=this.freeList,this.freeList=this.handles[r].node),this.nodes[e].handle=r,this.handles[r].node=e,this.handles[r].key=t,this.initialized&&this.floatUp_(e),r},n.prototype.extractMin=function(){var t=this.nodes,e=this.handles,r=t[1].handle,o=e[r].key;return this.size>0&&(t[1].handle=t[this.size].handle,e[t[1].handle].node=1,e[r].key=null,e[r].node=this.freeList,this.freeList=r,--this.size,this.size>0&&this.floatDown_(1)),o},n.prototype.delete=function(t){var e=this.nodes,r=this.handles,o;he(t>=1&&t<=this.max&&r[t].key!==null),o=r[t].node,e[o].handle=e[this.size].handle,r[e[o].handle].node=o,--this.size,o<=this.size&&(o<=1||this.leq(r[e[o>>1].handle].key,r[e[o].handle].key)?this.floatDown_(o):this.floatUp_(o)),r[t].key=null,r[t].node=this.freeList,this.freeList=t},n}(),dl=function(){function n(){this.eUp=null,this.nodeUp=null,this.windingNumber=0,this.inside=!1,this.sentinel=!1,this.dirty=!1,this.fixUpperEdge=!1}return n}(),Cu=function(){function n(){this.key=null,this.next=null,this.prev=null}return n}(),hv=function(){function n(t,e){this.frame=t,this.leq=e,this.head=new Cu,this.head.next=this.head,this.head.prev=this.head}return n.prototype.min=function(){return this.head.next},n.prototype.max=function(){return this.head.prev},n.prototype.insert=function(t){return this.insertBefore(this.head,t)},n.prototype.search=function(t){var e=this.head;do e=e.next;while(e.key!==null&&!this.leq(this.frame,t,e.key));return e},n.prototype.insertBefore=function(t,e){do t=t.prev;while(t.key!==null&&!this.leq(this.frame,t.key,e));var r=new Cu;return r.key=e,r.next=t.next,t.next.prev=r,r.prev=t,t.next=r,r},n.prototype.delete=function(t){t.next.prev=t.prev,t.prev.next=t.next},n}(),pv=function(){function n(){}return n.regionBelow=function(t){return t.nodeUp.prev.key},n.regionAbove=function(t){return t.nodeUp.next.key},n.debugEvent=function(t){},n.addWinding=function(t,e){t.winding+=e.winding,t.Sym.winding+=e.Sym.winding},n.edgeLeq=function(t,e,r){var o=t.event,i=e.eUp,s=r.eUp;if(i.Dst===o)return s.Dst===o?se.vertLeq(i.Org,s.Org)?se.edgeSign(s.Dst,i.Org,s.Org)<=0:se.edgeSign(i.Dst,s.Org,i.Org)>=0:se.edgeSign(s.Dst,o,s.Org)<=0;if(s.Dst===o)return se.edgeSign(i.Dst,o,i.Org)>=0;var a=se.edgeEval(i.Dst,o,i.Org),l=se.edgeEval(s.Dst,o,s.Org);return a>=l},n.deleteRegion=function(t,e){e.fixUpperEdge&&he(e.eUp.winding===0),e.eUp.activeRegion=null,t.dict.delete(e.nodeUp)},n.fixUpperEdge=function(t,e,r){he(e.fixUpperEdge),t.mesh.delete(e.eUp),e.fixUpperEdge=!1,e.eUp=r,r.activeRegion=e},n.topLeftRegion=function(t,e){var r=e.eUp.Org,o;do e=n.regionAbove(e);while(e.eUp.Org===r);if(e.fixUpperEdge){if(o=t.mesh.connect(n.regionBelow(e).eUp.Sym,e.eUp.Lnext),o===null)return null;n.fixUpperEdge(t,e,o),e=n.regionAbove(e)}return e},n.topRightRegion=function(t){var e=t.eUp.Dst;do t=n.regionAbove(t);while(t.eUp.Dst===e);return t},n.addRegionBelow=function(t,e,r){var o=new dl;return o.eUp=r,o.nodeUp=t.dict.insertBefore(e.nodeUp,o),o.fixUpperEdge=!1,o.sentinel=!1,o.dirty=!1,r.activeRegion=o,o},n.isWindingInside=function(t,e){switch(t.windingRule){case Ie.ODD:return(e&1)!==0;case Ie.NONZERO:return e!==0;case Ie.POSITIVE:return e>0;case Ie.NEGATIVE:return e<0;case Ie.ABS_GEQ_TWO:return e>=2||e<=-2}throw new Error("Invalid winding rulle")},n.computeWinding=function(t,e){e.windingNumber=n.regionAbove(e).windingNumber+e.eUp.winding,e.inside=n.isWindingInside(t,e.windingNumber)},n.finishRegion=function(t,e){var r=e.eUp,o=r.Lface;o.inside=e.inside,o.anEdge=r,n.deleteRegion(t,e)},n.finishLeftRegions=function(t,e,r){for(var o,i=null,s=e,a=e.eUp;s!==r;){if(s.fixUpperEdge=!1,i=n.regionBelow(s),o=i.eUp,o.Org!=a.Org){if(!i.fixUpperEdge){n.finishRegion(t,s);break}o=t.mesh.connect(a.Lprev,o.Sym),n.fixUpperEdge(t,i,o)}a.Onext!==o&&(t.mesh.splice(o.Oprev,o),t.mesh.splice(a,o)),n.finishRegion(t,s),a=i.eUp,s=i}return a},n.addRightEdges=function(t,e,r,o,i,s){var a,l,c,h,p=!0;c=r;do he(se.vertLeq(c.Org,c.Dst)),n.addRegionBelow(t,e,c.Sym),c=c.Onext;while(c!==o);for(i===null&&(i=n.regionBelow(e).eUp.Rprev),l=e,h=i;a=n.regionBelow(l),c=a.eUp.Sym,c.Org===h.Org;)c.Onext!==h&&(t.mesh.splice(c.Oprev,c),t.mesh.splice(h.Oprev,c)),a.windingNumber=l.windingNumber-c.winding,a.inside=n.isWindingInside(t,a.windingNumber),l.dirty=!0,!p&&n.checkForRightSplice(t,l)&&(n.addWinding(c,h),n.deleteRegion(t,l),t.mesh.delete(h)),p=!1,l=a,h=c;l.dirty=!0,he(l.windingNumber-c.winding===a.windingNumber),s&&n.walkDirtyRegions(t,l)},n.spliceMergeVertices=function(t,e,r){t.mesh.splice(e,r)},n.vertexWeights=function(t,e,r){var o=se.vertL1dist(e,t),i=se.vertL1dist(r,t),s=.5*i/(o+i),a=.5*o/(o+i);t.coords[0]+=s*e.coords[0]+a*r.coords[0],t.coords[1]+=s*e.coords[1]+a*r.coords[1],t.coords[2]+=s*e.coords[2]+a*r.coords[2]},n.getIntersectData=function(t,e,r,o,i,s){e.coords[0]=e.coords[1]=e.coords[2]=0,e.idx=-1,n.vertexWeights(e,r,o),n.vertexWeights(e,i,s)},n.checkForRightSplice=function(t,e){var r=n.regionBelow(e),o=e.eUp,i=r.eUp;if(se.vertLeq(o.Org,i.Org)){if(se.edgeSign(i.Dst,o.Org,i.Org)>0)return!1;se.vertEq(o.Org,i.Org)?o.Org!==i.Org&&(t.pq.delete(o.Org.pqHandle),n.spliceMergeVertices(t,i.Oprev,o)):(t.mesh.splitEdge(i.Sym),t.mesh.splice(o,i.Oprev),e.dirty=r.dirty=!0)}else{if(se.edgeSign(o.Dst,i.Org,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,t.mesh.splitEdge(o.Sym),t.mesh.splice(i.Oprev,o)}return!0},n.checkForLeftSplice=function(t,e){var r=n.regionBelow(e),o=e.eUp,i=r.eUp,s;if(he(!se.vertEq(o.Dst,i.Dst)),se.vertLeq(o.Dst,i.Dst)){if(se.edgeSign(o.Dst,i.Dst,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,s=t.mesh.splitEdge(o),t.mesh.splice(i.Sym,s),s.Lface.inside=e.inside}else{if(se.edgeSign(i.Dst,o.Dst,i.Org)>0)return!1;e.dirty=r.dirty=!0,s=t.mesh.splitEdge(i),t.mesh.splice(o.Lnext,i.Sym),s.Rface.inside=e.inside}return!0},n.checkForIntersect=function(t,e){var r=n.regionBelow(e),o=e.eUp,i=r.eUp,s=o.Org,a=i.Org,l=o.Dst,c=i.Dst,h,p,u=new Uo,d,m;if(he(!se.vertEq(c,l)),he(se.edgeSign(l,t.event,s)<=0),he(se.edgeSign(c,t.event,a)>=0),he(s!==t.event&&a!==t.event),he(!e.fixUpperEdge&&!r.fixUpperEdge),s===a||(h=Math.min(s.t,l.t),p=Math.max(a.t,c.t),h>p))return!1;if(se.vertLeq(s,a)){if(se.edgeSign(c,s,a)>0)return!1}else if(se.edgeSign(l,a,s)<0)return!1;return n.debugEvent(t),se.intersect(l,s,c,a,u),he(Math.min(s.t,l.t)<=u.t),he(u.t<=Math.max(a.t,c.t)),he(Math.min(c.s,l.s)<=u.s),he(u.s<=Math.max(a.s,s.s)),se.vertLeq(u,t.event)&&(u.s=t.event.s,u.t=t.event.t),d=se.vertLeq(s,a)?s:a,se.vertLeq(d,u)&&(u.s=d.s,u.t=d.t),se.vertEq(u,s)||se.vertEq(u,a)?(n.checkForRightSplice(t,e),!1):!se.vertEq(l,t.event)&&se.edgeSign(l,t.event,u)>=0||!se.vertEq(c,t.event)&&se.edgeSign(c,t.event,u)<=0?c===t.event?(t.mesh.splitEdge(o.Sym),t.mesh.splice(i.Sym,o),e=n.topLeftRegion(t,e),o=n.regionBelow(e).eUp,n.finishLeftRegions(t,n.regionBelow(e),r),n.addRightEdges(t,e,o.Oprev,o,o,!0),!0):l===t.event?(t.mesh.splitEdge(i.Sym),t.mesh.splice(o.Lnext,i.Oprev),r=e,e=n.topRightRegion(e),m=n.regionBelow(e).eUp.Rprev,r.eUp=i.Oprev,i=n.finishLeftRegions(t,r,null),n.addRightEdges(t,e,i.Onext,o.Rprev,m,!0),!0):(se.edgeSign(l,t.event,u)>=0&&(n.regionAbove(e).dirty=e.dirty=!0,t.mesh.splitEdge(o.Sym),o.Org.s=t.event.s,o.Org.t=t.event.t),se.edgeSign(c,t.event,u)<=0&&(e.dirty=r.dirty=!0,t.mesh.splitEdge(i.Sym),i.Org.s=t.event.s,i.Org.t=t.event.t),!1):(t.mesh.splitEdge(o.Sym),t.mesh.splitEdge(i.Sym),t.mesh.splice(i.Oprev,o),o.Org.s=u.s,o.Org.t=u.t,o.Org.pqHandle=t.pq.insert(o.Org),n.getIntersectData(t,o.Org,s,l,a,c),n.regionAbove(e).dirty=e.dirty=r.dirty=!0,!1)},n.walkDirtyRegions=function(t,e){for(var r=n.regionBelow(e),o,i;;){for(;r.dirty;)e=r,r=n.regionBelow(r);if(!e.dirty&&(r=e,e=n.regionAbove(e),e===null||!e.dirty))return;if(e.dirty=!1,o=e.eUp,i=r.eUp,o.Dst!==i.Dst&&n.checkForLeftSplice(t,e)&&(r.fixUpperEdge?(n.deleteRegion(t,r),t.mesh.delete(i),r=n.regionBelow(e),i=r.eUp):e.fixUpperEdge&&(n.deleteRegion(t,e),t.mesh.delete(o),e=n.regionAbove(r),o=e.eUp)),o.Org!==i.Org)if(o.Dst!==i.Dst&&!e.fixUpperEdge&&!r.fixUpperEdge&&(o.Dst===t.event||i.Dst===t.event)){if(n.checkForIntersect(t,e))return}else n.checkForRightSplice(t,e);o.Org===i.Org&&o.Dst===i.Dst&&(n.addWinding(i,o),n.deleteRegion(t,e),t.mesh.delete(o),e=n.regionAbove(r))}},n.connectRightVertex=function(t,e,r){var o,i=r.Onext,s=n.regionBelow(e),a=e.eUp,l=s.eUp,c=!1;if(a.Dst!==l.Dst&&n.checkForIntersect(t,e),se.vertEq(a.Org,t.event)&&(t.mesh.splice(i.Oprev,a),e=n.topLeftRegion(t,e),i=n.regionBelow(e).eUp,n.finishLeftRegions(t,n.regionBelow(e),s),c=!0),se.vertEq(l.Org,t.event)&&(t.mesh.splice(r,l.Oprev),r=n.finishLeftRegions(t,s,null),c=!0),c){n.addRightEdges(t,e,r.Onext,i,i,!0);return}se.vertLeq(l.Org,a.Org)?o=l.Oprev:o=a,o=t.mesh.connect(r.Lprev,o),n.addRightEdges(t,e,o,o.Onext,o.Onext,!1),o.Sym.activeRegion.fixUpperEdge=!0,n.walkDirtyRegions(t,e)},n.connectLeftDegenerate=function(t,e,r){var o,i,s,a,l;if(o=e.eUp,se.vertEq(o.Org,r)){he(!1),n.spliceMergeVertices(t,o,r.anEdge);return}if(!se.vertEq(o.Dst,r)){t.mesh.splitEdge(o.Sym),e.fixUpperEdge&&(t.mesh.delete(o.Onext),e.fixUpperEdge=!1),t.mesh.splice(r.anEdge,o),n.sweepEvent(t,r);return}he(!1),e=n.topRightRegion(e),l=n.regionBelow(e),s=l.eUp.Sym,i=a=s.Onext,l.fixUpperEdge&&(he(i!==s),n.deleteRegion(t,l),t.mesh.delete(s),s=i.Oprev),t.mesh.splice(r.anEdge,s),se.edgeGoesLeft(i)||(i=null),n.addRightEdges(t,e,s.Onext,a,i,!0)},n.connectLeftVertex=function(t,e){var r,o,i,s,a,l,c=new dl;if(c.eUp=e.anEdge.Sym,r=t.dict.search(c).key,o=n.regionBelow(r),!!o){if(s=r.eUp,a=o.eUp,se.edgeSign(s.Dst,e,s.Org)===0){n.connectLeftDegenerate(t,r,e);return}if(i=se.vertLeq(a.Dst,s.Dst)?r:o,r.inside||i.fixUpperEdge){if(i===r)l=t.mesh.connect(e.anEdge.Sym,s.Lnext);else{var h=t.mesh.connect(a.Dnext,e.anEdge);l=h.Sym}i.fixUpperEdge?n.fixUpperEdge(t,i,l):n.computeWinding(t,n.addRegionBelow(t,r,l)),n.sweepEvent(t,e)}else n.addRightEdges(t,r,e.anEdge,e.anEdge,null,!0)}},n.sweepEvent=function(t,e){t.event=e,n.debugEvent(t);for(var r=e.anEdge;r.activeRegion===null;)if(r=r.Onext,r===e.anEdge){n.connectLeftVertex(t,e);return}var o=n.topLeftRegion(t,r.activeRegion);he(o!==null);var i=n.regionBelow(o),s=i.eUp,a=n.finishLeftRegions(t,i,null);a.Onext===s?n.connectRightVertex(t,o,a):n.addRightEdges(t,o,a.Onext,s,s,!0)},n.addSentinel=function(t,e,r,o){var i=new dl,s=t.mesh.makeEdge();s.Org.s=r,s.Org.t=o,s.Dst.s=e,s.Dst.t=o,t.event=s.Dst,i.eUp=s,i.windingNumber=0,i.inside=!1,i.fixUpperEdge=!1,i.sentinel=!0,i.dirty=!1,i.nodeUp=t.dict.insert(i)},n.initEdgeDict=function(t){t.dict=new hv(t,n.edgeLeq);var e=t.bmax[0]-t.bmin[0],r=t.bmax[1]-t.bmin[1],o=t.bmin[0]-e,i=t.bmax[0]+e,s=t.bmin[1]-r,a=t.bmax[1]+r;n.addSentinel(t,o,i,s),n.addSentinel(t,o,i,a)},n.doneEdgeDict=function(t){for(var e,r=0;(e=t.dict.min().key)!==null;)e.sentinel||(he(e.fixUpperEdge),he(++r===1)),he(e.windingNumber===0),n.deleteRegion(t,e)},n.removeDegenerateEdges=function(t){var e,r,o,i=t.mesh.eHead;for(e=i.next;e!==i;e=r)r=e.next,o=e.Lnext,se.vertEq(e.Org,e.Dst)&&e.Lnext.Lnext!==e&&(n.spliceMergeVertices(t,o,e),t.mesh.delete(e),e=o,o=e.Lnext),o.Lnext===e&&(o!==e&&((o===r||o===r.Sym)&&(r=r.next),t.mesh.delete(o)),(e===r||e===r.Sym)&&(r=r.next),t.mesh.delete(e))},n.initPriorityQ=function(t){var e,r,o,i=0;for(o=t.mesh.vHead,r=o.next;r!==o;r=r.next)i++;for(i+=8,e=t.pq=new cv(i,se.vertLeq),o=t.mesh.vHead,r=o.next;r!==o;r=r.next)r.pqHandle=e.insert(r);return r!==o?!1:(e.init(),!0)},n.donePriorityQ=function(t){t.pq=null},n.removeDegenerateFaces=function(t,e){var r,o,i;for(r=e.fHead.next;r!==e.fHead;r=o)o=r.next,i=r.anEdge,he(i.Lnext!==i),i.Lnext.Lnext===i&&(n.addWinding(i.Onext,i),t.mesh.delete(i));return!0},n.computeInterior=function(t,e){e===void 0&&(e=!0);var r,o;if(n.removeDegenerateEdges(t),!n.initPriorityQ(t))return!1;for(n.initEdgeDict(t);(r=t.pq.extractMin())!==null;){for(;o=t.pq.min(),!(o===null||!se.vertEq(o,r));)o=t.pq.extractMin(),n.spliceMergeVertices(t,r.anEdge,o.anEdge);n.sweepEvent(t,r)}return t.event=t.dict.min().key.eUp.Org,n.debugEvent(t),n.doneEdgeDict(t),n.donePriorityQ(t),n.removeDegenerateFaces(t,t.mesh)?(e&&t.mesh.check(),!0):!1},n}(),uv=function(){function n(){this.mesh=new wu,this.normal=[0,0,0],this.sUnit=[0,0,0],this.tUnit=[0,0,0],this.bmin=[0,0],this.bmax=[0,0],this.windingRule=Ie.ODD,this.dict=null,this.pq=null,this.event=null,this.vertexIndexCounter=0,this.vertices=[],this.vertexIndices=[],this.vertexCount=0,this.elements=[],this.elementCount=0}return n.prototype.dot_=function(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]},n.prototype.normalize_=function(t){var e=t[0]*t[0]+t[1]*t[1]+t[2]*t[2];if(!e)throw"Zero-size vector!";e=Math.sqrt(e),t[0]/=e,t[1]/=e,t[2]/=e},n.prototype.longAxis_=function(t){var e=0;return Math.abs(t[1])>Math.abs(t[0])&&(e=1),Math.abs(t[2])>Math.abs(t[e])&&(e=2),e},n.prototype.computeNormal_=function(t){var e,r,o,i,s,a,l=[0,0,0],c=[0,0,0],h=[0,0,0],p=[0,0,0],u=[0,0,0],d=[null,null,null],m=[null,null,null],g=this.mesh.vHead;e=g.next;for(var x=0;x<3;++x)i=e.coords[x],c[x]=i,m[x]=e,l[x]=i,d[x]=e;for(e=g.next;e!==g;e=e.next)for(var y=0;y<3;++y)i=e.coords[y],i<c[y]&&(c[y]=i,m[y]=e),i>l[y]&&(l[y]=i,d[y]=e);var b=0;if(l[1]-c[1]>l[0]-c[0]&&(b=1),l[2]-c[2]>l[b]-c[b]&&(b=2),c[b]>=l[b]){t[0]=0,t[1]=0,t[2]=1;return}for(a=0,r=m[b],o=d[b],h[0]=r.coords[0]-o.coords[0],h[1]=r.coords[1]-o.coords[1],h[2]=r.coords[2]-o.coords[2],e=g.next;e!==g;e=e.next)p[0]=e.coords[0]-o.coords[0],p[1]=e.coords[1]-o.coords[1],p[2]=e.coords[2]-o.coords[2],u[0]=h[1]*p[2]-h[2]*p[1],u[1]=h[2]*p[0]-h[0]*p[2],u[2]=h[0]*p[1]-h[1]*p[0],s=u[0]*u[0]+u[1]*u[1]+u[2]*u[2],s>a&&(a=s,t[0]=u[0],t[1]=u[1],t[2]=u[2]);a<=0&&(t[0]=t[1]=t[2]=0,t[this.longAxis_(h)]=1)},n.prototype.checkOrientation_=function(){for(var t=this.mesh.fHead,e,r=this.mesh.vHead,o,i=0,s=t.next;s!==t;s=s.next)if(o=s.anEdge,!(o.winding<=0))do i+=(o.Org.s-o.Dst.s)*(o.Org.t+o.Dst.t),o=o.Lnext;while(o!==s.anEdge);if(i<0){for(e=r.next;e!==r;e=e.next)e.t=-e.t;this.tUnit[0]=-this.tUnit[0],this.tUnit[1]=-this.tUnit[1],this.tUnit[2]=-this.tUnit[2]}},n.prototype.projectPolygon_=function(){var t=this.mesh.vHead,e=[0,0,0],r,o,i=!1;e[0]=this.normal[0],e[1]=this.normal[1],e[2]=this.normal[2],!e[0]&&!e[1]&&!e[2]&&(this.computeNormal_(e),i=!0),r=this.sUnit,o=this.tUnit;var s=this.longAxis_(e);r[s]=0,r[(s+1)%3]=1,r[(s+2)%3]=0,o[s]=0,o[(s+1)%3]=0,o[(s+2)%3]=e[s]>0?1:-1;for(var a=t.next;a!==t;a=a.next)a.s=this.dot_(a.coords,r),a.t=this.dot_(a.coords,o);i&&this.checkOrientation_();for(var l=!0,c=t.next;c!==t;c=c.next)l?(this.bmin[0]=this.bmax[0]=c.s,this.bmin[1]=this.bmax[1]=c.t,l=!1):(c.s<this.bmin[0]&&(this.bmin[0]=c.s),c.s>this.bmax[0]&&(this.bmax[0]=c.s),c.t<this.bmin[1]&&(this.bmin[1]=c.t),c.t>this.bmax[1]&&(this.bmax[1]=c.t))},n.prototype.addWinding_=function(t,e){t.winding+=e.winding,t.Sym.winding+=e.Sym.winding},n.prototype.tessellateMonoRegion_=function(t,e){var r,o;if(r=e.anEdge,!(r.Lnext!==r&&r.Lnext.Lnext!==r))throw"Mono region invalid";for(;se.vertLeq(r.Dst,r.Org);r=r.Lprev);for(;se.vertLeq(r.Org,r.Dst);r=r.Lnext);o=r.Lprev;for(var i=void 0;r.Lnext!==o;)if(se.vertLeq(r.Dst,o.Org)){for(;o.Lnext!==r&&(se.edgeGoesLeft(o.Lnext)||se.edgeSign(o.Org,o.Dst,o.Lnext.Dst)<=0);)i=t.connect(o.Lnext,o),o=i.Sym;o=o.Lprev}else{for(;o.Lnext!==r&&(se.edgeGoesRight(r.Lprev)||se.edgeSign(r.Dst,r.Org,r.Lprev.Org)>=0);)i=t.connect(r,r.Lprev),r=i.Sym;r=r.Lnext}if(o.Lnext===r)throw"Mono region invalid";for(;o.Lnext.Lnext!==r;)i=t.connect(o.Lnext,o),o=i.Sym;return!0},n.prototype.tessellateInterior_=function(t){for(var e,r=t.fHead.next;r!==t.fHead;r=e)if(e=r.next,r.inside&&!this.tessellateMonoRegion_(t,r))return!1;return!0},n.prototype.discardExterior_=function(t){for(var e,r=t.fHead.next;r!==t.fHead;r=e)e=r.next,r.inside||t.zapFace(r)},n.prototype.setWindingNumber_=function(t,e,r){for(var o,i=t.eHead.next;i!==t.eHead;i=o)o=i.next,i.Rface.inside!==i.Lface.inside?i.winding=i.Lface.inside?e:-e:r?t.delete(i):i.winding=0},n.prototype.getNeighbourFace_=function(t){return!t.Rface||!t.Rface.inside?-1:t.Rface.n},n.prototype.outputPolymesh_=function(t,e,r,o){var i,s=0,a=0,l;r>3&&t.mergeConvexFaces(r);for(var c=t.vHead.next;c!==t.vHead;c=c.next)c.n=-1;for(var h=t.fHead.next;h!==t.fHead;h=h.next)if(h.n=-1,!!h.inside){i=h.anEdge,l=0;do{var c=i.Org;c.n===-1&&(c.n=a,a++),l++,i=i.Lnext}while(i!==h.anEdge);if(l>r)throw"Face vertex greater that support polygon";h.n=s,++s}this.elementCount=s,e===je.CONNECTED_POLYGONS&&(s*=2),this.elements=[],this.elements.length=s*r,this.vertexCount=a,this.vertices=[],this.vertices.length=a*o,this.vertexIndices=[],this.vertexIndices.length=a;for(var c=t.vHead.next;c!==t.vHead;c=c.next)if(c.n!==-1){var p=c.n*o;this.vertices[p+0]=c.coords[0],this.vertices[p+1]=c.coords[1],o>2&&(this.vertices[p+2]=c.coords[2]),this.vertexIndices[c.n]=c.idx}for(var u=0,h=t.fHead.next;h!==t.fHead;h=h.next)if(!!h.inside){i=h.anEdge,l=0;do{var c=i.Org;this.elements[u++]=c.n,l++,i=i.Lnext}while(i!==h.anEdge);for(var d=l;d<r;++d)this.elements[u++]=-1;if(e===je.CONNECTED_POLYGONS){i=h.anEdge;do this.elements[u++]=this.getNeighbourFace_(i),i=i.Lnext;while(i!==h.anEdge);for(var m=l;m<r;++m)this.elements[u++]=-1}}},n.prototype.outputContours_=function(t,e){var r,o,i=0,s=0;this.vertexCount=0,this.elementCount=0;for(var a=t.fHead.next;a!==t.fHead;a=a.next)if(!!a.inside){o=r=a.anEdge;do this.vertexCount++,r=r.Lnext;while(r!==o);this.elementCount++}this.elements=[],this.elements.length=this.elementCount*2,this.vertices=[],this.vertices.length=this.vertexCount*e,this.vertexIndices=[],this.vertexIndices.length=this.vertexCount;var l=0,c=0,h=0;i=0;for(var a=t.fHead.next;a!==t.fHead;a=a.next)if(!!a.inside){s=0,o=r=a.anEdge;do this.vertices[l++]=r.Org.coords[0],this.vertices[l++]=r.Org.coords[1],e>2&&(this.vertices[l++]=r.Org.coords[2]),this.vertexIndices[c++]=this.vertexIdCallback?this.vertexIdCallback(r):r.Org.idx,s++,r=r.Lnext;while(r!==o);this.elements[h++]=i,this.elements[h++]=s,i+=s}},n.prototype.addContour=function(t,e){this.mesh===null&&(this.mesh=new wu),t<2&&(t=2),t>3&&(t=3);for(var r=null,o=0;o<e.length;o+=t)r===null?(r=this.mesh.makeEdge(),this.mesh.splice(r,r.Sym)):(this.mesh.splitEdge(r),r=r.Lnext),r.Org.coords[0]=e[o+0],r.Org.coords[1]=e[o+1],t>2?r.Org.coords[2]=e[o+2]:r.Org.coords[2]=0,r.Org.idx=this.vertexIndexCounter++,this.edgeCreateCallback&&this.edgeCreateCallback(r),r.winding=1,r.Sym.winding=-1},n.prototype.tesselate=function(t,e,r,o,i,s){if(t===void 0&&(t=Ie.ODD),e===void 0&&(e=je.POLYGONS),s===void 0&&(s=!0),this.vertices=[],this.elements=[],this.vertexIndices=[],this.vertexIndexCounter=0,i&&(this.normal[0]=i[0],this.normal[1]=i[1],this.normal[2]=i[2]),this.windingRule=t,o<2&&(o=2),o>3&&(o=3),!this.mesh)return!1;this.projectPolygon_(),pv.computeInterior(this,s);var a=this.mesh;return e===je.BOUNDARY_CONTOURS?this.setWindingNumber_(a,1,!0):this.tessellateInterior_(a),s&&a.check(),e===je.BOUNDARY_CONTOURS?this.outputContours_(a,o):this.outputPolymesh_(a,e,r,o),!0},n}();function eo(n){var t=n.windingRule,e=t===void 0?Ie.ODD:t,r=n.elementType,o=r===void 0?je.POLYGONS:r,i=n.polySize,s=i===void 0?3:i,a=n.vertexSize,l=a===void 0?2:a,c=n.normal,h=c===void 0?[0,0,1]:c,p=n.contours,u=p===void 0?[]:p,d=n.strict,m=d===void 0?!0:d,g=n.debug,x=g===void 0?!1:g;if(!u&&m)throw new Error("Contours can't be empty");if(!!u){var y=new uv;n.edgeCreateCallback&&(y.edgeCreateCallback=n.edgeCreateCallback),n.vertexIdCallback&&(y.vertexIdCallback=n.vertexIdCallback);for(var b=0;b<u.length;b++)y.addContour(l||2,u[b]);return y.tesselate(e,o,s,l,h,m),{vertices:y.vertices,vertexIndices:y.vertexIndices,vertexCount:y.vertexCount,elements:y.elements,elementCount:y.elementCount,mesh:x?y.mesh:void 0}}}var $2=Ie.ODD,J2=Ie.NONZERO,Y2=Ie.POSITIVE,K2=Ie.NEGATIVE,X2=Ie.ABS_GEQ_TWO,Z2=je.POLYGONS,Q2=je.CONNECTED_POLYGONS,eD=je.BOUNDARY_CONTOURS;var jo=class extends dv{constructor(e,r=12,o={}){super();this.type="ShapeGeometry";this.windingRule=Ie.ODD;this.elementType=je.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=r,this._triangulationOptions=Object.assign({windingRule:Ie.ODD,elementType:je.POLYGONS,polySize:3,vertexSize:2,strict:!0},o);let i=this._shape.extractShapePointsToFlatArray([],this._curveSegments),s=this._shape.shapeHoles.map(m=>m.extractShapePointsToFlatArray([],this._curveSegments)),a,l=!0,c=!0,h,p;for(let m=0,g=i.length/2;m<g;m++){let x=m*2,y=i[x+0],b=i[x+1];if(h!==void 0&&y!==h&&(l=!1),p!==void 0&&b!==p&&(c=!1),h=y,p=b,!l&&!c)break}!l&&!c&&(a=eo({contours:[i,...s],windingRule:this._triangulationOptions.windingRule,elementType:this._triangulationOptions.elementType,polySize:this._triangulationOptions.polySize,vertexSize:this._triangulationOptions.vertexSize,strict:this._triangulationOptions.strict}));let u=a?.vertexCount??1,d=a?.elementCount??1;if(this._positionAttribute=new Is(new Float32Array(u*3),3),this._normalAttribute=new Is(new Float32Array(u*3),3),this._uvAttribute=new Is(new Float32Array(u*2),2),this._indexAttribute=new Is(new Uint32Array(d*3),1),a){let m=1/0,g=-1/0,x=1/0,y=-1/0;for(let S=0,v=u;S<v;S++){let z=S*2,w=a.vertices[z+0],f=a.vertices[z+1];w<m&&(m=w),w>g&&(g=w),f<x&&(x=f),f>y&&(y=f)}let b=g-m,C=y-x;for(let S=0,v=u;S<v;S++){let z=S*2,w=a.vertices[z+0],f=a.vertices[z+1],D=(w-m)/b,L=(f-x)/C;this._positionAttribute.setXYZ(S,w,f,0),this._normalAttribute.setXYZ(S,0,0,1),this._uvAttribute.setXY(S,D,L)}for(let S=0,v=d;S<v;S++){let z=S*3,w=a.elements[z+0],f=a.elements[z+1],D=a.elements[z+2];this._indexAttribute.setX(z+0,w),this._indexAttribute.setX(z+1,f),this._indexAttribute.setX(z+2,D)}}this.setAttribute("position",this._positionAttribute),this.setAttribute("normal",this._normalAttribute),this.setAttribute("uv",this._uvAttribute),this.setIndex(this._indexAttribute),this.setDrawRange(0,(a?.elementCount??1)*3)}clone(){let e=new jo(this._shape,this._curveSegments);return e.userData=Ci(this.userData),e}};import{BufferAttribute as As,BufferGeometry as mv}from"three";var Os=class{constructor(t=256,e=!1){this.capacity=t,this.size=0,this.debug=e,this.debug&&console.log(`allocating with cap ${t}`);let r=t*Os.eSize;this.buffer=new ArrayBuffer(r);let o=Float32Array.BYTES_PER_ELEMENT,i=0;this.positions=new Float32Array(this.buffer,i*o,3*t),i+=3*t,this.normals=new Float32Array(this.buffer,i*o,3*t),i+=3*t,this.uvs=new Float32Array(this.buffer,i*o,2*t)}realloc(t,e=!1){if(t<this.size)throw Error("cannot shrink buffer");if(t<=this.capacity&&!e)return;this.debug&&console.log(`resizing from ${this.capacity} \u2192 ${t}`);let r=t*Os.eSize,o=new ArrayBuffer(r),i=Float32Array.BYTES_PER_ELEMENT,s=0,a=new Float32Array(o,s*i,3*t);s+=3*t;let l=new Float32Array(o,s*i,3*t);s+=3*t;let c=new Float32Array(o,s*i,2*t);a.set(this.positions.slice(0,this.size*3)),l.set(this.normals.slice(0,this.size*3)),c.set(this.uvs.slice(0,this.size*2)),this.buffer=o,this.positions=a,this.normals=l,this.uvs=c,this.capacity=t}get(t=1){let e=this.size+t;if(e>this.capacity){let o=this.capacity;for(;e>o;)o*=2;this.realloc(o)}let r=this.size;return this.size=e,r}reserve(t){let e=this.size+t;e>this.capacity&&this.realloc(e)}shrink(){this.debug&&console.log(`shrinking ${this.capacity} \u2192 ${this.size}`),this.realloc(this.size,!0)}},Ui=Os;Ui.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var ml=(n,t)=>([e,r])=>(r<e&&(r+=t),(n>=e?n:n+t)<=r),ko=class extends mv{constructor(e,r,o=0,i=12,s=3){super();this.type="ShapeGeometry";this.vertexCache={};this._shape=e,this._depth=r,this._bevel=o,this._curveSegments=i,this._bevelSegmentsInput=s,o<=0?(this._bevelSize=0,this._bevelSegments=0):(this._bevelSize=Math.min(o,r/2-1e-12),this._bevelSegments=Math.floor(s));let a=this._shape.extractShapePointsToFlatArray([],i),l=this._shape.shapeHoles.map(w=>{let f=w.extractShapePointsToFlatArray([],i),D=[];for(let L=f.length-1;L>=1;L-=2){let P=f[L-1],M=f[L-0];D.push(P,M)}return D}),c=eo({windingRule:Ie.ODD,elementType:je.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[a]}),h=eo({windingRule:Ie.ODD,elementType:je.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...l]});if(!c)throw new Error("error generating geometry");let p=c.elementCount;if(h){c.elementCount+=h.elementCount;for(let w=0;w<h.elements.length;w++){let f=h.elements[w],D=w%2===0?c.vertexCount:0;c.elements.push(f+D)}for(let w=0;w<h.vertexIndices.length;w++){let f=h.vertexIndices[w],D=c.vertexCount;c.vertexIndices.push(f+D)}for(let w=0;w<h.vertices.length;w++){let f=h.vertices[w];c.vertices.push(f)}}let u=1/0,d=-1/0,m=1/0,g=-1/0;for(let w=0,f=c.vertexCount;w<f;w++){let D=w*2,L=c.vertices[D+0],P=c.vertices[D+1];L<u&&(u=L),L>d&&(d=L),P<m&&(m=P),P>g&&(g=P)}this._minX=u,this._minY=m,this._width=d-u,this._height=g-m;let x=c.vertexCount*2*(2+this._bevelSegments);this._buffer=new Ui(x);let y=[],b=[];for(let w=c.elementCount-1;w>=0;w--){let f=w>=p,D=w*2,L=c.elements[D+0],P=c.elements[D+1],M=L+P,I={start:L,count:P,normals:[],continuous:[],concave:[]},k=L,q=M-1,oe=L+1,ce=this._shape.roundedCurves.length;do{let R=k-L,E=c.vertices[q*2+0],B=c.vertices[q*2+1],O=c.vertices[k*2+0],_=c.vertices[k*2+1],Y=c.vertices[oe*2+0],j=c.vertices[oe*2+1],F=O-E,V=_-B,A=Math.sqrt(F*F+V*V);F/=A,V/=A;let W=O-Y,X=_-j,Z=Math.sqrt(W*W+X*X);W/=Z,X/=Z,I.normals[R*2+0]=-X,I.normals[R*2+1]=W,I.concave[R]=F*X-V*W>0;let H=c.vertexIndices[k];if(Array.isArray(H))I.continuous[R]=!1;else{let[K,$]=this._shape.getCurveIndexFromVertexId(H-1,!0);if($>0&&$<1)I.continuous[R]=!0;else{let re=$===1?K+1:K-1;re=(re+ce)%ce;let ae=$===1?0:1,ie=this._shape.roundedCurves[K].getTangent($),me=this._shape.roundedCurves[re].getTangent(ae);I.continuous[R]=ie.dot(me)>.95}}f&&(I.normals[R*2+0]*=-1,I.normals[R*2+1]*=-1),[q,k,oe]=[k,oe,oe+1],oe>=M&&(oe-=P)}while(oe!==L+1);let ne=[];ne.push({bevelI:0,angle:0,size:0,boundary:{vertices:c.vertices.slice(L*2,M*2),vertexCount:P,vertexIndices:new Array(P).fill(!0).map((R,E)=>[E,E]),elements:[0,P],elementCount:1,mesh:null},reverseMap:[],insetPoints:c.vertices.slice(L*2,M*2)});for(let R=1;R<=this._bevelSegments;R++){let E=R/this._bevelSegments*Math.PI/2,B=(1-Math.cos(E))*this._bevelSize,O=[],_=[],Y=[],j=[],F=0;for(let A=0;A<P;A++){let W=A*2,X=(A-1+P)%P*2,Z=c.vertices[I.start*2+W+0],H=c.vertices[I.start*2+W+1],K=-I.normals[X+0]*B,$=-I.normals[X+1]*B,re=-I.normals[W+0]*B,ae=-I.normals[W+1]*B;if(I.concave[A]||!I.concave[A]&&f){let ie=Math.atan2($,K),me=Math.atan2(ae,re);me>ie&&(me-=Math.PI*2);let De=me-ie;if(I.continuous[A]||f){let ge=ie+De/2,Re=Math.cos(ge)*B,Se=Math.sin(ge)*B;O[2*F+0]=Z+Re*(f?-1:1),O[2*F+1]=H+Se*(f?-1:1),j[F]=A,F++}else{let ge=Math.max(1,Math.floor(i/4*Math.abs(De)/Math.PI));for(let Re=0;Re<=ge;Re++){let Se=ie+De*(Re/ge),pt=Math.cos(Se)*B,Ct=Math.sin(Se)*B;O[2*F+0]=Z+pt,O[2*F+1]=H+Ct,j[F]=A,F++}}}else O[2*F+0]=Z+K,O[2*F+1]=H+$,j[F]=A,_[A]=F,F++,O[2*F+0]=Z,O[2*F+1]=H,j[F]=A,F++,O[2*F+0]=Z+re,O[2*F+1]=H+ae,j[F]=A,Y[A]=F,F++}let V=eo({windingRule:Ie.POSITIVE,elementType:je.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[O],edgeCreateCallback:A=>{let X=A.Org.idx,Z=j[X],H=j[(X+1)%j.length];A.idx=[Z,H],A.Sym.idx=[H,Z]},vertexIdCallback:A=>{let W=A.Lprev.idx;return[W?W[1]:0,A.idx[0]]}});if(!V)throw console.log("Error"),new Error(`error generating bevel geometry for ${R}'th loop`);if(!V.vertexCount)break;for(let A=0;A<V.vertexIndices.length;A++){let[W,X]=V.vertexIndices[A];if(W===X)continue;let Z=X;X<W&&(Z+=P);for(let H=W;H<Z;H++){let K=H%P,$=(H+1)%P;if(!I.continuous[K]||!I.continuous[$]){V.vertexIndices[A]=[W,K],V.vertexIndices.splice(A+1,0,[$,X]),V.vertices.splice((A+1)*2,0,V.vertices[A*2],V.vertices[A*2+1]);break}}}ne.push({bevelI:R,angle:E,size:B,boundary:V,reverseMap:j,insetPoints:O})}let J=(R,E,B)=>{let O=0,_=R.boundary.vertexIndices.length;for(;O<_&&B(R.boundary.vertexIndices[E]);)E=(E+1)%_,O++;return O},U=y.length;for(let R=1;R<ne.length;R++){let E=ne[R-1],B=ne[R],O=E.boundary.vertexIndices.length,_=B.boundary.vertexIndices.length;if(!O||!_)break;let Y=I.concave.length,j=0,F=ml(j,P);for(;!E.boundary.vertexIndices.filter(F).length||!B.boundary.vertexIndices.filter(F).length;)j++,F=ml(j,P);let V=E.boundary.vertexIndices.findIndex(F),A=B.boundary.vertexIndices.findIndex(F);do V=(V+1)%O;while(F(E.boundary.vertexIndices[V]));do A=(A+1)%_;while(F(B.boundary.vertexIndices[A]));j=(j+1)%P;let W=j,X=this.buildBevelVert(I,E,(V-1+O)%O),Z=this.buildBevelVert(I,B,(A-1+_)%_),H=X,K=Z,$,re,ae=!1;do{F=ml(j,P);let ie=J(E,V,F),me=J(B,A,F),De=ae;if(ae=!1,ie&&!me){for(let ge=0;ge<ie;ge++)$=this.buildBevelVert(I,E,(V+ge)%O,ge/(ie-1)),y.push(H.topN,$.topP,K.topN),y.push($.bottomP,H.bottomN,K.bottomN),H=$;ae=!0}else if(!ie&&me)for(let ge=0;ge<me;ge++)re=this.buildBevelVert(I,B,(A+ge)%_,ge/(me-1)),y.push(K.topN,H.topP,re.topP),y.push(H.bottomP,K.bottomN,re.bottomP),K=re;else if(ie&&me)if($=this.buildBevelVert(I,E,V,0),re=this.buildBevelVert(I,B,A,0),De?(y.push(H.topN,re.topP,K.topN),y.push(H.topN,$.topP,re.topP),y.push(re.bottomP,H.bottomN,K.bottomN),y.push(re.bottomP,$.bottomP,H.bottomN)):(y.push(K.topN,H.topN,$.topP),y.push(K.topN,$.topP,re.topP),y.push($.bottomP,H.bottomN,K.bottomN),y.push($.bottomP,K.bottomN,re.bottomP)),H=$,K=re,ie===me)for(let ge=1;ge<ie;ge++)$=this.buildBevelVert(I,E,(V+ge)%O,ge/(ie-1)),re=this.buildBevelVert(I,B,(A+ge)%_,ge/(me-1)),y.push(H.topN,$.topP,K.topN),y.push(K.topN,$.topP,re.topP),y.push($.bottomP,H.bottomN,K.bottomN),y.push($.bottomP,K.bottomN,re.bottomP),H=$,K=re;else if(ie>me){let ge=ie/me,Re=0;for(let Se=1;Se<ie;Se++)$=this.buildBevelVert(I,E,(V+Se)%O,Se/(ie-1)),y.push(H.topN,$.topP,K.topN),y.push($.bottomP,H.bottomN,K.bottomN),H=$,Se>(Re+1)*ge&&(Re++,re=this.buildBevelVert(I,B,(A+Re)%_,Re/(me-1)),y.push(K.topN,$.topP,re.topP),y.push($.bottomP,K.bottomN,re.bottomP),K=re)}else{let ge=me/ie,Re=0;for(let Se=1;Se<me;Se++)re=this.buildBevelVert(I,B,(A+Se)%_,Se/(me-1)),y.push(K.topN,$.topP,re.topP),y.push($.bottomP,K.bottomN,re.bottomP),K=re,Se>(Re+1)*ge&&(Re++,$=this.buildBevelVert(I,E,(V+Re)%O,Re/(ie-1)),y.push(H.topN,$.topP,K.topN),y.push($.bottomP,H.bottomN,K.bottomN),H=$)}V=(V+ie)%O,A=(A+me)%_,j=(j+1)%Y}while(j!==W)}{let R=ne[0];for(let E=0,B=R.boundary.vertexCount;E<B;E++){let O=this.buildBevelVert(I,R,E),_=this.buildBevelVert(I,R,(E+1)%B);y.push(_.topP,O.topN,O.bottomN),y.push(_.topP,O.bottomN,_.bottomP)}}if(f){let R=[];for(let E=y.length-1;E>=U+2;E-=3){let B=y[E-2],O=y[E-1],_=y[E-0];R.push(_,O,B)}y.splice(U,y.length-U,...R)}if(f){let R=[];for(let E=ne[ne.length-1].boundary.vertices.length-1;E>=1;E-=2){let B=ne[ne.length-1].boundary.vertices[E-1],O=ne[ne.length-1].boundary.vertices[E-0];R.push(B,O)}b.push(R)}if(!f){let R=ne[ne.length-1],E=eo({windingRule:ne.length>1?Ie.POSITIVE:Ie.ODD,elementType:je.POLYGONS,vertexSize:2,strict:!0,contours:[R.insetPoints,...b]});if(!E)throw new Error("Error generating geometry for surface");Object.assign(this,{capStartIndex:y.length});for(let B=0;B<E.elementCount*3;B+=3){let O=this.buildSurfaceVert(E,E.elements[B+0]),_=this.buildSurfaceVert(E,E.elements[B+1]),Y=this.buildSurfaceVert(E,E.elements[B+2]);y.push(O.top,_.top,Y.top),y.push(Y.bottom,_.bottom,O.bottom)}}this.vertexCache={}}this._buffer.shrink();let C=new As(Uint32Array.from(y),1),S=new As(this._buffer.positions,3),v=new As(this._buffer.normals,3),z=new As(this._buffer.uvs,2);S.needsUpdate=!0,v.needsUpdate=!0,z.needsUpdate=!0,C.needsUpdate=!0,this.setAttribute("position",S),this.setAttribute("normal",v),this.setAttribute("uv",z),this.setIndex(C)}buildSurfaceVert(e,r){let o=r.toString();if(o in this.vertexCache)return this.vertexCache[o];let i=e.vertices[r*2+0],s=e.vertices[r*2+1],a=(i-this._minX)/this._width,l=(s-this._minY)/this._height,c=this._buffer.get(2),h=c*3,p=c*2,u={top:c+0,bottom:c+1};return this._buffer.positions[h+0]=i,this._buffer.positions[h+1]=s,this._buffer.positions[h+2]=this._depth,this._buffer.normals[h+0]=0,this._buffer.normals[h+1]=0,this._buffer.normals[h+2]=1,this._buffer.uvs[p+0]=a,this._buffer.uvs[p+1]=l,this._buffer.positions[h+3]=i,this._buffer.positions[h+4]=s,this._buffer.positions[h+5]=0,this._buffer.normals[h+3]=0,this._buffer.normals[h+4]=0,this._buffer.normals[h+5]=-1,this._buffer.uvs[p+2]=a,this._buffer.uvs[p+3]=l,this.vertexCache[o]=u,u}buildBevelVert(e,r,o,i=1){let s=`${r.bevelI}:${o}`;if(s in this.vertexCache)return this.vertexCache[s];let[a,l]=r.boundary.vertexIndices[o],c,h,p,u;a!==l?(h=a,c=l,u=!1,p=e.continuous[h]&&e.continuous[c]):(c=a,h=(c-1+e.count)%e.count,u=e.concave[c]&&r.bevelI>0,p=e.continuous[c]||u);let d=Math.cos(r.angle),m=Math.sin(r.angle),g=o*2,x=c*2,y=h*2,b=r.boundary.vertices[g+0],C=r.boundary.vertices[g+1],S=(1-m)*this._bevelSize,v=(b-this._minX)/this._width,z=(C-this._minY)/this._height,w=e.normals[x+0],f=e.normals[x+1],D=e.normals[y+0],L=e.normals[y+1];if(u){let q=D-w,oe=L-f;w=w+q*(1-i),f=f+oe*(1-i);let ce=Math.sqrt(w*w+f*f);w/=ce,f/=ce}let P=this._buffer.get(p?2:4),M=P*3,I=P*2,k={i:o,fi:c,topP:P+0,topN:P+0,bottomP:P+1,bottomN:P+1};return this._buffer.positions[M+0]=b,this._buffer.positions[M+1]=C,this._buffer.positions[M+2]=this._depth-S,this._buffer.normals[M+0]=w*d,this._buffer.normals[M+1]=f*d,this._buffer.normals[M+2]=m,this._buffer.uvs[I+0]=v,this._buffer.uvs[I+1]=z,this._buffer.positions[M+3]=b,this._buffer.positions[M+4]=C,this._buffer.positions[M+5]=S,this._buffer.normals[M+3]=w*d,this._buffer.normals[M+4]=f*d,this._buffer.normals[M+5]=-m,this._buffer.uvs[I+2]=z,this._buffer.uvs[I+3]=v,p||(P+=2,M+=6,I+=4,k.topP=P+0,k.bottomP=P+1,this._buffer.positions[M+0]=b,this._buffer.positions[M+1]=C,this._buffer.positions[M+2]=this._depth-S,this._buffer.normals[M+0]=D*d,this._buffer.normals[M+1]=L*d,this._buffer.normals[M+2]=m,this._buffer.uvs[I+0]=v,this._buffer.uvs[I+1]=z,this._buffer.positions[M+3]=b,this._buffer.positions[M+4]=C,this._buffer.positions[M+5]=S,this._buffer.normals[M+3]=D*d,this._buffer.normals[M+4]=L*d,this._buffer.normals[M+5]=-m,this._buffer.uvs[I+2]=z,this._buffer.uvs[I+3]=v),this.vertexCache[s]=k,k}clone(){let e=new ko(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=Ci(this.userData),e}};var Je=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,subdivisions:40,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters),r=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??0),s=n.shape??t?.shape,a=s?.roundness??e.roundness;s!==void 0&&(s instanceof be?(s.width!==r||s.height!==o)&&s.applySize(r,o):s=new be(r,o).fromJSON(s),n.parameters?.roundness!==void 0&&n.parameters?.roundness>0&&s.update(!1));let l=s??new be(r,o);return{parameters:Object.assign(e,{width:r,height:o,depth:i,roundness:a}),shape:l}}static build(n){let{depth:t,extrudeBevelSize:e,extrudeBevelSegments:r,subdivisions:o,roundness:i}=n.parameters;n.shape.roundness=i;let s;return t<=0?s=new jo(n.shape,o):s=new ko(n.shape,t,e,o,r),Object.assign(s,{userData:{...n,type:"VectorGeometry"}})}};import{MathUtils as Mu,Vector2 as Pu}from"three";var Iu=Math.PI*2,Ou=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:64,angle:360,innerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters);return{shape:n.shape&&n.shape instanceof be?n.shape:new be,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:t,height:e,spikes:r,angle:o,innerRadius:i,depth:s,extrudeBevelSize:a,extrudeBevelSegments:l}=n.parameters,c=n.shape,h=t*.5,p=e*.5,u=fv(c,h,p,o*Math.PI/180,r,i);c.isClosed=!0,c.update();let d=Je.create({shape:c,parameters:{subdivisions:u,depth:s,extrudeBevelSize:a,extrudeBevelSegments:l}});return Object.assign(d,{userData:{...n,type:"EllipseGeometry"}})}};function fv(n,t,e,r,o,i){if(r>=Iu)return o>30||o%4===0?(yv(n,t,e,i),Math.round(o/4)):Tu(n,r,o,t,e,i);let s={x:0,y:e},a=r+Math.PI*.5,l={x:Math.cos(a)*t,y:Math.sin(a)*e},c=Su({px:s.x,py:s.y,cx:l.x,cy:l.y,rx:t,ry:e,largeArcFlag:r>Math.PI,sweepFlag:!0});return o>30||o%c.length===0?gv(n,s.x,s.y,c,o,t,e,i):Tu(n,r,o,t,e,i)}function gv(n,t,e,r,o,i,s,a){let l=Math.round(o/r.length);n.addPoint(Ho(t,e));for(let c=0,h=r.length;c<h;c++){let p=r[c],u=n.points[c],d=Ho(p.x,p.y);u.controls[1].position.set(p.x1,p.y1),d.controls[0].position.set(p.x2,p.y2),n.addPoint(d)}return a>0?Au(n,i,s,a):n.addPoint(Ho(0,0)),l}function Tu(n,t,e,r,o,i){let s=-t/e;for(let a=0;a<=e;a++){let l=s*a,c=Math.sin(l)*r,h=Math.cos(l)*o;n.addPoint(Ho(c,h))}return t<Iu?i>0?Au(n,r,o,i):n.addPoint(Ho(0,0)):(n.removePoint(n.points[n.points.length-1]),i>0&&Du(n,r,o,i)),1}function yv(n,t,e,r=0,o=0,i=0){let s=.5522847498,a=t*s,l=e*s;n.addPoint(Ds(o-t,i,o-t,i-l,o-t,i+l)),n.addPoint(Ds(o,i+e,o-a,i+e,o+a,i+e)),n.addPoint(Ds(o+t,i,o+t,i+l,o+t,i-l)),n.addPoint(Ds(o,i-e,o+a,i-e,o-a,i-e)),r>0&&Du(n,t,e,r)}function Ho(n,t){return new zt(Mu.generateUUID(),new Pu(n,t))}function Ds(n,t,e,r,o,i){let s=Ho(n,t);return s.controls[0].position.set(e,r),s.controls[1].position.set(o,i),s}function Au(n,t,e,r){Bu(n,t,e,r).forEach(i=>n.addPoint(i))}function Du(n,t,e,r){let o=Bu(n,t,e,r),i=new be;o.forEach(s=>i.addPoint(s)),i.isClosed=!0,n.shapeHoles.push(i)}function Bu(n,t,e,r){let o=r*t/100,i=o*(Math.abs(e)/Math.abs(t)),s=new Pu(o/t,i/e),a=n.points.map(l=>{let c=l.clone();return c.uuid=Mu.generateUUID(),c}).reverse();return a.forEach(l=>{l.position.multiply(s);let c=l.controls[0].position.clone().multiply(s),h=l.controls[1].position.clone().multiply(s);l.controls[0].position.copy(h),l.controls[1].position.copy(c)}),a}import{BufferGeometry as xv,Float32BufferAttribute as fl,Vector3 as Eu}from"three";var _u=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,revolutions:2,segments:40,pathRadius:10,pathType:0,pathSegments:30,cornerRadius:30,cornerSegments:4},n.parameters),r=Math.abs(e.width),o=Math.abs(e.height??r),i=Math.abs(e.depth??r),s=Math.abs(Math.min(r,i))/2;return{parameters:Object.assign(e,{width:r,height:o,depth:i,radius:s,segments:Math.round(e.segments),pathSegments:Math.round(e.pathSegments),cornerSegments:Math.round(e.cornerSegments)})}}static build(n){let{width:t,height:e,depth:r,radius:o,revolutions:i,segments:s,pathRadius:a,pathType:l,pathSegments:c,cornerRadius:h,cornerSegments:p}=n.parameters,u=new ji(!1,t,e,r,o,i,s,a,l,c,h,p);return Object.assign(u,{userData:{...n,type:"HelixGeometry"}})}},ji=class extends xv{constructor(t=!0,e=1,r=1,o=1,i=1,s=1,a=1,l=1,c=1,h=1,p=1,u=1){super();let d=t&&s===1;d&&(u=0),p>100&&(p=100);let m=()=>new Eu,g=new Eu,x=m(),y=m(),b=m(),C,S,v,z,w,f,D,L,P=m(),M=m(),I=m(),k=m(),q=m(),oe=m(),ce=m(),ne=m(),J=r-2*l+.001,U=J/s,R=Math.ceil(a*s),E=R+1,B=J/R,O=-J/2,_=h+1,Y=2*Math.PI/h,j=Math.PI/2/u,F=.01,V=Math.min((1-p/100)*l,l-F),A=l-V,W=0,X=2,Z=u*X+X,H=_*Z/X,K=H+_*E,$=_*(E+Z),[re,ae,ie]=[3,3,2].map(Ee=>Array($*Ee).fill(0)),me=[],De=i-l;function ge(Ee,bt){let Ht=Math.PI/2;f=bt*B,L=2*Math.PI*(f%U)/U+Ht,f+=O,D=Math.sin(L)*De,w=Math.cos(L)*De,t?Ee.set(w,D,f):Ee.set(w,f,D)}ge(g,-1e-10),ge(x,0),P.copy(g),ge(g,1);let Re=g.distanceTo(x),Se=A+V,pt=Re*R+2*Se,Ct=V,lo=pt-Se;for(let Ee=0;Ee<=R;Ee++){ge(y,Ee),ne.subVectors(y,P).normalize(),P.copy(y),oe.copy(y).setComponent(+t+1,0).normalize(),ce.crossVectors(ne,oe).normalize();let bt=Ee===0,Ht=Ee===R,Om=bt?3*Math.PI/2:j,Am=bt?Ct:lo,Dm=bt?_:K,Bm=bt?0:$-_,Em=ne.clone().multiplyScalar(bt?-A:A).add(y),_m=ne.clone().multiplyScalar(bt?-1:1).normalize();for(let hr=0;hr<_;hr++){let lc=hr*Y;if(M.addVectors(g.copy(oe).multiplyScalar(l*Math.cos(lc)),x.copy(ce).multiplyScalar(l*Math.sin(lc))),I.copy(M).normalize(),bt||Ht){d||(W=Bm+hr,[0,1,2].forEach(ut=>{re[W*3+ut]=Em.getComponent(ut),ae[W*3+ut]=_m.getComponent(ut)}),ie[W*2]=+Ht,ie[W*2+1]=hr/h),x.copy(I).multiplyScalar(V),b.addVectors(y,x);for(let ut=0;ut<u;ut++){let va=ut*j+Om;k.addVectors(g.copy(ne).multiplyScalar(A*Math.sin(va)),x.copy(I).multiplyScalar(A*Math.cos(va))),q.copy(k).normalize(),x.addVectors(b,k),k.normalize(),W=Dm+ut*_+hr,[0,1,2].forEach(vn=>{re[W*3+vn]=x.getComponent(vn),ae[W*3+vn]=q.getComponent(vn)});let Gm=+bt+Math.sin(va);ie[W*2]=(Am+A*Gm)/pt,ie[W*2+1]=hr/h}}x.addVectors(y,M),W=H+Ee*_+hr,[0,1,2].forEach(ut=>{re[W*3+ut]=x.getComponent(ut),ae[W*3+ut]=I.getComponent(ut)}),ie[W*2]=(Se+Ee*Re)/pt,ie[W*2+1]=hr/h}}let xt=E+2*u+X,co=1,[xn,bn]=d?[co,co+E-1]:[0,xt-1];for(let Ee=xn;Ee<=bn-1;Ee++){let bt=d&&Ee===bn-1;for(let Ht=0;Ht<_-1;Ht++)C=Ee*_+Ht,S=C+1,v=(bt?Ht:C)+_,z=(bt?Ht+1:S)+_,Ee===0?me.push(S,z,v):Ee===xt-2?me.push(C,S,v):me.push(C,S,v,S,z,v)}this.setIndex(me),this.setAttribute("position",new fl(re,3)),this.setAttribute("normal",new fl(ae,3)),this.setAttribute("uv",new fl(ie,2))}};import{IcosahedronBufferGeometry as bv}from"three";var Gu=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,detail:0,corner:0,cornerSides:4},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:t,height:e,depth:r,detail:o,corner:i,cornerSides:s}=n.parameters,a=o===0&&i!==0?new ki(t*.5,i,s):new bv(t*.5,o);return a.scale(1,e/t,r/t),Object.assign(a,{userData:{...n,type:"IcosahedronGeometry"}})}},ki=class extends Er{constructor(t=1,e=.2,r=4){let o=(1+Math.sqrt(5))/2,i=[-1,o,0,1,o,0,-1,-o,0,1,-o,0,0,-1,o,0,1,o,0,-1,-o,0,1,-o,o,0,-1,o,0,1,-o,0,-1,-o,0,1],s=[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1],a="IcosahedronGeometry";super(i,s,a,t,e,r),this.type=a}static fromJSON(t){return new ki(t.radius,t.corner,t.cornerSides)}};import{LatheBufferGeometry as vv,Shape as Sv}from"three";var zu=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){(n.parameters?.points??[]).forEach(r=>{Array.isArray(r)&&(r.x=r[0],r.y=r[1])});let e=Object.assign({},t?.parameters??{width:100,segments:64,verticalSegments:64,points:[{x:0,y:-50,id:0},{x:50,y:-50,id:1},{x:50,y:50,id:2},{x:0,y:50,id:3}]},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{points:t,segments:e,verticalSegments:r}=n.parameters,o=new Sv;o.moveTo(t[0].x,t[0].y),o.bezierCurveTo(t[1].x,t[1].y,t[2].x,t[2].y,t[3].x,t[3].y);let i=new vv(o.extractPoints(r).shape,e);return i.rotateZ(Math.PI),Object.assign(i,{userData:{...n,type:"LatheGeometry"}})}};import{BufferGeometry as ku,BufferGeometryLoader as Av,Vector3 as Dv,BoxBufferGeometry as Hu}from"three";import{BufferGeometry as Mv,Vector2 as xl,Vector3 as ju}from"three";import{Box3 as wv,BufferAttribute as Hi,BufferGeometry as Ru,Color as Vu,EventDispatcher as Nv,Float32BufferAttribute as qo,Matrix3 as Fu,Matrix4 as Uu,MathUtils as Lv,Object3D as Cv,Sphere as Tv,Vector2 as Ot,Vector3 as tt}from"three";var Zt=new Uu,gl=new Cv,Bs=new tt,Gr=class extends Nv{constructor(){super(),this.uuid=Lv.generateUUID(),this.name="",this.type="Geometry",this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.elementsNeedUpdate=!1,this.verticesNeedUpdate=!1,this.uvsNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.lineDistancesNeedUpdate=!1,this.groupsNeedUpdate=!1}applyMatrix4(t){let e=new Fu().getNormalMatrix(t);for(let r=0,o=this.vertices.length;r<o;r++)this.vertices[r].applyMatrix4(t);for(let r=0,o=this.faces.length;r<o;r++){let i=this.faces[r];i.normal.applyMatrix3(e).normalize();for(let s=0,a=i.vertexNormals.length;s<a;s++)i.vertexNormals[s].applyMatrix3(e).normalize()}return this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this.verticesNeedUpdate=!0,this.normalsNeedUpdate=!0,this}rotateX(t){return Zt.makeRotationX(t),this.applyMatrix4(Zt),this}rotateY(t){return Zt.makeRotationY(t),this.applyMatrix4(Zt),this}rotateZ(t){return Zt.makeRotationZ(t),this.applyMatrix4(Zt),this}translate(t,e,r){return Zt.makeTranslation(t,e,r),this.applyMatrix4(Zt),this}scale(t,e,r){return Zt.makeScale(t,e,r),this.applyMatrix4(Zt),this}lookAt(t){return gl.lookAt(t),gl.updateMatrix(),this.applyMatrix4(gl.matrix),this}fromBufferGeometry(t){let e=this,r=t.index!==null?t.index:void 0,o=t.attributes;if(o.position===void 0)return console.error("THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion."),this;let i=o.position,s=o.normal,a=o.color,l=o.uv,c=o.uv2;c!==void 0&&(this.faceVertexUvs[1]=[]);for(let u=0;u<i.count;u++)e.vertices.push(new tt().fromBufferAttribute(i,u)),a!==void 0&&e.colors.push(new Vu().fromBufferAttribute(a,u));function h(u,d,m,g){let x=a===void 0?[]:[e.colors[u].clone(),e.colors[d].clone(),e.colors[m].clone()],y=s===void 0?[]:[new tt().fromBufferAttribute(s,u),new tt().fromBufferAttribute(s,d),new tt().fromBufferAttribute(s,m)],b=new Wo(u,d,m,y,x,g);e.faces.push(b),l!==void 0&&e.faceVertexUvs[0].push([new Ot().fromBufferAttribute(l,u),new Ot().fromBufferAttribute(l,d),new Ot().fromBufferAttribute(l,m)]),c!==void 0&&e.faceVertexUvs[1].push([new Ot().fromBufferAttribute(c,u),new Ot().fromBufferAttribute(c,d),new Ot().fromBufferAttribute(c,m)])}let p=t.groups;if(p.length>0)for(let u=0;u<p.length;u++){let d=p[u],m=d.start,g=d.count;for(let x=m,y=m+g;x<y;x+=3)r!==void 0?h(r.getX(x),r.getX(x+1),r.getX(x+2),d.materialIndex):h(x,x+1,x+2,d.materialIndex)}else if(r!==void 0)for(let u=0;u<r.count;u+=3)h(r.getX(u),r.getX(u+1),r.getX(u+2));else for(let u=0;u<i.count;u+=3)h(u,u+1,u+2);return this.computeFaceNormals(),t.boundingBox!==null&&(this.boundingBox=t.boundingBox.clone()),t.boundingSphere!==null&&(this.boundingSphere=t.boundingSphere.clone()),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(Bs).negate(),this.translate(Bs.x,Bs.y,Bs.z),this}normalize(){this.computeBoundingSphere();let t=this.boundingSphere.center,e=this.boundingSphere.radius,r=e===0?1:1/e,o=new Uu;return o.set(r,0,0,-r*t.x,0,r,0,-r*t.y,0,0,r,-r*t.z,0,0,0,1),this.applyMatrix4(o),this}computeFaceNormals(){let t=new tt,e=new tt;for(let r=0,o=this.faces.length;r<o;r++){let i=this.faces[r],s=this.vertices[i.a],a=this.vertices[i.b],l=this.vertices[i.c];t.subVectors(l,a),e.subVectors(s,a),t.cross(e),t.normalize(),i.normal.copy(t)}}computeVertexNormals(t=!0){let e=new Array(this.vertices.length);for(let r=0,o=this.vertices.length;r<o;r++)e[r]=new tt;if(t){let r=new tt,o=new tt;for(let i=0,s=this.faces.length;i<s;i++){let a=this.faces[i],l=this.vertices[a.a],c=this.vertices[a.b],h=this.vertices[a.c];r.subVectors(h,c),o.subVectors(l,c),r.cross(o),e[a.a].add(r),e[a.b].add(r),e[a.c].add(r)}}else{this.computeFaceNormals();for(let r=0,o=this.faces.length;r<o;r++){let i=this.faces[r];e[i.a].add(i.normal),e[i.b].add(i.normal),e[i.c].add(i.normal)}}for(let r=0,o=this.vertices.length;r<o;r++)e[r].normalize();for(let r=0,o=this.faces.length;r<o;r++){let i=this.faces[r],s=i.vertexNormals;s.length===3?(s[0].copy(e[i.a]),s[1].copy(e[i.b]),s[2].copy(e[i.c])):(s[0]=e[i.a].clone(),s[1]=e[i.b].clone(),s[2]=e[i.c].clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeFlatVertexNormals(){this.computeFaceNormals();for(let t=0,e=this.faces.length;t<e;t++){let r=this.faces[t],o=r.vertexNormals;o.length===3?(o[0].copy(r.normal),o[1].copy(r.normal),o[2].copy(r.normal)):(o[0]=r.normal.clone(),o[1]=r.normal.clone(),o[2]=r.normal.clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeMorphNormals(){for(let e=0,r=this.faces.length;e<r;e++){let o=this.faces[e];o.__originalFaceNormal?o.__originalFaceNormal.copy(o.normal):o.__originalFaceNormal=o.normal.clone(),o.__originalVertexNormals||(o.__originalVertexNormals=[]);for(let i=0,s=o.vertexNormals.length;i<s;i++)o.__originalVertexNormals[i]?o.__originalVertexNormals[i].copy(o.vertexNormals[i]):o.__originalVertexNormals[i]=o.vertexNormals[i].clone()}let t=new Gr;t.faces=this.faces;for(let e=0,r=this.morphTargets.length;e<r;e++){if(!this.morphNormals[e]){this.morphNormals[e]={},this.morphNormals[e].faceNormals=[],this.morphNormals[e].vertexNormals=[];let i=this.morphNormals[e].faceNormals,s=this.morphNormals[e].vertexNormals;for(let a=0,l=this.faces.length;a<l;a++){let c=new tt,h={a:new tt,b:new tt,c:new tt};i.push(c),s.push(h)}}let o=this.morphNormals[e];t.vertices=this.morphTargets[e].vertices,t.computeFaceNormals(),t.computeVertexNormals();for(let i=0,s=this.faces.length;i<s;i++){let a=this.faces[i],l=o.faceNormals[i],c=o.vertexNormals[i];l.copy(a.normal),c.a.copy(a.vertexNormals[0]),c.b.copy(a.vertexNormals[1]),c.c.copy(a.vertexNormals[2])}}for(let e=0,r=this.faces.length;e<r;e++){let o=this.faces[e];o.normal=o.__originalFaceNormal,o.vertexNormals=o.__originalVertexNormals}}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new wv),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new Tv),this.boundingSphere.setFromPoints(this.vertices)}merge(t,e,r=0){if(!(t&&t.isGeometry)){console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",t);return}let o,i=this.vertices.length,s=this.vertices,a=t.vertices,l=this.faces,c=t.faces,h=this.colors,p=t.colors;e!==void 0&&(o=new Fu().getNormalMatrix(e));for(let u=0,d=a.length;u<d;u++){let g=a[u].clone();e!==void 0&&g.applyMatrix4(e),s.push(g)}for(let u=0,d=p.length;u<d;u++)h.push(p[u].clone());for(let u=0,d=c.length;u<d;u++){let m=c[u],g,x,y=m.vertexNormals,b=m.vertexColors,C=new Wo(m.a+i,m.b+i,m.c+i);C.normal.copy(m.normal),o!==void 0&&C.normal.applyMatrix3(o).normalize();for(let S=0,v=y.length;S<v;S++)g=y[S].clone(),o!==void 0&&g.applyMatrix3(o).normalize(),C.vertexNormals.push(g);C.color.copy(m.color);for(let S=0,v=b.length;S<v;S++)x=b[S],C.vertexColors.push(x.clone());C.materialIndex=m.materialIndex+r,l.push(C)}for(let u=0,d=t.faceVertexUvs.length;u<d;u++){let m=t.faceVertexUvs[u];this.faceVertexUvs[u]===void 0&&(this.faceVertexUvs[u]=[]);for(let g=0,x=m.length;g<x;g++){let y=m[g],b=[];for(let C=0,S=y.length;C<S;C++)b.push(y[C].clone());this.faceVertexUvs[u].push(b)}}}mergeMesh(t){if(!(t&&t.isMesh)){console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",t);return}t.matrixAutoUpdate&&t.updateMatrix(),this.merge(t.geometry,t.matrix)}mergeVertices(t=4){let e={},r=[],o=[],i=Math.pow(10,t);for(let l=0,c=this.vertices.length;l<c;l++){let h=this.vertices[l],p=Math.round(h.x*i)+"_"+Math.round(h.y*i)+"_"+Math.round(h.z*i);e[p]===void 0?(e[p]=l,r.push(this.vertices[l]),o[l]=r.length-1):o[l]=o[e[p]]}let s=[];for(let l=0,c=this.faces.length;l<c;l++){let h=this.faces[l];h.a=o[h.a],h.b=o[h.b],h.c=o[h.c];let p=[h.a,h.b,h.c];for(let u=0;u<3;u++)if(p[u]===p[(u+1)%3]){s.push(l);break}}for(let l=s.length-1;l>=0;l--){let c=s[l];this.faces.splice(c,1);for(let h=0,p=this.faceVertexUvs.length;h<p;h++)this.faceVertexUvs[h].splice(c,1)}let a=this.vertices.length-r.length;return this.vertices=r,a}setFromPoints(t){this.vertices=[];for(let e=0,r=t.length;e<r;e++){let o=t[e];this.vertices.push(new tt(o.x,o.y,o.z||0))}return this}sortFacesByMaterialIndex(){let t=this.faces,e=t.length;for(let l=0;l<e;l++)t[l]._id=l;function r(l,c){return l.materialIndex-c.materialIndex}t.sort(r);let o=this.faceVertexUvs[0],i=this.faceVertexUvs[1],s,a;o&&o.length===e&&(s=[]),i&&i.length===e&&(a=[]);for(let l=0;l<e;l++){let c=t[l]._id;s&&s.push(o[c]),a&&a.push(i[c])}s&&(this.faceVertexUvs[0]=s),a&&(this.faceVertexUvs[1]=a)}toJSON(){let t={metadata:{version:4.5,type:"Geometry",generator:"Geometry.toJSON"}};if(t.uuid=this.uuid,t.type=this.type,this.name!==""&&(t.name=this.name),this.parameters!==void 0){let m=this.parameters;for(let g in m)m[g]!==void 0&&(t[g]=m[g]);return t}let e=[];for(let m=0;m<this.vertices.length;m++){let g=this.vertices[m];e.push(g.x,g.y,g.z)}let r=[],o=[],i={},s=[],a={},l=[],c={};for(let m=0;m<this.faces.length;m++){let g=this.faces[m],x=!0,y=!1,b=this.faceVertexUvs[0][m]!==void 0,C=g.normal.length()>0,S=g.vertexNormals.length>0,v=g.color.r!==1||g.color.g!==1||g.color.b!==1,z=g.vertexColors.length>0,w=0;if(w=h(w,0,0),w=h(w,1,x),w=h(w,2,y),w=h(w,3,b),w=h(w,4,C),w=h(w,5,S),w=h(w,6,v),w=h(w,7,z),r.push(w),r.push(g.a,g.b,g.c),r.push(g.materialIndex),b){let f=this.faceVertexUvs[0][m];r.push(d(f[0]),d(f[1]),d(f[2]))}if(C&&r.push(p(g.normal)),S){let f=g.vertexNormals;r.push(p(f[0]),p(f[1]),p(f[2]))}if(v&&r.push(u(g.color)),z){let f=g.vertexColors;r.push(u(f[0]),u(f[1]),u(f[2]))}}function h(m,g,x){return x?m|1<<g:m&~(1<<g)}function p(m){let g=m.x.toString()+m.y.toString()+m.z.toString();return i[g]!==void 0||(i[g]=o.length/3,o.push(m.x,m.y,m.z)),i[g]}function u(m){let g=m.r.toString()+m.g.toString()+m.b.toString();return a[g]!==void 0||(a[g]=s.length,s.push(m.getHex())),a[g]}function d(m){let g=m.x.toString()+m.y.toString();return c[g]!==void 0||(c[g]=l.length/2,l.push(m.x,m.y)),c[g]}return t.data={},t.data.vertices=e,t.data.normals=o,s.length>0&&(t.data.colors=s),l.length>0&&(t.data.uvs=[l]),t.data.faces=r,t}clone(){return new Gr().copy(this)}copy(t){this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.name=t.name;let e=t.vertices;for(let u=0,d=e.length;u<d;u++)this.vertices.push(e[u].clone());let r=t.colors;for(let u=0,d=r.length;u<d;u++)this.colors.push(r[u].clone());let o=t.faces;for(let u=0,d=o.length;u<d;u++)this.faces.push(o[u].clone());for(let u=0,d=t.faceVertexUvs.length;u<d;u++){let m=t.faceVertexUvs[u];this.faceVertexUvs[u]===void 0&&(this.faceVertexUvs[u]=[]);for(let g=0,x=m.length;g<x;g++){let y=m[g],b=[];for(let C=0,S=y.length;C<S;C++){let v=y[C];b.push(v.clone())}this.faceVertexUvs[u].push(b)}}let i=t.morphTargets;for(let u=0,d=i.length;u<d;u++){let m={};if(m.name=i[u].name,i[u].vertices!==void 0){m.vertices=[];for(let g=0,x=i[u].vertices.length;g<x;g++)m.vertices.push(i[u].vertices[g].clone())}if(i[u].normals!==void 0){m.normals=[];for(let g=0,x=i[u].normals.length;g<x;g++)m.normals.push(i[u].normals[g].clone())}this.morphTargets.push(m)}let s=t.morphNormals;for(let u=0,d=s.length;u<d;u++){let m={};if(s[u].vertexNormals!==void 0){m.vertexNormals=[];for(let g=0,x=s[u].vertexNormals.length;g<x;g++){let y=s[u].vertexNormals[g],b={};b.a=y.a.clone(),b.b=y.b.clone(),b.c=y.c.clone(),m.vertexNormals.push(b)}}if(s[u].faceNormals!==void 0){m.faceNormals=[];for(let g=0,x=s[u].faceNormals.length;g<x;g++)m.faceNormals.push(s[u].faceNormals[g].clone())}this.morphNormals.push(m)}let a=t.skinWeights;for(let u=0,d=a.length;u<d;u++)this.skinWeights.push(a[u].clone());let l=t.skinIndices;for(let u=0,d=l.length;u<d;u++)this.skinIndices.push(l[u].clone());let c=t.lineDistances;for(let u=0,d=c.length;u<d;u++)this.lineDistances.push(c[u]);let h=t.boundingBox;h!==null&&(this.boundingBox=h.clone());let p=t.boundingSphere;return p!==null&&(this.boundingSphere=p.clone()),this.elementsNeedUpdate=t.elementsNeedUpdate,this.verticesNeedUpdate=t.verticesNeedUpdate,this.uvsNeedUpdate=t.uvsNeedUpdate,this.normalsNeedUpdate=t.normalsNeedUpdate,this.colorsNeedUpdate=t.colorsNeedUpdate,this.lineDistancesNeedUpdate=t.lineDistancesNeedUpdate,this.groupsNeedUpdate=t.groupsNeedUpdate,this}toBufferGeometry(){let t=new yl().fromGeometry(this),e=new Ru,r=new Float32Array(t.vertices.length*3);if(e.setAttribute("position",new Hi(r,3).copyVector3sArray(t.vertices)),t.normals.length>0){let o=new Float32Array(t.normals.length*3);e.setAttribute("normal",new Hi(o,3).copyVector3sArray(t.normals))}if(t.colors.length>0){let o=new Float32Array(t.colors.length*3);e.setAttribute("color",new Hi(o,3).copyColorsArray(t.colors))}if(t.uvs.length>0){let o=new Float32Array(t.uvs.length*2);e.setAttribute("uv",new Hi(o,2).copyVector2sArray(t.uvs))}if(t.uvs2.length>0){let o=new Float32Array(t.uvs2.length*2);e.setAttribute("uv2",new Hi(o,2).copyVector2sArray(t.uvs2))}e.groups=t.groups;for(let o in t.morphTargets){let i=[],s=t.morphTargets[o];for(let a=0,l=s.length;a<l;a++){let c=s[a],h=new qo(c.data.length*3,3);h.name=c.name,i.push(h.copyVector3sArray(c.data))}e.morphAttributes[o]=i}if(t.skinIndices.length>0){let o=new qo(t.skinIndices.length*4,4);e.setAttribute("skinIndex",o.copyVector4sArray(t.skinIndices))}if(t.skinWeights.length>0){let o=new qo(t.skinWeights.length*4,4);e.setAttribute("skinWeight",o.copyVector4sArray(t.skinWeights))}return t.boundingSphere!==null&&(e.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(e.boundingBox=t.boundingBox.clone()),e}computeTangents(){console.error("THREE.Geometry: .computeTangents() has been removed.")}computeLineDistances(){console.error("THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.")}applyMatrix(t){return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(t)}dispose(){this.dispatchEvent({type:"dispose"})}static createBufferGeometryFromObject(t){let e=new Ru,r=t.geometry;if(t.isPoints||t.isLine){let o=new qo(r.vertices.length*3,3),i=new qo(r.colors.length*3,3);if(e.setAttribute("position",o.copyVector3sArray(r.vertices)),e.setAttribute("color",i.copyColorsArray(r.colors)),r.lineDistances&&r.lineDistances.length===r.vertices.length){let s=new qo(r.lineDistances.length,1);e.setAttribute("lineDistance",s.copyArray(r.lineDistances))}r.boundingSphere!==null&&(e.boundingSphere=r.boundingSphere.clone()),r.boundingBox!==null&&(e.boundingBox=r.boundingBox.clone())}else t.isMesh&&(e=r.toBufferGeometry());return e}};Gr.prototype.isGeometry=!0;var yl=class{constructor(){this.vertices=[],this.normals=[],this.colors=[],this.uvs=[],this.uvs2=[],this.groups=[],this.morphTargets={},this.skinWeights=[],this.skinIndices=[],this.boundingBox=null,this.boundingSphere=null,this.verticesNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.uvsNeedUpdate=!1,this.groupsNeedUpdate=!1}computeGroups(t){let e=[],r,o,i,s=t.faces;for(o=0;o<s.length;o++){let a=s[o];a.materialIndex!==i&&(i=a.materialIndex,r!==void 0&&(r.count=o*3-r.start,e.push(r)),r={start:o*3,materialIndex:i})}r!==void 0&&(r.count=o*3-r.start,e.push(r)),this.groups=e}fromGeometry(t){let e=t.faces,r=t.vertices,o=t.faceVertexUvs,i=o[0]&&o[0].length>0,s=o[1]&&o[1].length>0,a=t.morphTargets,l=a.length,c;if(l>0){c=[];for(let y=0;y<l;y++)c[y]={name:a[y].name,data:[]};this.morphTargets.position=c}let h=t.morphNormals,p=h.length,u;if(p>0){u=[];for(let y=0;y<p;y++)u[y]={name:h[y].name,data:[]};this.morphTargets.normal=u}let d=t.skinIndices,m=t.skinWeights,g=d.length===r.length,x=m.length===r.length;r.length>0&&e.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(let y=0;y<e.length;y++){let b=e[y];this.vertices.push(r[b.a],r[b.b],r[b.c]);let C=b.vertexNormals;if(C.length===3)this.normals.push(C[0],C[1],C[2]);else{let v=b.normal;this.normals.push(v,v,v)}let S=b.vertexColors;if(S.length===3)this.colors.push(S[0],S[1],S[2]);else{let v=b.color;this.colors.push(v,v,v)}if(i===!0){let v=o[0][y];v!==void 0?this.uvs.push(v[0],v[1],v[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",y),this.uvs.push(new Ot,new Ot,new Ot))}if(s===!0){let v=o[1][y];v!==void 0?this.uvs2.push(v[0],v[1],v[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",y),this.uvs2.push(new Ot,new Ot,new Ot))}for(let v=0;v<l;v++){let z=a[v].vertices;c[v].data.push(z[b.a],z[b.b],z[b.c])}for(let v=0;v<p;v++){let z=h[v].vertexNormals[y];u[v].data.push(z.a,z.b,z.c)}g&&this.skinIndices.push(d[b.a],d[b.b],d[b.c]),x&&this.skinWeights.push(m[b.a],m[b.b],m[b.c])}return this.computeGroups(t),this.verticesNeedUpdate=t.verticesNeedUpdate,this.normalsNeedUpdate=t.normalsNeedUpdate,this.colorsNeedUpdate=t.colorsNeedUpdate,this.uvsNeedUpdate=t.uvsNeedUpdate,this.groupsNeedUpdate=t.groupsNeedUpdate,t.boundingSphere!==null&&(this.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(this.boundingBox=t.boundingBox.clone()),this}},Wo=class{constructor(t,e,r,o,i,s=0){this.a=t,this.b=e,this.c=r,this.normal=o&&o.isVector3?o:new tt,this.vertexNormals=Array.isArray(o)?o:[],this.color=i&&i.isColor?i:new Vu,this.vertexColors=Array.isArray(i)?i:[],this.materialIndex=s}clone(){return new this.constructor().copy(this)}copy(t){this.a=t.a,this.b=t.b,this.c=t.c,this.normal.copy(t.normal),this.color.copy(t.color),this.materialIndex=t.materialIndex;for(let e=0,r=t.vertexNormals.length;e<r;e++)this.vertexNormals[e]=t.vertexNormals[e].clone();for(let e=0,r=t.vertexColors.length;e<r;e++)this.vertexColors[e]=t.vertexColors[e].clone();return this}};var Pv=["a","b","c"];function Iv(n,t){switch(t){case"c":return n.c;case"b":return n.b;case"a":default:return n.a}}function bl(n,t,e){let r=Math.min(n,t),o=Math.max(n,t),i=r+"_"+o;return e.get(i)}function vl(n,t,e,r,o,i){let s=Math.min(n,t),a=Math.max(n,t),l=s+"_"+a,c;if(r.has(l))c=r.get(l);else{let h=e[s],p=e[a];c={a:h,b:p,newEdge:null,faces:[]},r.set(l,c)}c.faces.push(o),i[n].edges.push(c),i[t].edges.push(c)}function Ov(n,t,e,r){let o,i,s;for(o=0,i=n.length;o<i;o++)e[o]={edges:[]};for(o=0,i=t.length;o<i;o++)s=t[o],vl(s.a,s.b,n,r,s,e),vl(s.b,s.c,n,r,s,e),vl(s.c,s.a,n,r,s,e)}function Es(n,t,e,r,o){n.push(new Wo(t,e,r,void 0,void 0,o))}function $o(n,t){return Math.abs(t-n)/2+Math.min(n,t)}function _s(n,t,e,r){n.push([t.clone(),e.clone(),r.clone()])}var Gs=class{constructor(t=1){this.subdivisions=t}modify(t){t instanceof Mv?t=new Gr().fromBufferGeometry(t):t=t.clone(),t.mergeVertices();let e=this.subdivisions;for(;e-- >0;)this._smooth(t);return t.computeFaceNormals(),t.computeVertexNormals(),t}_smooth(t){let e=new ju,r,o,i,s,a,l=t.vertices,c=t.faces,h=t.faceVertexUvs[0],p=h!==void 0&&h.length>0,u=[],d=new Map;Ov(l,c,u,d);let m=[],g,x,y,b,C,S,v;for(let F of Array.from(d.keys())){for(x=d.get(F),y=new ju,C=3/8,S=1/8,v=x.faces.length,v!=2&&(C=.5,S=0,v!=1),y.addVectors(x.a,x.b).multiplyScalar(C),e.set(0,0,0),s=0;s<v;s++){for(b=x.faces[s],a=0;a<3&&(g=l[Iv(b,Pv[a])],!(g!==x.a&&g!==x.b));a++);g&&e.add(g)}e.multiplyScalar(S),y.add(e),x.newEdge=m.length,m.push(y)}let z,w,f,D,L,P,M,I=[];for(o=0,i=l.length;o<i;o++){for(P=l[o],L=u[o].edges,r=L.length,r==3?z=3/16:r>3&&(z=3/(8*r)),w=1-r*Number(z),f=z,r<=2&&(r==2?(w=3/4,f=1/8):r==1||r==0),M=P.clone().multiplyScalar(w),e.set(0,0,0),s=0;s<r;s++)D=L[s],g=D.a!==P?D.a:D.b,e.add(g);e.multiplyScalar(Number(f)),M.add(e),I.push(M)}let k=I.concat(m),q=I.length,oe,ce,ne,J=[],U=[],R,E,B,O,_=new xl,Y=new xl,j=new xl;for(o=0,i=c.length;o<i;o++)b=c[o],oe=Number(bl(b.a,b.b,d).newEdge)+q,ce=Number(bl(b.b,b.c,d).newEdge)+q,ne=Number(bl(b.c,b.a,d).newEdge)+q,Es(J,oe,ce,ne,b.materialIndex),Es(J,b.a,oe,ne,b.materialIndex),Es(J,b.b,ce,oe,b.materialIndex),Es(J,b.c,ne,ce,b.materialIndex),p&&(R=h[o],E=R[0],B=R[1],O=R[2],_.set($o(E.x,B.x),$o(E.y,B.y)),Y.set($o(B.x,O.x),$o(B.y,O.y)),j.set($o(E.x,O.x),$o(E.y,O.y)),_s(U,_,Y,j),_s(U,E,_,j),_s(U,B,Y,_),_s(U,O,j,Y));t.vertices=k,t.faces=J,p&&(t.faceVertexUvs[0]=U)}};var ke=new Dv,qu=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=n.geometry??t?.geometry??new ku().copy(new Hu(100,100,100)),r;t===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(ke),r={width:ke.x,height:ke.y,depth:ke.z,subdivisions:0}):r=t.parameters;let o={...r,...n.parameters};return{parameters:{width:Math.abs(o.width),height:Math.abs(o.height),depth:Math.abs(o.depth),subdivisions:Math.abs(o.subdivisions)},geometry:e}}static build(n){let{width:t,height:e,depth:r,subdivisions:o}=n.parameters,i=n.geometry??new ku().copy(new Hu(100,100,100)),s=i.userData.parameters;s===void 0?(i.computeBoundingBox(),i.boundingBox.getSize(ke)):ke.set(s.width,s.height,s.depth),(t!==ke.x||e!==ke.y||r!==ke.z)&&i.scale(ke.x===0?1:t/ke.x,ke.y===0?1:e/ke.y,ke.z===0?1:r/ke.z);let a=i.originalGeometry;return o>0?(a===void 0||s?.subdivisions!==o)&&(a===void 0&&(a=i),i=new Gs(o).modify(a).toBufferGeometry()):(a!==void 0&&(i=a),a=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals()),a!==void 0&&Object.assign(i,{originalGeometry:a}),delete n.geometry,Object.assign(i,{userData:{...n,type:"NonParametricGeometry"}})}static loadFromUrl(n,t,e){new Av(e).load(n,o=>{let i=this.normalizeInputs({geometry:o});o.boundingBox.getSize(ke);let s=100/ke.x;Object.assign(i.parameters,{width:100,height:ke.y*s,depth:ke.z*s}),t(this.build(i))})}};var Wu=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters);return{shape:n.shape&&n.shape instanceof be?n.shape:new be,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:t,height:e,spikes:r,cornerRadius:o,depth:i,extrudeBevelSize:s,extrudeBevelSegments:a}=n.parameters,l=n.shape,c=t*.5,h=e*.5,p=0,u=0,d=2*Math.PI/r;for(let g=0;g<r;g++){let x=d*g,y=p+Math.sin(x)*c,b=u+Math.cos(x)*h;l.addPoint(l.createPoint(y,b))}l.isClosed=!0;for(let g=0,x=l.points.length;g<x;g++)l.points[g].roundness=o;l.roundness=o,l.update();let m=Je.create({shape:l,parameters:{roundness:o,depth:i,extrudeBevelSize:s,extrudeBevelSegments:a}});return Object.assign(m,{userData:{...n,type:"PolygonGeometry"}})}};import{BufferGeometry as Bv,Float32BufferAttribute as Sl,Vector2 as Qt,Vector3 as We}from"three";var $u=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:4,heightSegments:1,cornerRadius:0,cornerSegments:8,openEnded:!1},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:t,height:e,depth:r,radialSegments:o,heightSegments:i,openEnded:s,cornerRadius:a,cornerSegments:l}=n.parameters,c=new Nl(t*.5,e,o,i,s,a,l);return c.scale(1,1,r/t),Object.assign(c,{userData:{...n,type:"PyramidGeometry"}})}};function qi(n,t,e){e.x=n.x*t.x,e.y=n.y,e.z=n.x*t.y}function wl(n,t,e,r,o,i){let s=t.clone().sub(n),a=e.clone().sub(n),l=s.angleTo(a);if(s.normalize(),a.normalize(),r===o){let c=s.add(a).normalize();i.copy(n).addScaledVector(c,r/Math.sin(l/2))}else{let c=s.angleTo(a);i.copy(n),i.addScaledVector(s,o/Math.sin(c)),i.addScaledVector(a,r/Math.sin(c))}}function Ev(n,t,e){let r=n.clone().sub(t),o=e.clone().sub(t);return r.projectOnVector(o),r.add(t)}var Nl=class extends Bv{constructor(t=.5,e=1,r=4,o=1,i=!1,s=0,a=4){super(),r=Math.floor(Math.max(3,r)),o=Math.floor(o),a=Math.floor(a);let l=[],c=[],h=[],p=[],u=0,d=e/2,m=Math.PI/r,g=t*Math.cos(Math.PI/r),x=2*Math.PI/r,y=(r-2)*Math.PI/r,b=Math.PI-y,C=new We(0,-d,0),S=new We(0,d,0),v=new Qt(t,-d),z=new Qt(g,-d),w=new Qt(0,S.y).sub(z),f=new Qt(0,S.y).sub(v),D=new Qt(w.y,-w.x).normalize(),L=new Qt(f.y,-f.x).normalize(),M=t*Math.cos(Math.PI/r)*Math.tan((Math.PI-w.angle())/2)-1e-8;s=Math.min(s,M);let I;{let U=new We(D.x,D.y,0),R=new We(Math.cos(x)*U.x,U.y,Math.sin(x)*U.x);I=U.angleTo(R)}let k=s/Math.tan((Math.PI-w.angle())/2),q=s/Math.tan((Math.PI-I)/2),oe=new We;if(!i){c.push(C.x,C.y,C.z),h.push(0,-1,0),p.push(0,0);let U=u++,R=[],E=v.clone(),B=k/Math.cos(Math.PI/r);E.x-=B;for(let O=0;O<r;O++){let _=O/r*Math.PI*2+m,Y=new Qt(Math.sin(_),Math.cos(_));qi(E,Y,oe),c.push(oe.x,oe.y,oe.z),h.push(0,-1,0),p.push(0,0),R.push(u++)}for(let O=0;O<R.length;O++)l.push(R[O],U,R[(O+1)%R.length])}let ce=[];{let U=new We,R=new We,E=new We,B=new We,O=new We,_=new We;for(let Y=0;Y<r;Y++){let j=Y/r*Math.PI*2+m,F=(Y+.5)/r*Math.PI*2+m,V=(Y+1)/r*Math.PI*2+m,A=new Qt(Math.sin(j),Math.cos(j)),W=new Qt(Math.sin(F),Math.cos(F)),X=new Qt(Math.sin(V),Math.cos(V));qi(v,A,R),qi(v,X,E),qi(D,W,U),wl(S,R,E,q,q,B),c.push(B.x,B.y,B.z),wl(R,S,E,q,k,O),c.push(O.x,O.y,O.z),wl(E,R,S,k,q,_),c.push(_.x,_.y,_.z),h.push(U.x,U.y,U.z),h.push(U.x,U.y,U.z),h.push(U.x,U.y,U.z),p.push(0,0),p.push(0,0),p.push(0,0);let Z=u++,H=u++,K=u++;if(l.push(Z,H,K),s>0){{let ae=R.clone().add(E).multiplyScalar(.5),ie=S.clone().sub(ae).normalize(),De=C.clone().sub(ae).normalize().add(ie).normalize().multiplyScalar(-1),ge=_.clone().sub(O);ne(ae,ge,De,w.angle())}let $,re;{let ae=new We;qi(L,X,ae);let ie=_.clone().add(B).multiplyScalar(.5);ie=Ev(ie,E,S);let me=_.clone().sub(B);[$,re]=ne(ie,me,ae,I,B.y)}{let ae=$,ie=ae.clone().setY(0).normalize(),me=new We(0,-1,0),De=ie.clone().cross(me);J(ae,ie,me,De)}ce.concat(re);{let ae=w.angle(),ie=Math.PI-ae,me=S.clone();me.y-=s/Math.sin(ae-Math.PI/2);let De=new We,ge=[];for(let Se=0;Se<a;Se++){let pt=[],Ct=Math.PI/2-ie*Se/a,lo=Math.cos(Ct),xt=Math.sin(Ct),co=F;for(let xn=0;xn<=Se;xn++){let bn=Math.cos(co),Ee=Math.sin(co);U.x=lo*Ee,U.y=xt,U.z=lo*bn,De.copy(me).addScaledVector(U,s),c.push(De.x,De.y,De.z),h.push(U.x,U.y,U.z),p.push(0,0),pt.push(u++),co+=Math.PI*2/Se/r}ge.push(pt)}re.reverse(),ge.push(re);let Re=ge.length-1;for(let Se=0;Se<Re;Se++){let pt=ge[Se],Ct=ge[Se+1],lo=pt.length-1;l.push(Ct[1],pt[0],Ct[0]);for(let xt=1;xt<=lo;xt++)l.push(pt[xt],pt[xt-1],Ct[xt]),l.push(Ct[xt+1],pt[xt],Ct[xt])}}}}}this.setIndex(l),this.setAttribute("position",new Sl(c,3)),this.setAttribute("normal",new Sl(h,3)),this.setAttribute("uv",new Sl(p,2));function ne(U,R,E,B,O){let _=-B/2,Y=(Math.PI-B)/2,j=R.clone().normalize().cross(E);U.addScaledVector(E,-s/Math.sin(Y));let F=new We,V=new We,A=1,W=u,X=[];for(let Z=0;Z<=a;Z++){let H=_+Z/a*B;V.set(0,0,0),V.addScaledVector(j,Math.sin(H)),V.addScaledVector(E,Math.cos(H));for(let K=0;K<=A;K++){let $=K/A-.5;if(F.copy(U),F.addScaledVector(R,$),F.addScaledVector(V,s),O!=null){let re=Math.max(0,F.y-O);F.addScaledVector(R,-re/R.y)}c.push(F.x,F.y,F.z),h.push(V.x,V.y,V.z),p.push(0,0),K===0&&X.push(u),u++}}for(let Z=0;Z<a;Z++)for(let H=0;H<A;H++){let K=W+H+(A+1)*Z,$=K+(A+1),re=$+1,ae=K+1;l.push(K,$,ae),l.push($,re,ae)}return[U.clone().addScaledVector(R,.5),X]}function J(U,R,E,B){let O=Math.PI/2,_=f.angle()-O,Y=[],j=new We,F=new We;for(let A=0;A<=a;A++){let W=[],X=A/a;for(let Z=0;Z<=A;Z++){let K=((A?Z/A:0)-.5)*b,$=Math.cos(K),re=Math.sin(K),ae=Math.atan(Math.tan(_)*$),ie=(O+ae)*X,me=Math.cos(ie),De=Math.sin(ie);j.set(0,0,0),j.addScaledVector(R,De*$),j.addScaledVector(E,me),j.addScaledVector(B,De*re),F.copy(U).addScaledVector(j,s),c.push(F.x,F.y,F.z),h.push(j.x,j.y,j.z),p.push(0,0),W.push(u++)}Y.push(W)}let V=Y.length-1;for(let A=0;A<V;A++){let W=Y[A],X=Y[A+1],Z=W.length-1;l.push(W[0],X[1],X[0]);for(let H=1;H<=Z;H++)l.push(W[H-1],W[H],X[H]),l.push(W[H],X[H+1],X[H])}}}};var zs=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,cornerRadius:[0,0,0,0],cornerType:1,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters),r=Object.assign(t?.ui??{enabledIndieCorners:!1},n.ui);return{shape:n.shape&&n.shape instanceof be?n.shape:new be,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)}),ui:r}}static build(n){let t=n.shape,{width:e,height:r,cornerRadius:o,cornerType:i,depth:s,extrudeBevelSize:a,extrudeBevelSegments:l}=n.parameters,c={x:e*.5,y:r*.5},h={x:-c.x,y:-c.y},p={x:c.x,y:c.y};function u(S,v,z){return v>e&&z>r?Math.min(S*e/v,S*r/z):v>e?S*e/v:z>r?S*r/z:S}let d=[];d[0]=o[0]===0?0:u(o[0],o[0]+o[3],o[0]+o[1]),d[1]=o[1]===0?0:u(o[1],o[1]+o[2],o[1]+o[0]),d[2]=o[2]===0?0:u(o[2],o[2]+o[1],o[2]+o[3]),d[3]=o[3]===0?0:u(o[3],o[3]+o[0],o[3]+o[2]);let m=h.x,g=p.x,x=p.y,y=h.y;t.addPoint(t.createPoint(m,x)),t.addPoint(t.createPoint(g,x)),t.addPoint(t.createPoint(g,y)),t.addPoint(t.createPoint(m,y)),t.isClosed=!0;let b=!0;for(let S=0,v=t.points.length;S<v;S++)t.points[S].roundness=d[S],S>0&&d[S]!==d[S-1]&&(b=!1);b&&(t.roundness=d[0]),t.useCubicForRoundedCorners=i!==1,t.update();let C=Je.create({shape:t,parameters:{depth:s,extrudeBevelSize:a,extrudeBevelSegments:l}});return Object.assign(C,{userData:{...n,type:"RectangleGeometry"}})}};import{SphereBufferGeometry as _v}from"three";var Ju=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:Math.PI},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:t=100,height:e=t,depth:r=t,widthSegments:o=64,heightSegments:i=64,phiStart:s,phiLength:a,thetaStart:l,thetaLength:c}=n.parameters,h=new _v(.5*t,o,i,s,a,l,c);return h.scale(1,e/t,r/t),Object.assign(h,{userData:{...n,type:"SphereGeometry"}})}};import{PlaneBufferGeometry as Gv}from"three";var Yu=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,widthSegments:8,heightSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:0})}}static build(n){let{width:t=100,height:e=t,widthSegments:r=8,heightSegments:o=8}=n.parameters,i=new Gv(t,e,r,o);return i.scale(1,1,1),Object.assign(i,{userData:{...n,type:"PlaneGeometry"}})}};import{BufferGeometry as zv,Float32BufferAttribute as Ll,Vector3 as Rv}from"three";var Ku=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,angle:90,cornerRadius:24,cornerSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:t,height:e,depth:r,angle:o,cornerRadius:i,cornerSegments:s}=n.parameters,a=new Cl(t,e,r,o,i,s);return Object.assign(a,{userData:{...n,type:"BackdropGeometry"}})}},Cl=class extends zv{constructor(t=1,e=1,r=1,o=90,i=10,s=24){super(),this.type="BackdropGeometry";let a=[],l=[],c=[],h=.001;i==0&&(s=1),s=Math.max(1,Math.floor(s)),i=Math.min(i,100),o=Math.min(180-h,o),o*=Math.PI/180;let p=[],u=Math.PI/2,d=(F=0,V=0,A=0)=>new Rv(F,V,A),m=d(),g=d(),[x,y,b]=[e/2,t/2,r/2],C=-y,S=+y,[v,z,w]=[d(C,-x,+b),d(C,-x,-b),d(C,+x,-b)],f=(F,V=!1)=>Math.sin(F-Math.PI/(1+ +V)),D=(F,V=!1)=>Math.cos(F-Math.PI/(1+ +V));w.y=Math.sin(o)*e-x;let L=Math.cos(o)*e-b,P=v.z-h;o<=u?(w.z=Math.min(L,P),w.z==P&&(w.y-=(L-P)/Math.tan(u-o))):z.z=Math.min(z.z-L-b,v.z-h),m.subVectors(v,z),g.subVectors(w,z);let M=Math.min(m.length(),g.length())*i/100,I=M*Math.tan(o/2),k=M/Math.cos(o/2),q=m.clone().normalize().add(g.normalize()).setLength(k).add(z);m.set(0,f(o,!0),D(o,!0)),p.push([w,m.clone()]);let oe=(Math.PI-o)/s;for(let F=0;F<=s;F++){let V=u+o+F*oe;m.set(0,Math.sin(V)*I,Math.cos(V)*I),m.add(q),g.set(0,f(V),D(V)),p.push([m.clone(),g.clone()])}p.push([v,d(0,1,0)]);let ce=Math.sin(oe/2)*I*2,ne=p.length-1,J=p[0][0].distanceTo(p[1][0]),U=p[ne-1][0].distanceTo(p[ne][0]),R=J+ce*s+U;p[0].push(1);for(let F=0;F<=s;F++)p[F+1].push(1-(J+F*ce)/R);p[ne].push(0);let[E,B,O]=p[0],_,Y,j;for(let F=1;F<p.length;F++)[_,Y,j]=p[F],a.push(C,E.y,E.z,C,_.y,_.z,S,E.y,E.z,S,E.y,E.z,C,_.y,_.z,S,_.y,_.z),l.push(0,B.y,B.z,0,Y.y,Y.z,0,B.y,B.z,0,B.y,B.z,0,Y.y,Y.z,0,Y.y,Y.z),c.push(0,O,0,j,1,O,1,O,0,j,1,j),[E,B,O]=[_,Y,j];this.setAttribute("position",new Ll(a,3)),this.setAttribute("normal",new Ll(l,3)),this.setAttribute("uv",new Ll(c,2))}};var Xu=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,innerRadiusPercent:38.19,spikes:5,cornerRadius:0,angle:360,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters);return{shape:n.shape&&n.shape instanceof be?n.shape:new be,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:t,height:e,innerRadiusPercent:r,spikes:o,cornerRadius:i,angle:s,depth:a,extrudeBevelSize:l,extrudeBevelSegments:c}=n.parameters,h=n.shape,p=t*.5,u=e*.5,d=0,m=0,g=s*Math.PI/360/o,x=Math.PI/2*3*-1,y=p*r/100,b=u*r/100;if(o===3&&r===50){g=2*Math.PI/o;for(let S=0;S<o;S++){let v=g*S,z=d+Math.sin(v)*p,w=m+Math.cos(v)*u;h.addPoint(h.createPoint(z,w))}}else for(let S=0;S<o;S++){let v=d+Math.cos(x)*p,z=m+Math.sin(x)*u;h.addPoint(h.createPoint(v,z)),x+=g,v=d+Math.cos(x)*y,z=m+Math.sin(x)*b,S<=o,h.addPoint(h.createPoint(v,z)),x+=g}h.isClosed=!0;for(let S=0,v=h.points.length;S<v;S++)h.points[S].roundness=i;h.roundness=i,h.update();let C=Je.create({shape:h,parameters:{roundness:i,depth:a,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(C,{userData:{...n,type:"StarGeometry"}})}};import{PlaneBufferGeometry as Fv}from"three";var Rs=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:t,height:e}=n.parameters,r=new Fv(t,e);return Object.assign(r,{userData:{...n,type:"TextFrameGeometry"}})}};var Zu=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:32,tubularSegments:64,arc:Math.PI*2,cornerRadius:30,cornerSegments:8},n.parameters),r=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??e.width*.25);return{parameters:Object.assign(e,{width:r,height:o,depth:i})}}static build(n){let{width:t,height:e,depth:r,radialSegments:o,tubularSegments:i,arc:s,cornerRadius:a,cornerSegments:l}=n.parameters,c=Vv(t,e,r,t*.5,s,i,0,0,o,a,l);return c.scale(1,e/t,1),Object.assign(c,{userData:{...n,type:"TorusGeometry"}})}};function Vv(n,t,e,r,o,i,s,a,l,c,h){return[t,e]=[e,t],s=t/2,o/=2*Math.PI,o==1&&(c=0),new ji(!0,n,t,e,r,o,i,s,a,l,c,h)}import{TorusKnotBufferGeometry as Uv}from"three";var Qu=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,tubularSegments:64,radialSegments:32,p:2,q:3},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width),tube:e.tube??e.width*.125})}}static build(n){let{width:t,tube:e,tubularSegments:r,radialSegments:o,p:i,q:s}=n.parameters,a=t*.5;a!==e&&(a-=e);let l=new Uv(a,e,r,o,i,s);return Object.assign(l,{userData:{...n,type:"TorusKnotGeometry"}})}};var ed=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1,isRect:!1},n.parameters);return{shape:n.shape&&n.shape instanceof be?n.shape:new be,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width*(e.isRect?1:Math.sqrt(3)/2)),depth:Math.abs(e.depth??0)})}}static build(n){let{width:t=100,height:e,cornerRadius:r,depth:o,extrudeBevelSize:i,extrudeBevelSegments:s,isRect:a}=n.parameters,l=n.shape,c=t*.5,h=e*.5;a?(l.addPoint(l.createPoint(-c,h)),l.addPoint(l.createPoint(c,-h)),l.addPoint(l.createPoint(-c,-h))):(l.addPoint(l.createPoint(0,h)),l.addPoint(l.createPoint(c,-h)),l.addPoint(l.createPoint(-c,-h))),l.isClosed=!0;for(let u=0,d=l.points.length;u<d;u++)l.points[u].roundness=r;l.roundness=r,l.update();let p=Je.create({shape:l,parameters:{roundness:r,depth:o,extrudeBevelSize:i,extrudeBevelSegments:s}});return Object.assign(p,{userData:{...n,type:"TriangleGeometry"}})}};var Fs={};cc(Fs,{addBarycentricAttribute:()=>Wv,fixUvs:()=>Jv,loadFromUrl:()=>$v,resizeGeometry:()=>qv,roundShapePolygon:()=>Hv});import{BufferGeometryLoader as jv,Float32BufferAttribute as kv,Vector3 as Tl}from"three";var td=function(n,t){let e=t.x-n.x,r=t.y-n.y,o=Math.sqrt(e*e+r*r),i=e/o,s=r/o,a=Math.atan2(s,i);return{x:e,y:r,len:o,nx:i,ny:s,ang:a}},Hv=(n,t,e)=>{let r,o,i,s,a,l,c,h,p,u,d,m,g,x,y=t.length;for(s=t[y-2],n.curves=[],r=1;r<y-1;r++){a=t[r%y],l=t[(r+1)%y];let b=td(a,s),C=td(a,l);c=b.nx*C.ny-b.ny*C.nx,h=b.nx*C.nx-b.ny*-C.ny,d=Math.asin(c),p=1,u=!1,h<0?d<0?d=Math.PI+d:(d=Math.PI-d,p=-1,u=!0):d>0&&(p=-1,u=!0),m=d/2,x=Math.abs(Math.cos(m)*e/Math.sin(m)),x>Math.min(b.len/2,C.len/2)?(x=Math.min(b.len/2,C.len/2),g=Math.abs(x*Math.sin(m)/Math.cos(m))):g=e,o=a.x+C.nx*x,i=a.y+C.ny*x,o+=-C.ny*g*p,i+=C.nx*g*p,n.absarc(o,i,g,b.ang+Math.PI/2*p,C.ang-Math.PI/2*p,u),s=a,a=l}n.closePath()},qv=(n,{width:t,height:e,depth:r})=>{t=Math.abs(t),e=Math.abs(e),r=Math.abs(r);let o=n.userData.parameters,i,s,a;t===0?(t=o.width,i=1):i=t/o.width,e===0?(e=o.height,s=1):s=e/o.height,r===0?(r=o.depth,a=1):a=r/o.depth,n.scale(i,s,a),o.width=t,o.height=e,o.depth=r},Wv=(n,t)=>{let e=[new Tl(1,0,0),new Tl(0,1,0),new Tl(0,0,1)],r=n.attributes.position,o=new Float32Array(r.count*3);for(let i=0,s=r.count;i<s;i++)e[i%3].toArray(o,i*3);n.setAttribute(t,new kv(o,3))},$v=n=>new Promise(t=>{new jv().load(n,r=>t(r))}),Jv=(n,t,e)=>{let r=n.getAttribute("uv");if(r)for(let o=0;o<r.count;o++){let i=r.getX(o),s=r.getY(o);r.setXY(o,(i+t/2)/t,1-(s-e/2)/e*-1)}};import{BufferGeometry as _d,BufferAttribute as Gd,Uint32BufferAttribute as Wl,Float32BufferAttribute as $l,Matrix4 as sw,Vector3 as na}from"three";var Yv,Vs=new Promise(n=>{Yv=n});import{BufferGeometryLoader as iw}from"three";import{DoubleSide as ew,EventDispatcher as tw,Matrix3 as rw,Vector3 as ql}from"three";import{NormalBlending as yS,ShaderMaterial as xS,FrontSide as bS}from"three";import{CubeReflectionMapping as lS,CubeRefractionMapping as cS,CubeUVReflectionMapping as hS,LinearEncoding as sd,sRGBEncoding as pS}from"three";var Wi=class{constructor(t){t=t??{},this.name=t.name,this.type=t.type,this.node=t.node,this.size=t.size,this.needsUpdate=t.needsUpdate}get value(){return this.node.value}set value(t){this.node.value=t}};import{MathUtils as Kv}from"three";var le=class{constructor(t){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=Kv.generateUUID(),this.type=t,this.name="",this.userData={}}analyze(t,e){e=e??{},t.analyzing=!0,this.build(t.addFlow(e.slot,e.cache,e.context),"v4"),t.clearVertexNodeCode(),t.clearFragmentNodeCode(),t.removeFlow(),t.analyzing=!1}analyzeAndFlow(t,e,r){return r=r??{},this.analyze(t,r),this.flow(t,e,r)}flow(t,e,r){r=r??{},t.addFlow(r.slot,r.cache,r.context);let o={result:this.build(t,e),code:t.clearNodeCode(),extra:t.context.extra};return t.removeFlow(),o}build(t,e,r){e=e??this.getType(t,e);let o=t.getNodeData(r??this);return t.analyzing&&this.appendDepsNode(t,o,e),t.nodes.indexOf(this)===-1&&t.nodes.push(this),this.updateFrame!==void 0&&t.updaters.indexOf(this)===-1&&t.updaters.push(this),this.generate(t,e,r)}updateFrame(t){}generateReadonly(t,e,r,o,i,s){return""}generate(t,e,r,o,i){return""}parse(t,e,r,o){}appendDepsNode(t,e,r){e.deps=(e.deps||0)+1;let o=t.getTypeLength(r);(o>(e.outputMax||0)||this.getType(t,r))&&(e.outputMax=o,e.output=r)}setName(t){this.name=t}getName(){return this.name}getType(t,e){return e==="sampler2D"||e==="samplerCube"?e:this.type}getJSONNode(t){if(t?.materials&&t?.materials[this.uuid]!==void 0)return t.materials[this.uuid]}getHash(){let t="{",e,r;for(e in this)r=this[e],r instanceof le&&(t+='"'+e+'":'+r.getHash()+",");if(this.hashProperties)for(let o=0;o<this.hashProperties.length;o++)e=this.hashProperties[o],r=this[e],t+='"'+e+'":"'+String(r)+'",';return t+='"id":"'+this.uuid+'"}',t}copy(t){return this.name=t.name,t.type&&(this.type=t.type),t.frameId&&(this.frameId=t.frameId),t.hashProperties&&(this.hashProperties=t.hashProperties.map(e=>e)),this.userData=JSON.parse(JSON.stringify(t.userData)),this.shortcuts=JSON.parse(JSON.stringify(t.shortcuts)),this}clone(){return new this.constructor().copy(this)}createJSONNode(t){let e=t===void 0||typeof t=="string";if(typeof this.type!="string")throw new Error("Node does not allow serialization.");let r={};return r.uuid=this.uuid,r.type=this.type,this.name!==""&&(r.name=this.name),JSON.stringify(this.userData)!=="{}"&&(r.userData=this.userData),!e&&t&&(t.nodes[this.uuid]=r),r}toJSON(t){return this.getJSONNode(t)??this.createJSONNode(t)}fromJSON(t,e){return this.uuid=t.uuid,this.type=t.type,t.name&&(this.name=t.name),t.userData&&(this.userData=t.userData),this}};var Ml=class{constructor(){this.nodes={};this.keywords={}}add(t){this.nodes[t.name]=t}addKeyword(t,e,r){r=r!==void 0?r:!0,this.keywords[t]={callback:e,cache:r}}remove(t){delete this.nodes[t.name]}removeKeyword(t){delete this.keywords[t]}get(t){return this.nodes[t]}getKeyword(t,e){return this.keywords[t].callback(e)}getKeywordData(t){return this.keywords[t]}contains(t){return this.nodes[t]!==void 0}containsKeyword(t){return this.keywords[t]!==void 0}},He=new Ml;import{Vector2 as rd}from"three";import{MathUtils as Xv}from"three";var pe=class extends le{constructor(e,r){super(e);this.scope="";r=r??{},this.shared=r.shared!==void 0?r.shared:!0,this.unique=r.unique!==void 0?r.unique:!1}build(e,r,o,i){if(r=r??this.getType(e),this.getShared(e,r)){let s=this.getUnique(e,r);s&&this.uuid===void 0&&(this.uuid=Xv.generateUUID()),o=e.getUUID(o??this.getUUID(),!s);let a=e.getNodeData(o),l=a.output||this.getType(e);if(e.analyzing)return(a.deps||0)>0||this.getLabel()?(this.appendDepsNode(e,a,r),this.generate(e,r,o)):super.build(e,r,o);if(s)return a.name=a.name||super.build(e,r,o),a.name;if(!this.getLabel()&&(!this.getShared(e,l)||e.context.ignoreCache||a.deps===1))return super.build(e,r,o);o=this.getUUID(!1);let c=this.getTemp(e,o);if(c)return e.format(c,l,r);{c=super.generate(e,r,o,a.output,i);let h=this.generate(e,l,o);return e.addNodeCode(c+" = "+h+";"),e.format(c,l,r)}}return super.build(e,r,o)}getShared(e,r){return r!=="sampler2D"&&r!=="samplerCube"&&this.shared}getUnique(e,r){return this.unique}setLabel(e){return this.label=e,this}getLabel(){return this.label}getUUID(e){let r=this.uuid;return typeof this.scope=="string"&&(r=this.scope+"-"+r),r}getTemp(e,r){r=r||this.uuid;let o=e.getVars()[r];return o?o.name:void 0}generate(e,r,o,i,s){return this.getShared(e,r)||console.error("TempNode is not shared"),o=o??this.uuid,e.getTempVar(o,i??this.getType(e),s,this.getLabel()).name}};var Me=class extends pe{constructor(e,r){r=r??{},r.shared=r.shared!==void 0?r.shared:!1;super(e,r);this.readonly=!1}setReadonly(e){return this.readonly=e,this.hashProperties=this.readonly?["value"]:void 0,this}getReadonly(){return this.readonly}createJSONNode(e){let r=super.createJSONNode(e);return this.readonly===!0&&(r.readonly=this.readonly),r}fromJSON(e,r){return super.fromJSON(e,r),e.readonly!==void 0&&this.setReadonly(e.readonly),this}generate(e,r,o,i,s,a){o=e.getUUID(o??this.getUUID()),i=i??this.getType(e);let l=e.getNodeData(o);return this.getReadonly()&&this.generateReadonly!==void 0?this.generateReadonly(e,r,o,i,s,a):e.isShader("vertex")?(l.vertex||(l.vertex=e.createVertexUniform(i,this,s,a,this.getLabel())),e.format(l.vertex.name,i,r)):(l.fragment||(l.fragment=e.createFragmentUniform(i,this,s,a,this.getLabel())),e.format(l.fragment.name,i,r))}copy(e){return super.copy(e),this.readonly=e.readonly,this}};var rt=class extends Me{constructor(e=0,r){super("v2");this.nodeType="Vector2";this.value=e instanceof rd?e:new rd(e,r)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}generateReadonly(e,r,o,i,s,a){return e.format("vec2("+this.value.x+", "+this.value.y+")",i,r)}copy(e){return super.copy(e),this.value.copy(e.value),this}};import{Vector3 as od}from"three";var ot=class extends Me{constructor(e=0,r,o){super("v3");this.nodeType="Vector3";this.value=e instanceof od?e:new od(e,r,o)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}get z(){return this.value.z}set z(e){this.value.z=e}generateReadonly(e,r,o,i,s,a){return e.format("vec3("+this.value.x+", "+this.value.y+", "+this.value.z+")",i,r)}copy(e){return super.copy(e),this.value.copy(e.value),this}};import{Color as Zv}from"three";var ft=class extends Zv{constructor(e,r,o,i){super(e,r,o);this.isColorA=!0;this.a=i}setRGBA(e,r,o,i){super.setRGB(e,r,o),this.a=i}copy(e){return super.copy(e),this.a="a"in e?e.a:1,this}clone(){return new this.constructor(this.r,this.g,this.b,this.a)}get x(){return this.r}get y(){return this.g}get z(){return this.b}get w(){return this.a}set x(e){this.r=e}set y(e){this.g=e}set z(e){this.b=e}set w(e){this.a=e}};var xr=class extends Me{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof ft?e:new ft(e.r,e.g,e.b,e.a)}generateReadonly(e,r,o,i,s,a){return e.format("vec4("+this.value.r+", "+this.value.g+", "+this.value.b+", "+this.value.a+")",i,r)}copy(e){return super.copy(e),this.value.copy(e.value),this}};var Qv=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,id=/[a-z_0-9]+/gi,te=class extends pe{constructor(e,r,o,i,s){super(s);this.src="";this.nodeType="Function";this.useKeywords=!0;this.includes=[];this.extensions={};this.keywords={};this.isMethod=s===void 0,this.isInterface=!1,this.parse(e,r,o,i)}getShared(e,r){return!this.isMethod}getType(e){return e.getTypeByFormat(this.type)}getInputByName(e){if(this.inputs){let r=this.inputs.length;for(;r--;)if(this.inputs[r].name===e)return this.inputs[r]}}getIncludeByName(e){if(this.includes){let r=this.includes.length;for(;r--;)if(this.includes[r].name===e)return this.includes[r]}}generate(e,r,o,i,s){let a,l=0,c=this.src;if(this.includes)for(let p=0;p<this.includes.length;p++)e.include(this.includes[p],this);for(let p in this.extensions)e.extensions[p]=!0;let h=[];for(;a=id.exec(this.src);)h.push(a);for(let p=0;p<h.length;p++){let u=h[p],d=u[0],m=this.isMethod?!this.getInputByName(d):!0,g=d;if(this.keywords[d]||this.useKeywords&&m&&He.containsKeyword(d)){let x=this.keywords[d];if(!x){let y=He.getKeywordData(d);y.cache&&(x=e.keywords[d]),x=x||He.getKeyword(d,e),y.cache&&(e.keywords[d]=x)}g=x.build(e)}d!==g&&(c=c.substring(0,u.index+l)+g+c.substring(u.index+d.length+l),l+=g.length-d.length),this.getIncludeByName(g)===void 0&&He.contains(g)&&e.include(He.get(g))}return r==="source"?c:this.isMethod?(this.isInterface||e.include(this,void 0,c),this.name):e.format("( "+c+" )",this.getType(e),r)}parse(e,r,o,i){if(this.src=e||"",this.includes=r??[],this.extensions=o??{},this.keywords=i??{},this.isMethod){let s=Qv.exec(this.src);if(this.inputs=[],s&&s.length==4){this.type=s[1],this.name=s[2];let a=s[3].match(id);if(a){let l=0;for(;l<a.length;){let c=a[l++],h;c==="in"||c==="out"||c==="inout"?h=a[l++]:(h=c,c="");let p=a[l++];this.inputs.push({name:p,type:h,qualifier:c})}}this.isInterface=this.src.indexOf("{")===-1}else this.type="",this.name=""}}copy(e){return super.copy(e),this.isMethod=e.isMethod,this.useKeywords=e.useKeywords,e.type!==void 0&&(this.type=e.type),this.parse(e.src,e.includes,e.extensions,e.keywords),this}toJSON(e){let r=this.getJSONNode(e);if(!r){r=this.createJSONNode(e),r.src=this.src,r.isMethod=this.isMethod,r.useKeywords=this.useKeywords,this.isMethod||(r.type=this.type),r.extensions=JSON.parse(JSON.stringify(this.extensions));let o={};for(let i in this.keywords)o[i]=this.keywords[i].toJSON(e).uuid;if(r.keywords=o,this.includes?.length){let i=[];for(let s=0;s<this.includes.length;s++)i.push(this.includes[s].toJSON(e).uuid);r.includes=i}r.isMethod=this.isMethod,r.inputs=this.inputs}return r.nodeType=this.nodeType,r}fromJSON(e,r){if(super.fromJSON(e,r),e.inputs!==void 0&&(this.inputs=e.inputs),e.isMethod!==void 0&&(this.isMethod=e.isMethod),e.src&&(this.src=e.src),e.isMethod&&(this.isMethod=e.isMethod),e.useKeywords&&(this.useKeywords=e.useKeywords),e.type&&(this.type=e.type),e.extensions&&(this.extensions=e.extensions),e.keywords&&r){this.keywords={};for(let o in e.keywords)this.keywords[o]=r.getNode(e.keywords[o])}return e.includes&&r&&(this.includes=e.includes.map(o=>r.getNode(o))),this}};var eS=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,Pl=class extends pe{constructor(e="",r){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||Pl.PI,void 0,void 0,void 0,r)}getType(e){return e.getTypeByFormat(this.type)}parse(e,r,o,i,s){this.src=e||"";let a,l,c="",h=eS.exec(e);this.useDefine=s??this.src.charAt(0)==="#",h&&h.length>1?(l=h[1],a=h[2],c=h[3]):(a=this.src,l="f"),this.name=a,this.type=l,this.value=c}build(e,r){if(r==="source"){if(this.value)return this.useDefine?"#define "+this.name+" "+this.value:"const "+this.type+" "+this.name+" = "+this.value+";";if(this.useDefine)return this.src}return e.include(this),e.format(this.name,this.getType(e),r)}generate(e,r,o,i,s){return e.format(this.name,this.getType(e),r)}copy(e){return super.copy(e),this.parse(e.src,void 0,void 0,void 0,e.useDefine),this}},xe=Pl;xe.PI="PI",xe.PI2="PI2",xe.RECIPROCAL_PI="RECIPROCAL_PI",xe.RECIPROCAL_PI2="RECIPROCAL_PI2",xe.LOG2="LOG2",xe.EPSILON="EPSILON";var tS=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
|
|
2
|
-
)
|
|
3
|
-
`)),
|
|
4
|
-
`)),LinearTosRGB
|
|
5
|
-
`))},at.LINEAR_TO_LINEAR="LinearToLinear",at.SRGB_TO_LINEAR="sRGBToLinear",at.LINEAR_TO_SRGB="LinearTosRGB";var Le=class extends te{constructor(e="",r,o,i,s){super(e,s,i,o,r);this.nodeType="Expression"}};import{Texture as nS}from"three";var er=class extends nS{toJSON(t){let e=super.toJSON(t),r=t===void 0||typeof t=="string";if(this.image!==void 0&&!r){let o=this.image;if(Array.isArray(o)){t.images[o.uuid].url=[];for(let i=0;i<o.length;i++)t.images[o.uuid].url[i]=nd(o[i])}else t.images[o.uuid].url=nd(o)}return e}};function nd(n){return typeof HTMLImageElement<"u"&&n instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&n instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&n instanceof ImageBitmap?sS(n):(console.warn("THREE.Texture: Unable to serialize Texture."),"")}var Ko;function sS(n){if(/^data:/i.test(n.src))return n.src;let t;if(n instanceof HTMLCanvasElement)t=n;else{Ko===void 0&&(Ko=document.createElement("canvas")),Ko.width=n.width,Ko.height=n.height;let r=Ko.getContext("2d");n instanceof ImageData?r.putImageData(n,0,0):r.drawImage(n,0,0,n.width,n.height),t=Ko}let e=n.src.startsWith("blob:")?n.fileName:n.src;return/\.jpe?g$/i.test(e)?t.toDataURL("image/jpeg",.6):t.toDataURL("image/png")}var lt=class extends Me{constructor(e=new er,r,o,i){super("v4",{shared:!0});this.nodeType="Texture";this.value=e,this.uv=r??new Yo,this.bias=o,this.project=i!==void 0?i:!1}getTexture(e,r){return super.generate(e,r,this.value.uuid,"t")}generate(e,r){if(r==="sampler2D")return this.getTexture(e,r);let o=this.getTexture(e,r),i=this.uv.build(e,this.project?"v4":"v2"),s=this.bias?this.bias.build(e,"f"):void 0;s===void 0&&e.context.bias&&(s=e.context.bias.setTexture(this).build(e,"f"));let a,l;this.project?a="texture2DProj":a=s?"tex2DBias":"tex2D",s?l=a+"( "+o+", "+i+", "+s+" )":l=a+"( "+o+", "+i+" )";let c={include:e.isShader("vertex"),ignoreCache:!0},h=this.getType(e);return e.addContext(c),this.colorSpace=this.colorSpace??new at(new Le("",h)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(l),l=this.colorSpace.build(e,h),e.removeContext(),e.format(l,h,r)}copy(e){return super.copy(e),e.value.isRenderTargetTexture?this.value=e.value:this.value.copy(e.value),this.uv.copy(e.uv),e.bias?this.bias?this.bias.copy(e.bias):this.bias=e.bias.clone():this.bias=void 0,e.colorSpace?this.colorSpace?this.colorSpace.copy(e.colorSpace):this.colorSpace=e.colorSpace.clone():this.colorSpace=void 0,this.project=e.project,e.value.isRenderTargetTexture||(this.value.updateMatrix(),this.value.needsUpdate=!0),this}};var ee=class extends Me{constructor(e){super("f");this.nodeType="Float";this.value=e??0}generateReadonly(e,r,o,i,s,a){return e.format(this.value+(this.value%1?"":".0"),i,r)}copy(e){return super.copy(e),this.value=e.value,this}};var $i=class extends pe{constructor(e,r){super();this.inputs=[];this.nodeType="FunctionCall";this.value=e,this.inputs=r??[]}getFunction(){return this.value}getType(e){return this.value.getType(e)}generate(e,r,o,i,s){i=this.getType(e);let a=this.value,l=a.build(e,r)+"( ",c=[];if(a.inputs){for(let h=0;h<a.inputs.length;h++){let p=a.inputs[h],u=this.inputs[h]||this.inputs[p.name];c.push(u.build(e,e.getTypeByFormat(p.type)))}l+=c.join(", ")+" )"}return e.format(l,i,r)}copy(e){return super.copy(e),this.value.copy(e.value),this.inputs=e.inputs.map(r=>r.clone()),this}toJSON(e){let r=this.getJSONNode(e);if(!r){let o=this.value;if(r=this.createJSONNode(e),r.value=this.value.toJSON(e).uuid,o.inputs?.length){r.inputs={};for(let i=0;i<o.inputs.length;i++){let s=o.inputs[i],a=this.inputs[i];r.inputs[s.name]=a.toJSON(e).uuid}}}return r}};var Il=class extends pe{constructor(e=new le,r=new le,o=Il.ADD){super();this.nodeType="Operator";this.type=e.type,this.a=e,this.b=r,this.op=o}getType(e){let r=this.a.getType(e),o=this.b.getType(e);return e.isTypeMatrix(r)?"v4":e.getTypeLength(o)>e.getTypeLength(r)?o:r}generate(e,r){let o=this.getType(e);this.type=o;let i=this.a.build(e,o),s=this.b.build(e,o);return e.format("( "+i+" "+this.op+" "+s+" )",o,r)}copy(e){return super.copy(e),this.a.copy(e.a),this.b.copy(e.b),this.op=e.op,this}},gt=Il;gt.ADD="+",gt.SUB="-",gt.MUL="*",gt.DIV="/";var Ne=class extends pe{constructor(e=new le,r=Ne.ABS,o,i){super();this.nodeType="Math";this.a=e,typeof r!="string"?this.b=r:i=r,typeof o!="string"?this.c=o:i=o,this.method=i,this.hashProperties=["method"]}getNumInputs(e){switch(this.method){case Ne.MIX:case Ne.CLAMP:case Ne.REFRACT:case Ne.SMOOTHSTEP:case Ne.FACEFORWARD:return 3;case Ne.MIN:case Ne.MAX:case Ne.MOD:case Ne.STEP:case Ne.REFLECT:case Ne.DISTANCE:case Ne.DOT:case Ne.CROSS:case Ne.POW:return 2;default:return 1}}getInputType(e){let r=e.getTypeLength(this.a.getType(e)),o=this.b?e.getTypeLength(this.b.getType(e)):0,i=this.c?e.getTypeLength(this.c.getType(e)):0;return r>o&&r>i?this.a.getType(e):o>i?this.b.getType(e):this.c.getType(e)}getType(e){switch(this.method){case Ne.LENGTH:case Ne.DISTANCE:case Ne.DOT:return"f";case Ne.CROSS:return"v3"}return this.getInputType(e)}generate(e,r){let o,i,s,a=this.a?e.getTypeLength(this.a.getType(e)):0,l=this.b?e.getTypeLength(this.b.getType(e)):0,c=this.c?e.getTypeLength(this.c.getType(e)):0,h=this.getInputType(e),p=this.getType(e);switch(this.type=p,this.method){case Ne.NEGATE:return e.format("( -"+this.a.build(e,h)+" )",h,r);case Ne.INVERT:return e.format("( 1.0 - "+this.a.build(e,h)+" )",h,r);case Ne.CROSS:o=this.a.build(e,"v3"),i=this.b.build(e,"v3");break;case Ne.STEP:o=this.a.build(e,a===1?"f":h),i=this.b.build(e,h);break;case Ne.MIN:case Ne.MAX:case Ne.MOD:o=this.a.build(e,h),i=this.b.build(e,l===1?"f":h);break;case Ne.REFRACT:o=this.a.build(e,h),i=this.b.build(e,h),s=this.c.build(e,"f");break;case Ne.MIX:o=this.a.build(e,h),i=this.b.build(e,h),s=this.c.build(e,c===1?"f":h);break;default:o=this.a.build(e,h),this.b&&(i=this.b.build(e,h)),this.c&&(s=this.c.build(e,h));break}let u=[];u.push(o),i&&u.push(i),s&&u.push(s);let d=this.getNumInputs(e);if(u.length!==d)throw Error(`Arguments not match used in "${this.method}". Require ${d}, currently ${u.length}.`);return e.format(this.method+"( "+u.join(", ")+" )",p,r)}copy(e){return super.copy(e),this.a.copy(e.a),this.b=e.b instanceof le?e.b.clone():e.b,this.c=e.c instanceof le?e.c.clone():e.c,this.method=e.method,this}},de=Ne;de.RAD="radians",de.DEG="degrees",de.EXP="exp",de.EXP2="exp2",de.LOG="log",de.LOG2="log2",de.SQRT="sqrt",de.INV_SQRT="inversesqrt",de.FLOOR="floor",de.CEIL="ceil",de.NORMALIZE="normalize",de.FRACT="fract",de.SATURATE="saturate",de.SIN="sin",de.COS="cos",de.TAN="tan",de.ASIN="asin",de.ACOS="acos",de.ARCTAN="atan",de.ABS="abs",de.SIGN="sign",de.LENGTH="length",de.NEGATE="negate",de.INVERT="invert",de.MIN="min",de.MAX="max",de.MOD="mod",de.STEP="step",de.REFLECT="reflect",de.DISTANCE="distance",de.DOT="dot",de.CROSS="cross",de.POW="pow",de.MIX="mix",de.CLAMP="clamp",de.REFRACT="refract",de.SMOOTHSTEP="smoothstep",de.FACEFORWARD="faceforward";var Xo=class extends pe{constructor(e=new le,r=new le,o=new le){super("v4");this.nodeType="TextureCubeUV";this.value=e,this.uv=r,this.bias=o}bilinearCubeUV(e,r,o,i){let s=new $i(Xo.Nodes.bilinearCubeUV,[r,o,i]);this.colorSpaceTL=this.colorSpaceTL??new at(new Le("","v4")),this.colorSpaceTL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTL.input.parse(s.build(e)+".tl"),this.colorSpaceTR=this.colorSpaceTR??new at(new Le("","v4")),this.colorSpaceTR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTR.input.parse(s.build(e)+".tr"),this.colorSpaceBL=this.colorSpaceBL??new at(new Le("","v4")),this.colorSpaceBL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBL.input.parse(s.build(e)+".bl"),this.colorSpaceBR=this.colorSpaceBR??new at(new Le("","v4")),this.colorSpaceBR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBR.input.parse(s.build(e)+".br");let a={include:e.isShader("vertex"),ignoreCache:!0};e.addContext(a),this.colorSpaceTLExp=new Le(this.colorSpaceTL.build(e,"v4"),"v4"),this.colorSpaceTRExp=new Le(this.colorSpaceTR.build(e,"v4"),"v4"),this.colorSpaceBLExp=new Le(this.colorSpaceBL.build(e,"v4"),"v4"),this.colorSpaceBRExp=new Le(this.colorSpaceBR.build(e,"v4"),"v4"),e.removeContext();let l=new Le("mix( mix( cubeUV_TL, cubeUV_TR, cubeUV.f.x ), mix( cubeUV_BL, cubeUV_BR, cubeUV.f.x ), cubeUV.f.y )","v4");return l.keywords.cubeUV_TL=this.colorSpaceTLExp,l.keywords.cubeUV_TR=this.colorSpaceTRExp,l.keywords.cubeUV_BL=this.colorSpaceBLExp,l.keywords.cubeUV_BR=this.colorSpaceBRExp,l.keywords.cubeUV=s,l}generate(e,r){if(e.isShader("fragment")){let o=this.uv,i=this.bias||e.context.roughness,s=new $i(Xo.Nodes.roughnessToMip,[i]),a=new de(s,Xo.Nodes.m0,Xo.Nodes.cubeUV_maxMipLevel,de.CLAMP),l=new de(a,de.FLOOR),c=new de(a,de.FRACT),h=this.bilinearCubeUV(e,this.value,o,l),p=this.bilinearCubeUV(e,this.value,o,new gt(l,new ee(1).setReadonly(!0),gt.ADD)),u=new de(h,p,c,de.MIX);return e.format(u.build(e),"v4",r)}else return console.warn("TextureCubeUVNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),r)}copy(e){return super.copy(e),this.uv.copy(e.uv),this.bias.copy(e.bias),this.value.copy(e.value),e.colorSpaceTL?this.colorSpaceTL?this.colorSpaceTL.copy(e.colorSpaceTL):this.colorSpaceTL=e.colorSpaceTL.clone():this.colorSpaceTL=void 0,e.colorSpaceTR?this.colorSpaceTR?this.colorSpaceTR.copy(e.colorSpaceTR):this.colorSpaceTR=e.colorSpaceTR.clone():this.colorSpaceTR=void 0,e.colorSpaceBL?this.colorSpaceBL?this.colorSpaceBL.copy(e.colorSpaceBL):this.colorSpaceBL=e.colorSpaceBL.clone():this.colorSpaceBL=void 0,e.colorSpaceBR?this.colorSpaceBR?this.colorSpaceBR.copy(e.colorSpaceBR):this.colorSpaceBR=e.colorSpaceBR.clone():this.colorSpaceBR=void 0,e.colorSpaceTLExp?this.colorSpaceTLExp?this.colorSpaceTLExp.copy(e.colorSpaceTLExp):this.colorSpaceTLExp=e.colorSpaceTLExp.clone():this.colorSpaceTLExp=void 0,e.colorSpaceTRExp?this.colorSpaceTRExp?this.colorSpaceTRExp.copy(e.colorSpaceTRExp):this.colorSpaceTRExp=e.colorSpaceTRExp.clone():this.colorSpaceTRExp=void 0,e.colorSpaceBLExp?this.colorSpaceBLExp?this.colorSpaceBLExp.copy(e.colorSpaceBLExp):this.colorSpaceBLExp=e.colorSpaceBLExp.clone():this.colorSpaceBLExp=void 0,e.colorSpaceBRExp?this.colorSpaceBRExp?this.colorSpaceBRExp.copy(e.colorSpaceBRExp):this.colorSpaceBRExp=e.colorSpaceBRExp.clone():this.colorSpaceBRExp=void 0,this}},Zo=Xo;Zo.Nodes=function(){let e=new Jo(`struct TextureCubeUVData {
|
|
6
|
-
vec4 tl;
|
|
7
|
-
vec4 tr;
|
|
8
|
-
vec4 br;
|
|
9
|
-
vec4 bl;
|
|
10
|
-
vec2 f;
|
|
11
|
-
}`),r=new xe("float cubeUV_maxMipLevel 8.0",!0),o=new xe("float cubeUV_minMipLevel 4.0",!0),i=new xe("float cubeUV_maxTileSize 256.0",!0),s=new xe("float cubeUV_minTileSize 16.0",!0),a=new te(`float getFace(vec3 direction) {
|
|
12
|
-
vec3 absDirection = abs(direction);
|
|
13
|
-
float face = -1.0;
|
|
14
|
-
if (absDirection.x > absDirection.z) {
|
|
15
|
-
if (absDirection.x > absDirection.y)
|
|
16
|
-
face = direction.x > 0.0 ? 0.0 : 3.0;
|
|
17
|
-
else
|
|
18
|
-
face = direction.y > 0.0 ? 1.0 : 4.0;
|
|
19
|
-
} else {
|
|
20
|
-
if (absDirection.z > absDirection.y)
|
|
21
|
-
face = direction.z > 0.0 ? 2.0 : 5.0;
|
|
22
|
-
else
|
|
23
|
-
face = direction.y > 0.0 ? 1.0 : 4.0;
|
|
24
|
-
}
|
|
25
|
-
return face;
|
|
26
|
-
}`);a.useKeywords=!1;let l=new te(`vec2 getUV(vec3 direction, float face) {
|
|
27
|
-
vec2 uv;
|
|
28
|
-
if (face == 0.0) {
|
|
29
|
-
uv = vec2(direction.z, direction.y) / abs(direction.x); // pos x
|
|
30
|
-
} else if (face == 1.0) {
|
|
31
|
-
uv = vec2(-direction.x, -direction.z) / abs(direction.y); // pos y
|
|
32
|
-
} else if (face == 2.0) {
|
|
33
|
-
uv = vec2(-direction.x, direction.y) / abs(direction.z); // pos z
|
|
34
|
-
} else if (face == 3.0) {
|
|
35
|
-
uv = vec2(-direction.z, direction.y) / abs(direction.x); // neg x
|
|
36
|
-
} else if (face == 4.0) {
|
|
37
|
-
uv = vec2(-direction.x, direction.z) / abs(direction.y); // neg y
|
|
38
|
-
} else {
|
|
39
|
-
uv = vec2(direction.x, direction.y) / abs(direction.z); // neg z
|
|
40
|
-
}
|
|
41
|
-
return 0.5 * (uv + 1.0);
|
|
42
|
-
}`);l.useKeywords=!1;let c=new te(`TextureCubeUVData bilinearCubeUV(sampler2D envMap, vec3 direction, float mipInt) {
|
|
43
|
-
float face = getFace(direction);
|
|
44
|
-
float filterInt = max(cubeUV_minMipLevel - mipInt, 0.0);
|
|
45
|
-
mipInt = max(mipInt, cubeUV_minMipLevel);
|
|
46
|
-
float faceSize = exp2(mipInt);
|
|
47
|
-
float texelSize = 1.0 / (3.0 * cubeUV_maxTileSize);
|
|
48
|
-
vec2 uv = getUV(direction, face) * (faceSize - 1.0);
|
|
49
|
-
vec2 f = fract(uv);
|
|
50
|
-
uv += 0.5 - f;
|
|
51
|
-
if (face > 2.0) {
|
|
52
|
-
uv.y += faceSize;
|
|
53
|
-
face -= 3.0;
|
|
54
|
-
}
|
|
55
|
-
uv.x += face * faceSize;
|
|
56
|
-
if(mipInt < cubeUV_maxMipLevel){
|
|
57
|
-
uv.y += 2.0 * cubeUV_maxTileSize;
|
|
58
|
-
}
|
|
59
|
-
uv.y += filterInt * 2.0 * cubeUV_minTileSize;
|
|
60
|
-
uv.x += 3.0 * max(0.0, cubeUV_maxTileSize - 2.0 * faceSize);
|
|
61
|
-
uv *= texelSize;
|
|
62
|
-
vec4 tl = texture2D(envMap, uv);
|
|
63
|
-
uv.x += texelSize;
|
|
64
|
-
vec4 tr = texture2D(envMap, uv);
|
|
65
|
-
uv.y += texelSize;
|
|
66
|
-
vec4 br = texture2D(envMap, uv);
|
|
67
|
-
uv.x -= texelSize;
|
|
68
|
-
vec4 bl = texture2D(envMap, uv);
|
|
69
|
-
return TextureCubeUVData( tl, tr, br, bl, f );
|
|
70
|
-
}`,[e,a,l,r,o,i,s]);c.useKeywords=!1;let h=new xe("float r0 1.0",!0),p=new xe("float v0 0.339",!0),u=new xe("float m0 -2.0",!0),d=new xe("float r1 0.8",!0),m=new xe("float v1 0.276",!0),g=new xe("float m1 -1.0",!0),x=new xe("float r4 0.4",!0),y=new xe("float v4 0.046",!0),b=new xe("float m4 2.0",!0),C=new xe("float r5 0.305",!0),S=new xe("float v5 0.016",!0),v=new xe("float m5 3.0",!0),z=new xe("float r6 0.21",!0),w=new xe("float v6 0.0038",!0),f=new xe("float m6 4.0",!0),D=[h,p,u,d,m,g,x,y,b,C,S,v,z,w,f],L=new te(`float roughnessToMip(float roughness) {
|
|
71
|
-
float mip = 0.0;
|
|
72
|
-
if (roughness >= r1) {
|
|
73
|
-
mip = (r0 - roughness) * (m1 - m0) / (r0 - r1) + m0;
|
|
74
|
-
} else if (roughness >= r4) {
|
|
75
|
-
mip = (r1 - roughness) * (m4 - m1) / (r1 - r4) + m1;
|
|
76
|
-
} else if (roughness >= r5) {
|
|
77
|
-
mip = (r4 - roughness) * (m5 - m4) / (r4 - r5) + m4;
|
|
78
|
-
} else if (roughness >= r6) {
|
|
79
|
-
mip = (r5 - roughness) * (m6 - m5) / (r5 - r6) + m5;
|
|
80
|
-
} else {
|
|
81
|
-
mip = -2.0 * log2(1.16 * roughness);// 1.16 = 1.79^0.25
|
|
82
|
-
}
|
|
83
|
-
return mip;
|
|
84
|
-
}`,D);return{bilinearCubeUV:c,roughnessToMip:L,m0:u,cubeUV_maxMipLevel:r}}();var ro=class extends pe{constructor(e){super("v3");this.nodeType="Normal";this.scope=e??ro.VIEW}getShared(){return this.scope===ro.WORLD}build(e,r,o,i){let s=e.context[this.scope+"Normal"];return s?s.build(e,r,o,i):super.build(e,r,o)}generate(e,r,o,i,s){let a;switch(this.scope){case ro.VIEW:e.isShader("vertex")?a="transformedNormal":a="geometryNormal";break;case ro.LOCAL:e.isShader("vertex")?a="objectNormal":(e.requires.normal=!0,a="vObjectNormal");break;case ro.WORLD:e.isShader("vertex")?a="inverseTransformDirection( transformedNormal, viewMatrix ).xyz":(e.requires.worldNormal=!0,a="vWNormal");break}return e.format(a,this.getType(e),r)}copy(e){return super.copy(e),this.scope=e.scope,this}toJSON(e){let r=this.getJSONNode(e);return r||(r=this.createJSONNode(e),r.scope=this.scope),r.nodeType=this.nodeType,r}fromJSON(e,r){return super.fromJSON(e,r),e.scope&&(this.scope=e.scope),this}},$e=ro;$e.LOCAL="local",$e.WORLD="world",$e.VIEW="view",$e.NORMAL="normal";He.addKeyword("viewNormal",function(){return new $e($e.VIEW)});He.addKeyword("localNormal",function(){return new $e($e.NORMAL)});He.addKeyword("worldNormal",function(){return new $e($e.WORLD)});var tr=class extends pe{constructor(e){super("v3");this.nodeType="Position";this.scope=e??tr.LOCAL}getType(){switch(this.scope){case tr.PROJECTION:return"v4"}return this.type}getShader(){switch(this.scope){case tr.LOCAL:case tr.WORLD:return!1}return!0}generate(e,r,o,i,s){let a;switch(this.scope){case tr.LOCAL:e.isShader("vertex")?a="transformed":(e.requires.position=!0,a="vPosition");break;case tr.WORLD:if(e.isShader("vertex"))return"( modelMatrix * vec4( transformed, 1.0 ) ).xyz";e.requires.worldPosition=!0,a="vWPosition";break;case tr.VIEW:a=e.isShader("vertex")?"-mvPosition.xyz":"vViewPosition";break;case tr.PROJECTION:a=e.isShader("vertex")?"( projectionMatrix * modelViewMatrix * vec4( position, 1.0 ) )":"vec4( 0.0 )";break}return e.format(a,this.getType(),r)}copy(e){return super.copy(e),this.scope=e.scope,this}toJSON(e){let r=this.getJSONNode(e);return r||(r=this.createJSONNode(e),r.scope=this.scope),r.nodeType=this.nodeType,r}fromJSON(e,r){return super.fromJSON(e,r),e.scope&&(this.scope=e.scope),this}},Ye=tr;Ye.LOCAL="local",Ye.WORLD="world",Ye.VIEW="view",Ye.PROJECTION="projection";He.addKeyword("position",function(){return new Ye});He.addKeyword("worldPosition",function(){return new Ye(Ye.WORLD)});He.addKeyword("viewPosition",function(){return new Ye(Ye.VIEW)});var Rt=class extends pe{constructor(e){super("v3");this.nodeType="Reflect";this.scope=e??Rt.CUBE}getUnique(e){return!e.context.viewNormal}getType(){switch(this.scope){case Rt.SPHERE:return"v2"}return this.type}generate(e,r){let o=this.getUnique(e);if(e.isShader("fragment")){let i;switch(this.scope){case Rt.VECTOR:{let s=new $e($e.VIEW),a=e.context.roughness,l=s.build(e,"v3"),c=new Ye(Ye.VIEW).build(e,"v3"),h=a?a.build(e,"f"):void 0,p=`reflect( -normalize( ${c} ), ${l} )`;h&&(p=`normalize( mix( ${p}, ${l}, ${h} * ${h} ) )`);let u=`inverseTransformDirection( ${p}, viewMatrix )`;o?(e.addNodeCode(`vec3 reflectVec = ${u};`),i="reflectVec"):i=u;break}case Rt.CUBE:{let s=new Rt(Rt.VECTOR).build(e,"v3"),a="vec3( -"+s+".x, "+s+".yz )";o?(e.addNodeCode(`vec3 reflectCubeVec = ${a};`),i="reflectCubeVec"):i=a;break}case Rt.SPHERE:{let s=new Rt(Rt.VECTOR).build(e,"v3"),a="normalize( ( viewMatrix * vec4( "+s+", 0.0 ) ).xyz + vec3( 0.0, 0.0, 1.0 ) ).xy * 0.5 + 0.5";o?(e.addNodeCode(`vec2 reflectSphereVec = ${a};`),i="reflectSphereVec"):i=a;break}}return e.format(i,this.getType(),r)}else return console.warn("ReflectNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.type,r)}copy(e){return super.copy(e),this.scope=e.scope,this}toJSON(e){let r=this.getJSONNode(e);return r||(r=this.createJSONNode(e),r.scope=this.scope),r.nodeType=this.nodeType,r}fromJSON(e,r){return super.fromJSON(e,r),e.scope&&(this.scope=e.scope),this}},rr=Rt;rr.CUBE="cube",rr.SPHERE="sphere",rr.VECTOR="vector";var Us=class extends pe{constructor(e=new lt,r,o){super("v4");this.nodeType="TextureCube";this.value=e,this.radianceNode=new Zo(this.value,r??new rr(rr.VECTOR),o),this.irradianceNode=new Zo(this.value,new $e($e.WORLD),new ee(1).setReadonly(!0))}generate(e,r){return e.isShader("fragment")?(e.require("irradiance"),e.context.bias&&e.context.bias.setTexture(this.value),(e.slot==="irradiance"?this.irradianceNode:this.radianceNode).build(e,r)):(console.warn("TextureCubeNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),r))}copy(e){return super.copy(e),this.value.copy(e.value),this.radianceNode.copy(e.radianceNode),this.irradianceNode.copy(e.irradianceNode),this}};import{CubeTexture as aS}from"three";var js=class extends Me{constructor(e=new aS,r,o){super("v4",{shared:!0});this.nodeType="CubeTexture";this.value=e,this.uv=r??new rr,this.bias=o}getTexture(e,r){return super.generate(e,r,this.value.uuid,"tc")}generate(e,r){if(r==="samplerCube")return this.getTexture(e,r);let o=this.getTexture(e,r),i=this.uv?.build(e,"v3"),s=this.bias?this.bias.build(e,"f"):void 0;s===void 0&&e.context.bias&&(s=e.context.bias.setTexture(this).build(e,"f"));let a;s?a="texCubeBias( "+o+", "+i+", "+s+" )":a="texCube( "+o+", "+i+" )";let l={include:e.isShader("vertex"),ignoreCache:!0},c=this.getType(e);return e.addContext(l),this.colorSpace=this.colorSpace??new at(new Le("",c)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(a),a=this.colorSpace.build(e,c),e.removeContext(),e.format(a,c,r)}copy(e){return super.copy(e),this.value.copy(e.value),e.uv?this.uv?this.uv.copy(e.uv):this.uv=e.uv.clone():this.uv=void 0,e.bias?this.bias?this.bias.copy(e.bias):this.bias=e.bias.clone():this.bias=void 0,this}};var ad=["x","y","z","w"],uS=["float","vec2","vec3","vec4"],dS={float:"f",vec2:"v2",vec3:"v3",vec4:"v4",mat4:"v4",int:"i",bool:"b","float[]":"f[]","vec4[]":"v4[]"},mS={t:"sampler2D",tc:"samplerCube",b:"bool",i:"int",f:"float",c:"vec3",v2:"vec2",v3:"vec3",v4:"vec4",m3:"mat3",m4:"mat4","f[]":"float[]","v4[]":"vec4[]"},ks=class{constructor(){this.includes={consts:{},functions:{},structs:{}};this.cache="";this.slot="";this.shader="";this.context={};this.getIncludesCode=function(){function t(e,r){return e.deps.length-r.deps.length}return function(r,o){let i=this.getIncludes(r,o);if(!i)return"";let s="";i=i.sort(t);for(let a=0;a<i.length;a++)i[a].src&&(s+=i[a].src+`
|
|
85
|
-
`);return s}}();this.slots=[],this.caches=[],this.contexts=[],this.keywords={},this.nodeData={},this.fragmentVariables={},this.requires={uv:[],color:[],lights:!1,fog:!1,transparent:!1,irradiance:!1,position:!1,worldPosition:!1,normal:!1,worldNormal:!1,vWorldViewDir:!1,modelMatrix:!1,viewMatrix:!1,projectionMatrix:!1},this.includes={consts:[],functions:[],structs:[]},this.attributes={},this.prefixCode=["#ifdef TEXTURE_LOD_EXT"," #define texCube(a, b) textureCube(a, b)"," #define texCubeBias(a, b, c) textureCubeLodEXT(a, b, c)"," #define tex2D(a, b) texture2D(a, b)"," #define tex2DBias(a, b, c) texture2DLodEXT(a, b, c)","#else"," #define texCube(a, b) textureCube(a, b)"," #define texCubeBias(a, b, c) textureCube(a, b, c)"," #define tex2D(a, b) texture2D(a, b)"," #define tex2DBias(a, b, c) texture2D(a, b, c)","#endif",`
|
|
86
|
-
// NOTE: Include Spline's blending modes. This could be part of BlendNode
|
|
87
|
-
#define SPE_BLENDING_NORMAL 0
|
|
88
|
-
#define SPE_BLENDING_MULTIPLY 1
|
|
89
|
-
#define SPE_BLENDING_SCREEN 2
|
|
90
|
-
#define SPE_BLENDING_OVERLAY 3
|
|
91
|
-
|
|
92
|
-
vec3 spe_normalBlend( vec3 a, vec3 b, float alpha ) {
|
|
93
|
-
return mix( a, b, alpha );
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
vec3 spe_multiplyBlend( vec3 a, vec3 b, float alpha ) {
|
|
97
|
-
return mix( a, a * b, alpha );
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
vec3 spe_screenBlend( vec3 a, vec3 b, float alpha ) {
|
|
101
|
-
vec3 tmp = 1.0 - ( 1.0 - a ) * ( 1.0 - b );
|
|
102
|
-
return mix( a, tmp, alpha );
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
vec3 spe_overlayBlend( vec3 a, vec3 b, float alpha ) {
|
|
106
|
-
vec3 tmp = mix( 1. - 2. * (1. - a) * (1. - b), 2. * a * b, step( a, vec3(.5) ) );
|
|
107
|
-
return clamp( mix( a, tmp, alpha ), 0.0, 1.0 );
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
vec3 spe_blend( vec3 a, vec3 b, float alpha, int mode ) {
|
|
111
|
-
if ( mode == SPE_BLENDING_NORMAL ) return spe_normalBlend( a, b, alpha );
|
|
112
|
-
else if ( mode == SPE_BLENDING_MULTIPLY ) return spe_multiplyBlend( a, b, alpha );
|
|
113
|
-
else if ( mode == SPE_BLENDING_SCREEN ) return spe_screenBlend( a, b, alpha );
|
|
114
|
-
else if ( mode == SPE_BLENDING_OVERLAY ) return spe_overlayBlend( a, b, alpha );
|
|
115
|
-
return vec3( 1.0 );
|
|
116
|
-
}
|
|
117
|
-
`,"#include <packing>","#include <common>"].join(`
|
|
118
|
-
`),this.parsCode={vertex:["float neighbor_offset = 0.0001;",""].join(`
|
|
119
|
-
`),fragment:["float accumAlpha = 0.0;",`void accumulateAlpha(float alpha) {
|
|
120
|
-
accumAlpha += (1.0 - accumAlpha) * alpha;
|
|
121
|
-
}`,""].join(`
|
|
122
|
-
`)},this.code={vertex:"",fragment:""},this.nodeCode={vertex:"",fragment:""},this.resultCode={vertex:"",fragment:""},this.finalCode={vertex:"",fragment:""},this.inputs={uniforms:{list:[],vertex:[],fragment:[]},arrayUniforms:{list:[],vertex:[],fragment:[]},vars:{varying:[],vertex:[],fragment:[]}},this.defines={},this.uniforms={},this.extensions={derivatives:!1,fragDepth:!1,drawBuffers:!1,shaderTextureLOD:!1},this.updaters=[],this.nodes=[],this.analyzing=!1}build(t,e){this.buildShader("vertex",t),this.buildShader("fragment",e);for(let r=0;r<this.requires.uv.length;r++)if(this.requires.uv[r]){let o=r>0?r+1:"";this.addVaryCode("varying vec2 vUv"+o+";"),r>0&&this.addVertexParsCode("attribute vec2 uv"+o+";"),this.addVertexFinalCode("vUv"+o+" = uv"+o+";")}return this.requires.color[0]&&(this.addVaryCode("varying vec4 vColor;"),this.addVertexParsCode("attribute vec4 color;"),this.addVertexFinalCode("vColor = color;")),this.requires.color[1]&&(this.addVaryCode("varying vec4 vColor2;"),this.addVertexParsCode("attribute vec4 color2;"),this.addVertexFinalCode("vColor2 = color2;")),this.requires.position&&(this.addVaryCode("varying vec3 vPosition;"),this.addVertexFinalCode("vPosition = transformed;")),this.requires.worldPosition,this.requires.normal&&(this.addVaryCode("varying vec3 vObjectNormal;"),this.addVertexFinalCode("vObjectNormal = normal;")),this.requires.modelMatrix&&this.addFragmentParsCode("uniform mat4 modelMatrix;"),this.requires.viewMatrix&&this.addFragmentParsCode("uniform mat4 viewMatrix;"),this.requires.projectionMatrix&&this.addFragmentParsCode("uniform mat4 projectionMatrix;"),this.requires.worldNormal&&(this.addVaryCode("varying vec3 vWNormal;"),this.addVertexFinalCode("vWNormal = inverseTransformDirection( transformedNormal, viewMatrix ).xyz;")),this.requires.vWorldViewDir&&(this.addVaryCode("varying vec3 vWorldViewDir;"),this.addVertexFinalCode("vWorldViewDir = isPerspectiveMatrix( projectionMatrix ) ? ( (modelMatrix * vec4(position, 1.0)).xyz - cameraPosition ) : vec3( -viewMatrix[0][2], -viewMatrix[1][2], -viewMatrix[2][2] );")),this}buildShader(t,e){this.resultCode[t]=e.build(this.setShader(t),"v4")}setMaterial(t,e){return this.material=t,this.renderer=e,this.requires.lights=t.lights,this.requires.fog=t.fog,this.mergeDefines(t.defines),this}addFlow(t,e,r){return this.addSlot(t).addCache(e).addContext(r)}removeFlow(){return this.removeSlot().removeCache().removeContext()}addCache(t){return this.cache=t??"",this.caches.push(this.cache),this}removeCache(){return this.caches.pop(),this.cache=this.caches[this.caches.length-1]||"",this}addContext(t){return this.context=Object.assign({},this.context,t),this.context.extra=this.context.extra||{},this.contexts.push(this.context),this}removeContext(){return this.contexts.pop(),this.context=this.contexts[this.contexts.length-1]||{},this}addSlot(t){return this.slot=t||"",this.slots.push(this.slot),this}removeSlot(){return this.slots.pop(),this.slot=this.slots[this.slots.length-1]||"",this}addFragmentVariable(t,e){this.fragmentVariables[t]===void 0&&(this.addFragmentCode(`${e} ${t};`),this.fragmentVariables[t]="")}addVertexCode(t){this.addCode(t,"vertex")}addFragmentCode(t){this.addCode(t,"fragment")}addCode(t,e){this.code[e??this.shader]+=t+`
|
|
123
|
-
`}addVertexNodeCode(t){this.addNodeCode(t,"vertex")}addFragmentNodeCode(t){this.addNodeCode(t,"fragment")}addNodeCode(t,e){this.nodeCode[e??this.shader]+=t+`
|
|
124
|
-
`}clearNodeCode(t){t=t??this.shader;let e=this.nodeCode[t];return this.nodeCode[t]="",e}clearVertexNodeCode(){return this.clearNodeCode("vertex")}clearFragmentNodeCode(){return this.clearNodeCode("fragment")}addVertexFinalCode(t){this.addFinalCode(t,"vertex")}addFragmentFinalCode(t){this.addFinalCode(t,"fragment")}addFinalCode(t,e){this.finalCode[e??this.shader]+=t+`
|
|
125
|
-
`}addVertexParsCode(t){this.addParsCode(t,"vertex")}addFragmentParsCode(t){this.addParsCode(t,"fragment")}addParsCode(t,e){this.parsCode[e??this.shader]+=t+`
|
|
126
|
-
`}addVaryCode(t){this.addVertexParsCode(t),this.addFragmentParsCode(t)}isCache(t){return this.caches.indexOf(t)!==-1}isSlot(t){return this.slots.indexOf(t)!==-1}define(t,e){this.defines[t]=e===void 0?1:e}require(t){this.requires[t]=!0}isDefined(t){return this.defines[t]!==void 0}getVar(t,e,r,o="varying",i="V",s=""){let a=this.getVars(o),l=a[t];if(!l){let c=a.length;l={name:r||"node"+i+c+(s?"_"+s:""),type:e},a.push(l),a[t]=l}return l}getTempVar(t,e,r,o){return this.getVar(t,e,r,this.shader,"T",o)}getAttribute(t,e){if(!this.attributes[t]){let r=this.getVar(t,e);this.addVertexParsCode("attribute "+e+" "+t+";"),this.addVertexFinalCode(r.name+" = "+t+";"),this.attributes[t]={varying:r,name:t,type:e}}return this.attributes[t]}getCode(t){return[this.prefixCode,this.parsCode[t],this.getVarListCode(this.getVars("varying"),"varying"),this.getVarListCode(this.inputs.uniforms[t],"uniform"),this.getVarListCode(this.inputs.arrayUniforms[t],"uniform"),this.getIncludesCode("consts",t),this.getIncludesCode("structs",t),this.getIncludesCode("functions",t),"void main() {",this.getVarListCode(this.getVars(t)),this.code[t],this.resultCode[t],this.finalCode[t],"}"].join(`
|
|
127
|
-
`)}getVarListCode(t,e){e=e??"";let r="";for(let o=0,i=t.length;o<i;++o){let s=t[o],a=s.type,l=s.name,c=s.size,h=this.getFormatByType(a);if(h===void 0)throw new Error("Node pars "+h+" not found.");h.includes("[]")?r+=e+" "+h.substring(0,h.length-2)+" "+l+`[${c}];
|
|
128
|
-
`:r+=e+" "+h+" "+l+`;
|
|
129
|
-
`}return r}getVars(t){return this.inputs.vars[t??this.shader]}getNodeData(t){let e=t instanceof le?t.uuid:t;return this.nodeData[e]=this.nodeData[e]||{}}createUniform(t,e,r,o,i,s){if(e.includes("[]")){let a=this.inputs.arrayUniforms,l=a.list.length,c=new Wi({type:e,size:r.size,name:o||"nodeUA"+l+(s?"_"+s:""),node:r,needsUpdate:i});return a.list.push(c),a[t].push(c),a[t][c.name]=c,this.uniforms[c.name]=c,c}else{let a=this.inputs.uniforms,l=a.list.length,c=new Wi({type:e,name:o||"nodeU"+l+(s?"_"+s:""),node:r,needsUpdate:i});return a.list.push(c),a[t].push(c),a[t][c.name]=c,this.uniforms[c.name]=c,c}}createVertexUniform(t,e,r,o,i){return this.createUniform("vertex",t,e,r,o,i)}createFragmentUniform(t,e,r,o,i){return this.createUniform("fragment",t,e,r,o,i)}include(t,e,r){let o;if(t=typeof t=="string"?He.get(t):t,this.context.include===!1)return t.name;t instanceof te?o=this.includes.functions:t instanceof xe?o=this.includes.consts:t instanceof Jo&&(o=this.includes.structs);let i=o[this.shader]=o[this.shader]||[];if(t){let s=i[t.name];if(s||(s=i[t.name]={node:t,deps:[]},i.push(s),s.src=t.build(this,"source")),t instanceof te&&e&&i[e.name]&&i[e.name].deps.indexOf(t)===-1&&(i[e.name].deps.push(t),t.includes?.length)){let a=0;do this.include(t.includes[a++],e);while(a<t.includes.length)}return r&&(s.src=r),t.name}else throw new Error("Include not found.")}colorToVectorProperties(t){return t.replace("r","x").replace("g","y").replace("b","z").replace("a","w")}colorToVector(t){return t.replace(/c/g,"v3")}getIncludes(t,e){return this.includes[t][e||this.shader]}getConstructorFromLength(t){return uS[t-1]}isTypeMatrix(t){return/^m/.test(t)}getTypeLength(t){return t==="f"?1:parseInt(this.colorToVector(t).substr(1))}getTypeFromLength(t){return t===1?"f":"v"+t}findNode(...t){for(let e=0;e<arguments.length;e++){let r=t[e];if(r?.isNode)return r}}resolve(...t){for(let e=0;e<arguments.length;e++){let r=t[e];if(r!==void 0){if(r.isNode)return r;if(r.isTexture)switch(r.mapping){case lS:case cS:return new js(r);case hS:return new Us(new lt(r));default:return new lt(r)}else{if(r.isVector2)return new rt(r);if(r.isVector3)return new ot(r);if(r.isVector4)return new xr(r)}}}}format(t,e,r){switch(this.colorToVector(r+" <- "+e)){case"f <- v2":return t+".x";case"f <- v3":return t+".x";case"f <- v4":return t+".x";case"f <- i":case"f <- b":return"float( "+t+" )";case"v2 <- f":return"vec2( "+t+" )";case"v2 <- v3":return t+".xy";case"v2 <- v4":return t+".xy";case"v2 <- i":case"v2 <- b":return"vec2( float( "+t+" ) )";case"v3 <- f":return"vec3( "+t+" )";case"v3 <- v2":return"vec3( "+t+", 0.0 )";case"v3 <- v4":return t+".xyz";case"v3 <- i":case"v3 <- b":return"vec2( float( "+t+" ) )";case"v4 <- f":return"vec4( "+t+" )";case"v4 <- v2":return"vec4( "+t+", 0.0, 1.0 )";case"v4 <- v3":return"vec4( "+t+", 1.0 )";case"v4 <- i":case"v4 <- b":return"vec4( float( "+t+" ) )";case"i <- f":case"i <- b":return"int( "+t+" )";case"i <- v2":return"int( "+t+".x )";case"i <- v3":return"int( "+t+".x )";case"i <- v4":return"int( "+t+".x )";case"b <- f":return"( "+t+" != 0.0 )";case"b <- v2":return"( "+t+" != vec2( 0.0 ) )";case"b <- v3":return"( "+t+" != vec3( 0.0 ) )";case"b <- v4":return"( "+t+" != vec4( 0.0 ) )";case"b <- i":return"( "+t+" != 0 )"}return t}getTypeByFormat(t){return dS[t]||t}getFormatByType(t){return mS[t]||t}getUUID(t,e){return e=e!==void 0?e:!0,e&&this.cache&&(t=this.cache+"-"+t),t}getElementByIndex(t){return ad[t]}getIndexByElement(t){return ad.indexOf(t)}isShader(t){return this.shader===t}setShader(t){return this.shader=t,this}mergeDefines(t){for(let e in t)this.defines[e]=t[e];return this.defines}mergeUniform(t){for(let e in t)this.uniforms[e]=t[e];return this.uniforms}getTextureEncodingFromMap(t){let e;return t?t.isTexture&&(e=t.encoding):e=sd,e===sd&&this.context.gamma&&(e=pS),e}};var Ji=class extends le{constructor(e=new le){super("v4");this.nodeType="Raw";this.value=e}generate(e){let r=this.value.analyzeAndFlow(e,this.type),o=r.code+`
|
|
130
|
-
`;return e.isShader("vertex")?o+="gl_Position = "+r.result+";":o+="gl_FragColor = "+r.result+";",o}copy(e){return super.copy(e),this.value.copy(e.value),this}};var Ce=class extends Me{constructor(e=0,r,o,i){super("c");this.nodeType="Color";this.value=e instanceof ft?e:new ft(e||0,r,o,i)}setRGBA(e){this.value.setRGBA(e.r,e.g,e.b,e.a)}generate(e,r,o,i,s,a){o=e.getUUID(o??this.getUUID()),i=i??this.getType(e);let l=e.getNodeData(o),c=this.getReadonly()&&this.generateReadonly!==void 0;if(this.alpha){let h=this.alpha.build(e,"f");e.addFragmentNodeCode(`accumAlpha += ( 1.0 - accumAlpha ) * ${h};`)}return c?this.generateReadonly(e,r,o,i,s,a):e.isShader("vertex")?(l.vertex||(l.vertex=e.createVertexUniform(i,this,s,a,this.getLabel())),e.format(l.vertex.name,i,r)):(l.fragment||(l.fragment=e.createFragmentUniform(i,this,s,a,this.getLabel())),e.format(l.fragment.name,i,r))}generateReadonly(e,r,o,i,s,a){return e.format("vec3("+this.value.r+", "+this.value.g+", "+this.value.b+")",i,r)}};import{MathUtils as br,Vector2 as zr,Vector3 as Rr,Vector4 as Hs}from"three";import{Texture as fS}from"three";var fe=class extends Me{constructor(e){super("i");this.nodeType="Int";this.value=Math.floor(e??0)}generateReadonly(e,r,o,i,s,a){return e.format(this.value.toString(),i,r)}copy(e){return super.copy(e),this.value=e.value,this}};var Oe=class{constructor(t,e,r,o){this.next=void 0;this.uniforms={};this.textures={};this.defines={};if(this.id=t,this.uuid=e,r){this.type=r.type;for(let i in r)i!=="type"&&i!=="calpha"&&(this.uniforms[`f${this.id}_${i}`]=r[i]);for(let i in o)this.defines[i]=o[i]}}copy(t){this.id=t.id,this.type=t.type,this.defines={...t.defines};for(let e in t.uniforms)this.getName(e)==="transmissionSamplerMap"||this.getName(e)==="transmissionDepthMap"||(this.uniforms[e]?this.uniforms[e].copy(t.uniforms[e]):this.uniforms[e]=t.uniforms[e].clone());return this}clone(){return new Oe(this.id).copy(this)}fromJSON(t,e){this.id=t.id,this.defines={...t.defines};for(let r in t.uniforms)this.uniforms[r]=e.getNode(t.uniforms[r]);if(t.type==="texture"){if(!(`f${this.id}_textureSize`in this.uniforms)){let r=this.uniforms[`f${this.id}_texture`].value.image;this.uniforms[`f${t.id}_textureSize`]=new ot(r.width,r.height)}`f${this.id}_size`in this.uniforms||(this.uniforms[`f${t.id}_size`]=new rt(200,200)),`f${t.id}_axis`in this.uniforms||(this.uniforms[`f${t.id}_axis`]=new fe(0)),`f${t.id}_side`in this.uniforms||(this.uniforms[`f${t.id}_side`]=new fe(0)),`f${t.id}_projection`in this.uniforms||(this.uniforms[`f${t.id}_projection`]=new fe(0))}else t.type==="noise"?(`f${t.id}_noiseType`in this.uniforms||(this.uniforms[`f${t.id}_noiseType`]=new fe(0)),`f${t.id}_size`in this.uniforms||(this.uniforms[`f${t.id}_size`]=new ot(-1,-1,-1))):t.type==="depth"&&(`f${t.id}_isWorldSpace`in this.uniforms||(this.uniforms[`f${t.id}_isWorldSpace`]=new ee(1)));return this}toJSON(t){let e={};for(let o in this.uniforms)e[o]=this.uniforms[o].toJSON(t).uuid;return{id:this.id,type:this.type,defines:JSON.parse(JSON.stringify(this.defines)),uniforms:e,next:this.next==null?void 0:this.next.toJSON(t)}}copyUniforms(t){for(let e in this.uniforms){let r=this.getName(e);r!==void 0&&t.uniforms[`f${t.id}_${r}`]&&r!=="transmissionDepthMap"&&r!=="transmissionSamplerMap"&&this.uniforms[e].copy(t.uniforms[`f${t.id}_${r}`])}return this}hasValueByKey(t){return this.uniforms[t]!==void 0}hasValue(t){return this.hasValueByKey(`f${this.id}_${t}`)}setValue(t,e){let r=`f${this.id}_${t}`;this.hasValueByKey(r)&&e!==void 0&&(this.uniforms[r].value=e)}getValue(t){let e=`f${this.id}_${t}`;if(this.hasValueByKey(e))return this.uniforms[e].value}getValues(){let t={type:this.type};for(let e in this.uniforms){let r=this.getName(e);if(r===void 0)continue;let i=this.uniforms[`f${this.id}_${r}`].value;i!==void 0&&(Array.isArray(i)?t[r]=i.map(s=>s.clone?s.clone():s):t[r]=i.clone?i.clone():i)}return t}getName(t){let r=/f\d+_(.*)/.exec(t);if(r&&r.length>1)return r[1];console.log(`Layer.getName: error ${t}`)}getNames(){let t=[];for(let e in this.uniforms){let r=this.getName(e);r&&t.push(r)}return t}isEqual(t){for(let e in t.uniforms){let r=t.getName(e);if(!r)return!1;let o=this.getValue(r),i=t.uniforms[e].value;if(i.value instanceof fS){if(o.image!==i.image)return!1}else if(Array.isArray(i)){let s=o;for(let a=0,l=s.length;a<l;++a)if(s[a]!==i[a])return!1}else{let s=o;if(s.equals){if(!s.equals(i))return!1}else if(o!==i)return!1}}return!0}dispose(){}};function ld(n){let t=n instanceof Oe?n.type:n;return t==="texture"||t==="displace_map"||t==="matcap"}var Yi=class extends Me{constructor(e){super("b");this.nodeType="Bool";this.value=e??!1}generateReadonly(e,r,o,i){return e.format(this.value?"true":"false",i,r)}copy(e){return super.copy(e),this.value=e.value,this}};import{Vector4 as cd}from"three";var oo=class extends Me{constructor(e=1,r){super("v4[]");this.nodeType="Vector4Array";this.size=e,this.value=Array.isArray(r)?r:r instanceof cd?new Array(e).fill(r):new Array(e).fill(new cd(0))}copy(e){return super.copy(e),this.value=e.value.map(r=>r.clone()),this}};var Ke=class extends Me{constructor(e=1,r){super("f[]");this.nodeType="FloatArray";this.size=e,this.value=Array.isArray(r)?r:typeof r=="number"?new Array(e).fill(r):new Array(e).fill(0)}copy(e){return super.copy(e),this.size=e.size,this.value=[...e.value],this}};import{Matrix3 as gS}from"three";var Qo=class extends Me{constructor(e){super("m3");this.nodeType="Matrix3";this.value=e??new gS}generateReadonly(e,r,o,i,s,a){return e.format("mat3("+this.value.elements.join(", ")+")",i,r)}copy(e){return super.copy(e),this.elements=e.elements,this}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};var Xi=class extends pe{constructor(e=new lt,r,o,i,s,a,l,c,h){super("v3");this.nodeType="CustomTexture";this.firstTime=!0,this.texture=e,this.textureSize=r,this.crop=o,this.projection=i,this.axis=s,this.side=a,this.size=l,this.mat=new Qo(this.texture.value.matrix),this.alpha=c,this.mode=h,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){e.require("position"),e.require("normal"),e.require("uv"),e.requires.uv=[!0],e.extensions.shaderTextureLOD=!0,e.extensions.derivatives=!0;let o=`g${this.uuid.toString().replace(/-/g,"")}`,i;switch(this.projection.value){case 3:i=e.include(Xi.Nodes.cylindrical);break;case 2:i=e.include(Xi.Nodes.spherical);break;case 1:let a=["vec3(1.0, 0.0, 0.0)","vec3(0.0, 1.0, 0.0)","vec3(0.0, 0.0, 1.0)"][this.axis.value],l=new te(`
|
|
1
|
+
var Xm=Object.create;var va=Object.defineProperty;var Km=Object.getOwnPropertyDescriptor;var Ym=Object.getOwnPropertyNames;var Jm=Object.getPrototypeOf,Qm=Object.prototype.hasOwnProperty;var Zm=(i,t)=>()=>(t||i((t={exports:{}}).exports,t),t.exports),ef=(i,t)=>{for(var e in t)va(i,e,{get:t[e],enumerable:!0})},tf=(i,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Ym(t))!Qm.call(i,o)&&o!==e&&va(i,o,{get:()=>t[o],enumerable:!(r=Km(t,o))||r.enumerable});return i};var rf=(i,t,e)=>(e=i!=null?Xm(Jm(i)):{},tf(t||!i||!i.__esModule?va(e,"default",{value:i,enumerable:!0}):e,i));var wm=Zm((ya,Sm)=>{(function(i,t){typeof ya=="object"&&typeof Sm<"u"?t(ya):typeof define=="function"&&define.amd?define(["exports"],t):t((i=typeof globalThis<"u"?globalThis:i||self).SVDJS={})})(ya,function(i){"use strict";i.SVD=function(t,e,r,o,n){if(e=e===void 0||e,r=r===void 0||r,n=1e-64/(o=o||Math.pow(2,-52)),!t)throw new TypeError("Matrix a is not defined");var s,a,l,c,h,p,u,d,m,g,x,y,v=t[0].length,P=t.length;if(P<v)throw new TypeError("Invalid matrix: m < n");for(var S=[],b=[],B=[],w=e==="f"?P:v,f=g=u=0;f<P;f++)b[f]=new Array(w).fill(0);for(f=0;f<v;f++)B[f]=new Array(v).fill(0);var D,C=new Array(v).fill(0);for(f=0;f<P;f++)for(s=0;s<v;s++)b[f][s]=t[f][s];for(f=0;f<v;f++){for(S[f]=u,m=0,l=f+1,s=f;s<P;s++)m+=Math.pow(b[s][f],2);if(m<n)u=0;else for(d=(p=b[f][f])*(u=p<0?Math.sqrt(m):-Math.sqrt(m))-m,b[f][f]=p-u,s=l;s<v;s++){for(m=0,a=f;a<P;a++)m+=b[a][f]*b[a][s];for(p=m/d,a=f;a<P;a++)b[a][s]=b[a][s]+p*b[a][f]}for(C[f]=u,m=0,s=l;s<v;s++)m+=Math.pow(b[f][s],2);if(m<n)u=0;else{for(d=(p=b[f][f+1])*(u=p<0?Math.sqrt(m):-Math.sqrt(m))-m,b[f][f+1]=p-u,s=l;s<v;s++)S[s]=b[f][s]/d;for(s=l;s<P;s++){for(m=0,a=l;a<v;a++)m+=b[s][a]*b[f][a];for(a=l;a<v;a++)b[s][a]=b[s][a]+m*S[a]}}g<(x=Math.abs(C[f])+Math.abs(S[f]))&&(g=x)}if(r)for(f=v-1;0<=f;f--){if(u!==0){for(d=b[f][f+1]*u,s=l;s<v;s++)B[s][f]=b[f][s]/d;for(s=l;s<v;s++){for(m=0,a=l;a<v;a++)m+=b[f][a]*B[a][s];for(a=l;a<v;a++)B[a][s]=B[a][s]+m*B[a][f]}}for(s=l;s<v;s++)B[f][s]=0,B[s][f]=0;B[f][f]=1,u=S[f],l=f}if(e){if(e==="f")for(f=v;f<P;f++){for(s=v;s<P;s++)b[f][s]=0;b[f][f]=1}for(f=v-1;0<=f;f--){for(l=f+1,u=C[f],s=l;s<w;s++)b[f][s]=0;if(u!==0){for(d=b[f][f]*u,s=l;s<w;s++){for(m=0,a=l;a<P;a++)m+=b[a][f]*b[a][s];for(p=m/d,a=f;a<P;a++)b[a][s]=b[a][s]+p*b[a][f]}for(s=f;s<P;s++)b[s][f]=b[s][f]/u}else for(s=f;s<P;s++)b[s][f]=0;b[f][f]=b[f][f]+1}}for(o*=g,a=v-1;0<=a;a--)for(var I=0;I<50;I++){for(D=!1,l=a;0<=l;l--){if(Math.abs(S[l])<=o){D=!0;break}if(Math.abs(C[l-1])<=o)break}if(!D){for(h=0,c=l-(m=1),f=l;f<a+1&&(p=m*S[f],S[f]=h*S[f],!(Math.abs(p)<=o));f++)if(u=C[f],C[f]=Math.sqrt(p*p+u*u),h=u/(d=C[f]),m=-p/d,e)for(s=0;s<P;s++)x=b[s][c],y=b[s][f],b[s][c]=x*h+y*m,b[s][f]=-x*m+y*h}if(y=C[a],l===a){if(y<0&&(C[a]=-y,r))for(s=0;s<v;s++)B[s][a]=-B[s][a];break}for(g=C[l],p=(((x=C[a-1])-y)*(x+y)+((u=S[a-1])-(d=S[a]))*(u+d))/(2*d*x),u=Math.sqrt(p*p+1),p=((g-y)*(g+y)+d*(x/(p<0?p-u:p+u)-d))/g,f=l+(m=h=1);f<a+1;f++){if(u=S[f],x=C[f],d=m*u,u*=h,y=Math.sqrt(p*p+d*d),p=g*(h=p/(S[f-1]=y))+u*(m=d/y),u=-g*m+u*h,d=x*m,x*=h,r)for(s=0;s<v;s++)g=B[s][f-1],y=B[s][f],B[s][f-1]=g*h+y*m,B[s][f]=-g*m+y*h;if(y=Math.sqrt(p*p+d*d),p=(h=p/(C[f-1]=y))*u+(m=d/y)*x,g=-m*u+h*x,e)for(s=0;s<P;s++)x=b[s][f-1],y=b[s][f],b[s][f-1]=x*h+y*m,b[s][f]=-x*m+y*h}S[l]=0,S[a]=p,C[a]=g}for(f=0;f<v;f++)C[f]<o&&(C[f]=0);return{u:b,q:C,v:B}},i.VERSION="1.1.1",Object.defineProperty(i,"__esModule",{value:!0})})});import{FileLoader as z1,Loader as V1}from"three";function gc(i){return Array.isArray(i)?i:[i]}var of=typeof global=="object"&&global&&global.Object===Object&&global,bi=of;var nf=typeof self=="object"&&self&&self.Object===Object&&self,sf=bi||nf||Function("return this")(),Ve=sf;var af=Ve.Symbol,it=af;var yc=Object.prototype,lf=yc.hasOwnProperty,cf=yc.toString,Sn=it?it.toStringTag:void 0;function hf(i){var t=lf.call(i,Sn),e=i[Sn];try{i[Sn]=void 0;var r=!0}catch{}var o=cf.call(i);return r&&(t?i[Sn]=e:delete i[Sn]),o}var xc=hf;var pf=Object.prototype,uf=pf.toString;function df(i){return uf.call(i)}var vc=df;var mf="[object Null]",ff="[object Undefined]",bc=it?it.toStringTag:void 0;function gf(i){return i==null?i===void 0?ff:mf:bc&&bc in Object(i)?xc(i):vc(i)}var gt=gf;function yf(i){return i!=null&&typeof i=="object"}var Ze=yf;var xf="[object Symbol]";function vf(i){return typeof i=="symbol"||Ze(i)&>(i)==xf}var lo=vf;function bf(i,t){for(var e=-1,r=i==null?0:i.length,o=Array(r);++e<r;)o[e]=t(i[e],e,i);return o}var Si=bf;var Sf=Array.isArray,Fe=Sf;var wf=1/0,Sc=it?it.prototype:void 0,wc=Sc?Sc.toString:void 0;function Nc(i){if(typeof i=="string")return i;if(Fe(i))return Si(i,Nc)+"";if(lo(i))return wc?wc.call(i):"";var t=i+"";return t=="0"&&1/i==-wf?"-0":t}var Cc=Nc;function Nf(i){var t=typeof i;return i!=null&&(t=="object"||t=="function")}var et=Nf;function Cf(i){return i}var wi=Cf;var Tf="[object AsyncFunction]",Lf="[object Function]",If="[object GeneratorFunction]",Pf="[object Proxy]";function Mf(i){if(!et(i))return!1;var t=gt(i);return t==Lf||t==If||t==Tf||t==Pf}var co=Mf;var Af=Ve["__core-js_shared__"],Ni=Af;var Tc=function(){var i=/[^.]+$/.exec(Ni&&Ni.keys&&Ni.keys.IE_PROTO||"");return i?"Symbol(src)_1."+i:""}();function Of(i){return!!Tc&&Tc in i}var Lc=Of;var Df=Function.prototype,_f=Df.toString;function Bf(i){if(i!=null){try{return _f.call(i)}catch{}try{return i+""}catch{}}return""}var ur=Bf;var Ef=/[\\^$.*+?()[\]{}|]/g,Gf=/^\[object .+?Constructor\]$/,Rf=Function.prototype,zf=Object.prototype,Vf=Rf.toString,Ff=zf.hasOwnProperty,Uf=RegExp("^"+Vf.call(Ff).replace(Ef,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function jf(i){if(!et(i)||Lc(i))return!1;var t=co(i)?Uf:Gf;return t.test(ur(i))}var Ic=jf;function kf(i,t){return i?.[t]}var Pc=kf;function Hf(i,t){var e=Pc(i,t);return Ic(e)?e:void 0}var ht=Hf;var Wf=ht(Ve,"WeakMap"),Ci=Wf;var Mc=Object.create,qf=function(){function i(){}return function(t){if(!et(t))return{};if(Mc)return Mc(t);i.prototype=t;var e=new i;return i.prototype=void 0,e}}(),Ac=qf;function $f(i,t,e){switch(e.length){case 0:return i.call(t);case 1:return i.call(t,e[0]);case 2:return i.call(t,e[0],e[1]);case 3:return i.call(t,e[0],e[1],e[2])}return i.apply(t,e)}var Oc=$f;function Xf(i,t){var e=-1,r=i.length;for(t||(t=Array(r));++e<r;)t[e]=i[e];return t}var Ti=Xf;var Kf=800,Yf=16,Jf=Date.now;function Qf(i){var t=0,e=0;return function(){var r=Jf(),o=Yf-(r-e);if(e=r,o>0){if(++t>=Kf)return arguments[0]}else t=0;return i.apply(void 0,arguments)}}var Dc=Qf;function Zf(i){return function(){return i}}var _c=Zf;var eg=function(){try{var i=ht(Object,"defineProperty");return i({},"",{}),i}catch{}}(),ho=eg;var tg=ho?function(i,t){return ho(i,"toString",{configurable:!0,enumerable:!1,value:_c(t),writable:!0})}:wi,Bc=tg;var rg=Dc(Bc),Li=rg;function og(i,t){for(var e=-1,r=i==null?0:i.length;++e<r&&t(i[e],e,i)!==!1;);return i}var Ec=og;var ng=9007199254740991,ig=/^(?:0|[1-9]\d*)$/;function sg(i,t){var e=typeof i;return t=t??ng,!!t&&(e=="number"||e!="symbol"&&ig.test(i))&&i>-1&&i%1==0&&i<t}var Ii=sg;function ag(i,t,e){t=="__proto__"&&ho?ho(i,t,{configurable:!0,enumerable:!0,value:e,writable:!0}):i[t]=e}var po=ag;function lg(i,t){return i===t||i!==i&&t!==t}var Lr=lg;var cg=Object.prototype,hg=cg.hasOwnProperty;function pg(i,t,e){var r=i[t];(!(hg.call(i,t)&&Lr(r,e))||e===void 0&&!(t in i))&&po(i,t,e)}var Pi=pg;function ug(i,t,e,r){var o=!e;e||(e={});for(var n=-1,s=t.length;++n<s;){var a=t[n],l=r?r(e[a],i[a],a,e,i):void 0;l===void 0&&(l=i[a]),o?po(e,a,l):Pi(e,a,l)}return e}var Ct=ug;var Gc=Math.max;function dg(i,t,e){return t=Gc(t===void 0?i.length-1:t,0),function(){for(var r=arguments,o=-1,n=Gc(r.length-t,0),s=Array(n);++o<n;)s[o]=r[t+o];o=-1;for(var a=Array(t+1);++o<t;)a[o]=r[o];return a[t]=e(s),Oc(i,this,a)}}var Mi=dg;function mg(i,t){return Li(Mi(i,t,wi),i+"")}var Rc=mg;var fg=9007199254740991;function gg(i){return typeof i=="number"&&i>-1&&i%1==0&&i<=fg}var Ai=gg;function yg(i){return i!=null&&Ai(i.length)&&!co(i)}var Ir=yg;function xg(i,t,e){if(!et(e))return!1;var r=typeof t;return(r=="number"?Ir(e)&&Ii(t,e.length):r=="string"&&t in e)?Lr(e[t],i):!1}var zc=xg;function vg(i){return Rc(function(t,e){var r=-1,o=e.length,n=o>1?e[o-1]:void 0,s=o>2?e[2]:void 0;for(n=i.length>3&&typeof n=="function"?(o--,n):void 0,s&&zc(e[0],e[1],s)&&(n=o<3?void 0:n,o=1),t=Object(t);++r<o;){var a=e[r];a&&i(t,a,r,n)}return t})}var Vc=vg;var bg=Object.prototype;function Sg(i){var t=i&&i.constructor,e=typeof t=="function"&&t.prototype||bg;return i===e}var uo=Sg;function wg(i,t){for(var e=-1,r=Array(i);++e<i;)r[e]=t(e);return r}var Fc=wg;var Ng="[object Arguments]";function Cg(i){return Ze(i)&>(i)==Ng}var ba=Cg;var Uc=Object.prototype,Tg=Uc.hasOwnProperty,Lg=Uc.propertyIsEnumerable,Ig=ba(function(){return arguments}())?ba:function(i){return Ze(i)&&Tg.call(i,"callee")&&!Lg.call(i,"callee")},Wr=Ig;function Pg(){return!1}var jc=Pg;var Wc=typeof exports=="object"&&exports&&!exports.nodeType&&exports,kc=Wc&&typeof module=="object"&&module&&!module.nodeType&&module,Mg=kc&&kc.exports===Wc,Hc=Mg?Ve.Buffer:void 0,Ag=Hc?Hc.isBuffer:void 0,Og=Ag||jc,mo=Og;var Dg="[object Arguments]",_g="[object Array]",Bg="[object Boolean]",Eg="[object Date]",Gg="[object Error]",Rg="[object Function]",zg="[object Map]",Vg="[object Number]",Fg="[object Object]",Ug="[object RegExp]",jg="[object Set]",kg="[object String]",Hg="[object WeakMap]",Wg="[object ArrayBuffer]",qg="[object DataView]",$g="[object Float32Array]",Xg="[object Float64Array]",Kg="[object Int8Array]",Yg="[object Int16Array]",Jg="[object Int32Array]",Qg="[object Uint8Array]",Zg="[object Uint8ClampedArray]",ey="[object Uint16Array]",ty="[object Uint32Array]",Pe={};Pe[$g]=Pe[Xg]=Pe[Kg]=Pe[Yg]=Pe[Jg]=Pe[Qg]=Pe[Zg]=Pe[ey]=Pe[ty]=!0;Pe[Dg]=Pe[_g]=Pe[Wg]=Pe[Bg]=Pe[qg]=Pe[Eg]=Pe[Gg]=Pe[Rg]=Pe[zg]=Pe[Vg]=Pe[Fg]=Pe[Ug]=Pe[jg]=Pe[kg]=Pe[Hg]=!1;function ry(i){return Ze(i)&&Ai(i.length)&&!!Pe[gt(i)]}var qc=ry;function oy(i){return function(t){return i(t)}}var fo=oy;var $c=typeof exports=="object"&&exports&&!exports.nodeType&&exports,wn=$c&&typeof module=="object"&&module&&!module.nodeType&&module,ny=wn&&wn.exports===$c,Sa=ny&&bi.process,iy=function(){try{var i=wn&&wn.require&&wn.require("util").types;return i||Sa&&Sa.binding&&Sa.binding("util")}catch{}}(),dr=iy;var Xc=dr&&dr.isTypedArray,sy=Xc?fo(Xc):qc,Oi=sy;var ay=Object.prototype,ly=ay.hasOwnProperty;function cy(i,t){var e=Fe(i),r=!e&&Wr(i),o=!e&&!r&&mo(i),n=!e&&!r&&!o&&Oi(i),s=e||r||o||n,a=s?Fc(i.length,String):[],l=a.length;for(var c in i)(t||ly.call(i,c))&&!(s&&(c=="length"||o&&(c=="offset"||c=="parent")||n&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||Ii(c,l)))&&a.push(c);return a}var Di=cy;function hy(i,t){return function(e){return i(t(e))}}var _i=hy;var py=_i(Object.keys,Object),Kc=py;var uy=Object.prototype,dy=uy.hasOwnProperty;function my(i){if(!uo(i))return Kc(i);var t=[];for(var e in Object(i))dy.call(i,e)&&e!="constructor"&&t.push(e);return t}var Yc=my;function fy(i){return Ir(i)?Di(i):Yc(i)}var go=fy;function gy(i){var t=[];if(i!=null)for(var e in Object(i))t.push(e);return t}var Jc=gy;var yy=Object.prototype,xy=yy.hasOwnProperty;function vy(i){if(!et(i))return Jc(i);var t=uo(i),e=[];for(var r in i)r=="constructor"&&(t||!xy.call(i,r))||e.push(r);return e}var Qc=vy;function by(i){return Ir(i)?Di(i,!0):Qc(i)}var qt=by;var Sy=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,wy=/^\w*$/;function Ny(i,t){if(Fe(i))return!1;var e=typeof i;return e=="number"||e=="symbol"||e=="boolean"||i==null||lo(i)?!0:wy.test(i)||!Sy.test(i)||t!=null&&i in Object(t)}var Zc=Ny;var Cy=ht(Object,"create"),mr=Cy;function Ty(){this.__data__=mr?mr(null):{},this.size=0}var eh=Ty;function Ly(i){var t=this.has(i)&&delete this.__data__[i];return this.size-=t?1:0,t}var th=Ly;var Iy="__lodash_hash_undefined__",Py=Object.prototype,My=Py.hasOwnProperty;function Ay(i){var t=this.__data__;if(mr){var e=t[i];return e===Iy?void 0:e}return My.call(t,i)?t[i]:void 0}var rh=Ay;var Oy=Object.prototype,Dy=Oy.hasOwnProperty;function _y(i){var t=this.__data__;return mr?t[i]!==void 0:Dy.call(t,i)}var oh=_y;var By="__lodash_hash_undefined__";function Ey(i,t){var e=this.__data__;return this.size+=this.has(i)?0:1,e[i]=mr&&t===void 0?By:t,this}var nh=Ey;function yo(i){var t=-1,e=i==null?0:i.length;for(this.clear();++t<e;){var r=i[t];this.set(r[0],r[1])}}yo.prototype.clear=eh;yo.prototype.delete=th;yo.prototype.get=rh;yo.prototype.has=oh;yo.prototype.set=nh;var wa=yo;function Gy(){this.__data__=[],this.size=0}var ih=Gy;function Ry(i,t){for(var e=i.length;e--;)if(Lr(i[e][0],t))return e;return-1}var Pr=Ry;var zy=Array.prototype,Vy=zy.splice;function Fy(i){var t=this.__data__,e=Pr(t,i);if(e<0)return!1;var r=t.length-1;return e==r?t.pop():Vy.call(t,e,1),--this.size,!0}var sh=Fy;function Uy(i){var t=this.__data__,e=Pr(t,i);return e<0?void 0:t[e][1]}var ah=Uy;function jy(i){return Pr(this.__data__,i)>-1}var lh=jy;function ky(i,t){var e=this.__data__,r=Pr(e,i);return r<0?(++this.size,e.push([i,t])):e[r][1]=t,this}var ch=ky;function xo(i){var t=-1,e=i==null?0:i.length;for(this.clear();++t<e;){var r=i[t];this.set(r[0],r[1])}}xo.prototype.clear=ih;xo.prototype.delete=sh;xo.prototype.get=ah;xo.prototype.has=lh;xo.prototype.set=ch;var Mr=xo;var Hy=ht(Ve,"Map"),Ar=Hy;function Wy(){this.size=0,this.__data__={hash:new wa,map:new(Ar||Mr),string:new wa}}var hh=Wy;function qy(i){var t=typeof i;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?i!=="__proto__":i===null}var ph=qy;function $y(i,t){var e=i.__data__;return ph(t)?e[typeof t=="string"?"string":"hash"]:e.map}var Or=$y;function Xy(i){var t=Or(this,i).delete(i);return this.size-=t?1:0,t}var uh=Xy;function Ky(i){return Or(this,i).get(i)}var dh=Ky;function Yy(i){return Or(this,i).has(i)}var mh=Yy;function Jy(i,t){var e=Or(this,i),r=e.size;return e.set(i,t),this.size+=e.size==r?0:1,this}var fh=Jy;function vo(i){var t=-1,e=i==null?0:i.length;for(this.clear();++t<e;){var r=i[t];this.set(r[0],r[1])}}vo.prototype.clear=hh;vo.prototype.delete=uh;vo.prototype.get=dh;vo.prototype.has=mh;vo.prototype.set=fh;var Nn=vo;var Qy="Expected a function";function Na(i,t){if(typeof i!="function"||t!=null&&typeof t!="function")throw new TypeError(Qy);var e=function(){var r=arguments,o=t?t.apply(this,r):r[0],n=e.cache;if(n.has(o))return n.get(o);var s=i.apply(this,r);return e.cache=n.set(o,s)||n,s};return e.cache=new(Na.Cache||Nn),e}Na.Cache=Nn;var gh=Na;var Zy=500;function ex(i){var t=gh(i,function(r){return e.size===Zy&&e.clear(),r}),e=t.cache;return t}var yh=ex;var tx=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,rx=/\\(\\)?/g,ox=yh(function(i){var t=[];return i.charCodeAt(0)===46&&t.push(""),i.replace(tx,function(e,r,o,n){t.push(o?n.replace(rx,"$1"):r||e)}),t}),xh=ox;function nx(i){return i==null?"":Cc(i)}var vh=nx;function ix(i,t){return Fe(i)?i:Zc(i,t)?[i]:xh(vh(i))}var bo=ix;var sx=1/0;function ax(i){if(typeof i=="string"||lo(i))return i;var t=i+"";return t=="0"&&1/i==-sx?"-0":t}var Bi=ax;function lx(i,t){t=bo(t,i);for(var e=0,r=t.length;i!=null&&e<r;)i=i[Bi(t[e++])];return e&&e==r?i:void 0}var bh=lx;function cx(i,t){for(var e=-1,r=t.length,o=i.length;++e<r;)i[o+e]=t[e];return i}var So=cx;var Sh=it?it.isConcatSpreadable:void 0;function hx(i){return Fe(i)||Wr(i)||!!(Sh&&i&&i[Sh])}var wh=hx;function Nh(i,t,e,r,o){var n=-1,s=i.length;for(e||(e=wh),o||(o=[]);++n<s;){var a=i[n];t>0&&e(a)?t>1?Nh(a,t-1,e,r,o):So(o,a):r||(o[o.length]=a)}return o}var Ch=Nh;function px(i){var t=i==null?0:i.length;return t?Ch(i,1):[]}var Th=px;function ux(i){return Li(Mi(i,void 0,Th),i+"")}var Lh=ux;var dx=_i(Object.getPrototypeOf,Object),wo=dx;var mx="[object Object]",fx=Function.prototype,gx=Object.prototype,Ih=fx.toString,yx=gx.hasOwnProperty,xx=Ih.call(Object);function vx(i){if(!Ze(i)||gt(i)!=mx)return!1;var t=wo(i);if(t===null)return!0;var e=yx.call(t,"constructor")&&t.constructor;return typeof e=="function"&&e instanceof e&&Ih.call(e)==xx}var Ei=vx;function bx(i,t,e){var r=-1,o=i.length;t<0&&(t=-t>o?0:o+t),e=e>o?o:e,e<0&&(e+=o),o=t>e?0:e-t>>>0,t>>>=0;for(var n=Array(o);++r<o;)n[r]=i[r+t];return n}var Ph=bx;function Sx(){this.__data__=new Mr,this.size=0}var Mh=Sx;function wx(i){var t=this.__data__,e=t.delete(i);return this.size=t.size,e}var Ah=wx;function Nx(i){return this.__data__.get(i)}var Oh=Nx;function Cx(i){return this.__data__.has(i)}var Dh=Cx;var Tx=200;function Lx(i,t){var e=this.__data__;if(e instanceof Mr){var r=e.__data__;if(!Ar||r.length<Tx-1)return r.push([i,t]),this.size=++e.size,this;e=this.__data__=new Nn(r)}return e.set(i,t),this.size=e.size,this}var _h=Lx;function No(i){var t=this.__data__=new Mr(i);this.size=t.size}No.prototype.clear=Mh;No.prototype.delete=Ah;No.prototype.get=Oh;No.prototype.has=Dh;No.prototype.set=_h;var Gi=No;function Ix(i,t){return i&&Ct(t,go(t),i)}var Bh=Ix;function Px(i,t){return i&&Ct(t,qt(t),i)}var Eh=Px;var Vh=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Gh=Vh&&typeof module=="object"&&module&&!module.nodeType&&module,Mx=Gh&&Gh.exports===Vh,Rh=Mx?Ve.Buffer:void 0,zh=Rh?Rh.allocUnsafe:void 0;function Ax(i,t){if(t)return i.slice();var e=i.length,r=zh?zh(e):new i.constructor(e);return i.copy(r),r}var Ri=Ax;function Ox(i,t){for(var e=-1,r=i==null?0:i.length,o=0,n=[];++e<r;){var s=i[e];t(s,e,i)&&(n[o++]=s)}return n}var Fh=Ox;function Dx(){return[]}var zi=Dx;var _x=Object.prototype,Bx=_x.propertyIsEnumerable,Uh=Object.getOwnPropertySymbols,Ex=Uh?function(i){return i==null?[]:(i=Object(i),Fh(Uh(i),function(t){return Bx.call(i,t)}))}:zi,Co=Ex;function Gx(i,t){return Ct(i,Co(i),t)}var jh=Gx;var Rx=Object.getOwnPropertySymbols,zx=Rx?function(i){for(var t=[];i;)So(t,Co(i)),i=wo(i);return t}:zi,Vi=zx;function Vx(i,t){return Ct(i,Vi(i),t)}var kh=Vx;function Fx(i,t,e){var r=t(i);return Fe(i)?r:So(r,e(i))}var Fi=Fx;function Ux(i){return Fi(i,go,Co)}var Hh=Ux;function jx(i){return Fi(i,qt,Vi)}var Ui=jx;var kx=ht(Ve,"DataView"),ji=kx;var Hx=ht(Ve,"Promise"),ki=Hx;var Wx=ht(Ve,"Set"),Hi=Wx;var Wh="[object Map]",qx="[object Object]",qh="[object Promise]",$h="[object Set]",Xh="[object WeakMap]",Kh="[object DataView]",$x=ur(ji),Xx=ur(Ar),Kx=ur(ki),Yx=ur(Hi),Jx=ur(Ci),qr=gt;(ji&&qr(new ji(new ArrayBuffer(1)))!=Kh||Ar&&qr(new Ar)!=Wh||ki&&qr(ki.resolve())!=qh||Hi&&qr(new Hi)!=$h||Ci&&qr(new Ci)!=Xh)&&(qr=function(i){var t=gt(i),e=t==qx?i.constructor:void 0,r=e?ur(e):"";if(r)switch(r){case $x:return Kh;case Xx:return Wh;case Kx:return qh;case Yx:return $h;case Jx:return Xh}return t});var To=qr;var Qx=Object.prototype,Zx=Qx.hasOwnProperty;function e0(i){var t=i.length,e=new i.constructor(t);return t&&typeof i[0]=="string"&&Zx.call(i,"index")&&(e.index=i.index,e.input=i.input),e}var Yh=e0;var t0=Ve.Uint8Array,Ca=t0;function r0(i){var t=new i.constructor(i.byteLength);return new Ca(t).set(new Ca(i)),t}var Lo=r0;function o0(i,t){var e=t?Lo(i.buffer):i.buffer;return new i.constructor(e,i.byteOffset,i.byteLength)}var Jh=o0;var n0=/\w*$/;function i0(i){var t=new i.constructor(i.source,n0.exec(i));return t.lastIndex=i.lastIndex,t}var Qh=i0;var Zh=it?it.prototype:void 0,ep=Zh?Zh.valueOf:void 0;function s0(i){return ep?Object(ep.call(i)):{}}var tp=s0;function a0(i,t){var e=t?Lo(i.buffer):i.buffer;return new i.constructor(e,i.byteOffset,i.length)}var Wi=a0;var l0="[object Boolean]",c0="[object Date]",h0="[object Map]",p0="[object Number]",u0="[object RegExp]",d0="[object Set]",m0="[object String]",f0="[object Symbol]",g0="[object ArrayBuffer]",y0="[object DataView]",x0="[object Float32Array]",v0="[object Float64Array]",b0="[object Int8Array]",S0="[object Int16Array]",w0="[object Int32Array]",N0="[object Uint8Array]",C0="[object Uint8ClampedArray]",T0="[object Uint16Array]",L0="[object Uint32Array]";function I0(i,t,e){var r=i.constructor;switch(t){case g0:return Lo(i);case l0:case c0:return new r(+i);case y0:return Jh(i,e);case x0:case v0:case b0:case S0:case w0:case N0:case C0:case T0:case L0:return Wi(i,e);case h0:return new r;case p0:case m0:return new r(i);case u0:return Qh(i);case d0:return new r;case f0:return tp(i)}}var rp=I0;function P0(i){return typeof i.constructor=="function"&&!uo(i)?Ac(wo(i)):{}}var qi=P0;var M0="[object Map]";function A0(i){return Ze(i)&&To(i)==M0}var op=A0;var np=dr&&dr.isMap,O0=np?fo(np):op,ip=O0;var D0="[object Set]";function _0(i){return Ze(i)&&To(i)==D0}var sp=_0;var ap=dr&&dr.isSet,B0=ap?fo(ap):sp,lp=B0;var E0=1,G0=2,R0=4,cp="[object Arguments]",z0="[object Array]",V0="[object Boolean]",F0="[object Date]",U0="[object Error]",hp="[object Function]",j0="[object GeneratorFunction]",k0="[object Map]",H0="[object Number]",pp="[object Object]",W0="[object RegExp]",q0="[object Set]",$0="[object String]",X0="[object Symbol]",K0="[object WeakMap]",Y0="[object ArrayBuffer]",J0="[object DataView]",Q0="[object Float32Array]",Z0="[object Float64Array]",ev="[object Int8Array]",tv="[object Int16Array]",rv="[object Int32Array]",ov="[object Uint8Array]",nv="[object Uint8ClampedArray]",iv="[object Uint16Array]",sv="[object Uint32Array]",Le={};Le[cp]=Le[z0]=Le[Y0]=Le[J0]=Le[V0]=Le[F0]=Le[Q0]=Le[Z0]=Le[ev]=Le[tv]=Le[rv]=Le[k0]=Le[H0]=Le[pp]=Le[W0]=Le[q0]=Le[$0]=Le[X0]=Le[ov]=Le[nv]=Le[iv]=Le[sv]=!0;Le[U0]=Le[hp]=Le[K0]=!1;function $i(i,t,e,r,o,n){var s,a=t&E0,l=t&G0,c=t&R0;if(e&&(s=o?e(i,r,o,n):e(i)),s!==void 0)return s;if(!et(i))return i;var h=Fe(i);if(h){if(s=Yh(i),!a)return Ti(i,s)}else{var p=To(i),u=p==hp||p==j0;if(mo(i))return Ri(i,a);if(p==pp||p==cp||u&&!o){if(s=l||u?{}:qi(i),!a)return l?kh(i,Eh(s,i)):jh(i,Bh(s,i))}else{if(!Le[p])return o?i:{};s=rp(i,p,a)}}n||(n=new Gi);var d=n.get(i);if(d)return d;n.set(i,s),lp(i)?i.forEach(function(x){s.add($i(x,t,e,x,i,n))}):ip(i)&&i.forEach(function(x,y){s.set(y,$i(x,t,e,y,i,n))});var m=c?l?Ui:Hh:l?qt:go,g=h?void 0:m(i);return Ec(g||i,function(x,y){g&&(y=x,x=i[y]),Pi(s,y,$i(x,t,e,y,i,n))}),s}var Xi=$i;var av=1,lv=4;function cv(i){return Xi(i,av|lv)}var Cn=cv;function hv(i){return function(t,e,r){for(var o=-1,n=Object(t),s=r(t),a=s.length;a--;){var l=s[i?a:++o];if(e(n[l],l,n)===!1)break}return t}}var up=hv;var pv=up(),dp=pv;function uv(i,t,e){(e!==void 0&&!Lr(i[t],e)||e===void 0&&!(t in i))&&po(i,t,e)}var Tn=uv;function dv(i){return Ze(i)&&Ir(i)}var mp=dv;function mv(i,t){if(!(t==="constructor"&&typeof i[t]=="function")&&t!="__proto__")return i[t]}var Ln=mv;function fv(i){return Ct(i,qt(i))}var fp=fv;function gv(i,t,e,r,o,n,s){var a=Ln(i,e),l=Ln(t,e),c=s.get(l);if(c){Tn(i,e,c);return}var h=n?n(a,l,e+"",i,t,s):void 0,p=h===void 0;if(p){var u=Fe(l),d=!u&&mo(l),m=!u&&!d&&Oi(l);h=l,u||d||m?Fe(a)?h=a:mp(a)?h=Ti(a):d?(p=!1,h=Ri(l,!0)):m?(p=!1,h=Wi(l,!0)):h=[]:Ei(l)||Wr(l)?(h=a,Wr(a)?h=fp(a):(!et(a)||co(a))&&(h=qi(l))):p=!1}p&&(s.set(l,h),o(h,l,r,n,s),s.delete(l)),Tn(i,e,h)}var gp=gv;function yp(i,t,e,r,o){i!==t&&dp(t,function(n,s){if(o||(o=new Gi),et(n))gp(i,t,s,e,yp,r,o);else{var a=r?r(Ln(i,s),n,s+"",i,t,o):void 0;a===void 0&&(a=n),Tn(i,s,a)}},qt)}var xp=yp;function yv(i){var t=i==null?0:i.length;return t?i[t-1]:void 0}var vp=yv;function xv(i,t){return t.length<2?i:bh(i,Ph(t,0,-1))}var bp=xv;var vv=Vc(function(i,t,e){xp(i,t,e)}),$r=vv;function bv(i,t){return t=bo(t,i),i=bp(i,t),i==null||delete i[Bi(vp(t))]}var Sp=bv;function Sv(i){return Ei(i)?void 0:i}var wp=Sv;var wv=1,Nv=2,Cv=4,Tv=Lh(function(i,t){var e={};if(i==null)return e;var r=!1;t=Si(t,function(n){return n=bo(n,i),r||(r=n.length>1),n}),Ct(i,Ui(i),e),r&&(e=Xi(e,wv|Nv|Cv,wp));for(var o=t.length;o--;)Sp(e,t[o]);return e}),Io=Tv;var Po;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function t(r){return e.all.includes(r)}e.is=t})(Po||(Po={}));var Xr;(o=>{o.DefaultUp=[0,1,0],o.DefaultTargetOffset=1e3,o.defaultData={far:1e5,type:"OrthographicCamera",perspective:{near:5,fov:45,zoom:1},orthographic:{near:-1e5,zoom:1},up:o.DefaultUp,isUpVectorFlipped:!1,targetOffset:o.DefaultTargetOffset};function r(n){return n.type==="PerspectiveCamera"?n.perspective.zoom:n.orthographic.zoom}o.getZoom=r})(Xr||(Xr={}));var Np;(e=>{function i(r,o){return r[0]===o[0]&&r[1]===o[1]}e.isEqual=i;function t(r,o,n){return[r[0]+(o[0]-r[0])*n,r[1]+(o[1]-r[1])*n]}e.lerp=t})(Np||(Np={}));var Mo;(o=>{function i(n,s){return n[0]===s[0]&&n[1]===s[1]&&n[2]===s[2]}o.isEqual=i;function t(n,s){return[n[0]+s[0],n[1]+s[1],n[2]+s[2]]}o.add=t;function e(n,s){return[n[0]-s[0],n[1]-s[1],n[2]-s[2]]}o.sub=e;function r(n,s,a){return[n[0]+(s[0]-n[0])*a,n[1]+(s[1]-n[1])*a,n[2]+(s[2]-n[2])*a]}o.lerp=r})(Mo||(Mo={}));var Cp;(e=>{function i(r,o){return r[0]===o[0]&&r[1]===o[1]&&r[2]===o[2]&&r[3]===o[3]}e.isEqual=i;function t(r,o,n){return[r[0]+(o[0]-r[0])*n,r[1]+(o[1]-r[1])*n,r[2]+(o[2]-r[2])*n,r[3]+(o[3]-r[3])*n]}e.lerp=t})(Cp||(Cp={}));var Dr;(o=>{o.identity=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function t(n,s){for(let a=0;a<16;a++)if(n[a]!==s[a])return!1;return!0}o.isEqual=t;function e(n){return n??o.identity}o.simplify=e;function r(n,s){let a=s.slice(0);for(var l=0,c=s.length;l<c;l+=3){let h=n[3]*s[l]+n[7]*s[l+1]+n[11]*s[l+2]+n[15];a[l]=(n[0]*s[l]+n[4]*s[l+1]+n[8]*s[l+2]+n[12])/h,a[l+1]=(n[1]*s[l]+n[5]*s[l+1]+n[9]*s[l+2]+n[13])/h,a[l+2]=(n[2]*s[l]+n[6]*s[l+1]+n[10]*s[l+2]+n[14])/h}return a}o.applyMatrix4=r})(Dr||(Dr={}));var yt;(l=>{l.white={r:1,g:1,b:1},l.red={r:1,g:0,b:0},l.black={r:0,g:0,b:0};function r(c){return{r:Math.round(c.r*255),g:Math.round(c.g*255),b:Math.round(c.b*255),a:1}}l.toRgb255a1=r;function o(c){return{r:c.r,g:c.g,b:c.b}}l.clone=o;function n(c){return c=Math.floor(c),{r:(c>>16&255)/255,g:(c>>8&255)/255,b:(c&255)/255}}l.fromHex=n;function s(c,h){return c.r===h.r&&c.g===h.g&&c.b===h.b}l.equals=s;function a(c,h,p){return{r:c.r+(h.r-c.r)*p,g:c.g+(h.g-c.g)*p,b:c.b+(h.b-c.b)*p}}l.lerp=a})(yt||(yt={}));var xt;(s=>{s.white={...yt.white,a:1};function t(a){return{r:a[0],g:a[1],b:a[2],a:a[3]}}s.from0to1=t;function e(a,l){return{...yt.fromHex(a),a:l}}s.fromHexAndA=e;function r(a){return{r:Math.round(a.r*255),g:Math.round(a.g*255),b:Math.round(a.b*255),a:a.a}}s.toRgb255a1=r;function o(a,l){return yt.equals(a,l)&&a.a===l.a}s.equals=o;function n(a,l,c){return{r:a.r+(l.r-a.r)*c,g:a.g+(l.g-a.g)*c,b:a.b+(l.b-a.b)*c,a:a.a+(l.a-a.a)*c}}s.lerp=n})(xt||(xt={}));var Ki;(t=>t.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(Ki||(Ki={}));var Tp;(t=>t.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(Tp||(Tp={}));var Lp;(t=>t.defaultData={control1:[.5,.05],control2:[.1,.3]})(Lp||(Lp={}));var Yi;(t=>{function i(e,r=.1){return{type:"radial",hideBase:!1,count:3,radial:{radius:Math.max(e[0],e[1])*2,start:0,end:360,alignment:!1,axis:"y",scale:[1,1,1],rotation:[0,0,0],position:[0,0,0]},linear:{scale:[1,1,1],rotation:[0,0,0],position:[e[0]+e[0]*r,0,0]},grid:{count:[2,2,2],size:e.map(o=>o*(1+r)),useCenter:!0}}}t.defaultData=i})(Yi||(Yi={}));var Tt=class{modifyById(t,e){let r=this;if(r[t]===void 0)throw new Error("not expected");{let n={...r,[t]:e};return Object.setPrototypeOf(n,Tt.prototype),n}}add(t,e){return this.runOp({type:1,id:t,data:e})?.data??this}runOp(t){let e=this;if(t.type===1){let r=e[t.id],o;r===void 0?o={type:2,id:t.id}:o={type:1,id:t.id,data:r};let{id:n,data:s}=t,a={...e,[n]:s};return Object.setPrototypeOf(a,Tt.prototype),{data:a,actual:t,reverse:o}}else if(t.type===2){let{id:r}=t,o=e[r];if(o===void 0)return null;{let n={...e};return Object.setPrototypeOf(n,Tt.prototype),delete n[r],{data:n,actual:t,reverse:{type:1,id:r,data:o}}}}throw new Error("illegal arg")}};function In(i){if(i.deepFreeze!==void 0){i.deepFreeze(i);return}let t=Object.getOwnPropertyNames(i);for(let e of t){let r=i[e];r&&typeof r=="object"&&In(r)}return Object.freeze(i)}function Ip(i,t){let e=0;for(;e<i.length&&e<t.length;){if(i[e]<t[e])return-1;if(i[e]>t[e])return 1;e+=1}return e!==t.length?-1:e!==i.length?1:0}var Ji=class extends Error{};function $t(i,t,e){if(i===void 0?t===void 0?(i=0,t=10):i=t-10:t===void 0&&(t=i+10),i>t){let n=i;i=t,t=n}let r=[],o=1/(e+1);for(let n=0;n<e;n++){let s=i+(t-i)*(n+.75+Math.random()*.5)*o;r.push(s)}return r}function Qi(i){return i instanceof Uint8Array||i instanceof Uint16Array||i instanceof Uint32Array||i instanceof Int8Array||i instanceof Int16Array||i instanceof Int32Array||i instanceof Float32Array||i instanceof Float64Array}function Pp(){return typeof process<"u"}function Mp(i,t){for(let e of i)t(e.id,e.data),Mp(e.children,t)}function Ap(i,t){t(i.id,i.data);for(let e of i.children)Ap(e,t)}var Lt=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Lt.prototype)}deepFreeze(){let e=0;for(;e<this.length;)In(this[e]),e++}fillCaches0(e,r){this.objCaches.set(e.id,e),this.parentCaches.set(e.id,r);for(let o of e.children)this.fillCaches0(o,e.id)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,this.parentCaches=new Map;for(let e of this)this.fillCaches0(e,null)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}isDescendantOf(e,r){for(;e;){let o=this.parent(e);if(o===r)return!0;e=o}return!1}data(e){return this.get(e)?.data}has(e){return this.childrenOf(e)!==void 0}get(e){return this.fillCaches(),this.objCaches.get(e)}childrenOf(e){return e===null?this:this.get(e)?.children}traverseFrom(e,r){if(e===null)this.traverse(r);else{let o=this.get(e);o&&Ap(o,r)}}traverse(e){Mp(this,e)}totalSize(){return this.fillCaches(),this.objCaches.size}parent(e){return this.fillCaches(),this.parentCaches.get(e)}childrenArray(e){return e===null?this:this.get(e).children}modifyById(e,r){if(this.get(e)===void 0)throw new Error("not expected");{let n=this.parent(e),s=this.childrenArray(n),a=s.findIndex(h=>h.id===e);if(a<0)throw new Error("not expected");let l=s[a];return s=[...s],s[a]={...l,data:r},this.modifyArrayBy(n,s)}}modifyArrayBy(e,r){let o=e,n=r;for(;o!==null;){let a=n,l=o;if(o=this.parent(o),o===void 0)throw new Error;n=this.childrenArray(o);let c=n.findIndex(h=>h.id===l);if(c<0)throw new Error;n=[...n],n[c]={...n[c],children:a}}Object.setPrototypeOf(n,Lt.prototype);let s=n;return s.fillCaches(),s}runOp(e){switch(e.type){case 7:return this.addOp(e);case 8:return this.deleteOp(e);case 9:return this.moveOp(e)}}checkDuplicatedIdRec({id:e,children:r}){if(this.get(e)!==void 0)return!0;for(let o of r)if(this.checkDuplicatedIdRec(o))return!0;return!1}addOp(e){let{parent:r,fi:o,id:n,data:s,children:a}=e;if(r!==null&&this.get(r)===void 0)return null;if(this.checkDuplicatedIdRec(e))return null;{let l=r,c=this.childrenArray(l),h={fi:o,id:n,data:s,children:a};return c=[...c,h],c.sort((u,d)=>u.fi-d.fi),e.localIndex=c.indexOf(h),{data:this.modifyArrayBy(l,c),actual:e,reverse:{type:8,id:n}}}}deleteOp(e){let{id:r}=e;if(this.get(r)===null)return null;{let o=this.parent(r);if(o===void 0)return null;let n=this.childrenArray(o),s=n.findIndex(c=>c.id===r);e.localIndex=s,n=[...n];let a=n.splice(s,1)[0];return{data:this.modifyArrayBy(o,n),actual:e,reverse:{type:7,...a,parent:o}}}}moveOp(e){let{parent:r,fi:o,id:n}=e;if(r!==null&&this.get(r)===void 0)return this.deleteOp({type:8,id:n});if(r!==null){let d=r;for(;d!==null;){if(d===void 0)throw new Error;if(d===n)throw new Ji("cyclic tree");d=this.parent(d)}}let s=this.parent(n);if(s===void 0)return null;let a=s,l=this.childrenArray(s),c=l.findIndex(d=>d.id===n);l=[...l];let h=l.splice(c,1)[0],p=this.modifyArrayBy(s,l);s=r,l=p.childrenArray(s);let u=h.fi;return h={...h,fi:o},l=[...l,h],l.sort((d,m)=>d.fi-m.fi),e.localIndex=l.indexOf(h),p=p.modifyArrayBy(s,l),{data:p,actual:e,reverse:{type:9,parent:a,fi:u,id:n}}}previous(e,r){if(r===null){let n=this.childrenArray(e);return n.length===0?null:n[n.length-1].id}let o=null;for(let n of this.childrenArray(e)){if(n.id===r)return o;o=n.id}return null}traverseSortNext(e){let r=this.parent(e);if(r!==void 0){let o=this.childrenArray(r),n=o.findIndex(s=>s.id===e)+1;if(n<o.length)return o[n].id;if(r)return this.traverseSortNext(r)}}sortNext(e){let r=this.childrenArray(e);return r.length>0?r[0].id:this.traverseSortNext(e)}traverseSortPrevious(e){let r=this.childrenArray(e);return r.length>0?this.traverseSortPrevious(r[r.length-1].id):e}sortPrevious(e){let r=this.parent(e);if(r!==void 0){let o=this.childrenArray(r),n=o.findIndex(s=>s.id===e)-1;return n>=0?this.traverseSortPrevious(o[n].id):r}}getAllSorted(e){let r=[];for(let o of e){let n=this.getWithSortKey(o.id);n!==void 0&&r.push({...o,...n})}r.sort((o,n)=>Ip(o.sortKey,n.sortKey));for(let o of r)delete o.sortKey;return r}getWithSortKey(e){var r=e;let o=[],n=this.get(r),s=n;if(n!==void 0){for(;r;)o.splice(0,0,n.fi),r=this.parent(r),r!==null&&(n=this.get(r));return{...s,sortKey:o}}}insertBeforeHelper(e,r,o){return this.insertAfterHelper(e,this.previous(e,r),o)}insertAfterHelper(e,r,o){let n=this.childrenArray(e);if(r===null){if(n.length===0)return $t(0,o,o);{let s=n[0].fi;return $t(s-o,s,o)}}else{let s=this.get(r);if(s===void 0||this.parent(r)!==e)throw new Error("illegal args");let a=n.find(l=>l.fi>s.fi);if(a===void 0){let l=n[n.length-1].fi;return $t(l,l+o,o)}else return $t(s.fi,a.fi,o)}}};var Zi;(t=>{function i(e,r){if(Array.isArray(e)){let o=r.props,n={},s=[...e],a=!1;if(o)for(let l of Object.keys(o)){let c=parseInt(l);if(isNaN(c))throw new Error("wrong index");n[l]=s[c],s[c]=o[l],a=!0}return a?{data:s,actual:r,reverse:{type:0,props:n}}:null}else{let o=r.props,n={},s={...e},a=!1;if(o)for(let l of Object.keys(o)){n[l]=s[l];let c=o[l];c===void 0?delete s[l]:s[l]=c,a=!0}return a?{data:s,actual:r,reverse:{type:0,props:n}}:null}}t.runOp=i})(Zi||(Zi={}));var De=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,De.prototype)}deepFreeze(){let e=0;for(;e<this.length;)In(this[e]),e++}fillCaches0(e){this.objCaches.set(e.id,e)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,Object.getOwnPropertyDescriptor(this,"objCaches").enumerable=!1;for(let e of this)this.fillCaches0(e)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}data(e){return this.get(e)?.data}get(e){return this.fillCaches(),this.objCaches.get(e)}modifyById(e,r){if(this.get(e)===void 0)throw new Error("not expected");{let n=this,s=n.findIndex(c=>c.id===e);if(s<0)throw new Error("not expected");let a=n[s];return n=[...n],n[s]={...a,data:r},this.modifyArrayBy(n)}}modifyArrayBy(e){Object.setPrototypeOf(e,De.prototype);let r=e;return Pp()||r.fillCaches(),r}runOp(e){switch(e.type){case 4:return this.addOp(e);case 5:return this.deleteOp(e);case 6:return this.moveOp(e)}}addOp(e){let{fi:r,id:o,data:n}=e,s=this,a={fi:r,id:o,data:n};return s=[...s,a],s.sort((c,h)=>c.fi-h.fi),e.localIndex=s.indexOf(a),{data:this.modifyArrayBy(s),actual:e,reverse:{type:5,id:o}}}deleteOp(e){let{id:r}=e,o=this,n=o.findIndex(l=>l.id===r);if(n===-1)return null;e.localIndex=n,o=[...o];let s=o.splice(n,1)[0];return{data:this.modifyArrayBy(o),actual:e,reverse:{type:4,...s}}}moveOp(e){let{fi:r,id:o}=e,n=this;n=[...n];let s=n.findIndex(h=>h.id===o);if(s===-1)return null;let a=n[s].fi,l={...n[s],fi:r};return n[s]=l,n.sort((h,p)=>h.fi-p.fi),e.localIndex=n.indexOf(l),{data:this.modifyArrayBy(n),actual:e,reverse:{type:6,fi:a,id:o}}}previous(e){if(e===null)return this.length===0?null:this[this.length-1].id;let r=null;for(let o of this){if(o.id===e)return r;r=o.id}return null}insertBeforeHelper(e,r){return this.insertAfterHelper(this.previous(e),r)}insertAfterHelper(e,r){let o=this;if(e===null){if(o.length===0)return $t(0,r,r);{let n=o[0].fi;return $t(n-r,n,r)}}else{let n=this.get(e);if(n===void 0)throw new Error("illegal args");let s=o.find(a=>a.fi>n.fi);if(s===void 0){let a=o[o.length-1].fi;return $t(a,a+r,r)}else return $t(n.fi,s.fi,r)}}};var Op=Symbol(),ts=Symbol(),Ao=class{reportOp(t,e){let r=this;if(e===null)return;r._current=e.data;let o=[];for(;!(r instanceof es);){let n=r._path,s=r._current;if(n!==""&&o.splice(0,0,n),r=r._parent,r===null)return;r.update(n,s)}r.push(o,t,e.actual,e.reverse)}deleteChildren(t){if(this._children){let e=this._children[t];if(e){let r=e[ts];r&&r(),delete this._children[t]}}}},La=class extends Ao{constructor(t,e,r){super(),this._parent=t,this._path=e,this._current=r}update(t,e){if(Array.isArray(this._current)){if(typeof t=="string"&&(t=parseInt(t),isNaN(t)))throw new Error("Invalid path");this._current=[...this._current],this._current[t]=e}else this._current={...this._current,[t]:e}}runOp(t){this.reportOp(t,Zi.runOp(this._current,t))}},Ia=class extends Ao{constructor(t,e,r){super(),this._parent=t,this._path=e,this._current=r}update(t,e){this._current={...this._current,[t]:e},Object.setPrototypeOf(this._current,Tt.prototype)}runOp(t){this.reportOp(t,this._current.runOp(t))}},Dp={get(i,t){if(t===ts)return()=>{i._parent=null};if(t===Op)return i._current;let{_current:e,_children:r}=i;if(t==="push"&&Array.isArray(e))throw new Error("not supported to expand array");let o=r===void 0?void 0:r[t];if(o!==void 0)return o;let n=e[t],s=rs(i,t,n);return s!==n?(r===void 0&&(r={},i._children=r),r[t]=s,s):n},has(i,t){return t in i._current},ownKeys(i){return Reflect.ownKeys(i._current)},defineProperty(){throw Error("not supported")},getPrototypeOf(i){return Object.getPrototypeOf(i._current)},setPrototypeOf(){throw Error("not supported")},getOwnPropertyDescriptor(i,t){let e=i._current,r=Reflect.getOwnPropertyDescriptor(e,t);return r&&{writable:!0,configurable:!0,enumerable:r.enumerable,value:e[t]}}},Lv={...Dp,set(i,t,e){let r={type:0,props:{[t]:Aa(e)??e}};return i.deleteChildren(t),i.runOp(r),!0},deleteProperty(i,t){let e={type:0,props:{[t]:void 0}};return i.deleteChildren(t),i.runOp(e),!0}},Iv={...Dp,set(i,t,e){return e===void 0?this.deleteProperty(i,t):(i.deleteChildren(t),i.runOp({type:1,id:t,data:e})),!0},deleteProperty(i,t){return i.runOp({type:2,id:t}),!0}},Oo=class extends Ao{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[ts]=()=>{this._parent=null}}unproxy(){return this._current}update(t,e){this._current=this._current.modifyById(t,e)}runOp(t){this.reportOp(t,this._current.runOp(t))}randomId(){return this._current.randomId()}isDescendantOf(t,e){return this._current.isDescendantOf(t,e)}childrenOf(t){return this._current.childrenOf(t)}traverse(t){return this._current.traverse(t)}get(t){return this._current.get(t)}parent(t){return this._current.parent(t)}traverse(t){this._current.traverse((e,r)=>{t(e,this.data(e))})}data(t){let{_current:e,_children:r}=this,o=r===void 0?void 0:r[t];if(o!==void 0)return o;let n=e.get(t)?.data,s=rs(this,t,n);return s!==n?(r===void 0&&(r={},this._children=r),r[t]=s,s):n}add(t,e,r,o,n){this.runOp({type:7,parent:t,fi:e,id:r,data:o,children:n})}move(t,e,r){this.runOp({type:9,parent:t,fi:e,id:r})}insertAfter(t,e,r){let o=this._current.insertAfterHelper(t,e,r.length);for(let n=0;n<r.length;n++){let s=r[n];this.add(t,o[n],s.id,s.data,s.children)}}insertBefore(t,e,r){let o=this._current.insertBeforeHelper(t,e,r.length);for(let n=0;n<r.length;n++){let s=r[n];this.add(t,o[n],s.id,s.data,s.children)}}moveAfter(t,e,r){let o=this._current.insertAfterHelper(t,e,r.length);for(let n=0;n<r.length;n++){let s=r[n];this.move(t,o[n],s)}}moveBefore(t,e,r){let o=this._current.insertBeforeHelper(t,e,r.length);for(let n=0;n<r.length;n++){let s=r[n];this.move(t,o[n],s)}}delete(t){this.deleteChildren(t),this.runOp({type:8,id:t})}sortNext(t){return this._current.sortNext(t)}sortPrevious(t){return this._current.sortPrevious(t)}getAllSorted(t){return this._current.getAllSorted(t)}},Do=class extends Ao{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[ts]=()=>{this._parent=null}}unproxy(){return this._current}get length(){return this._current.length}forEach(t){let e=this.length;for(let r=0;r<e;r++){let o=this._current[r].id;t(this.data(this._current[r].id),o)}}update(t,e){this._current=this._current.modifyById(t,e)}randomId(){return this._current.randomId()}get(t){return{...this._current.get(t),data:this.data(t)}}data(t){let{_current:e,_children:r}=this,o=r===void 0?void 0:r[t];if(o!==void 0)return o;let n=e.get(t)?.data,s=rs(this,t,n);return s!==n?(r===void 0&&(r={},this._children=r),r[t]=s,s):n}runOp(t){this.reportOp(t,this._current.runOp(t))}add(t,e,r){this.runOp({type:4,fi:t,id:e,data:r})}move(t,e){this.runOp({type:6,fi:t,id:e})}insertAfter(t,e){let r=this._current.insertAfterHelper(t,e.length);for(let o=0;o<e.length;o++){let n=e[o];this.add(r[o],n.id,n.data)}}insertBefore(t,e){let r=this._current.insertBeforeHelper(t,e.length);for(let o=0;o<e.length;o++){let n=e[o];this.add(r[o],n.id,n.data)}}moveAfter(t,e){let r=this._current.insertAfterHelper(t,e.length);for(let o=0;o<e.length;o++){let n=e[o];this.move(r[o],n)}}moveBefore(t,e){let r=this._current.insertBeforeHelper(t,e.length);for(let o=0;o<e.length;o++){let n=e[o];this.move(r[o],n)}}delete(t){this.deleteChildren(t),this.runOp({type:5,id:t})}};function Ta(i,t,e){if(i.length>0){let r=i[i.length-1];if(r.type===0&&t.type===0&&os.equal(r.path,e)){Object.assign(r.props,t.props);return}}i.push({...t,path:e})}var es=class{constructor(t){this.ts=[],this.actual=[],this.reverse=[],this._current=t}update(t,e){if(t!=="")throw new Error("");this._current=e}push(t,e,r,o){Ta(this.ts,e,t),Ta(this.actual,r,t),Ta(this.reverse,o,t)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function rs(i,t,e){return e instanceof Lt?new Oo(i,t,e):e instanceof De?new Do(i,t,e):e instanceof Tt?new Proxy(new Ia(i,t,e),Iv):e!==null&&typeof e=="object"?Qi(e)?e:new Proxy(new La(i,t,e),Lv):e}function Pa(i){let t=new es(i);return[rs(t,"",i),t]}function Ma(i,t){let[e,r]=Pa(i);return t(e),r.result()}function Aa(i){return i instanceof Oo||i instanceof Do?i._current:i!==null&&typeof i=="object"?i[Op]:i}var os;(r=>{function i(o,n){if(n.length===o.length)for(var s=0;s<o.length;){if(o[s]!==n[s])return!1;s+=1}else return!1;return!0}r.equal=i;function t(o,n,s){let a=e(s,o);if(a!==void 0&&typeof a=="object"&&a!==null){let l={...n};return Object.keys(a).forEach(c=>{delete l[c]}),l}else return n}r.removeOverridden=t;function e(o,n,s=0){if(n.length<=s)return o;if((o instanceof Lt||o instanceof Oo)&&typeof n[s]=="string")return e(o.data(n[s]),n,s+1);if((o instanceof De||o instanceof Do)&&typeof n[s]=="string")return e(o.data(n[s]),n,s+1);if(typeof n[s]=="number"&&Array.isArray(o))return e(o[n[s]],n,s+1);if(typeof n[s]=="string"&&typeof o=="object")return e(o[n[s]],n,s+1)}r.zoom=e})(os||(os={}));var ns=class{},Pn=class extends ns{constructor(e){super();this.id=e}},Mn=class extends ns{constructor(e){super();this.data=e}};var Da;try{Da=new TextDecoder}catch{}var te,Br,N=0;var Fp=[],_a=Fp,Ba=0,pt={},be,_r,It=0,Xt=0,vt,fr,st=[],we,_p={useRecords:!1,mapsAsObjects:!0},An=class{},Ga=new An;Ga.name="MessagePack 0xC1";var _o=!1,Kt=class{constructor(t){t&&(t.useRecords===!1&&t.mapsAsObjects===void 0&&(t.mapsAsObjects=!0),t.structures?t.structures.sharedLength=t.structures.length:t.getStructures&&((t.structures=[]).uninitialized=!0,t.structures.sharedLength=0)),Object.assign(this,t)}unpack(t,e){if(te)return Wp(()=>(ss(),this?this.unpack(t,e):Kt.prototype.unpack.call(_p,t,e)));Br=e>-1?e:t.length,N=0,Ba=0,Xt=0,_r=null,_a=Fp,vt=null,te=t;try{we=t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))}catch(r){throw te=null,t instanceof Uint8Array?r:new Error("Source must be a Uint8Array or Buffer but was a "+(t&&typeof t=="object"?t.constructor.name:typeof t))}if(this instanceof Kt){if(pt=this,this.structures)return be=this.structures,is();(!be||be.length>0)&&(be=[])}else pt=_p,(!be||be.length>0)&&(be=[]);return is()}unpackMultiple(t,e){let r,o=0;try{_o=!0;let n=t.length,s=this?this.unpack(t,n):cs.unpack(t,n);if(e){for(e(s);N<n;)if(o=N,e(is())===!1)return}else{for(r=[s];N<n;)o=N,r.push(is());return r}}catch(n){throw n.lastPosition=o,n.values=r,n}finally{_o=!1,ss()}}_mergeStructures(t,e){t=t||[];for(let r=0,o=t.length;r<o;r++){let n=t[r];n&&(n.isShared=!0,r>=32&&(n.highByte=r-32>>5))}t.sharedLength=t.length;for(let r in e||[])if(r>=0){let o=t[r],n=e[r];n&&(o&&((t.restoreStructures||(t.restoreStructures=[]))[r]=o),t[r]=n)}return this.structures=t}decode(t,e){return this.unpack(t,e)}};function is(){try{if(!pt.trusted&&!_o){let t=be.sharedLength||0;t<be.length&&(be.length=t)}let i=Be();if(N==Br)be.restoreStructures&&Bp(),be=null,te=null,fr&&(fr=null);else if(N>Br){let t=new Error("Unexpected end of MessagePack data");throw t.incomplete=!0,t}else if(!_o)throw new Error("Data read, but end of buffer not reached");return i}catch(i){throw be.restoreStructures&&Bp(),ss(),(i instanceof RangeError||i.message.startsWith("Unexpected end of buffer"))&&(i.incomplete=!0),i}}function Bp(){for(let i in be.restoreStructures)be[i]=be.restoreStructures[i];be.restoreStructures=null}function Be(){let i=te[N++];if(i<160)if(i<128){if(i<64)return i;{let t=be[i&63]||pt.getStructures&&Up()[i&63];return t?(t.read||(t.read=Ra(t,i&63)),t.read()):i}}else if(i<144)if(i-=128,pt.mapsAsObjects){let t={};for(let e=0;e<i;e++)t[kp()]=Be();return t}else{let t=new Map;for(let e=0;e<i;e++)t.set(Be(),Be());return t}else{i-=144;let t=new Array(i);for(let e=0;e<i;e++)t[e]=Be();return t}else if(i<192){let t=i-160;if(Xt>=N)return _r.slice(N-It,(N+=t)-It);if(Xt==0&&Br<140){let e=t<16?za(t):jp(t);if(e!=null)return e}return Ea(t)}else{let t;switch(i){case 192:return null;case 193:return vt?(t=Be(),t>0?vt[1].slice(vt.position1,vt.position1+=t):vt[0].slice(vt.position0,vt.position0-=t)):Ga;case 194:return!1;case 195:return!0;case 196:return Oa(te[N++]);case 197:return t=we.getUint16(N),N+=2,Oa(t);case 198:return t=we.getUint32(N),N+=4,Oa(t);case 199:return Kr(te[N++]);case 200:return t=we.getUint16(N),N+=2,Kr(t);case 201:return t=we.getUint32(N),N+=4,Kr(t);case 202:if(t=we.getFloat32(N),pt.useFloat32>2){let e=ls[(te[N]&127)<<1|te[N+1]>>7];return N+=4,(e*t+(t>0?.5:-.5)>>0)/e}return N+=4,t;case 203:return t=we.getFloat64(N),N+=8,t;case 204:return te[N++];case 205:return t=we.getUint16(N),N+=2,t;case 206:return t=we.getUint32(N),N+=4,t;case 207:return pt.int64AsNumber?(t=we.getUint32(N)*4294967296,t+=we.getUint32(N+4)):t=we.getBigUint64(N),N+=8,t;case 208:return we.getInt8(N++);case 209:return t=we.getInt16(N),N+=2,t;case 210:return t=we.getInt32(N),N+=4,t;case 211:return pt.int64AsNumber?(t=we.getInt32(N)*4294967296,t+=we.getUint32(N+4)):t=we.getBigInt64(N),N+=8,t;case 212:if(t=te[N++],t==114)return Vp(te[N++]&63);{let e=st[t];if(e)return e.read?(N++,e.read(Be())):e.noBuffer?(N++,e()):e(te.subarray(N,++N));throw new Error("Unknown extension "+t)}case 213:return t=te[N],t==114?(N++,Vp(te[N++]&63,te[N++])):Kr(2);case 214:return Kr(4);case 215:return Kr(8);case 216:return Kr(16);case 217:return t=te[N++],Xt>=N?_r.slice(N-It,(N+=t)-It):Mv(t);case 218:return t=we.getUint16(N),N+=2,Xt>=N?_r.slice(N-It,(N+=t)-It):Av(t);case 219:return t=we.getUint32(N),N+=4,Xt>=N?_r.slice(N-It,(N+=t)-It):Ov(t);case 220:return t=we.getUint16(N),N+=2,Gp(t);case 221:return t=we.getUint32(N),N+=4,Gp(t);case 222:return t=we.getUint16(N),N+=2,Rp(t);case 223:return t=we.getUint32(N),N+=4,Rp(t);default:if(i>=224)return i-256;if(i===void 0){let e=new Error("Unexpected end of MessagePack data");throw e.incomplete=!0,e}throw new Error("Unknown MessagePack token "+i)}}}var Pv=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function Ra(i,t){function e(){if(e.count++>2){let o=i.read=new Function("r","return function(){return {"+i.map(n=>Pv.test(n)?n+":r()":"["+JSON.stringify(n)+"]:r()").join(",")+"}}")(Be);return i.highByte===0&&(i.read=Ep(t,i.read)),o()}let r={};for(let o=0,n=i.length;o<n;o++){let s=i[o];r[s]=Be()}return r}return e.count=0,i.highByte===0?Ep(t,e):e}var Ep=(i,t)=>function(){let e=te[N++];if(e===0)return t();let r=i<32?-(i+(e<<5)):i+(e<<5),o=be[r]||Up()[r];if(!o)throw new Error("Record id is not defined for "+r);return o.read||(o.read=Ra(o,i)),o.read()};function Up(){let i=Wp(()=>(te=null,pt.getStructures()));return be=pt._mergeStructures(i,be)}var Ea=as,Mv=as,Av=as,Ov=as;function as(i){let t;if(i<16&&(t=za(i)))return t;if(i>64&&Da)return Da.decode(te.subarray(N,N+=i));let e=N+i,r=[];for(t="";N<e;){let o=te[N++];if((o&128)===0)r.push(o);else if((o&224)===192){let n=te[N++]&63;r.push((o&31)<<6|n)}else if((o&240)===224){let n=te[N++]&63,s=te[N++]&63;r.push((o&31)<<12|n<<6|s)}else if((o&248)===240){let n=te[N++]&63,s=te[N++]&63,a=te[N++]&63,l=(o&7)<<18|n<<12|s<<6|a;l>65535&&(l-=65536,r.push(l>>>10&1023|55296),l=56320|l&1023),r.push(l)}else r.push(o);r.length>=4096&&(t+=We.apply(String,r),r.length=0)}return r.length>0&&(t+=We.apply(String,r)),t}function Gp(i){let t=new Array(i);for(let e=0;e<i;e++)t[e]=Be();return t}function Rp(i){if(pt.mapsAsObjects){let t={};for(let e=0;e<i;e++)t[kp()]=Be();return t}else{let t=new Map;for(let e=0;e<i;e++)t.set(Be(),Be());return t}}var We=String.fromCharCode;function jp(i){let t=N,e=new Array(i);for(let r=0;r<i;r++){let o=te[N++];if((o&128)>0){N=t;return}e[r]=o}return We.apply(String,e)}function za(i){if(i<4)if(i<2){if(i===0)return"";{let t=te[N++];if((t&128)>1){N-=1;return}return We(t)}}else{let t=te[N++],e=te[N++];if((t&128)>0||(e&128)>0){N-=2;return}if(i<3)return We(t,e);let r=te[N++];if((r&128)>0){N-=3;return}return We(t,e,r)}else{let t=te[N++],e=te[N++],r=te[N++],o=te[N++];if((t&128)>0||(e&128)>0||(r&128)>0||(o&128)>0){N-=4;return}if(i<6){if(i===4)return We(t,e,r,o);{let n=te[N++];if((n&128)>0){N-=5;return}return We(t,e,r,o,n)}}else if(i<8){let n=te[N++],s=te[N++];if((n&128)>0||(s&128)>0){N-=6;return}if(i<7)return We(t,e,r,o,n,s);let a=te[N++];if((a&128)>0){N-=7;return}return We(t,e,r,o,n,s,a)}else{let n=te[N++],s=te[N++],a=te[N++],l=te[N++];if((n&128)>0||(s&128)>0||(a&128)>0||(l&128)>0){N-=8;return}if(i<10){if(i===8)return We(t,e,r,o,n,s,a,l);{let c=te[N++];if((c&128)>0){N-=9;return}return We(t,e,r,o,n,s,a,l,c)}}else if(i<12){let c=te[N++],h=te[N++];if((c&128)>0||(h&128)>0){N-=10;return}if(i<11)return We(t,e,r,o,n,s,a,l,c,h);let p=te[N++];if((p&128)>0){N-=11;return}return We(t,e,r,o,n,s,a,l,c,h,p)}else{let c=te[N++],h=te[N++],p=te[N++],u=te[N++];if((c&128)>0||(h&128)>0||(p&128)>0||(u&128)>0){N-=12;return}if(i<14){if(i===12)return We(t,e,r,o,n,s,a,l,c,h,p,u);{let d=te[N++];if((d&128)>0){N-=13;return}return We(t,e,r,o,n,s,a,l,c,h,p,u,d)}}else{let d=te[N++],m=te[N++];if((d&128)>0||(m&128)>0){N-=14;return}if(i<15)return We(t,e,r,o,n,s,a,l,c,h,p,u,d,m);let g=te[N++];if((g&128)>0){N-=15;return}return We(t,e,r,o,n,s,a,l,c,h,p,u,d,m,g)}}}}}function Oa(i){return pt.copyBuffers?Uint8Array.prototype.slice.call(te,N,N+=i):te.subarray(N,N+=i)}function Kr(i){let t=te[N++];if(st[t])return st[t](te.subarray(N,N+=i));throw new Error("Unknown extension type "+t)}var zp=new Array(4096);function kp(){let i=te[N++];if(i>=160&&i<192){if(i=i-160,Xt>=N)return _r.slice(N-It,(N+=i)-It);if(!(Xt==0&&Br<180))return Ea(i)}else return N--,Be();let t=(i<<5^(i>1?we.getUint16(N):i>0?te[N]:0))&4095,e=zp[t],r=N,o=N+i-3,n,s=0;if(e&&e.bytes==i){for(;r<o;){if(n=we.getUint32(r),n!=e[s++]){r=1879048192;break}r+=4}for(o+=3;r<o;)if(n=te[r++],n!=e[s++]){r=1879048192;break}if(r===o)return N=r,e.string;o-=3,r=N}for(e=[],zp[t]=e,e.bytes=i;r<o;)n=we.getUint32(r),e.push(n),r+=4;for(o+=3;r<o;)n=te[r++],e.push(n);let a=i<16?za(i):jp(i);return a!=null?e.string=a:e.string=Ea(i)}var Vp=(i,t)=>{var e=Be();let r=i;t!==void 0&&(i=i<32?-((t<<5)+i):(t<<5)+i,e.highByte=t);let o=be[i];return o&&o.isShared&&((be.restoreStructures||(be.restoreStructures=[]))[i]=o),be[i]=e,e.read=Ra(e,r),e.read()},Hp=typeof self=="object"?self:global;st[0]=()=>{};st[0].noBuffer=!0;st[101]=()=>{let i=Be();return(Hp[i[0]]||Error)(i[1])};st[105]=i=>{let t=we.getUint32(N-4);fr||(fr=new Map);let e=te[N],r;e>=144&&e<160||e==220||e==221?r=[]:r={};let o={target:r};fr.set(t,o);let n=Be();return o.used?Object.assign(r,n):(o.target=n,n)};st[112]=i=>{let t=we.getUint32(N-4),e=fr.get(t);return e.used=!0,e.target};st[115]=()=>new Set(Be());var Va=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(i=>i+"Array");st[116]=i=>{let t=i[0],e=Va[t];if(!e)throw new Error("Could not find typed array for code "+t);return new Hp[e](Uint8Array.prototype.slice.call(i,1).buffer)};st[120]=()=>{let i=Be();return new RegExp(i[0],i[1])};st[98]=i=>{let t=(i[0]<<24)+(i[1]<<16)+(i[2]<<8)+i[3],e=N;N+=t-4,vt=[Be(),Be()],vt.position0=0,vt.position1=0;let r=N;N=e;try{return Be()}finally{N=r}};st[255]=i=>i.length==4?new Date((i[0]*16777216+(i[1]<<16)+(i[2]<<8)+i[3])*1e3):i.length==8?new Date(((i[0]<<22)+(i[1]<<14)+(i[2]<<6)+(i[3]>>2))/1e6+((i[3]&3)*4294967296+i[4]*16777216+(i[5]<<16)+(i[6]<<8)+i[7])*1e3):i.length==12?new Date(((i[0]<<24)+(i[1]<<16)+(i[2]<<8)+i[3])/1e6+((i[4]&128?-281474976710656:0)+i[6]*1099511627776+i[7]*4294967296+i[8]*16777216+(i[9]<<16)+(i[10]<<8)+i[11])*1e3):new Date("invalid");function Wp(i){let t=Br,e=N,r=Ba,o=It,n=Xt,s=_r,a=_a,l=fr,c=vt,h=new Uint8Array(te.slice(0,Br)),p=be,u=be.slice(0,be.length),d=pt,m=_o,g=i();return Br=t,N=e,Ba=r,It=o,Xt=n,_r=s,_a=a,fr=l,vt=c,te=h,_o=m,be=p,be.splice(0,be.length,...u),pt=d,we=new DataView(te.buffer,te.byteOffset,te.byteLength),g}function ss(){te=null,fr=null,be=null}function qp(i){i.unpack?st[i.type]=i.unpack:st[i.type]=i}var ls=new Array(147);for(let i=0;i<256;i++)ls[i]=+("1e"+Math.floor(45.15-i*.30103));var cs=new Kt({useRecords:!1}),Dv=cs.unpack,_v=cs.unpackMultiple,Bv=cs.unpack,hs={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},Ev=new Float32Array(1),fO=new Uint8Array(Ev.buffer,0,4);var ps;try{ps=new TextEncoder}catch{}var us,Ua,ds=typeof Buffer<"u",Fa=ds?Buffer.allocUnsafeSlow:Uint8Array,Yp=ds?Buffer:Uint8Array,$p=ds?4294967296:2144337920,R,Ge,T=0,Yt,Jt=null,Gv=/[\u0080-\uFFFF]/,On=Symbol("record-id"),Yr=class extends Kt{constructor(t){super(t),this.offset=0;let e,r,o,n,s,a,l=0,c=Yp.prototype.utf8Write?function(f,D,C){return R.utf8Write(f,D,C)}:ps&&ps.encodeInto?function(f,D){return ps.encodeInto(f,R.subarray(D)).written}:!1,h=this;t||(t={});let p=t&&t.sequential,u=t.structures||t.saveStructures,d=t.maxSharedStructures;if(d==null&&(d=u?32:0),d>8160)throw new Error("Maximum maxSharedStructure is 8160");let m=t.maxOwnStructures;m==null&&(m=u?32:64),p&&!t.saveStructures&&(this.structures=[]);let g=d>32||m+d>64,x=d+64,y=d+m+64;if(y>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let v=[],P=0,S=0;this.pack=this.encode=function(f,D){if(R||(R=new Fa(8192),Ge=new DataView(R.buffer,0,8192),T=0),Yt=R.length-10,Yt-T<2048?(R=new Fa(R.length),Ge=new DataView(R.buffer,0,R.length),Yt=R.length-10,T=0):T=T+7&2147483640,r=T,a=h.structuredClone?new Map:null,h.bundleStrings?(Jt=["",""],R[T++]=214,R[T++]=98,Jt.position=T-r,T+=4):Jt=null,o=h.structures,o){o.uninitialized&&(o=h._mergeStructures(h.getStructures()));let C=o.sharedLength||0;if(C>d)throw new Error("Shared structures is larger than maximum shared structures, try increasing maxSharedStructures to "+o.sharedLength);if(!o.transitions){o.transitions=Object.create(null);for(let I=0;I<C;I++){let L=o[I];if(!L)continue;let M,k=o.transitions;for(let W=0,oe=L.length;W<oe;W++){let he=L[W];M=k[he],M||(M=k[he]=Object.create(null)),k=M}k[On]=I+64}l=C}p||(o.nextId=C+64)}n&&(n=!1),s=o||[];try{if(b(f),Jt){Ge.setUint32(Jt.position+r,T-Jt.position-r);let C=Jt;Jt=null,b(C[0]),b(C[1])}if(h.offset=T,a&&a.idsToInsert){T+=a.idsToInsert.length*6,T>Yt&&w(T),h.offset=T;let C=zv(R.subarray(r,T),a.idsToInsert);return a=null,C}return D&Qp?(R.start=r,R.end=T,R):R.subarray(r,T)}finally{if(o){if(S<10&&S++,P>1e4)o.transitions=null,S=0,P=0,v.length>0&&(v=[]);else if(v.length>0&&!p){for(let C=0,I=v.length;C<I;C++)v[C][On]=0;v=[]}if(n&&h.saveStructures){let C=o.sharedLength||d;o.length>C&&(o=o.slice(0,C));let I=R.subarray(r,T);return h.saveStructures(o,l)===!1?(h._mergeStructures(h.getStructures()),h.pack(f)):(l=C,I)}}D&Wv&&(T=r)}};let b=f=>{T>Yt&&(R=w(T));var D=typeof f,C;if(D==="string"){let I=f.length;if(Jt&&I>=8&&I<4096){let k=Gv.test(f);Jt[k?0:1]+=f,R[T++]=193,b(k?-I:I);return}let L;I<32?L=1:I<256?L=2:I<65536?L=3:L=5;let M=I*3;if(T+M>Yt&&(R=w(T+M)),I<64||!c){let k,W,oe,he=T+L;for(k=0;k<I;k++)W=f.charCodeAt(k),W<128?R[he++]=W:W<2048?(R[he++]=W>>6|192,R[he++]=W&63|128):(W&64512)===55296&&((oe=f.charCodeAt(k+1))&64512)===56320?(W=65536+((W&1023)<<10)+(oe&1023),k++,R[he++]=W>>18|240,R[he++]=W>>12&63|128,R[he++]=W>>6&63|128,R[he++]=W&63|128):(R[he++]=W>>12|224,R[he++]=W>>6&63|128,R[he++]=W&63|128);C=he-T-L}else C=c(f,T+L,M);C<32?R[T++]=160|C:C<256?(L<2&&R.copyWithin(T+2,T+1,T+1+C),R[T++]=217,R[T++]=C):C<65536?(L<3&&R.copyWithin(T+3,T+2,T+2+C),R[T++]=218,R[T++]=C>>8,R[T++]=C&255):(L<5&&R.copyWithin(T+5,T+3,T+3+C),R[T++]=219,Ge.setUint32(T,C),T+=4),T+=C}else if(D==="number")if(f>>>0===f)f<64?R[T++]=f:f<256?(R[T++]=204,R[T++]=f):f<65536?(R[T++]=205,R[T++]=f>>8,R[T++]=f&255):(R[T++]=206,Ge.setUint32(T,f),T+=4);else if(f>>0===f)f>=-32?R[T++]=256+f:f>=-128?(R[T++]=208,R[T++]=f+256):f>=-32768?(R[T++]=209,Ge.setInt16(T,f),T+=2):(R[T++]=210,Ge.setInt32(T,f),T+=4);else{let I;if((I=this.useFloat32)>0&&f<4294967296&&f>=-2147483648){R[T++]=202,Ge.setFloat32(T,f);let L;if(I<4||(L=f*ls[(R[T]&127)<<1|R[T+1]>>7])>>0===L){T+=4;return}else T--}R[T++]=203,Ge.setFloat64(T,f),T+=8}else if(D==="object")if(!f)R[T++]=192;else{if(a){let L=a.get(f);if(L){if(!L.id){let M=a.idsToInsert||(a.idsToInsert=[]);L.id=M.push(L)}R[T++]=214,R[T++]=112,Ge.setUint32(T,L.id),T+=4;return}else a.set(f,{offset:T-r})}let I=f.constructor;if(I===Object)B(f,!0);else if(I===Array){C=f.length,C<16?R[T++]=144|C:C<65536?(R[T++]=220,R[T++]=C>>8,R[T++]=C&255):(R[T++]=221,Ge.setUint32(T,C),T+=4);for(let L=0;L<C;L++)b(f[L])}else if(I===Map){C=f.size,C<16?R[T++]=128|C:C<65536?(R[T++]=222,R[T++]=C>>8,R[T++]=C&255):(R[T++]=223,Ge.setUint32(T,C),T+=4);for(let[L,M]of f)b(L),b(M)}else{for(let L=0,M=us.length;L<M;L++){let k=Ua[L];if(f instanceof k){let W=us[L];if(W.write){W.type&&(R[T++]=212,R[T++]=W.type,R[T++]=0),b(W.write.call(this,f));return}let oe=R,he=Ge,ie=T;R=null;let Y;try{Y=W.pack.call(this,f,U=>(R=oe,oe=null,T+=U,T>Yt&&w(T),{target:R,targetView:Ge,position:T-U}),b)}finally{oe&&(R=oe,Ge=he,T=ie,Yt=R.length-10)}Y&&(Y.length+T>Yt&&w(Y.length+T),T=Rv(Y,R,T,W.type));return}}B(f,!f.hasOwnProperty)}}else if(D==="boolean")R[T++]=f?195:194;else if(D==="bigint"){if(f<BigInt(1)<<BigInt(63)&&f>=-(BigInt(1)<<BigInt(63)))R[T++]=211,Ge.setBigInt64(T,f);else if(f<BigInt(1)<<BigInt(64)&&f>0)R[T++]=207,Ge.setBigUint64(T,f);else if(this.largeBigIntToFloat)R[T++]=203,Ge.setFloat64(T,Number(f));else throw new RangeError(f+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");T+=8}else if(D==="undefined")this.encodeUndefinedAsNil?R[T++]=192:(R[T++]=212,R[T++]=0,R[T++]=0);else if(D==="function")b(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+D)},B=this.useRecords===!1?this.variableMapSize?f=>{let D=Object.keys(f),C=D.length;C<16?R[T++]=128|C:C<65536?(R[T++]=222,R[T++]=C>>8,R[T++]=C&255):(R[T++]=223,Ge.setUint32(T,C),T+=4);let I;for(let L=0;L<C;L++)b(I=D[L]),b(f[I])}:(f,D)=>{R[T++]=222;let C=T-r;T+=2;let I=0;for(let L in f)(D||f.hasOwnProperty(L))&&(b(L),b(f[L]),I++);R[C+++r]=I>>8,R[C+r]=I&255}:f=>{let D=Object.keys(f),C,I=s.transitions||(s.transitions=Object.create(null)),L=0;for(let k=0,W=D.length;k<W;k++){let oe=D[k];C=I[oe],C||(C=I[oe]=Object.create(null),L++),I=C}let M=I[On];if(M)M>=96&&g?(R[T++]=((M-=96)&31)+96,R[T++]=M>>5):R[T++]=M;else{M=s.nextId,M||(M=64),M<x&&this.shouldShareStructure&&!this.shouldShareStructure(D)?(M=s.nextOwnId,M<y||(M=x),s.nextOwnId=M+1):(M>=y&&(M=x),s.nextId=M+1);let k=D.highByte=M>=96&&g?M-96>>5:-1;I[On]=M,s[M-64]=D,M<x?(D.isShared=!0,s.sharedLength=M-63,n=!0,k>=0?(R[T++]=(M&31)+96,R[T++]=k):R[T++]=M):(k>=0?(R[T++]=213,R[T++]=114,R[T++]=(M&31)+96,R[T++]=k):(R[T++]=212,R[T++]=114,R[T++]=M),L&&(P+=S*L),v.length>=m&&(v.shift()[On]=0),v.push(I),b(D))}for(let k=0,W=D.length;k<W;k++)b(f[D[k]])},w=f=>{let D;if(f>16777216){if(f-r>$p)throw new Error("Packed buffer would be larger than maximum buffer size");D=Math.min($p,Math.round(Math.max((f-r)*(f>67108864?1.25:2),4194304)/4096)*4096)}else D=(Math.max(f-r<<2,R.length-1)>>12)+1<<12;let C=new Fa(D);return Ge=new DataView(C.buffer,0,D),R.copy?R.copy(C,0,r,f):C.set(R.slice(r,f)),T-=r,r=0,Yt=C.length-10,R=C}}useBuffer(t){R=t,Ge=new DataView(R.buffer,R.byteOffset,R.byteLength),T=0}};Ua=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,An];us=[{pack(i,t,e){let r=i.getTime()/1e3;if((this.useTimestamp32||i.getMilliseconds()===0)&&r>=0&&r<4294967296){let{target:o,targetView:n,position:s}=t(6);o[s++]=214,o[s++]=255,n.setUint32(s,r)}else if(r>0&&r<17179869184){let{target:o,targetView:n,position:s}=t(10);o[s++]=215,o[s++]=255,n.setUint32(s,i.getMilliseconds()*4e6+(r/1e3/4294967296>>0)),n.setUint32(s+4,r)}else if(isNaN(r)){if(this.onInvalidDate)return t(0),e(this.onInvalidDate());let{target:o,targetView:n,position:s}=t(3);o[s++]=212,o[s++]=255,o[s++]=255}else{let{target:o,targetView:n,position:s}=t(15);o[s++]=199,o[s++]=12,o[s++]=255,n.setUint32(s,i.getMilliseconds()*1e6),n.setBigInt64(s+4,BigInt(Math.floor(r)))}}},{pack(i,t,e){let r=Array.from(i),{target:o,position:n}=t(this.structuredClone?3:0);this.structuredClone&&(o[n++]=212,o[n++]=115,o[n++]=0),e(r)}},{pack(i,t,e){let{target:r,position:o}=t(this.structuredClone?3:0);this.structuredClone&&(r[o++]=212,r[o++]=101,r[o++]=0),e([i.name,i.message])}},{pack(i,t,e){let{target:r,position:o}=t(this.structuredClone?3:0);this.structuredClone&&(r[o++]=212,r[o++]=120,r[o++]=0),e([i.source,i.flags])}},{pack(i,t){this.structuredClone?Xp(i,16,t):Kp(ds?Buffer.from(i):new Uint8Array(i),t)}},{pack(i,t){let e=i.constructor;e!==Yp&&this.structuredClone?Xp(i,Va.indexOf(e.name),t):Kp(i,t)}},{pack(i,t){let{target:e,position:r}=t(1);e[r]=193}}];function Xp(i,t,e,r){let o=i.byteLength;if(o+1<256){var{target:n,position:s}=e(4+o);n[s++]=199,n[s++]=o+1}else if(o+1<65536){var{target:n,position:s}=e(5+o);n[s++]=200,n[s++]=o+1>>8,n[s++]=o+1&255}else{var{target:n,position:s,targetView:a}=e(7+o);n[s++]=201,a.setUint32(s,o+1),s+=4}n[s++]=116,n[s++]=t,n.set(new Uint8Array(i.buffer,i.byteOffset,i.byteLength),s)}function Kp(i,t){let e=i.byteLength;var r,o;if(e<256){var{target:r,position:o}=t(e+2);r[o++]=196,r[o++]=e}else if(e<65536){var{target:r,position:o}=t(e+3);r[o++]=197,r[o++]=e>>8,r[o++]=e&255}else{var{target:r,position:o,targetView:n}=t(e+5);r[o++]=198,n.setUint32(o,e),o+=4}r.set(i,o)}function Rv(i,t,e,r){let o=i.length;switch(o){case 1:t[e++]=212;break;case 2:t[e++]=213;break;case 4:t[e++]=214;break;case 8:t[e++]=215;break;case 16:t[e++]=216;break;default:o<256?(t[e++]=199,t[e++]=o):o<65536?(t[e++]=200,t[e++]=o>>8,t[e++]=o&255):(t[e++]=201,t[e++]=o>>24,t[e++]=o>>16&255,t[e++]=o>>8&255,t[e++]=o&255)}return t[e++]=r,t.set(i,e),e+=o,e}function zv(i,t){let e,r=t.length*6,o=i.length-r;for(t.sort((n,s)=>n.offset>s.offset?1:-1);e=t.pop();){let n=e.offset,s=e.id;i.copyWithin(n+r,n,o),r-=6;let a=n+r;i[a++]=214,i[a++]=105,i[a++]=s>>24,i[a++]=s>>16&255,i[a++]=s>>8&255,i[a++]=s&255,o=n}return i}function Jr(i){if(i.Class){if(!i.pack&&!i.write)throw new Error("Extension has no pack or write function");if(i.pack&&!i.type)throw new Error("Extension has no type (numeric code to identify the extension)");Ua.unshift(i.Class),us.unshift(i)}qp(i)}var Jp=new Yr({useRecords:!1}),Vv=Jp.pack,Fv=Jp.pack;var{NEVER:Uv,ALWAYS:jv,DECIMAL_ROUND:kv,DECIMAL_FIT:Hv}=hs,Qp=512,Wv=1024;var Zp=new Yr({structuredClone:!0});Jr({Class:Tt.prototype.constructor,type:1,write(i){return{...i}},read(i){return Object.setPrototypeOf(i,Tt.prototype),i}});Jr({Class:De.prototype.constructor,type:2,write(i){return[...i]},read(i){return Object.setPrototypeOf(i,De.prototype),i}});Jr({Class:Lt.prototype.constructor,type:3,write(i){return[...i]},read(i){return Object.setPrototypeOf(i,Lt.prototype),i}});Jr({Class:Pn.prototype.constructor,type:4,write(i){return i.id},read(i){return new Pn(i)}});Jr({Class:Mn.prototype.constructor,type:5,write(i){return i.data},read(i){return new Mn(i)}});function qv(i){var t=0;if(i.length===0)return t;for(let e=0;e<i.length;e++){let r=i[e];t=(t<<5)-t+r,t=t&t}return t}function ja(i){if(Qi(i))return i;if(Array.isArray(i))return i.map(ja);if(typeof i=="object"&&i!==null){let t={};for(let e of Object.keys(i).sort())t[e]=ja(i[e]);return Object.setPrototypeOf(t,Object.getPrototypeOf(i)),t}else return i}var ms;(r=>{function i(o){return Zp.pack(o)}r.serialize=i;function t(o){return Zp.unpack(o)}r.deserialize=t;function e(o){return qv(i(ja(o))).toString()}r.checksum=e})(ms||(ms={}));var fs;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function t(r){return e.all.includes(r)}e.is=t})(fs||(fs={}));var gs;(e=>{function i(r){return t(r)}e.defaultData=i;function t(r){if(r==="PointLight")return{type:r,color:xt.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,depth:1e5,helper:!0};if(r==="SpotLight")return{type:r,color:xt.white,intensity:1,distance:2e3,decay:1,shadows:!0,penumbra:0,angle:30/180*Math.PI,depth:1e5,helper:!0,shadowResolution:1024,shadowRadius:1};if(r==="DirectionalLight")return{type:r,color:xt.white,intensity:1,shadows:!0,size:1e3,depth:1e5,shadowResolution:1024,helper:!0,shadowRadius:1};throw new Error("not implemented")}})(gs||(gs={}));var ka;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function t(r,o){return r.castShadow===o.castShadow&&r.receiveShadow===o.receiveShadow}e.equals=t})(ka||(ka={}));var Ha;(e=>{e.defaultData={flatShading:!1,wireframe:!1,side:0};function t(r,o){return r.flatShading===o.flatShading&&r.side===o.side&&r.wireframe===o.wireframe}e.equals=t})(Ha||(Ha={}));var ys;(t=>t.defaultData={...Ha.defaultData,...ka.defaultData,cloner:null,booleanExclude:null})(ys||(ys={}));var Wa=(o=>(o[o.Left=1]="Left",o[o.Right=2]="Right",o[o.Center=3]="Center",o[o.Justify=4]="Justify",o))(Wa||{}),qa=(r=>(r[r.Top=1]="Top",r[r.Center=2]="Center",r[r.Bottom=3]="Bottom",r))(qa||{}),$a=(r=>(r[r.None=1]="None",r[r.Upper=2]="Upper",r[r.Lower=3]="Lower",r))($a||{}),xs;(t=>t.defaultData={width:100,height:100,horizontalAlign:1,verticalAlign:1,fontSize:16,lineHeight:1.5,letterSpacing:1,text:"",textTransform:1,color:xt.fromHexAndA(6974058,1),alpha:1,font:"roboto_regular"})(xs||(xs={}));var Bo;(r=>{function i(o,n){return o==="light"&&n?t(n):e(o)}r.defaultData=i;function t(o){switch(o){case"basic":return{type:"light",category:"basic",alpha:1,visible:!0,mode:0};case"phong":return{category:"phong",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1,visible:!0,mode:0};case"toon":return{category:"toon",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1,visible:!0,mode:0};case"lambert":return{category:"lambert",emissive:{r:0,g:0,b:0,a:1},type:"light",alpha:1,visible:!0,mode:0};case"physical":return{category:"physical",roughness:.2,metalness:.2,reflectivity:.2,type:"light",alpha:1,visible:!0,mode:0}}}function e(o){switch(o){case"texture":return{alpha:1,visible:!0,size:[128,128],mode:0,axis:"x",side:2,type:"texture",projection:0,texture:{image:"image_0",wrapping:1001,repeat:[1,1],offset:[0,0]},crop:!0};case"color":return{type:"color",alpha:1,visible:!0,mode:0,color:yt.fromHex(4737101)};case"depth":return{type:"depth",alpha:1,visible:!0,mode:0,gradientType:1,smooth:!1,isVector:!0,isWorldSpace:!1,origin:[0,0,0],direction:[1,0,0],colors:[[1,1,1,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1]],steps:[0,1,1,1,1,1,1,1,1,1,1],num:2,near:50,far:200};case"normal":return{type:"normal",alpha:1,visible:!0,mode:0,cnormal:[1,1,1]};case"gradient":return{type:"gradient",alpha:1,visible:!0,mode:0,gradientType:0,smooth:!1,colors:[[0,0,0,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,1,1,1,1,1,1,1,1,1],num:2,angle:0,offset:[0,0],morph:[0,0]};case"noise":return{type:"noise",alpha:1,visible:!0,mode:0,size:[100,100,100],noiseType:0,scale:1,move:1,colorA:{...yt.fromHex(6710886),a:1},colorB:{...yt.fromHex(6710886),a:1},colorC:{...yt.fromHex(16777215),a:1},colorD:{...yt.fromHex(16777215),a:1},distortion:[1,1],fA:[1.7,9.2],fB:[8.3,2.8]};case"fresnel":return{type:"fresnel",alpha:1,visible:!0,mode:0,color:xt.fromHexAndA(16777215,1),bias:.1,scale:1,intensity:2,factor:1};case"rainbow":return{type:"rainbow",alpha:1,visible:!0,mode:0,filmThickness:30,movement:0,wavelengths:[0,0,0],noiseStrength:0,noiseScale:1,offset:[0,0,0]};case"toon":return{type:"toon",alpha:1,visible:!0,mode:0,positioning:2,colors:[[0,0,0,1],[.5,.5,.5,1],[.5,.5,.5,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,.475,.525,1,1,1,1,1,1,1],num:4,source:[0,1e3,0],isWorldSpace:!0,noiseStrength:0,noiseScale:1,shadowColor:xt.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{type:"outline",alpha:1,visible:!0,mode:0,outlineColor:xt.fromHexAndA(0,1),contourColor:xt.fromHexAndA(0,1),outlineWidth:2,contourWidth:5,outlineThreshold:.4,contourThreshold:0,outlineSmoothing:0,contourFrequency:10,contourDirection:[0,1,0],positionalLines:!1,compensation:!0};case"matcap":return{type:"matcap",alpha:1,visible:!0,mode:0,texture:{image:"matcap_0",wrapping:1001,repeat:[1,1],offset:[0,0]}};case"transmission":return{type:"transmission",alpha:1,visible:!0,mode:0,thickness:10,ior:1.5,roughness:1};case"displace":return{type:"displace",displacementType:"noise",noiseType:0,scale:10,movement:1,offset:[0,0,0],intensity:8,visible:!0}}}})(Bo||(Bo={}));var Qr;(a=>{function i(l){return!l.layers.some(h=>{if(h.data.type==="texture"&&h.data.projection!==0||h.data.type==="depth"&&!h.data.isWorldSpace||h.data.type==="noise"||h.data.type==="displace")return!0})&&!e(l)}a.isMergable=i;function t(l){let c="";return l.layers.forEach(h=>{Object.entries(h.data).forEach(([p,u])=>{c+=`${p}${u}`,Array.isArray(u)?u.forEach(d=>c+=`${d}`):typeof u=="object"?Object.values(u).forEach(d=>{typeof d=="number"?c+=`${d.toFixed(4)}`:c+=`${d}`}):c+=`${u}`})}),c}a.getHash=t;function e(l){let c=0;for(let h of l.layers)"alpha"in h.data&&h.data.type!=="light"&&h.data.type!=="fresnel"&&(c+=(1-c)*h.data.alpha);return c<1}a.isTransparent=e;function r(){return{layers:new De}}a.defaultEmptyData=r;function o(l="layer1",c="layer2"){return n("phong",l,c)}a.defaultData=o;function n(l,c="layer1",h="layer2"){let p=new De;return p.push({fi:0,data:Bo.defaultData("light",l),id:c}),p.push({fi:1,data:Bo.defaultData("color"),id:h}),{layers:p}}a.defaultTwoLayerData=n;function s(l,c="basic",h="layer1",p="layer2"){let u=Bo.defaultData("texture");Object.assign(u.texture,{image:l});let d=new De;return d.push({fi:0,data:u,id:h}),d.push({fi:1,data:Bo.defaultData("light",c),id:p}),{layers:d}}a.defaultTwoLayerTextureData=s})(Qr||(Qr={}));var Eo;(t=>{function i(){return{points:new De,roundness:0,shapeHoles:[],isClosed:!1}}t.defaultData=i})(Eo||(Eo={}));var vs;(t=>{function i(e){return e==="PolygonGeometry"||e==="RectangleGeometry"||e==="StarGeometry"||e==="TriangleGeometry"||e==="EllipseGeometry"}t.is2DParametricMesh=i})(vs||(vs={}));var Dn;(t=>{function i(e){if(e==="RectangleGeometry")return{width:320,height:320,type:e,cornerRadius:[0,0,0,0],cornerType:0,depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="VectorGeometry")return{width:1,height:1,type:e,subdivisions:12,shape:Eo.defaultData(),depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="BooleanGeometry")return{type:e,operation:2,width:0,height:0,depth:0,phongAngle:35};throw new Error("not implemented")}t.defaultData=i})(Dn||(Dn={}));var _n;(o=>{o.identity={...Ki.identity,hiddenMatrix:Dr.identity};function t(n){return{position:n.position,rotation:n.rotation,scale:n.scale,hiddenMatrix:n.hiddenMatrix}}o.fromObject=t;function e(n,s){return{position:s?.position||n.position,rotation:s?.rotation||n.rotation,scale:s?.scale||n.scale,hiddenMatrix:s?.hiddenMatrix||n.hiddenMatrix}}o.merge=e;function r(n,s){return{position:Mo.isEqual(n.position,s.position)?null:s.position,rotation:Mo.isEqual(n.rotation,s.rotation)?null:s.rotation,scale:Mo.isEqual(n.scale,s.scale)?null:s.scale,hiddenMatrix:Dr.isEqual(n.hiddenMatrix,s.hiddenMatrix)?null:s.hiddenMatrix}}o.diff=r})(_n||(_n={}));var gr;(t=>t.defaultData={states:new De,events:new De,visible:!0,raycastLock:!1,..._n.identity})(gr||(gr={}));var eu;(t=>t.defaultData={type:"Empty",...gr.defaultData})(eu||(eu={}));var bs;(t=>t.defaultData={type:"Mesh",...gr.defaultData,...ys.defaultData})(bs||(bs={}));var tu;(t=>t.defaultData={type:"TextFrame",...gr.defaultData,...xs.defaultData})(tu||(tu={}));var Ss;(t=>t.defaultData={...gr.defaultData,..._n.identity,...Xr.defaultData})(Ss||(Ss={}));var ru;(t=>{function i(e){return{...gr.defaultData,...gs.defaultData(e)}}t.defaultData=i})(ru||(ru={}));var ou;(r=>(r.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:Dr.identity,name:"Play Camera",visible:!0,raycastLock:!1,states:new De,events:new De,...Xr.defaultData},r.defaultMeshObject={name:"Rectangle",...gr.defaultData,...bs.defaultData,geometry:Dn.defaultData("RectangleGeometry"),material:Qr.defaultTwoLayerData("basic","layer1","layer2")},r.defaultBooleanObject={name:"Boolean",...gr.defaultData,...bs.defaultData,geometry:Dn.defaultData("BooleanGeometry"),material:Qr.defaultTwoLayerData("phong","layer1","layer2")}))(ou||(ou={}));var nu;(e=>{function i(r,o){if(o===void 0)return r;let n={...r};return"material"in n&&"material"in o&&o.material&&(n.material=Ma(n.material,s=>{if(typeof s!="string")for(let[a,l]of Object.entries(o.material.layers)){let c=s.layers.data(a);c&&$r(c,l)}}).data),n.materials&&o.materials&&(n.materials=Ma(n.materials,s=>{for(let a=0;a<n.materials.length;a++){let l=o.materials[a];if(typeof l!="string")for(let[c,h]of Object.entries(l.layers)){let p=s[a]?.layers?.data(c);p&&$r(p,h)}}}).data),n}e.patchMaterialState=i;function t(r,o){if(o===void 0)return r;let n={...r};if(Object.assign(n,_n.merge(n,o)),Po.is(r.type)){n.orthographic={...n.orthographic},n.perspective={...n.perspective};let s=o;s.orthographic?.zoom!==void 0&&(n.orthographic.zoom=s.orthographic.zoom),s.perspective?.zoom!==void 0&&(n.perspective.zoom=s.perspective.zoom),s.isUpVectorFlipped!==void 0&&(n.isUpVectorFlipped=s.isUpVectorFlipped),s.targetOffset!==void 0&&(n.targetOffset=s.targetOffset)}else if(r.type==="Mesh")n.geometry={...n.geometry},Object.assign(n.geometry,o.geometry),n=i(n,o);else if(fs.is(r.type)){let s=o;n.intensity!==void 0&&(n.intensity=s.intensity),s.color!==void 0&&(typeof s.color=="string"?n.color=s.color:n.color=yt.clone(s.color))}return n}e.patch=t})(nu||(nu={}));import{ConeBufferGeometry as Kv}from"three";import{BufferGeometry as $v,CylinderBufferGeometry as Xv,Float32BufferAttribute as Xa,Vector2 as Et,Vector3 as ws}from"three";var su=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:64,heightSegments:1,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadius:0,cornerSegments:8,hollow:0},i.parameters),r=e.width/2,o=e.radiusTop??r,n=e.radiusBottom??r;return o===n?(o=r,n=r):o>n?(o=r,n=n*r/o):(o=o*r/n,n=r),{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width),radiusTop:o,radiusBottom:n})}}static build(i){let{width:t,depth:e,height:r,radialSegments:o,heightSegments:n,openEnded:s,thetaStart:a,thetaLength:l,radiusTop:c,radiusBottom:h,cornerRadius:p,cornerSegments:u,hollow:d}=i.parameters,m;return p||d?m=new Bn(c,h,r,o,n,s,a,l*Math.PI/180,p,p,u,d):m=new Xv(c,h,r,o,n,s,a,l*Math.PI/180),m.scale(1,1,e/t),Object.assign(m,{userData:{...i,type:"CylinderGeometry"}})}};function Er(i,t,e){e.x=i.x*t.x,e.y=i.y,e.z=i.x*t.y}function iu(i){return new Et(i.y,-i.x)}var Bn=class extends $v{constructor(t,e,r,o,n,s,a,l,c,h,p,u,d=!1){super(),this.type="RoundedCylinderBufferGeometry",t=t!==void 0?t:1,e=e!==void 0?e:1,r=r||1,o=Math.floor(o)||8,n=Math.floor(n)||1,s=s!==void 0?s:!1,a=a!==void 0?a:0,l=l!==void 0?l:Math.PI*2,s&&(c=0,h=0);let m=[],g=[],x=[],y=[],v=0,P=r/2,S=new ws,b=new ws;d&&t==0&&(t=c),d&&e==0&&(e=h);let B=new Et(t,P),w=new Et(e,-P),f=null,D=null,C=null,I=null,L=B.clone().sub(w),M=0,k=0,W=0;u>0&&(M=Math.min(t,e)*(1-u),k=t-M,W=e-M);let oe=B.clone();oe.x-=M;let he=Math.PI-L.angle(),ie=L.angle(),Y=Math.tan(ie/2),U=Math.tan(he/2),z=Y+U,E=u?z:U,_=u?z:Y;if(c=Math.min(c,(t-k)/E,L.length()/z),h=Math.min(h,(e-W)/_,L.length()/z),c>0){let F=c/Y;f=B.clone().sub(new Et(F,c)),u&&(C=f.clone(),C.x-=M-z*c),B.sub(L.clone().setLength(F))}if(h>0){let F=h/U;D=w.clone().sub(new Et(F,-h)),w.add(L.clone().setLength(F)),u&&(I=D.clone(),I.x-=M-z*h,oe.sub(L.clone().setLength(F)))}L=B.clone().sub(w);let A=L.length()<.5,G=[];for(let F=0;F<=o;F++){let O=[],q=F/o,Z=q*l+a,ee=new Et(Math.sin(Z),Math.cos(Z));I&&D?(J(O,q,ee,he,h,I,-1,!0),J(O,q,ee,ie,h,D,-1,!1)):D?(j(O,ee,D.x,0,-1),J(O,q,ee,ie,h,D,-1,!1)):s||j(O,ee,e,W,-1);let H=iu(L).normalize();if(Er(H,ee,S),!A)for(let Q=0;Q<=n;Q++){let $=Q/n,re=L.clone().multiplyScalar($).add(w);Er(re,ee,b),g.push(b.x,b.y,b.z),x.push(S.x,S.y,S.z),y.push(q,.5+b.y/r),O.push(v++)}if(C&&f?(J(O,q,ee,he,c,f,1,!1),J(O,q,ee,ie,c,C,1,!0)):f?(J(O,q,ee,he,c,f,1,!1),j(O,ee,f.x,0,1)):s||j(O,ee,t,k,1),u&&!A){let Q=iu(L).multiplyScalar(-1).normalize();Er(Q,ee,S);for(let $=0;$<=n;$++){let re=$/n,le=L.clone().multiplyScalar(-re).add(oe);Er(le,ee,b),g.push(b.x,b.y,b.z),x.push(S.x,S.y,S.z),y.push(q,.5+b.y/r),O.push(v++)}}u&&!s&&O.push(O[0]),G.push(O)}for(let F=0;F<G.length-1;F++)for(let O=0;O<G[0].length-1;O++){if(s&&u&&O==n)continue;let q=G[F][O],Z=G[F+1][O],ee=G[F+1][O+1],H=G[F][O+1],Q=g[ee*3+0],$=g[ee*3+2];m.push(q,Z,H),(Q!=0||$!=0)&&m.push(Z,ee,H)}l<Math.PI*2&&(V(-1,G[0],a),V(1,G[G.length-1],a+l)),this.setIndex(m),this.setAttribute("position",new Xa(g,3)),this.setAttribute("normal",new Xa(x,3)),this.setAttribute("uv",new Xa(y,2));function J(F,O,q,Z,ee,H,Q,$){for(let re=0;re<p+1;re++){let le=re/p,ne=Q<0?le:1-le;$&&(ne-=1),ne*=Z;let me=new Et(Math.sin(ne),Math.cos(ne)*Q),_e=me.clone().multiplyScalar(ee).add(H);Er(_e,q,b),g.push(b.x,b.y,b.z),Er(me,q,S),x.push(S.x,S.y,S.z),y.push(O,.5+b.y/r),F.push(v++)}}function j(F,O,q,Z,ee){let H=new ws,Q=new Et,$=[q,Z];ee<0&&$.reverse();for(let re of $)Q.set(re,P*ee),Er(Q,O,H),g.push(H.x,H.y,H.z),x.push(0,ee,0),y.push(.5,.5),F.push(v++)}function V(F,O,q){let Z=new Et(Math.sin(q),Math.cos(q)),ee=new Et(-Math.cos(q),Math.sin(q)),H=new ws,Q=F<0?(le,ne,me)=>m.push(le,ne,me):(le,ne,me)=>m.push(le,me,ne),$=new Et((t+e+k+W)/4,0);Er($,Z,H),g.push(H.x,H.y,H.z),x.push(ee.x,0,ee.y),y.push(.5,.5);let re=v++;for(let le of O){let ne=g.slice(le*3,le*3+3);g.push(...ne),x.push(ee.x,0,ee.y);let me=y.slice(le*2,le*2+2);y.push(...me),v++}for(let le=re+1;le<v-1;le++)Q(re,le,le+1);Q(re,v-1,re+1)}}};var au=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:32,heightSegments:8,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadiusTop:0,cornerRadiusBottom:0,cornerSegments:8},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t,depth:e,height:r,radialSegments:o,heightSegments:n,openEnded:s,thetaStart:a,thetaLength:l,cornerRadiusTop:c,cornerRadiusBottom:h,cornerSegments:p}=i.parameters,u;return c>0||h>0||l<360?u=new Bn(0,t/2,r,o,n,s,a,l*Math.PI/180,c,h,p,0,!0):u=new Kv(t/2,r,o,n,s),u.scale(1,1,e/t),Object.assign(u,{userData:{...i,type:"ConeGeometry"}})}};import{BoxBufferGeometry as Yv,BufferGeometry as Jv,Float32BufferAttribute as Ka,Vector3 as En}from"three";var lu=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,widthSegments:1,heightSegments:1,depthSegments:1,cornerRadius:0,cornerSegments:8},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t,height:e,depth:r,widthSegments:o,heightSegments:n,depthSegments:s,cornerRadius:a,cornerSegments:l}=i.parameters,c;return a==0?c=new Yv(t,e,r,o,n,s):c=new Ja(t,e,r,o,n,s,a,l),Object.assign(c,{userData:{...i,type:"CubeGeometry"}})}},Ya=Math.PI/2,Ja=class extends Jv{constructor(t=1,e=1,r=1,o=1,n=1,s=1,a=0,l=4){super(),this.type="BoxBufferGeometry";let c=this;o=Math.floor(o),n=Math.floor(n),s=Math.floor(s),l=Math.floor(l),a=Math.min(a,t/2,e/2,r/2);let h=[],p=[],u=[],d=[],m=0,g=0;x("z","y","x",-1,-1,r,e,t,s,n,0),x("z","y","x",1,-1,r,e,-t,s,n,1),x("x","z","y",1,1,t,r,e,o,s,2),x("x","z","y",1,-1,t,r,-e,o,s,3),x("x","y","z",1,-1,t,e,r,o,n,4),x("x","y","z",-1,-1,t,e,-r,o,n,5),a>0&&(y("z","y","x",-1,-1,1,r,e,t,s,0),y("z","y","x",1,-1,-1,r,e,t,s,1),y("z","y","x",-1,1,-1,r,e,t,s,1),y("z","y","x",1,1,1,r,e,t,s,0),y("x","y","z",-1,-1,-1,t,e,r,o,0),y("x","y","z",1,-1,1,t,e,r,o,1),y("x","y","z",-1,1,1,t,e,r,o,0),y("x","y","z",1,1,-1,t,e,r,o,1),y("y","x","z",-1,-1,1,e,t,r,n,0),y("y","x","z",1,-1,-1,e,t,r,n,1),y("y","x","z",1,1,1,e,t,r,n,1),y("y","x","z",-1,1,-1,e,t,r,n,0),v(1,1,1),v(-1,1,1),v(1,-1,1),v(-1,-1,1),v(1,1,-1),v(-1,1,-1),v(1,-1,-1),v(-1,-1,-1)),this.setIndex(h),this.setAttribute("position",new Ka(p,3)),this.setAttribute("normal",new Ka(u,3)),this.setAttribute("uv",new Ka(d,2));function x(P,S,b,B,w,f,D,C,I,L,M){let k=(f-2*a)/I,W=(D-2*a)/L,oe=f/2-a,he=D/2-a,ie=C/2,Y=I+1,U=L+1,z=0,E=0,_=new En;for(let A=0;A<U;A++){let G=A*W-he;for(let J=0;J<Y;J++){let j=J*k-oe;_[P]=j*B,_[S]=G*w,_[b]=ie,p.push(_.x,_.y,_.z),_[P]=0,_[S]=0,_[b]=C>0?1:-1,u.push(_.x,_.y,_.z),d.push(J/I),d.push(1-A/L),z+=1}}for(let A=0;A<L;A++)for(let G=0;G<I;G++){let J=m+G+Y*A,j=m+G+Y*(A+1),V=m+(G+1)+Y*(A+1),F=m+(G+1)+Y*A;h.push(J,j,F),h.push(j,V,F),E+=6}c.addGroup(g,E,M),g+=E,m+=z}function y(P,S,b,B,w,f,D,C,I,L,M){let k=(D-2*a)/L,W=D/2-a,oe=C/2-a,he=I/2,ie=L+1,Y=0,U=0,z=new En,E=new En;for(let _=0;_<l+1;_++){let A=_/l*Ya,G=Math.sin(A)*a,J=(1-Math.cos(A))*a,j=Math.sin(A),V=Math.cos(A);z[S]=(oe+G)*w,z[b]=(he-J)*f,E[P]=0,E[S]=j*Math.sign(z[S]),E[b]=V*Math.sign(z[b]);for(let F=0;F<ie;F++){let O=F*k-W;z[P]=O*B,p.push(z.x,z.y,z.z),u.push(E.x,E.y,E.z),d.push(F/L),d.push(0),Y+=1}}for(let _=0;_<l;_++)for(let A=0;A<L;A++){let G=m+A+ie*_,J=m+A+ie*(_+1),j=m+(A+1)+ie*(_+1),V=m+(A+1)+ie*_;h.push(G,J,V),h.push(J,j,V),U+=6}c.addGroup(g,U,M),g+=U,m+=Y}function v(P,S,b){let B=new En,w=new En(t/2,e/2,r/2);w.subScalar(a);let f=[],D=P*S*b>0?(I,L,M)=>h.push(I,L,M):(I,L,M)=>h.push(I,M,L);for(let I=0;I<=l;I++){let L=[],M=Ya*(1-I/l),k=Math.cos(M),W=Math.sin(M),oe=0;for(let he=0;he<=I;he++){let ie=Math.cos(oe),Y=Math.sin(oe);B.x=k*ie,B.y=W,B.z=k*Y;let U=w.clone().addScaledVector(B,a);p.push(P*U.x,S*U.y,b*U.z),u.push(P*B.x,S*B.y,b*B.z),d.push(0,0),L.push(m++),oe+=Ya/I}f.push(L)}let C=f.length-1;for(let I=0;I<C;I++){let L=f[I],M=f[I+1],k=L.length-1;D(L[0],M[1],M[0]);for(let W=1;W<=k;W++)D(L[W-1],L[W],M[W]),D(L[W],M[W+1],M[W])}}}};import{BufferGeometry as Qv,Float32BufferAttribute as Qa,Triangle as Zv,Vector3 as yr,Vector2 as Za}from"three";var Gr=class extends Qv{constructor(t=[],e=[],r="",o=1,n=.2,s=4){super(),this.type="PolyhedronGeometryRound";let a=[],l=[],c=[];h(),p(),this.setAttribute("position",new Qa(a,3)),this.setAttribute("normal",new Qa(c,3)),this.setAttribute("uv",new Qa(l,2));return;function h(){n=Math.min(1-1e-5,n),n==0&&(s=0);let d={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[r],m=new yr,g=m.clone(),x=new Zv,y=n*o,v=o-y,P=s+1,S=new yr,b=(Y,U)=>S.subVectors(Y,U).normalize(),B=(Y,U)=>Array(Y).fill(void 0).map(U),w=B(t.length/3,(Y,U)=>new yr().fromArray(t,U*3).setLength(o)),f=[],D=1e6;for(let Y=0;Y<w.length;Y++){let U=w[Y],z=[],E,_,A,G=1e10,J=-1;for(;(J=e.indexOf(Y,J+1))!=-1;){let O=J-J%3;E=e[O+(J+1)%3],_=e[O+(J+2)%3],A=U.distanceToSquared(w[E]),G=Math.min(G,A),z.push([E,_,A])}G+=1e-6;let j=[],V=0,F=z.length;for(let O=0;O<F;O++){[E,_,A]=z[V];let q=f[E]?.includes(Y)==!0;A<=G&&j.push(E+ +q*D),V=z.findIndex(Z=>Z[0]==_)}f.push(j)}let C=[];{let Y=0,U=0,z,E,_=d==3;for(let A=0;A<=s;A++){z=A*(A+1)/2,E=(A+1)*(A+2)/2;for(let G=0;G<s-A;G++)[Y,U]=[z+G+A+2,E+G+A+3],C.push(z,E,..._?[U,z]:[Y,E],U,Y),[z,E]=[Y,U];C.push(z,E,z+s+2)}}let I=m.clone(),L=m.clone(),M=m.clone(),k=m.clone(),W=m.clone(),oe=[],he=B(w.length,()=>B(d,()=>m.clone()));for(let Y=0;Y<w.length;Y++){m.copy(w[Y]).normalize(),I.copy(m).multiplyScalar(v);let U=f[Y];for(let j=0;j<U.length;j++){let V=U[j],F=U[(j+1)%d];x.setFromPointsAndIndices(w,Y,V%D,F%D),x.b.sub(x.a).setLength(1e10).add(x.a),x.c.sub(x.a).setLength(1e10).add(x.a),x.closestPointToPoint(I,he[Y][j])}let z=[],E=[],_=[],A=new yr;s==0&&[...he[Y]].reduce((j,V)=>j.add(V),A).multiplyScalar(1/d);for(let j=0;j<d;j++){let V=[],F=(j-1+d)%d,O=he[Y][F],q=he[Y][j];m.copy(O).sub(I),g.copy(q).sub(I);let Z=I.angleTo(m),ee=m.angleTo(g),H=Math.cos(Z)*y;s==0?L.copy(A):L.copy(I).setLength(v+H),E.push(H);let Q=[L,O,q];for(let $=0;$<2;$++){let re=Q[$],le=Q[$+1];k.subVectors(re,I),W.subVectors(le,I),M.crossVectors(k,W).normalize();for(let ne=0;ne<P;ne++){let me=[Z,ee][$]*ne/P;m.copy(k).applyAxisAngle(M,me).add(I),z.push(m.clone()),$&&(b(m,I),V.push([ne==0?re:m.clone(),S.clone()]))}$&&(b(le,I),V.push([le,S.clone()]))}_.push(V)}oe.push(_);let G=2*P,J=2;for(let j=0;j<d;j++){let V=G*j,F=G*((j+1)%d),O=[z[V]];for(let Z=1;Z<P;Z++){k=z[V+Z],W=z[F+Z],O.push(k);for(let ee=1,H=Z-J+1;ee<=H;ee++)m.lerpVectors(k,W,ee/(H+1)),m.sub(I).setLength(E[j]).add(I),O.push(m.clone());O.push(W)}for(let Z=0;Z<P;Z++)O.push(z[Z+P+V]);O.push(z[F+P]);let q=C.map(Z=>O[Z]);a.push(...q.map(Z=>[Z.x,Z.y,Z.z]).flat()),c.push(...q.map(Z=>(b(Z,I),[S.x,S.y,S.z])).flat())}}let ie=[];for(let Y=0;Y<f.length;Y++)for(let U=0;U<d;U++){let z=f[Y][U];if(z<D){let E=f[z].findIndex(G=>G%D==Y),_=oe[Y][U],A=oe[z][E];for(let G=0;G<P;G++){let J=_[G],j=A[P-G],V=_[G+1],F=A[P-(G+1)];[J,j,V,V,j,F].forEach(O=>{a.push(O[0].x,O[0].y,O[0].z),c.push(O[1].x,O[1].y,O[1].z)})}ie.push(_[0][0],A[P][0],_[P][0],A[0][0])}}for(;ie.length;){let Y,U,z,E;[Y,U]=ie.splice(0,2);let _=[Y];for(;Y!=U;)_.push(U),z=ie.indexOf(U),E=z%2,U=ie.splice(z-E,2)[1-E];S.subVectors(_[0],_[1]).cross(m.subVectors(_[0],_[2])).normalize();let A=S.dot(_[0])<0;A&&S.negate();for(let G=1;G<=_.length-2;G++)[_[G+ +A],_[G+1-+A],_[0]].forEach(J=>{a.push(J.x,J.y,J.z),c.push(S.x,S.y,S.z)})}}function p(){let u=new yr;for(let w=0;w<a.length;w+=3){u.x=a[w+0],u.y=a[w+1],u.z=a[w+2];let f=b(u)/2/Math.PI+.5,D=B(u)/Math.PI+.5;l.push(f,1-D)}let d=new yr,m=new yr,g=new yr,x=new yr,y=new Za,v=new Za,P=new Za,S=(w,f,D,C)=>{C<0&&w.x===1&&(l[f]=w.x-1),D.x===0&&D.z===0&&(l[f]=C/2/Math.PI+.5)};for(let w=0,f=0;w<a.length;w+=9,f+=6){d.set(a[w+0],a[w+1],a[w+2]),m.set(a[w+3],a[w+4],a[w+5]),g.set(a[w+6],a[w+7],a[w+8]),y.set(l[f+0],l[f+1]),v.set(l[f+2],l[f+3]),P.set(l[f+4],l[f+5]),x.copy(d).add(m).add(g).divideScalar(3);let D=b(x);S(y,f+0,d,D),S(v,f+2,m,D),S(P,f+4,g,D)}for(let w=0;w<l.length;w+=6){let f=l[w+0],D=l[w+2],C=l[w+4],I=Math.max(f,D,C),L=Math.min(f,D,C);I>.9&&L<.1&&(f<.2&&(l[w+0]+=1),D<.2&&(l[w+2]+=1),C<.2&&(l[w+4]+=1))}function b(w){return Math.atan2(w.z,-w.x)}function B(w){return Math.atan2(-w.y,Math.sqrt(w.x*w.x+w.z*w.z))}}}static fromJSON(t){return new Gr(t.vertices,t.indices,t.radius,t.corner,t.cornerSides)}};import{DodecahedronBufferGeometry as eb}from"three";var cu=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,detail:0,corner:0,cornerSides:4},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t,height:e,depth:r,detail:o,corner:n,cornerSides:s}=i.parameters,a=o===0&&n!==0?new Gn(t*.5,n,s):new eb(t*.5,o);return a.scale(1,e/t,r/t),Object.assign(a,{userData:{...i,type:"DodecahedronGeometry"}})}},Gn=class extends Gr{constructor(t=1,e=.2,r=4){let o=(1+Math.sqrt(5))/2,n=1/o,s=[-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-n,-o,0,-n,o,0,n,-o,0,n,o,-n,-o,0,-n,o,0,n,-o,0,n,o,0,-o,0,-n,o,0,-n,-o,0,n,o,0,n],a=[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9],l="DodecahedronGeometry";super(s,a,l,t,e,r),this.type=l}static fromJSON(t){return new Gn(t.radius,t.corner,t.cornerSides)}};import{EventDispatcher as pb,Plane as ub,Shape as Cu,Vector2 as xr,Vector3 as db,MathUtils as sl,LineCurve as al,QuadraticBezierCurve as Tu,CubicBezierCurve as Ls}from"three";import{CubicBezierCurve as Ns,EllipseCurve as tb,LineCurve as Cs,LineCurve3 as rb,MathUtils as ob,QuadraticBezierCurve as tl,SplineCurve as nb,Vector2 as tt,Vector3 as uu}from"three";var Rn=1e-12,Go=class{constructor(t){this.position=new tt;this.startPosition=new tt;this.uuid=ob.generateUUID();this.position=t.clone()}start(){this.reset()}reset(){this.startPosition.copy(this.position)}applyOffset(t){this.position.copy(this.startPosition).add(t)}copy(t){return this.position.copy(t.position),this.startPosition.copy(t.startPosition),this}clone(){return new Go(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},Ro=class extends Go{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new Ro(this.parent).copy(this)}},Gt=class extends Go{constructor(e,r){super(r);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new Ro(this),new Ro(this))}static create(e,r){let o=new Gt(e,new tt(...r.position));return o.controls[0].position.set(...r.controlPrevious.position),o.controls[1].position.set(...r.controlNext.position),o.roundness=r.roundness,o.areControlsDirectionsMirrored=r.areControlsDirectionsMirrored,o}getOppositeControl(e){let r=this.controls.indexOf(e);return r===0?this.controls[1]:r===1?this.controls[0]:null}applyOffsetToControls(e,r=1){for(let o=0,n=this.controls.length;o<n;o++){let s=this.controls[o];this.position.distanceTo(s.position)<=r?s.position.copy(this.position):s.applyOffset(e)}}controlsMoved(){return!(this.position.equals(this.controls[0].position)&&this.position.equals(this.controls[1].position))}copy(e){return super.copy(e),this.controls[0].copy(e.controls[0]),this.controls[1].copy(e.controls[1]),this.roundness=e.roundness,this.uuid=e.uuid,this}clone(){return new Gt(this.uuid,this.position).copy(this)}toJSON(){return super.toJSON().concat(this.controls[0].toJSON(),this.controls[1].toJSON(),[this.roundness])}computeTangents(){let e=this.curveBefore?.getTangentAt(1),r=this.curveAfter?.getTangentAt(0);return[e,r]}computeNormals(e=new tt,r=new tt){let[o,n]=this.computeTangents();return o&&n&&(hu(o,e),hu(n,r)),[e,r]}computeTangent(e=new tt){let[r,o]=this.computeTangents();return r&&o&&e.copy(r).add(o).normalize(),e}computeNormal(e=new tt){let[r,o]=this.computeNormals();return e.copy(r).add(o).normalize(),e}};function hu(i,t=new tt){let e=i.length();return t.set(-i.y/e,i.x/e)}var rl=i=>i,zo=new tt,Ts=new tt,ib=new tt,sb=new tt,ab=new tt,lb=new tt,du=new uu,mu=new uu;function fu(i){let t=new tt;t.addVectors(i.v0,zo.subVectors(i.v1,i.v0).multiplyScalar(2/3));let e=new tt;return e.addVectors(i.v2,Ts.subVectors(i.v1,i.v2).multiplyScalar(2/3)),new Ns(i.v0,t,e,i.v2)}function zn(i,t,e=Number.EPSILON){return Math.abs(i-t)<e}function cb(i,t,e=Number.EPSILON){return i.distanceTo(t)<e}function hb(i,t,e=Number.EPSILON){return i.distanceTo(t)<e}function ol(i,t,e){let r=Math.sqrt(Math.pow(t.x-i.x,2)+Math.pow(t.y-i.y,2)),o=Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2)),n=Math.sqrt(Math.pow(e.x-i.x,2)+Math.pow(e.y-i.y,2));return Math.acos((o*o+r*r-n*n)/(2*o*r))}function gu(i,t,e){return pu(i,t)&&pu(t,e)&&el(i.position,t.position,e.position)}function el(i,t,e){return zo.copy(t).sub(i).cross(Ts.copy(e).sub(i))===0}function yu(i,t,e,r,o){let n=Math.sqrt(Math.pow(t.x-i.x,2)+Math.pow(t.y-i.y,2)),s=(i.y+t.y)/2,a=(i.x+t.x)/2,l=Math.sqrt(Math.pow(e,2)-Math.pow(n/2,2))*(i.y-t.y)/n,c=Math.sqrt(Math.pow(e,2)-Math.pow(n/2,2))*(t.x-i.x)/n;return r.set(a+l,s+c),o.set(a-l,s-c),[r,o]}function xu(i,t,e){let r=i.distanceTo(e),o=t.distanceTo(e);return r<o?t:i}function vu(i,t,e,r,o,n){let s=t.x-i.x,a=t.y-i.y,l=e.x-i.x,c=e.y-i.y,h=Math.sqrt((s+l)*(s+l)+(a+c)*(a+c)),p;return ol(t,i,e)>Math.PI&&(h*=-1),zn(c,a)?p=(a+c)*(r/h-.5)*8/3/(s-l):p=(s+l)*(r/h-.5)*8/3/(c-a),o.set(t.x-p*a,t.y+p*s),n.set(e.x+p*c,e.y-p*l),[o,n]}function nl(i,t){return i.position.equals(i.controls[1].position)&&t.position.equals(t.controls[0].position)}function pu(i,t){return el(i.position,i.controls[1].position,t.position)&&el(i.position,t.controls[0].position,t.position)}function bu(i,t,e,r,o=.5){let n=zo.subVectors(t,i).multiplyScalar(o).add(i),s=Ts.subVectors(e,t).multiplyScalar(o).add(t),a=ib.subVectors(r,e).multiplyScalar(o).add(e),l=n,c=sb.subVectors(s,n).multiplyScalar(o).add(n),h=ab.subVectors(a,s).multiplyScalar(o).add(s),p=a,u=lb.subVectors(h,c).multiplyScalar(o).add(c);return[i.x,i.y,l.x,l.y,c.x,c.y,u.x,u.y,h.x,h.y,p.x,p.y,r.x,r.y]}function Su(i,t,e=12,r=!0){let o=mu.set(0,0,0),n,s=0,a=[];for(let l=0;l<t.length;l++){let c=rl(t[l]),h=zo,p=Rr(c,e);a.push(p);for(let u=0;u<=p;u++)if(c instanceof Ns||c instanceof tl||c instanceof Cs){if(c.getPoint(u/p,h),o.set(h.x,h.y,0),n!==void 0&&hb(n,o))continue;n===void 0&&(n=du),n.copy(o),i.setXYZ(s,o.x,o.y,o.z),s++}}return r&&s>1&&!(i.getX(s-1)===i.getX(0)&&i.getY(s-1)===i.getY(0)&&i.getZ(s-1)===i.getZ(0))&&(i.setXYZ(s,i.getX(0),i.getY(0),i.getZ(0)),s++),i}function wu(i,t,e,r=12,o=!0){let n=mu.set(0,0,0),s=0,a=[];for(let l=0;l<t.length;l++){if(e[l]===!1)continue;let c,h=rl(t[l]),p=zo,u=Rr(h,r);a.push(u);for(let d=0;d<=u;d++)if(h instanceof Ns||h instanceof tl||h instanceof Cs){if(h.getPoint(d/u,p),n.set(p.x,p.y,0),c?.equals(n))continue;c===void 0?c=du:(i.setXYZ(s,c.x,c.y,c.z),s++,i.setXYZ(s,n.x,n.y,n.z),s++),c.copy(n)}}return o&&s>1&&!(i.getX(s-1)===i.getX(0)&&i.getY(s-1)===i.getY(0)&&i.getZ(s-1)===i.getZ(0))&&(i.setXYZ(s,i.getX(0),i.getY(0),i.getZ(0)),s++),a}function il(i,t=12,e=!1){let r=[];for(let o=0,n=i.length;o<n;o++){let s=i[o],a=0;if(e&&s.roundedCurveCorner!==void 0){let l=Rr(s.roundedCurveCorner,t)*.5;o>0&&(r[o-1]+=l),a+=l}s.curveAfter!==void 0&&(a+=Rr(s.curveAfter,t)),r.push(a)}return i.length>0&&e&&i[0].roundedCurveCorner!==void 0&&(r[i.length-1]+=Rr(i[0].roundedCurveCorner,t)*.5),r}function Rr(i,t=12){return i&&i instanceof tb?t*2:i&&(i instanceof Cs||i instanceof rb)?1:i&&i instanceof nb?t*i.points.length:t}function Nu(i,t,e=12,r=!0){let o,n=0;for(let s=0;s<t.length;s++){let a=rl(t[s]),l=Rr(a,e),c=zo;for(let h=0;h<=l;h++)if(a instanceof Ns||a instanceof tl||a instanceof Cs){if(a.getPoint(h/l,c),o!==void 0&&cb(o,c,Rn))continue;o===void 0&&(o=Ts),o.copy(c),i.push(c.x,c.y),n++}}return zn(i[0],i[i.length-2],Rn)&&zn(i[1],i[i.length-1],Rn)&&(i.pop(),i.pop()),r&&n>1&&!(zn(i[n-1],i[1],Rn)&&zn(i[n-2],i[0],Rn))&&(i.push(i[0],i[1]),n++),i}var ll=new xr,mb=new xr,fb=new xr,gb=new xr,yb=new xr,xb=new xr,ve=class extends Cu{constructor(e=100,r=100){super();this.points=[];this.shapeHoles=[];this.eventDispatcher=new pb;this.plane=new ub(new db(0,0,-1));this.subdivision=0;this.controlSnapDistance=4;this.pointIDs=0;this.isMesh2D=!1;this._roundness=0;this.isClosed=!1;this.useCubicForRoundedCorners=!0;this.uuid=sl.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=r}static createFromState(e,r,o){let n=new ve;return n.isClosed=e.isClosed,n.points=e.points.map(s=>Gt.create(s.id,s.data)),typeof e.roundness=="number"&&(n.roundness=e.roundness),n.shapeHoles=e.shapeHoles.map(s=>ve.createFromState(s)),r!==void 0&&o!==void 0&&n.applySize(r,o),n.update(),n}get width(){return this._width}get height(){return this._height}get roundness(){return this._roundness}set roundness(e){if(this._roundness!==e){this._roundness=e;for(let r=0,o=this.points.length;r<o;r++)this.points[r].roundness=e;this.needsUpdate=!0}}getPointsIndexesByIds(e){return e.map(r=>this.getPointIndexById(r)).filter(r=>r>=0)}getPointIndexById(e){let r=this.points.length,o=this.points.findIndex(n=>n.uuid===e);if(o<0){let n=r;for(let s=0,a=this.shapeHoles.length;s<a;s++){let l=this.shapeHoles[s],c=l.points.length-1,h=l.getPointIndexById(e);if(h<0)n+=c;else return h+n}}return o}getLineIndexById(e){return this.getPointIndexById(e)}getBezierPoint(e){if(e<=this.points.length-1)return this.points[e];if(this.shapeHoles.length>0)for(let r=0,o=this.shapeHoles.length;r<o;r++){let n=this.shapeHoles[r],s=e-this.points.length;if(s<=n.points.length-1)return n.points[s]}throw new Error("This shape does not have a point for this index: "+e)}getBezierPointIndex(e){let r=this.points.indexOf(e);if(r>=0)return r;if(r=this.points.length,this.shapeHoles.length>0)for(let o=0,n=this.shapeHoles.length;o<n;o++){let s=this.shapeHoles[o],a=s.points.indexOf(e);if(a>=0)return r+a;r+=s.points.length}return-1}getAllPoints(){let e=[].concat(...this.shapeHoles.map(r=>r.points));return[...this.points,...e]}applySize(e,r){e===0&&(e=.001),r===0&&(r=.001),this._width=e,this._height=r}applyScale(e,r){let o=ll.set(e,r);for(let n=0,s=this.points.length;n<s;n++){let a=this.points[n];a.position.multiply(o),a.controls[0].position.multiply(o),a.controls[1].position.multiply(o)}for(let n=0,s=this.shapeHoles.length;n<s;n++)this.shapeHoles[n].applyScale(e,r);this._update(!1)}createPoint(e,r=0,o=sl.generateUUID()){let n;e instanceof xr?n=e:n=new xr(e,r);let s=new Gt(o,n);return s.roundness=this.roundness,s}addPoint(e){this.points.push(e),this.needsUpdate=!0}addPointAt(e,r){this.points.splice(r,0,e),this.needsUpdate=!0}getPointByUuid(e){for(let r=0,o=this.points.length;r<o;r++){let n=this.points[r];if(n.uuid===e)return n}for(let r=0,o=this.shapeHoles.length;r<o;r++){let s=this.shapeHoles[r].getPointByUuid(e);if(s)return s}}getFirstPoint(){return this.points[0]}getLastPoint(){return this.points[this.points.length-1]}removePoint(e){let r=this.points.indexOf(e);r>=0&&this.points.splice(r,1),this.needsUpdate=!0}removePointById(e){let r=this.points.find(o=>o.uuid===e);r&&this.removePoint(r)}update(e=!0){for(let r=0,o=this.shapeHoles.length;r<o;r++)this.shapeHoles[r].update(!1);this._update(e)}extractShapePointsToBuffer(e,r=12,o=!1){this.subdivision=r,this.curveDivisions===void 0&&this.computeCurveDivisions(r);let n=o?this.roundedCurveDivisions:this.curveDivisions;return Su(e,o?this.roundedCurves:this.curves,r,this.autoClose),n.reduce((s,a)=>s+a,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=il(this.points,e,!1),this.roundedCurveDivisions=il(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,r,o=12){return wu(e,this.curves,r,o,this.autoClose).reduce((s,a)=>s+a,0)*2}extractShapePointsToFlatArray(e,r=12){return this.subdivision=r,this.curveDivisions===void 0&&this.computeCurveDivisions(r),Nu(e,this.roundedCurves,r,this.autoClose)}getCurveIndexFromVertexId(e,r=!1){let o=0;this.curveDivisions===void 0&&this.computeCurveDivisions(this.subdivision);let n=r?this.roundedCurveDivisions:this.curveDivisions,s=0;r&&this.points[0].roundedCurveCorner!==void 0&&(s=Rr(this.points[0].roundedCurveCorner,this.subdivision)*.5);let a=e-s;a<0&&(a+=n.reduce((l,c)=>l+c,0));for(let l=0,c=n.length;l<c;l++){let h=n[l];if(a<o+h)return[l,(a-o+1)/h];o+=h}return[0,1]}getCurveT(e,r,o){let n=this.points[e],s=this.points[e>=this.points.length-1?0:e+1],a=this.curveDivisions,l=a[e];if(nl(n,s)){let p=n.position.distanceTo(s.position);return n.position.distanceTo(ll.set(o.x,o.y))/p}let c=0;for(let p=0;p<e;p++)c+=a[p];return(r-c)/l}dispose(){this.eventDispatcher=null}_applyCurveForPoint(e,r){nl(r,e)?this.lineTo(e.position.x,e.position.y):this.bezierCurveTo(r.controls[1].position.x,r.controls[1].position.y,e.controls[0].position.x,e.controls[0].position.y,e.position.x,e.position.y);let o=this.curves[this.curves.length-1];e.curveBefore=o,r.curveAfter=o;let n=o.clone();e.roundedCurveBefore=n,r.roundedCurveAfter=n,e.roundedCurveCorner=void 0,this.roundedCurves.push(n)}_update(e=!0){if(this.curves=[],this.roundedCurves=[],!this.points.length)return;for(let o=0,n=this.points.length;o<n;o++){let s=this.points[o];if(o===0)this.moveTo(s.position.x,s.position.y);else{let a=this.points[o-1];this._applyCurveForPoint(s,a)}}let r=this.getLastPoint();if(r?.curveAfter&&(r.curveAfter=void 0),this.isClosed){let o=this.points[0],n=this.points[this.points.length-1];this._applyCurveForPoint(o,n)}if(this.points.length>2){let o=0;for(let n=0,s=this.points.length;n<s;n++){let a=this.points[n],l=this.points[n-1]??this.points[this.points.length-1],c=this.points[n+1]??this.points[0],h=a.roundness,p=l&&c&&gu(l,a,c);if(!a.controlsMoved()&&h>0&&!p){let u=a.curveBefore,d=a.curveAfter;if(u===void 0||d===void 0)continue;let m=a.roundedCurveBefore,g=a.roundedCurveAfter,x=u.getLength(),y=d.getLength(),v=Math.min(h,x*.499),P=Math.min(h,y*.499),S=Math.min(v,P),b=1-S/x,B=S/y,w=u.getPointAt(b,ll),f=d.getPointAt(B,mb);this._subSplitCurve(u,m,b,w,void 0),this._subSplitCurve(d,g,B,void 0,f);let D;if(this.useCubicForRoundedCorners){let C=ol(w,a.position,f)/2,I=Math.tan(C)*w.distanceTo(a.position),[L,M]=yu(w,f,I,fb,gb),k=xu(L,M,a.position),[W,oe]=vu(k,w,f,I,yb,xb);D=new Ls(w.clone(),W.clone(),oe.clone(),f.clone())}else D=new Tu(w.clone(),a.position.clone(),f.clone());a.roundedCurveCorner=D,this.roundedCurves.splice(n+o,0,D),o++}}}e&&this.eventDispatcher?.dispatchEvent({type:"update"})}_subSplitCurve(e,r,o,n,s){if(e instanceof al)n!==void 0&&r.v2.copy(n),s!==void 0&&r.v1.copy(s);else{let a=e,l=r,c=a.getUtoTmapping(o,0),h=bu(a.v0,a.v1,a.v2,a.v3,c);return n!==void 0&&(l.v0.set(h[0],h[1]),l.v1.set(h[2],h[3]),l.v2.set(h[4],h[5]),l.v3.set(h[6],h[7])),s!==void 0&&(l.v0.set(h[6],h[7]),l.v1.set(h[8],h[9]),l.v2.set(h[10],h[11]),l.v3.set(h[12],h[13])),l}return r}clone(){let e=new ve(this._width,this._height);return e.points=this.points.map(r=>r.clone()),e.isClosed=this.isClosed,e.roundness=this.roundness,e.isMesh2D=this.isMesh2D,e.shapeHoles=this.shapeHoles.map(r=>r.clone()),e}toJSON(){return{points:this.points.reduce((e,r)=>e.concat(r.toJSON()),[]),shapeHoles:this.shapeHoles.map(e=>e.toJSON()),isClosed:this.isClosed,roundness:this.roundness}}fromJSON(e){this.points=[],this.pointIDs=0;let r=e.points.length/7;for(let o=0;o<r;o++){let n=o*7,s=e.points[n+0],a=e.points[n+1],l=e.points[n+2],c=e.points[n+3],h=e.points[n+4],p=e.points[n+5],u=e.points[n+6],d=new Gt(sl.generateUUID(),new xr(s,a));d.controls[0].position.set(l,c),d.controls[1].position.set(h,p),d.roundness=u,this.points.push(d)}return this.shapeHoles=e.shapeHoles?.length?e.shapeHoles.map(o=>{let n=new ve;return n.fromJSON(o),n}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e){let r=(n,s)=>{s instanceof Ls&&s.v3.equals(n.position)&&n.controls[0].position.copy(s.v2)},o=n=>{let s=[],a,l;for(a=0,l=n.length;a<l;a++)n[a]instanceof Tu&&(n[a]=fu(n[a]));for(a=0,l=n.length;a<l;a++){let p=n[a],u=a>0?n[a-1]:null,d;p instanceof Ls?(d=this.createPoint(p.v0),d.controls[1].position.copy(p.v1)):p instanceof al&&(d=this.createPoint(p.v1)),d!==void 0&&(u!==null&&r(d,u),s.push(d))}let c=n[n.length-1],h=!1;return c instanceof Ls?c.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(c.v2),h=!0):c instanceof al&&c.v2.equals(s[0].position)&&(h=!0),this.isClosed=h,s};return this.points=o(e.curves),e instanceof Cu&&(this.shapeHoles=e.holes.map(n=>{let s=new ve;return s.fromShape(n),s})),this.update(),this}};var hl=Math.PI*2;function cl({x:i,y:t},e,r,o,n){return{x:i*e+o,y:t*r+n}}function vb(i,t){let e=t===1.5707963267948966?.551915024494:t===-1.5707963267948966?-.551915024494:1.3333333333333333*Math.tan(t/4),r=Math.cos(i),o=Math.sin(i),n=Math.cos(i+t),s=Math.sin(i+t);return[{x:r-o*e,y:o+r*e},{x:n+s*e,y:s-n*e},{x:n,y:s}]}function Lu(i,t,e,r){let o=i*r-t*e<0?-1:1,n=Math.min(1,Math.max(-1,i*e+t*r));return o*Math.acos(n)}function bb(i,t,e,r,o,n,s,a,l,c){let h=Math.pow(o,2),p=Math.pow(n,2),u=Math.pow(s,2),d=Math.pow(a,2),m=h*p-h*d-p*u;m<0&&(m=0),m/=h*d+p*u,m=Math.sqrt(m)*(l===c?-1:1);let g=m*o/n*a,x=m*-n/o*s,y=g+(i+e)/2,v=x+(t+r)/2,P=(s-g)/o,S=(a-x)/n,b=(-s-g)/o,B=(-a-x)/n,w=Lu(1,0,P,S),f=Lu(P,S,b,B);return!c&&f>0&&(f-=hl),c&&f<0&&(f+=hl),{centerx:y,centery:v,ang1:w,ang2:f}}function Iu({px:i,py:t,cx:e,cy:r,rx:o,ry:n,largeArcFlag:s,sweepFlag:a}){let l=[];if(o===0||n===0)return[];let c=(i-e)/2,h=(t-r)/2;if(c===0&&h===0)return[];o=Math.abs(o),n=Math.abs(n);let p=Math.pow(c,2)/Math.pow(o,2)+Math.pow(h,2)/Math.pow(n,2);p>1&&(o*=Math.sqrt(p),n*=Math.sqrt(p));let u=bb(i,t,e,r,o,n,c,h,s,a),{ang1:d,ang2:m}=u,{centerx:g,centery:x}=u,y=Math.abs(m)/(hl/4);Math.abs(1-y)<1e-7&&(y=1);let v=Math.max(Math.ceil(y),1);m/=v;for(let P=0;P<v;P++)l.push(vb(d,m)),d+=m;return l.map(P=>{let{x:S,y:b}=cl(P[0],o,n,g,x),{x:B,y:w}=cl(P[1],o,n,g,x),{x:f,y:D}=cl(P[2],o,n,g,x);return{x1:S,y1:b,x2:B,y2:w,x:f,y:D}})}import{BufferAttribute as Ps,BufferGeometry as Tb}from"three";var Me;(function(i){i[i.ODD=0]="ODD",i[i.NONZERO=1]="NONZERO",i[i.POSITIVE=2]="POSITIVE",i[i.NEGATIVE=3]="NEGATIVE",i[i.ABS_GEQ_TWO=4]="ABS_GEQ_TWO"})(Me||(Me={}));var Ue;(function(i){i[i.POLYGONS=0]="POLYGONS",i[i.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",i[i.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(Ue||(Ue={}));function pe(i,t){if(!i)throw t||"Assertion Failed!"}var se=function(){function i(){}return i.vertEq=function(t,e){return t.s===e.s&&t.t===e.t},i.vertLeq=function(t,e){return t.s<e.s||t.s===e.s&&t.t<=e.t},i.transLeq=function(t,e){return t.t<e.t||t.t===e.t&&t.s<=e.s},i.edgeGoesLeft=function(t){return i.vertLeq(t.Dst,t.Org)},i.edgeGoesRight=function(t){return i.vertLeq(t.Org,t.Dst)},i.vertL1dist=function(t,e){return Math.abs(t.s-e.s)+Math.abs(t.t-e.t)},i.edgeEval=function(t,e,r){pe(i.vertLeq(t,e)&&i.vertLeq(e,r));var o=e.s-t.s,n=r.s-e.s;return o+n>0?o<n?e.t-t.t+(t.t-r.t)*(o/(o+n)):e.t-r.t+(r.t-t.t)*(n/(o+n)):0},i.edgeSign=function(t,e,r){pe(i.vertLeq(t,e)&&i.vertLeq(e,r));var o=e.s-t.s,n=r.s-e.s;return o+n>0?(e.t-r.t)*o+(e.t-t.t)*n:0},i.transEval=function(t,e,r){pe(i.transLeq(t,e)&&i.transLeq(e,r));var o=e.t-t.t,n=r.t-e.t;return o+n>0?o<n?e.s-t.s+(t.s-r.s)*(o/(o+n)):e.s-r.s+(r.s-t.s)*(n/(o+n)):0},i.transSign=function(t,e,r){pe(i.transLeq(t,e)&&i.transLeq(e,r));var o=e.t-t.t,n=r.t-e.t;return o+n>0?(e.s-r.s)*o+(e.s-t.s)*n:0},i.vertCCW=function(t,e,r){return t.s*(e.t-r.t)+e.s*(r.t-t.t)+r.s*(t.t-e.t)>=0},i.interpolate=function(t,e,r,o){return t=t<0?0:t,r=r<0?0:r,t<=r?r===0?(e+o)/2:e+(o-e)*(t/(t+r)):o+(e-o)*(r/(t+r))},i.intersect=function(t,e,r,o,n){var s,a,l;i.vertLeq(t,e)||(l=t,t=e,e=l),i.vertLeq(r,o)||(l=r,r=o,o=l),i.vertLeq(t,r)||(l=t,t=r,r=l,l=e,e=o,o=l),i.vertLeq(r,e)?i.vertLeq(e,o)?(s=i.edgeEval(t,r,e),a=i.edgeEval(r,e,o),s+a<0&&(s=-s,a=-a),n.s=i.interpolate(s,r.s,a,e.s)):(s=i.edgeSign(t,r,e),a=-i.edgeSign(t,o,e),s+a<0&&(s=-s,a=-a),n.s=i.interpolate(s,r.s,a,o.s)):n.s=(r.s+e.s)/2,i.transLeq(t,e)||(l=t,t=e,e=l),i.transLeq(r,o)||(l=r,r=o,o=l),i.transLeq(t,r)||(l=t,t=r,r=l,l=e,e=o,o=l),i.transLeq(r,e)?i.transLeq(e,o)?(s=i.transEval(t,r,e),a=i.transEval(r,e,o),s+a<0&&(s=-s,a=-a),n.t=i.interpolate(s,r.t,a,e.t)):(s=i.transSign(t,r,e),a=-i.transSign(t,o,e),s+a<0&&(s=-s,a=-a),n.t=i.interpolate(s,r.t,a,o.t)):n.t=(r.t+e.t)/2},i}(),Vn=function(){function i(){this.next=null,this.prev=null,this.anEdge=null,this.trail=null,this.n=0,this.marked=!1,this.inside=!1}return i}(),Is=function(){function i(t){this.side=t,this.next=null,this.Org=null,this.Sym=null,this.Onext=null,this.Lnext=null,this.Lface=null,this.activeRegion=null,this.winding=0}return Object.defineProperty(i.prototype,"Rface",{get:function(){return this.Sym.Lface},set:function(t){this.Sym.Lface=t},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Dst",{get:function(){return this.Sym.Org},set:function(t){this.Sym.Org=t},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Oprev",{get:function(){return this.Sym.Lnext},set:function(t){this.Sym.Lnext=t},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Lprev",{get:function(){return this.Onext.Sym},set:function(t){this.Onext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Dprev",{get:function(){return this.Lnext.Sym},set:function(t){this.Lnext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Rprev",{get:function(){return this.Sym.Onext},set:function(t){this.Sym.Onext=t},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Dnext",{get:function(){return this.Sym.Onext.Sym},set:function(t){this.Sym.Onext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Rnext",{get:function(){return this.Sym.Lnext.Sym},set:function(t){this.Sym.Lnext.Sym=t},enumerable:!0,configurable:!0}),i}(),Vo=function(){function i(){this.next=null,this.prev=null,this.anEdge=null,this.coords=[0,0,0],this.s=0,this.t=0,this.pqHandle=0,this.n=0,this.idx=0}return i}(),Pu=function(){function i(){var t=new Vo,e=new Vn,r=new Is(0),o=new Is(1);t.next=t.prev=t,t.anEdge=null,e.next=e.prev=e,r.next=r,r.Sym=o,o.next=o,o.Sym=r,this.vHead=t,this.fHead=e,this.eHead=r,this.eHeadSym=o}return i.prototype.makeEdge_=function(t){var e=new Is(0),r=new Is(1);t.Sym.side<t.side&&(t=t.Sym);var o=t.Sym.next;return r.next=o,o.Sym.next=e,e.next=t,t.Sym.next=r,e.Sym=r,e.Onext=e,e.Lnext=r,e.Org=null,e.Lface=null,e.winding=0,e.activeRegion=null,r.Sym=e,r.Onext=r,r.Lnext=e,r.Org=null,r.Lface=null,r.winding=0,r.activeRegion=null,e},i.prototype.splice_=function(t,e){var r=t.Onext,o=e.Onext;r.Sym.Lnext=e,o.Sym.Lnext=t,t.Onext=o,e.Onext=r},i.prototype.makeVertex_=function(t,e,r){var o=t;pe(o,"Vertex can't be null!");var n=r.prev;o.prev=n,n.next=o,o.next=r,r.prev=o,o.anEdge=e;var s=e;do s.Org=o,s=s.Onext;while(s!==e)},i.prototype.makeFace_=function(t,e,r){var o=t;pe(o,"Face can't be null");var n=r.prev;o.prev=n,n.next=o,o.next=r,r.prev=o,o.anEdge=e,o.trail=null,o.marked=!1,o.inside=r.inside;var s=e;do s.Lface=o,s=s.Lnext;while(s!==e)},i.prototype.killEdge_=function(t){t.Sym.side<t.side&&(t=t.Sym);var e=t.next,r=t.Sym.next;e.Sym.next=r,r.Sym.next=e},i.prototype.killVertex_=function(t,e){var r=t.anEdge,o=r;do o.Org=e,o=o.Onext;while(o!==r);var n=t.prev,s=t.next;s.prev=n,n.next=s},i.prototype.killFace_=function(t,e){var r=t.anEdge,o=r;do o.Lface=e,o=o.Lnext;while(o!==r);var n=t.prev,s=t.next;s.prev=n,n.next=s},i.prototype.makeEdge=function(){var t=new Vo,e=new Vo,r=new Vn,o=this.makeEdge_(this.eHead);return this.makeVertex_(t,o,this.vHead),this.makeVertex_(e,o.Sym,this.vHead),this.makeFace_(r,o,this.fHead),o},i.prototype.splice=function(t,e){var r=!1,o=!1;if(t!==e){if(e.Org!==t.Org&&(o=!0,this.killVertex_(e.Org,t.Org)),e.Lface!==t.Lface&&(r=!0,this.killFace_(e.Lface,t.Lface)),this.splice_(e,t),!o){var n=new Vo;this.makeVertex_(n,e,t.Org),t.Org.anEdge=t}if(!r){var s=new Vn;this.makeFace_(s,e,t.Lface),t.Lface.anEdge=t}}},i.prototype.delete=function(t){var e=t.Sym,r=!1;if(t.Lface!==t.Rface&&(r=!0,this.killFace_(t.Lface,t.Rface)),t.Onext===t)this.killVertex_(t.Org,null);else if(t.Rface.anEdge=t.Oprev,t.Org.anEdge=t.Onext,this.splice_(t,t.Oprev),!r){var o=new Vn;this.makeFace_(o,t,t.Lface)}e.Onext===e?(this.killVertex_(e.Org,null),this.killFace_(e.Lface,null)):(t.Lface.anEdge=e.Oprev,e.Org.anEdge=e.Onext,this.splice_(e,e.Oprev)),this.killEdge_(t)},i.prototype.addEdgeVertex=function(t){var e=this.makeEdge_(t),r=e.Sym;this.splice_(e,t.Lnext),e.Org=t.Dst;var o=new Vo;return this.makeVertex_(o,r,e.Org),e.Lface=r.Lface=t.Lface,e},i.prototype.splitEdge=function(t){var e=this.addEdgeVertex(t),r=e.Sym;return this.splice_(t.Sym,t.Sym.Oprev),this.splice_(t.Sym,r),t.Dst=r.Org,r.Dst.anEdge=r.Sym,r.Rface=t.Rface,r.winding=t.winding,r.Sym.winding=t.Sym.winding,r.idx=t.idx,r.Sym.idx=t.Sym.idx,r},i.prototype.connect=function(t,e){var r=!1,o=this.makeEdge_(t),n=o.Sym;if(e.Lface!==t.Lface&&(r=!0,this.killFace_(e.Lface,t.Lface)),this.splice_(o,t.Lnext),this.splice_(n,e),o.Org=t.Dst,n.Org=e.Org,o.Lface=n.Lface=t.Lface,t.Lface.anEdge=n,!r){var s=new Vn;this.makeFace_(s,o,t.Lface)}return o},i.prototype.zapFace=function(t){var e=t.anEdge,r,o,n,s,a;o=e.Lnext;do r=o,o=r.Lnext,r.Lface=null,r.Rface===null&&(r.Onext===r?this.killVertex_(r.Org,null):(r.Org.anEdge=r.Onext,this.splice_(r,r.Oprev)),n=r.Sym,n.Onext===n?this.killVertex_(n.Org,null):(n.Org.anEdge=n.Onext,this.splice_(n,n.Oprev)),this.killEdge_(r));while(r!=e);s=t.prev,a=t.next,a.prev=s,s.next=a},i.prototype.countFaceVerts_=function(t){var e=t.anEdge,r=0;do r++,e=e.Lnext;while(e!==t.anEdge);return r},i.prototype.mergeConvexFaces=function(t){var e,r,o,n,s,a,l;for(e=this.fHead.next;e!==this.fHead;e=e.next)if(!!e.inside)for(r=e.anEdge,s=r.Org;o=r.Lnext,n=r.Sym,n&&n.Lface&&n.Lface.inside&&(a=this.countFaceVerts_(e),l=this.countFaceVerts_(n.Lface),a+l-2<=t&&se.vertCCW(r.Lprev.Org,r.Org,n.Lnext.Lnext.Org)&&se.vertCCW(n.Lprev.Org,n.Org,r.Lnext.Lnext.Org)&&(o=n.Lnext,this.delete(n),r=null,n=null)),!(r&&r.Lnext.Org===s);)r=o;return!0},i.prototype.check=function(){var t=this.fHead,e=this.vHead,r=this.eHead,o,n,s,a,l,c;for(n=t,n=t;(o=n.next)!==t;n=o){pe(o.prev===n),l=o.anEdge;do pe(l.Sym!==l),pe(l.Sym.Sym===l),pe(l.Lnext.Onext.Sym===l),pe(l.Onext.Sym.Lnext===l),pe(l.Lface===o),l=l.Lnext;while(l!==o.anEdge)}for(pe(o.prev===n&&o.anEdge===null),a=e,a=e;(s=a.next)!==e;a=s){pe(s.prev===a),l=s.anEdge;do pe(l.Sym!==l),pe(l.Sym.Sym===l),pe(l.Lnext.Onext.Sym===l),pe(l.Onext.Sym.Lnext===l),pe(l.Org===s),l=l.Onext;while(l!==s.anEdge)}for(pe(s.prev===a&&s.anEdge===null),c=r,c=r;(l=c.next)!==r;c=l)pe(l.Sym.next===c.Sym),pe(l.Sym!==l),pe(l.Sym.Sym===l),pe(l.Org!==null),pe(l.Dst!==null),pe(l.Lnext.Onext.Sym===l),pe(l.Onext.Sym.Lnext===l);pe(l.Sym.next===c.Sym&&l.Sym===this.eHeadSym&&l.Sym.Sym===l&&l.Org===null&&l.Dst===null&&l.Lface===null&&l.Rface===null)},i}(),Mu=function(){function i(){this.handle=null}return i}(),Au=function(){function i(){this.key=null,this.node=0}return i}(),Sb=function(){function i(t,e){this.leq=e,this.max=0,this.nodes=[],this.handles=[],this.initialized=!1,this.freeList=0,this.size=0,this.max=t,this.nodes=[],this.handles=[];for(var r=0;r<t+1;r++)this.nodes[r]=new Mu,this.handles[r]=new Au;this.initialized=!1,this.nodes[1].handle=1,this.handles[1].key=null}return i.prototype.floatDown_=function(t){var e=this.nodes,r=this.handles,o,n,s;for(o=e[t].handle;;){if(s=t<<1,s<this.size&&this.leq(r[e[s+1].handle].key,r[e[s].handle].key)&&++s,pe(s<=this.max),n=e[s].handle,s>this.size||this.leq(r[o].key,r[n].key)){e[t].handle=o,r[o].node=t;break}e[t].handle=n,r[n].node=t,t=s}},i.prototype.floatUp_=function(t){var e=this.nodes,r=this.handles,o,n,s;for(o=e[t].handle;;){if(s=t>>1,n=e[s].handle,s===0||this.leq(r[n].key,r[o].key)){e[t].handle=o,r[o].node=t;break}e[t].handle=n,r[n].node=t,t=s}},i.prototype.init=function(){for(var t=this.size;t>=1;--t)this.floatDown_(t);this.initialized=!0},i.prototype.min=function(){return this.handles[this.nodes[1].handle].key},i.prototype.insert=function(t){var e,r;if(e=++this.size,e*2>this.max){this.max*=2;var o,n;for(n=this.nodes.length,this.nodes.length=this.max+1,o=n;o<this.nodes.length;o++)this.nodes[o]=new Mu;for(n=this.handles.length,this.handles.length=this.max+1,o=n;o<this.handles.length;o++)this.handles[o]=new Au}return this.freeList===0?r=e:(r=this.freeList,this.freeList=this.handles[r].node),this.nodes[e].handle=r,this.handles[r].node=e,this.handles[r].key=t,this.initialized&&this.floatUp_(e),r},i.prototype.extractMin=function(){var t=this.nodes,e=this.handles,r=t[1].handle,o=e[r].key;return this.size>0&&(t[1].handle=t[this.size].handle,e[t[1].handle].node=1,e[r].key=null,e[r].node=this.freeList,this.freeList=r,--this.size,this.size>0&&this.floatDown_(1)),o},i.prototype.delete=function(t){var e=this.nodes,r=this.handles,o;pe(t>=1&&t<=this.max&&r[t].key!==null),o=r[t].node,e[o].handle=e[this.size].handle,r[e[o].handle].node=o,--this.size,o<=this.size&&(o<=1||this.leq(r[e[o>>1].handle].key,r[e[o].handle].key)?this.floatDown_(o):this.floatUp_(o)),r[t].key=null,r[t].node=this.freeList,this.freeList=t},i}(),pl=function(){function i(){this.eUp=null,this.nodeUp=null,this.windingNumber=0,this.inside=!1,this.sentinel=!1,this.dirty=!1,this.fixUpperEdge=!1}return i}(),Ou=function(){function i(){this.key=null,this.next=null,this.prev=null}return i}(),wb=function(){function i(t,e){this.frame=t,this.leq=e,this.head=new Ou,this.head.next=this.head,this.head.prev=this.head}return i.prototype.min=function(){return this.head.next},i.prototype.max=function(){return this.head.prev},i.prototype.insert=function(t){return this.insertBefore(this.head,t)},i.prototype.search=function(t){var e=this.head;do e=e.next;while(e.key!==null&&!this.leq(this.frame,t,e.key));return e},i.prototype.insertBefore=function(t,e){do t=t.prev;while(t.key!==null&&!this.leq(this.frame,t.key,e));var r=new Ou;return r.key=e,r.next=t.next,t.next.prev=r,r.prev=t,t.next=r,r},i.prototype.delete=function(t){t.next.prev=t.prev,t.prev.next=t.next},i}(),Nb=function(){function i(){}return i.regionBelow=function(t){return t.nodeUp.prev.key},i.regionAbove=function(t){return t.nodeUp.next.key},i.debugEvent=function(t){},i.addWinding=function(t,e){t.winding+=e.winding,t.Sym.winding+=e.Sym.winding},i.edgeLeq=function(t,e,r){var o=t.event,n=e.eUp,s=r.eUp;if(n.Dst===o)return s.Dst===o?se.vertLeq(n.Org,s.Org)?se.edgeSign(s.Dst,n.Org,s.Org)<=0:se.edgeSign(n.Dst,s.Org,n.Org)>=0:se.edgeSign(s.Dst,o,s.Org)<=0;if(s.Dst===o)return se.edgeSign(n.Dst,o,n.Org)>=0;var a=se.edgeEval(n.Dst,o,n.Org),l=se.edgeEval(s.Dst,o,s.Org);return a>=l},i.deleteRegion=function(t,e){e.fixUpperEdge&&pe(e.eUp.winding===0),e.eUp.activeRegion=null,t.dict.delete(e.nodeUp)},i.fixUpperEdge=function(t,e,r){pe(e.fixUpperEdge),t.mesh.delete(e.eUp),e.fixUpperEdge=!1,e.eUp=r,r.activeRegion=e},i.topLeftRegion=function(t,e){var r=e.eUp.Org,o;do e=i.regionAbove(e);while(e.eUp.Org===r);if(e.fixUpperEdge){if(o=t.mesh.connect(i.regionBelow(e).eUp.Sym,e.eUp.Lnext),o===null)return null;i.fixUpperEdge(t,e,o),e=i.regionAbove(e)}return e},i.topRightRegion=function(t){var e=t.eUp.Dst;do t=i.regionAbove(t);while(t.eUp.Dst===e);return t},i.addRegionBelow=function(t,e,r){var o=new pl;return o.eUp=r,o.nodeUp=t.dict.insertBefore(e.nodeUp,o),o.fixUpperEdge=!1,o.sentinel=!1,o.dirty=!1,r.activeRegion=o,o},i.isWindingInside=function(t,e){switch(t.windingRule){case Me.ODD:return(e&1)!==0;case Me.NONZERO:return e!==0;case Me.POSITIVE:return e>0;case Me.NEGATIVE:return e<0;case Me.ABS_GEQ_TWO:return e>=2||e<=-2}throw new Error("Invalid winding rulle")},i.computeWinding=function(t,e){e.windingNumber=i.regionAbove(e).windingNumber+e.eUp.winding,e.inside=i.isWindingInside(t,e.windingNumber)},i.finishRegion=function(t,e){var r=e.eUp,o=r.Lface;o.inside=e.inside,o.anEdge=r,i.deleteRegion(t,e)},i.finishLeftRegions=function(t,e,r){for(var o,n=null,s=e,a=e.eUp;s!==r;){if(s.fixUpperEdge=!1,n=i.regionBelow(s),o=n.eUp,o.Org!=a.Org){if(!n.fixUpperEdge){i.finishRegion(t,s);break}o=t.mesh.connect(a.Lprev,o.Sym),i.fixUpperEdge(t,n,o)}a.Onext!==o&&(t.mesh.splice(o.Oprev,o),t.mesh.splice(a,o)),i.finishRegion(t,s),a=n.eUp,s=n}return a},i.addRightEdges=function(t,e,r,o,n,s){var a,l,c,h,p=!0;c=r;do pe(se.vertLeq(c.Org,c.Dst)),i.addRegionBelow(t,e,c.Sym),c=c.Onext;while(c!==o);for(n===null&&(n=i.regionBelow(e).eUp.Rprev),l=e,h=n;a=i.regionBelow(l),c=a.eUp.Sym,c.Org===h.Org;)c.Onext!==h&&(t.mesh.splice(c.Oprev,c),t.mesh.splice(h.Oprev,c)),a.windingNumber=l.windingNumber-c.winding,a.inside=i.isWindingInside(t,a.windingNumber),l.dirty=!0,!p&&i.checkForRightSplice(t,l)&&(i.addWinding(c,h),i.deleteRegion(t,l),t.mesh.delete(h)),p=!1,l=a,h=c;l.dirty=!0,pe(l.windingNumber-c.winding===a.windingNumber),s&&i.walkDirtyRegions(t,l)},i.spliceMergeVertices=function(t,e,r){t.mesh.splice(e,r)},i.vertexWeights=function(t,e,r){var o=se.vertL1dist(e,t),n=se.vertL1dist(r,t),s=.5*n/(o+n),a=.5*o/(o+n);t.coords[0]+=s*e.coords[0]+a*r.coords[0],t.coords[1]+=s*e.coords[1]+a*r.coords[1],t.coords[2]+=s*e.coords[2]+a*r.coords[2]},i.getIntersectData=function(t,e,r,o,n,s){e.coords[0]=e.coords[1]=e.coords[2]=0,e.idx=-1,i.vertexWeights(e,r,o),i.vertexWeights(e,n,s)},i.checkForRightSplice=function(t,e){var r=i.regionBelow(e),o=e.eUp,n=r.eUp;if(se.vertLeq(o.Org,n.Org)){if(se.edgeSign(n.Dst,o.Org,n.Org)>0)return!1;se.vertEq(o.Org,n.Org)?o.Org!==n.Org&&(t.pq.delete(o.Org.pqHandle),i.spliceMergeVertices(t,n.Oprev,o)):(t.mesh.splitEdge(n.Sym),t.mesh.splice(o,n.Oprev),e.dirty=r.dirty=!0)}else{if(se.edgeSign(o.Dst,n.Org,o.Org)<0)return!1;i.regionAbove(e).dirty=e.dirty=!0,t.mesh.splitEdge(o.Sym),t.mesh.splice(n.Oprev,o)}return!0},i.checkForLeftSplice=function(t,e){var r=i.regionBelow(e),o=e.eUp,n=r.eUp,s;if(pe(!se.vertEq(o.Dst,n.Dst)),se.vertLeq(o.Dst,n.Dst)){if(se.edgeSign(o.Dst,n.Dst,o.Org)<0)return!1;i.regionAbove(e).dirty=e.dirty=!0,s=t.mesh.splitEdge(o),t.mesh.splice(n.Sym,s),s.Lface.inside=e.inside}else{if(se.edgeSign(n.Dst,o.Dst,n.Org)>0)return!1;e.dirty=r.dirty=!0,s=t.mesh.splitEdge(n),t.mesh.splice(o.Lnext,n.Sym),s.Rface.inside=e.inside}return!0},i.checkForIntersect=function(t,e){var r=i.regionBelow(e),o=e.eUp,n=r.eUp,s=o.Org,a=n.Org,l=o.Dst,c=n.Dst,h,p,u=new Vo,d,m;if(pe(!se.vertEq(c,l)),pe(se.edgeSign(l,t.event,s)<=0),pe(se.edgeSign(c,t.event,a)>=0),pe(s!==t.event&&a!==t.event),pe(!e.fixUpperEdge&&!r.fixUpperEdge),s===a||(h=Math.min(s.t,l.t),p=Math.max(a.t,c.t),h>p))return!1;if(se.vertLeq(s,a)){if(se.edgeSign(c,s,a)>0)return!1}else if(se.edgeSign(l,a,s)<0)return!1;return i.debugEvent(t),se.intersect(l,s,c,a,u),pe(Math.min(s.t,l.t)<=u.t),pe(u.t<=Math.max(a.t,c.t)),pe(Math.min(c.s,l.s)<=u.s),pe(u.s<=Math.max(a.s,s.s)),se.vertLeq(u,t.event)&&(u.s=t.event.s,u.t=t.event.t),d=se.vertLeq(s,a)?s:a,se.vertLeq(d,u)&&(u.s=d.s,u.t=d.t),se.vertEq(u,s)||se.vertEq(u,a)?(i.checkForRightSplice(t,e),!1):!se.vertEq(l,t.event)&&se.edgeSign(l,t.event,u)>=0||!se.vertEq(c,t.event)&&se.edgeSign(c,t.event,u)<=0?c===t.event?(t.mesh.splitEdge(o.Sym),t.mesh.splice(n.Sym,o),e=i.topLeftRegion(t,e),o=i.regionBelow(e).eUp,i.finishLeftRegions(t,i.regionBelow(e),r),i.addRightEdges(t,e,o.Oprev,o,o,!0),!0):l===t.event?(t.mesh.splitEdge(n.Sym),t.mesh.splice(o.Lnext,n.Oprev),r=e,e=i.topRightRegion(e),m=i.regionBelow(e).eUp.Rprev,r.eUp=n.Oprev,n=i.finishLeftRegions(t,r,null),i.addRightEdges(t,e,n.Onext,o.Rprev,m,!0),!0):(se.edgeSign(l,t.event,u)>=0&&(i.regionAbove(e).dirty=e.dirty=!0,t.mesh.splitEdge(o.Sym),o.Org.s=t.event.s,o.Org.t=t.event.t),se.edgeSign(c,t.event,u)<=0&&(e.dirty=r.dirty=!0,t.mesh.splitEdge(n.Sym),n.Org.s=t.event.s,n.Org.t=t.event.t),!1):(t.mesh.splitEdge(o.Sym),t.mesh.splitEdge(n.Sym),t.mesh.splice(n.Oprev,o),o.Org.s=u.s,o.Org.t=u.t,o.Org.pqHandle=t.pq.insert(o.Org),i.getIntersectData(t,o.Org,s,l,a,c),i.regionAbove(e).dirty=e.dirty=r.dirty=!0,!1)},i.walkDirtyRegions=function(t,e){for(var r=i.regionBelow(e),o,n;;){for(;r.dirty;)e=r,r=i.regionBelow(r);if(!e.dirty&&(r=e,e=i.regionAbove(e),e===null||!e.dirty))return;if(e.dirty=!1,o=e.eUp,n=r.eUp,o.Dst!==n.Dst&&i.checkForLeftSplice(t,e)&&(r.fixUpperEdge?(i.deleteRegion(t,r),t.mesh.delete(n),r=i.regionBelow(e),n=r.eUp):e.fixUpperEdge&&(i.deleteRegion(t,e),t.mesh.delete(o),e=i.regionAbove(r),o=e.eUp)),o.Org!==n.Org)if(o.Dst!==n.Dst&&!e.fixUpperEdge&&!r.fixUpperEdge&&(o.Dst===t.event||n.Dst===t.event)){if(i.checkForIntersect(t,e))return}else i.checkForRightSplice(t,e);o.Org===n.Org&&o.Dst===n.Dst&&(i.addWinding(n,o),i.deleteRegion(t,e),t.mesh.delete(o),e=i.regionAbove(r))}},i.connectRightVertex=function(t,e,r){var o,n=r.Onext,s=i.regionBelow(e),a=e.eUp,l=s.eUp,c=!1;if(a.Dst!==l.Dst&&i.checkForIntersect(t,e),se.vertEq(a.Org,t.event)&&(t.mesh.splice(n.Oprev,a),e=i.topLeftRegion(t,e),n=i.regionBelow(e).eUp,i.finishLeftRegions(t,i.regionBelow(e),s),c=!0),se.vertEq(l.Org,t.event)&&(t.mesh.splice(r,l.Oprev),r=i.finishLeftRegions(t,s,null),c=!0),c){i.addRightEdges(t,e,r.Onext,n,n,!0);return}se.vertLeq(l.Org,a.Org)?o=l.Oprev:o=a,o=t.mesh.connect(r.Lprev,o),i.addRightEdges(t,e,o,o.Onext,o.Onext,!1),o.Sym.activeRegion.fixUpperEdge=!0,i.walkDirtyRegions(t,e)},i.connectLeftDegenerate=function(t,e,r){var o,n,s,a,l;if(o=e.eUp,se.vertEq(o.Org,r)){pe(!1),i.spliceMergeVertices(t,o,r.anEdge);return}if(!se.vertEq(o.Dst,r)){t.mesh.splitEdge(o.Sym),e.fixUpperEdge&&(t.mesh.delete(o.Onext),e.fixUpperEdge=!1),t.mesh.splice(r.anEdge,o),i.sweepEvent(t,r);return}pe(!1),e=i.topRightRegion(e),l=i.regionBelow(e),s=l.eUp.Sym,n=a=s.Onext,l.fixUpperEdge&&(pe(n!==s),i.deleteRegion(t,l),t.mesh.delete(s),s=n.Oprev),t.mesh.splice(r.anEdge,s),se.edgeGoesLeft(n)||(n=null),i.addRightEdges(t,e,s.Onext,a,n,!0)},i.connectLeftVertex=function(t,e){var r,o,n,s,a,l,c=new pl;if(c.eUp=e.anEdge.Sym,r=t.dict.search(c).key,o=i.regionBelow(r),!!o){if(s=r.eUp,a=o.eUp,se.edgeSign(s.Dst,e,s.Org)===0){i.connectLeftDegenerate(t,r,e);return}if(n=se.vertLeq(a.Dst,s.Dst)?r:o,r.inside||n.fixUpperEdge){if(n===r)l=t.mesh.connect(e.anEdge.Sym,s.Lnext);else{var h=t.mesh.connect(a.Dnext,e.anEdge);l=h.Sym}n.fixUpperEdge?i.fixUpperEdge(t,n,l):i.computeWinding(t,i.addRegionBelow(t,r,l)),i.sweepEvent(t,e)}else i.addRightEdges(t,r,e.anEdge,e.anEdge,null,!0)}},i.sweepEvent=function(t,e){t.event=e,i.debugEvent(t);for(var r=e.anEdge;r.activeRegion===null;)if(r=r.Onext,r===e.anEdge){i.connectLeftVertex(t,e);return}var o=i.topLeftRegion(t,r.activeRegion);pe(o!==null);var n=i.regionBelow(o),s=n.eUp,a=i.finishLeftRegions(t,n,null);a.Onext===s?i.connectRightVertex(t,o,a):i.addRightEdges(t,o,a.Onext,s,s,!0)},i.addSentinel=function(t,e,r,o){var n=new pl,s=t.mesh.makeEdge();s.Org.s=r,s.Org.t=o,s.Dst.s=e,s.Dst.t=o,t.event=s.Dst,n.eUp=s,n.windingNumber=0,n.inside=!1,n.fixUpperEdge=!1,n.sentinel=!0,n.dirty=!1,n.nodeUp=t.dict.insert(n)},i.initEdgeDict=function(t){t.dict=new wb(t,i.edgeLeq);var e=t.bmax[0]-t.bmin[0],r=t.bmax[1]-t.bmin[1],o=t.bmin[0]-e,n=t.bmax[0]+e,s=t.bmin[1]-r,a=t.bmax[1]+r;i.addSentinel(t,o,n,s),i.addSentinel(t,o,n,a)},i.doneEdgeDict=function(t){for(var e,r=0;(e=t.dict.min().key)!==null;)e.sentinel||(pe(e.fixUpperEdge),pe(++r===1)),pe(e.windingNumber===0),i.deleteRegion(t,e)},i.removeDegenerateEdges=function(t){var e,r,o,n=t.mesh.eHead;for(e=n.next;e!==n;e=r)r=e.next,o=e.Lnext,se.vertEq(e.Org,e.Dst)&&e.Lnext.Lnext!==e&&(i.spliceMergeVertices(t,o,e),t.mesh.delete(e),e=o,o=e.Lnext),o.Lnext===e&&(o!==e&&((o===r||o===r.Sym)&&(r=r.next),t.mesh.delete(o)),(e===r||e===r.Sym)&&(r=r.next),t.mesh.delete(e))},i.initPriorityQ=function(t){var e,r,o,n=0;for(o=t.mesh.vHead,r=o.next;r!==o;r=r.next)n++;for(n+=8,e=t.pq=new Sb(n,se.vertLeq),o=t.mesh.vHead,r=o.next;r!==o;r=r.next)r.pqHandle=e.insert(r);return r!==o?!1:(e.init(),!0)},i.donePriorityQ=function(t){t.pq=null},i.removeDegenerateFaces=function(t,e){var r,o,n;for(r=e.fHead.next;r!==e.fHead;r=o)o=r.next,n=r.anEdge,pe(n.Lnext!==n),n.Lnext.Lnext===n&&(i.addWinding(n.Onext,n),t.mesh.delete(n));return!0},i.computeInterior=function(t,e){e===void 0&&(e=!0);var r,o;if(i.removeDegenerateEdges(t),!i.initPriorityQ(t))return!1;for(i.initEdgeDict(t);(r=t.pq.extractMin())!==null;){for(;o=t.pq.min(),!(o===null||!se.vertEq(o,r));)o=t.pq.extractMin(),i.spliceMergeVertices(t,r.anEdge,o.anEdge);i.sweepEvent(t,r)}return t.event=t.dict.min().key.eUp.Org,i.debugEvent(t),i.doneEdgeDict(t),i.donePriorityQ(t),i.removeDegenerateFaces(t,t.mesh)?(e&&t.mesh.check(),!0):!1},i}(),Cb=function(){function i(){this.mesh=new Pu,this.normal=[0,0,0],this.sUnit=[0,0,0],this.tUnit=[0,0,0],this.bmin=[0,0],this.bmax=[0,0],this.windingRule=Me.ODD,this.dict=null,this.pq=null,this.event=null,this.vertexIndexCounter=0,this.vertices=[],this.vertexIndices=[],this.vertexCount=0,this.elements=[],this.elementCount=0}return i.prototype.dot_=function(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]},i.prototype.normalize_=function(t){var e=t[0]*t[0]+t[1]*t[1]+t[2]*t[2];if(!e)throw"Zero-size vector!";e=Math.sqrt(e),t[0]/=e,t[1]/=e,t[2]/=e},i.prototype.longAxis_=function(t){var e=0;return Math.abs(t[1])>Math.abs(t[0])&&(e=1),Math.abs(t[2])>Math.abs(t[e])&&(e=2),e},i.prototype.computeNormal_=function(t){var e,r,o,n,s,a,l=[0,0,0],c=[0,0,0],h=[0,0,0],p=[0,0,0],u=[0,0,0],d=[null,null,null],m=[null,null,null],g=this.mesh.vHead;e=g.next;for(var x=0;x<3;++x)n=e.coords[x],c[x]=n,m[x]=e,l[x]=n,d[x]=e;for(e=g.next;e!==g;e=e.next)for(var y=0;y<3;++y)n=e.coords[y],n<c[y]&&(c[y]=n,m[y]=e),n>l[y]&&(l[y]=n,d[y]=e);var v=0;if(l[1]-c[1]>l[0]-c[0]&&(v=1),l[2]-c[2]>l[v]-c[v]&&(v=2),c[v]>=l[v]){t[0]=0,t[1]=0,t[2]=1;return}for(a=0,r=m[v],o=d[v],h[0]=r.coords[0]-o.coords[0],h[1]=r.coords[1]-o.coords[1],h[2]=r.coords[2]-o.coords[2],e=g.next;e!==g;e=e.next)p[0]=e.coords[0]-o.coords[0],p[1]=e.coords[1]-o.coords[1],p[2]=e.coords[2]-o.coords[2],u[0]=h[1]*p[2]-h[2]*p[1],u[1]=h[2]*p[0]-h[0]*p[2],u[2]=h[0]*p[1]-h[1]*p[0],s=u[0]*u[0]+u[1]*u[1]+u[2]*u[2],s>a&&(a=s,t[0]=u[0],t[1]=u[1],t[2]=u[2]);a<=0&&(t[0]=t[1]=t[2]=0,t[this.longAxis_(h)]=1)},i.prototype.checkOrientation_=function(){for(var t=this.mesh.fHead,e,r=this.mesh.vHead,o,n=0,s=t.next;s!==t;s=s.next)if(o=s.anEdge,!(o.winding<=0))do n+=(o.Org.s-o.Dst.s)*(o.Org.t+o.Dst.t),o=o.Lnext;while(o!==s.anEdge);if(n<0){for(e=r.next;e!==r;e=e.next)e.t=-e.t;this.tUnit[0]=-this.tUnit[0],this.tUnit[1]=-this.tUnit[1],this.tUnit[2]=-this.tUnit[2]}},i.prototype.projectPolygon_=function(){var t=this.mesh.vHead,e=[0,0,0],r,o,n=!1;e[0]=this.normal[0],e[1]=this.normal[1],e[2]=this.normal[2],!e[0]&&!e[1]&&!e[2]&&(this.computeNormal_(e),n=!0),r=this.sUnit,o=this.tUnit;var s=this.longAxis_(e);r[s]=0,r[(s+1)%3]=1,r[(s+2)%3]=0,o[s]=0,o[(s+1)%3]=0,o[(s+2)%3]=e[s]>0?1:-1;for(var a=t.next;a!==t;a=a.next)a.s=this.dot_(a.coords,r),a.t=this.dot_(a.coords,o);n&&this.checkOrientation_();for(var l=!0,c=t.next;c!==t;c=c.next)l?(this.bmin[0]=this.bmax[0]=c.s,this.bmin[1]=this.bmax[1]=c.t,l=!1):(c.s<this.bmin[0]&&(this.bmin[0]=c.s),c.s>this.bmax[0]&&(this.bmax[0]=c.s),c.t<this.bmin[1]&&(this.bmin[1]=c.t),c.t>this.bmax[1]&&(this.bmax[1]=c.t))},i.prototype.addWinding_=function(t,e){t.winding+=e.winding,t.Sym.winding+=e.Sym.winding},i.prototype.tessellateMonoRegion_=function(t,e){var r,o;if(r=e.anEdge,!(r.Lnext!==r&&r.Lnext.Lnext!==r))throw"Mono region invalid";for(;se.vertLeq(r.Dst,r.Org);r=r.Lprev);for(;se.vertLeq(r.Org,r.Dst);r=r.Lnext);o=r.Lprev;for(var n=void 0;r.Lnext!==o;)if(se.vertLeq(r.Dst,o.Org)){for(;o.Lnext!==r&&(se.edgeGoesLeft(o.Lnext)||se.edgeSign(o.Org,o.Dst,o.Lnext.Dst)<=0);)n=t.connect(o.Lnext,o),o=n.Sym;o=o.Lprev}else{for(;o.Lnext!==r&&(se.edgeGoesRight(r.Lprev)||se.edgeSign(r.Dst,r.Org,r.Lprev.Org)>=0);)n=t.connect(r,r.Lprev),r=n.Sym;r=r.Lnext}if(o.Lnext===r)throw"Mono region invalid";for(;o.Lnext.Lnext!==r;)n=t.connect(o.Lnext,o),o=n.Sym;return!0},i.prototype.tessellateInterior_=function(t){for(var e,r=t.fHead.next;r!==t.fHead;r=e)if(e=r.next,r.inside&&!this.tessellateMonoRegion_(t,r))return!1;return!0},i.prototype.discardExterior_=function(t){for(var e,r=t.fHead.next;r!==t.fHead;r=e)e=r.next,r.inside||t.zapFace(r)},i.prototype.setWindingNumber_=function(t,e,r){for(var o,n=t.eHead.next;n!==t.eHead;n=o)o=n.next,n.Rface.inside!==n.Lface.inside?n.winding=n.Lface.inside?e:-e:r?t.delete(n):n.winding=0},i.prototype.getNeighbourFace_=function(t){return!t.Rface||!t.Rface.inside?-1:t.Rface.n},i.prototype.outputPolymesh_=function(t,e,r,o){var n,s=0,a=0,l;r>3&&t.mergeConvexFaces(r);for(var c=t.vHead.next;c!==t.vHead;c=c.next)c.n=-1;for(var h=t.fHead.next;h!==t.fHead;h=h.next)if(h.n=-1,!!h.inside){n=h.anEdge,l=0;do{var c=n.Org;c.n===-1&&(c.n=a,a++),l++,n=n.Lnext}while(n!==h.anEdge);if(l>r)throw"Face vertex greater that support polygon";h.n=s,++s}this.elementCount=s,e===Ue.CONNECTED_POLYGONS&&(s*=2),this.elements=[],this.elements.length=s*r,this.vertexCount=a,this.vertices=[],this.vertices.length=a*o,this.vertexIndices=[],this.vertexIndices.length=a;for(var c=t.vHead.next;c!==t.vHead;c=c.next)if(c.n!==-1){var p=c.n*o;this.vertices[p+0]=c.coords[0],this.vertices[p+1]=c.coords[1],o>2&&(this.vertices[p+2]=c.coords[2]),this.vertexIndices[c.n]=c.idx}for(var u=0,h=t.fHead.next;h!==t.fHead;h=h.next)if(!!h.inside){n=h.anEdge,l=0;do{var c=n.Org;this.elements[u++]=c.n,l++,n=n.Lnext}while(n!==h.anEdge);for(var d=l;d<r;++d)this.elements[u++]=-1;if(e===Ue.CONNECTED_POLYGONS){n=h.anEdge;do this.elements[u++]=this.getNeighbourFace_(n),n=n.Lnext;while(n!==h.anEdge);for(var m=l;m<r;++m)this.elements[u++]=-1}}},i.prototype.outputContours_=function(t,e){var r,o,n=0,s=0;this.vertexCount=0,this.elementCount=0;for(var a=t.fHead.next;a!==t.fHead;a=a.next)if(!!a.inside){o=r=a.anEdge;do this.vertexCount++,r=r.Lnext;while(r!==o);this.elementCount++}this.elements=[],this.elements.length=this.elementCount*2,this.vertices=[],this.vertices.length=this.vertexCount*e,this.vertexIndices=[],this.vertexIndices.length=this.vertexCount;var l=0,c=0,h=0;n=0;for(var a=t.fHead.next;a!==t.fHead;a=a.next)if(!!a.inside){s=0,o=r=a.anEdge;do this.vertices[l++]=r.Org.coords[0],this.vertices[l++]=r.Org.coords[1],e>2&&(this.vertices[l++]=r.Org.coords[2]),this.vertexIndices[c++]=this.vertexIdCallback?this.vertexIdCallback(r):r.Org.idx,s++,r=r.Lnext;while(r!==o);this.elements[h++]=n,this.elements[h++]=s,n+=s}},i.prototype.addContour=function(t,e){this.mesh===null&&(this.mesh=new Pu),t<2&&(t=2),t>3&&(t=3);for(var r=null,o=0;o<e.length;o+=t)r===null?(r=this.mesh.makeEdge(),this.mesh.splice(r,r.Sym)):(this.mesh.splitEdge(r),r=r.Lnext),r.Org.coords[0]=e[o+0],r.Org.coords[1]=e[o+1],t>2?r.Org.coords[2]=e[o+2]:r.Org.coords[2]=0,r.Org.idx=this.vertexIndexCounter++,this.edgeCreateCallback&&this.edgeCreateCallback(r),r.winding=1,r.Sym.winding=-1},i.prototype.tesselate=function(t,e,r,o,n,s){if(t===void 0&&(t=Me.ODD),e===void 0&&(e=Ue.POLYGONS),s===void 0&&(s=!0),this.vertices=[],this.elements=[],this.vertexIndices=[],this.vertexIndexCounter=0,n&&(this.normal[0]=n[0],this.normal[1]=n[1],this.normal[2]=n[2]),this.windingRule=t,o<2&&(o=2),o>3&&(o=3),!this.mesh)return!1;this.projectPolygon_(),Nb.computeInterior(this,s);var a=this.mesh;return e===Ue.BOUNDARY_CONTOURS?this.setWindingNumber_(a,1,!0):this.tessellateInterior_(a),s&&a.check(),e===Ue.BOUNDARY_CONTOURS?this.outputContours_(a,o):this.outputPolymesh_(a,e,r,o),!0},i}();function Zr(i){var t=i.windingRule,e=t===void 0?Me.ODD:t,r=i.elementType,o=r===void 0?Ue.POLYGONS:r,n=i.polySize,s=n===void 0?3:n,a=i.vertexSize,l=a===void 0?2:a,c=i.normal,h=c===void 0?[0,0,1]:c,p=i.contours,u=p===void 0?[]:p,d=i.strict,m=d===void 0?!0:d,g=i.debug,x=g===void 0?!1:g;if(!u&&m)throw new Error("Contours can't be empty");if(!!u){var y=new Cb;i.edgeCreateCallback&&(y.edgeCreateCallback=i.edgeCreateCallback),i.vertexIdCallback&&(y.vertexIdCallback=i.vertexIdCallback);for(var v=0;v<u.length;v++)y.addContour(l||2,u[v]);return y.tesselate(e,o,s,l,h,m),{vertices:y.vertices,vertexIndices:y.vertexIndices,vertexCount:y.vertexCount,elements:y.elements,elementCount:y.elementCount,mesh:x?y.mesh:void 0}}}var o3=Me.ODD,n3=Me.NONZERO,i3=Me.POSITIVE,s3=Me.NEGATIVE,a3=Me.ABS_GEQ_TWO,l3=Ue.POLYGONS,c3=Ue.CONNECTED_POLYGONS,h3=Ue.BOUNDARY_CONTOURS;var Fo=class extends Tb{constructor(e,r=12,o={}){super();this.type="ShapeGeometry";this.windingRule=Me.ODD;this.elementType=Ue.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=r,this._triangulationOptions=Object.assign({windingRule:Me.ODD,elementType:Ue.POLYGONS,polySize:3,vertexSize:2,strict:!0},o);let n=this._shape.extractShapePointsToFlatArray([],this._curveSegments),s=this._shape.shapeHoles.map(m=>m.extractShapePointsToFlatArray([],this._curveSegments)),a,l=!0,c=!0,h,p;for(let m=0,g=n.length/2;m<g;m++){let x=m*2,y=n[x+0],v=n[x+1];if(h!==void 0&&y!==h&&(l=!1),p!==void 0&&v!==p&&(c=!1),h=y,p=v,!l&&!c)break}!l&&!c&&(a=Zr({contours:[n,...s],windingRule:this._triangulationOptions.windingRule,elementType:this._triangulationOptions.elementType,polySize:this._triangulationOptions.polySize,vertexSize:this._triangulationOptions.vertexSize,strict:this._triangulationOptions.strict}));let u=a?.vertexCount??1,d=a?.elementCount??1;if(this._positionAttribute=new Ps(new Float32Array(u*3),3),this._normalAttribute=new Ps(new Float32Array(u*3),3),this._uvAttribute=new Ps(new Float32Array(u*2),2),this._indexAttribute=new Ps(new Uint32Array(d*3),1),a){let m=1/0,g=-1/0,x=1/0,y=-1/0;for(let S=0,b=u;S<b;S++){let B=S*2,w=a.vertices[B+0],f=a.vertices[B+1];w<m&&(m=w),w>g&&(g=w),f<x&&(x=f),f>y&&(y=f)}let v=g-m,P=y-x;for(let S=0,b=u;S<b;S++){let B=S*2,w=a.vertices[B+0],f=a.vertices[B+1],D=(w-m)/v,C=(f-x)/P;this._positionAttribute.setXYZ(S,w,f,0),this._normalAttribute.setXYZ(S,0,0,1),this._uvAttribute.setXY(S,D,C)}for(let S=0,b=d;S<b;S++){let B=S*3,w=a.elements[B+0],f=a.elements[B+1],D=a.elements[B+2];this._indexAttribute.setX(B+0,w),this._indexAttribute.setX(B+1,f),this._indexAttribute.setX(B+2,D)}}this.setAttribute("position",this._positionAttribute),this.setAttribute("normal",this._normalAttribute),this.setAttribute("uv",this._uvAttribute),this.setIndex(this._indexAttribute),this.setDrawRange(0,(a?.elementCount??1)*3)}clone(){let e=new Fo(this._shape,this._curveSegments);return e.userData=Cn(this.userData),e}};import{BufferAttribute as As,BufferGeometry as Lb}from"three";var Ms=class{constructor(t=256,e=!1){this.capacity=t,this.size=0,this.debug=e,this.debug&&console.log(`allocating with cap ${t}`);let r=t*Ms.eSize;this.buffer=new ArrayBuffer(r);let o=Float32Array.BYTES_PER_ELEMENT,n=0;this.positions=new Float32Array(this.buffer,n*o,3*t),n+=3*t,this.normals=new Float32Array(this.buffer,n*o,3*t),n+=3*t,this.uvs=new Float32Array(this.buffer,n*o,2*t)}realloc(t,e=!1){if(t<this.size)throw Error("cannot shrink buffer");if(t<=this.capacity&&!e)return;this.debug&&console.log(`resizing from ${this.capacity} \u2192 ${t}`);let r=t*Ms.eSize,o=new ArrayBuffer(r),n=Float32Array.BYTES_PER_ELEMENT,s=0,a=new Float32Array(o,s*n,3*t);s+=3*t;let l=new Float32Array(o,s*n,3*t);s+=3*t;let c=new Float32Array(o,s*n,2*t);a.set(this.positions.slice(0,this.size*3)),l.set(this.normals.slice(0,this.size*3)),c.set(this.uvs.slice(0,this.size*2)),this.buffer=o,this.positions=a,this.normals=l,this.uvs=c,this.capacity=t}get(t=1){let e=this.size+t;if(e>this.capacity){let o=this.capacity;for(;e>o;)o*=2;this.realloc(o)}let r=this.size;return this.size=e,r}reserve(t){let e=this.size+t;e>this.capacity&&this.realloc(e)}shrink(){this.debug&&console.log(`shrinking ${this.capacity} \u2192 ${this.size}`),this.realloc(this.size,!0)}},Fn=Ms;Fn.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var ul=(i,t)=>([e,r])=>(r<e&&(r+=t),(i>=e?i:i+t)<=r),Uo=class extends Lb{constructor(e,r,o=0,n=12,s=3){super();this.type="ShapeGeometry";this.vertexCache={};this._shape=e,this._depth=r,this._bevel=o,this._curveSegments=n,this._bevelSegmentsInput=s,o<=0?(this._bevelSize=0,this._bevelSegments=0):(this._bevelSize=Math.min(o,r/2-1e-12),this._bevelSegments=Math.floor(s));let a=this._shape.extractShapePointsToFlatArray([],n),l=this._shape.shapeHoles.map(w=>{let f=w.extractShapePointsToFlatArray([],n),D=[];for(let C=f.length-1;C>=1;C-=2){let I=f[C-1],L=f[C-0];D.push(I,L)}return D}),c=Zr({windingRule:Me.ODD,elementType:Ue.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[a]}),h=Zr({windingRule:Me.ODD,elementType:Ue.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...l]});if(!c)throw new Error("error generating geometry");let p=c.elementCount;if(h){c.elementCount+=h.elementCount;for(let w=0;w<h.elements.length;w++){let f=h.elements[w],D=w%2===0?c.vertexCount:0;c.elements.push(f+D)}for(let w=0;w<h.vertexIndices.length;w++){let f=h.vertexIndices[w],D=c.vertexCount;c.vertexIndices.push(f+D)}for(let w=0;w<h.vertices.length;w++){let f=h.vertices[w];c.vertices.push(f)}}let u=1/0,d=-1/0,m=1/0,g=-1/0;for(let w=0,f=c.vertexCount;w<f;w++){let D=w*2,C=c.vertices[D+0],I=c.vertices[D+1];C<u&&(u=C),C>d&&(d=C),I<m&&(m=I),I>g&&(g=I)}this._minX=u,this._minY=m,this._width=d-u,this._height=g-m;let x=c.vertexCount*2*(2+this._bevelSegments);this._buffer=new Fn(x);let y=[],v=[];for(let w=c.elementCount-1;w>=0;w--){let f=w>=p,D=w*2,C=c.elements[D+0],I=c.elements[D+1],L=C+I,M={start:C,count:I,normals:[],continuous:[],concave:[]},k=C,W=L-1,oe=C+1,he=this._shape.roundedCurves.length;do{let z=k-C,E=c.vertices[W*2+0],_=c.vertices[W*2+1],A=c.vertices[k*2+0],G=c.vertices[k*2+1],J=c.vertices[oe*2+0],j=c.vertices[oe*2+1],V=A-E,F=G-_,O=Math.sqrt(V*V+F*F);V/=O,F/=O;let q=A-J,Z=G-j,ee=Math.sqrt(q*q+Z*Z);q/=ee,Z/=ee,M.normals[z*2+0]=-Z,M.normals[z*2+1]=q,M.concave[z]=V*Z-F*q>0;let H=c.vertexIndices[k];if(Array.isArray(H))M.continuous[z]=!1;else{let[Q,$]=this._shape.getCurveIndexFromVertexId(H-1,!0);if($>0&&$<1)M.continuous[z]=!0;else{let re=$===1?Q+1:Q-1;re=(re+he)%he;let le=$===1?0:1,ne=this._shape.roundedCurves[Q].getTangent($),me=this._shape.roundedCurves[re].getTangent(le);M.continuous[z]=ne.dot(me)>.95}}f&&(M.normals[z*2+0]*=-1,M.normals[z*2+1]*=-1),[W,k,oe]=[k,oe,oe+1],oe>=L&&(oe-=I)}while(oe!==C+1);let ie=[];ie.push({bevelI:0,angle:0,size:0,boundary:{vertices:c.vertices.slice(C*2,L*2),vertexCount:I,vertexIndices:new Array(I).fill(!0).map((z,E)=>[E,E]),elements:[0,I],elementCount:1,mesh:null},reverseMap:[],insetPoints:c.vertices.slice(C*2,L*2)});for(let z=1;z<=this._bevelSegments;z++){let E=z/this._bevelSegments*Math.PI/2,_=(1-Math.cos(E))*this._bevelSize,A=[],G=[],J=[],j=[],V=0;for(let O=0;O<I;O++){let q=O*2,Z=(O-1+I)%I*2,ee=c.vertices[M.start*2+q+0],H=c.vertices[M.start*2+q+1],Q=-M.normals[Z+0]*_,$=-M.normals[Z+1]*_,re=-M.normals[q+0]*_,le=-M.normals[q+1]*_;if(M.concave[O]||!M.concave[O]&&f){let ne=Math.atan2($,Q),me=Math.atan2(le,re);me>ne&&(me-=Math.PI*2);let _e=me-ne;if(M.continuous[O]||f){let ge=ne+_e/2,ze=Math.cos(ge)*_,Se=Math.sin(ge)*_;A[2*V+0]=ee+ze*(f?-1:1),A[2*V+1]=H+Se*(f?-1:1),j[V]=O,V++}else{let ge=Math.max(1,Math.floor(n/4*Math.abs(_e)/Math.PI));for(let ze=0;ze<=ge;ze++){let Se=ne+_e*(ze/ge),lt=Math.cos(Se)*_,Nt=Math.sin(Se)*_;A[2*V+0]=ee+lt,A[2*V+1]=H+Nt,j[V]=O,V++}}}else A[2*V+0]=ee+Q,A[2*V+1]=H+$,j[V]=O,G[O]=V,V++,A[2*V+0]=ee,A[2*V+1]=H,j[V]=O,V++,A[2*V+0]=ee+re,A[2*V+1]=H+le,j[V]=O,J[O]=V,V++}let F=Zr({windingRule:Me.POSITIVE,elementType:Ue.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[A],edgeCreateCallback:O=>{let Z=O.Org.idx,ee=j[Z],H=j[(Z+1)%j.length];O.idx=[ee,H],O.Sym.idx=[H,ee]},vertexIdCallback:O=>{let q=O.Lprev.idx;return[q?q[1]:0,O.idx[0]]}});if(!F)throw console.log("Error"),new Error(`error generating bevel geometry for ${z}'th loop`);if(!F.vertexCount)break;for(let O=0;O<F.vertexIndices.length;O++){let[q,Z]=F.vertexIndices[O];if(q===Z)continue;let ee=Z;Z<q&&(ee+=I);for(let H=q;H<ee;H++){let Q=H%I,$=(H+1)%I;if(!M.continuous[Q]||!M.continuous[$]){F.vertexIndices[O]=[q,Q],F.vertexIndices.splice(O+1,0,[$,Z]),F.vertices.splice((O+1)*2,0,F.vertices[O*2],F.vertices[O*2+1]);break}}}ie.push({bevelI:z,angle:E,size:_,boundary:F,reverseMap:j,insetPoints:A})}let Y=(z,E,_)=>{let A=0,G=z.boundary.vertexIndices.length;for(;A<G&&_(z.boundary.vertexIndices[E]);)E=(E+1)%G,A++;return A},U=y.length;for(let z=1;z<ie.length;z++){let E=ie[z-1],_=ie[z],A=E.boundary.vertexIndices.length,G=_.boundary.vertexIndices.length;if(!A||!G)break;let J=M.concave.length,j=0,V=ul(j,I);for(;!E.boundary.vertexIndices.filter(V).length||!_.boundary.vertexIndices.filter(V).length;)j++,V=ul(j,I);let F=E.boundary.vertexIndices.findIndex(V),O=_.boundary.vertexIndices.findIndex(V);do F=(F+1)%A;while(V(E.boundary.vertexIndices[F]));do O=(O+1)%G;while(V(_.boundary.vertexIndices[O]));j=(j+1)%I;let q=j,Z=this.buildBevelVert(M,E,(F-1+A)%A),ee=this.buildBevelVert(M,_,(O-1+G)%G),H=Z,Q=ee,$,re,le=!1;do{V=ul(j,I);let ne=Y(E,F,V),me=Y(_,O,V),_e=le;if(le=!1,ne&&!me){for(let ge=0;ge<ne;ge++)$=this.buildBevelVert(M,E,(F+ge)%A,ge/(ne-1)),y.push(H.topN,$.topP,Q.topN),y.push($.bottomP,H.bottomN,Q.bottomN),H=$;le=!0}else if(!ne&&me)for(let ge=0;ge<me;ge++)re=this.buildBevelVert(M,_,(O+ge)%G,ge/(me-1)),y.push(Q.topN,H.topP,re.topP),y.push(H.bottomP,Q.bottomN,re.bottomP),Q=re;else if(ne&&me)if($=this.buildBevelVert(M,E,F,0),re=this.buildBevelVert(M,_,O,0),_e?(y.push(H.topN,re.topP,Q.topN),y.push(H.topN,$.topP,re.topP),y.push(re.bottomP,H.bottomN,Q.bottomN),y.push(re.bottomP,$.bottomP,H.bottomN)):(y.push(Q.topN,H.topN,$.topP),y.push(Q.topN,$.topP,re.topP),y.push($.bottomP,H.bottomN,Q.bottomN),y.push($.bottomP,Q.bottomN,re.bottomP)),H=$,Q=re,ne===me)for(let ge=1;ge<ne;ge++)$=this.buildBevelVert(M,E,(F+ge)%A,ge/(ne-1)),re=this.buildBevelVert(M,_,(O+ge)%G,ge/(me-1)),y.push(H.topN,$.topP,Q.topN),y.push(Q.topN,$.topP,re.topP),y.push($.bottomP,H.bottomN,Q.bottomN),y.push($.bottomP,Q.bottomN,re.bottomP),H=$,Q=re;else if(ne>me){let ge=ne/me,ze=0;for(let Se=1;Se<ne;Se++)$=this.buildBevelVert(M,E,(F+Se)%A,Se/(ne-1)),y.push(H.topN,$.topP,Q.topN),y.push($.bottomP,H.bottomN,Q.bottomN),H=$,Se>(ze+1)*ge&&(ze++,re=this.buildBevelVert(M,_,(O+ze)%G,ze/(me-1)),y.push(Q.topN,$.topP,re.topP),y.push($.bottomP,Q.bottomN,re.bottomP),Q=re)}else{let ge=me/ne,ze=0;for(let Se=1;Se<me;Se++)re=this.buildBevelVert(M,_,(O+Se)%G,Se/(me-1)),y.push(Q.topN,$.topP,re.topP),y.push($.bottomP,Q.bottomN,re.bottomP),Q=re,Se>(ze+1)*ge&&(ze++,$=this.buildBevelVert(M,E,(F+ze)%A,ze/(ne-1)),y.push(H.topN,$.topP,Q.topN),y.push($.bottomP,H.bottomN,Q.bottomN),H=$)}F=(F+ne)%A,O=(O+me)%G,j=(j+1)%J}while(j!==q)}{let z=ie[0];for(let E=0,_=z.boundary.vertexCount;E<_;E++){let A=this.buildBevelVert(M,z,E),G=this.buildBevelVert(M,z,(E+1)%_);y.push(G.topP,A.topN,A.bottomN),y.push(G.topP,A.bottomN,G.bottomP)}}if(f){let z=[];for(let E=y.length-1;E>=U+2;E-=3){let _=y[E-2],A=y[E-1],G=y[E-0];z.push(G,A,_)}y.splice(U,y.length-U,...z)}if(f){let z=[];for(let E=ie[ie.length-1].boundary.vertices.length-1;E>=1;E-=2){let _=ie[ie.length-1].boundary.vertices[E-1],A=ie[ie.length-1].boundary.vertices[E-0];z.push(_,A)}v.push(z)}if(!f){let z=ie[ie.length-1],E=Zr({windingRule:ie.length>1?Me.POSITIVE:Me.ODD,elementType:Ue.POLYGONS,vertexSize:2,strict:!0,contours:[z.insetPoints,...v]});if(!E)throw new Error("Error generating geometry for surface");l.length===0&&Object.assign(this,{capStartIndex:y.length});for(let _=0;_<E.elementCount*3;_+=3){let A=this.buildSurfaceVert(E,E.elements[_+0]),G=this.buildSurfaceVert(E,E.elements[_+1]),J=this.buildSurfaceVert(E,E.elements[_+2]);y.push(A.top,G.top,J.top),y.push(J.bottom,G.bottom,A.bottom)}}this.vertexCache={}}this._buffer.shrink();let P=new As(Uint32Array.from(y),1),S=new As(this._buffer.positions,3),b=new As(this._buffer.normals,3),B=new As(this._buffer.uvs,2);S.needsUpdate=!0,b.needsUpdate=!0,B.needsUpdate=!0,P.needsUpdate=!0,this.setAttribute("position",S),this.setAttribute("normal",b),this.setAttribute("uv",B),this.setIndex(P)}buildSurfaceVert(e,r){let o=r.toString();if(o in this.vertexCache)return this.vertexCache[o];let n=e.vertices[r*2+0],s=e.vertices[r*2+1],a=(n-this._minX)/this._width,l=(s-this._minY)/this._height,c=this._buffer.get(2),h=c*3,p=c*2,u={top:c+0,bottom:c+1};return this._buffer.positions[h+0]=n,this._buffer.positions[h+1]=s,this._buffer.positions[h+2]=this._depth,this._buffer.normals[h+0]=0,this._buffer.normals[h+1]=0,this._buffer.normals[h+2]=1,this._buffer.uvs[p+0]=a,this._buffer.uvs[p+1]=l,this._buffer.positions[h+3]=n,this._buffer.positions[h+4]=s,this._buffer.positions[h+5]=0,this._buffer.normals[h+3]=0,this._buffer.normals[h+4]=0,this._buffer.normals[h+5]=-1,this._buffer.uvs[p+2]=a,this._buffer.uvs[p+3]=l,this.vertexCache[o]=u,u}buildBevelVert(e,r,o,n=1){let s=`${r.bevelI}:${o}`;if(s in this.vertexCache)return this.vertexCache[s];let[a,l]=r.boundary.vertexIndices[o],c,h,p,u;a!==l?(h=a,c=l,u=!1,p=e.continuous[h]&&e.continuous[c]):(c=a,h=(c-1+e.count)%e.count,u=e.concave[c]&&r.bevelI>0,p=e.continuous[c]||u);let d=Math.cos(r.angle),m=Math.sin(r.angle),g=o*2,x=c*2,y=h*2,v=r.boundary.vertices[g+0],P=r.boundary.vertices[g+1],S=(1-m)*this._bevelSize,b=(v-this._minX)/this._width,B=(P-this._minY)/this._height,w=e.normals[x+0],f=e.normals[x+1],D=e.normals[y+0],C=e.normals[y+1];if(u){let W=D-w,oe=C-f;w=w+W*(1-n),f=f+oe*(1-n);let he=Math.sqrt(w*w+f*f);w/=he,f/=he}let I=this._buffer.get(p?2:4),L=I*3,M=I*2,k={i:o,fi:c,topP:I+0,topN:I+0,bottomP:I+1,bottomN:I+1};return this._buffer.positions[L+0]=v,this._buffer.positions[L+1]=P,this._buffer.positions[L+2]=this._depth-S,this._buffer.normals[L+0]=w*d,this._buffer.normals[L+1]=f*d,this._buffer.normals[L+2]=m,this._buffer.uvs[M+0]=b,this._buffer.uvs[M+1]=B,this._buffer.positions[L+3]=v,this._buffer.positions[L+4]=P,this._buffer.positions[L+5]=S,this._buffer.normals[L+3]=w*d,this._buffer.normals[L+4]=f*d,this._buffer.normals[L+5]=-m,this._buffer.uvs[M+2]=B,this._buffer.uvs[M+3]=b,p||(I+=2,L+=6,M+=4,k.topP=I+0,k.bottomP=I+1,this._buffer.positions[L+0]=v,this._buffer.positions[L+1]=P,this._buffer.positions[L+2]=this._depth-S,this._buffer.normals[L+0]=D*d,this._buffer.normals[L+1]=C*d,this._buffer.normals[L+2]=m,this._buffer.uvs[M+0]=b,this._buffer.uvs[M+1]=B,this._buffer.positions[L+3]=v,this._buffer.positions[L+4]=P,this._buffer.positions[L+5]=S,this._buffer.normals[L+3]=D*d,this._buffer.normals[L+4]=C*d,this._buffer.normals[L+5]=-m,this._buffer.uvs[M+2]=B,this._buffer.uvs[M+3]=b),this.vertexCache[s]=k,k}clone(){let e=new Uo(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=Cn(this.userData),e}};var Ke=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,subdivisions:40,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3},i.parameters),r=Math.abs(e.width),o=Math.abs(e.height??e.width),n=Math.abs(e.depth??0),s=i.shape??t?.shape,a=s?.roundness??e.roundness;s!==void 0&&(s instanceof ve?(s.width!==r||s.height!==o)&&s.applySize(r,o):s=new ve(r,o).fromJSON(s),i.parameters?.roundness!==void 0&&i.parameters?.roundness>0&&s.update(!1));let l=s??new ve(r,o);return{parameters:Object.assign(e,{width:r,height:o,depth:n,roundness:a}),shape:l}}static build(i){let{depth:t,extrudeBevelSize:e,extrudeBevelSegments:r,subdivisions:o,roundness:n}=i.parameters;i.shape.roundness=n;let s;return t<=0?s=new Fo(i.shape,o):s=new Uo(i.shape,t,e,o,r),Object.assign(s,{userData:{...i,type:"VectorGeometry"}})}};import{MathUtils as _u,Vector2 as Bu}from"three";var Eu=Math.PI*2,Gu=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:64,angle:360,innerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1},i.parameters);return{shape:i.shape&&i.shape instanceof ve?i.shape:new ve,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(i){let{width:t,height:e,spikes:r,angle:o,innerRadius:n,depth:s,extrudeBevelSize:a,extrudeBevelSegments:l}=i.parameters,c=i.shape,h=t*.5,p=e*.5,u=Ib(c,h,p,o*Math.PI/180,r,n);c.isClosed=!0,c.update();let d=Ke.create({shape:c,parameters:{subdivisions:u,depth:s,extrudeBevelSize:a,extrudeBevelSegments:l}});return Object.assign(d,{userData:{...i,type:"EllipseGeometry"}})}};function Ib(i,t,e,r,o,n){if(r>=Eu)return o>30||o%4===0?(Mb(i,t,e,n),Math.round(o/4)):Du(i,r,o,t,e,n);let s={x:0,y:e},a=r+Math.PI*.5,l={x:Math.cos(a)*t,y:Math.sin(a)*e},c=Iu({px:s.x,py:s.y,cx:l.x,cy:l.y,rx:t,ry:e,largeArcFlag:r>Math.PI,sweepFlag:!0});return o>30||o%c.length===0?Pb(i,s.x,s.y,c,o,t,e,n):Du(i,r,o,t,e,n)}function Pb(i,t,e,r,o,n,s,a){let l=Math.round(o/r.length);i.addPoint(jo(t,e));for(let c=0,h=r.length;c<h;c++){let p=r[c],u=i.points[c],d=jo(p.x,p.y);u.controls[1].position.set(p.x1,p.y1),d.controls[0].position.set(p.x2,p.y2),i.addPoint(d)}return a>0?Ru(i,n,s,a):i.addPoint(jo(0,0)),l}function Du(i,t,e,r,o,n){let s=-t/e;for(let a=0;a<=e;a++){let l=s*a,c=Math.sin(l)*r,h=Math.cos(l)*o;i.addPoint(jo(c,h))}return t<Eu?n>0?Ru(i,r,o,n):i.addPoint(jo(0,0)):(i.removePoint(i.points[i.points.length-1]),n>0&&zu(i,r,o,n)),1}function Mb(i,t,e,r=0,o=0,n=0){let s=.5522847498,a=t*s,l=e*s;i.addPoint(Os(o-t,n,o-t,n-l,o-t,n+l)),i.addPoint(Os(o,n+e,o-a,n+e,o+a,n+e)),i.addPoint(Os(o+t,n,o+t,n+l,o+t,n-l)),i.addPoint(Os(o,n-e,o+a,n-e,o-a,n-e)),r>0&&zu(i,t,e,r)}function jo(i,t){return new Gt(_u.generateUUID(),new Bu(i,t))}function Os(i,t,e,r,o,n){let s=jo(i,t);return s.controls[0].position.set(e,r),s.controls[1].position.set(o,n),s}function Ru(i,t,e,r){Vu(i,t,e,r).forEach(n=>i.addPoint(n))}function zu(i,t,e,r){let o=Vu(i,t,e,r),n=new ve;o.forEach(s=>n.addPoint(s)),n.isClosed=!0,i.shapeHoles.push(n)}function Vu(i,t,e,r){let o=r*t/100,n=o*(Math.abs(e)/Math.abs(t)),s=new Bu(o/t,n/e),a=i.points.map(l=>{let c=l.clone();return c.uuid=_u.generateUUID(),c}).reverse();return a.forEach(l=>{l.position.multiply(s);let c=l.controls[0].position.clone().multiply(s),h=l.controls[1].position.clone().multiply(s);l.controls[0].position.copy(h),l.controls[1].position.copy(c)}),a}import{BufferGeometry as Ab,Float32BufferAttribute as dl,Vector3 as Fu}from"three";var Uu=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,revolutions:2,segments:40,pathRadius:10,pathType:0,pathSegments:30,cornerRadius:30,cornerSegments:4},i.parameters),r=Math.abs(e.width),o=Math.abs(e.height??r),n=Math.abs(e.depth??r),s=Math.abs(Math.min(r,n))/2;return{parameters:Object.assign(e,{width:r,height:o,depth:n,radius:s,segments:Math.round(e.segments),pathSegments:Math.round(e.pathSegments),cornerSegments:Math.round(e.cornerSegments)})}}static build(i){let{width:t,height:e,depth:r,radius:o,revolutions:n,segments:s,pathRadius:a,pathType:l,pathSegments:c,cornerRadius:h,cornerSegments:p}=i.parameters,u=new Un(!1,t,e,r,o,n,s,a,l,c,h,p);return Object.assign(u,{userData:{...i,type:"HelixGeometry"}})}},Un=class extends Ab{constructor(t=!0,e=1,r=1,o=1,n=1,s=1,a=1,l=1,c=1,h=1,p=1,u=1){super();let d=t&&s===1;d&&(u=0),p>100&&(p=100);let m=()=>new Fu,g=new Fu,x=m(),y=m(),v=m(),P,S,b,B,w,f,D,C,I=m(),L=m(),M=m(),k=m(),W=m(),oe=m(),he=m(),ie=m(),Y=r-2*l+.001,U=Y/s,z=Math.ceil(a*s),E=z+1,_=Y/z,A=-Y/2,G=h+1,J=2*Math.PI/h,j=Math.PI/2/u,V=.01,F=Math.min((1-p/100)*l,l-V),O=l-F,q=0,Z=2,ee=u*Z+Z,H=G*ee/Z,Q=H+G*E,$=G*(E+ee),[re,le,ne]=[3,3,2].map(Ee=>Array($*Ee).fill(0)),me=[],_e=n-l;function ge(Ee,ft){let Wt=Math.PI/2;f=ft*_,C=2*Math.PI*(f%U)/U+Wt,f+=A,D=Math.sin(C)*_e,w=Math.cos(C)*_e,t?Ee.set(w,D,f):Ee.set(w,f,D)}ge(g,-1e-10),ge(x,0),I.copy(g),ge(g,1);let ze=g.distanceTo(x),Se=O+F,lt=ze*z+2*Se,Nt=F,so=lt-Se;for(let Ee=0;Ee<=z;Ee++){ge(y,Ee),ie.subVectors(y,I).normalize(),I.copy(y),oe.copy(y).setComponent(+t+1,0).normalize(),he.crossVectors(ie,oe).normalize();let ft=Ee===0,Wt=Ee===z,Um=ft?3*Math.PI/2:j,jm=ft?Nt:so,km=ft?G:Q,Hm=ft?0:$-G,Wm=ie.clone().multiplyScalar(ft?-O:O).add(y),qm=ie.clone().multiplyScalar(ft?-1:1).normalize();for(let pr=0;pr<G;pr++){let fc=pr*J;if(L.addVectors(g.copy(oe).multiplyScalar(l*Math.cos(fc)),x.copy(he).multiplyScalar(l*Math.sin(fc))),M.copy(L).normalize(),ft||Wt){d||(q=Hm+pr,[0,1,2].forEach(ct=>{re[q*3+ct]=Wm.getComponent(ct),le[q*3+ct]=qm.getComponent(ct)}),ne[q*2]=+Wt,ne[q*2+1]=pr/h),x.copy(M).multiplyScalar(F),v.addVectors(y,x);for(let ct=0;ct<u;ct++){let xa=ct*j+Um;k.addVectors(g.copy(ie).multiplyScalar(O*Math.sin(xa)),x.copy(M).multiplyScalar(O*Math.cos(xa))),W.copy(k).normalize(),x.addVectors(v,k),k.normalize(),q=km+ct*G+pr,[0,1,2].forEach(vi=>{re[q*3+vi]=x.getComponent(vi),le[q*3+vi]=W.getComponent(vi)});let $m=+ft+Math.sin(xa);ne[q*2]=(jm+O*$m)/lt,ne[q*2+1]=pr/h}}x.addVectors(y,L),q=H+Ee*G+pr,[0,1,2].forEach(ct=>{re[q*3+ct]=x.getComponent(ct),le[q*3+ct]=M.getComponent(ct)}),ne[q*2]=(Se+Ee*ze)/lt,ne[q*2+1]=pr/h}}let mt=E+2*u+Z,ao=1,[yi,xi]=d?[ao,ao+E-1]:[0,mt-1];for(let Ee=yi;Ee<=xi-1;Ee++){let ft=d&&Ee===xi-1;for(let Wt=0;Wt<G-1;Wt++)P=Ee*G+Wt,S=P+1,b=(ft?Wt:P)+G,B=(ft?Wt+1:S)+G,Ee===0?me.push(S,B,b):Ee===mt-2?me.push(P,S,b):me.push(P,S,b,S,B,b)}this.setIndex(me),this.setAttribute("position",new dl(re,3)),this.setAttribute("normal",new dl(le,3)),this.setAttribute("uv",new dl(ne,2))}};import{IcosahedronBufferGeometry as Ob}from"three";var ju=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,detail:0,corner:0,cornerSides:4},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t,height:e,depth:r,detail:o,corner:n,cornerSides:s}=i.parameters,a=o===0&&n!==0?new jn(t*.5,n,s):new Ob(t*.5,o);return a.scale(1,e/t,r/t),Object.assign(a,{userData:{...i,type:"IcosahedronGeometry"}})}},jn=class extends Gr{constructor(t=1,e=.2,r=4){let o=(1+Math.sqrt(5))/2,n=[-1,o,0,1,o,0,-1,-o,0,1,-o,0,0,-1,o,0,1,o,0,-1,-o,0,1,-o,o,0,-1,o,0,1,-o,0,-1,-o,0,1],s=[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1],a="IcosahedronGeometry";super(n,s,a,t,e,r),this.type=a}static fromJSON(t){return new jn(t.radius,t.corner,t.cornerSides)}};import{LatheBufferGeometry as Db,Shape as _b}from"three";var ku=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){(i.parameters?.points??[]).forEach(r=>{Array.isArray(r)&&(r.x=r[0],r.y=r[1])});let e=Object.assign({},t?.parameters??{width:100,segments:64,verticalSegments:64,points:[{x:0,y:-50,id:0},{x:50,y:-50,id:1},{x:50,y:50,id:2},{x:0,y:50,id:3}]},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{points:t,segments:e,verticalSegments:r}=i.parameters,o=new _b;o.moveTo(t[0].x,t[0].y),o.bezierCurveTo(t[1].x,t[1].y,t[2].x,t[2].y,t[3].x,t[3].y);let n=new Db(o.extractPoints(r).shape,e);return n.rotateZ(Math.PI),Object.assign(n,{userData:{...i,type:"LatheGeometry"}})}};import{BufferGeometry as Ku,BufferGeometryLoader as kb,Vector3 as Hb,BoxBufferGeometry as Yu}from"three";import{BufferGeometry as Vb,Vector2 as gl,Vector3 as Xu}from"three";import{Box3 as Bb,BufferAttribute as kn,BufferGeometry as Hu,Color as qu,EventDispatcher as Eb,Float32BufferAttribute as ko,Matrix3 as Wu,Matrix4 as $u,MathUtils as Gb,Object3D as Rb,Sphere as zb,Vector2 as Pt,Vector3 as rt}from"three";var Qt=new $u,ml=new Rb,Ds=new rt,zr=class extends Eb{constructor(){super(),this.uuid=Gb.generateUUID(),this.name="",this.type="Geometry",this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.elementsNeedUpdate=!1,this.verticesNeedUpdate=!1,this.uvsNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.lineDistancesNeedUpdate=!1,this.groupsNeedUpdate=!1}applyMatrix4(t){let e=new Wu().getNormalMatrix(t);for(let r=0,o=this.vertices.length;r<o;r++)this.vertices[r].applyMatrix4(t);for(let r=0,o=this.faces.length;r<o;r++){let n=this.faces[r];n.normal.applyMatrix3(e).normalize();for(let s=0,a=n.vertexNormals.length;s<a;s++)n.vertexNormals[s].applyMatrix3(e).normalize()}return this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this.verticesNeedUpdate=!0,this.normalsNeedUpdate=!0,this}rotateX(t){return Qt.makeRotationX(t),this.applyMatrix4(Qt),this}rotateY(t){return Qt.makeRotationY(t),this.applyMatrix4(Qt),this}rotateZ(t){return Qt.makeRotationZ(t),this.applyMatrix4(Qt),this}translate(t,e,r){return Qt.makeTranslation(t,e,r),this.applyMatrix4(Qt),this}scale(t,e,r){return Qt.makeScale(t,e,r),this.applyMatrix4(Qt),this}lookAt(t){return ml.lookAt(t),ml.updateMatrix(),this.applyMatrix4(ml.matrix),this}fromBufferGeometry(t){let e=this,r=t.index!==null?t.index:void 0,o=t.attributes;if(o.position===void 0)return console.error("THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion."),this;let n=o.position,s=o.normal,a=o.color,l=o.uv,c=o.uv2;c!==void 0&&(this.faceVertexUvs[1]=[]);for(let u=0;u<n.count;u++)e.vertices.push(new rt().fromBufferAttribute(n,u)),a!==void 0&&e.colors.push(new qu().fromBufferAttribute(a,u));function h(u,d,m,g){let x=a===void 0?[]:[e.colors[u].clone(),e.colors[d].clone(),e.colors[m].clone()],y=s===void 0?[]:[new rt().fromBufferAttribute(s,u),new rt().fromBufferAttribute(s,d),new rt().fromBufferAttribute(s,m)],v=new Ho(u,d,m,y,x,g);e.faces.push(v),l!==void 0&&e.faceVertexUvs[0].push([new Pt().fromBufferAttribute(l,u),new Pt().fromBufferAttribute(l,d),new Pt().fromBufferAttribute(l,m)]),c!==void 0&&e.faceVertexUvs[1].push([new Pt().fromBufferAttribute(c,u),new Pt().fromBufferAttribute(c,d),new Pt().fromBufferAttribute(c,m)])}let p=t.groups;if(p.length>0)for(let u=0;u<p.length;u++){let d=p[u],m=d.start,g=d.count;for(let x=m,y=m+g;x<y;x+=3)r!==void 0?h(r.getX(x),r.getX(x+1),r.getX(x+2),d.materialIndex):h(x,x+1,x+2,d.materialIndex)}else if(r!==void 0)for(let u=0;u<r.count;u+=3)h(r.getX(u),r.getX(u+1),r.getX(u+2));else for(let u=0;u<n.count;u+=3)h(u,u+1,u+2);return this.computeFaceNormals(),t.boundingBox!==null&&(this.boundingBox=t.boundingBox.clone()),t.boundingSphere!==null&&(this.boundingSphere=t.boundingSphere.clone()),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(Ds).negate(),this.translate(Ds.x,Ds.y,Ds.z),this}normalize(){this.computeBoundingSphere();let t=this.boundingSphere.center,e=this.boundingSphere.radius,r=e===0?1:1/e,o=new $u;return o.set(r,0,0,-r*t.x,0,r,0,-r*t.y,0,0,r,-r*t.z,0,0,0,1),this.applyMatrix4(o),this}computeFaceNormals(){let t=new rt,e=new rt;for(let r=0,o=this.faces.length;r<o;r++){let n=this.faces[r],s=this.vertices[n.a],a=this.vertices[n.b],l=this.vertices[n.c];t.subVectors(l,a),e.subVectors(s,a),t.cross(e),t.normalize(),n.normal.copy(t)}}computeVertexNormals(t=!0){let e=new Array(this.vertices.length);for(let r=0,o=this.vertices.length;r<o;r++)e[r]=new rt;if(t){let r=new rt,o=new rt;for(let n=0,s=this.faces.length;n<s;n++){let a=this.faces[n],l=this.vertices[a.a],c=this.vertices[a.b],h=this.vertices[a.c];r.subVectors(h,c),o.subVectors(l,c),r.cross(o),e[a.a].add(r),e[a.b].add(r),e[a.c].add(r)}}else{this.computeFaceNormals();for(let r=0,o=this.faces.length;r<o;r++){let n=this.faces[r];e[n.a].add(n.normal),e[n.b].add(n.normal),e[n.c].add(n.normal)}}for(let r=0,o=this.vertices.length;r<o;r++)e[r].normalize();for(let r=0,o=this.faces.length;r<o;r++){let n=this.faces[r],s=n.vertexNormals;s.length===3?(s[0].copy(e[n.a]),s[1].copy(e[n.b]),s[2].copy(e[n.c])):(s[0]=e[n.a].clone(),s[1]=e[n.b].clone(),s[2]=e[n.c].clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeFlatVertexNormals(){this.computeFaceNormals();for(let t=0,e=this.faces.length;t<e;t++){let r=this.faces[t],o=r.vertexNormals;o.length===3?(o[0].copy(r.normal),o[1].copy(r.normal),o[2].copy(r.normal)):(o[0]=r.normal.clone(),o[1]=r.normal.clone(),o[2]=r.normal.clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeMorphNormals(){for(let e=0,r=this.faces.length;e<r;e++){let o=this.faces[e];o.__originalFaceNormal?o.__originalFaceNormal.copy(o.normal):o.__originalFaceNormal=o.normal.clone(),o.__originalVertexNormals||(o.__originalVertexNormals=[]);for(let n=0,s=o.vertexNormals.length;n<s;n++)o.__originalVertexNormals[n]?o.__originalVertexNormals[n].copy(o.vertexNormals[n]):o.__originalVertexNormals[n]=o.vertexNormals[n].clone()}let t=new zr;t.faces=this.faces;for(let e=0,r=this.morphTargets.length;e<r;e++){if(!this.morphNormals[e]){this.morphNormals[e]={},this.morphNormals[e].faceNormals=[],this.morphNormals[e].vertexNormals=[];let n=this.morphNormals[e].faceNormals,s=this.morphNormals[e].vertexNormals;for(let a=0,l=this.faces.length;a<l;a++){let c=new rt,h={a:new rt,b:new rt,c:new rt};n.push(c),s.push(h)}}let o=this.morphNormals[e];t.vertices=this.morphTargets[e].vertices,t.computeFaceNormals(),t.computeVertexNormals();for(let n=0,s=this.faces.length;n<s;n++){let a=this.faces[n],l=o.faceNormals[n],c=o.vertexNormals[n];l.copy(a.normal),c.a.copy(a.vertexNormals[0]),c.b.copy(a.vertexNormals[1]),c.c.copy(a.vertexNormals[2])}}for(let e=0,r=this.faces.length;e<r;e++){let o=this.faces[e];o.normal=o.__originalFaceNormal,o.vertexNormals=o.__originalVertexNormals}}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new Bb),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new zb),this.boundingSphere.setFromPoints(this.vertices)}merge(t,e,r=0){if(!(t&&t.isGeometry)){console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",t);return}let o,n=this.vertices.length,s=this.vertices,a=t.vertices,l=this.faces,c=t.faces,h=this.colors,p=t.colors;e!==void 0&&(o=new Wu().getNormalMatrix(e));for(let u=0,d=a.length;u<d;u++){let g=a[u].clone();e!==void 0&&g.applyMatrix4(e),s.push(g)}for(let u=0,d=p.length;u<d;u++)h.push(p[u].clone());for(let u=0,d=c.length;u<d;u++){let m=c[u],g,x,y=m.vertexNormals,v=m.vertexColors,P=new Ho(m.a+n,m.b+n,m.c+n);P.normal.copy(m.normal),o!==void 0&&P.normal.applyMatrix3(o).normalize();for(let S=0,b=y.length;S<b;S++)g=y[S].clone(),o!==void 0&&g.applyMatrix3(o).normalize(),P.vertexNormals.push(g);P.color.copy(m.color);for(let S=0,b=v.length;S<b;S++)x=v[S],P.vertexColors.push(x.clone());P.materialIndex=m.materialIndex+r,l.push(P)}for(let u=0,d=t.faceVertexUvs.length;u<d;u++){let m=t.faceVertexUvs[u];this.faceVertexUvs[u]===void 0&&(this.faceVertexUvs[u]=[]);for(let g=0,x=m.length;g<x;g++){let y=m[g],v=[];for(let P=0,S=y.length;P<S;P++)v.push(y[P].clone());this.faceVertexUvs[u].push(v)}}}mergeMesh(t){if(!(t&&t.isMesh)){console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",t);return}t.matrixAutoUpdate&&t.updateMatrix(),this.merge(t.geometry,t.matrix)}mergeVertices(t=4){let e={},r=[],o=[],n=Math.pow(10,t);for(let l=0,c=this.vertices.length;l<c;l++){let h=this.vertices[l],p=Math.round(h.x*n)+"_"+Math.round(h.y*n)+"_"+Math.round(h.z*n);e[p]===void 0?(e[p]=l,r.push(this.vertices[l]),o[l]=r.length-1):o[l]=o[e[p]]}let s=[];for(let l=0,c=this.faces.length;l<c;l++){let h=this.faces[l];h.a=o[h.a],h.b=o[h.b],h.c=o[h.c];let p=[h.a,h.b,h.c];for(let u=0;u<3;u++)if(p[u]===p[(u+1)%3]){s.push(l);break}}for(let l=s.length-1;l>=0;l--){let c=s[l];this.faces.splice(c,1);for(let h=0,p=this.faceVertexUvs.length;h<p;h++)this.faceVertexUvs[h].splice(c,1)}let a=this.vertices.length-r.length;return this.vertices=r,a}setFromPoints(t){this.vertices=[];for(let e=0,r=t.length;e<r;e++){let o=t[e];this.vertices.push(new rt(o.x,o.y,o.z||0))}return this}sortFacesByMaterialIndex(){let t=this.faces,e=t.length;for(let l=0;l<e;l++)t[l]._id=l;function r(l,c){return l.materialIndex-c.materialIndex}t.sort(r);let o=this.faceVertexUvs[0],n=this.faceVertexUvs[1],s,a;o&&o.length===e&&(s=[]),n&&n.length===e&&(a=[]);for(let l=0;l<e;l++){let c=t[l]._id;s&&s.push(o[c]),a&&a.push(n[c])}s&&(this.faceVertexUvs[0]=s),a&&(this.faceVertexUvs[1]=a)}toJSON(){let t={metadata:{version:4.5,type:"Geometry",generator:"Geometry.toJSON"}};if(t.uuid=this.uuid,t.type=this.type,this.name!==""&&(t.name=this.name),this.parameters!==void 0){let m=this.parameters;for(let g in m)m[g]!==void 0&&(t[g]=m[g]);return t}let e=[];for(let m=0;m<this.vertices.length;m++){let g=this.vertices[m];e.push(g.x,g.y,g.z)}let r=[],o=[],n={},s=[],a={},l=[],c={};for(let m=0;m<this.faces.length;m++){let g=this.faces[m],x=!0,y=!1,v=this.faceVertexUvs[0][m]!==void 0,P=g.normal.length()>0,S=g.vertexNormals.length>0,b=g.color.r!==1||g.color.g!==1||g.color.b!==1,B=g.vertexColors.length>0,w=0;if(w=h(w,0,0),w=h(w,1,x),w=h(w,2,y),w=h(w,3,v),w=h(w,4,P),w=h(w,5,S),w=h(w,6,b),w=h(w,7,B),r.push(w),r.push(g.a,g.b,g.c),r.push(g.materialIndex),v){let f=this.faceVertexUvs[0][m];r.push(d(f[0]),d(f[1]),d(f[2]))}if(P&&r.push(p(g.normal)),S){let f=g.vertexNormals;r.push(p(f[0]),p(f[1]),p(f[2]))}if(b&&r.push(u(g.color)),B){let f=g.vertexColors;r.push(u(f[0]),u(f[1]),u(f[2]))}}function h(m,g,x){return x?m|1<<g:m&~(1<<g)}function p(m){let g=m.x.toString()+m.y.toString()+m.z.toString();return n[g]!==void 0||(n[g]=o.length/3,o.push(m.x,m.y,m.z)),n[g]}function u(m){let g=m.r.toString()+m.g.toString()+m.b.toString();return a[g]!==void 0||(a[g]=s.length,s.push(m.getHex())),a[g]}function d(m){let g=m.x.toString()+m.y.toString();return c[g]!==void 0||(c[g]=l.length/2,l.push(m.x,m.y)),c[g]}return t.data={},t.data.vertices=e,t.data.normals=o,s.length>0&&(t.data.colors=s),l.length>0&&(t.data.uvs=[l]),t.data.faces=r,t}clone(){return new zr().copy(this)}copy(t){this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.name=t.name;let e=t.vertices;for(let u=0,d=e.length;u<d;u++)this.vertices.push(e[u].clone());let r=t.colors;for(let u=0,d=r.length;u<d;u++)this.colors.push(r[u].clone());let o=t.faces;for(let u=0,d=o.length;u<d;u++)this.faces.push(o[u].clone());for(let u=0,d=t.faceVertexUvs.length;u<d;u++){let m=t.faceVertexUvs[u];this.faceVertexUvs[u]===void 0&&(this.faceVertexUvs[u]=[]);for(let g=0,x=m.length;g<x;g++){let y=m[g],v=[];for(let P=0,S=y.length;P<S;P++){let b=y[P];v.push(b.clone())}this.faceVertexUvs[u].push(v)}}let n=t.morphTargets;for(let u=0,d=n.length;u<d;u++){let m={};if(m.name=n[u].name,n[u].vertices!==void 0){m.vertices=[];for(let g=0,x=n[u].vertices.length;g<x;g++)m.vertices.push(n[u].vertices[g].clone())}if(n[u].normals!==void 0){m.normals=[];for(let g=0,x=n[u].normals.length;g<x;g++)m.normals.push(n[u].normals[g].clone())}this.morphTargets.push(m)}let s=t.morphNormals;for(let u=0,d=s.length;u<d;u++){let m={};if(s[u].vertexNormals!==void 0){m.vertexNormals=[];for(let g=0,x=s[u].vertexNormals.length;g<x;g++){let y=s[u].vertexNormals[g],v={};v.a=y.a.clone(),v.b=y.b.clone(),v.c=y.c.clone(),m.vertexNormals.push(v)}}if(s[u].faceNormals!==void 0){m.faceNormals=[];for(let g=0,x=s[u].faceNormals.length;g<x;g++)m.faceNormals.push(s[u].faceNormals[g].clone())}this.morphNormals.push(m)}let a=t.skinWeights;for(let u=0,d=a.length;u<d;u++)this.skinWeights.push(a[u].clone());let l=t.skinIndices;for(let u=0,d=l.length;u<d;u++)this.skinIndices.push(l[u].clone());let c=t.lineDistances;for(let u=0,d=c.length;u<d;u++)this.lineDistances.push(c[u]);let h=t.boundingBox;h!==null&&(this.boundingBox=h.clone());let p=t.boundingSphere;return p!==null&&(this.boundingSphere=p.clone()),this.elementsNeedUpdate=t.elementsNeedUpdate,this.verticesNeedUpdate=t.verticesNeedUpdate,this.uvsNeedUpdate=t.uvsNeedUpdate,this.normalsNeedUpdate=t.normalsNeedUpdate,this.colorsNeedUpdate=t.colorsNeedUpdate,this.lineDistancesNeedUpdate=t.lineDistancesNeedUpdate,this.groupsNeedUpdate=t.groupsNeedUpdate,this}toBufferGeometry(){let t=new fl().fromGeometry(this),e=new Hu,r=new Float32Array(t.vertices.length*3);if(e.setAttribute("position",new kn(r,3).copyVector3sArray(t.vertices)),t.normals.length>0){let o=new Float32Array(t.normals.length*3);e.setAttribute("normal",new kn(o,3).copyVector3sArray(t.normals))}if(t.colors.length>0){let o=new Float32Array(t.colors.length*3);e.setAttribute("color",new kn(o,3).copyColorsArray(t.colors))}if(t.uvs.length>0){let o=new Float32Array(t.uvs.length*2);e.setAttribute("uv",new kn(o,2).copyVector2sArray(t.uvs))}if(t.uvs2.length>0){let o=new Float32Array(t.uvs2.length*2);e.setAttribute("uv2",new kn(o,2).copyVector2sArray(t.uvs2))}e.groups=t.groups;for(let o in t.morphTargets){let n=[],s=t.morphTargets[o];for(let a=0,l=s.length;a<l;a++){let c=s[a],h=new ko(c.data.length*3,3);h.name=c.name,n.push(h.copyVector3sArray(c.data))}e.morphAttributes[o]=n}if(t.skinIndices.length>0){let o=new ko(t.skinIndices.length*4,4);e.setAttribute("skinIndex",o.copyVector4sArray(t.skinIndices))}if(t.skinWeights.length>0){let o=new ko(t.skinWeights.length*4,4);e.setAttribute("skinWeight",o.copyVector4sArray(t.skinWeights))}return t.boundingSphere!==null&&(e.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(e.boundingBox=t.boundingBox.clone()),e}computeTangents(){console.error("THREE.Geometry: .computeTangents() has been removed.")}computeLineDistances(){console.error("THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.")}applyMatrix(t){return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(t)}dispose(){this.dispatchEvent({type:"dispose"})}static createBufferGeometryFromObject(t){let e=new Hu,r=t.geometry;if(t.isPoints||t.isLine){let o=new ko(r.vertices.length*3,3),n=new ko(r.colors.length*3,3);if(e.setAttribute("position",o.copyVector3sArray(r.vertices)),e.setAttribute("color",n.copyColorsArray(r.colors)),r.lineDistances&&r.lineDistances.length===r.vertices.length){let s=new ko(r.lineDistances.length,1);e.setAttribute("lineDistance",s.copyArray(r.lineDistances))}r.boundingSphere!==null&&(e.boundingSphere=r.boundingSphere.clone()),r.boundingBox!==null&&(e.boundingBox=r.boundingBox.clone())}else t.isMesh&&(e=r.toBufferGeometry());return e}};zr.prototype.isGeometry=!0;var fl=class{constructor(){this.vertices=[],this.normals=[],this.colors=[],this.uvs=[],this.uvs2=[],this.groups=[],this.morphTargets={},this.skinWeights=[],this.skinIndices=[],this.boundingBox=null,this.boundingSphere=null,this.verticesNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.uvsNeedUpdate=!1,this.groupsNeedUpdate=!1}computeGroups(t){let e=[],r,o,n,s=t.faces;for(o=0;o<s.length;o++){let a=s[o];a.materialIndex!==n&&(n=a.materialIndex,r!==void 0&&(r.count=o*3-r.start,e.push(r)),r={start:o*3,materialIndex:n})}r!==void 0&&(r.count=o*3-r.start,e.push(r)),this.groups=e}fromGeometry(t){let e=t.faces,r=t.vertices,o=t.faceVertexUvs,n=o[0]&&o[0].length>0,s=o[1]&&o[1].length>0,a=t.morphTargets,l=a.length,c;if(l>0){c=[];for(let y=0;y<l;y++)c[y]={name:a[y].name,data:[]};this.morphTargets.position=c}let h=t.morphNormals,p=h.length,u;if(p>0){u=[];for(let y=0;y<p;y++)u[y]={name:h[y].name,data:[]};this.morphTargets.normal=u}let d=t.skinIndices,m=t.skinWeights,g=d.length===r.length,x=m.length===r.length;r.length>0&&e.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(let y=0;y<e.length;y++){let v=e[y];this.vertices.push(r[v.a],r[v.b],r[v.c]);let P=v.vertexNormals;if(P.length===3)this.normals.push(P[0],P[1],P[2]);else{let b=v.normal;this.normals.push(b,b,b)}let S=v.vertexColors;if(S.length===3)this.colors.push(S[0],S[1],S[2]);else{let b=v.color;this.colors.push(b,b,b)}if(n===!0){let b=o[0][y];b!==void 0?this.uvs.push(b[0],b[1],b[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",y),this.uvs.push(new Pt,new Pt,new Pt))}if(s===!0){let b=o[1][y];b!==void 0?this.uvs2.push(b[0],b[1],b[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",y),this.uvs2.push(new Pt,new Pt,new Pt))}for(let b=0;b<l;b++){let B=a[b].vertices;c[b].data.push(B[v.a],B[v.b],B[v.c])}for(let b=0;b<p;b++){let B=h[b].vertexNormals[y];u[b].data.push(B.a,B.b,B.c)}g&&this.skinIndices.push(d[v.a],d[v.b],d[v.c]),x&&this.skinWeights.push(m[v.a],m[v.b],m[v.c])}return this.computeGroups(t),this.verticesNeedUpdate=t.verticesNeedUpdate,this.normalsNeedUpdate=t.normalsNeedUpdate,this.colorsNeedUpdate=t.colorsNeedUpdate,this.uvsNeedUpdate=t.uvsNeedUpdate,this.groupsNeedUpdate=t.groupsNeedUpdate,t.boundingSphere!==null&&(this.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(this.boundingBox=t.boundingBox.clone()),this}},Ho=class{constructor(t,e,r,o,n,s=0){this.a=t,this.b=e,this.c=r,this.normal=o&&o.isVector3?o:new rt,this.vertexNormals=Array.isArray(o)?o:[],this.color=n&&n.isColor?n:new qu,this.vertexColors=Array.isArray(n)?n:[],this.materialIndex=s}clone(){return new this.constructor().copy(this)}copy(t){this.a=t.a,this.b=t.b,this.c=t.c,this.normal.copy(t.normal),this.color.copy(t.color),this.materialIndex=t.materialIndex;for(let e=0,r=t.vertexNormals.length;e<r;e++)this.vertexNormals[e]=t.vertexNormals[e].clone();for(let e=0,r=t.vertexColors.length;e<r;e++)this.vertexColors[e]=t.vertexColors[e].clone();return this}};var Fb=["a","b","c"];function Ub(i,t){switch(t){case"c":return i.c;case"b":return i.b;case"a":default:return i.a}}function yl(i,t,e){let r=Math.min(i,t),o=Math.max(i,t),n=r+"_"+o;return e.get(n)}function xl(i,t,e,r,o,n){let s=Math.min(i,t),a=Math.max(i,t),l=s+"_"+a,c;if(r.has(l))c=r.get(l);else{let h=e[s],p=e[a];c={a:h,b:p,newEdge:null,faces:[]},r.set(l,c)}c.faces.push(o),n[i].edges.push(c),n[t].edges.push(c)}function jb(i,t,e,r){let o,n,s;for(o=0,n=i.length;o<n;o++)e[o]={edges:[]};for(o=0,n=t.length;o<n;o++)s=t[o],xl(s.a,s.b,i,r,s,e),xl(s.b,s.c,i,r,s,e),xl(s.c,s.a,i,r,s,e)}function _s(i,t,e,r,o){i.push(new Ho(t,e,r,void 0,void 0,o))}function Wo(i,t){return Math.abs(t-i)/2+Math.min(i,t)}function Bs(i,t,e,r){i.push([t.clone(),e.clone(),r.clone()])}var Es=class{constructor(t=1){this.subdivisions=t}modify(t){t instanceof Vb?t=new zr().fromBufferGeometry(t):t=t.clone(),t.mergeVertices();let e=this.subdivisions;for(;e-- >0;)this._smooth(t);return t.computeFaceNormals(),t.computeVertexNormals(),t}_smooth(t){let e=new Xu,r,o,n,s,a,l=t.vertices,c=t.faces,h=t.faceVertexUvs[0],p=h!==void 0&&h.length>0,u=[],d=new Map;jb(l,c,u,d);let m=[],g,x,y,v,P,S,b;for(let V of Array.from(d.keys())){for(x=d.get(V),y=new Xu,P=3/8,S=1/8,b=x.faces.length,b!=2&&(P=.5,S=0,b!=1),y.addVectors(x.a,x.b).multiplyScalar(P),e.set(0,0,0),s=0;s<b;s++){for(v=x.faces[s],a=0;a<3&&(g=l[Ub(v,Fb[a])],!(g!==x.a&&g!==x.b));a++);g&&e.add(g)}e.multiplyScalar(S),y.add(e),x.newEdge=m.length,m.push(y)}let B,w,f,D,C,I,L,M=[];for(o=0,n=l.length;o<n;o++){for(I=l[o],C=u[o].edges,r=C.length,r==3?B=3/16:r>3&&(B=3/(8*r)),w=1-r*Number(B),f=B,r<=2&&(r==2?(w=3/4,f=1/8):r==1||r==0),L=I.clone().multiplyScalar(w),e.set(0,0,0),s=0;s<r;s++)D=C[s],g=D.a!==I?D.a:D.b,e.add(g);e.multiplyScalar(Number(f)),L.add(e),M.push(L)}let k=M.concat(m),W=M.length,oe,he,ie,Y=[],U=[],z,E,_,A,G=new gl,J=new gl,j=new gl;for(o=0,n=c.length;o<n;o++)v=c[o],oe=Number(yl(v.a,v.b,d).newEdge)+W,he=Number(yl(v.b,v.c,d).newEdge)+W,ie=Number(yl(v.c,v.a,d).newEdge)+W,_s(Y,oe,he,ie,v.materialIndex),_s(Y,v.a,oe,ie,v.materialIndex),_s(Y,v.b,he,oe,v.materialIndex),_s(Y,v.c,ie,he,v.materialIndex),p&&(z=h[o],E=z[0],_=z[1],A=z[2],G.set(Wo(E.x,_.x),Wo(E.y,_.y)),J.set(Wo(_.x,A.x),Wo(_.y,A.y)),j.set(Wo(E.x,A.x),Wo(E.y,A.y)),Bs(U,G,J,j),Bs(U,E,G,j),Bs(U,_,J,G),Bs(U,A,j,J));t.vertices=k,t.faces=Y,p&&(t.faceVertexUvs[0]=U)}};var je=new Hb,Ju=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=i.geometry??t?.geometry??new Ku().copy(new Yu(100,100,100)),r;t===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(je),r={width:je.x,height:je.y,depth:je.z,subdivisions:0}):r=t.parameters;let o={...r,...i.parameters};return{parameters:{width:Math.abs(o.width),height:Math.abs(o.height),depth:Math.abs(o.depth),subdivisions:Math.abs(o.subdivisions)},geometry:e}}static build(i){let{width:t,height:e,depth:r,subdivisions:o}=i.parameters,n=i.geometry??new Ku().copy(new Yu(100,100,100)),s=n.userData.parameters;s===void 0?(n.computeBoundingBox(),n.boundingBox.getSize(je)):je.set(s.width,s.height,s.depth),(t!==je.x||e!==je.y||r!==je.z)&&n.scale(je.x===0?1:t/je.x,je.y===0?1:e/je.y,je.z===0?1:r/je.z);let a=n.originalGeometry;return o>0?(a===void 0||s?.subdivisions!==o)&&(a===void 0&&(a=n),n=new Es(o).modify(a).toBufferGeometry()):(a!==void 0&&(n=a),a=void 0,n.getAttribute("normal")===void 0&&n.computeVertexNormals()),a!==void 0&&Object.assign(n,{originalGeometry:a}),delete i.geometry,Object.assign(n,{userData:{...i,type:"NonParametricGeometry"}})}static loadFromUrl(i,t,e){new kb(e).load(i,o=>{let n=this.normalizeInputs({geometry:o});o.boundingBox.getSize(je);let s=100/je.x;Object.assign(n.parameters,{width:100,height:je.y*s,depth:je.z*s}),t(this.build(n))})}};var Qu=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:3},i.parameters);return{shape:i.shape&&i.shape instanceof ve?i.shape:new ve,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(i){let{width:t,height:e,spikes:r,cornerRadius:o,depth:n,extrudeBevelSize:s,extrudeBevelSegments:a}=i.parameters,l=i.shape,c=t*.5,h=e*.5,p=0,u=0,d=2*Math.PI/r;for(let g=0;g<r;g++){let x=d*g,y=p+Math.sin(x)*c,v=u+Math.cos(x)*h;l.addPoint(l.createPoint(y,v))}l.isClosed=!0;for(let g=0,x=l.points.length;g<x;g++)l.points[g].roundness=o;l.roundness=o,l.update();let m=Ke.create({shape:l,parameters:{roundness:o,depth:n,extrudeBevelSize:s,extrudeBevelSegments:a}});return Object.assign(m,{userData:{...i,type:"PolygonGeometry"}})}};import{BufferGeometry as Wb,Float32BufferAttribute as vl,Vector2 as Zt,Vector3 as qe}from"three";var Zu=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:4,heightSegments:1,cornerRadius:0,cornerSegments:8,openEnded:!1},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t,height:e,depth:r,radialSegments:o,heightSegments:n,openEnded:s,cornerRadius:a,cornerSegments:l}=i.parameters,c=new Sl(t*.5,e,o,n,s,a,l);return c.scale(1,1,r/t),Object.assign(c,{userData:{...i,type:"PyramidGeometry"}})}};function Hn(i,t,e){e.x=i.x*t.x,e.y=i.y,e.z=i.x*t.y}function bl(i,t,e,r,o,n){let s=t.clone().sub(i),a=e.clone().sub(i),l=s.angleTo(a);if(s.normalize(),a.normalize(),r===o){let c=s.add(a).normalize();n.copy(i).addScaledVector(c,r/Math.sin(l/2))}else{let c=s.angleTo(a);n.copy(i),n.addScaledVector(s,o/Math.sin(c)),n.addScaledVector(a,r/Math.sin(c))}}function qb(i,t,e){let r=i.clone().sub(t),o=e.clone().sub(t);return r.projectOnVector(o),r.add(t)}var Sl=class extends Wb{constructor(t=.5,e=1,r=4,o=1,n=!1,s=0,a=4){super(),r=Math.floor(Math.max(3,r)),o=Math.floor(o),a=Math.floor(a);let l=[],c=[],h=[],p=[],u=0,d=e/2,m=Math.PI/r,g=t*Math.cos(Math.PI/r),x=2*Math.PI/r,y=(r-2)*Math.PI/r,v=Math.PI-y,P=new qe(0,-d,0),S=new qe(0,d,0),b=new Zt(t,-d),B=new Zt(g,-d),w=new Zt(0,S.y).sub(B),f=new Zt(0,S.y).sub(b),D=new Zt(w.y,-w.x).normalize(),C=new Zt(f.y,-f.x).normalize(),L=t*Math.cos(Math.PI/r)*Math.tan((Math.PI-w.angle())/2)-1e-8;s=Math.min(s,L);let M;{let U=new qe(D.x,D.y,0),z=new qe(Math.cos(x)*U.x,U.y,Math.sin(x)*U.x);M=U.angleTo(z)}let k=s/Math.tan((Math.PI-w.angle())/2),W=s/Math.tan((Math.PI-M)/2),oe=new qe;if(!n){c.push(P.x,P.y,P.z),h.push(0,-1,0),p.push(0,0);let U=u++,z=[],E=b.clone(),_=k/Math.cos(Math.PI/r);E.x-=_;for(let A=0;A<r;A++){let G=A/r*Math.PI*2+m,J=new Zt(Math.sin(G),Math.cos(G));Hn(E,J,oe),c.push(oe.x,oe.y,oe.z),h.push(0,-1,0),p.push(0,0),z.push(u++)}for(let A=0;A<z.length;A++)l.push(z[A],U,z[(A+1)%z.length])}let he=[];{let U=new qe,z=new qe,E=new qe,_=new qe,A=new qe,G=new qe;for(let J=0;J<r;J++){let j=J/r*Math.PI*2+m,V=(J+.5)/r*Math.PI*2+m,F=(J+1)/r*Math.PI*2+m,O=new Zt(Math.sin(j),Math.cos(j)),q=new Zt(Math.sin(V),Math.cos(V)),Z=new Zt(Math.sin(F),Math.cos(F));Hn(b,O,z),Hn(b,Z,E),Hn(D,q,U),bl(S,z,E,W,W,_),c.push(_.x,_.y,_.z),bl(z,S,E,W,k,A),c.push(A.x,A.y,A.z),bl(E,z,S,k,W,G),c.push(G.x,G.y,G.z),h.push(U.x,U.y,U.z),h.push(U.x,U.y,U.z),h.push(U.x,U.y,U.z),p.push(0,0),p.push(0,0),p.push(0,0);let ee=u++,H=u++,Q=u++;if(l.push(ee,H,Q),s>0){{let le=z.clone().add(E).multiplyScalar(.5),ne=S.clone().sub(le).normalize(),_e=P.clone().sub(le).normalize().add(ne).normalize().multiplyScalar(-1),ge=G.clone().sub(A);ie(le,ge,_e,w.angle())}let $,re;{let le=new qe;Hn(C,Z,le);let ne=G.clone().add(_).multiplyScalar(.5);ne=qb(ne,E,S);let me=G.clone().sub(_);[$,re]=ie(ne,me,le,M,_.y)}{let le=$,ne=le.clone().setY(0).normalize(),me=new qe(0,-1,0),_e=ne.clone().cross(me);Y(le,ne,me,_e)}he.concat(re);{let le=w.angle(),ne=Math.PI-le,me=S.clone();me.y-=s/Math.sin(le-Math.PI/2);let _e=new qe,ge=[];for(let Se=0;Se<a;Se++){let lt=[],Nt=Math.PI/2-ne*Se/a,so=Math.cos(Nt),mt=Math.sin(Nt),ao=V;for(let yi=0;yi<=Se;yi++){let xi=Math.cos(ao),Ee=Math.sin(ao);U.x=so*Ee,U.y=mt,U.z=so*xi,_e.copy(me).addScaledVector(U,s),c.push(_e.x,_e.y,_e.z),h.push(U.x,U.y,U.z),p.push(0,0),lt.push(u++),ao+=Math.PI*2/Se/r}ge.push(lt)}re.reverse(),ge.push(re);let ze=ge.length-1;for(let Se=0;Se<ze;Se++){let lt=ge[Se],Nt=ge[Se+1],so=lt.length-1;l.push(Nt[1],lt[0],Nt[0]);for(let mt=1;mt<=so;mt++)l.push(lt[mt],lt[mt-1],Nt[mt]),l.push(Nt[mt+1],lt[mt],Nt[mt])}}}}}this.setIndex(l),this.setAttribute("position",new vl(c,3)),this.setAttribute("normal",new vl(h,3)),this.setAttribute("uv",new vl(p,2));function ie(U,z,E,_,A){let G=-_/2,J=(Math.PI-_)/2,j=z.clone().normalize().cross(E);U.addScaledVector(E,-s/Math.sin(J));let V=new qe,F=new qe,O=1,q=u,Z=[];for(let ee=0;ee<=a;ee++){let H=G+ee/a*_;F.set(0,0,0),F.addScaledVector(j,Math.sin(H)),F.addScaledVector(E,Math.cos(H));for(let Q=0;Q<=O;Q++){let $=Q/O-.5;if(V.copy(U),V.addScaledVector(z,$),V.addScaledVector(F,s),A!=null){let re=Math.max(0,V.y-A);V.addScaledVector(z,-re/z.y)}c.push(V.x,V.y,V.z),h.push(F.x,F.y,F.z),p.push(0,0),Q===0&&Z.push(u),u++}}for(let ee=0;ee<a;ee++)for(let H=0;H<O;H++){let Q=q+H+(O+1)*ee,$=Q+(O+1),re=$+1,le=Q+1;l.push(Q,$,le),l.push($,re,le)}return[U.clone().addScaledVector(z,.5),Z]}function Y(U,z,E,_){let A=Math.PI/2,G=f.angle()-A,J=[],j=new qe,V=new qe;for(let O=0;O<=a;O++){let q=[],Z=O/a;for(let ee=0;ee<=O;ee++){let Q=((O?ee/O:0)-.5)*v,$=Math.cos(Q),re=Math.sin(Q),le=Math.atan(Math.tan(G)*$),ne=(A+le)*Z,me=Math.cos(ne),_e=Math.sin(ne);j.set(0,0,0),j.addScaledVector(z,_e*$),j.addScaledVector(E,me),j.addScaledVector(_,_e*re),V.copy(U).addScaledVector(j,s),c.push(V.x,V.y,V.z),h.push(j.x,j.y,j.z),p.push(0,0),q.push(u++)}J.push(q)}let F=J.length-1;for(let O=0;O<F;O++){let q=J[O],Z=J[O+1],ee=q.length-1;l.push(q[0],Z[1],Z[0]);for(let H=1;H<=ee;H++)l.push(q[H-1],q[H],Z[H]),l.push(q[H],Z[H+1],Z[H])}}}};var ed=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,cornerRadius:[0,0,0,0],cornerType:1,extrudeBevelSize:0,extrudeBevelSegments:1},i.parameters),r=Object.assign(t?.ui??{enabledIndieCorners:!1},i.ui);return{shape:i.shape&&i.shape instanceof ve?i.shape:new ve,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)}),ui:r}}static build(i){let t=i.shape,{width:e,height:r,cornerRadius:o,cornerType:n,depth:s,extrudeBevelSize:a,extrudeBevelSegments:l}=i.parameters,c={x:e*.5,y:r*.5},h={x:-c.x,y:-c.y},p={x:c.x,y:c.y};function u(S,b,B){return b>e&&B>r?Math.min(S*e/b,S*r/B):b>e?S*e/b:B>r?S*r/B:S}let d=[];d[0]=o[0]===0?0:u(o[0],o[0]+o[3],o[0]+o[1]),d[1]=o[1]===0?0:u(o[1],o[1]+o[2],o[1]+o[0]),d[2]=o[2]===0?0:u(o[2],o[2]+o[1],o[2]+o[3]),d[3]=o[3]===0?0:u(o[3],o[3]+o[0],o[3]+o[2]);let m=h.x,g=p.x,x=p.y,y=h.y;t.addPoint(t.createPoint(m,x)),t.addPoint(t.createPoint(g,x)),t.addPoint(t.createPoint(g,y)),t.addPoint(t.createPoint(m,y)),t.isClosed=!0;let v=!0;for(let S=0,b=t.points.length;S<b;S++)t.points[S].roundness=d[S],S>0&&d[S]!==d[S-1]&&(v=!1);v&&(t.roundness=d[0]),t.useCubicForRoundedCorners=n!==1,t.update();let P=Ke.create({shape:t,parameters:{depth:s,extrudeBevelSize:a,extrudeBevelSegments:l}});return Object.assign(P,{userData:{...i,type:"RectangleGeometry"}})}};import{SphereBufferGeometry as $b}from"three";var td=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:Math.PI},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t=100,height:e=t,depth:r=t,widthSegments:o=64,heightSegments:n=64,phiStart:s,phiLength:a,thetaStart:l,thetaLength:c}=i.parameters,h=new $b(.5*t,o,n,s,a,l,c);return h.scale(1,e/t,r/t),Object.assign(h,{userData:{...i,type:"SphereGeometry"}})}};import{PlaneBufferGeometry as Xb}from"three";var rd=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,widthSegments:8,heightSegments:8},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:0})}}static build(i){let{width:t=100,height:e=t,widthSegments:r=8,heightSegments:o=8}=i.parameters,n=new Xb(t,e,r,o);return n.scale(1,1,1),Object.assign(n,{userData:{...i,type:"PlaneGeometry"}})}};import{BufferGeometry as Kb,Float32BufferAttribute as wl,Vector3 as Yb}from"three";var od=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,angle:90,cornerRadius:24,cornerSegments:8},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t,height:e,depth:r,angle:o,cornerRadius:n,cornerSegments:s}=i.parameters,a=new Nl(t,e,r,o,n,s);return Object.assign(a,{userData:{...i,type:"BackdropGeometry"}})}},Nl=class extends Kb{constructor(t=1,e=1,r=1,o=90,n=10,s=24){super(),this.type="BackdropGeometry";let a=[],l=[],c=[],h=.001;n==0&&(s=1),s=Math.max(1,Math.floor(s)),n=Math.min(n,100),o=Math.min(180-h,o),o*=Math.PI/180;let p=[],u=Math.PI/2,d=(V=0,F=0,O=0)=>new Yb(V,F,O),m=d(),g=d(),[x,y,v]=[e/2,t/2,r/2],P=-y,S=+y,[b,B,w]=[d(P,-x,+v),d(P,-x,-v),d(P,+x,-v)],f=(V,F=!1)=>Math.sin(V-Math.PI/(1+ +F)),D=(V,F=!1)=>Math.cos(V-Math.PI/(1+ +F));w.y=Math.sin(o)*e-x;let C=Math.cos(o)*e-v,I=b.z-h;o<=u?(w.z=Math.min(C,I),w.z==I&&(w.y-=(C-I)/Math.tan(u-o))):B.z=Math.min(B.z-C-v,b.z-h),m.subVectors(b,B),g.subVectors(w,B);let L=Math.min(m.length(),g.length())*n/100,M=L*Math.tan(o/2),k=L/Math.cos(o/2),W=m.clone().normalize().add(g.normalize()).setLength(k).add(B);m.set(0,f(o,!0),D(o,!0)),p.push([w,m.clone()]);let oe=(Math.PI-o)/s;for(let V=0;V<=s;V++){let F=u+o+V*oe;m.set(0,Math.sin(F)*M,Math.cos(F)*M),m.add(W),g.set(0,f(F),D(F)),p.push([m.clone(),g.clone()])}p.push([b,d(0,1,0)]);let he=Math.sin(oe/2)*M*2,ie=p.length-1,Y=p[0][0].distanceTo(p[1][0]),U=p[ie-1][0].distanceTo(p[ie][0]),z=Y+he*s+U;p[0].push(1);for(let V=0;V<=s;V++)p[V+1].push(1-(Y+V*he)/z);p[ie].push(0);let[E,_,A]=p[0],G,J,j;for(let V=1;V<p.length;V++)[G,J,j]=p[V],a.push(P,E.y,E.z,P,G.y,G.z,S,E.y,E.z,S,E.y,E.z,P,G.y,G.z,S,G.y,G.z),l.push(0,_.y,_.z,0,J.y,J.z,0,_.y,_.z,0,_.y,_.z,0,J.y,J.z,0,J.y,J.z),c.push(0,A,0,j,1,A,1,A,0,j,1,j),[E,_,A]=[G,J,j];this.setAttribute("position",new wl(a,3)),this.setAttribute("normal",new wl(l,3)),this.setAttribute("uv",new wl(c,2))}};var nd=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,innerRadiusPercent:38.19,spikes:5,cornerRadius:0,angle:360,extrudeBevelSize:0,extrudeBevelSegments:1},i.parameters);return{shape:i.shape&&i.shape instanceof ve?i.shape:new ve,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(i){let{width:t,height:e,innerRadiusPercent:r,spikes:o,cornerRadius:n,angle:s,depth:a,extrudeBevelSize:l,extrudeBevelSegments:c}=i.parameters,h=i.shape,p=t*.5,u=e*.5,d=0,m=0,g=s*Math.PI/360/o,x=Math.PI/2*3*-1,y=p*r/100,v=u*r/100;if(o===3&&r===50){g=2*Math.PI/o;for(let S=0;S<o;S++){let b=g*S,B=d+Math.sin(b)*p,w=m+Math.cos(b)*u;h.addPoint(h.createPoint(B,w))}}else for(let S=0;S<o;S++){let b=d+Math.cos(x)*p,B=m+Math.sin(x)*u;h.addPoint(h.createPoint(b,B)),x+=g,b=d+Math.cos(x)*y,B=m+Math.sin(x)*v,S<=o,h.addPoint(h.createPoint(b,B)),x+=g}h.isClosed=!0;for(let S=0,b=h.points.length;S<b;S++)h.points[S].roundness=n;h.roundness=n,h.update();let P=Ke.create({shape:h,parameters:{roundness:n,depth:a,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(P,{userData:{...i,type:"StarGeometry"}})}};import{PlaneBufferGeometry as Jb}from"three";var Gs=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(i){let{width:t,height:e}=i.parameters,r=new Jb(t,e);return Object.assign(r,{userData:{...i,type:"TextFrameGeometry"}})}};var id=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:32,tubularSegments:64,arc:Math.PI*2,cornerRadius:30,cornerSegments:8},i.parameters),r=Math.abs(e.width),o=Math.abs(e.height??e.width),n=Math.abs(e.depth??e.width*.25);return{parameters:Object.assign(e,{width:r,height:o,depth:n})}}static build(i){let{width:t,height:e,depth:r,radialSegments:o,tubularSegments:n,arc:s,cornerRadius:a,cornerSegments:l}=i.parameters,c=Qb(t,e,r,t*.5,s,n,0,0,o,a,l);return c.scale(1,e/t,1),Object.assign(c,{userData:{...i,type:"TorusGeometry"}})}};function Qb(i,t,e,r,o,n,s,a,l,c,h){return[t,e]=[e,t],s=t/2,o/=2*Math.PI,o==1&&(c=0),new Un(!0,i,t,e,r,o,n,s,a,l,c,h)}import{TorusKnotBufferGeometry as Zb}from"three";var sd=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,tubularSegments:64,radialSegments:32,p:2,q:3},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width),tube:e.tube??e.width*.125})}}static build(i){let{width:t,tube:e,tubularSegments:r,radialSegments:o,p:n,q:s}=i.parameters,a=t*.5;a!==e&&(a-=e);let l=new Zb(a,e,r,o,n,s);return Object.assign(l,{userData:{...i,type:"TorusKnotGeometry"}})}};var ad=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1,isRect:!1},i.parameters);return{shape:i.shape&&i.shape instanceof ve?i.shape:new ve,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width*(e.isRect?1:Math.sqrt(3)/2)),depth:Math.abs(e.depth??0)})}}static build(i){let{width:t=100,height:e,cornerRadius:r,depth:o,extrudeBevelSize:n,extrudeBevelSegments:s,isRect:a}=i.parameters,l=i.shape,c=t*.5,h=e*.5;a?(l.addPoint(l.createPoint(-c,h)),l.addPoint(l.createPoint(c,-h)),l.addPoint(l.createPoint(-c,-h))):(l.addPoint(l.createPoint(0,h)),l.addPoint(l.createPoint(c,-h)),l.addPoint(l.createPoint(-c,-h))),l.isClosed=!0;for(let u=0,d=l.points.length;u<d;u++)l.points[u].roundness=r;l.roundness=r,l.update();let p=Ke.create({shape:l,parameters:{roundness:r,depth:o,extrudeBevelSize:n,extrudeBevelSegments:s}});return Object.assign(p,{userData:{...i,type:"TriangleGeometry"}})}};import{BufferGeometry as $d,BufferAttribute as Xd,Uint32BufferAttribute as Jl,Float32BufferAttribute as Ql,Matrix4 as vw,Vector3 as oa}from"three";var eS,Rs=new Promise(i=>{eS=i});import{BufferGeometryLoader as yw}from"three";import{EventDispatcher as mw,Matrix3 as fw,Vector3 as Yl}from"three";import{Mesh as uw,Matrix4 as dw}from"three";import{Matrix4 as fd}from"three";import{Box3 as dd,Line3 as nS,Matrix4 as Tl,Vector3 as Mt}from"three";import{HemisphereLight as ld}from"three";import{Color as tS}from"three";var ut=class extends tS{constructor(e,r,o,n){super(e,r,o);this.isColorA=!0;this.a=n}setRGBA(e,r,o,n){super.setRGB(e,r,o),this.a=n}copy(e){return super.copy(e),this.a="a"in e?e.a:1,this}clone(){return new this.constructor(this.r,this.g,this.b,this.a)}get x(){return this.r}get y(){return this.g}get z(){return this.b}get w(){return this.a}set x(e){this.r=e}set y(e){this.g=e}set z(e){this.b=e}set w(e){this.a=e}};function Ae(i,t){let e;if(typeof i=="string"){let r=t?.getColor(i);r?e=r:(console.warn("Tried to create color layer params with a color key that does not exist in the assets manager"),e=new ut(0,0,0,0))}else return"a"in i?new ut(i.r,i.g,i.b,i.a):new ut(i.r,i.g,i.b,1);return e}var Cl=i=>"isEntity"in i,er=i=>"isAbstractMesh"in i,tr=i=>i!==null&&i.isBooleanMesh,cd=i=>i.objectType==="CombinedCamera";var vr=i=>"objectHelper"in i;function rS(i,t){let e=!1;t.position&&(i.position.fromArray(t.position),e=!0),t.rotation&&(i.rotation.fromArray(t.rotation),e=!0),t.scale&&(e=!0,i.scale.fromArray(t.scale)),t.hiddenMatrix!==void 0&&"hiddenMatrix"in i&&(e=!0,i.hiddenMatrix.fromArray(t.hiddenMatrix??Dr.identity)),e&&(i.updateMatrix(),tr(i.parent)&&er(i)&&i.invalidateDownstreamBooleanData(!0).recomputeBoolean()),t.position&&t.rotation&&t.scale&&t.hiddenMatrix!==void 0&&i.updateWorldMatrix(!1,!0),i.objectType==="CombinedCamera"&&(t.isUpVectorFlipped!==void 0&&(i.isUpVectorFlipped=t.isUpVectorFlipped),i.updateUp())}function oS(i,t){rS(i,t),t.name!==void 0&&(i.name=t.name),t.visible!==void 0&&(i.isEntity?i.visibility=t.visible:i.visible=t.visible)}function hd(i,t,e){oS(i,t),t.color!==void 0&&(i.color=Ae(t.color,e)),t.intensity!==void 0&&(i.intensity=t.intensity),t.shadows!==void 0&&!(i instanceof ld)&&(i.castShadow=t.shadows),i.shadow&&!(i instanceof ld)&&t.depth!==void 0&&(i.shadow.camera.far=t.depth,i.shadow.needsUpdate=!0),t.helper!==void 0&&vr(i)&&(i.enableHelper=t.helper,i.gizmos.shadowmap.visible=t.helper)}function pd(i,t){i.shadow.camera.right=t/2,i.shadow.camera.left=-t/2,i.shadow.camera.top=t/2,i.shadow.camera.bottom=-t/2,i.shadow.needsUpdate=!0}var qo=new dd,rr=new Mt,or=new Mt,$o=new Tl,md=[new Mt(-1,1,1),new Mt(-1,-1,1),new Mt(1,-1,1),new Mt(1,1,1),new Mt(-1,1,-1),new Mt(-1,-1,-1),new Mt(1,-1,-1),new Mt(1,1,-1)],iS=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],sS=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]];function aS(i,t,e=0,r=t.count){let o=1/0,n=1/0,s=1/0,a=-1/0,l=-1/0,c=-1/0;for(let h=e;h<r;h++){let p=t.getX(h),u=t.getY(h),d=t.getZ(h);p<o&&(o=p),u<n&&(n=u),d<s&&(s=d),p>a&&(a=p),u>l&&(l=u),d>c&&(c=d)}return i.min.set(o,n,s),i.max.set(a,l,c),i}var ud=(i,t,e,r)=>{if(er(i)){let o=i.geometry.userData.parameters,n=i.geometry.getAttribute("position");i.geometry.userData.type==="SubdivGeometry"?rr.copy(i.originalGeometry.boundingSphere.center):n!==void 0&&(aS(qo,n,i.geometry.drawRange.start,i.geometry.drawRange.count<1/0?i.geometry.drawRange.count:n.count),qo.getCenter(rr)),i.forceComputeSize?qo.getSize(or).multiplyScalar(.5):or.set(o.width,o.height,o.depth??0).multiplyScalar(.5)}else if(vr(i)&&r===!0){let o=i.geometryHelper.getAttribute("position");qo.setFromArray(o.array),qo.getCenter(rr),qo.getSize(or).multiplyScalar(.5)}else rr.setScalar(0),or.setScalar(0);$o.copy(t).multiply(i.matrixWorld),or.x===0&&or.y===0&&or.z===0?e.push(new Mt(rr.x,rr.y,rr.z).applyMatrix4($o)):md.forEach(o=>{e.push(o.clone().multiply(or).add(rr).applyMatrix4($o))})},Wn=class extends dd{constructor(){super(...arguments);this.matrix=new Tl;this.vertices=[];this.faces=[];this.edges=[];this.centerEdges=[]}copy(e){return super.copy(e),this.matrix.copy(e.matrix),this.vertices=e.vertices.map(r=>r.clone()),this.faces=e.faces.map(r=>r.clone()),this.edges=e.edges.map(r=>r.clone()),this.centerEdges=e.centerEdges.map(r=>r.clone()),this}setFromObjectSize(e,r=!1){e.updateWorldMatrix(!1,r),this.makeEmpty(),this.matrix.copy(e.matrixWorld);let o=new Tl().copy(e.matrixWorld).invert();return this.expandByObjectSize(e,o,r)}expandByObjectSize(e,r,o=!1){let n=[];return o===!0?e.traverseEntity(s=>{s.visible&&ud(s,r,n,e.enableHelper===!0)}):ud(e,r,n,e.enableHelper===!0),this.setFromPoints(n)}getCenter(e){return e=super.getCenter(e),e.applyMatrix4(this.matrix),e}getPositionToCenter(e){return e=super.getCenter(e),e.applyMatrix4($o.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(or).multiplyScalar(.5),this.getCenter(rr),$o.copy(this.matrix).setPosition(rr),this.vertices=md.map(e=>e.clone().multiply(or).applyMatrix4($o))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=iS.map(([e,r])=>new nS(this.vertices[e],this.vertices[r])),this.centerEdges=this.edges.map(e=>e.getCenter(new Mt))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=sS.map(([e,r])=>this.vertices[e].clone().add(this.vertices[r]).multiplyScalar(.5))}};import{Object3D as lS,Matrix4 as cS}from"three";var zs=i=>class extends i{hasEntityChild(){return this.children.some(e=>Cl(e))}isDescendantOf(e){e instanceof lS&&(e=e.uuid);let r=this;for(;r.parent;){if(r.parent.uuid===e)return!0;r=r.parent}return!1}attach(e,r){this.updateWorldMatrix(!0,!1);let o=new cS().copy(this.matrixWorld).invert();return e.parent!==null&&(e.parent.updateWorldMatrix(!0,!1),o.multiply(e.parent.matrixWorld)),Cl(e)?e.hiddenMatrix.premultiply(o):e.applyMatrix4(o),e.updateWorldMatrix(!1,!1),this.add(e),r!==void 0&&(this.children.pop(),this.children.splice(r,0,e)),this}copy(e,r=!0){if(this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.rotation.order=e.rotation.order,this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.userData=JSON.parse(JSON.stringify(e.userData)),r===!0)for(let o=0;o<e.children.length;o++){let n=e.children[o];this.add(n.clone())}return this}};var At=i=>"isEntity"in i,gd=i=>"isAbstractMesh"in i,Ot=i=>class extends zs(i){constructor(){super(...arguments);this.objectType="";this.isEntity=!0;this.raycastLock=!1;this.scaleLock=!1;this.hiddenMatrix=new fd;this._singleBBox=new Wn;this._recursiveBBox=new Wn;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this.forceComputeSize=!1}set visibility(r){this.visible=r;for(let o of this.children)At(o)&&o.traverseEntity(n=>{vr(n)&&n.visible&&(n.objectHelper.visible=r)})}get visibility(){return this.visible}get singleBBox(){return this.singleBBoxNeedsUpdate&&(this.singleBBoxNeedsUpdate=!1,this._singleBBox.setFromObjectSize(this,!1),this._singleBBox.computeVertices(),this._singleBBox.computeEdges(),this._singleBBox.computeFaces()),this._singleBBox}get recursiveBBox(){return this.recursiveBBoxNeedsUpdate&&(this.recursiveBBoxNeedsUpdate=!1,this._recursiveBBox.setFromObjectSize(this,!0),this._recursiveBBox.computeVertices(),this._recursiveBBox.computeEdges(),this._recursiveBBox.computeFaces()),this._recursiveBBox}resetBBoxNeedsUpdate(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0,this.traverseAncestors(r=>{At(r)&&(r.singleBBoxNeedsUpdate=!0,r.recursiveBBoxNeedsUpdate=!0)}),this.traverseEntity(r=>{r.singleBBoxNeedsUpdate=!0,r.recursiveBBoxNeedsUpdate=!0})}traverseEntity(r){r(this);for(let o of this.children)At(o)&&o.traverseEntity(r)}updateMatrixWorld(r){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||r)&&(this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),this.matrixWorldNeedsUpdate=!1,r=!0);for(let o of this.children)o.updateMatrixWorld(r)}updateWorldMatrix(r,o){let n=this.parent;if(r&&n!==null&&n.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),o)for(let s of this.children)s.updateWorldMatrix(!1,!0)}shallowClone(r){return new this.constructor().shallowCopy(this,r)}shallowCopy(r,o=!0){if(super.copy(r,!1),this.raycastLock=r.raycastLock,this.scaleLock=r.scaleLock,this.hiddenMatrix.copy(r.hiddenMatrix),o===!0)for(let n of r.children)At(n)&&this.add(n.shallowClone());return this}clone(r){return new this.constructor().copy(this,r)}copy(r,o=!0){if(super.copy(r,!1),this.raycastLock=r.raycastLock,this.scaleLock=r.scaleLock,this.hiddenMatrix.copy(r.hiddenMatrix),o===!0)for(let n of r.children)At(n)&&this.add(n.clone());return this}keepChildrenMatrixWorld(){let r=new fd,o=this.matrixWorld.clone();this.updateWorldMatrix(!1,!1),r.copy(this.matrixWorld).invert(),r.multiply(o);for(let n of this.children)At(n)&&n.hiddenMatrix.premultiply(r)}toObjectTransformState(r=[]){this.updateWorldMatrix(!0,!1);let o={position:this.position.toArray(),rotation:[this.rotation.x,this.rotation.y,this.rotation.z],scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};return Io(o,r)}fromObjectTransformState(r){return r.position&&this.position.fromArray(r.position),r.rotation&&this.rotation.fromArray(r.rotation),r.scale&&this.scale.fromArray(r.scale),r.hiddenMatrix&&this.hiddenMatrix.fromArray(r.hiddenMatrix),this.updateMatrix(),this}toState(r=[]){let o={name:this.name,visible:this.visible,raycastLock:this.raycastLock,...this.toObjectTransformState(r)};return Io(o,r)}fromState(r,o){return r.name&&(this.name=r.name),r.raycastLock!==void 0&&(this.raycastLock=r.raycastLock),r.type!=="OrthographicCamera"&&r.type!=="PerspectiveCamera"&&(this.matrixAutoUpdate=!1),r.visible!==void 0&&(this.visibility=r.visible),this.fromObjectTransformState(r),this}};import{Object3D as pS,Vector3 as qn,Euler as yd,MathUtils as Vr}from"three";var Ll=i=>i.isCloner===!0,Il=i=>i.parent!==null&&Ll(i.parent),eo=class extends pS{constructor(e,r={}){super();this.isCloner=!0;this.originalMask=0;this.object=e,this.originalMask=e.layers.mask;let o=e.recursiveBBox.getSize(new qn),n=.1;this.parameters=Yi.defaultData(o.toArray(),n),$r(this.parameters,r),this.setHideBase(this.parameters.hideBase),this.update()}refreshMaterial(){if("material"in this.object)for(let e of this.children)e.material=this.object.material}refreshClonerMasks(){for(let e of this.children)e.layers.mask=this.object.layers.mask;this.parameters.hideBase&&!this.object.layers.isEnabled(16)&&(this.originalMask=this.object.layers.mask,this.object.layers.set(16))}setHideBase(e){"material"in this.object&&(e||(this.object.layers.mask=this.originalMask),this.parameters.hideBase=e,this.refreshClonerMasks())}update(){switch(this._updateCount(),this.parameters.type){case"radial":this._updateRadial(this.parameters);break;case"linear":this._updateLinear(this.parameters);break;case"grid":this._updateGrid(this.parameters)}this.children.forEach(e=>e.updateMatrix())}_updateCount(){let e=this.parameters.type==="grid"?this.parameters.grid.count[0]*this.parameters.grid.count[1]*this.parameters.grid.count[2]:this.parameters.count;if(this.children.length!==e)if(this.children.length<e)for(let r=0,o=e-this.children.length;r<o;++r){let n=this.object.shallowClone(!1);n.material=this.object.material,n.visible=!0,n.layers.mask=this.originalMask,this.add(n)}else for(let r=0,o=this.children.length-e;r<o;++r)this.remove(this.children[0])}_updateRadial(e){let r=e.radial,o=r.start*Vr.DEG2RAD,n=r.end*Vr.DEG2RAD,s=o-n,a=new yd(r.rotation[0]*Vr.DEG2RAD,r.rotation[1]*Vr.DEG2RAD,r.rotation[2]*Vr.DEG2RAD),l;switch(r.axis){case"z":l=new qn(0,0,1);break;case"y":l=new qn(0,1,0);break;default:case"x":l=new qn(1,0,0);break}for(let[c,h]of this.children.entries()){h.hiddenMatrix.identity(),h.scale.x=r.scale[0],h.scale.y=r.scale[1],h.scale.z=r.scale[2],h.position.setScalar(0);let p=s/e.count*c-o;switch(r.axis){case"x":h.rotation.set(0,p,0);break;case"y":h.rotation.set(0,0,p);break;case"z":h.rotation.set(p,0,0);break}h.translateOnAxis(l,r.radius),h.position.x+=r.position[0],h.position.y+=r.position[1],h.position.z+=r.position[2],r.alignment===!0?(h.rotation.x+=a.x,h.rotation.y+=a.y,h.rotation.z+=a.z):h.rotation.copy(a)}}_updateLinear(e){if(e.type!=="linear")throw new Error;let r=e.linear,o=new yd(r.rotation[0]*Vr.DEG2RAD,r.rotation[1]*Vr.DEG2RAD,r.rotation[2]*Vr.DEG2RAD);for(let[n,s]of this.children.entries())s.hiddenMatrix.identity(),s.scale.x=1+(r.scale[0]-1)*n,s.scale.y=1+(r.scale[1]-1)*n,s.scale.z=1+(r.scale[2]-1)*n,s.rotation.x=o.x*n,s.rotation.y=o.y*n,s.rotation.z=o.z*n,s.position.x=r.position[0]*n,s.position.y=r.position[1]*n,s.position.z=r.position[2]*n}_updateGrid(e){let r=0,o=e.grid;if(o.useCenter===!0){let n={x:o.count[0]%2===0?2:1,y:o.count[1]%2===0?2:1,z:o.count[2]%2===0?2:1},s=new qn(o.size[0]*(o.count[0]-n.x)*.5,o.size[1]*(o.count[1]-n.y)*.5,o.size[2]*(o.count[2]-n.z)*.5);for(let a=0;a<o.count[0];a++)for(let l=0;l<o.count[1];l++)for(let c=0;c<o.count[2];c++){let h=this.children[r++];h.hiddenMatrix.identity(),h.scale.setScalar(1),h.rotation.set(0,0,0),h.position.x=o.size[0]*a-s.x,h.position.y=o.size[1]*l-s.y,h.position.z=o.size[2]*c-s.z}}else for(let n=0;n<o.count[0];n++)for(let s=0;s<o.count[1];s++)for(let a=0;a<o.count[2];a++){let l=this.children[r++];l.hiddenMatrix.identity(),l.scale.setScalar(1),l.rotation.set(0,0,0),l.position.x=o.size[0]*n,l.position.y=-o.size[1]*s,l.position.z=-o.size[2]*a}}fromClonerState(e){return e.hideBase!==void 0&&this.setHideBase(e.hideBase),$r(this.parameters,e),this.update(),this}onRemoved(){this.object.layers.mask=this.originalMask}};import{MathUtils as ql,BufferAttribute as sw,Mesh as Vd,Vector3 as $l,Float32BufferAttribute as Fd}from"three";import{MathUtils as Sr,Vector2 as wr,Vector3 as Rt,Vector4 as Zo}from"three";import{Texture as uS}from"three";var Oe=class{constructor(t,e,r,o){this.next=void 0;this.uniforms={};this.textures={};this.defines={};if(this.id=t,this.uuid=e,r){this.type=r.type;for(let n in r)n!=="type"&&n!=="calpha"&&(this.uniforms[`f${this.id}_${n}`]=r[n]);for(let n in o)this.defines[n]=o[n]}}copy(t){this.id=t.id,this.type=t.type,this.defines={...t.defines};for(let e in t.uniforms)this.getName(e)==="transmissionSamplerMap"||this.getName(e)==="transmissionDepthMap"||this.getName(e)==="normalMap"||this.getName(e)==="depthMap"||(this.uniforms[e]?this.uniforms[e].copy(t.uniforms[e]):this.uniforms[e]=t.uniforms[e].clone());return this}clone(){return new Oe(this.id).copy(this)}copyUniforms(t){for(let e in this.uniforms){let r=this.getName(e);r!==void 0&&t.uniforms[`f${t.id}_${r}`]&&r!=="transmissionDepthMap"&&r!=="transmissionSamplerMap"&&this.uniforms[e].copy(t.uniforms[`f${t.id}_${r}`])}return this}hasValueByKey(t){return this.uniforms[t]!==void 0}hasValue(t){return this.hasValueByKey(`f${this.id}_${t}`)}setValue(t,e){let r=`f${this.id}_${t}`;this.hasValueByKey(r)&&e!==void 0&&(this.uniforms[r].value=e)}getValue(t){let e=`f${this.id}_${t}`;if(this.hasValueByKey(e))return this.uniforms[e].value}getValues(){let t={type:this.type};for(let e in this.uniforms){let r=this.getName(e);if(r===void 0)continue;let n=this.uniforms[`f${this.id}_${r}`].value;n!==void 0&&(Array.isArray(n)?t[r]=n.map(s=>s.clone?s.clone():s):t[r]=n.clone?n.clone():n)}return t}getName(t){let r=/f\d+_(.*)/.exec(t);if(r&&r.length>1)return r[1];console.log(`Layer.getName: error ${t}`)}getNames(){let t=[];for(let e in this.uniforms){let r=this.getName(e);r&&t.push(r)}return t}isEqual(t){for(let e in t.uniforms){let r=t.getName(e);if(!r)return!1;let o=this.getValue(r),n=t.uniforms[e].value;if(n.value instanceof uS){if(o.image!==n.image)return!1}else if(Array.isArray(n)){let s=o;for(let a=0,l=s.length;a<l;++a)if(s[a]!==n[a])return!1}else{let s=o;if(s.equals){if(!s.equals(n))return!1}else if(o!==n)return!1}}return!0}dispose(){}};function xd(i){let t=i instanceof Oe?i.type:i;return t==="texture"||t==="displace_map"||t==="matcap"}import{MathUtils as dS}from"three";var ce=class{constructor(t){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=dS.generateUUID(),this.type=t,this.name="",this.userData={}}analyze(t,e){e=e??{},t.analyzing=!0,this.build(t.addFlow(e.slot,e.cache,e.context),"v4"),t.clearVertexNodeCode(),t.clearFragmentNodeCode(),t.removeFlow(),t.analyzing=!1}analyzeAndFlow(t,e,r){return r=r??{},this.analyze(t,r),this.flow(t,e,r)}flow(t,e,r){r=r??{},t.addFlow(r.slot,r.cache,r.context);let o={result:this.build(t,e),code:t.clearNodeCode(),extra:t.context.extra};return t.removeFlow(),o}build(t,e,r){e=e??this.getType(t,e);let o=t.getNodeData(r??this);return t.analyzing&&this.appendDepsNode(t,o,e),t.nodes.indexOf(this)===-1&&t.nodes.push(this),this.updateFrame!==void 0&&t.updaters.indexOf(this)===-1&&t.updaters.push(this),this.generate(t,e,r)}updateFrame(t){}generateReadonly(t,e,r,o,n,s){return""}generate(t,e,r,o,n){return""}parse(t,e,r,o){}appendDepsNode(t,e,r){e.deps=(e.deps||0)+1;let o=t.getTypeLength(r);(o>(e.outputMax||0)||this.getType(t,r))&&(e.outputMax=o,e.output=r)}setName(t){this.name=t}getName(){return this.name}getType(t,e){return e==="sampler2D"||e==="samplerCube"?e:this.type}getHash(){let t="{",e,r;for(e in this)r=this[e],r instanceof ce&&(t+='"'+e+'":'+r.getHash()+",");if(this.hashProperties)for(let o=0;o<this.hashProperties.length;o++)e=this.hashProperties[o],r=this[e],t+='"'+e+'":"'+String(r)+'",';return t+='"id":"'+this.uuid+'"}',t}copy(t){return this.name=t.name,t.type&&(this.type=t.type),t.frameId&&(this.frameId=t.frameId),t.hashProperties&&(this.hashProperties=t.hashProperties.map(e=>e)),this.userData=JSON.parse(JSON.stringify(t.userData)),this.shortcuts=JSON.parse(JSON.stringify(t.shortcuts)),this}clone(){return new this.constructor().copy(this)}};import{MathUtils as mS}from"three";var ae=class extends ce{constructor(e,r){super(e);this.scope="";r=r??{},this.shared=r.shared!==void 0?r.shared:!0,this.unique=r.unique!==void 0?r.unique:!1}build(e,r,o,n){if(r=r??this.getType(e),this.getShared(e,r)){let s=this.getUnique(e,r);s&&this.uuid===void 0&&(this.uuid=mS.generateUUID()),o=e.getUUID(o??this.getUUID(),!s);let a=e.getNodeData(o),l=a.output||this.getType(e);if(e.analyzing)return(a.deps||0)>0||this.getLabel()?(this.appendDepsNode(e,a,r),this.generate(e,r,o)):super.build(e,r,o);if(s)return a.name=a.name||super.build(e,r,o),a.name;if(!this.getLabel()&&(!this.getShared(e,l)||e.context.ignoreCache||a.deps===1))return super.build(e,r,o);o=this.getUUID(!1);let c=this.getTemp(e,o);if(c)return e.format(c,l,r);{c=super.generate(e,r,o,a.output,n);let h=this.generate(e,l,o);return e.addNodeCode(c+" = "+h+";"),e.format(c,l,r)}}return super.build(e,r,o)}getShared(e,r){return r!=="sampler2D"&&r!=="samplerCube"&&this.shared}getUnique(e,r){return this.unique}setLabel(e){return this.label=e,this}getLabel(){return this.label}getUUID(e){let r=this.uuid;return typeof this.scope=="string"&&(r=this.scope+"-"+r),r}getTemp(e,r){r=r||this.uuid;let o=e.getVars()[r];return o?o.name:void 0}generate(e,r,o,n,s){return this.getShared(e,r)||console.error("TempNode is not shared"),o=o??this.uuid,e.getTempVar(o,n??this.getType(e),s,this.getLabel()).name}};var Ie=class extends ae{constructor(e,r){r=r??{},r.shared=r.shared!==void 0?r.shared:!1;super(e,r);this.readonly=!1}setReadonly(e){return this.readonly=e,this.hashProperties=this.readonly?["value"]:void 0,this}getReadonly(){return this.readonly}generate(e,r,o,n,s,a){o=e.getUUID(o??this.getUUID()),n=n??this.getType(e);let l=e.getNodeData(o);return this.getReadonly()&&this.generateReadonly!==void 0?this.generateReadonly(e,r,o,n,s,a):e.isShader("vertex")?(l.vertex||(l.vertex=e.createVertexUniform(n,this,s,a,this.getLabel())),e.format(l.vertex.name,n,r)):(l.fragment||(l.fragment=e.createFragmentUniform(n,this,s,a,this.getLabel())),e.format(l.fragment.name,n,r))}copy(e){return super.copy(e),this.readonly=e.readonly,this}};var Ne=class extends Ie{constructor(e=0,r,o,n){super("c");this.nodeType="Color";this.value=e instanceof ut?e:new ut(e||0,r,o,n)}setRGBA(e){this.value.setRGBA(e.r,e.g,e.b,e.a)}generate(e,r,o,n,s,a){o=e.getUUID(o??this.getUUID()),n=n??this.getType(e);let l=e.getNodeData(o),c=this.getReadonly()&&this.generateReadonly!==void 0;if(this.alpha){let h=this.alpha.build(e,"f");e.addFragmentNodeCode(`accumAlpha += ( 1.0 - accumAlpha ) * ${h};`)}return c?this.generateReadonly(e,r,o,n,s,a):e.isShader("vertex")?(l.vertex||(l.vertex=e.createVertexUniform(n,this,s,a,this.getLabel())),e.format(l.vertex.name,n,r)):(l.fragment||(l.fragment=e.createFragmentUniform(n,this,s,a,this.getLabel())),e.format(l.fragment.name,n,r))}generateReadonly(e,r,o,n,s,a){return e.format("vec3("+this.value.r+", "+this.value.g+", "+this.value.b+")",n,r)}};var X=class extends Ie{constructor(e){super("f");this.nodeType="Float";this.value=e??0}generateReadonly(e,r,o,n,s,a){return e.format(this.value+(this.value%1?"":".0"),n,r)}copy(e){return super.copy(e),this.value=e.value,this}};var fe=class extends Ie{constructor(e){super("i");this.nodeType="Int";this.value=Math.floor(e??0)}generateReadonly(e,r,o,n,s,a){return e.format(this.value.toString(),n,r)}copy(e){return super.copy(e),this.value=e.value,this}};var Fr=class extends Ie{constructor(e){super("b");this.nodeType="Bool";this.value=e??!1}generateReadonly(e,r,o,n){return e.format(this.value?"true":"false",n,r)}copy(e){return super.copy(e),this.value=e.value,this}};import{Vector2 as vd}from"three";var Ye=class extends Ie{constructor(e=0,r){super("v2");this.nodeType="Vector2";this.value=e instanceof vd?e:new vd(e,r)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}generateReadonly(e,r,o,n,s,a){return e.format("vec2("+this.value.x+", "+this.value.y+")",n,r)}copy(e){return super.copy(e),this.value.copy(e.value),this}};import{Vector3 as bd}from"three";var ot=class extends Ie{constructor(e=0,r,o){super("v3");this.nodeType="Vector3";this.value=e instanceof bd?e:new bd(e,r,o)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}get z(){return this.value.z}set z(e){this.value.z=e}generateReadonly(e,r,o,n,s,a){return e.format("vec3("+this.value.x+", "+this.value.y+", "+this.value.z+")",n,r)}copy(e){return super.copy(e),this.value.copy(e.value),this}};var nr=class extends Ie{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof ut?e:new ut(e.r,e.g,e.b,e.a)}generateReadonly(e,r,o,n,s,a){return e.format("vec4("+this.value.r+", "+this.value.g+", "+this.value.b+", "+this.value.a+")",n,r)}copy(e){return super.copy(e),this.value.copy(e.value),this}};import{Vector4 as Sd}from"three";var br=class extends Ie{constructor(e=1,r){super("v4[]");this.nodeType="Vector4Array";this.size=e,this.value=Array.isArray(r)?r:r instanceof Sd?new Array(e).fill(r):new Array(e).fill(new Sd(0))}copy(e){return super.copy(e),this.value=e.value.map(r=>r.clone()),this}};var ke=class extends Ie{constructor(e=1,r){super("f[]");this.nodeType="FloatArray";this.size=e,this.value=Array.isArray(r)?r:typeof r=="number"?new Array(e).fill(r):new Array(e).fill(0)}copy(e){return super.copy(e),this.size=e.size,this.value=[...e.value],this}};var Pl=class{constructor(){this.nodes={};this.keywords={}}add(t){this.nodes[t.name]=t}addKeyword(t,e,r){r=r!==void 0?r:!0,this.keywords[t]={callback:e,cache:r}}remove(t){delete this.nodes[t.name]}removeKeyword(t){delete this.keywords[t]}get(t){return this.nodes[t]}getKeyword(t,e){return this.keywords[t].callback(e)}getKeywordData(t){return this.keywords[t]}contains(t){return this.nodes[t]!==void 0}containsKeyword(t){return this.keywords[t]!==void 0}},He=new Pl;var Xo=class extends ae{constructor(e){super("v2",{shared:!1});this.nodeType="UV";this.index=e??0}generate(e,r){e.requires.uv[this.index]=!0;let o=this.index>0?this.index+1:"",n=e.isShader("vertex")?"uv"+o:"vUv"+o;return e.format(n,this.getType(e),r)}copy(e){return super.copy(e),this.index=e.index,this}};He.addKeyword("uv",function(){return new Xo});He.addKeyword("uv2",function(){return new Xo(1)});import{LinearEncoding as gS,sRGBEncoding as yS}from"three";var fS=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,wd=/[a-z_0-9]+/gi,K=class extends ae{constructor(e,r,o,n,s){super(s);this.src="";this.nodeType="Function";this.useKeywords=!0;this.includes=[];this.extensions={};this.keywords={};this.isMethod=s===void 0,this.isInterface=!1,this.parse(e,r,o,n)}getShared(e,r){return!this.isMethod}getType(e){return e.getTypeByFormat(this.type)}getInputByName(e){if(this.inputs){let r=this.inputs.length;for(;r--;)if(this.inputs[r].name===e)return this.inputs[r]}}getIncludeByName(e){if(this.includes){let r=this.includes.length;for(;r--;)if(this.includes[r].name===e)return this.includes[r]}}generate(e,r,o,n,s){let a,l=0,c=this.src;if(this.includes)for(let p=0;p<this.includes.length;p++)e.include(this.includes[p],this);for(let p in this.extensions)e.extensions[p]=!0;let h=[];for(;a=wd.exec(this.src);)h.push(a);for(let p=0;p<h.length;p++){let u=h[p],d=u[0],m=this.isMethod?!this.getInputByName(d):!0,g=d;if(this.keywords[d]||this.useKeywords&&m&&He.containsKeyword(d)){let x=this.keywords[d];if(!x){let y=He.getKeywordData(d);y.cache&&(x=e.keywords[d]),x=x||He.getKeyword(d,e),y.cache&&(e.keywords[d]=x)}g=x.build(e)}d!==g&&c[u.index+l-1]!=="."&&(c=c.substring(0,u.index+l)+g+c.substring(u.index+d.length+l),l+=g.length-d.length),this.getIncludeByName(g)===void 0&&He.contains(g)&&e.include(He.get(g))}return r==="source"?c:this.isMethod?(this.isInterface||e.include(this,void 0,c),this.name):e.format("( "+c+" )",this.getType(e),r)}parse(e,r,o,n){if(this.src=e||"",this.includes=r??[],this.extensions=o??{},this.keywords=n??{},this.isMethod){let s=fS.exec(this.src);if(this.inputs=[],s&&s.length==4){this.type=s[1],this.name=s[2];let a=s[3].match(wd);if(a){let l=0;for(;l<a.length;){let c=a[l++],h;c==="in"||c==="out"||c==="inout"?h=a[l++]:(h=c,c="");let p=a[l++];this.inputs.push({name:p,type:h,qualifier:c})}}this.isInterface=this.src.indexOf("{")===-1}else this.type="",this.name=""}}copy(e){return super.copy(e),this.isMethod=e.isMethod,this.useKeywords=e.useKeywords,e.type!==void 0&&(this.type=e.type),this.parse(e.src,e.includes,e.extensions,e.keywords),this}};var to=class extends ae{constructor(e=new ce,r){super("v4");this.nodeType="ColorSpace";this.factor=new ce;this.input=e,this.method=r??to.LINEAR_TO_LINEAR,this.hashProperties=["method"]}static getEncodingComponents(e){switch(e){case gS:return["Linear"];case yS:return["sRGB"];default:return[]}}generate(e,r){let o=this.input.build(e,"v4"),n=this.getType(e),s=to.Nodes[this.method],a=e.include(s);if(a===to.LINEAR_TO_LINEAR)return e.format(o,n,r);if(s.inputs?.length===2){let l=this.factor.build(e,"f");return e.format(a+"( "+o+", "+l+" )",n,r)}else return e.format(a+"( "+o+" )",n,r)}fromEncoding(e){let r=to.getEncodingComponents(e);this.method="LinearTo"+r[0],this.factor=r[1]}fromDecoding(e){let r=to.getEncodingComponents(e);this.method=r[0]+"ToLinear",this.factor=r[1]}copy(e){return super.copy(e),this.input.copy(e.input),this.method=e.method,this.factor.copy(e.factor),this}},at=to;at.Nodes={LinearToLinear:new K(["vec4 LinearToLinear( in vec4 value ) {"," return value;","}"].join(`
|
|
2
|
+
`)),sRGBToLinear:new K(["vec4 sRGBToLinear( in vec4 value ) {"," return vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.w );","}"].join(`
|
|
3
|
+
`)),LinearTosRGB:new K(["vec4 LinearTosRGB( in vec4 value ) {"," return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.w );","}"].join(`
|
|
4
|
+
`))},at.LINEAR_TO_LINEAR="LinearToLinear",at.SRGB_TO_LINEAR="sRGBToLinear",at.LINEAR_TO_SRGB="LinearTosRGB";var Ce=class extends K{constructor(e="",r,o,n,s){super(e,s,n,o,r);this.nodeType="Expression"}};import{Texture as xS}from"three";var Dt=class extends xS{toJSON(t){let e=super.toJSON(t),r=t===void 0||typeof t=="string";if(this.image!==void 0&&!r){let o=this.image;if(Array.isArray(o)){t.images[o.uuid].url=[];for(let n=0;n<o.length;n++)t.images[o.uuid].url[n]=Nd(o[n])}else t.images[o.uuid].url=Nd(o)}return e}};function Nd(i){return typeof HTMLImageElement<"u"&&i instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&i instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&i instanceof ImageBitmap?vS(i):(console.warn("THREE.Texture: Unable to serialize Texture."),"")}var Ko;function vS(i){if(/^data:/i.test(i.src))return i.src;let t;if(i instanceof HTMLCanvasElement)t=i;else{Ko===void 0&&(Ko=document.createElement("canvas")),Ko.width=i.width,Ko.height=i.height;let r=Ko.getContext("2d");i instanceof ImageData?r.putImageData(i,0,0):r.drawImage(i,0,0,i.width,i.height),t=Ko}let e=i.src.startsWith("blob:")?i.fileName:i.src;return/\.jpe?g$/i.test(e)?t.toDataURL("image/jpeg",.6):t.toDataURL("image/png")}var Je=class extends Ie{constructor(e=new Dt,r,o,n){super("v4",{shared:!0});this.nodeType="Texture";this.value=e,this.uv=r??new Xo,this.bias=o,this.project=n!==void 0?n:!1}getTexture(e,r){return super.generate(e,r,this.value.uuid,"t")}generate(e,r){if(r==="sampler2D")return this.getTexture(e,r);let o=this.getTexture(e,r),n=this.uv.build(e,this.project?"v4":"v2"),s=this.bias?this.bias.build(e,"f"):void 0;s===void 0&&e.context.bias&&(s=e.context.bias.setTexture(this).build(e,"f"));let a,l;this.project?a="texture2DProj":a=s?"tex2DBias":"tex2D",s?l=a+"( "+o+", "+n+", "+s+" )":l=a+"( "+o+", "+n+" )";let c={include:e.isShader("vertex"),ignoreCache:!0},h=this.getType(e);return e.addContext(c),this.colorSpace=this.colorSpace??new at(new Ce("",h)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(l),l=this.colorSpace.build(e,h),e.removeContext(),e.format(l,h,r)}copy(e){return super.copy(e),e.value.isRenderTargetTexture?this.value=e.value:this.value.copy(e.value),this.uv.copy(e.uv),e.bias?this.bias?this.bias.copy(e.bias):this.bias=e.bias.clone():this.bias=void 0,e.colorSpace?this.colorSpace?this.colorSpace.copy(e.colorSpace):this.colorSpace=e.colorSpace.clone():this.colorSpace=void 0,this.project=e.project,e.value.isRenderTargetTexture||(this.value.updateMatrix(),this.value.needsUpdate=!0),this}};import{Matrix3 as bS}from"three";var Yo=class extends Ie{constructor(e){super("m3");this.nodeType="Matrix3";this.value=e??new bS}generateReadonly(e,r,o,n,s,a){return e.format("mat3("+this.value.elements.join(", ")+")",n,r)}copy(e){return super.copy(e),this.elements=e.elements,this}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};var Xn=class extends ae{constructor(e=new Je,r,o,n,s,a,l,c,h){super("v3");this.nodeType="CustomTexture";this.firstTime=!0,this.texture=e,this.textureSize=r,this.crop=o,this.projection=n,this.axis=s,this.side=a,this.size=l,this.mat=new Yo(this.texture.value.matrix),this.alpha=c,this.mode=h,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){e.require("position"),e.require("normal"),e.require("uv"),e.requires.uv=[!0],e.extensions.shaderTextureLOD=!0,e.extensions.derivatives=!0;let o=`g${this.uuid.toString().replace(/-/g,"")}`,n;switch(this.projection.value){case 3:n=e.include(Xn.Nodes.cylindrical);break;case 2:n=e.include(Xn.Nodes.spherical);break;case 1:let a=["vec3(1.0, 0.0, 0.0)","vec3(0.0, 1.0, 0.0)","vec3(0.0, 0.0, 1.0)"][this.axis.value],l=new K(`
|
|
131
5
|
vec3 ${o}_planarTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
|
|
132
6
|
|
|
133
7
|
vec2 uvs = ( mat * vec3( (${o}_vCustomUv * 2. - 1.) / (size * .5), 1. ) / 2. + 0.5 ).xy;
|
|
@@ -146,7 +20,7 @@ var zm=Object.create;var Sa=Object.defineProperty;var Rm=Object.getOwnPropertyDe
|
|
|
146
20
|
calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
|
|
147
21
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
148
22
|
return col;
|
|
149
|
-
}`);
|
|
23
|
+
}`);n=e.include(l);break;default:n=e.include(Xn.Nodes.uv);break}if(this.projection.value===1&&this.firstTime){e.addVertexParsCode(`varying vec2 ${o}_vCustomUv;`),e.addFragmentParsCode(`varying vec2 ${o}_vCustomUv;`);let a=["zy","xz","xy"][this.axis.value];e.addVertexFinalCode(`${o}_vCustomUv = (1. + (transformed.${a})) / 2.;`)}e.addFragmentVariable(this.calpha,"float");let s=[];return s.push(this.texture.getTexture(e,"t")),s.push(this.textureSize.build(e,"v2")),s.push(this.crop.build(e,"f")),s.push(this.mat.build(e,"mat3")),s.push(this.size.build(e,"v2")),s.push(this.alpha.build(e,"f")),s.push(this.mode.build(e,"i")),s.push(this.calpha),this.firstTime=!this.firstTime,e.format(n+"("+s.join(",")+")",this.getType(e),r)}copy(e){return super.copy(e),this.texture.copy(e.texture),this.textureSize=e.textureSize.clone(),this.crop=e.crop.clone(),this.projection=e.projection.clone(),this.axis=e.axis.clone(),this.size=e.size.clone(),this.alpha=e.alpha.clone(),this.mode=e.mode.clone(),this}},$n=Xn;$n.Nodes=function(){let e=new K(`
|
|
150
24
|
vec3 cylindricalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
|
|
151
25
|
vec3 posN = normalize(position);
|
|
152
26
|
float u = 0.5 + atan(posN.z, posN.x) / (2.*3.1415);
|
|
@@ -176,7 +50,7 @@ vec3 cylindricalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, v
|
|
|
176
50
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
177
51
|
return col;
|
|
178
52
|
}
|
|
179
|
-
`),r=new
|
|
53
|
+
`),r=new K(`
|
|
180
54
|
vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
|
|
181
55
|
vec3 posN = normalize(vPosition);
|
|
182
56
|
float u = 0.5 + atan(posN.z, posN.x) / (2.*3.1415);
|
|
@@ -204,7 +78,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
204
78
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
205
79
|
return col;
|
|
206
80
|
}
|
|
207
|
-
`),o=new
|
|
81
|
+
`),o=new K(`vec3 uvTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
|
|
208
82
|
|
|
209
83
|
vec2 uvs = ( mat * vec3( vUv * 2. - 1., 1. ) / 2. + 0.5 ).xy;
|
|
210
84
|
vec4 tmp = texture2D( tex, uvs );
|
|
@@ -220,14 +94,14 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
220
94
|
calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
|
|
221
95
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
222
96
|
return col;
|
|
223
|
-
}`);return{cylindrical:e,spherical:r,uv:o}}();var
|
|
97
|
+
}`);return{cylindrical:e,spherical:r,uv:o}}();var Ml=class extends ae{constructor(e,r,o,n,s,a,l){super("v3");this.nodeType="Fresnel";this.color=e,this.bias=r,this.scale=o,this.intensity=n,this.factor=s,this.alpha=a,this.mode=l,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.isShader("fragment")){e.addFragmentVariable(this.calpha,"float");let o=e.include(Ml.Nodes.fresnel),n=[];return n.push(this.color.build(e,"c")),n.push(this.bias.build(e,"f")),n.push(this.scale.build(e,"f")),n.push(this.intensity.build(e,"f")),n.push(this.factor.build(e,"f")),n.push(this.alpha.build(e,"f")),n.push(this.mode.build(e,"i")),n.push(this.calpha),e.format(o+"("+n.join(",")+")",this.getType(e),r)}else return console.warn("FresnelNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}copy(e){return super.copy(e),this.color=e.color.clone(),this.bias=e.bias.clone(),this.scale=e.scale.clone(),this.intensity=e.intensity.clone(),this.factor=e.factor.clone(),this.alpha=e.alpha.clone(),this.mode=e.mode.clone(),this.calpha=e.calpha,this}},Kn=Ml;Kn.Nodes=function(){return{fresnel:new K(`vec3 fresnel(vec3 color, float bias, float scale, float intensity, float factor, float alpha, int mode, out float calpha) {
|
|
224
98
|
float fresnel = bias + scale * pow( abs( factor + dot( normalize( vWorldViewDir ), normalize( vWNormal ) ) ), intensity );
|
|
225
99
|
|
|
226
100
|
float lalpha = clamp( fresnel, 0.0, 1.0 ) * alpha;
|
|
227
101
|
calpha = lalpha / clamp(lalpha + accumAlpha, 0.001, 1.0);
|
|
228
102
|
accumAlpha += (1.0 - accumAlpha) * lalpha;
|
|
229
103
|
return color;
|
|
230
|
-
}`)}}();var
|
|
104
|
+
}`)}}();var SS=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,Al=class extends ae{constructor(e="",r){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||Al.PI,void 0,void 0,void 0,r)}getType(e){return e.getTypeByFormat(this.type)}parse(e,r,o,n,s){this.src=e||"";let a,l,c="",h=SS.exec(e);this.useDefine=s??this.src.charAt(0)==="#",h&&h.length>1?(l=h[1],a=h[2],c=h[3]):(a=this.src,l="f"),this.name=a,this.type=l,this.value=c}build(e,r){if(r==="source"){if(this.value)return this.useDefine?"#define "+this.name+" "+this.value:"const "+this.type+" "+this.name+" = "+this.value+";";if(this.useDefine)return this.src}return e.include(this),e.format(this.name,this.getType(e),r)}generate(e,r,o,n,s){return e.format(this.name,this.getType(e),r)}copy(e){return super.copy(e),this.parse(e.src,void 0,void 0,void 0,e.useDefine),this}},xe=Al;xe.PI="PI",xe.PI2="PI2",xe.RECIPROCAL_PI="RECIPROCAL_PI",xe.RECIPROCAL_PI2="RECIPROCAL_PI2",xe.LOG2="LOG2",xe.EPSILON="EPSILON";var Yn=(n=>(n.SIMPLEX="simplex3d",n.SIMPLEX_FRACTAL="simplex3dFractal",n.ASHIMA="simplexAshima",n.FBM="fbm",n.PERLIN="perlin",n))(Yn||{}),nt=function(){let t=new K(`vec3 random3(vec3 c) {
|
|
231
105
|
float j = 4096.0*sin(dot(c,vec3(17.0, 59.4, 15.0)));
|
|
232
106
|
vec3 r;
|
|
233
107
|
r.z = fract(512.0*j);
|
|
@@ -236,7 +110,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
236
110
|
j *= .125;
|
|
237
111
|
r.y = fract(512.0*j);
|
|
238
112
|
return r-0.5;
|
|
239
|
-
}`),e=new
|
|
113
|
+
}`),e=new K(`float simplex3d(vec3 p) {
|
|
240
114
|
vec3 s = floor(p + dot(p, vec3(F3)));
|
|
241
115
|
vec3 x = p - s + dot(s, vec3(G3));
|
|
242
116
|
|
|
@@ -267,7 +141,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
267
141
|
d *= w;
|
|
268
142
|
|
|
269
143
|
return dot(d, vec4(52.0));
|
|
270
|
-
}`,[t]);e.keywords.F3=new xe("float F3 0.3333333"),e.keywords.G3=new xe("float G3 0.1666667");let r=new
|
|
144
|
+
}`,[t]);e.keywords.F3=new xe("float F3 0.3333333"),e.keywords.G3=new xe("float G3 0.1666667");let r=new K(`float simplex3dFractal(vec3 m) {
|
|
271
145
|
mat3 rot1 = mat3(-0.37, 0.36, 0.85,-0.14,-0.93, 0.34,0.92, 0.01,0.4);
|
|
272
146
|
mat3 rot2 = mat3(-0.55,-0.39, 0.74, 0.33,-0.91,-0.24,0.77, 0.12,0.63);
|
|
273
147
|
mat3 rot3 = mat3(-0.71, 0.52,-0.47,-0.08,-0.72,-0.68,-0.7,-0.45,0.56);
|
|
@@ -275,7 +149,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
275
149
|
+ 0.2666667 * simplex3d(2.0 * m * rot2)
|
|
276
150
|
+ 0.1333333 * simplex3d(4.0 * m * rot3)
|
|
277
151
|
+ 0.0666667 * simplex3d(8.0 * m);
|
|
278
|
-
}`,[e]),o=new
|
|
152
|
+
}`,[e]),o=new K("vec4 permute(vec4 x){return mod(((x*34.0)+1.0)*x, 289.0);}"),n=new K("vec4 taylorInvSqrt(vec4 r){return 1.79284291400159 - 0.85373472095314 * r;}"),s=new K(`float simplexAshima(vec3 v) {
|
|
279
153
|
const vec2 C = vec2(1.0/6.0, 1.0/3.0) ;
|
|
280
154
|
const vec4 D = vec4(0.0, 0.5, 1.0, 2.0);
|
|
281
155
|
vec3 i = floor(v + dot(v, C.yyy) );
|
|
@@ -320,7 +194,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
320
194
|
m = m * m;
|
|
321
195
|
return 42.0 * dot( m*m, vec4( dot(p0,x0), dot(p1,x1),
|
|
322
196
|
dot(p2,x2), dot(p3,x3) ) );
|
|
323
|
-
}`,[o,
|
|
197
|
+
}`,[o,n]),a=new K("vec4 mod289(vec4 x){return x - floor(x * (1.0 / 289.0)) * 289.0;}"),l=new K("vec4 perm(vec4 x){return mod289(((x * 34.0) + 1.0) * x);}",[a]),c=new K(`float noise(vec3 p){
|
|
324
198
|
vec3 a = floor(p);
|
|
325
199
|
vec3 d = p - a;
|
|
326
200
|
d = d * d * (3.0 - 2.0 * d);
|
|
@@ -335,7 +209,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
335
209
|
vec4 o3 = o2 * d.z + o1 * (1.0 - d.z);
|
|
336
210
|
vec2 o4 = o3.yw * d.x + o3.xz * (1.0 - d.x);
|
|
337
211
|
return o4.y * d.y + o4.x * (1.0 - d.y);
|
|
338
|
-
}`,[l]),h=new
|
|
212
|
+
}`,[l]),h=new K(`float fbm(vec3 x) {
|
|
339
213
|
float v = 0.0;
|
|
340
214
|
float a = 0.5;
|
|
341
215
|
vec3 shift = vec3(100);
|
|
@@ -345,7 +219,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
345
219
|
a *= 0.5;
|
|
346
220
|
}
|
|
347
221
|
return v;
|
|
348
|
-
}`,[c]);h.keywords.NUM_OCTAVES=new xe(`int NUM_OCTAVES ${5}`);let p=new
|
|
222
|
+
}`,[c]);h.keywords.NUM_OCTAVES=new xe(`int NUM_OCTAVES ${5}`);let p=new K("vec3 fade(vec3 t) {return t*t*t*(t*(t*6.0-15.0)+10.0);}"),u=new K(`float perlin(vec3 P){
|
|
349
223
|
vec3 Pi0 = floor(P);
|
|
350
224
|
vec3 Pi1 = Pi0 + vec3(1.0);
|
|
351
225
|
Pi0 = mod(Pi0, 289.0);
|
|
@@ -404,7 +278,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
404
278
|
vec2 n_yz = mix(n_z.xy, n_z.zw, fade_xyz.y);
|
|
405
279
|
float n_xyz = mix(n_yz.x, n_yz.y, fade_xyz.x);
|
|
406
280
|
return 2.2 * n_xyz;
|
|
407
|
-
}`,[o,
|
|
281
|
+
}`,[o,n,p]);return{simplex:e,simplexFractal:r,simplexAshima:s,fbm:h,perlin:u}}();var Ol=class extends ae{constructor(e,r,o,n,s,a,l){super("v3");this.nodeType="Rainbow";this.filmThickness=e,this.movement=r,this.wavelengths=o,this.noiseStrength=n,this.noiseScale=s,this.offset=a,this.alpha=l,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(Ol.Nodes.rainbow),n=[];return n.push(this.filmThickness.build(e,"f")),n.push(this.movement.build(e,"f")),n.push(this.wavelengths.build(e,"v3")),n.push(this.noiseStrength.build(e,"f")),n.push(this.noiseScale.build(e,"f")),n.push(this.offset.build(e,"v3")),n.push(this.alpha.build(e,"f")),n.push(this.calpha),e.format(o+"("+n.join(",")+")",this.getType(e),r)}else return console.warn("RainbowNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}copy(e){return super.copy(e),this.filmThickness=e.filmThickness.clone(),this.movement=e.movement.clone(),this.wavelengths=e.wavelengths.clone(),this.noiseStrength=e.noiseStrength.clone(),this.noiseScale=e.noiseScale.clone(),this.offset=e.offset.clone(),this.alpha=e.alpha.clone(),this.calpha=e.calpha,this}},Jn=Ol;Jn.Nodes=function(){let e=new K(`vec3 attenuation(vec3 wavelengths, float filmThickness, float movement, float noiseStrength, float noiseScale, vec3 offset) {
|
|
408
282
|
vec3 st = position / noiseScale;
|
|
409
283
|
vec3 q = vec3(simplex3d(st),
|
|
410
284
|
simplex3d(st + vec3(1.0)),
|
|
@@ -417,7 +291,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
417
291
|
float noise = simplex3d(st + r);
|
|
418
292
|
|
|
419
293
|
return .5 + .5 * cos((((filmThickness + (noise * noiseStrength)) / (vec3(wavelengths.r * 1.0, wavelengths.g * 0.8, wavelengths.b * 0.6) + 1.0)) * dot(normalize(vWorldViewDir + (offset * -0.001)), normalize(vWNormal))) + movement);
|
|
420
|
-
}`,[
|
|
294
|
+
}`,[nt.simplex]);return{rainbow:new K(`vec3 rainbow(float filmThickness, float movement, vec3 wavelengths, float noiseStrength, float noiseScale, vec3 offset, float alpha, out float calpha) {
|
|
421
295
|
vec3 res = clamp(attenuation(wavelengths, filmThickness, movement, noiseStrength, noiseScale, offset), 0.0, 2.0);
|
|
422
296
|
|
|
423
297
|
float rainbowContribution = clamp(res.r + res.g + res.b, 0.0, 1.0);
|
|
@@ -426,11 +300,398 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
426
300
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
427
301
|
|
|
428
302
|
return res;
|
|
429
|
-
}`,[e])}}();var Dl=class extends
|
|
303
|
+
}`,[e])}}();var Dl=class extends ae{constructor(e,r,o,n,s,a,l,c,h,p){super("v3");this.nodeType="Toon";this.positioning=e,this.colors=r,this.steps=o,this.source=n,this.isWorldSpace=s,this.noiseStrength=a,this.noiseScale=l,this.shadowColor=c,this.offset=h,this.alpha=p,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.require("worldNormal"),e.require("worldPosition"),e.isShader("fragment")){e.define("COLORS_MAX",10),e.addFragmentVariable(this.calpha,"float");let o=e.include(Dl.Nodes.toon),n=[];return n.push(this.positioning.build(e,"i")),n.push(this.colors.build(e,"v4[]")),n.push(this.steps.build(e,"f[]")),n.push(this.source.build(e,"v3")),n.push(this.isWorldSpace.build(e,"b")),n.push(this.noiseStrength.build(e,"f")),n.push(this.noiseScale.build(e,"f")),n.push(this.shadowColor.build(e,"v4")),n.push(this.offset.build(e,"v3")),n.push(this.alpha.build(e,"f")),n.push(this.calpha),e.format(o+"("+n.join(",")+")",this.getType(e),r)}else return console.warn("ToonNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}copy(e){return super.copy(e),this.positioning=e.positioning.clone(),this.colors=e.colors.clone(),this.steps=e.steps.clone(),this.source=e.source.clone(),this.isWorldSpace=e.isWorldSpace.clone(),this.noiseStrength=e.noiseStrength.clone(),this.noiseScale=e.noiseScale.clone(),this.shadowColor=e.shadowColor.clone(),this.offset=e.offset.clone(),this.alpha=e.alpha.clone(),this.calpha=e.calpha,this}},Qn=Dl;Qn.Nodes=function(){let e=new K(`float rand(float n) {
|
|
304
|
+
return fract(sin(n) * 43758.5453123);
|
|
305
|
+
}`),r=new K(`float hash1(float p) {
|
|
306
|
+
p = fract(p * 0.011);
|
|
307
|
+
p *= p + 7.5;
|
|
308
|
+
p *= p + p;
|
|
309
|
+
return fract(p);
|
|
310
|
+
}`),o=new K(`float valueNoise(vec3 x) {
|
|
311
|
+
const vec3 step = vec3(110, 241, 171);
|
|
312
|
+
|
|
313
|
+
vec3 i = floor(x);
|
|
314
|
+
vec3 f = fract(x);
|
|
315
|
+
|
|
316
|
+
// For performance, compute the base input to a 1D hash from the integer part of the argument and the
|
|
317
|
+
// incremental change to the 1D based on the 3D -> 1D wrapping
|
|
318
|
+
float n = dot(i, step);
|
|
319
|
+
|
|
320
|
+
vec3 u = f * f * (3.0 - 2.0 * f);
|
|
321
|
+
return mix(mix(mix( hash1(n + dot(step, vec3(0, 0, 0))), hash1(n + dot(step, vec3(1, 0, 0))), u.x),
|
|
322
|
+
mix( hash1(n + dot(step, vec3(0, 1, 0))), hash1(n + dot(step, vec3(1, 1, 0))), u.x), u.y),
|
|
323
|
+
mix(mix( hash1(n + dot(step, vec3(0, 0, 1))), hash1(n + dot(step, vec3(1, 0, 1))), u.x),
|
|
324
|
+
mix( hash1(n + dot(step, vec3(0, 1, 1))), hash1(n + dot(step, vec3(1, 1, 1))), u.x), u.y), u.z);
|
|
325
|
+
}`,[r]),n=new K(`vec3 hash3(vec3 x) {
|
|
326
|
+
x = vec3(dot(x,vec3(127.1, 311.7, 74.7)),
|
|
327
|
+
dot(x,vec3(269.5, 183.3, 246.1)),
|
|
328
|
+
dot(x,vec3(113.5, 271.9, 124.6)));
|
|
329
|
+
|
|
330
|
+
return fract(sin(x)*43758.5453123);
|
|
331
|
+
}`),s=new K(`vec3 voronoiNoise(in vec3 x)
|
|
332
|
+
{
|
|
333
|
+
vec3 p = floor(x);
|
|
334
|
+
vec3 f = fract(x);
|
|
335
|
+
|
|
336
|
+
float id = 0.0;
|
|
337
|
+
vec2 res = vec2(100.0);
|
|
338
|
+
|
|
339
|
+
for(int k=-1; k<=1; k++)
|
|
340
|
+
for(int j=-1; j<=1; j++)
|
|
341
|
+
for(int i=-1; i<=1; i++)
|
|
342
|
+
{
|
|
343
|
+
vec3 b = vec3(float(i), float(j), float(k));
|
|
344
|
+
|
|
345
|
+
// Comment out the "+ hash(p + b);" part below to get "square" cells
|
|
346
|
+
vec3 r = vec3(b) - f + hash3(p + b);
|
|
347
|
+
float d = dot(r, r);
|
|
348
|
+
|
|
349
|
+
if (d < res.x)
|
|
350
|
+
{
|
|
351
|
+
id = dot(p + b, vec3(1.0, 57.0, 113.0));
|
|
352
|
+
res = vec2(d, res.x);
|
|
353
|
+
}
|
|
354
|
+
else if (d < res.y)
|
|
355
|
+
{
|
|
356
|
+
res.y = d;
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
return vec3(sqrt(res), abs(id));
|
|
361
|
+
}
|
|
362
|
+
`,[n]);return{toon:new K(`vec3 toon(int positioning, vec4 colors[COLORS_MAX], float steps[COLORS_MAX], vec3 source, bool isWorldSpace, float noiseStrength, float noiseScale, vec4 shadowColor, vec3 offset, float alpha, out float calpha) {
|
|
363
|
+
float t = 0.0;
|
|
364
|
+
float shadow = 1.0;
|
|
365
|
+
|
|
366
|
+
if (positioning == 0) {
|
|
367
|
+
|
|
368
|
+
// Can't do this mode if lighting is "none"
|
|
369
|
+
#if (defined(PHONG) || defined(LAMBERT) || defined(STANDARD))
|
|
370
|
+
|
|
371
|
+
// Algorithm from Chapter 10 of Graphics Shaders
|
|
372
|
+
const vec3 weights = vec3(0.2125, 0.7154, 0.0721);
|
|
373
|
+
vec3 lpos;
|
|
374
|
+
vec3 l;
|
|
375
|
+
float dproduct;
|
|
376
|
+
|
|
377
|
+
#if (NUM_POINT_LIGHTS > 0)
|
|
378
|
+
|
|
379
|
+
#if defined(USE_SHADOWMAP) && (NUM_POINT_LIGHT_SHADOWS > 0)
|
|
380
|
+
PointLightShadow pointLightShadow;
|
|
381
|
+
#endif
|
|
382
|
+
|
|
383
|
+
#pragma unroll_loop_start
|
|
384
|
+
for (int i = 0; i < NUM_POINT_LIGHTS; i++) {
|
|
385
|
+
// Light positions are in view-space for some reason?
|
|
386
|
+
lpos = (inverse(viewMatrix) * vec4(pointLights[UNROLLED_LOOP_INDEX].position, 1.0)).xyz;
|
|
387
|
+
l = normalize(lpos - worldPosition);
|
|
388
|
+
|
|
389
|
+
dproduct = dot(l, normalize(worldNormal)) * 0.5 + 0.5;
|
|
390
|
+
|
|
391
|
+
// TODO: we want to use "intensity" but it isn't available in the shader code
|
|
392
|
+
//dproduct += dot(pointLights[UNROLLED_LOOP_INDEX].color, weights);
|
|
393
|
+
|
|
394
|
+
t = max(t, dproduct);
|
|
395
|
+
|
|
396
|
+
// Accumulate shadow contribution
|
|
397
|
+
#if defined(USE_SHADOWMAP) && (UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS)
|
|
398
|
+
pointLightShadow = pointLightShadows[UNROLLED_LOOP_INDEX];
|
|
399
|
+
shadow *= getPointShadow(
|
|
400
|
+
pointShadowMap[UNROLLED_LOOP_INDEX],
|
|
401
|
+
pointLightShadow.shadowMapSize,
|
|
402
|
+
pointLightShadow.shadowBias,
|
|
403
|
+
pointLightShadow.shadowRadius,
|
|
404
|
+
vPointShadowCoord[UNROLLED_LOOP_INDEX],
|
|
405
|
+
pointLightShadow.shadowCameraNear,
|
|
406
|
+
pointLightShadow.shadowCameraFar);
|
|
407
|
+
#endif
|
|
408
|
+
}
|
|
409
|
+
#pragma unroll_loop_end
|
|
410
|
+
|
|
411
|
+
#endif
|
|
412
|
+
|
|
413
|
+
#if NUM_DIR_LIGHTS > 0
|
|
414
|
+
|
|
415
|
+
#if defined(USE_SHADOWMAP) && (NUM_DIR_LIGHT_SHADOWS > 0)
|
|
416
|
+
DirectionalLightShadow directionalLightShadow;
|
|
417
|
+
#endif
|
|
418
|
+
|
|
419
|
+
#pragma unroll_loop_start
|
|
420
|
+
for (int i = 0; i < NUM_DIR_LIGHTS; i++) {
|
|
421
|
+
// Use the direction vector for directional lights instead
|
|
422
|
+
l = (inverse(viewMatrix) * vec4(directionalLights[UNROLLED_LOOP_INDEX].direction, 0.0)).xyz;
|
|
423
|
+
|
|
424
|
+
dproduct = dot(l, normalize(worldNormal)) * 0.5 + 0.5;
|
|
425
|
+
t = max(t, dproduct);
|
|
426
|
+
|
|
427
|
+
// Accumulate shadow contribution
|
|
428
|
+
#if defined(USE_SHADOWMAP) && (UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS)
|
|
429
|
+
directionalLightShadow = directionalLightShadows[UNROLLED_LOOP_INDEX];
|
|
430
|
+
shadow *= getShadow(
|
|
431
|
+
UNROLLED_LOOP_INDEX,
|
|
432
|
+
directionalShadowMap[UNROLLED_LOOP_INDEX],
|
|
433
|
+
directionalLightShadow.shadowMapSize,
|
|
434
|
+
directionalLightShadow.shadowBias,
|
|
435
|
+
directionalLightShadow.shadowRadius,
|
|
436
|
+
vDirectionalShadowCoord[UNROLLED_LOOP_INDEX]);
|
|
437
|
+
#endif
|
|
438
|
+
}
|
|
439
|
+
#pragma unroll_loop_end
|
|
440
|
+
|
|
441
|
+
#endif
|
|
442
|
+
|
|
443
|
+
#if NUM_SPOT_LIGHTS > 0
|
|
444
|
+
|
|
445
|
+
#if defined(USE_SHADOWMAP) && (NUM_SPOT_LIGHT_SHADOWS > 0)
|
|
446
|
+
SpotLightShadow spotLightShadow;
|
|
447
|
+
#endif
|
|
448
|
+
|
|
449
|
+
#pragma unroll_loop_start
|
|
450
|
+
for (int i = 0; i < NUM_SPOT_LIGHTS; i++) {
|
|
451
|
+
lpos = (inverse(viewMatrix) * vec4(spotLights[UNROLLED_LOOP_INDEX].position, 1.0)).xyz;
|
|
452
|
+
l = normalize(lpos - worldPosition);
|
|
453
|
+
|
|
454
|
+
dproduct = dot(l, normalize(worldNormal)) * 0.5 + 0.5;
|
|
455
|
+
t = max(t, dproduct);
|
|
456
|
+
|
|
457
|
+
// Accumulate shadow contribution
|
|
458
|
+
#if defined(USE_SHADOWMAP) && (UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS)
|
|
459
|
+
spotLightShadow = spotLightShadows[UNROLLED_LOOP_INDEX];
|
|
460
|
+
shadow *= getShadow(
|
|
461
|
+
UNROLLED_LOOP_INDEX,
|
|
462
|
+
spotShadowMap[UNROLLED_LOOP_INDEX],
|
|
463
|
+
spotLightShadow.shadowMapSize,
|
|
464
|
+
spotLightShadow.shadowBias,
|
|
465
|
+
spotLightShadow.shadowRadius,
|
|
466
|
+
vSpotShadowCoord[UNROLLED_LOOP_INDEX]);
|
|
467
|
+
#endif
|
|
468
|
+
}
|
|
469
|
+
#pragma unroll_loop_end
|
|
470
|
+
|
|
471
|
+
#endif
|
|
472
|
+
|
|
473
|
+
t = clamp(t, 0.0, 1.0);
|
|
474
|
+
|
|
475
|
+
#endif
|
|
476
|
+
|
|
477
|
+
} else if (positioning == 1) {
|
|
478
|
+
|
|
479
|
+
vec3 origin = mix(position, worldPosition, float(isWorldSpace));
|
|
480
|
+
vec3 direction = normalize(source - origin);
|
|
481
|
+
t = dot(direction, normalize(worldNormal)) * 0.5 + 0.5;
|
|
482
|
+
|
|
483
|
+
} else {
|
|
484
|
+
|
|
485
|
+
vec3 origin = worldPosition;
|
|
486
|
+
vec3 source = cameraPosition - offset;
|
|
487
|
+
vec3 direction = normalize(source - origin);
|
|
488
|
+
t = dot(direction, normalize(worldNormal)) * 0.5 + 0.5;
|
|
489
|
+
|
|
490
|
+
}
|
|
491
|
+
|
|
492
|
+
if (noiseStrength > 0.0) {
|
|
493
|
+
// Distort with noise
|
|
494
|
+
vec3 st = position / noiseScale;
|
|
495
|
+
|
|
496
|
+
// Voronoi "smooth" noise
|
|
497
|
+
float noise = 1.0 - voronoiNoise(st).x;
|
|
498
|
+
|
|
499
|
+
// Voronoi cellular noise
|
|
500
|
+
//float noise = 1.0 - rand(voronoiNoise(st).z);
|
|
501
|
+
|
|
502
|
+
// Position warp noise
|
|
503
|
+
// vec3 offset = vec3(
|
|
504
|
+
// simplex3d(st),
|
|
505
|
+
// simplex3d(st + vec3(111.1, 143.89, 217.19)),
|
|
506
|
+
// simplex3d(st + vec3(171.1, 247.89, 117.23))
|
|
507
|
+
// );
|
|
508
|
+
// st += offset;
|
|
509
|
+
// float noise = valueNoise(st);
|
|
510
|
+
|
|
511
|
+
t += noise * noiseStrength;
|
|
512
|
+
}
|
|
513
|
+
|
|
514
|
+
t = clamp(t, 0.0, 1.0);
|
|
515
|
+
|
|
516
|
+
// Compute ramp color
|
|
517
|
+
float p;
|
|
518
|
+
vec4 color = colors[0];
|
|
519
|
+
for (int i = 1; i < COLORS_MAX; i++) {
|
|
520
|
+
p = clamp((t - steps[i-1]) / (steps[i] - steps[i-1]), 0.0, 1.0);
|
|
521
|
+
color = mix(color, colors[i], smoothstep(0.0, 1.0, p));
|
|
522
|
+
}
|
|
523
|
+
|
|
524
|
+
// Incorporate custom shadow color
|
|
525
|
+
if (positioning == 0) {
|
|
526
|
+
|
|
527
|
+
vec3 blendedShadow = mix(color.rgb, shadowColor.rgb, shadowColor.a);
|
|
528
|
+
color.rgb = mix(blendedShadow, color.rgb, shadow);
|
|
529
|
+
|
|
530
|
+
}
|
|
531
|
+
|
|
532
|
+
// Accumulate alpha as usual
|
|
533
|
+
float lalpha = alpha * color.a;
|
|
534
|
+
calpha = lalpha / clamp(lalpha + accumAlpha, 0.00001, 1.0);
|
|
535
|
+
accumAlpha += (1.0 - accumAlpha) * lalpha;
|
|
536
|
+
|
|
537
|
+
return color.xyz;
|
|
538
|
+
|
|
539
|
+
}`,[nt.simplex,e,o,s])}}();var _l=class extends ae{constructor(e,r,o,n,s,a,l,c,h,p,u,d,m,g,x,y){super("v3");this.nodeType="Outline";this.firstTime=!0,this.outlineColor=e,this.contourColor=r,this.outlineWidth=o,this.contourWidth=n,this.contourThreshold=s,this.outlineThreshold=a,this.contourFrequency=l,this.outlineSmoothing=c,this.contourDirection=h,this.positionalLines=p,this.compensation=u,this.resolution=d,this.normalMap=m,this.depthMap=g,this.pixelRatio=x,this.alpha=y,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.extensions.derivatives=!0,this.firstTime){let o=this.outlineWidth.build(e,"f"),n=this.resolution.build(e,"v2"),s=this.compensation.build(e,"b"),a=this.pixelRatio.build(e,"f");e.addVertexParsVariable("randomColor","attribute vec3"),e.addVertexParsVariable("extrudeNormal","attribute vec3"),e.addVertexParsVariable(o,"uniform float"),e.addVertexParsVariable(n,"uniform vec2"),e.addVertexParsVariable(s,"uniform bool"),e.addVertexParsVariable(a,"uniform float"),e.addVertexParsVariable("vID","flat out float"),e.addFragmentParsVariable("vID","flat in float");let l=`g${this.uuid.toString().replace(/-/g,"")}`;e.addVertexFinalCode(`
|
|
540
|
+
vID = randomColor.r;
|
|
541
|
+
if (${s}) {
|
|
542
|
+
vec4 ${l}_clipPosition = projectionMatrix * (modelViewMatrix * vec4(position, 1.0));
|
|
543
|
+
vec3 ${l}_clipNormal = mat3(projectionMatrix) * (mat3(modelViewMatrix) * extrudeNormal);
|
|
544
|
+
vec2 ${l}_offset = normalize(${l}_clipNormal.xy) / ${n} * (${o} / 2.0) * ${l}_clipPosition.w * 2.0 * ${a};
|
|
545
|
+
${l}_clipPosition.xy += ${l}_offset;
|
|
546
|
+
// TODO(MAX): To handle multiple outline layers, we only want to extrude
|
|
547
|
+
// if this offset is the biggest of all the potential offsets
|
|
548
|
+
gl_Position = ${l}_clipPosition;
|
|
549
|
+
}
|
|
550
|
+
`)}if(e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(_l.Nodes.outline),n=[];return n.push(this.outlineColor.build(e,"c")),n.push(this.contourColor.build(e,"c")),n.push(this.outlineWidth.build(e,"f")),n.push(this.contourWidth.build(e,"f")),n.push(this.contourThreshold.build(e,"f")),n.push(this.outlineThreshold.build(e,"f")),n.push(this.contourFrequency.build(e,"f")),n.push(this.outlineSmoothing.build(e,"f")),n.push(this.contourDirection.build(e,"v3")),n.push(this.positionalLines.build(e,"b")),n.push(this.resolution.build(e,"v2")),n.push(this.normalMap.getTexture(e,"t")),n.push(this.depthMap.getTexture(e,"t")),n.push(this.pixelRatio.build(e,"f")),n.push(this.compensation.build(e,"b")),n.push(this.alpha.build(e,"f")),n.push(this.calpha),this.firstTime=!this.firstTime,e.format(o+"("+n.join(",")+")",this.getType(e),r)}else return console.warn("OutlineNode is not compatible with "+e.shader+" shader."),""}copy(e){return super.copy(e),this.outlineColor=e.outlineColor.clone(),this.contourColor=e.contourColor.clone(),this.outlineWidth=e.outlineWidth.clone(),this.contourWidth=e.contourWidth.clone(),this.contourThreshold=e.contourThreshold.clone(),this.outlineThreshold=e.outlineThreshold.clone(),this.contourFrequency=e.contourFrequency.clone(),this.outlineSmoothing=e.outlineSmoothing.clone(),this.contourDirection=e.contourDirection.clone(),this.positionalLines=e.positionalLines.clone(),this.compensation=e.compensation.clone(),this.alpha=e.alpha.clone(),this.normalMap=e.normalMap,this.depthMap=e.depthMap,this.resolution=e.resolution,this.pixelRatio=e.pixelRatio,this.calpha=e.calpha,this}},Zn=_l;Zn.Nodes=function(){let e=new K(`
|
|
551
|
+
float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outlineWidth, float pixelRatio)
|
|
552
|
+
{
|
|
553
|
+
vec2 texelSize = (vec2(1.0) / resolution) * outlineWidth * pixelRatio;
|
|
554
|
+
|
|
555
|
+
vec2 uvSamples[9];
|
|
556
|
+
vec4 normalSamples[9];
|
|
557
|
+
|
|
558
|
+
uvSamples[0] = uv + vec2( -texelSize.x, -texelSize.y);
|
|
559
|
+
uvSamples[1] = uv + vec2(0.0, -texelSize.y);
|
|
560
|
+
uvSamples[2] = uv + vec2( texelSize.x, -texelSize.y);
|
|
561
|
+
uvSamples[3] = uv + vec2( -texelSize.x, 0.0);
|
|
562
|
+
uvSamples[4] = uv;
|
|
563
|
+
uvSamples[5] = uv + vec2( texelSize.x, 0.0);
|
|
564
|
+
uvSamples[6] = uv + vec2( -texelSize.x, texelSize.y);
|
|
565
|
+
uvSamples[7] = uv + vec2(0.0, texelSize.y);
|
|
566
|
+
uvSamples[8] = uv + vec2( texelSize.x, texelSize.y);
|
|
567
|
+
|
|
568
|
+
|
|
569
|
+
normalSamples[0] = texture2D(t, uvSamples[0]);
|
|
570
|
+
normalSamples[1] = texture2D(t, uvSamples[1]);
|
|
571
|
+
normalSamples[2] = texture2D(t, uvSamples[2]);
|
|
572
|
+
normalSamples[3] = texture2D(t, uvSamples[3]);
|
|
573
|
+
normalSamples[4] = texture2D(t, uvSamples[4]);
|
|
574
|
+
normalSamples[5] = texture2D(t, uvSamples[5]);
|
|
575
|
+
normalSamples[6] = texture2D(t, uvSamples[6]);
|
|
576
|
+
normalSamples[7] = texture2D(t, uvSamples[7]);
|
|
577
|
+
normalSamples[8] = texture2D(t, uvSamples[8]);
|
|
578
|
+
|
|
579
|
+
float depthBias = 0.0001;
|
|
580
|
+
// TODO(MAX): Can we somehow reduce the number of conditionals here with MATH?!
|
|
581
|
+
if (normalSamples[0].a != vID && normalSamples[0].a != 0.0) {
|
|
582
|
+
float depthAtSample = texture2D(d, uvSamples[0]).r + depthBias;
|
|
583
|
+
if (gl_FragCoord.z > depthAtSample) {
|
|
584
|
+
return 0.0;
|
|
585
|
+
}
|
|
586
|
+
}
|
|
587
|
+
|
|
588
|
+
if (normalSamples[1].a != vID && normalSamples[1].a != 0.0) {
|
|
589
|
+
float depthAtSample = texture2D(d, uvSamples[1]).r + depthBias;
|
|
590
|
+
if (gl_FragCoord.z > depthAtSample) {
|
|
591
|
+
return 0.0;
|
|
592
|
+
}
|
|
593
|
+
}
|
|
594
|
+
|
|
595
|
+
if (normalSamples[2].a != vID && normalSamples[2].a != 0.0) {
|
|
596
|
+
float depthAtSample = texture2D(d, uvSamples[2]).r + depthBias;
|
|
597
|
+
if (gl_FragCoord.z > depthAtSample) {
|
|
598
|
+
return 0.0;
|
|
599
|
+
}
|
|
600
|
+
}
|
|
601
|
+
|
|
602
|
+
if (normalSamples[3].a != vID && normalSamples[3].a != 0.0) {
|
|
603
|
+
float depthAtSample = texture2D(d, uvSamples[3]).r + depthBias;
|
|
604
|
+
if (gl_FragCoord.z > depthAtSample) {
|
|
605
|
+
return 0.0;
|
|
606
|
+
}
|
|
607
|
+
}
|
|
608
|
+
|
|
609
|
+
|
|
610
|
+
if (normalSamples[4].a != vID && normalSamples[4].a != 0.0) {
|
|
611
|
+
float depthAtSample = texture2D(d, uvSamples[4]).r + depthBias;
|
|
612
|
+
if (gl_FragCoord.z > depthAtSample) {
|
|
613
|
+
return 0.0;
|
|
614
|
+
}
|
|
615
|
+
}
|
|
616
|
+
|
|
617
|
+
if (normalSamples[5].a != vID && normalSamples[5].a != 0.0) {
|
|
618
|
+
float depthAtSample = texture2D(d, uvSamples[5]).r + depthBias;
|
|
619
|
+
if (gl_FragCoord.z > depthAtSample) {
|
|
620
|
+
return 0.0;
|
|
621
|
+
}
|
|
622
|
+
}
|
|
623
|
+
|
|
624
|
+
if (normalSamples[6].a != vID && normalSamples[6].a != 0.0) {
|
|
625
|
+
float depthAtSample = texture2D(d, uvSamples[6]).r + depthBias;
|
|
626
|
+
if (gl_FragCoord.z > depthAtSample) {
|
|
627
|
+
return 0.0;
|
|
628
|
+
}
|
|
629
|
+
}
|
|
630
|
+
|
|
631
|
+
if (normalSamples[7].a != vID && normalSamples[7].a != 0.0) {
|
|
632
|
+
float depthAtSample = texture2D(d, uvSamples[7]).r + depthBias;
|
|
633
|
+
if (gl_FragCoord.z > depthAtSample) {
|
|
634
|
+
return 0.0;
|
|
635
|
+
}
|
|
636
|
+
}
|
|
637
|
+
|
|
638
|
+
if (normalSamples[8].a != vID && normalSamples[8].a != 0.0) {
|
|
639
|
+
float depthAtSample = texture2D(d, uvSamples[8]).r + depthBias;
|
|
640
|
+
if (gl_FragCoord.z > depthAtSample) {
|
|
641
|
+
return 0.0;
|
|
642
|
+
}
|
|
643
|
+
}
|
|
644
|
+
|
|
645
|
+
vec4 sobel_edge_h = normalSamples[2] + (2.0*normalSamples[5]) + normalSamples[8] - (normalSamples[0] + (2.0*normalSamples[3]) + normalSamples[6]);
|
|
646
|
+
vec4 sobel_edge_v = normalSamples[0] + (2.0*normalSamples[1]) + normalSamples[2] - (normalSamples[6] + (2.0*normalSamples[7]) + normalSamples[8]);
|
|
647
|
+
|
|
648
|
+
float edgeNormal = sqrt(dot(sobel_edge_h, sobel_edge_h) + dot(sobel_edge_v, sobel_edge_v));
|
|
649
|
+
return edgeNormal;
|
|
650
|
+
}
|
|
651
|
+
`);return{outline:new K(`vec3 outline(vec3 outlineColor, vec3 contourColor, float outlineWidth, float contourWidth, float outlineThreshold, float contourThreshold, float outlineSmoothing, float contourFrequency, vec3 contourDirection, bool positionalLines, vec2 resolution, sampler2D normalMap, sampler2D depthMap, float pixelRatio, bool compensation, float alpha, out float calpha) {
|
|
652
|
+
vec3 result = outlineColor;
|
|
653
|
+
float resultAlpha = 0.0;
|
|
654
|
+
|
|
655
|
+
vec3 N = normalize(vWNormal);
|
|
656
|
+
vec2 nuv = (gl_FragCoord.xy / resolution);
|
|
657
|
+
float sobelSample = compensation ? sobelSample(normalMap, depthMap, nuv, resolution, outlineWidth / 2., pixelRatio) : sobelSample(normalMap, depthMap, nuv, resolution, outlineWidth, pixelRatio);
|
|
658
|
+
resultAlpha = smoothstep(outlineThreshold - outlineSmoothing, outlineThreshold + outlineSmoothing, sobelSample);
|
|
659
|
+
|
|
660
|
+
float t = 1.0 - contourThreshold;
|
|
661
|
+
if(positionalLines) {
|
|
662
|
+
vec3 NDir = position * contourDirection;
|
|
663
|
+
float NT = NDir.x + NDir.y + NDir.z;
|
|
664
|
+
float f = fract(NT * contourFrequency * 0.01);
|
|
665
|
+
float df = fwidth(NT * contourFrequency);
|
|
666
|
+
|
|
667
|
+
float g = smoothstep(df * (contourWidth * 0.01), df * (contourWidth * 0.01 * 2.0), f);
|
|
668
|
+
if (g < 1.0 && resultAlpha == 0.0) {
|
|
669
|
+
result = contourColor;
|
|
670
|
+
resultAlpha = 1.0;
|
|
671
|
+
}
|
|
672
|
+
}
|
|
673
|
+
else {
|
|
674
|
+
vec3 NDir = N * contourDirection;
|
|
675
|
+
float NT = NDir.x + NDir.y + NDir.z;
|
|
676
|
+
float df = fwidth(NT * contourThreshold);
|
|
677
|
+
float f = sin(NT * 1.0 * contourFrequency);
|
|
678
|
+
float g = smoothstep(0.0, df * contourWidth, 1.0 - f);
|
|
679
|
+
|
|
680
|
+
if (df > (t * 0.5) && g < 1.0 && resultAlpha == 0.0) {
|
|
681
|
+
result = contourColor;
|
|
682
|
+
resultAlpha = 1.0 - g;
|
|
683
|
+
}
|
|
684
|
+
}
|
|
685
|
+
|
|
686
|
+
float lalpha = alpha * resultAlpha;
|
|
687
|
+
calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
|
|
688
|
+
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
689
|
+
return result;
|
|
690
|
+
}`,[e])}}();var Bl=class extends ae{constructor(e,r,o,n,s,a,l,c){super("v3");this.nodeType="Transmission";this.thickness=e,this.ior=r,this.roughness=o,this.transmissionSamplerSize=n,this.transmissionSamplerMap=s,this.transmissionDepthMap=a,this.aspectRatio=l,this.alpha=c,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.extensions.shaderTextureLOD=!0,e.extensions.derivatives=!0,e.isShader("fragment")){e.define("NUM_SAMPLES",30),e.require("worldPosition"),e.requires.worldNormal=!0,e.requires.modelMatrix=!0,e.requires.projectionMatrix=!0,e.addFragmentVariable(this.calpha,"float");let o=e.include(Bl.Nodes.transmission),n=[];return n.push(this.thickness.build(e,"f")),n.push(this.ior.build(e,"f")),n.push(this.roughness.build(e,"f")),n.push(this.transmissionSamplerSize.build(e,"v2")),n.push(this.transmissionSamplerMap.getTexture(e,"t")),n.push(this.transmissionDepthMap.getTexture(e,"t")),n.push(this.aspectRatio.build(e,"v2")),n.push("normal"),n.push(this.alpha.build(e,"f")),n.push(this.calpha),e.format(o+"("+n.join(",")+")",this.getType(e),r)}else return console.warn("TransmissionNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}copy(e){return super.copy(this),this.thickness=e.thickness.clone(),this.ior=e.ior.clone(),this.roughness=e.roughness.clone(),this.transmissionSamplerSize=e.transmissionSamplerSize.clone(),this.transmissionSamplerMap=e.transmissionSamplerMap,this.transmissionDepthMap=e.transmissionDepthMap,this.alpha=e.alpha.clone(),this.calpha=e.calpha,this}},ei=Bl;ei.Nodes=function(){let e=new K(`
|
|
430
691
|
float gaussian(vec2 i) {
|
|
431
692
|
const float sigma = float(NUM_SAMPLES) * .25;
|
|
432
693
|
return exp( -.5* dot(i/=sigma,i) ) / ( 6.28 * sigma*sigma );
|
|
433
|
-
}`),r=new
|
|
694
|
+
}`),r=new K(`
|
|
434
695
|
vec4 blur(sampler2D sp, vec2 U, vec2 scale, float lod, sampler2D dm, vec2 unrefractedU, vec2 aspectRatio) {
|
|
435
696
|
// Slightly modified version of this:
|
|
436
697
|
// https://www.shadertoy.com/view/ltScRG
|
|
@@ -457,7 +718,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
457
718
|
#endif
|
|
458
719
|
}
|
|
459
720
|
return O / O.a;
|
|
460
|
-
}`,[e]),o=new
|
|
721
|
+
}`,[e]),o=new K(`
|
|
461
722
|
vec3 getVolumeTransmissionRay( vec3 n, vec3 v, float thickness, float ior, mat4 modelMatrix ) {
|
|
462
723
|
// Direction of refracted light.
|
|
463
724
|
vec3 refractionVector = refract( -v, n, 1.0 / ior );
|
|
@@ -468,18 +729,18 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
468
729
|
modelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );
|
|
469
730
|
// The thickness is specified in local space.
|
|
470
731
|
return normalize( refractionVector ) * thickness * modelScale;
|
|
471
|
-
}`),
|
|
732
|
+
}`),n=new K(`
|
|
472
733
|
float applyIorToRoughness( float roughness, float ior ) {
|
|
473
734
|
// Scale roughness with IOR so that an IOR of 1.0 results in no microfacet refraction and
|
|
474
735
|
// an IOR of 1.5 results in the default amount of microfacet refraction.
|
|
475
736
|
return roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );
|
|
476
|
-
} `),s=new
|
|
737
|
+
} `),s=new K(`
|
|
477
738
|
vec4 getTransmissionSample( vec2 fragCoord, float roughness, float ior, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 unrefractedCoords, vec2 aspectRatio) {
|
|
478
739
|
float framebufferLod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );
|
|
479
740
|
float lod = applyIorToRoughness(roughness, ior);
|
|
480
741
|
|
|
481
742
|
return blur(transmissionSamplerMap, fragCoord, vec2(lod / (transmissionSamplerSize.x / 2.)), min(framebufferLod / 5.5, 8.5), transmissionDepthMap, unrefractedCoords, aspectRatio);
|
|
482
|
-
}`,[
|
|
743
|
+
}`,[n,r]),a=new K(`
|
|
483
744
|
vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat4 modelMatrix, mat4 viewMatrix, mat4 projMatrix, float ior, float thickness, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 aspectRatio ) {
|
|
484
745
|
vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );
|
|
485
746
|
vec3 refractedRayExit = position + transmissionRay;
|
|
@@ -499,7 +760,7 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
499
760
|
vec4 transmittedLight = getTransmissionSample( refractionCoords, roughness, ior, transmissionSamplerSize, transmissionSamplerMap, transmissionDepthMap, unrefractedCoords, aspectRatio );
|
|
500
761
|
// Get the specular component.
|
|
501
762
|
return vec4( ( 1.0 ) * transmittedLight.rgb, transmittedLight.a );
|
|
502
|
-
}`,[s,o]);return{transmission:new
|
|
763
|
+
}`,[s,o]);return{transmission:new K(`
|
|
503
764
|
vec3 transmission(float thickness, float ior, float roughness, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 aspectRatio, vec3 normal, float alpha, out float calpha) {
|
|
504
765
|
vec3 v = vec3(0.);
|
|
505
766
|
if (isOrthographic) {
|
|
@@ -513,14 +774,14 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
513
774
|
calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
|
|
514
775
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
515
776
|
return transmission.rgb;
|
|
516
|
-
}`,[a])}}();var
|
|
777
|
+
}`,[a])}}();var El=class extends ae{constructor(e,r){super("v3");this.nodeType="CustomNormal";this.cnormal=e,this.alpha=r}generate(e,r){if(e.isShader("fragment")){let o=e.include(El.Nodes.customNormal),n=[];return n.push(this.cnormal.build(e,"v3")),n.push("normal"),n.push(this.alpha.build(e,"f")),e.format(o+"("+n.join(",")+")",this.getType(e),r)}else return console.warn("CustomNormalNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}copy(e){return super.copy(e),this.cnormal.copy(e.cnormal),this.alpha.copy(e.alpha),this}},ti=El;ti.Nodes=function(){return{customNormal:new K(`vec3 customNormal(vec3 cnormal, vec3 norm, float alpha) {
|
|
517
778
|
vec3 normal = packNormalToRGB( norm ).rgb;
|
|
518
779
|
normal *= step( vec3(0.5), cnormal );
|
|
519
780
|
|
|
520
781
|
accumAlpha += ( 1.0 - accumAlpha ) * alpha;
|
|
521
782
|
|
|
522
783
|
return normal;
|
|
523
|
-
}`)}}();var
|
|
784
|
+
}`)}}();var Gl=class extends ae{constructor(e,r,o,n,s,a,l,c){super("v3");this.nodeType="Gradient";this.gradientType=e,this.smooth=r,this.colors=o,this.steps=n,this.offset=s,this.morph=a,this.angle=l,this.alpha=c,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.isShader("fragment")){e.define("GRAD_MAX",10),e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(Gl.Nodes.gradient),n=[];return n.push(this.gradientType.build(e,"i")),n.push(this.smooth.build(e,"b")),n.push(this.colors.build(e,"v4[]")),n.push(this.steps.build(e,"f[]")),n.push(this.offset.build(e,"v2")),n.push(this.morph.build(e,"v2")),n.push(this.angle.build(e,"f")),n.push(this.alpha.build(e,"f")),n.push(this.calpha),e.format(o+"("+n.join(",")+")",this.getType(e),r)}else return console.warn("GradientNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}copy(e){return super.copy(e),this.gradientType=e.gradientType.clone(),this.smooth=e.smooth.clone(),this.colors=e.colors.clone(),this.steps=e.steps.clone(),this.offset=e.offset.clone(),this.morph=e.morph.clone(),this.angle=e.angle.clone(),this.alpha=e.alpha.clone(),this.calpha=e.calpha,this}},ri=Gl;ri.Nodes=function(){return{gradient:new K(`vec3 gradient(int gradientType, bool smoothed, vec4 colors[GRAD_MAX], float steps[GRAD_MAX], vec2 offset, vec2 morph, float angle, float alpha, out float calpha) {
|
|
524
785
|
vec4 color = colors[0];
|
|
525
786
|
vec2 m = morph / vUv.xy;
|
|
526
787
|
vec2 rot = vec2( 0.5 + m.x, m.y );
|
|
@@ -562,11 +823,11 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
562
823
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
563
824
|
|
|
564
825
|
return color.xyz;
|
|
565
|
-
}`)}}();var
|
|
826
|
+
}`)}}();var Rl=(e=>(e.NOISE="noise",e.MAP="map",e))(Rl||{}),zl=class extends ae{constructor(e=new fe(0),r,o,n,s,a){super("v3");this.nodeType="VertexDisplacement";this.displacementTypeIndex=e,this.intensity=r,this.movementOrTexture=o,Object.values(Rl)[this.displacementTypeIndex.value]==="map"&&(this.mat=new Yo(this.movementOrTexture.value.matrix)),this.cropOrOffset=n,this.scale=s,this.noiseFunctionIndex=a}generate(e,r){if(e.isShader("vertex")){e.define("USE_LAYER_DISPLACE");let o,n=[];switch(n.push("displaced_position"),n.push("displaced_normal"),Object.values(Rl)[this.displacementTypeIndex.value]){case"map":{o=e.include(zl.Nodes.map),n.push(this.movementOrTexture.getTexture(e,"t")),n.push("uv"),n.push(this.cropOrOffset.build(e,"f")),this.mat&&n.push(this.mat.build(e,"mat3"));break}case"noise":{let a=Object.values(Yn)[this.noiseFunctionIndex.value],l=new K(`vec3 orthogonal(vec3 v) {
|
|
566
827
|
return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
|
|
567
|
-
}`),c=new
|
|
828
|
+
}`),c=new K(`vec3 distorted(vec3 p, vec3 n, float scale, float intensity, vec3 offset, float neighbour_offset, float movement) {
|
|
568
829
|
return p + n * ${a}((p + offset) * scale * 0.001 + neighbour_offset + (movement * 0.1)) * intensity;
|
|
569
|
-
}`,[
|
|
830
|
+
}`,[nt.simplex,nt.simplexFractal,nt.simplexAshima,nt.fbm,nt.perlin]),h=new K(`vec3 vertexDisplacementNoise(vec3 position, vec3 normal, float scale, vec3 offset, float movement, float intensity, out vec3 displaced_normal) {
|
|
570
831
|
vec3 displaced_position = distorted(position, normal, scale, intensity, offset, neighbor_offset, movement);
|
|
571
832
|
vec3 tangent1 = orthogonal(normal);
|
|
572
833
|
vec3 tangent2 = normalize(cross(normal, tangent1));
|
|
@@ -582,9 +843,9 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
582
843
|
vec3 distorted2 = distorted(nearby2, normal, scale, intensity, offset, neighbor_offset, movement);
|
|
583
844
|
displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
|
|
584
845
|
return displaced_position;
|
|
585
|
-
}`,[c,l]);o=e.include(h),
|
|
846
|
+
}`,[c,l]);o=e.include(h),n.push(this.scale.build(e,"f")),n.push(this.cropOrOffset.build(e,"v3")),n.push(this.movementOrTexture.build(e,"f"));break}}return n.push(this.intensity.build(e,"f")),n.push("displaced_normal"),e.format(o+"("+n.join(",")+")",this.getType(e),r)}else return console.warn("VertexDisplacementNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}copy(e){return super.copy(e),this.noiseFunctionIndex=e.noiseFunctionIndex?.clone(),this.scale=e.scale?.clone(),this.cropOrOffset=e.cropOrOffset.clone(),this.intensity=e.intensity.clone(),this.movementOrTexture=e.movementOrTexture.clone(),this}},Jo=zl;Jo.Nodes=function(){let e=new K(`vec3 orthogonal(vec3 v) {
|
|
586
847
|
return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
|
|
587
|
-
}`),r=new
|
|
848
|
+
}`),r=new K(`float displacementMapTexture(sampler2D tex, float crop, vec2 uv, mat3 mat, vec2 offset) {
|
|
588
849
|
vec2 uvs = (mat * vec3(uv * 2.0 - 1.0, 1.0) / 2.0 + 0.5).xy + offset;
|
|
589
850
|
vec4 tmp = texture2D(tex, uvs);
|
|
590
851
|
vec3 col = tmp.rgb;
|
|
@@ -594,7 +855,7 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
594
855
|
}
|
|
595
856
|
}
|
|
596
857
|
return col.r;
|
|
597
|
-
}`);return{map:new
|
|
858
|
+
}`);return{map:new K(`vec3 vertexDisplacementMap(vec3 position, vec3 normal, sampler2D tex, vec2 uv, float crop, mat3 mat, float intensity, out vec3 displaced_normal) {
|
|
598
859
|
vec3 displaced_position = position + normal * displacementMapTexture(tex, crop, uv, mat, vec2(0.0)) * intensity;
|
|
599
860
|
vec3 tangent1 = normalize(orthogonal(normal));
|
|
600
861
|
vec3 tangent2 = normalize(cross(normal, tangent1));
|
|
@@ -604,7 +865,7 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
604
865
|
vec3 distorted2 = nearby2 + normal * displacementMapTexture(tex, crop, uv, mat, vec2(neighbor_offset)) * intensity;
|
|
605
866
|
displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
|
|
606
867
|
return displaced_position;
|
|
607
|
-
}`,[e,r])}}();var
|
|
868
|
+
}`,[e,r])}}();var oi=class extends ae{constructor(e=new ce,r=new ce,o=new ce,n=new ce,s=new ce,a=new ce,l=new ce,c=new ce,h=new ce,p=new ce,u=new ce,d=new ce){super("v3");this.nodeType="Noise";this.scale=e,this.size=r,this.move=o,this.fA=n,this.fB=s,this.distortion=a,this.colorA=l,this.colorB=c,this.colorC=h,this.colorD=p,this.alpha=u,this.noiseType=d,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r,o,n,s){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let a=Object.values(Yn)[this.noiseType.value],l=new K(`vec3 ${a}customNoise(float scale, vec3 size, float move, vec2 fA, vec2 fB, vec2 distortion, vec4 colorA, vec4 colorB, vec4 colorC, vec4 colorD, float alpha, out float calpha) {
|
|
608
869
|
vec3 st = position / size;
|
|
609
870
|
st /= scale;
|
|
610
871
|
vec3 q = vec3(${a}(st),
|
|
@@ -624,7 +885,7 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
624
885
|
|
|
625
886
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
626
887
|
return clamp(color, 0.0, 1.0).rgb;
|
|
627
|
-
}`,[
|
|
888
|
+
}`,[nt.simplex,nt.simplexFractal,nt.simplexAshima,nt.fbm,nt.perlin]),c=e.include(l),h=[];return h.push(this.scale.build(e,"f")),h.push(this.size.build(e,"v3")),h.push(this.move.build(e,"f")),h.push(this.fA.build(e,"v2")),h.push(this.fB.build(e,"v2")),h.push(this.distortion.build(e,"v2")),h.push(this.colorA.build(e,"v4")),h.push(this.colorB.build(e,"v4")),h.push(this.colorC.build(e,"v4")),h.push(this.colorD.build(e,"v4")),h.push(this.alpha.build(e,"f")),h.push(this.calpha),e.format(c+"("+h.join(",")+")",this.getType(e),r)}copy(e){return super.copy(e),this.scale.copy(e.scale),this.size.copy(e.size),this.move.copy(e.move),this.fA.copy(e.fA),this.fB.copy(e.fB),this.distortion.copy(e.distortion),this.colorA.copy(e.colorA),this.colorB.copy(e.colorB),this.colorC.copy(e.colorC),this.colorD.copy(e.colorD),this.alpha.copy(e.alpha),this.calpha=e.calpha,this.noiseType.copy(e.noiseType),this}};oi.numOctaves=5;var Vl=class extends ae{constructor(e=new ce,r=new ce,o=Vl.ADD){super();this.nodeType="Operator";this.type=e.type,this.a=e,this.b=r,this.op=o}getType(e){let r=this.a.getType(e),o=this.b.getType(e);return e.isTypeMatrix(r)?"v4":e.getTypeLength(o)>e.getTypeLength(r)?o:r}generate(e,r){let o=this.getType(e);this.type=o;let n=this.a.build(e,o),s=this.b.build(e,o);return e.format("( "+n+" "+this.op+" "+s+" )",o,r)}copy(e){return super.copy(e),this.a.copy(e.a),this.b.copy(e.b),this.op=e.op,this}},dt=Vl;dt.ADD="+",dt.SUB="-",dt.MUL="*",dt.DIV="/";var ni=class extends ae{constructor(e=new ce,r=new ce,o=new ce,n=new ce){super("v3");this.nodeType="Blend";this.a=e,this.b=r,this.alpha=o,this.mode=n}generate(e,r){if(e.isShader("fragment")){let o=[];return o.push(this.a.build(e,"c")),o.push(this.b.build(e,"c")),o.push(this.alpha.build(e,"f")),o.push(this.mode.build(e,"i")),e.format("spe_blend("+o.join(",")+")",this.getType(e),r)}else return console.warn("BlendNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}copy(e){return super.copy(e),this.a.copy(e.a),this.b.copy(e.b),this.alpha.copy(e.alpha),this.mode.copy(e.mode),this}};var Qo=class extends ae{constructor(e,r,o,n,s,a,l,c,h,p,u,d){super("v3");this.nodeType="Depth";this.gradientType=e,this.smooth=r,this.near=o,this.far=n,this.isVector=s,this.isWorldSpace=a,this.origin=l,this.direction=c,this.colors=h,this.steps=p,this.num=u,this.alpha=d,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){let o=`g${this.uuid.toString().replace(/-/g,"")}`,n=new K(`vec3 ${o}_sdepth(float near, float far, vec3 origin, vec3 direction, vec4 colors[${o}_MAX_COLORS], float steps[${o}_MAX_COLORS], float alpha, out float calpha) {
|
|
628
889
|
vec4 color = colors[0];
|
|
629
890
|
#ifdef ${o}_IS_VECTOR
|
|
630
891
|
#ifdef ${o}_LINEAR
|
|
@@ -664,21 +925,21 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
664
925
|
|
|
665
926
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
666
927
|
return color.rgb;
|
|
667
|
-
}`,[
|
|
928
|
+
}`,[Qo.Nodes.vectorLinearWorldSpaceDepth,Qo.Nodes.vectorLinearObjectSpaceDepth,Qo.Nodes.vectorSphericalObjectSpaceDepth,Qo.Nodes.vectorSphericalWorldSpaceDepth]);if(e.isShader("fragment")){e.define(`${o}_MAX_COLORS`,this.num.value+1),this.smooth.value&&e.define(`${o}_SMOOTH`),this.isVector.value>.5&&e.define(`${o}_IS_VECTOR`),this.gradientType.value===0&&e.define(`${o}_LINEAR`),this.isWorldSpace.value>.5&&e.define(`${o}_WORLDSPACE`),e.require("worldPosition"),e.addFragmentVariable(this.calpha,"float");let s=e.include(n),a=[];return a.push(this.near.build(e,"f")),a.push(this.far.build(e,"f")),a.push(this.origin.build(e,"v3")),a.push(this.direction.build(e,"v3")),a.push(this.colors.build(e,"v4[]")),a.push(this.steps.build(e,"f[]")),a.push(this.alpha.build(e,"f")),a.push(this.calpha),e.format(s+"("+a.join(",")+")",this.getType(e),r)}else return console.warn("DepthNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}copy(e){return super.copy(e),this.gradientType=e.gradientType.clone(),this.smooth=e.smooth.clone(),this.near=e.near.clone(),this.far=e.far.clone(),this.isVector=e.isVector.clone(),this.isWorldSpace=e.isWorldSpace.clone(),this.origin=e.origin.clone(),this.direction=e.direction.clone(),this.colors=e.colors.clone(),this.steps=e.steps.clone(),this.alpha=e.alpha.clone(),this.calpha=e.calpha,this}},ii=Qo;ii.Nodes=function(){let e=new K(`float vectorLinearWorldSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
|
|
668
929
|
vec3 n = normalize(direction);
|
|
669
930
|
float dist = (n.x*(vWPosition.x - origin.x) + n.y*(vWPosition.y - origin.y) + n.z*(vWPosition.z - origin.z));
|
|
670
931
|
return ( dist - near ) / ( far - near );
|
|
671
|
-
}`),r=new
|
|
932
|
+
}`),r=new K(`float vectorLinearObjectSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
|
|
672
933
|
vec3 n = normalize(direction);
|
|
673
934
|
float dist = (n.x*(position.x - origin.x) + n.y*(position.y - origin.y) + n.z*(position.z - origin.z));
|
|
674
935
|
return ( dist - near ) / ( far - near );
|
|
675
|
-
}`),o=new
|
|
936
|
+
}`),o=new K(`float vectorSphericalWorldSpaceDepth(vec3 origin, float near, float far) {
|
|
676
937
|
float dist = length(vWPosition - origin);
|
|
677
938
|
return ( dist - near ) / ( far - near );
|
|
678
|
-
}`),
|
|
939
|
+
}`),n=new K(`float vectorSphericalObjectSpaceDepth(vec3 origin, float near, float far) {
|
|
679
940
|
float dist = length(position - origin);
|
|
680
941
|
return ( dist - near ) / ( far - near );
|
|
681
|
-
}`);return{vectorLinearWorldSpaceDepth:e,vectorLinearObjectSpaceDepth:r,vectorSphericalWorldSpaceDepth:o,vectorSphericalObjectSpaceDepth:
|
|
942
|
+
}`);return{vectorLinearWorldSpaceDepth:e,vectorLinearObjectSpaceDepth:r,vectorSphericalWorldSpaceDepth:o,vectorSphericalObjectSpaceDepth:n}}();var Fl=class extends ae{constructor(e,r,o){super("v3");this.nodeType="Matcap";this.texture=e,this.alpha=r,this.mode=o,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.isShader("fragment")){e.addFragmentVariable(this.calpha,"float");let o=e.include(Fl.Nodes.matcap);e.require("normal"),e.requires.normal=!0;let n=[];return n.push(this.texture.getTexture(e,"t")),n.push("normal"),n.push(this.alpha.build(e,"f")),n.push(this.mode.build(e,"i")),n.push(this.calpha),e.format(o+"("+n.join(",")+")",this.getType(e),r)}else return console.warn("MatcapNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}copy(e){return super.copy(e),this.texture=e.texture.clone(),this.alpha=e.alpha.clone(),this.mode=e.mode.clone(),this.calpha=e.calpha,this}},si=Fl;si.Nodes=function(){return{matcap:new K(`vec3 matcap(sampler2D matcapTex, vec3 normal, float alpha, int mode, out float calpha) {
|
|
682
943
|
vec3 viewDir = normalize( vViewPosition );
|
|
683
944
|
vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );
|
|
684
945
|
vec3 y = cross( viewDir, x );
|
|
@@ -690,8 +951,134 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
690
951
|
|
|
691
952
|
return matcapColor.rgb;
|
|
692
953
|
}
|
|
693
|
-
`)}}();var it=class{constructor(t){this.id=2,this.layerCount=2,this.uuid=br.generateUUID(),this.needsUpdate=!1,this._material=t,this._layerNodes=[];let e=this._createLayer({id:0,type:"color"});this._material.color=e.color,this._material.alpha===void 0&&(this._material.alpha=new ee(1));let r=new ee(1),o=new fe(0);"shadingAlpha"in this._material&&"shadingBlend"in this._material&&(this._material.shadingAlpha=r,this._material.shadingBlend=o),this._layerNodes.push({id:0,type:"color",color:e.color,alpha:e.alpha,mode:e.mode}),this._layerNodes.push({id:1,type:"light",alpha:r,mode:o}),this.head=e.layer,this.head.next=new Oe(1,void 0,{type:"light",alpha:r,mode:o}),this.attachLightNodes(this.getLightLayer())}get material(){return this._material}set material(t){this._material=t;let e,r,o=this.head;for(;o!==void 0;){if(o.type==="light"){e=o.uniforms[`f${o.id}_alpha`],r=o.uniforms[`f${o.id}_mode`];break}o=o.next}"shadingAlpha"in this._material&&"shadingBlend"in this._material&&(this._material.shadingAlpha=e,this._material.shadingBlend=r),this.attachLightNodes(t.userData.layers?.getLightLayer()),this.blendColors(),this.blendAfterColors(),this.blendPositions()}getLayersOfType(t){let e=[],r=this.head;for(;r;)r.type===t&&e.push(r),r=r.next;return e}addLayer(t){if(t.id=t.id??++this.id,this.layerCount++,t.type==="light"){let o=this.createLightLayer(t);return this.uuid=br.generateUUID(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),o}let e=this._createLayer(t),r=e.layer;if(this.head===void 0)this.head=r;else{let o=this.head;for(;o.next!=null;)o=o.next;o.next=r}return e.color&&this._layerNodes.push({id:r.id,type:"color",color:e.color,alpha:e.alpha,mode:e.mode}),e.position&&this._layerNodes.push({id:r.id,type:"position",position:e.position}),this.uuid=br.generateUUID(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),r}addLayerBeforeAt(t,e){let r=this.head;t.id=t.id??++this.id,this.layerCount++;let o=this._createLayer(t),i=o.layer;i.next=e;let s=0;if(r===e)this.head=i,o.color&&this._layerNodes.splice(0,0,{id:i.id,type:"color",color:o.color,alpha:o.alpha,mode:o.mode}),o.position&&this._layerNodes.splice(0,0,{id:i.id,type:"position",position:o.position});else{for(s=1;r?.next!==e;)r=r?.next,s++;r.next=i,o.color&&this._layerNodes.splice(s,0,{id:i.id,type:"color",color:o.color,alpha:o.alpha,mode:o.mode}),o.position&&this._layerNodes.splice(s,0,{id:i.id,type:"position",position:o.position})}return this.uuid=br.generateUUID(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),i}addLayerAt(t,e){e.id=e.id??++this.id,this.layerCount++;let r=this._createLayer(e),o=r.layer;if(r.color&&this._layerNodes.splice(t,0,{id:o.id,type:"color",color:r.color,alpha:r.alpha,mode:r.mode}),r.position&&this._layerNodes.splice(t,0,{id:o.id,type:"position",position:r.position}),t==0)o.next=this.head,this.head=o;else{let i=this.head,s=this.head.next;for(let a=0;a<t-1;a++)i=s,s=s.next;o.next=s,i.next=o}return this.uuid=br.generateUUID(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),o}removeLayer(t){let e=this.head,r,o=0;if(e?.id==t)this.head=e.next;else for(o=1,r=e,e=e?.next;e!=null;){if(e.id==t){r.next=e.next;break}o++,r=e,e=e.next}return this.cleanupChangedLayer(e),this.blendColors(),this.blendAfterColors(),this.blendPositions(),this.uuid=br.generateUUID(),this.layerCount--,o}changeLayer(t,e){let r,o=this.head,i;if(o?.id==t){let s=this._createLayer({id:t,uuid:o.uuid,...e});i=s.layer,i.next=o.next,this.head=i,s.color&&(this._layerNodes[0]={id:i.id,type:"color",color:s.color,alpha:s.alpha,mode:s.mode}),s.position&&(this._layerNodes[0]={id:i.id,type:"position",position:s.position}),i.uniforms[`f${t}_mode`].value=o.uniforms[`f${t}_mode`].value,i.uniforms[`f${t}_alpha`].value=o.uniforms[`f${t}_alpha`].value}else{r=o,o=o.next;let s=1;for(;o!=null;){if(o.id==t){let a=this._createLayer({id:t,uuid:o.uuid,...e});i=a.layer,r.next=i,i.next=o.next,a.color&&(this._layerNodes[s]={id:t,type:"color",color:a.color,alpha:a.alpha,mode:a.mode}),a.position&&(this._layerNodes[s]={id:t,type:"position",position:a.position}),i.uniforms[`f${t}_mode`].value=o.uniforms[`f${t}_mode`].value,i.uniforms[`f${t}_alpha`].value=o.uniforms[`f${t}_alpha`].value;break}r=o,o=o.next,s++}}return this.uuid=br.generateUUID(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),i}getLayer(t){let e=this.head;for(;e!=null&&e.id!=t;)e=e.next;return e}getLayerByUuid(t){let e=this.head;for(;e!==void 0;){if(e.uuid===t)return e;e=e.next}}getLayers(){let t=[],e=this.head;for(;e!=null;)t.push(e),e=e.next;return t}getLayerPosition(t){let e=this.head,r=0;for(;e!==void 0&&e.id!=t;)r++,e=e.next;return r}getDefines(){}getBeforeProgram(){}getLightingProgram(){}getAfterProgram(){}getVarPrograms(){}getUniforms(){}moveLayer(t,e){let r,o=this.head,i;if(t==0)r=this.head,this.head=r.next;else{for(let a=0;a<t;a++)i=o,o=o.next;i.next=o.next,r=o}if(o=this.head,i=void 0,e==0)r.next=this.head,this.head=r;else{for(let a=0;a<e-1;a++)o=o.next;r.next=o?.next,o.next=r}let s=this._layerNodes.splice(t,1)[0];this._layerNodes.splice(e,0,s),this.uuid=br.generateUUID(),this.blendColors(),this.blendAfterColors()}updateLayerUniform(){this.uuid=br.generateUUID(),this.blendColors(),this.blendAfterColors()}copy(t){this.needsUpdate=!1,this.layerCount=t.layerCount,this._layerNodes=[],this.layerCount=0,this.head=void 0,this.rebuildLayerNodes(this.head,t.head);let e=t.head,r=this.head;for(;e.next!=null;)this.rebuildLayerNodes(r,e.next),r=r.next,e=e.next;return this.id=t.id,this.uuid=t.uuid,this.blendColors(),this.blendAfterColors(),this.blendPositions(),this}createLightLayer(t){let e=new ee(t.alpha),r=new fe(t.mode);this._material.shadingAlpha=e,this._material.shadingBlend=r,this._layerNodes.push({id:t.id,type:"light",alpha:e,mode:r});let o=new Oe(t.id,void 0,{type:"light",alpha:e,mode:r});if(this.head===void 0)this.head=o;else{let i=this.head;for(;i.next!=null;)i=i.next;i.next=o}return this.attachLightNodes(this.getLightLayer()),o}rebuildLayerNodes(t,e,r=!1){if(e.type==="light"){let o=r?e.uniforms[`f${e.id}_alpha`]:new ee(e.uniforms[`f${e.id}_alpha`].value),i=r?e.uniforms[`f${e.id}_mode`]:new fe(e.uniforms[`f${e.id}_mode`].value);this._material.shadingAlpha=o,this._material.shadingBlend=i,this._layerNodes.push({id:e.id,type:"light",alpha:o,mode:i}),this.head===void 0?this.head=new Oe(e.id,e.uuid,{type:"light",alpha:o,mode:i}):t&&(t.next=new Oe(e.id,e.uuid,{type:"light",alpha:o,mode:i})),this.attachLightNodes(e)}else{let o={type:e.type,id:e.id};for(let i in e.uniforms){let s=e.getName(i);if(!s)continue;let a=`f${e.id}_${s}`;if(Array.isArray(e.uniforms[a].value))o[s]=e.uniforms[a].value.map(l=>l.clone&&!r?l.clone():l);else{let l=e.uniforms[a].value;if(s==="transmissionDepthMap"){o[s]=l;continue}l!=null&&(o[s]=l.clone&&!r&&!l.isRenderTargetTexture?l.clone():l)}}this.addLayer(o)}}attachLightNodes(t){let e={},r=this.getLightLayer();switch(this._material.userData.category){case"Lambert":e.emissive=new Ce(t?.getValue("emissive")?.clone()??0);break;case"Phong":e.shininess=new ee(t?.getValue("shininess")??30),e.specular=new Ce(t?.getValue("specular")?.clone()??1118481);break;case"Toon":e.shininess=new ee(t?.getValue("shininess")??30),e.specular=new Ce(t?.getValue("specular")?.clone()??1118481);break;case"Physical":e.roughness=new ee(t?.getValue("roughness")??.3),e.metalness=new ee(t?.getValue("metalness")??0),e.reflectivity=new ee(t?.getValue("reflectivity")??.5);break;default:break}Object.keys(e).forEach(o=>{this._material[o]=e[o],r.uniforms[`f${r.id}_${o}`]=e[o]})}clone(t){return new it(t).copy(this)}toJSON(t){return{id:this.id,uuid:this.uuid,head:this.head.toJSON(t)}}fromJSON(t,e,r){let o=new Oe(t.head.id,void 0,{type:t.head.type}).fromJSON(t.head,e),i=t.head.next,s=o;for(;i!=null;)s.next=new Oe(i.id,void 0,{type:i.type}).fromJSON(i,e),i=i.next,s=s.next;this._layerNodes=[],this.head=void 0,this.rebuildLayerNodes(this.head,o,!0);let a=o;for(s=this.head;a.next!=null;)this.rebuildLayerNodes(s,a.next,!0),s=s.next,a=a.next;return this._material=r,this.id=t.id,this.uuid=t.uuid,this.blendColors(),this.blendAfterColors(),this.blendPositions(),this}getLightLayer(){let t=this.head;for(;t!==void 0&&t.type!=="light";)t=t.next??t;return t}dispose(){let t=this.head;for(this._layerNodes=[],this.layerCount=0;t!==void 0;)t.hasOwnProperty("dispose")===!0&&t.dispose(),t=t.next;this.head=void 0}_createLayer(t){let e=t.type;switch(e){case"color":{let r=new Ce(t.color??5855577),o=new ee(t.alpha??1),i=new Le("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");i.keywords.alpha=o;let s=new fe(t.mode??0);return r.alpha=o,{layer:new Oe(t.id,t.uuid,{type:e,color:r,alpha:o,calpha:i,mode:s}),color:r,alpha:i,mode:s}}case"texture":{let r=t.texture??new er,o=r.matrix;t.mat&&o.copy(t.mat),r.needsUpdate=!0;let i=new ee(t.crop??0),s=new fe(t.projection??0),a=new fe(t.axis??0),l=new fe(t.side??0),c=new rt(t.size?new zr(t.size[0],t.size[1]):new zr(100,100)),h=new ee(t.alpha??1),p=new fe(t.mode??0),u=new lt(r),d=new ot(t.textureSize??new Rr(r.image?r.image.width:0,r.image?r.image.height:0)),m=new Ki(u,d,i,s,a,l,c,h,p),g=new Le(m.calpha,"f");return{layer:new Oe(t.id,t.uuid,{type:e,texture:u,textureSize:d,crop:i,projection:s,axis:a,side:l,size:c,mat:m.mat,alpha:h,calpha:g,mode:p}),color:m,alpha:g,mode:p}}case"matcap":{let r=t.texture??new er;r.needsUpdate=!0;let o=new ee(t.alpha??1),i=new lt(r),s=new fe(t.mode??0),a=new ln(i,o,s),l=new Le(a.calpha,"f");return{layer:new Oe(t.id,t.uuid,{type:e,texture:i,alpha:o,calpha:l,mode:s}),color:a,alpha:l,mode:s}}case"fresnel":{let r=new Ce(t.color??16777215),o=new ee(t.bias??.1),i=new ee(t.scale??1),s=new ee(t.intensity??2),a=new ee(t.factor??1),l=new ee(t.alpha??1),c=new fe(t.mode??0),h=new Zi(r,o,i,s,a,l,c),p=new Le(h.calpha,"f");return{layer:new Oe(t.id,t.uuid,{type:e,color:r,bias:o,scale:i,intensity:s,factor:a,alpha:l,calpha:p,mode:c}),color:h,alpha:p,mode:c}}case"rainbow":{let r=new ee(t.filmThickness??30),o=new ee(t.movement??0),i=new ot(t.wavelengths??new Rr(0,0,0)),s=new ee(t.noiseStrength??0),a=new ee(t.noiseScale??1),l=new ot(t.offset??new Rr(0,0,0)),c=new ee(t.alpha??1),h=new en(r,o,i,s,a,l,c),p=new Le(h.calpha,"f"),u=new fe(t.mode??0);return{layer:new Oe(t.id,t.uuid,{type:e,filmThickness:r,movement:o,wavelengths:i,noiseStrength:s,noiseScale:a,offset:l,alpha:c,calpha:p,mode:u}),color:h,alpha:p,mode:u}}case"transmission":{let r=new ee(t.thickness??10),o=new ee(t.ior??1.5),i=new ee(t.roughness??.5),s=new rt(t.transmissionSamplerSize??new zr(2048,2048)),a=t.transmissionSamplerMap??new er,l=t.transmissionDepthMap??new er,c=new lt(a),h=new lt(l),p=window.innerWidth,u=window.innerHeight,d=p>=u?new rt(u/p,1):new rt(1,p/u),m=new ee(t.alpha??1),g=new tn(r,o,i,s,c,h,d,m),x=new Le(g.calpha,"f"),y=new fe(t.mode??0);return{layer:new Oe(t.id,t.uuid,{type:e,thickness:r,ior:o,roughness:i,transmissionSamplerSize:s,transmissionSamplerMap:c,transmissionDepthMap:h,aspectRatio:d,alpha:m,calpha:x,mode:y}),color:g,alpha:x,mode:y}}case"depth":{let r=new fe(t.gradientType??0),o=new Yi(t.smooth??!1),i=new ee(t.near??50),s=new ee(t.far??200),a=new ee(t.isVector??1),l=new ee(t.isWorldSpace??0),c=new ot(t.origin??new Rr),h=new ot(t.direction??new Rr),p=new fe(t.num??0),u;t.colors?u=new oo(p.value+1,t.colors):(u=new oo(p.value+1,new Hs(0,0,0,1)),u.value[1]=new Hs(1,1,1,1));let d;t.steps?d=new Ke(p.value+1,t.steps):(d=new Ke(p.value+1,1),d.value[0]=0);let m=new ee(t.alpha??1),g=new fe(t.mode??0),x=new an(r,o,i,s,a,l,c,h,u,d,p,m),y=new Le(x.calpha,"f");return{layer:new Oe(t.id,t.uuid,{type:e,gradientType:r,smooth:o,near:i,far:s,isVector:a,isWorldSpace:l,origin:c,direction:h,colors:u,steps:d,num:p,alpha:m,calpha:y,mode:g}),color:x,alpha:y,mode:g}}case"noise":{let r=new ee(t.scale??1),o=new ot(t.size??new Rr(100,100,100)),i=new ee(t.move??1),s=new rt(t.fA??new zr(1.7,9.2)),a=new rt(t.fB??new zr(8.3,2.8)),l=new rt(t.distortion??new zr(1,1)),c=new xr(t.colorA),h=new xr(t.colorB),p=new xr(t.colorC),u=new xr(t.colorD),d=new ee(t.alpha??1),m=new fe(t.mode??0),g=new fe(t.noiseType??0),x=new nn(r,o,i,s,a,l,c,h,p,u,d,g),y=new Le(x.calpha,"f");return{layer:new Oe(t.id,t.uuid,{type:e,scale:r,size:o,move:i,fA:s,fB:a,distortion:l,colorA:c,colorB:h,colorC:p,colorD:u,alpha:d,calpha:y,mode:m,noiseType:g}),color:x,alpha:y,mode:m}}case"normal":{let r=new ot(t.cnormal??new Rr(1,1,1)),o=new ee(t.alpha??1),i=new fe(t.mode??0),s=new rn(r,o),a=new Le("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");return a.keywords.alpha=o,{layer:new Oe(t.id,t.uuid,{type:e,cnormal:r,alpha:o,calpha:a,mode:i}),color:s,alpha:a,mode:i}}case"gradient":{let r=new fe(t.gradientType??0),o=new Yi(t.smooth??!1),i;t.colors?i=new oo(t.colors.length,t.colors):(i=new oo(10,new Hs(0,0,0,1)),i.value[1]=new Hs(1,1,1,1));let s;t.steps?s=new Ke(t.steps.length,t.steps):(s=new Ke(10,1),s.value[0]=0);let a=new rt(t.offset??new zr(0,0)),l=new rt(t.morph??new zr(0,0)),c=new ee(t.angle??0),h=new ee(t.alpha??1),p=new fe(t.mode??0),u=new on(r,o,i,s,a,l,c,h),d=new Le(u.calpha,"f");return{layer:new Oe(t.id,t.uuid,{type:e,gradientType:r,smooth:o,colors:i,steps:s,offset:a,morph:l,angle:c,alpha:h,calpha:d,mode:p}),color:u,alpha:d,mode:p}}case"displace":{let r=new fe(t.displacementType??0);if(r.value===0){let o=new ot(t.offset??new Rr(0,0,0)),i=new ee(t.scale??10),s=new ee(t.intensity??8),a=new ee(t.movement??1),l=new ee(t.alpha??1),c=new fe(t.mode??0),h=new fe(t.noiseType??0),p=new ei(r,s,a,o,i,h);return{layer:new Oe(t.id,t.uuid,{displacementType:r,type:e,offset:o,scale:i,intensity:s,movement:a,alpha:l,mode:c,noiseType:h}),position:p}}else if(r.value===1){let o=t.texture??new er,i=o.matrix;t.mat&&i.copy(t.mat),o.needsUpdate=!0;let s=new ee(t.intensity??8),a=new lt(o),l=new ee(t.crop??0),c=new ee(t.alpha??1),h=new fe(t.mode??0),p=new ei(r,s,a,l);return{layer:new Oe(t.id,t.uuid,{displacementType:r,type:e,intensity:s,texture:a,crop:l,mat:p.mat,alpha:c,mode:h}),position:p}}return{}}}return{}}blendColors(){let t=this._layerNodes.findIndex(r=>r.type==="color"),e=this._layerNodes.findIndex(r=>r.type==="light");if(t!==-1&&t<e){let r=this._layerNodes[t].color;for(let o=t+1;o<e;++o){let i=this._layerNodes[o];i.type==="color"&&(r=new sn(r,i.color,i.alpha,i.mode))}this._material.color=r}else this._material.color=void 0}blendAfterColors(){let t=new Le("outgoingLight","f"),e=this._layerNodes.findIndex(r=>r.type==="light");if(this._layerNodes.length>e+1){for(let r=e+1;r<this._layerNodes.length;++r){let o=this._layerNodes[r];o.type==="color"&&(t=new sn(t,o.color,o.alpha,o.mode))}"afterColor"in this._material&&(this._material.afterColor=t)}else"afterColor"in this._material&&(this._material.afterColor=void 0)}blendPositions(){let t=this._layerNodes.filter(e=>e.type==="position");if(t.length>0){let e=t[0].position;for(let r=1;r<t.length;++r)t[r]&&(e=new gt(e,t[r].position,gt.ADD),e=new gt(e,new ee(.5).setReadonly(!0),gt.MUL));this._material.position=e}else this._material.position=void 0}cleanupChangedLayer(t){switch(this._layerNodes=this._layerNodes.filter(e=>e.id!==t.id),t.type){case"displace":{this.blendPositions();break}default:{this.blendColors(),this.blendAfterColors();break}}}};var Nt=class extends xS{constructor(e,r,o){super(o);this.isNodeMaterial=!0;this.type="NodeMaterial";this.wireframeLinecap="";this.wireframeLinejoin="";this.uniformsBackup={};this.userData={type:"",category:"",nodeType:""};this.fog=!0,this.vertex=e??new Ji(new Ye(Ye.PROJECTION)),this.fragment=r??new Ji(new Ce(5855577)),this.updaters=[],this.isDetached=!0,this.dithering=!0,this.onBeforeCompile=this._onBeforeCompile}getDefines(){return this.defines}getUniforms(){return this.uniforms}getVertexShader(){return this.vertexShader}getFragmentShader(){return this.fragmentShader}_onBeforeCompile(e,r){this.build({renderer:r}),e.defines=this.defines,e.uniforms=this.uniforms,e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader,e.extensionDerivatives=this.extensions.derivatives===!0,e.extensionFragDepth=this.extensions.fragDepth===!0,e.extensionDrawBuffers=this.extensions.drawBuffers===!0,e.extensionShaderTextureLOD=this.extensions.shaderTextureLOD===!0}_getLayerStack(e){let r=new it(this);return e&&(async()=>{for(;e.image===void 0;)await new Promise(o=>requestAnimationFrame(o));r.addLayerAt(1,{type:"texture",texture:e}),this.dispose()})(),r}clampUniformsForPreview(e,r){let o=(i,s,a)=>Math.min(Math.max(i,s),a);if(this.userData.layers){for(let i of this.userData.layers.getLayers())if(i.type=="displace"){this.uniformsBackup[`f${i.id}_intensity`]=i.uniforms[`f${i.id}_intensity`].value;let s=o(i.uniforms[`f${i.id}_intensity`].value,e,r);i.uniforms[`f${i.id}_intensity`].value=s}}}restoreClampedUniforms(){if(this.userData.layers)for(let e of this.userData.layers.getLayers())e.type=="displace"&&(e.uniforms[`f${e.id}_intensity`].value=this.uniformsBackup[`f${e.id}_intensity`])}customProgramCacheKey(){return this.getHash()}updateFrame(e){for(let r=0;r<this.updaters.length;++r)e.updateNode(this.updaters[r])}build(e){e=e??{};let r=e.builder??new ks;return r.setMaterial(this,e.renderer),r.build(this.vertex,this.fragment),this.vertexShader=r.getCode("vertex"),this.fragmentShader=r.getCode("fragment"),this.defines=r.defines,this.uniforms=r.uniforms,this.extensions=r.extensions,this.updaters=r.updaters,this.fog=r.requires.fog,this.lights=r.requires.lights,this.transparent=r.requires.transparent||this.blending>yS,this}getHash(){let e="{";return e+='"vertex":'+this.vertex.getHash()+",",e+='"fragment":'+this.fragment.getHash(),e+="}",e}copy(e){let r=this.uuid;for(let o in e)this[o]=e[o];return this.uuid=r,e.userData!==void 0&&(this.userData=JSON.parse(JSON.stringify(e.userData))),this}toJSON(e){let r=this.userData.layers;this.userData.layers=void 0;let o=super.toJSON(e);return o.type="ShaderMaterial",o.userData={type:this.userData.type,category:this.userData.category,nodeType:this.type,layers:r.toJSON(e)},o.vertex=this.vertex.toJSON(e).uuid,o.fragment=this.fragment.toJSON(e).uuid,delete o.vertexShader,delete o.fragmentShader,delete o.color,delete o.shininess,delete o.specular,delete o.roughness,delete o.metalness,delete o.uniforms,e&&!e.materials[this.uuid]&&(e.materials[this.uuid]=o),this.userData.layers=r,o}fromJSON(e,r){this.defines=e.defines??{},this.depthFunc=e.depthFunc,this.depthWrite=e.depthWrite,this.side=e.side!==void 0?e.side:bS,this.transparent=e.transparent,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.wireframe=e.wireframe,this.userData.layers.fromJSON(e.userData.layers,r,this)}get penumbraSizeNode(){return this.fragment.penumbraSize}set penumbraSizeNode(e){this.fragment.penumbraSize=e}};Object.defineProperties(Nt.prototype,{properties:{get:function(){return this.fragment.properties}},needsUpdate:{set:function(n){n===!0&&this.version++,this.needsCompile=n},get:function(){return this.needsCompile}}});import{UniformsLib as vS,UniformsUtils as SS}from"three";var qs=class extends le{constructor(){super("basic");this.nodeType="Basic";this.color=new Ce(5855577)}generate(e){let r;if(e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(SS.merge([vS.fog])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>"].join(`
|
|
694
|
-
|
|
954
|
+
`)}}();var en=class{constructor(t){this.id=2,this.layerCount=2,this.uuid=Sr.generateUUID(),this.needsUpdate=!1,this._material=t,this._layerNodes=[];let e=this._createLayer({id:0,type:"color"});this._material.color=e.color,this._material.alpha===void 0&&(this._material.alpha=new X(1));let r=new X(1),o=new fe(0);"shadingAlpha"in this._material&&"shadingBlend"in this._material&&(this._material.shadingAlpha=r,this._material.shadingBlend=o),this._layerNodes.push({id:0,type:"color",color:e.color,alpha:e.alpha,mode:e.mode}),this._layerNodes.push({id:1,type:"light",alpha:r,mode:o}),this.head=e.layer,this.head.next=new Oe(1,void 0,{type:"light",alpha:r,mode:o}),this.attachLightNodes(this.getLightLayer())}get material(){return this._material}set material(t){this._material=t;let e,r,o=this.head;for(;o!==void 0;){if(o.type==="light"){e=o.uniforms[`f${o.id}_alpha`],r=o.uniforms[`f${o.id}_mode`];break}o=o.next}"shadingAlpha"in this._material&&"shadingBlend"in this._material&&(this._material.shadingAlpha=e,this._material.shadingBlend=r),this.attachLightNodes(t.userData.layers?.getLightLayer()),this.blendColors(),this.blendAfterColors(),this.blendPositions()}getLayersOfType(t){let e=[],r=this.head;for(;r;)r.type===t&&e.push(r),r=r.next;return e}addLayer(t){if(t.id=t.id??++this.id,this.layerCount++,t.type==="light"){let o=this.createLightLayer(t);return this.uuid=Sr.generateUUID(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),o}let e=this._createLayer(t),r=e.layer;if(this.head===void 0)this.head=r;else{let o=this.head;for(;o.next!=null;)o=o.next;o.next=r}return e.color&&this._layerNodes.push({id:r.id,type:"color",color:e.color,alpha:e.alpha,mode:e.mode}),e.position&&this._layerNodes.push({id:r.id,type:"position",position:e.position}),this.uuid=Sr.generateUUID(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),r}addLayerBeforeAt(t,e){let r=this.head;t.id=t.id??++this.id,this.layerCount++;let o=this._createLayer(t),n=o.layer;n.next=e;let s=0;if(r===e)this.head=n,o.color&&this._layerNodes.splice(0,0,{id:n.id,type:"color",color:o.color,alpha:o.alpha,mode:o.mode}),o.position&&this._layerNodes.splice(0,0,{id:n.id,type:"position",position:o.position});else{for(s=1;r?.next!==e;)r=r?.next,s++;r.next=n,o.color&&this._layerNodes.splice(s,0,{id:n.id,type:"color",color:o.color,alpha:o.alpha,mode:o.mode}),o.position&&this._layerNodes.splice(s,0,{id:n.id,type:"position",position:o.position})}return this.uuid=Sr.generateUUID(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),n}addLayerAt(t,e){e.id=e.id??++this.id,this.layerCount++;let r=this._createLayer(e),o=r.layer;if(r.color&&this._layerNodes.splice(t,0,{id:o.id,type:"color",color:r.color,alpha:r.alpha,mode:r.mode}),r.position&&this._layerNodes.splice(t,0,{id:o.id,type:"position",position:r.position}),t==0)o.next=this.head,this.head=o;else{let n=this.head,s=this.head.next;for(let a=0;a<t-1;a++)n=s,s=s.next;o.next=s,n.next=o}return this.uuid=Sr.generateUUID(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),o}removeLayer(t){let e=this.head,r,o=0;if(e?.id==t)this.head=e.next;else for(o=1,r=e,e=e?.next;e!=null;){if(e.id==t){r.next=e.next;break}o++,r=e,e=e.next}return this.cleanupChangedLayer(e),this.blendColors(),this.blendAfterColors(),this.blendPositions(),this.uuid=Sr.generateUUID(),this.layerCount--,o}changeLayer(t,e){let r,o=this.head,n;if(o?.id==t){let s=this._createLayer({id:t,uuid:o.uuid,...e});n=s.layer,n.next=o.next,this.head=n,s.color&&(this._layerNodes[0]={id:n.id,type:"color",color:s.color,alpha:s.alpha,mode:s.mode}),s.position&&(this._layerNodes[0]={id:n.id,type:"position",position:s.position}),n.uniforms[`f${t}_mode`].value=o.uniforms[`f${t}_mode`].value,n.uniforms[`f${t}_alpha`].value=o.uniforms[`f${t}_alpha`].value}else{r=o,o=o.next;let s=1;for(;o!=null;){if(o.id==t){let a=this._createLayer({id:t,uuid:o.uuid,...e});n=a.layer,r.next=n,n.next=o.next,a.color&&(this._layerNodes[s]={id:t,type:"color",color:a.color,alpha:a.alpha,mode:a.mode}),a.position&&(this._layerNodes[s]={id:t,type:"position",position:a.position}),n.uniforms[`f${t}_mode`].value=o.uniforms[`f${t}_mode`].value,n.uniforms[`f${t}_alpha`].value=o.uniforms[`f${t}_alpha`].value;break}r=o,o=o.next,s++}}return this.uuid=Sr.generateUUID(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),n}getLayer(t){let e=this.head;for(;e!=null&&e.id!=t;)e=e.next;return e}getLayerByUuid(t){let e=this.head;for(;e!==void 0;){if(e.uuid===t)return e;e=e.next}}getLayers(){let t=[],e=this.head;for(;e!=null;)t.push(e),e=e.next;return t}getLayerPosition(t){let e=this.head,r=0;for(;e!==void 0&&e.id!=t;)r++,e=e.next;return r}getDefines(){}getBeforeProgram(){}getLightingProgram(){}getAfterProgram(){}getVarPrograms(){}getUniforms(){}moveLayer(t,e){let r,o=this.head,n;if(t==0)r=this.head,this.head=r.next;else{for(let a=0;a<t;a++)n=o,o=o.next;n.next=o.next,r=o}if(o=this.head,n=void 0,e==0)r.next=this.head,this.head=r;else{for(let a=0;a<e-1;a++)o=o.next;r.next=o?.next,o.next=r}let s=this._layerNodes.splice(t,1)[0];this._layerNodes.splice(e,0,s),this.uuid=Sr.generateUUID(),this.blendColors(),this.blendAfterColors()}updateLayerUniform(){this.uuid=Sr.generateUUID(),this.blendColors(),this.blendAfterColors()}copy(t){this.needsUpdate=!1,this.layerCount=t.layerCount,this._layerNodes=[],this.layerCount=0,this.head=void 0,this.rebuildLayerNodes(this.head,t.head);let e=t.head,r=this.head;for(;e.next!=null;)this.rebuildLayerNodes(r,e.next),r=r.next,e=e.next;return this.id=t.id,this.uuid=t.uuid,this.blendColors(),this.blendAfterColors(),this.blendPositions(),this}createLightLayer(t){let e=new X(t.alpha),r=new fe(t.mode);this._material.shadingAlpha=e,this._material.shadingBlend=r,this._layerNodes.push({id:t.id,type:"light",alpha:e,mode:r});let o=new Oe(t.id,void 0,{type:"light",alpha:e,mode:r});if(this.head===void 0)this.head=o;else{let n=this.head;for(;n.next!=null;)n=n.next;n.next=o}return this.attachLightNodes(this.getLightLayer()),o}rebuildLayerNodes(t,e,r=!1){if(e.type==="light"){let o=r?e.uniforms[`f${e.id}_alpha`]:new X(e.uniforms[`f${e.id}_alpha`].value),n=r?e.uniforms[`f${e.id}_mode`]:new fe(e.uniforms[`f${e.id}_mode`].value);this._material.shadingAlpha=o,this._material.shadingBlend=n,this._layerNodes.push({id:e.id,type:"light",alpha:o,mode:n}),this.head===void 0?this.head=new Oe(e.id,e.uuid,{type:"light",alpha:o,mode:n}):t&&(t.next=new Oe(e.id,e.uuid,{type:"light",alpha:o,mode:n})),this.attachLightNodes(e)}else{let o={type:e.type,id:e.id};for(let n in e.uniforms){let s=e.getName(n);if(!s)continue;let a=`f${e.id}_${s}`;if(Array.isArray(e.uniforms[a].value))o[s]=e.uniforms[a].value.map(l=>l.clone&&!r?l.clone():l);else{let l=e.uniforms[a].value;if(s==="transmissionDepthMap"){o[s]=l;continue}l!=null&&(o[s]=l.clone&&!r&&!l.isRenderTargetTexture?l.clone():l)}}this.addLayer(o)}}attachLightNodes(t){let e={},r=this.getLightLayer();switch(this._material.userData.category){case"Lambert":e.emissive=new Ne(t?.getValue("emissive")?.clone()??0);break;case"Phong":e.shininess=new X(t?.getValue("shininess")??30),e.specular=new Ne(t?.getValue("specular")?.clone()??1118481);break;case"Toon":e.shininess=new X(t?.getValue("shininess")??30),e.specular=new Ne(t?.getValue("specular")?.clone()??1118481);break;case"Physical":e.roughness=new X(t?.getValue("roughness")??.3),e.metalness=new X(t?.getValue("metalness")??0),e.reflectivity=new X(t?.getValue("reflectivity")??.5);break;default:break}Object.keys(e).forEach(o=>{this._material[o]=e[o],r.uniforms[`f${r.id}_${o}`]=e[o]})}clone(t){return new en(t).copy(this)}getLightLayer(){let t=this.head;for(;t!==void 0&&t.type!=="light";)t=t.next??t;return t}dispose(){let t=this.head;for(this._layerNodes=[],this.layerCount=0;t!==void 0;)t.hasOwnProperty("dispose")===!0&&t.dispose(),t=t.next;this.head=void 0}_createLayer(t){let e=t.type;switch(e){case"color":{let r=new Ne(t.color??5855577),o=new X(t.alpha??1),n=new Ce("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");n.keywords.alpha=o;let s=new fe(t.mode??0);return r.alpha=o,{layer:new Oe(t.id,t.uuid,{type:e,color:r,alpha:o,calpha:n,mode:s}),color:r,alpha:n,mode:s}}case"texture":{let r=t.texture??new Dt,o=r.matrix;t.mat&&o.copy(t.mat),r.needsUpdate=!0;let n=new X(t.crop??0),s=new fe(t.projection??0),a=new fe(t.axis??0),l=new fe(t.side??0),c=new Ye(t.size?new wr(t.size[0],t.size[1]):new wr(100,100)),h=new X(t.alpha??1),p=new fe(t.mode??0),u=new Je(r),d=new ot(t.textureSize??new Rt(r.image?r.image.width:0,r.image?r.image.height:0)),m=new $n(u,d,n,s,a,l,c,h,p),g=new Ce(m.calpha,"f");return{layer:new Oe(t.id,t.uuid,{type:e,texture:u,textureSize:d,crop:n,projection:s,axis:a,side:l,size:c,mat:m.mat,alpha:h,calpha:g,mode:p}),color:m,alpha:g,mode:p}}case"matcap":{let r=t.texture??new Dt;r.needsUpdate=!0;let o=new X(t.alpha??1),n=new Je(r),s=new fe(t.mode??0),a=new si(n,o,s),l=new Ce(a.calpha,"f");return{layer:new Oe(t.id,t.uuid,{type:e,texture:n,alpha:o,calpha:l,mode:s}),color:a,alpha:l,mode:s}}case"fresnel":{let r=new Ne(t.color??16777215),o=new X(t.bias??.1),n=new X(t.scale??1),s=new X(t.intensity??2),a=new X(t.factor??1),l=new X(t.alpha??1),c=new fe(t.mode??0),h=new Kn(r,o,n,s,a,l,c),p=new Ce(h.calpha,"f");return{layer:new Oe(t.id,t.uuid,{type:e,color:r,bias:o,scale:n,intensity:s,factor:a,alpha:l,calpha:p,mode:c}),color:h,alpha:p,mode:c}}case"rainbow":{let r=new X(t.filmThickness??30),o=new X(t.movement??0),n=new ot(t.wavelengths??new Rt(0,0,0)),s=new X(t.noiseStrength??0),a=new X(t.noiseScale??1),l=new ot(t.offset??new Rt(0,0,0)),c=new X(t.alpha??1),h=new Jn(r,o,n,s,a,l,c),p=new Ce(h.calpha,"f"),u=new fe(t.mode??0);return{layer:new Oe(t.id,t.uuid,{type:e,filmThickness:r,movement:o,wavelengths:n,noiseStrength:s,noiseScale:a,offset:l,alpha:c,calpha:p,mode:u}),color:h,alpha:p,mode:u}}case"toon":{let r=new fe(t.positioning??0),o;t.colors?o=new br(t.colors.length,t.colors):(o=new br(10,new Zo(0,0,0,1)),o.value[1]=new Zo(1,1,1,1));let n;t.steps?n=new ke(t.steps.length,t.steps):(n=new ke(10,1),n.value[0]=0);let s=new ot(t.source??new Rt(0,0,0)),a=new Fr(t.isWorldSpace??!0),l=new X(t.noiseStrength??0),c=new X(t.noiseScale??1),h=new nr(t.shadowColor),p=new ot(t.offset??new Rt(0,0,0)),u=new X(t.alpha??1),d=new Qn(r,o,n,s,a,l,c,h,p,u),m=new Ce(d.calpha,"f"),g=new fe(t.mode??0);return{layer:new Oe(t.id,t.uuid,{type:e,positioning:r,colors:o,steps:n,source:s,isWorldSpace:a,noiseStrength:l,noiseScale:c,shadowColor:h,offset:p,alpha:u,calpha:m,mode:g}),color:d,alpha:m,mode:g}}case"outline":{let r=new Ne(t.outlineColor??16777215),o=new Ne(t.contourColor??16777215),n=new X(t.outlineWidth??.1),s=new X(t.contourWidth??.1),a=new X(t.outlineThreshold??.1),l=new X(t.contourThreshold??.1),c=new X(t.outlineSmoothing??.1),h=new X(t.contourFrequency??.1),p=new ot(t.contourDirections??new Rt(0,1,0)),u=new Fr(t.positionalLines??!1),d=new Fr(t.compensation??!0),m=t.normalMap??new Dt,g=new Je(m),x=t.depthMap??new Dt,y=new Je(x),v=t.pixelRatio??new X(window.devicePixelRatio),P=t.resolution??new Ye(new wr(1,1)),S=new X(t.alpha??1),b=new Zn(r,o,n,s,a,l,c,h,p,u,d,P,g,y,v,S),B=new Ce(b.calpha,"f"),w=new fe(t.mode??0);return{layer:new Oe(t.id,t.uuid,{type:e,outlineColor:r,contourColor:o,outlineWidth:n,contourWidth:s,outlineThreshold:a,contourThreshold:l,outlineSmoothing:c,contourFrequency:h,contourDirection:p,positionalLines:u,compensation:d,resolution:P,normalMap:g,depthMap:y,pixelRatio:v,alpha:S,calpha:B,mode:w}),color:b,alpha:B,mode:w}}case"transmission":{let r=new X(t.thickness??10),o=new X(t.ior??1.5),n=new X(t.roughness??.5),s=new Ye(t.transmissionSamplerSize??new wr(2048,2048)),a=t.transmissionSamplerMap??new Dt,l=t.transmissionDepthMap??new Dt,c=new Je(a),h=new Je(l),p=window.innerWidth,u=window.innerHeight,d=p>=u?new Ye(u/p,1):new Ye(1,p/u),m=new X(t.alpha??1),g=new ei(r,o,n,s,c,h,d,m),x=new Ce(g.calpha,"f"),y=new fe(t.mode??0);return{layer:new Oe(t.id,t.uuid,{type:e,thickness:r,ior:o,roughness:n,transmissionSamplerSize:s,transmissionSamplerMap:c,transmissionDepthMap:h,aspectRatio:d,alpha:m,calpha:x,mode:y}),color:g,alpha:x,mode:y}}case"depth":{let r=new fe(t.gradientType??0),o=new Fr(t.smooth??!1),n=new X(t.near??50),s=new X(t.far??200),a=new X(t.isVector??1),l=new X(t.isWorldSpace??0),c=new ot(t.origin??new Rt),h=new ot(t.direction??new Rt),p=new fe(t.num??0),u;t.colors?u=new br(p.value+1,t.colors):(u=new br(p.value+1,new Zo(0,0,0,1)),u.value[1]=new Zo(1,1,1,1));let d;t.steps?d=new ke(p.value+1,t.steps):(d=new ke(p.value+1,1),d.value[0]=0);let m=new X(t.alpha??1),g=new fe(t.mode??0),x=new ii(r,o,n,s,a,l,c,h,u,d,p,m),y=new Ce(x.calpha,"f");return{layer:new Oe(t.id,t.uuid,{type:e,gradientType:r,smooth:o,near:n,far:s,isVector:a,isWorldSpace:l,origin:c,direction:h,colors:u,steps:d,num:p,alpha:m,calpha:y,mode:g}),color:x,alpha:y,mode:g}}case"noise":{let r=new X(t.scale??1),o=new ot(t.size??new Rt(100,100,100)),n=new X(t.move??1),s=new Ye(t.fA??new wr(1.7,9.2)),a=new Ye(t.fB??new wr(8.3,2.8)),l=new Ye(t.distortion??new wr(1,1)),c=new nr(t.colorA),h=new nr(t.colorB),p=new nr(t.colorC),u=new nr(t.colorD),d=new X(t.alpha??1),m=new fe(t.mode??0),g=new fe(t.noiseType??0),x=new oi(r,o,n,s,a,l,c,h,p,u,d,g),y=new Ce(x.calpha,"f");return{layer:new Oe(t.id,t.uuid,{type:e,scale:r,size:o,move:n,fA:s,fB:a,distortion:l,colorA:c,colorB:h,colorC:p,colorD:u,alpha:d,calpha:y,mode:m,noiseType:g}),color:x,alpha:y,mode:m}}case"normal":{let r=new ot(t.cnormal??new Rt(1,1,1)),o=new X(t.alpha??1),n=new fe(t.mode??0),s=new ti(r,o),a=new Ce("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");return a.keywords.alpha=o,{layer:new Oe(t.id,t.uuid,{type:e,cnormal:r,alpha:o,calpha:a,mode:n}),color:s,alpha:a,mode:n}}case"gradient":{let r=new fe(t.gradientType??0),o=new Fr(t.smooth??!1),n;t.colors?n=new br(t.colors.length,t.colors):(n=new br(10,new Zo(0,0,0,1)),n.value[1]=new Zo(1,1,1,1));let s;t.steps?s=new ke(t.steps.length,t.steps):(s=new ke(10,1),s.value[0]=0);let a=new Ye(t.offset??new wr(0,0)),l=new Ye(t.morph??new wr(0,0)),c=new X(t.angle??0),h=new X(t.alpha??1),p=new fe(t.mode??0),u=new ri(r,o,n,s,a,l,c,h),d=new Ce(u.calpha,"f");return{layer:new Oe(t.id,t.uuid,{type:e,gradientType:r,smooth:o,colors:n,steps:s,offset:a,morph:l,angle:c,alpha:h,calpha:d,mode:p}),color:u,alpha:d,mode:p}}case"displace":{let r=new fe(t.displacementType??0);if(r.value===0){let o=new ot(t.offset??new Rt(0,0,0)),n=new X(t.scale??10),s=new X(t.intensity??8),a=new X(t.movement??1),l=new X(t.alpha??1),c=new fe(t.mode??0),h=new fe(t.noiseType??0),p=new Jo(r,s,a,o,n,h);return{layer:new Oe(t.id,t.uuid,{displacementType:r,type:e,offset:o,scale:n,intensity:s,movement:a,alpha:l,mode:c,noiseType:h}),position:p}}else if(r.value===1){let o=t.texture??new Dt,n=o.matrix;t.mat&&n.copy(t.mat),o.needsUpdate=!0;let s=new X(t.intensity??8),a=new Je(o),l=new X(t.crop??0),c=new X(t.alpha??1),h=new fe(t.mode??0),p=new Jo(r,s,a,l);return{layer:new Oe(t.id,t.uuid,{displacementType:r,type:e,intensity:s,texture:a,crop:l,mat:p.mat,alpha:c,mode:h}),position:p}}return{}}}return{}}blendColors(){let t=this._layerNodes.findIndex(r=>r.type==="color"),e=this._layerNodes.findIndex(r=>r.type==="light");if(t!==-1&&t<e){let r=this._layerNodes[t].color;for(let o=t+1;o<e;++o){let n=this._layerNodes[o];n.type==="color"&&(r=new ni(r,n.color,n.alpha,n.mode))}this._material.color=r}else this._material.color=void 0}blendAfterColors(){let t=new Ce("outgoingLight","f"),e=this._layerNodes.findIndex(r=>r.type==="light");if(this._layerNodes.length>e+1){for(let r=e+1;r<this._layerNodes.length;++r){let o=this._layerNodes[r];o.type==="color"&&(t=new ni(t,o.color,o.alpha,o.mode))}"afterColor"in this._material&&(this._material.afterColor=t)}else"afterColor"in this._material&&(this._material.afterColor=void 0)}blendPositions(){let t=this._layerNodes.filter(e=>e.type==="position");if(t.length>0){let e=t[0].position;for(let r=1;r<t.length;++r)t[r]&&(e=new dt(e,t[r].position,dt.ADD),e=new dt(e,new X(.5).setReadonly(!0),dt.MUL));this._material.position=e}else this._material.position=void 0}cleanupChangedLayer(t){switch(this._layerNodes=this._layerNodes.filter(e=>e.id!==t.id),t.type){case"displace":{this.blendPositions();break}default:{this.blendColors(),this.blendAfterColors();break}}}};import{NormalBlending as _S,ShaderMaterial as BS}from"three";import{CubeReflectionMapping as LS,CubeRefractionMapping as IS,CubeUVReflectionMapping as PS,LinearEncoding as Cd,sRGBEncoding as MS}from"three";var ai=class{constructor(t){t=t??{},this.name=t.name,this.type=t.type,this.node=t.node,this.size=t.size,this.needsUpdate=t.needsUpdate}get value(){return this.node.value}set value(t){this.node.value=t}};var NS=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
|
|
955
|
+
)*?)}`,"gim"),CS=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),tn=class extends ae{constructor(e=""){super();this.inputs=[];this.src="";this.nodeType="Struct";this.parse(e)}getType(e){return e.getTypeByFormat(this.name)}getInputByName(e){let r=this.inputs.length;for(;r--;)if(this.inputs[r].name===e)return this.inputs[r]}generate(e,r,o,n,s){return r==="source"?this.src+";":e.format("( "+this.src+" )",this.getType(e),r)}parse(e=""){this.src=e,this.inputs=[];let r=NS.exec(e);if(r){let o=r[2],n;for(;n=CS.exec(o);)this.inputs.push({type:n[1],name:n[2]});this.name=r[1]}else this.name="";this.type=this.name}};var li=class extends ae{constructor(e,r){super();this.inputs=[];this.nodeType="FunctionCall";this.value=e,this.inputs=r??[]}getFunction(){return this.value}getType(e){return this.value.getType(e)}generate(e,r,o,n,s){n=this.getType(e);let a=this.value,l=a.build(e,r)+"( ",c=[];if(a.inputs){for(let h=0;h<a.inputs.length;h++){let p=a.inputs[h],u=this.inputs[h]||this.inputs[p.name];c.push(u.build(e,e.getTypeByFormat(p.type)))}l+=c.join(", ")+" )"}return e.format(l,n,r)}copy(e){return super.copy(e),this.value.copy(e.value),this.inputs=e.inputs.map(r=>r.clone()),this}};var Te=class extends ae{constructor(e=new ce,r=Te.ABS,o,n){super();this.nodeType="Math";this.a=e,typeof r!="string"?this.b=r:n=r,typeof o!="string"?this.c=o:n=o,this.method=n,this.hashProperties=["method"]}getNumInputs(e){switch(this.method){case Te.MIX:case Te.CLAMP:case Te.REFRACT:case Te.SMOOTHSTEP:case Te.FACEFORWARD:return 3;case Te.MIN:case Te.MAX:case Te.MOD:case Te.STEP:case Te.REFLECT:case Te.DISTANCE:case Te.DOT:case Te.CROSS:case Te.POW:return 2;default:return 1}}getInputType(e){let r=e.getTypeLength(this.a.getType(e)),o=this.b?e.getTypeLength(this.b.getType(e)):0,n=this.c?e.getTypeLength(this.c.getType(e)):0;return r>o&&r>n?this.a.getType(e):o>n?this.b.getType(e):this.c.getType(e)}getType(e){switch(this.method){case Te.LENGTH:case Te.DISTANCE:case Te.DOT:return"f";case Te.CROSS:return"v3"}return this.getInputType(e)}generate(e,r){let o,n,s,a=this.a?e.getTypeLength(this.a.getType(e)):0,l=this.b?e.getTypeLength(this.b.getType(e)):0,c=this.c?e.getTypeLength(this.c.getType(e)):0,h=this.getInputType(e),p=this.getType(e);switch(this.type=p,this.method){case Te.NEGATE:return e.format("( -"+this.a.build(e,h)+" )",h,r);case Te.INVERT:return e.format("( 1.0 - "+this.a.build(e,h)+" )",h,r);case Te.CROSS:o=this.a.build(e,"v3"),n=this.b.build(e,"v3");break;case Te.STEP:o=this.a.build(e,a===1?"f":h),n=this.b.build(e,h);break;case Te.MIN:case Te.MAX:case Te.MOD:o=this.a.build(e,h),n=this.b.build(e,l===1?"f":h);break;case Te.REFRACT:o=this.a.build(e,h),n=this.b.build(e,h),s=this.c.build(e,"f");break;case Te.MIX:o=this.a.build(e,h),n=this.b.build(e,h),s=this.c.build(e,c===1?"f":h);break;default:o=this.a.build(e,h),this.b&&(n=this.b.build(e,h)),this.c&&(s=this.c.build(e,h));break}let u=[];u.push(o),n&&u.push(n),s&&u.push(s);let d=this.getNumInputs(e);if(u.length!==d)throw Error(`Arguments not match used in "${this.method}". Require ${d}, currently ${u.length}.`);return e.format(this.method+"( "+u.join(", ")+" )",p,r)}copy(e){return super.copy(e),this.a.copy(e.a),this.b=e.b instanceof ce?e.b.clone():e.b,this.c=e.c instanceof ce?e.c.clone():e.c,this.method=e.method,this}},de=Te;de.RAD="radians",de.DEG="degrees",de.EXP="exp",de.EXP2="exp2",de.LOG="log",de.LOG2="log2",de.SQRT="sqrt",de.INV_SQRT="inversesqrt",de.FLOOR="floor",de.CEIL="ceil",de.NORMALIZE="normalize",de.FRACT="fract",de.SATURATE="saturate",de.SIN="sin",de.COS="cos",de.TAN="tan",de.ASIN="asin",de.ACOS="acos",de.ARCTAN="atan",de.ABS="abs",de.SIGN="sign",de.LENGTH="length",de.NEGATE="negate",de.INVERT="invert",de.MIN="min",de.MAX="max",de.MOD="mod",de.STEP="step",de.REFLECT="reflect",de.DISTANCE="distance",de.DOT="dot",de.CROSS="cross",de.POW="pow",de.MIX="mix",de.CLAMP="clamp",de.REFRACT="refract",de.SMOOTHSTEP="smoothstep",de.FACEFORWARD="faceforward";var rn=class extends ae{constructor(e=new ce,r=new ce,o=new ce){super("v4");this.nodeType="TextureCubeUV";this.value=e,this.uv=r,this.bias=o}bilinearCubeUV(e,r,o,n){let s=new li(rn.Nodes.bilinearCubeUV,[r,o,n]);this.colorSpaceTL=this.colorSpaceTL??new at(new Ce("","v4")),this.colorSpaceTL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTL.input.parse(s.build(e)+".tl"),this.colorSpaceTR=this.colorSpaceTR??new at(new Ce("","v4")),this.colorSpaceTR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTR.input.parse(s.build(e)+".tr"),this.colorSpaceBL=this.colorSpaceBL??new at(new Ce("","v4")),this.colorSpaceBL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBL.input.parse(s.build(e)+".bl"),this.colorSpaceBR=this.colorSpaceBR??new at(new Ce("","v4")),this.colorSpaceBR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBR.input.parse(s.build(e)+".br");let a={include:e.isShader("vertex"),ignoreCache:!0};e.addContext(a),this.colorSpaceTLExp=new Ce(this.colorSpaceTL.build(e,"v4"),"v4"),this.colorSpaceTRExp=new Ce(this.colorSpaceTR.build(e,"v4"),"v4"),this.colorSpaceBLExp=new Ce(this.colorSpaceBL.build(e,"v4"),"v4"),this.colorSpaceBRExp=new Ce(this.colorSpaceBR.build(e,"v4"),"v4"),e.removeContext();let l=new Ce("mix( mix( cubeUV_TL, cubeUV_TR, cubeUV.f.x ), mix( cubeUV_BL, cubeUV_BR, cubeUV.f.x ), cubeUV.f.y )","v4");return l.keywords.cubeUV_TL=this.colorSpaceTLExp,l.keywords.cubeUV_TR=this.colorSpaceTRExp,l.keywords.cubeUV_BL=this.colorSpaceBLExp,l.keywords.cubeUV_BR=this.colorSpaceBRExp,l.keywords.cubeUV=s,l}generate(e,r){if(e.isShader("fragment")){let o=this.uv,n=this.bias||e.context.roughness,s=new li(rn.Nodes.roughnessToMip,[n]),a=new de(s,rn.Nodes.m0,rn.Nodes.cubeUV_maxMipLevel,de.CLAMP),l=new de(a,de.FLOOR),c=new de(a,de.FRACT),h=this.bilinearCubeUV(e,this.value,o,l),p=this.bilinearCubeUV(e,this.value,o,new dt(l,new X(1).setReadonly(!0),dt.ADD)),u=new de(h,p,c,de.MIX);return e.format(u.build(e),"v4",r)}else return console.warn("TextureCubeUVNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),r)}copy(e){return super.copy(e),this.uv.copy(e.uv),this.bias.copy(e.bias),this.value.copy(e.value),e.colorSpaceTL?this.colorSpaceTL?this.colorSpaceTL.copy(e.colorSpaceTL):this.colorSpaceTL=e.colorSpaceTL.clone():this.colorSpaceTL=void 0,e.colorSpaceTR?this.colorSpaceTR?this.colorSpaceTR.copy(e.colorSpaceTR):this.colorSpaceTR=e.colorSpaceTR.clone():this.colorSpaceTR=void 0,e.colorSpaceBL?this.colorSpaceBL?this.colorSpaceBL.copy(e.colorSpaceBL):this.colorSpaceBL=e.colorSpaceBL.clone():this.colorSpaceBL=void 0,e.colorSpaceBR?this.colorSpaceBR?this.colorSpaceBR.copy(e.colorSpaceBR):this.colorSpaceBR=e.colorSpaceBR.clone():this.colorSpaceBR=void 0,e.colorSpaceTLExp?this.colorSpaceTLExp?this.colorSpaceTLExp.copy(e.colorSpaceTLExp):this.colorSpaceTLExp=e.colorSpaceTLExp.clone():this.colorSpaceTLExp=void 0,e.colorSpaceTRExp?this.colorSpaceTRExp?this.colorSpaceTRExp.copy(e.colorSpaceTRExp):this.colorSpaceTRExp=e.colorSpaceTRExp.clone():this.colorSpaceTRExp=void 0,e.colorSpaceBLExp?this.colorSpaceBLExp?this.colorSpaceBLExp.copy(e.colorSpaceBLExp):this.colorSpaceBLExp=e.colorSpaceBLExp.clone():this.colorSpaceBLExp=void 0,e.colorSpaceBRExp?this.colorSpaceBRExp?this.colorSpaceBRExp.copy(e.colorSpaceBRExp):this.colorSpaceBRExp=e.colorSpaceBRExp.clone():this.colorSpaceBRExp=void 0,this}},on=rn;on.Nodes=function(){let e=new tn(`struct TextureCubeUVData {
|
|
956
|
+
vec4 tl;
|
|
957
|
+
vec4 tr;
|
|
958
|
+
vec4 br;
|
|
959
|
+
vec4 bl;
|
|
960
|
+
vec2 f;
|
|
961
|
+
}`),r=new xe("float cubeUV_maxMipLevel 8.0",!0),o=new xe("float cubeUV_minMipLevel 4.0",!0),n=new xe("float cubeUV_maxTileSize 256.0",!0),s=new xe("float cubeUV_minTileSize 16.0",!0),a=new K(`float getFace(vec3 direction) {
|
|
962
|
+
vec3 absDirection = abs(direction);
|
|
963
|
+
float face = -1.0;
|
|
964
|
+
if (absDirection.x > absDirection.z) {
|
|
965
|
+
if (absDirection.x > absDirection.y)
|
|
966
|
+
face = direction.x > 0.0 ? 0.0 : 3.0;
|
|
967
|
+
else
|
|
968
|
+
face = direction.y > 0.0 ? 1.0 : 4.0;
|
|
969
|
+
} else {
|
|
970
|
+
if (absDirection.z > absDirection.y)
|
|
971
|
+
face = direction.z > 0.0 ? 2.0 : 5.0;
|
|
972
|
+
else
|
|
973
|
+
face = direction.y > 0.0 ? 1.0 : 4.0;
|
|
974
|
+
}
|
|
975
|
+
return face;
|
|
976
|
+
}`);a.useKeywords=!1;let l=new K(`vec2 getUV(vec3 direction, float face) {
|
|
977
|
+
vec2 uv;
|
|
978
|
+
if (face == 0.0) {
|
|
979
|
+
uv = vec2(direction.z, direction.y) / abs(direction.x); // pos x
|
|
980
|
+
} else if (face == 1.0) {
|
|
981
|
+
uv = vec2(-direction.x, -direction.z) / abs(direction.y); // pos y
|
|
982
|
+
} else if (face == 2.0) {
|
|
983
|
+
uv = vec2(-direction.x, direction.y) / abs(direction.z); // pos z
|
|
984
|
+
} else if (face == 3.0) {
|
|
985
|
+
uv = vec2(-direction.z, direction.y) / abs(direction.x); // neg x
|
|
986
|
+
} else if (face == 4.0) {
|
|
987
|
+
uv = vec2(-direction.x, direction.z) / abs(direction.y); // neg y
|
|
988
|
+
} else {
|
|
989
|
+
uv = vec2(direction.x, direction.y) / abs(direction.z); // neg z
|
|
990
|
+
}
|
|
991
|
+
return 0.5 * (uv + 1.0);
|
|
992
|
+
}`);l.useKeywords=!1;let c=new K(`TextureCubeUVData bilinearCubeUV(sampler2D envMap, vec3 direction, float mipInt) {
|
|
993
|
+
float face = getFace(direction);
|
|
994
|
+
float filterInt = max(cubeUV_minMipLevel - mipInt, 0.0);
|
|
995
|
+
mipInt = max(mipInt, cubeUV_minMipLevel);
|
|
996
|
+
float faceSize = exp2(mipInt);
|
|
997
|
+
float texelSize = 1.0 / (3.0 * cubeUV_maxTileSize);
|
|
998
|
+
vec2 uv = getUV(direction, face) * (faceSize - 1.0);
|
|
999
|
+
vec2 f = fract(uv);
|
|
1000
|
+
uv += 0.5 - f;
|
|
1001
|
+
if (face > 2.0) {
|
|
1002
|
+
uv.y += faceSize;
|
|
1003
|
+
face -= 3.0;
|
|
1004
|
+
}
|
|
1005
|
+
uv.x += face * faceSize;
|
|
1006
|
+
if(mipInt < cubeUV_maxMipLevel){
|
|
1007
|
+
uv.y += 2.0 * cubeUV_maxTileSize;
|
|
1008
|
+
}
|
|
1009
|
+
uv.y += filterInt * 2.0 * cubeUV_minTileSize;
|
|
1010
|
+
uv.x += 3.0 * max(0.0, cubeUV_maxTileSize - 2.0 * faceSize);
|
|
1011
|
+
uv *= texelSize;
|
|
1012
|
+
vec4 tl = texture2D(envMap, uv);
|
|
1013
|
+
uv.x += texelSize;
|
|
1014
|
+
vec4 tr = texture2D(envMap, uv);
|
|
1015
|
+
uv.y += texelSize;
|
|
1016
|
+
vec4 br = texture2D(envMap, uv);
|
|
1017
|
+
uv.x -= texelSize;
|
|
1018
|
+
vec4 bl = texture2D(envMap, uv);
|
|
1019
|
+
return TextureCubeUVData( tl, tr, br, bl, f );
|
|
1020
|
+
}`,[e,a,l,r,o,n,s]);c.useKeywords=!1;let h=new xe("float r0 1.0",!0),p=new xe("float v0 0.339",!0),u=new xe("float m0 -2.0",!0),d=new xe("float r1 0.8",!0),m=new xe("float v1 0.276",!0),g=new xe("float m1 -1.0",!0),x=new xe("float r4 0.4",!0),y=new xe("float v4 0.046",!0),v=new xe("float m4 2.0",!0),P=new xe("float r5 0.305",!0),S=new xe("float v5 0.016",!0),b=new xe("float m5 3.0",!0),B=new xe("float r6 0.21",!0),w=new xe("float v6 0.0038",!0),f=new xe("float m6 4.0",!0),D=[h,p,u,d,m,g,x,y,v,P,S,b,B,w,f],C=new K(`float roughnessToMip(float roughness) {
|
|
1021
|
+
float mip = 0.0;
|
|
1022
|
+
if (roughness >= r1) {
|
|
1023
|
+
mip = (r0 - roughness) * (m1 - m0) / (r0 - r1) + m0;
|
|
1024
|
+
} else if (roughness >= r4) {
|
|
1025
|
+
mip = (r1 - roughness) * (m4 - m1) / (r1 - r4) + m1;
|
|
1026
|
+
} else if (roughness >= r5) {
|
|
1027
|
+
mip = (r4 - roughness) * (m5 - m4) / (r4 - r5) + m4;
|
|
1028
|
+
} else if (roughness >= r6) {
|
|
1029
|
+
mip = (r5 - roughness) * (m6 - m5) / (r5 - r6) + m5;
|
|
1030
|
+
} else {
|
|
1031
|
+
mip = -2.0 * log2(1.16 * roughness);// 1.16 = 1.79^0.25
|
|
1032
|
+
}
|
|
1033
|
+
return mip;
|
|
1034
|
+
}`,D);return{bilinearCubeUV:c,roughnessToMip:C,m0:u,cubeUV_maxMipLevel:r}}();var ro=class extends ae{constructor(e){super("v3");this.nodeType="Normal";this.scope=e??ro.VIEW}getShared(){return this.scope===ro.WORLD}build(e,r,o,n){let s=e.context[this.scope+"Normal"];return s?s.build(e,r,o,n):super.build(e,r,o)}generate(e,r,o,n,s){let a;switch(this.scope){case ro.VIEW:e.isShader("vertex")?a="transformedNormal":a="geometryNormal";break;case ro.LOCAL:e.isShader("vertex")?a="objectNormal":(e.requires.normal=!0,a="vObjectNormal");break;case ro.WORLD:e.isShader("vertex")?a="inverseTransformDirection( transformedNormal, viewMatrix ).xyz":(e.requires.worldNormal=!0,a="vWNormal");break}return e.format(a,this.getType(e),r)}copy(e){return super.copy(e),this.scope=e.scope,this}},$e=ro;$e.LOCAL="local",$e.WORLD="world",$e.VIEW="view",$e.NORMAL="normal";He.addKeyword("viewNormal",function(){return new $e($e.VIEW)});He.addKeyword("localNormal",function(){return new $e($e.NORMAL)});He.addKeyword("worldNormal",function(){return new $e($e.WORLD)});var ir=class extends ae{constructor(e){super("v3");this.nodeType="Position";this.scope=e??ir.LOCAL}getType(){switch(this.scope){case ir.PROJECTION:return"v4"}return this.type}getShader(){switch(this.scope){case ir.LOCAL:case ir.WORLD:return!1}return!0}generate(e,r,o,n,s){let a;switch(this.scope){case ir.LOCAL:e.isShader("vertex")?a="transformed":(e.requires.position=!0,a="vPosition");break;case ir.WORLD:if(e.isShader("vertex"))return"( modelMatrix * vec4( transformed, 1.0 ) ).xyz";e.requires.worldPosition=!0,a="vWPosition";break;case ir.VIEW:a=e.isShader("vertex")?"-mvPosition.xyz":"vViewPosition";break;case ir.PROJECTION:a=e.isShader("vertex")?"( projectionMatrix * modelViewMatrix * vec4( position, 1.0 ) )":"vec4( 0.0 )";break}return e.format(a,this.getType(),r)}copy(e){return super.copy(e),this.scope=e.scope,this}},Qe=ir;Qe.LOCAL="local",Qe.WORLD="world",Qe.VIEW="view",Qe.PROJECTION="projection";He.addKeyword("position",function(){return new Qe});He.addKeyword("worldPosition",function(){return new Qe(Qe.WORLD)});He.addKeyword("viewPosition",function(){return new Qe(Qe.VIEW)});var Vt=class extends ae{constructor(e){super("v3");this.nodeType="Reflect";this.scope=e??Vt.CUBE}getUnique(e){return!e.context.viewNormal}getType(){switch(this.scope){case Vt.SPHERE:return"v2"}return this.type}generate(e,r){let o=this.getUnique(e);if(e.isShader("fragment")){let n;switch(this.scope){case Vt.VECTOR:{let s=new $e($e.VIEW),a=e.context.roughness,l=s.build(e,"v3"),c=new Qe(Qe.VIEW).build(e,"v3"),h=a?a.build(e,"f"):void 0,p=`reflect( -normalize( ${c} ), ${l} )`;h&&(p=`normalize( mix( ${p}, ${l}, ${h} * ${h} ) )`);let u=`inverseTransformDirection( ${p}, viewMatrix )`;o?(e.addNodeCode(`vec3 reflectVec = ${u};`),n="reflectVec"):n=u;break}case Vt.CUBE:{let s=new Vt(Vt.VECTOR).build(e,"v3"),a="vec3( -"+s+".x, "+s+".yz )";o?(e.addNodeCode(`vec3 reflectCubeVec = ${a};`),n="reflectCubeVec"):n=a;break}case Vt.SPHERE:{let s=new Vt(Vt.VECTOR).build(e,"v3"),a="normalize( ( viewMatrix * vec4( "+s+", 0.0 ) ).xyz + vec3( 0.0, 0.0, 1.0 ) ).xy * 0.5 + 0.5";o?(e.addNodeCode(`vec2 reflectSphereVec = ${a};`),n="reflectSphereVec"):n=a;break}}return e.format(n,this.getType(),r)}else return console.warn("ReflectNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.type,r)}copy(e){return super.copy(e),this.scope=e.scope,this}},sr=Vt;sr.CUBE="cube",sr.SPHERE="sphere",sr.VECTOR="vector";var Vs=class extends ae{constructor(e=new Je,r,o){super("v4");this.nodeType="TextureCube";this.value=e,this.radianceNode=new on(this.value,r??new sr(sr.VECTOR),o),this.irradianceNode=new on(this.value,new $e($e.WORLD),new X(1).setReadonly(!0))}generate(e,r){return e.isShader("fragment")?(e.require("irradiance"),e.context.bias&&e.context.bias.setTexture(this.value),(e.slot==="irradiance"?this.irradianceNode:this.radianceNode).build(e,r)):(console.warn("TextureCubeNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),r))}copy(e){return super.copy(e),this.value.copy(e.value),this.radianceNode.copy(e.radianceNode),this.irradianceNode.copy(e.irradianceNode),this}};import{CubeTexture as TS}from"three";var Fs=class extends Ie{constructor(e=new TS,r,o){super("v4",{shared:!0});this.nodeType="CubeTexture";this.value=e,this.uv=r??new sr,this.bias=o}getTexture(e,r){return super.generate(e,r,this.value.uuid,"tc")}generate(e,r){if(r==="samplerCube")return this.getTexture(e,r);let o=this.getTexture(e,r),n=this.uv?.build(e,"v3"),s=this.bias?this.bias.build(e,"f"):void 0;s===void 0&&e.context.bias&&(s=e.context.bias.setTexture(this).build(e,"f"));let a;s?a="texCubeBias( "+o+", "+n+", "+s+" )":a="texCube( "+o+", "+n+" )";let l={include:e.isShader("vertex"),ignoreCache:!0},c=this.getType(e);return e.addContext(l),this.colorSpace=this.colorSpace??new at(new Ce("",c)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(a),a=this.colorSpace.build(e,c),e.removeContext(),e.format(a,c,r)}copy(e){return super.copy(e),this.value.copy(e.value),e.uv?this.uv?this.uv.copy(e.uv):this.uv=e.uv.clone():this.uv=void 0,e.bias?this.bias?this.bias.copy(e.bias):this.bias=e.bias.clone():this.bias=void 0,this}};var Td=["x","y","z","w"],AS=["float","vec2","vec3","vec4"],OS={float:"f",vec2:"v2",vec3:"v3",vec4:"v4",mat4:"v4",int:"i",bool:"b","float[]":"f[]","vec4[]":"v4[]"},DS={t:"sampler2D",tc:"samplerCube",b:"bool",i:"int",f:"float",c:"vec3",v2:"vec2",v3:"vec3",v4:"vec4",m3:"mat3",m4:"mat4","f[]":"float[]","v4[]":"vec4[]"},Us=class{constructor(){this.includes={consts:{},functions:{},structs:{}};this.cache="";this.slot="";this.shader="";this.context={};this.getIncludesCode=function(){function t(e,r){return e.deps.length-r.deps.length}return function(r,o){let n=this.getIncludes(r,o);if(!n)return"";let s="";n=n.sort(t);for(let a=0;a<n.length;a++)n[a].src&&(s+=n[a].src+`
|
|
1035
|
+
`);return s}}();this.slots=[],this.caches=[],this.contexts=[],this.keywords={},this.nodeData={},this.fragmentVariables={},this.fragmentParsVariables={},this.vertexParsVariables={},this.requires={uv:[],color:[],lights:!1,fog:!1,transparent:!1,irradiance:!1,position:!1,worldPosition:!1,normal:!1,worldNormal:!1,vWorldViewDir:!1,modelMatrix:!1,viewMatrix:!1,projectionMatrix:!1},this.includes={consts:[],functions:[],structs:[]},this.attributes={},this.prefixCode=["#ifdef TEXTURE_LOD_EXT"," #define texCube(a, b) textureCube(a, b)"," #define texCubeBias(a, b, c) textureCubeLodEXT(a, b, c)"," #define tex2D(a, b) texture2D(a, b)"," #define tex2DBias(a, b, c) texture2DLodEXT(a, b, c)","#else"," #define texCube(a, b) textureCube(a, b)"," #define texCubeBias(a, b, c) textureCube(a, b, c)"," #define tex2D(a, b) texture2D(a, b)"," #define tex2DBias(a, b, c) texture2D(a, b, c)","#endif",`
|
|
1036
|
+
// NOTE: Include Spline's blending modes. This could be part of BlendNode
|
|
1037
|
+
#define SPE_BLENDING_NORMAL 0
|
|
1038
|
+
#define SPE_BLENDING_MULTIPLY 1
|
|
1039
|
+
#define SPE_BLENDING_SCREEN 2
|
|
1040
|
+
#define SPE_BLENDING_OVERLAY 3
|
|
1041
|
+
|
|
1042
|
+
vec3 spe_normalBlend( vec3 a, vec3 b, float alpha ) {
|
|
1043
|
+
return mix( a, b, alpha );
|
|
1044
|
+
}
|
|
1045
|
+
|
|
1046
|
+
vec3 spe_multiplyBlend( vec3 a, vec3 b, float alpha ) {
|
|
1047
|
+
return mix( a, a * b, alpha );
|
|
1048
|
+
}
|
|
1049
|
+
|
|
1050
|
+
vec3 spe_screenBlend( vec3 a, vec3 b, float alpha ) {
|
|
1051
|
+
vec3 tmp = 1.0 - ( 1.0 - a ) * ( 1.0 - b );
|
|
1052
|
+
return mix( a, tmp, alpha );
|
|
1053
|
+
}
|
|
1054
|
+
|
|
1055
|
+
vec3 spe_overlayBlend( vec3 a, vec3 b, float alpha ) {
|
|
1056
|
+
vec3 tmp = mix( 1. - 2. * (1. - a) * (1. - b), 2. * a * b, step( a, vec3(.5) ) );
|
|
1057
|
+
return clamp( mix( a, tmp, alpha ), 0.0, 1.0 );
|
|
1058
|
+
}
|
|
1059
|
+
|
|
1060
|
+
vec3 spe_blend( vec3 a, vec3 b, float alpha, int mode ) {
|
|
1061
|
+
if ( mode == SPE_BLENDING_NORMAL ) return spe_normalBlend( a, b, alpha );
|
|
1062
|
+
else if ( mode == SPE_BLENDING_MULTIPLY ) return spe_multiplyBlend( a, b, alpha );
|
|
1063
|
+
else if ( mode == SPE_BLENDING_SCREEN ) return spe_screenBlend( a, b, alpha );
|
|
1064
|
+
else if ( mode == SPE_BLENDING_OVERLAY ) return spe_overlayBlend( a, b, alpha );
|
|
1065
|
+
return vec3( 1.0 );
|
|
1066
|
+
}
|
|
1067
|
+
`,"#include <packing>","#include <common>"].join(`
|
|
1068
|
+
`),this.parsCode={vertex:["float neighbor_offset = 0.0001;",""].join(`
|
|
1069
|
+
`),fragment:["float accumAlpha = 0.0;",`void accumulateAlpha(float alpha) {
|
|
1070
|
+
accumAlpha += (1.0 - accumAlpha) * alpha;
|
|
1071
|
+
}`,""].join(`
|
|
1072
|
+
`)},this.code={vertex:"",fragment:""},this.nodeCode={vertex:"",fragment:""},this.resultCode={vertex:"",fragment:""},this.finalCode={vertex:"",fragment:""},this.inputs={uniforms:{list:[],vertex:[],fragment:[]},arrayUniforms:{list:[],vertex:[],fragment:[]},vars:{varying:[],vertex:[],fragment:[]}},this.defines={},this.uniforms={},this.extensions={derivatives:!1,fragDepth:!1,drawBuffers:!1,shaderTextureLOD:!1},this.updaters=[],this.nodes=[],this.analyzing=!1}build(t,e){this.buildShader("vertex",t),this.buildShader("fragment",e);for(let r=0;r<this.requires.uv.length;r++)if(this.requires.uv[r]){let o=r>0?r+1:"";this.addVaryCode("varying vec2 vUv"+o+";"),r>0&&this.addVertexParsCode("attribute vec2 uv"+o+";"),this.addVertexFinalCode("vUv"+o+" = uv"+o+";")}return this.requires.color[0]&&(this.addVaryCode("varying vec4 vColor;"),this.addVertexParsCode("attribute vec4 color;"),this.addVertexFinalCode("vColor = color;")),this.requires.color[1]&&(this.addVaryCode("varying vec4 vColor2;"),this.addVertexParsCode("attribute vec4 color2;"),this.addVertexFinalCode("vColor2 = color2;")),this.requires.position&&(this.addVaryCode("varying vec3 vPosition;"),this.addVertexFinalCode("vPosition = transformed;")),this.requires.worldPosition,this.requires.normal&&(this.addVaryCode("varying vec3 vObjectNormal;"),this.addVertexFinalCode("vObjectNormal = normal;")),this.requires.modelMatrix&&this.addFragmentParsCode("uniform mat4 modelMatrix;"),this.requires.viewMatrix&&this.addFragmentParsCode("uniform mat4 viewMatrix;"),this.requires.projectionMatrix&&this.addFragmentParsCode("uniform mat4 projectionMatrix;"),this.requires.worldNormal&&(this.addVaryCode("varying vec3 vWNormal;"),this.addVertexFinalCode("vWNormal = inverseTransformDirection( transformedNormal, viewMatrix ).xyz;")),this.requires.vWorldViewDir&&(this.addVaryCode("varying vec3 vWorldViewDir;"),this.addVertexFinalCode("vWorldViewDir = isPerspectiveMatrix( projectionMatrix ) ? ( (modelMatrix * vec4(position, 1.0)).xyz - cameraPosition ) : vec3( -viewMatrix[0][2], -viewMatrix[1][2], -viewMatrix[2][2] );")),this}buildShader(t,e){this.resultCode[t]=e.build(this.setShader(t),"v4")}setMaterial(t,e){return this.material=t,this.renderer=e,this.requires.lights=t.lights,this.requires.fog=t.fog,this.mergeDefines(t.defines),this}addFlow(t,e,r){return this.addSlot(t).addCache(e).addContext(r)}removeFlow(){return this.removeSlot().removeCache().removeContext()}addCache(t){return this.cache=t??"",this.caches.push(this.cache),this}removeCache(){return this.caches.pop(),this.cache=this.caches[this.caches.length-1]||"",this}addContext(t){return this.context=Object.assign({},this.context,t),this.context.extra=this.context.extra||{},this.contexts.push(this.context),this}removeContext(){return this.contexts.pop(),this.context=this.contexts[this.contexts.length-1]||{},this}addSlot(t){return this.slot=t||"",this.slots.push(this.slot),this}removeSlot(){return this.slots.pop(),this.slot=this.slots[this.slots.length-1]||"",this}addFragmentVariable(t,e){this.fragmentVariables[t]===void 0&&(this.addFragmentCode(`${e} ${t};`),this.fragmentVariables[t]="")}addFragmentParsVariable(t,e){this.fragmentParsVariables[t]===void 0&&(this.addFragmentParsCode(`${e} ${t};`),this.fragmentParsVariables[t]="")}addVertexParsVariable(t,e){this.vertexParsVariables[t]===void 0&&(this.addVertexParsCode(`${e} ${t};`),this.vertexParsVariables[t]="")}addVertexCode(t){this.addCode(t,"vertex")}addFragmentCode(t){this.addCode(t,"fragment")}addCode(t,e){this.code[e??this.shader]+=t+`
|
|
1073
|
+
`}addVertexNodeCode(t){this.addNodeCode(t,"vertex")}addFragmentNodeCode(t){this.addNodeCode(t,"fragment")}addNodeCode(t,e){this.nodeCode[e??this.shader]+=t+`
|
|
1074
|
+
`}clearNodeCode(t){t=t??this.shader;let e=this.nodeCode[t];return this.nodeCode[t]="",e}clearVertexNodeCode(){return this.clearNodeCode("vertex")}clearFragmentNodeCode(){return this.clearNodeCode("fragment")}addVertexFinalCode(t){this.addFinalCode(t,"vertex")}addFragmentFinalCode(t){this.addFinalCode(t,"fragment")}addFinalCode(t,e){this.finalCode[e??this.shader]+=t+`
|
|
1075
|
+
`}addVertexParsCode(t){this.addParsCode(t,"vertex")}addFragmentParsCode(t){this.addParsCode(t,"fragment")}addParsCode(t,e){this.parsCode[e??this.shader]+=t+`
|
|
1076
|
+
`}addVaryCode(t){this.addVertexParsCode(t),this.addFragmentParsCode(t)}isCache(t){return this.caches.indexOf(t)!==-1}isSlot(t){return this.slots.indexOf(t)!==-1}define(t,e){this.defines[t]=e===void 0?1:e}require(t){this.requires[t]=!0}isDefined(t){return this.defines[t]!==void 0}getVar(t,e,r,o="varying",n="V",s=""){let a=this.getVars(o),l=a[t];if(!l){let c=a.length;l={name:r||"node"+n+c+(s?"_"+s:""),type:e},a.push(l),a[t]=l}return l}getTempVar(t,e,r,o){return this.getVar(t,e,r,this.shader,"T",o)}getAttribute(t,e){if(!this.attributes[t]){let r=this.getVar(t,e);this.addVertexParsCode("attribute "+e+" "+t+";"),this.addVertexFinalCode(r.name+" = "+t+";"),this.attributes[t]={varying:r,name:t,type:e}}return this.attributes[t]}getCode(t){return[this.prefixCode,this.parsCode[t],this.getVarListCode(this.getVars("varying"),"varying"),this.getVarListCode(this.inputs.uniforms[t],"uniform"),this.getVarListCode(this.inputs.arrayUniforms[t],"uniform"),this.getIncludesCode("consts",t),this.getIncludesCode("structs",t),this.getIncludesCode("functions",t),"void main() {",this.getVarListCode(this.getVars(t)),this.code[t],this.resultCode[t],this.finalCode[t],"}"].join(`
|
|
1077
|
+
`)}getVarListCode(t,e){e=e??"";let r="";for(let o=0,n=t.length;o<n;++o){let s=t[o],a=s.type,l=s.name,c=s.size,h=this.getFormatByType(a);if(h===void 0)throw new Error("Node pars "+h+" not found.");h.includes("[]")?r+=e+" "+h.substring(0,h.length-2)+" "+l+`[${c}];
|
|
1078
|
+
`:r+=e+" "+h+" "+l+`;
|
|
1079
|
+
`}return r}getVars(t){return this.inputs.vars[t??this.shader]}getNodeData(t){let e=t instanceof ce?t.uuid:t;return this.nodeData[e]=this.nodeData[e]||{}}createUniform(t,e,r,o,n,s){if(e.includes("[]")){let a=this.inputs.arrayUniforms,l=a.list.length,c=new ai({type:e,size:r.size,name:o||"nodeUA"+l+(s?"_"+s:""),node:r,needsUpdate:n});return a.list.push(c),a[t].push(c),a[t][c.name]=c,this.uniforms[c.name]=c,c}else{let a=this.inputs.uniforms,l=a.list.length,c=new ai({type:e,name:o||"nodeU"+l+(s?"_"+s:""),node:r,needsUpdate:n});return a.list.push(c),a[t].push(c),a[t][c.name]=c,this.uniforms[c.name]=c,c}}createVertexUniform(t,e,r,o,n){return this.createUniform("vertex",t,e,r,o,n)}createFragmentUniform(t,e,r,o,n){return this.createUniform("fragment",t,e,r,o,n)}include(t,e,r){let o;if(t=typeof t=="string"?He.get(t):t,this.context.include===!1)return t.name;t instanceof K?o=this.includes.functions:t instanceof xe?o=this.includes.consts:t instanceof tn&&(o=this.includes.structs);let n=o[this.shader]=o[this.shader]||[];if(t){let s=n[t.name];if(s||(s=n[t.name]={node:t,deps:[]},n.push(s),s.src=t.build(this,"source")),t instanceof K&&e&&n[e.name]&&n[e.name].deps.indexOf(t)===-1&&(n[e.name].deps.push(t),t.includes?.length)){let a=0;do this.include(t.includes[a++],e);while(a<t.includes.length)}return r&&(s.src=r),t.name}else throw new Error("Include not found.")}colorToVectorProperties(t){return t.replace("r","x").replace("g","y").replace("b","z").replace("a","w")}colorToVector(t){return t.replace(/c/g,"v3")}getIncludes(t,e){return this.includes[t][e||this.shader]}getConstructorFromLength(t){return AS[t-1]}isTypeMatrix(t){return/^m/.test(t)}getTypeLength(t){return t==="f"?1:parseInt(this.colorToVector(t).substr(1))}getTypeFromLength(t){return t===1?"f":"v"+t}findNode(...t){for(let e=0;e<arguments.length;e++){let r=t[e];if(r?.isNode)return r}}resolve(...t){for(let e=0;e<arguments.length;e++){let r=t[e];if(r!==void 0){if(r.isNode)return r;if(r.isTexture)switch(r.mapping){case LS:case IS:return new Fs(r);case PS:return new Vs(new Je(r));default:return new Je(r)}else{if(r.isVector2)return new Ye(r);if(r.isVector3)return new ot(r);if(r.isVector4)return new nr(r)}}}}format(t,e,r){switch(this.colorToVector(r+" <- "+e)){case"f <- v2":return t+".x";case"f <- v3":return t+".x";case"f <- v4":return t+".x";case"f <- i":case"f <- b":return"float( "+t+" )";case"v2 <- f":return"vec2( "+t+" )";case"v2 <- v3":return t+".xy";case"v2 <- v4":return t+".xy";case"v2 <- i":case"v2 <- b":return"vec2( float( "+t+" ) )";case"v3 <- f":return"vec3( "+t+" )";case"v3 <- v2":return"vec3( "+t+", 0.0 )";case"v3 <- v4":return t+".xyz";case"v3 <- i":case"v3 <- b":return"vec2( float( "+t+" ) )";case"v4 <- f":return"vec4( "+t+" )";case"v4 <- v2":return"vec4( "+t+", 0.0, 1.0 )";case"v4 <- v3":return"vec4( "+t+", 1.0 )";case"v4 <- i":case"v4 <- b":return"vec4( float( "+t+" ) )";case"i <- f":case"i <- b":return"int( "+t+" )";case"i <- v2":return"int( "+t+".x )";case"i <- v3":return"int( "+t+".x )";case"i <- v4":return"int( "+t+".x )";case"b <- f":return"( "+t+" != 0.0 )";case"b <- v2":return"( "+t+" != vec2( 0.0 ) )";case"b <- v3":return"( "+t+" != vec3( 0.0 ) )";case"b <- v4":return"( "+t+" != vec4( 0.0 ) )";case"b <- i":return"( "+t+" != 0 )"}return t}getTypeByFormat(t){return OS[t]||t}getFormatByType(t){return DS[t]||t}getUUID(t,e){return e=e!==void 0?e:!0,e&&this.cache&&(t=this.cache+"-"+t),t}getElementByIndex(t){return Td[t]}getIndexByElement(t){return Td.indexOf(t)}isShader(t){return this.shader===t}setShader(t){return this.shader=t,this}mergeDefines(t){for(let e in t)this.defines[e]=t[e];return this.defines}mergeUniform(t){for(let e in t)this.uniforms[e]=t[e];return this.uniforms}getTextureEncodingFromMap(t){let e;return t?t.isTexture&&(e=t.encoding):e=Cd,e===Cd&&this.context.gamma&&(e=MS),e}};var ci=class extends ce{constructor(e=new ce){super("v4");this.nodeType="Raw";this.value=e}generate(e){let r=this.value.analyzeAndFlow(e,this.type),o=r.code+`
|
|
1080
|
+
`;return e.isShader("vertex")?o+="gl_Position = "+r.result+";":o+="gl_FragColor = "+r.result+";",o}copy(e){return super.copy(e),this.value.copy(e.value),this}};var bt=class extends BS{constructor(e,r,o){super(o);this.isNodeMaterial=!0;this.type="NodeMaterial";this.wireframeLinecap="";this.wireframeLinejoin="";this.uniformsBackup={};this.userData={type:"",category:"",nodeType:""};this.fog=!0,this.vertex=e??new ci(new Qe(Qe.PROJECTION)),this.fragment=r??new ci(new Ne(5855577)),this.updaters=[],this.isDetached=!0,this.dithering=!0,this.vertexColors=!0,this.onBeforeCompile=this._onBeforeCompile}getDefines(){return this.defines}getUniforms(){return this.uniforms}getVertexShader(){return this.vertexShader}getFragmentShader(){return this.fragmentShader}_onBeforeCompile(e,r){this.build({renderer:r}),e.defines=this.defines,e.uniforms=this.uniforms,e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader,e.extensionDerivatives=this.extensions.derivatives===!0,e.extensionFragDepth=this.extensions.fragDepth===!0,e.extensionDrawBuffers=this.extensions.drawBuffers===!0,e.extensionShaderTextureLOD=this.extensions.shaderTextureLOD===!0}_getLayerStack(e){let r=new en(this);return e&&(async()=>{for(;e.image===void 0;)await new Promise(o=>requestAnimationFrame(o));r.addLayerAt(1,{type:"texture",texture:e}),this.dispose()})(),r}clampUniformsForPreview(e,r){let o=(n,s,a)=>Math.min(Math.max(n,s),a);if(this.userData.layers){for(let n of this.userData.layers.getLayers())if(n.type=="displace"){this.uniformsBackup[`f${n.id}_intensity`]=n.uniforms[`f${n.id}_intensity`].value;let s=o(n.uniforms[`f${n.id}_intensity`].value,e,r);n.uniforms[`f${n.id}_intensity`].value=s}}}restoreClampedUniforms(){if(this.userData.layers)for(let e of this.userData.layers.getLayers())e.type=="displace"&&(e.uniforms[`f${e.id}_intensity`].value=this.uniformsBackup[`f${e.id}_intensity`])}customProgramCacheKey(){return this.getHash()}updateFrame(e){for(let r=0;r<this.updaters.length;++r)e.updateNode(this.updaters[r])}build(e){e=e??{};let r=e.builder??new Us;return r.setMaterial(this,e.renderer),r.build(this.vertex,this.fragment),this.vertexShader=r.getCode("vertex"),this.fragmentShader=r.getCode("fragment"),this.defines=r.defines,this.uniforms=r.uniforms,this.extensions=r.extensions,this.updaters=r.updaters,this.fog=r.requires.fog,this.lights=r.requires.lights,this.transparent=r.requires.transparent||this.blending>_S,this}getHash(){let e="{";return e+='"vertex":'+this.vertex.getHash()+",",e+='"fragment":'+this.fragment.getHash(),e+="}",e}get penumbraSizeNode(){return this.fragment.penumbraSize}set penumbraSizeNode(e){this.fragment.penumbraSize=e}};Object.defineProperties(bt.prototype,{properties:{get:function(){return this.fragment.properties}},needsUpdate:{set:function(i){i===!0&&this.version++,this.needsCompile=i},get:function(){return this.needsCompile}}});import{UniformsLib as ES,UniformsUtils as GS}from"three";var js=class extends ce{constructor(){super("basic");this.nodeType="Basic";this.color=new Ne(5855577)}generate(e){let r;if(e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(GS.merge([ES.fog])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>"].join(`
|
|
1081
|
+
`));let n=["#include <beginnormal_vertex>",`
|
|
695
1082
|
#if !defined( USE_LAYER_DISPLACE )
|
|
696
1083
|
#include <defaultnormal_vertex>
|
|
697
1084
|
#endif
|
|
@@ -707,11 +1094,11 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
707
1094
|
#if !defined( USE_LAYER_DISPLACE )
|
|
708
1095
|
#include <begin_vertex>
|
|
709
1096
|
#endif /* !USE_LAYER_DISPLACE */
|
|
710
|
-
`];o&&
|
|
711
|
-
`)}else{this.color===void 0&&(this.color=new
|
|
712
|
-
`));let a=["#include <normal_fragment_begin>",o.code];
|
|
713
|
-
`)}return r}copy(e){return super.copy(e),e.color&&(this.color=e.color.clone()),e.position&&(this.position=e.position.clone()),e.alpha&&(this.alpha=e.alpha.clone()),e.afterColor&&(this.afterColor=e.afterColor.clone()),e.shadingAlpha&&(this.shadingAlpha=e.shadingAlpha.clone()),e.shadingBlend&&(this.shadingBlend=e.shadingBlend.clone()),this}};var
|
|
714
|
-
`));let
|
|
1097
|
+
`];o&&n.push(o.code,o.result?"displaced_position = "+o.result+";":""),n.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),n.push("#include <project_vertex>","#include <fog_vertex>","#include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;","#include <worldpos_vertex>"),n.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=n.join(`
|
|
1098
|
+
`)}else{this.color===void 0&&(this.color=new Ne(5855577)),this.color.analyze(e,{slot:"color"}),this.alpha&&this.alpha.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"});let o=this.color.flow(e,"c",{slot:"color"}),n=this.alpha?this.alpha.flow(e,"f"):void 0,s=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0;e.requires.transparent=n!==void 0,e.addParsCode(["varying vec3 vWPosition;","#include <fog_pars_fragment>","#include <dithering_pars_fragment>","varying vec3 vViewPosition;","#include <normal_pars_fragment>"].join(`
|
|
1099
|
+
`));let a=["#include <normal_fragment_begin>",o.code];n&&a.push(n.code,"#ifdef ALPHATEST"," if ( "+n.result+" <= ALPHATEST ) discard;","#endif"),s?a.push(s.code,`vec3 outgoingLight = ${o.result};`,`vec3 finalColor = spe_blend(outgoingLight, ${s.result}, 1.0, SPE_BLENDING_NORMAL);`):a.push(`vec3 finalColor = ${o.result};`),n?a.push(`gl_FragColor = vec4( finalColor, accumAlpha * ${n.result} );`):a.push("gl_FragColor = vec4("+o.result+", 1.0 );"),a.push("#include <fog_fragment>","#include <dithering_fragment>"),r=a.join(`
|
|
1100
|
+
`)}return r}copy(e){return super.copy(e),e.color&&(this.color=e.color.clone()),e.position&&(this.position=e.position.clone()),e.alpha&&(this.alpha=e.alpha.clone()),e.afterColor&&(this.afterColor=e.afterColor.clone()),e.shadingAlpha&&(this.shadingAlpha=e.shadingAlpha.clone()),e.shadingBlend&&(this.shadingBlend=e.shadingBlend.clone()),this}};var ks=class extends bt{constructor(e=new js,r){super(e,e,r);this.type="BasicNodeMaterial",this.fragment=e}get color(){return this.fragment.color}set color(e){this.fragment.color=e}get afterColor(){return this.fragment.afterColor}set afterColor(e){this.fragment.afterColor=e}get alpha(){return this.fragment.alpha}set alpha(e){this.fragment.alpha=e}get shadingAlpha(){return this.fragment.shadingAlpha}set shadingAlpha(e){this.fragment.shadingAlpha=e}get shadingBlend(){return this.fragment.shadingBlend}set shadingBlend(e){this.fragment.shadingBlend=e}get position(){return this.fragment.position}set position(e){this.fragment.position=e}};var Ft=class extends ks{constructor(t,e,r){super(e,t),this.userData.type="BasicMaterial",this.userData.category="Basic",this.userData.layers=r??this._getLayerStack(t?.map)}get layersList(){return this.userData.layers}set layersList(t){this.userData.layers=t}static fromMaterial(t){let e=new Ft(t.map?{map:t.map}:{}),r=e.fragment;return r.color.value.copy(t.color),r.alpha.value=t.opacity,e}};import{UniformsLib as Ld,UniformsUtils as RS}from"three";var Hs=class extends ce{constructor(){super("phong");this.nodeType="Phong";this.color=new Ne(5855577),this.specular=new Ne(1118481),this.shininess=new X(30),this.penumbraSize=new ke(5,.5),this.shadingAlpha=new X(1),this.shadingBlend=new fe(0)}build(e){let r;if(e.define("PHONG"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(RS.merge([Ld.fog,Ld.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
|
|
1101
|
+
`));let n=["#include <beginnormal_vertex>",`
|
|
715
1102
|
#ifndef USE_LAYER_DISPLACE
|
|
716
1103
|
#include <defaultnormal_vertex>
|
|
717
1104
|
#endif
|
|
@@ -728,8 +1115,8 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
728
1115
|
#ifndef USE_LAYER_DISPLACE
|
|
729
1116
|
#include <begin_vertex>
|
|
730
1117
|
#endif
|
|
731
|
-
`];o&&
|
|
732
|
-
`)}else{e.mergeUniform({penumbraSize:this.penumbraSize}),this.color===void 0&&(this.color=new
|
|
1118
|
+
`];o&&n.push(o.code,o.result?"displaced_position = "+o.result+";":""),n.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),n.push(" #include <project_vertex>"," #include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;"," #include <worldpos_vertex>"," #include <shadowmap_vertex>"," #include <fog_vertex>"),n.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=n.join(`
|
|
1119
|
+
`)}else{e.mergeUniform({penumbraSize:this.penumbraSize}),this.color===void 0&&(this.color=new Ne(5855577)),this.color.analyze(e,{slot:"color"}),this.specular.analyze(e),this.shininess.analyze(e),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let o=this.color.flow(e,"c",{slot:"color"}),n=this.specular.flow(e,"c"),s=this.shininess.flow(e,"f"),a=this.shadingAlpha.flow(e,"f"),l=this.shadingBlend.flow(e,"i"),c=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,h=this.alpha?this.alpha.flow(e,"f"):void 0;e.requires.transparent=h!==void 0,e.addParsCode(["varying vec3 vWPosition;","uniform vec3 emissive;",`uniform float penumbraSize[${5}];`,"#include <normal_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <lights_phong_pars_fragment>","#include <shadowmap_pars_fragment>","#include <dithering_pars_fragment>"].join(`
|
|
733
1120
|
`));let p=["#include <normal_fragment_begin>",`
|
|
734
1121
|
// NOTE: gl_FrontFacing alternative using face normal estimation.
|
|
735
1122
|
vec3 viewdx = dFdx(vViewPosition);
|
|
@@ -738,15 +1125,15 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
738
1125
|
if (dot(normal, faceNormal) < 0.0) {
|
|
739
1126
|
normal *= -1.0;
|
|
740
1127
|
}
|
|
741
|
-
`," BlinnPhongMaterial material;"];p.push(o.code," vec3 diffuseColor = "+o.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"," vec3 totalEmissiveRadiance = emissive;",
|
|
1128
|
+
`," BlinnPhongMaterial material;"];p.push(o.code," vec3 diffuseColor = "+o.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"," vec3 totalEmissiveRadiance = emissive;",n.code," vec3 specular = "+n.result+";",s.code," float shininess = max( 0.0001, "+s.result+" );"," float specularStrength = 1.0;"),h&&p.push(h.code,"#ifdef ALPHATEST","if ( "+h.result+" <= ALPHATEST ) discard;","#endif"),p.push("material.diffuseColor = diffuseColor;"),p.push("material.specularColor = specular;","material.specularShininess = shininess;","material.specularStrength = specularStrength;","#include <lights_fragment_begin>","#include <lights_fragment_end>"),p.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;"),p.push(`
|
|
742
1129
|
if (outgoingLight != diffuseColor) {
|
|
743
1130
|
float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
|
|
744
1131
|
accumAlpha += ( 1.0 - accumAlpha ) * ${a.result} * lightAccu;
|
|
745
1132
|
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${a.result}, ${l.result} );
|
|
746
1133
|
}
|
|
747
1134
|
`),c&&p.push(c.code,`outgoingLight = spe_blend(outgoingLight, ${c.result}, 1.0, SPE_BLENDING_NORMAL);`),h?p.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${h.result} );`):p.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),p.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=p.join(`
|
|
748
|
-
`)}return r}copy(e){return super.copy(e),e.color&&(this.color=e.color.clone()),this.specular=e.specular.clone(),this.shininess=e.shininess.clone(),e.position&&(this.position=e.position.clone()),e.afterColor&&(this.afterColor=e.afterColor.clone()),e.alpha&&(this.alpha=e.alpha.clone()),e.shadingAlpha&&(this.shadingAlpha=e.shadingAlpha.clone()),e.shadingBlend&&(this.shadingBlend=e.shadingBlend.clone()),this}};var
|
|
749
|
-
`));let
|
|
1135
|
+
`)}return r}copy(e){return super.copy(e),e.color&&(this.color=e.color.clone()),this.specular=e.specular.clone(),this.shininess=e.shininess.clone(),e.position&&(this.position=e.position.clone()),e.afterColor&&(this.afterColor=e.afterColor.clone()),e.alpha&&(this.alpha=e.alpha.clone()),e.shadingAlpha&&(this.shadingAlpha=e.shadingAlpha.clone()),e.shadingBlend&&(this.shadingBlend=e.shadingBlend.clone()),this}};var Ws=class extends bt{constructor(e=new Hs,r){super(e,e,r);this.type="PhongNodeMaterial",this.fragment=e}get color(){return this.fragment.color}set color(e){this.fragment.color=e}get afterColor(){return this.fragment.afterColor}set afterColor(e){this.fragment.afterColor=e}get alpha(){return this.fragment.alpha}set alpha(e){this.fragment.alpha=e}get shadingAlpha(){return this.fragment.shadingAlpha}set shadingAlpha(e){this.fragment.shadingAlpha=e}get shadingBlend(){return this.fragment.shadingBlend}set shadingBlend(e){this.fragment.shadingBlend=e}get position(){return this.fragment.position}set position(e){this.fragment.position=e}get specular(){return this.fragment.specular}set specular(e){this.fragment.specular=e}get shininess(){return this.fragment.shininess}set shininess(e){this.fragment.shininess=e}};var nn=class extends Ws{constructor(t,e,r){super(e,t),this.userData.type="PhongMaterial",this.userData.category="Phong",this.userData.layers=r??this._getLayerStack(t?.map)}get layersList(){return this.userData.layers}set layersList(t){this.userData.layers=t}static fromMaterial(t){let e=new nn(t.map?{map:t.map}:{}),r=e.fragment;return r.color.value.copy(t.color),r.alpha.value=t.opacity,e}};import{UniformsLib as Id,UniformsUtils as zS}from"three";var qs=class extends ce{constructor(){super("lambert");this.nodeType="Lambert";this.color=new Ne(5855577),this.emissive=new Ne(0),this.emissiveIntensity=new X(1),this.penumbraSize=new ke(5,.5),this.shadingAlpha=new X(1),this.shadingBlend=new fe(0)}build(e){let r;if(e.define("LAMBERT"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(zS.merge([Id.fog,Id.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","varying vec3 vLightFront;","varying vec3 vIndirectFront;","#ifndef DOUBLE_SIDED"," #define DOUBLE_SIDED","#endif","#ifdef DOUBLE_SIDED"," varying vec3 vLightBack;"," varying vec3 vIndirectBack;","#endif","#include <bsdfs>","#include <lights_pars_begin>","#include <color_pars_vertex>","#include <fog_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
|
|
1136
|
+
`));let n=["#include <beginnormal_vertex>",`
|
|
750
1137
|
#ifndef USE_LAYER_DISPLACE
|
|
751
1138
|
#include <defaultnormal_vertex>
|
|
752
1139
|
#endif
|
|
@@ -762,7 +1149,7 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
762
1149
|
#ifndef USE_LAYER_DISPLACE
|
|
763
1150
|
#include <begin_vertex>
|
|
764
1151
|
#endif
|
|
765
|
-
`];o&&
|
|
1152
|
+
`];o&&n.push(o.code,o.result?"displaced_position = "+o.result+";":""),n.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),n.push(" #include <project_vertex>"," #include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;"," #include <worldpos_vertex>",`
|
|
766
1153
|
vec3 diffuse = vec3( 1.0 );
|
|
767
1154
|
GeometricContext geometry;
|
|
768
1155
|
geometry.position = mvPosition.xyz;
|
|
@@ -836,23 +1223,23 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
836
1223
|
}
|
|
837
1224
|
#pragma unroll_loop_end
|
|
838
1225
|
#endif
|
|
839
|
-
`," #include <shadowmap_vertex>"," #include <fog_vertex>"),
|
|
840
|
-
`)}else{e.mergeUniform({penumbraSize:this.penumbraSize}),this.color===void 0&&(this.color=new
|
|
1226
|
+
`," #include <shadowmap_vertex>"," #include <fog_vertex>"),n.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=n.join(`
|
|
1227
|
+
`)}else{e.mergeUniform({penumbraSize:this.penumbraSize}),this.color===void 0&&(this.color=new Ne(5855577)),this.color.analyze(e,{slot:"color"}),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let o=this.color.flow(e,"c",{slot:"color"}),n=this.emissive.flow(e,"c",{slot:"emissive"}),s=this.emissiveIntensity.flow(e,"f",{slot:"emissive"}),a=this.shadingAlpha.flow(e,"f"),l=this.shadingBlend.flow(e,"i"),c=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,h=this.alpha?this.alpha.flow(e,"f"):void 0;e.requires.transparent=h!==void 0,e.addParsCode([`uniform float penumbraSize[${5}];`,"varying vec3 vViewPosition;","varying vec3 vWPosition;","varying vec3 vLightFront;","varying vec3 vIndirectFront;","#ifndef DOUBLE_SIDED"," #define DOUBLE_SIDED","#endif","#include <normal_pars_fragment>","#ifdef DOUBLE_SIDED"," varying vec3 vLightBack;"," varying vec3 vIndirectBack;","#endif","#include <bsdfs>","#include <lights_pars_begin>","#include <fog_pars_fragment>","#include <shadowmap_pars_fragment>","#include <shadowmask_pars_fragment>","#include <clipping_planes_pars_fragment>","#include <dithering_pars_fragment>"].join(`
|
|
841
1228
|
`));let p=["#include <normal_fragment_begin>",`
|
|
842
1229
|
// NOTE: gl_FrontFacing alternative using face normal estimation.
|
|
843
1230
|
vec3 viewdx = dFdx(vViewPosition);
|
|
844
1231
|
vec3 viewdy = dFdy(vViewPosition);
|
|
845
1232
|
vec3 faceNormal = normalize(cross(viewdx, viewdy));
|
|
846
1233
|
bool isFrontFacing = (dot(normal, faceNormal) >= 0.0);
|
|
847
|
-
`,"#include <clipping_planes_fragment>"];p.push(o.code,"vec3 diffuseColor = "+o.result+";","ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"),h&&p.push(h.code,"#ifdef ALPHATEST","if ( "+h.result+" <= ALPHATEST ) discard;","#endif"),p.push("#ifdef DOUBLE_SIDED"," reflectedLight.indirectDiffuse += ( isFrontFacing ) ? vIndirectFront : vIndirectBack;","#else"," reflectedLight.indirectDiffuse += vIndirectFront;","#endif","#include <lightmap_fragment>","reflectedLight.indirectDiffuse *= BRDF_Lambert( diffuseColor.rgb );","#ifdef DOUBLE_SIDED"," reflectedLight.directDiffuse = ( isFrontFacing ) ? vLightFront : vLightBack;","#else"," reflectedLight.directDiffuse = vLightFront;","#endif","reflectedLight.directDiffuse *= BRDF_Lambert( diffuseColor.rgb ) * getShadowMask();"),
|
|
1234
|
+
`,"#include <clipping_planes_fragment>"];p.push(o.code,"vec3 diffuseColor = "+o.result+";","ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"),h&&p.push(h.code,"#ifdef ALPHATEST","if ( "+h.result+" <= ALPHATEST ) discard;","#endif"),p.push("#ifdef DOUBLE_SIDED"," reflectedLight.indirectDiffuse += ( isFrontFacing ) ? vIndirectFront : vIndirectBack;","#else"," reflectedLight.indirectDiffuse += vIndirectFront;","#endif","#include <lightmap_fragment>","reflectedLight.indirectDiffuse *= BRDF_Lambert( diffuseColor.rgb );","#ifdef DOUBLE_SIDED"," reflectedLight.directDiffuse = ( isFrontFacing ) ? vLightFront : vLightBack;","#else"," reflectedLight.directDiffuse = vLightFront;","#endif","reflectedLight.directDiffuse *= BRDF_Lambert( diffuseColor.rgb ) * getShadowMask();"),n&&p.push(n.code,"reflectedLight.directDiffuse += "+n.result+" * "+s.result+";"),p.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;"),p.push(`
|
|
848
1235
|
if (outgoingLight != diffuseColor) {
|
|
849
1236
|
float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
|
|
850
1237
|
accumAlpha += ( 1.0 - accumAlpha ) * ${a.result} * lightAccu;
|
|
851
1238
|
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${a.result}, ${l.result} );
|
|
852
1239
|
}
|
|
853
1240
|
`),c&&p.push(c.code,`outgoingLight = spe_blend(outgoingLight, ${c.result}, 1.0, SPE_BLENDING_NORMAL);`),h?p.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${h.result} );`):p.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),p.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=p.join(`
|
|
854
|
-
`)}return r}copy(e){return super.copy(e),this.emissiveIntensity=e.emissiveIntensity.clone(),e.color&&(this.color=e.color.clone()),e.position&&(this.position=e.position.clone()),e.afterColor&&(this.afterColor=e.afterColor.clone()),e.alpha&&(this.alpha=e.alpha.clone()),e.shadingAlpha&&(this.shadingAlpha=e.shadingAlpha.clone()),e.shadingBlend&&(this.shadingBlend=e.shadingBlend.clone()),e.emissive&&(this.emissive=e.emissive.clone()),this}};var
|
|
855
|
-
`));let
|
|
1241
|
+
`)}return r}copy(e){return super.copy(e),this.emissiveIntensity=e.emissiveIntensity.clone(),e.color&&(this.color=e.color.clone()),e.position&&(this.position=e.position.clone()),e.afterColor&&(this.afterColor=e.afterColor.clone()),e.alpha&&(this.alpha=e.alpha.clone()),e.shadingAlpha&&(this.shadingAlpha=e.shadingAlpha.clone()),e.shadingBlend&&(this.shadingBlend=e.shadingBlend.clone()),e.emissive&&(this.emissive=e.emissive.clone()),this}};var $s=class extends bt{constructor(e=new qs,r){super(e,e,r);this.type="LambertNodeMaterial",this.fragment=e}get color(){return this.fragment.color}set color(e){this.fragment.color=e}get afterColor(){return this.fragment.afterColor}set afterColor(e){this.fragment.afterColor=e}get alpha(){return this.fragment.alpha}set alpha(e){this.fragment.alpha=e}get shadingAlpha(){return this.fragment.shadingAlpha}set shadingAlpha(e){this.fragment.shadingAlpha=e}get shadingBlend(){return this.fragment.shadingBlend}set shadingBlend(e){this.fragment.shadingBlend=e}get position(){return this.fragment.position}set position(e){this.fragment.position=e}get emissive(){return this.fragment.emissive}set emissive(e){this.fragment.emissive=e}get emissiveIntensity(){return this.fragment.emissiveIntensity}set emissiveIntensity(e){this.fragment.emissiveIntensity=e}};var Xs=class extends $s{constructor(t,e,r){super(e,t),this.userData.type="LambertMaterial",this.userData.category="Lambert",this.userData.layers=r??this._getLayerStack(t?.map)}get layersList(){return this.userData.layers}set layersList(t){this.userData.layers=t}};import{UniformsLib as Pd,UniformsUtils as VS}from"three";var Ks=class extends ce{constructor(){super("toon");this.nodeType="Toon";this.color=new Ne(5855577),this.specular=new Ne(1118481),this.shininess=new X(30),this.penumbraSize=new ke(5,.5),this.shadingAlpha=new X(1),this.shadingBlend=new fe(0)}build(e){let r;if(e.define("TOON"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(VS.merge([Pd.fog,Pd.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
|
|
1242
|
+
`));let n=["#include <beginnormal_vertex>",`
|
|
856
1243
|
#ifndef USE_LAYER_DISPLACE
|
|
857
1244
|
#include <defaultnormal_vertex>
|
|
858
1245
|
#endif
|
|
@@ -868,8 +1255,8 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
868
1255
|
#ifndef USE_LAYER_DISPLACE
|
|
869
1256
|
#include <begin_vertex>
|
|
870
1257
|
#endif
|
|
871
|
-
`];o&&
|
|
872
|
-
`)}else{e.mergeUniform({penumbraSize:this.penumbraSize}),this.color===void 0&&(this.color=new
|
|
1258
|
+
`];o&&n.push(o.code,o.result?"displaced_position = "+o.result+";":""),n.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),n.push(" #include <project_vertex>"," #include <fog_vertex>"," #include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;"," #include <worldpos_vertex>"," #include <shadowmap_vertex>"," #include <fog_vertex>"),n.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=n.join(`
|
|
1259
|
+
`)}else{e.mergeUniform({penumbraSize:this.penumbraSize}),this.color===void 0&&(this.color=new Ne(5855577)),this.color.analyze(e,{slot:"color"}),this.specular.analyze(e),this.shininess.analyze(e),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let o=this.color.flow(e,"c",{slot:"color"}),n=this.specular.flow(e,"c"),s=this.shininess.flow(e,"f"),a=this.shadingAlpha.flow(e,"f"),l=this.shadingBlend.flow(e,"i"),c=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,h=this.alpha?this.alpha.flow(e,"f"):void 0;e.requires.transparent=h!==void 0,e.addParsCode([`uniform float penumbraSize[${5}];`,"varying vec3 vWPosition;","#include <normal_pars_fragment>","#include <gradientmap_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <dithering_pars_fragment>",`
|
|
873
1260
|
varying vec3 vViewPosition;
|
|
874
1261
|
struct ToonMaterial {
|
|
875
1262
|
vec3 diffuseColor;
|
|
@@ -898,15 +1285,15 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
898
1285
|
if (dot(normal, faceNormal) < 0.0) {
|
|
899
1286
|
normal *= -1.0;
|
|
900
1287
|
}
|
|
901
|
-
`," ToonMaterial material;"];p.push(o.code," vec3 diffuseColor = "+o.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );",
|
|
1288
|
+
`," ToonMaterial material;"];p.push(o.code," vec3 diffuseColor = "+o.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );",n.code," vec3 specular = "+n.result+";",s.code," float shininess = max( 0.0001, "+s.result+" );"," float specularStrength = 1.0;"),h&&p.push(h.code,"#ifdef ALPHATEST","if ( "+h.result+" <= ALPHATEST ) discard;","#endif"),p.push("material.diffuseColor = diffuseColor;"),p.push("material.specularColor = specular;","material.specularShininess = shininess;","material.specularStrength = specularStrength;","#include <lights_fragment_begin>","#include <lights_fragment_end>"),p.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular;"),p.push(`
|
|
902
1289
|
if (outgoingLight != diffuseColor) {
|
|
903
1290
|
float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
|
|
904
1291
|
accumAlpha += ( 1.0 - accumAlpha ) * ${a.result} * lightAccu;
|
|
905
1292
|
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${a.result}, ${l.result} );
|
|
906
1293
|
}
|
|
907
1294
|
`),c&&p.push(c.code,`outgoingLight = spe_blend(outgoingLight, ${c.result}, 1.0, SPE_BLENDING_NORMAL);`),h?p.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${h.result} );`):p.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),p.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=p.join(`
|
|
908
|
-
`)}return r}copy(e){return super.copy(e),e.color&&(this.color=e.color.clone()),this.specular=e.specular.clone(),this.shininess=e.shininess.clone(),e.position&&(this.position=e.position.clone()),e.afterColor&&(this.afterColor=e.afterColor.clone()),e.alpha&&(this.alpha=e.alpha.clone()),e.shadingAlpha&&(this.shadingAlpha=e.shadingAlpha.clone()),e.shadingBlend&&(this.shadingBlend=e.shadingBlend.clone()),this}};var
|
|
909
|
-
`));let
|
|
1295
|
+
`)}return r}copy(e){return super.copy(e),e.color&&(this.color=e.color.clone()),this.specular=e.specular.clone(),this.shininess=e.shininess.clone(),e.position&&(this.position=e.position.clone()),e.afterColor&&(this.afterColor=e.afterColor.clone()),e.alpha&&(this.alpha=e.alpha.clone()),e.shadingAlpha&&(this.shadingAlpha=e.shadingAlpha.clone()),e.shadingBlend&&(this.shadingBlend=e.shadingBlend.clone()),this}};var Ys=class extends bt{constructor(e=new Ks,r){super(e,e,r);this.type="ToonNodeMaterial",this.fragment=e}get color(){return this.fragment.color}set color(e){this.fragment.color=e}get afterColor(){return this.fragment.afterColor}set afterColor(e){this.fragment.afterColor=e}get alpha(){return this.fragment.alpha}set alpha(e){this.fragment.alpha=e}get shadingAlpha(){return this.fragment.shadingAlpha}set shadingAlpha(e){this.fragment.shadingAlpha=e}get shadingBlend(){return this.fragment.shadingBlend}set shadingBlend(e){this.fragment.shadingBlend=e}get position(){return this.fragment.position}set position(e){this.fragment.position=e}get specular(){return this.fragment.specular}set specular(e){this.fragment.specular=e}get shininess(){return this.fragment.shininess}set shininess(e){this.fragment.shininess=e}};var Js=class extends Ys{constructor(t,e,r){super(e,t),this.userData.type="ToonMaterial",this.userData.category="Toon",this.userData.layers=r??this._getLayerStack(t?.map)}get layersList(){return this.userData.layers}set layersList(t){this.userData.layers=t}};import{UniformsLib as Ul,UniformsUtils as FS}from"three";var Qs=class extends ce{constructor(){super("standard");this.nodeType="Standard";this.color=new Ne(5855577),this.roughness=new X(.3),this.metalness=new X(0),this.reflectivity=new X(.5),this.penumbraSize=new ke(5,.5),this.shadingAlpha=new X(1),this.shadingBlend=new fe(0)}build(e){let r;if(e.define("STANDARD"),e.requires.lights=!0,e.extensions.derivatives=!0,e.extensions.shaderTextureLOD=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(FS.merge([Ul.fog,Ul.lights])),Ul.LTC_1&&(e.uniforms.ltc_1={value:void 0},e.uniforms.ltc_2={value:void 0}),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
|
|
1296
|
+
`));let n=["#include <beginnormal_vertex>",`
|
|
910
1297
|
#if !defined( USE_LAYER_DISPLACE )
|
|
911
1298
|
#include <defaultnormal_vertex>
|
|
912
1299
|
#endif
|
|
@@ -922,8 +1309,8 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
922
1309
|
#if !defined( USE_LAYER_DISPLACE )
|
|
923
1310
|
#include <begin_vertex>
|
|
924
1311
|
#endif /* !USE_LAYER_DISPLACE */
|
|
925
|
-
`];o&&
|
|
926
|
-
`)}else{e.mergeUniform({penumbraSize:this.penumbraSize});let o={gamma:!0};this.color===void 0&&(this.color=new
|
|
1312
|
+
`];o&&n.push(o.code,o.result?"displaced_position = "+o.result+";":""),n.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),n.push("#include <project_vertex>","#include <fog_vertex>","#include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;","#include <worldpos_vertex>","#include <shadowmap_vertex>"),n.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=n.join(`
|
|
1313
|
+
`)}else{e.mergeUniform({penumbraSize:this.penumbraSize});let o={gamma:!0};this.color===void 0&&(this.color=new Ne(5855577)),this.color.analyze(e,{slot:"color",context:o}),this.roughness.analyze(e),this.metalness.analyze(e),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e),this.reflectivity&&this.reflectivity.analyze(e);let n=this.color.flow(e,"c",{slot:"color",context:o}),s=this.roughness.flow(e,"f"),a=this.metalness.flow(e,"f"),l=this.shadingAlpha.flow(e,"f"),c=this.shadingBlend.flow(e,"i"),h=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,p=this.alpha?this.alpha.flow(e,"f"):void 0,u=this.reflectivity?this.reflectivity.flow(e,"f"):void 0;e.requires.transparent=p!==void 0,e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;",`uniform float penumbraSize[${5}];`,"#include <normal_pars_fragment>","#include <dithering_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <lights_physical_pars_fragment>","#include <shadowmap_pars_fragment>"].join(`
|
|
927
1314
|
`));let d=["#include <clipping_planes_fragment>"," #include <normal_fragment_begin>",`
|
|
928
1315
|
// NOTE: gl_FrontFacing alternative using face normal estimation.
|
|
929
1316
|
vec3 viewdx = dFdx(vViewPosition);
|
|
@@ -932,12 +1319,12 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
932
1319
|
if (dot(normal, faceNormal) < 0.0) {
|
|
933
1320
|
normal *= -1.0;
|
|
934
1321
|
}
|
|
935
|
-
`," PhysicalMaterial material;"," material.diffuseColor = vec3( 1.0 );"];d.push(
|
|
1322
|
+
`," PhysicalMaterial material;"," material.diffuseColor = vec3( 1.0 );"];d.push(n.code," vec3 diffuseColor = "+n.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );",s.code," float roughnessFactor = "+s.result+";",a.code," float metalnessFactor = "+a.result+";"),p&&d.push(p.code,"#ifdef ALPHATEST"," if ( "+p.result+" <= ALPHATEST ) discard;","#endif"),d.push("vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );","float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );"),d.push("material.diffuseColor = diffuseColor * ( 1.0 - metalnessFactor );","material.roughness = max( roughnessFactor, 0.0525 );","material.roughness += geometryRoughness;","material.roughness = min( material.roughness, 1.0 );","material.roughness = clamp( roughnessFactor, 0.04, 1.0 );"),u?d.push(u.code,"material.specularColor = mix( vec3( 0.16 * pow2( "+u.result+" ) ), diffuseColor, metalnessFactor );"):d.push("material.specularColor = mix( vec3( 0.04 ), diffuseColor, metalnessFactor );"),d.push("#include <lights_fragment_begin>"),d.push("#include <lights_fragment_end>"),d.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular;"),d.push(`
|
|
936
1323
|
if (outgoingLight != diffuseColor) {
|
|
937
1324
|
float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
|
|
938
1325
|
accumAlpha += ( 1.0 - accumAlpha ) * ${l.result} * lightAccu;
|
|
939
1326
|
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${l.result}, ${c.result} );
|
|
940
1327
|
}
|
|
941
1328
|
`),h&&d.push(h.code,`outgoingLight = spe_blend(outgoingLight, ${h.result}, 1.0, SPE_BLENDING_NORMAL);`),p?d.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${p.result} );`):d.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),d.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=d.join(`
|
|
942
|
-
`)}return r}copy(e){return super.copy(e),e.color&&(this.color=e.color.clone()),this.roughness=e.roughness.clone(),this.metalness=e.metalness.clone(),e.position&&(this.position=e.position.clone()),e.afterColor&&(this.afterColor=e.afterColor.clone()),e.alpha&&(this.alpha=e.alpha.clone()),e.reflectivity&&(this.reflectivity=e.reflectivity.clone()),e.shadingAlpha&&(this.shadingAlpha=e.shadingAlpha.clone()),e.shadingBlend&&(this.shadingBlend=e.shadingBlend.clone()),this}};var ea=class extends Nt{constructor(e=new Qs,r){super(e,e,r);this.type="StandardNodeMaterial",this.fragment=e}get color(){return this.fragment.color}set color(e){this.fragment.color=e}get afterColor(){return this.fragment.afterColor}set afterColor(e){this.fragment.afterColor=e}get alpha(){return this.fragment.alpha}set alpha(e){this.fragment.alpha=e}get shadingAlpha(){return this.fragment.shadingAlpha}set shadingAlpha(e){this.fragment.shadingAlpha=e}get shadingBlend(){return this.fragment.shadingBlend}set shadingBlend(e){this.fragment.shadingBlend=e}get position(){return this.fragment.position}set position(e){this.fragment.position=e}get roughness(){return this.fragment.roughness}set roughness(e){this.fragment.roughness=e}get metalness(){return this.fragment.metalness}set metalness(e){this.fragment.metalness=e}get reflectivity(){return this.fragment.reflectivity}set reflectivity(e){this.fragment.reflectivity=e}};var ii=class extends ea{constructor(t,e,r){super(e,t),this.userData.type="PhysicalMaterial",this.userData.category="Physical",this.userData.layers=r??this._getLayerStack(t?.map)}get layersList(){return this.userData.layers}set layersList(t){this.userData.layers=t}equals(t){return this.userData.type===t.userData.type&&this.userData.layers.uuid==t.userData.layers.uuid}copy(t){if(t.userData.layers!==void 0&&t.userData.layers instanceof it){let e=t.userData.layers,r=t.fragment;super.copy(t);let o=r.clone();this.fragment=o,this.vertex=o;let i=e.clone(this);this.userData.layers=i,o.shadingAlpha.value=r.shadingAlpha.value,o.shadingBlend.value=r.shadingBlend.value}else super.copy(t);return this}static fromJSON(t,e,r){let o=r.getNode(e.vertex),i=new ii(void 0,o);return i.fromJSON(e,r),i}dispose(){super.dispose()}};import{Color as Vl}from"three";function Ge(n,t){let e;if(typeof n=="string"){let r=t?.getColor(n);r?e=r:(console.warn("Tried to create color layer params with a color key that does not exist in the assets manager"),e=new ft(0,0,0,0))}else return"a"in n?new ft(n.r,n.g,n.b,n.a):new ft(n.r,n.g,n.b,1);return e}import{Matrix3 as md,Texture as Fl,Vector2 as cn,Vector3 as Vr,Vector4 as fd}from"three";function gd(n,t){switch(n.data.type){case"light":return Vt(n);case"fresnel":return MS(n,t);case"gradient":return PS(n);case"depth":return IS(n);case"normal":return OS(n);case"noise":return AS(n,t);case"texture":return DS(n,t);case"rainbow":return BS(n);case"transmission":return ES(n,t);case"matcap":return _S(n,t);case"displace":return GS(n);case"color":default:return TS(n,t)}}function yd(n){return{type:n.data.type}}function Vt(n){let{alpha:t,mode:e}=n.data;return{...yd(n),alpha:t,mode:e}}function TS(n,t){return{...Vt(n),color:Ge(n.data.color,t)}}function MS(n,t){let{bias:e,scale:r,intensity:o,factor:i,color:s}=n.data;return{...Vt(n),color:Ge(s,t),bias:e,scale:r,intensity:o,factor:i}}function PS(n){let{gradientType:t,smooth:e,colors:r,steps:o,angle:i,offset:s,morph:a}=n.data;return{...Vt(n),gradientType:t,smooth:e,colors:r.map(l=>new fd(l[0],l[1],l[2],l[3])),num:r.length,steps:o,offset:new cn(...s),morph:new cn(...a),angle:i}}function IS(n){let{gradientType:t,near:e,far:r,isVector:o,isWorldSpace:i,origin:s,direction:a,colors:l,steps:c,smooth:h,num:p}=n.data;return{...Vt(n),gradientType:t,near:e,far:r,isVector:o,isWorldSpace:i,origin:new Vr(...s),direction:a?new Vr(...a):new Vr(1,0,0),num:p,colors:l.map(u=>new fd(u[0],u[1],u[2],u[3])),steps:c,smooth:h}}function OS(n){let{cnormal:t}=n.data;return{...Vt(n),cnormal:new Vr(t[0],t[1],t[2])}}function AS(n,t){let{data:e}=n;return{...Vt(n),scale:e.scale,move:e.move,fA:new cn(...e.fA),fB:new cn(...e.fB),size:new Vr(...e.size),distortion:new cn(...e.distortion),colorA:Ge(e.colorA,t),colorB:Ge(e.colorB,t),colorC:Ge(e.colorC,t),colorD:Ge(e.colorD,t),noiseType:e.noiseType}}function DS(n,t){let{projection:e,axis:r,side:o,crop:i,size:s}=n.data,{image:a,wrapping:l,repeat:c,offset:h}=n.data.texture,p=new Fl,u;if(typeof a=="string")u=t?.getImage(a);else{let d=new Image;d.src=ni(a.data),d.onload=()=>{t?.onImageLoad&&t?.onImageLoad()},u=d}return p.image=u,p.repeat.set(c[0],c[1]),p.offset.set(h[0],h[1]),p.wrapS=p.wrapT=l,{...Vt(n),texture:p,mat:new md().setUvTransform(h[0],h[1],c[0],c[1],0,0,0),crop:i,projection:e,axis:["x","y","z"].indexOf(r),side:[2,0,1].indexOf(o),size:s}}function BS(n){let{data:t}=n;return{...Vt(n),filmThickness:t.filmThickness,movement:t.movement,wavelengths:new Vr(...t.wavelengths),noiseStrength:t.noiseStrength,noiseScale:t.noiseScale,offset:new Vr(...t.offset)}}function ES(n,t){let{data:e}=n;return{...Vt(n),thickness:e.thickness,ior:e.ior,roughness:e.roughness,transmissionSamplerMap:t.transmissionSamplerMap,transmissionDepthMap:t.transmissionDepthMap}}function _S(n,t){let e=new Fl,{image:r}=n.data.texture,o;if(typeof r=="string")o=t?.getImage(r);else{let s=new Image;s.src=ni(r.data),s.onload=()=>{t?.onImageLoad&&t?.onImageLoad()},o=s}e.image=o;let i=16777215;return{...Vt(n),color:i,texture:e}}function GS(n){let{data:t}=n,e={...yd(n),intensity:t.intensity};if(t.displacementType==="noise")return{...e,offset:new Vr(...t.offset),scale:t.scale,movement:t.movement,noiseType:t.noiseType};{let r=new Fl,o=new md().setUvTransform(0,0,1,1,0,0,0);return{...e,texture:r,mat:o,crop:t.crop}}}function xd(n,t,e){if(e.type==="displace"&&(n==="intensity"||n==="visible")){let r=t.uniforms[`f${t.id}_intensity`];return r?(r.value=e.intensity*(e.visible?1:0),r):void 0}if(e.type!=="displace"&&(n==="alpha"||n==="visible")){let r=t.uniforms[`f${t.id}_alpha`];return r?(r.value=e.alpha*(e.visible?1:0),r):void 0}}import{Color as Sd,Vector4 as zS}from"three";var si;(t=>{function n(e){return new Sd(e.x,e.y,e.z).getHex()}t.getHex=n})(si||(si={}));var bd;(t=>{function n(e){return new zS(e.r,e.g,e.b,e.a)}t.getThreeVector4=n})(bd||(bd={}));var vd;(e=>{function n(r,o){r.setRGB(o.r,o.g,o.b)}e.setThreeColor=n;function t(r){return new Sd(r.r,r.g,r.b).getHex()}e.getHex=t})(vd||(vd={}));function hn(n,t){return typeof n=="string"?t.getMaterialOrDeletedPlaceholder(n):Ul(n,t)}function wd(n,t){return n.map(e=>hn(e,t))}function Ul(n,t){let e=n.layers??Qr.defaultTwoLayerData("phong").layers,r=RS(e),o;switch(r.category){case"basic":o=new Xe;break;case"lambert":{o=new ri;break}case"toon":{o=new oi;break}case"physical":o=new ii;break;case"phong":default:{o=new ct;break}}o.name=n.name??"Untitled Material";let i=o.userData.layers;FS(i);for(let s=e.length-1;s>=0;s--)VS(i,e[s],t);switch(r.category){case"basic":break;case"lambert":{let l=o,h=Ge(r.emissive,t);h instanceof Vl?l.emissive.value=h:l.emissive.value.setHex(si.getHex(h));break}case"toon":{let l=o,c=r;l.shininess.value=c.shininess;let h=Ge(c.specular,t);h instanceof Vl?l.specular.value=h:l.specular.value.setHex(si.getHex(h));break}case"physical":let s=o,a=r;s.metalness.value=a.metalness,s.roughness.value=a.roughness,s.reflectivity.value=a.reflectivity;break;case"phong":default:{let l=o,c=r;l.shininess.value=c.shininess;let h=Ge(c.specular,t);h instanceof Vl?l.specular.value=h:l.specular.value.setHex(si.getHex(h));break}}return o.penumbraSizeNode=t.penumbraSizeNode,i.blendColors(),i.blendAfterColors(),i.blendPositions(),o}function RS(n){for(let t of n)if(t.data.type==="light")return t.data;return{type:"light",category:"basic",visible:!0,alpha:1,mode:0}}function FS(n){for(let t of n.getLayers())n.removeLayer(t.id)}function VS(n,t,e){let r=gd(t,e);r.type==="transmission"&&(r.transmissionSamplerMap=e?.transmissionSamplerMap,r.transmissionDepthMap=e?.transmissionDepthMap);let o=n.addLayer(r);o.uuid=t.id;for(let i in t.data)xd(i,o,t.data)}import{Mesh as ZS,Matrix4 as QS}from"three";import{Matrix4 as kl}from"three";import{Box3 as Pd,Line3 as kS,Matrix4 as jl,Vector3 as At}from"three";import{HemisphereLight as Nd}from"three";var ta=n=>"isEntity"in n,or=n=>"isAbstractMesh"in n,ir=n=>n!==null&&n.isBooleanMesh,Ld=n=>n.objectType==="CombinedCamera";var vr=n=>"objectHelper"in n;function US(n,t){let e=!1;t.position&&(n.position.fromArray(t.position),e=!0),t.rotation&&(n.rotation.fromArray(t.rotation),e=!0),t.scale&&(e=!0,n.scale.fromArray(t.scale)),t.hiddenMatrix!==void 0&&"hiddenMatrix"in n&&(e=!0,n.hiddenMatrix.fromArray(t.hiddenMatrix??Or.identity)),e&&(n.updateMatrix(),ir(n.parent)&&or(n)&&n.invalidateDownstreamBooleanData(!0).recomputeBoolean()),t.position&&t.rotation&&t.scale&&t.hiddenMatrix!==void 0&&n.updateWorldMatrix(!1,!0),n.objectType==="CombinedCamera"&&(t.isUpVectorFlipped!==void 0&&(n.isUpVectorFlipped=t.isUpVectorFlipped),n.updateUp())}function jS(n,t){US(n,t),t.name!==void 0&&(n.name=t.name),t.visible!==void 0&&(n.isEntity?n.visibility=t.visible:n.visible=t.visible)}function Cd(n,t,e){jS(n,t),t.color!==void 0&&(n.color=Ge(t.color,e)),t.intensity!==void 0&&(n.intensity=t.intensity),t.shadows!==void 0&&!(n instanceof Nd)&&(n.castShadow=t.shadows),n.shadow&&!(n instanceof Nd)&&t.depth!==void 0&&(n.shadow.camera.far=t.depth,n.shadow.needsUpdate=!0),t.helper!==void 0&&vr(n)&&(n.enableHelper=t.helper,n.gizmos.shadowmap.visible=t.helper)}function Td(n,t){n.shadow.camera.right=t/2,n.shadow.camera.left=-t/2,n.shadow.camera.top=t/2,n.shadow.camera.bottom=-t/2,n.shadow.needsUpdate=!0}var ai=new Pd,nr=new At,sr=new At,li=new jl,Id=[new At(-1,1,1),new At(-1,-1,1),new At(1,-1,1),new At(1,1,1),new At(-1,1,-1),new At(-1,-1,-1),new At(1,-1,-1),new At(1,1,-1)],HS=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],qS=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]];function WS(n,t,e=0,r=t.count){let o=1/0,i=1/0,s=1/0,a=-1/0,l=-1/0,c=-1/0;for(let h=e;h<r;h++){let p=t.getX(h),u=t.getY(h),d=t.getZ(h);p<o&&(o=p),u<i&&(i=u),d<s&&(s=d),p>a&&(a=p),u>l&&(l=u),d>c&&(c=d)}return n.min.set(o,i,s),n.max.set(a,l,c),n}var Md=(n,t,e,r)=>{if(or(n)){let o=n.geometry.userData.parameters,i=n.geometry.getAttribute("position");n.geometry.userData.type==="SubdivGeometry"?nr.copy(n.originalGeometry.boundingSphere.center):i!==void 0&&(WS(ai,i,n.geometry.drawRange.start,n.geometry.drawRange.count<1/0?n.geometry.drawRange.count:i.count),ai.getCenter(nr)),n.forceComputeSize?ai.getSize(sr).multiplyScalar(.5):sr.set(o.width,o.height,o.depth??0).multiplyScalar(.5)}else if(vr(n)&&r===!0){let o=n.geometryHelper.getAttribute("position");ai.setFromArray(o.array),ai.getCenter(nr),ai.getSize(sr).multiplyScalar(.5)}else nr.setScalar(0),sr.setScalar(0);li.copy(t).multiply(n.matrixWorld),sr.x===0&&sr.y===0&&sr.z===0?e.push(new At(nr.x,nr.y,nr.z).applyMatrix4(li)):Id.forEach(o=>{e.push(o.clone().multiply(sr).add(nr).applyMatrix4(li))})},pn=class extends Pd{constructor(){super(...arguments);this.matrix=new jl;this.vertices=[];this.faces=[];this.edges=[];this.centerEdges=[]}copy(e){return super.copy(e),this.matrix.copy(e.matrix),this.vertices=e.vertices.map(r=>r.clone()),this.faces=e.faces.map(r=>r.clone()),this.edges=e.edges.map(r=>r.clone()),this.centerEdges=e.centerEdges.map(r=>r.clone()),this}setFromObjectSize(e,r=!1){e.updateWorldMatrix(!1,r),this.makeEmpty(),this.matrix.copy(e.matrixWorld);let o=new jl().copy(e.matrixWorld).invert();return this.expandByObjectSize(e,o,r)}expandByObjectSize(e,r,o=!1){let i=[];return o===!0?e.traverseEntity(s=>{s.visible&&Md(s,r,i,e.enableHelper===!0)}):Md(e,r,i,e.enableHelper===!0),this.setFromPoints(i)}getCenter(e){return e=super.getCenter(e),e.applyMatrix4(this.matrix),e}getPositionToCenter(e){return e=super.getCenter(e),e.applyMatrix4(li.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(sr).multiplyScalar(.5),this.getCenter(nr),li.copy(this.matrix).setPosition(nr),this.vertices=Id.map(e=>e.clone().multiply(sr).applyMatrix4(li))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=HS.map(([e,r])=>new kS(this.vertices[e],this.vertices[r])),this.centerEdges=this.edges.map(e=>e.getCenter(new At))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=qS.map(([e,r])=>this.vertices[e].clone().add(this.vertices[r]).multiplyScalar(.5))}};import{Object3D as $S,Matrix4 as JS,Light as YS}from"three";function un(n){let t=[];for(let e in n){let r=n[e];delete r.metadata,t.push(r)}return t}function KS(n){let t=[];for(let e in n)t.push(n[e]);return t}var ra=n=>class extends n{hasEntityChild(){return this.children.some(e=>ta(e))}isDescendantOf(e){e instanceof $S&&(e=e.uuid);let r=this;for(;r.parent;){if(r.parent.uuid===e)return!0;r=r.parent}return!1}attach(e,r){this.updateWorldMatrix(!0,!1);let o=new JS().copy(this.matrixWorld).invert();return e.parent!==null&&(e.parent.updateWorldMatrix(!0,!1),o.multiply(e.parent.matrixWorld)),ta(e)?e.hiddenMatrix.premultiply(o):e.applyMatrix4(o),e.updateWorldMatrix(!1,!1),this.add(e),r!==void 0&&(this.children.pop(),this.children.splice(r,0,e)),this}copy(e,r=!0){if(this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.rotation.order=e.rotation.order,this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.userData=JSON.parse(JSON.stringify(e.userData)),r===!0)for(let o=0;o<e.children.length;o++){let i=e.children[o];this.add(i.clone())}return this}toJSON(e){let r=e===void 0,o={object:{uuid:"",objectType:""}};e===void 0&&(e={geometries:{},materials:{},textures:{},images:{},interactionStates:{},nodes:{}},o.metadata={version:1.5,type:"Object",generator:"Object3D.toJSON"});let i={uuid:this.uuid,objectType:this.type};if(this.name!==""&&(i.name=this.name),i.matrix=this.matrix.toArray(),this.castShadow===!0&&(i.castShadow=!0),this.receiveShadow===!0&&(i.receiveShadow=!0),this.visible===!1&&(i.visible=!1),this.frustumCulled===!1&&(i.frustumCulled=!1),this.renderOrder!==0&&(i.renderOrder=this.renderOrder),i.layers=this.layers.mask,JSON.stringify(this.userData)!=="{}"&&(i.userData=this.userData),this.children.length>0){i.children=[];for(let s of this.children)(ta(s)||s instanceof YS)&&i.children.push(s.toJSON(e).object)}if(r){let s=un(e.geometries),a=un(e.materials),l=un(e.textures),c=un(e.images),h=un(e.interactionStates),p=KS(e.nodes);s.length>0&&(o.geometries=s),a.length>0&&(o.materials=a),l.length>0&&(o.textures=l),c.length>0&&(o.images=c),h.length>0&&(o.interactionStates=h),p.length>0&&(o.nodes=p)}return o.object=i,o}fromJSON(e){return this.uuid=e.uuid,e.name!==void 0&&(this.name=e.name),e.matrix!==void 0?(this.matrix.fromArray(e.matrix),e.matrixAutoUpdate!==void 0&&(this.matrixAutoUpdate=e.matrixAutoUpdate),this.matrixAutoUpdate&&this.matrix.decompose(this.position,this.quaternion,this.scale)):(e.position!==void 0&&this.position.fromArray(e.position),e.rotation!==void 0&&this.rotation.fromArray(e.rotation),e.quaternion!==void 0&&this.quaternion.fromArray(e.quaternion),e.scale!==void 0&&this.scale.fromArray(e.scale)),this.castShadow=e.castShadow!==void 0,this.receiveShadow=e.receiveShadow!==void 0,e.visible!==void 0&&(this.visible=e.visible),e.frustumCulled!==void 0&&(this.frustumCulled=e.frustumCulled),e.renderOrder!==void 0&&(this.renderOrder=e.renderOrder),e.layers!==void 0&&(this.layers.mask=e.layers),e.userData!==void 0&&(this.userData=e.userData),this}};var Dt=n=>"isEntity"in n,Od=n=>"isAbstractMesh"in n,Bt=n=>class extends ra(n){constructor(){super(...arguments);this.objectType="";this.isEntity=!0;this.raycastLock=!1;this.scaleLock=!1;this.hiddenMatrix=new kl;this._singleBBox=new pn;this._recursiveBBox=new pn;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this.forceComputeSize=!1}set visibility(r){this.visible=r;for(let o of this.children)Dt(o)&&o.traverseEntity(i=>{vr(i)&&i.visible&&(i.objectHelper.visible=r)})}get visibility(){return this.visible}get singleBBox(){return this.singleBBoxNeedsUpdate&&(this.singleBBoxNeedsUpdate=!1,this._singleBBox.setFromObjectSize(this,!1),this._singleBBox.computeVertices(),this._singleBBox.computeEdges(),this._singleBBox.computeFaces()),this._singleBBox}get recursiveBBox(){return this.recursiveBBoxNeedsUpdate&&(this.recursiveBBoxNeedsUpdate=!1,this._recursiveBBox.setFromObjectSize(this,!0),this._recursiveBBox.computeVertices(),this._recursiveBBox.computeEdges(),this._recursiveBBox.computeFaces()),this._recursiveBBox}resetBBoxNeedsUpdate(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0,this.traverseAncestors(r=>{Dt(r)&&(r.singleBBoxNeedsUpdate=!0,r.recursiveBBoxNeedsUpdate=!0)}),this.traverseEntity(r=>{r.singleBBoxNeedsUpdate=!0,r.recursiveBBoxNeedsUpdate=!0})}traverseEntity(r){r(this);for(let o of this.children)Dt(o)&&o.traverseEntity(r)}updateMatrixWorld(r){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||r)&&(this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),this.matrixWorldNeedsUpdate=!1,r=!0);for(let o of this.children)o.updateMatrixWorld(r)}updateWorldMatrix(r,o){let i=this.parent;if(r&&i!==null&&i.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),o)for(let s of this.children)s.updateWorldMatrix(!1,!0)}shallowClone(r){return new this.constructor().shallowCopy(this,r)}shallowCopy(r,o=!0){if(super.copy(r,!1),this.raycastLock=r.raycastLock,this.scaleLock=r.scaleLock,this.hiddenMatrix.copy(r.hiddenMatrix),o===!0)for(let i of r.children)Dt(i)&&this.add(i.shallowClone());return this}clone(r){return new this.constructor().copy(this,r)}copy(r,o=!0){if(super.copy(r,!1),this.raycastLock=r.raycastLock,this.scaleLock=r.scaleLock,this.hiddenMatrix.copy(r.hiddenMatrix),o===!0)for(let i of r.children)Dt(i)&&this.add(i.clone());return this}keepChildrenMatrixWorld(){let r=new kl,o=this.matrixWorld.clone();this.updateWorldMatrix(!1,!1),r.copy(this.matrixWorld).invert(),r.multiply(o);for(let i of this.children)Dt(i)&&i.hiddenMatrix.premultiply(r)}toJSON(r){let o=super.toJSON(r),i=o.object;return this.raycastLock===!0&&(i.raycastLock=!0),this.scaleLock===!0&&(i.scaleLock=!0),i.hiddenMatrix=this.hiddenMatrix.toArray(),o}fromJSON(r){return super.fromJSON(r),r.raycastLock!==void 0&&(this.raycastLock=r.raycastLock),r.scaleLock!==void 0&&(this.scaleLock=r.scaleLock),this.hiddenMatrix.fromArray(r.hiddenMatrix),this}fromObject3D(r){let o=r.children;return r.children=[],Object.assign(r,{raycastLock:!1,scaleLock:!1,hiddenMatrix:new kl}),this.copy(r),r.children=o,this}toObjectTransformState(r=[]){this.updateWorldMatrix(!0,!1);let o={position:this.position.toArray(),rotation:[this.rotation.x,this.rotation.y,this.rotation.z],scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};return Io(o,r)}fromObjectTransformState(r){return r.position&&this.position.fromArray(r.position),r.rotation&&this.rotation.fromArray(r.rotation),r.scale&&this.scale.fromArray(r.scale),r.hiddenMatrix&&this.hiddenMatrix.fromArray(r.hiddenMatrix),this.updateMatrix(),this}toState(r=[]){let o={name:this.name,visible:this.visible,raycastLock:this.raycastLock,...this.toObjectTransformState(r)};return Io(o,r)}fromState(r,o){return r.name&&(this.name=r.name),r.raycastLock!==void 0&&(this.raycastLock=r.raycastLock),r.type!=="OrthographicCamera"&&r.type!=="PerspectiveCamera"&&(this.matrixAutoUpdate=!1),r.visible!==void 0&&(this.visibility=r.visible),this.fromObjectTransformState(r),this}};import{Object3D as XS,Vector3 as dn,Euler as Ad,MathUtils as Ur}from"three";var io=class extends XS{constructor(e,r={}){super();this.object=e;let o=e.recursiveBBox.getSize(new dn),i=.1;this.parameters=Xn.defaultData(o.toArray(),i),Jr(this.parameters,r),this.update(),this.setHideBase(this.parameters.hideBase)}refreshMaterial(){if("material"in this.object)for(let e of this.children)e.material=this.object.material}setHideBase(e){if("material"in this.object){if(Array.isArray(this.object.material)){if(this.children.length>0){for(let r of this.object.material)r.visible=!0;if(e){let r=this.object.material.map(o=>o.clone());for(let o of this.children)o.material=r}else for(let r of this.children)r.material=this.object.material}for(let r of this.object.material)r.visible=!e}else{if(this.children.length>0)if(this.object.material.visible=!0,e){let r=this.object.material.clone();for(let o of this.children)o.material=r}else for(let r of this.children)r.material=this.object.material;this.object.material.visible=!e}this.parameters.hideBase=e}}update(){switch(this._updateCount(),this.parameters.type){case"radial":this._updateRadial(this.parameters);break;case"linear":this._updateLinear(this.parameters);break;case"grid":this._updateGrid(this.parameters)}this.children.forEach(e=>e.updateMatrix())}_updateCount(){let e=this.parameters.type==="grid"?this.parameters.grid.count[0]*this.parameters.grid.count[1]*this.parameters.grid.count[2]:this.parameters.count;if(this.children.length!==e)if(this.children.length<e)for(let r=0,o=e-this.children.length;r<o;++r){let i=this.object.shallowClone(!1);i.visible=!0,this.add(i),this.parameters.hideBase&&this.setHideBase(!0)}else for(let r=0,o=this.children.length-e;r<o;++r)this.remove(this.children[0])}_updateRadial(e){let r=e.radial,o=r.start*Ur.DEG2RAD,i=r.end*Ur.DEG2RAD,s=o-i,a=new Ad(r.rotation[0]*Ur.DEG2RAD,r.rotation[1]*Ur.DEG2RAD,r.rotation[2]*Ur.DEG2RAD),l;switch(r.axis){case"z":l=new dn(0,0,1);break;case"y":l=new dn(0,1,0);break;default:case"x":l=new dn(1,0,0);break}for(let[c,h]of this.children.entries()){h.hiddenMatrix.identity(),h.scale.x=r.scale[0],h.scale.y=r.scale[1],h.scale.z=r.scale[2],h.position.setScalar(0);let p=s/e.count*c-o;switch(r.axis){case"x":h.rotation.set(0,p,0);break;case"y":h.rotation.set(0,0,p);break;case"z":h.rotation.set(p,0,0);break}h.translateOnAxis(l,r.radius),h.position.x+=r.position[0],h.position.y+=r.position[1],h.position.z+=r.position[2],r.alignment===!0?(h.rotation.x+=a.x,h.rotation.y+=a.y,h.rotation.z+=a.z):h.rotation.copy(a)}}_updateLinear(e){if(e.type!=="linear")throw new Error;let r=e.linear,o=new Ad(r.rotation[0]*Ur.DEG2RAD,r.rotation[1]*Ur.DEG2RAD,r.rotation[2]*Ur.DEG2RAD);for(let[i,s]of this.children.entries())s.hiddenMatrix.identity(),s.scale.x=1+(r.scale[0]-1)*i,s.scale.y=1+(r.scale[1]-1)*i,s.scale.z=1+(r.scale[2]-1)*i,s.rotation.x=o.x*i,s.rotation.y=o.y*i,s.rotation.z=o.z*i,s.position.x=r.position[0]*i,s.position.y=r.position[1]*i,s.position.z=r.position[2]*i}_updateGrid(e){let r=0,o=e.grid;if(o.useCenter===!0){let i={x:o.count[0]%2===0?2:1,y:o.count[1]%2===0?2:1,z:o.count[2]%2===0?2:1},s=new dn(o.size[0]*(o.count[0]-i.x)*.5,o.size[1]*(o.count[1]-i.y)*.5,o.size[2]*(o.count[2]-i.z)*.5);for(let a=0;a<o.count[0];a++)for(let l=0;l<o.count[1];l++)for(let c=0;c<o.count[2];c++){let h=this.children[r++];h.hiddenMatrix.identity(),h.scale.setScalar(1),h.rotation.set(0,0,0),h.position.x=o.size[0]*a-s.x,h.position.y=o.size[1]*l-s.y,h.position.z=o.size[2]*c-s.z}}else for(let i=0;i<o.count[0];i++)for(let s=0;s<o.count[1];s++)for(let a=0;a<o.count[2];a++){let l=this.children[r++];l.hiddenMatrix.identity(),l.scale.setScalar(1),l.rotation.set(0,0,0),l.position.x=o.size[0]*i,l.position.y=-o.size[1]*s,l.position.z=-o.size[2]*a}}fromJSON(e){return this}toJSON(){return{}}fromClonerState(e){return e.hideBase!==void 0&&this.setHideBase(e.hideBase),Jr(this.parameters,e),this.update(),this}};var Ue=class extends Bt(ZS){constructor(e,r){super(e,r);this.isAbstractMesh=!0;this.isBooleanMesh=!1;this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new QS;this.booleanExclude=null;Array.isArray(r)&&(this.selectedMaterial=0,e.groups.length===0&&e.addGroup(0,e.getAttribute("position").count,0))}get cloner(){return this._cloner}set cloner(e){this._cloner&&this.remove(this._cloner),e&&this.add(e),this._cloner=e}getSelectedMaterial(e){return Array.isArray(this.material)?(this.selectedMaterial===void 0&&(this.selectedMaterial=e??0),this.material[e??this.selectedMaterial]):this.material}setSelectedMaterial(e,r){Array.isArray(this.material)?(this.selectedMaterial===void 0&&(this.selectedMaterial=r??0),r=r??this.selectedMaterial,this.material[r].dispose(),this.material[r]=e):(this.material.dispose(),this.material=e)}updateGeometry(e){let r=this.geometry,o=Hl[r.userData.type],i=this.objectType==="NonParametric"?Object.assign({},r.userData,{geometry:r}):r.userData,s=o.build(o.normalizeInputs(e,i)),a=r.uuid;if(this.geometry.dispose(),this.geometry=s,this.geometry.uuid=a,this.geometry.computeBoundingSphere(),this.cloner)for(let l of this.cloner.children)l.geometry=this.geometry}resizeGeometry(e,r,o){Fs.resizeGeometry(this.geometry,{width:e,height:r,depth:o})}shallowClone(e){return new this.constructor(this.geometry,this.material).shallowCopy(this,e)}clone(e){let r=this.objectType==="NonParametric"?Object.assign({},this.geometry.userData,{geometry:this.geometry.clone()}):this.geometry.userData,o=mn(r),i=Array.isArray(this.material)?this.material.map(s=>s.clone()):this.material.clone();return new this.constructor(o,i).copy(this,e)}copy(e,r=!0){return super.copy(e,r),e.cloner&&(this.cloner=new io(e,e.cloner.parameters),this.add(this.cloner)),this}setFromClonerState(e){e===null?this.cloner=void 0:(this.cloner===void 0&&(this.cloner=new io(this)),this.cloner.fromClonerState(e))}fromState(e,r){return super.fromState(e),e.type==="Mesh"&&(this.setFromClonerState(e.cloner),this.castShadow=e.castShadow??!0,this.receiveShadow=e.receiveShadow??!0,this.booleanExclude=e.booleanExclude??null),this}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(Ut.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),ir(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)or(e)&&(e.freeBooleanPointer(),ir(e)&&e.invalidateUpstreamBooleanData())}};var ow=new ql(0,0,1),Dd=new ql,Bd=new ql,Ed=new rw,jr=class extends Ue{constructor(e=Je.create({}),r=new Xe({side:ew})){super(e,r);this.recursiveSelection=!1;this.objectType="VectorObject";this.eventDispatcher=new tw;this._onShapeUpdate=()=>{this.updateGeometry({}),this.geometry.computeBoundingSphere(),this.geometry.computeBoundingBox()};this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!0,this.shape=e.userData.shape,this.shape.eventDispatcher?.addEventListener("update",this._onShapeUpdate)}toJSON(e){let r=super.toJSON(e);return r.object.objectType="VectorObject",r}fromState(e){return super.fromState(e),this.shape.update(),this}setHelperVisibility(){}updateGeometry(e){if(super.updateGeometry(e),"userData"in this.geometry){let r=this.geometry.userData.parameters;this.eventDispatcher.dispatchEvent({type:"geometryUpdate",parameters:r})}}setShape(e){this.shape&&this.shape.eventDispatcher?.removeEventListener("update",this._onShapeUpdate),this.shape=e,this.shape.eventDispatcher?.addEventListener("update",this._onShapeUpdate)}updateWorldMatrix(e,r){super.updateWorldMatrix(e,r),Ed.getNormalMatrix(this.matrixWorld),Dd.copy(ow).applyMatrix3(Ed).normalize(),Bd.setFromMatrixPosition(this.matrixWorld),this.shape.plane.setFromNormalAndCoplanarPoint(Dd,Bd)}clone(e){let r=this.shape.clone(),o=this.material.clone(),i=this.geometry.userData,s=Je.create(Object.assign({},i,{shape:r})),a=new jr(s,o).copy(this,e);return a.shape=r,r.update(),a}raycast(e,r){Ue.prototype.raycast.call(this,e,r)}};function oa(n,t){return nw(n)}function nw(n){let t={parameters:n,type:n.type};if(n.type==="VectorGeometry"){let r=be.createFromState(n.shape,n.width,n.height);t.shape=r}else n.type==="NonParametricGeometry"&&(n.data.groups&&n.data.groups.forEach(r=>r.materialIndex=Math.max(r.materialIndex??0,0)),t.geometry=new iw().parse(n));let e;try{e=mn(t)}catch(r){console.error(r)}if(!e){let r=be.createFromState(zo.defaultData(),100,100);t.shape=r,e=mn(t)}return e}var ue;Vs.then(n=>{ue=n});var zd=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),Rd=new Uint32Array([0,1,2,3]),Fd=new Uint8Array([4]),Et=class{static build(n,t,e,r,o){let i,s,a,l=n?.phongAngle??t?.phongAngle??35;if(r===!1&&(l=-1),n.positionWASM!==void 0){e&&e!==0&&(ue.free_bvh(e),ue.free_subdivision_surface(e));try{i=Et.allocate(n,o)}catch(c){console.error(c,n),i=Et.allocate({positionWASM:zd,indexWASM:Rd,verticesPerFaceWASM:Fd},o)}ue.set_destination_refinement_level(i,0),s=Et.buildLevel(i,!0,l)}else i=e,n.phongAngle!==void 0&&(s=Et.buildLevel(i,!0,l));return n.subdivisions!==void 0&&(ue.set_destination_refinement_level(i,n.subdivisions),n.subdivisions>0?a=Et.buildLevel(i,!1,l):a=null),{subdivPointer:i,originalGeometry:s,subdividedGeometry:a}}static primitiveToQuads(n,t){n.widthSegments>16&&(n.widthSegments=16),n.heightSegments>16&&(n.heightSegments=16),n.depthSegments>16&&(n.depthSegments=16),n.radialSegments>16&&(n.radialSegments=16),n.type==="DodecahedronGeometry"&&(n.detail=0);let e=n.shape!==void 0?t.geometry:oa(n),r,o,i,s;return{positions:r,triIndices:s}=Xl(e.getAttribute("position"),e.getIndex()),{indices:o,verticesPerFace:i}=Zl(r,s,e),{positions:r,indices:o,verticesPerFace:i}}static allocate(n,t){let e,r,o,i=[],s=[];n.positionWASM&&n.positionWASM.length>0?(e=n.positionWASM,r=n.indexWASM,o=n.verticesPerFaceWASM):(e=zd,r=Rd,o=Fd);let a=e.length,l=r.length,c=o.length,h=e.length+i.length+s.length,p=r.length+o.length,u=h*Float32Array.BYTES_PER_ELEMENT+p*Uint32Array.BYTES_PER_ELEMENT,d=h*Float32Array.BYTES_PER_ELEMENT,m=p*Uint32Array.BYTES_PER_ELEMENT,g=ue._malloc(u),x=new Float32Array(ue.HEAPF32.buffer,g,h),y=new Uint32Array(ue.HEAPU32.buffer,g+d,p);x.set(e,0),x.set(i,e.length),x.set(s,e.length+i.length),y.set(r,0),y.set(o,r.length);let b;n?.scaleBaked?.some(S=>S!==1)&&(b=new sw().makeScale(...n.scaleBaked)),t&&(b?b.premultiply(t):b=t);let C=b?ue.alloc_subdivision_surface2(g,a,g+d,l,g+d+r.length*Uint32Array.BYTES_PER_ELEMENT,c,b.elements):ue.alloc_subdivision_surface(g,a,g+d,l,g+d+r.length*Uint32Array.BYTES_PER_ELEMENT,c);return ue._free(g),C}static buildLevel(n,t,e,r,o){let i=o?ue.get_mesh_data2(n,t?ue.Level.CONTROL:ue.Level.REFINED,e,o.elements):ue.get_mesh_data(n,t?ue.Level.CONTROL:ue.Level.REFINED,e),s=8,a=ue.HEAPU32.subarray(i>>2,(i>>2)+s),l=a.subarray(4,4+4),c=0,h=ue.HEAPU32[a[c]>>2],p=ue.HEAPF32.subarray(h>>2,(h>>2)+l[c]);c++;let u=ue.HEAPU32[a[c]>>2],d=ue.HEAPF32.subarray(u>>2,(u>>2)+l[c]);c++;let m=ue.HEAPU32[a[c]>>2],g=ue.HEAPU32.subarray(m>>2,(m>>2)+l[c]);c++;let x=ue.HEAPU32[a[c]>>2],y=ue.HEAPU32.subarray(x>>2,(x>>2)+l[c]);if(c++,r===void 0){let b=new _d;if(b.setIndex(new Wl(y,1)),b.setAttribute("position",new $l(p,3)),b.setAttribute("normal",new $l(d,3)),t){b.setAttribute("faceMap",new Wl(g,1));let C=new Float32Array(d.length/3*4).fill(0);b.setAttribute("color",new Gd(C,4))}return ue.free_mesh_data(i),b.userData.type="SubdivGeometry",b}r.getAttribute("position").copyArray(p),r.getAttribute("normal").copyArray(d),r.attributes.position.needsUpdate=!0,r.attributes.normal.needsUpdate=!0,ue.free_mesh_data(i)}static buildControlCageWireframe(n,t,e){let r=ue.get_wireframe_data_for_base_level(n),o=4,i=ue.HEAPU32.subarray(r>>2,(r>>2)+o),s=i.subarray(2,2+2),a=0,l=ue.HEAPU32[i[a]>>2],c=ue.HEAPF32.subarray(l>>2,(l>>2)+s[a]);a++;let h=ue.HEAPU32[i[a]>>2],p=ue.HEAPU32.subarray(h>>2,(h>>2)+s[a]);if(t===void 0){let u=new _d;u.setAttribute("position",new $l(c,3));let d=new Float32Array(c.length);for(let m=0,g=c.length;m<g;)d[m++]=e.r,d[m++]=e.g,d[m++]=e.b;return u.setAttribute("color",new Gd(d,3)),u.setIndex(new Wl(p,1)),ue.free_wireframe_data_for_base_level(r),u}t.getAttribute("position").copyArray(c),t.attributes.position.needsUpdate=!0,ue.free_wireframe_data_for_base_level(r)}static updateCollabMesh(n,t,e){t||ue.set_destination_refinement_level(n,1);let r=e?ue.get_topological_data2(n,t?ue.Level.CONTROL:ue.Level.REFINED,e.elements):ue.get_topological_data(n,t?ue.Level.CONTROL:ue.Level.REFINED),o=6,i=ue.HEAPU32.subarray(r>>2,(r>>2)+o),s=i.subarray(3,3+3),a=0,l=ue.HEAPU32[i[a]>>2],c=new Float32Array(ue.HEAPF32.subarray(l>>2,(l>>2)+s[a]));a++;let h=ue.HEAPU32[i[a]>>2],p=new Uint32Array(ue.HEAPU32.subarray(h>>2,(h>>2)+s[a]));a++;let u=ue.HEAPU32[i[a]>>2],d=new Uint8Array(ue.HEAPU32.subarray(u>>2,(u>>2)+s[a]));return ue.free_topological_data(r),{positions:c,indices:p,verticesPerFace:d}}};var Vd=["getX","getY","getZ"];function Xl(n,t){let e={},r=t?t.count:n.count,o=0,i=[],s=[],a=1e4;for(let c=0;c<r;c++){let h=t?t.getX(c):c,p="";for(let u=0;u<3;u++)p+=`${~~(n[Vd[u]](h)*a)},`;if(p in e)i.push(e[p]);else{for(let u=0;u<3;u++)s.push(n[Vd[u]](h));e[p]=o,i.push(o),o++}}let l=[];for(let c=0;c<i.length;c+=3)i[c]===i[c+1]||i[c]===i[c+2]||i[c+1]===i[c+2]||l.push(i[c],i[c+1],i[c+2]);return{positions:s,triIndices:l}}var ia=new na,Jl=new na,Yl=new na,Kl=new na;function Zl(n,t,e){let r=[],o=[];if(e.userData.shape!==void 0&&e.userData.parameters.depth===0){let i=e.userData.shape.extractShapePointsToFlatArray([]),s=0;for(let l=0;l<i.length;l+=2)s+=(i[l]-i[(l===0?i.length:l)-2])*(i[l+1]+i[(l===0?i.length:l)-1]);n.length=0;let a=0;if(s<0)for(let l=0;l<i.length;l+=2)n.push(i[l],i[l+1],0),r.push(a++);else for(let l=i.length-2;l>=0;l-=2)n.push(i[l],i[l+1],0),r.push(a++);return o.push(a),{indices:r,verticesPerFace:o}}for(let i=0,s=e.capStartIndex??t.length;i<s;)if(t[i+1]===t[i+3]&&t[i+2]===t[i+5]||t[i+0]===t[i+3]&&t[i+2]===t[i+4]){ia.set(n[t[i]*3],n[t[i]*3+1],n[t[i]*3+2]),Jl.set(n[t[i+1]*3],n[t[i+1]*3+1],n[t[i+1]*3+2]),Yl.set(n[t[i+4]*3],n[t[i+4]*3+1],n[t[i+4]*3+2]),Kl.set(n[t[i+5]*3],n[t[i+5]*3+1],n[t[i+5]*3+2]),Jl.sub(ia).normalize(),Yl.sub(ia).normalize(),Kl.sub(ia).normalize();let a=Jl.cross(Yl).dot(Kl);Math.abs(a)>.005?(r.push(t[i],t[i+1],t[i+2]),o.push(3),i+=3):(r.push(t[i],t[i+1],t[i+4],t[i+5]),o.push(4),i+=6)}else r.push(t[i],t[i+1],t[i+2]),o.push(3),i+=3;if(e.capStartIndex!==void 0){let i=[],s=[],a=0;for(let l=0,c=0;l<n.length;l+=3,c++)n[l+2]===0&&(i.push(c),a++),n[l+2]===e.userData.parameters.depth&&s.push(c);if(e.userData.parameters.extrudeBevelSize===0){let l=s[0];s[0]=s[1],s[1]=l}i.reverse(),r.push(...i,...s),o.push(a,a)}return{indices:r,verticesPerFace:o}}var Ut={};cc(Ut,{calcBoolean:()=>pw,calcBooleanTopological:()=>hw,freeMeshSet:()=>mw,getMeshSet:()=>uw,transformMeshSet:()=>dw});var aw,Ud=new Promise(n=>{aw=n});import{Float32BufferAttribute as jd,Sphere as lw}from"three";var ye,ci;Ud.then(n=>ye=n);function cw(n,t){let e,{positions:r,triIndices:o}=Xl(n.getAttribute("position"),n.getIndex()),i;if(t){let{indices:s,verticesPerFace:a}=Zl(r,o,n);i=a.length,e=[];for(let l=0,c=0;l<i;l++){e.push(a[l]);for(let h=0;h<a[l];h++)e.push(s[c++])}}else{let s=o.length;e=Array(s+s/3),i=0;for(let a=0,l=0;l<e.length;)e[l++]=3,i++,e[l++]=o[a++],e[l++]=o[a++],e[l++]=o[a++]}return{positions:r,faceIndices:e,nFaces:i}}function kd(n){let t=n.length,e=t*Uint32Array.BYTES_PER_ELEMENT,r=t*Float32Array.BYTES_PER_ELEMENT,o=Number.isInteger(n[0])?e:r,i=ye._malloc(o);return(Number.isInteger(n[0])?new Uint32Array(ye.HEAPU32.buffer,i,t):new Float32Array(ye.HEAPF32.buffer,i,t)).set(n,0),i}function Hd(n){switch(n){case 0:return ye.OP.UNION;case 1:return ye.OP.INTERSECTION;case 2:return ye.OP.A_MINUS_B;case 3:return ye.OP.B_MINUS_A;case 4:return ye.OP.SYMMETRIC_DIFFERENCE;case 5:return ye.OP.ALL;default:throw new Error("Unknown boolean operation "+n)}}function hw(n,t){ci===void 0&&(ci=ye.init_csg());let e=kd(n),r=ye.csg_calc_topological(ci,e,n.length,Hd(t));ye._free(e);let o=6,i=ye.HEAPU32.subarray(r>>2,(r>>2)+o),s=i.subarray(3,3+3),a=0,l=ye.HEAPU32[i[a]>>2],c=new Float32Array(ye.HEAPF32.subarray(l>>2,(l>>2)+s[a]));a++;let h=ye.HEAPU32[i[a]>>2],p=new Uint32Array(ye.HEAPU32.subarray(h>>2,(h>>2)+s[a]));a++;let u=ye.HEAPU32[i[a]>>2],d=new Uint8Array(ye.HEAPU32.subarray(u>>2,(u>>2)+s[a]));return ye.free_mesh_data(r),{positions:c,indices:p,verticesPerFace:d}}function pw(n,t,e,r){ci===void 0&&(ci=ye.init_csg());let o=kd(n),i=ye.csg_calc(ci,o,n.length,r,Hd(t));ye._free(o);let s=5,a=ye.HEAPU32.subarray(i>>2,(i>>2)+s),l=a.subarray(2,2+3),c=0,h=ye.HEAPU32[a[c]>>2],p=ye.HEAPF32.subarray(h>>2,(h>>2)+l[c]);c++;let u=ye.HEAPU32[a[c]>>2],d=ye.HEAPF32.subarray(u>>2,(u>>2)+l[c]);c++;let m=l[c];e.setAttribute("position",new jd(p,3)),e.setAttribute("normal",new jd(d,3));let g=ye.HEAPF32.subarray((i>>2)+5,(i>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new lw),e.boundingSphere.center.set(g[0],g[1],g[2]),e.boundingSphere.radius=(g[3]**2+g[4]**2+g[5]**2)**.5,e.userData.parameters={width:g[3]*2,height:g[4]*2,depth:g[5]*2},ye.free_mesh_data(i),m}function uw(n,t){if(ye===void 0)return-1;let e,r,o;if(t&&n.userData.positions!==void 0){let g=n.userData;o=g.verticesPerFace.length,e=g.positions,r=Array(g.verticesPerFace.reduce((x,y)=>x+y,0)+o);for(let x=0,y=0,b=0;x<g.verticesPerFace.length;x++){r[b++]=g.verticesPerFace[x];for(let C=0;C<g.verticesPerFace[x];C++)r[b++]=g.indices[y++]}}else({positions:e,faceIndices:r,nFaces:o}=cw(n,t));let i=e.length,s=r.length,a=e.length,l=r.length,c=a*Float32Array.BYTES_PER_ELEMENT+l*Uint32Array.BYTES_PER_ELEMENT,h=a*Float32Array.BYTES_PER_ELEMENT,p=l*Uint32Array.BYTES_PER_ELEMENT,u=ye._malloc(c),d=new Float32Array(ye.HEAPF32.buffer,u,a),m=new Uint32Array(ye.HEAPU32.buffer,u+h,l);return d.set(e,0),m.set(r,0),ye.get_csg_mesh(u,i,u+h,s,o)}function dw(n,t){ye.transform_csg_mesh(n,t.elements)}function mw(n){ye.free_csg_mesh(n)}var Hl={ConeGeometry:tu,CubeGeometry:ru,CylinderGeometry:eu,DodecahedronGeometry:ou,EllipseGeometry:Ou,HelixGeometry:_u,IcosahedronGeometry:Gu,LatheGeometry:zu,NonParametricGeometry:qu,PolygonGeometry:Wu,PyramidGeometry:$u,RectangleGeometry:zs,SphereGeometry:Ju,PlaneGeometry:Yu,BackdropGeometry:Ku,StarGeometry:Xu,TextFrameGeometry:Rs,TorusGeometry:Zu,TorusKnotGeometry:Qu,TriangleGeometry:ed,VectorGeometry:Je},mn=n=>Hl[n.type].create(n);import{BufferGeometry as qd,Matrix4 as fw}from"three";var Wd=new fw;var sa=class extends Ue{constructor(e=new qd,r=new ct){super(e,r);this.booleanOp=2;this.phongAngle=35;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.isBooleanMesh=!0,this.castShadow=!0,this.receiveShadow=!0,this.geometry.userData.parameters={width:0,height:0,depth:0},this.onAfterRender=this.recomputeBoolean.bind(this)}reInit(){this.isBooleanMesh=!0,this.meshSetAddresses=[],this.needsTransformForDownstream=!1,this.geometry.userData.parameters={width:0,height:0,depth:0},this.onAfterRender=this.recomputeBoolean.bind(this)}recomputeBoolean(e){if(this.booleanMeshSetAddress!==-1)return;for(let o=0;o<this.children.length;o++){let i=this.children[o];ir(i)&&i.recomputeBoolean(e===!0)}this.meshSetAddresses=[];for(let o=0;o<this.children.length;o++){let i=this.children[o];if(Od(i)&&i.booleanExclude===!1&&i.geometry.attributes.position?.count>0&&i.geometry.drawRange.count>0){if(i.booleanMeshSetAddress===-1){if(i.booleanMeshSetAddress=Ut.getMeshSet(i.geometry,e===!0),i.booleanMeshSetAddress===-1)return;Ut.transformMeshSet(i.booleanMeshSetAddress,i.matrix),i.booleanMatrixInvOld.copy(i.matrix).invert(),i.booleanWasTransformed=!1}else ir(i)&&i.needsTransformForDownstream===!0?(Ut.transformMeshSet(i.booleanMeshSetAddress,i.matrix),i.needsTransformForDownstream=!1):i.booleanWasTransformed===!0&&(Wd.multiplyMatrices(i.matrix,i.booleanMatrixInvOld),Ut.transformMeshSet(i.booleanMeshSetAddress,Wd),i.booleanMatrixInvOld.copy(i.matrix).invert(),i.booleanWasTransformed=!1);this.meshSetAddresses.push(i.booleanMeshSetAddress)}}if(this.meshSetAddresses.length===0){this.geometry.setDrawRange(0,0);return}if(e===!0)return Ut.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let r=this.geometry;r.dispose(),this.geometry=new qd,this.geometry.userData=r.userData,this.geometry.boundingSphere=r.boundingSphere;try{this.booleanMeshSetAddress=Ut.calcBoolean(this.meshSetAddresses,this.booleanOp,this.geometry,this.phongAngle)}catch(o){this.booleanMeshSetAddress=0,console.error(o)}this.booleanMatrixInvOld.copy(this.matrix).invert(),this.needsTransformForDownstream=!0}toJSON(e){let r=super.toJSON(e);return r.object.objectType="Mesh3D",r}updateGeometry(e){let r=e.parameters;r.operation!==void 0&&(this.booleanOp=r.operation),r.phongAngle!==void 0&&(this.phongAngle=r.phongAngle),this.invalidateDownstreamBooleanData().recomputeBoolean()}};import{Camera as Aw,OrthographicCamera as Dw,PerspectiveCamera as Bw,Vector3 as Lt,Object3D as Yd,Quaternion as Ew}from"three";import{BoxBufferGeometry as gw}from"three";var ar=n=>{var t;return t=class extends n{constructor(){super(...arguments);this.isObjectHelper=!0}},t.geometryHelper=new gw(30,30,30),t};import{Camera as Sw,LineSegments as ww,BufferGeometry as Nw,LineBasicMaterial as Lw,Color as ec,Vector3 as Cw,Float32BufferAttribute as Jd}from"three";import{Ray as yw,Sphere as xw,Matrix4 as bw,Vector3 as Sr}from"three";var aa=new yw,Ql=new xw,$d=new bw,lr=(n,t,e,r,o=!1)=>{let i=t,s=n.matrixWorld;if(i.boundingSphere===null&&i.computeBoundingSphere(),Ql.copy(i.boundingSphere),Ql.applyMatrix4(s),e.ray.intersectsSphere(Ql)===!1||($d.copy(s).invert(),aa.copy(e.ray).applyMatrix4($d),i.boundingBox!==null&&aa.intersectsBox(i.boundingBox)===!1))return;let a,l,c,h,p=i.index,u=i.attributes.position,d=i.drawRange,m,g;if(o===!1){let y=Math.max(0,d.start),b=Math.min(p.count,d.start+d.count);for(m=y,g=b;m<g;m+=3)if(l=p.getX(m),c=p.getX(m+1),h=p.getX(m+2),a=x(n,e,aa,u,l,c,h),a){a.faceIndex=Math.floor(m/3),r.push(a);return}}else{let b=i.attributes.position,C=new Sr,S=new Sr,v=new Sr,z=new Sr,w=2,D=1/((n.scale.x+n.scale.y+n.scale.z)/3),L=D*D,P=Math.max(0,d.start),M=Math.min(b.count,d.start+d.count);for(let I=P,k=M-1;I<k;I+=w){if(C.fromBufferAttribute(b,I),S.fromBufferAttribute(b,I+1),aa.distanceSqToSegment(C,S,z,v)>L)continue;z.applyMatrix4(n.matrixWorld);let oe=e.ray.origin.distanceTo(z);oe<e.near||oe>e.far||r.push({distance:oe,point:v.clone().applyMatrix4(n.matrixWorld),object:n})}}function x(y,b,C,S,v,z,w){let f=new Sr,D=new Sr,L=new Sr,P=new Sr,M=new Sr;if(f.fromBufferAttribute(S,v),D.fromBufferAttribute(S,z),L.fromBufferAttribute(S,w),C.intersectTriangle(f,D,L,!1,P)===null)return null;M.copy(P),M.applyMatrix4(y.matrixWorld);let k=b.ray.origin.distanceTo(M);return k<b.near||k>b.far?null:{faceIndex:1,distance:k,point:M.clone(),object:y}}};var la=new Cw,_t=new Sw,tc=class extends ww{constructor(e){let r=new Nw,o=new Lw({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],s=[],a={},l=new ec(15711266),c=new ec(15711266),h=new ec(2857471);p("n1","n2",l),p("n2","n4",l),p("n4","n3",l),p("n3","n1",l),p("f1","f2",l),p("f2","f4",l),p("f4","f3",l),p("f3","f1",l),p("n1","f1",l),p("n2","f2",l),p("n3","f3",l),p("n4","f4",l),p("p","n1",c),p("p","n2",c),p("p","n3",c),p("p","n4",c),p("u1","u2",h),p("u2","u3",h),p("u3","u1",h);function p(d,m,g){u(d,g),u(m,g)}function u(d,m){i.push(0,0,0),s.push(m.r,m.g,m.b),a[d]===void 0&&(a[d]=[]),a[d].push(i.length/3-1)}r.setAttribute("position",new Jd(i,3)),r.setAttribute("color",new Jd(s,3));super(r,o);this.type="CameraHelper",this.camera=e,this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix(),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=a,this.update()}update(){let e=this.geometry,r=this.pointMap,o=!0;_t.projectionMatrixInverse.elements=[.5112609807824982,-0,-0,-0,-0,.41421356237309503,-0,-0,-0,-0,-0,-.099999,-0,-0,-1.0000000000000002,.100001];let i=1,s=1,a=o?.8:1e-4;jt("n1",r,e,_t,-i,-s,a),jt("n2",r,e,_t,i,-s,a),jt("n3",r,e,_t,-i,s,a),jt("n4",r,e,_t,i,s,a);let l=a;jt("f1",r,e,_t,-i,-s,l),jt("f2",r,e,_t,i,-s,l),jt("f3",r,e,_t,-i,s,l),jt("f4",r,e,_t,i,s,l);let c=l,h=.5;jt("u1",r,e,_t,i*.7*h,s*1.1,c),jt("u2",r,e,_t,-i*.7*h,s*1.1,c),jt("u3",r,e,_t,0,s*(1.1+.9*h),c),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function jt(n,t,e,r,o,i,s){la.set(o,i,s).unproject(r);let a=t[n];if(a!==void 0){let l=e.getAttribute("position");for(let c=0,h=a.length;c<h;c++)l.setXYZ(a[c],la.x,la.y,la.z)}}var ca=class extends ar(tc){constructor(e){super(e);this.object=e;this.object=e,this.name=`CombinedCameraHelper: ${e.uuid}`}updateMatrixWorld(e){super.updateMatrixWorld(e),this.updateTarget()}updateTarget(){let e=this.object.getTarget();this.updateWorldMatrix(!0,!1),this.worldToLocal(e)}raycast(e,r){lr(this.object,this.geometry,e,r,!0)}};import{DirectionalLightHelper as Tw}from"three";var hi=class extends ar(Tw){constructor(e,r=15,o=10066329){super(e,r,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,r){lr(this.object,hi.geometryHelper,e,r)}};import{AxesHelper as Mw}from"three";var pi=class extends ar(Mw){constructor(e,r=15){super(r);this.object=e;this.object.updateMatrixWorld(),this.name=`EmptyObjectHelper: ${e.uuid}`,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1}raycast(e,r){lr(this.object,pi.geometryHelper,e,r)}update(){}};import{PointLightHelper as Pw}from"three";var ui=class extends ar(Pw){constructor(e,r=15,o=6710886){super(e,r,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,r){lr(this.object,ui.geometryHelper,e,r)}};import{SpotLightHelper as Iw,Vector3 as Ow}from"three";var ha=class extends ar(Iw){constructor(e,r=6710886){super(e,r);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,r){lr(this.object,ha.geometryHelper,e,r)}update(){if(this.object!==void 0){let e=ha._vector,r=this.object.distance?this.object.distance:1e3,o=r*Math.tan(this.object.angle);this.cone.scale.set(o,o,r),e.setFromMatrixPosition(this.object.target.matrixWorld),this.cone.lookAt(e);let i=this.color!==void 0?this.color:this.light.color;if(this.cone.material instanceof Array)for(let s=0,a=this.cone.material.length;s<a;s++)this.cone.material[s].color.set(i);else this.cone.material.color.set(i)}}},fn=ha;fn._vector=new Ow;var cr=(n,t)=>class extends n{constructor(){super(...arguments);this.objectHelper=new t(this);this.enableHelper=!1}set visibility(o){this.visible=o,this.setHelperVisibility(o),this.setHelperChildrenVisibility(o)}get visibility(){return this.visible}get geometryHelper(){return t.geometryHelper}setHelperVisibility(o){this.objectHelper.visible=o}setHelperChildrenVisibility(o){for(let i of this.children)Dt(i)&&i.traverseEntity(s=>{vr(s)&&s.visible&&(s.objectHelper.visible=o)})}raycast(o,i){this.objectHelper.raycast(o,i)}copy(o,i=!0){return super.copy(o,i),o.enableHelper!==void 0&&(this.enableHelper=o.enableHelper),o.objectHelper!==void 0&&(this.objectHelper.visible=o.objectHelper.visible),this}toJSON(o){let i=super.toJSON(o),s=i.object;return s.enableHelper=this.enableHelper,i}fromJSON(o){return super.fromJSON(o),o.enableHelper!==void 0&&(this.enableHelper=!0),this}fromLightState(o,i){if(this.objectType==="LightDirectional"||this.objectType==="LightPoint"||this.objectType==="LightSpot"){let s=this;o.color!==void 0&&(s.color=Ge(o.color,i)),o.intensity!==void 0&&(s.intensity=o.intensity),o.depth!==void 0&&(s.shadow.camera.far=o.depth,s.shadow.needsUpdate=!0),o.shadows!==void 0&&(this.castShadow=o.shadows),o.helper!==void 0&&(this.enableHelper=o.helper,s.gizmos.shadowmap.visible=o.helper)}return this}};var di=new Lt,rc=new Lt,wr=class extends cr(Bt(Aw),ca){constructor(e=window.innerWidth,r=window.innerHeight,o=45,i,s=1e5){super();this.objectType="CombinedCamera";this._cameraType="OrthographicCamera";this.targetOffset=Yr.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.width=e,this.height=r,this.orthoCamera=new Dw(e*-.5,e*.5,r*.5,r*-.5,i??-5e4,s),this.perspCamera=new Bw(o,e/r,i??50,s),this.left=this.orthoCamera.left,this.right=this.orthoCamera.right,this.top=this.orthoCamera.top,this.bottom=this.orthoCamera.bottom,this.far=this.orthoCamera.far,this.view=this.orthoCamera.view,this.aspect=this.perspCamera.aspect,this.fov=this.perspCamera.fov,this.focus=this.perspCamera.focus,this.filmGauge=this.perspCamera.filmGauge,this.filmOffset=this.perspCamera.filmOffset,this.toOrthographic(!0)}static createFromState(e,r){let o=new wr().fromState(r);return o.enableHelper=!0,o.objectHelper.update(),o.uuid=e,o}get isPerspectiveCamera(){return this.cameraType==="PerspectiveCamera"}get isOrthographicCamera(){return!this.isPerspectiveCamera}get cameraType(){return this._cameraType}setNear(e,r){e==="PerspectiveCamera"?this.perspCamera.near=r:this.orthoCamera.near=r}setZoom(e,r){r>=0&&(e==="PerspectiveCamera"?this.perspCamera.zoom=r:this.orthoCamera.zoom=r)}set cameraType(e){e==="PerspectiveCamera"?this.toPerspective():e==="OrthographicCamera"&&this.toOrthographic()}get near(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.near:this.orthoCamera.near}set near(e){this._cameraType==="PerspectiveCamera"?this.perspCamera.near=e:this.orthoCamera.near=e}get zoom(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom:this.orthoCamera.zoom}set zoom(e){e>=0&&(this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom=e:this.orthoCamera.zoom=e)}lookAt(e){super.lookAt(e),this.getWorldPosition(di),this.targetOffset=di.distanceTo(e)}getTarget(e=new Lt){return this.getWorldDirection(rc),this.getWorldPosition(di),rc.multiplyScalar(this.targetOffset),e.copy(di).add(rc),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(di),di.distanceTo(e)}updateUp(){let e=this.getWorldQuaternion(new Ew),r=new Lt(0,0,1).applyQuaternion(e),o=new Lt().copy(Yd.DefaultUp);this.isUpVectorFlipped&&o.negate(),o.applyQuaternion(e);let i=new Lt().copy(Yd.DefaultUp).projectOnPlane(r),s=new Lt().crossVectors(i,o).dot(r)>=0?1:-1;this.angleOffsetFromUp=i.angleTo(o)*s}getViewFrontToObject(e){let r=e.getWorldPosition(new Lt),i=e.getWorldDirection(new Lt).multiplyScalar(this.targetOffset);return{position:r.clone().add(i),target:r}}getViewToObject(e){let r=e.getWorldPosition(new Lt),i=this.getWorldDirection(new Lt).multiplyScalar(this.targetOffset);return{position:r.clone().sub(i),target:r}}setViewplaneSize(e,r){this.left=-e*.5,this.right=e*.5,this.top=r*.5,this.bottom=-r*.5,this.aspect=e/r,this.updateProjectionMatrix()}toOrthographic(e){this.orthoCamera.left=this.left,this.orthoCamera.right=this.right,this.orthoCamera.top=this.top,this.orthoCamera.bottom=this.bottom,this.orthoCamera.view=this.view,this.orthoCamera.far=this.far,this.orthoCamera.updateProjectionMatrix(),this.projectionMatrix=this.orthoCamera.projectionMatrix,this.projectionMatrixInverse=this.orthoCamera.projectionMatrixInverse,this._cameraType="OrthographicCamera",(this.enableHelper===!0||e===!0)&&this.objectHelper.update()}toPerspective(e){this.perspCamera.aspect=this.aspect,this.perspCamera.fov=this.fov,this.perspCamera.view=this.view,this.perspCamera.far=this.far,this.perspCamera.updateProjectionMatrix(),this.projectionMatrix=this.perspCamera.projectionMatrix,this.projectionMatrixInverse=this.perspCamera.projectionMatrixInverse,this._cameraType="PerspectiveCamera",(this.enableHelper===!0||e===!0)&&this.objectHelper.update()}setFocalLength(e){this.perspCamera.setFocalLength(e),this.toPerspective()}getFocalLength(){return this.perspCamera.getFocalLength()}getEffectiveFOV(){return this.perspCamera.getEffectiveFOV()}getFilmWidth(){return this.perspCamera.getFilmWidth()}getFilmHeight(){return this.perspCamera.getFilmHeight()}setViewOffset(e,r,o,i,s,a){this._cameraType==="PerspectiveCamera"?this.perspCamera.setViewOffset(e,r,o,i,s,a):this.orthoCamera.setViewOffset(e,r,o,i,s,a)}clearViewOffset(){this._cameraType==="PerspectiveCamera"?(this.perspCamera.clearViewOffset(),this.toPerspective()):(this.orthoCamera.clearViewOffset(),this.toOrthographic())}updateProjectionMatrix(e){this._cameraType==="PerspectiveCamera"?this.toPerspective(e):this._cameraType==="OrthographicCamera"&&this.toOrthographic(e)}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,r){super.updateWorldMatrix(e,r),this.matrixWorldInverse.copy(this.matrixWorld).invert()}copy(e,r){return super.copy(e,r),this.orthoCamera.copy(e.orthoCamera),this.perspCamera.copy(e.perspCamera),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.far=e.far,this.view=e.view===null?null:Object.assign({},e.view),this._cameraType=e._cameraType,this.aspect=e.aspect,this.fov=e.fov,this.focus=e.focus,this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this.targetOffset=e.targetOffset,this.updateProjectionMatrix(),this}fromCameraRender(e){let r={near:this.orthoCamera.near,far:this.orthoCamera.far},o={near:this.perspCamera.near,far:this.perspCamera.far};return this.copy(e),this.name="",this.enableHelper=!0,this.objectHelper.visible=!0,this.orthoCamera.near=r.near,this.orthoCamera.far=r.far,this.perspCamera.near=o.near,this.perspCamera.far=o.far,this.updateProjectionMatrix(),this}toJSON(e){let r=super.toJSON(e),o=r.object;return o.objectType="CombinedCamera",o.cameraType=this.cameraType,o.targetOffset=this.targetOffset,o.isUpVectorFlipped=this.isUpVectorFlipped,o.angleOffsetFromUp=this.angleOffsetFromUp,o.left=this.left,o.right=this.right,o.top=this.top,o.bottom=this.bottom,this.view!==null&&(o.view=Object.assign({},this.view)),o.zoomOrtho=this.orthoCamera.zoom,o.nearOrtho=this.orthoCamera.near,o.far=this.far,o.aspect=this.aspect,o.fov=this.fov,o.focus=this.focus,o.filmGauge=this.filmGauge,o.filmOffset=this.filmOffset,o.zoomPersp=this.perspCamera.zoom,o.nearPersp=this.perspCamera.near,r}fromJSON(e){if(super.fromJSON(e),this.cameraType=e.cameraType,e.targetOffset!==void 0&&(this.targetOffset=e.targetOffset),e.orbitControlsTarget!==void 0){let r=this.getWorldPosition(new Lt),o=new Lt().fromArray(e.orbitControlsTarget);this.targetOffset=o.distanceTo(r)}else e.targetOffset!==void 0&&(this.targetOffset=e.targetOffset);return this.isUpVectorFlipped=!1,this.angleOffsetFromUp=e.angleOffsetFromUp??0,e.left!==void 0&&(this.left=e.left),e.right!==void 0&&(this.right=e.right),e.top!==void 0&&(this.top=e.top),e.bottom!==void 0&&(this.bottom=e.bottom),e.view!==void 0&&(this.view=Object.assign({},e.view)),e.zoomOrtho!==void 0&&(this.orthoCamera.zoom=e.zoomOrtho),e.nearOrtho!==void 0&&(this.orthoCamera.near=e.nearOrtho),e.far!==void 0&&(this.far=e.far),e.aspect!==void 0&&(this.aspect=e.aspect),e.fov!==void 0&&(this.fov=e.fov),e.focus!==void 0&&(this.focus=e.focus),e.filmGauge!==void 0&&(this.filmGauge=e.filmGauge),e.filmOffset!==void 0&&(this.filmOffset=e.filmOffset),e.zoomPersp!==void 0&&(this.perspCamera.zoom=e.zoomPersp),e.nearPersp!==void 0&&(this.perspCamera.near=e.nearPersp),this.updateProjectionMatrix(),this}toCameraState(e=[]){let r={type:this.cameraType,far:this.far,orthographic:{near:this.orthoCamera.near,zoom:this.orthoCamera.zoom},perspective:{near:this.perspCamera.near,fov:this.perspCamera.fov,zoom:this.perspCamera.zoom},up:this.up.toArray(),targetOffset:this.targetOffset,isUpVectorFlipped:this.isUpVectorFlipped};return Io(r,e)}fromCameraState(e){let{orthographic:r,perspective:o}=e;return e.type!==void 0&&(this.cameraType=e.type),e.far!==void 0&&(this.far=e.far),r!==void 0&&(r.near!==void 0&&(this.orthoCamera.near=r.near),r.zoom!==void 0&&(this.orthoCamera.zoom=r.zoom)),o!==void 0&&(o.near!==void 0&&(this.perspCamera.near=o.near),o.fov!==void 0&&(this.perspCamera.fov=o.fov),o.zoom!==void 0&&(this.perspCamera.zoom=o.zoom)),e.up!==void 0&&this.up.fromArray(e.up),e.targetOffset!==void 0&&(this.targetOffset=e.targetOffset),e.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=e.isUpVectorFlipped),this.updateProjectionMatrix(),this}toState(e){return{...super.toState(e),...this.toCameraState(e),type:this.cameraType}}fromState(e){return super.fromState(e),this.fromCameraState(e),this}};import{Group as _w}from"three";var Nr=class extends cr(Bt(_w),pi){constructor(){super(...arguments);this.objectType="EmptyObject"}static createFromState(e,r){let o=new Nr().fromState(r);return o.uuid=e,o.enableHelper=!0,o.objectHelper.update(),o}toJSON(e){let r=super.toJSON(e);return r.object.objectType="EmptyObject",r}};import{DirectionalLight as Gw,CameraHelper as pa}from"three";var mi=class extends cr(Bt(Gw),hi){constructor(...e){super(...e);this.objectType="LightDirectional";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=2048,this.shadow.mapSize.height=2048,this.shadow.normalBias=1;let o=this.shadow.camera;o.top=1250,o.bottom=-1250,o.right=1250,o.left=-1250,o.near=-1e4,o.far=2500;let i=new pa(this.shadow.camera);i.visible=!1,this._gizmos.shadowmap=i,this.update()}static createFromState(e,r,o){let i=new mi().fromState(r,o);return i.uuid=e,i}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof pa&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof pa&&(r.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let r=this._gizmos[e];r instanceof pa&&r.update()}}updateMatrixWorld(e){super.updateMatrixWorld(e),this.enableHelper===!0&&this.objectHelper.visible===!0&&this.objectHelper.update()}copy(e,r=!0){return super.copy(e,r),this.color.copy(e.color),this.intensity=e.intensity,this.target=e.target.clone(),this.shadow=e.shadow.clone(),this}toJSON(e){let r=super.toJSON(e),o=r.object;return o.objectType="LightDirectional",o.color=this.color.getHex(),o.intensity=this.intensity,o.shadow=this.shadow.toJSON(),r}fromJSON(e){super.fromJSON(e),this.color.set(e.color),this.intensity=e.intensity,this.shadow.normalBias=e.shadow.normalBias??0,this.shadow.radius=e.shadow.radius,this.shadow.mapSize.fromArray(e.shadow.mapSize);let r=this.shadow.camera,o=e.shadow.camera;return r.near=o.near,r.far=o.far,r.zoom=o.zoom,r.left=o.left,r.right=o.right,r.top=o.top,r.bottom=o.bottom,o.view!==void 0&&(r.view=Object.assign({},o.view)),this}fromDirectionalLightState(e,r){let o=e.depth!==void 0&&e.depth!==this.shadow.camera.far||e.size!==void 0&&e.size/2!==this.shadow.camera.right;return super.fromLightState(e,r),e.size!==void 0&&Td(this,e.size),e.shadowRadius!==void 0&&(this.shadow.radius=e.shadowRadius),e.shadowResolution!==void 0&&(this.shadow.mapSize.set(e.shadowResolution,e.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),o&&this.update(),this}fromState(e,r){return super.fromState(e),this.fromDirectionalLightState(e,r),this}};import{PointLight as zw,Vector3 as ua,Box3 as Rw,Box3Helper as da,Color as Fw}from"three";var fi=class extends cr(Bt(zw),ui){constructor(...e){super(...e);this.objectType="LightPoint";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1;let o=this.shadow.camera;o.fov=90,o.aspect=1,o.near=100,o.far=2500;let i=new ua(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),s=new ua(o.far+this.position.x,o.far+this.position.y,o.far+this.position.z),a=new Rw(i,s),l=new da(a,new Fw(16755200));l.visible=!1,this._gizmos.shadowmap=l,this.update()}static createFromState(e,r,o){let i=new fi().fromState(r,o);return i.uuid=e,i}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof da&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof da&&(r.visible=!1)}}update(){if(this.shadow&&(this.shadow.camera.updateProjectionMatrix(),this._gizmos))for(let e in this._gizmos){let r=this._gizmos[e];if(r instanceof da){let o=this.shadow.camera,i=new ua(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),s=new ua(o.far+this.position.x,o.far+this.position.y,o.far+this.position.z);r.box.set(i,s),r.updateMatrixWorld(!0)}}}updateMatrixWorld(e){super.updateMatrixWorld(e),this.enableHelper===!0&&this.objectHelper.visible===!0&&this.objectHelper.update()}copy(e,r=!0){return super.copy(e,r),this.color.copy(e.color),this.intensity=e.intensity,this.distance=e.distance,this.decay=e.decay,this.shadow=e.shadow.clone(),this}toJSON(e){let r=super.toJSON(e),o=r.object;return o.objectType="LightPoint",o.color=this.color.getHex(),o.intensity=this.intensity,o.distance=this.distance,o.decay=this.decay,o.shadow=this.shadow.toJSON(),r}fromJSON(e){super.fromJSON(e),this.color.set(e.color),this.intensity=e.intensity,this.distance=e.distance,this.decay=e.decay,this.shadow.normalBias=e.shadow.normalBias??0,this.shadow.radius=e.shadow.radius,this.shadow.mapSize.fromArray(e.shadow.mapSize??[512,512]),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null);let r=this.shadow.camera,o=e.shadow.camera;return r.near=o.near,r.far=o.far,r.zoom=o.zoom,r.fov=o.fov,r.focus=o.focus,r.aspect=o.aspect,r.filmGauge=o.filmGauge,r.filmOffset=o.filmOffset,o.view!==void 0&&(r.view=Object.assign({},o.view)),this}fromPointLightState(e,r){return super.fromLightState(e,r),e.distance!==void 0&&(this.distance=e.distance),e.decay!==void 0&&(this.decay=e.decay),e.shadowRadius!==void 0&&(this.shadow.radius=e.shadowRadius),e.shadowResolution!==void 0&&(this.shadow.mapSize.set(e.shadowResolution,e.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),this}fromState(e,r){return super.fromState(e),this.fromPointLightState(e,r),this}};import{SpotLight as Vw,CameraHelper as ma,MathUtils as Uw,Vector3 as Qd,Quaternion as jw}from"three";var Kd=new Qd,Xd=new Qd,Zd=new jw,gi=class extends cr(Bt(Vw),fn){constructor(...e){super(...e);this.objectType="LightSpot";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1;let o=this.shadow.camera;o.fov=Uw.RAD2DEG*2*this.angle,o.aspect=1,o.near=100,o.far=2500;let i=new ma(this.shadow.camera);i.visible=!1,this._gizmos.shadowmap=i,this.update()}static createFromState(e,r,o){let i=new gi().fromState(r,o);return i.uuid=e,i}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof ma&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof ma&&(r.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let r=this._gizmos[e];r instanceof ma&&r.update()}}updateMatrixWorld(e){super.updateMatrixWorld(e),Xd.setFromMatrixPosition(this.matrixWorld),Zd.setFromRotationMatrix(this.matrixWorld),Kd.copy(this.up).applyQuaternion(Zd).negate().multiplyScalar(this.distance),this.target.position.copy(Xd).add(Kd),this.target.updateMatrixWorld(),this.enableHelper===!0&&this.objectHelper.visible===!0&&this.objectHelper.update()}copy(e,r=!0){return super.copy(e,r),this.color.copy(e.color),this.intensity=e.intensity,this.distance=e.distance,this.angle=e.angle,this.penumbra=e.penumbra,this.decay=e.decay,this.target=e.target.clone(),this.shadow=e.shadow.clone(),this}toJSON(e){let r=super.toJSON(e),o=r.object;return o.objectType="LightSpot",o.color=this.color.getHex(),o.intensity=this.intensity,o.distance=this.distance,o.angle=this.angle,o.decay=this.decay,o.penumbra=this.penumbra,o.shadow=this.shadow.toJSON(),r}fromJSON(e){super.fromJSON(e),this.color.set(e.color),this.intensity=e.intensity,this.distance=e.distance,this.angle=e.angle,this.decay=e.decay,this.penumbra=e.penumbra,this.shadow.normalBias=e.shadow.normalBias??0,this.shadow.radius=e.shadow.radius,this.shadow.mapSize.fromArray(e.shadow.mapSize);let r=this.shadow.camera,o=e.shadow.camera;return r.near=o.near,r.far=o.far,r.zoom=o.zoom,r.fov=o.fov,r.focus=o.focus,r.aspect=o.aspect,r.filmGauge=o.filmGauge,r.filmOffset=o.filmOffset,o.view!==void 0&&(r.view=Object.assign({},o.view)),this}fromSpotLightState(e,r){return super.fromLightState(e,r),e.distance!==void 0&&(this.distance=e.distance),e.decay!==void 0&&(this.decay=e.decay),e.angle!==void 0&&(this.angle=e.angle),e.penumbra!==void 0&&(this.penumbra=e.penumbra),e.shadowRadius!==void 0&&(this.shadow.radius=e.shadowRadius),e.shadowResolution!==void 0&&(this.shadow.mapSize.set(e.shadowResolution,e.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),this}fromState(e,r){return super.fromState(e),this.fromSpotLightState(e,r),this}};import{VideoTexture as kw}from"three";var em=n=>n.tagName==="VIDEO",no=class{static resize(t,e,r){let o=t/e,i;if(!r.image)return;let s=r.image;em(s)?i=s.videoWidth/s.videoHeight:i=s.width/s.height,o>i&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1*i/o):r.repeat.set(1,1*i/o)),o<i&&(r.imageType=="WEBCAM"?r.repeat.set(1*o/i*-1,1):r.repeat.set(1*o/i,1)),o==i&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1):r.repeat.set(1,1))}static resizeTextureLayer(t,e,r){let o=t/e,i=r.image!==void 0?r.image.width/r.image.height:1,s;o>i?s={x:1,y:i/o}:o<i?s={x:o/i,y:1}:s={x:1,y:1},r.repeat.set(s.x,s.y),r.updateMatrix()}static resizeTextureLayers(t,e,r){let o=r.userData.layers,i=o.getLayers();for(let s=0;s<i.length;s++){let a=i[s];ld(a)&&(no.resizeTextureLayer(t,e,a.uniforms[`f${a.id}_texture`].value),o.updateLayerUniform())}}static resizeComplex(t,e,r,o){let i=t/e,s,a=r.image;em(a)?s=a.videoWidth/a.videoHeight:s=a.width/a.height,o.geometry.type.includes("Shape")?(i>s&&(r.imageType=="WEBCAM"?r.repeat.set(1/t*-1,1/e*s/i):r.repeat.set(1/t,1/e*s/i)),i<s&&(r.imageType=="WEBCAM"?r.repeat.set(1/t*i/s*-1,1/e):r.repeat.set(1/t*i/s,1/e)),i==s&&(r.imageType=="WEBCAM"?r.repeat.set(1/t*-1,1/e):r.repeat.set(1/t,1/e))):(i>s&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1*s/i):r.repeat.set(1,1*s/i)),i<s&&(r.imageType=="WEBCAM"?r.repeat.set(1*i/s*-1,1):r.repeat.set(1*i/s,1)),i==s&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1):r.repeat.set(1,1)))}};var yi=class extends Ue{constructor(e,r=new Xe){super(e,r);this.objectType="Mesh2D";this.castShadow=!0,this.receiveShadow=!0}updateGeometry(e){super.updateGeometry(e),this.material.userData.layers&&no.resizeTextureLayers(this.geometry.userData.parameters.width,this.geometry.userData.parameters.height,this.material)}resizeGeometry(e,r){super.resizeGeometry(e,r,0),this.material.userData.layers&&no.resizeTextureLayers(this.geometry.userData.parameters.width,this.geometry.userData.parameters.height,this.material)}toJSON(e){let r=super.toJSON(e);return r.object.objectType="Mesh2D",r}clone(){let e=super.clone();return e.updateGeometry({}),e}static fromTexture(e){let r,o;if(e instanceof kw){let a=e.image;r=a.videoWidth*.5,o=a.videoHeight*.5}else{let a=e.image;r=a.width*.5,o=a.height*.5}let i=zs.create({parameters:{width:r,height:o}}),s=new Xe;return s.layersList.changeLayer(0,{type:"texture",texture:e}),s.layersList.moveLayer(0,1),s.dispose(),new yi(i,s)}};var xi=class extends Ue{constructor(e,r=new ct){super(e,r);this.objectType="Mesh3D";this.castShadow=!0,this.receiveShadow=!0}toJSON(e){let r=super.toJSON(e);return r.object.objectType="Mesh3D",r}};var bi=class extends xi{constructor(e,r=new ct){super(e,r);this.objectType="NonParametric"}toJSON(e){let r=super.toJSON(e);return r.object.objectType="NonParametric",r}};import{DoubleSide as Hw,Mesh as qw,MeshBasicMaterial as Ww,ShapeBufferGeometry as $w,Vector2 as Jw,Vector3 as Yw}from"three";import{FontLoader as Kw}from"three/examples/jsm/loaders/FontLoader.js";var ze=class extends qw{constructor({char:e,originalChar:r,fontFamily:o,letterSpacing:i,fontSize:s,LOD:a=16},l=new Ww({color:0,opacity:1,visible:!0,transparent:!0,side:Hw})){let c=ze.loadChar(e,o,a);super(c.geometry,l);this.char=e,this.originalChar=r??e,this.fontFamily=o,this.letterSpacing=i,this.fontSize=s,this.LOD=a,this.resolution=c.resolution,this.glyphsHa=c.glyphsHa,this.localPosition=new Jw,this.charSize=0,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}static get FONTS_PATH(){return ze._fontPath}static set FONTS_PATH(e){ze._fontPath=e}updatePosition(e,r){this.localPosition.copy(e);let o=new Yw(this.localPosition.x,-this.localPosition.y,0);this.position.copy(o).add(r)}updateFontSize(e){let r=e/this.resolution;this.fontSize=e,this.scale.set(this.fontSize,this.fontSize,1),this.charSize=this.glyphsHa*r*this.letterSpacing}updateFontFamily(e){if(this.fontFamily===e)return;this.fontFamily=e;let r=ze.loadChar(this.char,e,this.LOD);this.geometry=r.geometry,this.resolution=r.resolution,this.glyphsHa=r.glyphsHa,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}updateChar(e){if(this.char===e)return;this.char=e;let r=ze.loadChar(e,this.fontFamily,this.LOD);this.geometry=r.geometry,this.resolution=r.resolution,this.glyphsHa=r.glyphsHa,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}updateLetterSpacing(e){this.letterSpacing!==e&&(this.letterSpacing=e,this.updateFontSize(this.fontSize))}updateLOD(e){if(this.LOD===e)return;this.LOD=e;let r=ze.loadChar(this.char,this.fontFamily,this.LOD);this.geometry=r.geometry,this.resolution=r.resolution,this.glyphsHa=r.glyphsHa,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}clone(){let e={char:this.char,originalChar:this.originalChar,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,LOD:this.LOD};return new ze(e).copy(this)}static loadFont(e){return new Promise(function(r,o){ze.fontCache[e]?r(ze.fontCache[e]):new Kw().load(ze.FONTS_PATH+e+".json",s=>{ze.fontCache[e]=s,r(s)},void 0,o)})}static loadChar(e,r,o){if(ze.charCache[e]){if(ze.charCache[e][o]&&ze.charCache[e][o].fontFamily===r)return ze.charCache[e][o]}else ze.charCache[e]={};let i=ze.fontCache[r],s=i.generateShapes(e,1);return ze.charCache[e][o]={geometry:new $w(s,o),fontFamily:r,resolution:i.data.resolution,glyphsHa:i.data.glyphs[e].ha},ze.charCache[e][o]}},ht=ze;ht.charCache={},ht.fontCache={},ht._fontPath="/_assets/_fonts/";import{DoubleSide as ga,MeshBasicMaterial as rm,Vector3 as om,Object3D as Xw}from"three";import{Vector2 as tm}from"three";var fa=new tm,kr=class{constructor(t,e,r){this.message=[];this.endLine=!0;this.yLinePos=t,this.lineHeight=e,this.maxCharSize=r,this.nextChar3DPos=new tm(0,this.yLinePos+this.maxCharSize*this.lineHeight),this.align=1}addChar3D(t,e,r=this.message.length){this.message.splice(r,0,t),t.fontSize>this.maxCharSize?(this.maxCharSize=t.fontSize,this.nextChar3DPos.y=this.yLinePos+this.maxCharSize*this.lineHeight,this.fullUpdate(e)):(t.updatePosition(this.nextChar3DPos,e),this.nextChar3DPos.x+=t.charSize)}deleteChar3D(t=this.message.length-1){let e=this.message[t];if(e)return this.message.splice(t,1),this.nextChar3DPos.x-=e.charSize,e}isEndLine(t){this.endLine=t}fullUpdate(t,e=0){this.nextChar3DPos.x=0;for(let r=e,o=this.message.length;r<o;r+=1)this.message[r].updatePosition(this.nextChar3DPos,t),this.nextChar3DPos.x+=this.message[r].charSize}checkOverFlow(t){let e,r=this.message.length-1;if(r<=0)return!1;for(;r>=0;){if(this.message[r].char!==" "){e=this.message[r];break}r-=1}return!!(r>=0&&e&&e.localPosition.x+e.charSize>t)}containSpaceOverFlow(t=this.message.length-1){for(let e=t;e>=0;e-=1)if(this.message[e].char===" ")return!0;return!1}containSpace(t=this.message.length-1){if(this.endLine)return!0;for(let e=t;e>=0;e-=1)if(this.message[e].char===" ")return!0;return!1}popWord(t=this.message.length-1){let e=[],r=!0,o;for(o=t;o>=0;o-=1)if(this.message[o].char===" "){r=!1,e.length===0&&(o-=1,e.splice(0,0,this.message[o]));break}else e.splice(0,0,this.message[o]);return r?e=[]:this.message.splice(o+1,e.length),e}getWord(t=0,e=1){let r=[],o=t;for(o=t;;o+=e){if(!this.message[o]||this.message[o].char===" "){r.length===0&&this.message[o]&&(r.push(this.message[o]),this.message.splice(o,1));break}e>0?(r.push(this.message[o]),this.message.splice(o,1),o-=e):(r.splice(0,0,this.message[o]),this.message.splice(o,1))}return r}getWordAtIndex(t){let e=[];for(let r=t;r<this.message.length&&this.message[r].char!==" ";r++)e.push(this.message[r]);for(let r=t-1;r>=0&&this.message[r].char!==" ";r--)e.splice(0,0,this.message[r]);return e}wordSize(t=0,e=-1){let r=0,o=t;for(;o>=0&&o<this.message.length;){if(this.message[o].char===" "){r===0&&(r=this.message[o].charSize);break}r+=this.message[o].charSize,o+=e}return(o<0||o>=this.message.length)&&!this.endLine?this.message[t]?this.message[t].charSize:999999999:r===0?999999999:r}spaceLeft(t){return t-this.nextChar3DPos.x}popChar(t=this.message.length-1){return this.nextChar3DPos.x-=this.message[t].charSize,this.message.splice(t,1)}isEmpty(){return!this.message.length}updateNextCharPosY(){this.nextChar3DPos.y=this.yLinePos+this.maxCharSize*this.lineHeight}updateYLinePos(t){this.yLinePos=t,this.updateNextCharPosY()}updatelineHeight(t){this.lineHeight=t,this.updateNextCharPosY()}updateFontSize(t,e=0,r=this.message.length-1){for(let o=e;o<=r;o+=1)this.message[o].updateFontSize(t);this.maxCharSize=t,this.nextChar3DPos.y=this.yLinePos+this.maxCharSize*this.lineHeight}countSpaces(){let t=0;for(let e=0;e<this.message.length;e++)this.message[e].char===" "&&(t+=1);return t}alignText(t,e,r,o,i){switch(r){case 1:this.leftAlign(t,i);break;case 3:this.centerAlign(this.spaceLeft(e),t,i);break;case 2:this.rightAlign(this.spaceLeft(e),t,i);break;case 4:this.justifyAlign(this.spaceLeft(e),t,i);break}}offsetCharacters(t,e,r){fa.set(e,r);let o=this.message.length;for(let i=0;i<o;i++)this.message[i].updatePosition(this.message[i].localPosition.add(fa),t)}leftAlign(t,e){this.align=1,this.offsetCharacters(t,0,e)}centerAlign(t,e,r){this.align=3,this.offsetCharacters(e,t/2,r)}rightAlign(t,e,r){this.align=2,this.offsetCharacters(e,t,r)}justifyAlign(t,e,r){if(this.align=4,this.endLine){this.offsetCharacters(e,0,r);return}let o=this.countSpaces();if(o===0){this.offsetCharacters(e,0,r);return}let i=t/o,s=0;for(let a=0;a<this.message.length;a++)this.message[a].char===" "&&(s+=i),fa.set(s,r),this.message[a].updatePosition(this.message[a].localPosition.add(fa),e)}clone(){let t=new kr(this.yLinePos,this.lineHeight,this.maxCharSize);t.nextChar3DPos=this.nextChar3DPos.clone(),t.align=this.align,t.endLine=this.endLine;for(let e=0;e<this.message.length;e++)t.message.push(this.message[e].clone());return t}};var oc=class extends Ue{constructor(e,r=new Xe({transparent:!0,opacity:1,visible:!1,side:ga})){super(e,r);this.objectType="TextFrame";this.charContainer=new Xw,this.add(this.charContainer),this.material.visible=!1,this._geometryUserData=e.userData,this.userData.textFrame={hexColor:null,opacity:1,visible:!0,text:"",fontSize:16,lineHeight:1.5,letterSpacing:1,fontFamily:"roboto_regular",textTransform:1,horizontalAlignment:1,verticalAlignment:1,LOD:16,maxLineSize:this._geometryUserData.parameters.width,textOrigin:new om(this._geometryUserData.parameters.width*-.5,this._geometryUserData.parameters.height*.5,0),textLines:[]},this.createTextLine()}static createFromState(e,r,o){let i=Rs.create({parameters:{width:r.width,height:r.height}}),s=new oc(i).fromState(r,o);return s.uuid=e,s}async updateText(e){this.clearText();let r=this.userData.textFrame,o=r.fontFamily;await ht.loadFont(o),r.text=e;let i=r.textOrigin,s=new rm({visible:r.visible,transparent:!0,side:ga}),a=e.split(`
|
|
943
|
-
`),l=0;this.userData.textFrame.textLines=a.map((c,h)=>{let p=new kr(l,r.lineHeight,r.fontSize);return p.message=c.split("").map(u=>{let d={char:u,fontFamily:o,letterSpacing:r.letterSpacing,fontSize:r.fontSize,LOD:16},m=s.clone();m.color=r.hexColor,m.opacity=r.opacity;let g=new ht(d,m);return p.addChar3D(g,i),this.charContainer.add(g),g}),l+=p.maxCharSize*p.lineHeight,p}),this.textFullUpdate(),this.checkOverFlow()}clearText(){let e=this.userData.textFrame.textLines;for(;this.charContainer.children.length;){let r=this.charContainer.children[0];this.charContainer.remove(r)}for(;e.length;)e.pop()}raycast(e,r){let o=[];if(super.raycast(e,o),o.length>0){r.push(o[0]);return}let i=[];for(let s=0,a=this.charContainer.children.length;s<a;++s)if(this.charContainer.children[s]instanceof ht&&(e.intersectObject(this.charContainer.children[s],!1,i),i.length>0)){i[0].object=this,r.push(i[0]);return}}updateGeometry(e){let r=this.userData,o=this.geometry.userData,i=o.parameters.width,s=o.parameters.height,a=e.parameters?.width??i,l=e.parameters?.height??s,c=r.textFrame;super.updateGeometry(e),c.maxLineSize=a,c.textOrigin.set(-.5*a,.5*l,0),l!==s?(this.checkOverFlow(),this.checkCapacity()):a!==i&&(i<a?this.checkCapacity():i>a&&this.checkOverFlow())}checkOverFlow(e=0){let r=this.userData,o=r.textFrame.textOrigin,i=r.textFrame.textLines;for(let s=e;s<i.length;s++){i[s].updateYLinePos(this.getNewLinePosition(s)),i[s].fullUpdate(o);let a=[];for(;i[s].checkOverFlow(r.textFrame.maxLineSize);)i[s].containSpaceOverFlow()?a.unshift(i[s].getWord(i[s].message.length-1,-1)):a.unshift(i[s].popChar());if(a.length>0){i[s+1]===void 0?(i[s].isEndLine(!1),this.createTextLine()):i[s].endLine&&(this.createTextLine(s+1),i[s].isEndLine(!1),i[s+1].isEndLine(!0));let l=0;for(let c=0;c<a.length;c+=1)for(let h=0;h<a[c].length;h+=1)i[s+1].addChar3D(a[c][h],o,l),l+=1;i[s+1].fullUpdate(o)}i[s].fullUpdate(o)}this.textFullUpdate(e)}checkCapacity(e=0){let r=this.userData,o=r.textFrame.textOrigin,i=r.textFrame.maxLineSize,s=r.textFrame.textLines;for(let a=e;a<s.length;a+=1)if(s[a].updateYLinePos(this.getNewLinePosition(a)),s[a].fullUpdate(o),!!s[a-1])for(;!s[a-1].endLine;){let l,c=s[a-1].spaceLeft(i);if(s[a].wordSize(0,1)<=c){s[a].containSpace()?l=s[a].getWord(0,1):l=s[a].popChar(0);for(let h=0;h<l.length;h+=1)l[h]&&s[a-1].addChar3D(l[h],o)}else{s[a].isEmpty()?(s[a].endLine&&s[a-1].isEndLine(!0),s.splice(a,1),a-=1):(s[a].updateYLinePos(this.getNewLinePosition(a)),s[a].fullUpdate(o));break}}this.textFullUpdate(e)}createTextLine(e=this.userData.textFrame.textLines.length){let o=this.userData.textFrame;o.textLines.splice(e,0,new kr(this.getNewLinePosition(e),o.lineHeight,o.fontSize))}textFullUpdate(e=0){let o=this.userData.textFrame,i=o.textLines,s=this.getVerticalAlignmentOffSet();for(let a=e;a<i.length;a++)i[a].updateYLinePos(this.getNewLinePosition(a)),i[a].fullUpdate(o.textOrigin),i[a].alignText(o.textOrigin,o.maxLineSize,o.horizontalAlignment,o.verticalAlignment,s)}getVerticalAlignmentOffSet(){switch(this.userData.textFrame.verticalAlignment){case 1:return 0;case 2:return this.getRemainingVerticalSpace()/2;case 3:return this.getRemainingVerticalSpace();default:return 0}}getRemainingVerticalSpace(){let r=this.userData.textFrame.textLines;return this.geometry.userData.parameters.height-this.getNewLinePosition(r.length)}getNewLinePosition(e){let o=this.userData.textFrame.textLines,i=0;for(let s=0;s<e;s+=1)i+=o[s].maxCharSize*o[s].lineHeight;return i}updateColor(e){let r=this.userData;r.textFrame.hexColor=e;let o=r.textFrame.textLines;for(let i=0;i<o.length;i++){let s=o[i].message;for(let a=0;a<s.length;a++){let l=s[a].material;l.color?.isColor&&(l.color=e)}}}updateOpacity(e){let r=this.userData;r.textFrame.opacity=e;let o=r.textFrame.textLines;for(let i=0;i<o.length;i++){let s=o[i].message;for(let a=0;a<s.length;a++){let l=s[a].material;l.opacity=e}}}updateVisible(e){let r=this.userData;r.textFrame.visible=e;let o=r.textFrame.textLines;for(let i=0;i<o.length;i++){let s=o[i].message;for(let a=0;a<s.length;a++){let l=s[a].material;l.visible=e}}}async updateFontFamily(e){await ht.loadFont(e);let o=this.userData.textFrame,i=o.textLines;o.fontFamily=e;for(let s=0;s<i.length;s++){let a=i[s].message;for(let l=0;l<a.length;l++)a[l].updateFontFamily(e)}this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateFontSize(e){let o=this.userData.textFrame,i=o.textLines,s=o.fontSize;o.fontSize=e;for(let a=0;a<i.length;a++)i[a].updateFontSize(e);this.textFullUpdate(),e>s?this.checkOverFlow():e<s&&this.checkCapacity()}async updateTextTransform(e){let o=this.userData.textFrame;await ht.loadFont(o.fontFamily);let i=o.textLines;switch(o.textTransform=e,e){case 2:for(let s=0;s<i.length;s++){let a=i[s].message;for(let l=0;l<a.length;l++)i[s].message[l].updateChar(a[l].char.toUpperCase())}break;case 3:for(let s=0;s<i.length;s++){let a=i[s].message;for(let l=0;l<a.length;l++)i[s].message[l].updateChar(a[l].char.toLowerCase())}break;default:for(let s=0;s<i.length;s++){let a=i[s].message;for(let l=0;l<a.length;l++)i[s].message[l].updateChar(a[l].originalChar)}}this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateLetterSpacing(e){let r=this.userData,o=r.textFrame.textLines;r.textFrame.letterSpacing=e;for(let i=0;i<o.length;i++){let s=o[i].message;for(let a=0;a<s.length;a++)s[a].updateLetterSpacing(e)}this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateLOD(e){let r=this.userData;r.textFrame.LOD=e;let o=r.textFrame.textLines;for(let i=0;i<o.length;i++);this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateLineHeight(e){let r=this.userData,o=r.textFrame.textLines;r.textFrame.lineHeight=e;for(let i=0;i<o.length;i++)o[i].updatelineHeight(e);this.textFullUpdate()}updateVerticalAlignment(e){let r=this.userData;r.textFrame.verticalAlignment=e,this.textFullUpdate()}updateHorizontalAlignment(e){let r=this.userData;r.textFrame.horizontalAlignment=e,this.textFullUpdate()}toJSON(e){let r=super.toJSON(e),o=r.object;o.objectType="TextFrame";let s=this.userData.textFrame.textLines.map(a=>{let l=a.message.map(c=>({char:c.char,originalChar:c.originalChar,fontFamily:c.fontFamily,letterSpacing:c.letterSpacing,fontSize:c.fontSize,LOD:c.LOD}));return{align:a.align,endLine:a.endLine,lineHeight:a.lineHeight,maxCharSize:a.maxCharSize,yLinePos:a.yLinePos,message:l}});return o.userData.textFrame.textLinesData=s,r}async fromJSONasync(e){if(super.fromJSON(e),e.userData!==void 0){let r=e.userData.textFrame;await ht.loadFont(r.fontFamily),r.textOrigin=new om(r.textOrigin.x,r.textOrigin.y,r.textOrigin.z);let o=new rm({color:r.hexColor,opacity:r.opacity,visible:r.visible,transparent:!0,side:ga});r.textLinesData&&(r.textLines=r.textLinesData.map((i,s)=>{let a=new kr(Number(i.yLinePos),Number(i.lineHeight),Number(i.maxCharSize)),l=i.message.map((c,h)=>{if(c.char===void 0){let d=r.textLines[s].message[h];if("geometries"in d){let m=d.geometries[0].userData.parameters;Object.assign(c,{LOD:m.lod,char:m.char,fontFamily:m.fontFamily,fontSize:m.fontSize,letterSpacing:m.letterSpacing,originalChar:m.char})}}let p={char:c.char,fontFamily:c.fontFamily,letterSpacing:Number(c.letterSpacing),fontSize:Number(c.fontSize),LOD:c.LOD},u=new ht(p,o.clone());return a.addChar3D(u,r.textOrigin),this.charContainer.add(u),u});return a.message=l,a}),this.userData.textFrame=r),this.textFullUpdate()}return this}fromTextFrameData(e,r){if(e.color!==void 0){let o=Ge(e.color,r);this.updateColor(o),this.updateOpacity(o.a)}e.alpha!==void 0&&this.updateOpacity(e.alpha),e.font!==void 0&&this.updateFontFamily(e.font),e.horizontalAlign!==void 0&&this.updateHorizontalAlignment(e.horizontalAlign),e.verticalAlign!==void 0&&this.updateVerticalAlignment(e.verticalAlign),e.textTransform!==void 0&&this.updateTextTransform(e.textTransform),e.fontSize!==void 0&&this.updateFontSize(e.fontSize),e.lineHeight!==void 0&&this.updateLineHeight(e.lineHeight),e.letterSpacing!==void 0&&this.updateLetterSpacing(e.letterSpacing),e.text!==void 0&&e.text!==""&&this.updateText(e.text),(e.width!==void 0||e.height!==void 0)&&this.updateGeometry({parameters:{width:e.width,height:e.height}})}fromState(e,r){return super.fromState(e),this.fromTextFrameData(e,r),this}convertToVector(){let{fontFamily:e,hexColor:r}=this.userData.textFrame,o=new Nr;o.name="Text Shape";let i=ht.fontCache[e];for(let s of this.charContainer.children)s instanceof ht&&i.generateShapes(s.char,1).forEach(a=>{let l=new be().fromShape(a);l.applyScale(s.scale.x,s.scale.y);let c=Je.create({shape:l}),h=new Xe({side:ga});h.color=r;let p=new jr(c,h);p.name=s.char,p.position.copy(s.position),p.rotation.copy(s.rotation),o.attach(p)});return o}},so=oc;so.VerticalAlign=Ja,so.HorizontalAlign=$a,so.TextTransform=Ya;import{HemisphereLight as p1,Scene as u1,Vector3 as d1,Color as gm,Fog as m1,Box3 as f1}from"three";import{Box3 as Zw,Matrix4 as ao,Sphere as sm,Vector3 as Qw}from"three";var lm=Hm(nm());var ic;Vs.then(n=>{ic=n});var cm=new ao,e1=new ao,t1=new ao,kt=new Zw,Hr=new Qw,r1=new ao,o1=new ao,vi=class extends Ue{constructor(e,r,o,i=new ct){super(o??r,i);this.subdivPointer=e;this.originalGeometry=r;this.subdividedGeometry=o;this.objectType="SubdivObject";this.hiddenMatrixOld=new ao;this.smoothShading=!0;this.phongAngle=35;this.matrixWorldRigid=new ao;this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!1}static createFromState(e,r,o){let{subdivPointer:i,originalGeometry:s,subdividedGeometry:a}=Et.build(r.geometry,void 0,void 0,!r.flatShading),l=hn(r.material,o),c=new vi(i,s,a||void 0,l);return r.geometry.phongAngle!==void 0&&(c.phongAngle=r.geometry.phongAngle),c.calcBoundingBox(),c.freeSubdivPointer(),c.uuid=e,c.fromState(r),c}shallowClone(e){return new bi(this.geometry,this.material).shallowCopy(this,e)}toJSON(e){let r=super.toJSON(e);return r.object.objectType="SubdivObject",r}buildFromStore(e,r){let{originalGeometry:o,subdividedGeometry:i,subdivPointer:s}=Et.build(e,r,this.subdivPointer,this.smoothShading,this.shearScale);if(e.phongAngle!==void 0&&(this.phongAngle=e.phongAngle),this.subdivPointer=s,o!==void 0&&(this.originalGeometry?.dispose(),this.originalGeometry=o),i!==void 0&&(this.subdividedGeometry?.dispose(),this.subdividedGeometry=i??void 0),this.geometry=this.subdividedGeometry??this.originalGeometry,this.cloner)for(let a of this.cloner.children)a.geometry=this.geometry;e.width&&(this.geometry.userData.parameters={width:e.width,height:e.height,depth:e.depth})}updateMesh(e=!1){Et.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e?this.shearScaleInv:void 0),this.subdividedGeometry&&Et.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=Et.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=Et.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1)),this.geometry=this.subdividedGeometry??this.originalGeometry}raycast(e,r){this.geometry=this.originalGeometry,Ue.prototype.raycast.call(this,e,r),this.geometry=this.subdividedGeometry??this.originalGeometry}updateMatrixWorldSVD(){let e=this.matrixWorld.elements,r=[[e[0],e[4],e[8]],[e[1],e[5],e[9]],[e[2],e[6],e[10]]],{u:o,v:i,q:s}=(0,lm.SVD)(r),a=cm.set(o[0][0],o[0][1],o[0][2],0,o[1][0],o[1][1],o[1][2],0,o[2][0],o[2][1],o[2][2],0,0,0,0,1),l=e1.set(i[0][0],i[0][1],i[0][2],0,i[1][0],i[1][1],i[1][2],0,i[2][0],i[2][1],i[2][2],0,0,0,0,1),c=t1.copy(l).transpose();this.shearScale=r1.makeScale(s[0],s[1],s[2]).multiply(c).premultiply(l),this.shearScaleInv=o1.copy(this.shearScale).invert(),this.matrixWorldRigid.multiplyMatrices(a,c),s.every(h=>Math.abs(s[0]-h)<.01)&&(this.shearScale=void 0,this.shearScaleInv=void 0)}activateSVDCompensation(){this.shearScale!==void 0&&(this.matrixAutoUpdate=!1,this.matrix.copy(this.matrixWorldRigid).copyPosition(this.matrixWorld),this.hiddenMatrixOld.copy(this.hiddenMatrix),this.hiddenMatrix.copy(this.parent.matrixWorld).invert())}deactivateSVDCompensation(){this.shearScale!==void 0&&(this.shearScale=void 0,this.shearScaleInv=void 0,this.matrixAutoUpdate=!0,this.hiddenMatrix.copy(this.hiddenMatrixOld))}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new sm);let r=e.attributes.position,o=e.boundingSphere.center;kt.setFromBufferAttribute(r),kt.getCenter(o),e.boundingSphere.radius=o.distanceTo(kt.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),kt.getSize(Hr);let i={width:Hr.x,height:Hr.y,depth:Hr.z};return this.geometry.userData.parameters=i,i}updateBoundingBox(e){let r=this.originalGeometry;kt.min.set(e[0],e[2],e[4]),kt.max.set(e[1],e[3],e[5]),this.shearScaleInv&&(kt.min.applyMatrix4(this.shearScaleInv),kt.max.applyMatrix4(this.shearScaleInv)),r.boundingSphere===null&&(r.boundingSphere=new sm);let o=r.boundingSphere.center;kt.getCenter(o),r.boundingSphere.radius=o.distanceTo(kt.max),isNaN(r.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),kt.getSize(Hr);let i={width:Hr.x,height:Hr.y,depth:Hr.z};return this.geometry.userData.parameters=i,i}freeSubdivPointer(){this.subdivPointer&&(ic.free_bvh(this.subdivPointer),ic.free_subdivision_surface(this.subdivPointer),this.subdivPointer=0)}updateGeometry(e){this.geometry.userData.scale||(this.geometry.userData.scale=Array(3)),this.geometry.userData.scale[0]=this.geometry.userData.parameters.width===0?1:e.parameters.width/this.geometry.userData.parameters.width,this.geometry.userData.scale[1]=this.geometry.userData.parameters.height===0?1:e.parameters.height/this.geometry.userData.parameters.height,this.geometry.userData.scale[2]=this.geometry.userData.parameters.depth===0?1:e.parameters.depth/this.geometry.userData.parameters.depth,am(this.originalGeometry.attributes,...this.geometry.userData.scale),this.originalGeometry.attributes.position.needsUpdate=!0,this.originalGeometry.attributes.normal.needsUpdate=!0,this.subdividedGeometry&&(am(this.subdividedGeometry.attributes,...this.subdividedGeometry.userData.scale),this.subdividedGeometry.attributes.position.needsUpdate=!0,this.subdividedGeometry.attributes.normal.needsUpdate=!0),this.geometry.userData.parameters={...e.parameters}}};function am(n,t,e,r){let o=n.position.array,i=n.normal.array,s=cm.makeScale(t,e,r).invert().elements,a,l,c;for(var h=0,p=o.length;h<p;h+=3)o[h]*=t,o[h+1]*=e,o[h+2]*=r,a=i[h],l=i[h+1],c=i[h+2],i[h]=s[0]*a+s[4]*l+s[8]*c,i[h+1]=s[1]*a+s[5]*l+s[9]*c,i[h+2]=s[2]*a+s[6]*l+s[10]*c}import{BackSide as i1,BufferGeometry as n1,DoubleSide as s1,FrontSide as a1}from"three";function hm(n,t){t.flatShading!==void 0&&(n.flatShading=t.flatShading,n.needsUpdate=!0),t.wireframe!==void 0&&(n.wireframe=t.wireframe),t.side!==void 0&&(t.side===0?n.side=a1:t.side===1?n.side=i1:n.side=s1)}function l1(n,t){if(Array.isArray(n.material))for(let e of n.material)hm(e,t);else{let e=n.material;hm(e,t)}n.objectType==="SubdivObject"&&t.flatShading!==void 0&&(n.material.flatShading=!1,n.smoothShading=!t.flatShading,n.updateMesh())}function pm(n,t,e){let r;if(t.geometry.type==="SubdivGeometry")r=vi.createFromState(n,t,e);else{let o=t.geometry.type==="BooleanGeometry"?new n1:oa(t.geometry,e),i="materials"in t?wd(t.materials,e):hn(t.material,e);vs.is2DParametricMesh(o.userData.type)?r=new yi(o,i):o?.userData.type==="VectorGeometry"?r=new jr(o,i):t.geometry.type==="NonParametricGeometry"?r=new bi(o,i):t.geometry.type==="BooleanGeometry"?(r=new sa(void 0,i),r.booleanOp=t.geometry.operation,t.geometry.phongAngle!==void 0&&(r.phongAngle=t.geometry.phongAngle)):r=new xi(o,i),r.uuid=n,r.fromState(t)}return l1(r,t),r}function um(n,t,e){return t.type==="Mesh"?pm(n,t,e):t.type==="TextFrame"?so.createFromState(n,t,e):t.type==="Empty"?Nr.createFromState(n,t):t.type==="PointLight"?fi.createFromState(n,t,e):t.type==="SpotLight"?gi.createFromState(n,t,e):t.type==="DirectionalLight"?mi.createFromState(n,t,e):Oo.is(t.type)?wr.createFromState(n,t):(console.error(t),new Nr)}function c1(n,t){t.uniforms[`f${t.id}_transmissionSamplerMap`].value=n.texture,t.uniforms[`f${t.id}_transmissionDepthMap`].value=n.depthTexture}function dm(n,t,e){if(!e.userData.layers)return!1;let r=!1,o=e.userData.layers.getLayersOfType("transmission");return o.length>0?(t.layers.set(3),r=!0,n!==void 0&&o.forEach(i=>c1(n,i))):t.layers.set(0),r}function mm(n,t){let e=!1;return t.traverseEntity(r=>{if(r instanceof Ue)if(Array.isArray(r.material))for(let o=0;o<r.material.length;o++)dm(n,r,r.material[o])&&(e=!0);else dm(n,r,r.material)&&(e=!0)}),e}function fm(n,t){"material"in n&&h1(n.material,t),"geometry"in n&&n.geometry.dispose()}function h1(n,t){hc(n).forEach(e=>{t.isSharedMaterial(e)||e.dispose()})}var ym=new d1,nc=class extends ra(u1){constructor(e,r){super();this.objectType="Scene";this.alpha=1;this.backupFog=new m1(16777215,.1,2e3);this.fogUseBGColor=!1;this.wireframeState=!1;this.needsTransmissionDirty=!0;this._needsTransmission=!1;this._color=new gm(1,0,0);this.bgColor=new gm(1,1,1);this.entityByUuid={};this.ambientLight=new p1(13882323,8553090,.75),this.ambientLight.name="Default Ambient Light",this.personalCamera=this.createPersonalCamera(),this.activeCamera=this.personalCamera,this.sharedAssetManager=r,this.init(e,r)}needsTransmission(e){return this.needsTransmissionDirty&&(this._needsTransmission=mm(e,this),e!==void 0&&(this.needsTransmissionDirty=!1)),this._needsTransmission}find(e){if(e===""||e===void 0)return;let r=this.entityByUuid[e];return r===void 0?this.getObjectByProperty("uuid",e):r}get color(){return this._color}set color(e){this.fogUseBGColor===!0&&this.backupFog.color.copy(e),this._color.copy(e)}get enableFog(){return this.fog!==null}set enableFog(e){this.fog=e===!0?this.backupFog:null}init(e,r){if(this.createChildrenObjects(e.objects,this,r),this.personalCamera.removeFromParent(),this.add(this.personalCamera),this.ambientLight.removeFromParent(),this.add(this.ambientLight),this.setBackgroundColor(Ge(e.backgroundColor,r)),this.updateFog(e.fog,r),this.updateAmbientLight(e.environment.ambientLight,r),this.activeCamera=this.personalCamera,e.publish.playCamera!==null){let o=this.find(e.publish.playCamera);o instanceof wr&&this.switchActiveCamera(o)}this.traverse(o=>{ir(o)&&o.recomputeBoolean()})}clearScene(e){this.traverseEntity(r=>{fm(r,e)});for(let r of this.children)Dt(r)&&r.removeFromParent()}resetAfterClear(e,r){this.init(e,r)}createPersonalCamera(){let e=wr.createFromState(nc.PERSONAL_CAMERA_ID,{...ws.defaultData,name:"Personal Camera"});return e.enableHelper=!1,e.objectHelper.visible=!1,delete e.isEntity,this.registerObjectCreatedInLegacy(e),e}raycast(e){let r=[],o=i=>{for(let s of i.children)Dt(s)&&!s.raycastLock&&s.visible&&((or(s)||vr(s)&&s.enableHelper&&s.objectHelper.parent)&&e.intersectObject(s,!1,r),o(s))};return o(this),r}traverseEntity(e){for(let r of this.children)Dt(r)&&r.traverseEntity(e)}updateFog(e,r){this.enableFog=e.enabled,this.fogUseBGColor=e.useBackgroundColor,e.useBackgroundColor?this.backupFog.color.set(this.bgColor):this.backupFog.color=Ge(e.color,r),this.backupFog.near=e.near,this.backupFog.far=e.far}toJSON(e){return{}}fromJSON(e){return this}dispose(){this.clearScene(this.sharedAssetManager),this.sharedAssetManager.dispose()}updateAmbientLight(e,r){Cd(this.ambientLight,e,r),e.groundColor!==void 0&&(this.ambientLight.groundColor=Ge(e.groundColor,r)),e.enabled!==void 0&&(this.ambientLight.visible=e.enabled)}switchActiveCamera(e){this.activeCamera!==this.personalCamera&&(this.activeCamera.enableHelper=!0),this.activeCamera=e,e.enableHelper=!1}setBackgroundColor(e){this.bgColor=e,this.alpha=e.a}createChildrenObjects(e,r,o){for(let i of e)this.createChildObject(i.id,i.data,i.children,r,o)}registerObjectCreatedInLegacy(e){this.entityByUuid[e.uuid]=e}unregisterObject(e){delete this.entityByUuid[e.uuid];for(let r of e.children)this.unregisterObject(r)}createChildObject(e,r,o,i,s){let a=um(e,r,s);return a&&(this.entityByUuid[e]=a,i.add(a),ir(i)&&or(a)&&(a.prevBooleanObjectParent=i),this.createChildrenObjects(o,a,s)),a}getCenter(e){let r=[];for(let i=0,s=e.length;i<s;++i){let{id:a,recursive:l}=e[i],c=this.find(a),h=l?c.recursiveBBox:c.singleBBox;r.push(...h.vertices)}let o=new f1;return o.setFromPoints(r),o.getCenter(ym),ym}copyMatrixWorld(e,r){if(e===null){r.identity();return}let o=this.find(e);o?r.copy(o.matrixWorld):r.identity()}copyParentMatrixWorld(e,r){if(e===null){r.identity();return}let o=this.find(e)?.parent;o?r.copy(o.matrixWorld):r.identity()}traverseMaterial(e){this.traverseEntity(r=>{if(r instanceof Ue)if(Array.isArray(r.material))for(let o=0;o<r.material.length;o++)e(r.material[o]);else e(r.material)})}updateCanvasSize(e,r){this.activeCamera.setViewplaneSize(e,r);let o,i;e>=r?(o=r/e,i=1):(o=1,i=e/r),this.traverseMaterial(s=>{s.layersList.getLayersOfType("transmission").forEach(l=>{l.uniforms[`f${l.id}_aspectRatio`].value.x=o,l.uniforms[`f${l.id}_aspectRatio`].value.y=i})})}},gn=nc;gn.PERSONAL_CAMERA_ID="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera";import{DRACOLoader as g1}from"three/examples/jsm/loaders/DRACOLoader.js";var qr;function y1(){return qr||(qr=new g1,qr.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),qr.decoderPending}async function x1(n){if(qr){let t={attributeIDs:qr.defaultAttributeIDs,attributeTypes:qr.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await qr.decodeGeometry(new Int8Array(n).buffer,t)}catch(r){console.error(r)}if(e)return{index:e.index?{array:e.index.array}:void 0,attributes:Object.entries(e.attributes).map(([r,o])=>({name:r,itemSize:o.itemSize,array:o.array}))}}return null}async function xm(n){let[t,e]=Oa(fs.deserialize(new Uint8Array(n))),r=[];t.scene.objects.traverse((o,i)=>{i.type==="Mesh"&&i.geometry.type==="NonParametricGeometry"&&i.geometry.data.draco!==void 0&&r.push(i)}),r.length&&await y1();for(let o of r){let i=await x1(Da(o.geometry.data.draco));if(i){i.index&&(o.geometry.data.index={array:i.index.array,itemSize:1,normalized:!1,type:"Uint32Array"});let s={};i.attributes.forEach(({name:a,array:l,itemSize:c})=>{s[a]={array:l,itemSize:c,type:"Float32Array",normalized:!1}}),o.geometry.data.attributes=s,o.geometry.data.draco=void 0}}return e.result().data}var sc=new Map,yn={url:"head",time:0,data:null,next:null,prev:null},Si={url:"tail",time:1/0,data:null,next:null,prev:null};yn.next=Si;Si.prev=yn;var bm=0;function ni(n){if(typeof n=="string")return n;let t=Date.now(),e=sc.get(n);return e===void 0?(e={url:URL.createObjectURL(new Blob([n])),data:n,time:t,next:null,prev:null},sc.set(n,e)):(e.time=t,e.prev.next=e.next,e.next.prev=e.prev),e.prev=Si.prev,e.next=Si,Si.prev.next=e,Si.prev=e,t-bm>1e3*10&&(bm=t+1e3,setTimeout(()=>{let r=Date.now(),o=yn.next;for(;o.time<r-1e3*10;)URL.revokeObjectURL(o.url),sc.delete(o.data),o=o.next,o.prev=yn,yn.next=o},900)),e.url}import{WebGLRenderTarget as b1,LinearMipmapLinearFilter as v1,LinearFilter as S1,ClampToEdgeWrapping as vm,DepthTexture as w1}from"three";var Sm=new Xe,xa=class extends ft{},ba=class{constructor(t){this.materials={};this.images={};this.colors={};this.transmissionRenderTarget=new b1(2048,2048,{generateMipmaps:!0,minFilter:v1,magFilter:S1,wrapS:vm,wrapT:vm}),this.transmissionRenderTarget.depthTexture=new w1(2048,2048),this.penumbraSizeNode=new Ke(5,t.penumbraSize),this.reset(t)}reset(t){for(let[e,r]of Object.entries(t.images))this.addImage(e,r.data);for(let[e,r]of Object.entries(t.colors))this.addColor(e,r);for(let[e,r]of Object.entries(t.materials))this.addMaterial(e,Ul(r,this))}get transmissionSamplerMap(){return this.transmissionRenderTarget.texture}get transmissionDepthMap(){return this.transmissionRenderTarget.depthTexture}addMaterial(t,e){e.uuid=t,this.materials[t]=e}deleteMaterial(t){this.materials[t]&&(this.materials[t].dispose(),delete this.materials[t])}isSharedMaterial(t){return t.uuid in this.materials||t===Sm}getMaterial(t){let e=this.materials[t];return e}getMaterialOrDeletedPlaceholder(t){return this.materials[t]??Sm}getMaterials(){return this.materials}addImage(t,e){if(this.images[t])return this.images[t].onload=()=>{this.onImageLoad&&this.onImageLoad()},this.images[t].src=ni(e),!0;{let r=new Image;return r.src=ni(e),r.onload=()=>{this.onImageLoad&&this.onImageLoad()},this.images[t]=r,!1}}deleteImage(t){this.images[t]&&delete this.images[t]}getDefaultImage(){return this.images.image_0}getImage(t){return this.images[t]}getImages(){return this.images}addColor(t,e){return this.colors[t]?("a"in e?this.colors[t].setRGBA(e.r,e.g,e.b,e.a):this.colors[t].setRGBA(e.r,e.g,e.b,1),!0):("a"in e?this.colors[t]=new xa(e.r,e.g,e.b,e.a):this.colors[t]=new xa(e.r,e.g,e.b,1),!1)}updateColor(t,e){if(this.colors[t]){let r=this.colors[t];return this.colors[t].r=e.r??r.r,this.colors[t].g=e.g??r.g,this.colors[t].b=e.b??r.b,this.colors[t].a=e.a??r.a,!0}return!1}deleteColor(t){this.colors[t]&&delete this.colors[t]}getColor(t){return this.colors[t]}dispose(){Object.keys(this.materials).forEach(e=>this.deleteMaterial(e)),this.transmissionRenderTarget.depthTexture.dispose(),this.transmissionRenderTarget.dispose(),this.onImageLoad=void 0}};import{Mesh as yH}from"three";import{mergeBufferGeometries as vH}from"three/examples/jsm/utils/BufferGeometryUtils.js";function wm(n){let t;if(!!n.index)for(let e=0;e<n.index.array.length;e+=3)t=n.index.array[e],n.index.array[e]=n.index.array[e+2],n.index.array[e+2]=t}import{Color as Nm,ShaderLib as N1}from"three";function Lm(n){let t=new Set;return n.traverse(e=>{if(or(e))if(Ve(e.material))e.material.forEach(r=>{let o=r;t.has(o)||t.add(o)});else{let r=e.material;t.has(r)||t.add(r)}}),t.forEach(e=>{if(e instanceof Array)return;let r=e.onBeforeCompile.bind(e);L1(e)?(Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new Nm,specularColor:new Nm}),e.onBeforeCompile=(o,i)=>{r&&r(o,i),o.uniforms=Object.assign(N1.physical.uniforms,o.uniforms),e.userData.layers.getLayersOfType("transmission").forEach(s=>{o.uniforms.transmissionSamplerMap.value&&(s.uniforms["f"+s.id+"_transmissionSamplerMap"].value=o.uniforms.transmissionSamplerMap.value,s.uniforms["f"+s.id+"_transmissionSamplerSize"].value=o.uniforms.transmissionSamplerSize.value)})}):C1(e)||(e.onBeforeCompile=(o,i)=>{r&&r(o,i),e.transparent=!1})}),n}function L1(n){return n.userData.layers.getLayersOfType("transmission").length>0}function C1(n){let t=n.userData.layers.head,e=0;for(;t!==void 0;){if(t.type!=="light"&&t.type!=="fresnel"){let r=t.uniforms["f"+t.id+"_alpha"];r&&(e+=(1-e)*r.value)}t=t.next}return e<1}function Cm(n){return n.traverse(t=>{if(t.type==="Camera"){let e=t;e.type=e.cameraType}}),n}function Tm(n){let t=[],e=(r,o=0)=>{let i=o>0?r+o:r;return t.includes(i)?e(r,o+1):i};return n.traverse(r=>{if(t.includes(r.name)){let o=r.name,i=e(r.name);if(r.name=i,r.isMesh){let s=r;s.material instanceof Array?s.material.forEach(a=>{a.name=a.name.replace(o,i)}):s.material.isAsset||(s.material.name=s.material.name.replace(o,i))}}t.push(r.name)}),n}import{mergeBufferGeometries as T1}from"three/examples/jsm/utils/BufferGeometryUtils.js";function Mm(n){let t=[];return n.traverse(e=>{e instanceof io&&t.push(e)}),t.forEach(e=>{let r=e.object,o=e.children,i=o.map(a=>{a.updateMatrix();let l=a.geometry.clone().applyMatrix4(a.matrix);return a.matrix.determinant()<0&&wm(l),l}),s=T1(e.parameters.hideBase?i:[r.geometry,...i]);r.geometry=s,r.material=o[0].material,r.remove(e)}),n}function Pm(n){return n.traverse(t=>{t.matrixAutoUpdate=!0}),n}var Im="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",ac=class extends P1{load(t,e,r,o=console.error){let i=new M1(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),t.endsWith(".spline")?console.warn(Im+" The .spline files are only meant to be used by the Editor."):t.endsWith(".splinecode")||console.warn(Im),i.load(t,async s=>{try{if(typeof s=="string")throw new Error("The .spline file is not binary!");let a=await this.parse(s);e(a)}catch(a){o(a)}},r,o)}async parse(t){let e=await xm(t),r=new ba(e.shared);Object.values(r.getMaterials()).forEach(s=>Object.assign(s,{isAsset:!0}));let o=new gn(e.scene,r);o.remove(o.personalCamera),e.scene.environment.ambientLight.enabled||o.remove(o.ambientLight);let i=e.scene.publish.playCamera;if(i){let s=o.find(i);s&&Ld(s)&&Object.assign(s,{makeDefault:!0})}return o=Mm(o),o=Lm(o),o=Cm(o),o=Tm(o),o=Pm(o),o}};export{ac as default};
|
|
1329
|
+
`)}return r}copy(e){return super.copy(e),e.color&&(this.color=e.color.clone()),this.roughness=e.roughness.clone(),this.metalness=e.metalness.clone(),e.position&&(this.position=e.position.clone()),e.afterColor&&(this.afterColor=e.afterColor.clone()),e.alpha&&(this.alpha=e.alpha.clone()),e.reflectivity&&(this.reflectivity=e.reflectivity.clone()),e.shadingAlpha&&(this.shadingAlpha=e.shadingAlpha.clone()),e.shadingBlend&&(this.shadingBlend=e.shadingBlend.clone()),this}};var Zs=class extends bt{constructor(e=new Qs,r){super(e,e,r);this.type="StandardNodeMaterial",this.fragment=e}get color(){return this.fragment.color}set color(e){this.fragment.color=e}get afterColor(){return this.fragment.afterColor}set afterColor(e){this.fragment.afterColor=e}get alpha(){return this.fragment.alpha}set alpha(e){this.fragment.alpha=e}get shadingAlpha(){return this.fragment.shadingAlpha}set shadingAlpha(e){this.fragment.shadingAlpha=e}get shadingBlend(){return this.fragment.shadingBlend}set shadingBlend(e){this.fragment.shadingBlend=e}get position(){return this.fragment.position}set position(e){this.fragment.position=e}get roughness(){return this.fragment.roughness}set roughness(e){this.fragment.roughness=e}get metalness(){return this.fragment.metalness}set metalness(e){this.fragment.metalness=e}get reflectivity(){return this.fragment.reflectivity}set reflectivity(e){this.fragment.reflectivity=e}};var ea=class extends Zs{constructor(t,e,r){super(e,t),this.userData.type="PhysicalMaterial",this.userData.category="Physical",this.userData.layers=r??this._getLayerStack(t?.map)}get layersList(){return this.userData.layers}set layersList(t){this.userData.layers=t}};import{Color as Hl}from"three";import{Matrix3 as Md,Texture as jl,Vector2 as hi,Vector3 as ar,Vector4 as kl}from"three";function Ad(i,t){switch(i.data.type){case"light":return St(i);case"fresnel":return jS(i,t);case"gradient":return kS(i);case"depth":return HS(i);case"normal":return WS(i);case"noise":return qS(i,t);case"texture":return $S(i,t);case"rainbow":return XS(i);case"toon":return KS(i,t);case"outline":return YS(i,t);case"transmission":return JS(i,t);case"matcap":return QS(i,t);case"displace":return ZS(i);case"color":default:return US(i,t)}}function Od(i){return{type:i.data.type}}function St(i){let{alpha:t,mode:e}=i.data;return{...Od(i),alpha:t,mode:e}}function US(i,t){return{...St(i),color:Ae(i.data.color,t)}}function jS(i,t){let{bias:e,scale:r,intensity:o,factor:n,color:s}=i.data;return{...St(i),color:Ae(s,t),bias:e,scale:r,intensity:o,factor:n}}function kS(i){let{gradientType:t,smooth:e,colors:r,steps:o,angle:n,offset:s,morph:a}=i.data;return{...St(i),gradientType:t,smooth:e,colors:r.map(l=>new kl(l[0],l[1],l[2],l[3])),num:r.length,steps:o,offset:new hi(...s),morph:new hi(...a),angle:n}}function HS(i){let{gradientType:t,near:e,far:r,isVector:o,isWorldSpace:n,origin:s,direction:a,colors:l,steps:c,smooth:h,num:p}=i.data;return{...St(i),gradientType:t,near:e,far:r,isVector:o,isWorldSpace:n,origin:new ar(...s),direction:a?new ar(...a):new ar(1,0,0),num:p,colors:l.map(u=>new kl(u[0],u[1],u[2],u[3])),steps:c,smooth:h}}function WS(i){let{cnormal:t}=i.data;return{...St(i),cnormal:new ar(t[0],t[1],t[2])}}function qS(i,t){let{data:e}=i;return{...St(i),scale:e.scale,move:e.move,fA:new hi(...e.fA),fB:new hi(...e.fB),size:new ar(...e.size),distortion:new hi(...e.distortion),colorA:Ae(e.colorA,t),colorB:Ae(e.colorB,t),colorC:Ae(e.colorC,t),colorD:Ae(e.colorD,t),noiseType:e.noiseType}}function $S(i,t){let{projection:e,axis:r,side:o,crop:n,size:s}=i.data,{image:a,wrapping:l,repeat:c,offset:h}=i.data.texture,p=new jl,u;if(typeof a=="string")u=t?.getImage(a);else{let d=new Image;d.src=sn(a.data),d.onload=()=>{t?.onImageLoad&&t?.onImageLoad()},u=d}return p.image=u,p.repeat.set(c[0],c[1]),p.offset.set(h[0],h[1]),p.wrapS=p.wrapT=l,{...St(i),texture:p,mat:new Md().setUvTransform(h[0],h[1],c[0],c[1],0,0,0),crop:n,projection:e,axis:["x","y","z"].indexOf(r),side:[2,0,1].indexOf(o),size:s}}function XS(i){let{data:t}=i;return{...St(i),filmThickness:t.filmThickness,movement:t.movement,wavelengths:new ar(...t.wavelengths),noiseStrength:t.noiseStrength,noiseScale:t.noiseScale,offset:new ar(...t.offset)}}function KS(i,t){let{data:e}=i;return{...St(i),positioning:e.positioning,colors:e.colors.map(r=>new kl(r[0],r[1],r[2],r[3])),num:e.colors.length,steps:e.steps,source:new ar(...e.source),isWorldSpace:e.isWorldSpace,noiseStrength:e.noiseStrength,noiseScale:e.noiseScale,shadowColor:Ae(e.shadowColor,t),offset:new ar(...e.offset)}}function YS(i,t){let{data:e}=i;return{...St(i),outlineColor:Ae(e.outlineColor,t),contourColor:Ae(e.contourColor,t),outlineWidth:e.outlineWidth,contourWidth:e.contourWidth,outlineThreshold:e.outlineThreshold,contourThreshold:e.contourThreshold,outlineSmoothing:e.outlineSmoothing,contourFrequency:e.contourFrequency,contourDirection:e.contourDirection,positionalLines:e.positionalLines,compensation:e.compensation,resolution:t.resolutionNode,normalMap:t.normalMap,depthMap:t.normalRenderTarget.depthTexture,pixelRatio:t.pixelRatioNode}}function JS(i,t){let{data:e}=i;return{...St(i),thickness:e.thickness,ior:e.ior,roughness:e.roughness,transmissionSamplerMap:t.transmissionSamplerMap,transmissionDepthMap:t.transmissionDepthMap}}function QS(i,t){let e=new jl,{image:r}=i.data.texture,o;if(typeof r=="string")o=t?.getImage(r);else{let s=new Image;s.src=sn(r.data),s.onload=()=>{t?.onImageLoad&&t?.onImageLoad()},o=s}e.image=o;let n=16777215;return{...St(i),color:n,texture:e}}function ZS(i){let{data:t}=i,e={...Od(i),intensity:t.intensity};if(t.displacementType==="noise")return{...e,offset:new ar(...t.offset),scale:t.scale,movement:t.movement,noiseType:t.noiseType};{let r=new jl,o=new Md().setUvTransform(0,0,1,1,0,0,0);return{...e,texture:r,mat:o,crop:t.crop}}}function Dd(i,t,e){if(e.type==="displace"&&(i==="intensity"||i==="visible")){let r=t.uniforms[`f${t.id}_intensity`];return r?(r.value=e.intensity*(e.visible?1:0),r):void 0}if(e.type!=="displace"&&(i==="alpha"||i==="visible")){let r=t.uniforms[`f${t.id}_alpha`];if(!r)return;if(r.value=e.alpha*(e.visible?1:0),e.type==="outline"&&i=="visible"){let o=t.uniforms[`f${t.id}_compensation`];o&&(o.value=e.compensation&&e.visible)}return r}}import{Color as Ed,Vector4 as ew}from"three";var an;(t=>{function i(e){return new Ed(e.x,e.y,e.z).getHex()}t.getHex=i})(an||(an={}));var _d;(t=>{function i(e){return new ew(e.r,e.g,e.b,e.a)}t.getThreeVector4=i})(_d||(_d={}));var Bd;(e=>{function i(r,o){r.setRGB(o.r,o.g,o.b)}e.setThreeColor=i;function t(r){return new Ed(r.r,r.g,r.b).getHex()}e.getHex=t})(Bd||(Bd={}));function pi(i,t){return typeof i=="string"?t.getMaterialOrDeletedPlaceholder(i):Wl(i,t)}function Gd(i,t){return i.map(e=>pi(e,t))}function Wl(i,t){let e=i.layers??Qr.defaultTwoLayerData("phong").layers,r=tw(e),o;switch(r.category){case"basic":o=new Ft;break;case"lambert":{o=new Xs;break}case"toon":{o=new Js;break}case"physical":o=new ea;break;case"phong":default:{o=new nn;break}}o.name=i.name??"Untitled Material";let n=o.userData.layers;rw(n);for(let s=e.length-1;s>=0;s--)ow(n,e[s],t);switch(r.category){case"basic":break;case"lambert":{let l=o,h=Ae(r.emissive,t);h instanceof Hl?l.emissive.value=h:l.emissive.value.setHex(an.getHex(h));break}case"toon":{let l=o,c=r;l.shininess.value=c.shininess;let h=Ae(c.specular,t);h instanceof Hl?l.specular.value=h:l.specular.value.setHex(an.getHex(h));break}case"physical":let s=o,a=r;s.metalness.value=a.metalness,s.roughness.value=a.roughness,s.reflectivity.value=a.reflectivity;break;case"phong":default:{let l=o,c=r;l.shininess.value=c.shininess;let h=Ae(c.specular,t);h instanceof Hl?l.specular.value=h:l.specular.value.setHex(an.getHex(h));break}}return o.penumbraSizeNode=t.penumbraSizeNode,n.blendColors(),n.blendAfterColors(),n.blendPositions(),o}function tw(i){for(let t of i)if(t.data.type==="light")return t.data;return{type:"light",category:"basic",visible:!0,alpha:1,mode:0}}function rw(i){for(let t of i.getLayers())i.removeLayer(t.id)}function ow(i,t,e){let r=Ad(t,e);r.type==="transmission"&&(r.transmissionSamplerMap=e?.transmissionSamplerMap,r.transmissionDepthMap=e?.transmissionDepthMap),r.type==="outline"&&(r.normalMap=e?.normalMap,r.depthMap=e?.normalRenderTarget.depthTexture);let o=i.addLayer(r);o.uuid=t.id;for(let n in t.data)Dd(n,o,t.data)}function aw(i,t){t.uniforms[`f${t.id}_transmissionSamplerMap`].value=i.texture,t.uniforms[`f${t.id}_transmissionDepthMap`].value=i.depthTexture}function lw(i,t){t.uniforms[`f${t.id}_normalMap`].value=i.texture,t.uniforms[`f${t.id}_depthMap`].value=i.depthTexture}function cw(i){if(i.geometry.attributes.extrudeNormals)return;let t=new Map,e=i.geometry.attributes.position.array,r=i.geometry.attributes.normal.array,o=new Float32Array(e.length);for(let n=0;n<e.length;n+=3){let s=`${e[n]}_${e[n+1]}_${e[n+2]}`,a=new $l(r[n],r[n+1],r[n+2]);t.has(s)?t.get(s)?.normals.push(a):t.set(s,{normals:[a],result:new $l})}t.forEach((n,s)=>{for(let a of n.normals)n.result.add(a);n.result.divideScalar(n.normals.length)});for(let n=0;n<e.length;n+=3){let s=`${e[n]}_${e[n+1]}_${e[n+2]}`,a=t.get(s)?.result;a&&(o[n]=a.x,o[n+1]=a.y,o[n+2]=a.z)}i.geometry.setAttribute("extrudeNormal",new Fd(o,3))}function hw(i){if(i.geometry.attributes.extrudeNormals)return;let t=i.geometry.attributes.position.array,e=new Float32Array(t.length),r=new $l;for(let o=0;o<t.length;o+=3)r.set(t[o],t[o+1],t[o+2]).normalize(),e[o]=r.x,e[o+1]=r.y,e[o+2]=r.z;i.geometry.setAttribute("extrudeNormal",new Fd(e,3))}function ui(i){i.objectType==="Mesh2D"?hw(i):cw(i)}function Xl(i){let t=i.geometry.attributes.position.array,e=new Float32Array(t.length),r=parseInt(i.uuid.replace(/\D/g,"")),o=[ql.seededRandom(r),ql.seededRandom(r+1e4),ql.seededRandom(r+2e4)];for(let n=0;n<t.length;n++)e[n]=o[n%3];i.geometry.setAttribute("randomColor",new sw(e,3))}function Rd(i,t,e){if(!e.userData.layers)return!1;let r=!1,o=e.userData.layers.getLayersOfType("transmission"),n=e.userData.layers.getLayersOfType("outline");return n.length>0&&(t.layers.set(8),o.length===0&&t.layers.enable(3),t.cloner?.refreshClonerMasks(),r=!0,i!==void 0&&n.forEach(s=>lw(i,s)),Xl(t),ui(t)),o.length===0&&n.length===0&&(t.layers.set(0),t.cloner?.refreshClonerMasks()),r}function zd(i,t,e){if(!e.userData.layers)return!1;let r=!1,o=e.userData.layers.getLayersOfType("transmission"),n=e.userData.layers.getLayersOfType("outline");return o.length>0&&(t.layers.set(3),n.length>0&&t.layers.enable(8),t.cloner?.refreshClonerMasks(),r=!0,i!==void 0&&o.forEach(s=>aw(i,s))),o.length===0&&n.length===0&&(t.layers.set(0),t.cloner?.refreshClonerMasks()),r}function Ud(i,t){let e=!1;return t.traverseEntity(r=>{if(r instanceof Vd)if(Array.isArray(r.material))for(let o=0;o<r.material.length;o++)Rd(i,r,r.material[o])&&(e=!0);else Rd(i,r,r.material)&&(e=!0)}),e}function jd(i,t){let e=!1;return t.traverseEntity(r=>{if(r instanceof Vd)if(Array.isArray(r.material))for(let o=0;o<r.material.length;o++)zd(i,r,r.material[o])&&(e=!0);else zd(i,r,r.material)&&(e=!0)}),e}function kd(i,t){"material"in i&&pw(i.material,t),"geometry"in i&&i.geometry.dispose()}function pw(i,t){gc(i).forEach(e=>{t.isSharedMaterial(e)||e.dispose()})}var Xe=class extends Ot(uw){constructor(e,r){super(e,r);this.isAbstractMesh=!0;this.isBooleanMesh=!1;this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new dw;this.booleanExclude=null;Array.isArray(r)&&e.groups.length===0&&e.addGroup(0,e.getAttribute("position").count,0)}get cloner(){return this._cloner}set cloner(e){this._cloner&&this.remove(this._cloner),e&&this.add(e),this._cloner=e}updateGeometry(e){let r=this.geometry,o=Kl[r.userData.type],n=this.objectType==="NonParametric"?Object.assign({},r.userData,{geometry:r}):r.userData,s=o.build(o.normalizeInputs(e,n)),a=r.uuid;if(this.geometry.dispose(),this.geometry=s,this.geometry.uuid=a,this.geometry.computeBoundingSphere(),ui(this),r.getAttribute("randomColor")&&Xl(this),this.cloner)for(let c of this.cloner.children)c.geometry=this.geometry}shallowClone(e){return new this.constructor(this.geometry,this.material).shallowCopy(this,e)}clone(e){let r=this.objectType==="NonParametric"?Object.assign({},this.geometry.userData,{geometry:this.geometry.clone()}):this.geometry.userData,o=di(r),n=this.material;return new this.constructor(o,n).copy(this,e)}copy(e,r=!0){return super.copy(e,r),e.cloner&&(this.cloner=new eo(e,e.cloner.parameters),this.add(this.cloner)),this}setFromClonerState(e){e===null?(this.cloner?.onRemoved(),this.cloner=void 0):(this.cloner===void 0&&(this.cloner=new eo(this)),this.cloner.fromClonerState(e))}fromState(e,r){return super.fromState(e),e.type==="Mesh"&&(this.setFromClonerState(e.cloner),this.castShadow=e.castShadow??!0,this.receiveShadow=e.receiveShadow??!0,this.booleanExclude=e.booleanExclude??null),this}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(Ut.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),tr(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)er(e)&&(e.freeBooleanPointer(),tr(e)&&e.invalidateUpstreamBooleanData())}};var gw=new Yl(0,0,1),Hd=new Yl,Wd=new Yl,qd=new fw,jr=class extends Xe{constructor(e=Ke.create({}),r){super(e,r);this.recursiveSelection=!1;this.objectType="VectorObject";this.eventDispatcher=new mw;this._onShapeUpdate=()=>{this.updateGeometry({}),this.geometry.computeBoundingSphere(),this.geometry.computeBoundingBox()};this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!0,this.shape=e.userData.shape,this.shape.eventDispatcher?.addEventListener("update",this._onShapeUpdate)}fromState(e){return super.fromState(e),this.shape.update(),this}setHelperVisibility(){}updateGeometry(e){if(super.updateGeometry(e),"userData"in this.geometry){let r=this.geometry.userData.parameters;this.eventDispatcher.dispatchEvent({type:"geometryUpdate",parameters:r})}}setShape(e){this.shape&&this.shape.eventDispatcher?.removeEventListener("update",this._onShapeUpdate),this.shape=e,this.shape.eventDispatcher?.addEventListener("update",this._onShapeUpdate)}updateWorldMatrix(e,r){super.updateWorldMatrix(e,r),qd.getNormalMatrix(this.matrixWorld),Hd.copy(gw).applyMatrix3(qd).normalize(),Wd.setFromMatrixPosition(this.matrixWorld),this.shape.plane.setFromNormalAndCoplanarPoint(Hd,Wd)}clone(e){let r=this.shape.clone(),o=this.material,n=this.geometry.userData,s=Ke.create(Object.assign({},n,{shape:r})),a=new jr(s,o).copy(this,e);return a.shape=r,r.update(),a}raycast(e,r){Xe.prototype.raycast.call(this,e,r)}};function ta(i,t){return xw(i)}function xw(i){let t={parameters:i,type:i.type};if(i.type==="VectorGeometry"){let r=ve.createFromState(i.shape,i.width,i.height);t.shape=r}else i.type==="NonParametricGeometry"&&(i.data.groups&&i.data.groups.forEach(r=>r.materialIndex=Math.max(r.materialIndex??0,0)),t.geometry=new yw().parse(i));let e;try{e=di(t)}catch(r){console.error(r)}if(!e){let r=ve.createFromState(Eo.defaultData(),100,100);t.shape=r,e=di(t)}return e}var ue;Rs.then(i=>{ue=i});var Kd=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),Yd=new Uint32Array([0,1,2,3]),Jd=new Uint8Array([4]),_t=class{static build(i,t,e,r,o){let n,s,a,l=i?.phongAngle??t?.phongAngle??35;if(r===!1&&(l=-1),i.positionWASM!==void 0){e&&e!==0&&(ue.free_bvh(e),ue.free_subdivision_surface(e));try{n=_t.allocate(i,o)}catch(c){console.error(c,i),n=_t.allocate({positionWASM:Kd,indexWASM:Yd,verticesPerFaceWASM:Jd},o)}ue.set_destination_refinement_level(n,0),s=_t.buildLevel(n,!0,l)}else n=e,i.phongAngle!==void 0&&(s=_t.buildLevel(n,!0,l));return i.subdivisions!==void 0&&(ue.set_destination_refinement_level(n,i.subdivisions),i.subdivisions>0?a=_t.buildLevel(n,!1,l):a=null),{subdivPointer:n,originalGeometry:s,subdividedGeometry:a}}static primitiveToQuads(i,t){i.widthSegments>16&&(i.widthSegments=16),i.heightSegments>16&&(i.heightSegments=16),i.depthSegments>16&&(i.depthSegments=16),i.radialSegments>16&&(i.radialSegments=16),i.type==="DodecahedronGeometry"&&(i.detail=0);let e=i.shape!==void 0?t.geometry:ta(i),r,o,n,s;return{positions:r,triIndices:s}=rc(e.getAttribute("position"),e.getIndex()),{indices:o,verticesPerFace:n}=oc(r,s,e),{positions:r,indices:o,verticesPerFace:n}}static allocate(i,t){let e,r,o,n=[],s=[];i.positionWASM&&i.positionWASM.length>0?(e=i.positionWASM,r=i.indexWASM,o=i.verticesPerFaceWASM):(e=Kd,r=Yd,o=Jd);let a=e.length,l=r.length,c=o.length,h=e.length+n.length+s.length,p=r.length+o.length,u=h*Float32Array.BYTES_PER_ELEMENT+p*Uint32Array.BYTES_PER_ELEMENT,d=h*Float32Array.BYTES_PER_ELEMENT,m=p*Uint32Array.BYTES_PER_ELEMENT,g=ue._malloc(u),x=new Float32Array(ue.HEAPF32.buffer,g,h),y=new Uint32Array(ue.HEAPU32.buffer,g+d,p);x.set(e,0),x.set(n,e.length),x.set(s,e.length+n.length),y.set(r,0),y.set(o,r.length);let v;i?.scaleBaked?.some(S=>S!==1)&&(v=new vw().makeScale(...i.scaleBaked)),t&&(v?v.premultiply(t):v=t);let P=v?ue.alloc_subdivision_surface2(g,a,g+d,l,g+d+r.length*Uint32Array.BYTES_PER_ELEMENT,c,v.elements):ue.alloc_subdivision_surface(g,a,g+d,l,g+d+r.length*Uint32Array.BYTES_PER_ELEMENT,c);return ue._free(g),P}static buildLevel(i,t,e,r,o){let n=o?ue.get_mesh_data2(i,t?ue.Level.CONTROL:ue.Level.REFINED,e,o.elements):ue.get_mesh_data(i,t?ue.Level.CONTROL:ue.Level.REFINED,e),s=8,a=ue.HEAPU32.subarray(n>>2,(n>>2)+s),l=a.subarray(4,4+4),c=0,h=ue.HEAPU32[a[c]>>2],p=ue.HEAPF32.subarray(h>>2,(h>>2)+l[c]);c++;let u=ue.HEAPU32[a[c]>>2],d=ue.HEAPF32.subarray(u>>2,(u>>2)+l[c]);c++;let m=ue.HEAPU32[a[c]>>2],g=ue.HEAPU32.subarray(m>>2,(m>>2)+l[c]);c++;let x=ue.HEAPU32[a[c]>>2],y=ue.HEAPU32.subarray(x>>2,(x>>2)+l[c]);if(c++,r===void 0){let v=new $d;if(v.setIndex(new Jl(y,1)),v.setAttribute("position",new Ql(p,3)),v.setAttribute("normal",new Ql(d,3)),t){v.setAttribute("faceMap",new Jl(g,1));let P=new Float32Array(d.length/3*4).fill(0);v.setAttribute("color",new Xd(P,4))}return ue.free_mesh_data(n),v.userData.type="SubdivGeometry",v}r.getAttribute("position").copyArray(p),r.getAttribute("normal").copyArray(d),r.attributes.position.needsUpdate=!0,r.attributes.normal.needsUpdate=!0,ue.free_mesh_data(n)}static buildControlCageWireframe(i,t,e){let r=ue.get_wireframe_data_for_base_level(i),o=4,n=ue.HEAPU32.subarray(r>>2,(r>>2)+o),s=n.subarray(2,2+2),a=0,l=ue.HEAPU32[n[a]>>2],c=ue.HEAPF32.subarray(l>>2,(l>>2)+s[a]);a++;let h=ue.HEAPU32[n[a]>>2],p=ue.HEAPU32.subarray(h>>2,(h>>2)+s[a]);if(t===void 0){let u=new $d;u.setAttribute("position",new Ql(c,3));let d=new Float32Array(c.length);for(let m=0,g=c.length;m<g;)d[m++]=e.r,d[m++]=e.g,d[m++]=e.b;return u.setAttribute("color",new Xd(d,3)),u.setIndex(new Jl(p,1)),ue.free_wireframe_data_for_base_level(r),u}t.getAttribute("position").copyArray(c),t.attributes.position.needsUpdate=!0,ue.free_wireframe_data_for_base_level(r)}static updateCollabMesh(i,t,e){t||ue.set_destination_refinement_level(i,1);let r=e?ue.get_topological_data2(i,t?ue.Level.CONTROL:ue.Level.REFINED,e.elements):ue.get_topological_data(i,t?ue.Level.CONTROL:ue.Level.REFINED),o=6,n=ue.HEAPU32.subarray(r>>2,(r>>2)+o),s=n.subarray(3,3+3),a=0,l=ue.HEAPU32[n[a]>>2],c=new Float32Array(ue.HEAPF32.subarray(l>>2,(l>>2)+s[a]));a++;let h=ue.HEAPU32[n[a]>>2],p=new Uint32Array(ue.HEAPU32.subarray(h>>2,(h>>2)+s[a]));a++;let u=ue.HEAPU32[n[a]>>2],d=new Uint8Array(ue.HEAPU32.subarray(u>>2,(u>>2)+s[a]));return ue.free_topological_data(r),{positions:c,indices:p,verticesPerFace:d}}};var Qd=["getX","getY","getZ"];function rc(i,t){let e={},r=t?t.count:i.count,o=0,n=[],s=[],a=1e4;for(let c=0;c<r;c++){let h=t?t.getX(c):c,p="";for(let u=0;u<3;u++)p+=`${~~(i[Qd[u]](h)*a)},`;if(p in e)n.push(e[p]);else{for(let u=0;u<3;u++)s.push(i[Qd[u]](h));e[p]=o,n.push(o),o++}}let l=[];for(let c=0;c<n.length;c+=3)n[c]===n[c+1]||n[c]===n[c+2]||n[c+1]===n[c+2]||l.push(n[c],n[c+1],n[c+2]);return{positions:s,triIndices:l}}var ra=new oa,Zl=new oa,ec=new oa,tc=new oa;function oc(i,t,e){let r=[],o=[];if(e.userData.shape!==void 0&&e.userData.parameters.depth===0&&e.userData.shape.shapeHoles.length===0){let n=e.userData.shape.extractShapePointsToFlatArray([]),s=0;for(let l=0;l<n.length;l+=2)s+=(n[l]-n[(l===0?n.length:l)-2])*(n[l+1]+n[(l===0?n.length:l)-1]);i.length=0;let a=0;if(s<0)for(let l=0;l<n.length;l+=2)i.push(n[l],n[l+1],0),r.push(a++);else for(let l=n.length-2;l>=0;l-=2)i.push(n[l],n[l+1],0),r.push(a++);return o.push(a),{indices:r,verticesPerFace:o}}for(let n=0,s=e.capStartIndex??t.length;n<s;)if(t[n+1]===t[n+3]&&t[n+2]===t[n+5]||t[n+0]===t[n+3]&&t[n+2]===t[n+4]){ra.set(i[t[n]*3],i[t[n]*3+1],i[t[n]*3+2]),Zl.set(i[t[n+1]*3],i[t[n+1]*3+1],i[t[n+1]*3+2]),ec.set(i[t[n+4]*3],i[t[n+4]*3+1],i[t[n+4]*3+2]),tc.set(i[t[n+5]*3],i[t[n+5]*3+1],i[t[n+5]*3+2]),Zl.sub(ra).normalize(),ec.sub(ra).normalize(),tc.sub(ra).normalize();let a=Zl.cross(ec).dot(tc);Math.abs(a)>.005?(r.push(t[n],t[n+1],t[n+2]),o.push(3),n+=3):(r.push(t[n],t[n+1],t[n+4],t[n+5]),o.push(4),n+=6)}else r.push(t[n],t[n+1],t[n+2]),o.push(3),n+=3;if(e.capStartIndex!==void 0){let n=[],s=[],a=0;for(let l=0,c=0;l<i.length;l+=3,c++)i[l+2]===0&&(n.push(c),a++),i[l+2]===e.userData.parameters.depth&&s.push(c);if(e.userData.parameters.extrudeBevelSize===0){let l=s[0];s[0]=s[1],s[1]=l}n.reverse(),r.push(...n,...s),o.push(a,a)}return{indices:r,verticesPerFace:o}}var Ut={};ef(Ut,{calcBoolean:()=>Cw,calcBooleanTopological:()=>Nw,freeMeshSet:()=>Iw,getMeshSet:()=>Tw,transformMeshSet:()=>Lw});var bw,Zd=new Promise(i=>{bw=i});import{Float32BufferAttribute as em,Sphere as Sw}from"three";var ye,ln;Zd.then(i=>ye=i);function ww(i,t){let e,{positions:r,triIndices:o}=rc(i.getAttribute("position"),i.getIndex()),n;if(t){let{indices:s,verticesPerFace:a}=oc(r,o,i);n=a.length,e=[];for(let l=0,c=0;l<n;l++){e.push(a[l]);for(let h=0;h<a[l];h++)e.push(s[c++])}}else{let s=o.length;e=Array(s+s/3),n=0;for(let a=0,l=0;l<e.length;)e[l++]=3,n++,e[l++]=o[a++],e[l++]=o[a++],e[l++]=o[a++]}return{positions:r,faceIndices:e,nFaces:n}}function tm(i){let t=i.length,e=t*Uint32Array.BYTES_PER_ELEMENT,r=t*Float32Array.BYTES_PER_ELEMENT,o=Number.isInteger(i[0])?e:r,n=ye._malloc(o);return(Number.isInteger(i[0])?new Uint32Array(ye.HEAPU32.buffer,n,t):new Float32Array(ye.HEAPF32.buffer,n,t)).set(i,0),n}function rm(i){switch(i){case 0:return ye.OP.UNION;case 1:return ye.OP.INTERSECTION;case 2:return ye.OP.A_MINUS_B;case 3:return ye.OP.B_MINUS_A;case 4:return ye.OP.SYMMETRIC_DIFFERENCE;case 5:return ye.OP.ALL;default:throw new Error("Unknown boolean operation "+i)}}function Nw(i,t){ln===void 0&&(ln=ye.init_csg());let e=tm(i),r=ye.csg_calc_topological(ln,e,i.length,rm(t));ye._free(e);let o=6,n=ye.HEAPU32.subarray(r>>2,(r>>2)+o),s=n.subarray(3,3+3),a=0,l=ye.HEAPU32[n[a]>>2],c=new Float32Array(ye.HEAPF32.subarray(l>>2,(l>>2)+s[a]));a++;let h=ye.HEAPU32[n[a]>>2],p=new Uint32Array(ye.HEAPU32.subarray(h>>2,(h>>2)+s[a]));a++;let u=ye.HEAPU32[n[a]>>2],d=new Uint8Array(ye.HEAPU32.subarray(u>>2,(u>>2)+s[a]));return ye.free_mesh_data(r),{positions:c,indices:p,verticesPerFace:d}}function Cw(i,t,e,r){ln===void 0&&(ln=ye.init_csg());let o=tm(i),n=ye.csg_calc(ln,o,i.length,r,rm(t));ye._free(o);let s=5,a=ye.HEAPU32.subarray(n>>2,(n>>2)+s),l=a.subarray(2,2+3),c=0,h=ye.HEAPU32[a[c]>>2],p=ye.HEAPF32.subarray(h>>2,(h>>2)+l[c]);c++;let u=ye.HEAPU32[a[c]>>2],d=ye.HEAPF32.subarray(u>>2,(u>>2)+l[c]);c++;let m=l[c];e.setAttribute("position",new em(p,3)),e.setAttribute("normal",new em(d,3));let g=ye.HEAPF32.subarray((n>>2)+5,(n>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new Sw),e.boundingSphere.center.set(g[0],g[1],g[2]),e.boundingSphere.radius=(g[3]**2+g[4]**2+g[5]**2)**.5,e.userData.parameters={width:g[3]*2,height:g[4]*2,depth:g[5]*2},ye.free_mesh_data(n),m}function Tw(i,t){if(ye===void 0)return-1;let e,r,o;if(t&&i.userData.positions!==void 0){let g=i.userData;o=g.verticesPerFace.length,e=g.positions,r=Array(g.verticesPerFace.reduce((x,y)=>x+y,0)+o);for(let x=0,y=0,v=0;x<g.verticesPerFace.length;x++){r[v++]=g.verticesPerFace[x];for(let P=0;P<g.verticesPerFace[x];P++)r[v++]=g.indices[y++]}}else({positions:e,faceIndices:r,nFaces:o}=ww(i,t));let n=e.length,s=r.length,a=e.length,l=r.length,c=a*Float32Array.BYTES_PER_ELEMENT+l*Uint32Array.BYTES_PER_ELEMENT,h=a*Float32Array.BYTES_PER_ELEMENT,p=l*Uint32Array.BYTES_PER_ELEMENT,u=ye._malloc(c),d=new Float32Array(ye.HEAPF32.buffer,u,a),m=new Uint32Array(ye.HEAPU32.buffer,u+h,l);return d.set(e,0),m.set(r,0),ye.get_csg_mesh(u,n,u+h,s,o)}function Lw(i,t){ye.transform_csg_mesh(i,t.elements)}function Iw(i){ye.free_csg_mesh(i)}var Kl={ConeGeometry:au,CubeGeometry:lu,CylinderGeometry:su,DodecahedronGeometry:cu,EllipseGeometry:Gu,HelixGeometry:Uu,IcosahedronGeometry:ju,LatheGeometry:ku,NonParametricGeometry:Ju,PolygonGeometry:Qu,PyramidGeometry:Zu,RectangleGeometry:ed,SphereGeometry:td,PlaneGeometry:rd,BackdropGeometry:od,StarGeometry:nd,TextFrameGeometry:Gs,TorusGeometry:id,TorusKnotGeometry:sd,TriangleGeometry:ad,VectorGeometry:Ke},di=i=>Kl[i.type].create(i);import{BufferGeometry as om,Matrix4 as Pw}from"three";var nm=new Pw;var na=class extends Xe{constructor(e=new om,r){super(e,r);this.booleanOp=2;this.phongAngle=35;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.isBooleanMesh=!0,this.castShadow=!0,this.receiveShadow=!0,this.geometry.userData.parameters={width:0,height:0,depth:0},this.onAfterRender=this.recomputeBoolean.bind(this)}reInit(){this.isBooleanMesh=!0,this.meshSetAddresses=[],this.needsTransformForDownstream=!1,this.geometry.userData.parameters={width:0,height:0,depth:0},this.onAfterRender=this.recomputeBoolean.bind(this)}recomputeBoolean(e){if(this.booleanMeshSetAddress!==-1)return;for(let o=0;o<this.children.length;o++){let n=this.children[o];tr(n)&&n.recomputeBoolean(e===!0)}this.meshSetAddresses=[];for(let o=0;o<this.children.length;o++){let n=this.children[o];if(gd(n)&&n.booleanExclude===!1&&n.geometry.attributes.position?.count>0&&n.geometry.drawRange.count>0){if(n.booleanMeshSetAddress===-1){if(n.booleanMeshSetAddress=Ut.getMeshSet(n.geometry,e===!0),n.booleanMeshSetAddress===-1)return;Ut.transformMeshSet(n.booleanMeshSetAddress,n.matrix),n.booleanMatrixInvOld.copy(n.matrix).invert(),n.booleanWasTransformed=!1}else tr(n)&&n.needsTransformForDownstream===!0?(Ut.transformMeshSet(n.booleanMeshSetAddress,n.matrix),n.needsTransformForDownstream=!1):n.booleanWasTransformed===!0&&(nm.multiplyMatrices(n.matrix,n.booleanMatrixInvOld),Ut.transformMeshSet(n.booleanMeshSetAddress,nm),n.booleanMatrixInvOld.copy(n.matrix).invert(),n.booleanWasTransformed=!1);this.meshSetAddresses.push(n.booleanMeshSetAddress)}}if(this.meshSetAddresses.length===0){this.geometry.setDrawRange(0,0);return}if(e===!0)return Ut.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let r=this.geometry;r.dispose(),this.geometry=new om,this.geometry.userData=r.userData,this.geometry.boundingSphere=r.boundingSphere;try{this.booleanMeshSetAddress=Ut.calcBoolean(this.meshSetAddresses,this.booleanOp,this.geometry,this.phongAngle)}catch(o){this.booleanMeshSetAddress=0,console.error(o)}this.booleanMatrixInvOld.copy(this.matrix).invert(),this.needsTransformForDownstream=!0}updateGeometry(e){let r=e.parameters;r.operation!==void 0&&(this.booleanOp=r.operation),r.phongAngle!==void 0&&(this.phongAngle=r.phongAngle),this.invalidateDownstreamBooleanData().recomputeBoolean()}};import{Camera as Hw,OrthographicCamera as Ww,PerspectiveCamera as qw,Vector3 as kt,Object3D as am,Quaternion as $w}from"three";import{BoxBufferGeometry as Mw}from"three";var lr=i=>{var t;return t=class extends i{constructor(){super(...arguments);this.isObjectHelper=!0}},t.geometryHelper=new Mw(30,30,30),t};import{Camera as Bw,LineSegments as Ew,BufferGeometry as Gw,LineBasicMaterial as Rw,Color as ic,Vector3 as zw,Float32BufferAttribute as sm}from"three";import{Ray as Aw,Sphere as Ow,Matrix4 as Dw,Vector3 as Nr}from"three";var ia=new Aw,nc=new Ow,im=new Dw,cr=(i,t,e,r,o=!1)=>{let n=t,s=i.matrixWorld;if(n.boundingSphere===null&&n.computeBoundingSphere(),nc.copy(n.boundingSphere),nc.applyMatrix4(s),e.ray.intersectsSphere(nc)===!1||(im.copy(s).invert(),ia.copy(e.ray).applyMatrix4(im),n.boundingBox!==null&&ia.intersectsBox(n.boundingBox)===!1))return;let a,l,c,h,p=n.index,u=n.attributes.position,d=n.drawRange,m,g;if(o===!1){let y=Math.max(0,d.start),v=Math.min(p.count,d.start+d.count);for(m=y,g=v;m<g;m+=3)if(l=p.getX(m),c=p.getX(m+1),h=p.getX(m+2),a=x(i,e,ia,u,l,c,h),a){a.faceIndex=Math.floor(m/3),r.push(a);return}}else{let v=n.attributes.position,P=new Nr,S=new Nr,b=new Nr,B=new Nr,w=2,D=1/((i.scale.x+i.scale.y+i.scale.z)/3),C=D*D,I=Math.max(0,d.start),L=Math.min(v.count,d.start+d.count);for(let M=I,k=L-1;M<k;M+=w){if(P.fromBufferAttribute(v,M),S.fromBufferAttribute(v,M+1),ia.distanceSqToSegment(P,S,B,b)>C)continue;B.applyMatrix4(i.matrixWorld);let oe=e.ray.origin.distanceTo(B);oe<e.near||oe>e.far||r.push({distance:oe,point:b.clone().applyMatrix4(i.matrixWorld),object:i})}}function x(y,v,P,S,b,B,w){let f=new Nr,D=new Nr,C=new Nr,I=new Nr,L=new Nr;if(f.fromBufferAttribute(S,b),D.fromBufferAttribute(S,B),C.fromBufferAttribute(S,w),P.intersectTriangle(f,D,C,!1,I)===null)return null;L.copy(I),L.applyMatrix4(y.matrixWorld);let k=v.ray.origin.distanceTo(L);return k<v.near||k>v.far?null:{faceIndex:1,distance:k,point:L.clone(),object:y}}};var sa=new zw,Bt=new Bw,sc=class extends Ew{constructor(e){let r=new Gw,o=new Rw({color:16777215,vertexColors:!0,toneMapped:!1}),n=[],s=[],a={},l=new ic(15711266),c=new ic(15711266),h=new ic(2857471);p("n1","n2",l),p("n2","n4",l),p("n4","n3",l),p("n3","n1",l),p("f1","f2",l),p("f2","f4",l),p("f4","f3",l),p("f3","f1",l),p("n1","f1",l),p("n2","f2",l),p("n3","f3",l),p("n4","f4",l),p("p","n1",c),p("p","n2",c),p("p","n3",c),p("p","n4",c),p("u1","u2",h),p("u2","u3",h),p("u3","u1",h);function p(d,m,g){u(d,g),u(m,g)}function u(d,m){n.push(0,0,0),s.push(m.r,m.g,m.b),a[d]===void 0&&(a[d]=[]),a[d].push(n.length/3-1)}r.setAttribute("position",new sm(n,3)),r.setAttribute("color",new sm(s,3));super(r,o);this.type="CameraHelper",this.camera=e,this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix(),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=a,this.update()}update(){let e=this.geometry,r=this.pointMap,o=!0;Bt.projectionMatrixInverse.elements=[.5112609807824982,-0,-0,-0,-0,.41421356237309503,-0,-0,-0,-0,-0,-.099999,-0,-0,-1.0000000000000002,.100001];let n=1,s=1,a=o?.8:1e-4;jt("n1",r,e,Bt,-n,-s,a),jt("n2",r,e,Bt,n,-s,a),jt("n3",r,e,Bt,-n,s,a),jt("n4",r,e,Bt,n,s,a);let l=a;jt("f1",r,e,Bt,-n,-s,l),jt("f2",r,e,Bt,n,-s,l),jt("f3",r,e,Bt,-n,s,l),jt("f4",r,e,Bt,n,s,l);let c=l,h=.5;jt("u1",r,e,Bt,n*.7*h,s*1.1,c),jt("u2",r,e,Bt,-n*.7*h,s*1.1,c),jt("u3",r,e,Bt,0,s*(1.1+.9*h),c),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function jt(i,t,e,r,o,n,s){sa.set(o,n,s).unproject(r);let a=t[i];if(a!==void 0){let l=e.getAttribute("position");for(let c=0,h=a.length;c<h;c++)l.setXYZ(a[c],sa.x,sa.y,sa.z)}}var aa=class extends lr(sc){constructor(e){super(e);this.object=e;this.object=e,this.name=`CombinedCameraHelper: ${e.uuid}`}updateMatrixWorld(e){super.updateMatrixWorld(e),this.updateTarget()}updateTarget(){let e=this.object.getTarget();this.updateWorldMatrix(!0,!1),this.worldToLocal(e)}raycast(e,r){cr(this.object,this.geometry,e,r,!0)}};import{DirectionalLightHelper as Vw}from"three";var cn=class extends lr(Vw){constructor(e,r=15,o=10066329){super(e,r,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,r){cr(this.object,cn.geometryHelper,e,r)}};import{AxesHelper as Fw}from"three";var hn=class extends lr(Fw){constructor(e,r=15){super(r);this.object=e;this.object.updateMatrixWorld(),this.name=`EmptyObjectHelper: ${e.uuid}`,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1}raycast(e,r){cr(this.object,hn.geometryHelper,e,r)}update(){}};import{PointLightHelper as Uw}from"three";var pn=class extends lr(Uw){constructor(e,r=15,o=6710886){super(e,r,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,r){cr(this.object,pn.geometryHelper,e,r)}};import{SpotLightHelper as jw,Vector3 as kw}from"three";var la=class extends lr(jw){constructor(e,r=6710886){super(e,r);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,r){cr(this.object,la.geometryHelper,e,r)}update(){if(this.object!==void 0){let e=la._vector,r=this.object.distance?this.object.distance:1e3,o=r*Math.tan(this.object.angle);this.cone.scale.set(o,o,r),e.setFromMatrixPosition(this.object.target.matrixWorld),this.cone.lookAt(e);let n=this.color!==void 0?this.color:this.light.color;if(this.cone.material instanceof Array)for(let s=0,a=this.cone.material.length;s<a;s++)this.cone.material[s].color.set(n);else this.cone.material.color.set(n)}}},mi=la;mi._vector=new kw;var hr=(i,t)=>class extends i{constructor(){super(...arguments);this.objectHelper=new t(this);this.enableHelper=!1}set visibility(o){this.visible=o,this.setHelperVisibility(o),this.setHelperChildrenVisibility(o)}get visibility(){return this.visible}get geometryHelper(){return t.geometryHelper}setHelperVisibility(o){this.objectHelper.visible=o}setHelperChildrenVisibility(o){for(let n of this.children)At(n)&&n.traverseEntity(s=>{vr(s)&&s.visible&&(s.objectHelper.visible=o)})}raycast(o,n){this.objectHelper.raycast(o,n)}fromLightState(o,n){if(this.objectType==="LightDirectional"||this.objectType==="LightPoint"||this.objectType==="LightSpot"){let s=this;o.color!==void 0&&(s.color=Ae(o.color,n)),o.intensity!==void 0&&(s.intensity=o.intensity),o.depth!==void 0&&(s.shadow.camera.far=o.depth,s.shadow.needsUpdate=!0),o.shadows!==void 0&&(this.castShadow=o.shadows),o.helper!==void 0&&(this.enableHelper=o.helper,s.gizmos.shadowmap.visible=o.helper)}return this}};var un=new kt,ac=new kt,Cr=class extends hr(Ot(Hw),aa){constructor(e=window.innerWidth,r=window.innerHeight,o=45,n,s=1e5){super();this.objectType="CombinedCamera";this._cameraType="OrthographicCamera";this.targetOffset=Xr.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.width=e,this.height=r,this.orthoCamera=new Ww(e*-.5,e*.5,r*.5,r*-.5,n??-5e4,s),this.perspCamera=new qw(o,e/r,n??50,s),this.left=this.orthoCamera.left,this.right=this.orthoCamera.right,this.top=this.orthoCamera.top,this.bottom=this.orthoCamera.bottom,this.far=this.orthoCamera.far,this.view=this.orthoCamera.view,this.aspect=this.perspCamera.aspect,this.fov=this.perspCamera.fov,this.focus=this.perspCamera.focus,this.filmGauge=this.perspCamera.filmGauge,this.filmOffset=this.perspCamera.filmOffset,this.toOrthographic(!0)}static createFromState(e,r){let o=new Cr().fromState(r);return o.enableHelper=!0,o.objectHelper.update(),o.uuid=e,o}get isPerspectiveCamera(){return this.cameraType==="PerspectiveCamera"}get isOrthographicCamera(){return!this.isPerspectiveCamera}get cameraType(){return this._cameraType}setNear(e,r){e==="PerspectiveCamera"?this.perspCamera.near=r:this.orthoCamera.near=r}setZoom(e,r){r>=0&&(e==="PerspectiveCamera"?this.perspCamera.zoom=r:this.orthoCamera.zoom=r)}set cameraType(e){e==="PerspectiveCamera"?this.toPerspective():e==="OrthographicCamera"&&this.toOrthographic()}get near(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.near:this.orthoCamera.near}set near(e){this._cameraType==="PerspectiveCamera"?this.perspCamera.near=e:this.orthoCamera.near=e}get zoom(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom:this.orthoCamera.zoom}set zoom(e){e>=0&&(this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom=e:this.orthoCamera.zoom=e)}lookAt(e){super.lookAt(e),this.getWorldPosition(un),this.targetOffset=un.distanceTo(e)}getTarget(e=new kt){return this.getWorldDirection(ac),this.getWorldPosition(un),ac.multiplyScalar(this.targetOffset),e.copy(un).add(ac),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(un),un.distanceTo(e)}updateUp(){let e=this.getWorldQuaternion(new $w),r=new kt(0,0,1).applyQuaternion(e),o=new kt().copy(am.DefaultUp);this.isUpVectorFlipped&&o.negate(),o.applyQuaternion(e);let n=new kt().copy(am.DefaultUp).projectOnPlane(r),s=new kt().crossVectors(n,o).dot(r)>=0?1:-1;this.angleOffsetFromUp=n.angleTo(o)*s}getViewFrontToObject(e){let r=e.getWorldPosition(new kt),n=e.getWorldDirection(new kt).multiplyScalar(this.targetOffset);return{position:r.clone().add(n),target:r}}getViewToObject(e){let r=e.getWorldPosition(new kt),n=this.getWorldDirection(new kt).multiplyScalar(this.targetOffset);return{position:r.clone().sub(n),target:r}}setViewplaneSize(e,r){this.left=-e*.5,this.right=e*.5,this.top=r*.5,this.bottom=-r*.5,this.aspect=e/r,this.updateProjectionMatrix()}toOrthographic(e){this.orthoCamera.left=this.left,this.orthoCamera.right=this.right,this.orthoCamera.top=this.top,this.orthoCamera.bottom=this.bottom,this.orthoCamera.view=this.view,this.orthoCamera.far=this.far,this.orthoCamera.updateProjectionMatrix(),this.projectionMatrix=this.orthoCamera.projectionMatrix,this.projectionMatrixInverse=this.orthoCamera.projectionMatrixInverse,this._cameraType="OrthographicCamera",(this.enableHelper===!0||e===!0)&&this.objectHelper.update()}toPerspective(e){this.perspCamera.aspect=this.aspect,this.perspCamera.fov=this.fov,this.perspCamera.view=this.view,this.perspCamera.far=this.far,this.perspCamera.updateProjectionMatrix(),this.projectionMatrix=this.perspCamera.projectionMatrix,this.projectionMatrixInverse=this.perspCamera.projectionMatrixInverse,this._cameraType="PerspectiveCamera",(this.enableHelper===!0||e===!0)&&this.objectHelper.update()}setFocalLength(e){this.perspCamera.setFocalLength(e),this.toPerspective()}getFocalLength(){return this.perspCamera.getFocalLength()}getEffectiveFOV(){return this.perspCamera.getEffectiveFOV()}getFilmWidth(){return this.perspCamera.getFilmWidth()}getFilmHeight(){return this.perspCamera.getFilmHeight()}setViewOffset(e,r,o,n,s,a){this._cameraType==="PerspectiveCamera"?this.perspCamera.setViewOffset(e,r,o,n,s,a):this.orthoCamera.setViewOffset(e,r,o,n,s,a)}clearViewOffset(){this._cameraType==="PerspectiveCamera"?(this.perspCamera.clearViewOffset(),this.toPerspective()):(this.orthoCamera.clearViewOffset(),this.toOrthographic())}updateProjectionMatrix(e){this._cameraType==="PerspectiveCamera"?this.toPerspective(e):this._cameraType==="OrthographicCamera"&&this.toOrthographic(e)}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,r){super.updateWorldMatrix(e,r),this.matrixWorldInverse.copy(this.matrixWorld).invert()}copy(e,r){return super.copy(e,r),this.orthoCamera.copy(e.orthoCamera),this.perspCamera.copy(e.perspCamera),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.far=e.far,this.view=e.view===null?null:Object.assign({},e.view),this._cameraType=e._cameraType,this.aspect=e.aspect,this.fov=e.fov,this.focus=e.focus,this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this.targetOffset=e.targetOffset,this.updateProjectionMatrix(),this}toCameraState(e=[]){let r={type:this.cameraType,far:this.far,orthographic:{near:this.orthoCamera.near,zoom:this.orthoCamera.zoom},perspective:{near:this.perspCamera.near,fov:this.perspCamera.fov,zoom:this.perspCamera.zoom},up:this.up.toArray(),targetOffset:this.targetOffset,isUpVectorFlipped:this.isUpVectorFlipped};return Io(r,e)}fromCameraState(e){let{orthographic:r,perspective:o}=e;return e.type!==void 0&&(this.cameraType=e.type),e.far!==void 0&&(this.far=e.far),r!==void 0&&(r.near!==void 0&&(this.orthoCamera.near=r.near),r.zoom!==void 0&&(this.orthoCamera.zoom=r.zoom)),o!==void 0&&(o.near!==void 0&&(this.perspCamera.near=o.near),o.fov!==void 0&&(this.perspCamera.fov=o.fov),o.zoom!==void 0&&(this.perspCamera.zoom=o.zoom)),e.up!==void 0&&this.up.fromArray(e.up),e.targetOffset!==void 0&&(this.targetOffset=e.targetOffset),e.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=e.isUpVectorFlipped),this.updateProjectionMatrix(),this}toState(e){return{...super.toState(e),...this.toCameraState(e),type:this.cameraType}}fromState(e){return super.fromState(e),this.fromCameraState(e),this}};import{Group as Xw}from"three";var Tr=class extends hr(Ot(Xw),hn){constructor(){super(...arguments);this.objectType="EmptyObject"}static createFromState(e,r){let o=new Tr().fromState(r);return o.uuid=e,o.enableHelper=!0,o.objectHelper.update(),o}};import{DirectionalLight as Kw,CameraHelper as ca}from"three";var dn=class extends hr(Ot(Kw),cn){constructor(...e){super(...e);this.objectType="LightDirectional";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=2048,this.shadow.mapSize.height=2048,this.shadow.normalBias=1;let o=this.shadow.camera;o.top=1250,o.bottom=-1250,o.right=1250,o.left=-1250,o.near=-1e4,o.far=2500;let n=new ca(this.shadow.camera);n.visible=!1,this._gizmos.shadowmap=n,this.update()}static createFromState(e,r,o){let n=new dn().fromState(r,o);return n.uuid=e,n}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof ca&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof ca&&(r.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let r=this._gizmos[e];r instanceof ca&&r.update()}}updateMatrixWorld(e){super.updateMatrixWorld(e),this.enableHelper===!0&&this.objectHelper.visible===!0&&this.objectHelper.update()}fromDirectionalLightState(e,r){let o=e.depth!==void 0&&e.depth!==this.shadow.camera.far||e.size!==void 0&&e.size/2!==this.shadow.camera.right;return super.fromLightState(e,r),e.size!==void 0&&pd(this,e.size),e.shadowRadius!==void 0&&(this.shadow.radius=e.shadowRadius),e.shadowResolution!==void 0&&(this.shadow.mapSize.set(e.shadowResolution,e.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),o&&this.update(),this}fromState(e,r){return super.fromState(e),this.fromDirectionalLightState(e,r),this}};import{PointLight as Yw,Vector3 as ha,Box3 as Jw,Box3Helper as pa,Color as Qw}from"three";var mn=class extends hr(Ot(Yw),pn){constructor(...e){super(...e);this.objectType="LightPoint";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1;let o=this.shadow.camera;o.fov=90,o.aspect=1,o.near=100,o.far=2500;let n=new ha(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),s=new ha(o.far+this.position.x,o.far+this.position.y,o.far+this.position.z),a=new Jw(n,s),l=new pa(a,new Qw(16755200));l.visible=!1,this._gizmos.shadowmap=l,this.update()}static createFromState(e,r,o){let n=new mn().fromState(r,o);return n.uuid=e,n}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof pa&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof pa&&(r.visible=!1)}}update(){if(this.shadow&&(this.shadow.camera.updateProjectionMatrix(),this._gizmos))for(let e in this._gizmos){let r=this._gizmos[e];if(r instanceof pa){let o=this.shadow.camera,n=new ha(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),s=new ha(o.far+this.position.x,o.far+this.position.y,o.far+this.position.z);r.box.set(n,s),r.updateMatrixWorld(!0)}}}updateMatrixWorld(e){super.updateMatrixWorld(e),this.enableHelper===!0&&this.objectHelper.visible===!0&&this.objectHelper.update()}fromPointLightState(e,r){return super.fromLightState(e,r),e.distance!==void 0&&(this.distance=e.distance),e.decay!==void 0&&(this.decay=e.decay),e.shadowRadius!==void 0&&(this.shadow.radius=e.shadowRadius),e.shadowResolution!==void 0&&(this.shadow.mapSize.set(e.shadowResolution,e.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),this}fromState(e,r){return super.fromState(e),this.fromPointLightState(e,r),this}};import{SpotLight as Zw,CameraHelper as ua,MathUtils as e1,Vector3 as pm,Quaternion as t1}from"three";var lm=new pm,cm=new pm,hm=new t1,fn=class extends hr(Ot(Zw),mi){constructor(...e){super(...e);this.objectType="LightSpot";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1;let o=this.shadow.camera;o.fov=e1.RAD2DEG*2*this.angle,o.aspect=1,o.near=100,o.far=2500;let n=new ua(this.shadow.camera);n.visible=!1,this._gizmos.shadowmap=n,this.update()}static createFromState(e,r,o){let n=new fn().fromState(r,o);return n.uuid=e,n}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof ua&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof ua&&(r.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let r=this._gizmos[e];r instanceof ua&&r.update()}}updateMatrixWorld(e){super.updateMatrixWorld(e),cm.setFromMatrixPosition(this.matrixWorld),hm.setFromRotationMatrix(this.matrixWorld),lm.copy(this.up).applyQuaternion(hm).negate().multiplyScalar(this.distance),this.target.position.copy(cm).add(lm),this.target.updateMatrixWorld(),this.enableHelper===!0&&this.objectHelper.visible===!0&&this.objectHelper.update()}fromSpotLightState(e,r){return super.fromLightState(e,r),e.distance!==void 0&&(this.distance=e.distance),e.decay!==void 0&&(this.decay=e.decay),e.angle!==void 0&&(this.angle=e.angle),e.penumbra!==void 0&&(this.penumbra=e.penumbra),e.shadowRadius!==void 0&&(this.shadow.radius=e.shadowRadius),e.shadowResolution!==void 0&&(this.shadow.mapSize.set(e.shadowResolution,e.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),this}fromState(e,r){return super.fromState(e),this.fromSpotLightState(e,r),this}};var um=i=>i.tagName==="VIDEO",gn=class{static resize(t,e,r){let o=t/e,n;if(!r.image)return;let s=r.image;um(s)?n=s.videoWidth/s.videoHeight:n=s.width/s.height,o>n&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1*n/o):r.repeat.set(1,1*n/o)),o<n&&(r.imageType=="WEBCAM"?r.repeat.set(1*o/n*-1,1):r.repeat.set(1*o/n,1)),o==n&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1):r.repeat.set(1,1))}static resizeTextureLayer(t,e,r){let o=t/e,n=r.image!==void 0?r.image.width/r.image.height:1,s;o>n?s={x:1,y:n/o}:o<n?s={x:o/n,y:1}:s={x:1,y:1},r.repeat.set(s.x,s.y),r.updateMatrix()}static resizeTextureLayers(t,e,r){let o=r.userData.layers,n=o.getLayers();for(let s=0;s<n.length;s++){let a=n[s];xd(a)&&(gn.resizeTextureLayer(t,e,a.uniforms[`f${a.id}_texture`].value),o.updateLayerUniform())}}static resizeComplex(t,e,r,o){let n=t/e,s,a=r.image;um(a)?s=a.videoWidth/a.videoHeight:s=a.width/a.height,o.geometry.type.includes("Shape")?(n>s&&(r.imageType=="WEBCAM"?r.repeat.set(1/t*-1,1/e*s/n):r.repeat.set(1/t,1/e*s/n)),n<s&&(r.imageType=="WEBCAM"?r.repeat.set(1/t*n/s*-1,1/e):r.repeat.set(1/t*n/s,1/e)),n==s&&(r.imageType=="WEBCAM"?r.repeat.set(1/t*-1,1/e):r.repeat.set(1/t,1/e))):(n>s&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1*s/n):r.repeat.set(1,1*s/n)),n<s&&(r.imageType=="WEBCAM"?r.repeat.set(1*n/s*-1,1):r.repeat.set(1*n/s,1)),n==s&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1):r.repeat.set(1,1)))}};var da=class extends Xe{constructor(e,r){super(e,r);this.objectType="Mesh2D";this.castShadow=!0,this.receiveShadow=!0}updateGeometry(e){super.updateGeometry(e),this.material.userData.layers&&gn.resizeTextureLayers(this.geometry.userData.parameters.width,this.geometry.userData.parameters.height,this.material)}};var yn=class extends Xe{constructor(e,r){super(e,r);this.objectType="Mesh3D";this.castShadow=!0,this.receiveShadow=!0}};var xn=class extends yn{constructor(e,r){super(e,r);this.objectType="NonParametric"}};import{DoubleSide as r1,Mesh as o1,MeshBasicMaterial as n1,ShapeBufferGeometry as i1,Vector2 as s1,Vector3 as a1}from"three";import{FontLoader as l1}from"three/examples/jsm/loaders/FontLoader.js";var Re=class extends o1{constructor({char:e,originalChar:r,fontFamily:o,letterSpacing:n,fontSize:s,LOD:a=16},l=new n1({color:0,opacity:1,visible:!0,transparent:!0,side:r1})){let c=Re.loadChar(e,o,a);super(c.geometry,l);this.char=e,this.originalChar=r??e,this.fontFamily=o,this.letterSpacing=n,this.fontSize=s,this.LOD=a,this.resolution=c.resolution,this.glyphsHa=c.glyphsHa,this.localPosition=new s1,this.charSize=0,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}static get FONTS_PATH(){return Re._fontPath}static set FONTS_PATH(e){Re._fontPath=e}updatePosition(e,r){this.localPosition.copy(e);let o=new a1(this.localPosition.x,-this.localPosition.y,0);this.position.copy(o).add(r)}updateFontSize(e){let r=e/this.resolution;this.fontSize=e,this.scale.set(this.fontSize,this.fontSize,1),this.charSize=this.glyphsHa*r*this.letterSpacing}updateFontFamily(e){if(this.fontFamily===e)return;this.fontFamily=e;let r=Re.loadChar(this.char,e,this.LOD);this.geometry=r.geometry,this.resolution=r.resolution,this.glyphsHa=r.glyphsHa,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}updateChar(e){if(this.char===e)return;this.char=e;let r=Re.loadChar(e,this.fontFamily,this.LOD);this.geometry=r.geometry,this.resolution=r.resolution,this.glyphsHa=r.glyphsHa,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}updateLetterSpacing(e){this.letterSpacing!==e&&(this.letterSpacing=e,this.updateFontSize(this.fontSize))}updateLOD(e){if(this.LOD===e)return;this.LOD=e;let r=Re.loadChar(this.char,this.fontFamily,this.LOD);this.geometry=r.geometry,this.resolution=r.resolution,this.glyphsHa=r.glyphsHa,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}clone(){let e={char:this.char,originalChar:this.originalChar,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,LOD:this.LOD};return new Re(e).copy(this)}static loadFont(e){return new Promise(function(r,o){Re.fontCache[e]?r(Re.fontCache[e]):new l1().load(Re.FONTS_PATH+e+".json",s=>{Re.fontCache[e]=s,r(s)},void 0,o)})}static loadChar(e,r,o){if(Re.charCache[e]){if(Re.charCache[e][o]&&Re.charCache[e][o].fontFamily===r)return Re.charCache[e][o]}else Re.charCache[e]={};let n=Re.fontCache[r],s=n.generateShapes(e,1);return Re.charCache[e][o]={geometry:new i1(s,o),fontFamily:r,resolution:n.data.resolution,glyphsHa:n.data.glyphs[e].ha},Re.charCache[e][o]}},wt=Re;wt.charCache={},wt.fontCache={},wt._fontPath="/_assets/_fonts/";import{DoubleSide as lc,MeshBasicMaterial as c1,Vector3 as h1,Object3D as p1}from"three";import{Vector2 as dm}from"three";var ma=new dm,oo=class{constructor(t,e,r){this.message=[];this.endLine=!0;this.yLinePos=t,this.lineHeight=e,this.maxCharSize=r,this.nextChar3DPos=new dm(0,this.yLinePos+this.maxCharSize*this.lineHeight),this.align=1}addChar3D(t,e,r=this.message.length){this.message.splice(r,0,t),t.fontSize>this.maxCharSize?(this.maxCharSize=t.fontSize,this.nextChar3DPos.y=this.yLinePos+this.maxCharSize*this.lineHeight,this.fullUpdate(e)):(t.updatePosition(this.nextChar3DPos,e),this.nextChar3DPos.x+=t.charSize)}deleteChar3D(t=this.message.length-1){let e=this.message[t];if(e)return this.message.splice(t,1),this.nextChar3DPos.x-=e.charSize,e}isEndLine(t){this.endLine=t}fullUpdate(t,e=0){this.nextChar3DPos.x=0;for(let r=e,o=this.message.length;r<o;r+=1)this.message[r].updatePosition(this.nextChar3DPos,t),this.nextChar3DPos.x+=this.message[r].charSize}checkOverFlow(t){let e,r=this.message.length-1;if(r<=0)return!1;for(;r>=0;){if(this.message[r].char!==" "){e=this.message[r];break}r-=1}return!!(r>=0&&e&&e.localPosition.x+e.charSize>t)}containSpaceOverFlow(t=this.message.length-1){for(let e=t;e>=0;e-=1)if(this.message[e].char===" ")return!0;return!1}containSpace(t=this.message.length-1){if(this.endLine)return!0;for(let e=t;e>=0;e-=1)if(this.message[e].char===" ")return!0;return!1}popWord(t=this.message.length-1){let e=[],r=!0,o;for(o=t;o>=0;o-=1)if(this.message[o].char===" "){r=!1,e.length===0&&(o-=1,e.splice(0,0,this.message[o]));break}else e.splice(0,0,this.message[o]);return r?e=[]:this.message.splice(o+1,e.length),e}getWord(t=0,e=1){let r=[],o=t;for(o=t;;o+=e){if(!this.message[o]||this.message[o].char===" "){r.length===0&&this.message[o]&&(r.push(this.message[o]),this.message.splice(o,1));break}e>0?(r.push(this.message[o]),this.message.splice(o,1),o-=e):(r.splice(0,0,this.message[o]),this.message.splice(o,1))}return r}getWordAtIndex(t){let e=[];for(let r=t;r<this.message.length&&this.message[r].char!==" ";r++)e.push(this.message[r]);for(let r=t-1;r>=0&&this.message[r].char!==" ";r--)e.splice(0,0,this.message[r]);return e}wordSize(t=0,e=-1){let r=0,o=t;for(;o>=0&&o<this.message.length;){if(this.message[o].char===" "){r===0&&(r=this.message[o].charSize);break}r+=this.message[o].charSize,o+=e}return(o<0||o>=this.message.length)&&!this.endLine?this.message[t]?this.message[t].charSize:999999999:r===0?999999999:r}spaceLeft(t){return t-this.nextChar3DPos.x}popChar(t=this.message.length-1){return this.nextChar3DPos.x-=this.message[t].charSize,this.message.splice(t,1)}isEmpty(){return!this.message.length}updateNextCharPosY(){this.nextChar3DPos.y=this.yLinePos+this.maxCharSize*this.lineHeight}updateYLinePos(t){this.yLinePos=t,this.updateNextCharPosY()}updatelineHeight(t){this.lineHeight=t,this.updateNextCharPosY()}updateFontSize(t,e=0,r=this.message.length-1){for(let o=e;o<=r;o+=1)this.message[o].updateFontSize(t);this.maxCharSize=t,this.nextChar3DPos.y=this.yLinePos+this.maxCharSize*this.lineHeight}countSpaces(){let t=0;for(let e=0;e<this.message.length;e++)this.message[e].char===" "&&(t+=1);return t}alignText(t,e,r,o,n){switch(r){case 1:this.leftAlign(t,n);break;case 3:this.centerAlign(this.spaceLeft(e),t,n);break;case 2:this.rightAlign(this.spaceLeft(e),t,n);break;case 4:this.justifyAlign(this.spaceLeft(e),t,n);break}}offsetCharacters(t,e,r){ma.set(e,r);let o=this.message.length;for(let n=0;n<o;n++)this.message[n].updatePosition(this.message[n].localPosition.add(ma),t)}leftAlign(t,e){this.align=1,this.offsetCharacters(t,0,e)}centerAlign(t,e,r){this.align=3,this.offsetCharacters(e,t/2,r)}rightAlign(t,e,r){this.align=2,this.offsetCharacters(e,t,r)}justifyAlign(t,e,r){if(this.align=4,this.endLine){this.offsetCharacters(e,0,r);return}let o=this.countSpaces();if(o===0){this.offsetCharacters(e,0,r);return}let n=t/o,s=0;for(let a=0;a<this.message.length;a++)this.message[a].char===" "&&(s+=n),ma.set(s,r),this.message[a].updatePosition(this.message[a].localPosition.add(ma),e)}clone(){let t=new oo(this.yLinePos,this.lineHeight,this.maxCharSize);t.nextChar3DPos=this.nextChar3DPos.clone(),t.align=this.align,t.endLine=this.endLine;for(let e=0;e<this.message.length;e++)t.message.push(this.message[e].clone());return t}};var cc=class extends Xe{constructor(e){super(e,new Ft({transparent:!0,opacity:1,visible:!1,side:lc}));this.objectType="TextFrame";this.charContainer=new p1,this.add(this.charContainer),this.material.visible=!1,this._geometryUserData=e.userData,this.userData.textFrame={hexColor:null,opacity:1,visible:!0,text:"",fontSize:16,lineHeight:1.5,letterSpacing:1,fontFamily:"roboto_regular",textTransform:1,horizontalAlignment:1,verticalAlignment:1,LOD:16,maxLineSize:this._geometryUserData.parameters.width,textOrigin:new h1(this._geometryUserData.parameters.width*-.5,this._geometryUserData.parameters.height*.5,0),textLines:[]},this.createTextLine()}static createFromState(e,r,o){let n=Gs.create({parameters:{width:r.width,height:r.height}}),s=new cc(n).fromState(r,o);return s.uuid=e,s}async updateText(e){this.clearText();let r=this.userData.textFrame,o=r.fontFamily;await wt.loadFont(o),r.text=e;let n=r.textOrigin,s=new c1({visible:r.visible,transparent:!0,side:lc}),a=e.split(`
|
|
1330
|
+
`),l=0;this.userData.textFrame.textLines=a.map((c,h)=>{let p=new oo(l,r.lineHeight,r.fontSize);return p.message=c.split("").map(u=>{let d={char:u,fontFamily:o,letterSpacing:r.letterSpacing,fontSize:r.fontSize,LOD:16},m=s.clone();m.color=r.hexColor,m.opacity=r.opacity;let g=new wt(d,m);return p.addChar3D(g,n),this.charContainer.add(g),g}),l+=p.maxCharSize*p.lineHeight,p}),this.textFullUpdate(),this.checkOverFlow()}clearText(){let e=this.userData.textFrame.textLines;for(;this.charContainer.children.length;){let r=this.charContainer.children[0];this.charContainer.remove(r)}for(;e.length;)e.pop()}raycast(e,r){let o=[];if(super.raycast(e,o),o.length>0){r.push(o[0]);return}let n=[];for(let s=0,a=this.charContainer.children.length;s<a;++s)if(this.charContainer.children[s]instanceof wt&&(e.intersectObject(this.charContainer.children[s],!1,n),n.length>0)){n[0].object=this,r.push(n[0]);return}}updateGeometry(e){let r=this.userData,o=this.geometry.userData,n=o.parameters.width,s=o.parameters.height,a=e.parameters?.width??n,l=e.parameters?.height??s,c=r.textFrame;super.updateGeometry(e),c.maxLineSize=a,c.textOrigin.set(-.5*a,.5*l,0),l!==s?(this.checkOverFlow(),this.checkCapacity()):a!==n&&(n<a?this.checkCapacity():n>a&&this.checkOverFlow())}checkOverFlow(e=0){let r=this.userData,o=r.textFrame.textOrigin,n=r.textFrame.textLines;for(let s=e;s<n.length;s++){n[s].updateYLinePos(this.getNewLinePosition(s)),n[s].fullUpdate(o);let a=[];for(;n[s].checkOverFlow(r.textFrame.maxLineSize);)n[s].containSpaceOverFlow()?a.unshift(n[s].getWord(n[s].message.length-1,-1)):a.unshift(n[s].popChar());if(a.length>0){n[s+1]===void 0?(n[s].isEndLine(!1),this.createTextLine()):n[s].endLine&&(this.createTextLine(s+1),n[s].isEndLine(!1),n[s+1].isEndLine(!0));let l=0;for(let c=0;c<a.length;c+=1)for(let h=0;h<a[c].length;h+=1)n[s+1].addChar3D(a[c][h],o,l),l+=1;n[s+1].fullUpdate(o)}n[s].fullUpdate(o)}this.textFullUpdate(e)}checkCapacity(e=0){let r=this.userData,o=r.textFrame.textOrigin,n=r.textFrame.maxLineSize,s=r.textFrame.textLines;for(let a=e;a<s.length;a+=1)if(s[a].updateYLinePos(this.getNewLinePosition(a)),s[a].fullUpdate(o),!!s[a-1])for(;!s[a-1].endLine;){let l,c=s[a-1].spaceLeft(n);if(s[a].wordSize(0,1)<=c){s[a].containSpace()?l=s[a].getWord(0,1):l=s[a].popChar(0);for(let h=0;h<l.length;h+=1)l[h]&&s[a-1].addChar3D(l[h],o)}else{s[a].isEmpty()?(s[a].endLine&&s[a-1].isEndLine(!0),s.splice(a,1),a-=1):(s[a].updateYLinePos(this.getNewLinePosition(a)),s[a].fullUpdate(o));break}}this.textFullUpdate(e)}createTextLine(e=this.userData.textFrame.textLines.length){let o=this.userData.textFrame;o.textLines.splice(e,0,new oo(this.getNewLinePosition(e),o.lineHeight,o.fontSize))}textFullUpdate(e=0){let o=this.userData.textFrame,n=o.textLines,s=this.getVerticalAlignmentOffSet();for(let a=e;a<n.length;a++)n[a].updateYLinePos(this.getNewLinePosition(a)),n[a].fullUpdate(o.textOrigin),n[a].alignText(o.textOrigin,o.maxLineSize,o.horizontalAlignment,o.verticalAlignment,s)}getVerticalAlignmentOffSet(){switch(this.userData.textFrame.verticalAlignment){case 1:return 0;case 2:return this.getRemainingVerticalSpace()/2;case 3:return this.getRemainingVerticalSpace();default:return 0}}getRemainingVerticalSpace(){let r=this.userData.textFrame.textLines;return this.geometry.userData.parameters.height-this.getNewLinePosition(r.length)}getNewLinePosition(e){let o=this.userData.textFrame.textLines,n=0;for(let s=0;s<e;s+=1)n+=o[s].maxCharSize*o[s].lineHeight;return n}updateColor(e){let r=this.userData;r.textFrame.hexColor=e;let o=r.textFrame.textLines;for(let n=0;n<o.length;n++){let s=o[n].message;for(let a=0;a<s.length;a++){let l=s[a].material;l.color?.isColor&&(l.color=e)}}}updateOpacity(e){let r=this.userData;r.textFrame.opacity=e;let o=r.textFrame.textLines;for(let n=0;n<o.length;n++){let s=o[n].message;for(let a=0;a<s.length;a++){let l=s[a].material;l.opacity=e}}}updateVisible(e){let r=this.userData;r.textFrame.visible=e;let o=r.textFrame.textLines;for(let n=0;n<o.length;n++){let s=o[n].message;for(let a=0;a<s.length;a++){let l=s[a].material;l.visible=e}}}async updateFontFamily(e){await wt.loadFont(e);let o=this.userData.textFrame,n=o.textLines;o.fontFamily=e;for(let s=0;s<n.length;s++){let a=n[s].message;for(let l=0;l<a.length;l++)a[l].updateFontFamily(e)}this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateFontSize(e){let o=this.userData.textFrame,n=o.textLines,s=o.fontSize;o.fontSize=e;for(let a=0;a<n.length;a++)n[a].updateFontSize(e);this.textFullUpdate(),e>s?this.checkOverFlow():e<s&&this.checkCapacity()}async updateTextTransform(e){let o=this.userData.textFrame;await wt.loadFont(o.fontFamily);let n=o.textLines;switch(o.textTransform=e,e){case 2:for(let s=0;s<n.length;s++){let a=n[s].message;for(let l=0;l<a.length;l++)n[s].message[l].updateChar(a[l].char.toUpperCase())}break;case 3:for(let s=0;s<n.length;s++){let a=n[s].message;for(let l=0;l<a.length;l++)n[s].message[l].updateChar(a[l].char.toLowerCase())}break;default:for(let s=0;s<n.length;s++){let a=n[s].message;for(let l=0;l<a.length;l++)n[s].message[l].updateChar(a[l].originalChar)}}this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateLetterSpacing(e){let r=this.userData,o=r.textFrame.textLines;r.textFrame.letterSpacing=e;for(let n=0;n<o.length;n++){let s=o[n].message;for(let a=0;a<s.length;a++)s[a].updateLetterSpacing(e)}this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateLOD(e){let r=this.userData;r.textFrame.LOD=e;let o=r.textFrame.textLines;for(let n=0;n<o.length;n++);this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateLineHeight(e){let r=this.userData,o=r.textFrame.textLines;r.textFrame.lineHeight=e;for(let n=0;n<o.length;n++)o[n].updatelineHeight(e);this.textFullUpdate()}updateVerticalAlignment(e){let r=this.userData;r.textFrame.verticalAlignment=e,this.textFullUpdate()}updateHorizontalAlignment(e){let r=this.userData;r.textFrame.horizontalAlignment=e,this.textFullUpdate()}fromTextFrameData(e,r){if(e.color!==void 0){let o=Ae(e.color,r);this.updateColor(o),this.updateOpacity(o.a)}e.alpha!==void 0&&this.updateOpacity(e.alpha),e.font!==void 0&&this.updateFontFamily(e.font),e.horizontalAlign!==void 0&&this.updateHorizontalAlignment(e.horizontalAlign),e.verticalAlign!==void 0&&this.updateVerticalAlignment(e.verticalAlign),e.textTransform!==void 0&&this.updateTextTransform(e.textTransform),e.fontSize!==void 0&&this.updateFontSize(e.fontSize),e.lineHeight!==void 0&&this.updateLineHeight(e.lineHeight),e.letterSpacing!==void 0&&this.updateLetterSpacing(e.letterSpacing),e.text!==void 0&&e.text!==""&&this.updateText(e.text),(e.width!==void 0||e.height!==void 0)&&this.updateGeometry({parameters:{width:e.width,height:e.height}})}fromState(e,r){return super.fromState(e),this.fromTextFrameData(e,r),this}convertToVector(){let{fontFamily:e,hexColor:r}=this.userData.textFrame,o=new Tr;o.name="Text Shape";let n=wt.fontCache[e];for(let s of this.charContainer.children)s instanceof wt&&n.generateShapes(s.char,1).forEach(a=>{let l=new ve().fromShape(a);l.applyScale(s.scale.x,s.scale.y);let c=Ke.create({shape:l}),h=new Ft({side:lc});h.color=r;let p=new jr(c,h);p.name=s.char,p.position.copy(s.position),p.rotation.copy(s.rotation),o.attach(p)});return o}},no=cc;no.VerticalAlign=qa,no.HorizontalAlign=Wa,no.TextTransform=$a;import{DRACOLoader as u1}from"three/examples/jsm/loaders/DRACOLoader.js";var kr;function d1(){return kr||(kr=new u1,kr.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),kr.decoderPending}async function m1(i){if(kr){let t={attributeIDs:kr.defaultAttributeIDs,attributeTypes:kr.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await kr.decodeGeometry(new Int8Array(i).buffer,t)}catch(r){console.error(r)}if(e)return{index:e.index?{array:e.index.array}:void 0,attributes:Object.entries(e.attributes).map(([r,o])=>({name:r,itemSize:o.itemSize,array:o.array}))}}return null}async function mm(i,t){let[e,r]=Pa(ms.deserialize(new Uint8Array(i))),o=[];e.scene.objects.traverse((n,s)=>{s.type==="Mesh"&&s.geometry.type==="NonParametricGeometry"&&s.geometry.data.draco!==void 0&&o.push(s)}),o.length&&await d1();for(let n of o){let s=await m1(Aa(n.geometry.data.draco));if(s){s.index&&(n.geometry.data.index={array:s.index.array,itemSize:1,normalized:!1,type:"Uint32Array"});let a={};s.attributes.forEach(({name:l,array:c,itemSize:h})=>{a[l]={array:c,itemSize:h,type:"Float32Array",normalized:!1}}),n.geometry.data.attributes=a,n.geometry.data.draco=void 0}}return t&&t(e),r.result().data}var hc=new Map,fi={url:"head",time:0,data:null,next:null,prev:null},vn={url:"tail",time:1/0,data:null,next:null,prev:null};fi.next=vn;vn.prev=fi;var fm=0;function sn(i){if(typeof i=="string")return i;let t=Date.now(),e=hc.get(i);return e===void 0?(e={url:URL.createObjectURL(new Blob([i])),data:i,time:t,next:null,prev:null},hc.set(i,e)):(e.time=t,e.prev.next=e.next,e.next.prev=e.prev),e.prev=vn.prev,e.next=vn,vn.prev.next=e,vn.prev=e,t-fm>1e3*10&&(fm=t+1e3,setTimeout(()=>{let r=Date.now(),o=fi.next;for(;o.time<r-1e3*10;)URL.revokeObjectURL(o.url),hc.delete(o.data),o=o.next,o.prev=fi,fi.next=o},900)),e.url}import{WebGLRenderTarget as gm,LinearMipmapLinearFilter as f1,LinearFilter as g1,ClampToEdgeWrapping as ym,DepthTexture as xm,NearestFilter as vm,FloatType as y1}from"three";var bm=new Ft,fa=class extends ut{},ga=class{constructor(t){this.materials={};this.images={};this.colors={};this.transmissionRenderTarget=new gm(2048,2048,{generateMipmaps:!0,minFilter:f1,magFilter:g1,wrapS:ym,wrapT:ym}),this.transmissionRenderTarget.depthTexture=new xm(2048,2048),this.normalRenderTarget=new gm(1024,1024,{generateMipmaps:!1,minFilter:vm,magFilter:vm,type:y1}),this.normalRenderTarget.depthTexture=new xm(1024,1024),this.penumbraSizeNode=new ke(5,t.penumbraSize),this.resolutionNode=new Ye(1,1),this.pixelRatioNode=new X(window.devicePixelRatio),this.reset(t)}reset(t){for(let[e,r]of Object.entries(t.images))this.addImage(e,r.data);for(let[e,r]of Object.entries(t.colors))this.addColor(e,r);for(let[e,r]of Object.entries(t.materials))this.addMaterial(e,Wl(r,this))}get transmissionSamplerMap(){return this.transmissionRenderTarget.texture}get transmissionDepthMap(){return this.transmissionRenderTarget.depthTexture}get normalMap(){return this.normalRenderTarget.texture}addMaterial(t,e){e.uuid=t,this.materials[t]=e}deleteMaterial(t){this.materials[t]&&(this.materials[t].dispose(),delete this.materials[t])}isSharedMaterial(t){return t.uuid in this.materials||t===bm}getMaterial(t){let e=this.materials[t];return e}getMaterialOrDeletedPlaceholder(t){return this.materials[t]??bm}getMaterials(){return this.materials}addImage(t,e){if(this.images[t])return this.images[t].onload=()=>{this.onImageLoad&&this.onImageLoad()},this.images[t].src=sn(e),!0;{let r=new Image;return r.src=sn(e),r.onload=()=>{this.onImageLoad&&this.onImageLoad()},this.images[t]=r,!1}}deleteImage(t){this.images[t]&&delete this.images[t]}getDefaultImage(){return this.images.image_0}getImage(t){return this.images[t]}getImages(){return this.images}addColor(t,e){return this.colors[t]?("a"in e?this.colors[t].setRGBA(e.r,e.g,e.b,e.a):this.colors[t].setRGBA(e.r,e.g,e.b,1),!0):("a"in e?this.colors[t]=new fa(e.r,e.g,e.b,e.a):this.colors[t]=new fa(e.r,e.g,e.b,1),!1)}updateColor(t,e){if(this.colors[t]){let r=this.colors[t];return this.colors[t].r=e.r??r.r,this.colors[t].g=e.g??r.g,this.colors[t].b=e.b??r.b,this.colors[t].a=e.a??r.a,!0}return!1}deleteColor(t){this.colors[t]&&delete this.colors[t]}getColor(t){return this.colors[t]}dispose(){Object.keys(this.materials).forEach(e=>this.deleteMaterial(e)),this.transmissionRenderTarget.depthTexture.dispose(),this.transmissionRenderTarget.dispose(),this.onImageLoad=void 0}};import{HemisphereLight as M1,Scene as A1,Vector3 as O1,Color as Am,Fog as D1,Box3 as _1}from"three";import{Box3 as x1,Matrix4 as io,Sphere as Nm,Vector3 as v1}from"three";var Tm=rf(wm());var pc;Rs.then(i=>{pc=i});var Lm=new io,b1=new io,S1=new io,Ht=new x1,Hr=new v1,w1=new io,N1=new io,bn=class extends Xe{constructor(e,r,o,n){super(o??r,n);this.subdivPointer=e;this.originalGeometry=r;this.subdividedGeometry=o;this.objectType="SubdivObject";this.hiddenMatrixOld=new io;this.smoothShading=!0;this.phongAngle=35;this.matrixWorldRigid=new io;this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!1}static createFromState(e,r,o){let{subdivPointer:n,originalGeometry:s,subdividedGeometry:a}=_t.build(r.geometry,void 0,void 0,!r.flatShading),l=pi(r.material,o),c=new bn(n,s,a||void 0,l);return r.geometry.phongAngle!==void 0&&(c.phongAngle=r.geometry.phongAngle),c.calcBoundingBox(),c.freeSubdivPointer(),c.uuid=e,c.fromState(r),c}shallowClone(e){return new xn(this.geometry,this.material).shallowCopy(this,e)}buildFromStore(e,r){let{originalGeometry:o,subdividedGeometry:n,subdivPointer:s}=_t.build(e,r,this.subdivPointer,this.smoothShading,this.shearScale);if(e.phongAngle!==void 0&&(this.phongAngle=e.phongAngle),this.subdivPointer=s,o!==void 0&&(this.originalGeometry?.dispose(),this.originalGeometry=o),n!==void 0&&(this.subdividedGeometry?.dispose(),this.subdividedGeometry=n??void 0),this.geometry=this.subdividedGeometry??this.originalGeometry,ui(this),this.cloner)for(let a of this.cloner.children)a.geometry=this.geometry;e.width&&(this.geometry.userData.parameters={width:e.width,height:e.height,depth:e.depth})}updateMesh(e=!1){_t.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e?this.shearScaleInv:void 0),this.subdividedGeometry&&_t.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=_t.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=_t.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1)),this.geometry=this.subdividedGeometry??this.originalGeometry}raycast(e,r){this.geometry=this.originalGeometry,Xe.prototype.raycast.call(this,e,r),this.geometry=this.subdividedGeometry??this.originalGeometry}updateMatrixWorldSVD(){let e=this.matrixWorld.elements,r=[[e[0],e[4],e[8]],[e[1],e[5],e[9]],[e[2],e[6],e[10]]],{u:o,v:n,q:s}=(0,Tm.SVD)(r),a=Lm.set(o[0][0],o[0][1],o[0][2],0,o[1][0],o[1][1],o[1][2],0,o[2][0],o[2][1],o[2][2],0,0,0,0,1),l=b1.set(n[0][0],n[0][1],n[0][2],0,n[1][0],n[1][1],n[1][2],0,n[2][0],n[2][1],n[2][2],0,0,0,0,1),c=S1.copy(l).transpose();this.shearScale=w1.makeScale(s[0],s[1],s[2]).multiply(c).premultiply(l),this.shearScaleInv=N1.copy(this.shearScale).invert(),this.matrixWorldRigid.multiplyMatrices(a,c),s.every(h=>Math.abs(s[0]-h)<.01)&&(this.shearScale=void 0,this.shearScaleInv=void 0)}activateSVDCompensation(){this.shearScale!==void 0&&(this.matrixAutoUpdate=!1,this.matrix.copy(this.matrixWorldRigid).copyPosition(this.matrixWorld),this.hiddenMatrixOld.copy(this.hiddenMatrix),this.hiddenMatrix.copy(this.parent.matrixWorld).invert())}deactivateSVDCompensation(){this.shearScale!==void 0&&(this.shearScale=void 0,this.shearScaleInv=void 0,this.matrixAutoUpdate=!0,this.hiddenMatrix.copy(this.hiddenMatrixOld))}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new Nm);let r=e.attributes.position,o=e.boundingSphere.center;Ht.setFromBufferAttribute(r),Ht.getCenter(o),e.boundingSphere.radius=o.distanceTo(Ht.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),Ht.getSize(Hr);let n={width:Hr.x,height:Hr.y,depth:Hr.z};return this.geometry.userData.parameters=n,n}updateBoundingBox(e){let r=this.originalGeometry;Ht.min.set(e[0],e[2],e[4]),Ht.max.set(e[1],e[3],e[5]),this.shearScaleInv&&(Ht.min.applyMatrix4(this.shearScaleInv),Ht.max.applyMatrix4(this.shearScaleInv)),r.boundingSphere===null&&(r.boundingSphere=new Nm);let o=r.boundingSphere.center;Ht.getCenter(o),r.boundingSphere.radius=o.distanceTo(Ht.max),isNaN(r.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),Ht.getSize(Hr);let n={width:Hr.x,height:Hr.y,depth:Hr.z};return this.geometry.userData.parameters=n,n}freeSubdivPointer(){this.subdivPointer&&(pc.free_bvh(this.subdivPointer),pc.free_subdivision_surface(this.subdivPointer),this.subdivPointer=0)}updateGeometry(e){this.geometry.userData.scale||(this.geometry.userData.scale=Array(3)),this.geometry.userData.scale[0]=this.geometry.userData.parameters.width===0?1:e.parameters.width/this.geometry.userData.parameters.width,this.geometry.userData.scale[1]=this.geometry.userData.parameters.height===0?1:e.parameters.height/this.geometry.userData.parameters.height,this.geometry.userData.scale[2]=this.geometry.userData.parameters.depth===0?1:e.parameters.depth/this.geometry.userData.parameters.depth,Cm(this.originalGeometry.attributes,...this.geometry.userData.scale),this.originalGeometry.attributes.position.needsUpdate=!0,this.originalGeometry.attributes.normal.needsUpdate=!0,this.subdividedGeometry&&(Cm(this.subdividedGeometry.attributes,...this.subdividedGeometry.userData.scale),this.subdividedGeometry.attributes.position.needsUpdate=!0,this.subdividedGeometry.attributes.normal.needsUpdate=!0),this.geometry.userData.parameters={...e.parameters}}};function Cm(i,t,e,r){let o=i.position.array,n=i.normal.array,s=Lm.makeScale(t,e,r).invert().elements,a,l,c;for(var h=0,p=o.length;h<p;h+=3)o[h]*=t,o[h+1]*=e,o[h+2]*=r,a=n[h],l=n[h+1],c=n[h+2],n[h]=s[0]*a+s[4]*l+s[8]*c,n[h+1]=s[1]*a+s[5]*l+s[9]*c,n[h+2]=s[2]*a+s[6]*l+s[10]*c}import{BackSide as C1,BufferGeometry as T1,DoubleSide as L1,FrontSide as I1}from"three";function Im(i,t){t.flatShading!==void 0&&(i.flatShading=t.flatShading,i.needsUpdate=!0),t.wireframe!==void 0&&(i.wireframe=t.wireframe),t.side!==void 0&&(t.side===0?i.side=I1:t.side===1?i.side=C1:i.side=L1)}function P1(i,t){if(Array.isArray(i.material))for(let e of i.material)Im(e,t);else{let e=i.material;Im(e,t)}i.objectType==="SubdivObject"&&t.flatShading!==void 0&&(i.material.flatShading=!1,i.smoothShading=!t.flatShading,i.updateMesh())}function Pm(i,t,e){let r;if(t.geometry.type==="SubdivGeometry")r=bn.createFromState(i,t,e);else{let o=t.geometry.type==="BooleanGeometry"?new T1:ta(t.geometry,e),n="materials"in t?Gd(t.materials,e):pi(t.material,e);vs.is2DParametricMesh(o.userData.type)?r=new da(o,n):o?.userData.type==="VectorGeometry"?r=new jr(o,n):t.geometry.type==="NonParametricGeometry"?r=new xn(o,n):t.geometry.type==="BooleanGeometry"?(r=new na(void 0,n),r.booleanOp=t.geometry.operation,t.geometry.phongAngle!==void 0&&(r.phongAngle=t.geometry.phongAngle)):r=new yn(o,n),r.uuid=i,r.fromState(t,e)}return P1(r,t),r}function Mm(i,t,e){return t.type==="Mesh"?Pm(i,t,e):t.type==="TextFrame"?no.createFromState(i,t,e):t.type==="Empty"?Tr.createFromState(i,t):t.type==="PointLight"?mn.createFromState(i,t,e):t.type==="SpotLight"?fn.createFromState(i,t,e):t.type==="DirectionalLight"?dn.createFromState(i,t,e):Po.is(t.type)?Cr.createFromState(i,t):(console.error(t),new Tr)}var Om=new O1,uc=class extends zs(A1){constructor(e,r){super();this.objectType="Scene";this.alpha=1;this.backupFog=new D1(16777215,.1,2e3);this.fogUseBGColor=!1;this.wireframeState=!1;this.needsTransmissionDirty=!0;this.needsNormalDirty=!0;this._needsTransmission=!1;this._needsNormal=!1;this._color=new Am(1,0,0);this.bgColor=new Am(1,1,1);this.entityByUuid={};this.ambientLight=new M1(13882323,8553090,.75),this.ambientLight.name="Default Ambient Light",this.personalCamera=this.createPersonalCamera(),this.activeCamera=this.personalCamera,this.sharedAssetManager=r,this.init(e,r)}needsTransmission(e){return this.needsTransmissionDirty&&(this._needsTransmission=jd(e,this),e!==void 0&&(this.needsTransmissionDirty=!1)),this._needsTransmission}needsNormal(e){return this.needsNormalDirty&&(this._needsNormal=Ud(e,this),e!==void 0&&(this.needsNormalDirty=!1)),this._needsNormal}find(e){if(e===""||e===void 0)return;let r=this.entityByUuid[e];return r===void 0?this.getObjectByProperty("uuid",e):r}get color(){return this._color}set color(e){this.fogUseBGColor===!0&&this.backupFog.color.copy(e),this._color.copy(e)}get enableFog(){return this.fog!==null}set enableFog(e){this.fog=e===!0?this.backupFog:null}init(e,r){if(this.createChildrenObjects(e.objects,this,r),this.personalCamera.removeFromParent(),this.add(this.personalCamera),this.ambientLight.removeFromParent(),this.add(this.ambientLight),this.setBackgroundColor(Ae(e.backgroundColor,r)),this.updateFog(e.fog,r),this.updateAmbientLight(e.environment.ambientLight,r),this.activeCamera=this.personalCamera,e.publish.playCamera!==null){let o=this.find(e.publish.playCamera);o instanceof Cr&&this.switchActiveCamera(o)}this.traverse(o=>{tr(o)&&o.recomputeBoolean()})}clearScene(e){this.traverseEntity(r=>{kd(r,e)});for(let r of this.children)At(r)&&r.removeFromParent()}resetAfterClear(e,r){this.init(e,r)}createPersonalCamera(){let e=Cr.createFromState(uc.PERSONAL_CAMERA_ID,{...Ss.defaultData,name:"Personal Camera"});return e.enableHelper=!1,e.objectHelper.visible=!1,delete e.isEntity,this.registerObjectCreatedInLegacy(e),e}raycast(e){let r=[],o=n=>{for(let s of n.children){let a=Il(s),l=Ll(s);(At(s)&&!s.raycastLock&&s.visible||a||l)&&((a||er(s)||!a&&!l&&vr(s)&&s.objectHelper.parent)&&e.intersectObject(s,!1,r),a||o(s))}};o(this);for(let n=0,s=r.length;n<s;n++)Il(r[n].object)&&(r[n].object=r[n].object.parent.object);return r}traverseEntity(e){for(let r of this.children)At(r)&&r.traverseEntity(e)}updateFog(e,r){this.enableFog=e.enabled,this.fogUseBGColor=e.useBackgroundColor,e.useBackgroundColor?this.backupFog.color.set(this.bgColor):this.backupFog.color=Ae(e.color,r),this.backupFog.near=e.near,this.backupFog.far=e.far}dispose(){this.clearScene(this.sharedAssetManager),this.sharedAssetManager.dispose()}updateAmbientLight(e,r){hd(this.ambientLight,e,r),e.groundColor!==void 0&&(this.ambientLight.groundColor=Ae(e.groundColor,r)),e.enabled!==void 0&&(this.ambientLight.visible=e.enabled)}switchActiveCamera(e){this.activeCamera!==this.personalCamera&&(this.activeCamera.enableHelper=!0),this.activeCamera=e,e.enableHelper=!1}setBackgroundColor(e){this.bgColor=e,this.alpha=e.a}createChildrenObjects(e,r,o){for(let n of e)this.createChildObject(n.id,n.data,n.children,r,o)}registerObjectCreatedInLegacy(e){this.entityByUuid[e.uuid]=e}unregisterObject(e){delete this.entityByUuid[e.uuid];for(let r of e.children)this.unregisterObject(r)}createChildObject(e,r,o,n,s){let a=Mm(e,r,s);return a&&(this.entityByUuid[e]=a,n.add(a),tr(n)&&er(a)&&(a.prevBooleanObjectParent=n),this.createChildrenObjects(o,a,s)),a}getCenter(e){let r=[];for(let n=0,s=e.length;n<s;++n){let{id:a,recursive:l}=e[n],c=this.find(a),h=l?c.recursiveBBox:c.singleBBox;r.push(...h.vertices)}let o=new _1;return o.setFromPoints(r),o.getCenter(Om),Om}copyMatrixWorld(e,r){if(e===null){r.identity();return}let o=this.find(e);o?r.copy(o.matrixWorld):r.identity()}copyParentMatrixWorld(e,r){if(e===null){r.identity();return}let o=this.find(e)?.parent;o?r.copy(o.matrixWorld):r.identity()}traverseMaterial(e){this.traverseEntity(r=>{if(r instanceof Xe)if(Array.isArray(r.material))for(let o=0;o<r.material.length;o++)e(r.material[o]);else e(r.material)})}updateCanvasSize(e,r){this.activeCamera.setViewplaneSize(e,r);let o,n;e>=r?(o=r/e,n=1):(o=1,n=e/r),this.traverseMaterial(s=>{s.layersList.getLayersOfType("transmission").forEach(l=>{l.uniforms[`f${l.id}_aspectRatio`].value.x=o,l.uniforms[`f${l.id}_aspectRatio`].value.y=n})})}},gi=uc;gi.PERSONAL_CAMERA_ID="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera";import{Mesh as sH}from"three";import{mergeBufferGeometries as cH}from"three/examples/jsm/utils/BufferGeometryUtils.js";function Dm(i){let t;if(!!i.index)for(let e=0;e<i.index.array.length;e+=3)t=i.index.array[e],i.index.array[e]=i.index.array[e+2],i.index.array[e+2]=t}import{Color as _m,ShaderLib as B1}from"three";function Bm(i){let t=new Set;return i.traverse(e=>{if(er(e))if(Fe(e.material))e.material.forEach(r=>{let o=r;t.has(o)||t.add(o)});else{let r=e.material;t.has(r)||t.add(r)}}),t.forEach(e=>{if(e instanceof Array)return;let r=e.onBeforeCompile.bind(e);E1(e)?(Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new _m,specularColor:new _m}),e.onBeforeCompile=(o,n)=>{r&&r(o,n),o.uniforms=Object.assign(B1.physical.uniforms,o.uniforms),e.userData.layers.getLayersOfType("transmission").forEach(s=>{o.uniforms.transmissionSamplerMap.value&&(s.uniforms["f"+s.id+"_transmissionSamplerMap"].value=o.uniforms.transmissionSamplerMap.value,s.uniforms["f"+s.id+"_transmissionSamplerSize"].value=o.uniforms.transmissionSamplerSize.value)})}):G1(e)||(e.onBeforeCompile=(o,n)=>{r&&r(o,n),e.transparent=!1})}),i}function E1(i){return i.userData.layers.getLayersOfType("transmission").length>0}function G1(i){let t=i.userData.layers.head,e=0;for(;t!==void 0;){if(t.type!=="light"&&t.type!=="fresnel"){let r=t.uniforms["f"+t.id+"_alpha"];r&&(e+=(1-e)*r.value)}t=t.next}return e<1}function Em(i){return i.traverse(t=>{if(t.type==="Camera"){let e=t;e.type=e.cameraType}}),i}function Gm(i){let t=[],e=(r,o=0)=>{let n=o>0?r+o:r;return t.includes(n)?e(r,o+1):n};return i.traverse(r=>{if(t.includes(r.name)){let o=r.name,n=e(r.name);if(r.name=n,r.isMesh){let s=r;s.material instanceof Array?s.material.forEach(a=>{a.name=a.name.replace(o,n)}):s.material.isAsset||(s.material.name=s.material.name.replace(o,n))}}t.push(r.name)}),i}import{mergeBufferGeometries as R1}from"three/examples/jsm/utils/BufferGeometryUtils.js";function Rm(i){let t=[];return i.traverse(e=>{e instanceof eo&&t.push(e)}),t.forEach(e=>{let r=e.object,o=e.children,n=o.map(a=>{a.updateMatrix();let l=a.geometry.clone().applyMatrix4(a.matrix);return a.matrix.determinant()<0&&Dm(l),l}),s=R1(e.parameters.hideBase?n:[r.geometry,...n]);r.geometry=s,r.material=o[0].material,r.remove(e)}),i}function zm(i){return i.traverse(t=>{t.matrixAutoUpdate=!0}),i}function Vm(i){Object.values(i.shared.materials).forEach(t=>{dc(t)}),i.scene.objects.traverse((t,e)=>{"material"in e?dc(e.material):"materials"in e&&e.materials.forEach(r=>{dc(r)})})}function dc(i){if(typeof i=="string")return;let t=[];i.layers.forEach((e,r)=>{e.type==="outline"&&t.push(r)}),t.reverse().forEach(e=>{i.layers.delete(e)}),t.length&&console.warn("The Spline Loader currently does not support the outline layer.")}var Fm="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",mc=class extends V1{load(t,e,r,o=console.error){let n=new z1(this.manager);n.setPath(this.path),n.setResponseType("arraybuffer"),n.setRequestHeader(this.requestHeader),n.setWithCredentials(this.withCredentials),t.endsWith(".spline")?console.warn(Fm+" The .spline files are only meant to be used by the Editor."):t.endsWith(".splinecode")||console.warn(Fm),n.load(t,async s=>{try{if(typeof s=="string")throw new Error("The .spline file is not binary!");let a=await this.parse(s);e(a)}catch(a){o(a)}},r,o)}async parse(t){let e=await mm(t,Vm),r=new ga(e.shared);Object.values(r.getMaterials()).forEach(s=>Object.assign(s,{isAsset:!0}));let o=new gi(e.scene,r);o.remove(o.personalCamera),e.scene.environment.ambientLight.enabled||o.remove(o.ambientLight);let n=e.scene.publish.playCamera;if(n){let s=o.find(n);s&&cd(s)&&Object.assign(s,{makeDefault:!0})}return o=Rm(o),o=Bm(o),o=Em(o),o=Gm(o),o=zm(o),o}};export{mc as default};
|