@layoutit/polycss-vue 0.2.7 → 0.2.8

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 CHANGED
@@ -21,7 +21,6 @@ npm install @layoutit/polycss-vue
21
21
 
22
22
  ```
23
23
 
24
-
25
24
  You can also load PolyCSS directly from a CDN. Here is a minimal custom-element scene:
26
25
 
27
26
  ```html
@@ -39,7 +38,7 @@ You can also load PolyCSS directly from a CDN. Here is a minimal custom-element
39
38
 
40
39
  ## Framework Components
41
40
 
42
- React and Vue expose the same component model. `<PolyCamera>` owns the viewpoint, `<PolyScene>` owns lighting and atlas options, and `<PolyMesh>` loads or receives polygon data.
41
+ React and Vue expose the same component model. `<PolyCamera>` owns the viewpoint, `<PolyScene>` owns lighting and options, and `<PolyMesh>` loads or receives polygon data.
43
42
 
44
43
  ```tsx
45
44
  import { PolyCamera, PolyScene, PolyOrbitControls, PolyMesh } from "@layoutit/polycss-react";
@@ -56,6 +55,54 @@ export default function App() {
56
55
  }
57
56
  ```
58
57
 
58
+ ## Three.js Parity API
59
+
60
+ When porting Three.js scenes or generating code with an agent, use the explicit
61
+ `*/three` subpaths:
62
+
63
+ - `@layoutit/polycss-core/three`
64
+ - `@layoutit/polycss/three`
65
+ - `@layoutit/polycss-react/three`
66
+ - `@layoutit/polycss-vue/three`
67
+
68
+ They expose Three-like `PerspectiveCamera`, `OrthographicCamera`, `Object3D`,
69
+ `Vector3`, `DirectionalLight`, `PointLight`, `AmbientLight`, radians for object
70
+ rotations, Y-up authoring coordinates, and `camera.position` + `camera.lookAt(...)`
71
+ framing. The adapters convert into native PolyCSS coordinates with a right-handed
72
+ axis map, so the apparent object size, projection, orientation, depth ordering,
73
+ and light direction line up with Three.js scene math while still rendering
74
+ through the DOM.
75
+
76
+ ```tsx
77
+ import { PolyScene } from "@layoutit/polycss-react";
78
+ import {
79
+ DirectionalLight,
80
+ PolyThreeMesh,
81
+ PolyThreePerspectiveCamera,
82
+ } from "@layoutit/polycss-react/three";
83
+
84
+ const sun = new DirectionalLight("#ffffff", 1);
85
+ sun.position.set(3, 5, 4);
86
+ sun.target.position.set(0, 0, 0);
87
+
88
+ export function App() {
89
+ return (
90
+ <PolyThreePerspectiveCamera
91
+ fov={50}
92
+ aspect={16 / 9}
93
+ position={[3, 2, 5]}
94
+ lookAt={[0, 0, 0]}
95
+ >
96
+ <PolyScene directionalLight={sun.toPolyDirectionalLight()}>
97
+ <PolyThreeMesh src="/models/cube.glb" rotation={[0, Math.PI / 4, 0]} />
98
+ </PolyScene>
99
+ </PolyThreePerspectiveCamera>
100
+ );
101
+ }
102
+ ```
103
+
104
+ Full reference: [polycss.com/api/three-parity](https://polycss.com/api/three-parity).
105
+
59
106
  ## API Reference
60
107
 
61
108
  ### PolyCamera
@@ -187,10 +234,11 @@ Each visible polygon is emitted as one leaf element; the renderer chooses the le
187
234
 
188
235
  ## Made with PolyCSS
189
236
 
190
- [Layoutit Voxels](https://voxels.layoutit.com)
191
- -> A CSS Voxel editor
237
+ [cssQuake](https://cssquake.com)
238
+ -> A CSS port of Quake (1996)
239
+
240
+ <img width="1280" height="720" alt="quake" src="https://github.com/user-attachments/assets/6d9d809c-857a-4a39-b5cf-733ead2661ec" />
192
241
 
193
- <img width="1000" height="600" alt="layoutit-voxels" src="https://polycss.com/layoutit-voxels.png" />
194
242
 
195
243
  [Layoutit Terra](https://terra.layoutit.com)
196
244
  -> A CSS Terrain Generator
package/dist/three.cjs ADDED
@@ -0,0 +1 @@
1
+ "use strict";var Vt=Object.defineProperty;var wo=Object.getOwnPropertyDescriptor;var Do=Object.getOwnPropertyNames;var Io=Object.prototype.hasOwnProperty;var Vo=(e,t)=>{for(var n in t)Vt(e,n,{get:t[n],enumerable:!0})},Oo=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Do(t))!Io.call(e,o)&&o!==n&&Vt(e,o,{get:()=>t[o],enumerable:!(r=wo(t,o))||r.enumerable});return e};var Fo=e=>Oo(Vt({},"__esModule",{value:!0}),e);var Wr={};Vo(Wr,{AmbientLight:()=>W.AmbientLight,DirectionalLight:()=>W.DirectionalLight,Euler:()=>W.Euler,Object3D:()=>W.Object3D,OrthographicCamera:()=>W.OrthographicCamera,PerspectiveCamera:()=>W.PerspectiveCamera,PointLight:()=>W.PointLight,PolyThreeMesh:()=>Eo,PolyThreeOrthographicCamera:()=>xn,PolyThreePerspectiveCamera:()=>gn,Vector3:()=>W.Vector3,polyToThreeDirection:()=>W.polyToThreeDirection,polyToThreePoint:()=>W.polyToThreePoint,threeToPolyDirection:()=>W.threeToPolyDirection,threeToPolyPoint:()=>W.threeToPolyPoint,transformPointToPoly:()=>W.transformPointToPoly,transformPolygonsToPoly:()=>W.transformPolygonsToPoly});module.exports=Fo(Wr);var W=require("@layoutit/polycss-core/three");var ve=require("vue"),yn=require("@layoutit/polycss-core/three");var Ge=require("vue"),yt=require("@layoutit/polycss-core");function Ot(e){let t={cameraState:{...e}},n=new Set;function r(){for(let o of n)o()}return{getState(){return t},setState(o){t={...t,...o},r()},subscribe(o){return n.add(o),()=>n.delete(o)},updateCameraFromRef(o){return t={cameraState:{...o.state}},r(),!0},notifyAll(){r()}}}function Ft(e,t,n,r){if(!e)return;let o=(0,yt.capturePolyCameraSnapshot)(t,{projection:n,perspectiveStyle:r});e.dataset.polycssCameraProjection=o.projection,e.dataset.polycssCameraPerspective=o.perspectiveStyle,e.dataset.polycssCameraAppliedPerspective=o.appliedPerspectiveStyle,e.dataset.polycssCameraZoom=String(o.state.zoom),e.dataset.polycssCameraDistance=String(o.state.distance),e.dataset.polycssCameraRotX=String(o.state.rotX),e.dataset.polycssCameraRotY=String(o.state.rotY),e.dataset.polycssCameraTarget=o.state.target.join(",")}function qe(e){let t=(0,yt.createIsometricCamera)({zoom:e.value.zoom,target:e.value.target,rotX:e.value.rotX,rotY:e.value.rotY,distance:e.value.distance}),n=(0,Ge.shallowRef)(t),r=(0,Ge.ref)(null),o=(0,Ge.ref)(null),i=(0,Ge.ref)([0,0,0]),a=Ot(t.state);(0,Ge.watch)(()=>({zoom:e.value.zoom,target:e.value.target,rotX:e.value.rotX,rotY:e.value.rotY,distance:e.value.distance,projection:e.value.projection,perspectiveStyle:e.value.perspectiveStyle}),(l,c)=>{let d={};l.zoom!==void 0&&l.zoom!==c?.zoom&&(d.zoom=l.zoom),l.target!==void 0&&l.target!==c?.target&&(d.target=l.target),l.rotX!==void 0&&l.rotX!==c?.rotX&&(d.rotX=l.rotX),l.rotY!==void 0&&l.rotY!==c?.rotY&&(d.rotY=l.rotY),l.distance!==void 0&&l.distance!==c?.distance&&(d.distance=l.distance),Object.keys(d).length>0&&(t.update(d),s(),a.updateCameraFromRef(t),a.notifyAll()),Ft(o.value,t,e.value.projection,e.value.perspectiveStyle)}),(0,Ge.watch)(o,l=>Ft(l,t,e.value.projection,e.value.perspectiveStyle),{flush:"post"});function s(){let l=r.value;l&&(l.style.transform=(0,yt.buildPolyCameraSceneTransform)(t.state,{autoCenterOffset:i.value}),Ft(o.value,t,e.value.projection,e.value.perspectiveStyle))}return{store:a,cameraRef:n,sceneElRef:r,cameraElRef:o,autoCenterOffset:i,applyTransformDirect:s}}var De=Symbol("polycss-camera");function Bo(e,t){return t.fov!==void 0&&(e.fov=t.fov),t.aspect!==void 0&&(e.aspect=t.aspect),t.near!==void 0&&(e.near=t.near),t.far!==void 0&&(e.far=t.far),t.zoom!==void 0&&(e.zoom=t.zoom),t.position!==void 0&&e.position.set(t.position[0],t.position[1],t.position[2]),t.up!==void 0&&e.up.set(t.up[0],t.up[1],t.up[2]),t.lookAt!==void 0&&e.lookAt(t.lookAt[0],t.lookAt[1],t.lookAt[2]),e}var gn=(0,ve.defineComponent)({name:"PolyThreePerspectiveCamera",props:{camera:{type:Object,default:void 0},fov:{type:Number,default:50},aspect:{type:Number,default:1},near:{type:Number,default:.1},far:{type:Number,default:2e3},zoom:{type:Number,default:void 0},polyZoom:{type:Number,default:void 0},perspective:{type:Number,default:void 0},viewportHeight:{type:Number,default:void 0},position:{type:Array,default:void 0},lookAt:{type:Array,default:void 0},up:{type:Array,default:void 0},class:{type:String,default:void 0}},setup(e,{slots:t}){let n=new yn.PerspectiveCamera(e.fov,e.aspect,e.near,e.far),r=(0,ve.ref)(e.viewportHeight??420),o=(0,ve.computed)(()=>Bo(e.camera??n,e).toPolyCameraState({zoom:e.polyZoom,perspective:e.perspective,viewportHeight:e.viewportHeight??r.value})),i=(0,ve.computed)(()=>({zoom:o.value.zoom,target:o.value.target,rotX:o.value.rotX,rotY:o.value.rotY,distance:o.value.distance,projection:"perspective",perspectiveStyle:`${o.value.perspective}px`})),{store:a,cameraRef:s,sceneElRef:l,cameraElRef:c,autoCenterOffset:d,applyTransformDirect:m}=qe(i);return(0,ve.provide)(De,{store:a,cameraRef:s,sceneElRef:l,cameraElRef:c,autoCenterOffset:d,applyTransformDirect:m}),(0,ve.watch)(c,(u,p,f)=>{if(e.viewportHeight!==void 0||!u)return;let y=()=>{r.value=u.getBoundingClientRect().height||u.clientHeight||420};if(y(),typeof ResizeObserver>"u")return;let g=new ResizeObserver(y);g.observe(u),f(()=>g.disconnect())},{flush:"post"}),()=>{let u=`${o.value.perspective}px`;return(0,ve.h)("div",{ref:c,class:`polycss-camera${e.class?` ${e.class}`:""}`,style:{perspective:u},"data-polycss-camera-projection":"perspective","data-polycss-camera-perspective":u,"data-polycss-camera-applied-perspective":u,"data-polycss-camera-zoom":s.value.state.zoom,"data-polycss-camera-distance":s.value.state.distance,"data-polycss-camera-rot-x":s.value.state.rotX,"data-polycss-camera-rot-y":s.value.state.rotY,"data-polycss-camera-target":s.value.state.target.join(",")},t.default?.())}}});var Se=require("vue"),hn=require("@layoutit/polycss-core/three");function ko(e,t){return t.left!==void 0&&(e.left=t.left),t.right!==void 0&&(e.right=t.right),t.top!==void 0&&(e.top=t.top),t.bottom!==void 0&&(e.bottom=t.bottom),t.near!==void 0&&(e.near=t.near),t.far!==void 0&&(e.far=t.far),t.zoom!==void 0&&(e.zoom=t.zoom),t.position!==void 0&&e.position.set(t.position[0],t.position[1],t.position[2]),t.up!==void 0&&e.up.set(t.up[0],t.up[1],t.up[2]),t.lookAt!==void 0&&e.lookAt(t.lookAt[0],t.lookAt[1],t.lookAt[2]),e}var xn=(0,Se.defineComponent)({name:"PolyThreeOrthographicCamera",props:{camera:{type:Object,default:void 0},left:{type:Number,default:-1},right:{type:Number,default:1},top:{type:Number,default:1},bottom:{type:Number,default:-1},near:{type:Number,default:.1},far:{type:Number,default:2e3},zoom:{type:Number,default:void 0},polyZoom:{type:Number,default:void 0},viewportHeight:{type:Number,default:void 0},position:{type:Array,default:void 0},lookAt:{type:Array,default:void 0},up:{type:Array,default:void 0},class:{type:String,default:void 0}},setup(e,{slots:t}){let n=new hn.OrthographicCamera(e.left,e.right,e.top,e.bottom,e.near,e.far),r=(0,Se.ref)(e.viewportHeight??420),o=(0,Se.computed)(()=>ko(e.camera??n,e).toPolyCameraState({zoom:e.polyZoom,viewportHeight:e.viewportHeight??r.value})),i=(0,Se.computed)(()=>({zoom:o.value.zoom,target:o.value.target,rotX:o.value.rotX,rotY:o.value.rotY,distance:o.value.distance,projection:"orthographic",perspectiveStyle:"none"})),{store:a,cameraRef:s,sceneElRef:l,cameraElRef:c,autoCenterOffset:d,applyTransformDirect:m}=qe(i);return(0,Se.provide)(De,{store:a,cameraRef:s,sceneElRef:l,cameraElRef:c,autoCenterOffset:d,applyTransformDirect:m}),(0,Se.watch)(c,(u,p,f)=>{if(e.viewportHeight!==void 0||!u)return;let y=()=>{r.value=u.getBoundingClientRect().height||u.clientHeight||420};if(y(),typeof ResizeObserver>"u")return;let g=new ResizeObserver(y);g.observe(u),f(()=>g.disconnect())},{flush:"post"}),()=>(0,Se.h)("div",{ref:c,class:`polycss-camera${e.class?` ${e.class}`:""}`,style:{perspective:"none"},"data-polycss-camera-projection":"orthographic","data-polycss-camera-perspective":"none","data-polycss-camera-applied-perspective":"1000000px","data-polycss-camera-zoom":s.value.state.zoom,"data-polycss-camera-distance":s.value.state.distance,"data-polycss-camera-rot-x":s.value.state.rotX,"data-polycss-camera-rot-y":s.value.state.rotY,"data-polycss-camera-target":s.value.state.target.join(",")},t.default?.())}});var Ve=require("vue"),Ro=require("@layoutit/polycss-core"),It=require("@layoutit/polycss-core/three");var P=require("vue"),$e=require("@layoutit/polycss-core"),D=require("@layoutit/polycss-core");var je=require("vue"),bn=require("@layoutit/polycss-core"),Pn=[],Bt=[];function Tt(e,t){let n=(0,je.ref)(Pn),r=(0,je.ref)(void 0),o=(0,je.ref)(!!e.value),i=(0,je.ref)(null),a=(0,je.ref)(Bt),s=null;function l(){if(s){try{s.dispose()}catch{}s=null}}return(0,je.watch)(e,(c,d,m)=>{if(!c){l(),n.value=Pn,r.value=void 0,o.value=!1,i.value=null,a.value=Bt;return}let u=!1;o.value=!0,i.value=null;let p=s;(0,bn.loadMesh)(c,t).then(f=>{if(u){try{f.dispose()}catch{}return}if(p)try{p.dispose()}catch{}s=f,n.value=f.polygons,r.value=f.voxelSource,o.value=!1,i.value=null,a.value=f.warnings??Bt}).catch(f=>{if(u)return;let y=f instanceof Error?f:new Error(String(f));o.value=!1,i.value=y}),m(()=>{u=!0})},{immediate:!0}),(0,je.onUnmounted)(()=>{l()}),{polygons:n,voxelSource:r,loading:o,error:i,warnings:a,dispose:l}}var ge=require("@layoutit/polycss-core");var Qe=require("@layoutit/polycss-core");function kt(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 o=(e.defaultView??(typeof window<"u"?window:void 0))?.matchMedia;return o?o("(pointer: fine)").matches&&o("(hover: hover)").matches:!0}function Ht(e){if(vn(e))return!0;let n=(e.defaultView??(typeof window<"u"?window:void 0))?.navigator?.userAgent??"";return n?!(0,Qe.safariCssProjectiveUnsupported)(n):!0}function Mt(e){let t=e.defaultView?.CSS??(typeof CSS<"u"?CSS:void 0);return!!t?.supports?.("corner-top-left-shape","bevel")&&!!t.supports("corner-top-right-shape","bevel")&&!!t.supports("corner-bottom-right-shape","bevel")&&!!t.supports("corner-bottom-left-shape","bevel")}function vn(e){let t=e.defaultView?.CSS??(typeof CSS<"u"?CSS:void 0);return!!t?.supports?.("corner-top-left-shape","bevel")&&!!t.supports("corner-top-right-shape","bevel")}function gt(e){let n=(e.defaultView??(typeof window<"u"?window:void 0))?.navigator?.userAgent??"";return n?!(0,Qe.safariCssProjectiveUnsupported)(n):!0}function Sn(e,t,n,r,o){let i=new Set(r?.disable??[]);return(0,Qe.getSolidPaintDefaultsForPlansCore)(e,t,i,{solidTriangleSupported:Ht(n),projectiveQuadSupported:gt(n),cornerShapeSupported:Mt(n),borderShapeSupported:kt(n)},Qe.parseHex,Qe.rgbKey,o)}function zt(e,t,n=new Set,r){let o=r??(typeof document<"u"?document:null);if(!o)return{};let i=n.size>0?{disable:Array.from(n)}:void 0;return Sn(e,t,o,i)}function ct(e){let t=e??(typeof document<"u"?document:null);if(!t){if(!!!(typeof CSS<"u"?CSS:void 0)?.supports?.("border-shape","polygon(0 0, 100% 0, 0 100%) circle(0)"))return!1;let o=typeof matchMedia<"u"?matchMedia:void 0;return o?o("(pointer: fine)").matches&&o("(hover: hover)").matches:!0}return kt(t)}function dt(e){let t=e??(typeof document<"u"?document:null);if(!t){let n=typeof CSS<"u"?CSS:void 0;if(n?.supports?.("corner-top-left-shape","bevel")&&n.supports("corner-top-right-shape","bevel"))return!0;let r=(typeof navigator<"u"?navigator:globalThis.navigator)?.userAgent??"";if(!r)return!0;let o=/\b(?:Chrome|HeadlessChrome|Chromium|Edg|OPR)\//.test(r);return!/\bVersion\/[\d.]+.*\bSafari\//.test(r)||o}return Ht(t)}var Tn=require("@layoutit/polycss-core");function _t(e,t,n,r,o,i,a){let s=r??(typeof document<"u"?document:null);return(0,Tn.filterAtlasPlans)(e,t,n,{solidTriangleSupported:dt(r),projectiveQuadSupported:r?gt(r):!0,borderShapeSupported:ct(r),cornerShapeSupported:s?Mt(s):!1,textureBackend:o,textureImageRendering:i,textureProjection:a})}var Mn=require("@layoutit/polycss-core");function Cn(e){if(!e)return!1;let n=(e.defaultView??(typeof window<"u"?window:void 0))?.matchMedia;return n?n("(pointer: coarse)").matches||n("(hover: none)").matches:!1}function jt(e,t,n,r){return(0,Mn.packTextureAtlasPlansWithScaleCore)(e,t,Cn(n),r)}var Ie=require("@layoutit/polycss-core"),ft=new Map;function wn(e){let t=ft.get(e);return t||(t=new Promise((n,r)=>{let o=new Image;o.decoding="async",o.crossOrigin="anonymous",o.onload=()=>n(o),o.onerror=()=>r(new Error(`texture load failed: ${e}`)),o.src=e}),ft.set(e,t),t.then(()=>{ft.get(e)===t&&ft.delete(e)},()=>{ft.get(e)===t&&ft.delete(e)})),t}function ye(e,t,n=1,r=0,o=0,i=1,a=0,s=0){e.setTransform(n*t,r*t,o*t,i*t,a*t,s*t)}function Nt(e){let t=e/255;return t<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function $t(e){let t=e<=.0031308?e*12.92:1.055*Math.pow(e,.4166666666666667)-.055;return Math.max(0,Math.min(255,Math.round(t*255)))}function Dn(e,t,n,r,o,i,a){let s=Math.round(t*a),l=Math.round(n*a),c=Math.max(1,Math.round(r*a)),d=Math.max(1,Math.round(o*a)),m=e.getImageData(s,l,c,d),u=m.data,p=i.r,f=i.g,y=i.b;for(let g=0;g<u.length;g+=4)u[g+3]!==0&&(u[g]=$t(Nt(u[g])*p),u[g+1]=$t(Nt(u[g+1])*f),u[g+2]=$t(Nt(u[g+2])*y));e.putImageData(m,s,l)}function In(e,t,n,r,o,i,a){let s=t.naturalWidth||t.width||1,l=t.naturalHeight||t.height||1,c=Math.max(o/s,i/l),d=s*c,m=l*c;ye(e,a),e.drawImage(t,n+(o-d)/2,r+(i-m)/2,d,m)}function ht(e,t){return Math.max(0,Math.min(t,e))}function Ut(e,t,n,r,o,i,a,s){let l=t.naturalWidth||t.width||1,c=t.naturalHeight||t.height||1,d=ht(Math.min(n.minU,n.maxU)*l,l),m=ht(Math.max(n.minU,n.maxU)*l,l),u=ht(Math.min(n.minV,n.maxV)*c,c),p=ht(Math.max(n.minV,n.maxV)*c,c),f=Math.floor(d),y=Math.floor(u),g=Math.ceil(m)-f,M=Math.ceil(p)-y;g<1&&(f=Math.floor(ht((n.minU+n.maxU)/2*l,l-1)),g=1),M<1&&(y=Math.floor(ht((n.minV+n.maxV)/2*c,c-1)),M=1),f=Math.max(0,Math.min(l-1,f)),y=Math.max(0,Math.min(c-1,y)),g=Math.max(1,Math.min(l-f,g)),M=Math.max(1,Math.min(c-y,M)),ye(e,s),e.drawImage(t,f,y,g,M,r,o,i,a)}function Vn(e){return e==="repeat"||e==="mirrored-repeat"}function Rn(e,t){return Vn(e)?Math.floor(t):0}function En(e,t){return Vn(e)?Math.ceil(t)-1:0}function An(e,t){return e==="mirrored-repeat"&&Math.abs(t%2)===1}function Ln(e,t,n,r,o,i,a){let s=o?Rn(i,o.minU):0,l=o?En(i,o.maxU):0,c=o?Rn(a,o.minV):0,d=o?En(a,o.maxV):0;for(let m=s;m<=l;m++)for(let u=c;u<=d;u++){let p=An(i,m),f=An(a,u);if(!p&&!f){e.drawImage(t,m*n,u*r);continue}e.save(),e.translate((p?m+1:m)*n,(f?u+1:u)*r),e.scale(p?-1:1,f?-1:1),e.drawImage(t,0,0),e.restore()}}function Rt(e,t,n,r){for(let o=0;o<r.length;o+=2){let i=t+r[o],a=n+r[o+1];o===0?e.moveTo(i,a):e.lineTo(i,a)}e.closePath()}function Pt(e,t,n,r,o,i){for(let a=0;a<r.length;a+=2){let s=t+r[a]+o,l=n+r[a+1]+i;a===0?e.moveTo(s,l):e.lineTo(s,l)}e.closePath()}function On(e,t,n,r){ye(e,r),e.beginPath(),Rt(e,t.x,t.y,t.screenPts),e.clip(),ye(e,r),e.fillStyle=n==="dynamic"?t.polygon.color??"#cccccc":t.shadedColor,e.fillRect(t.x,t.y,t.canvasW,t.canvasH)}function Ct(e,t,n,r,o){t.polygon.textureAlphaMode==="opaque"&&(ye(e,n),e.fillStyle=t.polygon.color??"#cccccc",e.fillRect(t.x+r,t.y+o,t.canvasW,t.canvasH))}function Fn(e,t,n,r,o=0,i=0){if(t.textureTriangles?.length){let a=n.naturalWidth||n.width||1,s=n.naturalHeight||n.height||1;for(let l of t.textureTriangles){let c=(0,Ie.expandClipPoints)(l.screenPts,Ie.TEXTURE_TRIANGLE_BLEED);e.save(),ye(e,r),e.beginPath(),Pt(e,t.x,t.y,c,o,i),e.clip(),Ct(e,t,r,o,i),l.uvAffine?(ye(e,r,l.uvAffine.a/a,l.uvAffine.c/a,l.uvAffine.b/s,l.uvAffine.d/s,t.x+l.uvAffine.e+o,t.y+l.uvAffine.f+i),Ln(e,n,a,s,l.uvSampleRect,t.polygon.textureWrap?.s,t.polygon.textureWrap?.t)):l.uvSampleRect&&Ut(e,n,l.uvSampleRect,t.x+o,t.y+i,t.canvasW,t.canvasH,r),e.restore()}}else if(t.uvAffine){let a=n.naturalWidth||n.width||1,s=n.naturalHeight||n.height||1,l=t.polygon.textureAlphaMode==="opaque";l&&(e.save(),ye(e,r),e.beginPath(),Pt(e,t.x,t.y,t.screenPts,o,i),e.clip(),Ct(e,t,r,o,i)),ye(e,r,t.uvAffine.a/a,t.uvAffine.c/a,t.uvAffine.b/s,t.uvAffine.d/s,t.x+t.uvAffine.e+o,t.y+t.uvAffine.f+i),Ln(e,n,a,s,t.uvSampleRect,t.polygon.textureWrap?.s,t.polygon.textureWrap?.t),l&&e.restore()}else if(t.uvSampleRect){let a=t.polygon.textureAlphaMode==="opaque";a&&(e.save(),ye(e,r),e.beginPath(),Pt(e,t.x,t.y,t.screenPts,o,i),e.clip(),Ct(e,t,r,o,i)),Ut(e,n,t.uvSampleRect,t.x+o,t.y+i,t.canvasW,t.canvasH,r),a&&e.restore()}else{let a=t.polygon.textureAlphaMode==="opaque";a&&(e.save(),ye(e,r),e.beginPath(),Pt(e,t.x,t.y,t.screenPts,o,i),e.clip(),Ct(e,t,r,o,i)),In(e,n,t.x+o,t.y+i,t.canvasW,t.canvasH,r),a&&e.restore()}}function Ho(e,t,n,r,o,i){let a=o-n,s=i-r,l=a*a+s*s;if(l<=1e-9)return Math.hypot(e-n,t-r);let c=Math.max(0,Math.min(1,((e-n)*a+(t-r)*s)/l));return Math.hypot(e-(n+a*c),t-(r+s*c))}function zo(e,t,n,r){let o=1/0,i=n.length/2;for(let a of r){if(a<0||a>=i)continue;let s=a*2,l=(a+1)%i*2;o=Math.min(o,Ho(e,t,n[s],n[s+1],n[l],n[l+1]))}return o}function _o(e,t,n,r,o,i){let a=Math.max(0,r-i),s=Math.min(t-1,r+i),l=Math.max(0,o-i),c=Math.min(n-1,o+i),d=null,m=1/0;for(let u=l;u<=c;u++)for(let p=a;p<=s;p++){if(p===r&&u===o)continue;let f=p-r,y=u-o,g=f*f+y*y;if(g>i*i||g>=m)continue;let M=(u*t+p)*4;e[M+3]<Ie.TEXTURE_EDGE_REPAIR_SOURCE_ALPHA_MIN||(d=M,m=g)}return d}function Bn(e,t,n){if(!t.textureEdgeRepair||!t.texture||!t.textureEdgeRepairEdges||t.textureEdgeRepairEdges.size===0)return;let r=e.canvas;if(!r)return;let o=Math.max(0,Math.floor(t.x*n)),i=Math.max(0,Math.floor(t.y*n)),a=Math.max(1,Math.min(r.width-o,Math.ceil(t.canvasW*n))),s=Math.max(1,Math.min(r.height-i,Math.ceil(t.canvasH*n)));if(a<=0||s<=0)return;let l;try{l=e.getImageData(o,i,a,s)}catch{return}let c=l.data,d=new Uint8ClampedArray(c),m=Math.max(Ie.TEXTURE_EDGE_REPAIR_RADIUS,Ie.TEXTURE_EDGE_REPAIR_RADIUS/n),u=Math.max(2,Math.ceil(m*n)+1),p=!1;for(let f=0;f<s;f++)for(let y=0;y<a;y++){let g=(f*a+y)*4,M=c[g+3];if(M<Ie.TEXTURE_EDGE_REPAIR_ALPHA_MIN||M===255)continue;let R=(o+y+.5)/n-t.x,A=(i+f+.5)/n-t.y;if(zo(R,A,t.screenPts,t.textureEdgeRepairEdges)>m)continue;let S=_o(d,a,s,y,f,u);S!==null&&(c[g]=d[S],c[g+1]=d[S+1],c[g+2]=d[S+2],c[g+3]=255,p=!0)}p&&e.putImageData(l,o,i)}function kn(e){if(typeof e.toBlob=="function")return new Promise(t=>{e.toBlob(n=>{t(n?URL.createObjectURL(n):null)},"image/png")});try{return Promise.resolve(e.toDataURL("image/png"))}catch{return Promise.resolve(null)}}async function jo(e,t,n,r){let o=n.createElement("canvas");o.width=Math.max(1,Math.ceil(e.width*r)),o.height=Math.max(1,Math.ceil(e.height*r));let i=e.entries.some(d=>d.textureEdgeRepair&&d.texture&&d.textureEdgeRepairEdges&&d.textureEdgeRepairEdges.size>0),a=o.getContext("2d",i?{willReadFrequently:!0}:void 0);if(!a)return{width:e.width,height:e.height,url:null};let s=Array.from(new Set(e.entries.flatMap(d=>d.texture?[d.texture]:[]))),l=new Map;await Promise.all(s.map(async d=>{l.set(d,await wn(d))}));for(let d of e.entries){let m=d.texture?l.get(d.texture):null;if(!d.texture){a.save(),On(a,d,t,r),a.restore();continue}m&&(a.save(),ye(a,r),a.beginPath(),Rt(a,d.x,d.y,d.screenPts),a.clip(),Fn(a,d,m,r),a.restore()),d.texture&&t==="baked"&&(a.save(),ye(a,r),a.beginPath(),Rt(a,d.x,d.y,d.screenPts),a.clip(),Dn(a,d.x,d.y,d.canvasW,d.canvasH,d.textureTint,r),a.restore()),Bn(a,d,r)}let c=await kn(o);return o.width=1,o.height=1,{width:e.width,height:e.height,url:c}}async function Et(e,t,n,r,o){let i=[];for(let a of e){if(o())break;i.push(await jo(a,t,n,r))}return i}var Te=require("@layoutit/polycss-core"),_n=50,jn=[.4,-.7,.59],Nn="#ffffff",$n=1,Un="#ffffff",Wn=.4,j=1e-9,bt=.75,Yn=32,No=96,Yt="0 48px 96px 48px",Hn,zn=Yn;function $o(){let e=typeof CSS<"u"?CSS:void 0;return!!e?.supports?.("corner-top-left-shape","bevel")&&!!e.supports("corner-top-right-shape","bevel")}function Xt(){if($o())return"corner-bevel";let e=typeof navigator<"u"?navigator.userAgent:"";return/\bFirefox\//.test(e)?"border-large":"border"}function Gt(){let e=typeof navigator<"u"?navigator.userAgent:"";return e!==Hn&&(Hn=e,zn=/\bFirefox\//.test(e)?No:Yn),zn}function Xn(){return Xt()==="border-large"?Yt:void 0}function Uo(){let e=Xt();if(e==="corner-bevel")return;let t=e==="border-large"?Yt:void 0;return t?{borderWidth:t}:void 0}function Gn(e){let t=Xt();t==="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=t==="border-large"?Yt:"")}function Ne(e){let t=(0,Te.parsePureColor)(e);return t?{r:t.rgb[0],g:t.rgb[1],b:t.rgb[2]}:{r:255,g:255,b:255}}function vt({r:e,g:t,b:n}){return`${e},${t},${n}`}function Wo(e){return(0,Te.parsePureColor)(e)?.alpha??1}function Lt({r:e,g:t,b:n}){let r=o=>Math.round(Math.max(0,Math.min(255,o))).toString(16).padStart(2,"0");return`#${r(e)}${r(t)}${r(n)}`}function qn(e,t,n,r,o){let i=Ne(e),a=Ne(n),s=Ne(r),l=s.r/255*o+a.r/255*t,c=s.g/255*o+a.g/255*t,d=s.b/255*o+a.b/255*t,m=Math.max(0,Math.min(255,Math.round(i.r*l))),u=Math.max(0,Math.min(255,Math.round(i.g*c))),p=Math.max(0,Math.min(255,Math.round(i.b*d))),f=Wo(e);return f<1?`rgba(${m}, ${u}, ${p}, ${f})`:Lt({r:m,g:u,b:p})}function Qn(e,t){if(!Number.isFinite(t)||t<=1)return e;let n=(0,Te.parsePureColor)(e);if(!n)return e;let r=255/Math.max(1,Math.round(t)-1),o=a=>Math.max(0,Math.min(255,Math.round(Math.round(a/r)*r))),i={r:o(n.rgb[0]),g:o(n.rgb[1]),b:o(n.rgb[2])};return n.alpha<1?`rgba(${i.r}, ${i.g}, ${i.b}, ${n.alpha})`:Lt(i)}function Kn(e,t,n){let r=(o,i)=>{if(o===i)return o;let a=i-o;return o+Math.sign(a)*Math.min(Math.abs(a),n)};return{r:r(e.r,t.r),g:r(e.g,t.g),b:r(e.b,t.b)}}function Wt(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function Yo(e,t){return[e[1]*t[2]-e[2]*t[1],e[2]*t[0]-e[0]*t[2],e[0]*t[1]-e[1]*t[0]]}function Xo(e){if(e.length<3)return null;let t=e[0],n=[0,0,0];for(let o=1;o+1<e.length;o++){let i=e[o],a=e[o+1],s=[i[0]-t[0],i[1]-t[1],i[2]-t[2]],l=[a[0]-t[0],a[1]-t[1],a[2]-t[2]];n[0]-=s[1]*l[2]-s[2]*l[1],n[1]-=s[2]*l[0]-s[0]*l[2],n[2]-=s[0]*l[1]-s[1]*l[0]}let r=Math.hypot(n[0],n[1],n[2]);return r<=j?null:[n[0]/r,n[1]/r,n[2]/r]}function Go(e){if(e.length<3)return!1;let t=0;for(let n=0;n<e.length;n++){let r=e[n],o=e[(n+1)%e.length],i=e[(n+2)%e.length],a=(o[0]-r[0])*(i[1]-o[1])-(o[1]-r[1])*(i[0]-o[0]);if(Math.abs(a)<=j)return!1;let s=Math.sign(a);if(t===0)t=s;else if(s!==t)return!1}return!0}function qo(e){let t=0;for(let n=0;n<e.length;n++){let r=e[n],o=e[(n+1)%e.length];t+=r[0]*o[1]-r[1]*o[0]}return t/2}function Qo(e,t,n,r){let o=t[0]-e[0],i=t[1]-e[1],a=r[0]-n[0],s=r[1]-n[1],l=o*s-i*a;if(Math.abs(l)<=j)return null;let c=n[0]-e[0],d=n[1]-e[1],m=(c*s-d*a)/l;return[e[0]+m*o,e[1]+m*i]}function At(e,t){if(e.length<6||t<=0)return e;let n=0,r=0,o=e.length/2;for(let a=0;a<e.length;a+=2)n+=e[a],r+=e[a+1];n/=o,r/=o;let i=e.slice();for(let a=0;a<i.length;a+=2){let s=i[a]-n,l=i[a+1]-r,c=Math.hypot(s,l);c<=j||(i[a]+=s/c*t,i[a+1]+=l/c*t)}return i}function mt(e,t){if(e.length<6||e.length%2!==0||t<=0)return e;let n=[];for(let l=0;l<e.length;l+=2)n.push([e[l],e[l+1]]);if(!Go(n))return At(e,t);let r=qo(n);if(Math.abs(r)<=j)return At(e,t);let o=r>0?1:-1,i=[];for(let l=0;l<n.length;l++){let c=n[l],d=n[(l+1)%n.length],m=d[0]-c[0],u=d[1]-c[1],p=Math.hypot(m,u);if(p<=j)return At(e,t);let f=o*(u/p)*t,y=o*(-m/p)*t;i.push({a:[c[0]+f,c[1]+y],b:[d[0]+f,d[1]+y]})}let a=[],s=Math.max(2,t*4);for(let l=0;l<n.length;l++){let c=i[(l+n.length-1)%n.length],d=i[l],m=Qo(c.a,c.b,d.a,d.b);if(!m)return At(e,t);let u=n[l],p=m[0]-u[0],f=m[1]-u[1],y=Math.hypot(p,f);y>s?a.push(u[0]+p/y*s,u[1]+f/y*s):a.push(m[0],m[1])}return a}function Ko(e,t,n,r){let o=e+t;if(r<=0||n<=j||o<=j||!Number.isFinite(e+t+n+r))return mt([e,0,0,n,o,n],r);let i=Math.sqrt(e*e+n*n),a=Math.sqrt(t*t+n*n);if(i<=j||a<=j)return mt([e,0,0,n,o,n],r);let s=-r*n/i,l=-r*e/i,c=r*n/a,d=-r*t/a,m=e+s,u=l,p=o+c,f=n+d,y=-n*o;if(Math.abs(y)<=j)return mt([e,0,0,n,o,n],r);let g=m-p,M=u-f,R=(g*n+M*e)/y,A=p-R*t,S=f-R*n,k=-r*(e+i)/n,$=n+r,_=o+r*(t+a)/n,G=$,I=Math.max(2,r*4),J=A-e,Q=S,N=Math.sqrt(J*J+Q*Q);N>I&&(A=e+J/N*I,S=Q/N*I);let h=Math.sqrt(k*k+r*r);h>I&&(k=k/h*I,$=n+r/h*I);let v=_-o,L=Math.sqrt(v*v+r*r);return L>I&&(_=o+v/L*I,G=n+r/L*I),[A,S,k,$,_,G]}function Zo(e,t){if((e+1)%3===t)return e;if((t+1)%3===e)return t}function Jo(e,t,n,r,o){let i=e.seamBleedEdges;if(!i?.size)return null;let a=e.seamBleed===void 0?bt:e.seamBleed;return[[r,t],[t,n],[n,r]].map(([l,c],d)=>{let m=Zo(l,c),u=m!==void 0&&i.has(m)?e.seamBleedEdgeAmounts?.get(m)??(0,Te.resolveSeamBleed)(a,bt):0;return(0,Te.safePlanSeamBleedAmount)(o,d,u)})}function Zn(e,t,n,r,o,i,a,s,l,c,d,m){let u=Math.round(e*1e3)/1e3||0,p=Math.round(t*1e3)/1e3||0,f=Math.round(n*1e3)/1e3||0,y=Math.round(r*1e3)/1e3||0,g=Math.round(o*1e3)/1e3||0,M=Math.round(i*1e3)/1e3||0,R=Math.round(a*1e3)/1e3||0,A=Math.round(s*1e3)/1e3||0,S=Math.round(l*1e3)/1e3||0,k=Math.round(c*1e3)/1e3||0,$=Math.round(d*1e3)/1e3||0,_=Math.round(m*1e3)/1e3||0;return`matrix3d(${u},${p},${f},0,${y},${g},${M},0,${R},${A},${S},0,${k},${$},${_},1)`}function er(e,t,n){return e.map(r=>[r[1]*t,r[0]*t,r[2]*n])}function qt(e,t,n,r){if(!(0,Te.isSolidTrianglePlan)(e))return null;let o=e.tileSize,i=e.layerElevation,a=er(e.polygon.vertices,o,i),s=Xo(a);if(!s)return null;let l=[{a:0,b:1,c:2},{a:1,b:2,c:0},{a:2,b:0,c:1}].map(ee=>{let q=a[ee.a],ne=a[ee.b];return{...ee,length:Math.hypot(ne[0]-q[0],ne[1]-q[1],ne[2]-q[2])}}).sort((ee,q)=>q.length-ee.length),c=l[0].a,d=l[0].b,m=l[0].c,u=a[c],p=a[d],f=a[m],y=l[0].length;if(y<=j)return null;let g=[(p[0]-u[0])/y,(p[1]-u[1])/y,(p[2]-u[2])/y],M=[f[0]-u[0],f[1]-u[1],f[2]-u[2]],R=Wt(M,g),A=[u[0]+g[0]*R,u[1]+g[1]*R,u[2]+g[2]*R],S=[A[0]-f[0],A[1]-f[1],A[2]-f[2]],k=Math.hypot(S[0],S[1],S[2]);if(k<=j)return null;let $=[S[0]/k,S[1]/k,S[2]/k];if(Wt(Yo(g,$),s)<0){let ee=d;if(d=c,c=ee,u=a[c],p=a[d],y=Math.hypot(p[0]-u[0],p[1]-u[1],p[2]-u[2]),y<=j)return null;g=[(p[0]-u[0])/y,(p[1]-u[1])/y,(p[2]-u[2])/y];let q=[f[0]-u[0],f[1]-u[1],f[2]-u[2]];R=Wt(q,g),A=[u[0]+g[0]*R,u[1]+g[1]*R,u[2]+g[2]*R],S=[A[0]-f[0],A[1]-f[1],A[2]-f[2]];let ne=Math.hypot(S[0],S[1],S[2]);if(ne<=j)return null;$=[S[0]/ne,S[1]/ne,S[2]/ne]}let _=Gt(),G=Math.max(0,Math.min(y,R)),I=Math.max(0,y-G),J=[G,0,0,k,G+I,k],Q=Jo(e,c,d,m,J),N=Q?(0,Te.offsetConvexPolygonPointsByEdgeAmounts)(J,Q):Ko(G,I,k,(0,Te.resolveSeamBleed)(e.seamBleed,bt)),h=[N[0],N[1]],v=[N[2],N[3]],L=[N[4],N[5]],z=(v[1]+L[1])/2,V=h[0]-v[0],K=L[0]-h[0],he=z-h[1];if(V<=j||K<=j||he<=j||!Number.isFinite(V+K+he))return null;let U=t==="dynamic",oe=Ne(e.polygon.color??"#cccccc"),xe=U&&vt(oe)===r?.dynamicColorKey,fe={color:U||e.shadedColor===r?.paintColor?void 0:e.shadedColor,pointerEvents:n==="none"?"none":void 0,...U&&!xe?{"--pnx":s[0].toFixed(4),"--pny":s[1].toFixed(4),"--pnz":s[2].toFixed(4),"--psr":(oe.r/255).toFixed(4),"--psg":(oe.g/255).toFixed(4),"--psb":(oe.b/255).toFixed(4)}:U?{"--pnx":s[0].toFixed(4),"--pny":s[1].toFixed(4),"--pnz":s[2].toFixed(4)}:null},Oe=([ee,q])=>[f[0]+(ee-G)*g[0]+q*$[0],f[1]+(ee-G)*g[1]+q*$[1],f[2]+(ee-G)*g[2]+q*$[2]],Fe=Oe(h),ie=Oe([v[0],z]),Ue=Oe([L[0],z]),We=_/2,Me=[(Ue[0]-ie[0])/_,(Ue[1]-ie[1])/_,(Ue[2]-ie[2])/_],Be=[Fe[0]-Me[0]*We,Fe[1]-Me[1]*We,Fe[2]-Me[2]*We],Ze=[(ie[0]-Be[0])/_,(ie[1]-Be[1])/_,(ie[2]-Be[2])/_],lt=[Me[0],Me[1],Me[2],0,Ze[0],Ze[1],Ze[2],0,s[0],s[1],s[2],0,Be[0],Be[1],Be[2],1].map(ee=>(Math.round(ee*1e3)/1e3||0).toString()).join(","),ke=Uo();return{transform:`matrix3d(${lt})`,...ke??{},...fe}}function wt(e){if(!e)return!1;let{a:t,b:n,c:r}=e;return t===0&&n===1&&r===2||t===1&&n===2&&r===0||t===2&&n===0&&r===1}function tr(e,t,n,r){let o=e+t;if(r<=0||n<=j||o<=j||!Number.isFinite(e+t+n+r))return mt([e,0,0,n,o,n],r);let i=Math.sqrt(e*e+n*n),a=Math.sqrt(t*t+n*n);if(i<=j||a<=j)return mt([e,0,0,n,o,n],r);let s=-r*n/i,l=-r*e/i,c=r*n/a,d=-r*t/a,m=e+s,u=l,p=o+c,f=n+d,y=-n*o;if(Math.abs(y)<=j)return mt([e,0,0,n,o,n],r);let g=m-p,M=u-f,R=(g*n+M*e)/y,A=p-R*t,S=f-R*n,k=-r*(e+i)/n,$=n+r,_=o+r*(t+a)/n,G=$,I=Math.max(2,r*4),J=A-e,Q=S,N=Math.sqrt(J*J+Q*Q);N>I&&(A=e+J/N*I,S=Q/N*I);let h=Math.sqrt(k*k+r*r);h>I&&(k=k/h*I,$=n+r/h*I);let v=_-o,L=Math.sqrt(v*v+r*r);return L>I&&(_=o+v/L*I,G=n+r/L*I),[A,S,k,$,_,G]}function Jn(e,t,n){if(e.texture||e.vertices.length!==3)return null;let r=_n,o=r,i=e.vertices[0],a=e.vertices[1],s=e.vertices[2],l=i[1]*r,c=i[0]*r,d=i[2]*o,m=a[1]*r,u=a[0]*r,p=a[2]*o,f=s[1]*r,y=s[0]*r,g=s[2]*o,M=m-l,R=u-c,A=p-d,S=f-l,k=y-c,$=g-d,_=-(R*$-A*k),G=-(A*S-M*$),I=-(M*k-R*S),J=Math.sqrt(_*_+G*G+I*I);if(J<=j)return null;_/=J,G/=J,I/=J;let Q=M*M+R*R+A*A,N=f-m,h=y-u,v=g-p,L=l-f,z=c-y,V=d-g,K=N*N+h*h+v*v,he=L*L+z*z+V*V,U=wt(n)?n.a:0,oe=wt(n)?n.b:1,xe=wt(n)?n.c:2,fe=()=>n?Jn(e,t):null;if(!wt(n)){let ue=Q;K>ue&&(U=1,oe=2,xe=0,ue=K),he>ue&&(U=2,oe=0,xe=1)}let Oe=xe===0?l:xe===1?m:f,Fe=xe===0?c:xe===1?u:y,ie=xe===0?d:xe===1?p:g,Ue=U===0?l:U===1?m:f,We=U===0?c:U===1?u:y,Me=U===0?d:U===1?p:g,Be=oe===0?l:oe===1?m:f,Ze=oe===0?c:oe===1?u:y,lt=oe===0?d:oe===1?p:g,ke=Be-Ue,ee=Ze-We,q=lt-Me,ne=Math.sqrt(ke*ke+ee*ee+q*q);if(ne<=j)return fe();let Re=ke/ne,Ce=ee/ne,st=q/ne,le=(Oe-Ue)*Re+(Fe-We)*Ce+(ie-Me)*st,x=Ue+Re*le-Oe,C=We+Ce*le-Fe,T=Me+st*le-ie,E=Math.sqrt(x*x+C*C+T*T);if(E<=j)return fe();x/=E,C/=E,T/=E;let w=Math.max(0,Math.min(ne,le)),re=Math.max(0,ne-w),te=tr(w,re,E,bt),se=te[0],Y=te[1],Pe=te[2],Ee=te[3],me=te[4],Ae=te[5],He=(Ee+Ae)/2,O=se-Pe,b=me-se,Z=He-Y;if(O<=j||b<=j||Z<=j||!Number.isFinite(O+b+Z))return fe();let Ye=1/Gt(),F=O+b,H=F*Ye,be=(b-O)*.5*Ye,Xe=Z*Ye,et=se-w-F*.5,ze=Y,tt=Zn(Re*H,Ce*H,st*H,Re*be+x*Xe,Ce*be+C*Xe,st*be+T*Xe,_,G,I,Oe+Re*et+x*ze,Fe+Ce*et+C*ze,ie+st*et+T*ze),_e;if(Math.floor(t.colorFreezeFrames??1)!==0){let ue=t.directionalLight,de=t.ambientLight,ce=ue?.direction??jn,pe=ue?.color??Nn,nt=Math.max(0,ue?.intensity??$n),ot=de?.color??Un,St=Math.max(0,de?.intensity??Wn),ut=Math.sqrt(ce[0]*ce[0]+ce[1]*ce[1]+ce[2]*ce[2])||1,Le=ce[0]/ut,we=ce[1]/ut,Ao=ce[2]/ut,Lo=nt*Math.max(0,_*Le+G*we+I*Ao),pn=qn(e.color??"#cccccc",Lo,pe,ot,St);_e=t.colorSteps?Qn(pn,t.colorSteps):pn}return{transform:tt,borderWidth:Xn(),color:_e,basis:{a:U,b:oe,c:xe}}}function nr(e,t,n){return n>0&&(n<=1||(t+e)%n===0)}function or(e,t,n,r){let o=Math.floor(r.colorFreezeFrames??1);if(o===0)return;let i=e.__polycssStableTriangleColor;if(!(i===void 0||nr(t,Math.max(0,Math.floor(r.colorFrame??0)),Math.max(1,o)))||i===n)return;let s=n,l=n?Ne(n):void 0,c=e.__polycssStableTriangleColorRgb,d=Math.max(0,Math.floor(r.colorMaxStep??0));d>0&&c&&l&&n&&(l=Kn(c,l,d),s=Lt(l)),e.style.color=s,e.__polycssStableTriangleColor=s,e.__polycssStableTriangleColorRgb=l}function Qt(e,t,n={}){if((n.textureLighting??"baked")!=="baked"||!dt())return!1;let r=Array.from(e.children).filter(i=>i instanceof HTMLElement&&i.localName==="u");if(r.length!==t.length)return!1;let o=t.map((i,a)=>Jn(i,n,r[a].__polycssStableTriangleBasis));if(o.some(i=>!i))return!1;for(let i=0;i<r.length;i+=1){let a=o[i],s=r[i];s.style.visibility&&(s.style.visibility=""),s.__polycssStableTriangleBasis=a.basis,Gn(s),s.style.transform=a.transform,a.borderWidth!==void 0&&(s.style.borderWidth=a.borderWidth),a.color!==void 0&&or(s,i,a.color,n)}return!0}var eo=require("@layoutit/polycss-core");function Kt(e,t,n={},r){return(0,eo.computeTextureAtlasPlanPublic)(e,t,n,void 0,r)}function Zt(e,t,n){let r=new Set(n?.disable??[]);return zt(e,t,r)}var X=require("vue");function Jt(e){for(let t of e)t.startsWith("blob:")&&URL.revokeObjectURL(t)}function to(e){return e.flatMap(t=>t.url?.startsWith("blob:")?[t.url]:[])}function Dt(e){return e.map(t=>({width:t.width,height:t.height,url:null}))}function no(e){return e.length===0||typeof Image>"u"?Promise.resolve():Promise.all(e.map(t=>{let n=new Image;n.src=t;let r=n.decode?.();return r?r.catch(()=>{}):Promise.resolve()})).then(()=>{})}function pt(e){e.length!==0&&(typeof requestAnimationFrame=="function"?requestAnimationFrame(()=>Jt(e)):setTimeout(()=>Jt(e),0))}function en(e,t,n=(0,X.computed)(()=>{}),r=(0,X.computed)(()=>{}),o=(0,X.computed)(()=>{}),i=(0,X.computed)(()=>{}),a=(0,X.computed)(()=>{}),s=(0,X.computed)(()=>{}),l=(0,X.computed)(()=>!1)){let c=(0,X.computed)(()=>new Set(s.value?.disable??[])),d=(0,X.computed)(()=>!c.value.has("b")),m=(0,X.computed)(()=>{let S=typeof document<"u"?document:null;return d.value&&(!S||gt(S))}),u=(0,X.computed)(()=>!c.value.has("u")&&dt()),p=(0,X.computed)(()=>!c.value.has("i")&&t.value!=="dynamic"&&ct()),f=(0,X.computed)(()=>{let S=_t(e.value,t.value,c.value,typeof document<"u"?document:null,o.value,i.value,a.value);return jt(S,n.value,typeof document<"u"?document:null,r.value)}),y=(0,X.ref)(Dt(f.value.packed.pages)),g=(0,X.ref)({plans:e.value,entries:f.value.packed.entries,pages:Dt(f.value.packed.pages)}),M=[],R=0,A=!1;return(0,X.watch)(()=>[f.value,t.value,l.value],([S,k,$],_,G)=>{let{packed:I,atlasScale:J}=S;if($){let h=++R,v=e.value,L=I.entries;if(I.pages.length===0||typeof document>"u"){pt(M),M=[],g.value={plans:v,entries:L,pages:Dt(I.pages)};return}let z=()=>A||h!==R,V=[];Et(I.pages,k,document,J,z).then(async K=>{if(V=to(K),await no(V),z()){pt(V);return}let he=M;M=V,V=[],pt(he),g.value={plans:v,entries:L,pages:K}}).catch(()=>{});return}let Q=!1,N=[];if(G(()=>{Q=!0,pt(N)}),I.pages.length===0){pt(M),M=[],y.value.length!==0&&(y.value=[]);return}typeof document>"u"||(y.value.some(h=>h.url)||(y.value=Dt(I.pages)),Et(I.pages,k,document,J,()=>Q).then(async h=>{if(N=to(h),await no(N),Q){pt(N);return}let v=M;M=N,N=[],pt(v),y.value=h}).catch(()=>{}))},{immediate:!0}),(0,X.getCurrentScope)()&&(0,X.onScopeDispose)(()=>{A=!0,Jt(M),M=[]}),{plans:(0,X.computed)(()=>l.value?g.value.plans:e.value),entries:(0,X.computed)(()=>l.value?g.value.entries:f.value.packed.entries),pages:(0,X.computed)(()=>l.value?g.value.pages:y.value),ready:(0,X.computed)(()=>{let S=l.value?g.value.pages:y.value;return S.length===0||S.every(k=>!!k.url)}),useFullRectSolid:d,useProjectiveQuad:m,useStableTriangle:u,useBorderShape:p}}var oo=require("vue");function tn({entry:e,textureLighting:t,solidPaintDefaults:n,className:r,style:o,domAttrs:i,pointerEvents:a="auto"}){let s=qt(e,t,a,n);if(!s)return null;let l=e.polygon.data?Object.fromEntries(Object.entries(e.polygon.data).map(([d,m])=>[`data-${d}`,String(m)])):{},c=r?.trim()||void 0;return(0,oo.h)("u",{class:c,style:{...s,...o},"data-poly-index":String(e.index),...l,...i})}var ro=require("vue"),rt=require("@layoutit/polycss-core");var rr=new Map([["transform",0],["border-shape",1],["border-width",2],["width",3],["height",4],["color",5]]);function ar(e){let t=e.getAttribute("style");if(!t)return;let r=t.split(";").map(o=>o.trim()).filter(Boolean).map((o,i)=>{let a=o.slice(0,o.indexOf(":")).trim().toLowerCase();return{declaration:o,index:i,order:rr.get(a)??Number.POSITIVE_INFINITY}}).sort((o,i)=>o.order-i.order||o.index-i.index).map(({declaration:o})=>o).join(";");r!==t&&e.setAttribute("style",r)}function nn({entry:e,textureLighting:t,solidPaintDefaults:n,className:r,style:o,domAttrs:i,pointerEvents:a="auto",forceBorderShape:s=!1}){let l=!e.texture&&(0,rt.isFullRectSolid)(e),c=l&&s&&ct(),d=!l||c?(0,rt.cssBorderShapeForPlan)(e):null,m=t==="dynamic",u=Ne(e.polygon.color??"#cccccc"),p=m&&vt(u)===n?.dynamicColorKey,y={transform:d?(0,rt.formatBorderShapeEntryMatrix)(e):(0,rt.formatSolidQuadEntryMatrix)(e),color:m?void 0:e.shadedColor,pointerEvents:a==="none"?"none":void 0,...m?{"--pnx":e.normal[0].toFixed(4),"--pny":e.normal[1].toFixed(4),"--pnz":e.normal[2].toFixed(4),...p?null:{"--psr":(u.r/255).toFixed(4),"--psg":(u.g/255).toFixed(4),"--psb":(u.b/255).toFixed(4)}}:null,...o},g=e.polygon.data?Object.fromEntries(Object.entries(e.polygon.data).map(([A,S])=>[`data-${A}`,String(S)])):{},M=r?.trim()||void 0,R=A=>{let S=A.el;S&&(d?S.style.setProperty("border-shape",d):S.style.removeProperty("border-shape"),ar(S))};return(0,ro.h)(l&&!c?"b":"i",{class:M,style:y,"data-poly-index":String(e.index),...g,...i,onVnodeMounted:R,onVnodeUpdated:R})}var ao=require("vue");function on({entry:e,textureLighting:t,solidPaintDefaults:n,className:r,style:o,domAttrs:i,pointerEvents:a="auto"}){let s=t==="dynamic",l=Ne(e.polygon.color??"#cccccc"),c=s&&vt(l)===n?.dynamicColorKey,d={transform:`matrix3d(${e.projectiveMatrix})`,color:s?void 0:e.shadedColor,pointerEvents:a==="none"?"none":void 0,...s&&!c?{"--pnx":e.normal[0].toFixed(4),"--pny":e.normal[1].toFixed(4),"--pnz":e.normal[2].toFixed(4),"--psr":(l.r/255).toFixed(4),"--psg":(l.g/255).toFixed(4),"--psb":(l.b/255).toFixed(4)}:s?{"--pnx":e.normal[0].toFixed(4),"--pny":e.normal[1].toFixed(4),"--pnz":e.normal[2].toFixed(4)}:null,...o},m=e.polygon.data?Object.fromEntries(Object.entries(e.polygon.data).map(([p,f])=>[`data-${p}`,String(f)])):{},u=r?.trim()||void 0;return(0,ao.h)("b",{class:u,style:d,"data-poly-index":String(e.index),...m,...i})}var io=require("vue"),xt=require("@layoutit/polycss-core");function ir(e,t,n){if(t==="dynamic"){let r=(0,xt.parseHex)(e.polygon.color??"#cccccc"),o=`;--pnx:${e.normal[0].toFixed(4)};--pny:${e.normal[1].toFixed(4)};--pnz:${e.normal[2].toFixed(4)}`;return(0,xt.rgbKey)(r)!==n?.dynamicColorKey&&(o+=`;--psr:${(r.r/255).toFixed(4)};--psg:${(r.g/255).toFixed(4)};--psb:${(r.b/255).toFixed(4)}`),o}return e.shadedColor?`;color:${e.shadedColor}`:""}function rn({entry:e,geometry:t,textureLighting:n,solidPaintDefaults:r,className:o,pointerEvents:i="auto"}){let a=(0,xt.formatCornerShapeElementStyle)(e,t),s=ir(e,n,r),l=i==="none"?";pointer-events:none":"",c=a+s+l,d=u=>{!u||!(u instanceof HTMLElement)||u.setAttribute("style",c)},m=e.polygon.data?Object.fromEntries(Object.entries(e.polygon.data).map(([u,p])=>[`data-${u}`,String(p)])):{};return(0,io.h)("u",{class:o?.trim()||void 0,"data-poly-index":String(e.index),...m,onVnodeMounted:({el:u})=>d(u),onVnodeUpdated:({el:u})=>d(u)})}var an=require("vue"),ae=require("@layoutit/polycss-core"),lr=64;function ln({entry:e,page:t,textureLighting:n,textureImageRendering:r,solidPaintDefaults:o,className:i,style:a,domAttrs:s,pointerEvents:l="auto"}){let c=n==="dynamic",d=(0,ae.resolvePolyTextureImageRendering)(e.polygon,r),m=e.atlasCanonicalSize??lr,u=e.atlasLeafWidth??m,p=e.atlasLeafHeight??m,f=e.canvasW||1,y=e.canvasH||1,g=t?`${(0,ae.formatCssLengthPx)(-e.x/f*u)} ${(0,ae.formatCssLengthPx)(-e.y/y*p)}`:void 0,M=t?`${(0,ae.formatCssLengthPx)(t.width/f*u)} ${(0,ae.formatCssLengthPx)(t.height/y*p)}`:void 0,R=c&&t?.url?`url(${t.url})`:void 0,A={transform:(0,ae.formatMatrix3d)(e.atlasMatrix),"--polycss-atlas-size":`${m}px`,"--polycss-atlas-width":(0,ae.formatCssLengthPx)(u),"--polycss-atlas-height":(0,ae.formatCssLengthPx)(p),"--polycss-atlas-leaf-sizing":e.atlasLeafSizing??"canonical",backgroundImage:t?.url?`url(${t.url})`:void 0,backgroundPosition:g,backgroundSize:M,backgroundRepeat:t?.url?"no-repeat":void 0,imageRendering:d==="pixelated"?"pixelated":void 0,...c?{"--pnx":e.normal[0].toFixed(4),"--pny":e.normal[1].toFixed(4),"--pnz":e.normal[2].toFixed(4)}:null,...c&&R?{maskImage:R,maskMode:"alpha",maskPosition:g,maskSize:M,maskRepeat:"no-repeat",WebkitMaskImage:R,WebkitMaskPosition:g,WebkitMaskSize:M,WebkitMaskRepeat:"no-repeat"}:null,opacity:t?.url?void 0:0,pointerEvents:l==="none"?"none":void 0,...a},S=e.polygon.data?Object.fromEntries(Object.entries(e.polygon.data).map(([$,_])=>[`data-${$}`,String(_)])):{},k=i?.trim()||void 0;return(0,an.h)("s",{class:k,style:A,"data-poly-index":String(e.index),"data-polycss-leaf":"polygon","data-polycss-texture-backend":"atlas","data-polycss-texture-leaf-sizing":e.atlasLeafSizing??"canonical","data-polycss-texture-ready":t?.url?"true":"false","data-polycss-texture-image-rendering":d,"data-polycss-texture-projection":"affine","data-polycss-texture-lighting":n,"data-polycss-texture-leaf-width":String(u),"data-polycss-texture-leaf-height":String(p),"data-polycss-double-sided":e.polygon.doubleSided?"true":void 0,...S,...s})}function sn({plan:e,geometry:t,className:n,style:r,domAttrs:o,pointerEvents:i="auto"}){let a={transform:(0,ae.formatMatrix3d)(t.matrix),"--polycss-atlas-width":(0,ae.formatCssLengthPx)(t.leafWidth),"--polycss-atlas-height":(0,ae.formatCssLengthPx)(t.leafHeight),"--polycss-atlas-leaf-sizing":"image",backgroundImage:`url(${t.url})`,backgroundPosition:`${(0,ae.formatCssLengthPx)(t.backgroundPosition[0])} ${(0,ae.formatCssLengthPx)(t.backgroundPosition[1])}`,backgroundSize:`${(0,ae.formatCssLengthPx)(t.backgroundSize[0])} ${(0,ae.formatCssLengthPx)(t.backgroundSize[1])}`,backgroundRepeat:"no-repeat",backgroundBlendMode:"normal",maskImage:"none",WebkitMaskImage:"none",imageRendering:t.imageRendering==="pixelated"?"pixelated":void 0,"--pnx":e.normal[0].toFixed(4),"--pny":e.normal[1].toFixed(4),"--pnz":e.normal[2].toFixed(4),pointerEvents:i==="none"?"none":void 0,...r},s=e.polygon.data?Object.fromEntries(Object.entries(e.polygon.data).map(([c,d])=>[`data-${c}`,String(d)])):{},l=n?.trim()||void 0;return(0,an.h)("s",{class:l,style:a,"data-poly-index":String(e.index),"data-polycss-leaf":"polygon","data-polycss-texture-backend":"image","data-polycss-texture-leaf-sizing":"image","data-polycss-texture-ready":"true","data-polycss-texture-image-rendering":t.imageRendering,"data-polycss-texture-projection":t.projection,"data-polycss-texture-lighting":t.lighting,"data-polycss-texture-leaf-width":String(t.leafWidth),"data-polycss-texture-leaf-height":String(t.leafHeight),"data-polycss-double-sided":e.polygon.doubleSided?"true":void 0,"data-polycss-texture-source-x":String(t.sourceRect.x),"data-polycss-texture-source-y":String(t.sourceRect.y),"data-polycss-texture-source-width":String(t.sourceRect.width),"data-polycss-texture-source-height":String(t.sourceRect.height),...s,...o})}var lo=require("vue"),sr=Symbol("polycss/scene-context");function so(){return(0,lo.inject)(sr,null)}var B=require("@layoutit/polycss-core"),ur=[.4,-.7,.59],cr="#ffffff",dr=1,fr="#ffffff",mr=.4,yo=1,pr=8,yr=B.PROJECTIVE_QUAD_BLEED,Ke=1e-6,gr=(0,B.resolveProjectiveQuadGuards)({bleed:0}),go={t:[0,0,1],b:[0,0,-1],fl:[0,1,0],br:[0,-1,0],fr:[1,0,0],bl:[-1,0,0]},dn=["t","b","bl","br","fr","fl"],hr=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 uo(e){let t=[];for(let n of dn)(0,B.normalFacesCamera)(go[n],e)&&t.push(n);return t.join("|")}function xr(e,t,n){let r=e.__polycssVoxelBrushState??(e.__polycssVoxelBrushState={});r.color!==t&&(e.style.color=t,r.color=t),r.transform!==n&&(e.style.transform=n,r.transform=n)}function Pr(e){let t=e.vertices;if(t.length<3)return null;let n=t[0],r=0,o=0,i=0;for(let s=1;s+1<t.length;s+=1){let l=t[s],c=t[s+1],d=l[1]-n[1],m=l[0]-n[0],u=l[2]-n[2],p=c[1]-n[1],f=c[0]-n[0],y=c[2]-n[2];r-=m*y-u*f,o-=u*p-d*y,i-=d*f-m*p}let a=Math.hypot(r,o,i);return a<=1e-9?null:[Math.round(r/a),Math.round(o/a),Math.round(i/a)]}function br(e){if(e.texture||e.material||e.uvs||e.textureTriangles||e.vertices.length!==4)return null;let t=Pr(e),n=t?hr.get(t.join(",")):void 0;if(!n)return null;let r=1/0,o=1/0,i=1/0,a=-1/0,s=-1/0,l=-1/0;for(let m of e.vertices)r=Math.min(r,m[0]),o=Math.min(o,m[1]),i=Math.min(i,m[2]),a=Math.max(a,m[0]),s=Math.max(s,m[1]),l=Math.max(l,m[2]);let c=1e-6,d=Er(e.color);return Math.abs(l-i)<=c?{axis:"z",face:n,left:o*B.BASE_TILE,top:r*B.BASE_TILE,width:Math.max(0,(s-o)*B.BASE_TILE),height:Math.max(0,(a-r)*B.BASE_TILE),z:i*B.BASE_TILE,baseColor:d,bleed:un()}:Math.abs(a-r)<=c?{axis:"x",face:n,left:o*B.BASE_TILE,top:i*B.BASE_TILE,width:Math.max(0,(s-o)*B.BASE_TILE),height:Math.max(0,(l-i)*B.BASE_TILE),z:-r*B.BASE_TILE,baseColor:d,bleed:un()}:Math.abs(s-o)<=c?{axis:"y",face:n,left:i*B.BASE_TILE,top:r*B.BASE_TILE,width:Math.max(0,(l-i)*B.BASE_TILE),height:Math.max(0,(a-r)*B.BASE_TILE),z:-o*B.BASE_TILE,baseColor:d,bleed:un()}:null}function un(){return{left:0,right:0,top:0,bottom:0}}function vr(e){let t=r=>String(Number(r.toFixed(6))),n=`${e.item.baseColor}|${e.variableAxis}`;for(let r=0;r<3;r+=1)r!==e.variableAxis&&(n+=`|${r}:${t(e.fixed[r])}`);return n}function co(e){return[e[1]*B.BASE_TILE,e[0]*B.BASE_TILE,e[2]*B.BASE_TILE]}function fo(e,t){return e.axis==="x"?[t[0],t[2]]:e.axis==="y"?[t[2],t[1]]:[t[0],t[1]]}function Sr(e,t,n){let r=e.left,o=e.left+e.width,i=e.top,a=e.top+e.height;if(Math.abs(t[0]-n[0])<=Ke){if(Math.abs(t[0]-r)<=Ke)return"left";if(Math.abs(t[0]-o)<=Ke)return"right"}if(Math.abs(t[1]-n[1])<=Ke){if(Math.abs(t[1]-i)<=Ke)return"top";if(Math.abs(t[1]-a)<=Ke)return"bottom"}return null}function Tr(e,t){let n=null;for(let r=0;r<3;r+=1)if(!(Math.abs(e[r]-t[r])<=Ke)){if(n!==null)return null;n=r}return n}function Mr(e,t,n){let r=t.vertices,o=co(r[n]),i=co(r[(n+1)%r.length]),a=Sr(e,fo(e,o),fo(e,i));if(!a)return null;let s=Tr(o,i);if(s===null)return null;let l=Math.min(o[s],i[s]),c=Math.max(o[s],i[s]);return c-l>Ke?{item:e,side:a,variableAxis:s,fixed:o,start:l,end:c}:null}function mo(e){e.item.bleed[e.side]=Math.max(e.item.bleed[e.side],yr)}function Cr(e,t){let n=new Map;for(let r of t){let o=e[r.sourceIndex];if(o)for(let i=0;i<o.vertices.length;i+=1){let a=Mr(r,o,i);if(!a)continue;let s=vr(a),l=n.get(s);l?l.push(a):n.set(s,[a])}}for(let r of n.values()){if(r.length<2)continue;r.sort((i,a)=>i.start-a.start||i.end-a.end);let o=[];for(let i of r){o=o.filter(a=>a.end>i.start+Ke);for(let a of o)a.item.sourceIndex!==i.item.sourceIndex&&(mo(a),mo(i));o.push(i)}}}function Rr(e){let t=(0,B.parsePureColor)(e);return t?{r:t.rgb[0],g:t.rgb[1],b:t.rgb[2],alpha:t.alpha}:{r:255,g:255,b:255,alpha:1}}function Er(e){if(!e)return"#cccccc";let t=(0,B.parsePureColor)(e);if(!t)return e;let n={r:t.rgb[0],g:t.rgb[1],b:t.rgb[2],alpha:t.alpha};if(n.alpha<1){let r=Math.round(Math.max(0,n.alpha)*1e3)/1e3;return`rgba(${cn(n.r)}, ${cn(n.g)}, ${cn(n.b)}, ${r})`}return Ar(n)}function Ar({r:e,g:t,b:n}){let r=o=>Math.round(Math.max(0,Math.min(255,o))).toString(16).padStart(2,"0");return`#${r(e)}${r(t)}${r(n)}`}function cn(e){return Math.round(Math.max(0,Math.min(255,e)))}function Lr(e,t,n,r){let o=n?.direction??ur,i=Math.hypot(o[0],o[1],o[2])||1,a=o[0]/i,s=o[1]/i,l=o[2]/i,c=Math.max(0,n?.intensity??dr)*Math.max(0,e[0]*a+e[1]*s+e[2]*l),d=Math.max(0,r?.intensity??mr),m=n?.color??cr,u=r?.color??fr,p=(0,B.shadePolygon)(t,c,m,u,d),f=Rr(t);if(f.alpha>=1)return p;let y=parseInt(p.slice(1,3),16),g=parseInt(p.slice(3,5),16),M=parseInt(p.slice(5,7),16);return`rgba(${y}, ${g}, ${M}, ${f.alpha})`}function wr(e){if(!e?.length)return[];let t=[];for(let n=0;n<e.length;n+=1){let r=e[n],o=br(r);if(!o||o.width<=0||o.height<=0)return[];t.push({...o,sourceIndex:n})}return Cr(e,t),t}function Dr(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 Ir(e){let t=e.left,n=e.top,r=e.left+e.width,o=e.top+e.height;return[t,n,r,n,r,o,t,o]}function Vr(e){return new Map([[0,e.bleed.top],[1,e.bleed.right],[2,e.bleed.bottom],[3,e.bleed.left]])}function Or(e,t){let n=e.split(",").map(Number);if(n.length!==16||n.some(o=>!Number.isFinite(o)))return null;let r=B.SOLID_QUAD_CANONICAL_SIZE/t;for(let o=0;o<8;o+=1)n[o]*=r;return`matrix3d(${n.map(o=>Number(o.toFixed(6))).join(",")})`}function po(e,t){let n=e.left-e.bleed.left,r=e.top-e.bleed.top,o=e.width+e.bleed.left+e.bleed.right,i=e.height+e.bleed.top+e.bleed.bottom,a=e.z,s=o/t,l=i/t;return`matrix3d(${(e.axis==="x"?[s,0,0,0,0,0,l,0,0,-1,0,0,n,-a,r,1]:e.axis==="y"?[0,0,s,0,0,l,0,0,-1,0,0,0,-a,r,n,1]:[s,0,0,0,0,l,0,0,0,0,1,0,n,r,a,1]).map(d=>Number(d.toFixed(6))).join(",")})`}function Fr(e,t){let{xAxis:n,yAxis:r,normal:o,tx:i,ty:a,tz:s}=Dr(e),l=(0,B.computeProjectiveQuadMatrix)(Ir(e),n,r,o,i,a,s,gr,Vr(e));return l?Or(l,t)??po(e,t):po(e,t)}function Br(e){let t=e.defaultView?.matchMedia;return t?t("(pointer: coarse)").matches||t("(hover: none)").matches:!1}function kr(e){return Br(e)?pr:yo}function Hr(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 zr(e,t){let n=Hr(e),r=t.meshRotation;r&&(n=(0,B.rotateVec3)(n,r[0]??0,r[1]??0,r[2]??0));let[o,i]=(0,B.rotateVec3)(n,t.rotX,0,t.rotY);return{x:o,y:i}}function _r(e,t,n){let r=e.filter(u=>t.has(u.face)).map(u=>({item:u,...zr(u,n)}));if(r.length===0)return[];let o=1/0,i=-1/0,a=1/0,s=-1/0;for(let u of r)o=Math.min(o,u.x),i=Math.max(i,u.x),a=Math.min(a,u.y),s=Math.max(s,u.y);let l=4,c=Math.max(1e-6,i-o),d=Math.max(1e-6,s-a),m=new Map;for(let u of r){let p=Math.min(l-1,Math.max(0,Math.floor((u.x-o)/c*l))),f=Math.min(l-1,Math.max(0,Math.floor((u.y-a)/d*l))),y=`${p}:${f}`,g=m.get(y);g||(g={tx:p,ty:f,sourceIndex:u.item.sourceIndex,items:[]},m.set(y,g)),g.items.push(u.item),g.sourceIndex=Math.min(g.sourceIndex,u.item.sourceIndex)}return Array.from(m.values()).sort((u,p)=>u.ty-p.ty||u.tx-p.tx||u.sourceIndex-p.sourceIndex).flatMap(u=>u.items)}function ho(e){let{doc:t,wrapper:n,polygons:r,directionalLight:o,ambientLight:i}=e,a=wr(r);if(a.length===0)return null;let s=new Set(a.map(h=>h.face));n.classList.add("polycss-voxel-mesh");let l=kr(t);l!==yo&&n.style.setProperty("--polycss-voxel-primitive",`${l}px`);let c=new Map,d=(h,v)=>{let L=`${h}|${v}`,z=c.get(L);if(z)return z;let V=Lr(go[h],v,o,i);return c.set(L,V),V},m=new Map,u=new Map,p=new Map,f=new Map;for(let h of a){let v=f.get(h.face);v||(v=[],f.set(h.face,v)),v.push(h)}let y="",g=0,M=new Set,R=h=>{let v=m.get(h.sourceIndex);return v||(v=t.createElement("b"),m.set(h.sourceIndex,v),xr(v,d(h.face,h.baseColor),Fr(h,l))),v},A=h=>{let v=u.get(h);return v||(v=t.createElement("span"),v.className=`polycss-voxel-face polycss-voxel-face-${h}`,v.dataset.polycssVoxelFace=h,v.__polycssVoxelFaceHost=!0,u.set(h,v)),v},S=()=>{for(let h of Array.from(n.childNodes))if(!h.__polycssVoxelFaceHost)return h;return null},k=(h,v)=>{let L=v.map(K=>K.sourceIndex).join(",");if(p.get(h)===L)return;let z=A(h),V=t.createDocumentFragment();for(let K of v)V.appendChild(R(K));z.replaceChildren(V),p.set(h,L)},$=()=>{for(let h of dn)s.has(h)&&k(h,f.get(h)??[])},_=h=>new Set(h.split("|").filter(Boolean)),G=h=>{let v=_(h);return dn.filter(L=>v.has(L)&&s.has(L))},I=h=>{let v=0;for(let L of h)v+=f.get(L)?.length??0;return v},J=h=>{let v=new Set,L=[],z=new Map;for(let V of h){v.has(V.face)||(v.add(V.face),L.push(V.face));let K=z.get(V.face);K||(K=[],z.set(V.face,K)),K.push(V)}return{orderedFaces:L,itemsByFace:z}},Q=(h,v)=>{let L=new Set(h);for(let z of M){if(L.has(z))continue;let V=u.get(z);V?.parentNode===n&&n.removeChild(V)}if(v){let z=t.createDocumentFragment();for(let V of h)z.appendChild(A(V));n.insertBefore(z,S()),M=L;return}for(let z=0;z<h.length;z+=1){let V=h[z],K=A(V);if(K.parentNode===n)continue;let he=null;for(let U=z+1;U<h.length;U+=1){let oe=u.get(h[U]);if(oe?.parentNode===n){he=oe;break}}n.insertBefore(K,he??S())}M=L},N=(h,v,L)=>{if(!L){let U=G(h);Q(U,!1),g=I(U);return}let z=new Set(h.split("|").filter(Boolean)),V=_r(a,z,v),{orderedFaces:K,itemsByFace:he}=J(V);for(let U of K)k(U,he.get(U)??[]);Q(K,!0),g=V.length};return $(),{get brushCount(){return g},render(h){y=uo(h),N(y,h,!0)},syncCamera(h){let v=uo(h);v!==y&&(y=v,N(v,h,!1))},dispose(){for(let h of u.values())h.remove();n.classList.remove("polycss-voxel-mesh"),n.style.removeProperty("--polycss-voxel-primitive"),m.clear(),u.clear(),p.clear(),g=0,M=new Set,y=""}}}var at=require("vue");var fn=(0,at.defineComponent)({name:"PolyOrthographicCamera",props:{zoom:{type:Number},target:{type:Array},rotX:{type:Number},rotY:{type:Number},distance:{type:Number},class:{type:String}},setup(e,{slots:t}){let n=(0,at.computed)(()=>({zoom:e.zoom,target:e.target,rotX:e.rotX,rotY:e.rotY,distance:e.distance,projection:"orthographic",perspectiveStyle:"none"})),{store:r,cameraRef:o,sceneElRef:i,cameraElRef:a,autoCenterOffset:s,applyTransformDirect:l}=qe(n);return(0,at.provide)(De,{store:r,cameraRef:o,sceneElRef:i,cameraElRef:a,autoCenterOffset:s,applyTransformDirect:l}),()=>(0,at.h)("div",{ref:a,class:`polycss-camera${e.class?` ${e.class}`:""}`,style:{perspective:"1000000px"},"data-polycss-camera-projection":"orthographic","data-polycss-camera-perspective":"none","data-polycss-camera-applied-perspective":"1000000px","data-polycss-camera-zoom":o.value.state.zoom,"data-polycss-camera-distance":o.value.state.distance,"data-polycss-camera-rot-x":o.value.state.rotX,"data-polycss-camera-rot-y":o.value.state.rotY,"data-polycss-camera-target":o.value.state.target.join(",")},t.default?.())}});var it=require("vue");var xo=32e3,jr=(0,it.defineComponent)({name:"PolyPerspectiveCamera",props:{zoom:{type:Number},target:{type:Array},rotX:{type:Number},rotY:{type:Number},distance:{type:Number},perspective:{type:Number,default:void 0},class:{type:String}},setup(e,{slots:t}){let n=(0,it.computed)(()=>({zoom:e.zoom,target:e.target,rotX:e.rotX,rotY:e.rotY,distance:e.distance,projection:"perspective",perspectiveStyle:`${typeof e.perspective=="number"?e.perspective:xo}px`})),{store:r,cameraRef:o,sceneElRef:i,cameraElRef:a,autoCenterOffset:s,applyTransformDirect:l}=qe(n);return(0,it.provide)(De,{store:r,cameraRef:o,sceneElRef:i,cameraElRef:a,autoCenterOffset:s,applyTransformDirect:l}),()=>{let c=`${typeof e.perspective=="number"?e.perspective:xo}px`;return(0,it.h)("div",{ref:a,class:`polycss-camera${e.class?` ${e.class}`:""}`,style:{perspective:c},"data-polycss-camera-projection":"perspective","data-polycss-camera-perspective":c,"data-polycss-camera-applied-perspective":c,"data-polycss-camera-zoom":o.value.state.zoom,"data-polycss-camera-distance":o.value.state.distance,"data-polycss-camera-rot-x":o.value.state.rotX,"data-polycss-camera-rot-y":o.value.state.rotY,"data-polycss-camera-target":o.value.state.target.join(",")},t.default?.())}}});var mn=new WeakMap;function Po(e,t){mn.set(e,t)}function bo(e){mn.delete(e)}function vo(e){let t=e;for(;t;){if(t instanceof HTMLElement){let n=mn.get(t);if(n)return n}t=t.parentElement}return null}var So=new WeakMap,To=new WeakMap;function Nr(e){let t={};return e.paintColor&&(t["--polycss-paint"]=e.paintColor),e.dynamicColor&&(t["--psr"]=(e.dynamicColor.r/255).toFixed(4),t["--psg"]=(e.dynamicColor.g/255).toFixed(4),t["--psb"]=(e.dynamicColor.b/255).toFixed(4)),Object.keys(t).length>0?t:null}function Mo(e){if(e.length===0)return e;let t=(0,D.computeSceneBbox)(e),n=(t.min[0]+t.max[0])/2,r=(t.min[1]+t.max[1])/2,o=(t.min[2]+t.max[2])/2;if(n===0&&r===0&&o===0)return e;let i=a=>[a[0]-n,a[1]-r,a[2]-o];return e.map(a=>({...a,vertices:a.vertices.map(i),...a.textureTriangles?.length?{textureTriangles:a.textureTriangles.map(s=>({...s,vertices:s.vertices.map(i)}))}:null}))}var Co=(0,P.defineComponent)({name:"PolyMesh",inheritAttrs:!1,props:{id:{type:String,default:void 0},src:{type:String,default:void 0},mtl:{type:String,default:void 0},polygons:{type:Array,default:void 0},voxelSource:{type:Object,default:void 0},autoCenter:{type:Boolean,default:!1},textureLighting:{type:String,default:void 0},textureQuality:{type:[Number,String],default:void 0},textureLeafSizing:{type:String,default:void 0},textureImageRendering:{type:String,default:void 0},textureBackend:{type:String,default:void 0},textureProjection:{type:String,default:void 0},seamBleed:{type:[Number,String],default:void 0},atomicAtlas:{type:Boolean,default:!1},onFrameReady:{type:Function,default:void 0},castShadow:{type:Boolean,default:!1},receiveShadow:{type:Boolean,default:!1},shadowDefinition:{type:Number,default:void 0},merge:{type:Boolean,default:!0},meshResolution:{type:String,default:void 0},parseOptions:{type:Object,default:void 0},class:{type:String},position:{type:Array,default:void 0},scale:{type:[Number,Array],default:void 0},rotation:{type:Array,default:void 0},onClick:{type:Function,default:void 0},onContextMenu:{type:Function,default:void 0},onDoubleClick:{type:Function,default:void 0},onWheel:{type:Function,default:void 0},onPointerDown:{type:Function,default:void 0},onPointerUp:{type:Function,default:void 0},onPointerMove:{type:Function,default:void 0},onPointerOver:{type:Function,default:void 0},onPointerOut:{type:Function,default:void 0},onPointerEnter:{type:Function,default:void 0},onPointerLeave:{type:Function,default:void 0},onPointerCancel:{type:Function,default:void 0}},setup(e,{slots:t,attrs:n,expose:r}){let o=(0,P.computed)(()=>e.src??""),i=(0,P.computed)(()=>{let x={...e.parseOptions??{}};return e.mtl&&(x.mtlUrl=e.mtl),e.meshResolution!==void 0&&(x.meshResolution=e.meshResolution),Object.keys(x).length>0?x:void 0}),a=Tt(o,i.value),s=(0,P.computed)(()=>e.src?a.polygons.value:e.polygons??[]),l=(0,P.ref)(null),c=null;(0,P.watch)(s,()=>{l.value=null,c=null});let d=(0,P.computed)(()=>l.value??s.value),m=(0,P.computed)(()=>e.merge?(0,D.optimizeMeshPolygons)(d.value,e.meshResolution!==void 0?{meshResolution:e.meshResolution}:void 0):d.value),u=(0,P.computed)(()=>e.autoCenter?Mo(m.value):m.value),p=!t.polygon,f=so(),y=(0,P.inject)(De,null),g=(0,P.ref)(0),M;(0,P.watchEffect)(x=>{M?.(),M=y?.store.subscribe(()=>{g.value++}),x(()=>{M?.(),M=void 0})});let R=(0,P.computed)(()=>e.textureLighting??f?.value.textureLighting??"baked"),A=(0,P.computed)(()=>f?.value.strategies),S=(0,P.computed)(()=>e.seamBleed??f?.value.seamBleed??D.DEFAULT_SEAM_BLEED),k=(0,P.computed)(()=>e.textureLeafSizing??f?.value.textureLeafSizing),$=(0,P.computed)(()=>e.textureImageRendering??f?.value.textureImageRendering),_=(0,P.computed)(()=>e.textureBackend??f?.value.textureBackend),G=(0,P.computed)(()=>e.textureProjection??f?.value.textureProjection),I=(0,P.computed)(()=>f?.value.directionalLight),J=(0,P.computed)(()=>f?.value.pointLights),Q=(0,P.computed)(()=>f?.value.ambientLight),N=(0,P.computed)(()=>e.src?a.voxelSource.value:e.voxelSource??void 0),h=(0,P.computed)(()=>!!(N.value&&l.value===null&&!t.polygon&&!t.default&&R.value==="baked"&&!e.castShadow)),v=(0,P.computed)(()=>{if(R.value!=="dynamic")return null;let x=e.rotation;if(!x||x[0]===0&&x[1]===0&&x[2]===0)return null;let C=f?.value.directionalLight?.direction;if(!C)return null;let T=(0,D.inverseRotateVec3)(C,x),E=Math.hypot(T[0],T[1],T[2])||1;return{"--plx":(T[0]/E).toFixed(2),"--ply":(T[1]/E).toFixed(2),"--plz":(T[2]/E).toFixed(2)}}),L=(0,P.ref)(e.rotation),z=(0,P.ref)(0),V=(0,P.computed)(()=>{let x=I.value;if(!x)return x;let C=(0,$e.worldDirectionalLightToCss)(x);return L.value?{...C,direction:(0,D.inverseRotateVec3)(C.direction,L.value)}:C}),K=(0,P.computed)(()=>{let x=J.value;if(!x||x.length===0)return;let C=e.position??[0,0,0],T=L.value??[0,0,0],E=T[0]!==0||T[1]!==0||T[2]!==0;return x.map(w=>{let re=[w.position[0]-C[0],w.position[1]-C[1],w.position[2]-C[2]],te=E?(0,D.inverseRotateVec3)(re,T):re;return{...w,position:te}})}),he=void 0,U=(0,P.computed)(()=>{if(!p||h.value)return[];let x=(0,ge.buildTextureEdgeRepairSets)(u.value),C=S.value==="auto"||typeof S.value=="number"&&Number.isFinite(S.value)&&S.value>0?(0,ge.buildSeamBleedPolygonEdges)(u.value,{directionalLight:V.value,ambientLight:Q.value}):null,T=(0,$e.buildBasisHints)(u.value,{directionalLight:V.value,ambientLight:Q.value});return u.value.map((E,w)=>Kt(E,w,{directionalLight:V.value,pointLights:K.value,ambientLight:Q.value,seamBleed:C?.has(w)?S.value:void 0,seamEdges:C?.get(w),textureEdgeRepairEdges:x[w],lightOccludedPolyIndices:he},T[w]))}),oe=(0,P.computed)(()=>e.textureQuality),xe=(0,P.computed)(()=>e.atomicAtlas),fe=en(U,R,oe,k,_,$,G,A,xe),Oe=[],Fe=()=>{let x=Oe.splice(0);for(let C of x)C()};(0,P.watch)(()=>fe.ready.value,x=>{x&&Fe()},{immediate:!0}),(0,P.onBeforeUnmount)(Fe);let ie=(0,P.computed)(()=>p?Zt(fe.plans.value,R.value,A.value):{});(0,P.watch)(()=>fe.entries.value,()=>{e.atomicAtlas&&fe.ready.value&&e.onFrameReady?.()},{flush:"sync"});let Ue=(0,P.computed)(()=>Nr(ie.value)),We=(0,P.computed)(()=>{if(!e.castShadow||f?.value.receiverRegistry?.hasAny.value)return null;let x=f?.value,C=x?.groundCssZ??null;if(C===null)return null;let T=x?.shadow,E=x?.directionalLight?.direction??[.4,-.7,.59],w=(0,D.worldDirectionToCss)(E),re=e.position?.[2]??0,te=C-re*D.BASE_TILE,se=(0,D.findOverlappingPolygonDuplicates)(u.value,{normalTolerance:.1,distanceTolerance:.5,overlapFraction:.95,preserveDoubleSidedBackfaces:!1}),Y=[],Pe=1/0,Ee=1/0,me=-1/0,Ae=-1/0,He=1/0,O=1/0,b=-1/0,Z=-1/0,Je=u.value,Ye=U.value;for(let pe=0;pe<Je.length;pe++){if(se.has(pe)||!Ye[pe])continue;let ot=Je[pe],St=[];for(let ut of ot.vertices){let Le=[ut[1]*D.BASE_TILE,ut[0]*D.BASE_TILE,ut[2]*D.BASE_TILE];Le[0]<He&&(He=Le[0]),Le[1]<O&&(O=Le[1]),Le[0]>b&&(b=Le[0]),Le[1]>Z&&(Z=Le[1]);let we=(0,D.projectCssVertexToGround)(Le,w,te);St.push(we),we[0]<Pe&&(Pe=we[0]),we[1]<Ee&&(Ee=we[1]),we[0]>me&&(me=we[0]),we[1]>Ae&&(Ae=we[1])}Y.push(St)}if(Y.length===0)return null;let F=T?.maxExtend??2e3,H=Math.max(Pe,He-F),be=Math.max(Ee,O-F),Xe=Math.min(me,b+F),et=Math.min(Ae,Z+F),ze=Xe-H,tt=et-be;if(!(ze>0)||!(tt>0))return null;let _e=T?.color??"#000000",ue=T?.opacity??.25,de=(0,D.parseHexColor)(_e)?.rgb??[0,0,0],ce="";for(let pe of Y){let nt=(0,D.ensureCcw2D)(pe);ce+=`M${(nt[0][0]-H).toFixed(3)},${(nt[0][1]-be).toFixed(3)}`;for(let ot=1;ot<nt.length;ot++)ce+=`L${(nt[ot][0]-H).toFixed(3)},${(nt[ot][1]-be).toFixed(3)}`;ce+="Z"}return(0,P.h)("svg",{class:"polycss-shadow polycss-shadow-svg",width:String(ze),height:String(tt),viewBox:`0 0 ${ze} ${tt}`,style:{position:"absolute",top:"0",left:"0",display:"block",overflow:"hidden",transformOrigin:"0 0",pointerEvents:"none",willChange:"transform",transform:`translate3d(${H.toFixed(3)}px,${be.toFixed(3)}px,${te.toFixed(3)}px)`}},[(0,P.h)("path",{d:ce,fill:`rgb(${de[0]},${de[1]},${de[2]})`,"fill-rule":"nonzero",stroke:`rgb(${de[0]},${de[1]},${de[2]})`,"stroke-width":"3","stroke-linejoin":"round",opacity:ue.toFixed(4)})])}),Me=(0,P.computed)(()=>e.receiveShadow?(0,$e.buildSharedEdgeMap)(u.value):void 0),Be=(0,P.computed)(()=>{if(!e.receiveShadow)return[];let x=f?.value,C=x?.shadowRegistry;if(!C)return[];C.version.value,g.value;let T=C.getEntries();if(T.length===0)return[];let E=x?.directionalLight?.direction??[.4,-.7,.59],w=(0,D.worldDirectionToCss)(E),te=R.value==="dynamic"?[]:x?.pointLights??[],se=te.map(F=>({position:(0,D.worldPositionToCss)(F.position),color:F.color,intensity:F.intensity})),Y=te.map((F,H)=>F.castShadow?H:-1).filter(F=>F>=0),Pe=!!x?.directionalLight?.direction&&(x.directionalLight.intensity??1)>0,Ee=Y.length>0,me=x?.shadow?.lift??.001,Ae=(0,D.prepareReceiverFacePlanes)(u.value,e.position??[0,0,0],e.scale,new Set,me,e.rotation);if(Ae.length===0)return[];let He=[],O=0,b=Me.value;for(let F of T){let H=F(),be=(0,D.prepareCasterPolyItems)(H.polygons,H.position,H.scale,()=>!0,H.rotation??null),Xe=H.polygons===u.value,et;if(!Xe&&(H.polygons.length>=40||Ee)){let _e=H.rotation??null,ue=H.position,de=JSON.stringify(H.scale??null),ce=`${ue[0]},${ue[1]},${ue[2]}|${_e?_e.join(","):"n"}|${de}`,pe=So.get(H.polygons);(pe===void 0||To.get(H.polygons)!==ce)&&(pe=(0,D.prepareCasterEdgeOwners)(H.polygons,ue,H.scale,_e),So.set(H.polygons,pe),To.set(H.polygons,ce)),et=pe}let ze,tt;if(x?.shadow?.parametric){let _e=H.shadowDefinition??x.shadow.definition??16,ue=(0,D.buildParametricCasterOverride)({polysWorldVerts:be.map(de=>de.wv),lightDir:w,definition:_e,isSelf:Xe,style:x.shadow.style,pointLights:Y.map(de=>({position:se[de].position,index:de}))});ze=ue.overrideSilhouette,tt=ue.overridePointSilhouettes}He.push({id:Symbol(`caster-${O++}`),items:be,selfShadowEdgeMap:Xe?b:void 0,edgeOwners:et,casterPolygonCount:H.polygons.length,overrideSilhouette:ze,overridePointSilhouettes:tt})}let Z=y?.store.getState().cameraState,Je={rotX:Z?.rotX??65,rotY:Z?.rotY??45,meshRotation:e.rotation};return(0,D.computeMergedReceiverShadows)({receiverPlanes:Ae,receiverPolygons:u.value,receiverHasTexture:u.value.some(F=>F.texture!==void 0),casters:He,lightDir:w,runDirectional:Pe,pointPasses:Y.map(F=>({lightPos:se[F].position,index:F})),allPointLights:se,cameraRot:Je,ambientLight:x?.ambientLight,directionalLight:x?.directionalLight,shadow:{color:x?.shadow?.color,opacity:x?.shadow?.opacity??.25,maxExtend:x?.shadow?.maxExtend}}).map(F=>(0,P.h)("svg",{key:`receiver-${F.faceIndex}`,class:"polycss-shadow polycss-shadow-svg polycss-shadow-receiver","data-poly-shadow-type":"receiver","data-poly-shadow-receiver-face":String(F.faceIndex),"data-poly-shadow-receiver-polys":JSON.stringify(F.memberPolyIndices),width:String(F.width),height:String(F.height),viewBox:`0 0 ${F.width} ${F.height}`,style:{position:"absolute",top:"0",left:"0",display:"block",overflow:"hidden",transformOrigin:"0 0",pointerEvents:"none",willChange:"transform",opacity:String(F.svgOpacity),transform:F.matrixCss}},[...F.baseFill&&F.baseD?[(0,P.h)("path",{d:F.baseD,fill:F.baseFill,"fill-rule":"nonzero"})]:[],...F.layers.map((H,be)=>(0,P.h)("path",{key:be,d:H.d,fill:H.fill,"fill-rule":"nonzero",...H.opacity!==1?{opacity:H.opacity.toFixed(4)}:{},...H.multiply?{style:{mixBlendMode:"multiply"}}:{}}))]))}),Ze=(0,P.shallowRef)(u.value),lt=-1;(0,P.watch)(u,x=>{let C=f?.value.shadow?.followAnimation??!1,T=x.length!==lt;lt>=0&&!C&&!T||(lt=x.length,Ze.value=x)},{immediate:!0});let ke=Symbol();(0,P.watch)(()=>e.castShadow,(x,C,T)=>{let E=f?.value.shadowRegistry;E&&(x?E.register(ke,()=>{let w=Ze.value,re=(0,D.findOverlappingPolygonDuplicates)(w,{normalTolerance:.1,distanceTolerance:.5,overlapFraction:.95,preserveDoubleSidedBackfaces:!1}),te=new Set,se=U.value;for(let Y=0;Y<se.length;Y++)se[Y]&&!re.has(Y)&&te.add(Y);return{polygons:w,position:e.position??[0,0,0],scale:e.scale,rotation:e.rotation,renderedPolygonIndices:te,shadowDefinition:e.shadowDefinition}}):E.unregister(ke),T(()=>E.unregister(ke)))},{immediate:!0});let ee=Symbol();(0,P.watch)(()=>e.receiveShadow,(x,C,T)=>{let E=f?.value.receiverRegistry;E&&(x?E.register(ee):E.unregister(ee),T(()=>E.unregister(ee)))},{immediate:!0}),(0,P.onBeforeUnmount)(()=>{f?.value.shadowRegistry?.unregister(ke),f?.value.receiverRegistry?.unregister(ee)});let q=(0,P.ref)(null),ne={get element(){return q.value},get id(){return e.id},getPosition:()=>e.position,getRotation:()=>e.rotation,getScale:()=>e.scale,getPolygons:()=>c??u.value,setPolygons(x){let C=e.autoCenter?Mo(x):x;c=C;let T=q.value,E=T&&p&&Qt(T,C,{directionalLight:V.value,ambientLight:Q.value,textureLighting:R.value,strategies:A.value,seamBleed:S.value,colorFrame:++z.value,colorFreezeFrames:0});l.value=x.slice()},updatePolygon(x,C){let T=c??u.value,E=typeof x=="number"?x:T.indexOf(x);E<0||E>=T.length||(Object.assign(T[E],C),l.value=T.slice(),c=null)},rebakeAtlas:()=>{L.value=e.rotation},whenTexturesReady(){return fe.ready.value?Promise.resolve():new Promise(x=>{Oe.push(x)})}};r(ne),(0,P.onMounted)(()=>{q.value&&Po(q.value,ne)}),(0,P.onBeforeUnmount)(()=>{q.value&&bo(q.value)});let Re=(0,P.ref)(null);(0,P.watchEffect)(x=>{let C=q.value;if(Re.value?.dispose(),Re.value=null,!h.value||!C)return;let T=ho({doc:C.ownerDocument,wrapper:C,polygons:u.value,directionalLight:V.value,ambientLight:Q.value});if(!T)return;let E=()=>{let re=y?.store.getState().cameraState;return{rotX:re?.rotX??65,rotY:re?.rotY??45,meshRotation:e.rotation}};Re.value=T,T.render(E());let w=y?.store.subscribe(()=>{T.syncCamera(E())});x(()=>{w?.(),T.dispose(),Re.value===T&&(Re.value=null)})});let Ce=null;function st(x,C,T){let E=[];if(typeof document<"u"&&typeof document.elementsFromPoint=="function"){let Y=document.elementsFromPoint(C,T),Pe=new Set;for(let Ee of Y){let me=vo(Ee);me&&!Pe.has(me)&&(Pe.add(me),E.push({object:me}))}}let w=0,re=0,te=y?.cameraElRef.value;if(te){let Y=te.getBoundingClientRect();Y.width>0&&Y.height>0&&(w=(C-Y.left)/Y.width*2-1,re=-((T-Y.top)/Y.height*2-1))}let se=0;return Ce&&(se=Math.hypot(C-Ce.x,T-Ce.y)),{object:E[0]?.object??ne,eventObject:ne,intersections:E,pointer:{x:w,y:re},delta:se,nativeEvent:x,stopPropagation:()=>x.stopPropagation()}}function le(x,C,T,E){x&&x(st(C,T,E))}return()=>{let C={transform:(0,D.buildPolyMeshTransform)({position:e.position,scale:e.scale,rotation:e.rotation}),...v.value??void 0,...n.style,...Ue.value??void 0},T=Object.fromEntries(Object.entries(n).filter(([O])=>O!=="style"&&O!=="class")),E=`polycss-mesh${h.value?" polycss-voxel-mesh":""}${e.class?` ${e.class}`:""}`,w={};e.onClick&&(w.onClick=O=>{let b=O;le(e.onClick,b,b.clientX,b.clientY)}),e.onContextMenu&&(w.onContextmenu=O=>{let b=O;le(e.onContextMenu,b,b.clientX,b.clientY)}),e.onDoubleClick&&(w.onDblclick=O=>{let b=O;le(e.onDoubleClick,b,b.clientX,b.clientY)}),e.onWheel&&(w.onWheel=O=>{let b=O;le(e.onWheel,b,b.clientX,b.clientY)}),w.onPointerdown=O=>{let b=O;Ce={x:b.clientX,y:b.clientY},le(e.onPointerDown,b,b.clientX,b.clientY)},w.onPointerup=O=>{let b=O;le(e.onPointerUp,b,b.clientX,b.clientY),Ce=null},e.onPointerMove&&(w.onPointermove=O=>{let b=O;le(e.onPointerMove,b,b.clientX,b.clientY)}),(e.onPointerOver||e.onPointerEnter)&&(w.onPointerenter=O=>{let b=O;le(e.onPointerOver,b,b.clientX,b.clientY),le(e.onPointerEnter,b,b.clientX,b.clientY)}),(e.onPointerOut||e.onPointerLeave)&&(w.onPointerleave=O=>{let b=O;le(e.onPointerOut,b,b.clientX,b.clientY),le(e.onPointerLeave,b,b.clientX,b.clientY)}),e.onPointerCancel&&(w.onPointercancel=O=>{let b=O;le(e.onPointerCancel,b,b.clientX,b.clientY),Ce=null});let re=e.id?{"data-poly-mesh-id":e.id}:{};if(e.src&&a.loading.value&&a.polygons.value.length===0)return(0,P.h)("div",{ref:q,class:`polycss-mesh polycss-mesh-loading${e.class?` ${e.class}`:""}`,style:C,...re,...w,...T},t.fallback?.()??[]);if(e.src&&a.error.value&&a.polygons.value.length===0)return(0,P.h)("div",{ref:q,class:`polycss-mesh polycss-mesh-error${e.class?` ${e.class}`:""}`,style:C,...re,...w,...T},t.error?.({error:a.error.value})??[]);let te=u.value,se=t.polygon?te.map((O,b)=>(0,P.h)("template",{key:b},t.polygon?.({polygon:O,index:b}))):h.value?[]:fe.entries.value.map((O,b)=>{if(O)return ln({entry:O,page:fe.pages.value[O.pageIndex],textureLighting:R.value,textureImageRendering:$.value,solidPaintDefaults:ie.value});let Z=fe.plans.value[b],Je=Z?(0,$e.resolvePolyTextureLeafGeometry)(Z,{imageRendering:$.value,backend:_.value,projection:G.value}):null;if(Z&&Je)return sn({plan:Z,geometry:Je});if(!Z||Z.texture)return null;if((0,ge.isProjectiveQuadPlan)(Z))return on({entry:Z,textureLighting:R.value,solidPaintDefaults:ie.value});if((0,ge.isSolidTrianglePlan)(Z))return tn({entry:Z,textureLighting:R.value,solidPaintDefaults:ie.value});let Ye=A.value?.disable?.includes("i")?null:(0,$e.cornerShapeGeometryForPlan)(Z);return Ye?rn({entry:Z,geometry:Ye,textureLighting:R.value,solidPaintDefaults:ie.value}):nn({entry:Z,textureLighting:R.value,solidPaintDefaults:ie.value,forceBorderShape:!fe.useFullRectSolid.value})}),Y=t.default?.()??[],Pe=We.value,Ee=Pe?[Pe]:[],me=Be.value,Ae=f?.value?.sceneEl??null,He=Ae&&me.length>0?[(0,P.h)(P.Teleport,{to:Ae},me)]:[];return(0,P.h)("div",{ref:q,class:E,style:C,...re,...w,...T},[...Ee,...He,...se,...Y])}}});function $r(e,t){return t.position&&e.position.set(t.position[0],t.position[1],t.position[2]),t.rotation&&e.rotation.set(t.rotation[0],t.rotation[1],t.rotation[2]),typeof t.scale=="number"?e.scale.set(t.scale,t.scale,t.scale):t.scale&&e.scale.set(t.scale[0],t.scale[1],t.scale[2]),e}function Ur(e){if(e.length===0)return e;let t=(0,Ro.computeSceneBbox)(e),n=[(t.min[0]+t.max[0])/2,(t.min[1]+t.max[1])/2,(t.min[2]+t.max[2])/2];if(n[0]===0&&n[1]===0&&n[2]===0)return e;let r=o=>[o[0]-n[0],o[1]-n[1],o[2]-n[2]];return e.map(o=>({...o,vertices:o.vertices.map(r),...o.textureTriangles?.length?{textureTriangles:o.textureTriangles.map(i=>({...i,vertices:i.vertices.map(r)}))}:null}))}var Eo=(0,Ve.defineComponent)({name:"PolyThreeMesh",inheritAttrs:!1,props:{id:{type:String,default:void 0},object:{type:Object,default:void 0},polygons:{type:Array,default:void 0},src:{type:String,default:void 0},mtl:{type:String,default:void 0},position:{type:Array,default:void 0},rotation:{type:Array,default:void 0},scale:{type:[Number,Array],default:void 0},autoCenter:{type:Boolean,default:!1},textureLighting:{type:String,default:void 0},textureQuality:{type:[Number,String],default:void 0},textureLeafSizing:{type:String,default:void 0},textureImageRendering:{type:String,default:void 0},textureBackend:{type:String,default:void 0},textureProjection:{type:String,default:void 0},castShadow:{type:Boolean,default:!1},receiveShadow:{type:Boolean,default:!1},merge:{type:Boolean,default:!0},meshResolution:{type:String,default:void 0},parseOptions:{type:Object,default:void 0},class:{type:String,default:void 0},style:{type:[Object,String],default:void 0}},setup(e,{attrs:t,slots:n}){let r=(0,Ve.shallowRef)(e.object??new It.Object3D),o=(0,Ve.computed)(()=>e.src??""),i=(0,Ve.computed)(()=>{if(!(!e.mtl&&!e.parseOptions&&e.meshResolution===void 0))return{...e.parseOptions??{},...e.mtl?{mtlUrl:e.mtl}:{},...e.meshResolution!==void 0?{meshResolution:e.meshResolution}:{}}}),a=Tt(o,i.value),s=(0,Ve.computed)(()=>{let c=e.polygons??(e.src?a.polygons.value:[]);return e.autoCenter?Ur(c):c}),l=(0,Ve.computed)(()=>(0,It.transformPolygonsToPoly)(s.value,$r(e.object??r.value,{position:e.position,rotation:e.rotation,scale:e.scale})));return()=>e.src&&a.loading.value&&l.value.length===0&&n.fallback?n.fallback():e.src&&a.error.value&&n.error?n.error({error:a.error.value}):(0,Ve.h)(Co,{...t,id:e.id,polygons:l.value,autoCenter:!1,textureLighting:e.textureLighting,textureQuality:e.textureQuality,textureLeafSizing:e.textureLeafSizing,textureImageRendering:e.textureImageRendering,textureBackend:e.textureBackend,textureProjection:e.textureProjection,castShadow:e.castShadow,receiveShadow:e.receiveShadow,merge:e.merge,meshResolution:e.meshResolution,class:e.class,style:e.style},n)}});0&&(module.exports={AmbientLight,DirectionalLight,Euler,Object3D,OrthographicCamera,PerspectiveCamera,PointLight,PolyThreeMesh,PolyThreeOrthographicCamera,PolyThreePerspectiveCamera,Vector3,polyToThreeDirection,polyToThreePoint,threeToPolyDirection,threeToPolyPoint,transformPointToPoly,transformPolygonsToPoly});