@layoutit/polycss 0.2.4 → 0.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/{PolyShapeElements-CoKhApyN.d.cts → PolyShapeElements-YDkJX2Fz.d.cts} +13 -1
- package/dist/{PolyShapeElements-CoKhApyN.d.ts → PolyShapeElements-YDkJX2Fz.d.ts} +13 -1
- package/dist/elements.cjs +4 -4
- package/dist/elements.d.cts +1 -1
- package/dist/elements.d.ts +1 -1
- package/dist/elements.js +4 -4
- package/dist/index.cjs +22 -22
- package/dist/index.d.cts +86 -7
- package/dist/index.d.ts +86 -7
- package/dist/index.js +22 -22
- package/package.json +2 -2
package/dist/elements.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{CAMERA_BACKFACE_CULL_EPS as wo,DEFAULT_SEAM_BLEED as mi,VOXEL_CAMERA_CULL_NORMAL_LIMIT as hl,cameraCullNormalKey as gl,cameraCullVisibleSignature as yl,computeSceneBbox as bl,computeLightVisibility as vl,findOverlappingPolygonDuplicates as ci,inverseRotateVec3 as Lo,isAxisAlignedSurfaceNormal as xl,isVoxelCameraCullableNormalGroups as Pl,normalFacesCamera as Sl,optimizeMeshPolygons as Cl,parseHexColor as El,polygonCssSurfaceNormal as di}from"@layoutit/polycss-core";import{packTextureAtlasPlansWithScaleCore as Xi}from"@layoutit/polycss-core";function Zi(e){if(!e)return!1;let t=(e.defaultView??(typeof window<"u"?window:void 0))?.matchMedia;return t?t("(pointer: coarse)").matches||t("(hover: none)").matches:!1}function Ot(e,n,t){return Xi(e,n,Zi(t))}import{buildTextureEdgeRepairSets as Js,buildSeamBleedPolygonEdges as ea,buildSeamBleedPolygonSet as ta}from"@layoutit/polycss-core";import{TEXTURE_TRIANGLE_BLEED as Qi,TEXTURE_EDGE_REPAIR_ALPHA_MIN as qi,TEXTURE_EDGE_REPAIR_SOURCE_ALPHA_MIN as Ki,TEXTURE_EDGE_REPAIR_RADIUS as No}from"@layoutit/polycss-core";import{expandClipPoints as Ji}from"@layoutit/polycss-core";import{BASIS_EPS as es}from"@layoutit/polycss-core";var mt=new Map;function ts(e){let n=mt.get(e);return n||(n=new Promise((t,o)=>{let r=new Image;r.decoding="async",r.crossOrigin="anonymous",r.onload=()=>t(r),r.onerror=()=>o(new Error(`texture load failed: ${e}`)),r.src=e}),mt.set(e,n),n.then(()=>{mt.get(e)===n&&mt.delete(e)},()=>{mt.get(e)===n&&mt.delete(e)})),n}function Re(e,n,t=1,o=0,r=0,i=1,s=0,c=0){e.setTransform(t*n,o*n,r*n,i*n,s*n,c*n)}function Jn(e){let n=e/255;return n<=.04045?n/12.92:Math.pow((n+.055)/1.055,2.4)}function eo(e){let n=e<=.0031308?e*12.92:1.055*Math.pow(e,.4166666666666667)-.055;return Math.max(0,Math.min(255,Math.round(n*255)))}function ns(e,n,t,o,r,i,s){let c=Math.round(n*s),l=Math.round(t*s),p=Math.max(1,Math.round(o*s)),h=Math.max(1,Math.round(r*s)),x=e.getImageData(c,l,p,h),f=x.data,b=i.r,y=i.g,P=i.b;for(let v=0;v<f.length;v+=4)f[v+3]!==0&&(f[v]=eo(Jn(f[v])*b),f[v+1]=eo(Jn(f[v+1])*y),f[v+2]=eo(Jn(f[v+2])*P));e.putImageData(x,c,l)}function os(e,n,t,o,r,i,s){let c=n.naturalWidth||n.width||1,l=n.naturalHeight||n.height||1,p=Math.max(r/c,i/l),h=c*p,x=l*p;Re(e,s),e.drawImage(n,t+(r-h)/2,o+(i-x)/2,h,x)}function ft(e,n){return Math.max(0,Math.min(n,e))}function Go(e,n,t,o,r,i,s,c){let l=n.naturalWidth||n.width||1,p=n.naturalHeight||n.height||1,h=ft(Math.min(t.minU,t.maxU)*l,l),x=ft(Math.max(t.minU,t.maxU)*l,l),f=ft(Math.min(t.minV,t.maxV)*p,p),b=ft(Math.max(t.minV,t.maxV)*p,p),y=Math.floor(h),P=Math.floor(f),v=Math.ceil(x)-y,C=Math.ceil(b)-P;v<1&&(y=Math.floor(ft((t.minU+t.maxU)/2*l,l-1)),v=1),C<1&&(P=Math.floor(ft((t.minV+t.maxV)/2*p,p-1)),C=1),y=Math.max(0,Math.min(l-1,y)),P=Math.max(0,Math.min(p-1,P)),v=Math.max(1,Math.min(l-y,v)),C=Math.max(1,Math.min(p-P,C)),Re(e,c),e.drawImage(n,y,P,v,C,o,r,i,s)}function Yo(e){return e==="repeat"||e==="mirrored-repeat"}function $o(e,n){return Yo(e)?Math.floor(n):0}function Uo(e,n){return Yo(e)?Math.ceil(n)-1:0}function jo(e,n){return e==="mirrored-repeat"&&Math.abs(n%2)===1}function Wo(e,n,t,o,r,i,s){let c=r?$o(i,r.minU):0,l=r?Uo(i,r.maxU):0,p=r?$o(s,r.minV):0,h=r?Uo(s,r.maxV):0;for(let x=c;x<=l;x++)for(let f=p;f<=h;f++){let b=jo(i,x),y=jo(s,f);if(!b&&!y){e.drawImage(n,x*t,f*o);continue}e.save(),e.translate((b?x+1:x)*t,(y?f+1:f)*o),e.scale(b?-1:1,y?-1:1),e.drawImage(n,0,0),e.restore()}}function to(e,n,t,o){for(let r=0;r<o.length;r+=2){let i=n+o[r],s=t+o[r+1];r===0?e.moveTo(i,s):e.lineTo(i,s)}e.closePath()}function Qt(e,n,t,o,r,i){for(let s=0;s<o.length;s+=2){let c=n+o[s]+r,l=t+o[s+1]+i;s===0?e.moveTo(c,l):e.lineTo(c,l)}e.closePath()}function rs(e,n,t,o){Re(e,o),e.beginPath(),to(e,n.x,n.y,n.screenPts),e.clip(),Re(e,o),e.fillStyle=t==="dynamic"?n.polygon.color??"#cccccc":n.shadedColor,e.fillRect(n.x,n.y,n.canvasW,n.canvasH)}function qt(e,n,t,o,r){n.polygon.textureAlphaMode==="opaque"&&(Re(e,t),e.fillStyle=n.polygon.color??"#cccccc",e.fillRect(n.x+o,n.y+r,n.canvasW,n.canvasH))}function is(e,n,t,o,r=0,i=0){if(n.textureTriangles?.length){let s=t.naturalWidth||t.width||1,c=t.naturalHeight||t.height||1;for(let l of n.textureTriangles){let p=Ji(l.screenPts,Qi*(n.bleedRatio??1));e.save(),Re(e,o),e.beginPath(),Qt(e,n.x,n.y,p,r,i),e.clip(),qt(e,n,o,r,i),l.uvAffine?(Re(e,o,l.uvAffine.a/s,l.uvAffine.c/s,l.uvAffine.b/c,l.uvAffine.d/c,n.x+l.uvAffine.e+r,n.y+l.uvAffine.f+i),Wo(e,t,s,c,l.uvSampleRect,n.polygon.textureWrap?.s,n.polygon.textureWrap?.t)):l.uvSampleRect&&Go(e,t,l.uvSampleRect,n.x+r,n.y+i,n.canvasW,n.canvasH,o),e.restore()}}else if(n.uvAffine){let s=t.naturalWidth||t.width||1,c=t.naturalHeight||t.height||1,l=n.polygon.textureAlphaMode==="opaque";l&&(e.save(),Re(e,o),e.beginPath(),Qt(e,n.x,n.y,n.screenPts,r,i),e.clip(),qt(e,n,o,r,i)),Re(e,o,n.uvAffine.a/s,n.uvAffine.c/s,n.uvAffine.b/c,n.uvAffine.d/c,n.x+n.uvAffine.e+r,n.y+n.uvAffine.f+i),Wo(e,t,s,c,n.uvSampleRect,n.polygon.textureWrap?.s,n.polygon.textureWrap?.t),l&&e.restore()}else if(n.uvSampleRect){let s=n.polygon.textureAlphaMode==="opaque";s&&(e.save(),Re(e,o),e.beginPath(),Qt(e,n.x,n.y,n.screenPts,r,i),e.clip(),qt(e,n,o,r,i)),Go(e,t,n.uvSampleRect,n.x+r,n.y+i,n.canvasW,n.canvasH,o),s&&e.restore()}else{let s=n.polygon.textureAlphaMode==="opaque";s&&(e.save(),Re(e,o),e.beginPath(),Qt(e,n.x,n.y,n.screenPts,r,i),e.clip(),qt(e,n,o,r,i)),os(e,t,n.x+r,n.y+i,n.canvasW,n.canvasH,o),s&&e.restore()}}function ss(e,n,t,o,r,i){let s=r-t,c=i-o,l=s*s+c*c;if(l<=es)return Math.hypot(e-t,n-o);let p=Math.max(0,Math.min(1,((e-t)*s+(n-o)*c)/l));return Math.hypot(e-(t+s*p),n-(o+c*p))}function as(e,n,t,o){let r=1/0,i=t.length/2;for(let s of o){if(s<0||s>=i)continue;let c=s*2,l=(s+1)%i*2;r=Math.min(r,ss(e,n,t[c],t[c+1],t[l],t[l+1]))}return r}function ls(e,n,t,o,r,i){let s=Math.max(0,o-i),c=Math.min(n-1,o+i),l=Math.max(0,r-i),p=Math.min(t-1,r+i),h=null,x=1/0;for(let f=l;f<=p;f++)for(let b=s;b<=c;b++){if(b===o&&f===r)continue;let y=b-o,P=f-r,v=y*y+P*P;if(v>i*i||v>=x)continue;let C=(f*n+b)*4;e[C+3]<Ki||(h=C,x=v)}return h}function cs(e,n,t){if(!n.textureEdgeRepair||!n.texture||!n.textureEdgeRepairEdges||n.textureEdgeRepairEdges.size===0)return;let o=e.canvas;if(!o)return;let r=Math.max(0,Math.floor(n.x*t)),i=Math.max(0,Math.floor(n.y*t)),s=Math.max(1,Math.min(o.width-r,Math.ceil(n.canvasW*t))),c=Math.max(1,Math.min(o.height-i,Math.ceil(n.canvasH*t)));if(s<=0||c<=0)return;let l;try{l=e.getImageData(r,i,s,c)}catch{return}let p=l.data,h=new Uint8ClampedArray(p),x=Math.max(No,No/t),f=Math.max(2,Math.ceil(x*t)+1),b=!1;for(let y=0;y<c;y++)for(let P=0;P<s;P++){let v=(y*s+P)*4,C=p[v+3];if(C<qi||C===255)continue;let F=(r+P+.5)/t-n.x,k=(i+y+.5)/t-n.y;if(as(F,k,n.screenPts,n.textureEdgeRepairEdges)>x)continue;let z=ls(h,s,c,P,y,f);z!==null&&(p[v]=h[z],p[v+1]=h[z+1],p[v+2]=h[z+2],p[v+3]=255,b=!0)}b&&e.putImageData(l,r,i)}function ds(e){if(typeof e.toBlob=="function")return new Promise(n=>{e.toBlob(t=>{n(t?URL.createObjectURL(t):null)},"image/png")});try{return Promise.resolve(e.toDataURL("image/png"))}catch{return Promise.resolve(null)}}async function us(e,n,t,o){let r=t.createElement("canvas");r.width=Math.max(1,Math.ceil(e.width*o)),r.height=Math.max(1,Math.ceil(e.height*o));let i=e.entries.some(h=>h.textureEdgeRepair&&h.texture&&h.textureEdgeRepairEdges&&h.textureEdgeRepairEdges.size>0),s=r.getContext("2d",i?{willReadFrequently:!0}:void 0);if(!s)return{width:e.width,height:e.height,url:null};let c=Array.from(new Set(e.entries.flatMap(h=>h.texture?[h.texture]:[]))),l=new Map;await Promise.all(c.map(async h=>{l.set(h,await ts(h))}));for(let h of e.entries){let x=h.texture?l.get(h.texture):null;if(!h.texture){s.save(),rs(s,h,n,o),s.restore();continue}x&&(s.save(),Re(s,o),s.beginPath(),to(s,h.x,h.y,h.screenPts),s.clip(),is(s,h,x,o),s.restore()),h.texture&&n==="baked"&&(s.save(),Re(s,o),s.beginPath(),to(s,h.x,h.y,h.screenPts),s.clip(),ns(s,h.x,h.y,h.canvasW,h.canvasH,h.textureTint,o),s.restore()),cs(s,h,o)}let p=await ds(r);return r.width=1,r.height=1,{width:e.width,height:e.height,url:p}}async function Ht(e,n,t,o,r){let i=[];for(let s of e){if(r())break;i.push(await us(s,n,t,o))}return i}import{isFullRectSolid as je,isSolidTrianglePlan as et,isProjectiveQuadPlan as We,fullRectBounds as bd,safariCssProjectiveUnsupported as Xo,incrementCount as vd,dominantCountKey as xd,filterAtlasPlans as Pd,getSolidPaintDefaultsForPlansCore as ms}from"@layoutit/polycss-core";import{parseHex as fs,rgbKey as hs}from"@layoutit/polycss-core";import{computeTextureAtlasPlan as Td,buildBasisHints as Ad}from"@layoutit/polycss-core";import{resolveProjectiveQuadGuards as ps}from"@layoutit/polycss-core";function ht(e,n){let o=e?.defaultView?.__polycssProjectiveQuadGuards,r=n&&o?{...n,...o}:o??n;return ps(r)}function It(e){if(!!!(e.defaultView?.CSS??(typeof CSS<"u"?CSS:void 0))?.supports?.("border-shape","polygon(0 0, 100% 0, 0 100%) circle(0)"))return!1;let r=(e.defaultView??(typeof window<"u"?window:void 0))?.matchMedia;return r?r("(pointer: fine)").matches&&r("(hover: hover)").matches:!0}function Zo(e){if(Qo(e))return!0;let t=(e.defaultView??(typeof window<"u"?window:void 0))?.navigator?.userAgent??"";return t?!Xo(t):!0}function Ft(e){let n=e.defaultView?.CSS??(typeof CSS<"u"?CSS:void 0);return!!n?.supports?.("corner-top-left-shape","bevel")&&!!n.supports("corner-top-right-shape","bevel")&&!!n.supports("corner-bottom-right-shape","bevel")&&!!n.supports("corner-bottom-left-shape","bevel")}function Qo(e){let n=e.defaultView?.CSS??(typeof CSS<"u"?CSS:void 0);return!!n?.supports?.("corner-top-left-shape","bevel")&&!!n.supports("corner-top-right-shape","bevel")}function gs(e){let t=(e.defaultView??(typeof window<"u"?window:void 0))?.navigator?.userAgent??"";return/\bFirefox\//.test(t)}function Ye(e,n){return n?.disable?.includes("u")?null:Qo(e)?"corner-bevel":Zo(e)?gs(e)?"border-large":"border":null}function Vt(e){let t=(e.defaultView??(typeof window<"u"?window:void 0))?.navigator?.userAgent??"";return t?!Xo(t):!0}function Kt(e,n,t,o,r){let i=new Set(o?.disable??[]);return ms(e,n,i,{solidTriangleSupported:Zo(t),projectiveQuadSupported:Vt(t),cornerShapeSupported:Ft(t),borderShapeSupported:It(t)},fs,hs,r)}import{ASYNC_RENDER_BUDGET_MS as Gs,DEFAULT_SEAM_BLEED as gr,DEFAULT_TILE as $s,PROJECTIVE_QUAD_DENOM_EPS as Us,PROJECTIVE_QUAD_MAX_WEIGHT_RATIO as js,PROJECTIVE_QUAD_BLEED as hr,resolveBleedRatio as bo}from"@layoutit/polycss-core";import{buildBasisHints as vo,buildSeamBleedPolygonEdges as Ws,computeTextureAtlasPlan as $t}from"@layoutit/polycss-core";import{cornerShapeGeometryForPlan as Gt}from"@layoutit/polycss-core";import{formatCssLength as Jt,formatMatrix3dValues as bs,formatSolidQuadMatrix as vs}from"@layoutit/polycss-core";import{shadePolygon as xs}from"@layoutit/polycss-core";import{parseHex as qo,rgbKey as Ko}from"@layoutit/polycss-core";function xe(e,n,t){let o=e.getAttribute("style")??"",r=`${n}:${t}`,i=n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),s=new RegExp(`(^|;)\\s*${i}\\s*:[^;]*`,"i"),c=s.test(o)?o.replace(s,(l,p)=>`${p}${r}`):`${o}${o.trim()&&!o.trim().endsWith(";")?";":""}${r}`;c!==o&&e.setAttribute("style",c)}function tt(e,n){let t=e.getAttribute("style")??"";if(!t||!t.toLowerCase().includes(n.toLowerCase()))return;let o=n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),r=new RegExp(`^\\s*${o}\\s*:`,"i"),i=t.split(";").map(s=>s.trim()).filter(s=>s&&!r.test(s)).join(";");i?e.setAttribute("style",i):e.removeAttribute("style")}function Bt(e,n,t,o=!1){if(n==="dynamic"){let r=qo(e.polygon.color??"#cccccc"),i=o?"":`;--pnx:${e.normal[0].toFixed(4)};--pny:${e.normal[1].toFixed(4)};--pnz:${e.normal[2].toFixed(4)}`;return Ko(r)!==t?.dynamicColorKey&&(i+=`;--psr:${(r.r/255).toFixed(4)};--psg:${(r.g/255).toFixed(4)};--psb:${(r.b/255).toFixed(4)}`),i}return e.shadedColor?`;color:${e.shadedColor}`:""}function ys(e,n){xe(e,"--pnx",n.normal[0].toFixed(4)),xe(e,"--pny",n.normal[1].toFixed(4)),xe(e,"--pnz",n.normal[2].toFixed(4))}function gt(e,n,t,o){if(t==="dynamic"){tt(e,"color"),tt(e,"background"),ys(e,n);let r=qo(n.polygon.color??"#cccccc");Ko(r)===o?.dynamicColorKey?(tt(e,"--psr"),tt(e,"--psg"),tt(e,"--psb")):(xe(e,"--psr",(r.r/255).toFixed(4)),xe(e,"--psg",(r.g/255).toFixed(4)),xe(e,"--psb",(r.b/255).toFixed(4)))}else n.shadedColor!==o?.paintColor?(tt(e,"background"),xe(e,"color",n.shadedColor)):(tt(e,"background"),tt(e,"color"))}import{formatBorderShapeElementStyle as Jo,formatCornerShapeElementStyle as er}from"@layoutit/polycss-core";import{atlasCanonicalSizeForEntry as nt}from"@layoutit/polycss-core";import{computeProjectiveQuadMatrix as Ps,stableBasisFromPlan as Ss}from"@layoutit/polycss-core";import{DEFAULT_LIGHT_DIR as Cs,DEFAULT_LIGHT_COLOR as Es,DEFAULT_LIGHT_INTENSITY as Ts,DEFAULT_AMBIENT_COLOR as As,DEFAULT_AMBIENT_INTENSITY as Ms}from"@layoutit/polycss-core";var tr="polycss-corner-shape-solid",no=new WeakMap,oo=new WeakMap;function ye(e,n,t){let o=no.get(e),r=oo.get(e),i=typeof t=="number";if(!n.data&&!i&&(!o||o.length===0)){e.__polycssHasDataAttrs=!1;return}let s=new Map;if(n.data)for(let[l,p]of Object.entries(n.data))s.set(l,String(p));if(i&&s.set("poly-index",String(t)),o)for(let l of o)s.has(l)||e.removeAttribute(`data-${l}`);for(let[l,p]of s)r?.get(l)!==p&&e.setAttribute(`data-${l}`,p);let c=Array.from(s.keys());c.length>0?no.set(e,c):no.delete(e),s.size>0?oo.set(e,s):oo.delete(e),e.__polycssHasDataAttrs=c.length>0}function yt(e){return e.__polycssHasDataAttrs===!0}function ro(e,n,t,o,r=t==="dynamic"){if(!n.url)return;let i=`url(${n.url})`,s=o.canvasW||1,c=o.canvasH||1,l=nt(o),p=`${Jt(-o.x/s*l)} ${Jt(-o.y/c*l)}`,h=`${Jt(n.width/s*l)} ${Jt(n.height/c*l)}`,x=`transform:matrix3d(${o.atlasMatrix});--polycss-atlas-size:${l}px`,f=`${x};--polycss-atlas-position:${p};--polycss-atlas-image-size:${h}`;if(t==="dynamic"){let b=r?`;--pnx:${o.normal[0].toFixed(4)};--pny:${o.normal[1].toFixed(4)};--pnz:${o.normal[2].toFixed(4)}`:"";e.setAttribute("style",f+`;--polycss-atlas-url:${i}`+b)}else e.setAttribute("style",x+`;background-image:${i};background-position:${p};background-size:${h};background-repeat:no-repeat;--pnx:${o.normal[0].toFixed(4)};--pny:${o.normal[1].toFixed(4)};--pnz:${o.normal[2].toFixed(4)}`)}function nr(e,n,t,o){if(n.texture){if(!t.texture||n.texture!==t.texture)return!1}else if(t.texture)return!1;let r=or(n,t);return r?(e.style.visibility="",xe(e,"transform",`matrix3d(${r.matrix})`),o==="dynamic"&&(xe(e,"--pnx",r.normal[0].toFixed(4)),xe(e,"--pny",r.normal[1].toFixed(4)),xe(e,"--pnz",r.normal[2].toFixed(4))),ye(e,t,n.index),!0):(e.style.visibility="hidden",ye(e,t,n.index),!0)}function io(e,n,t,o,r){if(o!=="baked")return{...e,polygon:n,normal:t};let i=r.directionalLight,s=r.ambientLight,c=i?.direction??Cs,l=i?.color??Es,p=Math.max(0,i?.intensity??Ts),h=s?.color??As,x=Math.max(0,s?.intensity??Ms),f=Math.hypot(c[0],c[1],c[2])||1,b=c[0]/f,y=c[1]/f,P=c[2]/f,C=r.lightOccludedPolyIndices?.has(e.index)??!1?0:p*Math.max(0,t[0]*b+t[1]*y+t[2]*P);return{...e,polygon:n,normal:t,shadedColor:xs(n.color??"#cccccc",C,l,h,x)}}function or(e,n){let t=rr(e,n);if(!t)return null;let{normal:o,xAxis:r,yAxis:i,tx:s,ty:c,tz:l}=t;return{normal:o,matrix:bs([r[0]*e.canvasW/nt(e),r[1]*e.canvasW/nt(e),r[2]*e.canvasW/nt(e),0,i[0]*e.canvasH/nt(e),i[1]*e.canvasH/nt(e),i[2]*e.canvasH/nt(e),0,o[0],o[1],o[2],0,s,c,l,1])}}var rr=Ss;function ws(e,n,t){if(e.screenPts.length!==8||n.vertices.length!==4)return null;let o=rr(e,n);if(!o)return null;let r=Ps(e.screenPts,o.xAxis,o.yAxis,o.normal,o.tx,o.ty,o.tz,t);return r?{matrix:r,normal:o.normal}:null}function so(e,n,t,o,r=!1){let i=t.createElement("b");return i.setAttribute("style",`transform:matrix3d(${vs(e)})`+Bt(e,n,o,r)),ye(i,e.polygon,e.index),i}function ao(e,n,t,o,r=!1){let i=t.createElement("i");return i.setAttribute("style",Jo(e)+Bt(e,n,o,r)),ye(i,e.polygon,e.index),i}function lo(e,n,t,o,r,i=!1){let s=o.createElement("u");return s.className=tr,s.setAttribute("style",er(e,n)+Bt(e,t,r,i)),ye(s,e.polygon,e.index),s}function co(e,n,t,o,r=!1){let i=t.createElement("b");return i.setAttribute("style",`transform:matrix3d(${e.projectiveMatrix})`+Bt(e,n,o,r)),ye(i,e.polygon,e.index),i}function ir(e,n,t,o,r,i,s){let c=n.projectiveMatrix?ws(n,t,i):or(n,t);if(!c)return!1;let l=io(n,t,c.normal,o,r);return e.style.visibility="",e.style.transform=`matrix3d(${c.matrix})`,gt(e,l,o,s),ye(e,l.polygon,l.index),!0}function sr(e,n,t,o){e.style.visibility="",e.setAttribute("style",Jo(n)),gt(e,n,t,o),ye(e,n.polygon,n.index)}function ar(e,n,t,o,r){e.style.visibility="",e.className=tr,e.setAttribute("style",er(n,t)),gt(e,n,o,r),xe(e,"background","currentColor"),ye(e,n.polygon,n.index)}function uo(e,n,t,o=!1){let r=t.createElement("s"),i=nt(e),s=o?"":`;--pnx:${e.normal[0].toFixed(4)};--pny:${e.normal[1].toFixed(4)};--pnz:${e.normal[2].toFixed(4)}`;return r.setAttribute("style",`transform:matrix3d(${e.atlasMatrix});--polycss-atlas-size:${i}px;opacity:0`+s),ye(r,e.polygon,e.index),r}import{computeSolidTriangleColorPlan as Ys}from"@layoutit/polycss-core";import{computeSolidTrianglePlanFromCssPoints as Ls,computeSolidTrianglePlan as _s}from"@layoutit/polycss-core";function at(e,n,t,o={}){let r=o.primitive!=null?void 0:(()=>{let i=t.doc??(typeof document<"u"?document:null);return i?Ye(i,t.strategies)??"border":"border"})();return _s(e,n,t,{...o,resolvedPrimitive:o.resolvedPrimitive??r})}function po(e,n,t,o,r,i,s,c,l,p,h,x,f){let b=o.primitive!=null?void 0:(()=>{let y=t.doc??(typeof document<"u"?document:null);return y?Ye(y,t.strategies)??"border":"border"})();return Ls(e,n,t,{...o,resolvedPrimitive:o.resolvedPrimitive??b},r,i,s,c,l,p,h,x,f)}import{buildSeamBleedPolygonEdges as Rs,DEFAULT_SEAM_BLEED as ks,DEFAULT_TILE as $d,resolveBleedRatio as Ds}from"@layoutit/polycss-core";import{rgbEqual as Os,stepRgbToward as Hs,rgbToCss as Is,colorErrorScore as Fs}from"@layoutit/polycss-core";import{computeSolidTriangleColorPlan as Vs}from"@layoutit/polycss-core";import{stableTriangleMatrixDecimals as lr}from"@layoutit/polycss-core";var Bs="0 48px 96px 48px";function cr(e,n){return Rs(e,{tileSize:n.tileSize,layerElevation:n.layerElevation,directionalLight:n.directionalLight,ambientLight:n.ambientLight})}function dr(e,n,t){let o=Ds(t.seamBleed),r=ks*o,i={...t,bleedRatio:o};return n&&r>0?{...i,seamBleed:n.has(e)?r:void 0,seamEdges:n.get(e)}:i}function mo(e){return{updatesDisabled:e.stableTriangleColorFreezeFrames===0,freezeFrames:Math.max(1,Math.floor(e.stableTriangleColorFreezeFrames??1)),colorFrame:Math.max(0,Math.floor(e.stableTriangleColorFrame??0)),maxStep:Math.max(0,Math.floor(e.stableTriangleColorMaxStep??0))}}function ur(e,n){return!n.updatesDisabled&&(n.freezeFrames<=1||(n.colorFrame+e)%n.freezeFrames===0)}function bt(e,n,t,o,r,i){return t?i.updatesDisabled||o==="plan-only"||o==="transform-only"?!1:r==="adaptive"||e.__polycssSolidTriangleColor===void 0?!0:ur(n,i):!0}function fo(e,n){let t=e;t.__polycssSolidTrianglePrimitive!==n&&(n==="corner-bevel"?(e.style.width="",e.style.height="",e.style.backgroundColor="",e.style.borderWidth="",e.style.borderTopLeftRadius="",e.style.borderTopRightRadius="",e.style.removeProperty("corner-top-left-shape"),e.style.removeProperty("corner-top-right-shape")):(e.style.width="",e.style.height="",e.style.backgroundColor="",e.style.borderTopLeftRadius="",e.style.borderTopRightRadius="",e.style.removeProperty("corner-top-left-shape"),e.style.removeProperty("corner-top-right-shape"),e.style.borderWidth=n==="border-large"?Bs:""),t.__polycssSolidTrianglePrimitive=n)}function ho(e){let n=e;n.__polycssSolidTriangleHidden&&(e.style.visibility="",n.__polycssSolidTriangleHidden=!1)}function zt(e){let n=e;n.__polycssSolidTriangleHidden||(e.style.visibility="hidden",n.__polycssSolidTriangleHidden=!0)}function en(e,n){e.setAttribute("style",n.styleText),fo(e,n.primitive);let t=e;t.__polycssSolidTriangleBasis=n.basis,t.__polycssSolidTriangleHidden=!1,n.colorComputed&&(t.__polycssSolidTriangleColor=n.bakedColor??"",t.__polycssSolidTriangleColorRgb=n.bakedRgb,t.__polycssSolidTriangleColorAlpha=n.bakedAlpha),t.__polycssSolidTriangleColorFrame=void 0,(n.polygon.data||yt(e))&&ye(e,n.polygon)}function pr(e,n,t,o){if(!n.colorComputed){(n.polygon.data||yt(e))&&ye(e,n.polygon);return}let r=e,i=n.bakedColor??"",s=n.bakedRgb,c=n.bakedAlpha??1,l=r.__polycssSolidTriangleColor,p=r.__polycssSolidTriangleColorRgb,h=r.__polycssSolidTriangleColorAlpha??1,x=o??ur(n.index,t);if(!t.updatesDisabled&&l!==i&&(l===void 0||x)){let f=i,b=s;if(t.maxStep>0&&p&&s&&h===c){let y=Hs(p,s,t.maxStep);b=y,f=Is(y,c)}(f!==l||!Os(b,p))&&(e.style.color=f),r.__polycssSolidTriangleColor=f,r.__polycssSolidTriangleColorRgb=b,r.__polycssSolidTriangleColorAlpha=c,r.__polycssSolidTriangleColorFrame=t.colorFrame}(n.polygon.data||yt(e))&&ye(e,n.polygon)}function tn(e,n,t,o){let r=e;fo(e,n.primitive),r.__polycssSolidTriangleBasis!==n.basis&&(r.__polycssSolidTriangleBasis=n.basis),ho(e),e.style.transform=n.transformText,(n.colorComputed||n.polygon.data||yt(e))&&pr(e,n,t,o)}function go(e,n,t,o){ho(e),pr(e,n,t,o)}function nn(e,n){let t=e;fo(e,n.primitive),t.__polycssSolidTriangleBasis!==n.basis&&(t.__polycssSolidTriangleBasis=n.basis),ho(e),e.style.transform=n.transformText,(n.polygon.data||yt(e))&&ye(e,n.polygon)}function zs(e,n){let t=n.stableTriangleColorBudget;if(typeof t=="number"&&Number.isFinite(t)&&t>0)return t<=1?Math.max(1,Math.ceil(e*t)):Math.max(1,Math.floor(t));let o=Math.max(1,Math.floor(n.stableTriangleColorFreezeFrames??1));return Math.max(1,Math.ceil(e/o))}function mr(e,n,t){if(t.stableTriangleColorPolicy!=="adaptive")return null;if(t.stableTriangleColorFreezeFrames===0)return new Set;let o=Math.max(0,Math.floor(t.stableTriangleColorFrame??0)),r=Math.max(1,Math.floor(t.stableTriangleColorFreezeFrames??1));if(r<=1&&!Number.isFinite(t.stableTriangleColorBudget))return null;let i=zs(e.length,t),s=Math.max(1,Math.floor(t.stableTriangleColorMaxAge??Math.max(2,r*2))),c=[];for(let l=0;l<e.length;l++){let p=e[l],h=n[l];if(p.kind!=="triangle"||!h)continue;let x=p.element,f=x.__polycssSolidTriangleColor,b=h.bakedColor??"";if(f===b)continue;let y=x.__polycssSolidTriangleColorFrame??0,P=Math.max(0,o-y),v=Fs(f,b);c.push({index:l,score:(P>=s?1e6:0)+v*1e4+P})}return c.length===0?new Set:(c.sort((l,p)=>p.score-l.score),new Set(c.slice(0,i).map(l=>l.index)))}function on(e,n){let t=n.createElement("u");return en(t,e),ye(t,e.polygon,e.index),t}function Ns(e,n,t){let o=t.createElement("u");return zt(o),ye(o,e,n),o}function fr(e,n,t,o,r,i){let s=t,c=s.stableTriangleDebug,l=o&&r==="color-only";if(s.stableTriangleColorPolicy==="adaptive"||e.length!==n.length)return!1;let p=lr(s.stableTriangleMatrixDecimals),h=t.doc??(typeof document<"u"?document:null),x=h?Ye(h,t.strategies)??"border":"border";for(let b=0;b<e.length;b++){let y=e[b];if(y.kind!=="triangle"||y.polygonIndex!==b||!n[b])return!1}let f=cr(n,t);for(let b=0;b<e.length;b++){let y=e[b].element,P=n[b];if(l){if(bt(y,b,o,c,s.stableTriangleColorPolicy,i)){let C=Vs(P,b,t);if(!C)continue;go(y,C,i)}continue}let v=at(P,b,dr(b,f,t),{basis:y.__polycssSolidTriangleBasis,matrixDecimals:p,primitive:x,includeColor:r!=="plan-only"&&r!=="transform-only"&&bt(y,b,o,c,s.stableTriangleColorPolicy,i)});if(!v){zt(y);continue}o&&r==="plan-only"||(o&&r==="transform-only"?nn(y,v):o?tn(y,v,i):en(y,v))}return!0}function Nt(e,n={}){let t=n.doc??(typeof document<"u"?document:null);if(!t)return{rendered:[],dispose:()=>{}};let o=Ye(t,n.strategies);if(!o||e.some(c=>c.texture||c.vertices.length!==3))return null;let r=lr(n.stableTriangleMatrixDecimals),i=[],s=cr(e,n);for(let c=0;c<e.length;c+=1){let l=e[c],p=at(l,c,dr(c,s,n),{matrixDecimals:r,primitive:o}),h=p?on(p,t):Ns(l,c,t);i.push({polygonIndex:c,element:h,kind:"triangle",dispose:()=>{}})}return{rendered:i,dispose(){}}}import{stableTriangleMatrixDecimals as yr}from"@layoutit/polycss-core";function br(){return new Promise(e=>setTimeout(e,0))}async function yo(e){return performance.now()-e<Gs?e:(await br(),performance.now())}function vr(e,n){let t=bo(n.seamBleed),o=gr*t,r={...n,bleedRatio:t};return e.seamBleedEdges?.size&&o>0?{...r,seamBleed:o,seamEdges:e.seamBleedEdges}:{...r,seamBleed:void 0,seamEdges:void 0}}function xr(e,n){return Ws(e,{tileSize:n.tileSize,layerElevation:n.layerElevation,directionalLight:n.directionalLight,ambientLight:n.ambientLight})}function Pr(e,n,t){let o=bo(t.seamBleed),r=gr*o,i={...t,bleedRatio:o};return n&&r>0?{...i,seamBleed:n.has(e)?r:void 0,seamEdges:n.get(e)}:i}function vt(e,n={}){let t=n.doc??(typeof document<"u"?document:null);if(!t)return{};let o=vo(e,n),r=ht(t),i=e.map((s,c)=>$t(s,c,n,r,o[c]));return Kt(i,n.textureLighting??"baked",t,n.strategies)}function xt(e,n={}){let t=n.doc??(typeof document<"u"?document:null);if(!t)return{rendered:[],dispose:()=>{}};let o=n.textureLighting??"baked",r=n,i=o==="dynamic"&&r.skipDynamicNormalVars===!0,s=new Set(n.strategies?.disable??[]),c=!s.has("b"),l=c&&Vt(t),p=Ye(t,n.strategies),h=p!==null,x=!s.has("i")&&Ft(t),f=!s.has("i")&&It(t),b=vo(e,n),y=ht(t),P=xr(e,n),v=e.map((u,d)=>$t(u,d,Pr(d,P,n),y,b[d]));if(typeof window<"u"){let u=window,d=v[1];u.__vanillaPlan1={matrix:d?.matrix,canvasW:d?.canvasW,canvasH:d?.canvasH,vertexCount:e[1]?.vertices.length}}let C=n.solidPaintDefaults??(r.computeSolidPaintDefaults?Kt(v,o,t,n.strategies):void 0),F=C?{...n,solidPaintDefaults:C}:n,k=v.map(u=>u&&h&&et(u)?at(u.polygon,u.index,vr(u,F),{primitive:p??void 0}):null),z=v.map(u=>u&&x&&!et(u)&&!(c&&je(u))&&!(l&&We(u))?Gt(u):null),O=v.map((u,d)=>u&&(u.texture||!(c&&je(u))&&!k[d]&&!(l&&We(u))&&!z[d]&&!f?u:null)),{packed:Z,atlasScale:q}=Ot(O,n.textureQuality,t),D=new Map,H=[],V=!1,G=[];for(let u=0;u<e.length;u++){let d=v[u],T=k[u],w=z[u];if(!d)continue;let R=Z.entries[u];if(R){let L=uo(R,o,t,i);D.set(u,L),H.push({polygonIndex:u,element:L,kind:"atlas",plan:R,dispose:()=>{}})}else if(!d.texture&&c&&je(d)){let L=so(d,o,t,C,i);H.push({polygonIndex:u,element:L,kind:"solid",plan:d,dispose:()=>{}})}else if(!d.texture&&T){let L=on(T,t);H.push({polygonIndex:u,element:L,kind:"triangle",plan:d,dispose:()=>{}})}else if(!d.texture&&l&&We(d)){let L=co(d,o,t,C,i);H.push({polygonIndex:u,element:L,kind:"solid",plan:d,dispose:()=>{}})}else if(!d.texture&&w){let L=lo(d,w,o,t,C,i);H.push({polygonIndex:u,element:L,kind:"corner",plan:d,dispose:()=>{}})}else if(!d.texture&&f){let L=ao(d,o,t,C,i);H.push({polygonIndex:u,element:L,kind:"border",plan:d,dispose:()=>{}})}}H.sort((u,d)=>u.polygonIndex-d.polygonIndex);let A=Ht(Z.pages,o,t,q,()=>V).then(u=>{if(V){for(let d of u)d.url?.startsWith("blob:")&&URL.revokeObjectURL(d.url);return}G=u.flatMap(d=>d.url?.startsWith("blob:")?[d.url]:[]);for(let d=0;d<Z.pages.length;d++){let T=Z.pages[d],w=u[d];if(w)for(let R of T.entries){let L=D.get(R.index);!L||!w.url||ro(L,w,o,R,!0)}}}).catch(()=>{if(!V)for(let u of D.values())xe(u,"opacity","0.5"),xe(u,"outline","1px dashed rgba(255, 0, 0, 0.6)")});return{rendered:H,solidPaintDefaults:C??{},pagesReady:A,dispose(){V=!0;for(let u of G)URL.revokeObjectURL(u);G=[]}}}async function rn(e,n={},t=()=>!1){let o=n.doc??(typeof document<"u"?document:null);if(!o||t())return{rendered:[],solidPaintDefaults:{},dispose:()=>{}};let r=n.textureLighting??"baked",s=r==="dynamic"&&n.skipDynamicNormalVars===!0,c=new Set(n.strategies?.disable??[]),l=!c.has("b"),p=l&&Vt(o),h=Ye(o,n.strategies),x=h!==null,f=!c.has("i")&&Ft(o),b=!c.has("i")&&It(o);if(await br(),t())return{rendered:[],solidPaintDefaults:{},dispose:()=>{}};let y=vo(e,n),P=ht(o),v=xr(e,n),C=performance.now(),F=new Array(e.length);for(let u=0;u<e.length;u++)if(F[u]=$t(e[u],u,Pr(u,v,n),P,y[u]),C=await yo(C),t())return{rendered:[],solidPaintDefaults:{},dispose:()=>{}};let k=n.solidPaintDefaults??Kt(F,r,o,n.strategies),z=new Array(F.length),O=new Array(F.length),Z=new Array(F.length);for(let u=0;u<F.length;u++){let d=F[u],T=d&&x&&et(d)?at(d.polygon,d.index,vr(d,{...n,solidPaintDefaults:k}),{primitive:h??void 0}):null;z[u]=T;let w=d&&f&&!et(d)&&!(l&&je(d))&&!(p&&We(d))?Gt(d):null;if(O[u]=w,Z[u]=d&&(d.texture||!(l&&je(d))&&!T&&!(p&&We(d))&&!w&&!b?d:null),C=await yo(C),t())return{rendered:[],solidPaintDefaults:k,dispose:()=>{}}}let{packed:q,atlasScale:D}=Ot(Z,n.textureQuality,o),H=new Map,V=[],G=!1,A=[];for(let u=0;u<e.length;u++){let d=F[u],T=z[u],w=O[u];if(!d)continue;let R=q.entries[u];if(R){let L=uo(R,r,o,s);H.set(u,L),V.push({polygonIndex:u,element:L,kind:"atlas",plan:R,dispose:()=>{}})}else if(!d.texture&&l&&je(d)){let L=so(d,r,o,k,s);V.push({polygonIndex:u,element:L,kind:"solid",plan:d,dispose:()=>{}})}else if(!d.texture&&T){let L=on(T,o);V.push({polygonIndex:u,element:L,kind:"triangle",plan:d,dispose:()=>{}})}else if(!d.texture&&p&&We(d)){let L=co(d,r,o,k,s);V.push({polygonIndex:u,element:L,kind:"solid",plan:d,dispose:()=>{}})}else if(!d.texture&&w){let L=lo(d,w,r,o,k,s);V.push({polygonIndex:u,element:L,kind:"corner",plan:d,dispose:()=>{}})}else if(!d.texture&&b){let L=ao(d,r,o,k,s);V.push({polygonIndex:u,element:L,kind:"border",plan:d,dispose:()=>{}})}if(C=await yo(C),t()){for(let L of V)L.dispose();return{rendered:[],solidPaintDefaults:k,dispose:()=>{}}}}V.sort((u,d)=>u.polygonIndex-d.polygonIndex);let g=Ht(q.pages,r,o,D,()=>G||t()).then(u=>{if(G||t()){for(let d of u)d.url?.startsWith("blob:")&&URL.revokeObjectURL(d.url);return}A=u.flatMap(d=>d.url?.startsWith("blob:")?[d.url]:[]);for(let d=0;d<q.pages.length;d++){let T=q.pages[d],w=u[d];if(w)for(let R of T.entries){let L=H.get(R.index);!L||!w.url||ro(L,w,r,R,!0)}}}).catch(()=>{if(!(G||t()))for(let u of H.values())xe(u,"opacity","0.5"),xe(u,"outline","1px dashed rgba(255, 0, 0, 0.6)")});return{rendered:V,solidPaintDefaults:k,pagesReady:g,dispose(){G=!0;for(let u of A)URL.revokeObjectURL(u);A=[]}}}function sn(e,n,t,o={}){let r=o.textureLighting??"baked",i=o,s=i.optimizeStableTriangleStyle===!0&&r==="baked";if(!s||i.stableTriangleColorPolicy==="adaptive"||e.length!==t.polygonCount||n.length!==t.polygonCount||t.vertices.length<t.polygonCount*9)return!1;let c=i.stableTriangleDebug,l=i.stableTriangleUpdateMode??(c==="plan-only"||c==="transform-only"?c:"full");if(l==="color-only")return!1;let p=yr(i.stableTriangleMatrixDecimals),h=mo(i),x=o.tileSize??$s,f=o.layerElevation??x,b=o.doc??(typeof document<"u"?document:null),y=b?Ye(b,o.strategies)??"border":"border";for(let v=0;v<e.length;v++){let C=e[v],F=n[v];if(C.kind!=="triangle"||C.polygonIndex!==v||!F||F.vertices.length!==3||F.texture||F.material?.texture)return!1}let P=t.vertices;for(let v=0;v<e.length;v++){let C=e[v].element,F=n[v],k=v*9,z=P[k+1]*x,O=P[k]*x,Z=P[k+2]*f,q=P[k+4]*x,D=P[k+3]*x,H=P[k+5]*f,V=P[k+7]*x,G=P[k+6]*x,A=P[k+8]*f,g=po(F,v,o,{basis:C.__polycssSolidTriangleBasis,matrixDecimals:p,primitive:y,color:t.colors?.[v],includeColor:l!=="plan-only"&&l!=="transform-only"&&bt(C,v,s,c,i.stableTriangleColorPolicy,h)},z,O,Z,q,D,H,V,G,A);if(!g){zt(C);continue}l!=="plan-only"&&(l==="transform-only"?nn(C,g):tn(C,g,h))}return!0}function an(e,n,t={}){if(e.length!==n.length)return!1;let o=t,r=t.doc??(typeof document<"u"?document:null),i=t.textureLighting??"baked",s=new Set(t.strategies?.disable??[]),c=!s.has("b"),l=!!r&&c&&Vt(r),p=!!r&&!s.has("i")&&Ft(r),h=!!r&&!s.has("i")&&It(r),x=bo(o.seamBleed),f=r?ht(r,{bleed:hr*x}):{denomEps:Us,maxWeightRatio:js,bleed:hr*x,disableGuards:!1},b=o.optimizeStableTriangleStyle===!0&&i==="baked",y=o.stableTriangleDebug,P=o.stableTriangleUpdateMode??(y==="plan-only"||y==="transform-only"?y:"full"),v=b&&P==="color-only",C=mo(o),F=yr(o.stableTriangleMatrixDecimals),k=r?Ye(r,t.strategies)??"border":"border";if(fr(e,n,t,b,P,C))return!0;let z=[],O=[],Z=[];for(let D=0;D<e.length;D++){let H=e[D];if(H.polygonIndex!==D)return!1;let V=n[D];if(!V||v&&H.kind!=="triangle")return!1;if(H.kind==="atlas"){if(!H.plan||!nr(H.element,H.plan,V,i))return!1;continue}if(H.kind==="triangle"){let G=H.element;if(v){let g=o.stableTriangleColorPolicy==="adaptive"||bt(G,D,b,y,o.stableTriangleColorPolicy,C);O[D]=g?Ys(V,D,t):null;continue}let A=at(V,D,t,{basis:G.__polycssSolidTriangleBasis,matrixDecimals:F,primitive:k,includeColor:P!=="plan-only"&&P!=="transform-only"&&bt(G,D,b,y,o.stableTriangleColorPolicy,C)});if(!A){z[D]=null;continue}z[D]=A;continue}if(H.kind==="solid"){if(!H.plan||V.texture||V.vertices.length!==H.plan.polygon.vertices.length)return!1;Z[D]=H.plan;continue}if(H.kind==="border"){let G=$t(V,D,t,f);if(!G||G.texture||!h||c&&je(G)||l&&We(G)||p&&Gt(G))return!1;Z[D]=G;continue}if(H.kind==="corner"){let G=$t(V,D,t,f);if(!G||G.texture||!p||et(G)||c&&je(G)||l&&We(G)||!Gt(G))return!1;Z[D]=G;continue}return!1}let q=b&&P!=="plan-only"&&P!=="transform-only"?mr(e,v?O:z,o):null;for(let D=0;D<e.length;D++){let H=e[D];if(H.kind==="triangle"){if(v){let G=O[D];G&&go(H.element,G,C,q?.has(D));continue}let V=z[D];if(!V){zt(H.element);continue}if(b&&P==="plan-only")continue;b&&P==="transform-only"?nn(H.element,V):b?tn(H.element,V,C,q?.has(D)):en(H.element,V)}else if(H.kind==="solid"){let V=Z[D];if(!V||!ir(H.element,V,n[D],i,t,f,o.solidPaintDefaults))return!1}else if(H.kind==="border"){let V=Z[D];if(!V)return!1;sr(H.element,V,i,o.solidPaintDefaults)}else if(H.kind==="corner"){let V=Z[D],G=V?Gt(V):null;if(!V||!G)return!1;ar(H.element,V,G,i,o.solidPaintDefaults)}}return!0}import{computeTextureAtlasPlanPublic as na}from"@layoutit/polycss-core";import{formatMatrix3d as oa,formatCssLengthPx as ra,formatSolidQuadEntryMatrix as ia}from"@layoutit/polycss-core";import{formatBorderShapeEntryMatrix as sa,cssBorderShapeForPlan as aa}from"@layoutit/polycss-core";import{BASE_TILE as Pe,computeProjectiveQuadMatrix as la,normalFacesCamera as ca,parsePureColor as Mr,PROJECTIVE_QUAD_BLEED as da,resolveProjectiveQuadGuards as ua,rotateVec3 as pa,rotateVec3InWrapperCssFrame as ma,shadePolygon as fa,SOLID_QUAD_CANONICAL_SIZE as ha}from"@layoutit/polycss-core";var ga=[.4,-.7,.59],ya="#ffffff",ba=1,va="#ffffff",xa=.4,wr=1,Pa=8,Sa=da,qe=1e-6,Ca=ua({bleed:0}),Lr={t:[0,0,1],b:[0,0,-1],fl:[0,1,0],br:[0,-1,0],fr:[1,0,0],bl:[-1,0,0]},So=["t","b","bl","br","fr","fl"],Ea=new Map([["0,0,1","t"],["0,0,-1","b"],["0,1,0","fl"],["0,-1,0","br"],["1,0,0","fr"],["-1,0,0","bl"]]);function Sr(e){let n=[];for(let t of So)ca(Lr[t],e)&&n.push(t);return n.join("|")}function Ta(e,n,t){let o=e.__polycssVoxelBrushState??(e.__polycssVoxelBrushState={});o.color!==n&&(e.style.color=n,o.color=n),o.transform!==t&&(e.style.transform=t,o.transform=t)}function Aa(e){let n=e.vertices;if(n.length<3)return null;let t=n[0],o=0,r=0,i=0;for(let c=1;c+1<n.length;c+=1){let l=n[c],p=n[c+1],h=l[1]-t[1],x=l[0]-t[0],f=l[2]-t[2],b=p[1]-t[1],y=p[0]-t[0],P=p[2]-t[2];o-=x*P-f*y,r-=f*b-h*P,i-=h*y-x*b}let s=Math.hypot(o,r,i);return s<=1e-9?null:[Math.round(o/s),Math.round(r/s),Math.round(i/s)]}function Ma(e){if(e.texture||e.material||e.uvs||e.textureTriangles||e.vertices.length!==4)return null;let n=Aa(e),t=n?Ea.get(n.join(",")):void 0;if(!t)return null;let o=1/0,r=1/0,i=1/0,s=-1/0,c=-1/0,l=-1/0;for(let x of e.vertices)o=Math.min(o,x[0]),r=Math.min(r,x[1]),i=Math.min(i,x[2]),s=Math.max(s,x[0]),c=Math.max(c,x[1]),l=Math.max(l,x[2]);let p=1e-6,h=Oa(e.color);return Math.abs(l-i)<=p?{axis:"z",face:t,left:r*Pe,top:o*Pe,width:Math.max(0,(c-r)*Pe),height:Math.max(0,(s-o)*Pe),z:i*Pe,baseColor:h,bleed:xo()}:Math.abs(s-o)<=p?{axis:"x",face:t,left:r*Pe,top:i*Pe,width:Math.max(0,(c-r)*Pe),height:Math.max(0,(l-i)*Pe),z:-o*Pe,baseColor:h,bleed:xo()}:Math.abs(c-r)<=p?{axis:"y",face:t,left:i*Pe,top:o*Pe,width:Math.max(0,(l-i)*Pe),height:Math.max(0,(s-o)*Pe),z:-r*Pe,baseColor:h,bleed:xo()}:null}function xo(){return{left:0,right:0,top:0,bottom:0}}function wa(e){let n=o=>String(Number(o.toFixed(6))),t=`${e.item.baseColor}|${e.variableAxis}`;for(let o=0;o<3;o+=1)o!==e.variableAxis&&(t+=`|${o}:${n(e.fixed[o])}`);return t}function Cr(e){return[e[1]*Pe,e[0]*Pe,e[2]*Pe]}function Er(e,n){return e.axis==="x"?[n[0],n[2]]:e.axis==="y"?[n[2],n[1]]:[n[0],n[1]]}function La(e,n,t){let o=e.left,r=e.left+e.width,i=e.top,s=e.top+e.height;if(Math.abs(n[0]-t[0])<=qe){if(Math.abs(n[0]-o)<=qe)return"left";if(Math.abs(n[0]-r)<=qe)return"right"}if(Math.abs(n[1]-t[1])<=qe){if(Math.abs(n[1]-i)<=qe)return"top";if(Math.abs(n[1]-s)<=qe)return"bottom"}return null}function _a(e,n){let t=null;for(let o=0;o<3;o+=1)if(!(Math.abs(e[o]-n[o])<=qe)){if(t!==null)return null;t=o}return t}function Ra(e,n,t){let o=n.vertices,r=Cr(o[t]),i=Cr(o[(t+1)%o.length]),s=La(e,Er(e,r),Er(e,i));if(!s)return null;let c=_a(r,i);if(c===null)return null;let l=Math.min(r[c],i[c]),p=Math.max(r[c],i[c]);return p-l>qe?{item:e,side:s,variableAxis:c,fixed:r,start:l,end:p}:null}function Tr(e){e.item.bleed[e.side]=Math.max(e.item.bleed[e.side],Sa)}function ka(e,n){let t=new Map;for(let o of n){let r=e[o.sourceIndex];if(r)for(let i=0;i<r.vertices.length;i+=1){let s=Ra(o,r,i);if(!s)continue;let c=wa(s),l=t.get(c);l?l.push(s):t.set(c,[s])}}for(let o of t.values()){if(o.length<2)continue;o.sort((i,s)=>i.start-s.start||i.end-s.end);let r=[];for(let i of o){r=r.filter(s=>s.end>i.start+qe);for(let s of r)s.item.sourceIndex!==i.item.sourceIndex&&(Tr(s),Tr(i));r.push(i)}}}function Da(e){let n=Mr(e);return n?{r:n.rgb[0],g:n.rgb[1],b:n.rgb[2],alpha:n.alpha}:{r:255,g:255,b:255,alpha:1}}function Oa(e){if(!e)return"#cccccc";let n=Mr(e);if(!n)return e;let t={r:n.rgb[0],g:n.rgb[1],b:n.rgb[2],alpha:n.alpha};if(t.alpha<1){let o=Math.round(Math.max(0,t.alpha)*1e3)/1e3;return`rgba(${Po(t.r)}, ${Po(t.g)}, ${Po(t.b)}, ${o})`}return Ha(t)}function Ha({r:e,g:n,b:t}){let o=r=>Math.round(Math.max(0,Math.min(255,r))).toString(16).padStart(2,"0");return`#${o(e)}${o(n)}${o(t)}`}function Po(e){return Math.round(Math.max(0,Math.min(255,e)))}function Ia(e,n,t,o){let r=t?.direction??ga,i=Math.hypot(r[0],r[1],r[2])||1,s=r[0]/i,c=r[1]/i,l=r[2]/i,p=Math.max(0,t?.intensity??ba)*Math.max(0,e[0]*s+e[1]*c+e[2]*l),h=Math.max(0,o?.intensity??xa),x=t?.color??ya,f=o?.color??va,b=fa(n,p,x,f,h),y=Da(n);if(y.alpha>=1)return b;let P=parseInt(b.slice(1,3),16),v=parseInt(b.slice(3,5),16),C=parseInt(b.slice(5,7),16);return`rgba(${P}, ${v}, ${C}, ${y.alpha})`}function Fa(e){if(!e?.length)return[];let n=[];for(let t=0;t<e.length;t+=1){let o=e[t],r=Ma(o);if(!r||r.width<=0||r.height<=0)return[];n.push({...r,sourceIndex:t})}return ka(e,n),n}function Va(e){return e.axis==="x"?{xAxis:[1,0,0],yAxis:[0,0,1],normal:[0,-1,0],tx:0,ty:-e.z,tz:0}:e.axis==="y"?{xAxis:[0,0,1],yAxis:[0,1,0],normal:[-1,0,0],tx:-e.z,ty:0,tz:0}:{xAxis:[1,0,0],yAxis:[0,1,0],normal:[0,0,1],tx:0,ty:0,tz:e.z}}function Ba(e){let n=e.left,t=e.top,o=e.left+e.width,r=e.top+e.height;return[n,t,o,t,o,r,n,r]}function za(e){return new Map([[0,e.bleed.top],[1,e.bleed.right],[2,e.bleed.bottom],[3,e.bleed.left]])}function Na(e,n){let t=e.split(",").map(Number);if(t.length!==16||t.some(r=>!Number.isFinite(r)))return null;let o=ha/n;for(let r=0;r<8;r+=1)t[r]*=o;return`matrix3d(${t.map(r=>Number(r.toFixed(6))).join(",")})`}function Ar(e,n){let t=e.left-e.bleed.left,o=e.top-e.bleed.top,r=e.width+e.bleed.left+e.bleed.right,i=e.height+e.bleed.top+e.bleed.bottom,s=e.z,c=r/n,l=i/n;return`matrix3d(${(e.axis==="x"?[c,0,0,0,0,0,l,0,0,-1,0,0,t,-s,o,1]:e.axis==="y"?[0,0,c,0,0,l,0,0,-1,0,0,0,-s,o,t,1]:[c,0,0,0,0,l,0,0,0,0,1,0,t,o,s,1]).map(h=>Number(h.toFixed(6))).join(",")})`}function Ga(e,n){let{xAxis:t,yAxis:o,normal:r,tx:i,ty:s,tz:c}=Va(e),l=la(Ba(e),t,o,r,i,s,c,Ca,za(e));return l?Na(l,n)??Ar(e,n):Ar(e,n)}function $a(e){let n=e.defaultView?.matchMedia;return n?n("(pointer: coarse)").matches||n("(hover: none)").matches:!1}function Ua(e){return $a(e)?Pa:wr}function ja(e){return e.axis==="x"?[e.left+e.width/2,-e.z,e.top+e.height/2]:e.axis==="y"?[-e.z,e.top+e.height/2,e.left+e.width/2]:[e.left+e.width/2,e.top+e.height/2,e.z]}function Wa(e,n){let t=ja(e),o=n.meshRotation;o&&(t=ma(t,o));let[r,i]=pa(t,n.rotX,0,n.rotY);return{x:r,y:i}}function Ya(e,n,t){let o=e.filter(f=>n.has(f.face)).map(f=>({item:f,...Wa(f,t)}));if(o.length===0)return[];let r=1/0,i=-1/0,s=1/0,c=-1/0;for(let f of o)r=Math.min(r,f.x),i=Math.max(i,f.x),s=Math.min(s,f.y),c=Math.max(c,f.y);let l=4,p=Math.max(1e-6,i-r),h=Math.max(1e-6,c-s),x=new Map;for(let f of o){let b=Math.min(l-1,Math.max(0,Math.floor((f.x-r)/p*l))),y=Math.min(l-1,Math.max(0,Math.floor((f.y-s)/h*l))),P=`${b}:${y}`,v=x.get(P);v||(v={tx:b,ty:y,sourceIndex:f.item.sourceIndex,items:[]},x.set(P,v)),v.items.push(f.item),v.sourceIndex=Math.min(v.sourceIndex,f.item.sourceIndex)}return Array.from(x.values()).sort((f,b)=>f.ty-b.ty||f.tx-b.tx||f.sourceIndex-b.sourceIndex).flatMap(f=>f.items)}function _r(e){let{doc:n,wrapper:t,polygons:o,directionalLight:r,ambientLight:i}=e,s=Fa(o);if(s.length===0)return null;let c=new Set(s.map(g=>g.face));t.classList.add("polycss-voxel-mesh");let l=Ua(n);l!==wr&&t.style.setProperty("--polycss-voxel-primitive",`${l}px`);let p=new Map,h=(g,u)=>{let d=`${g}|${u}`,T=p.get(d);if(T)return T;let w=Ia(Lr[g],u,r,i);return p.set(d,w),w},x=new Map,f=new Map,b=new Map,y=new Map;for(let g of s){let u=y.get(g.face);u||(u=[],y.set(g.face,u)),u.push(g)}let P="",v=0,C=new Set,F=g=>{let u=x.get(g.sourceIndex);return u||(u=n.createElement("b"),x.set(g.sourceIndex,u),Ta(u,h(g.face,g.baseColor),Ga(g,l))),u},k=g=>{let u=f.get(g);return u||(u=n.createElement("span"),u.className=`polycss-voxel-face polycss-voxel-face-${g}`,u.dataset.polycssVoxelFace=g,u.__polycssVoxelFaceHost=!0,f.set(g,u)),u},z=()=>{for(let g of Array.from(t.childNodes))if(!g.__polycssVoxelFaceHost)return g;return null},O=(g,u)=>{let d=u.map(R=>R.sourceIndex).join(",");if(b.get(g)===d)return;let T=k(g),w=n.createDocumentFragment();for(let R of u)w.appendChild(F(R));T.replaceChildren(w),b.set(g,d)},Z=()=>{for(let g of So)c.has(g)&&O(g,y.get(g)??[])},q=g=>new Set(g.split("|").filter(Boolean)),D=g=>{let u=q(g);return So.filter(d=>u.has(d)&&c.has(d))},H=g=>{let u=0;for(let d of g)u+=y.get(d)?.length??0;return u},V=g=>{let u=new Set,d=[],T=new Map;for(let w of g){u.has(w.face)||(u.add(w.face),d.push(w.face));let R=T.get(w.face);R||(R=[],T.set(w.face,R)),R.push(w)}return{orderedFaces:d,itemsByFace:T}},G=(g,u)=>{let d=new Set(g);for(let T of C){if(d.has(T))continue;let w=f.get(T);w?.parentNode===t&&t.removeChild(w)}if(u){let T=n.createDocumentFragment();for(let w of g)T.appendChild(k(w));t.insertBefore(T,z()),C=d;return}for(let T=0;T<g.length;T+=1){let w=g[T],R=k(w);if(R.parentNode===t)continue;let L=null;for(let te=T+1;te<g.length;te+=1){let _=f.get(g[te]);if(_?.parentNode===t){L=_;break}}t.insertBefore(R,L??z())}C=d},A=(g,u,d)=>{if(!d){let te=D(g);G(te,!1),v=H(te);return}let T=new Set(g.split("|").filter(Boolean)),w=Ya(s,T,u),{orderedFaces:R,itemsByFace:L}=V(w);for(let te of R)O(te,L.get(te)??[]);G(R,!0),v=w.length};return Z(),{get brushCount(){return v},render(g){P=Sr(g),A(P,g,!0)},syncCamera(g){let u=Sr(g);u!==P&&(P=u,A(u,g,!1))},dispose(){for(let g of f.values())g.remove();t.classList.remove("polycss-voxel-mesh"),t.style.removeProperty("--polycss-voxel-primitive"),x.clear(),f.clear(),b.clear(),v=0,C=new Set,P=""}}}var Rr="polycss-styles";function kr(e){let n=e??(typeof document<"u"?document:void 0);if(!n||n.getElementById(Rr))return;let t=n.createElement("style");t.id=Rr,t.textContent=Xa,n.head.appendChild(t)}var Xa=`
|
|
1
|
+
import{CAMERA_BACKFACE_CULL_EPS as Ho,DEFAULT_SEAM_BLEED as Pi,VOXEL_CAMERA_CULL_NORMAL_LIMIT as wl,cameraCullNormalKey as Ml,cameraCullVisibleSignature as Ll,computeSceneBbox as _l,computeLightVisibility as Rl,capturePolyCameraSnapshot as kl,findOverlappingPolygonDuplicates as yi,inverseRotateVec3 as Fo,isAxisAlignedSurfaceNormal as Dl,isVoxelCameraCullableNormalGroups as Ol,normalFacesCamera as Il,optimizeMeshPolygons as Hl,parseHexColor as Fl,polygonCssSurfaceNormal as bi}from"@layoutit/polycss-core";import{packTextureAtlasPlansWithScaleCore as os}from"@layoutit/polycss-core";function rs(e){if(!e)return!1;let t=(e.defaultView??(typeof window<"u"?window:void 0))?.matchMedia;return t?t("(pointer: coarse)").matches||t("(hover: none)").matches:!1}function It(e,n,t,o){return os(e,n,rs(t),o)}import{buildTextureEdgeRepairSets as ca,buildSeamBleedPolygonEdges as ua,buildSeamBleedPolygonSet as da}from"@layoutit/polycss-core";import{TEXTURE_TRIANGLE_BLEED as is,TEXTURE_EDGE_REPAIR_ALPHA_MIN as ss,TEXTURE_EDGE_REPAIR_SOURCE_ALPHA_MIN as as,TEXTURE_EDGE_REPAIR_RADIUS as Yo}from"@layoutit/polycss-core";import{expandClipPoints as ls}from"@layoutit/polycss-core";import{BASIS_EPS as cs}from"@layoutit/polycss-core";var yt=new Map;function us(e){let n=yt.get(e);return n||(n=new Promise((t,o)=>{let i=new Image;i.decoding="async",i.crossOrigin="anonymous",i.onload=()=>t(i),i.onerror=()=>o(new Error(`texture load failed: ${e}`)),i.src=e}),yt.set(e,n),n.then(()=>{yt.get(e)===n&&yt.delete(e)},()=>{yt.get(e)===n&&yt.delete(e)})),n}function De(e,n,t=1,o=0,i=0,r=1,s=0,c=0){e.setTransform(t*n,o*n,i*n,r*n,s*n,c*n)}function io(e){let n=e/255;return n<=.04045?n/12.92:Math.pow((n+.055)/1.055,2.4)}function so(e){let n=e<=.0031308?e*12.92:1.055*Math.pow(e,.4166666666666667)-.055;return Math.max(0,Math.min(255,Math.round(n*255)))}function ds(e,n,t,o,i,r,s){let c=Math.round(n*s),l=Math.round(t*s),d=Math.max(1,Math.round(o*s)),h=Math.max(1,Math.round(i*s)),v=e.getImageData(c,l,d,h),f=v.data,b=r.r,y=r.g,P=r.b;for(let x=0;x<f.length;x+=4)f[x+3]!==0&&(f[x]=so(io(f[x])*b),f[x+1]=so(io(f[x+1])*y),f[x+2]=so(io(f[x+2])*P));e.putImageData(v,c,l)}function ps(e,n,t,o,i,r,s){let c=n.naturalWidth||n.width||1,l=n.naturalHeight||n.height||1,d=Math.max(i/c,r/l),h=c*d,v=l*d;De(e,s),e.drawImage(n,t+(i-h)/2,o+(r-v)/2,h,v)}function bt(e,n){return Math.max(0,Math.min(n,e))}function Xo(e,n,t,o,i,r,s,c){let l=n.naturalWidth||n.width||1,d=n.naturalHeight||n.height||1,h=bt(Math.min(t.minU,t.maxU)*l,l),v=bt(Math.max(t.minU,t.maxU)*l,l),f=bt(Math.min(t.minV,t.maxV)*d,d),b=bt(Math.max(t.minV,t.maxV)*d,d),y=Math.floor(h),P=Math.floor(f),x=Math.ceil(v)-y,E=Math.ceil(b)-P;x<1&&(y=Math.floor(bt((t.minU+t.maxU)/2*l,l-1)),x=1),E<1&&(P=Math.floor(bt((t.minV+t.maxV)/2*d,d-1)),E=1),y=Math.max(0,Math.min(l-1,y)),P=Math.max(0,Math.min(d-1,P)),x=Math.max(1,Math.min(l-y,x)),E=Math.max(1,Math.min(d-P,E)),De(e,c),e.drawImage(n,y,P,x,E,o,i,r,s)}function Jo(e){return e==="repeat"||e==="mirrored-repeat"}function Zo(e,n){return Jo(e)?Math.floor(n):0}function Qo(e,n){return Jo(e)?Math.ceil(n)-1:0}function qo(e,n){return e==="mirrored-repeat"&&Math.abs(n%2)===1}function Ko(e,n,t,o,i,r,s){let c=i?Zo(r,i.minU):0,l=i?Qo(r,i.maxU):0,d=i?Zo(s,i.minV):0,h=i?Qo(s,i.maxV):0;for(let v=c;v<=l;v++)for(let f=d;f<=h;f++){let b=qo(r,v),y=qo(s,f);if(!b&&!y){e.drawImage(n,v*t,f*o);continue}e.save(),e.translate((b?v+1:v)*t,(y?f+1:f)*o),e.scale(b?-1:1,y?-1:1),e.drawImage(n,0,0),e.restore()}}function ao(e,n,t,o){for(let i=0;i<o.length;i+=2){let r=n+o[i],s=t+o[i+1];i===0?e.moveTo(r,s):e.lineTo(r,s)}e.closePath()}function tn(e,n,t,o,i,r){for(let s=0;s<o.length;s+=2){let c=n+o[s]+i,l=t+o[s+1]+r;s===0?e.moveTo(c,l):e.lineTo(c,l)}e.closePath()}function ms(e,n,t,o){De(e,o),e.beginPath(),ao(e,n.x,n.y,n.screenPts),e.clip(),De(e,o),e.fillStyle=t==="dynamic"?n.polygon.color??"#cccccc":n.shadedColor,e.fillRect(n.x,n.y,n.canvasW,n.canvasH)}function nn(e,n,t,o,i){n.polygon.textureAlphaMode==="opaque"&&(De(e,t),e.fillStyle=n.polygon.color??"#cccccc",e.fillRect(n.x+o,n.y+i,n.canvasW,n.canvasH))}function fs(e,n,t,o,i=0,r=0){if(n.textureTriangles?.length){let s=t.naturalWidth||t.width||1,c=t.naturalHeight||t.height||1;for(let l of n.textureTriangles){let d=ls(l.screenPts,is*(n.bleedRatio??1));e.save(),De(e,o),e.beginPath(),tn(e,n.x,n.y,d,i,r),e.clip(),nn(e,n,o,i,r),l.uvAffine?(De(e,o,l.uvAffine.a/s,l.uvAffine.c/s,l.uvAffine.b/c,l.uvAffine.d/c,n.x+l.uvAffine.e+i,n.y+l.uvAffine.f+r),Ko(e,t,s,c,l.uvSampleRect,n.polygon.textureWrap?.s,n.polygon.textureWrap?.t)):l.uvSampleRect&&Xo(e,t,l.uvSampleRect,n.x+i,n.y+r,n.canvasW,n.canvasH,o),e.restore()}}else if(n.uvAffine){let s=t.naturalWidth||t.width||1,c=t.naturalHeight||t.height||1,l=n.polygon.textureAlphaMode==="opaque";l&&(e.save(),De(e,o),e.beginPath(),tn(e,n.x,n.y,n.screenPts,i,r),e.clip(),nn(e,n,o,i,r)),De(e,o,n.uvAffine.a/s,n.uvAffine.c/s,n.uvAffine.b/c,n.uvAffine.d/c,n.x+n.uvAffine.e+i,n.y+n.uvAffine.f+r),Ko(e,t,s,c,n.uvSampleRect,n.polygon.textureWrap?.s,n.polygon.textureWrap?.t),l&&e.restore()}else if(n.uvSampleRect){let s=n.polygon.textureAlphaMode==="opaque";s&&(e.save(),De(e,o),e.beginPath(),tn(e,n.x,n.y,n.screenPts,i,r),e.clip(),nn(e,n,o,i,r)),Xo(e,t,n.uvSampleRect,n.x+i,n.y+r,n.canvasW,n.canvasH,o),s&&e.restore()}else{let s=n.polygon.textureAlphaMode==="opaque";s&&(e.save(),De(e,o),e.beginPath(),tn(e,n.x,n.y,n.screenPts,i,r),e.clip(),nn(e,n,o,i,r)),ps(e,t,n.x+i,n.y+r,n.canvasW,n.canvasH,o),s&&e.restore()}}function gs(e,n,t,o,i,r){let s=i-t,c=r-o,l=s*s+c*c;if(l<=cs)return Math.hypot(e-t,n-o);let d=Math.max(0,Math.min(1,((e-t)*s+(n-o)*c)/l));return Math.hypot(e-(t+s*d),n-(o+c*d))}function hs(e,n,t,o){let i=1/0,r=t.length/2;for(let s of o){if(s<0||s>=r)continue;let c=s*2,l=(s+1)%r*2;i=Math.min(i,gs(e,n,t[c],t[c+1],t[l],t[l+1]))}return i}function ys(e,n,t,o,i,r){let s=Math.max(0,o-r),c=Math.min(n-1,o+r),l=Math.max(0,i-r),d=Math.min(t-1,i+r),h=null,v=1/0;for(let f=l;f<=d;f++)for(let b=s;b<=c;b++){if(b===o&&f===i)continue;let y=b-o,P=f-i,x=y*y+P*P;if(x>r*r||x>=v)continue;let E=(f*n+b)*4;e[E+3]<as||(h=E,v=x)}return h}function bs(e,n,t){if(!n.textureEdgeRepair||!n.texture||!n.textureEdgeRepairEdges||n.textureEdgeRepairEdges.size===0)return;let o=e.canvas;if(!o)return;let i=Math.max(0,Math.floor(n.x*t)),r=Math.max(0,Math.floor(n.y*t)),s=Math.max(1,Math.min(o.width-i,Math.ceil(n.canvasW*t))),c=Math.max(1,Math.min(o.height-r,Math.ceil(n.canvasH*t)));if(s<=0||c<=0)return;let l;try{l=e.getImageData(i,r,s,c)}catch{return}let d=l.data,h=new Uint8ClampedArray(d),v=Math.max(Yo,Yo/t),f=Math.max(2,Math.ceil(v*t)+1),b=!1;for(let y=0;y<c;y++)for(let P=0;P<s;P++){let x=(y*s+P)*4,E=d[x+3];if(E<ss||E===255)continue;let O=(i+P+.5)/t-n.x,R=(r+y+.5)/t-n.y;if(hs(O,R,n.screenPts,n.textureEdgeRepairEdges)>v)continue;let j=ys(h,s,c,P,y,f);j!==null&&(d[x]=h[j],d[x+1]=h[j+1],d[x+2]=h[j+2],d[x+3]=255,b=!0)}b&&e.putImageData(l,i,r)}function xs(e){if(typeof e.toBlob=="function")return new Promise(n=>{e.toBlob(t=>{n(t?URL.createObjectURL(t):null)},"image/png")});try{return Promise.resolve(e.toDataURL("image/png"))}catch{return Promise.resolve(null)}}async function vs(e,n,t,o){let i=t.createElement("canvas");i.width=Math.max(1,Math.ceil(e.width*o)),i.height=Math.max(1,Math.ceil(e.height*o));let r=e.entries.some(h=>h.textureEdgeRepair&&h.texture&&h.textureEdgeRepairEdges&&h.textureEdgeRepairEdges.size>0),s=i.getContext("2d",r?{willReadFrequently:!0}:void 0);if(!s)return{width:e.width,height:e.height,url:null};let c=Array.from(new Set(e.entries.flatMap(h=>h.texture?[h.texture]:[]))),l=new Map;await Promise.all(c.map(async h=>{l.set(h,await us(h))}));for(let h of e.entries){let v=h.texture?l.get(h.texture):null;if(!h.texture){s.save(),ms(s,h,n,o),s.restore();continue}v&&(s.save(),De(s,o),s.beginPath(),ao(s,h.x,h.y,h.screenPts),s.clip(),fs(s,h,v,o),s.restore()),h.texture&&n==="baked"&&(s.save(),De(s,o),s.beginPath(),ao(s,h.x,h.y,h.screenPts),s.clip(),ds(s,h.x,h.y,h.canvasW,h.canvasH,h.textureTint,o),s.restore()),bs(s,h,o)}let d=await xs(i);return i.width=1,i.height=1,{width:e.width,height:e.height,url:d}}async function Ht(e,n,t,o,i){let r=[];for(let s of e){if(i())break;r.push(await vs(s,n,t,o))}return r}import{isFullRectSolid as $e,isSolidTrianglePlan as et,isProjectiveQuadPlan as Ue,fullRectBounds as Iu,safariCssProjectiveUnsupported as er,incrementCount as Hu,dominantCountKey as Fu,filterAtlasPlans as Bu,getSolidPaintDefaultsForPlansCore as Ss}from"@layoutit/polycss-core";import{parseHex as Cs,rgbKey as Es}from"@layoutit/polycss-core";import{computeTextureAtlasPlan as ju,buildBasisHints as Gu}from"@layoutit/polycss-core";import{resolveProjectiveQuadGuards as Ps}from"@layoutit/polycss-core";function xt(e,n){let o=e?.defaultView?.__polycssProjectiveQuadGuards,i=n&&o?{...n,...o}:o??n;return Ps(i)}function Ft(e){if(!!!(e.defaultView?.CSS??(typeof CSS<"u"?CSS:void 0))?.supports?.("border-shape","polygon(0 0, 100% 0, 0 100%) circle(0)"))return!1;let i=(e.defaultView??(typeof window<"u"?window:void 0))?.matchMedia;return i?i("(pointer: fine)").matches&&i("(hover: hover)").matches:!0}function tr(e){if(nr(e))return!0;let t=(e.defaultView??(typeof window<"u"?window:void 0))?.navigator?.userAgent??"";return t?!er(t):!0}function Bt(e){let n=e.defaultView?.CSS??(typeof CSS<"u"?CSS:void 0);return!!n?.supports?.("corner-top-left-shape","bevel")&&!!n.supports("corner-top-right-shape","bevel")&&!!n.supports("corner-bottom-right-shape","bevel")&&!!n.supports("corner-bottom-left-shape","bevel")}function nr(e){let n=e.defaultView?.CSS??(typeof CSS<"u"?CSS:void 0);return!!n?.supports?.("corner-top-left-shape","bevel")&&!!n.supports("corner-top-right-shape","bevel")}function Ts(e){let t=(e.defaultView??(typeof window<"u"?window:void 0))?.navigator?.userAgent??"";return/\bFirefox\//.test(t)}function We(e,n){return n?.disable?.includes("u")?null:nr(e)?"corner-bevel":tr(e)?Ts(e)?"border-large":"border":null}function zt(e){let t=(e.defaultView??(typeof window<"u"?window:void 0))?.navigator?.userAgent??"";return t?!er(t):!0}function on(e,n,t,o,i){let r=new Set(o?.disable??[]);return Ss(e,n,r,{solidTriangleSupported:tr(t),projectiveQuadSupported:zt(t),cornerShapeSupported:Bt(t),borderShapeSupported:Ft(t)},Cs,Es,i)}import{ASYNC_RENDER_BUDGET_MS as Ks,DEFAULT_SEAM_BLEED as Cr,DEFAULT_TILE as Js,PROJECTIVE_QUAD_DENOM_EPS as ea,PROJECTIVE_QUAD_MAX_WEIGHT_RATIO as ta,PROJECTIVE_QUAD_BLEED as Sr,resolveBleedRatio as Ao}from"@layoutit/polycss-core";import{buildBasisHints as wo,buildSeamBleedPolygonEdges as na,computeTextureAtlasPlan as Wt,resolvePolyTextureLeafGeometry as Er}from"@layoutit/polycss-core";import{cornerShapeGeometryForPlan as Ut}from"@layoutit/polycss-core";import{formatCssLength as Me,formatMatrix3dValues as ws,formatSolidQuadMatrix as Ms,resolvePolyTextureImageRendering as Ls}from"@layoutit/polycss-core";import{shadePolygon as _s}from"@layoutit/polycss-core";import{parseHex as or,rgbKey as rr}from"@layoutit/polycss-core";function ve(e,n,t){let o=e.getAttribute("style")??"",i=`${n}:${t}`,r=n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),s=new RegExp(`(^|;)\\s*${r}\\s*:[^;]*`,"i"),c=s.test(o)?o.replace(s,(l,d)=>`${d}${i}`):`${o}${o.trim()&&!o.trim().endsWith(";")?";":""}${i}`;c!==o&&e.setAttribute("style",c)}function tt(e,n){let t=e.getAttribute("style")??"";if(!t||!t.toLowerCase().includes(n.toLowerCase()))return;let o=n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),i=new RegExp(`^\\s*${o}\\s*:`,"i"),r=t.split(";").map(s=>s.trim()).filter(s=>s&&!i.test(s)).join(";");r?e.setAttribute("style",r):e.removeAttribute("style")}function Vt(e,n,t,o=!1){if(n==="dynamic"){let i=or(e.polygon.color??"#cccccc"),r=o?"":`;--pnx:${e.normal[0].toFixed(4)};--pny:${e.normal[1].toFixed(4)};--pnz:${e.normal[2].toFixed(4)}`;return rr(i)!==t?.dynamicColorKey&&(r+=`;--psr:${(i.r/255).toFixed(4)};--psg:${(i.g/255).toFixed(4)};--psb:${(i.b/255).toFixed(4)}`),r}return e.shadedColor?`;color:${e.shadedColor}`:""}function As(e,n){ve(e,"--pnx",n.normal[0].toFixed(4)),ve(e,"--pny",n.normal[1].toFixed(4)),ve(e,"--pnz",n.normal[2].toFixed(4))}function vt(e,n,t,o){if(t==="dynamic"){tt(e,"color"),tt(e,"background"),As(e,n);let i=or(n.polygon.color??"#cccccc");rr(i)===o?.dynamicColorKey?(tt(e,"--psr"),tt(e,"--psg"),tt(e,"--psb")):(ve(e,"--psr",(i.r/255).toFixed(4)),ve(e,"--psg",(i.g/255).toFixed(4)),ve(e,"--psb",(i.b/255).toFixed(4)))}else n.shadedColor!==o?.paintColor?(tt(e,"background"),ve(e,"color",n.shadedColor)):(tt(e,"background"),tt(e,"color"))}import{formatBorderShapeElementStyle as ir,formatCornerShapeElementStyle as sr}from"@layoutit/polycss-core";import{atlasCanonicalSizeForEntry as sn}from"@layoutit/polycss-core";import{computeProjectiveQuadMatrix as Rs,stableBasisFromPlan as ks}from"@layoutit/polycss-core";import{DEFAULT_LIGHT_DIR as Ds,DEFAULT_LIGHT_COLOR as Os,DEFAULT_LIGHT_INTENSITY as Is,DEFAULT_AMBIENT_COLOR as Hs,DEFAULT_AMBIENT_INTENSITY as Fs}from"@layoutit/polycss-core";var ar="polycss-corner-shape-solid";function Nt(e){return e.atlasLeafWidth??sn(e)}function jt(e){return e.atlasLeafHeight??sn(e)}function lr(e,n){return Ls(e.polygon,n)}function rn(e){return e==="pixelated"?";image-rendering:pixelated":""}function uo(e,n,t,o,i,r,s,c,l){e.setAttribute("data-polycss-leaf","polygon"),e.setAttribute("data-polycss-texture-backend",n),e.setAttribute("data-polycss-texture-ready",t?"true":"false"),e.setAttribute("data-polycss-texture-image-rendering",o),i?e.setAttribute("data-polycss-texture-leaf-sizing",i):e.removeAttribute("data-polycss-texture-leaf-sizing"),r?e.setAttribute("data-polycss-texture-projection",r):e.removeAttribute("data-polycss-texture-projection"),s?e.setAttribute("data-polycss-texture-lighting",s):e.removeAttribute("data-polycss-texture-lighting"),typeof c=="number"?e.setAttribute("data-polycss-texture-leaf-width",String(c)):e.removeAttribute("data-polycss-texture-leaf-width"),typeof l=="number"?e.setAttribute("data-polycss-texture-leaf-height",String(l)):e.removeAttribute("data-polycss-texture-leaf-height")}var lo=new WeakMap,co=new WeakMap;function ye(e,n,t){let o=lo.get(e),i=co.get(e),r=typeof t=="number";if(!n.data&&!r&&(!o||o.length===0)){e.__polycssHasDataAttrs=!1;return}let s=new Map;if(n.data)for(let[l,d]of Object.entries(n.data))s.set(l,String(d));if(n.doubleSided===!0&&s.set("polycss-double-sided","true"),r&&s.set("poly-index",String(t)),o)for(let l of o)s.has(l)||e.removeAttribute(`data-${l}`);for(let[l,d]of s)i?.get(l)!==d&&e.setAttribute(`data-${l}`,d);let c=Array.from(s.keys());c.length>0?lo.set(e,c):lo.delete(e),s.size>0?co.set(e,s):co.delete(e),e.__polycssHasDataAttrs=c.length>0}function Pt(e){return e.__polycssHasDataAttrs===!0}function po(e,n,t,o,i=t==="dynamic",r){if(!n.url)return;let s=lr(o,r),c=`url(${n.url})`,l=o.canvasW||1,d=o.canvasH||1,h=sn(o),v=Nt(o),f=jt(o),b=`${Me(-o.x/l*v)} ${Me(-o.y/d*f)}`,y=`${Me(n.width/l*v)} ${Me(n.height/d*f)}`,P=`transform:matrix3d(${o.atlasMatrix});--polycss-atlas-size:${h}px;--polycss-atlas-width:${Me(v)};--polycss-atlas-height:${Me(f)};--polycss-atlas-leaf-sizing:${o.atlasLeafSizing??"canonical"}`,x=`${P};--polycss-atlas-position:${b};--polycss-atlas-image-size:${y}`;if(t==="dynamic"){let E=i?`;--pnx:${o.normal[0].toFixed(4)};--pny:${o.normal[1].toFixed(4)};--pnz:${o.normal[2].toFixed(4)}`:"";e.setAttribute("style",x+`;--polycss-atlas-url:${c}`+E+rn(s))}else e.setAttribute("style",P+`;background-image:${c};background-position:${b};background-size:${y};background-repeat:no-repeat;--pnx:${o.normal[0].toFixed(4)};--pny:${o.normal[1].toFixed(4)};--pnz:${o.normal[2].toFixed(4)}`+rn(s));uo(e,"atlas",!0,s,o.atlasLeafSizing??"canonical","affine",t,v,f)}function cr(e,n,t,o){if(n.texture){if(!t.texture||n.texture!==t.texture)return!1}else if(t.texture)return!1;let i=ur(n,t);return i?(e.style.visibility="",ve(e,"transform",`matrix3d(${i.matrix})`),o==="dynamic"&&(ve(e,"--pnx",i.normal[0].toFixed(4)),ve(e,"--pny",i.normal[1].toFixed(4)),ve(e,"--pnz",i.normal[2].toFixed(4))),ye(e,t,n.index),!0):(e.style.visibility="hidden",ye(e,t,n.index),!0)}function mo(e,n,t,o,i){if(o!=="baked")return{...e,polygon:n,normal:t};let r=i.directionalLight,s=i.ambientLight,c=r?.direction??Ds,l=r?.color??Os,d=Math.max(0,r?.intensity??Is),h=s?.color??Hs,v=Math.max(0,s?.intensity??Fs),f=Math.hypot(c[0],c[1],c[2])||1,b=c[0]/f,y=c[1]/f,P=c[2]/f,E=i.lightOccludedPolyIndices?.has(e.index)??!1?0:d*Math.max(0,t[0]*b+t[1]*y+t[2]*P);return{...e,polygon:n,normal:t,shadedColor:_s(n.color??"#cccccc",E,l,h,v)}}function ur(e,n){let t=dr(e,n);if(!t)return null;let{normal:o,xAxis:i,yAxis:r,tx:s,ty:c,tz:l}=t;return{normal:o,matrix:ws([i[0]*e.canvasW/Nt(e),i[1]*e.canvasW/Nt(e),i[2]*e.canvasW/Nt(e),0,r[0]*e.canvasH/jt(e),r[1]*e.canvasH/jt(e),r[2]*e.canvasH/jt(e),0,o[0],o[1],o[2],0,s,c,l,1])}}var dr=ks;function Bs(e,n,t){if(e.screenPts.length!==8||n.vertices.length!==4)return null;let o=dr(e,n);if(!o)return null;let i=Rs(e.screenPts,o.xAxis,o.yAxis,o.normal,o.tx,o.ty,o.tz,t);return i?{matrix:i,normal:o.normal}:null}function fo(e,n,t,o,i=!1){let r=t.createElement("b");return r.setAttribute("style",`transform:matrix3d(${Ms(e)})`+Vt(e,n,o,i)),ye(r,e.polygon,e.index),r}function go(e,n,t,o,i=!1){let r=t.createElement("i");return r.setAttribute("style",ir(e)+Vt(e,n,o,i)),ye(r,e.polygon,e.index),r}function ho(e,n,t,o,i,r=!1){let s=o.createElement("u");return s.className=ar,s.setAttribute("style",sr(e,n)+Vt(e,t,i,r)),ye(s,e.polygon,e.index),s}function yo(e,n,t,o,i=!1){let r=t.createElement("b");return r.setAttribute("style",`transform:matrix3d(${e.projectiveMatrix})`+Vt(e,n,o,i)),ye(r,e.polygon,e.index),r}function pr(e,n,t,o,i,r,s){let c=n.projectiveMatrix?Bs(n,t,r):ur(n,t);if(!c)return!1;let l=mo(n,t,c.normal,o,i);return e.style.visibility="",e.style.transform=`matrix3d(${c.matrix})`,vt(e,l,o,s),ye(e,l.polygon,l.index),!0}function mr(e,n,t,o){e.style.visibility="",e.setAttribute("style",ir(n)),vt(e,n,t,o),ye(e,n.polygon,n.index)}function fr(e,n,t,o,i){e.style.visibility="",e.className=ar,e.setAttribute("style",sr(n,t)),vt(e,n,o,i),ve(e,"background","currentColor"),ye(e,n.polygon,n.index)}function bo(e,n,t,o=!1,i){let r=t.createElement("s"),s=lr(e,i),c=sn(e),l=Nt(e),d=jt(e),h=o?"":`;--pnx:${e.normal[0].toFixed(4)};--pny:${e.normal[1].toFixed(4)};--pnz:${e.normal[2].toFixed(4)}`;return r.setAttribute("style",`transform:matrix3d(${e.atlasMatrix});--polycss-atlas-size:${c}px;--polycss-atlas-width:${Me(l)};--polycss-atlas-height:${Me(d)};--polycss-atlas-leaf-sizing:${e.atlasLeafSizing??"canonical"};opacity:0`+h+rn(s)),uo(r,"atlas",!1,s,e.atlasLeafSizing??"canonical","affine",n,l,d),ye(r,e.polygon,e.index),r}function xo(e,n,t,o=!1){let i=t.createElement("s"),r=o?"":`;--pnx:${e.normal[0].toFixed(4)};--pny:${e.normal[1].toFixed(4)};--pnz:${e.normal[2].toFixed(4)}`;return i.setAttribute("style",`transform:matrix3d(${n.matrix});--polycss-atlas-width:${Me(n.leafWidth)};--polycss-atlas-height:${Me(n.leafHeight)};--polycss-atlas-leaf-sizing:image;background-image:url(${n.url});background-position:${Me(n.backgroundPosition[0])} ${Me(n.backgroundPosition[1])};background-size:${Me(n.backgroundSize[0])} ${Me(n.backgroundSize[1])};background-repeat:no-repeat;background-blend-mode:normal;mask-image:none;-webkit-mask-image:none`+r+rn(n.imageRendering)),uo(i,"image",!0,n.imageRendering,"image",n.projection,n.lighting,n.leafWidth,n.leafHeight),i.setAttribute("data-polycss-texture-source-x",String(n.sourceRect.x)),i.setAttribute("data-polycss-texture-source-y",String(n.sourceRect.y)),i.setAttribute("data-polycss-texture-source-width",String(n.sourceRect.width)),i.setAttribute("data-polycss-texture-source-height",String(n.sourceRect.height)),ye(i,e.polygon,e.index),i}import{computeSolidTriangleColorPlan as oa}from"@layoutit/polycss-core";import{computeSolidTrianglePlanFromCssPoints as zs,computeSolidTrianglePlan as Vs}from"@layoutit/polycss-core";function ct(e,n,t,o={}){let i=o.primitive!=null?void 0:(()=>{let r=t.doc??(typeof document<"u"?document:null);return r?We(r,t.strategies)??"border":"border"})();return Vs(e,n,t,{...o,resolvedPrimitive:o.resolvedPrimitive??i})}function vo(e,n,t,o,i,r,s,c,l,d,h,v,f){let b=o.primitive!=null?void 0:(()=>{let y=t.doc??(typeof document<"u"?document:null);return y?We(y,t.strategies)??"border":"border"})();return zs(e,n,t,{...o,resolvedPrimitive:o.resolvedPrimitive??b},i,r,s,c,l,d,h,v,f)}import{buildSeamBleedPolygonEdges as Ns,DEFAULT_SEAM_BLEED as js,DEFAULT_TILE as sd,resolveBleedRatio as Gs}from"@layoutit/polycss-core";import{rgbEqual as $s,stepRgbToward as Us,rgbToCss as Ws,colorErrorScore as Ys}from"@layoutit/polycss-core";import{computeSolidTriangleColorPlan as Xs}from"@layoutit/polycss-core";import{stableTriangleMatrixDecimals as gr}from"@layoutit/polycss-core";var Zs="0 48px 96px 48px";function hr(e,n){return Ns(e,{tileSize:n.tileSize,layerElevation:n.layerElevation,directionalLight:n.directionalLight,ambientLight:n.ambientLight})}function yr(e,n,t){let o=Gs(t.seamBleed),i=js*o,r={...t,bleedRatio:o};return n&&i>0?{...r,seamBleed:n.has(e)?i:void 0,seamEdges:n.get(e)}:r}function Po(e){return{updatesDisabled:e.stableTriangleColorFreezeFrames===0,freezeFrames:Math.max(1,Math.floor(e.stableTriangleColorFreezeFrames??1)),colorFrame:Math.max(0,Math.floor(e.stableTriangleColorFrame??0)),maxStep:Math.max(0,Math.floor(e.stableTriangleColorMaxStep??0))}}function br(e,n){return!n.updatesDisabled&&(n.freezeFrames<=1||(n.colorFrame+e)%n.freezeFrames===0)}function St(e,n,t,o,i,r){return t?r.updatesDisabled||o==="plan-only"||o==="transform-only"?!1:i==="adaptive"||e.__polycssSolidTriangleColor===void 0?!0:br(n,r):!0}function So(e,n){let t=e;t.__polycssSolidTrianglePrimitive!==n&&(n==="corner-bevel"?(e.style.width="",e.style.height="",e.style.backgroundColor="",e.style.borderWidth="",e.style.borderTopLeftRadius="",e.style.borderTopRightRadius="",e.style.removeProperty("corner-top-left-shape"),e.style.removeProperty("corner-top-right-shape")):(e.style.width="",e.style.height="",e.style.backgroundColor="",e.style.borderTopLeftRadius="",e.style.borderTopRightRadius="",e.style.removeProperty("corner-top-left-shape"),e.style.removeProperty("corner-top-right-shape"),e.style.borderWidth=n==="border-large"?Zs:""),t.__polycssSolidTrianglePrimitive=n)}function Co(e){let n=e;n.__polycssSolidTriangleHidden&&(e.style.visibility="",n.__polycssSolidTriangleHidden=!1)}function Gt(e){let n=e;n.__polycssSolidTriangleHidden||(e.style.visibility="hidden",n.__polycssSolidTriangleHidden=!0)}function an(e,n){e.setAttribute("style",n.styleText),So(e,n.primitive);let t=e;t.__polycssSolidTriangleBasis=n.basis,t.__polycssSolidTriangleHidden=!1,n.colorComputed&&(t.__polycssSolidTriangleColor=n.bakedColor??"",t.__polycssSolidTriangleColorRgb=n.bakedRgb,t.__polycssSolidTriangleColorAlpha=n.bakedAlpha),t.__polycssSolidTriangleColorFrame=void 0,(n.polygon.data||Pt(e))&&ye(e,n.polygon)}function xr(e,n,t,o){if(!n.colorComputed){(n.polygon.data||Pt(e))&&ye(e,n.polygon);return}let i=e,r=n.bakedColor??"",s=n.bakedRgb,c=n.bakedAlpha??1,l=i.__polycssSolidTriangleColor,d=i.__polycssSolidTriangleColorRgb,h=i.__polycssSolidTriangleColorAlpha??1,v=o??br(n.index,t);if(!t.updatesDisabled&&l!==r&&(l===void 0||v)){let f=r,b=s;if(t.maxStep>0&&d&&s&&h===c){let y=Us(d,s,t.maxStep);b=y,f=Ws(y,c)}(f!==l||!$s(b,d))&&(e.style.color=f),i.__polycssSolidTriangleColor=f,i.__polycssSolidTriangleColorRgb=b,i.__polycssSolidTriangleColorAlpha=c,i.__polycssSolidTriangleColorFrame=t.colorFrame}(n.polygon.data||Pt(e))&&ye(e,n.polygon)}function ln(e,n,t,o){let i=e;So(e,n.primitive),i.__polycssSolidTriangleBasis!==n.basis&&(i.__polycssSolidTriangleBasis=n.basis),Co(e),e.style.transform=n.transformText,(n.colorComputed||n.polygon.data||Pt(e))&&xr(e,n,t,o)}function Eo(e,n,t,o){Co(e),xr(e,n,t,o)}function cn(e,n){let t=e;So(e,n.primitive),t.__polycssSolidTriangleBasis!==n.basis&&(t.__polycssSolidTriangleBasis=n.basis),Co(e),e.style.transform=n.transformText,(n.polygon.data||Pt(e))&&ye(e,n.polygon)}function Qs(e,n){let t=n.stableTriangleColorBudget;if(typeof t=="number"&&Number.isFinite(t)&&t>0)return t<=1?Math.max(1,Math.ceil(e*t)):Math.max(1,Math.floor(t));let o=Math.max(1,Math.floor(n.stableTriangleColorFreezeFrames??1));return Math.max(1,Math.ceil(e/o))}function vr(e,n,t){if(t.stableTriangleColorPolicy!=="adaptive")return null;if(t.stableTriangleColorFreezeFrames===0)return new Set;let o=Math.max(0,Math.floor(t.stableTriangleColorFrame??0)),i=Math.max(1,Math.floor(t.stableTriangleColorFreezeFrames??1));if(i<=1&&!Number.isFinite(t.stableTriangleColorBudget))return null;let r=Qs(e.length,t),s=Math.max(1,Math.floor(t.stableTriangleColorMaxAge??Math.max(2,i*2))),c=[];for(let l=0;l<e.length;l++){let d=e[l],h=n[l];if(d.kind!=="triangle"||!h)continue;let v=d.element,f=v.__polycssSolidTriangleColor,b=h.bakedColor??"";if(f===b)continue;let y=v.__polycssSolidTriangleColorFrame??0,P=Math.max(0,o-y),x=Ys(f,b);c.push({index:l,score:(P>=s?1e6:0)+x*1e4+P})}return c.length===0?new Set:(c.sort((l,d)=>d.score-l.score),new Set(c.slice(0,r).map(l=>l.index)))}function un(e,n){let t=n.createElement("u");return an(t,e),ye(t,e.polygon,e.index),t}function qs(e,n,t){let o=t.createElement("u");return Gt(o),ye(o,e,n),o}function Pr(e,n,t,o,i,r){let s=t,c=s.stableTriangleDebug,l=o&&i==="color-only";if(s.stableTriangleColorPolicy==="adaptive"||e.length!==n.length)return!1;let d=gr(s.stableTriangleMatrixDecimals),h=t.doc??(typeof document<"u"?document:null),v=h?We(h,t.strategies)??"border":"border";for(let b=0;b<e.length;b++){let y=e[b];if(y.kind!=="triangle"||y.polygonIndex!==b||!n[b])return!1}let f=hr(n,t);for(let b=0;b<e.length;b++){let y=e[b].element,P=n[b];if(l){if(St(y,b,o,c,s.stableTriangleColorPolicy,r)){let E=Xs(P,b,t);if(!E)continue;Eo(y,E,r)}continue}let x=ct(P,b,yr(b,f,t),{basis:y.__polycssSolidTriangleBasis,matrixDecimals:d,primitive:v,includeColor:i!=="plan-only"&&i!=="transform-only"&&St(y,b,o,c,s.stableTriangleColorPolicy,r)});if(!x){Gt(y);continue}o&&i==="plan-only"||(o&&i==="transform-only"?cn(y,x):o?ln(y,x,r):an(y,x))}return!0}function $t(e,n={}){let t=n.doc??(typeof document<"u"?document:null);if(!t)return{rendered:[],dispose:()=>{}};let o=We(t,n.strategies);if(!o||e.some(c=>c.texture||c.vertices.length!==3))return null;let i=gr(n.stableTriangleMatrixDecimals),r=[],s=hr(e,n);for(let c=0;c<e.length;c+=1){let l=e[c],d=ct(l,c,yr(c,s,n),{matrixDecimals:i,primitive:o}),h=d?un(d,t):qs(l,c,t);r.push({polygonIndex:c,element:h,kind:"triangle",dispose:()=>{}})}return{rendered:r,dispose(){}}}import{stableTriangleMatrixDecimals as Tr}from"@layoutit/polycss-core";function Ar(){return new Promise(e=>setTimeout(e,0))}async function To(e){return performance.now()-e<Ks?e:(await Ar(),performance.now())}function wr(e,n){let t=Ao(n.seamBleed),o=Cr*t,i={...n,bleedRatio:t};return e.seamBleedEdges?.size&&o>0?{...i,seamBleed:o,seamEdges:e.seamBleedEdges}:{...i,seamBleed:void 0,seamEdges:void 0}}function Mr(e,n){return na(e,{tileSize:n.tileSize,layerElevation:n.layerElevation,directionalLight:n.directionalLight,ambientLight:n.ambientLight})}function Lr(e,n,t){let o=Ao(t.seamBleed),i=Cr*o,r={...t,bleedRatio:o};return n&&i>0?{...r,seamBleed:n.has(e)?i:void 0,seamEdges:n.get(e)}:r}function Ct(e,n={}){let t=n.doc??(typeof document<"u"?document:null);if(!t)return{};let o=wo(e,n),i=xt(t),r=e.map((s,c)=>Wt(s,c,n,i,o[c]));return on(r,n.textureLighting??"baked",t,n.strategies)}function Et(e,n={}){let t=n.doc??(typeof document<"u"?document:null);if(!t)return{rendered:[],dispose:()=>{}};let o=n.textureLighting??"baked",i=n,r=o==="dynamic"&&i.skipDynamicNormalVars===!0,s=new Set(n.strategies?.disable??[]),c=!s.has("b"),l=c&&zt(t),d=We(t,n.strategies),h=d!==null,v=!s.has("i")&&Bt(t),f=!s.has("i")&&Ft(t),b=wo(e,n),y=xt(t),P=Mr(e,n),x=e.map((u,m)=>Wt(u,m,Lr(m,P,n),y,b[m])),E=n.solidPaintDefaults??(i.computeSolidPaintDefaults?on(x,o,t,n.strategies):void 0),O=E?{...n,solidPaintDefaults:E}:n,R=x.map(u=>u&&h&&et(u)?ct(u.polygon,u.index,wr(u,O),{primitive:d??void 0}):null),j=x.map(u=>u&&v&&!et(u)&&!(c&&$e(u))&&!(l&&Ue(u))?Ut(u):null),D=x.map(u=>u?Er(u,{imageRendering:n.textureImageRendering,backend:n.textureBackend,projection:n.textureProjection,allowProjective:l,projectiveQuadGuards:y}):null),Q=x.map((u,m)=>D[m]?null:u&&(u.texture||!(c&&$e(u))&&!R[m]&&!(l&&Ue(u))&&!j[m]&&!f?u:null)),{packed:J,atlasScale:k}=It(Q,n.textureQuality,t,n.textureLeafSizing),V=new Map,z=[],B=!1,A=[];for(let u=0;u<e.length;u++){let m=x[u],L=R[u],_=j[u],H=D[u];if(!m)continue;let q=J.entries[u];if(q){let C=bo(q,o,t,r,n.textureImageRendering);V.set(u,C),z.push({polygonIndex:u,element:C,kind:"atlas",plan:q,dispose:()=>{}})}else if(H){let C=xo(m,H,t,r);z.push({polygonIndex:u,element:C,kind:"image",plan:m,dispose:()=>{}})}else if(!m.texture&&c&&$e(m)){let C=fo(m,o,t,E,r);z.push({polygonIndex:u,element:C,kind:"solid",plan:m,dispose:()=>{}})}else if(!m.texture&&L){let C=un(L,t);z.push({polygonIndex:u,element:C,kind:"triangle",plan:m,dispose:()=>{}})}else if(!m.texture&&l&&Ue(m)){let C=yo(m,o,t,E,r);z.push({polygonIndex:u,element:C,kind:"solid",plan:m,dispose:()=>{}})}else if(!m.texture&&_){let C=ho(m,_,o,t,E,r);z.push({polygonIndex:u,element:C,kind:"corner",plan:m,dispose:()=>{}})}else if(!m.texture&&f){let C=go(m,o,t,E,r);z.push({polygonIndex:u,element:C,kind:"border",plan:m,dispose:()=>{}})}}z.sort((u,m)=>u.polygonIndex-m.polygonIndex);let g=Ht(J.pages,o,t,k,()=>B).then(u=>{if(B){for(let m of u)m.url?.startsWith("blob:")&&URL.revokeObjectURL(m.url);return}A=u.flatMap(m=>m.url?.startsWith("blob:")?[m.url]:[]);for(let m=0;m<J.pages.length;m++){let L=J.pages[m],_=u[m];if(_)for(let H of L.entries){let q=V.get(H.index);!q||!_.url||po(q,_,o,H,!0,n.textureImageRendering)}}}).catch(()=>{if(!B)for(let u of V.values())ve(u,"opacity","0.5"),ve(u,"outline","1px dashed rgba(255, 0, 0, 0.6)")});return{rendered:z,solidPaintDefaults:E??{},pagesReady:g,dispose(){B=!0;for(let u of A)URL.revokeObjectURL(u);A=[]}}}async function dn(e,n={},t=()=>!1){let o=n.doc??(typeof document<"u"?document:null);if(!o||t())return{rendered:[],solidPaintDefaults:{},dispose:()=>{}};let i=n.textureLighting??"baked",s=i==="dynamic"&&n.skipDynamicNormalVars===!0,c=new Set(n.strategies?.disable??[]),l=!c.has("b"),d=l&&zt(o),h=We(o,n.strategies),v=h!==null,f=!c.has("i")&&Bt(o),b=!c.has("i")&&Ft(o);if(await Ar(),t())return{rendered:[],solidPaintDefaults:{},dispose:()=>{}};let y=wo(e,n),P=xt(o),x=Mr(e,n),E=performance.now(),O=new Array(e.length);for(let u=0;u<e.length;u++)if(O[u]=Wt(e[u],u,Lr(u,x,n),P,y[u]),E=await To(E),t())return{rendered:[],solidPaintDefaults:{},dispose:()=>{}};let R=n.solidPaintDefaults??on(O,i,o,n.strategies),j=new Array(O.length),D=new Array(O.length),Q=new Array(O.length),J=new Array(O.length);for(let u=0;u<O.length;u++){let m=O[u],L=m&&v&&et(m)?ct(m.polygon,m.index,wr(m,{...n,solidPaintDefaults:R}),{primitive:h??void 0}):null;j[u]=L;let _=m&&f&&!et(m)&&!(l&&$e(m))&&!(d&&Ue(m))?Ut(m):null;D[u]=_;let H=m?Er(m,{imageRendering:n.textureImageRendering,backend:n.textureBackend,projection:n.textureProjection,allowProjective:d,projectiveQuadGuards:P}):null;if(Q[u]=H,J[u]=H?null:m&&(m.texture||!(l&&$e(m))&&!L&&!(d&&Ue(m))&&!_&&!b?m:null),E=await To(E),t())return{rendered:[],solidPaintDefaults:R,dispose:()=>{}}}let{packed:k,atlasScale:V}=It(J,n.textureQuality,o,n.textureLeafSizing),z=new Map,B=[],A=!1,g=[];for(let u=0;u<e.length;u++){let m=O[u],L=j[u],_=D[u],H=Q[u];if(!m)continue;let q=k.entries[u];if(q){let C=bo(q,i,o,s,n.textureImageRendering);z.set(u,C),B.push({polygonIndex:u,element:C,kind:"atlas",plan:q,dispose:()=>{}})}else if(H){let C=xo(m,H,o,s);B.push({polygonIndex:u,element:C,kind:"image",plan:m,dispose:()=>{}})}else if(!m.texture&&l&&$e(m)){let C=fo(m,i,o,R,s);B.push({polygonIndex:u,element:C,kind:"solid",plan:m,dispose:()=>{}})}else if(!m.texture&&L){let C=un(L,o);B.push({polygonIndex:u,element:C,kind:"triangle",plan:m,dispose:()=>{}})}else if(!m.texture&&d&&Ue(m)){let C=yo(m,i,o,R,s);B.push({polygonIndex:u,element:C,kind:"solid",plan:m,dispose:()=>{}})}else if(!m.texture&&_){let C=ho(m,_,i,o,R,s);B.push({polygonIndex:u,element:C,kind:"corner",plan:m,dispose:()=>{}})}else if(!m.texture&&b){let C=go(m,i,o,R,s);B.push({polygonIndex:u,element:C,kind:"border",plan:m,dispose:()=>{}})}if(E=await To(E),t()){for(let C of B)C.dispose();return{rendered:[],solidPaintDefaults:R,dispose:()=>{}}}}B.sort((u,m)=>u.polygonIndex-m.polygonIndex);let T=Ht(k.pages,i,o,V,()=>A||t()).then(u=>{if(A||t()){for(let m of u)m.url?.startsWith("blob:")&&URL.revokeObjectURL(m.url);return}g=u.flatMap(m=>m.url?.startsWith("blob:")?[m.url]:[]);for(let m=0;m<k.pages.length;m++){let L=k.pages[m],_=u[m];if(_)for(let H of L.entries){let q=z.get(H.index);!q||!_.url||po(q,_,i,H,!0,n.textureImageRendering)}}}).catch(()=>{if(!(A||t()))for(let u of z.values())ve(u,"opacity","0.5"),ve(u,"outline","1px dashed rgba(255, 0, 0, 0.6)")});return{rendered:B,solidPaintDefaults:R,pagesReady:T,dispose(){A=!0;for(let u of g)URL.revokeObjectURL(u);g=[]}}}function pn(e,n,t,o={}){let i=o.textureLighting??"baked",r=o,s=r.optimizeStableTriangleStyle===!0&&i==="baked";if(!s||r.stableTriangleColorPolicy==="adaptive"||e.length!==t.polygonCount||n.length!==t.polygonCount||t.vertices.length<t.polygonCount*9)return!1;let c=r.stableTriangleDebug,l=r.stableTriangleUpdateMode??(c==="plan-only"||c==="transform-only"?c:"full");if(l==="color-only")return!1;let d=Tr(r.stableTriangleMatrixDecimals),h=Po(r),v=o.tileSize??Js,f=o.layerElevation??v,b=o.doc??(typeof document<"u"?document:null),y=b?We(b,o.strategies)??"border":"border";for(let x=0;x<e.length;x++){let E=e[x],O=n[x];if(E.kind!=="triangle"||E.polygonIndex!==x||!O||O.vertices.length!==3||O.texture||O.material?.texture)return!1}let P=t.vertices;for(let x=0;x<e.length;x++){let E=e[x].element,O=n[x],R=x*9,j=P[R+1]*v,D=P[R]*v,Q=P[R+2]*f,J=P[R+4]*v,k=P[R+3]*v,V=P[R+5]*f,z=P[R+7]*v,B=P[R+6]*v,A=P[R+8]*f,g=vo(O,x,o,{basis:E.__polycssSolidTriangleBasis,matrixDecimals:d,primitive:y,color:t.colors?.[x],includeColor:l!=="plan-only"&&l!=="transform-only"&&St(E,x,s,c,r.stableTriangleColorPolicy,h)},j,D,Q,J,k,V,z,B,A);if(!g){Gt(E);continue}l!=="plan-only"&&(l==="transform-only"?cn(E,g):ln(E,g,h))}return!0}function mn(e,n,t={}){if(e.length!==n.length)return!1;let o=t,i=t.doc??(typeof document<"u"?document:null),r=t.textureLighting??"baked",s=new Set(t.strategies?.disable??[]),c=!s.has("b"),l=!!i&&c&&zt(i),d=!!i&&!s.has("i")&&Bt(i),h=!!i&&!s.has("i")&&Ft(i),v=Ao(o.seamBleed),f=i?xt(i,{bleed:Sr*v}):{denomEps:ea,maxWeightRatio:ta,bleed:Sr*v,disableGuards:!1},b=o.optimizeStableTriangleStyle===!0&&r==="baked",y=o.stableTriangleDebug,P=o.stableTriangleUpdateMode??(y==="plan-only"||y==="transform-only"?y:"full"),x=b&&P==="color-only",E=Po(o),O=Tr(o.stableTriangleMatrixDecimals),R=i?We(i,t.strategies)??"border":"border";if(Pr(e,n,t,b,P,E))return!0;let j=[],D=[],Q=[];for(let k=0;k<e.length;k++){let V=e[k];if(V.polygonIndex!==k)return!1;let z=n[k];if(!z||x&&V.kind!=="triangle")return!1;if(V.kind==="atlas"){if(!V.plan||!cr(V.element,V.plan,z,r))return!1;continue}if(V.kind==="triangle"){let B=V.element;if(x){let g=o.stableTriangleColorPolicy==="adaptive"||St(B,k,b,y,o.stableTriangleColorPolicy,E);D[k]=g?oa(z,k,t):null;continue}let A=ct(z,k,t,{basis:B.__polycssSolidTriangleBasis,matrixDecimals:O,primitive:R,includeColor:P!=="plan-only"&&P!=="transform-only"&&St(B,k,b,y,o.stableTriangleColorPolicy,E)});if(!A){j[k]=null;continue}j[k]=A;continue}if(V.kind==="solid"){if(!V.plan||z.texture||z.vertices.length!==V.plan.polygon.vertices.length)return!1;Q[k]=V.plan;continue}if(V.kind==="border"){let B=Wt(z,k,t,f);if(!B||B.texture||!h||c&&$e(B)||l&&Ue(B)||d&&Ut(B))return!1;Q[k]=B;continue}if(V.kind==="corner"){let B=Wt(z,k,t,f);if(!B||B.texture||!d||et(B)||c&&$e(B)||l&&Ue(B)||!Ut(B))return!1;Q[k]=B;continue}return!1}let J=b&&P!=="plan-only"&&P!=="transform-only"?vr(e,x?D:j,o):null;for(let k=0;k<e.length;k++){let V=e[k];if(V.kind==="triangle"){if(x){let B=D[k];B&&Eo(V.element,B,E,J?.has(k));continue}let z=j[k];if(!z){Gt(V.element);continue}if(b&&P==="plan-only")continue;b&&P==="transform-only"?cn(V.element,z):b?ln(V.element,z,E,J?.has(k)):an(V.element,z)}else if(V.kind==="solid"){let z=Q[k];if(!z||!pr(V.element,z,n[k],r,t,f,o.solidPaintDefaults))return!1}else if(V.kind==="border"){let z=Q[k];if(!z)return!1;mr(V.element,z,r,o.solidPaintDefaults)}else if(V.kind==="corner"){let z=Q[k],B=z?Ut(z):null;if(!z||!B)return!1;fr(V.element,z,B,r,o.solidPaintDefaults)}}return!0}import{computeTextureAtlasPlanPublic as pa}from"@layoutit/polycss-core";import{formatMatrix3d as ma,formatCssLengthPx as fa,formatSolidQuadEntryMatrix as ga}from"@layoutit/polycss-core";import{formatBorderShapeEntryMatrix as ha,cssBorderShapeForPlan as ya}from"@layoutit/polycss-core";import{BASE_TILE as Pe,computeProjectiveQuadMatrix as ba,normalFacesCamera as xa,parsePureColor as Ir,PROJECTIVE_QUAD_BLEED as va,resolveProjectiveQuadGuards as Pa,rotateVec3 as Sa,rotateVec3InWrapperCssFrame as Ca,shadePolygon as Ea,SOLID_QUAD_CANONICAL_SIZE as Ta}from"@layoutit/polycss-core";var Aa=[.4,-.7,.59],wa="#ffffff",Ma=1,La="#ffffff",_a=.4,Hr=1,Ra=8,ka=va,qe=1e-6,Da=Pa({bleed:0}),Fr={t:[0,0,1],b:[0,0,-1],fl:[0,1,0],br:[0,-1,0],fr:[1,0,0],bl:[-1,0,0]},_o=["t","b","bl","br","fr","fl"],Oa=new Map([["0,0,1","t"],["0,0,-1","b"],["0,1,0","fl"],["0,-1,0","br"],["1,0,0","fr"],["-1,0,0","bl"]]);function _r(e){let n=[];for(let t of _o)xa(Fr[t],e)&&n.push(t);return n.join("|")}function Ia(e,n,t){let o=e.__polycssVoxelBrushState??(e.__polycssVoxelBrushState={});o.color!==n&&(e.style.color=n,o.color=n),o.transform!==t&&(e.style.transform=t,o.transform=t)}function Ha(e){let n=e.vertices;if(n.length<3)return null;let t=n[0],o=0,i=0,r=0;for(let c=1;c+1<n.length;c+=1){let l=n[c],d=n[c+1],h=l[1]-t[1],v=l[0]-t[0],f=l[2]-t[2],b=d[1]-t[1],y=d[0]-t[0],P=d[2]-t[2];o-=v*P-f*y,i-=f*b-h*P,r-=h*y-v*b}let s=Math.hypot(o,i,r);return s<=1e-9?null:[Math.round(o/s),Math.round(i/s),Math.round(r/s)]}function Fa(e){if(e.texture||e.material||e.uvs||e.textureTriangles||e.vertices.length!==4)return null;let n=Ha(e),t=n?Oa.get(n.join(",")):void 0;if(!t)return null;let o=1/0,i=1/0,r=1/0,s=-1/0,c=-1/0,l=-1/0;for(let v of e.vertices)o=Math.min(o,v[0]),i=Math.min(i,v[1]),r=Math.min(r,v[2]),s=Math.max(s,v[0]),c=Math.max(c,v[1]),l=Math.max(l,v[2]);let d=1e-6,h=$a(e.color);return Math.abs(l-r)<=d?{axis:"z",face:t,left:i*Pe,top:o*Pe,width:Math.max(0,(c-i)*Pe),height:Math.max(0,(s-o)*Pe),z:r*Pe,baseColor:h,bleed:Mo()}:Math.abs(s-o)<=d?{axis:"x",face:t,left:i*Pe,top:r*Pe,width:Math.max(0,(c-i)*Pe),height:Math.max(0,(l-r)*Pe),z:-o*Pe,baseColor:h,bleed:Mo()}:Math.abs(c-i)<=d?{axis:"y",face:t,left:r*Pe,top:o*Pe,width:Math.max(0,(l-r)*Pe),height:Math.max(0,(s-o)*Pe),z:-i*Pe,baseColor:h,bleed:Mo()}:null}function Mo(){return{left:0,right:0,top:0,bottom:0}}function Ba(e){let n=o=>String(Number(o.toFixed(6))),t=`${e.item.baseColor}|${e.variableAxis}`;for(let o=0;o<3;o+=1)o!==e.variableAxis&&(t+=`|${o}:${n(e.fixed[o])}`);return t}function Rr(e){return[e[1]*Pe,e[0]*Pe,e[2]*Pe]}function kr(e,n){return e.axis==="x"?[n[0],n[2]]:e.axis==="y"?[n[2],n[1]]:[n[0],n[1]]}function za(e,n,t){let o=e.left,i=e.left+e.width,r=e.top,s=e.top+e.height;if(Math.abs(n[0]-t[0])<=qe){if(Math.abs(n[0]-o)<=qe)return"left";if(Math.abs(n[0]-i)<=qe)return"right"}if(Math.abs(n[1]-t[1])<=qe){if(Math.abs(n[1]-r)<=qe)return"top";if(Math.abs(n[1]-s)<=qe)return"bottom"}return null}function Va(e,n){let t=null;for(let o=0;o<3;o+=1)if(!(Math.abs(e[o]-n[o])<=qe)){if(t!==null)return null;t=o}return t}function Na(e,n,t){let o=n.vertices,i=Rr(o[t]),r=Rr(o[(t+1)%o.length]),s=za(e,kr(e,i),kr(e,r));if(!s)return null;let c=Va(i,r);if(c===null)return null;let l=Math.min(i[c],r[c]),d=Math.max(i[c],r[c]);return d-l>qe?{item:e,side:s,variableAxis:c,fixed:i,start:l,end:d}:null}function Dr(e){e.item.bleed[e.side]=Math.max(e.item.bleed[e.side],ka)}function ja(e,n){let t=new Map;for(let o of n){let i=e[o.sourceIndex];if(i)for(let r=0;r<i.vertices.length;r+=1){let s=Na(o,i,r);if(!s)continue;let c=Ba(s),l=t.get(c);l?l.push(s):t.set(c,[s])}}for(let o of t.values()){if(o.length<2)continue;o.sort((r,s)=>r.start-s.start||r.end-s.end);let i=[];for(let r of o){i=i.filter(s=>s.end>r.start+qe);for(let s of i)s.item.sourceIndex!==r.item.sourceIndex&&(Dr(s),Dr(r));i.push(r)}}}function Ga(e){let n=Ir(e);return n?{r:n.rgb[0],g:n.rgb[1],b:n.rgb[2],alpha:n.alpha}:{r:255,g:255,b:255,alpha:1}}function $a(e){if(!e)return"#cccccc";let n=Ir(e);if(!n)return e;let t={r:n.rgb[0],g:n.rgb[1],b:n.rgb[2],alpha:n.alpha};if(t.alpha<1){let o=Math.round(Math.max(0,t.alpha)*1e3)/1e3;return`rgba(${Lo(t.r)}, ${Lo(t.g)}, ${Lo(t.b)}, ${o})`}return Ua(t)}function Ua({r:e,g:n,b:t}){let o=i=>Math.round(Math.max(0,Math.min(255,i))).toString(16).padStart(2,"0");return`#${o(e)}${o(n)}${o(t)}`}function Lo(e){return Math.round(Math.max(0,Math.min(255,e)))}function Wa(e,n,t,o){let i=t?.direction??Aa,r=Math.hypot(i[0],i[1],i[2])||1,s=i[0]/r,c=i[1]/r,l=i[2]/r,d=Math.max(0,t?.intensity??Ma)*Math.max(0,e[0]*s+e[1]*c+e[2]*l),h=Math.max(0,o?.intensity??_a),v=t?.color??wa,f=o?.color??La,b=Ea(n,d,v,f,h),y=Ga(n);if(y.alpha>=1)return b;let P=parseInt(b.slice(1,3),16),x=parseInt(b.slice(3,5),16),E=parseInt(b.slice(5,7),16);return`rgba(${P}, ${x}, ${E}, ${y.alpha})`}function Ya(e){if(!e?.length)return[];let n=[];for(let t=0;t<e.length;t+=1){let o=e[t],i=Fa(o);if(!i||i.width<=0||i.height<=0)return[];n.push({...i,sourceIndex:t})}return ja(e,n),n}function Xa(e){return e.axis==="x"?{xAxis:[1,0,0],yAxis:[0,0,1],normal:[0,-1,0],tx:0,ty:-e.z,tz:0}:e.axis==="y"?{xAxis:[0,0,1],yAxis:[0,1,0],normal:[-1,0,0],tx:-e.z,ty:0,tz:0}:{xAxis:[1,0,0],yAxis:[0,1,0],normal:[0,0,1],tx:0,ty:0,tz:e.z}}function Za(e){let n=e.left,t=e.top,o=e.left+e.width,i=e.top+e.height;return[n,t,o,t,o,i,n,i]}function Qa(e){return new Map([[0,e.bleed.top],[1,e.bleed.right],[2,e.bleed.bottom],[3,e.bleed.left]])}function qa(e,n){let t=e.split(",").map(Number);if(t.length!==16||t.some(i=>!Number.isFinite(i)))return null;let o=Ta/n;for(let i=0;i<8;i+=1)t[i]*=o;return`matrix3d(${t.map(i=>Number(i.toFixed(6))).join(",")})`}function Or(e,n){let t=e.left-e.bleed.left,o=e.top-e.bleed.top,i=e.width+e.bleed.left+e.bleed.right,r=e.height+e.bleed.top+e.bleed.bottom,s=e.z,c=i/n,l=r/n;return`matrix3d(${(e.axis==="x"?[c,0,0,0,0,0,l,0,0,-1,0,0,t,-s,o,1]:e.axis==="y"?[0,0,c,0,0,l,0,0,-1,0,0,0,-s,o,t,1]:[c,0,0,0,0,l,0,0,0,0,1,0,t,o,s,1]).map(h=>Number(h.toFixed(6))).join(",")})`}function Ka(e,n){let{xAxis:t,yAxis:o,normal:i,tx:r,ty:s,tz:c}=Xa(e),l=ba(Za(e),t,o,i,r,s,c,Da,Qa(e));return l?qa(l,n)??Or(e,n):Or(e,n)}function Ja(e){let n=e.defaultView?.matchMedia;return n?n("(pointer: coarse)").matches||n("(hover: none)").matches:!1}function el(e){return Ja(e)?Ra:Hr}function tl(e){return e.axis==="x"?[e.left+e.width/2,-e.z,e.top+e.height/2]:e.axis==="y"?[-e.z,e.top+e.height/2,e.left+e.width/2]:[e.left+e.width/2,e.top+e.height/2,e.z]}function nl(e,n){let t=tl(e),o=n.meshRotation;o&&(t=Ca(t,o));let[i,r]=Sa(t,n.rotX,0,n.rotY);return{x:i,y:r}}function ol(e,n,t){let o=e.filter(f=>n.has(f.face)).map(f=>({item:f,...nl(f,t)}));if(o.length===0)return[];let i=1/0,r=-1/0,s=1/0,c=-1/0;for(let f of o)i=Math.min(i,f.x),r=Math.max(r,f.x),s=Math.min(s,f.y),c=Math.max(c,f.y);let l=4,d=Math.max(1e-6,r-i),h=Math.max(1e-6,c-s),v=new Map;for(let f of o){let b=Math.min(l-1,Math.max(0,Math.floor((f.x-i)/d*l))),y=Math.min(l-1,Math.max(0,Math.floor((f.y-s)/h*l))),P=`${b}:${y}`,x=v.get(P);x||(x={tx:b,ty:y,sourceIndex:f.item.sourceIndex,items:[]},v.set(P,x)),x.items.push(f.item),x.sourceIndex=Math.min(x.sourceIndex,f.item.sourceIndex)}return Array.from(v.values()).sort((f,b)=>f.ty-b.ty||f.tx-b.tx||f.sourceIndex-b.sourceIndex).flatMap(f=>f.items)}function Br(e){let{doc:n,wrapper:t,polygons:o,directionalLight:i,ambientLight:r}=e,s=Ya(o);if(s.length===0)return null;let c=new Set(s.map(g=>g.face));t.classList.add("polycss-voxel-mesh");let l=el(n);l!==Hr&&t.style.setProperty("--polycss-voxel-primitive",`${l}px`);let d=new Map,h=(g,T)=>{let u=`${g}|${T}`,m=d.get(u);if(m)return m;let L=Wa(Fr[g],T,i,r);return d.set(u,L),L},v=new Map,f=new Map,b=new Map,y=new Map;for(let g of s){let T=y.get(g.face);T||(T=[],y.set(g.face,T)),T.push(g)}let P="",x=0,E=new Set,O=g=>{let T=v.get(g.sourceIndex);return T||(T=n.createElement("b"),v.set(g.sourceIndex,T),Ia(T,h(g.face,g.baseColor),Ka(g,l))),T},R=g=>{let T=f.get(g);return T||(T=n.createElement("span"),T.className=`polycss-voxel-face polycss-voxel-face-${g}`,T.dataset.polycssVoxelFace=g,T.__polycssVoxelFaceHost=!0,f.set(g,T)),T},j=()=>{for(let g of Array.from(t.childNodes))if(!g.__polycssVoxelFaceHost)return g;return null},D=(g,T)=>{let u=T.map(_=>_.sourceIndex).join(",");if(b.get(g)===u)return;let m=R(g),L=n.createDocumentFragment();for(let _ of T)L.appendChild(O(_));m.replaceChildren(L),b.set(g,u)},Q=()=>{for(let g of _o)c.has(g)&&D(g,y.get(g)??[])},J=g=>new Set(g.split("|").filter(Boolean)),k=g=>{let T=J(g);return _o.filter(u=>T.has(u)&&c.has(u))},V=g=>{let T=0;for(let u of g)T+=y.get(u)?.length??0;return T},z=g=>{let T=new Set,u=[],m=new Map;for(let L of g){T.has(L.face)||(T.add(L.face),u.push(L.face));let _=m.get(L.face);_||(_=[],m.set(L.face,_)),_.push(L)}return{orderedFaces:u,itemsByFace:m}},B=(g,T)=>{let u=new Set(g);for(let m of E){if(u.has(m))continue;let L=f.get(m);L?.parentNode===t&&t.removeChild(L)}if(T){let m=n.createDocumentFragment();for(let L of g)m.appendChild(R(L));t.insertBefore(m,j()),E=u;return}for(let m=0;m<g.length;m+=1){let L=g[m],_=R(L);if(_.parentNode===t)continue;let H=null;for(let q=m+1;q<g.length;q+=1){let C=f.get(g[q]);if(C?.parentNode===t){H=C;break}}t.insertBefore(_,H??j())}E=u},A=(g,T,u)=>{if(!u){let q=k(g);B(q,!1),x=V(q);return}let m=new Set(g.split("|").filter(Boolean)),L=ol(s,m,T),{orderedFaces:_,itemsByFace:H}=z(L);for(let q of _)D(q,H.get(q)??[]);B(_,!0),x=L.length};return Q(),{get brushCount(){return x},render(g){P=_r(g),A(P,g,!0)},syncCamera(g){let T=_r(g);T!==P&&(P=T,A(T,g,!1))},dispose(){for(let g of f.values())g.remove();t.classList.remove("polycss-voxel-mesh"),t.style.removeProperty("--polycss-voxel-primitive"),v.clear(),f.clear(),b.clear(),x=0,E=new Set,P=""}}}var zr="polycss-styles";function Vr(e){let n=e??(typeof document<"u"?document:void 0);if(!n||n.getElementById(zr))return;let t=n.createElement("style");t.id=zr,t.textContent=rl,n.head.appendChild(t)}var rl=`
|
|
2
2
|
/* \u2500\u2500 Scene container \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\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
|
|
3
3
|
|
|
4
4
|
.polycss-scene,
|
|
@@ -144,8 +144,8 @@ import{CAMERA_BACKFACE_CULL_EPS as wo,DEFAULT_SEAM_BLEED as mi,VOXEL_CAMERA_CULL
|
|
|
144
144
|
}
|
|
145
145
|
|
|
146
146
|
.polycss-scene s {
|
|
147
|
-
width: var(--polycss-atlas-size, 64px);
|
|
148
|
-
height: var(--polycss-atlas-size, 64px);
|
|
147
|
+
width: var(--polycss-atlas-width, var(--polycss-atlas-size, 64px));
|
|
148
|
+
height: var(--polycss-atlas-height, var(--polycss-atlas-size, 64px));
|
|
149
149
|
}
|
|
150
150
|
|
|
151
151
|
.polycss-scene u {
|
|
@@ -516,4 +516,4 @@ import{CAMERA_BACKFACE_CULL_EPS as wo,DEFAULT_SEAM_BLEED as mi,VOXEL_CAMERA_CULL
|
|
|
516
516
|
.polycss-scene[data-polycss-lighting="dynamic"] q {
|
|
517
517
|
opacity: clamp(0, calc((var(--pnx) * var(--clx) + var(--pny) * var(--cly) + var(--pnz) * var(--clz)) * 10), 1);
|
|
518
518
|
}
|
|
519
|
-
`;import{BASE_TILE as Za,buildPolyMeshTransform as Qa}from"@layoutit/polycss-core";var qa=1,Ke=Za,Ka=.1;function Pt(e){return[e[1],e[0],e[2]]}function ot(e){return e?.direction?{...e,direction:Pt(e.direction)}:e}function ln(e){return Qa(e)}function Co(e,n=[0,0,0],t=1){let o=e.state,r=o.rotX,i=o.rotY,c=(o.zoom??qa)/Ke*t,l=(o.distance??0)*t,p=o.target??[0,0,0],h=p[0]+n[0],x=p[1]+n[1],f=p[2]+n[2],b=x*Ke,y=h*Ke,P=f*Ke;return`${l!==0?`translateZ(${-l}px) `:""}scale(${c}) rotateX(${r}deg) rotate(${i}deg) translate3d(${-b}px, ${-y}px, ${-P}px)`}function Ja(e){let n=e.trim();if(!n||n==="normal")return 1;let t=n.endsWith("%")?Number(n.slice(0,-1))/100:Number(n);return Number.isFinite(t)&&t>0?t:1}function Dr(e){let n=e.ownerDocument?.defaultView;if(!n)return 1;let t=1;for(let o=e;o;o=o.parentElement)t*=Ja(n.getComputedStyle(o).getPropertyValue("zoom"));return Number.isFinite(t)&&t>0?t:1}function Or(e,n){Math.abs(n-1)<1e-6?e.style.removeProperty("zoom"):e.style.setProperty("zoom",String(1/n))}function Hr(e){if(e.vertices.length<3)return null;let n=e.vertices[0],t=0,o=0,r=0;for(let x=1;x+1<e.vertices.length;x++){let f=e.vertices[x],b=e.vertices[x+1],y=f[1]-n[1],P=f[0]-n[0],v=f[2]-n[2],C=b[1]-n[1],F=b[0]-n[0],k=b[2]-n[2];t-=P*k-v*F,o-=v*C-y*k,r-=y*F-P*C}let i=Math.hypot(t,o,r);if(i<1e-9)return null;t/=i,o/=i,r/=i;let s=1/Ka,c=Math.round(t*s)/s,l=Math.round(o*s)/s,p=Math.round(r*s)/s,h=Math.hypot(c,l,p);return h<1e-9?null:{key:c+","+l+","+p,vec:[c/h,l/h,p/h]}}function Ir(e,n){let t=e?.disable??[],o=n?.disable??[];if(t.length!==o.length)return!1;for(let r of t)if(!o.includes(r))return!1;return!0}function Fr(e,n){return e===n?!0:!e||!n?!1:e[0]===n[0]&&e[1]===n[1]&&e[2]===n[2]}function Vr(e,n){return e===n?!0:(e?.color??"#000000")===(n?.color??"#000000")&&(e?.opacity??.25)===(n?.opacity??.25)&&(e?.lift??.05)===(n?.lift??.05)&&(e?.maxExtend??2e3)===(n?.maxExtend??2e3)}import{parseHex as Nr,parseHexColor as Br,parsePureColor as el}from"@layoutit/polycss-core";var tl=["--plx","--ply","--plz","--plr","--plg","--plb","--pli","--par","--pag","--pab","--pai","--clx","--cly","--clz"],St="--polycss-light-preview-active",zr=`var(${St}, 0)`,nl="max(0, calc(var(--pnx, 0) * var(--plx, 0) + var(--pny, 0) * var(--ply, 0) + var(--pnz, 1) * var(--plz, 1)))",Eo=(e,n,t)=>`calc(255 * max(0, 1.055 * pow(min(1, pow((var(${e}, 1) + 0.055) / 1.055, 2.4) * (pow((var(${n}, 1) + 0.055) / 1.055, 2.4) * var(--pai, 0.4) + pow((var(${t}, 1) + 0.055) / 1.055, 2.4) * var(--pli, 1) * var(--plam, 0)) / 3.14159265), 0.4167) - 0.055))`,ol=Eo("--psr","--par","--plr"),rl=Eo("--psg","--pag","--plg"),il=Eo("--psb","--pab","--plb");function de(e,n,t){return e.style.getPropertyValue(n)===t?!1:(e.style.setProperty(n,t),!0)}function lt(e){for(let n of tl)e.style.getPropertyValue(n)&&e.style.removeProperty(n)}function cn(e,n){let t=n.directionalLight?.direction??[.4,-.7,.59],o=Pt(t),r=Math.hypot(o[0],o[1],o[2])||1,i=o[0]/r,s=o[1]/r,c=o[2]/r,l=Br(n.directionalLight?.color??"#ffffff")?.rgb??[255,255,255],p=Br(n.ambientLight?.color??"#ffffff")?.rgb??[255,255,255],h=n.directionalLight?.intensity??1,x=n.ambientLight?.intensity??.4,f=P=>(P/255).toFixed(4);de(e,"--plx",i.toFixed(2)),de(e,"--ply",s.toFixed(2)),de(e,"--plz",c.toFixed(2)),de(e,"--plr",f(l[0])),de(e,"--plg",f(l[1])),de(e,"--plb",f(l[2])),de(e,"--pli",h.toFixed(4)),de(e,"--par",f(p[0])),de(e,"--pag",f(p[1])),de(e,"--pab",f(p[2])),de(e,"--pai",x.toFixed(4));let b=c,y=Math.sign(b||1)*Math.max(Math.abs(b),.01);de(e,"--clx",i.toFixed(2)),de(e,"--cly",s.toFixed(2)),de(e,"--clz",y.toFixed(2))}function Gr(e,n){let t=n.textureLighting==="dynamic";if(e.dataset.polycssLighting=n.textureLighting??"baked",!t){lt(e);return}cn(e,n)}function ct(e,n){n.paintColor?e.style.setProperty("--polycss-paint",n.paintColor):e.style.getPropertyValue("--polycss-paint")&&e.style.removeProperty("--polycss-paint"),n.dynamicColor?(e.style.setProperty("--psr",(n.dynamicColor.r/255).toFixed(4)),e.style.setProperty("--psg",(n.dynamicColor.g/255).toFixed(4)),e.style.setProperty("--psb",(n.dynamicColor.b/255).toFixed(4))):(e.style.getPropertyValue("--psr")||e.style.getPropertyValue("--psg")||e.style.getPropertyValue("--psb"))&&(e.style.removeProperty("--psr"),e.style.removeProperty("--psg"),e.style.removeProperty("--psb"))}function $r(e,n){let t=Nr(n??"#cccccc");e.style.setProperty("--psr",(t.r/255).toFixed(4)),e.style.setProperty("--psg",(t.g/255).toFixed(4)),e.style.setProperty("--psb",(t.b/255).toFixed(4))}function To(e,n,t){if(!e.plan||e.kind==="atlas"||e.plan.texture)return!1;let o=t.textureLighting??"baked",r={directionalLight:ot(t.directionalLight),ambientLight:t.ambientLight,textureLighting:o,textureQuality:t.textureQuality,seamBleed:t.seamBleed,strategies:t.strategies},i=io(e.plan,n,e.plan.normal,o,r);return gt(e.element,i,o),o==="baked"&&al(e.element),!0}function sl(e){let n=el(e)??{rgb:[255,255,255],alpha:1},[t,o,r]=n.rgb,i=(c,l)=>`calc(${c} * (1 - ${zr}) + var(${l}, ${c}) * ${zr})`,s=n.alpha<1?` / ${n.alpha}`:"";return`rgb(${i(t,"--polycss-preview-r")} ${i(o,"--polycss-preview-g")} ${i(r,"--polycss-preview-b")}${s})`}function Ur(e,n,t){if(!e.plan||e.kind==="atlas"||e.plan.texture)return!1;let o=e.element,r=e.plan.normal,i=Nr(n.color??"#cccccc"),s=!1;return s=de(o,"--pnx",r[0].toFixed(4))||s,s=de(o,"--pny",r[1].toFixed(4))||s,s=de(o,"--pnz",r[2].toFixed(4))||s,s=de(o,"--psr",(i.r/255).toFixed(4))||s,s=de(o,"--psg",(i.g/255).toFixed(4))||s,s=de(o,"--psb",(i.b/255).toFixed(4))||s,s=de(o,"--plam",nl)||s,s=de(o,"--polycss-preview-r",ol)||s,s=de(o,"--polycss-preview-g",rl)||s,s=de(o,"--polycss-preview-b",il)||s,s=de(o,"--polycss-paint",sl(t))||s,o.style.getPropertyValue("color")&&(o.style.removeProperty("color"),s=!0),s}function al(e){e.style.removeProperty("--pnx"),e.style.removeProperty("--pny"),e.style.removeProperty("--pnz"),e.style.removeProperty("--psr"),e.style.removeProperty("--psg"),e.style.removeProperty("--psb"),e.style.removeProperty("--plam"),e.style.removeProperty("--polycss-preview-r"),e.style.removeProperty("--polycss-preview-g"),e.style.removeProperty("--polycss-preview-b"),e.style.removeProperty("--polycss-paint")}var ll="http://www.w3.org/2000/svg",dn=class{constructor(){this.groundSvg=null;this.groundVisible=!1;this.currentGroundCssZ=null;this.shadowRoot=null}};function jr(e,n,t){let o=e.shadowRoot;if(o||(o=n.createElement("div"),o.setAttribute("class","polycss-shadows"),o.style.position="absolute",o.style.top="0",o.style.left="0",o.style.width="0",o.style.height="0",o.style.transformStyle="preserve-3d",o.style.pointerEvents="none",e.shadowRoot=o),o.parentNode!==t){let r=t.firstChild;r?t.insertBefore(o,r):t.appendChild(o)}return o}function Wr(e){e.groundSvg?.parentNode&&e.groundSvg.parentNode.removeChild(e.groundSvg),e.groundSvg=null,e.groundVisible=!1}function Yr(e){e.groundSvg&&e.groundVisible&&(e.groundSvg.style.display="none",e.groundVisible=!1)}function Xr(e,n,t,o){let r=[],i=e.firstChild;for(let s=0;s<t;s++){let c=i;c&&c.tagName==="path"?i=c.nextSibling:(c=n.createElementNS(ll,"path"),c.setAttribute("fill-rule","nonzero"),o&&(c.setAttribute("stroke-width","0.5"),c.setAttribute("stroke-linejoin","round")),e.insertBefore(c,i)),r.push(c)}for(;i;){let s=i.nextSibling;e.removeChild(i),i=s}return r}function Zr(e){return{host:e.host,doc:e.doc,cameraEl:e.cameraEl,sceneEl:e.sceneEl,camera:e.camera,layoutScale:e.layoutScale,options:{current:e.options},meshes:new Set,meshAutoCounter:{next:0},autoCenter:{offset:[0,0,0]},bboxCenterCssCache:{value:null},shadowSvgState:new dn,receiverShadowCache:new Map,receiverShadowCacheKey:new Map,casterItemsCache:new Map,casterItemsCacheKey:new Map}}import{buildSharedEdgeMap as cl,computeReceiverShadowFaces as dl,meshScaleVec3 as ti,prepareCasterEdgeOwners as ul,prepareCasterPolyItems as pl,prepareReceiverFacePlanes as ml}from"@layoutit/polycss-core";function Qr(e){for(let n of e)n.svg&&n.svg.parentNode&&n.svg.parentNode.removeChild(n.svg),n.svg=null}function qr(e,n){if(n){let t=e.receiverShadowCache.get(n);t&&Qr(t),e.receiverShadowCache.delete(n),e.receiverShadowCacheKey.delete(n)}else{for(let t of e.receiverShadowCache.values())Qr(t);e.receiverShadowCache.clear(),e.receiverShadowCacheKey.clear()}}function Kr(e,n){n?(e.casterItemsCache.delete(n),e.casterItemsCacheKey.delete(n)):(e.casterItemsCache.clear(),e.casterItemsCacheKey.clear())}function Jr(e){Wr(e.shadowSvgState),ei(e)}function Ao(e){return e.handle.id??e.autoMeshId}var fl="http://www.w3.org/2000/svg",un=new WeakMap,ni=new WeakMap,oi=new WeakMap,ri=new WeakMap,ii=new WeakMap;function si(e){let n=un.get(e);return n||(n=new Map,un.set(e,n)),n}function Mo(e){let n=un.get(e);if(n){for(let t of n.values())t.svg&&t.svg.parentNode&&t.svg.parentNode.removeChild(t.svg);n.clear(),un.delete(e)}}function ei(e){for(let n of e.meshes)Mo(n)}function ai(e,n,t,o,r,i,s,c,l,p){let h=e.options.current,{receiverShadowCache:x,receiverShadowCacheKey:f,casterItemsCache:b,casterItemsCacheKey:y}=e,P=o.handle.transform.position??[0,0,0],v=o.handle.transform.rotation??[0,0,0],C=o.polygons.some(A=>A.texture!==void 0),F=ti(o.handle.transform.scale),k=o.bboxCenterCss,z=h.shadow?.lift??.001,O=`${o.polygons.length}|${r.size}|${P.join(",")}|${v.join(",")}|${F.join(",")}|${k?k.join(","):"n"}|${z}`,Z=x.get(o);if(Z===void 0||f.get(o)!==O){Z=ml(o.polygons,P,o.handle.transform.scale,r,z,v),x.set(o,Z),f.set(o,O);let A=si(o);for(let g of A.values())g.svg&&g.svg.parentNode&&g.svg.parentNode.removeChild(g.svg);A.clear()}let q=[];for(let A of n){let g=A.handle.transform.position??[0,0,0],u=A.handle.transform.rotation??[0,0,0],d=ti(A.handle.transform.scale),T=A.bboxCenterCss,w=`${A.polygons.length}|${g.join(",")}|${u.join(",")}|${d.join(",")}|${T?T.join(","):"n"}`,R=b.get(A);if(R===void 0||y.get(A)!==w){let _=t.get(A),j=new Set;for(let Q of A.rendered)Q.plan&&!_.has(Q.polygonIndex)&&j.add(Q.polygonIndex);R=pl(A.polygons,g,A.handle.transform.scale,Q=>j.has(Q),u),b.set(A,R),y.set(A,w)}let L;if(A===o){let _=ni.get(A);(_===void 0||oi.get(A)!==A.polygons)&&(_=cl(A.polygons),ni.set(A,_),oi.set(A,A.polygons)),L=_}let te;if(A!==o&&A.polygons.length>=40){let _=ri.get(A);(_===void 0||ii.get(A)!==w)&&(_=ul(A.polygons,g,A.handle.transform.scale,u),ri.set(A,_),ii.set(A,w)),te=_}q.push({id:A,items:R,selfShadowEdgeMap:L,edgeOwners:te,casterPolygonCount:A.polygons.length})}let D={rotX:e.camera.state.rotX,rotY:e.camera.state.rotY,meshRotation:o.handle.transform.rotation},H=dl({receiverPlanes:Z,receiverPolygons:o.polygons,receiverHasTexture:C,casters:q,lightDir:i,cameraRot:D,ambientLight:h.ambientLight,directionalLight:h.directionalLight,shadow:{color:h.shadow?.color,opacity:p,maxExtend:h.shadow?.maxExtend}}),V=si(o),G=new Set;for(let A of H){G.add(A.faceIndex);let g=V.get(A.faceIndex);g||(g={svg:null,visible:!1,width:-1,height:-1,matrixCss:""},V.set(A.faceIndex,g));let u=g.svg;u?(g.visible||(u.style.display="block"),(g.width!==A.width||g.height!==A.height)&&(u.setAttribute("width",String(A.width)),u.setAttribute("height",String(A.height)),u.setAttribute("viewBox",`0 0 ${A.width} ${A.height}`),g.width=A.width,g.height=A.height),g.matrixCss!==A.matrixCss&&(u.style.transform=A.matrixCss,g.matrixCss=A.matrixCss)):(u=e.doc.createElementNS(fl,"svg"),u.setAttribute("class","polycss-shadow polycss-shadow-svg polycss-shadow-receiver"),h.debugShadowAttrs&&(u.setAttribute("data-poly-shadow-type","receiver"),u.setAttribute("data-poly-shadow-receiver",Ao(o)),u.setAttribute("data-poly-shadow-receiver-face",String(A.faceIndex)),u.setAttribute("data-poly-shadow-receiver-polys",JSON.stringify(A.memberPolyIndices))),u.setAttribute("width",String(A.width)),u.setAttribute("height",String(A.height)),u.setAttribute("viewBox",`0 0 ${A.width} ${A.height}`),u.setAttribute("style",`position:absolute;top:0;left:0;display:block;overflow:hidden;transform-origin:0 0;pointer-events:none;will-change:transform;transform:${A.matrixCss}`),jr(e.shadowSvgState,e.doc,e.sceneEl).appendChild(u),g.svg=u,g.width=A.width,g.height=A.height,g.matrixCss=A.matrixCss),g.visible=!0;let d=Xr(u,e.doc,A.paths.length,!0),T=A.opacity.toFixed(4),w=[],R=!!h.debugShadowAttrs;for(let L=0;L<A.paths.length;L++){let te=A.paths[L],_=R?Ao(te.casterId):"";R&&w.push(_);let j=d[L];if(j.setAttribute("d",te.d),j.getAttribute("fill")!==A.fill&&j.setAttribute("fill",A.fill),j.getAttribute("stroke")!==A.fill&&j.setAttribute("stroke",A.fill),j.getAttribute("opacity")!==T&&j.setAttribute("opacity",T),R){j.getAttribute("data-poly-shadow-caster")!==_&&j.setAttribute("data-poly-shadow-caster",_);let Q=JSON.stringify(te.casterPolygonIndices);j.getAttribute("data-poly-shadow-caster-polys")!==Q&&j.setAttribute("data-poly-shadow-caster-polys",Q)}}if(R){let L=w.join(" ");u.getAttribute("data-poly-shadow-casters")!==L&&u.setAttribute("data-poly-shadow-casters",L)}}for(let[A,g]of V)G.has(A)||g.svg&&g.visible&&(g.svg.style.display="none",g.visible=!1)}var li=Symbol.for("polycss.animation.triangleFrameTarget");var Tl=750;function ui(e){return!Object.prototype.hasOwnProperty.call(e,"seamBleed")||e.seamBleed!==void 0?e:{...e,seamBleed:mi}}var Al={key:"non-cullable",normal:[1,1,0]};function pi(){return[Al]}function fi(e,n){if(!e||typeof e.appendChild!="function")throw new Error("createPolyScene: host must be an HTMLElement");if(!n?.camera)throw new Error("createPolyScene: a camera handle is required. Use createPolyCamera({...}) or createPolyPerspectiveCamera({...}) and pass as { camera }.");let t=n.camera;e.ownerDocument&&kr(e.ownerDocument),e.ownerDocument?.defaultView&&e.ownerDocument.defaultView.getComputedStyle(e).position==="static"&&(e.style.position="relative");let{camera:o,...r}=n,i=ui({seamBleed:mi,...r}),s=Dr(e),c=[0,0,0],l=e.ownerDocument??document,p=l.createElement("div");p.className="polycss-camera",Z(p,i),e.appendChild(p);let h=l.createElement("div");h.className="polycss-scene",h.setAttribute("aria-hidden","true"),q(h,i),p.appendChild(h);let x=Zr({host:e,doc:l,cameraEl:p,sceneEl:h,camera:t,layoutScale:s,options:i}),f=x.meshes,b=new WeakMap,y=x.shadowSvgState,P=()=>Yr(y),v=()=>Jr(x),C=null;function F(a){if(!a)return null;let m=Math.hypot(a[0],a[1],a[2]);if(!Number.isFinite(m)||m<=0)return null;let S=Math.round(a[0]/m*100)/100,E=Math.round(a[1]/m*100)/100,W=Math.round(a[2]/m*100)/100;return`${S}|${E}|${W}`}function k(){C=null}let z=a=>qr(x,a),O=a=>Kr(x,a);function Z(a,m){let S=t.perspectiveStyle;if(S==="none")a.style.perspective="1000000px";else{let E=parseFloat(S);Number.isFinite(E)&&(a.style.perspective=`${E}px`)}}function q(a,m){Or(a,s),a.style.transform=Co(t,c,s),Gr(a,m)}function D(a){a.style.transform=Co(t,c,s)}function H(a){a.voxelRenderer?.dispose(),a.voxelRenderer=void 0,g(a.rendered,a.disposeAtlas),a.disposeAtlas=void 0,a.rendered.length=0,a.renderedByPolygonIndex=[],a.cameraCullGroups=[],a.cameraCullSignature="",a.solidLightingPreviewPrepared=!1,a.solidLightingPreviewActive=!1,A(a);for(let m of Array.from(a.wrapper.children))m instanceof HTMLElement&&m.classList.contains("polycss-bucket")&&m.remove();a.hasBuckets=!1}function V(a){for(let m of Array.from(a.wrapper.childNodes)){if(!(m instanceof HTMLElement))return m;if(m.classList.contains("polycss-bucket")||m.classList.contains("polycss-shadow"))continue;let S=m.tagName.toLowerCase();if(!(S==="b"||S==="i"||S==="s"||S==="u"||S==="q"))return m}return null}function G(a,m,S){S?.parentNode===a.wrapper?a.wrapper.insertBefore(m,S):a.wrapper.appendChild(m)}function A(a){for(let m of a.shadowRendered)m.parentNode&&m.parentNode.removeChild(m);a.shadowRendered.length=0,v()}function g(a,m){m?.();for(let S of a){try{S.dispose()}catch{}S.element.parentNode&&S.element.parentNode.removeChild(S.element)}}function u(a,m,S){a.rendered=m,a.renderedByPolygonIndex=[];for(let E of m)a.renderedByPolygonIndex[E.polygonIndex]=E;a.disposeAtlas=S,a.solidLightingPreviewPrepared=!1}function d(a,m){let S=a.renderedByPolygonIndex[m];return S?.polygonIndex===m?S:void 0}function T(a){for(let m of Array.from(a.wrapper.children))m instanceof HTMLElement&&m.classList.contains("polycss-bucket")&&m.remove();a.hasBuckets=!1;for(let m of a.rendered)m.element.parentNode&&m.element.parentNode.removeChild(m.element)}function w(a,m){let S=a.polygons[m.polygonIndex];return a.stableDom&&S?di(S):m.plan?.normal??(S?di(S):null)}function R(a){if(!Q(a))return a.rendered;let m=L(a);return a.rendered.filter(S=>te(a,S,wo,m))}function L(a){return{rotX:t.state.rotX,rotY:t.state.rotY,meshRotation:a.handle.transform.rotation}}function te(a,m,S=wo,E=L(a)){let W=w(a,m);return W===null||Sl(W,E,S)}function _(a){if(a.excludeFromAutoCenter){a.cameraCullGroups=[];return}let m=new Map;for(let S of a.rendered){let E=w(a,S);if(!E)continue;if(!xl(E)){a.cameraCullGroups=pi();return}let W=gl(E);if(!m.has(W)&&(m.set(W,E),m.size>hl)){a.cameraCullGroups=pi();return}}a.cameraCullGroups=Array.from(m,([S,E])=>({key:S,normal:E}))}function j(a){return Q(a)?yl(a.cameraCullGroups,L(a)):"all"}function Q(a){return!a.excludeFromAutoCenter&&Pl(a.cameraCullGroups)}function re(a){a.cameraCullSignature=Q(a)?j(a):"all"}function fe(a,m){let S=new Array(a.rendered.length),E=!1,W=L(a);for(let K=0;K<a.rendered.length;K+=1){let oe=a.rendered[K],J=te(a,oe,m,W);S[K]=J}let B=null,I=null,U=()=>{if(!(!B||!I)){if(B===I)B.remove();else{let K=l.createRange();K.setStartBefore(B),K.setEndAfter(I),K.deleteContents(),K.detach()}B=null,I=null,E=!0}};for(let K=0;K<a.rendered.length;K+=1){let oe=a.rendered[K];!S[K]&&oe.element.parentNode===a.wrapper?(I&&I.nextSibling===oe.element||(U(),B=oe.element),I=oe.element):U()}U();let Y=K=>{for(let oe=K;oe<a.rendered.length;oe+=1){let J=a.rendered[oe].element;if(J.parentNode===a.wrapper)return J}return V(a)},ae=-1,ne=K=>{if(ae<0)return;let oe=l.createDocumentFragment();for(let J=ae;J<K;J+=1){let He=a.rendered[J];be(a,He),oe.appendChild(He.element)}G(a,oe,Y(K)),ae=-1,E=!0};for(let K=0;K<a.rendered.length;K+=1){let oe=a.rendered[K];S[K]&&oe.element.parentNode!==a.wrapper?ae<0&&(ae=K):ne(K)}return ne(a.rendered.length),E}function ue(a,m=!1){if(a.voxelRenderer){m?a.voxelRenderer.render(L(a)):a.voxelRenderer.syncCamera(L(a)),a.cameraCullSignature="voxel-direct";return}if(!Q(a)){let W=a.cameraCullSignature!=="all";a.cameraCullSignature="all",W&&ve(a);return}if(a.hasBuckets){pe(a,m);return}let S=j(a);if(!m&&S===a.cameraCullSignature)return;let E=fe(a,wo);a.cameraCullSignature=S,E&&ze(a)}function pe(a,m=!1){let S=Q(a)?j(a):"all";!m&&S===a.cameraCullSignature||ve(a)}function Ce(a,m){return w(a,m)}function be(a,m){if(i.textureLighting!=="dynamic")return;let S=Ce(a,m);S&&(m.element.style.setProperty("--pnx",S[0].toFixed(4)),m.element.style.setProperty("--pny",S[1].toFixed(4)),m.element.style.setProperty("--pnz",S[2].toFixed(4)))}function Ae(a){T(a),a.hasBuckets=!1;let m=a.skipBucketNormalCleanupOnce;a.skipBucketNormalCleanupOnce=!1;let S=l.createDocumentFragment(),E=i.textureLighting==="dynamic"&&!a.stableDom,W=new Map,B=[];for(let I of R(a)){let U=a.polygons[I.polygonIndex],Y=E&&U?Hr(U):null;if(!Y){B.push(I);continue}let ae=Y.key+"|"+(U.color??""),ne=W.get(ae);ne||(ne={vec:Y.vec,items:[]},W.set(ae,ne)),ne.items.push(I)}for(let I of B)be(a,I),S.appendChild(I.element);for(let I of W.values()){if(I.items.length<2){for(let Y of I.items)be(a,Y),S.appendChild(Y.element);continue}let U=l.createElement("div");U.className="polycss-bucket",a.hasBuckets=!0,U.style.setProperty("--pnx",String(I.vec[0])),U.style.setProperty("--pny",String(I.vec[1])),U.style.setProperty("--pnz",String(I.vec[2]));for(let Y of I.items)U.appendChild(Y.element),(!m||Y.kind==="triangle")&&(Y.element.style.removeProperty("--pnx"),Y.element.style.removeProperty("--pny"),Y.element.style.removeProperty("--pnz"));S.appendChild(U)}G(a,S,V(a)),re(a)}function Be(){return new Promise(a=>setTimeout(a,0))}async function Ze(a,m){if(i.textureLighting==="dynamic"&&!a.stableDom)return Ae(a),!m();T(a);let E=l.createDocumentFragment(),W=V(a),B=0;for(let I of R(a)){if(m())return!1;be(a,I),E.appendChild(I.element),B++,B%Tl===0&&(G(a,E,W),E=l.createDocumentFragment(),await Be())}return E.childNodes.length>0&&G(a,E,W),re(a),!m()}function rt(a,m){let S=i.textureLighting==="dynamic",E=i.directionalLight?.direction,W=m&&(m[0]!==0||m[1]!==0||m[2]!==0);if(!S||!W||!E){if(a.lightOverrideSignature==="clear")return;a.wrapper.style.removeProperty("--plx"),a.wrapper.style.removeProperty("--ply"),a.wrapper.style.removeProperty("--plz"),a.lightOverrideSignature="clear";return}let B=Lo(E,m),I=Pt(B),U=Math.hypot(I[0],I[1],I[2])||1,Y=(I[0]/U).toFixed(2),ae=(I[1]/U).toFixed(2),ne=(I[2]/U).toFixed(2),K=`${Y}|${ae}|${ne}`;a.lightOverrideSignature!==K&&(a.wrapper.style.setProperty("--plx",Y),a.wrapper.style.setProperty("--ply",ae),a.wrapper.style.setProperty("--plz",ne),a.lightOverrideSignature=K)}function ut(a){let m=!1;for(let S of a.rendered){if(!S.plan||S.kind==="atlas"||S.plan.texture)continue;let E=a.polygons[S.polygonIndex];E&&(m=To(S,E,i)||m)}return a.solidLightingPreviewPrepared=!1,a.solidLightingPreviewActive=!1,m}function it(a){if((i.textureLighting??"baked")!=="baked")return!1;let m=!1;for(let S of a.rendered){if(!S.plan||S.kind==="atlas"||S.plan.texture)continue;let E=a.polygons[S.polygonIndex];E&&(Ur(S,E,S.plan.shadedColor),m=!0)}return a.solidLightingPreviewPrepared=m,m}function jn(a){return(i.textureLighting??"baked")!=="baked"||!a.solidLightingPreviewPrepared&&!it(a)?!1:(a.solidLightingPreviewActive=!0,!0)}function Wn(a){return a.kind==="atlas"||!!a.plan?.texture}function Yn(){if((i.textureLighting??"baked")!=="baked")return!1;let a=!1;for(let m of f)a=ut(m)||a,m.rendered.some(Wn)&&(Rt(m),a=!0);h.style.removeProperty(St);for(let m of f)lt(m.wrapper),m.solidLightingPreviewActive=!1;return lt(h),a}function Xn(){h.style.removeProperty(St);for(let a of f)a.solidLightingPreviewActive&&(ut(a),lt(a.wrapper));(i.textureLighting??"baked")!=="dynamic"&&(lt(h),k(),Ee())}function $(a,m){let S=a.handle.transform.rotation,E=m.directionalLight?.direction??i.directionalLight?.direction;if(!(S&&(S[0]!==0||S[1]!==0||S[2]!==0))||!E){lt(a.wrapper);return}let B=Lo(E,S);cn(a.wrapper,{...i,...m,directionalLight:{...i.directionalLight,...m.directionalLight,direction:B}})}function ie(a){if((i.textureLighting??"baked")!=="baked")return!1;cn(h,{...i,...a}),!a.skipShadows&&a.directionalLight?.direction&&Ee(a.directionalLight.direction);let m=!1;for(let S of f)$(S,a),m=jn(S)||m;return m?de(h,St,"1"):h.style.removeProperty(St),m}function se(a,m,S){let E=a.polygons[m];if(!E)return!1;let W=d(a,m);if(!W)return!1;let B=i.textureLighting??"baked";return B==="dynamic"?($r(W.element,S),!0):B==="baked"?To(W,E,i):!1}function Me(a,m){let S=a.polygons[m];if(!S)return!1;let E=d(a,m);return E?(ye(E.element,S,m),!0):!1}function _t(a,m,S){return!(S.length===0||!S.every(E=>E==="color"||E==="data")||S.includes("color")&&!se(a,m,a.polygons[m]?.color)||S.includes("data")&&!Me(a,m))}function ze(a){k(),Ee()}function Ee(a){let m=[];for(let J of f)!J.disposed&&J.castShadow&&m.push(J);if(m.length===0){v(),C=null;return}let S=i.shadow?.color??"#000000",E=i.shadow?.opacity??.25,W=El(S)?.rgb??[0,0,0],B=W[0],I=W[1],U=W[2],Y=a??i.directionalLight?.direction??[.4,-.7,.59],ae=Pt(Y),ne=F(ae);if(ne!==null&&ne===C)return;let K=new Map;for(let J of m)K.set(J,ci(J.polygons,{normalTolerance:.1,distanceTolerance:.5,overlapFraction:.95,preserveDoubleSidedBackfaces:!1}));let oe=new Map;for(let J of f)J.disposed||!J.receiveShadow||oe.set(J,new Set);P();for(let J of f)J.disposed||!J.receiveShadow||ai(x,m,K,J,oe.get(J)??new Set,ae,B,I,U,E);C=ne}function ve(a){if(a.voxelRenderer){a.voxelRenderer.render(L(a)),a.cameraCullSignature="voxel-direct";return}A(a),Ae(a),ze(a)}function De(a,m){if(!m||!a.polygons||a.polygons.length<2)return;let S=Math.hypot(m[0],m[1],m[2]);if(!Number.isFinite(S)||S<=0)return;let E=m[0]/S,W=m[1]/S,B=m[2]/S,I=K=>Math.round(K*1e3)/1e3,U=`${I(E)},${I(W)},${I(B)}`,Y=a.lightOcclusionCache;if(Y&&Y.polygons===a.polygons&&Y.lightDirKey===U)return Y.occluded;let ae=Y&&Y.polygons===a.polygons?Y.dedupDropped:ci(a.polygons,{normalTolerance:.1,distanceTolerance:.12,overlapFraction:.98,preserveDoubleSidedBackfaces:!1}),ne=vl(a.polygons,[E,W,B],ae);return a.lightOcclusionCache={polygons:a.polygons,lightDirKey:U,occluded:ne,dedupDropped:ae},ne}function Oe(a){return!!a.voxelSource&&i.textureLighting!=="dynamic"&&!a.stableDom&&!a.castShadow}function Se(a,m){H(a);let S=i.directionalLight,E=m?{...S,direction:m}:S,W=ot(E),B=void 0;if(Oe(a)){let Y=_r({doc:l,wrapper:a.wrapper,polygons:a.parseResult.polygons,directionalLight:W,ambientLight:i.ambientLight});if(Y){a.voxelRenderer=Y,Y.render(L(a)),a.cameraCullSignature="voxel-direct";return}}let I={doc:l,directionalLight:W,ambientLight:i.ambientLight,textureLighting:i.textureLighting,textureQuality:i.textureQuality,seamBleed:i.seamBleed,strategies:i.strategies,lightOccludedPolyIndices:B},U=a.stableDom?(()=>{let Y=vt(a.polygons,I);return ct(a.wrapper,Y),Nt(a.polygons,{...I,solidPaintDefaults:Y})??xt(a.polygons,{...I,solidPaintDefaults:Y})})():xt(a.polygons,{...I,computeSolidPaintDefaults:!0,skipDynamicNormalVars:i.textureLighting==="dynamic"});a.stableDom||ct(a.wrapper,U.solidPaintDefaults??{}),u(a,U.rendered,U.dispose),a.skipBucketNormalCleanupOnce=i.textureLighting==="dynamic"&&!a.stableDom,_(a),Ae(a),ze(a)}function Rt(a,m){if(a.rendered.length===0||a.voxelRenderer||a.stableDom||Oe(a)){Se(a,m);return}if(a.rendered[0]?.element.parentNode===null){Se(a,m);return}let S=i.directionalLight,E=m?{...S,direction:m}:S,W=ot(E),B={doc:l,directionalLight:W,ambientLight:i.ambientLight,textureLighting:i.textureLighting,textureQuality:i.textureQuality,seamBleed:i.seamBleed,strategies:i.strategies,computeSolidPaintDefaults:!0,skipDynamicNormalVars:i.textureLighting==="dynamic"},I=xt(a.polygons,B),U=()=>{a.rebakeInFlight=!1;let ne=a.rebakeQueuedLightDir;ne!==null&&(a.rebakeQueuedLightDir=null,Rt(a,ne))},Y=()=>{if(a.disposed){I.dispose(),U();return}if(I.rendered.length!==a.rendered.length){I.dispose(),Se(a,m),U();return}for(let oe of I.rendered){let J=a.renderedByPolygonIndex[oe.polygonIndex];if(!J)continue;let He=oe.element.getAttribute("style");He!==null&&J.element.setAttribute("style",He)}let ne=I.solidPaintDefaults;ne&&ct(a.wrapper,ne);let K=a.disposeAtlas;a.disposeAtlas=I.dispose,K&&(typeof requestAnimationFrame=="function"?J=>{requestAnimationFrame(J)}:J=>{setTimeout(J,0)})(K),ze(a),U()},ae=I.pagesReady;ae&&typeof ae.then=="function"?ae.then(()=>Qn(I.rendered)).then(qn).then(Y,()=>{I.dispose(),a.disposed||Se(a,m),U()}):Y()}function Zn(a,m){if(a.rebakeInFlight){a.rebakeQueuedLightDir=m;return}a.rebakeInFlight=!0,Rt(a,m)}function Qn(a){let m=new Set;for(let S of a){let E=S.element.getAttribute("style")??"",W=/url\((blob:[^)]+)\)/g,B;for(;(B=W.exec(E))!==null;)m.add(B[1])}return Array.from(m)}function qn(a){return a.length===0||typeof Image>"u"?Promise.resolve():Promise.all(a.map(m=>{let S=new Image;S.src=m;let E=S.decode?.();return E?E.catch(()=>{}):Promise.resolve()})).then(()=>{})}function Qe(){let a=1/0,m=!1;for(let B of f)if(!B.disposed&&B.receiveShadow){m=!0;break}for(let B of f){if(B.disposed||!(m?B.receiveShadow:B.castShadow))continue;let U=B.handle.transform.position?.[2]??0;for(let Y of B.polygons)for(let ae of Y.vertices){let ne=ae[2]+U;ne<a&&(a=ne)}}if(!Number.isFinite(a)){let B=y.currentGroundCssZ!==null;y.currentGroundCssZ=null,B&&(v(),k());return}let S=i.shadow?.lift??.05,E=(a+S)*Ke,W=y.currentGroundCssZ;y.currentGroundCssZ=E,W!==E&&(k(),Ee())}async function Xt(a,m){H(a);let S=ot(i.directionalLight),E={doc:l,directionalLight:S,ambientLight:i.ambientLight,textureLighting:i.textureLighting,textureQuality:i.textureQuality,seamBleed:i.seamBleed,strategies:i.strategies,lightOccludedPolyIndices:void 0},W=a.stableDom?Nt(a.polygons,E):null;if(W){let U=vt(a.polygons,E);return ct(a.wrapper,U),u(a,W.rendered,W.dispose),_(a),Ae(a),ze(a),!m()}let B=await rn(a.polygons,{...E,skipDynamicNormalVars:i.textureLighting==="dynamic"},m);if(m())return B.dispose(),!1;ct(a.wrapper,B.solidPaintDefaults),u(a,B.rendered,B.dispose),a.skipBucketNormalCleanupOnce=i.textureLighting==="dynamic"&&!a.stableDom,_(a);let I=await Ze(a,m);return I&&ze(a),I}function st(){let a=c,m=[0,0,0];if(i.autoCenter){let S=[];for(let E of f)!E.disposed&&!E.excludeFromAutoCenter&&S.push(...E.polygons);if(S.length>0){let E=bl(S);m=[(E.min[0]+E.max[0])/2,(E.min[1]+E.max[1])/2,(E.min[2]+E.max[2])/2]}}a[0]===m[0]&&a[1]===m[1]&&a[2]===m[2]||(c=m,x.autoCenter.offset=m,q(h,i))}function Ni(a,m={}){let E=(h.ownerDocument??document).createElement("div");E.className="polycss-mesh",m.id&&E.setAttribute("data-poly-mesh-id",m.id);let W=`polycss-mesh-${x.meshAutoCounter.next++}`;E.setAttribute("data-poly-mesh-index",W);let B={...m},I=m.merge!==!1,U=!!m.stableDom,Y=0,ae=ln(B);ae&&(E.style.transform=ae);let ne=(N,X)=>a.voxelSource?N:X?Cl(N,{meshResolution:m.meshResolution}):(U||m.excludeFromAutoCenter,N),K=ne(a.polygons,I),oe=null;function J(){let N=ln(B);E.style.transform=N??""}function He(N){if(N.length===0){oe=null,Ne&&(Ne.bboxCenterCss=null),J();return}let X=1/0,le=1/0,me=1/0,Le=-1/0,ce=-1/0,ge=-1/0;for(let Ue of N)for(let Fe of Ue.vertices)Fe[0]<X&&(X=Fe[0]),Fe[0]>Le&&(Le=Fe[0]),Fe[1]<le&&(le=Fe[1]),Fe[1]>ce&&(ce=Fe[1]),Fe[2]<me&&(me=Fe[2]),Fe[2]>ge&&(ge=Fe[2]);if(!Number.isFinite(X)){oe=null,Ne&&(Ne.bboxCenterCss=null),J();return}let Ie=(le+ce)/2*Ke,$e=(X+Le)/2*Ke,_e=(me+ge)/2*Ke;oe=[Ie,$e,_e],Ne&&(Ne.bboxCenterCss=oe),J()}let Ne=null;He(K),h.appendChild(E);let M={handle:void 0,wrapper:E,parseResult:a,rendered:[],renderedByPolygonIndex:[],shadowRendered:[],polygons:K,voxelSource:a.voxelSource,disposed:!1,stableDom:U,hasBuckets:!1,skipBucketNormalCleanupOnce:!1,excludeFromAutoCenter:!!m.excludeFromAutoCenter,castShadow:!!m.castShadow,bboxCenterCss:oe,receiveShadow:!!m.receiveShadow,cameraCullGroups:[],cameraCullSignature:"",lightOverrideSignature:"clear",stableTriangleColorFrame:0,solidLightingPreviewPrepared:!1,solidLightingPreviewActive:!1,bakedRotation:m.rotation?[...m.rotation]:[0,0,0],autoMeshId:W,rebakeInFlight:!1,rebakeQueuedLightDir:null},Ge=null,Kn=0,Zt=-1,kt=null;function Dt(){Ge=null,kt=null,Zt=-1}function Bo(){let N=Ge;if(!N||N.polygonCount!==M.polygons.length)return M.polygons;if(kt&&Zt===Kn)return kt;let X=N.vertices,le=new Array(N.polygonCount);for(let me=0;me<N.polygonCount;me++){let Le=M.polygons[me],ce=me*9;le[me]={...Le,color:N.colors?.[me]??Le.color,vertices:[[X[ce],X[ce+1],X[ce+2]],[X[ce+3],X[ce+4],X[ce+5]],[X[ce+6],X[ce+7],X[ce+8]]]}}return kt=le,Zt=Kn,le}function zo(N,X){let le=N?.stableTriangleUpdateMode==="color-only";M.stableTriangleColorFrame++;let me=M.stableDom&&!X;if(me||He(M.polygons),M.stableDom&&!M.hasBuckets){let Le={doc:l,directionalLight:ot(i.directionalLight),ambientLight:i.ambientLight,textureLighting:i.textureLighting,textureQuality:i.textureQuality,seamBleed:i.seamBleed},ce=M.rendered.length===M.polygons.length&&M.rendered.every(_e=>_e.kind==="triangle"),ge=M.stableDom&&!X,Ie=ce||ge?{}:vt(M.polygons,Le);ce||ct(M.wrapper,Ie);let $e={...Le,solidPaintDefaults:Ie,optimizeStableTriangleStyle:!0,stableTriangleDebug:N?.stableTriangleDebug,stableTriangleUpdateMode:N?.stableTriangleUpdateMode,stableTriangleColorPolicy:N?.stableTriangleColorPolicy,stableTriangleColorSteps:N?.stableTriangleColorSteps,stableTriangleColorFreezeFrames:N?.stableTriangleColorFreezeFrames,stableTriangleColorBudget:N?.stableTriangleColorBudget,stableTriangleColorMaxAge:N?.stableTriangleColorMaxAge,stableTriangleColorMaxStep:N?.stableTriangleColorMaxStep,stableTriangleMatrixDecimals:N?.stableTriangleMatrixDecimals,stableTriangleColorFrame:M.stableTriangleColorFrame};if(an(M.rendered,M.polygons,$e))return le||(_(M),ue(M,!0),X&&st()),!0}return me&&He(M.polygons),!1}let pt={get polygons(){return Bo()},set polygons(N){Dt(),M.polygons=N},element:E,id:m.id,get transform(){return B},remove(){Y++,E.parentNode&&E.parentNode.removeChild(E),H(M),f.delete(M),b.delete(E),z(M),O(M),st(),Qe()},setPolygons(N,X){Y++,I=X?.merge??I,U=X?.stableDom??U,M.stableDom=U,M.voxelSource=void 0,M.polygons=ne(N,I),O(M),z(M),Dt(),pt.polygons=M.polygons;let le=X?.recomputeAutoCenter??!0;zo(X,le)||(Se(M),le&&st())},[li](N,X){let le=X?.merge??I,me=X?.stableDom??U;if(!N.solidTriangles||!me||le||m.meshResolution!==void 0||M.hasBuckets||N.polygonCount!==M.polygons.length||N.vertices.length<N.polygonCount*9||M.rendered.length!==N.polygonCount)return!1;for(let ge=0;ge<M.rendered.length;ge++){let Ie=M.rendered[ge],$e=M.polygons[ge];if(Ie?.kind!=="triangle"||Ie.polygonIndex!==ge||!$e||$e.vertices.length!==3||$e.texture||$e.material?.texture)return!1}let Le=X?.recomputeAutoCenter??!0;if(!Le){let ge=M.stableTriangleColorFrame+1,Ie={doc:l,directionalLight:ot(i.directionalLight),ambientLight:i.ambientLight,textureLighting:i.textureLighting,textureQuality:i.textureQuality,seamBleed:i.seamBleed,solidPaintDefaults:{},optimizeStableTriangleStyle:!0,stableTriangleDebug:X?.stableTriangleDebug,stableTriangleUpdateMode:X?.stableTriangleUpdateMode,stableTriangleColorPolicy:X?.stableTriangleColorPolicy,stableTriangleColorSteps:X?.stableTriangleColorSteps,stableTriangleColorFreezeFrames:X?.stableTriangleColorFreezeFrames??0,stableTriangleColorBudget:X?.stableTriangleColorBudget,stableTriangleColorMaxAge:X?.stableTriangleColorMaxAge,stableTriangleColorMaxStep:X?.stableTriangleColorMaxStep,stableTriangleMatrixDecimals:X?.stableTriangleMatrixDecimals,stableTriangleColorFrame:ge};if(sn(M.rendered,M.polygons,N,Ie))return Y++,I=le,U=me,M.stableDom=U,M.voxelSource=void 0,M.stableTriangleColorFrame=ge,Ge=N,Kn++,kt=null,Zt=-1,Q(M)?(_(M),ue(M,!0)):re(M),!0}Y++,I=le,U=me,M.stableDom=U,M.voxelSource=void 0;let ce=N.vertices;for(let ge=0;ge<N.polygonCount;ge++){let Ie=M.polygons[ge],$e=N.colors?.[ge];$e&&(Ie.color=$e);let _e=Ie.vertices,Ue=ge*9;_e[0][0]=ce[Ue],_e[0][1]=ce[Ue+1],_e[0][2]=ce[Ue+2],_e[1][0]=ce[Ue+3],_e[1][1]=ce[Ue+4],_e[1][2]=ce[Ue+5],_e[2][0]=ce[Ue+6],_e[2][1]=ce[Ue+7],_e[2][2]=ce[Ue+8]}return Dt(),pt.polygons=M.polygons,zo(X,Le)},updatePolygon(N,X){let le=typeof N=="number"?N:M.polygons.indexOf(N);if(le<0&&typeof N!="number"&&Ge&&(le=Bo().indexOf(N)),le<0||le>=M.polygons.length)return;Dt(),M.voxelSource=void 0,Object.assign(M.polygons[le],X);let me=Object.keys(X);_t(M,le,me)||Se(M)},async setPolygonsChunked(N,X){let le=++Y;I=X?.merge??I,U=X?.stableDom??U,M.stableDom=U,M.voxelSource=void 0,M.polygons=ne(N,I),Dt(),pt.polygons=M.polygons,He(M.polygons);let me=X?.recomputeAutoCenter??!0;if(!await Xt(M,()=>M.disposed||le!==Y)){H(M);return}me&&st()},setTransform(N){let X=M.castShadow,le=M.receiveShadow;N.castShadow!==void 0&&(M.castShadow=!!N.castShadow),N.receiveShadow!==void 0&&(M.receiveShadow=!!N.receiveShadow),B={...B,...N};let me=ln(B);E.style.transform=me??"",rt(M,B.rotation),N.rotation!==void 0&&ue(M,!0),M.castShadow!==X&&(M.voxelSource&&Se(M),ze(M),Qe()),M.receiveShadow!==le&&(M.receiveShadow||Mo(M),k(),Ee()),(N.position!==void 0||N.scale!==void 0)&&(M.castShadow||M.receiveShadow)&&(Qe(),k(),Ee())},dispose(){if(!M.disposed){M.disposed=!0,Y++,E.parentNode&&E.parentNode.removeChild(E),H(M);try{a.dispose()}catch{}f.delete(M),b.delete(E),st(),Qe()}},rebakeAtlas(){M.bakedRotation=B.rotation?[...B.rotation]:[0,0,0];let N=i.directionalLight?.direction??[.4,-.7,.59],X=Lo(N,M.bakedRotation);Zn(M,X)},getPosition(){return B.position},getRotation(){return B.rotation},getScale(){return B.scale},getPolygons(){return pt.polygons}};return M.handle=pt,Ne=M,b.set(E,M),f.add(M),Se(M),rt(M,B.rotation),st(),Qe(),M.receiveShadow&&(k(),Ee()),pt}function Gi(a){let m=!!i.autoCenter,S=i.strategies,E=i.seamBleed,W=i.textureLighting,B=i.directionalLight?.direction,I=i.shadow,U=ui(a);i={...i,...U},x.options.current=i,q(h,i);let Y=!!i.autoCenter;for(let Ge of f)rt(Ge,Ge.handle.transform.rotation);let ae=a.strategies!==void 0&&!Ir(a.strategies,S),ne=Object.prototype.hasOwnProperty.call(a,"seamBleed")&&U.seamBleed!==E;if(ae||ne)for(let Ge of f)Se(Ge);m!==Y&&st();let K=a.textureLighting!==void 0&&W!==i.textureLighting,oe=i.directionalLight?.direction,J=a.directionalLight!==void 0&&!Fr(B,oe),He=i.shadow,Ne=a.shadow!==void 0&&!Vr(I,He),M=J||Ne;if(K){if(!ae&&!ne)for(let Ge of f)Se(Ge);Qe(),k(),Ee()}else M&&(Ne&&k(),Ee());Ne&&a.shadow?.lift!==I?.lift&&Qe()}function $i(){return i}function Ui(){D(h);for(let a of f)ue(a)}function ji(){let a=[];for(let m of f)a.push(m.handle);return a}function Wi(a){let m=a;for(;m;){if(m instanceof HTMLElement){let S=b.get(m);if(S&&!S.disposed)return S.handle;if(m.classList.contains("polycss-mesh"))return null}m=m.parentElement}return null}function Yi(){let a=Array.from(f);for(let m of a)try{m.handle.dispose()}catch{}p.parentNode&&p.parentNode.removeChild(p)}return{add:Ni,setOptions:Gi,destroy:Yi,host:e,camera:t,cameraEl:p,sceneElement:h,applyCamera:Ui,getOptions:$i,meshes:ji,findMeshByElement:Wi,previewBakedSolidLighting:ie,commitBakedSolidLighting:Yn,clearBakedSolidLightingPreview:Xn}}import{createIsometricCamera as hi}from"@layoutit/polycss-core";var Ml=32e3;function pn(e={}){let n={};e.zoom!==void 0&&(n.zoom=e.zoom),e.target!==void 0&&(n.target=e.target),e.rotX!==void 0&&(n.rotX=e.rotX),e.rotY!==void 0&&(n.rotY=e.rotY),e.distance!==void 0&&(n.distance=e.distance);let t=hi(n),o=`${e.perspective??Ml}px`;return{get state(){return t.state},update(r){t.update(r)},getStyle(r){return t.getStyle(r)},type:"perspective",perspectiveStyle:o}}function Ut(e={}){let n={};e.zoom!==void 0&&(n.zoom=e.zoom),e.target!==void 0&&(n.target=e.target),e.rotX!==void 0&&(n.rotX=e.rotX),e.rotY!==void 0&&(n.rotY=e.rotY),e.distance!==void 0&&(n.distance=e.distance);let t=hi(n);return{get state(){return t.state},update(o){t.update(o)},getStyle(o){return t.getStyle(o)},type:"orthographic",perspectiveStyle:"none"}}var wl=typeof HTMLElement<"u"?HTMLElement:class{},Ll=["perspective","rot-x","rot-y","zoom","directional-direction","directional-color","directional-intensity","ambient-color","ambient-intensity","texture-lighting","texture-quality","auto-center"];function Ve(e){if(e==null)return;let n=parseFloat(e);return Number.isFinite(n)?n:void 0}function _l(e){return e==="false"?!1:Ve(e)}function _o(e){if(!e)return;let n=e.split(",").map(t=>parseFloat(t.trim()));if(!(n.length!==3||n.some(t=>!Number.isFinite(t))))return[n[0],n[1],n[2]]}function Rl(e){if(e==="baked"||e==="dynamic")return e}function kl(e){return e==="auto"?"auto":Ve(e)}function Dl(e){return typeof e.getCamera=="function"}var we=class extends wl{constructor(){super(...arguments);this._scene=null;this._implicitCamera=null}static get observedAttributes(){return[...Ll]}getScene(){return this._scene}_findAncestorCamera(){let t=this.parentElement;for(;t;){if(Dl(t)){let o=t.getCamera();if(o)return o}t=t.parentElement}return null}_buildImplicitCamera(){let t=_l(this.getAttribute("perspective")),o=Ve(this.getAttribute("rot-x")),r=Ve(this.getAttribute("rot-y")),i=Ve(this.getAttribute("zoom")),s=Ve(this.getAttribute("distance")),c=_o(this.getAttribute("target")),l={...o!==void 0?{rotX:o}:{},...r!==void 0?{rotY:r}:{},...i!==void 0?{zoom:i}:{},...s!==void 0?{distance:s}:{},...c!==void 0?{target:c}:{}};return t===!1?Ut(l):t!==void 0?pn({...l,perspective:t}):Ut(l)}_readNonCameraOptions(){let t=this._readDirectionalLight(),o=this._readAmbientLight(),r={};r.textureLighting=Rl(this.getAttribute("texture-lighting"))??"baked";let i=kl(this.getAttribute("texture-quality"));return i!==void 0&&(r.textureQuality=i),r.autoCenter=this.hasAttribute("auto-center"),t&&(r.directionalLight=t),o&&(r.ambientLight=o),r}_readDirectionalLight(){let t=_o(this.getAttribute("directional-direction")),o=this.getAttribute("directional-color")||void 0,r=Ve(this.getAttribute("directional-intensity"));if(!t&&!o&&r===void 0)return;let i={direction:t??[.4,-.7,.59]};return o&&(i.color=o),r!==void 0&&(i.intensity=r),i}_readAmbientLight(){let t=this.getAttribute("ambient-color")||void 0,o=Ve(this.getAttribute("ambient-intensity"));if(!t&&o===void 0)return;let r={};return t&&(r.color=t),o!==void 0&&(r.intensity=o),r}connectedCallback(){if(this._scene)return;let t=this._findAncestorCamera(),o;t?(o=t,this._implicitCamera=null):(this._implicitCamera=this._buildImplicitCamera(),o=this._implicitCamera),this._scene=fi(this,{camera:o,...this._readNonCameraOptions()}),this.dispatchEvent(new CustomEvent("polycss:scene-ready",{bubbles:!1}))}disconnectedCallback(){this._scene&&(this._scene.destroy(),this._scene=null),this._implicitCamera=null}attributeChangedCallback(t,o,r){if(o!==r&&this._scene){if(this._implicitCamera&&["rot-x","rot-y","zoom","distance","target"].includes(t)){let s=Ve(this.getAttribute("rot-x")),c=Ve(this.getAttribute("rot-y")),l=Ve(this.getAttribute("zoom")),p=Ve(this.getAttribute("distance")),h=_o(this.getAttribute("target"));s!==void 0&&this._implicitCamera.update({rotX:s}),c!==void 0&&this._implicitCamera.update({rotY:c}),l!==void 0&&this._implicitCamera.update({zoom:l}),p!==void 0&&this._implicitCamera.update({distance:p}),h!==void 0&&this._implicitCamera.update({target:h}),this._scene.applyCamera();return}this._scene.setOptions(this._readNonCameraOptions())}}};import{computeSceneBbox as Ol,loadMesh as Hl}from"@layoutit/polycss-core";var Il=typeof HTMLElement<"u"?HTMLElement:class{},Fl=["src","mtl","mesh-resolution","position","scale","rotation","auto-center","cast-shadow","receive-shadow","target-size","default-color","palette","include-objects","exclude-objects"];function jt(e){if(!e)return;let n=e.split(",").map(t=>parseFloat(t.trim()));if(!(n.length!==3||n.some(t=>!Number.isFinite(t))))return[n[0],n[1],n[2]]}function gi(e){if(e){if(!e.includes(",")){let n=parseFloat(e);return Number.isFinite(n)?n:void 0}return jt(e)}}function Ro(e){if(!e)return;let n=e.split(",").map(t=>t.trim()).filter(t=>t.length>0);return n.length>0?n:void 0}function Vl(e){let n=e.getAttribute("target-size"),t=e.getAttribute("default-color"),o=Ro(e.getAttribute("palette")),r=Ro(e.getAttribute("include-objects")),i=Ro(e.getAttribute("exclude-objects")),s=n!==null?parseFloat(n):NaN,c={};return Number.isFinite(s)&&(c.targetSize=s),t&&(c.defaultColor=t),o&&(c.palette=o),r&&(c.includeObjects=r),i&&(c.excludeObjects=i),Object.keys(c).length>0?c:void 0}function Bl(e){return e.closest("poly-scene")??null}function zl(e){if(e.length===0)return e;let n=Ol(e),t=(n.min[0]+n.max[0])/2,o=(n.min[1]+n.max[1])/2,r=(n.min[2]+n.max[2])/2;if(t===0&&o===0&&r===0)return e;let i=s=>[s[0]-t,s[1]-o,s[2]-r];return e.map(s=>({...s,vertices:s.vertices.map(i),...s.textureTriangles?.length?{textureTriangles:s.textureTriangles.map(c=>({...c,vertices:c.vertices.map(i)}))}:null}))}var Ct=class extends Il{constructor(){super(...arguments);this._handle=null;this._parseResult=null;this._loadToken=0}static get observedAttributes(){return[...Fl]}getMeshHandle(){return this._handle}connectedCallback(){this._maybeLoad()}disconnectedCallback(){this._tearDown()}attributeChangedCallback(t,o,r){if(o!==r){if(t==="src"||t==="mtl"||t==="mesh-resolution"||t==="target-size"||t==="default-color"||t==="palette"||t==="include-objects"||t==="exclude-objects"){this._tearDown(),this._maybeLoad();return}this._handle&&this._handle.setTransform({position:jt(this.getAttribute("position")),scale:gi(this.getAttribute("scale")),rotation:jt(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}this._parseResult=null}async _maybeLoad(){let t=this.getAttribute("src");if(!t)return;let o=Bl(this);if(!o)return;let r=++this._loadToken,i=this.getAttribute("mtl")||void 0,c=this.getAttribute("mesh-resolution")==="lossless"?"lossless":void 0,l=Vl(this),p;try{let f=i||c!==void 0||l?{...i?{mtlUrl:i}:{},...c!==void 0?{meshResolution:c}:{},...l?{objOptions:l}:{}}:void 0;p=await Hl(t,f)}catch(f){this.dispatchEvent(new CustomEvent("polycss:error",{detail:f,bubbles:!0}));return}if(r!==this._loadToken){try{p.dispose()}catch{}return}let h=o.getScene();if(!h){try{p.dispose()}catch{}return}this.hasAttribute("auto-center")&&(p={...p,polygons:zl(p.polygons)}),this._parseResult=p,this._handle=h.add(p,{position:jt(this.getAttribute("position")),scale:gi(this.getAttribute("scale")),rotation:jt(this.getAttribute("rotation")),castShadow:this.hasAttribute("cast-shadow"),receiveShadow:this.hasAttribute("receive-shadow")}),this.dispatchEvent(new CustomEvent("polycss:loaded",{detail:{polygons:this._handle.polygons},bubbles:!0}))}};import{BASE_TILE as Wt}from"@layoutit/polycss-core";var Nl=typeof HTMLElement<"u"?HTMLElement:class{},Gl=["src","width","height","position","rotation","scale","allow","loading","referrerpolicy","sandbox","title"];function ko(e){if(!e)return;let n=e.split(",").map(t=>parseFloat(t.trim()));if(!(n.length!==3||n.some(t=>!Number.isFinite(t))))return[n[0],n[1],n[2]]}function $l(e){if(e){if(!e.includes(",")){let n=parseFloat(e);return Number.isFinite(n)?n:void 0}return ko(e)}}function yi(e,n){if(e===null)return n;let t=parseFloat(e);return Number.isFinite(t)?t:n}function Ul(e){let n=e.closest("poly-scene");return n?n.querySelector(".polycss-scene"):null}function jl(e,n,t,o,r){let i=typeof t=="number"?t:t?.[0]??1,s=typeof t=="number"?t:t?.[1]??1,c=typeof t=="number"?t:t?.[2]??1,l=i!==1||s!==1||c!==1,p=!!n&&(!!n[0]||!!n[1]||!!n[2]),h=(e?.[1]??0)*Wt,x=(e?.[0]??0)*Wt,f=(e?.[2]??0)*Wt,b=[];return b.push(`translate3d(${h}px, ${x}px, ${f}px)`),p&&(n[0]&&b.push(`rotateY(${-n[0]}deg)`),n[1]&&b.push(`rotateX(${-n[1]}deg)`),n[2]&&b.push(`rotateZ(${-n[2]}deg)`)),l&&b.push(`scale3d(${i}, ${s}, ${c})`),b.push(`translate(${-o/2}px, ${-r/2}px)`),b.join(" ")}var mn=class extends Nl{constructor(){super(...arguments);this._wrapper=null;this._iframe=null}static get observedAttributes(){return[...Gl]}getIframeElement(){return this._iframe}connectedCallback(){this._mount()}disconnectedCallback(){this._teardown()}attributeChangedCallback(t,o,r){if(o!==r&&!(!this._wrapper||!this._iframe)){if(t==="src"){this._iframe.src=this.getAttribute("src")??"";return}if(t==="allow"||t==="loading"||t==="referrerpolicy"||t==="sandbox"||t==="title"){let i=this.getAttribute(t);i===null?this._iframe.removeAttribute(t):this._iframe.setAttribute(t,i);return}this._applyGeometry()}}_mount(){let t=Ul(this);if(!t)return;let o=this.ownerDocument;if(!o)return;let r=o.createElement("div");r.className="polycss-iframe",r.style.position="absolute",r.style.left="0",r.style.top="0",r.style.transformOrigin="0 0",r.style.transformStyle="preserve-3d";let i=o.createElement("iframe");i.style.display="block",i.style.border="0",i.style.background="#000";let s=this.getAttribute("src");s&&(i.src=s);let c=this.getAttribute("allow");c&&i.setAttribute("allow",c);for(let l of["loading","referrerpolicy","sandbox","title"]){let p=this.getAttribute(l);p!==null&&i.setAttribute(l,p)}r.appendChild(i),t.appendChild(r),this._wrapper=r,this._iframe=i,this._applyGeometry()}_applyGeometry(){if(!this._wrapper||!this._iframe)return;let t=yi(this.getAttribute("width"),16),o=yi(this.getAttribute("height"),9),r=t*Wt,i=o*Wt;this._iframe.style.width=`${r}px`,this._iframe.style.height=`${i}px`;let s=ko(this.getAttribute("position")),c=ko(this.getAttribute("rotation")),l=$l(this.getAttribute("scale"));this._wrapper.style.transform=jl(s,c,l,r,i)}_teardown(){this._wrapper?.parentNode&&this._wrapper.parentNode.removeChild(this._wrapper),this._wrapper=null,this._iframe=null}};var Wl=typeof HTMLElement<"u"?HTMLElement:class{},Yl=["vertices","color","texture","uvs","position","scale","rotation"];function bi(e){if(!e)return null;try{return JSON.parse(e)}catch{return null}}function Do(e){if(!e)return;let n=e.split(",").map(t=>parseFloat(t.trim()));if(!(n.length!==3||n.some(t=>!Number.isFinite(t))))return[n[0],n[1],n[2]]}function Xl(e){if(e){if(!e.includes(",")){let n=parseFloat(e);return Number.isFinite(n)?n:void 0}return Do(e)}}function Zl(e){return e.closest("poly-scene")??null}var fn=class extends Wl{constructor(){super(...arguments);this._handle=null}static get observedAttributes(){return[...Yl]}connectedCallback(){this._mount()}disconnectedCallback(){this._tearDown()}attributeChangedCallback(t,o,r){o!==r&&(this._tearDown(),this.isConnected&&this._mount())}_tearDown(){if(this._handle){try{this._handle.dispose()}catch{}this._handle=null}}_mount(){let t=Zl(this);if(!t)return;let o=t.getScene();if(!o)return;let r=bi(this.getAttribute("vertices"));if(!r||!Array.isArray(r)||r.length<3)return;let i=this.getAttribute("color")||void 0,s=this.getAttribute("texture")||void 0,c=bi(this.getAttribute("uvs"))??void 0,l={};for(let x of Array.from(this.attributes))x.name.startsWith("data-")&&(l[x.name.slice(5)]=x.value);let h={polygons:[{vertices:r,...i!==void 0?{color:i}:{},...s!==void 0?{texture:s}:{},...c!==void 0?{uvs:c}:{},...Object.keys(l).length>0?{data:l}:{}}],objectUrls:[],warnings:[],dispose:()=>{}};this._handle=o.add(h,{position:Do(this.getAttribute("position")),scale:Xl(this.getAttribute("scale")),rotation:Do(this.getAttribute("rotation"))})}};import{axesHelperPolygons as Ql}from"@layoutit/polycss-core";var ql=typeof HTMLElement<"u"?HTMLElement:class{},Kl=["size","thickness","negative","x-color","y-color","z-color"];function Jl(e){return e.closest("poly-scene")??null}function vi(e){if(e==null)return;let n=parseFloat(e);return Number.isFinite(n)?n:void 0}var hn=class extends ql{constructor(){super(...arguments);this._handle=null}static get observedAttributes(){return[...Kl]}connectedCallback(){this._mount()}disconnectedCallback(){this._tearDown()}attributeChangedCallback(t,o,r){o!==r&&this._handle&&this._remount()}_polygons(){return Ql({size:vi(this.getAttribute("size")),thickness:vi(this.getAttribute("thickness")),negative:this.hasAttribute("negative"),xColor:this.getAttribute("x-color")??void 0,yColor:this.getAttribute("y-color")??void 0,zColor:this.getAttribute("z-color")??void 0})}_mount(){let t=Jl(this);if(!t)return;let o=t.getScene();if(!o)return;let r={polygons:this._polygons(),objectUrls:[],dispose:()=>{},warnings:[]};this._handle=o.add(r,{excludeFromAutoCenter:!0,merge:!1})}_remount(){this._tearDown(),this._mount()}_tearDown(){if(this._handle){try{this._handle.dispose()}catch{}this._handle=null}}};import{octahedronPolygons as ec}from"@layoutit/polycss-core";var tc=typeof HTMLElement<"u"?HTMLElement:class{},nc=["direction","target","distance","size","color"],oc=5,rc=.35,ic="#ffd54a";function sc(e){return e.closest("poly-scene")??null}function xi(e){if(!e)return;let n=e.split(",").map(t=>parseFloat(t.trim()));if(!(n.length!==3||n.some(t=>!Number.isFinite(t))))return[n[0],n[1],n[2]]}function Pi(e,n){if(e==null)return n;let t=parseFloat(e);return Number.isFinite(t)?t:n}var gn=class extends tc{constructor(){super(...arguments);this._handle=null}static get observedAttributes(){return[...nc]}connectedCallback(){this._mount()}disconnectedCallback(){this._tearDown()}attributeChangedCallback(t,o,r){if(o!==r&&this._handle){if(t==="size"||t==="color"){this._remount();return}this._handle.setTransform({position:this._meshPosition()})}}_meshPosition(){let t=xi(this.getAttribute("direction"));if(!t)return;let o=xi(this.getAttribute("target"))??[0,0,0],r=Pi(this.getAttribute("distance"),oc),[i,s,c]=t,l=Math.hypot(i,s,c)||1;return[o[0]+i/l*r,o[1]+s/l*r,o[2]+c/l*r]}_mount(){let t=sc(this);if(!t)return;let o=t.getScene();if(!o)return;let r=Pi(this.getAttribute("size"),rc),i=this.getAttribute("color")??ic,s={polygons:ec({center:[0,0,0],size:r,color:i}),objectUrls:[],dispose:()=>{},warnings:[]};this._handle=o.add(s,{position:this._meshPosition(),excludeFromAutoCenter:!0,merge:!1})}_remount(){this._tearDown(),this._mount()}_tearDown(){if(this._handle){try{this._handle.dispose()}catch{}this._handle=null}}};import{BASE_TILE as ac}from"@layoutit/polycss-core";var yn={drag:!0,wheel:!0,dolly:!1,invert:!1,minZoom:.1,maxZoom:10,minDistance:0,maxDistance:1/0,animate:!1};function Et(e,n){let t;return n.animate===!1?t=!1:n.animate?t={speed:n.animate.speed??.3,axis:n.animate.axis??"y",pauseOnInteraction:n.animate.pauseOnInteraction??!0}:t=e.animate,{drag:n.drag??e.drag,wheel:n.wheel??e.wheel,dolly:n.dolly??e.dolly,invert:n.invert??e.invert,minZoom:n.minZoom??e.minZoom,maxZoom:n.maxZoom??e.maxZoom,minDistance:n.minDistance??e.minDistance,maxDistance:n.maxDistance??e.maxDistance,animate:t}}function Yt(e){return e===!0?-1:e===!1?1:e}function Tt(){let e=[],n=[],t=[];function o(s){return s==="change"?e:s==="start"?n:t}function r(s){if(e.length===0)return;let c={type:"change",camera:s()},l=e.slice();for(let p of l)try{p(c)}catch(h){console.error("[polycss] controls 'change' listener threw:",h)}}function i(s,c){let l=s==="start"?n:t;if(l.length===0)return;let p={type:s,camera:c()},h=l.slice();for(let x of h)try{x(p)}catch(f){console.error(`[polycss] controls '${s}' listener threw:`,f)}}return{changeListeners:e,startListeners:n,endListeners:t,listenerArray:o,emitChange:r,emitInteraction:i}}function At(e){return()=>{let n=e.camera.state,t=n.target??[0,0,0];return{rotX:n.rotX??0,rotY:n.rotY??0,zoom:n.zoom??1,target:[t[0],t[1],t[2]],distance:n.distance??0}}}function bn(e,n,t,o,r,i){let s=!1,c=null;return{onWheel:h=>{let x=n();if(!x.wheel||t())return;h.preventDefault();let f=h.deltaMode===1?16:h.deltaMode===2?100:1,b=h.deltaY*f;h.ctrlKey?b*=10:b*=3;let y=e.camera.state;if(x.dolly){let P=y.distance??0,v=Math.max(x.minDistance,Math.min(x.maxDistance,P+b*.05));e.camera.update({distance:v})}else{let P=Math.exp(-b*513e-6),v=y.zoom??1,C=Math.max(x.minZoom,Math.min(x.maxZoom,v*P));e.camera.update({zoom:C})}e.applyCamera(),s||(s=!0,i("start",o)),r(o),c!==null&&clearTimeout(c),c=setTimeout(()=>{c=null,s=!1,i("end",o)},150)},teardown:()=>{c!==null&&(clearTimeout(c),c=null),s=!1}}}function vn(e,n,t,o,r,i,s){let c=null,l=0,p=b=>{if(c===null||o())return;let y=t();if(!y.animate){c=null;return}if(r())l=b;else{let P=Math.min(50,l?b-l:16.67);l=b;let v=y.animate.speed*(P/16.67),C=n.camera.state;if(y.animate.axis==="x"){let F=(((C.rotX??65)+v)%360+360)%360;n.camera.update({rotX:F})}else{let F=(((C.rotY??45)+v)%360+360)%360;n.camera.update({rotY:F})}n.applyCamera(),s(i)}c=e.requestAnimationFrame(p)};return{start:()=>{c!==null||!t().animate||o()||(l=0,c=e.requestAnimationFrame(p))},stop:()=>{c!==null&&(e.cancelAnimationFrame(c),c=null)},isRunning:()=>c!==null}}function Si(e,n={}){let t=Et(yn,n),o=e.host,r=o.ownerDocument?.defaultView??globalThis,i=null,s={x:0,y:0},c=!1,l=!1,p=Tt(),h=At(e),{changeListeners:x,startListeners:f,endListeners:b,listenerArray:y,emitChange:P,emitInteraction:v}=p,C=vn(r,e,()=>t,()=>l,()=>c,h,P),F=d=>{if(!(!t.drag||l)&&i===null&&d.isPrimary!==!1){d.preventDefault(),i=d.pointerId,s={x:d.clientX,y:d.clientY},o.style.cursor="grabbing";try{d.target.setPointerCapture(d.pointerId)}catch{}t.animate&&t.animate.pauseOnInteraction&&(c=!0),v("start",h)}},k=d=>{if(i===null||d.pointerId!==i||!t.drag||l)return;d.preventDefault();let T=d.clientX-s.x,w=d.clientY-s.y;s={x:d.clientX,y:d.clientY};let R=Yt(t.invert),L=T/4*R,te=w/4*R,_=e.camera.state;if(d.shiftKey){let j=_.rotX??65,Q=_.rotY??45,re=Math.max(.01,_.zoom??1),fe=Math.cos(j*Math.PI/180),ue=fe>=0?Math.max(.1,fe):Math.min(-.1,fe),pe=Math.cos(Q*Math.PI/180),Ce=Math.sin(Q*Math.PI/180),be=re*ac,Ae=(T*Ce-w*pe/ue)/be,Be=-(T*pe+w*Ce/ue)/be,Ze=_.target??[0,0,0];e.camera.update({target:[Ze[0]+Ae,Ze[1]+Be,Ze[2]]})}else{let j=Math.max(0,Math.min(89,(_.rotX??65)-te)),Q=(((_.rotY??45)-L)%360+360)%360;e.camera.update({rotX:j,rotY:Q})}e.applyCamera(),P(h)},z=d=>{if(i===d.pointerId){i=null,o.style.cursor=t.drag&&!l?"grab":"";try{d.target.releasePointerCapture(d.pointerId)}catch{}t.animate&&t.animate.pauseOnInteraction&&(c=!1),v("end",h)}},O=bn(e,()=>t,()=>l,h,P,v);function Z(){o.addEventListener("pointerdown",F),o.addEventListener("pointermove",k),o.addEventListener("pointerup",z),o.addEventListener("pointercancel",z),o.addEventListener("wheel",O.onWheel,{passive:!1}),o.style.cursor=t.drag?"grab":"",o.style.touchAction="none",o.style.userSelect="none"}function q(){o.removeEventListener("pointerdown",F),o.removeEventListener("pointermove",k),o.removeEventListener("pointerup",z),o.removeEventListener("pointercancel",z),o.removeEventListener("wheel",O.onWheel),o.style.cursor="",o.style.touchAction="",o.style.userSelect="",O.teardown()}Z(),C.start();function D(d){let T=!!t.animate;t=Et(t,d),!l&&i===null&&(o.style.cursor=t.drag?"grab":"");let w=!!t.animate;T&&!w?C.stop():!T&&w&&C.start()}function H(){l&&(l=!1,Z(),C.start())}function V(){l||(l=!0,q(),C.stop(),i=null,c=!1,O.teardown())}function G(){V(),x.length=0,f.length=0,b.length=0}function A(d,T){let w=y(d);w.includes(T)||w.push(T)}function g(d,T){let w=y(d),R=w.indexOf(T);R>=0&&w.splice(R,1)}function u(d,T){return y(d).includes(T)}return{update:D,resume:H,pause:V,destroy:G,addEventListener:A,removeEventListener:g,hasEventListener:u}}function ee(e){if(e==null)return;let n=parseFloat(e);return Number.isFinite(n)?n:void 0}function xn(e){if(!e)return;let n=e.split(",").map(t=>parseFloat(t.trim()));if(!(n.length!==3||n.some(t=>!Number.isFinite(t))))return[n[0],n[1],n[2]]}function Te(e){if(e!==null)return!(e==="false"||e==="0")}function Pn(e){if(e===null)return;if(e==="true")return!0;if(e==="false")return!1;let n=parseFloat(e);return Number.isFinite(n)?n:!0}function Sn(e){if(e==="x"||e==="y")return e}var lc=typeof HTMLElement<"u"?HTMLElement:class{},cc=["drag","wheel","dolly","min-distance","max-distance","invert","zoom-min","zoom-max","animate-speed","animate-axis","animate-pause-on-interaction"],Cn=class extends lc{constructor(){super(...arguments);this._controls=null}static get observedAttributes(){return[...cc]}getControls(){return this._controls}_readAnimate(){let t=ee(this.getAttribute("animate-speed")),o=Sn(this.getAttribute("animate-axis")),r=this.getAttribute("animate-pause-on-interaction");if(this.hasAttribute("animate-speed")||this.hasAttribute("animate-axis")||this.hasAttribute("animate-pause-on-interaction"))return{...t!==void 0?{speed:t}:{},...o!==void 0?{axis:o}:{},...r!==null?{pauseOnInteraction:Te(r)}:{}}}_readOptions(){let t={},o=Te(this.getAttribute("drag"));o!==void 0&&(t.drag=o);let r=Te(this.getAttribute("wheel"));r!==void 0&&(t.wheel=r),this.hasAttribute("dolly")&&(t.dolly=!0);let i=ee(this.getAttribute("min-distance"));i!==void 0&&(t.minDistance=i);let s=ee(this.getAttribute("max-distance"));s!==void 0&&(t.maxDistance=s);let c=Pn(this.getAttribute("invert"));c!==void 0&&(t.invert=c);let l=ee(this.getAttribute("zoom-min")),p=ee(this.getAttribute("zoom-max"));return l!==void 0&&(t.minZoom=l),p!==void 0&&(t.maxZoom=p),t.animate=this._readAnimate()??!1,t}_findScene(){let t=this.parentNode;for(;t;){if(t instanceof we)return t;t=t.parentNode}return null}_attach(){if(this._controls)return;let t=this._findScene(),o=t?.getScene();if(!o){if(t){let r=()=>{t.removeEventListener("polycss:scene-ready",r),this._attach()};t.addEventListener("polycss:scene-ready",r)}return}this._controls=Si(o,this._readOptions())}connectedCallback(){this._attach()}disconnectedCallback(){this._controls&&(this._controls.destroy(),this._controls=null)}attributeChangedCallback(t,o,r){o!==r&&this._controls&&this._controls.update(this._readOptions())}};import{BASE_TILE as dc}from"@layoutit/polycss-core";function Ci(e,n={}){let t=Et(yn,n),o=e.host,r=o.ownerDocument?.defaultView??globalThis,i=null,s={x:0,y:0},c=!1,l=!1,p=!1,h={x:0,y:0},x=Tt(),f=At(e),{changeListeners:b,startListeners:y,endListeners:P,listenerArray:v,emitChange:C,emitInteraction:F}=x,k=vn(r,e,()=>t,()=>l,()=>c,f,C),z=_=>{if(!(!t.drag||l)&&i===null&&_.isPrimary!==!1){_.preventDefault(),i=_.pointerId,s={x:_.clientX,y:_.clientY},o.style.cursor="grabbing";try{_.target.setPointerCapture(_.pointerId)}catch{}t.animate&&t.animate.pauseOnInteraction&&(c=!0),F("start",f)}},O=_=>{if(i===null||_.pointerId!==i||!t.drag||l)return;_.preventDefault();let j=_.clientX-s.x,Q=_.clientY-s.y;s={x:_.clientX,y:_.clientY};let re=e.camera.state;if(_.shiftKey){let fe=Yt(t.invert),ue=j/4*fe,pe=Q/4*fe,Ce=(re.rotX??65)-pe,be=(((re.rotY??45)-ue)%360+360)%360;e.camera.update({rotX:Ce,rotY:be})}else{let fe=re.rotX??65,ue=re.rotY??45,pe=Math.max(.01,re.zoom??1),Ce=Math.cos(fe*Math.PI/180),be=Ce>=0?Math.max(.1,Ce):Math.min(-.1,Ce),Ae=Math.cos(ue*Math.PI/180),Be=Math.sin(ue*Math.PI/180),Ze=pe*dc,rt=(j*Be-Q*Ae/be)/Ze,ut=-(j*Ae+Q*Be/be)/Ze,it=re.target??[0,0,0];e.camera.update({target:[it[0]+rt,it[1]+ut,it[2]]})}e.applyCamera(),C(f)},Z=_=>{if(i===_.pointerId){i=null,o.style.cursor=t.drag&&!l?"grab":"";try{_.target.releasePointerCapture(_.pointerId)}catch{}t.animate&&t.animate.pauseOnInteraction&&(c=!1),F("end",f)}},q=_=>{_.preventDefault()},D=_=>{_.button===2&&(p=!0,h={x:_.clientX,y:_.clientY},t.animate&&t.animate.pauseOnInteraction&&(c=!0),F("start",f))},H=_=>{if(!p||!t.drag)return;let j=_.clientX-h.x,Q=_.clientY-h.y;h={x:_.clientX,y:_.clientY};let re=Yt(t.invert),fe=j/4*re,ue=Q/4*re,pe=e.camera.state,Ce=(pe.rotX??65)-ue,be=(((pe.rotY??45)-fe)%360+360)%360;e.camera.update({rotX:Ce,rotY:be}),e.applyCamera(),C(f)},V=_=>{_.button===2&&p&&(p=!1,F("end",f))},G=bn(e,()=>t,()=>l,f,C,F);function A(){o.addEventListener("pointerdown",z),o.addEventListener("pointermove",O),o.addEventListener("pointerup",Z),o.addEventListener("pointercancel",Z),o.addEventListener("wheel",G.onWheel,{passive:!1}),o.addEventListener("contextmenu",q),o.addEventListener("mousedown",D),o.addEventListener("mousemove",H),o.addEventListener("mouseup",V),o.style.cursor=t.drag?"grab":"",o.style.touchAction="none",o.style.userSelect="none"}function g(){o.removeEventListener("pointerdown",z),o.removeEventListener("pointermove",O),o.removeEventListener("pointerup",Z),o.removeEventListener("pointercancel",Z),o.removeEventListener("wheel",G.onWheel),o.removeEventListener("contextmenu",q),o.removeEventListener("mousedown",D),o.removeEventListener("mousemove",H),o.removeEventListener("mouseup",V),o.style.cursor="",o.style.touchAction="",o.style.userSelect="",G.teardown()}A(),k.start();function u(_){let j=!!t.animate;t=Et(t,_),!l&&i===null&&(o.style.cursor=t.drag?"grab":"");let Q=!!t.animate;j&&!Q?k.stop():!j&&Q&&k.start()}function d(){l&&(l=!1,A(),k.start())}function T(){l||(l=!0,g(),k.stop(),i=null,c=!1,p=!1,G.teardown())}function w(){T(),b.length=0,y.length=0,P.length=0}function R(_,j){let Q=v(_);Q.includes(j)||Q.push(j)}function L(_,j){let Q=v(_),re=Q.indexOf(j);re>=0&&Q.splice(re,1)}function te(_,j){return v(_).includes(j)}return{update:u,resume:d,pause:T,destroy:w,addEventListener:R,removeEventListener:L,hasEventListener:te}}var uc=typeof HTMLElement<"u"?HTMLElement:class{},pc=["drag","wheel","dolly","min-distance","max-distance","invert","zoom-min","zoom-max","animate-speed","animate-axis","animate-pause-on-interaction"],En=class extends uc{constructor(){super(...arguments);this._controls=null}static get observedAttributes(){return[...pc]}_readAnimate(){let t=ee(this.getAttribute("animate-speed")),o=Sn(this.getAttribute("animate-axis")),r=this.getAttribute("animate-pause-on-interaction");if(this.hasAttribute("animate-speed")||this.hasAttribute("animate-axis")||this.hasAttribute("animate-pause-on-interaction"))return{...t!==void 0?{speed:t}:{},...o!==void 0?{axis:o}:{},...r!==null?{pauseOnInteraction:Te(r)}:{}}}_readOptions(){let t={},o=Te(this.getAttribute("drag"));o!==void 0&&(t.drag=o);let r=Te(this.getAttribute("wheel"));r!==void 0&&(t.wheel=r),this.hasAttribute("dolly")&&(t.dolly=!0);let i=ee(this.getAttribute("min-distance"));i!==void 0&&(t.minDistance=i);let s=ee(this.getAttribute("max-distance"));s!==void 0&&(t.maxDistance=s);let c=Pn(this.getAttribute("invert"));c!==void 0&&(t.invert=c);let l=ee(this.getAttribute("zoom-min")),p=ee(this.getAttribute("zoom-max"));return l!==void 0&&(t.minZoom=l),p!==void 0&&(t.maxZoom=p),t.animate=this._readAnimate()??!1,t}_findScene(){let t=this.parentNode;for(;t;){if(t instanceof we)return t;t=t.parentNode}return null}_attach(){if(this._controls)return;let t=this._findScene(),o=t?.getScene();if(!o){if(t){let r=()=>{t.removeEventListener("polycss:scene-ready",r),this._attach()};t.addEventListener("polycss:scene-ready",r)}return}this._controls=Ci(o,this._readOptions())}connectedCallback(){this._attach()}disconnectedCallback(){this._controls&&(this._controls.destroy(),this._controls=null)}attributeChangedCallback(t,o,r){o!==r&&this._controls&&this._controls.update(this._readOptions())}};import{BASE_TILE as mc}from"@layoutit/polycss-core";var fc={enabled:!0,lookEnabled:!0,moveEnabled:!0,jumpEnabled:!0,crouchEnabled:!0,lookSensitivity:.15,invertY:!1,moveSpeed:5,jumpVelocity:7,gravity:18,eyeHeight:1.7,crouchHeight:1,groundZ:0,minPitch:5,maxPitch:175};function Ei(e,n){return{enabled:n.enabled??e.enabled,lookEnabled:n.lookEnabled??e.lookEnabled,moveEnabled:n.moveEnabled??e.moveEnabled,jumpEnabled:n.jumpEnabled??e.jumpEnabled,crouchEnabled:n.crouchEnabled??e.crouchEnabled,lookSensitivity:n.lookSensitivity??e.lookSensitivity,invertY:n.invertY??e.invertY,moveSpeed:n.moveSpeed??e.moveSpeed,jumpVelocity:n.jumpVelocity??e.jumpVelocity,gravity:n.gravity??e.gravity,eyeHeight:n.eyeHeight??e.eyeHeight,crouchHeight:n.crouchHeight??e.crouchHeight,groundZ:n.groundZ??e.groundZ,minPitch:n.minPitch??e.minPitch,maxPitch:n.maxPitch??e.maxPitch}}var Ti=new Set(["KeyW","ArrowUp"]),Ai=new Set(["KeyS","ArrowDown"]),Mi=new Set(["KeyA","ArrowLeft"]),wi=new Set(["KeyD","ArrowRight"]),Li=new Set(["Space"]),Oo=new Set(["ControlLeft","ControlRight"]);function _i(e,n={}){let t=Ei(fc,n),o=e.host,r=e.cameraEl,i=o.ownerDocument??document,s=i.defaultView??globalThis,c=Tt(),l=At(e),{changeListeners:p,startListeners:h,endListeners:x,listenerArray:f,emitChange:b,emitInteraction:y}=c,P=new Set,v=!1,C=!1,F=0,k=0,z=!1,O=[0,0,t.groundZ+t.eyeHeight];function Z($,ie){let se=$*Math.PI/180,Me=ie*Math.PI/180;return[-Math.sin(se)*Math.cos(Me),-Math.sin(se)*Math.sin(Me),-Math.cos(se)]}function q(){let $=e.camera.perspectiveStyle,ie=$==="none"?0:parseFloat($);return(Number.isFinite(ie)&&ie>0?ie:2e3)/mc}function D(){let $=e.camera.state,ie=Z($.rotX??90,$.rotY??0),se=q();return[O[0]+ie[0]*se,O[1]+ie[1]*se,O[2]+ie[2]*se]}function H(){let $=D();e.camera.update({target:$}),e.applyCamera()}function V(){let $=e.camera.state.target??[0,0,0];O=[$[0],$[1],t.groundZ+t.eyeHeight],H()}let G=()=>{if(!(!t.enabled||!t.lookEnabled||C||v))try{o.requestPointerLock()}catch{}},A=()=>{let $=i.pointerLockElement===o;$!==v&&(v=$,v?(z=!0,y("start",l)):z&&(z=!1,y("end",l)))},g=$=>{if(!v||!t.enabled||!t.lookEnabled||C)return;let ie=$.movementX??0,se=$.movementY??0;if(ie===0&&se===0)return;let Me=e.camera.state,_t=t.lookSensitivity,ze=t.invertY?-1:1,Ee=(((Me.rotY??0)-ie*_t)%360+360)%360,ve=(Me.rotX??90)-se*_t*ze;ve<t.minPitch?ve=t.minPitch:ve>t.maxPitch&&(ve=t.maxPitch);let De=Z(ve,Ee),Oe=q(),Se=[O[0]+De[0]*Oe,O[1]+De[1]*Oe,O[2]+De[2]*Oe];e.camera.update({rotX:ve,rotY:Ee,target:Se}),e.applyCamera(),b(l)},u=$=>Ti.has($)||Ai.has($)||Mi.has($)||wi.has($)||Li.has($)||Oo.has($),d=$=>{if(!(!t.enabled||C)&&u($.code)&&!(!v&&!t.moveEnabled)){if(Li.has($.code)){if(!t.jumpEnabled)return;$.preventDefault(),!P.has($.code)&&F===0&&k===0&&(F=t.jumpVelocity),P.add($.code);return}Oo.has($.code)&&!t.crouchEnabled||!t.moveEnabled&&!Oo.has($.code)||($.preventDefault(),P.add($.code))}},T=$=>{u($.code)&&P.delete($.code)},w=()=>{P.clear()},R=null,L=0,te=.05,_=$=>{if(R===null||C)return;let ie=Math.min(te,L?($-L)/1e3:.0167);if(L=$,t.enabled){let se=!1,Me=e.camera.state;if(t.moveEnabled){let ve=0,De=0;for(let Oe of P)Ti.has(Oe)?ve+=1:Ai.has(Oe)?ve-=1:wi.has(Oe)?De+=1:Mi.has(Oe)&&(De-=1);if(ve!==0||De!==0){let Se=(Me.rotY??0)*Math.PI/180,Rt=-Math.cos(Se),Zn=-Math.sin(Se),Qn=-Math.sin(Se),qn=Math.cos(Se),Qe=Math.hypot(ve,De)||1,Xt=t.moveSpeed*ie;O[0]+=(Rt*ve+Qn*De)/Qe*Xt,O[1]+=(Zn*ve+qn*De)/Qe*Xt,se=!0}}let ze=t.crouchEnabled&&(P.has("ControlLeft")||P.has("ControlRight"))?t.crouchHeight:t.eyeHeight;t.jumpEnabled&&(F!==0||k>0)?(F-=t.gravity*ie,k+=F*ie,k<=0&&(k=0,F=0)):t.jumpEnabled||(k=0,F=0);let Ee=t.groundZ+ze+k;if(Math.abs(O[2]-Ee)>1e-4&&(O[2]=Ee,se=!0),se){let ve=D();e.camera.update({target:ve}),e.applyCamera(),b(l)}}R=s.requestAnimationFrame(_)};function j(){R!==null||C||(L=0,R=s.requestAnimationFrame(_))}function Q(){R!==null&&(s.cancelAnimationFrame(R),R=null)}function re(){let ie=r.ownerDocument?.defaultView?.getComputedStyle(r).perspective??"",se=parseFloat(ie),Me=Number.isFinite(se)&&se>0?se:2e3;r.style.setProperty("--polycss-fpv-perspective",`${Me}px`),r.classList.add("polycss-fpv-host")}function fe(){r.classList.remove("polycss-fpv-host"),r.style.removeProperty("--polycss-fpv-perspective")}function ue(){o.addEventListener("click",G),i.addEventListener("pointerlockchange",A),i.addEventListener("mousemove",g),s.addEventListener("keydown",d),s.addEventListener("keyup",T),s.addEventListener("blur",w),o.style.cursor=t.lookEnabled?"crosshair":"",re()}function pe(){if(o.removeEventListener("click",G),i.removeEventListener("pointerlockchange",A),i.removeEventListener("mousemove",g),s.removeEventListener("keydown",d),s.removeEventListener("keyup",T),s.removeEventListener("blur",w),o.style.cursor="",P.clear(),v)try{i.exitPointerLock()}catch{}fe()}V(),ue(),j();function Ce($){let ie=t.eyeHeight,se=t.groundZ;t=Ei(t,$),C||(o.style.cursor=t.lookEnabled?"crosshair":""),(t.eyeHeight!==ie||t.groundZ!==se)&&(O[2]=t.groundZ+t.eyeHeight,H(),b(l))}function be(){C&&(C=!1,ue(),j())}function Ae(){C||(C=!0,pe(),Q(),z&&(z=!1,y("end",l)))}function Be(){Ae(),p.length=0,h.length=0,x.length=0}function Ze(){if(!(!t.enabled||!t.lookEnabled||C))try{o.requestPointerLock()}catch{}}function rt(){if(v)try{i.exitPointerLock()}catch{}}function ut(){return v}function it($,ie){let se=f($);se.includes(ie)||se.push(ie)}function jn($,ie){let se=f($),Me=se.indexOf(ie);Me>=0&&se.splice(Me,1)}function Wn($,ie){return f($).includes(ie)}function Yn(){return[O[0],O[1],O[2]]}function Xn($){O[0]=$[0],O[1]=$[1],O[2]=$[2],H(),b(l)}return{update:Ce,resume:be,pause:Ae,destroy:Be,lock:Ze,unlock:rt,isLocked:ut,getOrigin:Yn,setOrigin:Xn,addEventListener:it,removeEventListener:jn,hasEventListener:Wn}}var hc=typeof HTMLElement<"u"?HTMLElement:class{},gc=["enabled","look-enabled","move-enabled","jump-enabled","crouch-enabled","look-sensitivity","invert-y","move-speed","jump-velocity","gravity","eye-height","crouch-height","ground-z","min-pitch","max-pitch"],Tn=class extends hc{constructor(){super(...arguments);this._controls=null}static get observedAttributes(){return[...gc]}_readOptions(){let t={},o=Te(this.getAttribute("enabled"));o!==void 0&&(t.enabled=o);let r=Te(this.getAttribute("look-enabled"));r!==void 0&&(t.lookEnabled=r);let i=Te(this.getAttribute("move-enabled"));i!==void 0&&(t.moveEnabled=i);let s=Te(this.getAttribute("jump-enabled"));s!==void 0&&(t.jumpEnabled=s);let c=Te(this.getAttribute("crouch-enabled"));c!==void 0&&(t.crouchEnabled=c);let l=ee(this.getAttribute("look-sensitivity"));if(l!==void 0&&(t.lookSensitivity=l),this.hasAttribute("invert-y")){let C=Te(this.getAttribute("invert-y"));C!==void 0&&(t.invertY=C)}let p=ee(this.getAttribute("move-speed"));p!==void 0&&(t.moveSpeed=p);let h=ee(this.getAttribute("jump-velocity"));h!==void 0&&(t.jumpVelocity=h);let x=ee(this.getAttribute("gravity"));x!==void 0&&(t.gravity=x);let f=ee(this.getAttribute("eye-height"));f!==void 0&&(t.eyeHeight=f);let b=ee(this.getAttribute("crouch-height"));b!==void 0&&(t.crouchHeight=b);let y=ee(this.getAttribute("ground-z"));y!==void 0&&(t.groundZ=y);let P=ee(this.getAttribute("min-pitch"));P!==void 0&&(t.minPitch=P);let v=ee(this.getAttribute("max-pitch"));return v!==void 0&&(t.maxPitch=v),t}_findScene(){let t=this.parentNode;for(;t;){if(t instanceof we)return t;t=t.parentNode}return null}_attach(){if(this._controls)return;let t=this._findScene(),o=t?.getScene();if(!o){if(t){let r=()=>{t.removeEventListener("polycss:scene-ready",r),this._attach()};t.addEventListener("polycss:scene-ready",r)}return}this._controls=_i(o,this._readOptions())}connectedCallback(){this._attach()}disconnectedCallback(){this._controls&&(this._controls.destroy(),this._controls=null)}attributeChangedCallback(t,o,r){o!==r&&this._controls&&this._controls.update(this._readOptions())}};var yc=typeof HTMLElement<"u"?HTMLElement:class{},bc=["perspective","zoom","rot-x","rot-y","target","distance"],An=class extends yc{constructor(){super(...arguments);this._camera=null;this._wrapper=null}static get observedAttributes(){return[...bc]}getCamera(){return this._camera}_readOptions(){return{perspective:ee(this.getAttribute("perspective")),zoom:ee(this.getAttribute("zoom")),rotX:ee(this.getAttribute("rot-x")),rotY:ee(this.getAttribute("rot-y")),target:xn(this.getAttribute("target")),distance:ee(this.getAttribute("distance"))}}_mount(){if(this._camera)return;let t=this._readOptions();for(this._camera=pn(t),this._wrapper=this.ownerDocument.createElement("div"),this._wrapper.className="polycss-camera",this._wrapper.style.perspective=this._camera.perspectiveStyle;this.firstChild;)this._wrapper.appendChild(this.firstChild);this.appendChild(this._wrapper),this.dispatchEvent(new CustomEvent("polycss:camera-ready",{bubbles:!1}))}_teardown(){if(this._wrapper){for(;this._wrapper.firstChild;)this.insertBefore(this._wrapper.firstChild,this._wrapper);this._wrapper.parentNode&&this._wrapper.parentNode.removeChild(this._wrapper),this._wrapper=null}this._camera=null}connectedCallback(){this._mount()}disconnectedCallback(){this._teardown()}attributeChangedCallback(t,o,r){if(o===r||!this._camera||!this._wrapper)return;let i=this._readOptions();if(t==="perspective"){let l=i.perspective!==void 0?`${i.perspective}px`:"32000px";this._wrapper.style.perspective=l;return}this._camera.update({rotX:i.rotX,rotY:i.rotY,zoom:i.zoom,target:i.target,distance:i.distance}),this.querySelector("poly-scene")?.getScene?.()?.applyCamera()}};var vc=typeof HTMLElement<"u"?HTMLElement:class{},xc=["zoom","rot-x","rot-y","target","distance"],Mt=class extends vc{constructor(){super(...arguments);this._camera=null;this._wrapper=null}static get observedAttributes(){return[...xc]}getCamera(){return this._camera}_readOptions(){return{zoom:ee(this.getAttribute("zoom")),rotX:ee(this.getAttribute("rot-x")),rotY:ee(this.getAttribute("rot-y")),target:xn(this.getAttribute("target")),distance:ee(this.getAttribute("distance"))}}_mount(){if(this._camera)return;let t=this._readOptions();for(this._camera=Ut(t),this._wrapper=this.ownerDocument.createElement("div"),this._wrapper.className="polycss-camera",this._wrapper.style.perspective=this._camera.perspectiveStyle;this.firstChild;)this._wrapper.appendChild(this.firstChild);this.appendChild(this._wrapper),this.dispatchEvent(new CustomEvent("polycss:camera-ready",{bubbles:!1}))}_teardown(){if(this._wrapper){for(;this._wrapper.firstChild;)this.insertBefore(this._wrapper.firstChild,this._wrapper);this._wrapper.parentNode&&this._wrapper.parentNode.removeChild(this._wrapper),this._wrapper=null}this._camera=null}connectedCallback(){this._mount()}disconnectedCallback(){this._teardown()}attributeChangedCallback(t,o,r){if(o===r||!this._camera)return;let i=this._readOptions();i.zoom!==void 0&&this._camera.update({zoom:i.zoom}),i.rotX!==void 0&&this._camera.update({rotX:i.rotX}),i.rotY!==void 0&&this._camera.update({rotY:i.rotY}),i.target!==void 0&&this._camera.update({target:i.target}),i.distance!==void 0&&this._camera.update({distance:i.distance}),this.querySelector("poly-scene")?.getScene?.()?.applyCamera()}};var Mn=class extends Mt{};import{arrowPolygons as Pc,eulerXYZFromQuat as Sc,planePolygons as Cc,quatFromAxisAngle as Ec,quatFromEulerXYZ as Tc,quatMultiply as Ac,ringQuadPolygons as Mc,rotateVec3 as Ho}from"@layoutit/polycss-core";function wt(e,n,t){let o=Array.from(e.querySelectorAll("i,b,s,u"));for(let r of o){let i=r.getBoundingClientRect();if(!(i.width<=0||i.height<=0)&&n>=i.left&&n<=i.right&&t>=i.top&&t<=i.bottom)return!0}return!1}function Ri(e,n,t,o){for(let r of e)if(!(o&&!o(r))&&wt(r.element,n,t))return r;return null}var wn="#ff3653",Ln="#8adb00",_n="#2c8fff",Lt=50,ki=60,wc=.6,Lc=.0125,_c=.15,Rc=.04,kc=1,Di=.02,Io=1.04,Dc=.1,Oc=.25,Fi=1e-4,Hc=.6,Ic=.8,Fc=1,Je={0:1,1:0,2:2},Oi=[{cssAxis:0,sign:1,key:"x",color:wn},{cssAxis:0,sign:-1,key:"-x",color:wn},{cssAxis:1,sign:1,key:"y",color:Ln},{cssAxis:1,sign:-1,key:"-y",color:Ln},{cssAxis:2,sign:1,key:"z",color:_n},{cssAxis:2,sign:-1,key:"-z",color:_n}],Hi=[{cssAxis:0,key:"x",color:wn},{cssAxis:1,key:"y",color:Ln},{cssAxis:2,key:"z",color:_n}],Ii=[{perpAxis:2,axisA:0,axisB:1,key:"xy",color:_n},{perpAxis:1,axisA:0,axisB:2,key:"xz",color:Ln},{perpAxis:0,axisA:1,axisB:2,key:"yz",color:wn}];function Fo(e,n,t,o){let r=t*Math.PI/180,i=o*Math.PI/180,s=[0,0,0];s[e]=n;let c=s[0]*Math.cos(i)-s[1]*Math.sin(i),l=s[0]*Math.sin(i)+s[1]*Math.cos(i),p=s[2];return l*Math.sin(r)+p*Math.cos(r)<0}function Vc(e,n){let t=/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i.exec(e);if(!t)return e;let o=parseInt(t[1],16),r=parseInt(t[2],16),i=parseInt(t[3],16);return`rgba(${o}, ${r}, ${i}, ${n})`}function Rn(e,n){return!n||n<=0?e:Math.round(e/n)*n}function Bc(e){if(e.length===0)return[0,0,0];let n=1/0,t=1/0,o=1/0,r=-1/0,i=-1/0,s=-1/0;for(let c of e)for(let l of c.vertices)l[0]<n&&(n=l[0]),l[0]>r&&(r=l[0]),l[1]<t&&(t=l[1]),l[1]>i&&(i=l[1]),l[2]<o&&(o=l[2]),l[2]>s&&(s=l[2]);return Number.isFinite(n)?[(n+r)/2,(t+i)/2,(o+s)/2]:[0,0,0]}function Vo(e){if(e.length===0)return ki;let n=1/0,t=1/0,o=1/0,r=-1/0,i=-1/0,s=-1/0;for(let l of e)for(let p of l.vertices)p[0]<n&&(n=p[0]),p[0]>r&&(r=p[0]),p[1]<t&&(t=p[1]),p[1]>i&&(i=p[1]),p[2]<o&&(o=p[2]),p[2]>s&&(s=p[2]);return Number.isFinite(n)?Math.max(r-n,i-t,s-o)*Lt*wc:ki}function zc(e){let{cssAxis:n,sign:t,shaftLengthCss:o,wrapper:r,target:i,startClientX:s,startClientY:c,translationSnap:l,onAxisDelta:p,onMouseDown:h,onMouseUp:x,onDraggingChanged:f}=e,b=o,y=[0,0,0];y[n]=t;let P=r.ownerDocument.createElement("div");P.style.position="absolute",P.style.left="0",P.style.top="0",P.style.width="0",P.style.height="0",P.style.transform=`translate3d(${y[0]*b}px, ${y[1]*b}px, ${y[2]*b}px)`,r.appendChild(P);let v=r.getBoundingClientRect(),C=P.getBoundingClientRect();r.removeChild(P);let F=(C.left-v.left)/b,k=(C.top-v.top)/b,z=F*F+k*k;if(z<Fi)return;h?.(),f?.(!0);let O=q=>{let D=q.clientX-s,H=q.clientY-c,V=(D*F+H*k)/z;V=Rn(V,l),p(V,y)},Z=()=>{window.removeEventListener("pointermove",O),window.removeEventListener("pointerup",Z),window.removeEventListener("pointercancel",Z);let q=D=>{D.stopPropagation(),D.stopImmediatePropagation()};window.addEventListener("click",q,{capture:!0,once:!0}),setTimeout(()=>window.removeEventListener("click",q,!0),0),x?.(),f?.(!1)};window.addEventListener("pointermove",O),window.addEventListener("pointerup",Z),window.addEventListener("pointercancel",Z)}function Nc(e){let{axisA:n,axisB:t,probeDistanceCss:o,wrapper:r,startClientX:i,startClientY:s,translationSnap:c,onPlaneDelta:l,onMouseDown:p,onMouseUp:h,onDraggingChanged:x}=e,f=[0,0,0];f[n]=1;let b=[0,0,0];b[t]=1;function y(z){let O=r.ownerDocument.createElement("div");O.style.position="absolute",O.style.left="0",O.style.top="0",O.style.width="0",O.style.height="0",O.style.transform=`translate3d(${z[0]*o}px, ${z[1]*o}px, ${z[2]*o}px)`,r.appendChild(O);let Z=r.getBoundingClientRect(),q=O.getBoundingClientRect();return r.removeChild(O),{x:(q.left-Z.left)/o,y:(q.top-Z.top)/o}}let P=y(f),v=y(b),C=P.x*v.y-v.x*P.y;if(Math.abs(C)<Fi)return;p?.(),x?.(!0);let F=z=>{let O=z.clientX-i,Z=z.clientY-s,q=(v.y*O-v.x*Z)/C,D=(-P.y*O+P.x*Z)/C;q=Rn(q,c),D=Rn(D,c),l(q,D,f,b)},k=()=>{window.removeEventListener("pointermove",F),window.removeEventListener("pointerup",k),window.removeEventListener("pointercancel",k);let z=O=>{O.stopPropagation(),O.stopImmediatePropagation()};window.addEventListener("click",z,{capture:!0,once:!0}),setTimeout(()=>window.removeEventListener("click",z,!0),0),h?.(),x?.(!1)};window.addEventListener("pointermove",F),window.addEventListener("pointerup",k),window.addEventListener("pointercancel",k)}function Gc(e){let{cssAxis:n,wrapper:t,target:o,startClientX:r,startClientY:i,rotationSnap:s,onAngleDelta:c,onMouseDown:l,onMouseUp:p,onDraggingChanged:h}=e,x=t.getBoundingClientRect(),f=x.left,b=x.top,y=Math.atan2(i-b,r-f),P=0;l?.(),h?.(!0);let v=F=>{let k=Math.atan2(F.clientY-b,F.clientX-f),z=k-y;z>Math.PI?z-=2*Math.PI:z<-Math.PI&&(z+=2*Math.PI),P+=z,y=k;let O=P*180/Math.PI;O=Rn(O,s),c(O)},C=()=>{window.removeEventListener("pointermove",v),window.removeEventListener("pointerup",C),window.removeEventListener("pointercancel",C);let F=k=>{k.stopPropagation(),k.stopImmediatePropagation()};window.addEventListener("click",F,{capture:!0,once:!0}),setTimeout(()=>window.removeEventListener("click",F,!0),0),p?.(),h?.(!1)};window.addEventListener("pointermove",v),window.addEventListener("pointerup",C),window.addEventListener("pointercancel",C)}function Vi(e,n={}){let t=null,o=n.mode??"translate",r=n.size??1,i={...n},s=new Map,c=null,l=null,p=[0,0,0];function h(){if(!t)return[0,0,0];let g=t.transform.position??[0,0,0],u=t.transform.rotation??[0,0,0],d=typeof t.transform.scale=="number"?t.transform.scale:t.transform.scale?.[0]??1,T=Ho(p,u[0],u[1],u[2]);return[g[0]+d*T[0],g[1]+d*T[1],g[2]+d*T[2]]}function x(g){return l===g?Fc:c===g?Ic:Hc}function f(){for(let[g,u]of s){let d=b(u.spec,x(g));u.handle.setPolygons(d,{recomputeAutoCenter:!1})}}function b(g,u){let T=Vo(t?.polygons??[])*r,w=T/Lt,R=Vc(g.color,u);if(g.kind==="arrow"){let _=e.camera.state,j=Fo(g.cssAxis,g.sign,_.rotX??65,_.rotY??45);return Pc({axis:Je[g.cssAxis],sign:g.sign,shaftLength:w,shaftHalfThickness:w*Lc,headLength:w*_c,headHalfThickness:w*Rc,color:R,shaft:!j})}if(g.kind==="plane"){let _=e.camera.state,j=_.rotX??65,Q=_.rotY??45,re=Je[g.perpAxis],fe=(re+1)%3,ue=(re+2)%3,pe=Je[fe],Ce=Je[ue],be=Fo(pe,1,j,Q)?-1:1,Ae=Fo(Ce,1,j,Q)?-1:1,Be=w*Oc;return Cc({axis:re,size:w*Dc,offset:[be*Be,Ae*Be],color:R})}let te=T*kc/Lt*Io;return Mc({axis:Je[g.cssAxis],outerRadius:te,color:R})}function y(g){return g.kind==="arrow"?"polycss-transform-arrow":g.kind==="plane"?"polycss-transform-plane":"polycss-transform-ring"}function P(){if(o==="translate"){let g=Oi.map(d=>({kind:"arrow",key:d.key,cssAxis:d.cssAxis,sign:d.sign,color:d.color})),u=Ii.map(d=>({kind:"plane",key:d.key,perpAxis:d.perpAxis,axisA:d.axisA,axisB:d.axisB,color:d.color}));return[...g,...u]}return o==="rotate"?Hi.map(g=>({kind:"ring",key:g.key,cssAxis:g.cssAxis,color:g.color})):[]}function v(){if(C(),!t)return;let g={x:i.showX!==!1,y:i.showY!==!1,z:i.showZ!==!1};function u(T){if(T.kind==="arrow"){let L=T.key.replace("-","")[0];return g[L]}if(T.kind==="ring")return g[T.key];let w=["x","y","z"][T.axisA],R=["x","y","z"][T.axisB];return g[w]&&g[R]}let d=h();for(let T of P()){if(!u(T))continue;let w=b(T,x(T.key)),R=e.add({polygons:w,objectUrls:[],warnings:[],dispose:()=>{}},{excludeFromAutoCenter:!0,id:`__poly-gizmo-${T.key}`,position:d}),L=y(T);if(R.element.classList.add("polycss-transform-gizmo",L,`${L}--${T.key}`),T.kind==="ring"){let te=(1-Di)/Io,_=(1+Di)/Io;R.element.style.setProperty("--ring-inner-ratio",`${te}`),R.element.style.setProperty("--ring-outer-ratio",`${_}`)}s.set(T.key,{handle:R,spec:T})}}function C(){for(let{handle:g}of s.values())g.remove();s.clear(),c=null,l=null}function F(){if(!t)return;let g=h();for(let{handle:u}of s.values())u.setTransform({position:g})}function k(){t&&(s.size===0?v():F())}function z(g){if(t=g,!g){p=[0,0,0],C();return}p=Bc(g.polygons),C(),v()}function O(){z(null)}function Z(g){g!==o&&(o=g,t&&(C(),v()))}function q(g,u,d){if(!t||!D)return;let T=d[g.cssAxis],w=Je[g.cssAxis],R=u*T/Lt,L=D.slice();L[w]=D[w]+R,t.setTransform({position:L}),F(),i.onObjectChange?.({object:t,position:L}),i.onChange?.()}let D=null,H=null,V=g=>{if(!t||i.enabled===!1)return;let u={x:i.showX!==!1,y:i.showY!==!1,z:i.showZ!==!1};if(o==="translate"){for(let d of Ii){let T=["x","y","z"][d.axisA],w=["x","y","z"][d.axisB];if(!u[T]||!u[w])continue;let R=s.get(d.key);if(R&&wt(R.handle.element,g.clientX,g.clientY)){g.preventDefault(),g.stopPropagation(),l=d.key,f(),D=(t.transform.position??[0,0,0]).slice(),Nc({axisA:d.axisA,axisB:d.axisB,probeDistanceCss:Vo(t.polygons)*r,wrapper:R.handle.element,target:t,startClientX:g.clientX,startClientY:g.clientY,translationSnap:i.translationSnap??null,onPlaneDelta:(L,te,_,j)=>{if(!t||!D)return;let Q=_[d.axisA],re=j[d.axisB],fe=Je[d.axisA],ue=Je[d.axisB],pe=D.slice();pe[fe]+=L*Q/Lt,pe[ue]+=te*re/Lt,t.setTransform({position:pe}),F(),i.onObjectChange?.({object:t,position:pe}),i.onChange?.()},onMouseDown:i.onMouseDown,onMouseUp:i.onMouseUp,onDraggingChanged:L=>{L||(l=null,D=null,f()),i.onDraggingChanged?.(L)}});return}}for(let d of Oi){let T=d.key.replace("-","")[0];if(!u[T])continue;let w=s.get(d.key);if(w&&wt(w.handle.element,g.clientX,g.clientY)){g.preventDefault(),g.stopPropagation(),l=d.key,f(),D=(t.transform.position??[0,0,0]).slice(),zc({cssAxis:d.cssAxis,sign:d.sign,shaftLengthCss:Vo(t.polygons)*r,wrapper:w.handle.element,target:t,startClientX:g.clientX,startClientY:g.clientY,translationSnap:i.translationSnap??null,onAxisDelta:(R,L)=>q(d,R,L),onMouseDown:i.onMouseDown,onMouseUp:i.onMouseUp,onDraggingChanged:R=>{R||(l=null,D=null,f()),i.onDraggingChanged?.(R)}});return}}}else if(o==="rotate")for(let d of Hi){if(!u[d.key])continue;let T=s.get(d.key);if(T&&wt(T.handle.element,g.clientX,g.clientY)){g.preventDefault(),g.stopPropagation(),l=d.key,f(),H=(t.transform.rotation??[0,0,0]).slice(),D=(t.transform.position??[0,0,0]).slice(),Gc({cssAxis:d.cssAxis,wrapper:T.handle.element,target:t,startClientX:g.clientX,startClientY:g.clientY,rotationSnap:i.rotationSnap??null,onAngleDelta:w=>{if(!t||!H||!D)return;let R=Je[d.cssAxis],L=[0,0,0];L[R]=1;let te=-w*Math.PI/180,_=Tc(H),j=Ec(L,te),Q=Sc(Ac(j,_)),re=typeof t.transform.scale=="number"?t.transform.scale:t.transform.scale?.[0]??1,fe=Ho(p,H[0],H[1],H[2]),ue=Ho(p,Q[0],Q[1],Q[2]),pe=[D[0]+re*(fe[0]-ue[0]),D[1]+re*(fe[1]-ue[1]),D[2]+re*(fe[2]-ue[2])];t.setTransform({rotation:Q,position:pe}),F(),i.onObjectChange?.({object:t,rotation:Q,position:pe}),i.onChange?.()},onMouseDown:i.onMouseDown,onMouseUp:i.onMouseUp,onDraggingChanged:w=>{w||(l=null,H=null,D=null,f(),t?.rebakeAtlas()),i.onDraggingChanged?.(w)}});return}}};e.host.addEventListener("pointerdown",V,{capture:!0});let G=g=>{if(!t||l||i.enabled===!1)return;let u=null;for(let[d,T]of s)if(wt(T.handle.element,g.clientX,g.clientY)){u=d;break}u!==c&&(c=u,f())};e.host.addEventListener("pointermove",G);function A(){e.host.removeEventListener("pointerdown",V,{capture:!0}),e.host.removeEventListener("pointermove",G),C()}return{attach:z,detach:O,setMode:Z,update:k,destroy:A}}var $c=typeof HTMLElement<"u"?HTMLElement:class{},Uc=["mode","target","size","enabled"];function Bi(e){if(e==="translate"||e==="rotate")return e}var kn=class extends $c{constructor(){super(...arguments);this._tc=null}static get observedAttributes(){return[...Uc]}_findScene(){let t=this.parentNode;for(;t;){if(t instanceof we)return t;t=t.parentNode}return null}_findTargetMesh(){let t=this.getAttribute("target");if(!t)return null;let o=this._findScene();if(!o)return null;let r=null;try{r=o.querySelector(`#${t}`)??o.querySelector(t)}catch{r=o.querySelector(`[id="${t}"]`)}return r instanceof Ct?r:null}_readOptions(){let t={},o=Bi(this.getAttribute("mode"));o!==void 0&&(t.mode=o);let r=ee(this.getAttribute("size"));r!==void 0&&(t.size=r);let i=this.getAttribute("enabled");return i!==null&&(t.enabled=i!=="false"&&i!=="0"),t.onObjectChange=s=>{this.dispatchEvent(new CustomEvent("polycss:object-change",{bubbles:!0,detail:{position:s.position,rotation:s.rotation}}))},t}_attach(){if(this._tc)return;let t=this._findScene(),o=t?.getScene();if(!o){if(t){let i=()=>{t.removeEventListener("polycss:scene-ready",i),this._attach()};t.addEventListener("polycss:scene-ready",i)}return}this._tc=Vi(o,this._readOptions());let r=this._findTargetMesh();if(r){let i=r.getMeshHandle();i&&this._tc.attach(i)}}connectedCallback(){this._attach()}disconnectedCallback(){this._tc&&(this._tc.destroy(),this._tc=null)}attributeChangedCallback(t,o,r){if(o!==r&&this._tc){if(t==="mode"){let i=Bi(r);i&&this._tc.setMode(i)}else if(t==="target"){let i=this._findTargetMesh();this._tc.attach(i?i.getMeshHandle()??null:null)}}}};function zi(e,n={}){let t=[],o=new Set;n.onChange&&o.add(n.onChange);function r(){t=n.filter?n.filter(t):t;for(let P of o)try{P(t)}catch(v){console.error("[polycss/createSelect] onChange threw:",v)}}function i(y){t=y,r()}function s(y){n.multiple?t.includes(y)||(t=[...t,y]):t=[y],r()}function c(y){t.includes(y)&&(t=t.filter(P=>P!==y),r())}function l(y){t.includes(y)?t=t.filter(P=>P!==y):n.multiple?t=[...t,y]:t=[y],r()}function p(){t.length!==0&&(t=[],r())}function h(y){return t.includes(y)}function x(y,P){return Ri(e.meshes(),y,P,v=>!v.element.classList.contains("polycss-transform-gizmo"))}let f=y=>{let P=y.target;if(P?.closest(".polycss-transform-gizmo"))return;let v=e.findMeshByElement(P)??x(y.clientX,y.clientY);if(!v){n.onPointerMissed&&n.onPointerMissed(y),n.clearOnMiss!==!1&&p();return}n.multiple&&(y.shiftKey||y.metaKey||y.ctrlKey)?l(v):t.length===1&&t[0]===v?p():i([v])};e.host.addEventListener("click",f);function b(){e.host.removeEventListener("click",f),o.clear()}return{get selected(){return t},set:i,add:s,remove:c,toggle:l,clear:p,has:h,destroy:b}}var jc=typeof HTMLElement<"u"?HTMLElement:class{},Wc=["multiple","clear-on-miss"],Dn=class extends jc{constructor(){super(...arguments);this._selection=null}static get observedAttributes(){return[...Wc]}_findScene(){let t=this.parentNode;for(;t;){if(t instanceof we)return t;t=t.parentNode}return null}_readOptions(){return{multiple:this.hasAttribute("multiple"),clearOnMiss:!this.hasAttribute("clear-on-miss")||this.getAttribute("clear-on-miss")!=="false",onChange:t=>{this.dispatchEvent(new CustomEvent("polycss:select",{bubbles:!0,detail:{selected:t}}))}}}_attach(){if(this._selection)return;let t=this._findScene(),o=t?.getScene();if(!o){if(t){let r=()=>{t.removeEventListener("polycss:scene-ready",r),this._attach()};t.addEventListener("polycss:scene-ready",r)}return}this._selection=zi(o,this._readOptions())}connectedCallback(){this._attach()}disconnectedCallback(){this._selection&&(this._selection.destroy(),this._selection=null)}attributeChangedCallback(t,o,r){o!==r&&(this._selection&&(this._selection.destroy(),this._selection=null),this._attach())}};import{boxPolygons as Yc,planePolygons as Xc,ringPolygons as Zc,octahedronPolygons as Qc,spherePolygons as qc,tetrahedronPolygons as Kc,icosahedronPolygons as Jc,dodecahedronPolygons as ed,cylinderPolygons as td,conePolygons as nd,torusPolygons as od,computeSceneBbox as rd}from"@layoutit/polycss-core";var id=typeof HTMLElement<"u"?HTMLElement:class{};function sd(e){return e.closest("poly-scene")??null}function he(e,n,t){let o=e.getAttribute(n);if(!o)return t;let r=parseFloat(o);return Number.isFinite(r)?r:t}function Xe(e,n,t){return e.getAttribute(n)??t}function dt(e,n){let t=e.getAttribute(n);if(!t)return;let o=t.split(",").map(r=>parseFloat(r.trim()));if(!(o.length!==3||o.some(r=>!Number.isFinite(r))))return[o[0],o[1],o[2]]}function ad(e){if(e.length===0)return e;let n=rd(e),t=(n.min[0]+n.max[0])/2,o=(n.min[1]+n.max[1])/2,r=(n.min[2]+n.max[2])/2;if(t===0&&o===0&&r===0)return e;let i=s=>[s[0]-t,s[1]-o,s[2]-r];return e.map(s=>({...s,vertices:s.vertices.map(i)}))}var ke=class extends id{constructor(){super(...arguments);this._handle=null}connectedCallback(){this._mount()}disconnectedCallback(){this._tearDown()}attributeChangedCallback(t,o,r){if(o!==r&&this._handle){if(t==="position"||t==="scale"||t==="rotation"||t==="cast-shadow"||t==="receive-shadow"){this._handle.setTransform({position:dt(this,"position"),scale:(()=>{let i=this.getAttribute("scale");if(!i)return;if(i.includes(","))return dt(this,"scale");let s=parseFloat(i);return Number.isFinite(s)?s:void 0})(),rotation:dt(this,"rotation"),castShadow:this.hasAttribute("cast-shadow"),receiveShadow:this.hasAttribute("receive-shadow")});return}this._tearDown(),this._mount()}}_tearDown(){if(this._handle){try{this._handle.dispose()}catch{}this._handle=null}}_mount(){let t=sd(this);if(!t)return;let o=t.getScene?.();if(!o)return;let r=this.buildPolygons();this.hasAttribute("auto-center")&&(r=ad(r));let i={polygons:r,objectUrls:[],warnings:[],dispose:()=>{}};this._handle=o.add(i,{position:dt(this,"position"),scale:(()=>{let s=this.getAttribute("scale");if(!s)return;if(s.includes(","))return dt(this,"scale");let c=parseFloat(s);return Number.isFinite(c)?c:void 0})(),rotation:dt(this,"rotation"),castShadow:this.hasAttribute("cast-shadow"),receiveShadow:this.hasAttribute("receive-shadow"),excludeFromAutoCenter:this.hasAttribute("exclude-from-auto-center"),merge:!1})}},On=class extends ke{static get observedAttributes(){return["size","color","auto-center","position","scale","rotation"]}buildPolygons(){let n=this.getAttribute("size"),t=n?parseFloat(n):void 0;return Yc({size:t!==void 0&&Number.isFinite(t)?t:void 0,color:Xe(this,"color")})}},Hn=class extends ke{static get observedAttributes(){return["axis","size","offset","color","auto-center","position","scale","rotation","cast-shadow","receive-shadow"]}buildPolygons(){let n=he(this,"axis",2),t=n===0||n===1||n===2?n:2,o=this.getAttribute("offset"),r=o===null?0:parseFloat(o);return Xc({axis:t,size:he(this,"size",.4),offset:Number.isFinite(r)?r:0,color:Xe(this,"color")})}},In=class extends ke{static get observedAttributes(){return["axis","radius","segments","half-thickness","color","auto-center","position","scale","rotation"]}buildPolygons(){let n=he(this,"axis",2),t=n===0||n===1||n===2?n:2,o=this.getAttribute("half-thickness");return Zc({axis:t,radius:he(this,"radius",50),segments:he(this,"segments",32),halfThickness:o?parseFloat(o):void 0,color:Xe(this,"color")})}},Fn=class extends ke{static get observedAttributes(){return["size","color","center","auto-center","position","scale","rotation"]}buildPolygons(){return Qc({center:dt(this,"center")??[0,0,0],size:he(this,"size",50),color:Xe(this,"color")})}},Vn=class extends ke{static get observedAttributes(){return["size","color","auto-center","position","scale","rotation"]}buildPolygons(){return Kc({size:he(this,"size",100),color:Xe(this,"color")})}},Bn=class extends ke{static get observedAttributes(){return["size","color","auto-center","position","scale","rotation"]}buildPolygons(){return Jc({size:he(this,"size",100),color:Xe(this,"color")})}},zn=class extends ke{static get observedAttributes(){return["size","color","auto-center","position","scale","rotation"]}buildPolygons(){return ed({size:he(this,"size",100),color:Xe(this,"color")})}},Nn=class extends ke{static get observedAttributes(){return["radius","subdivisions","color","auto-center","position","scale","rotation"]}buildPolygons(){return qc({radius:he(this,"radius",50),subdivisions:he(this,"subdivisions",1),color:Xe(this,"color")})}},Gn=class extends ke{static get observedAttributes(){return["radius","radius-top","height","radial-segments","color","auto-center","position","scale","rotation"]}buildPolygons(){let n=this.getAttribute("radius-top");return td({radius:he(this,"radius",50),radiusTop:n?parseFloat(n):void 0,height:he(this,"height",100),radialSegments:he(this,"radial-segments",12),color:Xe(this,"color")})}},$n=class extends ke{static get observedAttributes(){return["radius","height","radial-segments","color","auto-center","position","scale","rotation"]}buildPolygons(){return nd({radius:he(this,"radius",50),height:he(this,"height",100),radialSegments:he(this,"radial-segments",12),color:Xe(this,"color")})}},Un=class extends ke{static get observedAttributes(){return["radius","tube","radial-segments","tubular-segments","color","auto-center","position","scale","rotation"]}buildPolygons(){return od({radius:he(this,"radius",50),tube:he(this,"tube",15),radialSegments:he(this,"radial-segments",12),tubularSegments:he(this,"tubular-segments",16),color:Xe(this,"color")})}};typeof customElements<"u"&&(customElements.get("poly-scene")||customElements.define("poly-scene",we),customElements.get("poly-mesh")||customElements.define("poly-mesh",Ct),customElements.get("poly-iframe")||customElements.define("poly-iframe",mn),customElements.get("poly-polygon")||customElements.define("poly-polygon",fn),customElements.get("poly-axes-helper")||customElements.define("poly-axes-helper",hn),customElements.get("poly-directional-light-helper")||customElements.define("poly-directional-light-helper",gn),customElements.get("poly-orbit-controls")||customElements.define("poly-orbit-controls",Cn),customElements.get("poly-map-controls")||customElements.define("poly-map-controls",En),customElements.get("poly-first-person-controls")||customElements.define("poly-first-person-controls",Tn),customElements.get("poly-perspective-camera")||customElements.define("poly-perspective-camera",An),customElements.get("poly-orthographic-camera")||customElements.define("poly-orthographic-camera",Mt),customElements.get("poly-camera")||customElements.define("poly-camera",Mn),customElements.get("poly-transform-controls")||customElements.define("poly-transform-controls",kn),customElements.get("poly-select")||customElements.define("poly-select",Dn),customElements.get("poly-box")||customElements.define("poly-box",On),customElements.get("poly-plane")||customElements.define("poly-plane",Hn),customElements.get("poly-ring")||customElements.define("poly-ring",In),customElements.get("poly-octahedron")||customElements.define("poly-octahedron",Fn),customElements.get("poly-tetrahedron")||customElements.define("poly-tetrahedron",Vn),customElements.get("poly-sphere")||customElements.define("poly-sphere",Nn),customElements.get("poly-icosahedron")||customElements.define("poly-icosahedron",Bn),customElements.get("poly-dodecahedron")||customElements.define("poly-dodecahedron",zn),customElements.get("poly-cylinder")||customElements.define("poly-cylinder",Gn),customElements.get("poly-cone")||customElements.define("poly-cone",$n),customElements.get("poly-torus")||customElements.define("poly-torus",Un));export{hn as PolyAxesHelperElement,On as PolyBoxElement,Mn as PolyCameraElement,$n as PolyConeElement,Gn as PolyCylinderElement,gn as PolyDirectionalLightHelperElement,zn as PolyDodecahedronElement,Tn as PolyFirstPersonControlsElement,Bn as PolyIcosahedronElement,mn as PolyIframeElement,En as PolyMapControlsElement,Ct as PolyMeshElement,Fn as PolyOctahedronElement,Cn as PolyOrbitControlsElement,Mt as PolyOrthographicCameraElement,An as PolyPerspectiveCameraElement,Hn as PolyPlaneElement,fn as PolyPolygonElement,In as PolyRingElement,we as PolySceneElement,Dn as PolySelectElement,Nn as PolySphereElement,Vn as PolyTetrahedronElement,Un as PolyTorusElement,kn as PolyTransformControlsElement};
|
|
519
|
+
`;import{BASE_TILE as il,buildPolyCameraSceneTransform as sl,buildPolyMeshTransform as al,worldDirectionToCss as ll,worldDirectionalLightToCss as cl,worldPositionToCss as Yd}from"@layoutit/polycss-core";var Yt=il,ul=.1;function Xt(e){return ll(e)}function nt(e){return cl(e)}function fn(e){return al(e)}function Ro(e,n=[0,0,0],t=1){return sl(e.state,{autoCenterOffset:n,layoutScale:t})}function dl(e){let n=e.trim();if(!n||n==="normal")return 1;let t=n.endsWith("%")?Number(n.slice(0,-1))/100:Number(n);return Number.isFinite(t)&&t>0?t:1}function Nr(e){let n=e.ownerDocument?.defaultView;if(!n)return 1;let t=1;for(let o=e;o;o=o.parentElement)t*=dl(n.getComputedStyle(o).getPropertyValue("zoom"));return Number.isFinite(t)&&t>0?t:1}function jr(e,n){Math.abs(n-1)<1e-6?e.style.removeProperty("zoom"):e.style.setProperty("zoom",String(1/n))}function Gr(e){if(e.vertices.length<3)return null;let n=e.vertices[0],t=0,o=0,i=0;for(let v=1;v+1<e.vertices.length;v++){let f=e.vertices[v],b=e.vertices[v+1],y=f[1]-n[1],P=f[0]-n[0],x=f[2]-n[2],E=b[1]-n[1],O=b[0]-n[0],R=b[2]-n[2];t-=P*R-x*O,o-=x*E-y*R,i-=y*O-P*E}let r=Math.hypot(t,o,i);if(r<1e-9)return null;t/=r,o/=r,i/=r;let s=1/ul,c=Math.round(t*s)/s,l=Math.round(o*s)/s,d=Math.round(i*s)/s,h=Math.hypot(c,l,d);return h<1e-9?null:{key:c+","+l+","+d,vec:[c/h,l/h,d/h]}}function $r(e,n){let t=e?.disable??[],o=n?.disable??[];if(t.length!==o.length)return!1;for(let i of t)if(!o.includes(i))return!1;return!0}function Ur(e,n){return e===n?!0:!e||!n?!1:e[0]===n[0]&&e[1]===n[1]&&e[2]===n[2]}function Wr(e,n){return e===n?!0:(e?.color??"#000000")===(n?.color??"#000000")&&(e?.opacity??.25)===(n?.opacity??.25)&&(e?.lift??.05)===(n?.lift??.05)&&(e?.maxExtend??2e3)===(n?.maxExtend??2e3)}import{parseHex as Zr,parseHexColor as Yr,parsePureColor as pl}from"@layoutit/polycss-core";var ml=["--plx","--ply","--plz","--plr","--plg","--plb","--pli","--par","--pag","--pab","--pai","--clx","--cly","--clz"],Tt="--polycss-light-preview-active",Xr=`var(${Tt}, 0)`,fl="max(0, calc(var(--pnx, 0) * var(--plx, 0) + var(--pny, 0) * var(--ply, 0) + var(--pnz, 1) * var(--plz, 1)))",ko=(e,n,t)=>`calc(255 * max(0, 1.055 * pow(min(1, pow((var(${e}, 1) + 0.055) / 1.055, 2.4) * (pow((var(${n}, 1) + 0.055) / 1.055, 2.4) * var(--pai, 0.4) + pow((var(${t}, 1) + 0.055) / 1.055, 2.4) * var(--pli, 1) * var(--plam, 0)) / 3.14159265), 0.4167) - 0.055))`,gl=ko("--psr","--par","--plr"),hl=ko("--psg","--pag","--plg"),yl=ko("--psb","--pab","--plb");function ue(e,n,t){return e.style.getPropertyValue(n)===t?!1:(e.style.setProperty(n,t),!0)}function ut(e){for(let n of ml)e.style.getPropertyValue(n)&&e.style.removeProperty(n)}function gn(e,n){let t=n.directionalLight?.direction??[.4,-.7,.59],o=Xt(t),i=Math.hypot(o[0],o[1],o[2])||1,r=o[0]/i,s=o[1]/i,c=o[2]/i,l=Yr(n.directionalLight?.color??"#ffffff")?.rgb??[255,255,255],d=Yr(n.ambientLight?.color??"#ffffff")?.rgb??[255,255,255],h=n.directionalLight?.intensity??1,v=n.ambientLight?.intensity??.4,f=P=>(P/255).toFixed(4);ue(e,"--plx",r.toFixed(2)),ue(e,"--ply",s.toFixed(2)),ue(e,"--plz",c.toFixed(2)),ue(e,"--plr",f(l[0])),ue(e,"--plg",f(l[1])),ue(e,"--plb",f(l[2])),ue(e,"--pli",h.toFixed(4)),ue(e,"--par",f(d[0])),ue(e,"--pag",f(d[1])),ue(e,"--pab",f(d[2])),ue(e,"--pai",v.toFixed(4));let b=c,y=Math.sign(b||1)*Math.max(Math.abs(b),.01);ue(e,"--clx",r.toFixed(2)),ue(e,"--cly",s.toFixed(2)),ue(e,"--clz",y.toFixed(2))}function Qr(e,n){let t=n.textureLighting==="dynamic";if(e.dataset.polycssLighting=n.textureLighting??"baked",!t){ut(e);return}gn(e,n)}function dt(e,n){n.paintColor?e.style.setProperty("--polycss-paint",n.paintColor):e.style.getPropertyValue("--polycss-paint")&&e.style.removeProperty("--polycss-paint"),n.dynamicColor?(e.style.setProperty("--psr",(n.dynamicColor.r/255).toFixed(4)),e.style.setProperty("--psg",(n.dynamicColor.g/255).toFixed(4)),e.style.setProperty("--psb",(n.dynamicColor.b/255).toFixed(4))):(e.style.getPropertyValue("--psr")||e.style.getPropertyValue("--psg")||e.style.getPropertyValue("--psb"))&&(e.style.removeProperty("--psr"),e.style.removeProperty("--psg"),e.style.removeProperty("--psb"))}function qr(e,n){let t=Zr(n??"#cccccc");e.style.setProperty("--psr",(t.r/255).toFixed(4)),e.style.setProperty("--psg",(t.g/255).toFixed(4)),e.style.setProperty("--psb",(t.b/255).toFixed(4))}function Do(e,n,t){if(!e.plan||e.kind==="atlas"||e.plan.texture)return!1;let o=t.textureLighting??"baked",i={directionalLight:nt(t.directionalLight),ambientLight:t.ambientLight,textureLighting:o,textureQuality:t.textureQuality,seamBleed:t.seamBleed,strategies:t.strategies},r=mo(e.plan,n,e.plan.normal,o,i);return vt(e.element,r,o),o==="baked"&&xl(e.element),!0}function bl(e){let n=pl(e)??{rgb:[255,255,255],alpha:1},[t,o,i]=n.rgb,r=(c,l)=>`calc(${c} * (1 - ${Xr}) + var(${l}, ${c}) * ${Xr})`,s=n.alpha<1?` / ${n.alpha}`:"";return`rgb(${r(t,"--polycss-preview-r")} ${r(o,"--polycss-preview-g")} ${r(i,"--polycss-preview-b")}${s})`}function Kr(e,n,t){if(!e.plan||e.kind==="atlas"||e.plan.texture)return!1;let o=e.element,i=e.plan.normal,r=Zr(n.color??"#cccccc"),s=!1;return s=ue(o,"--pnx",i[0].toFixed(4))||s,s=ue(o,"--pny",i[1].toFixed(4))||s,s=ue(o,"--pnz",i[2].toFixed(4))||s,s=ue(o,"--psr",(r.r/255).toFixed(4))||s,s=ue(o,"--psg",(r.g/255).toFixed(4))||s,s=ue(o,"--psb",(r.b/255).toFixed(4))||s,s=ue(o,"--plam",fl)||s,s=ue(o,"--polycss-preview-r",gl)||s,s=ue(o,"--polycss-preview-g",hl)||s,s=ue(o,"--polycss-preview-b",yl)||s,s=ue(o,"--polycss-paint",bl(t))||s,o.style.getPropertyValue("color")&&(o.style.removeProperty("color"),s=!0),s}function xl(e){e.style.removeProperty("--pnx"),e.style.removeProperty("--pny"),e.style.removeProperty("--pnz"),e.style.removeProperty("--psr"),e.style.removeProperty("--psg"),e.style.removeProperty("--psb"),e.style.removeProperty("--plam"),e.style.removeProperty("--polycss-preview-r"),e.style.removeProperty("--polycss-preview-g"),e.style.removeProperty("--polycss-preview-b"),e.style.removeProperty("--polycss-paint")}var vl="http://www.w3.org/2000/svg",hn=class{constructor(){this.groundSvg=null;this.groundVisible=!1;this.currentGroundCssZ=null;this.shadowRoot=null}};function Jr(e,n,t){let o=e.shadowRoot;if(o||(o=n.createElement("div"),o.setAttribute("class","polycss-shadows"),o.style.position="absolute",o.style.top="0",o.style.left="0",o.style.width="0",o.style.height="0",o.style.transformStyle="preserve-3d",o.style.pointerEvents="none",e.shadowRoot=o),o.parentNode!==t){let i=t.firstChild;i?t.insertBefore(o,i):t.appendChild(o)}return o}function ei(e){e.groundSvg?.parentNode&&e.groundSvg.parentNode.removeChild(e.groundSvg),e.groundSvg=null,e.groundVisible=!1}function ti(e){e.groundSvg&&e.groundVisible&&(e.groundSvg.style.display="none",e.groundVisible=!1)}function ni(e,n,t,o){let i=[],r=e.firstChild;for(let s=0;s<t;s++){let c=r;c&&c.tagName==="path"?r=c.nextSibling:(c=n.createElementNS(vl,"path"),c.setAttribute("fill-rule","nonzero"),o&&(c.setAttribute("stroke-width","0.5"),c.setAttribute("stroke-linejoin","round")),e.insertBefore(c,r)),i.push(c)}for(;r;){let s=r.nextSibling;e.removeChild(r),r=s}return i}function oi(e){return{host:e.host,doc:e.doc,cameraEl:e.cameraEl,sceneEl:e.sceneEl,camera:e.camera,layoutScale:e.layoutScale,options:{current:e.options},meshes:new Set,meshAutoCounter:{next:0},autoCenter:{offset:[0,0,0]},bboxCenterCssCache:{value:null},shadowSvgState:new hn,receiverShadowCache:new Map,receiverShadowCacheKey:new Map,casterItemsCache:new Map,casterItemsCacheKey:new Map}}import{buildSharedEdgeMap as Pl,computeReceiverShadowFaces as Sl,meshScaleVec3 as ci,prepareCasterEdgeOwners as Cl,prepareCasterPolyItems as El,prepareReceiverFacePlanes as Tl}from"@layoutit/polycss-core";function ri(e){for(let n of e)n.svg&&n.svg.parentNode&&n.svg.parentNode.removeChild(n.svg),n.svg=null}function ii(e,n){if(n){let t=e.receiverShadowCache.get(n);t&&ri(t),e.receiverShadowCache.delete(n),e.receiverShadowCacheKey.delete(n)}else{for(let t of e.receiverShadowCache.values())ri(t);e.receiverShadowCache.clear(),e.receiverShadowCacheKey.clear()}}function si(e,n){n?(e.casterItemsCache.delete(n),e.casterItemsCacheKey.delete(n)):(e.casterItemsCache.clear(),e.casterItemsCacheKey.clear())}function ai(e){ei(e.shadowSvgState),li(e)}function Oo(e){return e.handle.id??e.autoMeshId}var Al="http://www.w3.org/2000/svg",yn=new WeakMap,ui=new WeakMap,di=new WeakMap,pi=new WeakMap,mi=new WeakMap;function fi(e){let n=yn.get(e);return n||(n=new Map,yn.set(e,n)),n}function Io(e){let n=yn.get(e);if(n){for(let t of n.values())t.svg&&t.svg.parentNode&&t.svg.parentNode.removeChild(t.svg);n.clear(),yn.delete(e)}}function li(e){for(let n of e.meshes)Io(n)}function gi(e,n,t,o,i,r,s,c,l,d){let h=e.options.current,{receiverShadowCache:v,receiverShadowCacheKey:f,casterItemsCache:b,casterItemsCacheKey:y}=e,P=o.handle.transform.position??[0,0,0],x=o.handle.transform.rotation??[0,0,0],E=o.polygons.some(A=>A.texture!==void 0),O=ci(o.handle.transform.scale),R=o.bboxCenterCss,j=h.shadow?.lift??.001,D=`${o.polygons.length}|${i.size}|${P.join(",")}|${x.join(",")}|${O.join(",")}|${R?R.join(","):"n"}|${j}`,Q=v.get(o);if(Q===void 0||f.get(o)!==D){Q=Tl(o.polygons,P,o.handle.transform.scale,i,j,x),v.set(o,Q),f.set(o,D);let A=fi(o);for(let g of A.values())g.svg&&g.svg.parentNode&&g.svg.parentNode.removeChild(g.svg);A.clear()}let J=[];for(let A of n){let g=A.handle.transform.position??[0,0,0],T=A.handle.transform.rotation??[0,0,0],u=ci(A.handle.transform.scale),m=A.bboxCenterCss,L=`${A.polygons.length}|${g.join(",")}|${T.join(",")}|${u.join(",")}|${m?m.join(","):"n"}`,_=b.get(A);if(_===void 0||y.get(A)!==L){let C=t.get(A),W=new Set;for(let Z of A.rendered)Z.plan&&!C.has(Z.polygonIndex)&&W.add(Z.polygonIndex);_=El(A.polygons,g,A.handle.transform.scale,Z=>W.has(Z),T),b.set(A,_),y.set(A,L)}let H;if(A===o){let C=ui.get(A);(C===void 0||di.get(A)!==A.polygons)&&(C=Pl(A.polygons),ui.set(A,C),di.set(A,A.polygons)),H=C}let q;if(A!==o&&A.polygons.length>=40){let C=pi.get(A);(C===void 0||mi.get(A)!==L)&&(C=Cl(A.polygons,g,A.handle.transform.scale,T),pi.set(A,C),mi.set(A,L)),q=C}J.push({id:A,items:_,selfShadowEdgeMap:H,edgeOwners:q,casterPolygonCount:A.polygons.length})}let k={rotX:e.camera.state.rotX,rotY:e.camera.state.rotY,meshRotation:o.handle.transform.rotation},V=Sl({receiverPlanes:Q,receiverPolygons:o.polygons,receiverHasTexture:E,casters:J,lightDir:r,cameraRot:k,ambientLight:h.ambientLight,directionalLight:h.directionalLight,shadow:{color:h.shadow?.color,opacity:d,maxExtend:h.shadow?.maxExtend}}),z=fi(o),B=new Set;for(let A of V){B.add(A.faceIndex);let g=z.get(A.faceIndex);g||(g={svg:null,visible:!1,width:-1,height:-1,matrixCss:""},z.set(A.faceIndex,g));let T=g.svg;T?(g.visible||(T.style.display="block"),(g.width!==A.width||g.height!==A.height)&&(T.setAttribute("width",String(A.width)),T.setAttribute("height",String(A.height)),T.setAttribute("viewBox",`0 0 ${A.width} ${A.height}`),g.width=A.width,g.height=A.height),g.matrixCss!==A.matrixCss&&(T.style.transform=A.matrixCss,g.matrixCss=A.matrixCss)):(T=e.doc.createElementNS(Al,"svg"),T.setAttribute("class","polycss-shadow polycss-shadow-svg polycss-shadow-receiver"),h.debugShadowAttrs&&(T.setAttribute("data-poly-shadow-type","receiver"),T.setAttribute("data-poly-shadow-receiver",Oo(o)),T.setAttribute("data-poly-shadow-receiver-face",String(A.faceIndex)),T.setAttribute("data-poly-shadow-receiver-polys",JSON.stringify(A.memberPolyIndices))),T.setAttribute("width",String(A.width)),T.setAttribute("height",String(A.height)),T.setAttribute("viewBox",`0 0 ${A.width} ${A.height}`),T.setAttribute("style",`position:absolute;top:0;left:0;display:block;overflow:hidden;transform-origin:0 0;pointer-events:none;will-change:transform;transform:${A.matrixCss}`),Jr(e.shadowSvgState,e.doc,e.sceneEl).appendChild(T),g.svg=T,g.width=A.width,g.height=A.height,g.matrixCss=A.matrixCss),g.visible=!0;let u=ni(T,e.doc,A.paths.length,!0),m=A.opacity.toFixed(4),L=[],_=!!h.debugShadowAttrs;for(let H=0;H<A.paths.length;H++){let q=A.paths[H],C=_?Oo(q.casterId):"";_&&L.push(C);let W=u[H];if(W.setAttribute("d",q.d),W.getAttribute("fill")!==A.fill&&W.setAttribute("fill",A.fill),W.getAttribute("stroke")!==A.fill&&W.setAttribute("stroke",A.fill),W.getAttribute("opacity")!==m&&W.setAttribute("opacity",m),_){W.getAttribute("data-poly-shadow-caster")!==C&&W.setAttribute("data-poly-shadow-caster",C);let Z=JSON.stringify(q.casterPolygonIndices);W.getAttribute("data-poly-shadow-caster-polys")!==Z&&W.setAttribute("data-poly-shadow-caster-polys",Z)}}if(_){let H=L.join(" ");T.getAttribute("data-poly-shadow-casters")!==H&&T.setAttribute("data-poly-shadow-casters",H)}}for(let[A,g]of z)B.has(A)||g.svg&&g.visible&&(g.svg.style.display="none",g.visible=!1)}var hi=Symbol.for("polycss.animation.triangleFrameTarget");var Bl=750;var bn=Promise.resolve();function xi(e){return!Object.prototype.hasOwnProperty.call(e,"seamBleed")||e.seamBleed!==void 0?e:{...e,seamBleed:Pi}}var zl={key:"non-cullable",normal:[1,1,0]};function vi(){return[zl]}function Si(e,n){if(!e||typeof e.appendChild!="function")throw new Error("createPolyScene: host must be an HTMLElement");if(!n?.camera)throw new Error("createPolyScene: a camera handle is required. Use createPolyCamera({...}) or createPolyPerspectiveCamera({...}) and pass as { camera }.");let t=n.camera;e.ownerDocument&&Vr(e.ownerDocument),e.ownerDocument?.defaultView&&e.ownerDocument.defaultView.getComputedStyle(e).position==="static"&&(e.style.position="relative");let{camera:o,...i}=n,r=xi({seamBleed:Pi,...i}),s=Nr(e),c=[0,0,0],l=e.ownerDocument??document,d=l.createElement("div");d.className="polycss-camera",Q(d,r),e.appendChild(d);let h=l.createElement("div");h.className="polycss-scene",h.setAttribute("aria-hidden","true"),J(h,r),d.appendChild(h);let v=oi({host:e,doc:l,cameraEl:d,sceneEl:h,camera:t,layoutScale:s,options:r}),f=v.meshes,b=new WeakMap,y=v.shadowSvgState,P=()=>ti(y),x=()=>ai(v),E=null;function O(a){if(!a)return null;let p=Math.hypot(a[0],a[1],a[2]);if(!Number.isFinite(p)||p<=0)return null;let S=Math.round(a[0]/p*100)/100,w=Math.round(a[1]/p*100)/100,$=Math.round(a[2]/p*100)/100;return`${S}|${w}|${$}`}function R(){E=null}let j=a=>ii(v,a),D=a=>si(v,a);function Q(a,p){let S=kl(t);a.style.perspective=S.appliedPerspectiveStyle,a.dataset.polycssCameraProjection=S.projection,a.dataset.polycssCameraPerspective=S.perspectiveStyle,a.dataset.polycssCameraAppliedPerspective=S.appliedPerspectiveStyle,a.dataset.polycssCameraZoom=String(S.state.zoom),a.dataset.polycssCameraDistance=String(S.state.distance),a.dataset.polycssCameraRotX=String(S.state.rotX),a.dataset.polycssCameraRotY=String(S.state.rotY),a.dataset.polycssCameraTarget=S.state.target.join(",")}function J(a,p){jr(a,s),a.style.transform=Ro(t,c,s),Qr(a,p)}function k(a){a.style.transform=Ro(t,c,s)}function V(a){a.textureReadyPromise=bn,a.voxelRenderer?.dispose(),a.voxelRenderer=void 0,g(a.rendered,a.disposeAtlas),a.disposeAtlas=void 0,a.rendered.length=0,a.renderedByPolygonIndex=[],a.cameraCullGroups=[],a.cameraCullSignature="",a.solidLightingPreviewPrepared=!1,a.solidLightingPreviewActive=!1,A(a);for(let p of Array.from(a.wrapper.children))p instanceof HTMLElement&&p.classList.contains("polycss-bucket")&&p.remove();a.hasBuckets=!1}function z(a){for(let p of Array.from(a.wrapper.childNodes)){if(!(p instanceof HTMLElement))return p;if(p.classList.contains("polycss-bucket")||p.classList.contains("polycss-shadow"))continue;let S=p.tagName.toLowerCase();if(!(S==="b"||S==="i"||S==="s"||S==="u"||S==="q"))return p}return null}function B(a,p,S){S?.parentNode===a.wrapper?a.wrapper.insertBefore(p,S):a.wrapper.appendChild(p)}function A(a){for(let p of a.shadowRendered)p.parentNode&&p.parentNode.removeChild(p);a.shadowRendered.length=0,x()}function g(a,p){p?.();for(let S of a){try{S.dispose()}catch{}S.element.parentNode&&S.element.parentNode.removeChild(S.element)}}function T(a,p,S,w){a.rendered=p,a.renderedByPolygonIndex=[];for(let $ of p)a.renderedByPolygonIndex[$.polygonIndex]=$;a.disposeAtlas=S,a.textureReadyPromise=w?w.catch(()=>{}):bn,a.solidLightingPreviewPrepared=!1}function u(a,p){let S=a.renderedByPolygonIndex[p];return S?.polygonIndex===p?S:void 0}function m(a){for(let p of Array.from(a.wrapper.children))p instanceof HTMLElement&&p.classList.contains("polycss-bucket")&&p.remove();a.hasBuckets=!1;for(let p of a.rendered)p.element.parentNode&&p.element.parentNode.removeChild(p.element)}function L(a,p){let S=a.polygons[p.polygonIndex];return a.stableDom&&S?bi(S):p.plan?.normal??(S?bi(S):null)}function _(a){if(!Z(a))return a.rendered;let p=H(a);return a.rendered.filter(S=>q(a,S,Ho,p))}function H(a){return{rotX:t.state.rotX,rotY:t.state.rotY,meshRotation:a.handle.transform.rotation}}function q(a,p,S=Ho,w=H(a)){let $=L(a,p);return $===null||Il($,w,S)}function C(a){if(a.excludeFromAutoCenter){a.cameraCullGroups=[];return}let p=new Map;for(let S of a.rendered){let w=L(a,S);if(!w)continue;if(!Dl(w)){a.cameraCullGroups=vi();return}let $=Ml(w);if(!p.has($)&&(p.set($,w),p.size>wl)){a.cameraCullGroups=vi();return}}a.cameraCullGroups=Array.from(p,([S,w])=>({key:S,normal:w}))}function W(a){return Z(a)?Ll(a.cameraCullGroups,H(a)):"all"}function Z(a){return!a.excludeFromAutoCenter&&Ol(a.cameraCullGroups)}function re(a){a.cameraCullSignature=Z(a)?W(a):"all"}function fe(a,p){let S=new Array(a.rendered.length),w=!1,$=H(a);for(let K=0;K<a.rendered.length;K+=1){let oe=a.rendered[K],ee=q(a,oe,p,$);S[K]=ee}let N=null,I=null,U=()=>{if(!(!N||!I)){if(N===I)N.remove();else{let K=l.createRange();K.setStartBefore(N),K.setEndAfter(I),K.deleteContents(),K.detach()}N=null,I=null,w=!0}};for(let K=0;K<a.rendered.length;K+=1){let oe=a.rendered[K];!S[K]&&oe.element.parentNode===a.wrapper?(I&&I.nextSibling===oe.element||(U(),N=oe.element),I=oe.element):U()}U();let Y=K=>{for(let oe=K;oe<a.rendered.length;oe+=1){let ee=a.rendered[oe].element;if(ee.parentNode===a.wrapper)return ee}return z(a)},ae=-1,ne=K=>{if(ae<0)return;let oe=l.createDocumentFragment();for(let ee=ae;ee<K;ee+=1){let _e=a.rendered[ee];be(a,_e),oe.appendChild(_e.element)}B(a,oe,Y(K)),ae=-1,w=!0};for(let K=0;K<a.rendered.length;K+=1){let oe=a.rendered[K];S[K]&&oe.element.parentNode!==a.wrapper?ae<0&&(ae=K):ne(K)}return ne(a.rendered.length),w}function de(a,p=!1){if(a.voxelRenderer){p?a.voxelRenderer.render(H(a)):a.voxelRenderer.syncCamera(H(a)),a.cameraCullSignature="voxel-direct";return}if(!Z(a)){let $=a.cameraCullSignature!=="all";a.cameraCullSignature="all",$&&xe(a);return}if(a.hasBuckets){pe(a,p);return}let S=W(a);if(!p&&S===a.cameraCullSignature)return;let w=fe(a,Ho);a.cameraCullSignature=S,w&&Ne(a)}function pe(a,p=!1){let S=Z(a)?W(a):"all";!p&&S===a.cameraCullSignature||xe(a)}function Ce(a,p){return L(a,p)}function be(a,p){if(r.textureLighting!=="dynamic")return;let S=Ce(a,p);S&&(p.element.style.setProperty("--pnx",S[0].toFixed(4)),p.element.style.setProperty("--pny",S[1].toFixed(4)),p.element.style.setProperty("--pnz",S[2].toFixed(4)))}function Ae(a){m(a),a.hasBuckets=!1;let p=a.skipBucketNormalCleanupOnce;a.skipBucketNormalCleanupOnce=!1;let S=l.createDocumentFragment(),w=r.textureLighting==="dynamic"&&!a.stableDom,$=new Map,N=[];for(let I of _(a)){let U=a.polygons[I.polygonIndex],Y=w&&U?Gr(U):null;if(!Y){N.push(I);continue}let ae=Y.key+"|"+(U.color??""),ne=$.get(ae);ne||(ne={vec:Y.vec,items:[]},$.set(ae,ne)),ne.items.push(I)}for(let I of N)be(a,I),S.appendChild(I.element);for(let I of $.values()){if(I.items.length<2){for(let Y of I.items)be(a,Y),S.appendChild(Y.element);continue}let U=l.createElement("div");U.className="polycss-bucket",a.hasBuckets=!0,U.style.setProperty("--pnx",String(I.vec[0])),U.style.setProperty("--pny",String(I.vec[1])),U.style.setProperty("--pnz",String(I.vec[2]));for(let Y of I.items)U.appendChild(Y.element),(!p||Y.kind==="triangle")&&(Y.element.style.removeProperty("--pnx"),Y.element.style.removeProperty("--pny"),Y.element.style.removeProperty("--pnz"));S.appendChild(U)}B(a,S,z(a)),re(a)}function Ve(){return new Promise(a=>setTimeout(a,0))}async function Xe(a,p){if(r.textureLighting==="dynamic"&&!a.stableDom)return Ae(a),!p();m(a);let w=l.createDocumentFragment(),$=z(a),N=0;for(let I of _(a)){if(p())return!1;be(a,I),w.appendChild(I.element),N++,N%Bl===0&&(B(a,w,$),w=l.createDocumentFragment(),await Ve())}return w.childNodes.length>0&&B(a,w,$),re(a),!p()}function ot(a,p){let S=r.textureLighting==="dynamic",w=r.directionalLight?.direction,$=p&&(p[0]!==0||p[1]!==0||p[2]!==0);if(!S||!$||!w){if(a.lightOverrideSignature==="clear")return;a.wrapper.style.removeProperty("--plx"),a.wrapper.style.removeProperty("--ply"),a.wrapper.style.removeProperty("--plz"),a.lightOverrideSignature="clear";return}let N=Fo(w,p),I=Xt(N),U=Math.hypot(I[0],I[1],I[2])||1,Y=(I[0]/U).toFixed(2),ae=(I[1]/U).toFixed(2),ne=(I[2]/U).toFixed(2),K=`${Y}|${ae}|${ne}`;a.lightOverrideSignature!==K&&(a.wrapper.style.setProperty("--plx",Y),a.wrapper.style.setProperty("--ply",ae),a.wrapper.style.setProperty("--plz",ne),a.lightOverrideSignature=K)}function mt(a){let p=!1;for(let S of a.rendered){if(!S.plan||S.kind==="atlas"||S.plan.texture)continue;let w=a.polygons[S.polygonIndex];w&&(p=Do(S,w,r)||p)}return a.solidLightingPreviewPrepared=!1,a.solidLightingPreviewActive=!1,p}function rt(a){if((r.textureLighting??"baked")!=="baked")return!1;let p=!1;for(let S of a.rendered){if(!S.plan||S.kind==="atlas"||S.plan.texture)continue;let w=a.polygons[S.polygonIndex];w&&(Kr(S,w,S.plan.shadedColor),p=!0)}return a.solidLightingPreviewPrepared=p,p}function Kn(a){return(r.textureLighting??"baked")!=="baked"||!a.solidLightingPreviewPrepared&&!rt(a)?!1:(a.solidLightingPreviewActive=!0,!0)}function Jn(a){return a.kind==="atlas"||!!a.plan?.texture}function eo(){if((r.textureLighting??"baked")!=="baked")return!1;let a=!1;for(let p of f)a=mt(p)||a,p.rendered.some(Jn)&&(Ot(p),a=!0);h.style.removeProperty(Tt);for(let p of f)ut(p.wrapper),p.solidLightingPreviewActive=!1;return ut(h),a}function to(){h.style.removeProperty(Tt);for(let a of f)a.solidLightingPreviewActive&&(mt(a),ut(a.wrapper));(r.textureLighting??"baked")!=="dynamic"&&(ut(h),R(),Ee())}function G(a,p){let S=a.handle.transform.rotation,w=p.directionalLight?.direction??r.directionalLight?.direction;if(!(S&&(S[0]!==0||S[1]!==0||S[2]!==0))||!w){ut(a.wrapper);return}let N=Fo(w,S);gn(a.wrapper,{...r,...p,directionalLight:{...r.directionalLight,...p.directionalLight,direction:N}})}function ie(a){if((r.textureLighting??"baked")!=="baked")return!1;gn(h,{...r,...a}),!a.skipShadows&&a.directionalLight?.direction&&Ee(a.directionalLight.direction);let p=!1;for(let S of f)G(S,a),p=Kn(S)||p;return p?ue(h,Tt,"1"):h.style.removeProperty(Tt),p}function se(a,p,S){let w=a.polygons[p];if(!w)return!1;let $=u(a,p);if(!$)return!1;let N=r.textureLighting??"baked";return N==="dynamic"?(qr($.element,S),!0):N==="baked"?Do($,w,r):!1}function we(a,p){let S=a.polygons[p];if(!S)return!1;let w=u(a,p);return w?(ye(w.element,S,p),!0):!1}function Dt(a,p,S){return!(S.length===0||!S.every(w=>w==="color"||w==="data")||S.includes("color")&&!se(a,p,a.polygons[p]?.color)||S.includes("data")&&!we(a,p))}function Ne(a){R(),Ee()}function Ee(a){let p=[];for(let ee of f)!ee.disposed&&ee.castShadow&&p.push(ee);if(p.length===0){x(),E=null;return}let S=r.shadow?.color??"#000000",w=r.shadow?.opacity??.25,$=Fl(S)?.rgb??[0,0,0],N=$[0],I=$[1],U=$[2],Y=a??r.directionalLight?.direction??[.4,-.7,.59],ae=Xt(Y),ne=O(ae);if(ne!==null&&ne===E)return;let K=new Map;for(let ee of p)K.set(ee,yi(ee.polygons,{normalTolerance:.1,distanceTolerance:.5,overlapFraction:.95,preserveDoubleSidedBackfaces:!1}));let oe=new Map;for(let ee of f)ee.disposed||!ee.receiveShadow||oe.set(ee,new Set);P();for(let ee of f)ee.disposed||!ee.receiveShadow||gi(v,p,K,ee,oe.get(ee)??new Set,ae,N,I,U,w);E=ne}function xe(a){if(a.voxelRenderer){a.voxelRenderer.render(H(a)),a.cameraCullSignature="voxel-direct";return}A(a),Ae(a),Ne(a)}function Ie(a,p){if(!p||!a.polygons||a.polygons.length<2)return;let S=Math.hypot(p[0],p[1],p[2]);if(!Number.isFinite(S)||S<=0)return;let w=p[0]/S,$=p[1]/S,N=p[2]/S,I=K=>Math.round(K*1e3)/1e3,U=`${I(w)},${I($)},${I(N)}`,Y=a.lightOcclusionCache;if(Y&&Y.polygons===a.polygons&&Y.lightDirKey===U)return Y.occluded;let ae=Y&&Y.polygons===a.polygons?Y.dedupDropped:yi(a.polygons,{normalTolerance:.1,distanceTolerance:.12,overlapFraction:.98,preserveDoubleSidedBackfaces:!1}),ne=Rl(a.polygons,[w,$,N],ae);return a.lightOcclusionCache={polygons:a.polygons,lightDirKey:U,occluded:ne,dedupDropped:ae},ne}function He(a){return!!a.voxelSource&&r.textureLighting!=="dynamic"&&!a.stableDom&&!a.castShadow}function Se(a,p){V(a);let S=r.directionalLight,w=p?{...S,direction:p}:S,$=nt(w),N=void 0;if(He(a)){let Y=Br({doc:l,wrapper:a.wrapper,polygons:a.parseResult.polygons,directionalLight:$,ambientLight:r.ambientLight});if(Y){a.voxelRenderer=Y,Y.render(H(a)),a.cameraCullSignature="voxel-direct",a.textureReadyPromise=bn;return}}let I={doc:l,directionalLight:$,ambientLight:r.ambientLight,textureLighting:r.textureLighting,textureQuality:r.textureQuality,textureLeafSizing:r.textureLeafSizing,textureImageRendering:r.textureImageRendering,textureBackend:r.textureBackend,textureProjection:r.textureProjection,seamBleed:r.seamBleed,strategies:r.strategies,lightOccludedPolyIndices:N},U=a.stableDom?(()=>{let Y=Ct(a.polygons,I);return dt(a.wrapper,Y),$t(a.polygons,{...I,solidPaintDefaults:Y})??Et(a.polygons,{...I,solidPaintDefaults:Y})})():Et(a.polygons,{...I,computeSolidPaintDefaults:!0,skipDynamicNormalVars:r.textureLighting==="dynamic"});a.stableDom||dt(a.wrapper,U.solidPaintDefaults??{}),T(a,U.rendered,U.dispose,U.pagesReady),a.skipBucketNormalCleanupOnce=r.textureLighting==="dynamic"&&!a.stableDom,C(a),Ae(a),Ne(a)}function Ot(a,p){if(a.rendered.length===0||a.voxelRenderer||a.stableDom||He(a)){Se(a,p);return}if(a.rendered[0]?.element.parentNode===null){Se(a,p);return}let S=r.directionalLight,w=p?{...S,direction:p}:S,$=nt(w),N={doc:l,directionalLight:$,ambientLight:r.ambientLight,textureLighting:r.textureLighting,textureQuality:r.textureQuality,textureLeafSizing:r.textureLeafSizing,textureImageRendering:r.textureImageRendering,textureBackend:r.textureBackend,textureProjection:r.textureProjection,seamBleed:r.seamBleed,strategies:r.strategies,computeSolidPaintDefaults:!0,skipDynamicNormalVars:r.textureLighting==="dynamic"},I=Et(a.polygons,N),U=()=>{a.rebakeInFlight=!1;let ne=a.rebakeQueuedLightDir;ne!==null&&(a.rebakeQueuedLightDir=null,Ot(a,ne))},Y=()=>{if(a.disposed){I.dispose(),U();return}if(I.rendered.length!==a.rendered.length){I.dispose(),Se(a,p),U();return}for(let oe of I.rendered){let ee=a.renderedByPolygonIndex[oe.polygonIndex];if(!ee)continue;let _e=oe.element.getAttribute("style");_e!==null&&ee.element.setAttribute("style",_e)}let ne=I.solidPaintDefaults;ne&&dt(a.wrapper,ne);let K=a.disposeAtlas;a.disposeAtlas=I.dispose,K&&(typeof requestAnimationFrame=="function"?ee=>{requestAnimationFrame(ee)}:ee=>{setTimeout(ee,0)})(K),Ne(a),U()},ae=I.pagesReady;ae&&typeof ae.then=="function"?(a.textureReadyPromise=ae.catch(()=>{}),ae.then(()=>oo(I.rendered)).then(ro).then(Y,()=>{I.dispose(),a.disposed||Se(a,p),U()})):Y()}function no(a,p){if(a.rebakeInFlight){a.rebakeQueuedLightDir=p;return}a.rebakeInFlight=!0,Ot(a,p)}function oo(a){let p=new Set;for(let S of a){let w=S.element.getAttribute("style")??"",$=/url\((blob:[^)]+)\)/g,N;for(;(N=$.exec(w))!==null;)p.add(N[1])}return Array.from(p)}function ro(a){return a.length===0||typeof Image>"u"?Promise.resolve():Promise.all(a.map(p=>{let S=new Image;S.src=p;let w=S.decode?.();return w?w.catch(()=>{}):Promise.resolve()})).then(()=>{})}function Ze(){let a=1/0,p=!1;for(let N of f)if(!N.disposed&&N.receiveShadow){p=!0;break}for(let N of f){if(N.disposed||!(p?N.receiveShadow:N.castShadow))continue;let U=N.handle.transform.position?.[2]??0;for(let Y of N.polygons)for(let ae of Y.vertices){let ne=ae[2]+U;ne<a&&(a=ne)}}if(!Number.isFinite(a)){let N=y.currentGroundCssZ!==null;y.currentGroundCssZ=null,N&&(x(),R());return}let S=r.shadow?.lift??.05,w=(a+S)*Yt,$=y.currentGroundCssZ;y.currentGroundCssZ=w,$!==w&&(R(),Ee())}async function Jt(a,p){V(a);let S=nt(r.directionalLight),w={doc:l,directionalLight:S,ambientLight:r.ambientLight,textureLighting:r.textureLighting,textureQuality:r.textureQuality,textureLeafSizing:r.textureLeafSizing,textureImageRendering:r.textureImageRendering,textureBackend:r.textureBackend,textureProjection:r.textureProjection,seamBleed:r.seamBleed,strategies:r.strategies,lightOccludedPolyIndices:void 0},$=a.stableDom?$t(a.polygons,w):null;if($){let U=Ct(a.polygons,w);return dt(a.wrapper,U),T(a,$.rendered,$.dispose,$.pagesReady),C(a),Ae(a),Ne(a),!p()}let N=await dn(a.polygons,{...w,skipDynamicNormalVars:r.textureLighting==="dynamic"},p);if(p())return N.dispose(),!1;dt(a.wrapper,N.solidPaintDefaults),T(a,N.rendered,N.dispose,N.pagesReady),a.skipBucketNormalCleanupOnce=r.textureLighting==="dynamic"&&!a.stableDom,C(a);let I=await Xe(a,p);return I&&Ne(a),I}function it(){let a=c,p=[0,0,0];if(r.autoCenter){let S=[];for(let w of f)!w.disposed&&!w.excludeFromAutoCenter&&S.push(...w.polygons);if(S.length>0){let w=_l(S);p=[(w.min[0]+w.max[0])/2,(w.min[1]+w.max[1])/2,(w.min[2]+w.max[2])/2]}}a[0]===p[0]&&a[1]===p[1]&&a[2]===p[2]||(c=p,v.autoCenter.offset=p,J(h,r))}function Zi(a,p={}){let w=(h.ownerDocument??document).createElement("div");w.className="polycss-mesh",p.id&&w.setAttribute("data-poly-mesh-id",p.id);let $=`polycss-mesh-${v.meshAutoCounter.next++}`;w.setAttribute("data-poly-mesh-index",$);let N={...p},I=p.merge!==!1,U=!!p.stableDom,Y=0,ae=fn(N);ae&&(w.style.transform=ae);let ne=(F,X)=>a.voxelSource?F:X?Hl(F,{meshResolution:p.meshResolution}):(U||p.excludeFromAutoCenter,F),K=ne(a.polygons,I),oe=null;function ee(){let F=fn(N);w.style.transform=F??""}function _e(F){if(F.length===0){oe=null,Qe&&(Qe.bboxCenterCss=null),ee();return}let X=1/0,le=1/0,me=1/0,Re=-1/0,ce=-1/0,he=-1/0;for(let Ge of F)for(let Be of Ge.vertices)Be[0]<X&&(X=Be[0]),Be[0]>Re&&(Re=Be[0]),Be[1]<le&&(le=Be[1]),Be[1]>ce&&(ce=Be[1]),Be[2]<me&&(me=Be[2]),Be[2]>he&&(he=Be[2]);if(!Number.isFinite(X)){oe=null,Qe&&(Qe.bboxCenterCss=null),ee();return}let Fe=(le+ce)/2*Yt,je=(X+Re)/2*Yt,ke=(me+he)/2*Yt;oe=[Fe,je,ke],Qe&&(Qe.bboxCenterCss=oe),ee()}let Qe=null;_e(K),h.appendChild(w);let M={handle:void 0,wrapper:w,parseResult:a,rendered:[],renderedByPolygonIndex:[],shadowRendered:[],polygons:K,voxelSource:a.voxelSource,disposed:!1,stableDom:U,hasBuckets:!1,skipBucketNormalCleanupOnce:!1,excludeFromAutoCenter:!!p.excludeFromAutoCenter,castShadow:!!p.castShadow,bboxCenterCss:oe,receiveShadow:!!p.receiveShadow,cameraCullGroups:[],cameraCullSignature:"",lightOverrideSignature:"clear",stableTriangleColorFrame:0,solidLightingPreviewPrepared:!1,solidLightingPreviewActive:!1,bakedRotation:p.rotation?[...p.rotation]:[0,0,0],autoMeshId:$,rebakeInFlight:!1,rebakeQueuedLightDir:null,textureReadyPromise:bn},st=null,ft=0,gt=-1,at=null;function lt(){st=null,at=null,gt=-1}function en(){let F=st;if(!F||F.polygonCount!==M.polygons.length)return M.polygons;if(at&>===ft)return at;let X=F.vertices,le=new Array(F.polygonCount);for(let me=0;me<F.polygonCount;me++){let Re=M.polygons[me],ce=me*9;le[me]={...Re,color:F.colors?.[me]??Re.color,vertices:[[X[ce],X[ce+1],X[ce+2]],[X[ce+3],X[ce+4],X[ce+5]],[X[ce+6],X[ce+7],X[ce+8]]]}}return at=le,gt=ft,le}function ht(F,X){let le=F?.stableTriangleUpdateMode==="color-only";M.stableTriangleColorFrame++;let me=M.stableDom&&!X;if(me||_e(M.polygons),M.stableDom&&!M.hasBuckets){let Re={doc:l,directionalLight:nt(r.directionalLight),ambientLight:r.ambientLight,textureLighting:r.textureLighting,textureQuality:r.textureQuality,textureLeafSizing:r.textureLeafSizing,textureImageRendering:r.textureImageRendering,textureBackend:r.textureBackend,textureProjection:r.textureProjection,seamBleed:r.seamBleed},ce=M.rendered.length===M.polygons.length&&M.rendered.every(ke=>ke.kind==="triangle"),he=M.stableDom&&!X,Fe=ce||he?{}:Ct(M.polygons,Re);ce||dt(M.wrapper,Fe);let je={...Re,solidPaintDefaults:Fe,optimizeStableTriangleStyle:!0,stableTriangleDebug:F?.stableTriangleDebug,stableTriangleUpdateMode:F?.stableTriangleUpdateMode,stableTriangleColorPolicy:F?.stableTriangleColorPolicy,stableTriangleColorSteps:F?.stableTriangleColorSteps,stableTriangleColorFreezeFrames:F?.stableTriangleColorFreezeFrames,stableTriangleColorBudget:F?.stableTriangleColorBudget,stableTriangleColorMaxAge:F?.stableTriangleColorMaxAge,stableTriangleColorMaxStep:F?.stableTriangleColorMaxStep,stableTriangleMatrixDecimals:F?.stableTriangleMatrixDecimals,stableTriangleColorFrame:M.stableTriangleColorFrame};if(mn(M.rendered,M.polygons,je))return le||(C(M),de(M,!0),X&&it()),!0}return me&&_e(M.polygons),!1}let Je={get polygons(){return en()},set polygons(F){lt(),M.polygons=F},element:w,id:p.id,get transform(){return N},remove(){Y++,w.parentNode&&w.parentNode.removeChild(w),V(M),f.delete(M),b.delete(w),j(M),D(M),it(),Ze()},setPolygons(F,X){Y++,I=X?.merge??I,U=X?.stableDom??U,M.stableDom=U,M.voxelSource=void 0,M.polygons=ne(F,I),D(M),j(M),lt(),Je.polygons=M.polygons;let le=X?.recomputeAutoCenter??!0;ht(X,le)||(Se(M),le&&it())},[hi](F,X){let le=X?.merge??I,me=X?.stableDom??U;if(!F.solidTriangles||!me||le||p.meshResolution!==void 0||M.hasBuckets||F.polygonCount!==M.polygons.length||F.vertices.length<F.polygonCount*9||M.rendered.length!==F.polygonCount)return!1;for(let he=0;he<M.rendered.length;he++){let Fe=M.rendered[he],je=M.polygons[he];if(Fe?.kind!=="triangle"||Fe.polygonIndex!==he||!je||je.vertices.length!==3||je.texture||je.material?.texture)return!1}let Re=X?.recomputeAutoCenter??!0;if(!Re){let he=M.stableTriangleColorFrame+1,Fe={doc:l,directionalLight:nt(r.directionalLight),ambientLight:r.ambientLight,textureLighting:r.textureLighting,textureQuality:r.textureQuality,textureLeafSizing:r.textureLeafSizing,textureImageRendering:r.textureImageRendering,textureBackend:r.textureBackend,textureProjection:r.textureProjection,seamBleed:r.seamBleed,solidPaintDefaults:{},optimizeStableTriangleStyle:!0,stableTriangleDebug:X?.stableTriangleDebug,stableTriangleUpdateMode:X?.stableTriangleUpdateMode,stableTriangleColorPolicy:X?.stableTriangleColorPolicy,stableTriangleColorSteps:X?.stableTriangleColorSteps,stableTriangleColorFreezeFrames:X?.stableTriangleColorFreezeFrames??0,stableTriangleColorBudget:X?.stableTriangleColorBudget,stableTriangleColorMaxAge:X?.stableTriangleColorMaxAge,stableTriangleColorMaxStep:X?.stableTriangleColorMaxStep,stableTriangleMatrixDecimals:X?.stableTriangleMatrixDecimals,stableTriangleColorFrame:he};if(pn(M.rendered,M.polygons,F,Fe))return Y++,I=le,U=me,M.stableDom=U,M.voxelSource=void 0,M.stableTriangleColorFrame=he,st=F,ft++,at=null,gt=-1,Z(M)?(C(M),de(M,!0)):re(M),!0}Y++,I=le,U=me,M.stableDom=U,M.voxelSource=void 0;let ce=F.vertices;for(let he=0;he<F.polygonCount;he++){let Fe=M.polygons[he],je=F.colors?.[he];je&&(Fe.color=je);let ke=Fe.vertices,Ge=he*9;ke[0][0]=ce[Ge],ke[0][1]=ce[Ge+1],ke[0][2]=ce[Ge+2],ke[1][0]=ce[Ge+3],ke[1][1]=ce[Ge+4],ke[1][2]=ce[Ge+5],ke[2][0]=ce[Ge+6],ke[2][1]=ce[Ge+7],ke[2][2]=ce[Ge+8]}return lt(),Je.polygons=M.polygons,ht(X,Re)},updatePolygon(F,X){let le=typeof F=="number"?F:M.polygons.indexOf(F);if(le<0&&typeof F!="number"&&st&&(le=en().indexOf(F)),le<0||le>=M.polygons.length)return;lt(),M.voxelSource=void 0,Object.assign(M.polygons[le],X);let me=Object.keys(X);Dt(M,le,me)||Se(M)},async setPolygonsChunked(F,X){let le=++Y;I=X?.merge??I,U=X?.stableDom??U,M.stableDom=U,M.voxelSource=void 0,M.polygons=ne(F,I),lt(),Je.polygons=M.polygons,_e(M.polygons);let me=X?.recomputeAutoCenter??!0;if(!await Jt(M,()=>M.disposed||le!==Y)){V(M);return}me&&it()},setTransform(F){let X=M.castShadow,le=M.receiveShadow;F.castShadow!==void 0&&(M.castShadow=!!F.castShadow),F.receiveShadow!==void 0&&(M.receiveShadow=!!F.receiveShadow),N={...N,...F};let me=fn(N);w.style.transform=me??"",ot(M,N.rotation),F.rotation!==void 0&&de(M,!0),M.castShadow!==X&&(M.voxelSource&&Se(M),Ne(M),Ze()),M.receiveShadow!==le&&(M.receiveShadow||Io(M),R(),Ee()),(F.position!==void 0||F.scale!==void 0)&&(M.castShadow||M.receiveShadow)&&(Ze(),R(),Ee())},dispose(){if(!M.disposed){M.disposed=!0,Y++,w.parentNode&&w.parentNode.removeChild(w),V(M);try{a.dispose()}catch{}f.delete(M),b.delete(w),it(),Ze()}},rebakeAtlas(){M.bakedRotation=N.rotation?[...N.rotation]:[0,0,0];let F=r.directionalLight?.direction??[.4,-.7,.59],X=Fo(F,M.bakedRotation);no(M,X)},whenTexturesReady(){return M.textureReadyPromise},getPosition(){return N.position},getRotation(){return N.rotation},getScale(){return N.scale},getPolygons(){return Je.polygons}};return M.handle=Je,Qe=M,b.set(w,M),f.add(M),Se(M),ot(M,N.rotation),it(),Ze(),M.receiveShadow&&(R(),Ee()),Je}function Qi(a){let p=!!r.autoCenter,S=r.strategies,w=r.seamBleed,$=r.textureLeafSizing,N=r.textureImageRendering,I=r.textureBackend,U=r.textureProjection,Y=r.textureLighting,ae=r.directionalLight?.direction,ne=r.shadow,K=xi(a);r={...r,...K},v.options.current=r,J(h,r);let oe=!!r.autoCenter;for(let F of f)ot(F,F.handle.transform.rotation);let ee=a.strategies!==void 0&&!$r(a.strategies,S),_e=Object.prototype.hasOwnProperty.call(a,"seamBleed")&&K.seamBleed!==w,Qe=Object.prototype.hasOwnProperty.call(a,"textureLeafSizing")&&K.textureLeafSizing!==$,M=Object.prototype.hasOwnProperty.call(a,"textureImageRendering")&&K.textureImageRendering!==N,st=Object.prototype.hasOwnProperty.call(a,"textureBackend")&&K.textureBackend!==I,ft=Object.prototype.hasOwnProperty.call(a,"textureProjection")&&K.textureProjection!==U;if(ee||_e||Qe||M||st||ft)for(let F of f)Se(F);p!==oe&&it();let gt=a.textureLighting!==void 0&&Y!==r.textureLighting,at=r.directionalLight?.direction,lt=a.directionalLight!==void 0&&!Ur(ae,at),en=r.shadow,ht=a.shadow!==void 0&&!Wr(ne,en),Je=lt||ht;if(gt){if(!ee&&!_e&&!Qe&&!M&&!st&&!ft)for(let F of f)Se(F);Ze(),R(),Ee()}else Je&&(ht&&R(),Ee());ht&&a.shadow?.lift!==ne?.lift&&Ze()}function qi(){return r}function Ki(){Q(d,r),k(h);for(let a of f)de(a)}function Ji(){let a=[];for(let p of f)a.push(p.handle);return a}function es(){return Promise.all(Array.from(f,a=>a.handle.whenTexturesReady())).then(()=>{})}function ts(a){let p=a;for(;p;){if(p instanceof HTMLElement){let S=b.get(p);if(S&&!S.disposed)return S.handle;if(p.classList.contains("polycss-mesh"))return null}p=p.parentElement}return null}function ns(){let a=Array.from(f);for(let p of a)try{p.handle.dispose()}catch{}d.parentNode&&d.parentNode.removeChild(d)}return{add:Zi,setOptions:Qi,destroy:ns,host:e,camera:t,cameraEl:d,sceneElement:h,applyCamera:Ki,getOptions:qi,meshes:Ji,whenTexturesReady:es,findMeshByElement:ts,previewBakedSolidLighting:ie,commitBakedSolidLighting:eo,clearBakedSolidLightingPreview:to}}import{createIsometricCamera as Ci}from"@layoutit/polycss-core";var Vl=32e3;function xn(e={}){let n={};e.zoom!==void 0&&(n.zoom=e.zoom),e.target!==void 0&&(n.target=e.target),e.rotX!==void 0&&(n.rotX=e.rotX),e.rotY!==void 0&&(n.rotY=e.rotY),e.distance!==void 0&&(n.distance=e.distance);let t=Ci(n),o=`${e.perspective??Vl}px`;return{get state(){return t.state},update(i){t.update(i)},getStyle(i){return t.getStyle(i)},type:"perspective",perspectiveStyle:o}}function Zt(e={}){let n={};e.zoom!==void 0&&(n.zoom=e.zoom),e.target!==void 0&&(n.target=e.target),e.rotX!==void 0&&(n.rotX=e.rotX),e.rotY!==void 0&&(n.rotY=e.rotY),e.distance!==void 0&&(n.distance=e.distance);let t=Ci(n);return{get state(){return t.state},update(o){t.update(o)},getStyle(o){return t.getStyle(o)},type:"orthographic",perspectiveStyle:"none"}}var Nl=typeof HTMLElement<"u"?HTMLElement:class{},jl=["perspective","rot-x","rot-y","zoom","directional-direction","directional-color","directional-intensity","ambient-color","ambient-intensity","texture-lighting","texture-quality","texture-leaf-sizing","texture-image-rendering","texture-backend","texture-projection","auto-center"];function ze(e){if(e==null)return;let n=parseFloat(e);return Number.isFinite(n)?n:void 0}function Gl(e){return e==="false"?!1:ze(e)}function Bo(e){if(!e)return;let n=e.split(",").map(t=>parseFloat(t.trim()));if(!(n.length!==3||n.some(t=>!Number.isFinite(t))))return[n[0],n[1],n[2]]}function $l(e){if(e==="baked"||e==="dynamic")return e}function Ul(e){return e==="auto"?"auto":ze(e)}function Wl(e){if(e==="canonical"||e==="local"||e==="raster")return e}function Yl(e){if(e==="auto"||e==="pixelated")return e}function Xl(e){if(e==="auto"||e==="atlas"||e==="image")return e}function Zl(e){if(e==="affine"||e==="projective")return e}function Ql(e){return typeof e.getCamera=="function"}var Le=class extends Nl{constructor(){super(...arguments);this._scene=null;this._implicitCamera=null}static get observedAttributes(){return[...jl]}getScene(){return this._scene}_findAncestorCamera(){let t=this.parentElement;for(;t;){if(Ql(t)){let o=t.getCamera();if(o)return o}t=t.parentElement}return null}_buildImplicitCamera(){let t=Gl(this.getAttribute("perspective")),o=ze(this.getAttribute("rot-x")),i=ze(this.getAttribute("rot-y")),r=ze(this.getAttribute("zoom")),s=ze(this.getAttribute("distance")),c=Bo(this.getAttribute("target")),l={...o!==void 0?{rotX:o}:{},...i!==void 0?{rotY:i}:{},...r!==void 0?{zoom:r}:{},...s!==void 0?{distance:s}:{},...c!==void 0?{target:c}:{}};return t===!1?Zt(l):t!==void 0?xn({...l,perspective:t}):Zt(l)}_readNonCameraOptions(){let t=this._readDirectionalLight(),o=this._readAmbientLight(),i={};i.textureLighting=$l(this.getAttribute("texture-lighting"))??"baked";let r=Ul(this.getAttribute("texture-quality"));r!==void 0&&(i.textureQuality=r),i.textureLeafSizing=Wl(this.getAttribute("texture-leaf-sizing"))??"canonical";let s=Yl(this.getAttribute("texture-image-rendering"));s!==void 0&&(i.textureImageRendering=s);let c=Xl(this.getAttribute("texture-backend"));c!==void 0&&(i.textureBackend=c);let l=Zl(this.getAttribute("texture-projection"));return l!==void 0&&(i.textureProjection=l),i.autoCenter=this.hasAttribute("auto-center"),t&&(i.directionalLight=t),o&&(i.ambientLight=o),i}_readDirectionalLight(){let t=Bo(this.getAttribute("directional-direction")),o=this.getAttribute("directional-color")||void 0,i=ze(this.getAttribute("directional-intensity"));if(!t&&!o&&i===void 0)return;let r={direction:t??[.4,-.7,.59]};return o&&(r.color=o),i!==void 0&&(r.intensity=i),r}_readAmbientLight(){let t=this.getAttribute("ambient-color")||void 0,o=ze(this.getAttribute("ambient-intensity"));if(!t&&o===void 0)return;let i={};return t&&(i.color=t),o!==void 0&&(i.intensity=o),i}connectedCallback(){if(this._scene)return;let t=this._findAncestorCamera(),o;t?(o=t,this._implicitCamera=null):(this._implicitCamera=this._buildImplicitCamera(),o=this._implicitCamera),this._scene=Si(this,{camera:o,...this._readNonCameraOptions()}),this.dispatchEvent(new CustomEvent("polycss:scene-ready",{bubbles:!1}))}disconnectedCallback(){this._scene&&(this._scene.destroy(),this._scene=null),this._implicitCamera=null}attributeChangedCallback(t,o,i){if(o!==i&&this._scene){if(this._implicitCamera&&["rot-x","rot-y","zoom","distance","target"].includes(t)){let s=ze(this.getAttribute("rot-x")),c=ze(this.getAttribute("rot-y")),l=ze(this.getAttribute("zoom")),d=ze(this.getAttribute("distance")),h=Bo(this.getAttribute("target"));s!==void 0&&this._implicitCamera.update({rotX:s}),c!==void 0&&this._implicitCamera.update({rotY:c}),l!==void 0&&this._implicitCamera.update({zoom:l}),d!==void 0&&this._implicitCamera.update({distance:d}),h!==void 0&&this._implicitCamera.update({target:h}),this._scene.applyCamera();return}this._scene.setOptions(this._readNonCameraOptions())}}};import{computeSceneBbox as ql,loadMesh as Kl}from"@layoutit/polycss-core";var Jl=typeof HTMLElement<"u"?HTMLElement:class{},ec=["src","mtl","mesh-resolution","position","scale","rotation","auto-center","cast-shadow","receive-shadow","target-size","default-color","palette","include-objects","exclude-objects"];function Qt(e){if(!e)return;let n=e.split(",").map(t=>parseFloat(t.trim()));if(!(n.length!==3||n.some(t=>!Number.isFinite(t))))return[n[0],n[1],n[2]]}function Ei(e){if(e){if(!e.includes(",")){let n=parseFloat(e);return Number.isFinite(n)?n:void 0}return Qt(e)}}function zo(e){if(!e)return;let n=e.split(",").map(t=>t.trim()).filter(t=>t.length>0);return n.length>0?n:void 0}function tc(e){let n=e.getAttribute("target-size"),t=e.getAttribute("default-color"),o=zo(e.getAttribute("palette")),i=zo(e.getAttribute("include-objects")),r=zo(e.getAttribute("exclude-objects")),s=n!==null?parseFloat(n):NaN,c={};return Number.isFinite(s)&&(c.targetSize=s),t&&(c.defaultColor=t),o&&(c.palette=o),i&&(c.includeObjects=i),r&&(c.excludeObjects=r),Object.keys(c).length>0?c:void 0}function nc(e){return e.closest("poly-scene")??null}function oc(e){if(e.length===0)return e;let n=ql(e),t=(n.min[0]+n.max[0])/2,o=(n.min[1]+n.max[1])/2,i=(n.min[2]+n.max[2])/2;if(t===0&&o===0&&i===0)return e;let r=s=>[s[0]-t,s[1]-o,s[2]-i];return e.map(s=>({...s,vertices:s.vertices.map(r),...s.textureTriangles?.length?{textureTriangles:s.textureTriangles.map(c=>({...c,vertices:c.vertices.map(r)}))}:null}))}var At=class extends Jl{constructor(){super(...arguments);this._handle=null;this._parseResult=null;this._loadToken=0}static get observedAttributes(){return[...ec]}getMeshHandle(){return this._handle}connectedCallback(){this._maybeLoad()}disconnectedCallback(){this._tearDown()}attributeChangedCallback(t,o,i){if(o!==i){if(t==="src"||t==="mtl"||t==="mesh-resolution"||t==="target-size"||t==="default-color"||t==="palette"||t==="include-objects"||t==="exclude-objects"){this._tearDown(),this._maybeLoad();return}this._handle&&this._handle.setTransform({position:Qt(this.getAttribute("position")),scale:Ei(this.getAttribute("scale")),rotation:Qt(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}this._parseResult=null}async _maybeLoad(){let t=this.getAttribute("src");if(!t)return;let o=nc(this);if(!o)return;let i=++this._loadToken,r=this.getAttribute("mtl")||void 0,c=this.getAttribute("mesh-resolution")==="lossless"?"lossless":void 0,l=tc(this),d;try{let f=r||c!==void 0||l?{...r?{mtlUrl:r}:{},...c!==void 0?{meshResolution:c}:{},...l?{objOptions:l}:{}}:void 0;d=await Kl(t,f)}catch(f){this.dispatchEvent(new CustomEvent("polycss:error",{detail:f,bubbles:!0}));return}if(i!==this._loadToken){try{d.dispose()}catch{}return}let h=o.getScene();if(!h){try{d.dispose()}catch{}return}this.hasAttribute("auto-center")&&(d={...d,polygons:oc(d.polygons)}),this._parseResult=d,this._handle=h.add(d,{position:Qt(this.getAttribute("position")),scale:Ei(this.getAttribute("scale")),rotation:Qt(this.getAttribute("rotation")),castShadow:this.hasAttribute("cast-shadow"),receiveShadow:this.hasAttribute("receive-shadow")}),this.dispatchEvent(new CustomEvent("polycss:loaded",{detail:{polygons:this._handle.polygons},bubbles:!0}))}};import{BASE_TILE as qt}from"@layoutit/polycss-core";var rc=typeof HTMLElement<"u"?HTMLElement:class{},ic=["src","width","height","position","rotation","scale","allow","loading","referrerpolicy","sandbox","title"];function Vo(e){if(!e)return;let n=e.split(",").map(t=>parseFloat(t.trim()));if(!(n.length!==3||n.some(t=>!Number.isFinite(t))))return[n[0],n[1],n[2]]}function sc(e){if(e){if(!e.includes(",")){let n=parseFloat(e);return Number.isFinite(n)?n:void 0}return Vo(e)}}function Ti(e,n){if(e===null)return n;let t=parseFloat(e);return Number.isFinite(t)?t:n}function ac(e){let n=e.closest("poly-scene");return n?n.querySelector(".polycss-scene"):null}function lc(e,n,t,o,i){let r=typeof t=="number"?t:t?.[0]??1,s=typeof t=="number"?t:t?.[1]??1,c=typeof t=="number"?t:t?.[2]??1,l=r!==1||s!==1||c!==1,d=!!n&&(!!n[0]||!!n[1]||!!n[2]),h=(e?.[1]??0)*qt,v=(e?.[0]??0)*qt,f=(e?.[2]??0)*qt,b=[];return b.push(`translate3d(${h}px, ${v}px, ${f}px)`),d&&(n[0]&&b.push(`rotateY(${-n[0]}deg)`),n[1]&&b.push(`rotateX(${-n[1]}deg)`),n[2]&&b.push(`rotateZ(${-n[2]}deg)`)),l&&b.push(`scale3d(${r}, ${s}, ${c})`),b.push(`translate(${-o/2}px, ${-i/2}px)`),b.join(" ")}var vn=class extends rc{constructor(){super(...arguments);this._wrapper=null;this._iframe=null}static get observedAttributes(){return[...ic]}getIframeElement(){return this._iframe}connectedCallback(){this._mount()}disconnectedCallback(){this._teardown()}attributeChangedCallback(t,o,i){if(o!==i&&!(!this._wrapper||!this._iframe)){if(t==="src"){this._iframe.src=this.getAttribute("src")??"";return}if(t==="allow"||t==="loading"||t==="referrerpolicy"||t==="sandbox"||t==="title"){let r=this.getAttribute(t);r===null?this._iframe.removeAttribute(t):this._iframe.setAttribute(t,r);return}this._applyGeometry()}}_mount(){let t=ac(this);if(!t)return;let o=this.ownerDocument;if(!o)return;let i=o.createElement("div");i.className="polycss-iframe",i.style.position="absolute",i.style.left="0",i.style.top="0",i.style.transformOrigin="0 0",i.style.transformStyle="preserve-3d";let r=o.createElement("iframe");r.style.display="block",r.style.border="0",r.style.background="#000";let s=this.getAttribute("src");s&&(r.src=s);let c=this.getAttribute("allow");c&&r.setAttribute("allow",c);for(let l of["loading","referrerpolicy","sandbox","title"]){let d=this.getAttribute(l);d!==null&&r.setAttribute(l,d)}i.appendChild(r),t.appendChild(i),this._wrapper=i,this._iframe=r,this._applyGeometry()}_applyGeometry(){if(!this._wrapper||!this._iframe)return;let t=Ti(this.getAttribute("width"),16),o=Ti(this.getAttribute("height"),9),i=t*qt,r=o*qt;this._iframe.style.width=`${i}px`,this._iframe.style.height=`${r}px`;let s=Vo(this.getAttribute("position")),c=Vo(this.getAttribute("rotation")),l=sc(this.getAttribute("scale"));this._wrapper.style.transform=lc(s,c,l,i,r)}_teardown(){this._wrapper?.parentNode&&this._wrapper.parentNode.removeChild(this._wrapper),this._wrapper=null,this._iframe=null}};var cc=typeof HTMLElement<"u"?HTMLElement:class{},uc=["vertices","color","texture","uvs","position","scale","rotation"];function Ai(e){if(!e)return null;try{return JSON.parse(e)}catch{return null}}function No(e){if(!e)return;let n=e.split(",").map(t=>parseFloat(t.trim()));if(!(n.length!==3||n.some(t=>!Number.isFinite(t))))return[n[0],n[1],n[2]]}function dc(e){if(e){if(!e.includes(",")){let n=parseFloat(e);return Number.isFinite(n)?n:void 0}return No(e)}}function pc(e){return e.closest("poly-scene")??null}var Pn=class extends cc{constructor(){super(...arguments);this._handle=null}static get observedAttributes(){return[...uc]}connectedCallback(){this._mount()}disconnectedCallback(){this._tearDown()}attributeChangedCallback(t,o,i){o!==i&&(this._tearDown(),this.isConnected&&this._mount())}_tearDown(){if(this._handle){try{this._handle.dispose()}catch{}this._handle=null}}_mount(){let t=pc(this);if(!t)return;let o=t.getScene();if(!o)return;let i=Ai(this.getAttribute("vertices"));if(!i||!Array.isArray(i)||i.length<3)return;let r=this.getAttribute("color")||void 0,s=this.getAttribute("texture")||void 0,c=Ai(this.getAttribute("uvs"))??void 0,l={};for(let v of Array.from(this.attributes))v.name.startsWith("data-")&&(l[v.name.slice(5)]=v.value);let h={polygons:[{vertices:i,...r!==void 0?{color:r}:{},...s!==void 0?{texture:s}:{},...c!==void 0?{uvs:c}:{},...Object.keys(l).length>0?{data:l}:{}}],objectUrls:[],warnings:[],dispose:()=>{}};this._handle=o.add(h,{position:No(this.getAttribute("position")),scale:dc(this.getAttribute("scale")),rotation:No(this.getAttribute("rotation"))})}};import{axesHelperPolygons as mc}from"@layoutit/polycss-core";var fc=typeof HTMLElement<"u"?HTMLElement:class{},gc=["size","thickness","negative","x-color","y-color","z-color"];function hc(e){return e.closest("poly-scene")??null}function wi(e){if(e==null)return;let n=parseFloat(e);return Number.isFinite(n)?n:void 0}var Sn=class extends fc{constructor(){super(...arguments);this._handle=null}static get observedAttributes(){return[...gc]}connectedCallback(){this._mount()}disconnectedCallback(){this._tearDown()}attributeChangedCallback(t,o,i){o!==i&&this._handle&&this._remount()}_polygons(){return mc({size:wi(this.getAttribute("size")),thickness:wi(this.getAttribute("thickness")),negative:this.hasAttribute("negative"),xColor:this.getAttribute("x-color")??void 0,yColor:this.getAttribute("y-color")??void 0,zColor:this.getAttribute("z-color")??void 0})}_mount(){let t=hc(this);if(!t)return;let o=t.getScene();if(!o)return;let i={polygons:this._polygons(),objectUrls:[],dispose:()=>{},warnings:[]};this._handle=o.add(i,{excludeFromAutoCenter:!0,merge:!1})}_remount(){this._tearDown(),this._mount()}_tearDown(){if(this._handle){try{this._handle.dispose()}catch{}this._handle=null}}};import{octahedronPolygons as yc}from"@layoutit/polycss-core";var bc=typeof HTMLElement<"u"?HTMLElement:class{},xc=["direction","target","distance","size","color"],vc=5,Pc=.35,Sc="#ffd54a";function Cc(e){return e.closest("poly-scene")??null}function Mi(e){if(!e)return;let n=e.split(",").map(t=>parseFloat(t.trim()));if(!(n.length!==3||n.some(t=>!Number.isFinite(t))))return[n[0],n[1],n[2]]}function Li(e,n){if(e==null)return n;let t=parseFloat(e);return Number.isFinite(t)?t:n}var Cn=class extends bc{constructor(){super(...arguments);this._handle=null}static get observedAttributes(){return[...xc]}connectedCallback(){this._mount()}disconnectedCallback(){this._tearDown()}attributeChangedCallback(t,o,i){if(o!==i&&this._handle){if(t==="size"||t==="color"){this._remount();return}this._handle.setTransform({position:this._meshPosition()})}}_meshPosition(){let t=Mi(this.getAttribute("direction"));if(!t)return;let o=Mi(this.getAttribute("target"))??[0,0,0],i=Li(this.getAttribute("distance"),vc),[r,s,c]=t,l=Math.hypot(r,s,c)||1;return[o[0]+r/l*i,o[1]+s/l*i,o[2]+c/l*i]}_mount(){let t=Cc(this);if(!t)return;let o=t.getScene();if(!o)return;let i=Li(this.getAttribute("size"),Pc),r=this.getAttribute("color")??Sc,s={polygons:yc({center:[0,0,0],size:i,color:r}),objectUrls:[],dispose:()=>{},warnings:[]};this._handle=o.add(s,{position:this._meshPosition(),excludeFromAutoCenter:!0,merge:!1})}_remount(){this._tearDown(),this._mount()}_tearDown(){if(this._handle){try{this._handle.dispose()}catch{}this._handle=null}}};import{BASE_TILE as Ec}from"@layoutit/polycss-core";var En={drag:!0,wheel:!0,dolly:!1,invert:!1,minZoom:.1,maxZoom:10,minDistance:0,maxDistance:1/0,animate:!1};function wt(e,n){let t;return n.animate===!1?t=!1:n.animate?t={speed:n.animate.speed??.3,axis:n.animate.axis??"y",pauseOnInteraction:n.animate.pauseOnInteraction??!0}:t=e.animate,{drag:n.drag??e.drag,wheel:n.wheel??e.wheel,dolly:n.dolly??e.dolly,invert:n.invert??e.invert,minZoom:n.minZoom??e.minZoom,maxZoom:n.maxZoom??e.maxZoom,minDistance:n.minDistance??e.minDistance,maxDistance:n.maxDistance??e.maxDistance,animate:t}}function Kt(e){return e===!0?-1:e===!1?1:e}function Mt(){let e=[],n=[],t=[];function o(s){return s==="change"?e:s==="start"?n:t}function i(s){if(e.length===0)return;let c={type:"change",camera:s()},l=e.slice();for(let d of l)try{d(c)}catch(h){console.error("[polycss] controls 'change' listener threw:",h)}}function r(s,c){let l=s==="start"?n:t;if(l.length===0)return;let d={type:s,camera:c()},h=l.slice();for(let v of h)try{v(d)}catch(f){console.error(`[polycss] controls '${s}' listener threw:`,f)}}return{changeListeners:e,startListeners:n,endListeners:t,listenerArray:o,emitChange:i,emitInteraction:r}}function Lt(e){return()=>{let n=e.camera.state,t=n.target??[0,0,0];return{rotX:n.rotX??0,rotY:n.rotY??0,zoom:n.zoom??1,target:[t[0],t[1],t[2]],distance:n.distance??0}}}function Tn(e,n,t,o,i,r){let s=!1,c=null;return{onWheel:h=>{let v=n();if(!v.wheel||t())return;h.preventDefault();let f=h.deltaMode===1?16:h.deltaMode===2?100:1,b=h.deltaY*f;h.ctrlKey?b*=10:b*=3;let y=e.camera.state;if(v.dolly){let P=y.distance??0,x=Math.max(v.minDistance,Math.min(v.maxDistance,P+b*.05));e.camera.update({distance:x})}else{let P=Math.exp(-b*513e-6),x=y.zoom??1,E=Math.max(v.minZoom,Math.min(v.maxZoom,x*P));e.camera.update({zoom:E})}e.applyCamera(),s||(s=!0,r("start",o)),i(o),c!==null&&clearTimeout(c),c=setTimeout(()=>{c=null,s=!1,r("end",o)},150)},teardown:()=>{c!==null&&(clearTimeout(c),c=null),s=!1}}}function An(e,n,t,o,i,r,s){let c=null,l=0,d=b=>{if(c===null||o())return;let y=t();if(!y.animate){c=null;return}if(i())l=b;else{let P=Math.min(50,l?b-l:16.67);l=b;let x=y.animate.speed*(P/16.67),E=n.camera.state;if(y.animate.axis==="x"){let O=(((E.rotX??65)+x)%360+360)%360;n.camera.update({rotX:O})}else{let O=(((E.rotY??45)+x)%360+360)%360;n.camera.update({rotY:O})}n.applyCamera(),s(r)}c=e.requestAnimationFrame(d)};return{start:()=>{c!==null||!t().animate||o()||(l=0,c=e.requestAnimationFrame(d))},stop:()=>{c!==null&&(e.cancelAnimationFrame(c),c=null)},isRunning:()=>c!==null}}function _i(e,n={}){let t=wt(En,n),o=e.host,i=o.ownerDocument?.defaultView??globalThis,r=null,s={x:0,y:0},c=!1,l=!1,d=Mt(),h=Lt(e),{changeListeners:v,startListeners:f,endListeners:b,listenerArray:y,emitChange:P,emitInteraction:x}=d,E=An(i,e,()=>t,()=>l,()=>c,h,P),O=u=>{if(!(!t.drag||l)&&r===null&&u.isPrimary!==!1){u.preventDefault(),r=u.pointerId,s={x:u.clientX,y:u.clientY},o.style.cursor="grabbing";try{u.target.setPointerCapture(u.pointerId)}catch{}t.animate&&t.animate.pauseOnInteraction&&(c=!0),x("start",h)}},R=u=>{if(r===null||u.pointerId!==r||!t.drag||l)return;u.preventDefault();let m=u.clientX-s.x,L=u.clientY-s.y;s={x:u.clientX,y:u.clientY};let _=Kt(t.invert),H=m/4*_,q=L/4*_,C=e.camera.state;if(u.shiftKey){let W=C.rotX??65,Z=C.rotY??45,re=Math.max(.01,C.zoom??1),fe=Math.cos(W*Math.PI/180),de=fe>=0?Math.max(.1,fe):Math.min(-.1,fe),pe=Math.cos(Z*Math.PI/180),Ce=Math.sin(Z*Math.PI/180),be=re*Ec,Ae=(m*Ce-L*pe/de)/be,Ve=-(m*pe+L*Ce/de)/be,Xe=C.target??[0,0,0];e.camera.update({target:[Xe[0]+Ae,Xe[1]+Ve,Xe[2]]})}else{let W=Math.max(0,Math.min(89,(C.rotX??65)-q)),Z=(((C.rotY??45)-H)%360+360)%360;e.camera.update({rotX:W,rotY:Z})}e.applyCamera(),P(h)},j=u=>{if(r===u.pointerId){r=null,o.style.cursor=t.drag&&!l?"grab":"";try{u.target.releasePointerCapture(u.pointerId)}catch{}t.animate&&t.animate.pauseOnInteraction&&(c=!1),x("end",h)}},D=Tn(e,()=>t,()=>l,h,P,x);function Q(){o.addEventListener("pointerdown",O),o.addEventListener("pointermove",R),o.addEventListener("pointerup",j),o.addEventListener("pointercancel",j),o.addEventListener("wheel",D.onWheel,{passive:!1}),o.style.cursor=t.drag?"grab":"",o.style.touchAction="none",o.style.userSelect="none"}function J(){o.removeEventListener("pointerdown",O),o.removeEventListener("pointermove",R),o.removeEventListener("pointerup",j),o.removeEventListener("pointercancel",j),o.removeEventListener("wheel",D.onWheel),o.style.cursor="",o.style.touchAction="",o.style.userSelect="",D.teardown()}Q(),E.start();function k(u){let m=!!t.animate;t=wt(t,u),!l&&r===null&&(o.style.cursor=t.drag?"grab":"");let L=!!t.animate;m&&!L?E.stop():!m&&L&&E.start()}function V(){l&&(l=!1,Q(),E.start())}function z(){l||(l=!0,J(),E.stop(),r=null,c=!1,D.teardown())}function B(){z(),v.length=0,f.length=0,b.length=0}function A(u,m){let L=y(u);L.includes(m)||L.push(m)}function g(u,m){let L=y(u),_=L.indexOf(m);_>=0&&L.splice(_,1)}function T(u,m){return y(u).includes(m)}return{update:k,resume:V,pause:z,destroy:B,addEventListener:A,removeEventListener:g,hasEventListener:T}}function te(e){if(e==null)return;let n=parseFloat(e);return Number.isFinite(n)?n:void 0}function wn(e){if(!e)return;let n=e.split(",").map(t=>parseFloat(t.trim()));if(!(n.length!==3||n.some(t=>!Number.isFinite(t))))return[n[0],n[1],n[2]]}function Te(e){if(e!==null)return!(e==="false"||e==="0")}function Mn(e){if(e===null)return;if(e==="true")return!0;if(e==="false")return!1;let n=parseFloat(e);return Number.isFinite(n)?n:!0}function Ln(e){if(e==="x"||e==="y")return e}var Tc=typeof HTMLElement<"u"?HTMLElement:class{},Ac=["drag","wheel","dolly","min-distance","max-distance","invert","zoom-min","zoom-max","animate-speed","animate-axis","animate-pause-on-interaction"],_n=class extends Tc{constructor(){super(...arguments);this._controls=null}static get observedAttributes(){return[...Ac]}getControls(){return this._controls}_readAnimate(){let t=te(this.getAttribute("animate-speed")),o=Ln(this.getAttribute("animate-axis")),i=this.getAttribute("animate-pause-on-interaction");if(this.hasAttribute("animate-speed")||this.hasAttribute("animate-axis")||this.hasAttribute("animate-pause-on-interaction"))return{...t!==void 0?{speed:t}:{},...o!==void 0?{axis:o}:{},...i!==null?{pauseOnInteraction:Te(i)}:{}}}_readOptions(){let t={},o=Te(this.getAttribute("drag"));o!==void 0&&(t.drag=o);let i=Te(this.getAttribute("wheel"));i!==void 0&&(t.wheel=i),this.hasAttribute("dolly")&&(t.dolly=!0);let r=te(this.getAttribute("min-distance"));r!==void 0&&(t.minDistance=r);let s=te(this.getAttribute("max-distance"));s!==void 0&&(t.maxDistance=s);let c=Mn(this.getAttribute("invert"));c!==void 0&&(t.invert=c);let l=te(this.getAttribute("zoom-min")),d=te(this.getAttribute("zoom-max"));return l!==void 0&&(t.minZoom=l),d!==void 0&&(t.maxZoom=d),t.animate=this._readAnimate()??!1,t}_findScene(){let t=this.parentNode;for(;t;){if(t instanceof Le)return t;t=t.parentNode}return null}_attach(){if(this._controls)return;let t=this._findScene(),o=t?.getScene();if(!o){if(t){let i=()=>{t.removeEventListener("polycss:scene-ready",i),this._attach()};t.addEventListener("polycss:scene-ready",i)}return}this._controls=_i(o,this._readOptions())}connectedCallback(){this._attach()}disconnectedCallback(){this._controls&&(this._controls.destroy(),this._controls=null)}attributeChangedCallback(t,o,i){o!==i&&this._controls&&this._controls.update(this._readOptions())}};import{BASE_TILE as wc}from"@layoutit/polycss-core";function Ri(e,n={}){let t=wt(En,n),o=e.host,i=o.ownerDocument?.defaultView??globalThis,r=null,s={x:0,y:0},c=!1,l=!1,d=!1,h={x:0,y:0},v=Mt(),f=Lt(e),{changeListeners:b,startListeners:y,endListeners:P,listenerArray:x,emitChange:E,emitInteraction:O}=v,R=An(i,e,()=>t,()=>l,()=>c,f,E),j=C=>{if(!(!t.drag||l)&&r===null&&C.isPrimary!==!1){C.preventDefault(),r=C.pointerId,s={x:C.clientX,y:C.clientY},o.style.cursor="grabbing";try{C.target.setPointerCapture(C.pointerId)}catch{}t.animate&&t.animate.pauseOnInteraction&&(c=!0),O("start",f)}},D=C=>{if(r===null||C.pointerId!==r||!t.drag||l)return;C.preventDefault();let W=C.clientX-s.x,Z=C.clientY-s.y;s={x:C.clientX,y:C.clientY};let re=e.camera.state;if(C.shiftKey){let fe=Kt(t.invert),de=W/4*fe,pe=Z/4*fe,Ce=(re.rotX??65)-pe,be=(((re.rotY??45)-de)%360+360)%360;e.camera.update({rotX:Ce,rotY:be})}else{let fe=re.rotX??65,de=re.rotY??45,pe=Math.max(.01,re.zoom??1),Ce=Math.cos(fe*Math.PI/180),be=Ce>=0?Math.max(.1,Ce):Math.min(-.1,Ce),Ae=Math.cos(de*Math.PI/180),Ve=Math.sin(de*Math.PI/180),Xe=pe*wc,ot=(W*Ve-Z*Ae/be)/Xe,mt=-(W*Ae+Z*Ve/be)/Xe,rt=re.target??[0,0,0];e.camera.update({target:[rt[0]+ot,rt[1]+mt,rt[2]]})}e.applyCamera(),E(f)},Q=C=>{if(r===C.pointerId){r=null,o.style.cursor=t.drag&&!l?"grab":"";try{C.target.releasePointerCapture(C.pointerId)}catch{}t.animate&&t.animate.pauseOnInteraction&&(c=!1),O("end",f)}},J=C=>{C.preventDefault()},k=C=>{C.button===2&&(d=!0,h={x:C.clientX,y:C.clientY},t.animate&&t.animate.pauseOnInteraction&&(c=!0),O("start",f))},V=C=>{if(!d||!t.drag)return;let W=C.clientX-h.x,Z=C.clientY-h.y;h={x:C.clientX,y:C.clientY};let re=Kt(t.invert),fe=W/4*re,de=Z/4*re,pe=e.camera.state,Ce=(pe.rotX??65)-de,be=(((pe.rotY??45)-fe)%360+360)%360;e.camera.update({rotX:Ce,rotY:be}),e.applyCamera(),E(f)},z=C=>{C.button===2&&d&&(d=!1,O("end",f))},B=Tn(e,()=>t,()=>l,f,E,O);function A(){o.addEventListener("pointerdown",j),o.addEventListener("pointermove",D),o.addEventListener("pointerup",Q),o.addEventListener("pointercancel",Q),o.addEventListener("wheel",B.onWheel,{passive:!1}),o.addEventListener("contextmenu",J),o.addEventListener("mousedown",k),o.addEventListener("mousemove",V),o.addEventListener("mouseup",z),o.style.cursor=t.drag?"grab":"",o.style.touchAction="none",o.style.userSelect="none"}function g(){o.removeEventListener("pointerdown",j),o.removeEventListener("pointermove",D),o.removeEventListener("pointerup",Q),o.removeEventListener("pointercancel",Q),o.removeEventListener("wheel",B.onWheel),o.removeEventListener("contextmenu",J),o.removeEventListener("mousedown",k),o.removeEventListener("mousemove",V),o.removeEventListener("mouseup",z),o.style.cursor="",o.style.touchAction="",o.style.userSelect="",B.teardown()}A(),R.start();function T(C){let W=!!t.animate;t=wt(t,C),!l&&r===null&&(o.style.cursor=t.drag?"grab":"");let Z=!!t.animate;W&&!Z?R.stop():!W&&Z&&R.start()}function u(){l&&(l=!1,A(),R.start())}function m(){l||(l=!0,g(),R.stop(),r=null,c=!1,d=!1,B.teardown())}function L(){m(),b.length=0,y.length=0,P.length=0}function _(C,W){let Z=x(C);Z.includes(W)||Z.push(W)}function H(C,W){let Z=x(C),re=Z.indexOf(W);re>=0&&Z.splice(re,1)}function q(C,W){return x(C).includes(W)}return{update:T,resume:u,pause:m,destroy:L,addEventListener:_,removeEventListener:H,hasEventListener:q}}var Mc=typeof HTMLElement<"u"?HTMLElement:class{},Lc=["drag","wheel","dolly","min-distance","max-distance","invert","zoom-min","zoom-max","animate-speed","animate-axis","animate-pause-on-interaction"],Rn=class extends Mc{constructor(){super(...arguments);this._controls=null}static get observedAttributes(){return[...Lc]}_readAnimate(){let t=te(this.getAttribute("animate-speed")),o=Ln(this.getAttribute("animate-axis")),i=this.getAttribute("animate-pause-on-interaction");if(this.hasAttribute("animate-speed")||this.hasAttribute("animate-axis")||this.hasAttribute("animate-pause-on-interaction"))return{...t!==void 0?{speed:t}:{},...o!==void 0?{axis:o}:{},...i!==null?{pauseOnInteraction:Te(i)}:{}}}_readOptions(){let t={},o=Te(this.getAttribute("drag"));o!==void 0&&(t.drag=o);let i=Te(this.getAttribute("wheel"));i!==void 0&&(t.wheel=i),this.hasAttribute("dolly")&&(t.dolly=!0);let r=te(this.getAttribute("min-distance"));r!==void 0&&(t.minDistance=r);let s=te(this.getAttribute("max-distance"));s!==void 0&&(t.maxDistance=s);let c=Mn(this.getAttribute("invert"));c!==void 0&&(t.invert=c);let l=te(this.getAttribute("zoom-min")),d=te(this.getAttribute("zoom-max"));return l!==void 0&&(t.minZoom=l),d!==void 0&&(t.maxZoom=d),t.animate=this._readAnimate()??!1,t}_findScene(){let t=this.parentNode;for(;t;){if(t instanceof Le)return t;t=t.parentNode}return null}_attach(){if(this._controls)return;let t=this._findScene(),o=t?.getScene();if(!o){if(t){let i=()=>{t.removeEventListener("polycss:scene-ready",i),this._attach()};t.addEventListener("polycss:scene-ready",i)}return}this._controls=Ri(o,this._readOptions())}connectedCallback(){this._attach()}disconnectedCallback(){this._controls&&(this._controls.destroy(),this._controls=null)}attributeChangedCallback(t,o,i){o!==i&&this._controls&&this._controls.update(this._readOptions())}};import{BASE_TILE as _c}from"@layoutit/polycss-core";var Rc={enabled:!0,lookEnabled:!0,moveEnabled:!0,jumpEnabled:!0,crouchEnabled:!0,lookSensitivity:.15,invertY:!1,moveSpeed:5,jumpVelocity:7,gravity:18,eyeHeight:1.7,crouchHeight:1,groundZ:0,minPitch:5,maxPitch:175};function ki(e,n){return{enabled:n.enabled??e.enabled,lookEnabled:n.lookEnabled??e.lookEnabled,moveEnabled:n.moveEnabled??e.moveEnabled,jumpEnabled:n.jumpEnabled??e.jumpEnabled,crouchEnabled:n.crouchEnabled??e.crouchEnabled,lookSensitivity:n.lookSensitivity??e.lookSensitivity,invertY:n.invertY??e.invertY,moveSpeed:n.moveSpeed??e.moveSpeed,jumpVelocity:n.jumpVelocity??e.jumpVelocity,gravity:n.gravity??e.gravity,eyeHeight:n.eyeHeight??e.eyeHeight,crouchHeight:n.crouchHeight??e.crouchHeight,groundZ:n.groundZ??e.groundZ,minPitch:n.minPitch??e.minPitch,maxPitch:n.maxPitch??e.maxPitch}}var Di=new Set(["KeyW","ArrowUp"]),Oi=new Set(["KeyS","ArrowDown"]),Ii=new Set(["KeyA","ArrowLeft"]),Hi=new Set(["KeyD","ArrowRight"]),Fi=new Set(["Space"]),jo=new Set(["ControlLeft","ControlRight"]);function Bi(e,n={}){let t=ki(Rc,n),o=e.host,i=e.cameraEl,r=o.ownerDocument??document,s=r.defaultView??globalThis,c=Mt(),l=Lt(e),{changeListeners:d,startListeners:h,endListeners:v,listenerArray:f,emitChange:b,emitInteraction:y}=c,P=new Set,x=!1,E=!1,O=0,R=0,j=!1,D=[0,0,t.groundZ+t.eyeHeight];function Q(G,ie){let se=G*Math.PI/180,we=ie*Math.PI/180;return[-Math.sin(se)*Math.cos(we),-Math.sin(se)*Math.sin(we),-Math.cos(se)]}function J(){let G=e.camera.perspectiveStyle,ie=G==="none"?0:parseFloat(G);return(Number.isFinite(ie)&&ie>0?ie:2e3)/_c}function k(){let G=e.camera.state,ie=Q(G.rotX??90,G.rotY??0),se=J();return[D[0]+ie[0]*se,D[1]+ie[1]*se,D[2]+ie[2]*se]}function V(){let G=k();e.camera.update({target:G}),e.applyCamera()}function z(){let G=e.camera.state.target??[0,0,0];D=[G[0],G[1],t.groundZ+t.eyeHeight],V()}let B=()=>{if(!(!t.enabled||!t.lookEnabled||E||x))try{o.requestPointerLock()}catch{}},A=()=>{let G=r.pointerLockElement===o;G!==x&&(x=G,x?(j=!0,y("start",l)):j&&(j=!1,y("end",l)))},g=G=>{if(!x||!t.enabled||!t.lookEnabled||E)return;let ie=G.movementX??0,se=G.movementY??0;if(ie===0&&se===0)return;let we=e.camera.state,Dt=t.lookSensitivity,Ne=t.invertY?-1:1,Ee=(((we.rotY??0)-ie*Dt)%360+360)%360,xe=(we.rotX??90)-se*Dt*Ne;xe<t.minPitch?xe=t.minPitch:xe>t.maxPitch&&(xe=t.maxPitch);let Ie=Q(xe,Ee),He=J(),Se=[D[0]+Ie[0]*He,D[1]+Ie[1]*He,D[2]+Ie[2]*He];e.camera.update({rotX:xe,rotY:Ee,target:Se}),e.applyCamera(),b(l)},T=G=>Di.has(G)||Oi.has(G)||Ii.has(G)||Hi.has(G)||Fi.has(G)||jo.has(G),u=G=>{if(!(!t.enabled||E)&&T(G.code)&&!(!x&&!t.moveEnabled)){if(Fi.has(G.code)){if(!t.jumpEnabled)return;G.preventDefault(),!P.has(G.code)&&O===0&&R===0&&(O=t.jumpVelocity),P.add(G.code);return}jo.has(G.code)&&!t.crouchEnabled||!t.moveEnabled&&!jo.has(G.code)||(G.preventDefault(),P.add(G.code))}},m=G=>{T(G.code)&&P.delete(G.code)},L=()=>{P.clear()},_=null,H=0,q=.05,C=G=>{if(_===null||E)return;let ie=Math.min(q,H?(G-H)/1e3:.0167);if(H=G,t.enabled){let se=!1,we=e.camera.state;if(t.moveEnabled){let xe=0,Ie=0;for(let He of P)Di.has(He)?xe+=1:Oi.has(He)?xe-=1:Hi.has(He)?Ie+=1:Ii.has(He)&&(Ie-=1);if(xe!==0||Ie!==0){let Se=(we.rotY??0)*Math.PI/180,Ot=-Math.cos(Se),no=-Math.sin(Se),oo=-Math.sin(Se),ro=Math.cos(Se),Ze=Math.hypot(xe,Ie)||1,Jt=t.moveSpeed*ie;D[0]+=(Ot*xe+oo*Ie)/Ze*Jt,D[1]+=(no*xe+ro*Ie)/Ze*Jt,se=!0}}let Ne=t.crouchEnabled&&(P.has("ControlLeft")||P.has("ControlRight"))?t.crouchHeight:t.eyeHeight;t.jumpEnabled&&(O!==0||R>0)?(O-=t.gravity*ie,R+=O*ie,R<=0&&(R=0,O=0)):t.jumpEnabled||(R=0,O=0);let Ee=t.groundZ+Ne+R;if(Math.abs(D[2]-Ee)>1e-4&&(D[2]=Ee,se=!0),se){let xe=k();e.camera.update({target:xe}),e.applyCamera(),b(l)}}_=s.requestAnimationFrame(C)};function W(){_!==null||E||(H=0,_=s.requestAnimationFrame(C))}function Z(){_!==null&&(s.cancelAnimationFrame(_),_=null)}function re(){let ie=i.ownerDocument?.defaultView?.getComputedStyle(i).perspective??"",se=parseFloat(ie),we=Number.isFinite(se)&&se>0?se:2e3;i.style.setProperty("--polycss-fpv-perspective",`${we}px`),i.classList.add("polycss-fpv-host")}function fe(){i.classList.remove("polycss-fpv-host"),i.style.removeProperty("--polycss-fpv-perspective")}function de(){o.addEventListener("click",B),r.addEventListener("pointerlockchange",A),r.addEventListener("mousemove",g),s.addEventListener("keydown",u),s.addEventListener("keyup",m),s.addEventListener("blur",L),o.style.cursor=t.lookEnabled?"crosshair":"",re()}function pe(){if(o.removeEventListener("click",B),r.removeEventListener("pointerlockchange",A),r.removeEventListener("mousemove",g),s.removeEventListener("keydown",u),s.removeEventListener("keyup",m),s.removeEventListener("blur",L),o.style.cursor="",P.clear(),x)try{r.exitPointerLock()}catch{}fe()}z(),de(),W();function Ce(G){let ie=t.eyeHeight,se=t.groundZ;t=ki(t,G),E||(o.style.cursor=t.lookEnabled?"crosshair":""),(t.eyeHeight!==ie||t.groundZ!==se)&&(D[2]=t.groundZ+t.eyeHeight,V(),b(l))}function be(){E&&(E=!1,de(),W())}function Ae(){E||(E=!0,pe(),Z(),j&&(j=!1,y("end",l)))}function Ve(){Ae(),d.length=0,h.length=0,v.length=0}function Xe(){if(!(!t.enabled||!t.lookEnabled||E))try{o.requestPointerLock()}catch{}}function ot(){if(x)try{r.exitPointerLock()}catch{}}function mt(){return x}function rt(G,ie){let se=f(G);se.includes(ie)||se.push(ie)}function Kn(G,ie){let se=f(G),we=se.indexOf(ie);we>=0&&se.splice(we,1)}function Jn(G,ie){return f(G).includes(ie)}function eo(){return[D[0],D[1],D[2]]}function to(G){D[0]=G[0],D[1]=G[1],D[2]=G[2],V(),b(l)}return{update:Ce,resume:be,pause:Ae,destroy:Ve,lock:Xe,unlock:ot,isLocked:mt,getOrigin:eo,setOrigin:to,addEventListener:rt,removeEventListener:Kn,hasEventListener:Jn}}var kc=typeof HTMLElement<"u"?HTMLElement:class{},Dc=["enabled","look-enabled","move-enabled","jump-enabled","crouch-enabled","look-sensitivity","invert-y","move-speed","jump-velocity","gravity","eye-height","crouch-height","ground-z","min-pitch","max-pitch"],kn=class extends kc{constructor(){super(...arguments);this._controls=null}static get observedAttributes(){return[...Dc]}_readOptions(){let t={},o=Te(this.getAttribute("enabled"));o!==void 0&&(t.enabled=o);let i=Te(this.getAttribute("look-enabled"));i!==void 0&&(t.lookEnabled=i);let r=Te(this.getAttribute("move-enabled"));r!==void 0&&(t.moveEnabled=r);let s=Te(this.getAttribute("jump-enabled"));s!==void 0&&(t.jumpEnabled=s);let c=Te(this.getAttribute("crouch-enabled"));c!==void 0&&(t.crouchEnabled=c);let l=te(this.getAttribute("look-sensitivity"));if(l!==void 0&&(t.lookSensitivity=l),this.hasAttribute("invert-y")){let E=Te(this.getAttribute("invert-y"));E!==void 0&&(t.invertY=E)}let d=te(this.getAttribute("move-speed"));d!==void 0&&(t.moveSpeed=d);let h=te(this.getAttribute("jump-velocity"));h!==void 0&&(t.jumpVelocity=h);let v=te(this.getAttribute("gravity"));v!==void 0&&(t.gravity=v);let f=te(this.getAttribute("eye-height"));f!==void 0&&(t.eyeHeight=f);let b=te(this.getAttribute("crouch-height"));b!==void 0&&(t.crouchHeight=b);let y=te(this.getAttribute("ground-z"));y!==void 0&&(t.groundZ=y);let P=te(this.getAttribute("min-pitch"));P!==void 0&&(t.minPitch=P);let x=te(this.getAttribute("max-pitch"));return x!==void 0&&(t.maxPitch=x),t}_findScene(){let t=this.parentNode;for(;t;){if(t instanceof Le)return t;t=t.parentNode}return null}_attach(){if(this._controls)return;let t=this._findScene(),o=t?.getScene();if(!o){if(t){let i=()=>{t.removeEventListener("polycss:scene-ready",i),this._attach()};t.addEventListener("polycss:scene-ready",i)}return}this._controls=Bi(o,this._readOptions())}connectedCallback(){this._attach()}disconnectedCallback(){this._controls&&(this._controls.destroy(),this._controls=null)}attributeChangedCallback(t,o,i){o!==i&&this._controls&&this._controls.update(this._readOptions())}};var Oc=typeof HTMLElement<"u"?HTMLElement:class{},Ic=["perspective","zoom","rot-x","rot-y","target","distance"],Dn=class extends Oc{constructor(){super(...arguments);this._camera=null;this._wrapper=null}static get observedAttributes(){return[...Ic]}getCamera(){return this._camera}_readOptions(){return{perspective:te(this.getAttribute("perspective")),zoom:te(this.getAttribute("zoom")),rotX:te(this.getAttribute("rot-x")),rotY:te(this.getAttribute("rot-y")),target:wn(this.getAttribute("target")),distance:te(this.getAttribute("distance"))}}_mount(){if(this._camera)return;let t=this._readOptions();for(this._camera=xn(t),this._wrapper=this.ownerDocument.createElement("div"),this._wrapper.className="polycss-camera",this._wrapper.style.perspective=this._camera.perspectiveStyle;this.firstChild;)this._wrapper.appendChild(this.firstChild);this.appendChild(this._wrapper),this.dispatchEvent(new CustomEvent("polycss:camera-ready",{bubbles:!1}))}_teardown(){if(this._wrapper){for(;this._wrapper.firstChild;)this.insertBefore(this._wrapper.firstChild,this._wrapper);this._wrapper.parentNode&&this._wrapper.parentNode.removeChild(this._wrapper),this._wrapper=null}this._camera=null}connectedCallback(){this._mount()}disconnectedCallback(){this._teardown()}attributeChangedCallback(t,o,i){if(o===i||!this._camera||!this._wrapper)return;let r=this._readOptions();if(t==="perspective"){let l=r.perspective!==void 0?`${r.perspective}px`:"32000px";this._wrapper.style.perspective=l;return}this._camera.update({rotX:r.rotX,rotY:r.rotY,zoom:r.zoom,target:r.target,distance:r.distance}),this.querySelector("poly-scene")?.getScene?.()?.applyCamera()}};var Hc=typeof HTMLElement<"u"?HTMLElement:class{},Fc=["zoom","rot-x","rot-y","target","distance"],_t=class extends Hc{constructor(){super(...arguments);this._camera=null;this._wrapper=null}static get observedAttributes(){return[...Fc]}getCamera(){return this._camera}_readOptions(){return{zoom:te(this.getAttribute("zoom")),rotX:te(this.getAttribute("rot-x")),rotY:te(this.getAttribute("rot-y")),target:wn(this.getAttribute("target")),distance:te(this.getAttribute("distance"))}}_mount(){if(this._camera)return;let t=this._readOptions();for(this._camera=Zt(t),this._wrapper=this.ownerDocument.createElement("div"),this._wrapper.className="polycss-camera",this._wrapper.style.perspective=this._camera.perspectiveStyle;this.firstChild;)this._wrapper.appendChild(this.firstChild);this.appendChild(this._wrapper),this.dispatchEvent(new CustomEvent("polycss:camera-ready",{bubbles:!1}))}_teardown(){if(this._wrapper){for(;this._wrapper.firstChild;)this.insertBefore(this._wrapper.firstChild,this._wrapper);this._wrapper.parentNode&&this._wrapper.parentNode.removeChild(this._wrapper),this._wrapper=null}this._camera=null}connectedCallback(){this._mount()}disconnectedCallback(){this._teardown()}attributeChangedCallback(t,o,i){if(o===i||!this._camera)return;let r=this._readOptions();r.zoom!==void 0&&this._camera.update({zoom:r.zoom}),r.rotX!==void 0&&this._camera.update({rotX:r.rotX}),r.rotY!==void 0&&this._camera.update({rotY:r.rotY}),r.target!==void 0&&this._camera.update({target:r.target}),r.distance!==void 0&&this._camera.update({distance:r.distance}),this.querySelector("poly-scene")?.getScene?.()?.applyCamera()}};var On=class extends _t{};import{arrowPolygons as Bc,eulerXYZFromQuat as zc,planePolygons as Vc,quatFromAxisAngle as Nc,quatFromEulerXYZ as jc,quatMultiply as Gc,ringQuadPolygons as $c,rotateVec3 as Go}from"@layoutit/polycss-core";function Rt(e,n,t){let o=Array.from(e.querySelectorAll("i,b,s,u"));for(let i of o){let r=i.getBoundingClientRect();if(!(r.width<=0||r.height<=0)&&n>=r.left&&n<=r.right&&t>=r.top&&t<=r.bottom)return!0}return!1}function zi(e,n,t,o){for(let i of e)if(!(o&&!o(i))&&Rt(i.element,n,t))return i;return null}var In="#ff3653",Hn="#8adb00",Fn="#2c8fff",kt=50,Vi=60,Uc=.6,Wc=.0125,Yc=.15,Xc=.04,Zc=1,Ni=.02,$o=1.04,Qc=.1,qc=.25,Ui=1e-4,Kc=.6,Jc=.8,eu=1,Ke={0:1,1:0,2:2},ji=[{cssAxis:0,sign:1,key:"x",color:In},{cssAxis:0,sign:-1,key:"-x",color:In},{cssAxis:1,sign:1,key:"y",color:Hn},{cssAxis:1,sign:-1,key:"-y",color:Hn},{cssAxis:2,sign:1,key:"z",color:Fn},{cssAxis:2,sign:-1,key:"-z",color:Fn}],Gi=[{cssAxis:0,key:"x",color:In},{cssAxis:1,key:"y",color:Hn},{cssAxis:2,key:"z",color:Fn}],$i=[{perpAxis:2,axisA:0,axisB:1,key:"xy",color:Fn},{perpAxis:1,axisA:0,axisB:2,key:"xz",color:Hn},{perpAxis:0,axisA:1,axisB:2,key:"yz",color:In}];function Uo(e,n,t,o){let i=t*Math.PI/180,r=o*Math.PI/180,s=[0,0,0];s[e]=n;let c=s[0]*Math.cos(r)-s[1]*Math.sin(r),l=s[0]*Math.sin(r)+s[1]*Math.cos(r),d=s[2];return l*Math.sin(i)+d*Math.cos(i)<0}function tu(e,n){let t=/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i.exec(e);if(!t)return e;let o=parseInt(t[1],16),i=parseInt(t[2],16),r=parseInt(t[3],16);return`rgba(${o}, ${i}, ${r}, ${n})`}function Bn(e,n){return!n||n<=0?e:Math.round(e/n)*n}function nu(e){if(e.length===0)return[0,0,0];let n=1/0,t=1/0,o=1/0,i=-1/0,r=-1/0,s=-1/0;for(let c of e)for(let l of c.vertices)l[0]<n&&(n=l[0]),l[0]>i&&(i=l[0]),l[1]<t&&(t=l[1]),l[1]>r&&(r=l[1]),l[2]<o&&(o=l[2]),l[2]>s&&(s=l[2]);return Number.isFinite(n)?[(n+i)/2,(t+r)/2,(o+s)/2]:[0,0,0]}function Wo(e){if(e.length===0)return Vi;let n=1/0,t=1/0,o=1/0,i=-1/0,r=-1/0,s=-1/0;for(let l of e)for(let d of l.vertices)d[0]<n&&(n=d[0]),d[0]>i&&(i=d[0]),d[1]<t&&(t=d[1]),d[1]>r&&(r=d[1]),d[2]<o&&(o=d[2]),d[2]>s&&(s=d[2]);return Number.isFinite(n)?Math.max(i-n,r-t,s-o)*kt*Uc:Vi}function ou(e){let{cssAxis:n,sign:t,shaftLengthCss:o,wrapper:i,target:r,startClientX:s,startClientY:c,translationSnap:l,onAxisDelta:d,onMouseDown:h,onMouseUp:v,onDraggingChanged:f}=e,b=o,y=[0,0,0];y[n]=t;let P=i.ownerDocument.createElement("div");P.style.position="absolute",P.style.left="0",P.style.top="0",P.style.width="0",P.style.height="0",P.style.transform=`translate3d(${y[0]*b}px, ${y[1]*b}px, ${y[2]*b}px)`,i.appendChild(P);let x=i.getBoundingClientRect(),E=P.getBoundingClientRect();i.removeChild(P);let O=(E.left-x.left)/b,R=(E.top-x.top)/b,j=O*O+R*R;if(j<Ui)return;h?.(),f?.(!0);let D=J=>{let k=J.clientX-s,V=J.clientY-c,z=(k*O+V*R)/j;z=Bn(z,l),d(z,y)},Q=()=>{window.removeEventListener("pointermove",D),window.removeEventListener("pointerup",Q),window.removeEventListener("pointercancel",Q);let J=k=>{k.stopPropagation(),k.stopImmediatePropagation()};window.addEventListener("click",J,{capture:!0,once:!0}),setTimeout(()=>window.removeEventListener("click",J,!0),0),v?.(),f?.(!1)};window.addEventListener("pointermove",D),window.addEventListener("pointerup",Q),window.addEventListener("pointercancel",Q)}function ru(e){let{axisA:n,axisB:t,probeDistanceCss:o,wrapper:i,startClientX:r,startClientY:s,translationSnap:c,onPlaneDelta:l,onMouseDown:d,onMouseUp:h,onDraggingChanged:v}=e,f=[0,0,0];f[n]=1;let b=[0,0,0];b[t]=1;function y(j){let D=i.ownerDocument.createElement("div");D.style.position="absolute",D.style.left="0",D.style.top="0",D.style.width="0",D.style.height="0",D.style.transform=`translate3d(${j[0]*o}px, ${j[1]*o}px, ${j[2]*o}px)`,i.appendChild(D);let Q=i.getBoundingClientRect(),J=D.getBoundingClientRect();return i.removeChild(D),{x:(J.left-Q.left)/o,y:(J.top-Q.top)/o}}let P=y(f),x=y(b),E=P.x*x.y-x.x*P.y;if(Math.abs(E)<Ui)return;d?.(),v?.(!0);let O=j=>{let D=j.clientX-r,Q=j.clientY-s,J=(x.y*D-x.x*Q)/E,k=(-P.y*D+P.x*Q)/E;J=Bn(J,c),k=Bn(k,c),l(J,k,f,b)},R=()=>{window.removeEventListener("pointermove",O),window.removeEventListener("pointerup",R),window.removeEventListener("pointercancel",R);let j=D=>{D.stopPropagation(),D.stopImmediatePropagation()};window.addEventListener("click",j,{capture:!0,once:!0}),setTimeout(()=>window.removeEventListener("click",j,!0),0),h?.(),v?.(!1)};window.addEventListener("pointermove",O),window.addEventListener("pointerup",R),window.addEventListener("pointercancel",R)}function iu(e){let{cssAxis:n,wrapper:t,target:o,startClientX:i,startClientY:r,rotationSnap:s,onAngleDelta:c,onMouseDown:l,onMouseUp:d,onDraggingChanged:h}=e,v=t.getBoundingClientRect(),f=v.left,b=v.top,y=Math.atan2(r-b,i-f),P=0;l?.(),h?.(!0);let x=O=>{let R=Math.atan2(O.clientY-b,O.clientX-f),j=R-y;j>Math.PI?j-=2*Math.PI:j<-Math.PI&&(j+=2*Math.PI),P+=j,y=R;let D=P*180/Math.PI;D=Bn(D,s),c(D)},E=()=>{window.removeEventListener("pointermove",x),window.removeEventListener("pointerup",E),window.removeEventListener("pointercancel",E);let O=R=>{R.stopPropagation(),R.stopImmediatePropagation()};window.addEventListener("click",O,{capture:!0,once:!0}),setTimeout(()=>window.removeEventListener("click",O,!0),0),d?.(),h?.(!1)};window.addEventListener("pointermove",x),window.addEventListener("pointerup",E),window.addEventListener("pointercancel",E)}function Wi(e,n={}){let t=null,o=n.mode??"translate",i=n.size??1,r={...n},s=new Map,c=null,l=null,d=[0,0,0];function h(){if(!t)return[0,0,0];let g=t.transform.position??[0,0,0],T=t.transform.rotation??[0,0,0],u=typeof t.transform.scale=="number"?t.transform.scale:t.transform.scale?.[0]??1,m=Go(d,T[0],T[1],T[2]);return[g[0]+u*m[0],g[1]+u*m[1],g[2]+u*m[2]]}function v(g){return l===g?eu:c===g?Jc:Kc}function f(){for(let[g,T]of s){let u=b(T.spec,v(g));T.handle.setPolygons(u,{recomputeAutoCenter:!1})}}function b(g,T){let m=Wo(t?.polygons??[])*i,L=m/kt,_=tu(g.color,T);if(g.kind==="arrow"){let C=e.camera.state,W=Uo(g.cssAxis,g.sign,C.rotX??65,C.rotY??45);return Bc({axis:Ke[g.cssAxis],sign:g.sign,shaftLength:L,shaftHalfThickness:L*Wc,headLength:L*Yc,headHalfThickness:L*Xc,color:_,shaft:!W})}if(g.kind==="plane"){let C=e.camera.state,W=C.rotX??65,Z=C.rotY??45,re=Ke[g.perpAxis],fe=(re+1)%3,de=(re+2)%3,pe=Ke[fe],Ce=Ke[de],be=Uo(pe,1,W,Z)?-1:1,Ae=Uo(Ce,1,W,Z)?-1:1,Ve=L*qc;return Vc({axis:re,size:L*Qc,offset:[be*Ve,Ae*Ve],color:_})}let q=m*Zc/kt*$o;return $c({axis:Ke[g.cssAxis],outerRadius:q,color:_})}function y(g){return g.kind==="arrow"?"polycss-transform-arrow":g.kind==="plane"?"polycss-transform-plane":"polycss-transform-ring"}function P(){if(o==="translate"){let g=ji.map(u=>({kind:"arrow",key:u.key,cssAxis:u.cssAxis,sign:u.sign,color:u.color})),T=$i.map(u=>({kind:"plane",key:u.key,perpAxis:u.perpAxis,axisA:u.axisA,axisB:u.axisB,color:u.color}));return[...g,...T]}return o==="rotate"?Gi.map(g=>({kind:"ring",key:g.key,cssAxis:g.cssAxis,color:g.color})):[]}function x(){if(E(),!t)return;let g={x:r.showX!==!1,y:r.showY!==!1,z:r.showZ!==!1};function T(m){if(m.kind==="arrow"){let H=m.key.replace("-","")[0];return g[H]}if(m.kind==="ring")return g[m.key];let L=["x","y","z"][m.axisA],_=["x","y","z"][m.axisB];return g[L]&&g[_]}let u=h();for(let m of P()){if(!T(m))continue;let L=b(m,v(m.key)),_=e.add({polygons:L,objectUrls:[],warnings:[],dispose:()=>{}},{excludeFromAutoCenter:!0,id:`__poly-gizmo-${m.key}`,position:u}),H=y(m);if(_.element.classList.add("polycss-transform-gizmo",H,`${H}--${m.key}`),m.kind==="ring"){let q=(1-Ni)/$o,C=(1+Ni)/$o;_.element.style.setProperty("--ring-inner-ratio",`${q}`),_.element.style.setProperty("--ring-outer-ratio",`${C}`)}s.set(m.key,{handle:_,spec:m})}}function E(){for(let{handle:g}of s.values())g.remove();s.clear(),c=null,l=null}function O(){if(!t)return;let g=h();for(let{handle:T}of s.values())T.setTransform({position:g})}function R(){t&&(s.size===0?x():O())}function j(g){if(t=g,!g){d=[0,0,0],E();return}d=nu(g.polygons),E(),x()}function D(){j(null)}function Q(g){g!==o&&(o=g,t&&(E(),x()))}function J(g,T,u){if(!t||!k)return;let m=u[g.cssAxis],L=Ke[g.cssAxis],_=T*m/kt,H=k.slice();H[L]=k[L]+_,t.setTransform({position:H}),O(),r.onObjectChange?.({object:t,position:H}),r.onChange?.()}let k=null,V=null,z=g=>{if(!t||r.enabled===!1)return;let T={x:r.showX!==!1,y:r.showY!==!1,z:r.showZ!==!1};if(o==="translate"){for(let u of $i){let m=["x","y","z"][u.axisA],L=["x","y","z"][u.axisB];if(!T[m]||!T[L])continue;let _=s.get(u.key);if(_&&Rt(_.handle.element,g.clientX,g.clientY)){g.preventDefault(),g.stopPropagation(),l=u.key,f(),k=(t.transform.position??[0,0,0]).slice(),ru({axisA:u.axisA,axisB:u.axisB,probeDistanceCss:Wo(t.polygons)*i,wrapper:_.handle.element,target:t,startClientX:g.clientX,startClientY:g.clientY,translationSnap:r.translationSnap??null,onPlaneDelta:(H,q,C,W)=>{if(!t||!k)return;let Z=C[u.axisA],re=W[u.axisB],fe=Ke[u.axisA],de=Ke[u.axisB],pe=k.slice();pe[fe]+=H*Z/kt,pe[de]+=q*re/kt,t.setTransform({position:pe}),O(),r.onObjectChange?.({object:t,position:pe}),r.onChange?.()},onMouseDown:r.onMouseDown,onMouseUp:r.onMouseUp,onDraggingChanged:H=>{H||(l=null,k=null,f()),r.onDraggingChanged?.(H)}});return}}for(let u of ji){let m=u.key.replace("-","")[0];if(!T[m])continue;let L=s.get(u.key);if(L&&Rt(L.handle.element,g.clientX,g.clientY)){g.preventDefault(),g.stopPropagation(),l=u.key,f(),k=(t.transform.position??[0,0,0]).slice(),ou({cssAxis:u.cssAxis,sign:u.sign,shaftLengthCss:Wo(t.polygons)*i,wrapper:L.handle.element,target:t,startClientX:g.clientX,startClientY:g.clientY,translationSnap:r.translationSnap??null,onAxisDelta:(_,H)=>J(u,_,H),onMouseDown:r.onMouseDown,onMouseUp:r.onMouseUp,onDraggingChanged:_=>{_||(l=null,k=null,f()),r.onDraggingChanged?.(_)}});return}}}else if(o==="rotate")for(let u of Gi){if(!T[u.key])continue;let m=s.get(u.key);if(m&&Rt(m.handle.element,g.clientX,g.clientY)){g.preventDefault(),g.stopPropagation(),l=u.key,f(),V=(t.transform.rotation??[0,0,0]).slice(),k=(t.transform.position??[0,0,0]).slice(),iu({cssAxis:u.cssAxis,wrapper:m.handle.element,target:t,startClientX:g.clientX,startClientY:g.clientY,rotationSnap:r.rotationSnap??null,onAngleDelta:L=>{if(!t||!V||!k)return;let _=Ke[u.cssAxis],H=[0,0,0];H[_]=1;let q=-L*Math.PI/180,C=jc(V),W=Nc(H,q),Z=zc(Gc(W,C)),re=typeof t.transform.scale=="number"?t.transform.scale:t.transform.scale?.[0]??1,fe=Go(d,V[0],V[1],V[2]),de=Go(d,Z[0],Z[1],Z[2]),pe=[k[0]+re*(fe[0]-de[0]),k[1]+re*(fe[1]-de[1]),k[2]+re*(fe[2]-de[2])];t.setTransform({rotation:Z,position:pe}),O(),r.onObjectChange?.({object:t,rotation:Z,position:pe}),r.onChange?.()},onMouseDown:r.onMouseDown,onMouseUp:r.onMouseUp,onDraggingChanged:L=>{L||(l=null,V=null,k=null,f(),t?.rebakeAtlas()),r.onDraggingChanged?.(L)}});return}}};e.host.addEventListener("pointerdown",z,{capture:!0});let B=g=>{if(!t||l||r.enabled===!1)return;let T=null;for(let[u,m]of s)if(Rt(m.handle.element,g.clientX,g.clientY)){T=u;break}T!==c&&(c=T,f())};e.host.addEventListener("pointermove",B);function A(){e.host.removeEventListener("pointerdown",z,{capture:!0}),e.host.removeEventListener("pointermove",B),E()}return{attach:j,detach:D,setMode:Q,update:R,destroy:A}}var su=typeof HTMLElement<"u"?HTMLElement:class{},au=["mode","target","size","enabled"];function Yi(e){if(e==="translate"||e==="rotate")return e}var zn=class extends su{constructor(){super(...arguments);this._tc=null}static get observedAttributes(){return[...au]}_findScene(){let t=this.parentNode;for(;t;){if(t instanceof Le)return t;t=t.parentNode}return null}_findTargetMesh(){let t=this.getAttribute("target");if(!t)return null;let o=this._findScene();if(!o)return null;let i=null;try{i=o.querySelector(`#${t}`)??o.querySelector(t)}catch{i=o.querySelector(`[id="${t}"]`)}return i instanceof At?i:null}_readOptions(){let t={},o=Yi(this.getAttribute("mode"));o!==void 0&&(t.mode=o);let i=te(this.getAttribute("size"));i!==void 0&&(t.size=i);let r=this.getAttribute("enabled");return r!==null&&(t.enabled=r!=="false"&&r!=="0"),t.onObjectChange=s=>{this.dispatchEvent(new CustomEvent("polycss:object-change",{bubbles:!0,detail:{position:s.position,rotation:s.rotation}}))},t}_attach(){if(this._tc)return;let t=this._findScene(),o=t?.getScene();if(!o){if(t){let r=()=>{t.removeEventListener("polycss:scene-ready",r),this._attach()};t.addEventListener("polycss:scene-ready",r)}return}this._tc=Wi(o,this._readOptions());let i=this._findTargetMesh();if(i){let r=i.getMeshHandle();r&&this._tc.attach(r)}}connectedCallback(){this._attach()}disconnectedCallback(){this._tc&&(this._tc.destroy(),this._tc=null)}attributeChangedCallback(t,o,i){if(o!==i&&this._tc){if(t==="mode"){let r=Yi(i);r&&this._tc.setMode(r)}else if(t==="target"){let r=this._findTargetMesh();this._tc.attach(r?r.getMeshHandle()??null:null)}}}};function Xi(e,n={}){let t=[],o=new Set;n.onChange&&o.add(n.onChange);function i(){t=n.filter?n.filter(t):t;for(let P of o)try{P(t)}catch(x){console.error("[polycss/createSelect] onChange threw:",x)}}function r(y){t=y,i()}function s(y){n.multiple?t.includes(y)||(t=[...t,y]):t=[y],i()}function c(y){t.includes(y)&&(t=t.filter(P=>P!==y),i())}function l(y){t.includes(y)?t=t.filter(P=>P!==y):n.multiple?t=[...t,y]:t=[y],i()}function d(){t.length!==0&&(t=[],i())}function h(y){return t.includes(y)}function v(y,P){return zi(e.meshes(),y,P,x=>!x.element.classList.contains("polycss-transform-gizmo"))}let f=y=>{let P=y.target;if(P?.closest(".polycss-transform-gizmo"))return;let x=e.findMeshByElement(P)??v(y.clientX,y.clientY);if(!x){n.onPointerMissed&&n.onPointerMissed(y),n.clearOnMiss!==!1&&d();return}n.multiple&&(y.shiftKey||y.metaKey||y.ctrlKey)?l(x):t.length===1&&t[0]===x?d():r([x])};e.host.addEventListener("click",f);function b(){e.host.removeEventListener("click",f),o.clear()}return{get selected(){return t},set:r,add:s,remove:c,toggle:l,clear:d,has:h,destroy:b}}var lu=typeof HTMLElement<"u"?HTMLElement:class{},cu=["multiple","clear-on-miss"],Vn=class extends lu{constructor(){super(...arguments);this._selection=null}static get observedAttributes(){return[...cu]}_findScene(){let t=this.parentNode;for(;t;){if(t instanceof Le)return t;t=t.parentNode}return null}_readOptions(){return{multiple:this.hasAttribute("multiple"),clearOnMiss:!this.hasAttribute("clear-on-miss")||this.getAttribute("clear-on-miss")!=="false",onChange:t=>{this.dispatchEvent(new CustomEvent("polycss:select",{bubbles:!0,detail:{selected:t}}))}}}_attach(){if(this._selection)return;let t=this._findScene(),o=t?.getScene();if(!o){if(t){let i=()=>{t.removeEventListener("polycss:scene-ready",i),this._attach()};t.addEventListener("polycss:scene-ready",i)}return}this._selection=Xi(o,this._readOptions())}connectedCallback(){this._attach()}disconnectedCallback(){this._selection&&(this._selection.destroy(),this._selection=null)}attributeChangedCallback(t,o,i){o!==i&&(this._selection&&(this._selection.destroy(),this._selection=null),this._attach())}};import{boxPolygons as uu,planePolygons as du,ringPolygons as pu,octahedronPolygons as mu,spherePolygons as fu,tetrahedronPolygons as gu,icosahedronPolygons as hu,dodecahedronPolygons as yu,cylinderPolygons as bu,conePolygons as xu,torusPolygons as vu,computeSceneBbox as Pu}from"@layoutit/polycss-core";var Su=typeof HTMLElement<"u"?HTMLElement:class{};function Cu(e){return e.closest("poly-scene")??null}function ge(e,n,t){let o=e.getAttribute(n);if(!o)return t;let i=parseFloat(o);return Number.isFinite(i)?i:t}function Ye(e,n,t){return e.getAttribute(n)??t}function pt(e,n){let t=e.getAttribute(n);if(!t)return;let o=t.split(",").map(i=>parseFloat(i.trim()));if(!(o.length!==3||o.some(i=>!Number.isFinite(i))))return[o[0],o[1],o[2]]}function Eu(e){if(e.length===0)return e;let n=Pu(e),t=(n.min[0]+n.max[0])/2,o=(n.min[1]+n.max[1])/2,i=(n.min[2]+n.max[2])/2;if(t===0&&o===0&&i===0)return e;let r=s=>[s[0]-t,s[1]-o,s[2]-i];return e.map(s=>({...s,vertices:s.vertices.map(r)}))}var Oe=class extends Su{constructor(){super(...arguments);this._handle=null}connectedCallback(){this._mount()}disconnectedCallback(){this._tearDown()}attributeChangedCallback(t,o,i){if(o!==i&&this._handle){if(t==="position"||t==="scale"||t==="rotation"||t==="cast-shadow"||t==="receive-shadow"){this._handle.setTransform({position:pt(this,"position"),scale:(()=>{let r=this.getAttribute("scale");if(!r)return;if(r.includes(","))return pt(this,"scale");let s=parseFloat(r);return Number.isFinite(s)?s:void 0})(),rotation:pt(this,"rotation"),castShadow:this.hasAttribute("cast-shadow"),receiveShadow:this.hasAttribute("receive-shadow")});return}this._tearDown(),this._mount()}}_tearDown(){if(this._handle){try{this._handle.dispose()}catch{}this._handle=null}}_mount(){let t=Cu(this);if(!t)return;let o=t.getScene?.();if(!o)return;let i=this.buildPolygons();this.hasAttribute("auto-center")&&(i=Eu(i));let r={polygons:i,objectUrls:[],warnings:[],dispose:()=>{}};this._handle=o.add(r,{position:pt(this,"position"),scale:(()=>{let s=this.getAttribute("scale");if(!s)return;if(s.includes(","))return pt(this,"scale");let c=parseFloat(s);return Number.isFinite(c)?c:void 0})(),rotation:pt(this,"rotation"),castShadow:this.hasAttribute("cast-shadow"),receiveShadow:this.hasAttribute("receive-shadow"),excludeFromAutoCenter:this.hasAttribute("exclude-from-auto-center"),merge:!1})}},Nn=class extends Oe{static get observedAttributes(){return["size","color","auto-center","position","scale","rotation"]}buildPolygons(){let n=this.getAttribute("size"),t=n?parseFloat(n):void 0;return uu({size:t!==void 0&&Number.isFinite(t)?t:void 0,color:Ye(this,"color")})}},jn=class extends Oe{static get observedAttributes(){return["axis","size","offset","color","auto-center","position","scale","rotation","cast-shadow","receive-shadow"]}buildPolygons(){let n=ge(this,"axis",2),t=n===0||n===1||n===2?n:2,o=this.getAttribute("offset"),i=o===null?0:parseFloat(o);return du({axis:t,size:ge(this,"size",.4),offset:Number.isFinite(i)?i:0,color:Ye(this,"color")})}},Gn=class extends Oe{static get observedAttributes(){return["axis","radius","segments","half-thickness","color","auto-center","position","scale","rotation"]}buildPolygons(){let n=ge(this,"axis",2),t=n===0||n===1||n===2?n:2,o=this.getAttribute("half-thickness");return pu({axis:t,radius:ge(this,"radius",50),segments:ge(this,"segments",32),halfThickness:o?parseFloat(o):void 0,color:Ye(this,"color")})}},$n=class extends Oe{static get observedAttributes(){return["size","color","center","auto-center","position","scale","rotation"]}buildPolygons(){return mu({center:pt(this,"center")??[0,0,0],size:ge(this,"size",50),color:Ye(this,"color")})}},Un=class extends Oe{static get observedAttributes(){return["size","color","auto-center","position","scale","rotation"]}buildPolygons(){return gu({size:ge(this,"size",100),color:Ye(this,"color")})}},Wn=class extends Oe{static get observedAttributes(){return["size","color","auto-center","position","scale","rotation"]}buildPolygons(){return hu({size:ge(this,"size",100),color:Ye(this,"color")})}},Yn=class extends Oe{static get observedAttributes(){return["size","color","auto-center","position","scale","rotation"]}buildPolygons(){return yu({size:ge(this,"size",100),color:Ye(this,"color")})}},Xn=class extends Oe{static get observedAttributes(){return["radius","subdivisions","color","auto-center","position","scale","rotation"]}buildPolygons(){return fu({radius:ge(this,"radius",50),subdivisions:ge(this,"subdivisions",1),color:Ye(this,"color")})}},Zn=class extends Oe{static get observedAttributes(){return["radius","radius-top","height","radial-segments","color","auto-center","position","scale","rotation"]}buildPolygons(){let n=this.getAttribute("radius-top");return bu({radius:ge(this,"radius",50),radiusTop:n?parseFloat(n):void 0,height:ge(this,"height",100),radialSegments:ge(this,"radial-segments",12),color:Ye(this,"color")})}},Qn=class extends Oe{static get observedAttributes(){return["radius","height","radial-segments","color","auto-center","position","scale","rotation"]}buildPolygons(){return xu({radius:ge(this,"radius",50),height:ge(this,"height",100),radialSegments:ge(this,"radial-segments",12),color:Ye(this,"color")})}},qn=class extends Oe{static get observedAttributes(){return["radius","tube","radial-segments","tubular-segments","color","auto-center","position","scale","rotation"]}buildPolygons(){return vu({radius:ge(this,"radius",50),tube:ge(this,"tube",15),radialSegments:ge(this,"radial-segments",12),tubularSegments:ge(this,"tubular-segments",16),color:Ye(this,"color")})}};typeof customElements<"u"&&(customElements.get("poly-scene")||customElements.define("poly-scene",Le),customElements.get("poly-mesh")||customElements.define("poly-mesh",At),customElements.get("poly-iframe")||customElements.define("poly-iframe",vn),customElements.get("poly-polygon")||customElements.define("poly-polygon",Pn),customElements.get("poly-axes-helper")||customElements.define("poly-axes-helper",Sn),customElements.get("poly-directional-light-helper")||customElements.define("poly-directional-light-helper",Cn),customElements.get("poly-orbit-controls")||customElements.define("poly-orbit-controls",_n),customElements.get("poly-map-controls")||customElements.define("poly-map-controls",Rn),customElements.get("poly-first-person-controls")||customElements.define("poly-first-person-controls",kn),customElements.get("poly-perspective-camera")||customElements.define("poly-perspective-camera",Dn),customElements.get("poly-orthographic-camera")||customElements.define("poly-orthographic-camera",_t),customElements.get("poly-camera")||customElements.define("poly-camera",On),customElements.get("poly-transform-controls")||customElements.define("poly-transform-controls",zn),customElements.get("poly-select")||customElements.define("poly-select",Vn),customElements.get("poly-box")||customElements.define("poly-box",Nn),customElements.get("poly-plane")||customElements.define("poly-plane",jn),customElements.get("poly-ring")||customElements.define("poly-ring",Gn),customElements.get("poly-octahedron")||customElements.define("poly-octahedron",$n),customElements.get("poly-tetrahedron")||customElements.define("poly-tetrahedron",Un),customElements.get("poly-sphere")||customElements.define("poly-sphere",Xn),customElements.get("poly-icosahedron")||customElements.define("poly-icosahedron",Wn),customElements.get("poly-dodecahedron")||customElements.define("poly-dodecahedron",Yn),customElements.get("poly-cylinder")||customElements.define("poly-cylinder",Zn),customElements.get("poly-cone")||customElements.define("poly-cone",Qn),customElements.get("poly-torus")||customElements.define("poly-torus",qn));export{Sn as PolyAxesHelperElement,Nn as PolyBoxElement,On as PolyCameraElement,Qn as PolyConeElement,Zn as PolyCylinderElement,Cn as PolyDirectionalLightHelperElement,Yn as PolyDodecahedronElement,kn as PolyFirstPersonControlsElement,Wn as PolyIcosahedronElement,vn as PolyIframeElement,Rn as PolyMapControlsElement,At as PolyMeshElement,$n as PolyOctahedronElement,_n as PolyOrbitControlsElement,_t as PolyOrthographicCameraElement,Dn as PolyPerspectiveCameraElement,jn as PolyPlaneElement,Pn as PolyPolygonElement,Gn as PolyRingElement,Le as PolySceneElement,Vn as PolySelectElement,Xn as PolySphereElement,Un as PolyTetrahedronElement,qn as PolyTorusElement,zn as PolyTransformControlsElement};
|