glyphcss 0.0.4 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{elements-dJUvIMDN.d.cts → elements-ycVyIlYL.d.cts} +93 -3
- package/dist/{elements-dJUvIMDN.d.ts → elements-ycVyIlYL.d.ts} +93 -3
- package/dist/elements.cjs +5 -5
- package/dist/elements.d.cts +1 -1
- package/dist/elements.d.ts +1 -1
- package/dist/elements.js +5 -5
- package/dist/index.cjs +5 -5
- package/dist/index.d.cts +75 -3
- package/dist/index.d.ts +75 -3
- package/dist/index.js +5 -5
- package/package.json +2 -2
package/dist/elements.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
var et=Math.PI/180;function tt(n,t,e){let i=n[1],r=n[0],s=n[2],l=e*et,o=Math.cos(l),c=Math.sin(l),u=i*o-r*c,d=i*c+r*o,a=s,f=t*et,v=Math.cos(f),g=Math.sin(f),w=d*v-a*g,x=d*g+a*v;return[u,w,x]}function Ae(n={}){let t={rotX:n.rotX??65,rotY:n.rotY??45,distance:n.distance??6,zoom:n.zoom??.65,stretch:n.stretch??1,target:[0,0,0],eyeMode:!1,focal:1},[e,i]=n.center??[.5,.5];return{kind:"perspective",get rotX(){return t.rotX},set rotX(r){t.rotX=r},get rotY(){return t.rotY},set rotY(r){t.rotY=r},get distance(){return t.distance},set distance(r){t.distance=r},get zoom(){return t.zoom},set zoom(r){t.zoom=r},get stretch(){return t.stretch},set stretch(r){t.stretch=r},get target(){return t.target},set target(r){t.target=r},get eyeMode(){return t.eyeMode},set eyeMode(r){t.eyeMode=r},project(r,s,l,o){let u=50/o,d=[r[0]-t.target[0],r[1]-t.target[1],r[2]-t.target[2]],a=tt(d,t.rotX,t.rotY);if(t.eyeMode){if(a[2]>=-.001)return[NaN,NaN,a[2]];let y=t.focal/-a[2],E=a[0]*y*t.zoom*50,L=a[1]*y*t.zoom*50,p=s*e+E/u*t.stretch,m=l*i+L/50;return[p,m,a[2]]}let f=.001,v=t.distance-a[2];if(v<f)return[NaN,NaN,a[2]];let g=t.distance/v,w=a[0]*g*t.zoom*50,x=a[1]*g*t.zoom*50,_=s*e+w/u*t.stretch,G=l*i+x/50;return[_,G,a[2]]}}}function nt(n={}){let t={rotX:n.rotX??65,rotY:n.rotY??45,distance:0,zoom:n.zoom??.65,stretch:1,target:[0,0,0]},[e,i]=n.center??[.5,.5];return{kind:"orthographic",get rotX(){return t.rotX},set rotX(r){t.rotX=r},get rotY(){return t.rotY},set rotY(r){t.rotY=r},get distance(){return t.distance},set distance(r){t.distance=r},get zoom(){return t.zoom},set zoom(r){t.zoom=r},get stretch(){return t.stretch},set stretch(r){t.stretch=r},get target(){return t.target},set target(r){t.target=r},get eyeMode(){return!1},set eyeMode(r){},project(r,s,l,o){let u=50/o,d=[r[0]-t.target[0],r[1]-t.target[1],r[2]-t.target[2]],a=tt(d,t.rotX,t.rotY),f=a[0]*t.zoom*50,v=a[1]*t.zoom*50,g=s*e+f/u,w=l*i+v/50;return[g,w,a[2]]}}}var St={direction:[-.5,-.7,-.5],intensity:1},Gt={intensity:.4};function Lt(n){let t=new Set,e=[];for(let i of n){let r=i.vertices;if(!(r.length<2))for(let s=0;s<r.length;s++){let l=r[s],o=r[(s+1)%r.length],c=`${l[0]},${l[1]},${l[2]}`,u=`${o[0]},${o[1]},${o[2]}`,d=c<u?`${c}|${u}`:`${u}|${c}`;if(t.has(d))continue;t.add(d);let a={from:l,to:o,weight:2};i.color&&(a.color=i.color),e.push(a)}}return e}function rt(n){let t=n.polygons??[],e=n.mode??(t.length?"solid":"wireframe"),i=n.wireframe??(e==="wireframe"?Lt(t):[]);return{camera:n.camera,grid:n.grid,polygons:t,wireframe:i,mode:e,directionalLight:n.directionalLight??St,ambientLight:n.ambientLight??Gt,glyphPalette:n.glyphPalette??"default",useColors:n.useColors??!0,smoothShading:n.smoothShading??!1,creaseAngle:n.creaseAngle??60,shadow:n.shadow,castShadowFlags:n.castShadowFlags??[],receiveShadowFlags:n.receiveShadowFlags??[]}}var pn=" .:-=+*#%@".split(""),fn=" .:-=+*#%@".split(""),Ve={default:{thin:"\xB7\u22C5\u2219\u02D9\xB7\u22C5\u2219".split(""),normal:"\u254B\u256C\u253C\u2573\u25C6\u25C7\u25CA\u25B2\u25B3\u25BC\u25BD\u25C8\u2B21\u2B22\u2234\u2235\u22A5\u2295\u2297\u2299\u229A\u229B".split(""),core:"\u2726\u2727\u2729\u25C9\u2299\u25CE".split(""),solid:" .:-=+*#%@".split("")},ascii:{thin:".'".split(""),normal:"+*x".split(""),core:"#@".split(""),solid:" .,:;!+=*xX#@".split("")},dots:{thin:"\xB7\u22C5".split(""),normal:"\u2022\u25CF".split(""),core:"\u25C9\u25CE".split(""),solid:" \xB7\u22C5\u2218\u2022\u25CF\u25C9\u25CE\u2B24".split("")},lines:{thin:"\u2500\u2502".split(""),normal:"\u2550\u2551".split(""),core:"\u2588".split(""),solid:" \u2500\u2550\u256C\u2551\u2588\u2593\u2592\u2591".split("")},blocks:{thin:"\u2591\u2581".split(""),normal:"\u2592\u2593\u258C\u2590\u2580\u2584".split(""),core:"\u2588".split(""),solid:" \u2591\u2592\u2593\u258C\u2590\u2588\u2580\u2584\u25A0".split("")},stars:{thin:"\xB7\u22C6".split(""),normal:"\u2726\u2727\u2729\u272A".split(""),core:"\u272B\u272C\u272D\u2605".split(""),solid:" \xB7\u22C6\u2217\u2726\u2727\u2729\u272A\u272B\u2605".split("")},arrows:{thin:"\xB7\u2219".split(""),normal:"\u2190\u2191\u2192\u2193".split(""),core:"\u2196\u2197\u2198\u2199\u2921\u2922".split(""),solid:" \xB7\u2219\u2191\u2197\u2192\u2198\u2193\u2199\u2190\u2196".split("")},braille:{thin:"\u2801\u2802\u2804\u2808".split(""),normal:"\u2803\u2805\u2806\u2809\u280A\u280B\u280C\u280D\u280E\u280F".split(""),core:"\u283F\u28FF".split(""),solid:" \u2801\u2803\u2807\u2827\u2837\u283F\u287F\u28FF".split("")},runes:{thin:".\xB7".split(""),normal:"\u16A0\u16A1\u16A2\u16A3\u16A4\u16A6\u16A8\u16B1\u16B2\u16B3\u16B7\u16B9\u16C3\u16C7\u16C9".split(""),core:"\u16DE\u16DF\u16E1\u16E2\u16E3".split(""),solid:" \xB7\u16A0\u16A3\u16A4\u16A8\u16B1\u16B7\u16DE\u16E2".split("")},math:{thin:"\u2219\u2218".split(""),normal:"\u2211\u220F\u222B\u221A\u221E\u2248\u2260\u2264\u2265\u2282\u2283\u2286\u2287".split(""),core:"\u222E\u222F\u2230\u2202".split(""),solid:" \u2219\u2218\u2211\u222B\u221A\u221E\u2248\u2295\u2297".split("")},binary:{thin:"\xB7.".split(""),normal:"01".split(""),core:"\u2588".split(""),solid:" .:01\u2588\u2588".split("")},hex:{thin:"\xB7\u2219".split(""),normal:"0123456789ABCDEF".split(""),core:"FFAA".split(""),solid:" 0123456789AF".split("")}},gn=Ve.default;function $e(n){return Ve[n]??Ve.default}function it(n){let{camera:t,grid:e,wireframe:i,mode:r}=n,{cols:s,rows:l,cellAspect:o}=e;if(r==="solid")return _t(n,s,l,o);let c=$e(n.glyphPalette),u=new Uint8Array(s*l),d=n.useColors?new Array(s*l).fill(null):null;for(let a of i){let f=t.project(a.from,s,l,o),v=t.project(a.to,s,l,o);f[0]!==f[0]||v[0]!==v[0]||Rt(u,d,f[0]|0,f[1]|0,v[0]|0,v[1]|0,a.weight??2,a.color??null,s,l)}return kt(u,d,s,l,c)}function _t(n,t,e,i){let{camera:r,polygons:s,directionalLight:l,ambientLight:o,smoothShading:c,creaseAngle:u,castShadowFlags:d,receiveShadowFlags:a}=n,f=$e(n.glyphPalette).solid,v=f.length-1,g=new Array(t*e).fill(" "),w=n.useColors,x=w?new Array(t*e).fill(null):null,_=new Float64Array(t*e).fill(-1/0),G=l.direction,z=Math.hypot(G[0],G[1],G[2])||1,y=G[0]/z,E=G[1]/z,L=G[2]/z,p=l.intensity??1,m=o.intensity??.4,b=ve(l.color??"#ffffff"),A=ve(o.color??"#ffffff"),h=c&&u>0?Ot(s,u):null,C=new Map,S=n.shadow,H=S!=null&&d.length>0?Ht(s,d,y,E,L):null,T=S?.opacity??.25,I=S?.lift??.05,R=S?.color??"#000000",q=H?ve(R):[0,0,0],P=globalThis.__glyphPerfDetail,U=P?performance.now():0,B=[],O=n.shadeCache??null,k=-1;for(let re=0;re<s.length;re++){let fe=s[re],Y=fe.vertices;if(!(Y.length<3)){for(let N=0;N<Y.length;N++)B[N]=r.project(Y[N],t,e,i);for(let N=1;N<Y.length-1;N++){k++;let ge=0,D=N,K=N+1,Z=Y[ge],oe=Y[D],ie=Y[K],F=B[ge],X=B[D],V=B[K];if(F[0]!==F[0]||X[0]!==X[0]||V[0]!==V[0]||(X[0]-F[0])*(V[1]-F[1])-(X[1]-F[1])*(V[0]-F[0])>0)continue;let $,J,Q,se=null;if(O!==null&&O.iA[k]!==void 0)$=O.iA[k],J=O.iB[k],Q=O.iC[k],se=O.lit[k];else{let M=oe[0]-Z[0],le=oe[1]-Z[1],ae=oe[2]-Z[2],ce=ie[0]-Z[0],qe=ie[1]-Z[1],Ue=ie[2]-Z[2],Ke=le*Ue-ae*qe,Ze=ae*ce-M*Ue,Je=M*qe-le*ce,Pe=Math.hypot(Ke,Ze,Je)||1,pt=Ke/Pe,ft=Ze/Pe,gt=Je/Pe,Oe,Ie,Re,ke,Fe,Be,Ye,Ne,Xe;if(h){let ye=h[re],ee=ye[ge],ue=ye[D],be=ye[K];Oe=ee[0],Ie=ee[1],Re=ee[2],ke=ue[0],Fe=ue[1],Be=ue[2],Ye=be[0],Ne=be[1],Xe=be[2]}else Oe=ke=Ye=pt,Ie=Fe=Ne=ft,Re=Be=Xe=gt;let yt=Math.max(0,-(Oe*y+Ie*E+Re*L)),bt=Math.max(0,-(ke*y+Fe*E+Be*L)),vt=Math.max(0,-(Ye*y+Ne*E+Xe*L));if($=Math.min(1,m+yt*p),J=Math.min(1,m+bt*p),Q=Math.min(1,m+vt*p),w){let ye=($+J+Q)/3,ee=Math.max(0,ye-m),ue=fe.color??"#ffffff",be=ee*255|0,Qe=`${ue}:${be}`,Ce=C.get(Qe);if(Ce===void 0){let De=ve(ue),Et=m*A[0]/255+ee*b[0]/255,wt=m*A[1]/255+ee*b[1]/255,Ct=m*A[2]/255+ee*b[2]/255,At=Math.min(255,De[0]*Et),Mt=Math.min(255,De[1]*wt),xt=Math.min(255,De[2]*Ct);Ce=`#${he(At)}${he(Mt)}${he(xt)}`,C.set(Qe,Ce)}se=Ce}O!==null&&(O.iA[k]=$,O.iB[k]=J,O.iC[k]=Q,O.lit[k]=se)}let He=a[re]??!1,we=null;if(H!==null&&He){let M=H,le=de(Z,M.right[0],M.right[1],M.right[2],M.up[0],M.up[1],M.up[2],M.dir[0],M.dir[1],M.dir[2],M.uMin,M.uMax,M.vMin,M.vMax),ae=de(oe,M.right[0],M.right[1],M.right[2],M.up[0],M.up[1],M.up[2],M.dir[0],M.dir[1],M.dir[2],M.uMin,M.uMax,M.vMin,M.vMax),ce=de(ie,M.right[0],M.right[1],M.right[2],M.up[0],M.up[1],M.up[2],M.dir[0],M.dir[1],M.dir[2],M.uMin,M.uMax,M.vMin,M.vMax);we={map:M,luA:le[0],lvA:le[1],ldA:le[2],luB:ae[0],lvB:ae[1],ldB:ae[2],luC:ce[0],lvC:ce[1],ldC:ce[2],lift:I,opacity:T,shadowColorRgb:q,shadowColorHex:R,litCache:C}}Pt(F[0],F[1],F[2],$,X[0],X[1],X[2],J,V[0],V[1],V[2],Q,f,v,se,g,x,_,t,e,we)}}}P&&(P.loop??(P.loop=[])).push(performance.now()-U);let ne=P?performance.now():0,pe=It(g,x,t,e);return P&&(P.string??(P.string=[])).push(performance.now()-ne),pe}var Tt=new Float64Array([(0+.5)/16,(8+.5)/16,(2+.5)/16,(10+.5)/16,(12+.5)/16,(4+.5)/16,(14+.5)/16,(6+.5)/16,(3+.5)/16,(11+.5)/16,(1+.5)/16,(9+.5)/16,(15+.5)/16,(7+.5)/16,(13+.5)/16,(5+.5)/16]),W=256;function de(n,t,e,i,r,s,l,o,c,u,d,a,f,v){let g=t*n[0]+e*n[1]+i*n[2],w=r*n[0]+s*n[1]+l*n[2],x=-(o*n[0]+c*n[1]+u*n[2]),_=(g-d)/(a-d)*(W-1),G=(w-f)/(v-f)*(W-1);return[_,G,x]}function zt(n,t,e,i){let r=t[0],s=t[1],l=t[2],o=e[0],c=e[1],u=e[2],d=i[0],a=i[1],f=i[2],v=(o-r)*(a-s)-(c-s)*(d-r);if(v===0)return;let g=1/v,w=r<o?r:o;d<w&&(w=d);let x=r>o?r:o;d>x&&(x=d);let _=s<c?s:c;a<_&&(_=a);let G=s>c?s:c;a>G&&(G=a);let z=Math.max(0,Math.ceil(w)),y=Math.min(W-1,Math.floor(x)),E=Math.max(0,Math.ceil(_)),L=Math.min(W-1,Math.floor(G));if(z>y||E>L)return;let p=v>0;for(let m=E;m<=L;m++)for(let b=z;b<=y;b++){let A=b,h=m,C=(o-A)*(a-h)-(c-h)*(d-A),S=(d-A)*(s-h)-(a-h)*(r-A),H=(r-A)*(c-h)-(s-h)*(o-A);if(p?C<0||S<0||H<0:C>0||S>0||H>0)continue;let T=(C*l+S*u+H*f)*g,I=m*W+b;T>n[I]&&(n[I]=T)}}function Ht(n,t,e,i,r){let s,l,o;Math.abs(e)<.9?(s=0,l=r,o=-i):(s=-r,l=0,o=e);let c=Math.hypot(s,l,o);s/=c,l/=c,o/=c;let u=l*r-o*i,d=o*e-s*r,a=s*i-l*e,f=1/0,v=-1/0,g=1/0,w=-1/0,x=!1;for(let y=0;y<n.length;y++)if(t[y]){x=!0;for(let E of n[y].vertices){let L=s*E[0]+l*E[1]+o*E[2],p=u*E[0]+d*E[1]+a*E[2];L<f&&(f=L),L>v&&(v=L),p<g&&(g=p),p>w&&(w=p)}}if(!x)return null;let _=(v-f)*.05+.01,G=(w-g)*.05+.01;f-=_,v+=_,g-=G,w+=G;let z=new Float64Array(W*W).fill(-1/0);for(let y=0;y<n.length;y++){if(!t[y])continue;let E=n[y].vertices;if(!(E.length<3))for(let L=1;L<E.length-1;L++){let p=E[0],m=E[L],b=E[L+1],A=de(p,s,l,o,u,d,a,e,i,r,f,v,g,w),h=de(m,s,l,o,u,d,a,e,i,r,f,v,g,w),C=de(b,s,l,o,u,d,a,e,i,r,f,v,g,w);zt(z,A,h,C)}}return{buf:z,right:[s,l,o],up:[u,d,a],dir:[e,i,r],uMin:f,uMax:v,vMin:g,vMax:w}}function Pt(n,t,e,i,r,s,l,o,c,u,d,a,f,v,g,w,x,_,G,z,y){let E=(r-n)*(u-t)-(s-t)*(c-n);if(E===0||E>0)return;let L=1/E,p=E>0,m=n<r?n:r;c<m&&(m=c);let b=n>r?n:r;c>b&&(b=c);let A=t<s?t:s;u<A&&(A=u);let h=t>s?t:s;u>h&&(h=u);let C=Math.max(0,Math.ceil(m)),S=Math.min(G-1,Math.floor(b)),H=Math.max(0,Math.ceil(A)),T=Math.min(z-1,Math.floor(h));if(!(C>S||H>T))for(let I=H;I<=T;I++){let R=I;for(let q=C;q<=S;q++){let P=q,U=(r-P)*(u-R)-(s-R)*(c-P),B=(c-P)*(t-R)-(u-R)*(n-P),O=(n-P)*(s-R)-(t-R)*(r-P);if(p?U<0||B<0||O<0:U>0||B>0||O>0)continue;let k=(U*e+B*l+O*d)*L,ne=I*G+q;if(k>_[ne]){_[ne]=k;let pe=(U*i+B*o+O*a)*L,fe=(pe<0?0:pe>1?1:pe)*v,Y=fe|0,N=fe-Y,ge=Tt[(I&3)*4+(q&3)],D=N>ge&&Y<v?Y+1:Y;D>v&&(D=v);let K=g;if(y!==null){let Z=(U*y.luA+B*y.luB+O*y.luC)*L,oe=(U*y.lvA+B*y.lvB+O*y.lvC)*L,ie=(U*y.ldA+B*y.ldB+O*y.ldC)*L,F=Z|0,X=oe|0;if(F>=0&&F<W&&X>=0&&X<W){let V=y.map.buf[X*W+F];if(V>-1/0&&ie+y.lift<V&&(D=Math.max(0,D-Math.round(y.opacity*v)),K!==null)){let ze=`shadow:${K}:${D}`,$=y.litCache.get(ze);if($===void 0){let J=ve(K),Q=y.shadowColorRgb,se=Math.round(J[0]*(1-y.opacity)+Q[0]*y.opacity),He=Math.round(J[1]*(1-y.opacity)+Q[1]*y.opacity),we=Math.round(J[2]*(1-y.opacity)+Q[2]*y.opacity);$=`#${he(se)}${he(He)}${he(we)}`,y.litCache.set(ze,$)}K=$}}}w[ne]=f[D],x&&(x[ne]=K)}}}}function Ot(n,t){let e=n.length,i=new Array(e);for(let o=0;o<e;o++){let c=n[o].vertices;if(c.length<3){i[o]=[0,0,0];continue}let u=c[0],d=c[1],a=c[2],f=d[0]-u[0],v=d[1]-u[1],g=d[2]-u[2],w=a[0]-u[0],x=a[1]-u[1],_=a[2]-u[2],G=v*_-g*x,z=g*w-f*_,y=f*x-v*w,E=Math.hypot(G,z,y)||1;i[o]=[G/E,z/E,y/E]}let r=new Map;for(let o=0;o<e;o++){let c=n[o].vertices;for(let u=0;u<c.length;u++){let d=c[u],a=`${d[0]},${d[1]},${d[2]}`,f=r.get(a);f||(f=[],r.set(a,f)),(f.length===0||f[f.length-1]!==o)&&f.push(o)}}let s=Math.cos(t*Math.PI/180),l=new Array(e);for(let o=0;o<e;o++){let c=n[o].vertices,u=i[o],d=new Array(c.length);for(let a=0;a<c.length;a++){let f=c[a],v=r.get(`${f[0]},${f[1]},${f[2]}`),g=0,w=0,x=0;for(let G=0;G<v.length;G++){let z=v[G],y=i[z];u[0]*y[0]+u[1]*y[1]+u[2]*y[2]>=s&&(g+=y[0],w+=y[1],x+=y[2])}let _=Math.hypot(g,w,x)||1;d[a]=[g/_,w/_,x/_]}l[o]=d}return l}function It(n,t,e,i){let r=[],s=null,l="",o=()=>{l&&(s!==null?r.push(`<span style="color:${s}">${l}</span>`):r.push(l),l="")};for(let c=0;c<i;c++){for(let u=0;u<e;u++){let d=c*e+u,a=n[d],f=t&&a!==" "?t[d]??null:null;f!==s&&(o(),s=f),l+=a}o(),s=null,c<i-1&&r.push(`
|
|
2
|
-
`)}return r.join("")}function
|
|
3
|
-
`)}return s.join("")}var
|
|
1
|
+
import{buildTextureSamplers as hn}from"@glyphcss/core";var xt=Math.PI/180,Mt=.01,qt=32e3,Ut=Mt*1.01;function pt(n,e,t){let o=n[1],r=n[0],s=n[2],l=t*xt,i=Math.cos(l),c=Math.sin(l),u=o*i-r*c,p=o*c+r*i,d=s,m=e*xt,h=Math.cos(m),f=Math.sin(m),b=p*h-d*f,C=p*f+d*h;return[u,b,C]}function Ie(n={}){let e={rotX:n.rotX??65,rotY:n.rotY??45,distance:n.distance??6,perspective:n.perspective??qt,zoom:n.zoom??.65,stretch:n.stretch??1,fovScale:n.fovScale??1,target:[0,0,0],eyeMode:!1,focal:1},[t,o]=n.center??[.5,.5];return{kind:"perspective",get rotX(){return e.rotX},set rotX(r){e.rotX=r},get rotY(){return e.rotY},set rotY(r){e.rotY=r},get distance(){return e.distance},set distance(r){e.distance=r},get perspective(){return e.perspective},set perspective(r){e.perspective=r},get zoom(){return e.zoom},set zoom(r){e.zoom=r},get stretch(){return e.stretch},set stretch(r){e.stretch=r},get fovScale(){return e.fovScale},set fovScale(r){e.fovScale=r},get target(){return e.target},set target(r){e.target=r},get eyeMode(){return e.eyeMode},set eyeMode(r){e.eyeMode=r},eyeDepth(r){let s=pt([r[0]-e.target[0],r[1]-e.target[1],r[2]-e.target[2]],e.rotX,e.rotY),l=.001*1.01;if(e.eyeMode)return-s[2]-l;if(e.perspective>0){let i=s[2]*e.zoom*50-e.distance;return e.perspective-i-e.perspective*Ut}return e.distance-s[2]-l},project(r,s,l,i){let u=50/i,p=[r[0]-e.target[0],r[1]-e.target[1],r[2]-e.target[2]],d=pt(p,e.rotX,e.rotY);if(e.eyeMode){if(d[2]>=-.001)return[NaN,NaN,d[2],NaN];let y=e.focal/-d[2],w=d[0]*y*e.zoom*50,P=d[1]*y*e.zoom*50,H=s*t+w/u*e.stretch,v=l*o+P/50;return[H,v,d[2],-1/d[2]]}if(e.perspective>0){let x=e.perspective,y=d[0]*e.zoom*50,w=d[1]*e.zoom*50,P=d[2]*e.zoom*50-e.distance,H=x-P,v=x*Mt;if(H<v)return[NaN,NaN,P,NaN];let A=x/H,L=s*t+y*A/u*e.stretch*e.fovScale,a=l*o+w*A/50*e.fovScale;return[L,a,P,1/H]}let m=.001,h=e.distance-d[2];if(h<m)return[NaN,NaN,d[2],NaN];let f=e.distance/h,b=d[0]*f*e.zoom*50,C=d[1]*f*e.zoom*50,_=s*t+b/u*e.stretch*e.fovScale,M=l*o+C/50*e.fovScale;return[_,M,d[2],1/h]}}}function Ct(n={}){let e={rotX:n.rotX??65,rotY:n.rotY??45,distance:0,zoom:n.zoom??.65,stretch:1,fovScale:1,target:[0,0,0]},[t,o]=n.center??[.5,.5];return{kind:"orthographic",get rotX(){return e.rotX},set rotX(r){e.rotX=r},get rotY(){return e.rotY},set rotY(r){e.rotY=r},get distance(){return e.distance},set distance(r){e.distance=r},get perspective(){return 0},set perspective(r){},get zoom(){return e.zoom},set zoom(r){e.zoom=r},get stretch(){return e.stretch},set stretch(r){e.stretch=r},get fovScale(){return e.fovScale},set fovScale(r){e.fovScale=r},get target(){return e.target},set target(r){e.target=r},get eyeMode(){return!1},set eyeMode(r){},eyeDepth(r){return Number.POSITIVE_INFINITY},project(r,s,l,i){let u=50/i,p=[r[0]-e.target[0],r[1]-e.target[1],r[2]-e.target[2]],d=pt(p,e.rotX,e.rotY),m=d[0]*e.zoom*50,h=d[1]*e.zoom*50,f=s*t+m/u*e.fovScale,b=l*o+h/50*e.fovScale;return[f,b,d[2]]}}}var Kt={direction:[-.5,-.7,-.5],intensity:1},Zt={intensity:.4};function Jt(n){let e=new Set,t=[];for(let o of n){let r=o.vertices;if(!(r.length<2))for(let s=0;s<r.length;s++){let l=r[s],i=r[(s+1)%r.length],c=`${l[0]},${l[1]},${l[2]}`,u=`${i[0]},${i[1]},${i[2]}`,p=c<u?`${c}|${u}`:`${u}|${c}`;if(e.has(p))continue;e.add(p);let d={from:l,to:i,weight:2};o.color&&(d.color=o.color),t.push(d)}}return t}function Gt(n){let e=n.polygons??[],t=n.mode??(e.length?"solid":"wireframe"),o=n.wireframe??(t==="wireframe"?Jt(e):[]);return{camera:n.camera,grid:n.grid,polygons:e,wireframe:o,mode:t,directionalLight:n.directionalLight??Kt,ambientLight:n.ambientLight??Zt,glyphPalette:n.glyphPalette??"default",useColors:n.useColors??!0,smoothShading:n.smoothShading??!1,creaseAngle:n.creaseAngle??60,doubleSided:n.doubleSided??!1,supersample:n.supersample??1,temporalBlend:n.temporalBlend??0,shadow:n.shadow,castShadowFlags:n.castShadowFlags??[],receiveShadowFlags:n.receiveShadowFlags??[],...n.depthBiases?{depthBiases:n.depthBiases}:{},...n.depthEpsilon?{depthEpsilon:n.depthEpsilon}:{}}}import{sampleTexel as Qt,polygonTexture as en}from"@glyphcss/core";var Dn=" .:-=+*#%@".split(""),Vn=" .:-=+*#%@".split(""),mt={default:{thin:"\xB7\u22C5\u2219\u02D9\xB7\u22C5\u2219".split(""),normal:"\u254B\u256C\u253C\u2573\u25C6\u25C7\u25CA\u25B2\u25B3\u25BC\u25BD\u25C8\u2B21\u2B22\u2234\u2235\u22A5\u2295\u2297\u2299\u229A\u229B".split(""),core:"\u2726\u2727\u2729\u25C9\u2299\u25CE".split(""),solid:" .:-=+*#%@".split("")},ascii:{thin:".'".split(""),normal:"+*x".split(""),core:"#@".split(""),solid:" .,:;!+=*xX#@".split("")},dots:{thin:"\xB7\u22C5".split(""),normal:"\u2022\u25CF".split(""),core:"\u25C9\u25CE".split(""),solid:" \xB7\u22C5\u2218\u2022\u25CF\u25C9\u25CE\u2B24".split("")},lines:{thin:"\u2500\u2502".split(""),normal:"\u2550\u2551".split(""),core:"\u2588".split(""),solid:" \u2500\u2550\u256C\u2551\u2588\u2593\u2592\u2591".split("")},blocks:{thin:"\u2591\u2581".split(""),normal:"\u2592\u2593\u258C\u2590\u2580\u2584".split(""),core:"\u2588".split(""),solid:" \u2591\u2592\u2593\u258C\u2590\u2588\u2580\u2584\u25A0".split("")},stars:{thin:"\xB7\u22C6".split(""),normal:"\u2726\u2727\u2729\u272A".split(""),core:"\u272B\u272C\u272D\u2605".split(""),solid:" \xB7\u22C6\u2217\u2726\u2727\u2729\u272A\u272B\u2605".split("")},arrows:{thin:"\xB7\u2219".split(""),normal:"\u2190\u2191\u2192\u2193".split(""),core:"\u2196\u2197\u2198\u2199\u2921\u2922".split(""),solid:" \xB7\u2219\u2191\u2197\u2192\u2198\u2193\u2199\u2190\u2196".split("")},braille:{thin:"\u2801\u2802\u2804\u2808".split(""),normal:"\u2803\u2805\u2806\u2809\u280A\u280B\u280C\u280D\u280E\u280F".split(""),core:"\u283F\u28FF".split(""),solid:" \u2801\u2803\u2807\u2827\u2837\u283F\u287F\u28FF".split("")},runes:{thin:".\xB7".split(""),normal:"\u16A0\u16A1\u16A2\u16A3\u16A4\u16A6\u16A8\u16B1\u16B2\u16B3\u16B7\u16B9\u16C3\u16C7\u16C9".split(""),core:"\u16DE\u16DF\u16E1\u16E2\u16E3".split(""),solid:" \xB7\u16A0\u16A3\u16A4\u16A8\u16B1\u16B7\u16DE\u16E2".split("")},math:{thin:"\u2219\u2218".split(""),normal:"\u2211\u220F\u222B\u221A\u221E\u2248\u2260\u2264\u2265\u2282\u2283\u2286\u2287".split(""),core:"\u222E\u222F\u2230\u2202".split(""),solid:" \u2219\u2218\u2211\u222B\u221A\u221E\u2248\u2295\u2297".split("")},binary:{thin:"\xB7.".split(""),normal:"01".split(""),core:"\u2588".split(""),solid:" .:01\u2588\u2588".split("")},hex:{thin:"\xB7\u2219".split(""),normal:"0123456789ABCDEF".split(""),core:"FFAA".split(""),solid:" 0123456789AF".split("")}},Xn=mt.default;function ht(n){return mt[n]??mt.default}function _t(n){let{camera:e,grid:t,wireframe:o,mode:r}=n,{cols:s,rows:l,cellAspect:i}=t;if(r==="solid"){let d=n.supersample&&n.supersample>1?Math.floor(n.supersample):1;return tn(n,s,l,i,d)}let c=ht(n.glyphPalette),u=new Uint8Array(s*l),p=n.useColors?new Array(s*l).fill(null):null;for(let d of o){let m=e.project(d.from,s,l,i),h=e.project(d.to,s,l,i);m[0]!==m[0]||h[0]!==h[0]||un(u,p,m[0]|0,m[1]|0,h[0]|0,h[1]|0,d.weight??2,d.color??null,s,l)}return dn(u,p,s,l,c)}function tn(n,e,t,o,r){let s=e*r,l=t*r,{camera:i,polygons:c,directionalLight:u,ambientLight:p,smoothShading:d,creaseAngle:m,doubleSided:h,castShadowFlags:f,receiveShadowFlags:b}=n,C=n.depthBiases,_=n.depthEpsilon??0,M=r>1?{zoom:i.zoom,eyeDepth:B=>i.eyeDepth(B),project:(B,V,X,Y)=>{let S=i.project(B,V,X,Y);return[V*.5+(S[0]-V*.5)*r,X*.5+(S[1]-X*.5)*r,S[2],S[3]]}}:i,x=ht(n.glyphPalette).solid,y=x.length-1,w=new Array(s*l).fill(" "),P=n.useColors,H=P?new Array(s*l).fill(null):null,v=new Float64Array(s*l).fill(-1/0),A=n.temporalBlend>0&&!!n.temporalHistory,L=A?new Float32Array(s*l*3).fill(NaN):null,a=u.direction,E=Math.hypot(a[0],a[1],a[2])||1,g=a[0]/E,G=a[1]/E,z=a[2]/E,F=u.intensity??1,T=p.intensity??.4,W=ze(u.color??"#ffffff"),R=ze(p.color??"#ffffff"),j=d&&m>0?an(c,m):null,N=new Map,re=n.textureSamplers??null,k=n.shadow,q=k!=null&&f.length>0?ln(c,f,g,G,z):null,oe=k?.opacity??.25,K=k?.lift??.05,Z=k?.color??"#000000",ie=q?ze(Z):[0,0,0],O=globalThis.__glyphPerfDetail,Ve=O?performance.now():0,ge=[],J=n.shadeCache??null,Q=-1,ve=(B,V,X,Y)=>{if(q===null||!Y)return null;let S=q,I=Oe(B,S.right[0],S.right[1],S.right[2],S.up[0],S.up[1],S.up[2],S.dir[0],S.dir[1],S.dir[2],S.uMin,S.uMax,S.vMin,S.vMax),ee=Oe(V,S.right[0],S.right[1],S.right[2],S.up[0],S.up[1],S.up[2],S.dir[0],S.dir[1],S.dir[2],S.uMin,S.uMax,S.vMin,S.vMax),de=Oe(X,S.right[0],S.right[1],S.right[2],S.up[0],S.up[1],S.up[2],S.dir[0],S.dir[1],S.dir[2],S.uMin,S.uMax,S.vMin,S.vMax);return{map:S,luA:I[0],lvA:I[1],ldA:I[2],luB:ee[0],lvB:ee[1],ldB:ee[2],luC:de[0],lvC:de[1],ldC:de[2],lift:K,opacity:oe,shadowColorRgb:ie,shadowColorHex:Z,litCache:N}};for(let B=0;B<c.length;B++){let V=c[B],X=V.vertices;if(X.length<3)continue;let Y=V.uvs,S=null;if(re!==null&&Y&&Y.length>=X.length){let I=en(V);I&&(S=re.get(I)??null)}for(let I=0;I<X.length;I++)ge[I]=M.project(X[I],s,l,o);for(let I=1;I<X.length-1;I++){Q++;let ee=0,de=I,Ee=I+1,se=X[ee],pe=X[de],we=X[Ee],ae=ge[ee],ye=ge[de],xe=ge[Ee],rt=(ae[0]!==ae[0]?1:0)+(ye[0]!==ye[0]?1:0)+(xe[0]!==xe[0]?1:0);if(rt===3||rt===0&&!h&&(ye[0]-ae[0])*(xe[1]-ae[1])-(ye[1]-ae[1])*(xe[0]-ae[0])>0)continue;let Ge,Le,Te,Re=null;if(J!==null&&J.iA[Q]!==void 0)Ge=J.iA[Q],Le=J.iB[Q],Te=J.iC[Q],Re=J.lit[Q];else{let $=pe[0]-se[0],me=pe[1]-se[1],Ae=pe[2]-se[2],he=we[0]-se[0],$e=we[1]-se[1],We=we[2]-se[2],je=me*We-Ae*$e,Ne=Ae*he-$*We,U=$*$e-me*he,D=Math.hypot(je,Ne,U)||1,te=je/D,fe=Ne/D,le=U/D,ce,_e,ot,it,st,lt,at,ct,ut;if(j){let ke=j[B],Me=ke[ee],Fe=ke[de],Ye=ke[Ee];ce=Me[0],_e=Me[1],ot=Me[2],it=Fe[0],st=Fe[1],lt=Fe[2],at=Ye[0],ct=Ye[1],ut=Ye[2]}else ce=it=at=te,_e=st=ct=fe,ot=lt=ut=le;let Et=ce*g+_e*G+ot*z,wt=it*g+st*G+lt*z,At=at*g+ct*G+ut*z,Nt=h?Math.abs(Et):Math.max(0,-Et),kt=h?Math.abs(wt):Math.max(0,-wt),Yt=h?Math.abs(At):Math.max(0,-At);if(Ge=Math.min(1,T+Nt*F),Le=Math.min(1,T+kt*F),Te=Math.min(1,T+Yt*F),P){let ke=(Ge+Le+Te)/3,Me=Math.max(0,ke-T),Fe=V.color??"#ffffff",Ye=Me*255|0,St=`${Fe}:${Ye}`,qe=N.get(St);if(qe===void 0){let dt=ze(Fe),Dt=T*R[0]/255+Me*W[0]/255,Vt=T*R[1]/255+Me*W[1]/255,Xt=T*R[2]/255+Me*W[2]/255,$t=Math.min(255,dt[0]*Dt),Wt=Math.min(255,dt[1]*Vt),jt=Math.min(255,dt[2]*Xt);qe=`#${ne($t)}${ne(Wt)}${ne(jt)}`,N.set(St,qe)}Re=qe}J!==null&&(J.iA[Q]=Ge,J.iB[Q]=Le,J.iC[Q]=Te,J.lit[Q]=Re)}let bt=b[B]??!1,He=1+(C?.[B]??0),vt=null;if(S!==null&&Y){let $=Y[ee],me=Y[de],Ae=Y[Ee],he=Math.max(0,(Ge+Le+Te)/3-T);vt={sampler:S,ua:$[0],va:$[1],ub:me[0],vb:me[1],uc:Ae[0],vc:Ae[1],tintR:T*R[0]/255+he*W[0]/255,tintG:T*R[1]/255+he*W[1]/255,tintB:T*R[2]/255+he*W[2]/255}}if(rt===0)Lt(ae[0],ae[1],(ae[3]??ae[2])*He,Ge,ye[0],ye[1],(ye[3]??ye[2])*He,Le,xe[0],xe[1],(xe[3]??xe[2])*He,Te,x,y,Re,w,H,v,s,l,ve(se,pe,we,bt),h,se,pe,we,L,_,vt);else{let $=[],me=[],Ae=[se,pe,we],he=[Ge,Le,Te],$e=M.eyeDepth(se),We=M.eyeDepth(pe),je=M.eyeDepth(we),Ne=[$e,We,je];for(let U=0;U<3;U++){let D=(U+1)%3,te=Ne[U],fe=Ne[D];if(te>0&&($.push(Ae[U]),me.push(he[U])),te>0!=fe>0){let le=te/(te-fe),ce=Ae[U],_e=Ae[D];$.push([ce[0]+le*(_e[0]-ce[0]),ce[1]+le*(_e[1]-ce[1]),ce[2]+le*(_e[2]-ce[2])]),me.push(he[U]+le*(he[D]-he[U]))}}if($.length>=3){let U=$.map(D=>M.project(D,s,l,o));for(let D=1;D<$.length-1;D++){let te=U[0],fe=U[D],le=U[D+1],ce=(fe[0]-te[0])*(le[1]-te[1])-(fe[1]-te[1])*(le[0]-te[0]);!h&&ce>0||Lt(te[0],te[1],(te[3]??te[2])*He,me[0],fe[0],fe[1],(fe[3]??fe[2])*He,me[D],le[0],le[1],(le[3]??le[2])*He,me[D+1],x,y,Re,w,H,v,s,l,ve($[0],$[D],$[D+1],bt),h,$[0],$[D],$[D+1],L,_,null)}}}}}O&&(O.loop??(O.loop=[])).push(performance.now()-Ve);let yt=O?performance.now():0,Pe=w,Se=H,Xe=L;if(r>1){let B=rn(w,H,v,L,e,t,r,x);Pe=B.glyphBuf,Se=B.colorBuf,Xe=B.worldPos}A&&nn(Pe,Se,Xe,e,t,o,x,n.temporalBlend,n.temporalHistory,i);let nt=cn(Pe,Se,e,t);return O&&(O.string??(O.string=[])).push(performance.now()-yt),nt}function nn(n,e,t,o,r,s,l,i,c,u){let p=o*r,d=l.length-1,m=new Map;for(let x=0;x<l.length;x++)m.set(l[x],x);let h=c.cam;(c.cols!==o||c.rows!==r||c.idx.length!==p)&&(c.cols=o,c.rows=r,c.idx=new Float32Array(p),c.r=new Float32Array(p),c.g=new Float32Array(p),c.b=new Float32Array(p),h=null);let f=null;if(h){let x=Ie({rotX:h.rotX,rotY:h.rotY,distance:h.distance,perspective:h.perspective,zoom:h.zoom,stretch:h.stretch});x.target=h.target,f=y=>x.project(y,o,r,s)}let b=new Float32Array(p),C=new Float32Array(p),_=new Float32Array(p),M=new Float32Array(p);for(let x=0;x<r;x++)for(let y=0;y<o;y++){let w=x*o+y,P=m.get(n[w])??0,H=0,v=0,A=0,L=e?e[w]:null;if(L){let k=ze(L);H=k[0],v=k[1],A=k[2]}let a=0,E=0,g=0,G=0,z=0,F=t[w*3];if(f&&F===F){let k=f([F,t[w*3+1],t[w*3+2]]),q=Math.round(k[0]),oe=Math.round(k[1]);if(k[0]===k[0]&&q>=0&&q<o&&oe>=0&&oe<r){let K=oe*o+q;E=c.idx[K],g=c.r[K],G=c.g[K],z=c.b[K],a=i}}let T=1-a,W=T*P+a*E,R=T*H+a*g,j=T*v+a*G,N=T*A+a*z;b[w]=W,C[w]=R,_[w]=j,M[w]=N;let re=Math.round(W);re<0?re=0:re>d&&(re=d),n[w]=l[re],e&&(e[w]=re===0?null:`#${ne(R)}${ne(j)}${ne(N)}`)}c.idx=b,c.r=C,c.g=_,c.b=M,c.cam={rotX:u.rotX,rotY:u.rotY,target:[u.target[0],u.target[1],u.target[2]],zoom:u.zoom,perspective:u.perspective,distance:u.distance,stretch:u.stretch}}function rn(n,e,t,o,r,s,l,i){let c=new Map;for(let b=0;b<i.length;b++)c.set(i[b],b);let u=i.length-1,p=r*l,d=new Array(r*s).fill(" "),m=e?new Array(r*s).fill(null):null,h=o?new Float32Array(r*s*3).fill(NaN):null,f=1/(l*l);for(let b=0;b<s;b++)for(let C=0;C<r;C++){let _=0,M=0,x=0,y=0,w=0,P=0,H=0,v=0;for(let a=0;a<l;a++){let E=(b*l+a)*p+C*l;for(let g=0;g<l;g++){let G=E+g;if(t[G]!==-1/0){if(_+=c.get(n[G])??0,M++,m){let z=e[G];if(z){let F=ze(z);x+=F[0],y+=F[1],w+=F[2]}}h&&(P+=o[G*3],H+=o[G*3+1],v+=o[G*3+2])}}}let A=b*r+C;if(M===0)continue;let L=Math.round(_*f);L<0?L=0:L>u&&(L=u),d[A]=i[L],m&&(m[A]=`#${ne(x/M)}${ne(y/M)}${ne(w/M)}`),h&&(h[A*3]=P/M,h[A*3+1]=H/M,h[A*3+2]=v/M)}return{glyphBuf:d,colorBuf:m,worldPos:h}}var on=new Float64Array([(0+.5)/16,(8+.5)/16,(2+.5)/16,(10+.5)/16,(12+.5)/16,(4+.5)/16,(14+.5)/16,(6+.5)/16,(3+.5)/16,(11+.5)/16,(1+.5)/16,(9+.5)/16,(15+.5)/16,(7+.5)/16,(13+.5)/16,(5+.5)/16]),be=256;function Oe(n,e,t,o,r,s,l,i,c,u,p,d,m,h){let f=e*n[0]+t*n[1]+o*n[2],b=r*n[0]+s*n[1]+l*n[2],C=-(i*n[0]+c*n[1]+u*n[2]),_=(f-p)/(d-p)*(be-1),M=(b-m)/(h-m)*(be-1);return[_,M,C]}function sn(n,e,t,o){let r=e[0],s=e[1],l=e[2],i=t[0],c=t[1],u=t[2],p=o[0],d=o[1],m=o[2],h=(i-r)*(d-s)-(c-s)*(p-r);if(h===0)return;let f=1/h,b=r<i?r:i;p<b&&(b=p);let C=r>i?r:i;p>C&&(C=p);let _=s<c?s:c;d<_&&(_=d);let M=s>c?s:c;d>M&&(M=d);let x=Math.max(0,Math.ceil(b)),y=Math.min(be-1,Math.floor(C)),w=Math.max(0,Math.ceil(_)),P=Math.min(be-1,Math.floor(M));if(x>y||w>P)return;let H=h>0;for(let v=w;v<=P;v++)for(let A=x;A<=y;A++){let L=A,a=v,E=(i-L)*(d-a)-(c-a)*(p-L),g=(p-L)*(s-a)-(d-a)*(r-L),G=(r-L)*(c-a)-(s-a)*(i-L);if(H?E<0||g<0||G<0:E>0||g>0||G>0)continue;let z=(E*l+g*u+G*m)*f,F=v*be+A;z>n[F]&&(n[F]=z)}}function ln(n,e,t,o,r){let s,l,i;Math.abs(t)<.9?(s=0,l=r,i=-o):(s=-r,l=0,i=t);let c=Math.hypot(s,l,i);s/=c,l/=c,i/=c;let u=l*r-i*o,p=i*t-s*r,d=s*o-l*t,m=1/0,h=-1/0,f=1/0,b=-1/0,C=!1;for(let y=0;y<n.length;y++)if(e[y]){C=!0;for(let w of n[y].vertices){let P=s*w[0]+l*w[1]+i*w[2],H=u*w[0]+p*w[1]+d*w[2];P<m&&(m=P),P>h&&(h=P),H<f&&(f=H),H>b&&(b=H)}}if(!C)return null;let _=(h-m)*.05+.01,M=(b-f)*.05+.01;m-=_,h+=_,f-=M,b+=M;let x=new Float64Array(be*be).fill(-1/0);for(let y=0;y<n.length;y++){if(!e[y])continue;let w=n[y].vertices;if(!(w.length<3))for(let P=1;P<w.length-1;P++){let H=w[0],v=w[P],A=w[P+1],L=Oe(H,s,l,i,u,p,d,t,o,r,m,h,f,b),a=Oe(v,s,l,i,u,p,d,t,o,r,m,h,f,b),E=Oe(A,s,l,i,u,p,d,t,o,r,m,h,f,b);sn(x,L,a,E)}}return{buf:x,right:[s,l,i],up:[u,p,d],dir:[t,o,r],uMin:m,uMax:h,vMin:f,vMax:b}}function Lt(n,e,t,o,r,s,l,i,c,u,p,d,m,h,f,b,C,_,M,x,y,w,P,H,v,A,L,a){let E=(r-n)*(u-e)-(s-e)*(c-n);if(E===0||!w&&E>0)return;let g=1/E,G=E>0,z=n<r?n:r;c<z&&(z=c);let F=n>r?n:r;c>F&&(F=c);let T=e<s?e:s;u<T&&(T=u);let W=e>s?e:s;u>W&&(W=u);let R=Math.max(0,Math.ceil(z)),j=Math.min(M-1,Math.floor(F)),N=Math.max(0,Math.ceil(T)),re=Math.min(x-1,Math.floor(W));if(!(R>j||N>re))for(let k=N;k<=re;k++){let q=k;for(let oe=R;oe<=j;oe++){let K=oe,Z=(r-K)*(u-q)-(s-q)*(c-K),ie=(c-K)*(e-q)-(u-q)*(n-K),O=(n-K)*(s-q)-(e-q)*(r-K);if(G?Z<0||ie<0||O<0:Z>0||ie>0||O>0)continue;let Ve=(Z*t+ie*l+O*p)*g,ge=k*M+oe,J=_[ge];if(Ve>(J>0?J*(1-L):J)){if(_[ge]=Ve,A!==null){let V=ge*3;A[V]=(Z*P[0]+ie*H[0]+O*v[0])*g,A[V+1]=(Z*P[1]+ie*H[1]+O*v[1])*g,A[V+2]=(Z*P[2]+ie*H[2]+O*v[2])*g}let Q=(Z*o+ie*i+O*d)*g,ve=f;if(a!==null){let V=(Z*a.ua+ie*a.ub+O*a.uc)*g,X=(Z*a.va+ie*a.vb+O*a.vc)*g,Y=Qt(a.sampler,V,X);if(Y!==null&&Y.a>8){let S=Y.r*a.tintR|0;S>255&&(S=255);let I=Y.g*a.tintG|0;I>255&&(I=255);let ee=Y.b*a.tintB|0;ee>255&&(ee=255),ve=`#${ne(S)}${ne(I)}${ne(ee)}`,Q*=(.299*Y.r+.587*Y.g+.114*Y.b)/255}}let Pe=(Q<0?0:Q>1?1:Q)*h,Se=Pe|0,Xe=Pe-Se,nt=on[(k&3)*4+(oe&3)],B=Xe>nt&&Se<h?Se+1:Se;if(B>h&&(B=h),y!==null){let V=(Z*y.luA+ie*y.luB+O*y.luC)*g,X=(Z*y.lvA+ie*y.lvB+O*y.lvC)*g,Y=(Z*y.ldA+ie*y.ldB+O*y.ldC)*g,S=V|0,I=X|0;if(S>=0&&S<be&&I>=0&&I<be){let ee=y.map.buf[I*be+S];if(ee>-1/0&&Y+y.lift<ee&&(B=Math.max(0,B-Math.round(y.opacity*h)),ve!==null)){let de=`shadow:${ve}:${B}`,Ee=y.litCache.get(de);if(Ee===void 0){let se=ze(ve),pe=y.shadowColorRgb,we=Math.round(se[0]*(1-y.opacity)+pe[0]*y.opacity),ae=Math.round(se[1]*(1-y.opacity)+pe[1]*y.opacity),ye=Math.round(se[2]*(1-y.opacity)+pe[2]*y.opacity);Ee=`#${ne(we)}${ne(ae)}${ne(ye)}`,y.litCache.set(de,Ee)}ve=Ee}}}b[ge]=m[B],C&&(C[ge]=ve)}}}}function an(n,e){let t=n.length,o=new Array(t);for(let i=0;i<t;i++){let c=n[i].vertices;if(c.length<3){o[i]=[0,0,0];continue}let u=c[0],p=c[1],d=c[2],m=p[0]-u[0],h=p[1]-u[1],f=p[2]-u[2],b=d[0]-u[0],C=d[1]-u[1],_=d[2]-u[2],M=h*_-f*C,x=f*b-m*_,y=m*C-h*b,w=Math.hypot(M,x,y)||1;o[i]=[M/w,x/w,y/w]}let r=new Map;for(let i=0;i<t;i++){let c=n[i].vertices;for(let u=0;u<c.length;u++){let p=c[u],d=`${p[0]},${p[1]},${p[2]}`,m=r.get(d);m||(m=[],r.set(d,m)),(m.length===0||m[m.length-1]!==i)&&m.push(i)}}let s=Math.cos(e*Math.PI/180),l=new Array(t);for(let i=0;i<t;i++){let c=n[i].vertices,u=o[i],p=new Array(c.length);for(let d=0;d<c.length;d++){let m=c[d],h=r.get(`${m[0]},${m[1]},${m[2]}`),f=0,b=0,C=0;for(let M=0;M<h.length;M++){let x=h[M],y=o[x];u[0]*y[0]+u[1]*y[1]+u[2]*y[2]>=s&&(f+=y[0],b+=y[1],C+=y[2])}let _=Math.hypot(f,b,C)||1;p[d]=[f/_,b/_,C/_]}l[i]=p}return l}function cn(n,e,t,o){let r=[],s=null,l="",i=()=>{l&&(s!==null?r.push(`<span style="color:${s}">${l}</span>`):r.push(l),l="")};for(let c=0;c<o;c++){for(let u=0;u<t;u++){let p=c*t+u,d=n[p],m=e&&d!==" "?e[p]??null:null;m!==s&&(i(),s=m),l+=d}i(),s=null,c<o-1&&r.push(`
|
|
2
|
+
`)}return r.join("")}function un(n,e,t,o,r,s,l,i,c,u){let p=Math.abs(r-t),d=-Math.abs(s-o),m=t<r?1:-1,h=o<s?1:-1,f=p+d;for(;;){if(t>=0&&t<c&&o>=0&&o<u){let C=o*c+t;n[C]<l&&(n[C]=l,e&&(e[C]=i))}if(t===r&&o===s)break;let b=2*f;b>=d&&(f+=d,t+=m),b<=p&&(f+=p,o+=h)}}function dn(n,e,t,o,r){let s=[],l=null,i="",c=()=>{i&&(l!==null?s.push(`<span style="color:${l}">${i}</span>`):s.push(i),i="")};for(let u=0;u<o;u++){for(let p=0;p<t;p++){let d=u*t+p,m=n[d],h,f;m===0?(h=" ",f=null):(h=m===1?r.thin[Math.random()*r.thin.length|0]:m===2?r.normal[Math.random()*r.normal.length|0]:r.core[Math.random()*r.core.length|0],f=e?e[d]??null:null),f!==l&&(c(),l=f),i+=h}c(),l=null,u<o-1&&s.push(`
|
|
3
|
+
`)}return s.join("")}var Tt=new Map;function ze(n){let e=Tt.get(n);if(e!==void 0)return e;let t=pn(n);return Tt.set(n,t),t}function pn(n){let e=n.startsWith("#")?n.slice(1):n;if(e.length===3){let t=parseInt(e[0]+e[0],16),o=parseInt(e[1]+e[1],16),r=parseInt(e[2]+e[2],16);return[t||0,o||0,r||0]}if(e.length===6){let t=parseInt(e.slice(0,2),16),o=parseInt(e.slice(2,4),16),r=parseInt(e.slice(4,6),16);return[t||0,o||0,r||0]}return[255,255,255]}function ne(n){let e=Math.max(0,Math.min(255,n|0)).toString(16);return e.length===1?"0"+e:e}var zt="glyph-styles";function Pt(n){let e=n??(typeof document<"u"?document:void 0);if(!e||e.getElementById(zt))return;let t=e.createElement("style");t.id=zt,t.textContent=mn,e.head.appendChild(t)}var mn=`
|
|
4
4
|
/* \u2500\u2500 React / Vue host wrapper \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
|
|
5
5
|
|
|
6
6
|
.glyph-host {
|
|
@@ -59,5 +59,5 @@ var et=Math.PI/180;function tt(n,t,e){let i=n[1],r=n[0],s=n[2],l=e*et,o=Math.cos
|
|
|
59
59
|
the content from the 3D vertex being labelled. */
|
|
60
60
|
transform: translate(-50%, -50%);
|
|
61
61
|
}
|
|
62
|
-
`;function
|
|
63
|
-
`),m.style.cssText="position:absolute;visibility:hidden;font-family:inherit;font-size:inherit;line-height:inherit;white-space:pre;padding:0;margin:0",r.appendChild(m);let b=m.getBoundingClientRect();return m.remove(),{w:b.width||8,h:b.height?b.height/20:16}}function y(){let p=n.clientWidth,m=n.clientHeight;if(!p||!m)return;let b=z(),A=Math.max(20,Math.floor(p/b.w)),h=Math.max(8,Math.floor(m/b.h)),C=b.h/b.w,S=!1;e.cols!==A&&(e.cols=A,S=!0),e.rows!==h&&(e.rows=h,S=!0),Math.abs(e.cellAspect-C)>.01&&(e.cellAspect=C,S=!0),S&&a()}let E=null;e.autoSize&&typeof ResizeObserver<"u"&&(E=new ResizeObserver(()=>y()),E.observe(n),y());function L(){E&&(E.disconnect(),E=null),l.clear(),n.contains(i)&&n.removeChild(i)}return a(),{get host(){return n},get output(){return r},get camera(){return e.camera},add:g,addHotspot:w,rerender:x,setOptions:_,getOptions:G,fit:y,destroy:L}}var Xt=typeof HTMLElement<"u"?HTMLElement:class{},Dt=["mode","glyph-palette","use-colors","cols","rows","cell-aspect","directional-direction","directional-intensity","ambient-intensity","auto-size","shadow","shadow-color","shadow-opacity","shadow-lift","shadow-max-extend"];function te(n){if(n==null)return;let t=parseFloat(n);return Number.isFinite(t)?t:void 0}function Vt(n){if(n==="wireframe"||n==="solid"||n==="voxel")return n}function $t(n){if(n!==null){if(n==="false")return!1;if(n==="true"||n==="")return!0}}var Me=class extends Xt{constructor(){super(...arguments);this._scene=null}static get observedAttributes(){return[...Dt]}getScene(){return this._scene}_readOptions(){let e={},i=Vt(this.getAttribute("mode"));i!==void 0&&(e.mode=i);let r=this.getAttribute("glyph-palette");r&&(e.glyphPalette=r);let s=$t(this.getAttribute("use-colors"));s!==void 0&&(e.useColors=s);let l=te(this.getAttribute("cols"));l!==void 0&&(e.cols=l);let o=te(this.getAttribute("rows"));o!==void 0&&(e.rows=o);let c=te(this.getAttribute("cell-aspect"));c!==void 0&&(e.cellAspect=c);let u=te(this.getAttribute("directional-intensity"));u!==void 0&&(e.directionalLight={direction:[-.5,-.7,-.5],intensity:u});let d=te(this.getAttribute("ambient-intensity"));if(d!==void 0&&(e.ambientLight={intensity:d}),this.hasAttribute("auto-size")&&(e.autoSize=!0),this.hasAttribute("shadow")){let a={color:"#000000",opacity:.25,lift:.05,maxExtend:2e3},f=this.getAttribute("shadow-color");f&&(a.color=f);let v=te(this.getAttribute("shadow-opacity"));v!==void 0&&(a.opacity=v);let g=te(this.getAttribute("shadow-lift"));g!==void 0&&(a.lift=g);let w=te(this.getAttribute("shadow-max-extend"));w!==void 0&&(a.maxExtend=w),e.shadow=a}return e}_findCameraAncestor(){let e=this.parentElement;for(;e;){let i=e.tagName.toLowerCase();if(i==="glyph-perspective-camera"||i==="glyph-orthographic-camera"||i==="glyph-camera")return e;e=e.parentElement}return null}_initScene(e){let i=typeof e.getCamera=="function"?e.getCamera():void 0,r=this._readOptions();i&&(r.camera=i),this._scene=ct(this,r),this.dispatchEvent(new CustomEvent("glyphcss:scene-ready",{bubbles:!1}))}connectedCallback(){if(this._scene)return;let e=this._findCameraAncestor();if(!e)throw new Error("glyphcss: <glyph-scene> must be placed inside a <glyph-camera>, <glyph-perspective-camera>, or <glyph-orthographic-camera>.");if((typeof e.getCamera=="function"?e.getCamera():null)!==null)this._initScene(e);else{let r=()=>{e.removeEventListener("glyph:camera-ready",r),this._scene||this._initScene(e)};e.addEventListener("glyph:camera-ready",r)}}rerender(){this._scene?.rerender()}disconnectedCallback(){this._scene&&(this._scene.destroy(),this._scene=null)}attributeChangedCallback(e,i,r){i!==r&&this._scene&&this._scene.setOptions(this._readOptions())}};import{loadMesh as Wt,resolveGeometry as jt,computeSceneBbox as qt}from"@glyphcss/core";var Ut=typeof HTMLElement<"u"?HTMLElement:class{},Kt=["src","geometry","size","color","position","scale","rotation","normalize","cast-shadow","receive-shadow"];function Zt(n){let t=qt(n),e=(t.min[0]+t.max[0])/2,i=(t.min[1]+t.max[1])/2,r=(t.min[2]+t.max[2])/2,l=2/(Math.max(t.max[0]-t.min[0],t.max[1]-t.min[1],t.max[2]-t.min[2])||1);return n.map(o=>({...o,vertices:o.vertices.map(c=>[(c[0]-e)*l,(c[1]-i)*l,(c[2]-r)*l])}))}function We(n){if(!n)return;let t=n.split(",").map(e=>parseFloat(e.trim()));if(!(t.length!==3||t.some(e=>!Number.isFinite(e))))return[t[0],t[1],t[2]]}function Jt(n){if(n){if(!n.includes(",")){let t=parseFloat(n);return Number.isFinite(t)?t:void 0}return We(n)}}function Qt(n){return n.closest("glyph-scene")??null}var xe=class extends Ut{constructor(){super(...arguments);this._handle=null;this._loadToken=0}static get observedAttributes(){return[...Kt]}getMeshHandle(){return this._handle}connectedCallback(){this._maybeLoad()}disconnectedCallback(){this._tearDown()}attributeChangedCallback(e,i,r){if(i!==r){if(e==="src"||e==="geometry"||e==="size"||e==="color"){this._tearDown(),this._maybeLoad();return}this._handle&&this._handle.setTransform(this._readTransform())}}_readTransform(){return{position:We(this.getAttribute("position")),scale:Jt(this.getAttribute("scale")),rotation:We(this.getAttribute("rotation")),castShadow:this.hasAttribute("cast-shadow"),receiveShadow:this.hasAttribute("receive-shadow")}}_tearDown(){if(this._loadToken+=1,this._handle){try{this._handle.dispose()}catch{}this._handle=null}}async _maybeLoad(){let e=this.getAttribute("src"),i=this.getAttribute("geometry"),r=Qt(this);if(r){if(!r.getScene()){let s=()=>{r.removeEventListener("glyphcss:scene-ready",s),this._maybeLoad()};r.addEventListener("glyphcss:scene-ready",s);return}if(e){let s=++this._loadToken,l;try{l=await Wt(e)}catch(d){this.dispatchEvent(new CustomEvent("glyphcss:error",{detail:d,bubbles:!0}));return}if(s!==this._loadToken){try{l.dispose()}catch{}return}let o=r.getScene();if(!o){try{l.dispose()}catch{}return}let u=this.hasAttribute("normalize")?Zt(l.polygons):l.polygons;this._handle=o.add(u,this._readTransform()),this.dispatchEvent(new CustomEvent("glyphcss:loaded",{detail:{polygons:u},bubbles:!0}));return}if(i){let s=r.getScene();if(!s)return;let l=this.getAttribute("size"),o=l!==null?parseFloat(l):1,c=this.getAttribute("color")??void 0,u;try{u=jt(i,{size:Number.isFinite(o)?o:1,color:c})}catch(d){this.dispatchEvent(new CustomEvent("glyphcss:error",{detail:d,bubbles:!0}));return}this._handle=s.add(u,this._readTransform()),this.dispatchEvent(new CustomEvent("glyphcss:loaded",{detail:{polygons:u},bubbles:!0}))}}}};var en=typeof HTMLElement<"u"?HTMLElement:class{};function tn(n){if(!n)return;let t=n.split(",").map(e=>parseFloat(e.trim()));if(!(t.length!==3||t.some(e=>!Number.isFinite(e))))return[t[0],t[1],t[2]]}function nn(n){if(!n)return;let t=n.split(",").map(e=>parseFloat(e.trim()));if(!(t.length!==2||t.some(e=>!Number.isFinite(e))))return[t[0],t[1]]}function rn(n){return n.closest("glyph-scene")??null}var Se=class extends en{constructor(){super(...arguments);this._handle=null}static get observedAttributes(){return["at","size","hotspot-id"]}connectedCallback(){this._register()}disconnectedCallback(){this._handle&&this._unregister()}attributeChangedCallback(e,i,r){i!==r&&(this._handle&&this._unregister(),this._register())}_unregister(){if(!this._handle)return;let e=this._handle.el;for(;e.firstChild;)this.appendChild(e.firstChild);this._handle.remove(),this._handle=null}_register(){let e=tn(this.getAttribute("at"));if(!e)return;let i=rn(this);if(!i)return;if(!i.getScene()){let c=()=>{i.removeEventListener("glyphcss:scene-ready",c),this._register()};i.addEventListener("glyphcss:scene-ready",c);return}let r=i.getScene();if(!r)return;let s=this.getAttribute("hotspot-id")??this.getAttribute("id")??String(Math.random()),l=nn(this.getAttribute("size"));this._handle=r.addHotspot({id:s,at:e,size:l},()=>this.dispatchEvent(new CustomEvent("glyphcss:hotspot-click",{detail:{id:s},bubbles:!0})));let o=this._handle.el;for(;this.firstChild;)o.appendChild(this.firstChild)}};var on=typeof HTMLElement<"u"?HTMLElement:class{};function j(n){if(n==null)return;let t=parseFloat(n);return Number.isFinite(t)?t:void 0}var Ge=class extends on{constructor(){super(...arguments);this._camera=null}static get observedAttributes(){return["rot-x","rot-y","distance","zoom","stretch"]}getCamera(){return this._camera}connectedCallback(){this._camera=Ae({rotX:j(this.getAttribute("rot-x")),rotY:j(this.getAttribute("rot-y")),distance:j(this.getAttribute("distance")),zoom:j(this.getAttribute("zoom")),stretch:j(this.getAttribute("stretch"))}),this.dispatchEvent(new CustomEvent("glyph:camera-ready",{bubbles:!1}))}disconnectedCallback(){this._camera=null}attributeChangedCallback(e,i,r){if(i===r)return;let s=this._camera;if(!s)return;let l=j(this.getAttribute("rot-x")),o=j(this.getAttribute("rot-y")),c=j(this.getAttribute("distance")),u=j(this.getAttribute("zoom")),d=j(this.getAttribute("stretch")),a=!1;l!==void 0&&s.rotX!==l&&(s.rotX=l,a=!0),o!==void 0&&s.rotY!==o&&(s.rotY=o,a=!0),c!==void 0&&s.distance!==c&&(s.distance=c,a=!0),u!==void 0&&s.zoom!==u&&(s.zoom=u,a=!0),d!==void 0&&s.stretch!==d&&(s.stretch=d,a=!0),a&&this.querySelector("glyph-scene")?.rerender?.()}};var sn=typeof HTMLElement<"u"?HTMLElement:class{};function me(n){if(n==null)return;let t=parseFloat(n);return Number.isFinite(t)?t:void 0}var Ee=class extends sn{constructor(){super(...arguments);this._camera=null}static get observedAttributes(){return["rot-x","rot-y","zoom"]}getCamera(){return this._camera}connectedCallback(){this._camera=nt({rotX:me(this.getAttribute("rot-x")),rotY:me(this.getAttribute("rot-y")),zoom:me(this.getAttribute("zoom"))}),this.dispatchEvent(new CustomEvent("glyph:camera-ready",{bubbles:!1}))}disconnectedCallback(){this._camera=null}attributeChangedCallback(e,i,r){if(i===r)return;let s=this._camera;if(!s)return;let l=me(this.getAttribute("rot-x")),o=me(this.getAttribute("rot-y")),c=me(this.getAttribute("zoom")),u=!1;l!==void 0&&s.rotX!==l&&(s.rotX=l,u=!0),o!==void 0&&s.rotY!==o&&(s.rotY=o,u=!0),c!==void 0&&s.zoom!==c&&(s.zoom=c,u=!0),u&&this.querySelector("glyph-scene")?.rerender?.()}};function dt(n,t={}){let e=n.host,i=t.drag??!0,r=t.wheel??!0,s=ut(t.invert),l=t.clampPitch??!0,o=t.animate??!1,c=!1,u=!1,d=null,a=null,f=null,v={x:0,y:0},g=n.camera;function w(m){if(!(!i||c)&&f===null&&m.isPrimary!==!1){m.preventDefault(),f=m.pointerId,v={x:m.clientX,y:m.clientY},e.style.cursor="grabbing";try{m.target.setPointerCapture(m.pointerId)}catch{}o&&o.pauseOnInteraction!==!1&&(u=!0)}}function x(m){if(f===null||m.pointerId!==f||!i||c)return;m.preventDefault();let b=m.clientX-v.x,A=m.clientY-v.y;v={x:m.clientX,y:m.clientY};let h=s,C=1/4;g.rotY=g.rotY-b*C*h;let S=g.rotX-A*C*h;g.rotX=l?Math.max(-90,Math.min(90,S)):S,n.rerender()}function _(m){if(f===m.pointerId){f=null,e.style.cursor=i&&!c?"grab":"";try{m.target.releasePointerCapture(m.pointerId)}catch{}o&&(u=!1)}}function G(m){if(!r||c)return;m.preventDefault();let b=m.deltaY*.001;g.zoom=Math.max(.1,Math.min(500,g.zoom*(1-b))),n.rerender()}function z(m){if(!(c||!o)){if(!u){let b=a!==null?Math.min(m-a,50):16.67,A=typeof o=="object"&&o.speed?o.speed:.3,h=typeof o=="object"&&o.axis?o.axis:"y",C=A*(b/16.67);h==="y"?g.rotY=g.rotY+C:g.rotX=g.rotX+C,n.rerender()}a=m,d=requestAnimationFrame(z)}}function y(){d===null&&typeof requestAnimationFrame<"u"&&o&&(d=requestAnimationFrame(z))}function E(){d!==null&&(typeof cancelAnimationFrame<"u"&&cancelAnimationFrame(d),d=null),a=null}function L(){e.addEventListener("pointerdown",w),e.addEventListener("pointermove",x),e.addEventListener("pointerup",_),e.addEventListener("pointercancel",_),e.addEventListener("wheel",G,{passive:!1}),e.style.cursor=i?"grab":"",e.style.touchAction="none",e.style.userSelect="none"}function p(){e.removeEventListener("pointerdown",w),e.removeEventListener("pointermove",x),e.removeEventListener("pointerup",_),e.removeEventListener("pointercancel",_),e.removeEventListener("wheel",G),e.style.cursor="",e.style.touchAction="",e.style.userSelect=""}return L(),y(),{update(m){let b=!!o;i=m.drag??i,r=m.wheel??r,s=ut(m.invert),m.clampPitch!==void 0&&(l=m.clampPitch),o=m.animate??o,!c&&f===null&&(e.style.cursor=i?"grab":"");let A=!!o;b&&!A?E():!b&&A&&y()},pause(){c||(c=!0,p(),E(),f=null,u=!1)},resume(){c&&(c=!1,L(),y())},destroy(){c||p(),E(),c=!0}}}function ut(n){return n===void 0||n===!1?1:n===!0?-1:n}var ln=typeof HTMLElement<"u"?HTMLElement:class{};function an(n){if(n==null)return;let t=parseFloat(n);return Number.isFinite(t)?t:void 0}function Le(n){if(n!==null){if(n==="false")return!1;if(n==="true"||n==="")return!0}}function cn(n){return n.closest("glyph-scene")??null}var _e=class extends ln{constructor(){super(...arguments);this._controls=null}static get observedAttributes(){return["drag","wheel","invert","clamp-pitch","animate-speed","animate-axis"]}connectedCallback(){this._attach()}disconnectedCallback(){this._controls&&(this._controls.destroy(),this._controls=null)}attributeChangedCallback(e,i,r){i!==r&&this._controls?.update(this._readOptions())}_readOptions(){let e=Le(this.getAttribute("drag")),i=Le(this.getAttribute("wheel")),r=Le(this.getAttribute("invert")),s=Le(this.getAttribute("clamp-pitch")),l=an(this.getAttribute("animate-speed")),o=this.getAttribute("animate-axis")==="x"?"x":"y";return{...e!==void 0?{drag:e}:{},...i!==void 0?{wheel:i}:{},...r!==void 0?{invert:r}:{},...s!==void 0?{clampPitch:s}:{},...l!==void 0?{animate:{speed:l,axis:o}}:{}}}_attach(){if(this._controls)return;let e=cn(this);if(!e)return;let i=e.getScene();if(!i){let r=()=>{e.removeEventListener("glyphcss:scene-ready",r),this._attach()};e.addEventListener("glyphcss:scene-ready",r);return}this._controls=dt(i,this._readOptions())}};function mt(n,t={}){let e=n.host,i=t.drag??!0,r=t.wheel??!0,s=ht(t.invert),l=t.animate??!1,o=!1,c=!1,u=null,d=null,a=null,f={x:0,y:0},v=!1,g=n.camera,w=1/4,x=.02;function _(h){if(!(!i||o)&&a===null&&h.isPrimary!==!1){h.preventDefault(),a=h.pointerId,f={x:h.clientX,y:h.clientY},v=h.button===2,e.style.cursor="grabbing";try{h.target.setPointerCapture(h.pointerId)}catch{}l&&l.pauseOnInteraction!==!1&&(c=!0)}}function G(h){if(a===null||h.pointerId!==a||!i||o)return;h.preventDefault();let C=h.clientX-f.x,S=h.clientY-f.y;f={x:h.clientX,y:h.clientY};let H=s;if(v||h.shiftKey)g.rotY=g.rotY-C*w*H,g.rotX=Math.max(-90,Math.min(90,g.rotX+S*w*H));else{let T=g.target;g.target=[T[0]-C*x/g.zoom,T[1]-S*x/g.zoom,T[2]]}n.rerender()}function z(h){if(a===h.pointerId){a=null,v=!1,e.style.cursor=i&&!o?"grab":"";try{h.target.releasePointerCapture(h.pointerId)}catch{}l&&(c=!1)}}function y(h){h.preventDefault()}function E(h){if(!r||o)return;h.preventDefault();let C=h.deltaY*.001;g.zoom=Math.max(.1,Math.min(500,g.zoom*(1-C))),n.rerender()}function L(h){if(!(o||!l)){if(!c){let C=d!==null?Math.min(h-d,50):16.67,S=typeof l=="object"&&l.speed?l.speed:.3,H=typeof l=="object"&&l.axis?l.axis:"y",T=S*(C/16.67);H==="y"?g.rotY=g.rotY+T:g.rotX=g.rotX+T,n.rerender()}d=h,u=requestAnimationFrame(L)}}function p(){u===null&&typeof requestAnimationFrame<"u"&&l&&(u=requestAnimationFrame(L))}function m(){u!==null&&(typeof cancelAnimationFrame<"u"&&cancelAnimationFrame(u),u=null),d=null}function b(){e.addEventListener("pointerdown",_),e.addEventListener("pointermove",G),e.addEventListener("pointerup",z),e.addEventListener("pointercancel",z),e.addEventListener("contextmenu",y),e.addEventListener("wheel",E,{passive:!1}),e.style.cursor=i?"grab":"",e.style.touchAction="none",e.style.userSelect="none"}function A(){e.removeEventListener("pointerdown",_),e.removeEventListener("pointermove",G),e.removeEventListener("pointerup",z),e.removeEventListener("pointercancel",z),e.removeEventListener("contextmenu",y),e.removeEventListener("wheel",E),e.style.cursor="",e.style.touchAction="",e.style.userSelect=""}return b(),p(),{update(h){let C=!!l;i=h.drag??i,r=h.wheel??r,s=ht(h.invert),l=h.animate??l,!o&&a===null&&(e.style.cursor=i?"grab":"");let S=!!l;C&&!S?m():!C&&S&&p()},pause(){o||(o=!0,A(),m(),a=null,c=!1)},resume(){o&&(o=!1,b(),p())},destroy(){o||A(),m(),o=!0}}}function ht(n){return n===void 0||n===!1?1:n===!0?-1:n}var un=typeof HTMLElement<"u"?HTMLElement:class{};function je(n){if(n!==null){if(n==="false")return!1;if(n==="true"||n==="")return!0}}function dn(n){return n.closest("glyph-scene")??null}var Te=class extends un{constructor(){super(...arguments);this._controls=null}static get observedAttributes(){return["drag","wheel","invert"]}connectedCallback(){this._attach()}disconnectedCallback(){this._controls&&(this._controls.destroy(),this._controls=null)}attributeChangedCallback(e,i,r){i!==r&&this._controls?.update(this._readOptions())}_readOptions(){let e=je(this.getAttribute("drag")),i=je(this.getAttribute("wheel")),r=je(this.getAttribute("invert"));return{...e!==void 0?{drag:e}:{},...i!==void 0?{wheel:i}:{},...r!==void 0?{invert:r}:{}}}_attach(){if(this._controls)return;let e=dn(this);if(!e)return;let i=e.getScene();if(!i){let r=()=>{e.removeEventListener("glyphcss:scene-ready",r),this._attach()};e.addEventListener("glyphcss:scene-ready",r);return}this._controls=mt(i,this._readOptions())}};if(typeof customElements<"u"){if(customElements.get("glyph-scene")||customElements.define("glyph-scene",Me),customElements.get("glyph-mesh")||customElements.define("glyph-mesh",xe),customElements.get("glyph-hotspot")||customElements.define("glyph-hotspot",Se),customElements.get("glyph-perspective-camera")||customElements.define("glyph-perspective-camera",Ge),customElements.get("glyph-orthographic-camera")||customElements.define("glyph-orthographic-camera",Ee),!customElements.get("glyph-camera")){class n extends Ee{}customElements.define("glyph-camera",n)}customElements.get("glyph-orbit-controls")||customElements.define("glyph-orbit-controls",_e),customElements.get("glyph-map-controls")||customElements.define("glyph-map-controls",Te)}export{Se as GlyphHotspotElement,Te as GlyphMapControlsElement,xe as GlyphMeshElement,_e as GlyphOrbitControlsElement,Ee as GlyphOrthographicCameraElement,Ge as GlyphPerspectiveCameraElement,Me as GlyphSceneElement};
|
|
62
|
+
`;function Ht(n,e,t,o,r){return n.map(s=>{let[l,i,c]=e.project(s.at,t,o,r),u=c>-3&&l>=0&&l<t&&i>=0&&i<o;return{id:s.id,col:l,row:i,depth:c,visible:u}})}var fn=1;function gn(n,e){let{position:t,scale:o,rotation:r}=e;if(!t&&!o&&!r)return n;let[s,l,i]=t??[0,0,0],c=1,u=1,p=1;o!==void 0&&(typeof o=="number"?c=u=p=o:[c,u,p]=o);let d=Math.PI/180,[m,h,f]=r??[0,0,0],b=m*d,C=h*d,_=f*d,M=Math.cos(b),x=Math.sin(b),y=Math.cos(C),w=Math.sin(C),P=Math.cos(_),H=Math.sin(_);function v(A){let L=A[0]*c,a=A[1]*u,E=A[2]*p,g=P*L-H*a,G=H*L+P*a,z=E;return L=y*g+w*z,a=G,E=-w*g+y*z,g=L,G=M*a-x*E,z=x*a+M*E,[g+s,G+l,z+i]}return n.map(A=>({...A,vertices:A.vertices.map(v)}))}function Ft(n,e={}){Pt(n.ownerDocument??void 0);let t={mode:e.mode??"solid",glyphPalette:e.glyphPalette??"default",useColors:e.useColors??!0,cols:e.cols??80,rows:e.rows??24,cellAspect:e.cellAspect??2,directionalLight:e.directionalLight??{direction:[-.5,-.7,-.5],intensity:1},ambientLight:e.ambientLight??{intensity:.4},camera:e.camera??Ie(),smoothShading:e.smoothShading??!1,creaseAngle:e.creaseAngle??60,doubleSided:e.doubleSided??!1,supersample:e.supersample??1,depthEpsilon:e.depthEpsilon??0,temporalBlend:e.temporalBlend??0,autoSize:e.autoSize??!1,shadow:e.shadow},o=n.ownerDocument.createElement("div");o.className="glyph-scene";let r=n.ownerDocument.createElement("pre");r.className="glyph-output";let s=n.ownerDocument.createElement("div");s.className="glyph-hotspot-layer",o.appendChild(r),o.appendChild(s),n.appendChild(o);let l=new Map,i=[],c=!1,u={iA:[],iB:[],iC:[],lit:[]},p={idx:new Float32Array(0),r:new Float32Array(0),g:new Float32Array(0),b:new Float32Array(0),cols:0,rows:0,cam:null};function d(){u.iA.length=0,u.iB.length=0,u.iC.length=0,u.lit.length=0}let m=null,h=0;function f(){let a=[];for(let g of l.values())for(let G of g.polygons)(G.texture||G.material?.texture)&&a.push(G);if(a.length===0){m&&(m=null,b());return}let E=++h;hn(a).then(g=>{E===h&&(m=g.size>0?g:null,b())})}function b(){c||(c=!0,Promise.resolve().then(()=>{c=!1,C()}))}function C(){let a=[],E=[],g=[],G=[],z=!1;for(let N of l.values()){let re=gn(N.polygons,N.transform),k=N.transform.castShadow??!1,q=N.transform.receiveShadow??!1,oe=N.transform.depthBias??0;oe!==0&&(z=!0);for(let K of re)a.push(K),E.push(k),g.push(q),G.push(oe)}let F=Gt({camera:t.camera,grid:{cols:t.cols,rows:t.rows,cellAspect:t.cellAspect},polygons:a,mode:t.mode,directionalLight:t.directionalLight,ambientLight:t.ambientLight,glyphPalette:t.glyphPalette,useColors:t.useColors,smoothShading:t.smoothShading,creaseAngle:t.creaseAngle,doubleSided:t.doubleSided,supersample:t.supersample,depthEpsilon:t.depthEpsilon,temporalBlend:t.temporalBlend,shadow:t.shadow,castShadowFlags:E,receiveShadowFlags:g,depthBiases:z?G:void 0});F.shadeCache=u,F.textureSamplers=m,F.temporalHistory=p;let T=globalThis.__glyphPerf,W=T?performance.now():0,R=_t(F),j=T?performance.now():0;if(t.useColors?r.innerHTML=R:r.textContent=R,T){let N=performance.now();(T.raster??(T.raster=[])).push(j-W),(T.dom??(T.dom=[])).push(N-j),(T.polys??(T.polys=[])).push(a.length)}_()}function _(){let{cols:a,rows:E,cellAspect:g,camera:G}=t,z=Ht(i.map(R=>R.hotspot),G,a,E,g),F=r.getBoundingClientRect(),T=a>0?F.width/a:8,W=E>0?F.height/E:16;for(let R=0;R<i.length;R++){let{el:j}=i[R],N=z[R];N.visible?(j.style.display="",j.style.left=`${(N.col+.5)*T}px`,j.style.top=`${(N.row+.5)*W}px`,j.style.zIndex=String(Math.round(N.depth*1e3))):j.style.display="none"}}function M(a,E={}){let g=fn++;return l.set(g,{id:g,polygons:a,transform:E}),d(),f(),b(),{get id(){return g},get name(){return l.get(g)?.transform.id},get polygons(){return a},setTransform(G){let z=l.get(g);z&&(z.transform=G,d(),b())},dispose(){l.delete(g),d(),f(),b()}}}function x(a,E){let g=n.ownerDocument.createElement("div");g.className="glyph-hotspot",g.setAttribute("data-hotspot-id",a.id);let[G,z]=a.size??[1,1];g.style.position="absolute",g.style.width=`${G}ch`,g.style.height=`${z*t.cellAspect}ch`,E&&g.addEventListener("click",E),s.appendChild(g);let F={hotspot:{id:a.id,at:a.at,size:a.size},el:g,onClick:E};return i.push(F),b(),{get el(){return g},remove(){let T=i.indexOf(F);T>=0&&i.splice(T,1),E&&g.removeEventListener("click",E),s.removeChild(g),b()}}}function y(){C()}function w(a){a.mode!==void 0&&(t.mode=a.mode),a.glyphPalette!==void 0&&(t.glyphPalette=a.glyphPalette),a.useColors!==void 0&&(t.useColors=a.useColors),a.cols!==void 0&&(t.cols=a.cols),a.rows!==void 0&&(t.rows=a.rows),a.cellAspect!==void 0&&(t.cellAspect=a.cellAspect),a.directionalLight!==void 0&&(t.directionalLight=a.directionalLight),a.ambientLight!==void 0&&(t.ambientLight=a.ambientLight),a.camera!==void 0&&(t.camera=a.camera),a.smoothShading!==void 0&&(t.smoothShading=a.smoothShading),a.creaseAngle!==void 0&&(t.creaseAngle=a.creaseAngle),"shadow"in a&&(t.shadow=a.shadow),a.autoSize!==void 0&&(t.autoSize=a.autoSize,t.autoSize&&!A&&typeof ResizeObserver<"u"?(A=new ResizeObserver(()=>v()),A.observe(n),v()):!t.autoSize&&A&&(A.disconnect(),A=null)),(a.mode!==void 0||a.useColors!==void 0||a.directionalLight!==void 0||a.ambientLight!==void 0||a.smoothShading!==void 0||a.creaseAngle!==void 0||a.glyphPalette!==void 0)&&d(),b()}function P(){return{...t}}function H(){let E=n.ownerDocument.createElement("span");E.textContent=Array(20).fill("M").join(`
|
|
63
|
+
`),E.style.cssText="position:absolute;visibility:hidden;font-family:inherit;font-size:inherit;line-height:inherit;white-space:pre;padding:0;margin:0",r.appendChild(E);let g=E.getBoundingClientRect();return E.remove(),{w:g.width||8,h:g.height?g.height/20:16}}function v(){let a=n.clientWidth,E=n.clientHeight;if(!a||!E)return;let g=H(),G=Math.max(20,Math.floor(a/g.w)),z=Math.max(8,Math.floor(E/g.h)),F=g.h/g.w,T=!1;t.cols!==G&&(t.cols=G,T=!0),t.rows!==z&&(t.rows=z,T=!0),Math.abs(t.cellAspect-F)>.01&&(t.cellAspect=F,T=!0),T&&b()}let A=null;t.autoSize&&typeof ResizeObserver<"u"&&(A=new ResizeObserver(()=>v()),A.observe(n),v());function L(){A&&(A.disconnect(),A=null),l.clear(),n.contains(o)&&n.removeChild(o)}return b(),{get host(){return n},get output(){return r},get camera(){return t.camera},add:M,addHotspot:x,rerender:y,setOptions:w,getOptions:P,fit:v,destroy:L}}var yn=typeof HTMLElement<"u"?HTMLElement:class{},bn=["mode","glyph-palette","use-colors","cols","rows","cell-aspect","directional-direction","directional-intensity","ambient-intensity","auto-size","shadow","shadow-color","shadow-opacity","shadow-lift","shadow-max-extend"];function Ce(n){if(n==null)return;let e=parseFloat(n);return Number.isFinite(e)?e:void 0}function vn(n){if(n==="wireframe"||n==="solid"||n==="voxel")return n}function En(n){if(n!==null){if(n==="false")return!1;if(n==="true"||n==="")return!0}}var Ue=class extends yn{constructor(){super(...arguments);this._scene=null}static get observedAttributes(){return[...bn]}getScene(){return this._scene}_readOptions(){let t={},o=vn(this.getAttribute("mode"));o!==void 0&&(t.mode=o);let r=this.getAttribute("glyph-palette");r&&(t.glyphPalette=r);let s=En(this.getAttribute("use-colors"));s!==void 0&&(t.useColors=s);let l=Ce(this.getAttribute("cols"));l!==void 0&&(t.cols=l);let i=Ce(this.getAttribute("rows"));i!==void 0&&(t.rows=i);let c=Ce(this.getAttribute("cell-aspect"));c!==void 0&&(t.cellAspect=c);let u=Ce(this.getAttribute("directional-intensity"));u!==void 0&&(t.directionalLight={direction:[-.5,-.7,-.5],intensity:u});let p=Ce(this.getAttribute("ambient-intensity"));if(p!==void 0&&(t.ambientLight={intensity:p}),this.hasAttribute("auto-size")&&(t.autoSize=!0),this.hasAttribute("shadow")){let d={color:"#000000",opacity:.25,lift:.05,maxExtend:2e3},m=this.getAttribute("shadow-color");m&&(d.color=m);let h=Ce(this.getAttribute("shadow-opacity"));h!==void 0&&(d.opacity=h);let f=Ce(this.getAttribute("shadow-lift"));f!==void 0&&(d.lift=f);let b=Ce(this.getAttribute("shadow-max-extend"));b!==void 0&&(d.maxExtend=b),t.shadow=d}return t}_findCameraAncestor(){let t=this.parentElement;for(;t;){let o=t.tagName.toLowerCase();if(o==="glyph-perspective-camera"||o==="glyph-orthographic-camera"||o==="glyph-camera")return t;t=t.parentElement}return null}_initScene(t){let o=typeof t.getCamera=="function"?t.getCamera():void 0,r=this._readOptions();o&&(r.camera=o),this._scene=Ft(this,r),this.dispatchEvent(new CustomEvent("glyphcss:scene-ready",{bubbles:!1}))}connectedCallback(){if(this._scene)return;let t=this._findCameraAncestor();if(!t)throw new Error("glyphcss: <glyph-scene> must be placed inside a <glyph-camera>, <glyph-perspective-camera>, or <glyph-orthographic-camera>.");if((typeof t.getCamera=="function"?t.getCamera():null)!==null)this._initScene(t);else{let r=()=>{t.removeEventListener("glyph:camera-ready",r),this._scene||this._initScene(t)};t.addEventListener("glyph:camera-ready",r)}}rerender(){this._scene?.rerender()}disconnectedCallback(){this._scene&&(this._scene.destroy(),this._scene=null)}attributeChangedCallback(t,o,r){o!==r&&this._scene&&this._scene.setOptions(this._readOptions())}};import{loadMesh as wn,resolveGeometry as An,computeSceneBbox as Sn}from"@glyphcss/core";var xn=typeof HTMLElement<"u"?HTMLElement:class{},Mn=["src","geometry","size","color","position","scale","rotation","normalize","cast-shadow","receive-shadow"];function Cn(n){let e=Sn(n),t=(e.min[0]+e.max[0])/2,o=(e.min[1]+e.max[1])/2,r=(e.min[2]+e.max[2])/2,l=2/(Math.max(e.max[0]-e.min[0],e.max[1]-e.min[1],e.max[2]-e.min[2])||1);return n.map(i=>({...i,vertices:i.vertices.map(c=>[(c[0]-t)*l,(c[1]-o)*l,(c[2]-r)*l])}))}function ft(n){if(!n)return;let e=n.split(",").map(t=>parseFloat(t.trim()));if(!(e.length!==3||e.some(t=>!Number.isFinite(t))))return[e[0],e[1],e[2]]}function Gn(n){if(n){if(!n.includes(",")){let e=parseFloat(n);return Number.isFinite(e)?e:void 0}return ft(n)}}function Ln(n){return n.closest("glyph-scene")??null}var Ke=class extends xn{constructor(){super(...arguments);this._handle=null;this._loadToken=0}static get observedAttributes(){return[...Mn]}getMeshHandle(){return this._handle}connectedCallback(){this._maybeLoad()}disconnectedCallback(){this._tearDown()}attributeChangedCallback(t,o,r){if(o!==r){if(t==="src"||t==="geometry"||t==="size"||t==="color"){this._tearDown(),this._maybeLoad();return}this._handle&&this._handle.setTransform(this._readTransform())}}_readTransform(){return{position:ft(this.getAttribute("position")),scale:Gn(this.getAttribute("scale")),rotation:ft(this.getAttribute("rotation")),castShadow:this.hasAttribute("cast-shadow"),receiveShadow:this.hasAttribute("receive-shadow")}}_tearDown(){if(this._loadToken+=1,this._handle){try{this._handle.dispose()}catch{}this._handle=null}}async _maybeLoad(){let t=this.getAttribute("src"),o=this.getAttribute("geometry"),r=Ln(this);if(r){if(!r.getScene()){let s=()=>{r.removeEventListener("glyphcss:scene-ready",s),this._maybeLoad()};r.addEventListener("glyphcss:scene-ready",s);return}if(t){let s=++this._loadToken,l;try{l=await wn(t)}catch(p){this.dispatchEvent(new CustomEvent("glyphcss:error",{detail:p,bubbles:!0}));return}if(s!==this._loadToken){try{l.dispose()}catch{}return}let i=r.getScene();if(!i){try{l.dispose()}catch{}return}let u=this.hasAttribute("normalize")?Cn(l.polygons):l.polygons;this._handle=i.add(u,this._readTransform()),this.dispatchEvent(new CustomEvent("glyphcss:loaded",{detail:{polygons:u},bubbles:!0}));return}if(o){let s=r.getScene();if(!s)return;let l=this.getAttribute("size"),i=l!==null?parseFloat(l):1,c=this.getAttribute("color")??void 0,u;try{u=An(o,{size:Number.isFinite(i)?i:1,color:c})}catch(p){this.dispatchEvent(new CustomEvent("glyphcss:error",{detail:p,bubbles:!0}));return}this._handle=s.add(u,this._readTransform()),this.dispatchEvent(new CustomEvent("glyphcss:loaded",{detail:{polygons:u},bubbles:!0}))}}}};var Tn=typeof HTMLElement<"u"?HTMLElement:class{};function _n(n){if(!n)return;let e=n.split(",").map(t=>parseFloat(t.trim()));if(!(e.length!==3||e.some(t=>!Number.isFinite(t))))return[e[0],e[1],e[2]]}function zn(n){if(!n)return;let e=n.split(",").map(t=>parseFloat(t.trim()));if(!(e.length!==2||e.some(t=>!Number.isFinite(t))))return[e[0],e[1]]}function Pn(n){return n.closest("glyph-scene")??null}var Ze=class extends Tn{constructor(){super(...arguments);this._handle=null}static get observedAttributes(){return["at","size","hotspot-id"]}connectedCallback(){this._register()}disconnectedCallback(){this._handle&&this._unregister()}attributeChangedCallback(t,o,r){o!==r&&(this._handle&&this._unregister(),this._register())}_unregister(){if(!this._handle)return;let t=this._handle.el;for(;t.firstChild;)this.appendChild(t.firstChild);this._handle.remove(),this._handle=null}_register(){let t=_n(this.getAttribute("at"));if(!t)return;let o=Pn(this);if(!o)return;if(!o.getScene()){let c=()=>{o.removeEventListener("glyphcss:scene-ready",c),this._register()};o.addEventListener("glyphcss:scene-ready",c);return}let r=o.getScene();if(!r)return;let s=this.getAttribute("hotspot-id")??this.getAttribute("id")??String(Math.random()),l=zn(this.getAttribute("size"));this._handle=r.addHotspot({id:s,at:t,size:l},()=>this.dispatchEvent(new CustomEvent("glyphcss:hotspot-click",{detail:{id:s},bubbles:!0})));let i=this._handle.el;for(;this.firstChild;)i.appendChild(this.firstChild)}};var Hn=typeof HTMLElement<"u"?HTMLElement:class{};function ue(n){if(n==null)return;let e=parseFloat(n);return Number.isFinite(e)?e:void 0}var Je=class extends Hn{constructor(){super(...arguments);this._camera=null}static get observedAttributes(){return["rot-x","rot-y","distance","perspective","zoom","stretch"]}getCamera(){return this._camera}connectedCallback(){this._camera=Ie({rotX:ue(this.getAttribute("rot-x")),rotY:ue(this.getAttribute("rot-y")),distance:ue(this.getAttribute("distance")),perspective:ue(this.getAttribute("perspective")),zoom:ue(this.getAttribute("zoom")),stretch:ue(this.getAttribute("stretch"))}),this.dispatchEvent(new CustomEvent("glyph:camera-ready",{bubbles:!1}))}disconnectedCallback(){this._camera=null}attributeChangedCallback(t,o,r){if(o===r)return;let s=this._camera;if(!s)return;let l=ue(this.getAttribute("rot-x")),i=ue(this.getAttribute("rot-y")),c=ue(this.getAttribute("distance")),u=ue(this.getAttribute("perspective")),p=ue(this.getAttribute("zoom")),d=ue(this.getAttribute("stretch")),m=!1;l!==void 0&&s.rotX!==l&&(s.rotX=l,m=!0),i!==void 0&&s.rotY!==i&&(s.rotY=i,m=!0),c!==void 0&&s.distance!==c&&(s.distance=c,m=!0),u!==void 0&&s.perspective!==u&&(s.perspective=u,m=!0),p!==void 0&&s.zoom!==p&&(s.zoom=p,m=!0),d!==void 0&&s.stretch!==d&&(s.stretch=d,m=!0),m&&this.querySelector("glyph-scene")?.rerender?.()}};var Fn=typeof HTMLElement<"u"?HTMLElement:class{};function Be(n){if(n==null)return;let e=parseFloat(n);return Number.isFinite(e)?e:void 0}var De=class extends Fn{constructor(){super(...arguments);this._camera=null}static get observedAttributes(){return["rot-x","rot-y","zoom"]}getCamera(){return this._camera}connectedCallback(){this._camera=Ct({rotX:Be(this.getAttribute("rot-x")),rotY:Be(this.getAttribute("rot-y")),zoom:Be(this.getAttribute("zoom"))}),this.dispatchEvent(new CustomEvent("glyph:camera-ready",{bubbles:!1}))}disconnectedCallback(){this._camera=null}attributeChangedCallback(t,o,r){if(o===r)return;let s=this._camera;if(!s)return;let l=Be(this.getAttribute("rot-x")),i=Be(this.getAttribute("rot-y")),c=Be(this.getAttribute("zoom")),u=!1;l!==void 0&&s.rotX!==l&&(s.rotX=l,u=!0),i!==void 0&&s.rotY!==i&&(s.rotY=i,u=!0),c!==void 0&&s.zoom!==c&&(s.zoom=c,u=!0),u&&this.querySelector("glyph-scene")?.rerender?.()}};function Ot(n,e={}){let t=n.host,o=e.drag??!0,r=e.wheel??!0,s=It(e.invert),l=e.clampPitch??!0,i=e.animate??!1,c=!1,u=!1,p=null,d=null,m=null,h={x:0,y:0},f=n.camera;function b(v){if(!(!o||c)&&m===null&&v.isPrimary!==!1){v.preventDefault(),m=v.pointerId,h={x:v.clientX,y:v.clientY},t.style.cursor="grabbing";try{v.target.setPointerCapture(v.pointerId)}catch{}i&&i.pauseOnInteraction!==!1&&(u=!0)}}function C(v){if(m===null||v.pointerId!==m||!o||c)return;v.preventDefault();let A=v.clientX-h.x,L=v.clientY-h.y;h={x:v.clientX,y:v.clientY};let a=s,E=1/4;f.rotY=f.rotY-A*E*a;let g=f.rotX-L*E*a;f.rotX=l?Math.max(-90,Math.min(90,g)):g,n.rerender()}function _(v){if(m===v.pointerId){m=null,t.style.cursor=o&&!c?"grab":"";try{v.target.releasePointerCapture(v.pointerId)}catch{}i&&(u=!1)}}function M(v){if(!r||c)return;v.preventDefault();let A=v.deltaY*.001;f.zoom=Math.max(.1,Math.min(500,f.zoom*(1-A))),n.rerender()}function x(v){if(!(c||!i)){if(!u){let A=d!==null?Math.min(v-d,50):16.67,L=typeof i=="object"&&i.speed?i.speed:.3,a=typeof i=="object"&&i.axis?i.axis:"y",E=L*(A/16.67);a==="y"?f.rotY=f.rotY+E:f.rotX=f.rotX+E,n.rerender()}d=v,p=requestAnimationFrame(x)}}function y(){p===null&&typeof requestAnimationFrame<"u"&&i&&(p=requestAnimationFrame(x))}function w(){p!==null&&(typeof cancelAnimationFrame<"u"&&cancelAnimationFrame(p),p=null),d=null}function P(){t.addEventListener("pointerdown",b),t.addEventListener("pointermove",C),t.addEventListener("pointerup",_),t.addEventListener("pointercancel",_),t.addEventListener("wheel",M,{passive:!1}),t.style.cursor=o?"grab":"",t.style.touchAction="none",t.style.userSelect="none"}function H(){t.removeEventListener("pointerdown",b),t.removeEventListener("pointermove",C),t.removeEventListener("pointerup",_),t.removeEventListener("pointercancel",_),t.removeEventListener("wheel",M),t.style.cursor="",t.style.touchAction="",t.style.userSelect=""}return P(),y(),{update(v){let A=!!i;o=v.drag??o,r=v.wheel??r,s=It(v.invert),v.clampPitch!==void 0&&(l=v.clampPitch),i=v.animate??i,!c&&m===null&&(t.style.cursor=o?"grab":"");let L=!!i;A&&!L?w():!A&&L&&y()},pause(){c||(c=!0,H(),w(),m=null,u=!1)},resume(){c&&(c=!1,P(),y())},destroy(){c||H(),w(),c=!0}}}function It(n){return n===void 0||n===!1?1:n===!0?-1:n}var In=typeof HTMLElement<"u"?HTMLElement:class{};function On(n){if(n==null)return;let e=parseFloat(n);return Number.isFinite(e)?e:void 0}function Qe(n){if(n!==null){if(n==="false")return!1;if(n==="true"||n==="")return!0}}function Bn(n){return n.closest("glyph-scene")??null}var et=class extends In{constructor(){super(...arguments);this._controls=null}static get observedAttributes(){return["drag","wheel","invert","clamp-pitch","animate-speed","animate-axis"]}connectedCallback(){this._attach()}disconnectedCallback(){this._controls&&(this._controls.destroy(),this._controls=null)}attributeChangedCallback(t,o,r){o!==r&&this._controls?.update(this._readOptions())}_readOptions(){let t=Qe(this.getAttribute("drag")),o=Qe(this.getAttribute("wheel")),r=Qe(this.getAttribute("invert")),s=Qe(this.getAttribute("clamp-pitch")),l=On(this.getAttribute("animate-speed")),i=this.getAttribute("animate-axis")==="x"?"x":"y";return{...t!==void 0?{drag:t}:{},...o!==void 0?{wheel:o}:{},...r!==void 0?{invert:r}:{},...s!==void 0?{clampPitch:s}:{},...l!==void 0?{animate:{speed:l,axis:i}}:{}}}_attach(){if(this._controls)return;let t=Bn(this);if(!t)return;let o=t.getScene();if(!o){let r=()=>{t.removeEventListener("glyphcss:scene-ready",r),this._attach()};t.addEventListener("glyphcss:scene-ready",r);return}this._controls=Ot(o,this._readOptions())}};function Rt(n,e={}){let t=n.host,o=e.drag??!0,r=e.wheel??!0,s=Bt(e.invert),l=e.animate??!1,i=!1,c=!1,u=null,p=null,d=null,m={x:0,y:0},h=!1,f=n.camera,b=1/4,C=.02;function _(a){if(!(!o||i)&&d===null&&a.isPrimary!==!1){a.preventDefault(),d=a.pointerId,m={x:a.clientX,y:a.clientY},h=a.button===2,t.style.cursor="grabbing";try{a.target.setPointerCapture(a.pointerId)}catch{}l&&l.pauseOnInteraction!==!1&&(c=!0)}}function M(a){if(d===null||a.pointerId!==d||!o||i)return;a.preventDefault();let E=a.clientX-m.x,g=a.clientY-m.y;m={x:a.clientX,y:a.clientY};let G=s;if(h||a.shiftKey)f.rotY=f.rotY-E*b*G,f.rotX=Math.max(-90,Math.min(90,f.rotX+g*b*G));else{let z=f.target;f.target=[z[0]-E*C/f.zoom,z[1]-g*C/f.zoom,z[2]]}n.rerender()}function x(a){if(d===a.pointerId){d=null,h=!1,t.style.cursor=o&&!i?"grab":"";try{a.target.releasePointerCapture(a.pointerId)}catch{}l&&(c=!1)}}function y(a){a.preventDefault()}function w(a){if(!r||i)return;a.preventDefault();let E=a.deltaY*.001;f.zoom=Math.max(.1,Math.min(500,f.zoom*(1-E))),n.rerender()}function P(a){if(!(i||!l)){if(!c){let E=p!==null?Math.min(a-p,50):16.67,g=typeof l=="object"&&l.speed?l.speed:.3,G=typeof l=="object"&&l.axis?l.axis:"y",z=g*(E/16.67);G==="y"?f.rotY=f.rotY+z:f.rotX=f.rotX+z,n.rerender()}p=a,u=requestAnimationFrame(P)}}function H(){u===null&&typeof requestAnimationFrame<"u"&&l&&(u=requestAnimationFrame(P))}function v(){u!==null&&(typeof cancelAnimationFrame<"u"&&cancelAnimationFrame(u),u=null),p=null}function A(){t.addEventListener("pointerdown",_),t.addEventListener("pointermove",M),t.addEventListener("pointerup",x),t.addEventListener("pointercancel",x),t.addEventListener("contextmenu",y),t.addEventListener("wheel",w,{passive:!1}),t.style.cursor=o?"grab":"",t.style.touchAction="none",t.style.userSelect="none"}function L(){t.removeEventListener("pointerdown",_),t.removeEventListener("pointermove",M),t.removeEventListener("pointerup",x),t.removeEventListener("pointercancel",x),t.removeEventListener("contextmenu",y),t.removeEventListener("wheel",w),t.style.cursor="",t.style.touchAction="",t.style.userSelect=""}return A(),H(),{update(a){let E=!!l;o=a.drag??o,r=a.wheel??r,s=Bt(a.invert),l=a.animate??l,!i&&d===null&&(t.style.cursor=o?"grab":"");let g=!!l;E&&!g?v():!E&&g&&H()},pause(){i||(i=!0,L(),v(),d=null,c=!1)},resume(){i&&(i=!1,A(),H())},destroy(){i||L(),v(),i=!0}}}function Bt(n){return n===void 0||n===!1?1:n===!0?-1:n}var Rn=typeof HTMLElement<"u"?HTMLElement:class{};function gt(n){if(n!==null){if(n==="false")return!1;if(n==="true"||n==="")return!0}}function Nn(n){return n.closest("glyph-scene")??null}var tt=class extends Rn{constructor(){super(...arguments);this._controls=null}static get observedAttributes(){return["drag","wheel","invert"]}connectedCallback(){this._attach()}disconnectedCallback(){this._controls&&(this._controls.destroy(),this._controls=null)}attributeChangedCallback(t,o,r){o!==r&&this._controls?.update(this._readOptions())}_readOptions(){let t=gt(this.getAttribute("drag")),o=gt(this.getAttribute("wheel")),r=gt(this.getAttribute("invert"));return{...t!==void 0?{drag:t}:{},...o!==void 0?{wheel:o}:{},...r!==void 0?{invert:r}:{}}}_attach(){if(this._controls)return;let t=Nn(this);if(!t)return;let o=t.getScene();if(!o){let r=()=>{t.removeEventListener("glyphcss:scene-ready",r),this._attach()};t.addEventListener("glyphcss:scene-ready",r);return}this._controls=Rt(o,this._readOptions())}};if(typeof customElements<"u"){if(customElements.get("glyph-scene")||customElements.define("glyph-scene",Ue),customElements.get("glyph-mesh")||customElements.define("glyph-mesh",Ke),customElements.get("glyph-hotspot")||customElements.define("glyph-hotspot",Ze),customElements.get("glyph-perspective-camera")||customElements.define("glyph-perspective-camera",Je),customElements.get("glyph-orthographic-camera")||customElements.define("glyph-orthographic-camera",De),!customElements.get("glyph-camera")){class n extends De{}customElements.define("glyph-camera",n)}customElements.get("glyph-orbit-controls")||customElements.define("glyph-orbit-controls",et),customElements.get("glyph-map-controls")||customElements.define("glyph-map-controls",tt)}export{Ze as GlyphHotspotElement,tt as GlyphMapControlsElement,Ke as GlyphMeshElement,et as GlyphOrbitControlsElement,De as GlyphOrthographicCameraElement,Je as GlyphPerspectiveCameraElement,Ue as GlyphSceneElement};
|
package/dist/index.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
"use strict";var ot=Object.defineProperty;var Bt=Object.getOwnPropertyDescriptor;var Xt=Object.getOwnPropertyNames;var Nt=Object.prototype.hasOwnProperty;var Vt=(t,n)=>{for(var e in n)ot(t,e,{get:n[e],enumerable:!0})},rt=(t,n,e,o)=>{if(n&&typeof n=="object"||typeof n=="function")for(let r of Xt(n))!Nt.call(t,r)&&r!==e&&ot(t,r,{get:()=>n[r],enumerable:!(o=Bt(n,r))||o.enumerable});return t},O=(t,n,e)=>(rt(t,n,"default"),e&&rt(e,n,"default"));var $t=t=>rt(ot({},"__esModule",{value:!0}),t);var z={};Vt(z,{DEFAULT_RAMP:()=>gt,GlyphHotspotElement:()=>Fe,GlyphMapControlsElement:()=>Ne,GlyphMeshElement:()=>ke,GlyphOrbitControlsElement:()=>Xe,GlyphOrthographicCameraElement:()=>De,GlyphPerspectiveCameraElement:()=>Ye,GlyphSceneElement:()=>Re,SOLID_RAMP:()=>bt,WIREFRAME_GLYPHS:()=>vt,WIREFRAME_PALETTES:()=>xe,bakeFrames:()=>wt,buildRasterizeContext:()=>He,createGlyphCamera:()=>yt,createGlyphFirstPersonControls:()=>Gt,createGlyphMapControls:()=>Ie,createGlyphOrbitControls:()=>Oe,createGlyphOrthographicCamera:()=>Me,createGlyphPerspectiveCamera:()=>pe,createGlyphScene:()=>ze,findGlyphMeshHandle:()=>St,findMeshUnderPoint:()=>Lt,getWireframeGlyphs:()=>Ae,injectGlyphBaseStyles:()=>Pe,pointInMeshElement:()=>it,projectHotspots:()=>Te,rasterize:()=>Se});module.exports=$t(z);var mt=Math.PI/180;function ft(t,n,e){let o=t[1],r=t[0],s=t[2],l=e*mt,i=Math.cos(l),u=Math.sin(l),d=o*i-r*u,h=o*u+r*i,c=s,f=n*mt,g=Math.cos(f),y=Math.sin(f),w=h*g-c*y,M=h*y+c*g;return[d,w,M]}function pe(t={}){let n={rotX:t.rotX??65,rotY:t.rotY??45,distance:t.distance??6,zoom:t.zoom??.65,stretch:t.stretch??1,target:[0,0,0],eyeMode:!1,focal:1},[e,o]=t.center??[.5,.5];return{kind:"perspective",get rotX(){return n.rotX},set rotX(r){n.rotX=r},get rotY(){return n.rotY},set rotY(r){n.rotY=r},get distance(){return n.distance},set distance(r){n.distance=r},get zoom(){return n.zoom},set zoom(r){n.zoom=r},get stretch(){return n.stretch},set stretch(r){n.stretch=r},get target(){return n.target},set target(r){n.target=r},get eyeMode(){return n.eyeMode},set eyeMode(r){n.eyeMode=r},project(r,s,l,i){let d=50/i,h=[r[0]-n.target[0],r[1]-n.target[1],r[2]-n.target[2]],c=ft(h,n.rotX,n.rotY);if(n.eyeMode){if(c[2]>=-.001)return[NaN,NaN,c[2]];let v=n.focal/-c[2],E=c[0]*v*n.zoom*50,L=c[1]*v*n.zoom*50,a=s*e+E/d*n.stretch,m=l*o+L/50;return[a,m,c[2]]}let f=.001,g=n.distance-c[2];if(g<f)return[NaN,NaN,c[2]];let y=n.distance/g,w=c[0]*y*n.zoom*50,M=c[1]*y*n.zoom*50,_=s*e+w/d*n.stretch,G=l*o+M/50;return[_,G,c[2]]}}}function Me(t={}){let n={rotX:t.rotX??65,rotY:t.rotY??45,distance:0,zoom:t.zoom??.65,stretch:1,target:[0,0,0]},[e,o]=t.center??[.5,.5];return{kind:"orthographic",get rotX(){return n.rotX},set rotX(r){n.rotX=r},get rotY(){return n.rotY},set rotY(r){n.rotY=r},get distance(){return n.distance},set distance(r){n.distance=r},get zoom(){return n.zoom},set zoom(r){n.zoom=r},get stretch(){return n.stretch},set stretch(r){n.stretch=r},get target(){return n.target},set target(r){n.target=r},get eyeMode(){return!1},set eyeMode(r){},project(r,s,l,i){let d=50/i,h=[r[0]-n.target[0],r[1]-n.target[1],r[2]-n.target[2]],c=ft(h,n.rotX,n.rotY),f=c[0]*n.zoom*50,g=c[1]*n.zoom*50,y=s*e+f/d,w=l*o+g/50;return[y,w,c[2]]}}}var yt=Me;var Wt={direction:[-.5,-.7,-.5],intensity:1},jt={intensity:.4};function qt(t){let n=new Set,e=[];for(let o of t){let r=o.vertices;if(!(r.length<2))for(let s=0;s<r.length;s++){let l=r[s],i=r[(s+1)%r.length],u=`${l[0]},${l[1]},${l[2]}`,d=`${i[0]},${i[1]},${i[2]}`,h=u<d?`${u}|${d}`:`${d}|${u}`;if(n.has(h))continue;n.add(h);let c={from:l,to:i,weight:2};o.color&&(c.color=o.color),e.push(c)}}return e}function He(t){let n=t.polygons??[],e=t.mode??(n.length?"solid":"wireframe"),o=t.wireframe??(e==="wireframe"?qt(n):[]);return{camera:t.camera,grid:t.grid,polygons:n,wireframe:o,mode:e,directionalLight:t.directionalLight??Wt,ambientLight:t.ambientLight??jt,glyphPalette:t.glyphPalette??"default",useColors:t.useColors??!0,smoothShading:t.smoothShading??!1,creaseAngle:t.creaseAngle??60,shadow:t.shadow,castShadowFlags:t.castShadowFlags??[],receiveShadowFlags:t.receiveShadowFlags??[]}}var gt=" .:-=+*#%@".split(""),bt=" .:-=+*#%@".split(""),xe={default:{thin:"\xB7\u22C5\u2219\u02D9\xB7\u22C5\u2219".split(""),normal:"\u254B\u256C\u253C\u2573\u25C6\u25C7\u25CA\u25B2\u25B3\u25BC\u25BD\u25C8\u2B21\u2B22\u2234\u2235\u22A5\u2295\u2297\u2299\u229A\u229B".split(""),core:"\u2726\u2727\u2729\u25C9\u2299\u25CE".split(""),solid:" .:-=+*#%@".split("")},ascii:{thin:".'".split(""),normal:"+*x".split(""),core:"#@".split(""),solid:" .,:;!+=*xX#@".split("")},dots:{thin:"\xB7\u22C5".split(""),normal:"\u2022\u25CF".split(""),core:"\u25C9\u25CE".split(""),solid:" \xB7\u22C5\u2218\u2022\u25CF\u25C9\u25CE\u2B24".split("")},lines:{thin:"\u2500\u2502".split(""),normal:"\u2550\u2551".split(""),core:"\u2588".split(""),solid:" \u2500\u2550\u256C\u2551\u2588\u2593\u2592\u2591".split("")},blocks:{thin:"\u2591\u2581".split(""),normal:"\u2592\u2593\u258C\u2590\u2580\u2584".split(""),core:"\u2588".split(""),solid:" \u2591\u2592\u2593\u258C\u2590\u2588\u2580\u2584\u25A0".split("")},stars:{thin:"\xB7\u22C6".split(""),normal:"\u2726\u2727\u2729\u272A".split(""),core:"\u272B\u272C\u272D\u2605".split(""),solid:" \xB7\u22C6\u2217\u2726\u2727\u2729\u272A\u272B\u2605".split("")},arrows:{thin:"\xB7\u2219".split(""),normal:"\u2190\u2191\u2192\u2193".split(""),core:"\u2196\u2197\u2198\u2199\u2921\u2922".split(""),solid:" \xB7\u2219\u2191\u2197\u2192\u2198\u2193\u2199\u2190\u2196".split("")},braille:{thin:"\u2801\u2802\u2804\u2808".split(""),normal:"\u2803\u2805\u2806\u2809\u280A\u280B\u280C\u280D\u280E\u280F".split(""),core:"\u283F\u28FF".split(""),solid:" \u2801\u2803\u2807\u2827\u2837\u283F\u287F\u28FF".split("")},runes:{thin:".\xB7".split(""),normal:"\u16A0\u16A1\u16A2\u16A3\u16A4\u16A6\u16A8\u16B1\u16B2\u16B3\u16B7\u16B9\u16C3\u16C7\u16C9".split(""),core:"\u16DE\u16DF\u16E1\u16E2\u16E3".split(""),solid:" \xB7\u16A0\u16A3\u16A4\u16A8\u16B1\u16B7\u16DE\u16E2".split("")},math:{thin:"\u2219\u2218".split(""),normal:"\u2211\u220F\u222B\u221A\u221E\u2248\u2260\u2264\u2265\u2282\u2283\u2286\u2287".split(""),core:"\u222E\u222F\u2230\u2202".split(""),solid:" \u2219\u2218\u2211\u222B\u221A\u221E\u2248\u2295\u2297".split("")},binary:{thin:"\xB7.".split(""),normal:"01".split(""),core:"\u2588".split(""),solid:" .:01\u2588\u2588".split("")},hex:{thin:"\xB7\u2219".split(""),normal:"0123456789ABCDEF".split(""),core:"FFAA".split(""),solid:" 0123456789AF".split("")}},vt=xe.default;function Ae(t){return xe[t]??xe.default}function Se(t){let{camera:n,grid:e,wireframe:o,mode:r}=t,{cols:s,rows:l,cellAspect:i}=e;if(r==="solid")return Ut(t,s,l,i);let u=Ae(t.glyphPalette),d=new Uint8Array(s*l),h=t.useColors?new Array(s*l).fill(null):null;for(let c of o){let f=n.project(c.from,s,l,i),g=n.project(c.to,s,l,i);f[0]!==f[0]||g[0]!==g[0]||nn(d,h,f[0]|0,f[1]|0,g[0]|0,g[1]|0,c.weight??2,c.color??null,s,l)}return rn(d,h,s,l,u)}function Ut(t,n,e,o){let{camera:r,polygons:s,directionalLight:l,ambientLight:i,smoothShading:u,creaseAngle:d,castShadowFlags:h,receiveShadowFlags:c}=t,f=Ae(t.glyphPalette).solid,g=f.length-1,y=new Array(n*e).fill(" "),w=t.useColors,M=w?new Array(n*e).fill(null):null,_=new Float64Array(n*e).fill(-1/0),G=l.direction,P=Math.hypot(G[0],G[1],G[2])||1,v=G[0]/P,E=G[1]/P,L=G[2]/P,a=l.intensity??1,m=i.intensity??.4,b=Ge(l.color??"#ffffff"),C=Ge(i.color??"#ffffff"),p=u&&d>0?en(s,d):null,x=new Map,S=t.shadow,T=S!=null&&h.length>0?Jt(s,h,v,E,L):null,H=S?.opacity??.25,k=S?.lift??.05,F=S?.color??"#000000",K=T?Ge(F):[0,0,0],I=globalThis.__glyphPerfDetail,Z=I?performance.now():0,B=[],R=t.shadeCache??null,Y=-1;for(let ie=0;ie<s.length;ie++){let ve=s[ie],X=ve.vertices;if(!(X.length<3)){for(let N=0;N<X.length;N++)B[N]=r.project(X[N],n,e,o);for(let N=1;N<X.length-1;N++){Y++;let Ee=0,$=N,J=N+1,Q=X[Ee],se=X[$],le=X[J],D=B[Ee],V=B[$],W=B[J];if(D[0]!==D[0]||V[0]!==V[0]||W[0]!==W[0]||(V[0]-D[0])*(W[1]-D[1])-(V[1]-D[1])*(W[0]-D[0])>0)continue;let j,ee,te,ae=null;if(R!==null&&R.iA[Y]!==void 0)j=R.iA[Y],ee=R.iB[Y],te=R.iC[Y],ae=R.lit[Y];else{let A=se[0]-Q[0],ce=se[1]-Q[1],ue=se[2]-Q[2],de=le[0]-Q[0],at=le[1]-Q[1],ct=le[2]-Q[2],ut=ce*ct-ue*at,dt=ue*de-A*ct,ht=A*at-ce*de,We=Math.hypot(ut,dt,ht)||1,_t=ut/We,Ht=dt/We,Pt=ht/We,je,qe,Ue,Ke,Ze,Je,Qe,et,tt;if(p){let we=p[ie],ne=we[Ee],he=we[$],Ce=we[J];je=ne[0],qe=ne[1],Ue=ne[2],Ke=he[0],Ze=he[1],Je=he[2],Qe=Ce[0],et=Ce[1],tt=Ce[2]}else je=Ke=Qe=_t,qe=Ze=et=Ht,Ue=Je=tt=Pt;let Tt=Math.max(0,-(je*v+qe*E+Ue*L)),zt=Math.max(0,-(Ke*v+Ze*E+Je*L)),Ot=Math.max(0,-(Qe*v+et*E+tt*L));if(j=Math.min(1,m+Tt*a),ee=Math.min(1,m+zt*a),te=Math.min(1,m+Ot*a),w){let we=(j+ee+te)/3,ne=Math.max(0,we-m),he=ve.color??"#ffffff",Ce=ne*255|0,pt=`${he}:${Ce}`,_e=x.get(pt);if(_e===void 0){let nt=Ge(he),It=m*C[0]/255+ne*b[0]/255,Rt=m*C[1]/255+ne*b[1]/255,kt=m*C[2]/255+ne*b[2]/255,Ft=Math.min(255,nt[0]*It),Yt=Math.min(255,nt[1]*Rt),Dt=Math.min(255,nt[2]*kt);_e=`#${fe(Ft)}${fe(Yt)}${fe(Dt)}`,x.set(pt,_e)}ae=_e}R!==null&&(R.iA[Y]=j,R.iB[Y]=ee,R.iC[Y]=te,R.lit[Y]=ae)}let $e=c[ie]??!1,Le=null;if(T!==null&&$e){let A=T,ce=me(Q,A.right[0],A.right[1],A.right[2],A.up[0],A.up[1],A.up[2],A.dir[0],A.dir[1],A.dir[2],A.uMin,A.uMax,A.vMin,A.vMax),ue=me(se,A.right[0],A.right[1],A.right[2],A.up[0],A.up[1],A.up[2],A.dir[0],A.dir[1],A.dir[2],A.uMin,A.uMax,A.vMin,A.vMax),de=me(le,A.right[0],A.right[1],A.right[2],A.up[0],A.up[1],A.up[2],A.dir[0],A.dir[1],A.dir[2],A.uMin,A.uMax,A.vMin,A.vMax);Le={map:A,luA:ce[0],lvA:ce[1],ldA:ce[2],luB:ue[0],lvB:ue[1],ldB:ue[2],luC:de[0],lvC:de[1],ldC:de[2],lift:k,opacity:H,shadowColorRgb:K,shadowColorHex:F,litCache:x}}Qt(D[0],D[1],D[2],j,V[0],V[1],V[2],ee,W[0],W[1],W[2],te,f,g,ae,y,M,_,n,e,Le)}}}I&&(I.loop??(I.loop=[])).push(performance.now()-Z);let oe=I?performance.now():0,be=tn(y,M,n,e);return I&&(I.string??(I.string=[])).push(performance.now()-oe),be}var Kt=new Float64Array([(0+.5)/16,(8+.5)/16,(2+.5)/16,(10+.5)/16,(12+.5)/16,(4+.5)/16,(14+.5)/16,(6+.5)/16,(3+.5)/16,(11+.5)/16,(1+.5)/16,(9+.5)/16,(15+.5)/16,(7+.5)/16,(13+.5)/16,(5+.5)/16]),q=256;function me(t,n,e,o,r,s,l,i,u,d,h,c,f,g){let y=n*t[0]+e*t[1]+o*t[2],w=r*t[0]+s*t[1]+l*t[2],M=-(i*t[0]+u*t[1]+d*t[2]),_=(y-h)/(c-h)*(q-1),G=(w-f)/(g-f)*(q-1);return[_,G,M]}function Zt(t,n,e,o){let r=n[0],s=n[1],l=n[2],i=e[0],u=e[1],d=e[2],h=o[0],c=o[1],f=o[2],g=(i-r)*(c-s)-(u-s)*(h-r);if(g===0)return;let y=1/g,w=r<i?r:i;h<w&&(w=h);let M=r>i?r:i;h>M&&(M=h);let _=s<u?s:u;c<_&&(_=c);let G=s>u?s:u;c>G&&(G=c);let P=Math.max(0,Math.ceil(w)),v=Math.min(q-1,Math.floor(M)),E=Math.max(0,Math.ceil(_)),L=Math.min(q-1,Math.floor(G));if(P>v||E>L)return;let a=g>0;for(let m=E;m<=L;m++)for(let b=P;b<=v;b++){let C=b,p=m,x=(i-C)*(c-p)-(u-p)*(h-C),S=(h-C)*(s-p)-(c-p)*(r-C),T=(r-C)*(u-p)-(s-p)*(i-C);if(a?x<0||S<0||T<0:x>0||S>0||T>0)continue;let H=(x*l+S*d+T*f)*y,k=m*q+b;H>t[k]&&(t[k]=H)}}function Jt(t,n,e,o,r){let s,l,i;Math.abs(e)<.9?(s=0,l=r,i=-o):(s=-r,l=0,i=e);let u=Math.hypot(s,l,i);s/=u,l/=u,i/=u;let d=l*r-i*o,h=i*e-s*r,c=s*o-l*e,f=1/0,g=-1/0,y=1/0,w=-1/0,M=!1;for(let v=0;v<t.length;v++)if(n[v]){M=!0;for(let E of t[v].vertices){let L=s*E[0]+l*E[1]+i*E[2],a=d*E[0]+h*E[1]+c*E[2];L<f&&(f=L),L>g&&(g=L),a<y&&(y=a),a>w&&(w=a)}}if(!M)return null;let _=(g-f)*.05+.01,G=(w-y)*.05+.01;f-=_,g+=_,y-=G,w+=G;let P=new Float64Array(q*q).fill(-1/0);for(let v=0;v<t.length;v++){if(!n[v])continue;let E=t[v].vertices;if(!(E.length<3))for(let L=1;L<E.length-1;L++){let a=E[0],m=E[L],b=E[L+1],C=me(a,s,l,i,d,h,c,e,o,r,f,g,y,w),p=me(m,s,l,i,d,h,c,e,o,r,f,g,y,w),x=me(b,s,l,i,d,h,c,e,o,r,f,g,y,w);Zt(P,C,p,x)}}return{buf:P,right:[s,l,i],up:[d,h,c],dir:[e,o,r],uMin:f,uMax:g,vMin:y,vMax:w}}function Qt(t,n,e,o,r,s,l,i,u,d,h,c,f,g,y,w,M,_,G,P,v){let E=(r-t)*(d-n)-(s-n)*(u-t);if(E===0||E>0)return;let L=1/E,a=E>0,m=t<r?t:r;u<m&&(m=u);let b=t>r?t:r;u>b&&(b=u);let C=n<s?n:s;d<C&&(C=d);let p=n>s?n:s;d>p&&(p=d);let x=Math.max(0,Math.ceil(m)),S=Math.min(G-1,Math.floor(b)),T=Math.max(0,Math.ceil(C)),H=Math.min(P-1,Math.floor(p));if(!(x>S||T>H))for(let k=T;k<=H;k++){let F=k;for(let K=x;K<=S;K++){let I=K,Z=(r-I)*(d-F)-(s-F)*(u-I),B=(u-I)*(n-F)-(d-F)*(t-I),R=(t-I)*(s-F)-(n-F)*(r-I);if(a?Z<0||B<0||R<0:Z>0||B>0||R>0)continue;let Y=(Z*e+B*l+R*h)*L,oe=k*G+K;if(Y>_[oe]){_[oe]=Y;let be=(Z*o+B*i+R*c)*L,ve=(be<0?0:be>1?1:be)*g,X=ve|0,N=ve-X,Ee=Kt[(k&3)*4+(K&3)],$=N>Ee&&X<g?X+1:X;$>g&&($=g);let J=y;if(v!==null){let Q=(Z*v.luA+B*v.luB+R*v.luC)*L,se=(Z*v.lvA+B*v.lvB+R*v.lvC)*L,le=(Z*v.ldA+B*v.ldB+R*v.ldC)*L,D=Q|0,V=se|0;if(D>=0&&D<q&&V>=0&&V<q){let W=v.map.buf[V*q+D];if(W>-1/0&&le+v.lift<W&&($=Math.max(0,$-Math.round(v.opacity*g)),J!==null)){let Ve=`shadow:${J}:${$}`,j=v.litCache.get(Ve);if(j===void 0){let ee=Ge(J),te=v.shadowColorRgb,ae=Math.round(ee[0]*(1-v.opacity)+te[0]*v.opacity),$e=Math.round(ee[1]*(1-v.opacity)+te[1]*v.opacity),Le=Math.round(ee[2]*(1-v.opacity)+te[2]*v.opacity);j=`#${fe(ae)}${fe($e)}${fe(Le)}`,v.litCache.set(Ve,j)}J=j}}}w[oe]=f[$],M&&(M[oe]=J)}}}}function en(t,n){let e=t.length,o=new Array(e);for(let i=0;i<e;i++){let u=t[i].vertices;if(u.length<3){o[i]=[0,0,0];continue}let d=u[0],h=u[1],c=u[2],f=h[0]-d[0],g=h[1]-d[1],y=h[2]-d[2],w=c[0]-d[0],M=c[1]-d[1],_=c[2]-d[2],G=g*_-y*M,P=y*w-f*_,v=f*M-g*w,E=Math.hypot(G,P,v)||1;o[i]=[G/E,P/E,v/E]}let r=new Map;for(let i=0;i<e;i++){let u=t[i].vertices;for(let d=0;d<u.length;d++){let h=u[d],c=`${h[0]},${h[1]},${h[2]}`,f=r.get(c);f||(f=[],r.set(c,f)),(f.length===0||f[f.length-1]!==i)&&f.push(i)}}let s=Math.cos(n*Math.PI/180),l=new Array(e);for(let i=0;i<e;i++){let u=t[i].vertices,d=o[i],h=new Array(u.length);for(let c=0;c<u.length;c++){let f=u[c],g=r.get(`${f[0]},${f[1]},${f[2]}`),y=0,w=0,M=0;for(let G=0;G<g.length;G++){let P=g[G],v=o[P];d[0]*v[0]+d[1]*v[1]+d[2]*v[2]>=s&&(y+=v[0],w+=v[1],M+=v[2])}let _=Math.hypot(y,w,M)||1;h[c]=[y/_,w/_,M/_]}l[i]=h}return l}function tn(t,n,e,o){let r=[],s=null,l="",i=()=>{l&&(s!==null?r.push(`<span style="color:${s}">${l}</span>`):r.push(l),l="")};for(let u=0;u<o;u++){for(let d=0;d<e;d++){let h=u*e+d,c=t[h],f=n&&c!==" "?n[h]??null:null;f!==s&&(i(),s=f),l+=c}i(),s=null,u<o-1&&r.push(`
|
|
2
|
-
`)}return r.join("")}function
|
|
3
|
-
`)}return
|
|
1
|
+
"use strict";var Gt=Object.defineProperty;var hn=Object.getOwnPropertyDescriptor;var mn=Object.getOwnPropertyNames;var fn=Object.prototype.hasOwnProperty;var yn=(n,t)=>{for(var e in t)Gt(n,e,{get:t[e],enumerable:!0})},Mt=(n,t,e,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of mn(t))!fn.call(n,r)&&r!==e&&Gt(n,r,{get:()=>t[r],enumerable:!(o=hn(t,r))||o.enumerable});return n},V=(n,t,e)=>(Mt(n,t,"default"),e&&Mt(e,t,"default"));var gn=n=>Mt(Gt({},"__esModule",{value:!0}),n);var N={};yn(N,{DEFAULT_PERSPECTIVE:()=>Tt,DEFAULT_RAMP:()=>Vt,GlyphHotspotElement:()=>ut,GlyphMapControlsElement:()=>ft,GlyphMeshElement:()=>ct,GlyphOrbitControlsElement:()=>mt,GlyphOrthographicCameraElement:()=>pt,GlyphPerspectiveCameraElement:()=>dt,GlyphSceneElement:()=>at,SOLID_RAMP:()=>Xt,WIREFRAME_GLYPHS:()=>$t,WIREFRAME_PALETTES:()=>We,bakeFrames:()=>qt,buildRasterizeContext:()=>tt,createGlyphCamera:()=>Yt,createGlyphFirstPersonControls:()=>en,createGlyphMapControls:()=>lt,createGlyphOrbitControls:()=>st,createGlyphOrthographicCamera:()=>$e,createGlyphPerspectiveCamera:()=>Le,createGlyphScene:()=>it,findGlyphMeshHandle:()=>tn,findMeshUnderPoint:()=>nn,getWireframeGlyphs:()=>je,injectGlyphBaseStyles:()=>rt,pointInMeshElement:()=>_t,projectHotspots:()=>ot,rasterize:()=>qe});module.exports=gn(N);var Kt=require("@glyphcss/core");var Nt=Math.PI/180,Dt=.01,Tt=32e3,bn=Dt*1.01;function Lt(n,t,e){let o=n[1],r=n[0],i=n[2],l=e*Nt,s=Math.cos(l),c=Math.sin(l),u=o*s-r*c,p=o*c+r*s,d=i,h=t*Nt,m=Math.cos(h),f=Math.sin(h),v=p*m-d*f,C=p*f+d*m;return[u,v,C]}function Le(n={}){let t={rotX:n.rotX??65,rotY:n.rotY??45,distance:n.distance??6,perspective:n.perspective??Tt,zoom:n.zoom??.65,stretch:n.stretch??1,fovScale:n.fovScale??1,target:[0,0,0],eyeMode:!1,focal:1},[e,o]=n.center??[.5,.5];return{kind:"perspective",get rotX(){return t.rotX},set rotX(r){t.rotX=r},get rotY(){return t.rotY},set rotY(r){t.rotY=r},get distance(){return t.distance},set distance(r){t.distance=r},get perspective(){return t.perspective},set perspective(r){t.perspective=r},get zoom(){return t.zoom},set zoom(r){t.zoom=r},get stretch(){return t.stretch},set stretch(r){t.stretch=r},get fovScale(){return t.fovScale},set fovScale(r){t.fovScale=r},get target(){return t.target},set target(r){t.target=r},get eyeMode(){return t.eyeMode},set eyeMode(r){t.eyeMode=r},eyeDepth(r){let i=Lt([r[0]-t.target[0],r[1]-t.target[1],r[2]-t.target[2]],t.rotX,t.rotY),l=.001*1.01;if(t.eyeMode)return-i[2]-l;if(t.perspective>0){let s=i[2]*t.zoom*50-t.distance;return t.perspective-s-t.perspective*bn}return t.distance-i[2]-l},project(r,i,l,s){let u=50/s,p=[r[0]-t.target[0],r[1]-t.target[1],r[2]-t.target[2]],d=Lt(p,t.rotX,t.rotY);if(t.eyeMode){if(d[2]>=-.001)return[NaN,NaN,d[2],NaN];let b=t.focal/-d[2],A=d[0]*b*t.zoom*50,P=d[1]*b*t.zoom*50,y=i*e+A/u*t.stretch,E=l*o+P/50;return[y,E,d[2],-1/d[2]]}if(t.perspective>0){let M=t.perspective,b=d[0]*t.zoom*50,A=d[1]*t.zoom*50,P=d[2]*t.zoom*50-t.distance,y=M-P,E=M*Dt;if(y<E)return[NaN,NaN,P,NaN];let x=M/y,L=i*e+b*x/u*t.stretch*t.fovScale,a=l*o+A*x/50*t.fovScale;return[L,a,P,1/y]}let h=.001,m=t.distance-d[2];if(m<h)return[NaN,NaN,d[2],NaN];let f=t.distance/m,v=d[0]*f*t.zoom*50,C=d[1]*f*t.zoom*50,T=i*e+v/u*t.stretch*t.fovScale,G=l*o+C/50*t.fovScale;return[T,G,d[2],1/m]}}}function $e(n={}){let t={rotX:n.rotX??65,rotY:n.rotY??45,distance:0,zoom:n.zoom??.65,stretch:1,fovScale:1,target:[0,0,0]},[e,o]=n.center??[.5,.5];return{kind:"orthographic",get rotX(){return t.rotX},set rotX(r){t.rotX=r},get rotY(){return t.rotY},set rotY(r){t.rotY=r},get distance(){return t.distance},set distance(r){t.distance=r},get perspective(){return 0},set perspective(r){},get zoom(){return t.zoom},set zoom(r){t.zoom=r},get stretch(){return t.stretch},set stretch(r){t.stretch=r},get fovScale(){return t.fovScale},set fovScale(r){t.fovScale=r},get target(){return t.target},set target(r){t.target=r},get eyeMode(){return!1},set eyeMode(r){},eyeDepth(r){return Number.POSITIVE_INFINITY},project(r,i,l,s){let u=50/s,p=[r[0]-t.target[0],r[1]-t.target[1],r[2]-t.target[2]],d=Lt(p,t.rotX,t.rotY),h=d[0]*t.zoom*50,m=d[1]*t.zoom*50,f=i*e+h/u*t.fovScale,v=l*o+m/50*t.fovScale;return[f,v,d[2]]}}}var Yt=$e;var vn={direction:[-.5,-.7,-.5],intensity:1},En={intensity:.4};function wn(n){let t=new Set,e=[];for(let o of n){let r=o.vertices;if(!(r.length<2))for(let i=0;i<r.length;i++){let l=r[i],s=r[(i+1)%r.length],c=`${l[0]},${l[1]},${l[2]}`,u=`${s[0]},${s[1]},${s[2]}`,p=c<u?`${c}|${u}`:`${u}|${c}`;if(t.has(p))continue;t.add(p);let d={from:l,to:s,weight:2};o.color&&(d.color=o.color),e.push(d)}}return e}function tt(n){let t=n.polygons??[],e=n.mode??(t.length?"solid":"wireframe"),o=n.wireframe??(e==="wireframe"?wn(t):[]);return{camera:n.camera,grid:n.grid,polygons:t,wireframe:o,mode:e,directionalLight:n.directionalLight??vn,ambientLight:n.ambientLight??En,glyphPalette:n.glyphPalette??"default",useColors:n.useColors??!0,smoothShading:n.smoothShading??!1,creaseAngle:n.creaseAngle??60,doubleSided:n.doubleSided??!1,supersample:n.supersample??1,temporalBlend:n.temporalBlend??0,shadow:n.shadow,castShadowFlags:n.castShadowFlags??[],receiveShadowFlags:n.receiveShadowFlags??[],...n.depthBiases?{depthBiases:n.depthBiases}:{},...n.depthEpsilon?{depthEpsilon:n.depthEpsilon}:{}}}var nt=require("@glyphcss/core");var Vt=" .:-=+*#%@".split(""),Xt=" .:-=+*#%@".split(""),We={default:{thin:"\xB7\u22C5\u2219\u02D9\xB7\u22C5\u2219".split(""),normal:"\u254B\u256C\u253C\u2573\u25C6\u25C7\u25CA\u25B2\u25B3\u25BC\u25BD\u25C8\u2B21\u2B22\u2234\u2235\u22A5\u2295\u2297\u2299\u229A\u229B".split(""),core:"\u2726\u2727\u2729\u25C9\u2299\u25CE".split(""),solid:" .:-=+*#%@".split("")},ascii:{thin:".'".split(""),normal:"+*x".split(""),core:"#@".split(""),solid:" .,:;!+=*xX#@".split("")},dots:{thin:"\xB7\u22C5".split(""),normal:"\u2022\u25CF".split(""),core:"\u25C9\u25CE".split(""),solid:" \xB7\u22C5\u2218\u2022\u25CF\u25C9\u25CE\u2B24".split("")},lines:{thin:"\u2500\u2502".split(""),normal:"\u2550\u2551".split(""),core:"\u2588".split(""),solid:" \u2500\u2550\u256C\u2551\u2588\u2593\u2592\u2591".split("")},blocks:{thin:"\u2591\u2581".split(""),normal:"\u2592\u2593\u258C\u2590\u2580\u2584".split(""),core:"\u2588".split(""),solid:" \u2591\u2592\u2593\u258C\u2590\u2588\u2580\u2584\u25A0".split("")},stars:{thin:"\xB7\u22C6".split(""),normal:"\u2726\u2727\u2729\u272A".split(""),core:"\u272B\u272C\u272D\u2605".split(""),solid:" \xB7\u22C6\u2217\u2726\u2727\u2729\u272A\u272B\u2605".split("")},arrows:{thin:"\xB7\u2219".split(""),normal:"\u2190\u2191\u2192\u2193".split(""),core:"\u2196\u2197\u2198\u2199\u2921\u2922".split(""),solid:" \xB7\u2219\u2191\u2197\u2192\u2198\u2193\u2199\u2190\u2196".split("")},braille:{thin:"\u2801\u2802\u2804\u2808".split(""),normal:"\u2803\u2805\u2806\u2809\u280A\u280B\u280C\u280D\u280E\u280F".split(""),core:"\u283F\u28FF".split(""),solid:" \u2801\u2803\u2807\u2827\u2837\u283F\u287F\u28FF".split("")},runes:{thin:".\xB7".split(""),normal:"\u16A0\u16A1\u16A2\u16A3\u16A4\u16A6\u16A8\u16B1\u16B2\u16B3\u16B7\u16B9\u16C3\u16C7\u16C9".split(""),core:"\u16DE\u16DF\u16E1\u16E2\u16E3".split(""),solid:" \xB7\u16A0\u16A3\u16A4\u16A8\u16B1\u16B7\u16DE\u16E2".split("")},math:{thin:"\u2219\u2218".split(""),normal:"\u2211\u220F\u222B\u221A\u221E\u2248\u2260\u2264\u2265\u2282\u2283\u2286\u2287".split(""),core:"\u222E\u222F\u2230\u2202".split(""),solid:" \u2219\u2218\u2211\u222B\u221A\u221E\u2248\u2295\u2297".split("")},binary:{thin:"\xB7.".split(""),normal:"01".split(""),core:"\u2588".split(""),solid:" .:01\u2588\u2588".split("")},hex:{thin:"\xB7\u2219".split(""),normal:"0123456789ABCDEF".split(""),core:"FFAA".split(""),solid:" 0123456789AF".split("")}},$t=We.default;function je(n){return We[n]??We.default}function qe(n){let{camera:t,grid:e,wireframe:o,mode:r}=n,{cols:i,rows:l,cellAspect:s}=e;if(r==="solid"){let d=n.supersample&&n.supersample>1?Math.floor(n.supersample):1;return xn(n,i,l,s,d)}let c=je(n.glyphPalette),u=new Uint8Array(i*l),p=n.useColors?new Array(i*l).fill(null):null;for(let d of o){let h=t.project(d.from,i,l,s),m=t.project(d.to,i,l,s);h[0]!==h[0]||m[0]!==m[0]||_n(u,p,h[0]|0,h[1]|0,m[0]|0,m[1]|0,d.weight??2,d.color??null,i,l)}return Pn(u,p,i,l,c)}function xn(n,t,e,o,r){let i=t*r,l=e*r,{camera:s,polygons:c,directionalLight:u,ambientLight:p,smoothShading:d,creaseAngle:h,doubleSided:m,castShadowFlags:f,receiveShadowFlags:v}=n,C=n.depthBiases,T=n.depthEpsilon??0,G=r>1?{zoom:s.zoom,eyeDepth:R=>s.eyeDepth(R),project:(R,$,W,Y)=>{let S=s.project(R,$,W,Y);return[$*.5+(S[0]-$*.5)*r,W*.5+(S[1]-W*.5)*r,S[2],S[3]]}}:s,M=je(n.glyphPalette).solid,b=M.length-1,A=new Array(i*l).fill(" "),P=n.useColors,y=P?new Array(i*l).fill(null):null,E=new Float64Array(i*l).fill(-1/0),x=n.temporalBlend>0&&!!n.temporalHistory,L=x?new Float32Array(i*l*3).fill(NaN):null,a=u.direction,w=Math.hypot(a[0],a[1],a[2])||1,g=a[0]/w,_=a[1]/w,H=a[2]/w,F=u.intensity??1,z=p.intensity??.4,q=Fe(u.color??"#ffffff"),B=Fe(p.color??"#ffffff"),U=d&&h>0?Ln(c,h):null,k=new Map,ie=n.textureSamplers??null,D=n.shadow,K=D!=null&&f.length>0?Gn(c,f,g,_,H):null,se=D?.opacity??.25,J=D?.lift??.05,Q=D?.color??"#000000",le=K?Fe(Q):[0,0,0],I=globalThis.__glyphPerfDetail,Ue=I?performance.now():0,be=[],ee=n.shadeCache??null,te=-1,we=(R,$,W,Y)=>{if(K===null||!Y)return null;let S=K,O=Be(R,S.right[0],S.right[1],S.right[2],S.up[0],S.up[1],S.up[2],S.dir[0],S.dir[1],S.dir[2],S.uMin,S.uMax,S.vMin,S.vMax),ne=Be($,S.right[0],S.right[1],S.right[2],S.up[0],S.up[1],S.up[2],S.dir[0],S.dir[1],S.dir[2],S.uMin,S.uMax,S.vMin,S.vMax),he=Be(W,S.right[0],S.right[1],S.right[2],S.up[0],S.up[1],S.up[2],S.dir[0],S.dir[1],S.dir[2],S.uMin,S.uMax,S.vMin,S.vMax);return{map:S,luA:O[0],lvA:O[1],ldA:O[2],luB:ne[0],lvB:ne[1],ldB:ne[2],luC:he[0],lvC:he[1],ldC:he[2],lift:J,opacity:se,shadowColorRgb:le,shadowColorHex:Q,litCache:k}};for(let R=0;R<c.length;R++){let $=c[R],W=$.vertices;if(W.length<3)continue;let Y=$.uvs,S=null;if(ie!==null&&Y&&Y.length>=W.length){let O=(0,nt.polygonTexture)($);O&&(S=ie.get(O)??null)}for(let O=0;O<W.length;O++)be[O]=G.project(W[O],i,l,o);for(let O=1;O<W.length-1;O++){te++;let ne=0,he=O,xe=O+1,ae=W[ne],me=W[he],Ae=W[xe],ue=be[ne],ve=be[he],Me=be[xe],gt=(ue[0]!==ue[0]?1:0)+(ve[0]!==ve[0]?1:0)+(Me[0]!==Me[0]?1:0);if(gt===3||gt===0&&!m&&(ve[0]-ue[0])*(Me[1]-ue[1])-(ve[1]-ue[1])*(Me[0]-ue[0])>0)continue;let _e,Pe,ze,De=null;if(ee!==null&&ee.iA[te]!==void 0)_e=ee.iA[te],Pe=ee.iB[te],ze=ee.iC[te],De=ee.lit[te];else{let j=me[0]-ae[0],fe=me[1]-ae[1],Se=me[2]-ae[2],ye=Ae[0]-ae[0],Ze=Ae[1]-ae[1],Je=Ae[2]-ae[2],Qe=fe*Je-Se*Ze,Ye=Se*ye-j*Je,Z=j*Ze-fe*ye,X=Math.hypot(Qe,Ye,Z)||1,re=Qe/X,ge=Ye/X,ce=Z/X,de,He,bt,vt,Et,wt,xt,At,St;if(U){let Ve=U[R],Ge=Ve[ne],Re=Ve[he],Xe=Ve[xe];de=Ge[0],He=Ge[1],bt=Ge[2],vt=Re[0],Et=Re[1],wt=Re[2],xt=Xe[0],At=Xe[1],St=Xe[2]}else de=vt=xt=re,He=Et=At=ge,bt=wt=St=ce;let It=de*g+He*_+bt*H,Rt=vt*g+Et*_+wt*H,Bt=xt*g+At*_+St*H,rn=m?Math.abs(It):Math.max(0,-It),on=m?Math.abs(Rt):Math.max(0,-Rt),sn=m?Math.abs(Bt):Math.max(0,-Bt);if(_e=Math.min(1,z+rn*F),Pe=Math.min(1,z+on*F),ze=Math.min(1,z+sn*F),P){let Ve=(_e+Pe+ze)/3,Ge=Math.max(0,Ve-z),Re=$.color??"#ffffff",Xe=Ge*255|0,kt=`${Re}:${Xe}`,et=k.get(kt);if(et===void 0){let Ct=Fe(Re),ln=z*B[0]/255+Ge*q[0]/255,an=z*B[1]/255+Ge*q[1]/255,cn=z*B[2]/255+Ge*q[2]/255,un=Math.min(255,Ct[0]*ln),dn=Math.min(255,Ct[1]*an),pn=Math.min(255,Ct[2]*cn);et=`#${oe(un)}${oe(dn)}${oe(pn)}`,k.set(kt,et)}De=et}ee!==null&&(ee.iA[te]=_e,ee.iB[te]=Pe,ee.iC[te]=ze,ee.lit[te]=De)}let Ft=v[R]??!1,Ie=1+(C?.[R]??0),Ot=null;if(S!==null&&Y){let j=Y[ne],fe=Y[he],Se=Y[xe],ye=Math.max(0,(_e+Pe+ze)/3-z);Ot={sampler:S,ua:j[0],va:j[1],ub:fe[0],vb:fe[1],uc:Se[0],vc:Se[1],tintR:z*B[0]/255+ye*q[0]/255,tintG:z*B[1]/255+ye*q[1]/255,tintB:z*B[2]/255+ye*q[2]/255}}if(gt===0)Wt(ue[0],ue[1],(ue[3]??ue[2])*Ie,_e,ve[0],ve[1],(ve[3]??ve[2])*Ie,Pe,Me[0],Me[1],(Me[3]??Me[2])*Ie,ze,M,b,De,A,y,E,i,l,we(ae,me,Ae,Ft),m,ae,me,Ae,L,T,Ot);else{let j=[],fe=[],Se=[ae,me,Ae],ye=[_e,Pe,ze],Ze=G.eyeDepth(ae),Je=G.eyeDepth(me),Qe=G.eyeDepth(Ae),Ye=[Ze,Je,Qe];for(let Z=0;Z<3;Z++){let X=(Z+1)%3,re=Ye[Z],ge=Ye[X];if(re>0&&(j.push(Se[Z]),fe.push(ye[Z])),re>0!=ge>0){let ce=re/(re-ge),de=Se[Z],He=Se[X];j.push([de[0]+ce*(He[0]-de[0]),de[1]+ce*(He[1]-de[1]),de[2]+ce*(He[2]-de[2])]),fe.push(ye[Z]+ce*(ye[X]-ye[Z]))}}if(j.length>=3){let Z=j.map(X=>G.project(X,i,l,o));for(let X=1;X<j.length-1;X++){let re=Z[0],ge=Z[X],ce=Z[X+1],de=(ge[0]-re[0])*(ce[1]-re[1])-(ge[1]-re[1])*(ce[0]-re[0]);!m&&de>0||Wt(re[0],re[1],(re[3]??re[2])*Ie,fe[0],ge[0],ge[1],(ge[3]??ge[2])*Ie,fe[X],ce[0],ce[1],(ce[3]??ce[2])*Ie,fe[X+1],M,b,De,A,y,E,i,l,we(j[0],j[X],j[X+1],Ft),m,j[0],j[X],j[X+1],L,T,null)}}}}}I&&(I.loop??(I.loop=[])).push(performance.now()-Ue);let Ht=I?performance.now():0,Oe=A,Ce=y,Ke=L;if(r>1){let R=Sn(A,y,E,L,t,e,r,M);Oe=R.glyphBuf,Ce=R.colorBuf,Ke=R.worldPos}x&&An(Oe,Ce,Ke,t,e,o,M,n.temporalBlend,n.temporalHistory,s);let yt=Tn(Oe,Ce,t,e);return I&&(I.string??(I.string=[])).push(performance.now()-Ht),yt}function An(n,t,e,o,r,i,l,s,c,u){let p=o*r,d=l.length-1,h=new Map;for(let M=0;M<l.length;M++)h.set(l[M],M);let m=c.cam;(c.cols!==o||c.rows!==r||c.idx.length!==p)&&(c.cols=o,c.rows=r,c.idx=new Float32Array(p),c.r=new Float32Array(p),c.g=new Float32Array(p),c.b=new Float32Array(p),m=null);let f=null;if(m){let M=Le({rotX:m.rotX,rotY:m.rotY,distance:m.distance,perspective:m.perspective,zoom:m.zoom,stretch:m.stretch});M.target=m.target,f=b=>M.project(b,o,r,i)}let v=new Float32Array(p),C=new Float32Array(p),T=new Float32Array(p),G=new Float32Array(p);for(let M=0;M<r;M++)for(let b=0;b<o;b++){let A=M*o+b,P=h.get(n[A])??0,y=0,E=0,x=0,L=t?t[A]:null;if(L){let D=Fe(L);y=D[0],E=D[1],x=D[2]}let a=0,w=0,g=0,_=0,H=0,F=e[A*3];if(f&&F===F){let D=f([F,e[A*3+1],e[A*3+2]]),K=Math.round(D[0]),se=Math.round(D[1]);if(D[0]===D[0]&&K>=0&&K<o&&se>=0&&se<r){let J=se*o+K;w=c.idx[J],g=c.r[J],_=c.g[J],H=c.b[J],a=s}}let z=1-a,q=z*P+a*w,B=z*y+a*g,U=z*E+a*_,k=z*x+a*H;v[A]=q,C[A]=B,T[A]=U,G[A]=k;let ie=Math.round(q);ie<0?ie=0:ie>d&&(ie=d),n[A]=l[ie],t&&(t[A]=ie===0?null:`#${oe(B)}${oe(U)}${oe(k)}`)}c.idx=v,c.r=C,c.g=T,c.b=G,c.cam={rotX:u.rotX,rotY:u.rotY,target:[u.target[0],u.target[1],u.target[2]],zoom:u.zoom,perspective:u.perspective,distance:u.distance,stretch:u.stretch}}function Sn(n,t,e,o,r,i,l,s){let c=new Map;for(let v=0;v<s.length;v++)c.set(s[v],v);let u=s.length-1,p=r*l,d=new Array(r*i).fill(" "),h=t?new Array(r*i).fill(null):null,m=o?new Float32Array(r*i*3).fill(NaN):null,f=1/(l*l);for(let v=0;v<i;v++)for(let C=0;C<r;C++){let T=0,G=0,M=0,b=0,A=0,P=0,y=0,E=0;for(let a=0;a<l;a++){let w=(v*l+a)*p+C*l;for(let g=0;g<l;g++){let _=w+g;if(e[_]!==-1/0){if(T+=c.get(n[_])??0,G++,h){let H=t[_];if(H){let F=Fe(H);M+=F[0],b+=F[1],A+=F[2]}}m&&(P+=o[_*3],y+=o[_*3+1],E+=o[_*3+2])}}}let x=v*r+C;if(G===0)continue;let L=Math.round(T*f);L<0?L=0:L>u&&(L=u),d[x]=s[L],h&&(h[x]=`#${oe(M/G)}${oe(b/G)}${oe(A/G)}`),m&&(m[x*3]=P/G,m[x*3+1]=y/G,m[x*3+2]=E/G)}return{glyphBuf:d,colorBuf:h,worldPos:m}}var Cn=new Float64Array([(0+.5)/16,(8+.5)/16,(2+.5)/16,(10+.5)/16,(12+.5)/16,(4+.5)/16,(14+.5)/16,(6+.5)/16,(3+.5)/16,(11+.5)/16,(1+.5)/16,(9+.5)/16,(15+.5)/16,(7+.5)/16,(13+.5)/16,(5+.5)/16]),Ee=256;function Be(n,t,e,o,r,i,l,s,c,u,p,d,h,m){let f=t*n[0]+e*n[1]+o*n[2],v=r*n[0]+i*n[1]+l*n[2],C=-(s*n[0]+c*n[1]+u*n[2]),T=(f-p)/(d-p)*(Ee-1),G=(v-h)/(m-h)*(Ee-1);return[T,G,C]}function Mn(n,t,e,o){let r=t[0],i=t[1],l=t[2],s=e[0],c=e[1],u=e[2],p=o[0],d=o[1],h=o[2],m=(s-r)*(d-i)-(c-i)*(p-r);if(m===0)return;let f=1/m,v=r<s?r:s;p<v&&(v=p);let C=r>s?r:s;p>C&&(C=p);let T=i<c?i:c;d<T&&(T=d);let G=i>c?i:c;d>G&&(G=d);let M=Math.max(0,Math.ceil(v)),b=Math.min(Ee-1,Math.floor(C)),A=Math.max(0,Math.ceil(T)),P=Math.min(Ee-1,Math.floor(G));if(M>b||A>P)return;let y=m>0;for(let E=A;E<=P;E++)for(let x=M;x<=b;x++){let L=x,a=E,w=(s-L)*(d-a)-(c-a)*(p-L),g=(p-L)*(i-a)-(d-a)*(r-L),_=(r-L)*(c-a)-(i-a)*(s-L);if(y?w<0||g<0||_<0:w>0||g>0||_>0)continue;let H=(w*l+g*u+_*h)*f,F=E*Ee+x;H>n[F]&&(n[F]=H)}}function Gn(n,t,e,o,r){let i,l,s;Math.abs(e)<.9?(i=0,l=r,s=-o):(i=-r,l=0,s=e);let c=Math.hypot(i,l,s);i/=c,l/=c,s/=c;let u=l*r-s*o,p=s*e-i*r,d=i*o-l*e,h=1/0,m=-1/0,f=1/0,v=-1/0,C=!1;for(let b=0;b<n.length;b++)if(t[b]){C=!0;for(let A of n[b].vertices){let P=i*A[0]+l*A[1]+s*A[2],y=u*A[0]+p*A[1]+d*A[2];P<h&&(h=P),P>m&&(m=P),y<f&&(f=y),y>v&&(v=y)}}if(!C)return null;let T=(m-h)*.05+.01,G=(v-f)*.05+.01;h-=T,m+=T,f-=G,v+=G;let M=new Float64Array(Ee*Ee).fill(-1/0);for(let b=0;b<n.length;b++){if(!t[b])continue;let A=n[b].vertices;if(!(A.length<3))for(let P=1;P<A.length-1;P++){let y=A[0],E=A[P],x=A[P+1],L=Be(y,i,l,s,u,p,d,e,o,r,h,m,f,v),a=Be(E,i,l,s,u,p,d,e,o,r,h,m,f,v),w=Be(x,i,l,s,u,p,d,e,o,r,h,m,f,v);Mn(M,L,a,w)}}return{buf:M,right:[i,l,s],up:[u,p,d],dir:[e,o,r],uMin:h,uMax:m,vMin:f,vMax:v}}function Wt(n,t,e,o,r,i,l,s,c,u,p,d,h,m,f,v,C,T,G,M,b,A,P,y,E,x,L,a){let w=(r-n)*(u-t)-(i-t)*(c-n);if(w===0||!A&&w>0)return;let g=1/w,_=w>0,H=n<r?n:r;c<H&&(H=c);let F=n>r?n:r;c>F&&(F=c);let z=t<i?t:i;u<z&&(z=u);let q=t>i?t:i;u>q&&(q=u);let B=Math.max(0,Math.ceil(H)),U=Math.min(G-1,Math.floor(F)),k=Math.max(0,Math.ceil(z)),ie=Math.min(M-1,Math.floor(q));if(!(B>U||k>ie))for(let D=k;D<=ie;D++){let K=D;for(let se=B;se<=U;se++){let J=se,Q=(r-J)*(u-K)-(i-K)*(c-J),le=(c-J)*(t-K)-(u-K)*(n-J),I=(n-J)*(i-K)-(t-K)*(r-J);if(_?Q<0||le<0||I<0:Q>0||le>0||I>0)continue;let Ue=(Q*e+le*l+I*p)*g,be=D*G+se,ee=T[be];if(Ue>(ee>0?ee*(1-L):ee)){if(T[be]=Ue,x!==null){let $=be*3;x[$]=(Q*P[0]+le*y[0]+I*E[0])*g,x[$+1]=(Q*P[1]+le*y[1]+I*E[1])*g,x[$+2]=(Q*P[2]+le*y[2]+I*E[2])*g}let te=(Q*o+le*s+I*d)*g,we=f;if(a!==null){let $=(Q*a.ua+le*a.ub+I*a.uc)*g,W=(Q*a.va+le*a.vb+I*a.vc)*g,Y=(0,nt.sampleTexel)(a.sampler,$,W);if(Y!==null&&Y.a>8){let S=Y.r*a.tintR|0;S>255&&(S=255);let O=Y.g*a.tintG|0;O>255&&(O=255);let ne=Y.b*a.tintB|0;ne>255&&(ne=255),we=`#${oe(S)}${oe(O)}${oe(ne)}`,te*=(.299*Y.r+.587*Y.g+.114*Y.b)/255}}let Oe=(te<0?0:te>1?1:te)*m,Ce=Oe|0,Ke=Oe-Ce,yt=Cn[(D&3)*4+(se&3)],R=Ke>yt&&Ce<m?Ce+1:Ce;if(R>m&&(R=m),b!==null){let $=(Q*b.luA+le*b.luB+I*b.luC)*g,W=(Q*b.lvA+le*b.lvB+I*b.lvC)*g,Y=(Q*b.ldA+le*b.ldB+I*b.ldC)*g,S=$|0,O=W|0;if(S>=0&&S<Ee&&O>=0&&O<Ee){let ne=b.map.buf[O*Ee+S];if(ne>-1/0&&Y+b.lift<ne&&(R=Math.max(0,R-Math.round(b.opacity*m)),we!==null)){let he=`shadow:${we}:${R}`,xe=b.litCache.get(he);if(xe===void 0){let ae=Fe(we),me=b.shadowColorRgb,Ae=Math.round(ae[0]*(1-b.opacity)+me[0]*b.opacity),ue=Math.round(ae[1]*(1-b.opacity)+me[1]*b.opacity),ve=Math.round(ae[2]*(1-b.opacity)+me[2]*b.opacity);xe=`#${oe(Ae)}${oe(ue)}${oe(ve)}`,b.litCache.set(he,xe)}we=xe}}}v[be]=h[R],C&&(C[be]=we)}}}}function Ln(n,t){let e=n.length,o=new Array(e);for(let s=0;s<e;s++){let c=n[s].vertices;if(c.length<3){o[s]=[0,0,0];continue}let u=c[0],p=c[1],d=c[2],h=p[0]-u[0],m=p[1]-u[1],f=p[2]-u[2],v=d[0]-u[0],C=d[1]-u[1],T=d[2]-u[2],G=m*T-f*C,M=f*v-h*T,b=h*C-m*v,A=Math.hypot(G,M,b)||1;o[s]=[G/A,M/A,b/A]}let r=new Map;for(let s=0;s<e;s++){let c=n[s].vertices;for(let u=0;u<c.length;u++){let p=c[u],d=`${p[0]},${p[1]},${p[2]}`,h=r.get(d);h||(h=[],r.set(d,h)),(h.length===0||h[h.length-1]!==s)&&h.push(s)}}let i=Math.cos(t*Math.PI/180),l=new Array(e);for(let s=0;s<e;s++){let c=n[s].vertices,u=o[s],p=new Array(c.length);for(let d=0;d<c.length;d++){let h=c[d],m=r.get(`${h[0]},${h[1]},${h[2]}`),f=0,v=0,C=0;for(let G=0;G<m.length;G++){let M=m[G],b=o[M];u[0]*b[0]+u[1]*b[1]+u[2]*b[2]>=i&&(f+=b[0],v+=b[1],C+=b[2])}let T=Math.hypot(f,v,C)||1;p[d]=[f/T,v/T,C/T]}l[s]=p}return l}function Tn(n,t,e,o){let r=[],i=null,l="",s=()=>{l&&(i!==null?r.push(`<span style="color:${i}">${l}</span>`):r.push(l),l="")};for(let c=0;c<o;c++){for(let u=0;u<e;u++){let p=c*e+u,d=n[p],h=t&&d!==" "?t[p]??null:null;h!==i&&(s(),i=h),l+=d}s(),i=null,c<o-1&&r.push(`
|
|
2
|
+
`)}return r.join("")}function qt(n,t,e="y"){let{camera:o}=n,r=e==="y"?o.rotY:o.rotX,i=new Array(t);for(let l=0;l<t;l++){let s=r+l/t*Math.PI*2;e==="y"?o.rotY=s:o.rotX=s,i[l]=qe(n)}return e==="y"?o.rotY=r:o.rotX=r,i}function _n(n,t,e,o,r,i,l,s,c,u){let p=Math.abs(r-e),d=-Math.abs(i-o),h=e<r?1:-1,m=o<i?1:-1,f=p+d;for(;;){if(e>=0&&e<c&&o>=0&&o<u){let C=o*c+e;n[C]<l&&(n[C]=l,t&&(t[C]=s))}if(e===r&&o===i)break;let v=2*f;v>=d&&(f+=d,e+=h),v<=p&&(f+=p,o+=m)}}function Pn(n,t,e,o,r){let i=[],l=null,s="",c=()=>{s&&(l!==null?i.push(`<span style="color:${l}">${s}</span>`):i.push(s),s="")};for(let u=0;u<o;u++){for(let p=0;p<e;p++){let d=u*e+p,h=n[d],m,f;h===0?(m=" ",f=null):(m=h===1?r.thin[Math.random()*r.thin.length|0]:h===2?r.normal[Math.random()*r.normal.length|0]:r.core[Math.random()*r.core.length|0],f=t?t[d]??null:null),f!==l&&(c(),l=f),s+=m}c(),l=null,u<o-1&&i.push(`
|
|
3
|
+
`)}return i.join("")}var jt=new Map;function Fe(n){let t=jt.get(n);if(t!==void 0)return t;let e=zn(n);return jt.set(n,e),e}function zn(n){let t=n.startsWith("#")?n.slice(1):n;if(t.length===3){let e=parseInt(t[0]+t[0],16),o=parseInt(t[1]+t[1],16),r=parseInt(t[2]+t[2],16);return[e||0,o||0,r||0]}if(t.length===6){let e=parseInt(t.slice(0,2),16),o=parseInt(t.slice(2,4),16),r=parseInt(t.slice(4,6),16);return[e||0,o||0,r||0]}return[255,255,255]}function oe(n){let t=Math.max(0,Math.min(255,n|0)).toString(16);return t.length===1?"0"+t:t}var Ut="glyph-styles";function rt(n){let t=n??(typeof document<"u"?document:void 0);if(!t||t.getElementById(Ut))return;let e=t.createElement("style");e.id=Ut,e.textContent=Hn,t.head.appendChild(e)}var Hn=`
|
|
4
4
|
/* \u2500\u2500 React / Vue host wrapper \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
|
|
5
5
|
|
|
6
6
|
.glyph-host {
|
|
@@ -59,5 +59,5 @@
|
|
|
59
59
|
the content from the 3D vertex being labelled. */
|
|
60
60
|
transform: translate(-50%, -50%);
|
|
61
61
|
}
|
|
62
|
-
`;function
|
|
63
|
-
`),m.style.cssText="position:absolute;visibility:hidden;font-family:inherit;font-size:inherit;line-height:inherit;white-space:pre;padding:0;margin:0",r.appendChild(m);let b=m.getBoundingClientRect();return m.remove(),{w:b.width||8,h:b.height?b.height/20:16}}function v(){let a=t.clientWidth,m=t.clientHeight;if(!a||!m)return;let b=P(),C=Math.max(20,Math.floor(a/b.w)),p=Math.max(8,Math.floor(m/b.h)),x=b.h/b.w,S=!1;e.cols!==C&&(e.cols=C,S=!0),e.rows!==p&&(e.rows=p,S=!0),Math.abs(e.cellAspect-x)>.01&&(e.cellAspect=x,S=!0),S&&c()}let E=null;e.autoSize&&typeof ResizeObserver<"u"&&(E=new ResizeObserver(()=>v()),E.observe(t),v());function L(){E&&(E.disconnect(),E=null),l.clear(),t.contains(o)&&t.removeChild(o)}return c(),{get host(){return t},get output(){return r},get camera(){return e.camera},add:y,addHotspot:w,rerender:M,setOptions:_,getOptions:G,fit:v,destroy:L}}function Oe(t,n={}){let e=t.host,o=n.drag??!0,r=n.wheel??!0,s=Mt(n.invert),l=n.clampPitch??!0,i=n.animate??!1,u=!1,d=!1,h=null,c=null,f=null,g={x:0,y:0},y=t.camera;function w(m){if(!(!o||u)&&f===null&&m.isPrimary!==!1){m.preventDefault(),f=m.pointerId,g={x:m.clientX,y:m.clientY},e.style.cursor="grabbing";try{m.target.setPointerCapture(m.pointerId)}catch{}i&&i.pauseOnInteraction!==!1&&(d=!0)}}function M(m){if(f===null||m.pointerId!==f||!o||u)return;m.preventDefault();let b=m.clientX-g.x,C=m.clientY-g.y;g={x:m.clientX,y:m.clientY};let p=s,x=1/4;y.rotY=y.rotY-b*x*p;let S=y.rotX-C*x*p;y.rotX=l?Math.max(-90,Math.min(90,S)):S,t.rerender()}function _(m){if(f===m.pointerId){f=null,e.style.cursor=o&&!u?"grab":"";try{m.target.releasePointerCapture(m.pointerId)}catch{}i&&(d=!1)}}function G(m){if(!r||u)return;m.preventDefault();let b=m.deltaY*.001;y.zoom=Math.max(.1,Math.min(500,y.zoom*(1-b))),t.rerender()}function P(m){if(!(u||!i)){if(!d){let b=c!==null?Math.min(m-c,50):16.67,C=typeof i=="object"&&i.speed?i.speed:.3,p=typeof i=="object"&&i.axis?i.axis:"y",x=C*(b/16.67);p==="y"?y.rotY=y.rotY+x:y.rotX=y.rotX+x,t.rerender()}c=m,h=requestAnimationFrame(P)}}function v(){h===null&&typeof requestAnimationFrame<"u"&&i&&(h=requestAnimationFrame(P))}function E(){h!==null&&(typeof cancelAnimationFrame<"u"&&cancelAnimationFrame(h),h=null),c=null}function L(){e.addEventListener("pointerdown",w),e.addEventListener("pointermove",M),e.addEventListener("pointerup",_),e.addEventListener("pointercancel",_),e.addEventListener("wheel",G,{passive:!1}),e.style.cursor=o?"grab":"",e.style.touchAction="none",e.style.userSelect="none"}function a(){e.removeEventListener("pointerdown",w),e.removeEventListener("pointermove",M),e.removeEventListener("pointerup",_),e.removeEventListener("pointercancel",_),e.removeEventListener("wheel",G),e.style.cursor="",e.style.touchAction="",e.style.userSelect=""}return L(),v(),{update(m){let b=!!i;o=m.drag??o,r=m.wheel??r,s=Mt(m.invert),m.clampPitch!==void 0&&(l=m.clampPitch),i=m.animate??i,!u&&f===null&&(e.style.cursor=o?"grab":"");let C=!!i;b&&!C?E():!b&&C&&v()},pause(){u||(u=!0,a(),E(),f=null,d=!1)},resume(){u&&(u=!1,L(),v())},destroy(){u||a(),E(),u=!0}}}function Mt(t){return t===void 0||t===!1?1:t===!0?-1:t}function Ie(t,n={}){let e=t.host,o=n.drag??!0,r=n.wheel??!0,s=xt(n.invert),l=n.animate??!1,i=!1,u=!1,d=null,h=null,c=null,f={x:0,y:0},g=!1,y=t.camera,w=1/4,M=.02;function _(p){if(!(!o||i)&&c===null&&p.isPrimary!==!1){p.preventDefault(),c=p.pointerId,f={x:p.clientX,y:p.clientY},g=p.button===2,e.style.cursor="grabbing";try{p.target.setPointerCapture(p.pointerId)}catch{}l&&l.pauseOnInteraction!==!1&&(u=!0)}}function G(p){if(c===null||p.pointerId!==c||!o||i)return;p.preventDefault();let x=p.clientX-f.x,S=p.clientY-f.y;f={x:p.clientX,y:p.clientY};let T=s;if(g||p.shiftKey)y.rotY=y.rotY-x*w*T,y.rotX=Math.max(-90,Math.min(90,y.rotX+S*w*T));else{let H=y.target;y.target=[H[0]-x*M/y.zoom,H[1]-S*M/y.zoom,H[2]]}t.rerender()}function P(p){if(c===p.pointerId){c=null,g=!1,e.style.cursor=o&&!i?"grab":"";try{p.target.releasePointerCapture(p.pointerId)}catch{}l&&(u=!1)}}function v(p){p.preventDefault()}function E(p){if(!r||i)return;p.preventDefault();let x=p.deltaY*.001;y.zoom=Math.max(.1,Math.min(500,y.zoom*(1-x))),t.rerender()}function L(p){if(!(i||!l)){if(!u){let x=h!==null?Math.min(p-h,50):16.67,S=typeof l=="object"&&l.speed?l.speed:.3,T=typeof l=="object"&&l.axis?l.axis:"y",H=S*(x/16.67);T==="y"?y.rotY=y.rotY+H:y.rotX=y.rotX+H,t.rerender()}h=p,d=requestAnimationFrame(L)}}function a(){d===null&&typeof requestAnimationFrame<"u"&&l&&(d=requestAnimationFrame(L))}function m(){d!==null&&(typeof cancelAnimationFrame<"u"&&cancelAnimationFrame(d),d=null),h=null}function b(){e.addEventListener("pointerdown",_),e.addEventListener("pointermove",G),e.addEventListener("pointerup",P),e.addEventListener("pointercancel",P),e.addEventListener("contextmenu",v),e.addEventListener("wheel",E,{passive:!1}),e.style.cursor=o?"grab":"",e.style.touchAction="none",e.style.userSelect="none"}function C(){e.removeEventListener("pointerdown",_),e.removeEventListener("pointermove",G),e.removeEventListener("pointerup",P),e.removeEventListener("pointercancel",P),e.removeEventListener("contextmenu",v),e.removeEventListener("wheel",E),e.style.cursor="",e.style.touchAction="",e.style.userSelect=""}return b(),a(),{update(p){let x=!!l;o=p.drag??o,r=p.wheel??r,s=xt(p.invert),l=p.animate??l,!i&&c===null&&(e.style.cursor=o?"grab":"");let S=!!l;x&&!S?m():!x&&S&&a()},pause(){i||(i=!0,C(),m(),c=null,u=!1)},resume(){i&&(i=!1,b(),a())},destroy(){i||C(),m(),i=!0}}}function xt(t){return t===void 0||t===!1?1:t===!0?-1:t}function Gt(t,n={}){if(t.camera.kind!=="perspective")throw new Error("glyphcss: GlyphFirstPersonControls requires a perspective camera. Use <GlyphPerspectiveCamera> (not <GlyphOrthographicCamera> / <GlyphCamera>).");t.camera.eyeMode=!0;let e=t.host,o=n.drag??!0,r=n.keyboard??!0,s=n.moveSpeed??.05,l=n.lookSpeed??.15,i=At(n.invert),u=!1,d=null,h={x:0,y:0},c=new Set,f=null,g=t.camera;function y(a){if(!(!o||u)&&d===null){a.preventDefault(),d=a.pointerId,h={x:a.clientX,y:a.clientY};try{a.target.setPointerCapture(a.pointerId)}catch{}}}function w(a){if(d===null||a.pointerId!==d||!o||u)return;a.preventDefault();let m=a.clientX-h.x,b=a.clientY-h.y;h={x:a.clientX,y:a.clientY},g.rotY=g.rotY-m*l*i,g.rotX=Math.max(-90,Math.min(90,g.rotX+b*l*i)),t.rerender()}function M(a){if(d===a.pointerId){d=null;try{a.target.releasePointerCapture(a.pointerId)}catch{}}}function _(a){r&&!u&&c.add(a.key.toLowerCase())}function G(a){c.delete(a.key.toLowerCase())}function P(){if(u||!r||c.size===0)return;let a=g.target,m=g.rotY*Math.PI/180,b=Math.cos(m),C=Math.sin(m),p=!1;(c.has("w")||c.has("arrowup"))&&(g.target=[a[0]-C*s,a[1]-b*s,a[2]],p=!0),(c.has("s")||c.has("arrowdown"))&&(g.target=[a[0]+C*s,a[1]+b*s,a[2]],p=!0),(c.has("a")||c.has("arrowleft"))&&(g.target=[a[0]-b*s,a[1]+C*s,a[2]],p=!0),(c.has("d")||c.has("arrowright"))&&(g.target=[a[0]+b*s,a[1]-C*s,a[2]],p=!0),p&&t.rerender()}function v(){u||(P(),f=requestAnimationFrame(v))}function E(){e.addEventListener("pointerdown",y),e.addEventListener("pointermove",w),e.addEventListener("pointerup",M),e.addEventListener("pointercancel",M),r&&(e.ownerDocument?.addEventListener("keydown",_),e.ownerDocument?.addEventListener("keyup",G)),e.style.touchAction="none",e.style.userSelect="none",typeof requestAnimationFrame<"u"&&(f=requestAnimationFrame(v))}function L(){e.removeEventListener("pointerdown",y),e.removeEventListener("pointermove",w),e.removeEventListener("pointerup",M),e.removeEventListener("pointercancel",M),e.ownerDocument?.removeEventListener("keydown",_),e.ownerDocument?.removeEventListener("keyup",G),e.style.touchAction="",e.style.userSelect="",f!==null&&(typeof cancelAnimationFrame<"u"&&cancelAnimationFrame(f),f=null),c.clear(),t.camera.eyeMode=!1}return E(),{update(a){o=a.drag??o,r=a.keyboard??r,s=a.moveSpeed??s,l=a.lookSpeed??l,i=At(a.invert)},pause(){u||(u=!0,L(),d=null)},resume(){u&&(u=!1,E())},destroy(){u||L(),u=!0}}}function At(t){return t===void 0||t===!1?1:t===!0?-1:t}function St(t,n){let e=t.querySelector(`[data-glyph-mesh-id="${CSS.escape(n)}"]`);return e instanceof HTMLElement?e:null}function it(t,n,e){let o=t.getBoundingClientRect();return o.width<=0||o.height<=0?!1:n>=o.left&&n<=o.right&&e>=o.top&&e<=o.bottom}function Lt(t,n,e){let o=(t instanceof Document,t),r=Array.from(o.querySelectorAll(".glyph-mesh"));for(let s of r)if(it(s,n,e))return s;return null}var cn=typeof HTMLElement<"u"?HTMLElement:class{},un=["mode","glyph-palette","use-colors","cols","rows","cell-aspect","directional-direction","directional-intensity","ambient-intensity","auto-size","shadow","shadow-color","shadow-opacity","shadow-lift","shadow-max-extend"];function re(t){if(t==null)return;let n=parseFloat(t);return Number.isFinite(n)?n:void 0}function dn(t){if(t==="wireframe"||t==="solid"||t==="voxel")return t}function hn(t){if(t!==null){if(t==="false")return!1;if(t==="true"||t==="")return!0}}var Re=class extends cn{constructor(){super(...arguments);this._scene=null}static get observedAttributes(){return[...un]}getScene(){return this._scene}_readOptions(){let e={},o=dn(this.getAttribute("mode"));o!==void 0&&(e.mode=o);let r=this.getAttribute("glyph-palette");r&&(e.glyphPalette=r);let s=hn(this.getAttribute("use-colors"));s!==void 0&&(e.useColors=s);let l=re(this.getAttribute("cols"));l!==void 0&&(e.cols=l);let i=re(this.getAttribute("rows"));i!==void 0&&(e.rows=i);let u=re(this.getAttribute("cell-aspect"));u!==void 0&&(e.cellAspect=u);let d=re(this.getAttribute("directional-intensity"));d!==void 0&&(e.directionalLight={direction:[-.5,-.7,-.5],intensity:d});let h=re(this.getAttribute("ambient-intensity"));if(h!==void 0&&(e.ambientLight={intensity:h}),this.hasAttribute("auto-size")&&(e.autoSize=!0),this.hasAttribute("shadow")){let c={color:"#000000",opacity:.25,lift:.05,maxExtend:2e3},f=this.getAttribute("shadow-color");f&&(c.color=f);let g=re(this.getAttribute("shadow-opacity"));g!==void 0&&(c.opacity=g);let y=re(this.getAttribute("shadow-lift"));y!==void 0&&(c.lift=y);let w=re(this.getAttribute("shadow-max-extend"));w!==void 0&&(c.maxExtend=w),e.shadow=c}return e}_findCameraAncestor(){let e=this.parentElement;for(;e;){let o=e.tagName.toLowerCase();if(o==="glyph-perspective-camera"||o==="glyph-orthographic-camera"||o==="glyph-camera")return e;e=e.parentElement}return null}_initScene(e){let o=typeof e.getCamera=="function"?e.getCamera():void 0,r=this._readOptions();o&&(r.camera=o),this._scene=ze(this,r),this.dispatchEvent(new CustomEvent("glyphcss:scene-ready",{bubbles:!1}))}connectedCallback(){if(this._scene)return;let e=this._findCameraAncestor();if(!e)throw new Error("glyphcss: <glyph-scene> must be placed inside a <glyph-camera>, <glyph-perspective-camera>, or <glyph-orthographic-camera>.");if((typeof e.getCamera=="function"?e.getCamera():null)!==null)this._initScene(e);else{let r=()=>{e.removeEventListener("glyph:camera-ready",r),this._scene||this._initScene(e)};e.addEventListener("glyph:camera-ready",r)}}rerender(){this._scene?.rerender()}disconnectedCallback(){this._scene&&(this._scene.destroy(),this._scene=null)}attributeChangedCallback(e,o,r){o!==r&&this._scene&&this._scene.setOptions(this._readOptions())}};var ye=require("@glyphcss/core"),pn=typeof HTMLElement<"u"?HTMLElement:class{},mn=["src","geometry","size","color","position","scale","rotation","normalize","cast-shadow","receive-shadow"];function fn(t){let n=(0,ye.computeSceneBbox)(t),e=(n.min[0]+n.max[0])/2,o=(n.min[1]+n.max[1])/2,r=(n.min[2]+n.max[2])/2,l=2/(Math.max(n.max[0]-n.min[0],n.max[1]-n.min[1],n.max[2]-n.min[2])||1);return t.map(i=>({...i,vertices:i.vertices.map(u=>[(u[0]-e)*l,(u[1]-o)*l,(u[2]-r)*l])}))}function st(t){if(!t)return;let n=t.split(",").map(e=>parseFloat(e.trim()));if(!(n.length!==3||n.some(e=>!Number.isFinite(e))))return[n[0],n[1],n[2]]}function yn(t){if(t){if(!t.includes(",")){let n=parseFloat(t);return Number.isFinite(n)?n:void 0}return st(t)}}function gn(t){return t.closest("glyph-scene")??null}var ke=class extends pn{constructor(){super(...arguments);this._handle=null;this._loadToken=0}static get observedAttributes(){return[...mn]}getMeshHandle(){return this._handle}connectedCallback(){this._maybeLoad()}disconnectedCallback(){this._tearDown()}attributeChangedCallback(e,o,r){if(o!==r){if(e==="src"||e==="geometry"||e==="size"||e==="color"){this._tearDown(),this._maybeLoad();return}this._handle&&this._handle.setTransform(this._readTransform())}}_readTransform(){return{position:st(this.getAttribute("position")),scale:yn(this.getAttribute("scale")),rotation:st(this.getAttribute("rotation")),castShadow:this.hasAttribute("cast-shadow"),receiveShadow:this.hasAttribute("receive-shadow")}}_tearDown(){if(this._loadToken+=1,this._handle){try{this._handle.dispose()}catch{}this._handle=null}}async _maybeLoad(){let e=this.getAttribute("src"),o=this.getAttribute("geometry"),r=gn(this);if(r){if(!r.getScene()){let s=()=>{r.removeEventListener("glyphcss:scene-ready",s),this._maybeLoad()};r.addEventListener("glyphcss:scene-ready",s);return}if(e){let s=++this._loadToken,l;try{l=await(0,ye.loadMesh)(e)}catch(h){this.dispatchEvent(new CustomEvent("glyphcss:error",{detail:h,bubbles:!0}));return}if(s!==this._loadToken){try{l.dispose()}catch{}return}let i=r.getScene();if(!i){try{l.dispose()}catch{}return}let d=this.hasAttribute("normalize")?fn(l.polygons):l.polygons;this._handle=i.add(d,this._readTransform()),this.dispatchEvent(new CustomEvent("glyphcss:loaded",{detail:{polygons:d},bubbles:!0}));return}if(o){let s=r.getScene();if(!s)return;let l=this.getAttribute("size"),i=l!==null?parseFloat(l):1,u=this.getAttribute("color")??void 0,d;try{d=(0,ye.resolveGeometry)(o,{size:Number.isFinite(i)?i:1,color:u})}catch(h){this.dispatchEvent(new CustomEvent("glyphcss:error",{detail:h,bubbles:!0}));return}this._handle=s.add(d,this._readTransform()),this.dispatchEvent(new CustomEvent("glyphcss:loaded",{detail:{polygons:d},bubbles:!0}))}}}};var bn=typeof HTMLElement<"u"?HTMLElement:class{};function vn(t){if(!t)return;let n=t.split(",").map(e=>parseFloat(e.trim()));if(!(n.length!==3||n.some(e=>!Number.isFinite(e))))return[n[0],n[1],n[2]]}function En(t){if(!t)return;let n=t.split(",").map(e=>parseFloat(e.trim()));if(!(n.length!==2||n.some(e=>!Number.isFinite(e))))return[n[0],n[1]]}function wn(t){return t.closest("glyph-scene")??null}var Fe=class extends bn{constructor(){super(...arguments);this._handle=null}static get observedAttributes(){return["at","size","hotspot-id"]}connectedCallback(){this._register()}disconnectedCallback(){this._handle&&this._unregister()}attributeChangedCallback(e,o,r){o!==r&&(this._handle&&this._unregister(),this._register())}_unregister(){if(!this._handle)return;let e=this._handle.el;for(;e.firstChild;)this.appendChild(e.firstChild);this._handle.remove(),this._handle=null}_register(){let e=vn(this.getAttribute("at"));if(!e)return;let o=wn(this);if(!o)return;if(!o.getScene()){let u=()=>{o.removeEventListener("glyphcss:scene-ready",u),this._register()};o.addEventListener("glyphcss:scene-ready",u);return}let r=o.getScene();if(!r)return;let s=this.getAttribute("hotspot-id")??this.getAttribute("id")??String(Math.random()),l=En(this.getAttribute("size"));this._handle=r.addHotspot({id:s,at:e,size:l},()=>this.dispatchEvent(new CustomEvent("glyphcss:hotspot-click",{detail:{id:s},bubbles:!0})));let i=this._handle.el;for(;this.firstChild;)i.appendChild(this.firstChild)}};var Cn=typeof HTMLElement<"u"?HTMLElement:class{};function U(t){if(t==null)return;let n=parseFloat(t);return Number.isFinite(n)?n:void 0}var Ye=class extends Cn{constructor(){super(...arguments);this._camera=null}static get observedAttributes(){return["rot-x","rot-y","distance","zoom","stretch"]}getCamera(){return this._camera}connectedCallback(){this._camera=pe({rotX:U(this.getAttribute("rot-x")),rotY:U(this.getAttribute("rot-y")),distance:U(this.getAttribute("distance")),zoom:U(this.getAttribute("zoom")),stretch:U(this.getAttribute("stretch"))}),this.dispatchEvent(new CustomEvent("glyph:camera-ready",{bubbles:!1}))}disconnectedCallback(){this._camera=null}attributeChangedCallback(e,o,r){if(o===r)return;let s=this._camera;if(!s)return;let l=U(this.getAttribute("rot-x")),i=U(this.getAttribute("rot-y")),u=U(this.getAttribute("distance")),d=U(this.getAttribute("zoom")),h=U(this.getAttribute("stretch")),c=!1;l!==void 0&&s.rotX!==l&&(s.rotX=l,c=!0),i!==void 0&&s.rotY!==i&&(s.rotY=i,c=!0),u!==void 0&&s.distance!==u&&(s.distance=u,c=!0),d!==void 0&&s.zoom!==d&&(s.zoom=d,c=!0),h!==void 0&&s.stretch!==h&&(s.stretch=h,c=!0),c&&this.querySelector("glyph-scene")?.rerender?.()}};var Mn=typeof HTMLElement<"u"?HTMLElement:class{};function ge(t){if(t==null)return;let n=parseFloat(t);return Number.isFinite(n)?n:void 0}var De=class extends Mn{constructor(){super(...arguments);this._camera=null}static get observedAttributes(){return["rot-x","rot-y","zoom"]}getCamera(){return this._camera}connectedCallback(){this._camera=Me({rotX:ge(this.getAttribute("rot-x")),rotY:ge(this.getAttribute("rot-y")),zoom:ge(this.getAttribute("zoom"))}),this.dispatchEvent(new CustomEvent("glyph:camera-ready",{bubbles:!1}))}disconnectedCallback(){this._camera=null}attributeChangedCallback(e,o,r){if(o===r)return;let s=this._camera;if(!s)return;let l=ge(this.getAttribute("rot-x")),i=ge(this.getAttribute("rot-y")),u=ge(this.getAttribute("zoom")),d=!1;l!==void 0&&s.rotX!==l&&(s.rotX=l,d=!0),i!==void 0&&s.rotY!==i&&(s.rotY=i,d=!0),u!==void 0&&s.zoom!==u&&(s.zoom=u,d=!0),d&&this.querySelector("glyph-scene")?.rerender?.()}};var xn=typeof HTMLElement<"u"?HTMLElement:class{};function An(t){if(t==null)return;let n=parseFloat(t);return Number.isFinite(n)?n:void 0}function Be(t){if(t!==null){if(t==="false")return!1;if(t==="true"||t==="")return!0}}function Gn(t){return t.closest("glyph-scene")??null}var Xe=class extends xn{constructor(){super(...arguments);this._controls=null}static get observedAttributes(){return["drag","wheel","invert","clamp-pitch","animate-speed","animate-axis"]}connectedCallback(){this._attach()}disconnectedCallback(){this._controls&&(this._controls.destroy(),this._controls=null)}attributeChangedCallback(e,o,r){o!==r&&this._controls?.update(this._readOptions())}_readOptions(){let e=Be(this.getAttribute("drag")),o=Be(this.getAttribute("wheel")),r=Be(this.getAttribute("invert")),s=Be(this.getAttribute("clamp-pitch")),l=An(this.getAttribute("animate-speed")),i=this.getAttribute("animate-axis")==="x"?"x":"y";return{...e!==void 0?{drag:e}:{},...o!==void 0?{wheel:o}:{},...r!==void 0?{invert:r}:{},...s!==void 0?{clampPitch:s}:{},...l!==void 0?{animate:{speed:l,axis:i}}:{}}}_attach(){if(this._controls)return;let e=Gn(this);if(!e)return;let o=e.getScene();if(!o){let r=()=>{e.removeEventListener("glyphcss:scene-ready",r),this._attach()};e.addEventListener("glyphcss:scene-ready",r);return}this._controls=Oe(o,this._readOptions())}};var Sn=typeof HTMLElement<"u"?HTMLElement:class{};function lt(t){if(t!==null){if(t==="false")return!1;if(t==="true"||t==="")return!0}}function Ln(t){return t.closest("glyph-scene")??null}var Ne=class extends Sn{constructor(){super(...arguments);this._controls=null}static get observedAttributes(){return["drag","wheel","invert"]}connectedCallback(){this._attach()}disconnectedCallback(){this._controls&&(this._controls.destroy(),this._controls=null)}attributeChangedCallback(e,o,r){o!==r&&this._controls?.update(this._readOptions())}_readOptions(){let e=lt(this.getAttribute("drag")),o=lt(this.getAttribute("wheel")),r=lt(this.getAttribute("invert"));return{...e!==void 0?{drag:e}:{},...o!==void 0?{wheel:o}:{},...r!==void 0?{invert:r}:{}}}_attach(){if(this._controls)return;let e=Ln(this);if(!e)return;let o=e.getScene();if(!o){let r=()=>{e.removeEventListener("glyphcss:scene-ready",r),this._attach()};e.addEventListener("glyphcss:scene-ready",r);return}this._controls=Ie(o,this._readOptions())}};O(z,require("@glyphcss/core"),module.exports);0&&(module.exports={DEFAULT_RAMP,GlyphHotspotElement,GlyphMapControlsElement,GlyphMeshElement,GlyphOrbitControlsElement,GlyphOrthographicCameraElement,GlyphPerspectiveCameraElement,GlyphSceneElement,SOLID_RAMP,WIREFRAME_GLYPHS,WIREFRAME_PALETTES,bakeFrames,buildRasterizeContext,createGlyphCamera,createGlyphFirstPersonControls,createGlyphMapControls,createGlyphOrbitControls,createGlyphOrthographicCamera,createGlyphPerspectiveCamera,createGlyphScene,findGlyphMeshHandle,findMeshUnderPoint,getWireframeGlyphs,injectGlyphBaseStyles,pointInMeshElement,projectHotspots,rasterize,...require("@glyphcss/core")});
|
|
62
|
+
`;function ot(n,t,e,o,r){return n.map(i=>{let[l,s,c]=t.project(i.at,e,o,r),u=c>-3&&l>=0&&l<e&&s>=0&&s<o;return{id:i.id,col:l,row:s,depth:c,visible:u}})}var Fn=1;function On(n,t){let{position:e,scale:o,rotation:r}=t;if(!e&&!o&&!r)return n;let[i,l,s]=e??[0,0,0],c=1,u=1,p=1;o!==void 0&&(typeof o=="number"?c=u=p=o:[c,u,p]=o);let d=Math.PI/180,[h,m,f]=r??[0,0,0],v=h*d,C=m*d,T=f*d,G=Math.cos(v),M=Math.sin(v),b=Math.cos(C),A=Math.sin(C),P=Math.cos(T),y=Math.sin(T);function E(x){let L=x[0]*c,a=x[1]*u,w=x[2]*p,g=P*L-y*a,_=y*L+P*a,H=w;return L=b*g+A*H,a=_,w=-A*g+b*H,g=L,_=G*a-M*w,H=M*a+G*w,[g+i,_+l,H+s]}return n.map(x=>({...x,vertices:x.vertices.map(E)}))}function it(n,t={}){rt(n.ownerDocument??void 0);let e={mode:t.mode??"solid",glyphPalette:t.glyphPalette??"default",useColors:t.useColors??!0,cols:t.cols??80,rows:t.rows??24,cellAspect:t.cellAspect??2,directionalLight:t.directionalLight??{direction:[-.5,-.7,-.5],intensity:1},ambientLight:t.ambientLight??{intensity:.4},camera:t.camera??Le(),smoothShading:t.smoothShading??!1,creaseAngle:t.creaseAngle??60,doubleSided:t.doubleSided??!1,supersample:t.supersample??1,depthEpsilon:t.depthEpsilon??0,temporalBlend:t.temporalBlend??0,autoSize:t.autoSize??!1,shadow:t.shadow},o=n.ownerDocument.createElement("div");o.className="glyph-scene";let r=n.ownerDocument.createElement("pre");r.className="glyph-output";let i=n.ownerDocument.createElement("div");i.className="glyph-hotspot-layer",o.appendChild(r),o.appendChild(i),n.appendChild(o);let l=new Map,s=[],c=!1,u={iA:[],iB:[],iC:[],lit:[]},p={idx:new Float32Array(0),r:new Float32Array(0),g:new Float32Array(0),b:new Float32Array(0),cols:0,rows:0,cam:null};function d(){u.iA.length=0,u.iB.length=0,u.iC.length=0,u.lit.length=0}let h=null,m=0;function f(){let a=[];for(let g of l.values())for(let _ of g.polygons)(_.texture||_.material?.texture)&&a.push(_);if(a.length===0){h&&(h=null,v());return}let w=++m;(0,Kt.buildTextureSamplers)(a).then(g=>{w===m&&(h=g.size>0?g:null,v())})}function v(){c||(c=!0,Promise.resolve().then(()=>{c=!1,C()}))}function C(){let a=[],w=[],g=[],_=[],H=!1;for(let k of l.values()){let ie=On(k.polygons,k.transform),D=k.transform.castShadow??!1,K=k.transform.receiveShadow??!1,se=k.transform.depthBias??0;se!==0&&(H=!0);for(let J of ie)a.push(J),w.push(D),g.push(K),_.push(se)}let F=tt({camera:e.camera,grid:{cols:e.cols,rows:e.rows,cellAspect:e.cellAspect},polygons:a,mode:e.mode,directionalLight:e.directionalLight,ambientLight:e.ambientLight,glyphPalette:e.glyphPalette,useColors:e.useColors,smoothShading:e.smoothShading,creaseAngle:e.creaseAngle,doubleSided:e.doubleSided,supersample:e.supersample,depthEpsilon:e.depthEpsilon,temporalBlend:e.temporalBlend,shadow:e.shadow,castShadowFlags:w,receiveShadowFlags:g,depthBiases:H?_:void 0});F.shadeCache=u,F.textureSamplers=h,F.temporalHistory=p;let z=globalThis.__glyphPerf,q=z?performance.now():0,B=qe(F),U=z?performance.now():0;if(e.useColors?r.innerHTML=B:r.textContent=B,z){let k=performance.now();(z.raster??(z.raster=[])).push(U-q),(z.dom??(z.dom=[])).push(k-U),(z.polys??(z.polys=[])).push(a.length)}T()}function T(){let{cols:a,rows:w,cellAspect:g,camera:_}=e,H=ot(s.map(B=>B.hotspot),_,a,w,g),F=r.getBoundingClientRect(),z=a>0?F.width/a:8,q=w>0?F.height/w:16;for(let B=0;B<s.length;B++){let{el:U}=s[B],k=H[B];k.visible?(U.style.display="",U.style.left=`${(k.col+.5)*z}px`,U.style.top=`${(k.row+.5)*q}px`,U.style.zIndex=String(Math.round(k.depth*1e3))):U.style.display="none"}}function G(a,w={}){let g=Fn++;return l.set(g,{id:g,polygons:a,transform:w}),d(),f(),v(),{get id(){return g},get name(){return l.get(g)?.transform.id},get polygons(){return a},setTransform(_){let H=l.get(g);H&&(H.transform=_,d(),v())},dispose(){l.delete(g),d(),f(),v()}}}function M(a,w){let g=n.ownerDocument.createElement("div");g.className="glyph-hotspot",g.setAttribute("data-hotspot-id",a.id);let[_,H]=a.size??[1,1];g.style.position="absolute",g.style.width=`${_}ch`,g.style.height=`${H*e.cellAspect}ch`,w&&g.addEventListener("click",w),i.appendChild(g);let F={hotspot:{id:a.id,at:a.at,size:a.size},el:g,onClick:w};return s.push(F),v(),{get el(){return g},remove(){let z=s.indexOf(F);z>=0&&s.splice(z,1),w&&g.removeEventListener("click",w),i.removeChild(g),v()}}}function b(){C()}function A(a){a.mode!==void 0&&(e.mode=a.mode),a.glyphPalette!==void 0&&(e.glyphPalette=a.glyphPalette),a.useColors!==void 0&&(e.useColors=a.useColors),a.cols!==void 0&&(e.cols=a.cols),a.rows!==void 0&&(e.rows=a.rows),a.cellAspect!==void 0&&(e.cellAspect=a.cellAspect),a.directionalLight!==void 0&&(e.directionalLight=a.directionalLight),a.ambientLight!==void 0&&(e.ambientLight=a.ambientLight),a.camera!==void 0&&(e.camera=a.camera),a.smoothShading!==void 0&&(e.smoothShading=a.smoothShading),a.creaseAngle!==void 0&&(e.creaseAngle=a.creaseAngle),"shadow"in a&&(e.shadow=a.shadow),a.autoSize!==void 0&&(e.autoSize=a.autoSize,e.autoSize&&!x&&typeof ResizeObserver<"u"?(x=new ResizeObserver(()=>E()),x.observe(n),E()):!e.autoSize&&x&&(x.disconnect(),x=null)),(a.mode!==void 0||a.useColors!==void 0||a.directionalLight!==void 0||a.ambientLight!==void 0||a.smoothShading!==void 0||a.creaseAngle!==void 0||a.glyphPalette!==void 0)&&d(),v()}function P(){return{...e}}function y(){let w=n.ownerDocument.createElement("span");w.textContent=Array(20).fill("M").join(`
|
|
63
|
+
`),w.style.cssText="position:absolute;visibility:hidden;font-family:inherit;font-size:inherit;line-height:inherit;white-space:pre;padding:0;margin:0",r.appendChild(w);let g=w.getBoundingClientRect();return w.remove(),{w:g.width||8,h:g.height?g.height/20:16}}function E(){let a=n.clientWidth,w=n.clientHeight;if(!a||!w)return;let g=y(),_=Math.max(20,Math.floor(a/g.w)),H=Math.max(8,Math.floor(w/g.h)),F=g.h/g.w,z=!1;e.cols!==_&&(e.cols=_,z=!0),e.rows!==H&&(e.rows=H,z=!0),Math.abs(e.cellAspect-F)>.01&&(e.cellAspect=F,z=!0),z&&v()}let x=null;e.autoSize&&typeof ResizeObserver<"u"&&(x=new ResizeObserver(()=>E()),x.observe(n),E());function L(){x&&(x.disconnect(),x=null),l.clear(),n.contains(o)&&n.removeChild(o)}return v(),{get host(){return n},get output(){return r},get camera(){return e.camera},add:G,addHotspot:M,rerender:b,setOptions:A,getOptions:P,fit:E,destroy:L}}function st(n,t={}){let e=n.host,o=t.drag??!0,r=t.wheel??!0,i=Zt(t.invert),l=t.clampPitch??!0,s=t.animate??!1,c=!1,u=!1,p=null,d=null,h=null,m={x:0,y:0},f=n.camera;function v(E){if(!(!o||c)&&h===null&&E.isPrimary!==!1){E.preventDefault(),h=E.pointerId,m={x:E.clientX,y:E.clientY},e.style.cursor="grabbing";try{E.target.setPointerCapture(E.pointerId)}catch{}s&&s.pauseOnInteraction!==!1&&(u=!0)}}function C(E){if(h===null||E.pointerId!==h||!o||c)return;E.preventDefault();let x=E.clientX-m.x,L=E.clientY-m.y;m={x:E.clientX,y:E.clientY};let a=i,w=1/4;f.rotY=f.rotY-x*w*a;let g=f.rotX-L*w*a;f.rotX=l?Math.max(-90,Math.min(90,g)):g,n.rerender()}function T(E){if(h===E.pointerId){h=null,e.style.cursor=o&&!c?"grab":"";try{E.target.releasePointerCapture(E.pointerId)}catch{}s&&(u=!1)}}function G(E){if(!r||c)return;E.preventDefault();let x=E.deltaY*.001;f.zoom=Math.max(.1,Math.min(500,f.zoom*(1-x))),n.rerender()}function M(E){if(!(c||!s)){if(!u){let x=d!==null?Math.min(E-d,50):16.67,L=typeof s=="object"&&s.speed?s.speed:.3,a=typeof s=="object"&&s.axis?s.axis:"y",w=L*(x/16.67);a==="y"?f.rotY=f.rotY+w:f.rotX=f.rotX+w,n.rerender()}d=E,p=requestAnimationFrame(M)}}function b(){p===null&&typeof requestAnimationFrame<"u"&&s&&(p=requestAnimationFrame(M))}function A(){p!==null&&(typeof cancelAnimationFrame<"u"&&cancelAnimationFrame(p),p=null),d=null}function P(){e.addEventListener("pointerdown",v),e.addEventListener("pointermove",C),e.addEventListener("pointerup",T),e.addEventListener("pointercancel",T),e.addEventListener("wheel",G,{passive:!1}),e.style.cursor=o?"grab":"",e.style.touchAction="none",e.style.userSelect="none"}function y(){e.removeEventListener("pointerdown",v),e.removeEventListener("pointermove",C),e.removeEventListener("pointerup",T),e.removeEventListener("pointercancel",T),e.removeEventListener("wheel",G),e.style.cursor="",e.style.touchAction="",e.style.userSelect=""}return P(),b(),{update(E){let x=!!s;o=E.drag??o,r=E.wheel??r,i=Zt(E.invert),E.clampPitch!==void 0&&(l=E.clampPitch),s=E.animate??s,!c&&h===null&&(e.style.cursor=o?"grab":"");let L=!!s;x&&!L?A():!x&&L&&b()},pause(){c||(c=!0,y(),A(),h=null,u=!1)},resume(){c&&(c=!1,P(),b())},destroy(){c||y(),A(),c=!0}}}function Zt(n){return n===void 0||n===!1?1:n===!0?-1:n}function lt(n,t={}){let e=n.host,o=t.drag??!0,r=t.wheel??!0,i=Jt(t.invert),l=t.animate??!1,s=!1,c=!1,u=null,p=null,d=null,h={x:0,y:0},m=!1,f=n.camera,v=1/4,C=.02;function T(a){if(!(!o||s)&&d===null&&a.isPrimary!==!1){a.preventDefault(),d=a.pointerId,h={x:a.clientX,y:a.clientY},m=a.button===2,e.style.cursor="grabbing";try{a.target.setPointerCapture(a.pointerId)}catch{}l&&l.pauseOnInteraction!==!1&&(c=!0)}}function G(a){if(d===null||a.pointerId!==d||!o||s)return;a.preventDefault();let w=a.clientX-h.x,g=a.clientY-h.y;h={x:a.clientX,y:a.clientY};let _=i;if(m||a.shiftKey)f.rotY=f.rotY-w*v*_,f.rotX=Math.max(-90,Math.min(90,f.rotX+g*v*_));else{let H=f.target;f.target=[H[0]-w*C/f.zoom,H[1]-g*C/f.zoom,H[2]]}n.rerender()}function M(a){if(d===a.pointerId){d=null,m=!1,e.style.cursor=o&&!s?"grab":"";try{a.target.releasePointerCapture(a.pointerId)}catch{}l&&(c=!1)}}function b(a){a.preventDefault()}function A(a){if(!r||s)return;a.preventDefault();let w=a.deltaY*.001;f.zoom=Math.max(.1,Math.min(500,f.zoom*(1-w))),n.rerender()}function P(a){if(!(s||!l)){if(!c){let w=p!==null?Math.min(a-p,50):16.67,g=typeof l=="object"&&l.speed?l.speed:.3,_=typeof l=="object"&&l.axis?l.axis:"y",H=g*(w/16.67);_==="y"?f.rotY=f.rotY+H:f.rotX=f.rotX+H,n.rerender()}p=a,u=requestAnimationFrame(P)}}function y(){u===null&&typeof requestAnimationFrame<"u"&&l&&(u=requestAnimationFrame(P))}function E(){u!==null&&(typeof cancelAnimationFrame<"u"&&cancelAnimationFrame(u),u=null),p=null}function x(){e.addEventListener("pointerdown",T),e.addEventListener("pointermove",G),e.addEventListener("pointerup",M),e.addEventListener("pointercancel",M),e.addEventListener("contextmenu",b),e.addEventListener("wheel",A,{passive:!1}),e.style.cursor=o?"grab":"",e.style.touchAction="none",e.style.userSelect="none"}function L(){e.removeEventListener("pointerdown",T),e.removeEventListener("pointermove",G),e.removeEventListener("pointerup",M),e.removeEventListener("pointercancel",M),e.removeEventListener("contextmenu",b),e.removeEventListener("wheel",A),e.style.cursor="",e.style.touchAction="",e.style.userSelect=""}return x(),y(),{update(a){let w=!!l;o=a.drag??o,r=a.wheel??r,i=Jt(a.invert),l=a.animate??l,!s&&d===null&&(e.style.cursor=o?"grab":"");let g=!!l;w&&!g?E():!w&&g&&y()},pause(){s||(s=!0,L(),E(),d=null,c=!1)},resume(){s&&(s=!1,x(),y())},destroy(){s||L(),E(),s=!0}}}function Jt(n){return n===void 0||n===!1?1:n===!0?-1:n}function en(n,t={}){if(n.camera.kind!=="perspective")throw new Error("glyphcss: GlyphFirstPersonControls requires a perspective camera. Use <GlyphPerspectiveCamera> (not <GlyphOrthographicCamera> / <GlyphCamera>).");n.camera.eyeMode=!0;let e=n.host,o=t.drag??!0,r=t.keyboard??!0,i=t.moveSpeed??.05,l=t.lookSpeed??.15,s=Qt(t.invert),c=!1,u=null,p={x:0,y:0},d=new Set,h=null,m=n.camera;function f(y){if(!(!o||c)&&u===null){y.preventDefault(),u=y.pointerId,p={x:y.clientX,y:y.clientY};try{y.target.setPointerCapture(y.pointerId)}catch{}}}function v(y){if(u===null||y.pointerId!==u||!o||c)return;y.preventDefault();let E=y.clientX-p.x,x=y.clientY-p.y;p={x:y.clientX,y:y.clientY},m.rotY=m.rotY-E*l*s,m.rotX=Math.max(-90,Math.min(90,m.rotX+x*l*s)),n.rerender()}function C(y){if(u===y.pointerId){u=null;try{y.target.releasePointerCapture(y.pointerId)}catch{}}}function T(y){r&&!c&&d.add(y.key.toLowerCase())}function G(y){d.delete(y.key.toLowerCase())}function M(){if(c||!r||d.size===0)return;let y=m.target,E=m.rotY*Math.PI/180,x=Math.cos(E),L=Math.sin(E),a=!1;(d.has("w")||d.has("arrowup"))&&(m.target=[y[0]-L*i,y[1]-x*i,y[2]],a=!0),(d.has("s")||d.has("arrowdown"))&&(m.target=[y[0]+L*i,y[1]+x*i,y[2]],a=!0),(d.has("a")||d.has("arrowleft"))&&(m.target=[y[0]-x*i,y[1]+L*i,y[2]],a=!0),(d.has("d")||d.has("arrowright"))&&(m.target=[y[0]+x*i,y[1]-L*i,y[2]],a=!0),a&&n.rerender()}function b(){c||(M(),h=requestAnimationFrame(b))}function A(){e.addEventListener("pointerdown",f),e.addEventListener("pointermove",v),e.addEventListener("pointerup",C),e.addEventListener("pointercancel",C),r&&(e.ownerDocument?.addEventListener("keydown",T),e.ownerDocument?.addEventListener("keyup",G)),e.style.touchAction="none",e.style.userSelect="none",typeof requestAnimationFrame<"u"&&(h=requestAnimationFrame(b))}function P(){e.removeEventListener("pointerdown",f),e.removeEventListener("pointermove",v),e.removeEventListener("pointerup",C),e.removeEventListener("pointercancel",C),e.ownerDocument?.removeEventListener("keydown",T),e.ownerDocument?.removeEventListener("keyup",G),e.style.touchAction="",e.style.userSelect="",h!==null&&(typeof cancelAnimationFrame<"u"&&cancelAnimationFrame(h),h=null),d.clear(),n.camera.eyeMode=!1}return A(),{update(y){o=y.drag??o,r=y.keyboard??r,i=y.moveSpeed??i,l=y.lookSpeed??l,s=Qt(y.invert)},pause(){c||(c=!0,P(),u=null)},resume(){c&&(c=!1,A())},destroy(){c||P(),c=!0}}}function Qt(n){return n===void 0||n===!1?1:n===!0?-1:n}function tn(n,t){let e=n.querySelector(`[data-glyph-mesh-id="${CSS.escape(t)}"]`);return e instanceof HTMLElement?e:null}function _t(n,t,e){let o=n.getBoundingClientRect();return o.width<=0||o.height<=0?!1:t>=o.left&&t<=o.right&&e>=o.top&&e<=o.bottom}function nn(n,t,e){let o=(n instanceof Document,n),r=Array.from(o.querySelectorAll(".glyph-mesh"));for(let i of r)if(_t(i,t,e))return i;return null}var In=typeof HTMLElement<"u"?HTMLElement:class{},Rn=["mode","glyph-palette","use-colors","cols","rows","cell-aspect","directional-direction","directional-intensity","ambient-intensity","auto-size","shadow","shadow-color","shadow-opacity","shadow-lift","shadow-max-extend"];function Te(n){if(n==null)return;let t=parseFloat(n);return Number.isFinite(t)?t:void 0}function Bn(n){if(n==="wireframe"||n==="solid"||n==="voxel")return n}function kn(n){if(n!==null){if(n==="false")return!1;if(n==="true"||n==="")return!0}}var at=class extends In{constructor(){super(...arguments);this._scene=null}static get observedAttributes(){return[...Rn]}getScene(){return this._scene}_readOptions(){let e={},o=Bn(this.getAttribute("mode"));o!==void 0&&(e.mode=o);let r=this.getAttribute("glyph-palette");r&&(e.glyphPalette=r);let i=kn(this.getAttribute("use-colors"));i!==void 0&&(e.useColors=i);let l=Te(this.getAttribute("cols"));l!==void 0&&(e.cols=l);let s=Te(this.getAttribute("rows"));s!==void 0&&(e.rows=s);let c=Te(this.getAttribute("cell-aspect"));c!==void 0&&(e.cellAspect=c);let u=Te(this.getAttribute("directional-intensity"));u!==void 0&&(e.directionalLight={direction:[-.5,-.7,-.5],intensity:u});let p=Te(this.getAttribute("ambient-intensity"));if(p!==void 0&&(e.ambientLight={intensity:p}),this.hasAttribute("auto-size")&&(e.autoSize=!0),this.hasAttribute("shadow")){let d={color:"#000000",opacity:.25,lift:.05,maxExtend:2e3},h=this.getAttribute("shadow-color");h&&(d.color=h);let m=Te(this.getAttribute("shadow-opacity"));m!==void 0&&(d.opacity=m);let f=Te(this.getAttribute("shadow-lift"));f!==void 0&&(d.lift=f);let v=Te(this.getAttribute("shadow-max-extend"));v!==void 0&&(d.maxExtend=v),e.shadow=d}return e}_findCameraAncestor(){let e=this.parentElement;for(;e;){let o=e.tagName.toLowerCase();if(o==="glyph-perspective-camera"||o==="glyph-orthographic-camera"||o==="glyph-camera")return e;e=e.parentElement}return null}_initScene(e){let o=typeof e.getCamera=="function"?e.getCamera():void 0,r=this._readOptions();o&&(r.camera=o),this._scene=it(this,r),this.dispatchEvent(new CustomEvent("glyphcss:scene-ready",{bubbles:!1}))}connectedCallback(){if(this._scene)return;let e=this._findCameraAncestor();if(!e)throw new Error("glyphcss: <glyph-scene> must be placed inside a <glyph-camera>, <glyph-perspective-camera>, or <glyph-orthographic-camera>.");if((typeof e.getCamera=="function"?e.getCamera():null)!==null)this._initScene(e);else{let r=()=>{e.removeEventListener("glyph:camera-ready",r),this._scene||this._initScene(e)};e.addEventListener("glyph:camera-ready",r)}}rerender(){this._scene?.rerender()}disconnectedCallback(){this._scene&&(this._scene.destroy(),this._scene=null)}attributeChangedCallback(e,o,r){o!==r&&this._scene&&this._scene.setOptions(this._readOptions())}};var ke=require("@glyphcss/core"),Nn=typeof HTMLElement<"u"?HTMLElement:class{},Dn=["src","geometry","size","color","position","scale","rotation","normalize","cast-shadow","receive-shadow"];function Yn(n){let t=(0,ke.computeSceneBbox)(n),e=(t.min[0]+t.max[0])/2,o=(t.min[1]+t.max[1])/2,r=(t.min[2]+t.max[2])/2,l=2/(Math.max(t.max[0]-t.min[0],t.max[1]-t.min[1],t.max[2]-t.min[2])||1);return n.map(s=>({...s,vertices:s.vertices.map(c=>[(c[0]-e)*l,(c[1]-o)*l,(c[2]-r)*l])}))}function Pt(n){if(!n)return;let t=n.split(",").map(e=>parseFloat(e.trim()));if(!(t.length!==3||t.some(e=>!Number.isFinite(e))))return[t[0],t[1],t[2]]}function Vn(n){if(n){if(!n.includes(",")){let t=parseFloat(n);return Number.isFinite(t)?t:void 0}return Pt(n)}}function Xn(n){return n.closest("glyph-scene")??null}var ct=class extends Nn{constructor(){super(...arguments);this._handle=null;this._loadToken=0}static get observedAttributes(){return[...Dn]}getMeshHandle(){return this._handle}connectedCallback(){this._maybeLoad()}disconnectedCallback(){this._tearDown()}attributeChangedCallback(e,o,r){if(o!==r){if(e==="src"||e==="geometry"||e==="size"||e==="color"){this._tearDown(),this._maybeLoad();return}this._handle&&this._handle.setTransform(this._readTransform())}}_readTransform(){return{position:Pt(this.getAttribute("position")),scale:Vn(this.getAttribute("scale")),rotation:Pt(this.getAttribute("rotation")),castShadow:this.hasAttribute("cast-shadow"),receiveShadow:this.hasAttribute("receive-shadow")}}_tearDown(){if(this._loadToken+=1,this._handle){try{this._handle.dispose()}catch{}this._handle=null}}async _maybeLoad(){let e=this.getAttribute("src"),o=this.getAttribute("geometry"),r=Xn(this);if(r){if(!r.getScene()){let i=()=>{r.removeEventListener("glyphcss:scene-ready",i),this._maybeLoad()};r.addEventListener("glyphcss:scene-ready",i);return}if(e){let i=++this._loadToken,l;try{l=await(0,ke.loadMesh)(e)}catch(p){this.dispatchEvent(new CustomEvent("glyphcss:error",{detail:p,bubbles:!0}));return}if(i!==this._loadToken){try{l.dispose()}catch{}return}let s=r.getScene();if(!s){try{l.dispose()}catch{}return}let u=this.hasAttribute("normalize")?Yn(l.polygons):l.polygons;this._handle=s.add(u,this._readTransform()),this.dispatchEvent(new CustomEvent("glyphcss:loaded",{detail:{polygons:u},bubbles:!0}));return}if(o){let i=r.getScene();if(!i)return;let l=this.getAttribute("size"),s=l!==null?parseFloat(l):1,c=this.getAttribute("color")??void 0,u;try{u=(0,ke.resolveGeometry)(o,{size:Number.isFinite(s)?s:1,color:c})}catch(p){this.dispatchEvent(new CustomEvent("glyphcss:error",{detail:p,bubbles:!0}));return}this._handle=i.add(u,this._readTransform()),this.dispatchEvent(new CustomEvent("glyphcss:loaded",{detail:{polygons:u},bubbles:!0}))}}}};var $n=typeof HTMLElement<"u"?HTMLElement:class{};function Wn(n){if(!n)return;let t=n.split(",").map(e=>parseFloat(e.trim()));if(!(t.length!==3||t.some(e=>!Number.isFinite(e))))return[t[0],t[1],t[2]]}function jn(n){if(!n)return;let t=n.split(",").map(e=>parseFloat(e.trim()));if(!(t.length!==2||t.some(e=>!Number.isFinite(e))))return[t[0],t[1]]}function qn(n){return n.closest("glyph-scene")??null}var ut=class extends $n{constructor(){super(...arguments);this._handle=null}static get observedAttributes(){return["at","size","hotspot-id"]}connectedCallback(){this._register()}disconnectedCallback(){this._handle&&this._unregister()}attributeChangedCallback(e,o,r){o!==r&&(this._handle&&this._unregister(),this._register())}_unregister(){if(!this._handle)return;let e=this._handle.el;for(;e.firstChild;)this.appendChild(e.firstChild);this._handle.remove(),this._handle=null}_register(){let e=Wn(this.getAttribute("at"));if(!e)return;let o=qn(this);if(!o)return;if(!o.getScene()){let c=()=>{o.removeEventListener("glyphcss:scene-ready",c),this._register()};o.addEventListener("glyphcss:scene-ready",c);return}let r=o.getScene();if(!r)return;let i=this.getAttribute("hotspot-id")??this.getAttribute("id")??String(Math.random()),l=jn(this.getAttribute("size"));this._handle=r.addHotspot({id:i,at:e,size:l},()=>this.dispatchEvent(new CustomEvent("glyphcss:hotspot-click",{detail:{id:i},bubbles:!0})));let s=this._handle.el;for(;this.firstChild;)s.appendChild(this.firstChild)}};var Un=typeof HTMLElement<"u"?HTMLElement:class{};function pe(n){if(n==null)return;let t=parseFloat(n);return Number.isFinite(t)?t:void 0}var dt=class extends Un{constructor(){super(...arguments);this._camera=null}static get observedAttributes(){return["rot-x","rot-y","distance","perspective","zoom","stretch"]}getCamera(){return this._camera}connectedCallback(){this._camera=Le({rotX:pe(this.getAttribute("rot-x")),rotY:pe(this.getAttribute("rot-y")),distance:pe(this.getAttribute("distance")),perspective:pe(this.getAttribute("perspective")),zoom:pe(this.getAttribute("zoom")),stretch:pe(this.getAttribute("stretch"))}),this.dispatchEvent(new CustomEvent("glyph:camera-ready",{bubbles:!1}))}disconnectedCallback(){this._camera=null}attributeChangedCallback(e,o,r){if(o===r)return;let i=this._camera;if(!i)return;let l=pe(this.getAttribute("rot-x")),s=pe(this.getAttribute("rot-y")),c=pe(this.getAttribute("distance")),u=pe(this.getAttribute("perspective")),p=pe(this.getAttribute("zoom")),d=pe(this.getAttribute("stretch")),h=!1;l!==void 0&&i.rotX!==l&&(i.rotX=l,h=!0),s!==void 0&&i.rotY!==s&&(i.rotY=s,h=!0),c!==void 0&&i.distance!==c&&(i.distance=c,h=!0),u!==void 0&&i.perspective!==u&&(i.perspective=u,h=!0),p!==void 0&&i.zoom!==p&&(i.zoom=p,h=!0),d!==void 0&&i.stretch!==d&&(i.stretch=d,h=!0),h&&this.querySelector("glyph-scene")?.rerender?.()}};var Kn=typeof HTMLElement<"u"?HTMLElement:class{};function Ne(n){if(n==null)return;let t=parseFloat(n);return Number.isFinite(t)?t:void 0}var pt=class extends Kn{constructor(){super(...arguments);this._camera=null}static get observedAttributes(){return["rot-x","rot-y","zoom"]}getCamera(){return this._camera}connectedCallback(){this._camera=$e({rotX:Ne(this.getAttribute("rot-x")),rotY:Ne(this.getAttribute("rot-y")),zoom:Ne(this.getAttribute("zoom"))}),this.dispatchEvent(new CustomEvent("glyph:camera-ready",{bubbles:!1}))}disconnectedCallback(){this._camera=null}attributeChangedCallback(e,o,r){if(o===r)return;let i=this._camera;if(!i)return;let l=Ne(this.getAttribute("rot-x")),s=Ne(this.getAttribute("rot-y")),c=Ne(this.getAttribute("zoom")),u=!1;l!==void 0&&i.rotX!==l&&(i.rotX=l,u=!0),s!==void 0&&i.rotY!==s&&(i.rotY=s,u=!0),c!==void 0&&i.zoom!==c&&(i.zoom=c,u=!0),u&&this.querySelector("glyph-scene")?.rerender?.()}};var Zn=typeof HTMLElement<"u"?HTMLElement:class{};function Jn(n){if(n==null)return;let t=parseFloat(n);return Number.isFinite(t)?t:void 0}function ht(n){if(n!==null){if(n==="false")return!1;if(n==="true"||n==="")return!0}}function Qn(n){return n.closest("glyph-scene")??null}var mt=class extends Zn{constructor(){super(...arguments);this._controls=null}static get observedAttributes(){return["drag","wheel","invert","clamp-pitch","animate-speed","animate-axis"]}connectedCallback(){this._attach()}disconnectedCallback(){this._controls&&(this._controls.destroy(),this._controls=null)}attributeChangedCallback(e,o,r){o!==r&&this._controls?.update(this._readOptions())}_readOptions(){let e=ht(this.getAttribute("drag")),o=ht(this.getAttribute("wheel")),r=ht(this.getAttribute("invert")),i=ht(this.getAttribute("clamp-pitch")),l=Jn(this.getAttribute("animate-speed")),s=this.getAttribute("animate-axis")==="x"?"x":"y";return{...e!==void 0?{drag:e}:{},...o!==void 0?{wheel:o}:{},...r!==void 0?{invert:r}:{},...i!==void 0?{clampPitch:i}:{},...l!==void 0?{animate:{speed:l,axis:s}}:{}}}_attach(){if(this._controls)return;let e=Qn(this);if(!e)return;let o=e.getScene();if(!o){let r=()=>{e.removeEventListener("glyphcss:scene-ready",r),this._attach()};e.addEventListener("glyphcss:scene-ready",r);return}this._controls=st(o,this._readOptions())}};var er=typeof HTMLElement<"u"?HTMLElement:class{};function zt(n){if(n!==null){if(n==="false")return!1;if(n==="true"||n==="")return!0}}function tr(n){return n.closest("glyph-scene")??null}var ft=class extends er{constructor(){super(...arguments);this._controls=null}static get observedAttributes(){return["drag","wheel","invert"]}connectedCallback(){this._attach()}disconnectedCallback(){this._controls&&(this._controls.destroy(),this._controls=null)}attributeChangedCallback(e,o,r){o!==r&&this._controls?.update(this._readOptions())}_readOptions(){let e=zt(this.getAttribute("drag")),o=zt(this.getAttribute("wheel")),r=zt(this.getAttribute("invert"));return{...e!==void 0?{drag:e}:{},...o!==void 0?{wheel:o}:{},...r!==void 0?{invert:r}:{}}}_attach(){if(this._controls)return;let e=tr(this);if(!e)return;let o=e.getScene();if(!o){let r=()=>{e.removeEventListener("glyphcss:scene-ready",r),this._attach()};e.addEventListener("glyphcss:scene-ready",r);return}this._controls=lt(o,this._readOptions())}};V(N,require("@glyphcss/core"),module.exports);0&&(module.exports={DEFAULT_PERSPECTIVE,DEFAULT_RAMP,GlyphHotspotElement,GlyphMapControlsElement,GlyphMeshElement,GlyphOrbitControlsElement,GlyphOrthographicCameraElement,GlyphPerspectiveCameraElement,GlyphSceneElement,SOLID_RAMP,WIREFRAME_GLYPHS,WIREFRAME_PALETTES,bakeFrames,buildRasterizeContext,createGlyphCamera,createGlyphFirstPersonControls,createGlyphMapControls,createGlyphOrbitControls,createGlyphOrthographicCamera,createGlyphPerspectiveCamera,createGlyphScene,findGlyphMeshHandle,findMeshUnderPoint,getWireframeGlyphs,injectGlyphBaseStyles,pointInMeshElement,projectHotspots,rasterize,...require("@glyphcss/core")});
|