@layoutit/polycss-vue 0.2.3 → 0.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1,4 +1,4 @@
1
- "use strict";var cn=Object.defineProperty;var fa=Object.getOwnPropertyDescriptor;var ga=Object.getOwnPropertyNames;var ha=Object.prototype.hasOwnProperty;var Pa=(e,t)=>{for(var n in t)cn(e,n,{get:t[n],enumerable:!0})},va=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of ga(t))!ha.call(e,r)&&r!==n&&cn(e,r,{get:()=>t[r],enumerable:!(o=fa(t,r))||o.enumerable});return e};var xa=e=>va(cn({},"__esModule",{value:!0}),e);var gs={};Pa(gs,{BASE_TILE:()=>P.BASE_TILE,CAMERA_BACKFACE_CULL_EPS:()=>P.CAMERA_BACKFACE_CULL_EPS,DEFAULT_CAMERA_STATE:()=>P.DEFAULT_CAMERA_STATE,DEFAULT_PROJECTION:()=>P.DEFAULT_PROJECTION,DEFAULT_SEAM_FACET_SPLIT_OPTIONS:()=>P.DEFAULT_SEAM_FACET_SPLIT_OPTIONS,DEFAULT_SEAM_OVERLAP_OPTIONS:()=>P.DEFAULT_SEAM_OVERLAP_OPTIONS,LoopOnce:()=>P.LoopOnce,LoopPingPong:()=>P.LoopPingPong,LoopRepeat:()=>P.LoopRepeat,Poly:()=>Hn,PolyAxesHelper:()=>po,PolyBox:()=>Nn,PolyCamera:()=>wt,PolyCameraContextKey:()=>ye,PolyCone:()=>Zn,PolyCylinder:()=>Gn,PolyDirectionalLightHelper:()=>yo,PolyDodecahedron:()=>Wn,PolyFirstPersonControls:()=>lo,PolyGround:()=>Bn,PolyIcosahedron:()=>Un,PolyIframe:()=>_n,PolyMapControls:()=>to,PolyMesh:()=>ue,PolyOctahedron:()=>$n,PolyOrbitControls:()=>Jn,PolyOrthographicCamera:()=>wt,PolyPerspectiveCamera:()=>mn,PolyPlane:()=>Yn,PolyRing:()=>jn,PolyScene:()=>On,PolySelect:()=>uo,PolySelectionContextKey:()=>Vt,PolySphere:()=>qn,PolyTetrahedron:()=>Xn,PolyTorus:()=>Kn,PolyTransformControls:()=>ao,VOXEL_CAMERA_CULL_AXIS_EPS:()=>P.VOXEL_CAMERA_CULL_AXIS_EPS,VOXEL_CAMERA_CULL_NORMAL_LIMIT:()=>P.VOXEL_CAMERA_CULL_NORMAL_LIMIT,arrowPolygons:()=>P.arrowPolygons,axesHelperPolygons:()=>P.axesHelperPolygons,bakeSolidTextureSampledPolygons:()=>P.bakeSolidTextureSampledPolygons,bakeSolidTextureSamples:()=>P.bakeSolidTextureSamples,boxPolygons:()=>P.boxPolygons,buildPolyMeshTransform:()=>P.buildPolyMeshTransform,buildSceneContext:()=>P.buildSceneContext,cameraCullNormalGroups:()=>P.cameraCullNormalGroups,cameraCullNormalGroupsFromPolygons:()=>P.cameraCullNormalGroupsFromPolygons,cameraCullNormalKey:()=>P.cameraCullNormalKey,cameraCullVisibleSignature:()=>P.cameraCullVisibleSignature,cameraFacingDepth:()=>P.cameraFacingDepth,clampChannel:()=>P.clampChannel,collectPolyRenderStats:()=>ra,computeSceneBbox:()=>P.computeSceneBbox,computeShapeLighting:()=>P.computeShapeLighting,computeTexturePaintMetrics:()=>P.computeTexturePaintMetrics,conePolygons:()=>P.conePolygons,coverPlanarPolygons:()=>P.coverPlanarPolygons,createIsometricCamera:()=>P.createIsometricCamera,createPolyAnimationMixer:()=>P.createPolyAnimationMixer,cullInteriorPolygons:()=>P.cullInteriorPolygons,cylinderPolygons:()=>P.cylinderPolygons,dodecahedronPolygons:()=>P.dodecahedronPolygons,findMeshUnderPoint:()=>nn,findPolyMeshHandle:()=>Ct,formatColor:()=>P.formatColor,icosahedronPolygons:()=>P.icosahedronPolygons,injectPolyBaseStyles:()=>Ht,inverseRotateVec3:()=>P.inverseRotateVec3,isAxisAlignedSurfaceNormal:()=>P.isAxisAlignedSurfaceNormal,isVoxelCameraCullableNormalGroups:()=>P.isVoxelCameraCullableNormalGroups,loadMesh:()=>P.loadMesh,mergePolygons:()=>P.mergePolygons,normalFacesCamera:()=>P.normalFacesCamera,normalizeInvertMultiplier:()=>P.normalizeInvertMultiplier,normalizePolygons:()=>P.normalizePolygons,octahedronPolygons:()=>P.octahedronPolygons,optimizeAnimatedMeshPolygons:()=>P.optimizeAnimatedMeshPolygons,optimizeMeshParseResult:()=>P.optimizeMeshParseResult,optimizeMeshPolygons:()=>P.optimizeMeshPolygons,parseColor:()=>P.parseColor,parseGltf:()=>P.parseGltf,parseHexColor:()=>P.parseHexColor,parseMtl:()=>P.parseMtl,parseObj:()=>P.parseObj,parsePureColor:()=>P.parsePureColor,parseRgbColor:()=>P.parseRgbColor,parseStl:()=>P.parseStl,parseVox:()=>P.parseVox,planePolygons:()=>P.planePolygons,pointInMeshElement:()=>Mt,polygonCssSurfaceNormal:()=>P.polygonCssSurfaceNormal,polygonFaces:()=>P.polygonFaces,polygonFacesCamera:()=>P.polygonFacesCamera,repairMeshSeams:()=>P.repairMeshSeams,ringPolygons:()=>P.ringPolygons,rotateVec3:()=>P.rotateVec3,seamFacetSplitPolygons:()=>P.seamFacetSplitPolygons,seamFacetSplitReport:()=>P.seamFacetSplitReport,seamOverlapDiagnostics:()=>P.seamOverlapDiagnostics,seamOverlapPolygons:()=>P.seamOverlapPolygons,seamOverlapReport:()=>P.seamOverlapReport,shadeColor:()=>P.shadeColor,simplifyTriangleMeshPolygons:()=>P.simplifyTriangleMeshPolygons,tetrahedronPolygons:()=>P.tetrahedronPolygons,torusPolygons:()=>P.torusPolygons,usePolyAnimation:()=>ia,usePolyCamera:()=>ct,usePolyMaterial:()=>Er,usePolyMesh:()=>$t,usePolySceneContext:()=>Lt,usePolySelect:()=>co,usePolySelectionApi:()=>mo,worldDirectionToPolyCss:()=>P.worldDirectionToCss,worldPositionToPolyCss:()=>P.worldPositionToCss});module.exports=xa(gs);var et=require("vue");var Je=require("vue"),Ut=require("@layoutit/polycss-core");function dn(e){let t={cameraState:{...e}},n=new Set;function o(){for(let r of n)r()}return{getState(){return t},setState(r){t={...t,...r},o()},subscribe(r){return n.add(r),()=>n.delete(r)},updateCameraFromRef(r){return t={cameraState:{...r.state}},o(),!0},notifyAll(){o()}}}function ct(e){let t=(0,Ut.createIsometricCamera)({zoom:e.value.zoom,target:e.value.target,rotX:e.value.rotX,rotY:e.value.rotY,distance:e.value.distance}),n=(0,Je.shallowRef)(t),o=(0,Je.ref)(null),r=(0,Je.ref)(null),a=(0,Je.ref)([0,0,0]),i=dn(t.state);(0,Je.watch)(()=>({zoom:e.value.zoom,target:e.value.target,rotX:e.value.rotX,rotY:e.value.rotY,distance:e.value.distance}),(s,d)=>{let m={};s.zoom!==void 0&&s.zoom!==d?.zoom&&(m.zoom=s.zoom),s.target!==void 0&&s.target!==d?.target&&(m.target=s.target),s.rotX!==void 0&&s.rotX!==d?.rotX&&(m.rotX=s.rotX),s.rotY!==void 0&&s.rotY!==d?.rotY&&(m.rotY=s.rotY),s.distance!==void 0&&s.distance!==d?.distance&&(m.distance=s.distance),Object.keys(m).length>0&&(t.update(m),u(),i.updateCameraFromRef(t),i.notifyAll())});function u(){let s=o.value;if(!s)return;let d=t.state,m=Ut.BASE_TILE,p=a.value,l=d.target[0]+p[0],h=d.target[1]+p[1],y=d.target[2]+p[2],v=h*m,x=l*m,T=y*m,E=d.zoom/m,w=d.distance!==0?`translateZ(${-d.distance}px) `:"";s.style.transform=`${w}scale(${E}) rotateX(${d.rotX}deg) rotate(${d.rotY}deg) translate3d(${-v}px, ${-x}px, ${-T}px)`}return{store:i,cameraRef:n,sceneElRef:o,cameraElRef:r,autoCenterOffset:a,applyTransformDirect:u}}var ye=Symbol("polycss-camera");var wt=(0,et.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,et.computed)(()=>({zoom:e.zoom,target:e.target,rotX:e.rotX,rotY:e.rotY,distance:e.distance})),{store:o,cameraRef:r,sceneElRef:a,cameraElRef:i,autoCenterOffset:u,applyTransformDirect:s}=ct(n);return(0,et.provide)(ye,{store:o,cameraRef:r,sceneElRef:a,cameraElRef:i,autoCenterOffset:u,applyTransformDirect:s}),()=>(0,et.h)("div",{ref:i,class:`polycss-camera${e.class?` ${e.class}`:""}`,style:{perspective:"1000000px"}},t.default?.())}});var tt=require("vue");var ba=32e3,mn=(0,tt.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,tt.computed)(()=>({zoom:e.zoom,target:e.target,rotX:e.rotX,rotY:e.rotY,distance:e.distance})),{store:o,cameraRef:r,sceneElRef:a,cameraElRef:i,autoCenterOffset:u,applyTransformDirect:s}=ct(n);return(0,tt.provide)(ye,{store:o,cameraRef:r,sceneElRef:a,cameraElRef:i,autoCenterOffset:u,applyTransformDirect:s}),()=>{let d=`${typeof e.perspective=="number"?e.perspective:ba}px`;return(0,tt.h)("div",{ref:i,class:`polycss-camera${e.class?` ${e.class}`:""}`,style:{perspective:d}},t.default?.())}}});var Z=require("vue"),ot=require("@layoutit/polycss-core");var vo=require("vue"),Wt=require("@layoutit/polycss-core");function Lt(e,t){return(0,vo.computed)(()=>{let{directionalLight:n}=t.value,o=(0,Wt.buildSceneContext)({polygons:e.value});return{polygons:(0,Wt.mergePolygons)(o.context.polygons),sceneBbox:o.context.sceneBbox}})}var xo="polycss-styles";function Ht(e=typeof document<"u"?document:null){if(!e||e.getElementById(xo))return;let t=e.createElement("style");t.id=xo,t.textContent=Sa,e.head.appendChild(t)}var Sa=`
1
+ "use strict";var cn=Object.defineProperty;var fa=Object.getOwnPropertyDescriptor;var ga=Object.getOwnPropertyNames;var ha=Object.prototype.hasOwnProperty;var Pa=(e,t)=>{for(var n in t)cn(e,n,{get:t[n],enumerable:!0})},va=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of ga(t))!ha.call(e,r)&&r!==n&&cn(e,r,{get:()=>t[r],enumerable:!(o=fa(t,r))||o.enumerable});return e};var xa=e=>va(cn({},"__esModule",{value:!0}),e);var gs={};Pa(gs,{BASE_TILE:()=>P.BASE_TILE,CAMERA_BACKFACE_CULL_EPS:()=>P.CAMERA_BACKFACE_CULL_EPS,DEFAULT_CAMERA_STATE:()=>P.DEFAULT_CAMERA_STATE,DEFAULT_PROJECTION:()=>P.DEFAULT_PROJECTION,DEFAULT_SEAM_FACET_SPLIT_OPTIONS:()=>P.DEFAULT_SEAM_FACET_SPLIT_OPTIONS,DEFAULT_SEAM_OVERLAP_OPTIONS:()=>P.DEFAULT_SEAM_OVERLAP_OPTIONS,LoopOnce:()=>P.LoopOnce,LoopPingPong:()=>P.LoopPingPong,LoopRepeat:()=>P.LoopRepeat,Poly:()=>Hn,PolyAxesHelper:()=>po,PolyBox:()=>Nn,PolyCamera:()=>wt,PolyCameraContextKey:()=>ye,PolyCone:()=>Zn,PolyCylinder:()=>Gn,PolyDirectionalLightHelper:()=>yo,PolyDodecahedron:()=>Wn,PolyFirstPersonControls:()=>lo,PolyGround:()=>Bn,PolyIcosahedron:()=>Un,PolyIframe:()=>_n,PolyMapControls:()=>to,PolyMesh:()=>ue,PolyOctahedron:()=>$n,PolyOrbitControls:()=>Jn,PolyOrthographicCamera:()=>wt,PolyPerspectiveCamera:()=>mn,PolyPlane:()=>Yn,PolyRing:()=>jn,PolyScene:()=>On,PolySelect:()=>uo,PolySelectionContextKey:()=>Vt,PolySphere:()=>qn,PolyTetrahedron:()=>Xn,PolyTorus:()=>Kn,PolyTransformControls:()=>ao,VOXEL_CAMERA_CULL_AXIS_EPS:()=>P.VOXEL_CAMERA_CULL_AXIS_EPS,VOXEL_CAMERA_CULL_NORMAL_LIMIT:()=>P.VOXEL_CAMERA_CULL_NORMAL_LIMIT,arrowPolygons:()=>P.arrowPolygons,axesHelperPolygons:()=>P.axesHelperPolygons,bakeSolidTextureSampledPolygons:()=>P.bakeSolidTextureSampledPolygons,bakeSolidTextureSamples:()=>P.bakeSolidTextureSamples,boxPolygons:()=>P.boxPolygons,buildPolyMeshTransform:()=>P.buildPolyMeshTransform,buildSceneContext:()=>P.buildSceneContext,cameraCullNormalGroups:()=>P.cameraCullNormalGroups,cameraCullNormalGroupsFromPolygons:()=>P.cameraCullNormalGroupsFromPolygons,cameraCullNormalKey:()=>P.cameraCullNormalKey,cameraCullVisibleSignature:()=>P.cameraCullVisibleSignature,cameraFacingDepth:()=>P.cameraFacingDepth,clampChannel:()=>P.clampChannel,collectPolyRenderStats:()=>ra,computeSceneBbox:()=>P.computeSceneBbox,computeShapeLighting:()=>P.computeShapeLighting,computeTexturePaintMetrics:()=>P.computeTexturePaintMetrics,conePolygons:()=>P.conePolygons,coverPlanarPolygons:()=>P.coverPlanarPolygons,createIsometricCamera:()=>P.createIsometricCamera,createPolyAnimationMixer:()=>P.createPolyAnimationMixer,cullInteriorPolygons:()=>P.cullInteriorPolygons,cylinderPolygons:()=>P.cylinderPolygons,dodecahedronPolygons:()=>P.dodecahedronPolygons,findMeshUnderPoint:()=>nn,findPolyMeshHandle:()=>Ct,formatColor:()=>P.formatColor,icosahedronPolygons:()=>P.icosahedronPolygons,injectPolyBaseStyles:()=>Ht,inverseRotateVec3:()=>P.inverseRotateVec3,isAxisAlignedSurfaceNormal:()=>P.isAxisAlignedSurfaceNormal,isVoxelCameraCullableNormalGroups:()=>P.isVoxelCameraCullableNormalGroups,loadMesh:()=>P.loadMesh,mergePolygons:()=>P.mergePolygons,normalFacesCamera:()=>P.normalFacesCamera,normalizeInvertMultiplier:()=>P.normalizeInvertMultiplier,normalizePolygons:()=>P.normalizePolygons,octahedronPolygons:()=>P.octahedronPolygons,optimizeAnimatedMeshPolygons:()=>P.optimizeAnimatedMeshPolygons,optimizeMeshParseResult:()=>P.optimizeMeshParseResult,optimizeMeshPolygons:()=>P.optimizeMeshPolygons,parseColor:()=>P.parseColor,parseGltf:()=>P.parseGltf,parseHexColor:()=>P.parseHexColor,parseMtl:()=>P.parseMtl,parseObj:()=>P.parseObj,parsePureColor:()=>P.parsePureColor,parseRgbColor:()=>P.parseRgbColor,parseStl:()=>P.parseStl,parseVox:()=>P.parseVox,planePolygons:()=>P.planePolygons,pointInMeshElement:()=>Mt,polyCssDistanceToWorld:()=>P.cssDistanceToWorld,polyCssPositionToWorld:()=>P.cssPositionToWorld,polygonCssSurfaceNormal:()=>P.polygonCssSurfaceNormal,polygonFaces:()=>P.polygonFaces,polygonFacesCamera:()=>P.polygonFacesCamera,repairMeshSeams:()=>P.repairMeshSeams,ringPolygons:()=>P.ringPolygons,rotateVec3:()=>P.rotateVec3,seamFacetSplitPolygons:()=>P.seamFacetSplitPolygons,seamFacetSplitReport:()=>P.seamFacetSplitReport,seamOverlapDiagnostics:()=>P.seamOverlapDiagnostics,seamOverlapPolygons:()=>P.seamOverlapPolygons,seamOverlapReport:()=>P.seamOverlapReport,shadeColor:()=>P.shadeColor,simplifyTriangleMeshPolygons:()=>P.simplifyTriangleMeshPolygons,tetrahedronPolygons:()=>P.tetrahedronPolygons,torusPolygons:()=>P.torusPolygons,usePolyAnimation:()=>ia,usePolyCamera:()=>ct,usePolyMaterial:()=>Er,usePolyMesh:()=>$t,usePolySceneContext:()=>Lt,usePolySelect:()=>co,usePolySelectionApi:()=>mo,worldDirectionToPolyCss:()=>P.worldDirectionToCss,worldDistanceToPolyCss:()=>P.worldDistanceToCss,worldPositionToPolyCss:()=>P.worldPositionToCss});module.exports=xa(gs);var et=require("vue");var Je=require("vue"),Ut=require("@layoutit/polycss-core");function dn(e){let t={cameraState:{...e}},n=new Set;function o(){for(let r of n)r()}return{getState(){return t},setState(r){t={...t,...r},o()},subscribe(r){return n.add(r),()=>n.delete(r)},updateCameraFromRef(r){return t={cameraState:{...r.state}},o(),!0},notifyAll(){o()}}}function ct(e){let t=(0,Ut.createIsometricCamera)({zoom:e.value.zoom,target:e.value.target,rotX:e.value.rotX,rotY:e.value.rotY,distance:e.value.distance}),n=(0,Je.shallowRef)(t),o=(0,Je.ref)(null),r=(0,Je.ref)(null),a=(0,Je.ref)([0,0,0]),i=dn(t.state);(0,Je.watch)(()=>({zoom:e.value.zoom,target:e.value.target,rotX:e.value.rotX,rotY:e.value.rotY,distance:e.value.distance}),(s,d)=>{let m={};s.zoom!==void 0&&s.zoom!==d?.zoom&&(m.zoom=s.zoom),s.target!==void 0&&s.target!==d?.target&&(m.target=s.target),s.rotX!==void 0&&s.rotX!==d?.rotX&&(m.rotX=s.rotX),s.rotY!==void 0&&s.rotY!==d?.rotY&&(m.rotY=s.rotY),s.distance!==void 0&&s.distance!==d?.distance&&(m.distance=s.distance),Object.keys(m).length>0&&(t.update(m),u(),i.updateCameraFromRef(t),i.notifyAll())});function u(){let s=o.value;if(!s)return;let d=t.state,m=Ut.BASE_TILE,p=a.value,l=d.target[0]+p[0],h=d.target[1]+p[1],y=d.target[2]+p[2],v=h*m,x=l*m,T=y*m,E=d.zoom/m,w=d.distance!==0?`translateZ(${-d.distance}px) `:"";s.style.transform=`${w}scale(${E}) rotateX(${d.rotX}deg) rotate(${d.rotY}deg) translate3d(${-v}px, ${-x}px, ${-T}px)`}return{store:i,cameraRef:n,sceneElRef:o,cameraElRef:r,autoCenterOffset:a,applyTransformDirect:u}}var ye=Symbol("polycss-camera");var wt=(0,et.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,et.computed)(()=>({zoom:e.zoom,target:e.target,rotX:e.rotX,rotY:e.rotY,distance:e.distance})),{store:o,cameraRef:r,sceneElRef:a,cameraElRef:i,autoCenterOffset:u,applyTransformDirect:s}=ct(n);return(0,et.provide)(ye,{store:o,cameraRef:r,sceneElRef:a,cameraElRef:i,autoCenterOffset:u,applyTransformDirect:s}),()=>(0,et.h)("div",{ref:i,class:`polycss-camera${e.class?` ${e.class}`:""}`,style:{perspective:"1000000px"}},t.default?.())}});var tt=require("vue");var ba=32e3,mn=(0,tt.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,tt.computed)(()=>({zoom:e.zoom,target:e.target,rotX:e.rotX,rotY:e.rotY,distance:e.distance})),{store:o,cameraRef:r,sceneElRef:a,cameraElRef:i,autoCenterOffset:u,applyTransformDirect:s}=ct(n);return(0,tt.provide)(ye,{store:o,cameraRef:r,sceneElRef:a,cameraElRef:i,autoCenterOffset:u,applyTransformDirect:s}),()=>{let d=`${typeof e.perspective=="number"?e.perspective:ba}px`;return(0,tt.h)("div",{ref:i,class:`polycss-camera${e.class?` ${e.class}`:""}`,style:{perspective:d}},t.default?.())}}});var Z=require("vue"),ot=require("@layoutit/polycss-core");var vo=require("vue"),Wt=require("@layoutit/polycss-core");function Lt(e,t){return(0,vo.computed)(()=>{let{directionalLight:n}=t.value,o=(0,Wt.buildSceneContext)({polygons:e.value});return{polygons:(0,Wt.mergePolygons)(o.context.polygons),sceneBbox:o.context.sceneBbox}})}var xo="polycss-styles";function Ht(e=typeof document<"u"?document:null){if(!e||e.getElementById(xo))return;let t=e.createElement("style");t.id=xo,t.textContent=Sa,e.head.appendChild(t)}var Sa=`
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,
@@ -426,4 +426,4 @@
426
426
  .polycss-scene[data-polycss-lighting="dynamic"] q {
427
427
  opacity: clamp(0, calc((var(--pnx) * var(--clx) + var(--pny) * var(--cly) + var(--pnz) * var(--clz)) * 10), 1);
428
428
  }
429
- `;var Ca=require("@layoutit/polycss-core");var bo=require("vue"),pn=Symbol("polycss/scene-context");function So(){return(0,bo.inject)(pn,null)}var se=require("@layoutit/polycss-core");var Ue=require("@layoutit/polycss-core");function yn(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 fn(e){if(Co(e))return!0;let n=(e.defaultView??(typeof window<"u"?window:void 0))?.navigator?.userAgent??"";return n?!(0,Ue.safariCssProjectiveUnsupported)(n):!0}function qt(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 Co(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 Rt(e){let n=(e.defaultView??(typeof window<"u"?window:void 0))?.navigator?.userAgent??"";return n?!(0,Ue.safariCssProjectiveUnsupported)(n):!0}function Mo(e,t,n,o,r){let a=new Set(o?.disable??[]);return(0,Ue.getSolidPaintDefaultsForPlansCore)(e,t,a,{solidTriangleSupported:fn(n),projectiveQuadSupported:Rt(n),cornerShapeSupported:qt(n),borderShapeSupported:yn(n)},Ue.parseHex,Ue.rgbKey,r)}function gn(e,t,n=new Set,o){let r=o??(typeof document<"u"?document:null);if(!r)return{};let a=n.size>0?{disable:Array.from(n)}:void 0;return Mo(e,t,r,a)}function dt(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 r=typeof matchMedia<"u"?matchMedia:void 0;return r?r("(pointer: fine)").matches&&r("(hover: hover)").matches:!0}return yn(t)}function mt(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 o=(typeof navigator<"u"?navigator:globalThis.navigator)?.userAgent??"";if(!o)return!0;let r=/\b(?:Chrome|HeadlessChrome|Chromium|Edg|OPR)\//.test(o);return!/\bVersion\/[\d.]+.*\bSafari\//.test(o)||r}return fn(t)}var Eo=require("@layoutit/polycss-core");function hn(e,t,n,o){let r=o??(typeof document<"u"?document:null);return(0,Eo.filterAtlasPlans)(e,t,n,{solidTriangleSupported:mt(o),projectiveQuadSupported:o?Rt(o):!0,borderShapeSupported:dt(o),cornerShapeSupported:r?qt(r):!1})}var To=require("@layoutit/polycss-core");function Ao(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 Pn(e,t,n){return(0,To.packTextureAtlasPlansWithScaleCore)(e,t,Ao(n))}var _e=require("@layoutit/polycss-core"),pt=new Map;function Do(e){let t=pt.get(e);return t||(t=new Promise((n,o)=>{let r=new Image;r.decoding="async",r.crossOrigin="anonymous",r.onload=()=>n(r),r.onerror=()=>o(new Error(`texture load failed: ${e}`)),r.src=e}),pt.set(e,t),t.then(()=>{pt.get(e)===t&&pt.delete(e)},()=>{pt.get(e)===t&&pt.delete(e)})),t}function Ce(e,t,n=1,o=0,r=0,a=1,i=0,u=0){e.setTransform(n*t,o*t,r*t,a*t,i*t,u*t)}function vn(e){let t=e/255;return t<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function xn(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 ko(e,t,n,o,r,a,i){let u=Math.round(t*i),s=Math.round(n*i),d=Math.max(1,Math.round(o*i)),m=Math.max(1,Math.round(r*i)),p=e.getImageData(u,s,d,m),l=p.data,h=a.r,y=a.g,v=a.b;for(let x=0;x<l.length;x+=4)l[x+3]!==0&&(l[x]=xn(vn(l[x])*h),l[x+1]=xn(vn(l[x+1])*y),l[x+2]=xn(vn(l[x+2])*v));e.putImageData(p,u,s)}function Io(e,t,n,o,r,a,i){let u=t.naturalWidth||t.width||1,s=t.naturalHeight||t.height||1,d=Math.max(r/u,a/s),m=u*d,p=s*d;Ce(e,i),e.drawImage(t,n+(r-m)/2,o+(a-p)/2,m,p)}function Ot(e,t){return Math.max(0,Math.min(t,e))}function bn(e,t,n,o,r,a,i,u){let s=t.naturalWidth||t.width||1,d=t.naturalHeight||t.height||1,m=Ot(Math.min(n.minU,n.maxU)*s,s),p=Ot(Math.max(n.minU,n.maxU)*s,s),l=Ot(Math.min(n.minV,n.maxV)*d,d),h=Ot(Math.max(n.minV,n.maxV)*d,d),y=Math.floor(m),v=Math.floor(l),x=Math.ceil(p)-y,T=Math.ceil(h)-v;x<1&&(y=Math.floor(Ot((n.minU+n.maxU)/2*s,s-1)),x=1),T<1&&(v=Math.floor(Ot((n.minV+n.maxV)/2*d,d-1)),T=1),y=Math.max(0,Math.min(s-1,y)),v=Math.max(0,Math.min(d-1,v)),x=Math.max(1,Math.min(s-y,x)),T=Math.max(1,Math.min(d-v,T)),Ce(e,u),e.drawImage(t,y,v,x,T,o,r,a,i)}function Fo(e){return e==="repeat"||e==="mirrored-repeat"}function wo(e,t){return Fo(e)?Math.floor(t):0}function Lo(e,t){return Fo(e)?Math.ceil(t)-1:0}function Ro(e,t){return e==="mirrored-repeat"&&Math.abs(t%2)===1}function Oo(e,t,n,o,r,a,i){let u=r?wo(a,r.minU):0,s=r?Lo(a,r.maxU):0,d=r?wo(i,r.minV):0,m=r?Lo(i,r.maxV):0;for(let p=u;p<=s;p++)for(let l=d;l<=m;l++){let h=Ro(a,p),y=Ro(i,l);if(!h&&!y){e.drawImage(t,p*n,l*o);continue}e.save(),e.translate((h?p+1:p)*n,(y?l+1:l)*o),e.scale(h?-1:1,y?-1:1),e.drawImage(t,0,0),e.restore()}}function Zt(e,t,n,o){for(let r=0;r<o.length;r+=2){let a=t+o[r],i=n+o[r+1];r===0?e.moveTo(a,i):e.lineTo(a,i)}e.closePath()}function Nt(e,t,n,o,r,a){for(let i=0;i<o.length;i+=2){let u=t+o[i]+r,s=n+o[i+1]+a;i===0?e.moveTo(u,s):e.lineTo(u,s)}e.closePath()}function Vo(e,t,n,o){Ce(e,o),e.beginPath(),Zt(e,t.x,t.y,t.screenPts),e.clip(),Ce(e,o),e.fillStyle=n==="dynamic"?t.polygon.color??"#cccccc":t.shadedColor,e.fillRect(t.x,t.y,t.canvasW,t.canvasH)}function Gt(e,t,n,o,r){t.polygon.textureAlphaMode==="opaque"&&(Ce(e,n),e.fillStyle=t.polygon.color??"#cccccc",e.fillRect(t.x+o,t.y+r,t.canvasW,t.canvasH))}function _o(e,t,n,o,r=0,a=0){if(t.textureTriangles?.length){let i=n.naturalWidth||n.width||1,u=n.naturalHeight||n.height||1;for(let s of t.textureTriangles){let d=(0,_e.expandClipPoints)(s.screenPts,_e.TEXTURE_TRIANGLE_BLEED);e.save(),Ce(e,o),e.beginPath(),Nt(e,t.x,t.y,d,r,a),e.clip(),Gt(e,t,o,r,a),s.uvAffine?(Ce(e,o,s.uvAffine.a/i,s.uvAffine.c/i,s.uvAffine.b/u,s.uvAffine.d/u,t.x+s.uvAffine.e+r,t.y+s.uvAffine.f+a),Oo(e,n,i,u,s.uvSampleRect,t.polygon.textureWrap?.s,t.polygon.textureWrap?.t)):s.uvSampleRect&&bn(e,n,s.uvSampleRect,t.x+r,t.y+a,t.canvasW,t.canvasH,o),e.restore()}}else if(t.uvAffine){let i=n.naturalWidth||n.width||1,u=n.naturalHeight||n.height||1,s=t.polygon.textureAlphaMode==="opaque";s&&(e.save(),Ce(e,o),e.beginPath(),Nt(e,t.x,t.y,t.screenPts,r,a),e.clip(),Gt(e,t,o,r,a)),Ce(e,o,t.uvAffine.a/i,t.uvAffine.c/i,t.uvAffine.b/u,t.uvAffine.d/u,t.x+t.uvAffine.e+r,t.y+t.uvAffine.f+a),Oo(e,n,i,u,t.uvSampleRect,t.polygon.textureWrap?.s,t.polygon.textureWrap?.t),s&&e.restore()}else if(t.uvSampleRect){let i=t.polygon.textureAlphaMode==="opaque";i&&(e.save(),Ce(e,o),e.beginPath(),Nt(e,t.x,t.y,t.screenPts,r,a),e.clip(),Gt(e,t,o,r,a)),bn(e,n,t.uvSampleRect,t.x+r,t.y+a,t.canvasW,t.canvasH,o),i&&e.restore()}else{let i=t.polygon.textureAlphaMode==="opaque";i&&(e.save(),Ce(e,o),e.beginPath(),Nt(e,t.x,t.y,t.screenPts,r,a),e.clip(),Gt(e,t,o,r,a)),Io(e,n,t.x+r,t.y+a,t.canvasW,t.canvasH,o),i&&e.restore()}}function Ma(e,t,n,o,r,a){let i=r-n,u=a-o,s=i*i+u*u;if(s<=1e-9)return Math.hypot(e-n,t-o);let d=Math.max(0,Math.min(1,((e-n)*i+(t-o)*u)/s));return Math.hypot(e-(n+i*d),t-(o+u*d))}function Ea(e,t,n,o){let r=1/0,a=n.length/2;for(let i of o){if(i<0||i>=a)continue;let u=i*2,s=(i+1)%a*2;r=Math.min(r,Ma(e,t,n[u],n[u+1],n[s],n[s+1]))}return r}function Ta(e,t,n,o,r,a){let i=Math.max(0,o-a),u=Math.min(t-1,o+a),s=Math.max(0,r-a),d=Math.min(n-1,r+a),m=null,p=1/0;for(let l=s;l<=d;l++)for(let h=i;h<=u;h++){if(h===o&&l===r)continue;let y=h-o,v=l-r,x=y*y+v*v;if(x>a*a||x>=p)continue;let T=(l*t+h)*4;e[T+3]<_e.TEXTURE_EDGE_REPAIR_SOURCE_ALPHA_MIN||(m=T,p=x)}return m}function Bo(e,t,n){if(!t.textureEdgeRepair||!t.texture||!t.textureEdgeRepairEdges||t.textureEdgeRepairEdges.size===0)return;let o=e.canvas;if(!o)return;let r=Math.max(0,Math.floor(t.x*n)),a=Math.max(0,Math.floor(t.y*n)),i=Math.max(1,Math.min(o.width-r,Math.ceil(t.canvasW*n))),u=Math.max(1,Math.min(o.height-a,Math.ceil(t.canvasH*n)));if(i<=0||u<=0)return;let s;try{s=e.getImageData(r,a,i,u)}catch{return}let d=s.data,m=new Uint8ClampedArray(d),p=Math.max(_e.TEXTURE_EDGE_REPAIR_RADIUS,_e.TEXTURE_EDGE_REPAIR_RADIUS/n),l=Math.max(2,Math.ceil(p*n)+1),h=!1;for(let y=0;y<u;y++)for(let v=0;v<i;v++){let x=(y*i+v)*4,T=d[x+3];if(T<_e.TEXTURE_EDGE_REPAIR_ALPHA_MIN||T===255)continue;let E=(r+v+.5)/n-t.x,w=(a+y+.5)/n-t.y;if(Ea(E,w,t.screenPts,t.textureEdgeRepairEdges)>p)continue;let g=Ta(m,i,u,v,y,l);g!==null&&(d[x]=m[g],d[x+1]=m[g+1],d[x+2]=m[g+2],d[x+3]=255,h=!0)}h&&e.putImageData(s,r,a)}function zo(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 Aa(e,t,n,o){let r=n.createElement("canvas");r.width=Math.max(1,Math.ceil(e.width*o)),r.height=Math.max(1,Math.ceil(e.height*o));let a=e.entries.some(m=>m.textureEdgeRepair&&m.texture&&m.textureEdgeRepairEdges&&m.textureEdgeRepairEdges.size>0),i=r.getContext("2d",a?{willReadFrequently:!0}:void 0);if(!i)return{width:e.width,height:e.height,url:null};let u=Array.from(new Set(e.entries.flatMap(m=>m.texture?[m.texture]:[]))),s=new Map;await Promise.all(u.map(async m=>{s.set(m,await Do(m))}));for(let m of e.entries){let p=m.texture?s.get(m.texture):null;if(!m.texture){i.save(),Vo(i,m,t,o),i.restore();continue}p&&(i.save(),Ce(i,o),i.beginPath(),Zt(i,m.x,m.y,m.screenPts),i.clip(),_o(i,m,p,o),i.restore()),m.texture&&t==="baked"&&(i.save(),Ce(i,o),i.beginPath(),Zt(i,m.x,m.y,m.screenPts),i.clip(),ko(i,m.x,m.y,m.canvasW,m.canvasH,m.textureTint,o),i.restore()),Bo(i,m,o)}let d=await zo(r);return r.width=1,r.height=1,{width:e.width,height:e.height,url:d}}async function Kt(e,t,n,o,r){let a=[];for(let i of e){if(r())break;a.push(await Aa(i,t,n,o))}return a}var we=require("@layoutit/polycss-core"),Yo=50,jo=[.4,-.7,.59],$o="#ffffff",Xo=1,Uo="#ffffff",Wo=.4,oe=1e-9,Yt=.75,qo=32,wa=96,Cn="0 48px 96px 48px",Ho,No=qo;function La(){let e=typeof CSS<"u"?CSS:void 0;return!!e?.supports?.("corner-top-left-shape","bevel")&&!!e.supports("corner-top-right-shape","bevel")}function Mn(){if(La())return"corner-bevel";let e=typeof navigator<"u"?navigator.userAgent:"";return/\bFirefox\//.test(e)?"border-large":"border"}function En(){let e=typeof navigator<"u"?navigator.userAgent:"";return e!==Ho&&(Ho=e,No=/\bFirefox\//.test(e)?wa:qo),No}function Go(){return Mn()==="border-large"?Cn:void 0}function Ra(){let e=Mn();if(e==="corner-bevel")return;let t=e==="border-large"?Cn:void 0;return t?{borderWidth:t}:void 0}function Zo(e){let t=Mn();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"?Cn:"")}function Ne(e){let t=(0,we.parsePureColor)(e);return t?{r:t.rgb[0],g:t.rgb[1],b:t.rgb[2]}:{r:255,g:255,b:255}}function jt({r:e,g:t,b:n}){return`${e},${t},${n}`}function Oa(e){return(0,we.parsePureColor)(e)?.alpha??1}function Jt({r:e,g:t,b:n}){let o=r=>Math.round(Math.max(0,Math.min(255,r))).toString(16).padStart(2,"0");return`#${o(e)}${o(t)}${o(n)}`}function Ko(e,t,n,o,r){let a=Ne(e),i=Ne(n),u=Ne(o),s=u.r/255*r+i.r/255*t,d=u.g/255*r+i.g/255*t,m=u.b/255*r+i.b/255*t,p=Math.max(0,Math.min(255,Math.round(a.r*s))),l=Math.max(0,Math.min(255,Math.round(a.g*d))),h=Math.max(0,Math.min(255,Math.round(a.b*m))),y=Oa(e);return y<1?`rgba(${p}, ${l}, ${h}, ${y})`:Jt({r:p,g:l,b:h})}function Qo(e,t){if(!Number.isFinite(t)||t<=1)return e;let n=(0,we.parsePureColor)(e);if(!n)return e;let o=255/Math.max(1,Math.round(t)-1),r=i=>Math.max(0,Math.min(255,Math.round(Math.round(i/o)*o))),a={r:r(n.rgb[0]),g:r(n.rgb[1]),b:r(n.rgb[2])};return n.alpha<1?`rgba(${a.r}, ${a.g}, ${a.b}, ${n.alpha})`:Jt(a)}function Jo(e,t,n){let o=(r,a)=>{if(r===a)return r;let i=a-r;return r+Math.sign(i)*Math.min(Math.abs(i),n)};return{r:o(e.r,t.r),g:o(e.g,t.g),b:o(e.b,t.b)}}function Sn(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function Da(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 ka(e){if(e.length<3)return null;let t=e[0],n=[0,0,0];for(let r=1;r+1<e.length;r++){let a=e[r],i=e[r+1],u=[a[0]-t[0],a[1]-t[1],a[2]-t[2]],s=[i[0]-t[0],i[1]-t[1],i[2]-t[2]];n[0]-=u[1]*s[2]-u[2]*s[1],n[1]-=u[2]*s[0]-u[0]*s[2],n[2]-=u[0]*s[1]-u[1]*s[0]}let o=Math.hypot(n[0],n[1],n[2]);return o<=oe?null:[n[0]/o,n[1]/o,n[2]/o]}function Ia(e){if(e.length<3)return!1;let t=0;for(let n=0;n<e.length;n++){let o=e[n],r=e[(n+1)%e.length],a=e[(n+2)%e.length],i=(r[0]-o[0])*(a[1]-r[1])-(r[1]-o[1])*(a[0]-r[0]);if(Math.abs(i)<=oe)return!1;let u=Math.sign(i);if(t===0)t=u;else if(u!==t)return!1}return!0}function Fa(e){let t=0;for(let n=0;n<e.length;n++){let o=e[n],r=e[(n+1)%e.length];t+=o[0]*r[1]-o[1]*r[0]}return t/2}function Va(e,t,n,o){let r=t[0]-e[0],a=t[1]-e[1],i=o[0]-n[0],u=o[1]-n[1],s=r*u-a*i;if(Math.abs(s)<=oe)return null;let d=n[0]-e[0],m=n[1]-e[1],p=(d*u-m*i)/s;return[e[0]+p*r,e[1]+p*a]}function Qt(e,t){if(e.length<6||t<=0)return e;let n=0,o=0,r=e.length/2;for(let i=0;i<e.length;i+=2)n+=e[i],o+=e[i+1];n/=r,o/=r;let a=e.slice();for(let i=0;i<a.length;i+=2){let u=a[i]-n,s=a[i+1]-o,d=Math.hypot(u,s);d<=oe||(a[i]+=u/d*t,a[i+1]+=s/d*t)}return a}function yt(e,t){if(e.length<6||e.length%2!==0||t<=0)return e;let n=[];for(let s=0;s<e.length;s+=2)n.push([e[s],e[s+1]]);if(!Ia(n))return Qt(e,t);let o=Fa(n);if(Math.abs(o)<=oe)return Qt(e,t);let r=o>0?1:-1,a=[];for(let s=0;s<n.length;s++){let d=n[s],m=n[(s+1)%n.length],p=m[0]-d[0],l=m[1]-d[1],h=Math.hypot(p,l);if(h<=oe)return Qt(e,t);let y=r*(l/h)*t,v=r*(-p/h)*t;a.push({a:[d[0]+y,d[1]+v],b:[m[0]+y,m[1]+v]})}let i=[],u=Math.max(2,t*4);for(let s=0;s<n.length;s++){let d=a[(s+n.length-1)%n.length],m=a[s],p=Va(d.a,d.b,m.a,m.b);if(!p)return Qt(e,t);let l=n[s],h=p[0]-l[0],y=p[1]-l[1],v=Math.hypot(h,y);v>u?i.push(l[0]+h/v*u,l[1]+y/v*u):i.push(p[0],p[1])}return i}function _a(e,t,n,o){let r=e+t;if(o<=0||n<=oe||r<=oe||!Number.isFinite(e+t+n+o))return yt([e,0,0,n,r,n],o);let a=Math.sqrt(e*e+n*n),i=Math.sqrt(t*t+n*n);if(a<=oe||i<=oe)return yt([e,0,0,n,r,n],o);let u=-o*n/a,s=-o*e/a,d=o*n/i,m=-o*t/i,p=e+u,l=s,h=r+d,y=n+m,v=-n*r;if(Math.abs(v)<=oe)return yt([e,0,0,n,r,n],o);let x=p-h,T=l-y,E=(x*n+T*e)/v,w=h-E*t,g=y-E*n,R=-o*(e+a)/n,A=n+o,z=r+o*(t+i)/n,k=A,O=Math.max(2,o*4),j=w-e,$=g,Y=Math.sqrt(j*j+$*$);Y>O&&(w=e+j/Y*O,g=$/Y*O);let S=Math.sqrt(R*R+o*o);S>O&&(R=R/S*O,A=n+o/S*O);let c=z-r,f=Math.sqrt(c*c+o*o);return f>O&&(z=r+c/f*O,k=n+o/f*O),[w,g,R,A,z,k]}function Ba(e,t){if((e+1)%3===t)return e;if((t+1)%3===e)return t}function za(e,t,n,o,r){let a=e.seamBleedEdges;if(!a?.size)return null;let i=e.seamBleed===void 0?Yt:e.seamBleed;return[[o,t],[t,n],[n,o]].map(([s,d],m)=>{let p=Ba(s,d),l=p!==void 0&&a.has(p)?e.seamBleedEdgeAmounts?.get(p)??(0,we.resolveSeamBleed)(i,Yt):0;return(0,we.safePlanSeamBleedAmount)(r,m,l)})}function er(e,t,n,o,r,a,i,u,s,d,m,p){let l=Math.round(e*1e3)/1e3||0,h=Math.round(t*1e3)/1e3||0,y=Math.round(n*1e3)/1e3||0,v=Math.round(o*1e3)/1e3||0,x=Math.round(r*1e3)/1e3||0,T=Math.round(a*1e3)/1e3||0,E=Math.round(i*1e3)/1e3||0,w=Math.round(u*1e3)/1e3||0,g=Math.round(s*1e3)/1e3||0,R=Math.round(d*1e3)/1e3||0,A=Math.round(m*1e3)/1e3||0,z=Math.round(p*1e3)/1e3||0;return`matrix3d(${l},${h},${y},0,${v},${x},${T},0,${E},${w},${g},0,${R},${A},${z},1)`}function Ha(e,t,n){return e.map(o=>[o[1]*t,o[0]*t,o[2]*n])}function Tn(e,t,n,o){if(!(0,we.isSolidTrianglePlan)(e))return null;let r=e.tileSize,a=e.layerElevation,i=Ha(e.polygon.vertices,r,a),u=ka(i);if(!u)return null;let s=[{a:0,b:1,c:2},{a:1,b:2,c:0},{a:2,b:0,c:1}].map(_=>{let W=i[_.a],J=i[_.b];return{..._,length:Math.hypot(J[0]-W[0],J[1]-W[1],J[2]-W[2])}}).sort((_,W)=>W.length-_.length),d=s[0].a,m=s[0].b,p=s[0].c,l=i[d],h=i[m],y=i[p],v=s[0].length;if(v<=oe)return null;let x=[(h[0]-l[0])/v,(h[1]-l[1])/v,(h[2]-l[2])/v],T=[y[0]-l[0],y[1]-l[1],y[2]-l[2]],E=Sn(T,x),w=[l[0]+x[0]*E,l[1]+x[1]*E,l[2]+x[2]*E],g=[w[0]-y[0],w[1]-y[1],w[2]-y[2]],R=Math.hypot(g[0],g[1],g[2]);if(R<=oe)return null;let A=[g[0]/R,g[1]/R,g[2]/R];if(Sn(Da(x,A),u)<0){let _=m;if(m=d,d=_,l=i[d],h=i[m],v=Math.hypot(h[0]-l[0],h[1]-l[1],h[2]-l[2]),v<=oe)return null;x=[(h[0]-l[0])/v,(h[1]-l[1])/v,(h[2]-l[2])/v];let W=[y[0]-l[0],y[1]-l[1],y[2]-l[2]];E=Sn(W,x),w=[l[0]+x[0]*E,l[1]+x[1]*E,l[2]+x[2]*E],g=[w[0]-y[0],w[1]-y[1],w[2]-y[2]];let J=Math.hypot(g[0],g[1],g[2]);if(J<=oe)return null;A=[g[0]/J,g[1]/J,g[2]/J]}let z=En(),k=Math.max(0,Math.min(v,E)),O=Math.max(0,v-k),j=[k,0,0,R,k+O,R],$=za(e,d,m,p,j),Y=$?(0,we.offsetConvexPolygonPointsByEdgeAmounts)(j,$):_a(k,O,R,(0,we.resolveSeamBleed)(e.seamBleed,Yt)),S=[Y[0],Y[1]],c=[Y[2],Y[3]],f=[Y[4],Y[5]],b=(c[1]+f[1])/2,C=S[0]-c[0],M=f[0]-S[0],D=b-S[1];if(C<=oe||M<=oe||D<=oe||!Number.isFinite(C+M+D))return null;let I=t==="dynamic",L=Ne(e.polygon.color??"#cccccc"),H=I&&jt(L)===o?.dynamicColorKey,G={color:I||e.shadedColor===o?.paintColor?void 0:e.shadedColor,pointerEvents:n==="none"?"none":void 0,...I&&!H?{"--pnx":u[0].toFixed(4),"--pny":u[1].toFixed(4),"--pnz":u[2].toFixed(4),"--psr":(L.r/255).toFixed(4),"--psg":(L.g/255).toFixed(4),"--psb":(L.b/255).toFixed(4)}:I?{"--pnx":u[0].toFixed(4),"--pny":u[1].toFixed(4),"--pnz":u[2].toFixed(4)}:null},ne=([_,W])=>[y[0]+(_-k)*x[0]+W*A[0],y[1]+(_-k)*x[1]+W*A[1],y[2]+(_-k)*x[2]+W*A[2]],K=ne(S),U=ne([c[0],b]),le=ne([f[0],b]),ce=z/2,ge=[(le[0]-U[0])/z,(le[1]-U[1])/z,(le[2]-U[2])/z],ie=[K[0]-ge[0]*ce,K[1]-ge[1]*ce,K[2]-ge[2]*ce],V=[(U[0]-ie[0])/z,(U[1]-ie[1])/z,(U[2]-ie[2])/z],q=[ge[0],ge[1],ge[2],0,V[0],V[1],V[2],0,u[0],u[1],u[2],0,ie[0],ie[1],ie[2],1].map(_=>(Math.round(_*1e3)/1e3||0).toString()).join(","),X=Ra();return{transform:`matrix3d(${q})`,...X??{},...G}}function en(e){if(!e)return!1;let{a:t,b:n,c:o}=e;return t===0&&n===1&&o===2||t===1&&n===2&&o===0||t===2&&n===0&&o===1}function Na(e,t,n,o){let r=e+t;if(o<=0||n<=oe||r<=oe||!Number.isFinite(e+t+n+o))return yt([e,0,0,n,r,n],o);let a=Math.sqrt(e*e+n*n),i=Math.sqrt(t*t+n*n);if(a<=oe||i<=oe)return yt([e,0,0,n,r,n],o);let u=-o*n/a,s=-o*e/a,d=o*n/i,m=-o*t/i,p=e+u,l=s,h=r+d,y=n+m,v=-n*r;if(Math.abs(v)<=oe)return yt([e,0,0,n,r,n],o);let x=p-h,T=l-y,E=(x*n+T*e)/v,w=h-E*t,g=y-E*n,R=-o*(e+a)/n,A=n+o,z=r+o*(t+i)/n,k=A,O=Math.max(2,o*4),j=w-e,$=g,Y=Math.sqrt(j*j+$*$);Y>O&&(w=e+j/Y*O,g=$/Y*O);let S=Math.sqrt(R*R+o*o);S>O&&(R=R/S*O,A=n+o/S*O);let c=z-r,f=Math.sqrt(c*c+o*o);return f>O&&(z=r+c/f*O,k=n+o/f*O),[w,g,R,A,z,k]}function tr(e,t,n){if(e.texture||e.vertices.length!==3)return null;let o=Yo,r=o,a=e.vertices[0],i=e.vertices[1],u=e.vertices[2],s=a[1]*o,d=a[0]*o,m=a[2]*r,p=i[1]*o,l=i[0]*o,h=i[2]*r,y=u[1]*o,v=u[0]*o,x=u[2]*r,T=p-s,E=l-d,w=h-m,g=y-s,R=v-d,A=x-m,z=-(E*A-w*R),k=-(w*g-T*A),O=-(T*R-E*g),j=Math.sqrt(z*z+k*k+O*O);if(j<=oe)return null;z/=j,k/=j,O/=j;let $=T*T+E*E+w*w,Y=y-p,S=v-l,c=x-h,f=s-y,b=d-v,C=m-x,M=Y*Y+S*S+c*c,D=f*f+b*b+C*C,I=en(n)?n.a:0,L=en(n)?n.b:1,H=en(n)?n.c:2,G=()=>n?tr(e,t):null;if(!en(n)){let ut=$;M>ut&&(I=1,L=2,H=0,ut=M),D>ut&&(I=2,L=0,H=1)}let ne=H===0?s:H===1?p:y,K=H===0?d:H===1?l:v,U=H===0?m:H===1?h:x,le=I===0?s:I===1?p:y,ce=I===0?d:I===1?l:v,ge=I===0?m:I===1?h:x,ie=L===0?s:L===1?p:y,V=L===0?d:L===1?l:v,q=L===0?m:L===1?h:x,X=ie-le,_=V-ce,W=q-ge,J=Math.sqrt(X*X+_*_+W*W);if(J<=oe)return G();let he=X/J,Pe=_/J,me=W/J,be=(ne-le)*he+(K-ce)*Pe+(U-ge)*me,Se=le+he*be-ne,xe=ce+Pe*be-K,Ae=ge+me*be-U,ae=Math.sqrt(Se*Se+xe*xe+Ae*Ae);if(ae<=oe)return G();Se/=ae,xe/=ae,Ae/=ae;let N=Math.max(0,Math.min(J,be)),F=Math.max(0,J-N),pe=Na(N,F,ae,Yt),Le=pe[0],it=pe[1],Re=pe[2],Ie=pe[3],Ge=pe[4],Tt=pe[5],Ze=(Ie+Tt)/2,Ke=Le-Re,Qe=Ge-Le,zt=Ze-it;if(Ke<=oe||Qe<=oe||zt<=oe||!Number.isFinite(Ke+Qe+zt))return G();let Be=1/En(),st=Ke+Qe,Fe=st*Be,ze=(Qe-Ke)*.5*Be,He=zt*Be,At=Le-N-st*.5,lt=it,Ve=er(he*Fe,Pe*Fe,me*Fe,he*ze+Se*He,Pe*ze+xe*He,me*ze+Ae*He,z,k,O,ne+he*At+Se*lt,K+Pe*At+xe*lt,U+me*At+Ae*lt),Oe;if(Math.floor(t.colorFreezeFrames??1)!==0){let ut=t.directionalLight,ho=t.ambientLight,Xe=ut?.direction??jo,sa=ut?.color??$o,la=Math.max(0,ut?.intensity??Xo),ua=ho?.color??Uo,ca=Math.max(0,ho?.intensity??Wo),un=Math.sqrt(Xe[0]*Xe[0]+Xe[1]*Xe[1]+Xe[2]*Xe[2])||1,da=Xe[0]/un,ma=Xe[1]/un,pa=Xe[2]/un,ya=la*Math.max(0,z*da+k*ma+O*pa),Po=Ko(e.color??"#cccccc",ya,sa,ua,ca);Oe=t.colorSteps?Qo(Po,t.colorSteps):Po}return{transform:Ve,borderWidth:Go(),color:Oe,basis:{a:I,b:L,c:H}}}function Ya(e,t,n){return n>0&&(n<=1||(t+e)%n===0)}function ja(e,t,n,o){let r=Math.floor(o.colorFreezeFrames??1);if(r===0)return;let a=e.__polycssStableTriangleColor;if(!(a===void 0||Ya(t,Math.max(0,Math.floor(o.colorFrame??0)),Math.max(1,r)))||a===n)return;let u=n,s=n?Ne(n):void 0,d=e.__polycssStableTriangleColorRgb,m=Math.max(0,Math.floor(o.colorMaxStep??0));m>0&&d&&s&&n&&(s=Jo(d,s,m),u=Jt(s)),e.style.color=u,e.__polycssStableTriangleColor=u,e.__polycssStableTriangleColorRgb=s}function An(e,t,n={}){if((n.textureLighting??"baked")!=="baked"||!mt())return!1;let o=Array.from(e.children).filter(a=>a instanceof HTMLElement&&a.localName==="u");if(o.length!==t.length)return!1;let r=t.map((a,i)=>tr(a,n,o[i].__polycssStableTriangleBasis));if(r.some(a=>!a))return!1;for(let a=0;a<o.length;a+=1){let i=r[a],u=o[a];u.style.visibility&&(u.style.visibility=""),u.__polycssStableTriangleBasis=i.basis,Zo(u),u.style.transform=i.transform,i.borderWidth!==void 0&&(u.style.borderWidth=i.borderWidth),i.color!==void 0&&ja(u,a,i.color,n)}return!0}var nr=require("@layoutit/polycss-core");function ft(e,t,n={},o){return(0,nr.computeTextureAtlasPlanPublic)(e,t,n,void 0,o)}function wn(e,t,n){let o=new Set(n?.disable??[]);return gn(e,t,o)}var de=require("vue");function Ln(e){for(let t of e)t.startsWith("blob:")&&URL.revokeObjectURL(t)}function or(e){return e.flatMap(t=>t.url?.startsWith("blob:")?[t.url]:[])}function tn(e){return e.map(t=>({width:t.width,height:t.height,url:null}))}function rr(e){return e.length===0||typeof Image>"u"?Promise.resolve():Promise.all(e.map(t=>{let n=new Image;n.src=t;let o=n.decode?.();return o?o.catch(()=>{}):Promise.resolve()})).then(()=>{})}function gt(e){e.length!==0&&(typeof requestAnimationFrame=="function"?requestAnimationFrame(()=>Ln(e)):setTimeout(()=>Ln(e),0))}function ht(e,t,n=(0,de.computed)(()=>{}),o=(0,de.computed)(()=>{}),r=(0,de.computed)(()=>!1)){let a=(0,de.computed)(()=>new Set(o.value?.disable??[])),i=(0,de.computed)(()=>!a.value.has("b")),u=(0,de.computed)(()=>{let x=typeof document<"u"?document:null;return i.value&&(!x||Rt(x))}),s=(0,de.computed)(()=>!a.value.has("u")&&mt()),d=(0,de.computed)(()=>!a.value.has("i")&&t.value!=="dynamic"&&dt()),m=(0,de.computed)(()=>{let x=hn(e.value,t.value,a.value,typeof document<"u"?document:null);return Pn(x,n.value,typeof document<"u"?document:null)}),p=(0,de.ref)(tn(m.value.packed.pages)),l=(0,de.ref)({plans:e.value,entries:m.value.packed.entries,pages:tn(m.value.packed.pages)}),h=[],y=0,v=!1;return(0,de.watch)(()=>[m.value,t.value,r.value],([x,T,E],w,g)=>{let{packed:R,atlasScale:A}=x;if(E){let O=++y,j=e.value,$=R.entries;if(R.pages.length===0||typeof document>"u"){gt(h),h=[],l.value={plans:j,entries:$,pages:tn(R.pages)};return}let Y=()=>v||O!==y,S=[];Kt(R.pages,T,document,A,Y).then(async c=>{if(S=or(c),await rr(S),Y()){gt(S);return}let f=h;h=S,S=[],gt(f),l.value={plans:j,entries:$,pages:c}}).catch(()=>{});return}let z=!1,k=[];if(g(()=>{z=!0,gt(k)}),R.pages.length===0){gt(h),h=[],p.value.length!==0&&(p.value=[]);return}typeof document>"u"||(p.value.some(O=>O.url)||(p.value=tn(R.pages)),Kt(R.pages,T,document,A,()=>z).then(async O=>{if(k=or(O),await rr(k),z){gt(k);return}let j=h;h=k,k=[],gt(j),p.value=O}).catch(()=>{}))},{immediate:!0}),(0,de.getCurrentScope)()&&(0,de.onScopeDispose)(()=>{v=!0,Ln(h),h=[]}),{plans:(0,de.computed)(()=>r.value?l.value.plans:e.value),entries:(0,de.computed)(()=>r.value?l.value.entries:m.value.packed.entries),pages:(0,de.computed)(()=>r.value?l.value.pages:p.value),ready:(0,de.computed)(()=>{let x=r.value?l.value.pages:p.value;return x.length===0||x.every(T=>!!T.url)}),useFullRectSolid:i,useProjectiveQuad:u,useStableTriangle:s,useBorderShape:d}}var ar=require("vue");function Pt({entry:e,textureLighting:t,solidPaintDefaults:n,className:o,style:r,domAttrs:a,pointerEvents:i="auto"}){let u=Tn(e,t,i,n);if(!u)return null;let s=e.polygon.data?Object.fromEntries(Object.entries(e.polygon.data).map(([m,p])=>[`data-${m}`,String(p)])):{},d=o?.trim()||void 0;return(0,ar.h)("u",{class:d,style:{...u,...r},"data-poly-index":String(e.index),...s,...a})}var ir=require("vue"),nt=require("@layoutit/polycss-core");var $a=new Map([["transform",0],["border-shape",1],["border-width",2],["width",3],["height",4],["color",5]]);function Xa(e){let t=e.getAttribute("style");if(!t)return;let o=t.split(";").map(r=>r.trim()).filter(Boolean).map((r,a)=>{let i=r.slice(0,r.indexOf(":")).trim().toLowerCase();return{declaration:r,index:a,order:$a.get(i)??Number.POSITIVE_INFINITY}}).sort((r,a)=>r.order-a.order||r.index-a.index).map(({declaration:r})=>r).join(";");o!==t&&e.setAttribute("style",o)}function vt({entry:e,textureLighting:t,solidPaintDefaults:n,className:o,style:r,domAttrs:a,pointerEvents:i="auto",forceBorderShape:u=!1}){let s=!e.texture&&(0,nt.isFullRectSolid)(e),d=s&&u&&dt(),m=!s||d?(0,nt.cssBorderShapeForPlan)(e):null,p=t==="dynamic",l=Ne(e.polygon.color??"#cccccc"),h=p&&jt(l)===n?.dynamicColorKey,v={transform:m?(0,nt.formatBorderShapeEntryMatrix)(e):(0,nt.formatSolidQuadEntryMatrix)(e),color:p?void 0:e.shadedColor,pointerEvents:i==="none"?"none":void 0,...p?{"--pnx":e.normal[0].toFixed(4),"--pny":e.normal[1].toFixed(4),"--pnz":e.normal[2].toFixed(4),...h?null:{"--psr":(l.r/255).toFixed(4),"--psg":(l.g/255).toFixed(4),"--psb":(l.b/255).toFixed(4)}}:null,...r},x=e.polygon.data?Object.fromEntries(Object.entries(e.polygon.data).map(([w,g])=>[`data-${w}`,String(g)])):{},T=o?.trim()||void 0,E=w=>{let g=w.el;g&&(m?g.style.setProperty("border-shape",m):g.style.removeProperty("border-shape"),Xa(g))};return(0,ir.h)(s&&!d?"b":"i",{class:T,style:v,"data-poly-index":String(e.index),...x,...a,onVnodeMounted:E,onVnodeUpdated:E})}var sr=require("vue");function xt({entry:e,textureLighting:t,solidPaintDefaults:n,className:o,style:r,domAttrs:a,pointerEvents:i="auto"}){let u=t==="dynamic",s=Ne(e.polygon.color??"#cccccc"),d=u&&jt(s)===n?.dynamicColorKey,m={transform:`matrix3d(${e.projectiveMatrix})`,color:u?void 0:e.shadedColor,pointerEvents:i==="none"?"none":void 0,...u&&!d?{"--pnx":e.normal[0].toFixed(4),"--pny":e.normal[1].toFixed(4),"--pnz":e.normal[2].toFixed(4),"--psr":(s.r/255).toFixed(4),"--psg":(s.g/255).toFixed(4),"--psb":(s.b/255).toFixed(4)}:u?{"--pnx":e.normal[0].toFixed(4),"--pny":e.normal[1].toFixed(4),"--pnz":e.normal[2].toFixed(4)}:null,...r},p=e.polygon.data?Object.fromEntries(Object.entries(e.polygon.data).map(([h,y])=>[`data-${h}`,String(y)])):{},l=o?.trim()||void 0;return(0,sr.h)("b",{class:l,style:m,"data-poly-index":String(e.index),...p,...a})}var lr=require("vue"),Dt=require("@layoutit/polycss-core");function Ua(e,t,n){if(t==="dynamic"){let o=(0,Dt.parseHex)(e.polygon.color??"#cccccc"),r=`;--pnx:${e.normal[0].toFixed(4)};--pny:${e.normal[1].toFixed(4)};--pnz:${e.normal[2].toFixed(4)}`;return(0,Dt.rgbKey)(o)!==n?.dynamicColorKey&&(r+=`;--psr:${(o.r/255).toFixed(4)};--psg:${(o.g/255).toFixed(4)};--psb:${(o.b/255).toFixed(4)}`),r}return e.shadedColor?`;color:${e.shadedColor}`:""}function Rn({entry:e,geometry:t,textureLighting:n,solidPaintDefaults:o,className:r,pointerEvents:a="auto"}){let i=(0,Dt.formatCornerShapeElementStyle)(e,t),u=Ua(e,n,o),s=a==="none"?";pointer-events:none":"",d=i+u+s,m=l=>{!l||!(l instanceof HTMLElement)||l.setAttribute("style",d)},p=e.polygon.data?Object.fromEntries(Object.entries(e.polygon.data).map(([l,h])=>[`data-${l}`,String(h)])):{};return(0,lr.h)("u",{class:r?.trim()||void 0,"data-poly-index":String(e.index),...p,onVnodeMounted:({el:l})=>m(l),onVnodeUpdated:({el:l})=>m(l)})}var ur=require("vue"),bt=require("@layoutit/polycss-core"),Wa=64;function St({entry:e,page:t,textureLighting:n,solidPaintDefaults:o,className:r,style:a,domAttrs:i,pointerEvents:u="auto"}){let s=n==="dynamic",d=e.atlasCanonicalSize??Wa,m=e.canvasW||1,p=e.canvasH||1,l=t?`${(0,bt.formatCssLengthPx)(-e.x/m*d)} ${(0,bt.formatCssLengthPx)(-e.y/p*d)}`:void 0,h=t?`${(0,bt.formatCssLengthPx)(t.width/m*d)} ${(0,bt.formatCssLengthPx)(t.height/p*d)}`:void 0,y=s&&t?.url?`url(${t.url})`:void 0,v=!s&&t?.url?`url(${t.url}) ${l} / ${h} no-repeat`:void 0,x={transform:(0,bt.formatMatrix3d)(e.atlasMatrix),"--polycss-atlas-size":`${d}px`,...s?{backgroundImage:t?.url?`url(${t.url})`:void 0,backgroundPosition:l,backgroundSize:h}:{background:v},...s?{"--pnx":e.normal[0].toFixed(4),"--pny":e.normal[1].toFixed(4),"--pnz":e.normal[2].toFixed(4)}:null,...s&&y?{maskImage:y,maskMode:"alpha",maskPosition:l,maskSize:h,maskRepeat:"no-repeat",WebkitMaskImage:y,WebkitMaskPosition:l,WebkitMaskSize:h,WebkitMaskRepeat:"no-repeat"}:null,opacity:t?.url?void 0:0,pointerEvents:u==="none"?"none":void 0,...a},T=e.polygon.data?Object.fromEntries(Object.entries(e.polygon.data).map(([w,g])=>[`data-${w}`,String(g)])):{},E=r?.trim()||void 0;return(0,ur.h)("s",{class:E,style:x,"data-poly-index":String(e.index),...T,...i})}var On=(0,Z.defineComponent)({name:"PolyScene",inheritAttrs:!1,props:{polygons:{type:Array,default:void 0},centerPolygons:{type:Array,default:void 0},perspective:{type:Number},rotX:{type:Number},rotY:{type:Number},zoom:{type:Number},directionalLight:{type:Object,default:void 0},ambientLight:{type:Object,default:void 0},textureLighting:{type:String,default:"baked"},textureQuality:{type:[Number,String],default:void 0},seamBleed:{type:[Number,String],default:void 0},strategies:{type:Object,default:void 0},autoCenter:{type:Boolean,default:!1},shadow:{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},debugShowLabels:{type:Boolean},debugShowBackfaces:{type:Boolean}},setup(e,{slots:t,attrs:n}){let o=(0,Z.inject)(ye);if(!o)throw new Error("polycss: PolyScene must be used inside a PolyCamera.");let{sceneElRef:r,applyTransformDirect:a}=o,i=(0,Z.ref)(0),u=new Map,s={register(f,b){u.set(f,b),i.value++},unregister(f){u.delete(f),i.value++},version:i,getEntries(){return Array.from(u.values())}},d=new Set,m=(0,Z.ref)(!1),p={register(f){d.add(f),m.value=d.size>0},unregister(f){d.delete(f),m.value=d.size>0},hasAny:m},l=(0,Z.ref)(null),h=(0,Z.ref)(null),y=(0,Z.computed)(()=>({textureLighting:e.textureLighting??"baked",directionalLight:e.directionalLight,ambientLight:e.ambientLight,strategies:e.strategies,seamBleed:e.seamBleed??ot.DEFAULT_SEAM_BLEED,shadow:e.shadow,shadowRegistry:s,receiverRegistry:p,groundCssZ:l.value,sceneEl:h.value}));(0,Z.provide)(pn,y),(0,Z.watch)(h,f=>{r.value=f});let v=!1;(0,Z.onMounted)(()=>{v||typeof document<"u"&&(Ht(document),v=!0)}),(0,Z.watch)(()=>e.debugShowBackfaces,f=>{let b=h.value;b&&b.classList.toggle("polycss-debug-show-backfaces",!!f)});let x=(0,Z.computed)(()=>e.polygons??[]),T=(0,Z.computed)(()=>e.centerPolygons??null),E=(0,Z.computed)(()=>({directionalLight:e.directionalLight})),w=Lt(x,E),g=(0,Z.computed)(()=>T.value??x.value),R=Lt(g,E);(0,Z.onMounted)(()=>{r.value=h.value,a()}),(0,Z.onUpdated)(a);let A=(0,Z.computed)(()=>({tileSize:50,layerElevation:50,directionalLight:e.directionalLight,textureLighting:e.textureLighting,textureQuality:e.textureQuality})),z=(0,Z.computed)(()=>{let f=e.textureLighting==="dynamic",b=f?void 0:e.directionalLight,C=f?void 0:e.ambientLight,M=(0,se.buildTextureEdgeRepairSets)(w.value.polygons),D=e.seamBleed??ot.DEFAULT_SEAM_BLEED,I=D==="auto"||typeof D=="number"&&Number.isFinite(D)&&D>0?(0,se.buildSeamBleedPolygonEdges)(w.value.polygons,{tileSize:A.value.tileSize,layerElevation:A.value.layerElevation,directionalLight:b,ambientLight:C}):null;return w.value.polygons.map((L,H)=>ft(L,H,{tileSize:A.value.tileSize,layerElevation:A.value.layerElevation,directionalLight:b,ambientLight:C,seamBleed:I?.has(H)?D:void 0,seamEdges:I?.get(H),textureEdgeRepairEdges:M[H]}))}),k=(0,Z.computed)(()=>e.textureLighting??"baked"),O=(0,Z.computed)(()=>e.textureQuality),j=(0,Z.computed)(()=>e.strategies),$=ht(z,k,O,j),Y=(0,Z.computed)(()=>{if(e.textureLighting!=="dynamic")return null;let f=e.directionalLight?.direction??[.4,-.7,.59],b=(0,ot.worldDirectionToCss)(f),C=Math.hypot(b[0],b[1],b[2])||1,M=b[0]/C,D=b[1]/C,I=b[2]/C,L=(0,ot.parseHexColor)(e.directionalLight?.color??"#ffffff")?.rgb??[255,255,255],H=(0,ot.parseHexColor)(e.ambientLight?.color??"#ffffff")?.rgb??[255,255,255],G=e.directionalLight?.intensity??1,ne=e.ambientLight?.intensity??.4,K=ce=>(ce/255).toFixed(4),U=I,le=Math.sign(U||1)*Math.max(Math.abs(U),.01);return{"--plx":M.toFixed(2),"--ply":D.toFixed(2),"--plz":I.toFixed(2),"--clx":M.toFixed(2),"--cly":D.toFixed(2),"--clz":le.toFixed(2),"--plr":K(L[0]),"--plg":K(L[1]),"--plb":K(L[2]),"--pli":G.toFixed(4),"--par":K(H[0]),"--pag":K(H[1]),"--pab":K(H[2]),"--pai":ne.toFixed(4)}}),S=50;(0,Z.watchEffect)(()=>{let f=h.value;i.value;let b=s.getEntries();if(b.length===0){f&&f.style.removeProperty("--shadow-ground-cssz"),l.value!==null&&(l.value=null);return}let C=1/0;for(let I of b){let L=I();for(let H of L.polygons)for(let G of H.vertices){let ne=G[2]+(L.position[2]??0);ne<C&&(C=ne)}}if(!Number.isFinite(C)){f&&f.style.removeProperty("--shadow-ground-cssz"),l.value!==null&&(l.value=null);return}let M=e.shadow?.lift??.05,D=(C+M)*S;l.value!==D&&(l.value=D),f&&(e.textureLighting==="dynamic"?f.style.setProperty("--shadow-ground-cssz",D.toFixed(3)):f.style.removeProperty("--shadow-ground-cssz"))});let c=(0,Z.computed)(()=>{if(!e.autoCenter)return[0,0,0];let f=R.value.sceneBbox;return[(f.min[0]+f.max[0])/2,(f.min[1]+f.max[1])/2,(f.min[2]+f.max[2])/2]});return(0,Z.watchEffect)(()=>{o.autoCenterOffset.value=c.value}),(0,Z.onBeforeUnmount)(()=>{}),()=>{let f=`polycss-scene${e.class?` ${e.class}`:""}`,b=A.value,C=$.entries.value.map((D,I)=>{if(D)return St({entry:D,page:$.pages.value[D.pageIndex],textureLighting:b.textureLighting??"baked"});let L=z.value[I];return!L||L.texture?null:$.useStableTriangle.value&&(0,se.isSolidTrianglePlan)(L)?Pt({entry:L,textureLighting:b.textureLighting??"baked"}):$.useProjectiveQuad.value&&(0,se.isProjectiveQuadPlan)(L)?xt({entry:L,textureLighting:b.textureLighting??"baked"}):$.useBorderShape.value||$.useFullRectSolid.value?vt({entry:L,textureLighting:b.textureLighting??"baked",forceBorderShape:!$.useFullRectSolid.value}):null}),M=t.default?.()??[];return(0,Z.h)("div",{ref:h,class:f,"data-polycss-lighting":b.textureLighting??"baked","aria-hidden":"true",style:{...Y.value??null,...n.style},...Object.fromEntries(Object.entries(n).filter(([D])=>D!=="style"&&D!=="class"))},[...C,...M])}}});var B=require("vue"),rt=require("@layoutit/polycss-core"),ee=require("@layoutit/polycss-core");var Ye=require("vue"),dr=require("@layoutit/polycss-core"),cr=[],Dn=[];function $t(e,t){let n=(0,Ye.ref)(cr),o=(0,Ye.ref)(void 0),r=(0,Ye.ref)(!!e.value),a=(0,Ye.ref)(null),i=(0,Ye.ref)(Dn),u=null;function s(){if(u){try{u.dispose()}catch{}u=null}}return(0,Ye.watch)(e,(d,m,p)=>{if(!d){s(),n.value=cr,o.value=void 0,r.value=!1,a.value=null,i.value=Dn;return}let l=!1;r.value=!0,a.value=null;let h=u;(0,dr.loadMesh)(d,t).then(y=>{if(l){try{y.dispose()}catch{}return}if(h)try{h.dispose()}catch{}u=y,n.value=y.polygons,o.value=y.voxelSource,r.value=!1,a.value=null,i.value=y.warnings??Dn}).catch(y=>{if(l)return;let v=y instanceof Error?y:new Error(String(y));r.value=!1,a.value=v}),p(()=>{l=!0})},{immediate:!0}),(0,Ye.onUnmounted)(()=>{s()}),{polygons:n,voxelSource:o,loading:r,error:a,warnings:i,dispose:s}}var Q=require("@layoutit/polycss-core"),qa=[.4,-.7,.59],Ga="#ffffff",Za=1,Ka="#ffffff",Qa=.4,hr=1,Ja=8,ei=Q.PROJECTIVE_QUAD_BLEED,We=1e-6,ti=(0,Q.resolveProjectiveQuadGuards)({bleed:0}),Pr={t:[0,0,1],b:[0,0,-1],fl:[0,1,0],br:[0,-1,0],fr:[1,0,0],bl:[-1,0,0]},Fn=["t","b","bl","br","fr","fl"],ni=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 mr(e){let t=[];for(let n of Fn)(0,Q.normalFacesCamera)(Pr[n],e)&&t.push(n);return t.join("|")}function oi(e,t,n){let o=e.__polycssVoxelBrushState??(e.__polycssVoxelBrushState={});o.color!==t&&(e.style.color=t,o.color=t),o.transform!==n&&(e.style.transform=n,o.transform=n)}function ri(e){let t=e.vertices;if(t.length<3)return null;let n=t[0],o=0,r=0,a=0;for(let u=1;u+1<t.length;u+=1){let s=t[u],d=t[u+1],m=s[1]-n[1],p=s[0]-n[0],l=s[2]-n[2],h=d[1]-n[1],y=d[0]-n[0],v=d[2]-n[2];o-=p*v-l*y,r-=l*h-m*v,a-=m*y-p*h}let i=Math.hypot(o,r,a);return i<=1e-9?null:[Math.round(o/i),Math.round(r/i),Math.round(a/i)]}function ai(e){if(e.texture||e.material||e.uvs||e.textureTriangles||e.vertices.length!==4)return null;let t=ri(e),n=t?ni.get(t.join(",")):void 0;if(!n)return null;let o=1/0,r=1/0,a=1/0,i=-1/0,u=-1/0,s=-1/0;for(let p of e.vertices)o=Math.min(o,p[0]),r=Math.min(r,p[1]),a=Math.min(a,p[2]),i=Math.max(i,p[0]),u=Math.max(u,p[1]),s=Math.max(s,p[2]);let d=1e-6,m=mi(e.color);return Math.abs(s-a)<=d?{axis:"z",face:n,left:r*Q.BASE_TILE,top:o*Q.BASE_TILE,width:Math.max(0,(u-r)*Q.BASE_TILE),height:Math.max(0,(i-o)*Q.BASE_TILE),z:a*Q.BASE_TILE,baseColor:m,bleed:kn()}:Math.abs(i-o)<=d?{axis:"x",face:n,left:r*Q.BASE_TILE,top:a*Q.BASE_TILE,width:Math.max(0,(u-r)*Q.BASE_TILE),height:Math.max(0,(s-a)*Q.BASE_TILE),z:-o*Q.BASE_TILE,baseColor:m,bleed:kn()}:Math.abs(u-r)<=d?{axis:"y",face:n,left:a*Q.BASE_TILE,top:o*Q.BASE_TILE,width:Math.max(0,(s-a)*Q.BASE_TILE),height:Math.max(0,(i-o)*Q.BASE_TILE),z:-r*Q.BASE_TILE,baseColor:m,bleed:kn()}:null}function kn(){return{left:0,right:0,top:0,bottom:0}}function ii(e){let t=o=>String(Number(o.toFixed(6))),n=`${e.item.baseColor}|${e.variableAxis}`;for(let o=0;o<3;o+=1)o!==e.variableAxis&&(n+=`|${o}:${t(e.fixed[o])}`);return n}function pr(e){return[e[1]*Q.BASE_TILE,e[0]*Q.BASE_TILE,e[2]*Q.BASE_TILE]}function yr(e,t){return e.axis==="x"?[t[0],t[2]]:e.axis==="y"?[t[2],t[1]]:[t[0],t[1]]}function si(e,t,n){let o=e.left,r=e.left+e.width,a=e.top,i=e.top+e.height;if(Math.abs(t[0]-n[0])<=We){if(Math.abs(t[0]-o)<=We)return"left";if(Math.abs(t[0]-r)<=We)return"right"}if(Math.abs(t[1]-n[1])<=We){if(Math.abs(t[1]-a)<=We)return"top";if(Math.abs(t[1]-i)<=We)return"bottom"}return null}function li(e,t){let n=null;for(let o=0;o<3;o+=1)if(!(Math.abs(e[o]-t[o])<=We)){if(n!==null)return null;n=o}return n}function ui(e,t,n){let o=t.vertices,r=pr(o[n]),a=pr(o[(n+1)%o.length]),i=si(e,yr(e,r),yr(e,a));if(!i)return null;let u=li(r,a);if(u===null)return null;let s=Math.min(r[u],a[u]),d=Math.max(r[u],a[u]);return d-s>We?{item:e,side:i,variableAxis:u,fixed:r,start:s,end:d}:null}function fr(e){e.item.bleed[e.side]=Math.max(e.item.bleed[e.side],ei)}function ci(e,t){let n=new Map;for(let o of t){let r=e[o.sourceIndex];if(r)for(let a=0;a<r.vertices.length;a+=1){let i=ui(o,r,a);if(!i)continue;let u=ii(i),s=n.get(u);s?s.push(i):n.set(u,[i])}}for(let o of n.values()){if(o.length<2)continue;o.sort((a,i)=>a.start-i.start||a.end-i.end);let r=[];for(let a of o){r=r.filter(i=>i.end>a.start+We);for(let i of r)i.item.sourceIndex!==a.item.sourceIndex&&(fr(i),fr(a));r.push(a)}}}function di(e){let t=(0,Q.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 mi(e){if(!e)return"#cccccc";let t=(0,Q.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 o=Math.round(Math.max(0,n.alpha)*1e3)/1e3;return`rgba(${In(n.r)}, ${In(n.g)}, ${In(n.b)}, ${o})`}return pi(n)}function pi({r:e,g:t,b:n}){let o=r=>Math.round(Math.max(0,Math.min(255,r))).toString(16).padStart(2,"0");return`#${o(e)}${o(t)}${o(n)}`}function In(e){return Math.round(Math.max(0,Math.min(255,e)))}function yi(e,t,n,o){let r=n?.direction??qa,a=Math.hypot(r[0],r[1],r[2])||1,i=r[0]/a,u=r[1]/a,s=r[2]/a,d=Math.max(0,n?.intensity??Za)*Math.max(0,e[0]*i+e[1]*u+e[2]*s),m=Math.max(0,o?.intensity??Qa),p=n?.color??Ga,l=o?.color??Ka,h=(0,Q.shadePolygon)(t,d,p,l,m),y=di(t);if(y.alpha>=1)return h;let v=parseInt(h.slice(1,3),16),x=parseInt(h.slice(3,5),16),T=parseInt(h.slice(5,7),16);return`rgba(${v}, ${x}, ${T}, ${y.alpha})`}function fi(e){if(!e?.length)return[];let t=[];for(let n=0;n<e.length;n+=1){let o=e[n],r=ai(o);if(!r||r.width<=0||r.height<=0)return[];t.push({...r,sourceIndex:n})}return ci(e,t),t}function gi(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 hi(e){let t=e.left,n=e.top,o=e.left+e.width,r=e.top+e.height;return[t,n,o,n,o,r,t,r]}function Pi(e){return new Map([[0,e.bleed.top],[1,e.bleed.right],[2,e.bleed.bottom],[3,e.bleed.left]])}function vi(e,t){let n=e.split(",").map(Number);if(n.length!==16||n.some(r=>!Number.isFinite(r)))return null;let o=Q.SOLID_QUAD_CANONICAL_SIZE/t;for(let r=0;r<8;r+=1)n[r]*=o;return`matrix3d(${n.map(r=>Number(r.toFixed(6))).join(",")})`}function gr(e,t){let n=e.left-e.bleed.left,o=e.top-e.bleed.top,r=e.width+e.bleed.left+e.bleed.right,a=e.height+e.bleed.top+e.bleed.bottom,i=e.z,u=r/t,s=a/t;return`matrix3d(${(e.axis==="x"?[u,0,0,0,0,0,s,0,0,-1,0,0,n,-i,o,1]:e.axis==="y"?[0,0,u,0,0,s,0,0,-1,0,0,0,-i,o,n,1]:[u,0,0,0,0,s,0,0,0,0,1,0,n,o,i,1]).map(m=>Number(m.toFixed(6))).join(",")})`}function xi(e,t){let{xAxis:n,yAxis:o,normal:r,tx:a,ty:i,tz:u}=gi(e),s=(0,Q.computeProjectiveQuadMatrix)(hi(e),n,o,r,a,i,u,ti,Pi(e));return s?vi(s,t)??gr(e,t):gr(e,t)}function bi(e){let t=e.defaultView?.matchMedia;return t?t("(pointer: coarse)").matches||t("(hover: none)").matches:!1}function Si(e){return bi(e)?Ja:hr}function Ci(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 Mi(e,t){let n=Ci(e),o=t.meshRotation;o&&(n=(0,Q.rotateVec3)(n,o[0]??0,o[1]??0,o[2]??0));let[r,a]=(0,Q.rotateVec3)(n,t.rotX,0,t.rotY);return{x:r,y:a}}function Ei(e,t,n){let o=e.filter(l=>t.has(l.face)).map(l=>({item:l,...Mi(l,n)}));if(o.length===0)return[];let r=1/0,a=-1/0,i=1/0,u=-1/0;for(let l of o)r=Math.min(r,l.x),a=Math.max(a,l.x),i=Math.min(i,l.y),u=Math.max(u,l.y);let s=4,d=Math.max(1e-6,a-r),m=Math.max(1e-6,u-i),p=new Map;for(let l of o){let h=Math.min(s-1,Math.max(0,Math.floor((l.x-r)/d*s))),y=Math.min(s-1,Math.max(0,Math.floor((l.y-i)/m*s))),v=`${h}:${y}`,x=p.get(v);x||(x={tx:h,ty:y,sourceIndex:l.item.sourceIndex,items:[]},p.set(v,x)),x.items.push(l.item),x.sourceIndex=Math.min(x.sourceIndex,l.item.sourceIndex)}return Array.from(p.values()).sort((l,h)=>l.ty-h.ty||l.tx-h.tx||l.sourceIndex-h.sourceIndex).flatMap(l=>l.items)}function vr(e){let{doc:t,wrapper:n,polygons:o,directionalLight:r,ambientLight:a}=e,i=fi(o);if(i.length===0)return null;let u=new Set(i.map(S=>S.face));n.classList.add("polycss-voxel-mesh");let s=Si(t);s!==hr&&n.style.setProperty("--polycss-voxel-primitive",`${s}px`);let d=new Map,m=(S,c)=>{let f=`${S}|${c}`,b=d.get(f);if(b)return b;let C=yi(Pr[S],c,r,a);return d.set(f,C),C},p=new Map,l=new Map,h=new Map,y=new Map;for(let S of i){let c=y.get(S.face);c||(c=[],y.set(S.face,c)),c.push(S)}let v="",x=0,T=new Set,E=S=>{let c=p.get(S.sourceIndex);return c||(c=t.createElement("b"),p.set(S.sourceIndex,c),oi(c,m(S.face,S.baseColor),xi(S,s))),c},w=S=>{let c=l.get(S);return c||(c=t.createElement("span"),c.className=`polycss-voxel-face polycss-voxel-face-${S}`,c.dataset.polycssVoxelFace=S,c.__polycssVoxelFaceHost=!0,l.set(S,c)),c},g=()=>{for(let S of Array.from(n.childNodes))if(!S.__polycssVoxelFaceHost)return S;return null},R=(S,c)=>{let f=c.map(M=>M.sourceIndex).join(",");if(h.get(S)===f)return;let b=w(S),C=t.createDocumentFragment();for(let M of c)C.appendChild(E(M));b.replaceChildren(C),h.set(S,f)},A=()=>{for(let S of Fn)u.has(S)&&R(S,y.get(S)??[])},z=S=>new Set(S.split("|").filter(Boolean)),k=S=>{let c=z(S);return Fn.filter(f=>c.has(f)&&u.has(f))},O=S=>{let c=0;for(let f of S)c+=y.get(f)?.length??0;return c},j=S=>{let c=new Set,f=[],b=new Map;for(let C of S){c.has(C.face)||(c.add(C.face),f.push(C.face));let M=b.get(C.face);M||(M=[],b.set(C.face,M)),M.push(C)}return{orderedFaces:f,itemsByFace:b}},$=(S,c)=>{let f=new Set(S);for(let b of T){if(f.has(b))continue;let C=l.get(b);C?.parentNode===n&&n.removeChild(C)}if(c){let b=t.createDocumentFragment();for(let C of S)b.appendChild(w(C));n.insertBefore(b,g()),T=f;return}for(let b=0;b<S.length;b+=1){let C=S[b],M=w(C);if(M.parentNode===n)continue;let D=null;for(let I=b+1;I<S.length;I+=1){let L=l.get(S[I]);if(L?.parentNode===n){D=L;break}}n.insertBefore(M,D??g())}T=f},Y=(S,c,f)=>{if(!f){let I=k(S);$(I,!1),x=O(I);return}let b=new Set(S.split("|").filter(Boolean)),C=Ei(i,b,c),{orderedFaces:M,itemsByFace:D}=j(C);for(let I of M)R(I,D.get(I)??[]);$(M,!0),x=C.length};return A(),{get brushCount(){return x},render(S){v=mr(S),Y(v,S,!0)},syncCamera(S){let c=mr(S);c!==v&&(v=c,Y(c,S,!1))},dispose(){for(let S of l.values())S.remove();n.classList.remove("polycss-voxel-mesh"),n.style.removeProperty("--polycss-voxel-primitive"),p.clear(),l.clear(),h.clear(),x=0,T=new Set,v=""}}}var Vn=new WeakMap;function xr(e,t){Vn.set(e,t)}function br(e){Vn.delete(e)}function Ct(e){let t=e;for(;t;){if(t instanceof HTMLElement){let n=Vn.get(t);if(n)return n}t=t.parentElement}return null}function Mt(e,t,n){let o=Array.from(e.querySelectorAll("i,b,s,u"));for(let r of o){let a=r.getBoundingClientRect();if(!(a.width<=0||a.height<=0)&&t>=a.left&&t<=a.right&&n>=a.top&&n<=a.bottom)return!0}return!1}function nn(e,t,n){if(typeof document>"u")return null;let o=Array.from(document.querySelectorAll(".polycss-mesh"));for(let r of o){if(n&&!n(r))continue;let a=Ct(r);if(a&&Mt(r,e,t))return a}return null}var Sr=new WeakMap,Cr=new WeakMap;function Ti(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 Mr(e){if(e.length===0)return e;let t=(0,ee.computeSceneBbox)(e),n=(t.min[0]+t.max[0])/2,o=(t.min[1]+t.max[1])/2,r=(t.min[2]+t.max[2])/2;if(n===0&&o===0&&r===0)return e;let a=i=>[i[0]-n,i[1]-o,i[2]-r];return e.map(i=>({...i,vertices:i.vertices.map(a),...i.textureTriangles?.length?{textureTriangles:i.textureTriangles.map(u=>({...u,vertices:u.vertices.map(a)}))}:null}))}var ue=(0,B.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},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},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:o}){let r=(0,B.computed)(()=>e.src??""),a=(0,B.computed)(()=>{let V={...e.parseOptions??{}};return e.mtl&&(V.mtlUrl=e.mtl),e.meshResolution!==void 0&&(V.meshResolution=e.meshResolution),Object.keys(V).length>0?V:void 0}),i=$t(r,a.value),u=(0,B.computed)(()=>e.src?i.polygons.value:e.polygons??[]),s=(0,B.ref)(null),d=null;(0,B.watch)(u,()=>{s.value=null,d=null});let m=(0,B.computed)(()=>s.value??u.value),p=(0,B.computed)(()=>e.merge?(0,ee.optimizeMeshPolygons)(m.value,e.meshResolution!==void 0?{meshResolution:e.meshResolution}:void 0):m.value),l=(0,B.computed)(()=>e.autoCenter?Mr(p.value):p.value),h=!t.polygon,y=So(),v=(0,B.inject)(ye,null),x=(0,B.ref)(0),T;(0,B.watchEffect)(V=>{T?.(),T=v?.store.subscribe(()=>{x.value++}),V(()=>{T?.(),T=void 0})});let E=(0,B.computed)(()=>e.textureLighting??y?.value.textureLighting??"baked"),w=(0,B.computed)(()=>y?.value.strategies),g=(0,B.computed)(()=>e.seamBleed??y?.value.seamBleed??ee.DEFAULT_SEAM_BLEED),R=(0,B.computed)(()=>y?.value.directionalLight),A=(0,B.computed)(()=>y?.value.ambientLight),z=(0,B.computed)(()=>e.src?i.voxelSource.value:e.voxelSource??void 0),k=(0,B.computed)(()=>!!(z.value&&s.value===null&&!t.polygon&&!t.default&&E.value==="baked"&&!e.castShadow)),O=(0,B.computed)(()=>{if(E.value!=="dynamic")return null;let V=e.rotation;if(!V||V[0]===0&&V[1]===0&&V[2]===0)return null;let q=y?.value.directionalLight?.direction;if(!q)return null;let X=(0,ee.inverseRotateVec3)(q,V),_=Math.hypot(X[0],X[1],X[2])||1;return{"--plx":(X[0]/_).toFixed(2),"--ply":(X[1]/_).toFixed(2),"--plz":(X[2]/_).toFixed(2)}}),j=(0,B.ref)(e.rotation),$=(0,B.ref)(0),Y=(0,B.computed)(()=>{let V=R.value;if(!V)return V;let q=(0,rt.worldDirectionalLightToCss)(V);return j.value?{...q,direction:(0,ee.inverseRotateVec3)(q.direction,j.value)}:q}),S=void 0,c=(0,B.computed)(()=>{if(!h||k.value)return[];let V=(0,se.buildTextureEdgeRepairSets)(l.value),q=g.value==="auto"||typeof g.value=="number"&&Number.isFinite(g.value)&&g.value>0?(0,se.buildSeamBleedPolygonEdges)(l.value,{directionalLight:Y.value,ambientLight:A.value}):null,X=(0,rt.buildBasisHints)(l.value,{directionalLight:Y.value,ambientLight:A.value});return l.value.map((_,W)=>ft(_,W,{directionalLight:Y.value,ambientLight:A.value,seamBleed:q?.has(W)?g.value:void 0,seamEdges:q?.get(W),textureEdgeRepairEdges:V[W],lightOccludedPolyIndices:S},X[W]))}),f=(0,B.computed)(()=>e.textureQuality),b=(0,B.computed)(()=>e.atomicAtlas),C=ht(c,E,f,w,b),M=(0,B.computed)(()=>h?wn(C.plans.value,E.value,w.value):{});(0,B.watch)(()=>C.entries.value,()=>{e.atomicAtlas&&C.ready.value&&e.onFrameReady?.()},{flush:"sync"});let D=(0,B.computed)(()=>Ti(M.value)),I=(0,B.computed)(()=>{if(!e.castShadow||y?.value.receiverRegistry?.hasAny.value)return null;let V=y?.value,q=V?.groundCssZ??null;if(q===null)return null;let X=V?.shadow,_=V?.directionalLight?.direction??[.4,-.7,.59],W=(0,ee.worldDirectionToCss)(_),J=e.position?.[2]??0,he=q-J*ee.BASE_TILE,Pe=(0,ee.findOverlappingPolygonDuplicates)(l.value,{normalTolerance:.1,distanceTolerance:.5,overlapFraction:.95,preserveDoubleSidedBackfaces:!1}),me=[],be=1/0,Se=1/0,xe=-1/0,Ae=-1/0,ae=1/0,N=1/0,F=-1/0,pe=-1/0,Le=l.value,it=c.value;for(let Fe=0;Fe<Le.length;Fe++){if(Pe.has(Fe)||!it[Fe])continue;let He=Le[Fe],At=[];for(let lt of He.vertices){let Ve=[lt[1]*ee.BASE_TILE,lt[0]*ee.BASE_TILE,lt[2]*ee.BASE_TILE];Ve[0]<ae&&(ae=Ve[0]),Ve[1]<N&&(N=Ve[1]),Ve[0]>F&&(F=Ve[0]),Ve[1]>pe&&(pe=Ve[1]);let Oe=(0,ee.projectCssVertexToGround)(Ve,W,he);At.push(Oe),Oe[0]<be&&(be=Oe[0]),Oe[1]<Se&&(Se=Oe[1]),Oe[0]>xe&&(xe=Oe[0]),Oe[1]>Ae&&(Ae=Oe[1])}me.push(At)}if(me.length===0)return null;let Re=X?.maxExtend??2e3,Ie=Math.max(be,ae-Re),Ge=Math.max(Se,N-Re),Tt=Math.min(xe,F+Re),Ze=Math.min(Ae,pe+Re),Ke=Tt-Ie,Qe=Ze-Ge;if(!(Ke>0)||!(Qe>0))return null;let zt=X?.color??"#000000",go=X?.opacity??.25,Be=(0,ee.parseHexColor)(zt)?.rgb??[0,0,0],st="";for(let Fe of me){let ze=(0,ee.ensureCcw2D)(Fe);st+=`M${(ze[0][0]-Ie).toFixed(3)},${(ze[0][1]-Ge).toFixed(3)}`;for(let He=1;He<ze.length;He++)st+=`L${(ze[He][0]-Ie).toFixed(3)},${(ze[He][1]-Ge).toFixed(3)}`;st+="Z"}return(0,B.h)("svg",{class:"polycss-shadow polycss-shadow-svg",width:String(Ke),height:String(Qe),viewBox:`0 0 ${Ke} ${Qe}`,style:{position:"absolute",top:"0",left:"0",display:"block",overflow:"hidden",transformOrigin:"0 0",pointerEvents:"none",willChange:"transform",transform:`translate3d(${Ie.toFixed(3)}px,${Ge.toFixed(3)}px,${he.toFixed(3)}px)`}},[(0,B.h)("path",{d:st,fill:`rgb(${Be[0]},${Be[1]},${Be[2]})`,"fill-rule":"nonzero",stroke:`rgb(${Be[0]},${Be[1]},${Be[2]})`,"stroke-width":"3","stroke-linejoin":"round",opacity:go.toFixed(4)})])}),L=(0,B.computed)(()=>e.receiveShadow?(0,rt.buildSharedEdgeMap)(l.value):void 0),H=(0,B.computed)(()=>{if(!e.receiveShadow)return[];let V=y?.value,q=V?.shadowRegistry;if(!q)return[];q.version.value,x.value;let X=q.getEntries();if(X.length===0)return[];let _=V?.directionalLight?.direction??[.4,-.7,.59],W=(0,ee.worldDirectionToCss)(_),J=V?.shadow?.lift??.001,he=(0,ee.prepareReceiverFacePlanes)(l.value,e.position??[0,0,0],e.scale,new Set,J,e.rotation);if(he.length===0)return[];let Pe=[],me=0,be=L.value;for(let ae of X){let N=ae(),F=N.renderedPolygonIndices,pe=(0,ee.prepareCasterPolyItems)(N.polygons,N.position,N.scale,F?Re=>F.has(Re):()=>!0,N.rotation??null),Le=N.polygons===l.value,it;if(!Le&&N.polygons.length>=40){let Re=N.rotation??null,Ie=N.position,Ge=JSON.stringify(N.scale??null),Tt=`${Ie[0]},${Ie[1]},${Ie[2]}|${Re?Re.join(","):"n"}|${Ge}`,Ze=Sr.get(N.polygons);(Ze===void 0||Cr.get(N.polygons)!==Tt)&&(Ze=(0,ee.prepareCasterEdgeOwners)(N.polygons,Ie,N.scale,Re),Sr.set(N.polygons,Ze),Cr.set(N.polygons,Tt)),it=Ze}Pe.push({id:Symbol(`caster-${me++}`),items:pe,selfShadowEdgeMap:Le?be:void 0,edgeOwners:it,casterPolygonCount:N.polygons.length})}let Se=v?.store.getState().cameraState,xe={rotX:Se?.rotX??65,rotY:Se?.rotY??45,meshRotation:e.rotation};return(0,ee.computeReceiverShadowFaces)({receiverPlanes:he,receiverPolygons:l.value,receiverHasTexture:l.value.some(ae=>ae.texture!==void 0),casters:Pe,lightDir:W,cameraRot:xe,ambientLight:V?.ambientLight,directionalLight:V?.directionalLight,shadow:{color:V?.shadow?.color,opacity:V?.shadow?.opacity??.25,maxExtend:V?.shadow?.maxExtend}}).map(ae=>(0,B.h)("svg",{key:`receiver-${ae.faceIndex}`,class:"polycss-shadow polycss-shadow-svg polycss-shadow-receiver","data-poly-shadow-type":"receiver","data-poly-shadow-receiver-face":String(ae.faceIndex),"data-poly-shadow-receiver-polys":JSON.stringify(ae.memberPolyIndices),width:String(ae.width),height:String(ae.height),viewBox:`0 0 ${ae.width} ${ae.height}`,style:{position:"absolute",top:"0",left:"0",display:"block",overflow:"hidden",transformOrigin:"0 0",pointerEvents:"none",willChange:"transform",transform:ae.matrixCss}},ae.paths.map((N,F)=>(0,B.h)("path",{key:F,d:N.d,fill:ae.fill,stroke:ae.fill,"stroke-width":"3","stroke-linejoin":"round",opacity:ae.opacity.toFixed(4),"data-poly-shadow-caster-polys":JSON.stringify(N.casterPolygonIndices)}))))}),G=Symbol();(0,B.watch)(()=>e.castShadow,(V,q,X)=>{let _=y?.value.shadowRegistry;_&&(V?_.register(G,()=>{let W=(0,ee.findOverlappingPolygonDuplicates)(l.value,{normalTolerance:.1,distanceTolerance:.5,overlapFraction:.95,preserveDoubleSidedBackfaces:!1}),J=new Set,he=c.value;for(let Pe=0;Pe<he.length;Pe++)he[Pe]&&!W.has(Pe)&&J.add(Pe);return{polygons:l.value,position:e.position??[0,0,0],scale:e.scale,rotation:e.rotation,renderedPolygonIndices:J}}):_.unregister(G),X(()=>_.unregister(G)))},{immediate:!0});let ne=Symbol();(0,B.watch)(()=>e.receiveShadow,(V,q,X)=>{let _=y?.value.receiverRegistry;_&&(V?_.register(ne):_.unregister(ne),X(()=>_.unregister(ne)))},{immediate:!0}),(0,B.onBeforeUnmount)(()=>{y?.value.shadowRegistry?.unregister(G),y?.value.receiverRegistry?.unregister(ne)});let K=(0,B.ref)(null),U={get element(){return K.value},get id(){return e.id},getPosition:()=>e.position,getRotation:()=>e.rotation,getScale:()=>e.scale,getPolygons:()=>d??l.value,setPolygons(V){let q=e.autoCenter?Mr(V):V;d=q;let X=K.value,_=X&&h&&An(X,q,{directionalLight:Y.value,ambientLight:A.value,textureLighting:E.value,strategies:w.value,seamBleed:g.value,colorFrame:++$.value,colorFreezeFrames:0});s.value=V.slice()},updatePolygon(V,q){let X=d??l.value,_=typeof V=="number"?V:X.indexOf(V);_<0||_>=X.length||(Object.assign(X[_],q),s.value=X.slice(),d=null)},rebakeAtlas:()=>{j.value=e.rotation}};o(U),(0,B.onMounted)(()=>{K.value&&xr(K.value,U)}),(0,B.onBeforeUnmount)(()=>{K.value&&br(K.value)});let le=(0,B.ref)(null);(0,B.watchEffect)(V=>{let q=K.value;if(le.value?.dispose(),le.value=null,!k.value||!q)return;let X=vr({doc:q.ownerDocument,wrapper:q,polygons:l.value,directionalLight:Y.value,ambientLight:A.value});if(!X)return;let _=()=>{let J=v?.store.getState().cameraState;return{rotX:J?.rotX??65,rotY:J?.rotY??45,meshRotation:e.rotation}};le.value=X,X.render(_());let W=v?.store.subscribe(()=>{X.syncCamera(_())});V(()=>{W?.(),X.dispose(),le.value===X&&(le.value=null)})});let ce=null;function ge(V,q,X){let _=[];if(typeof document<"u"&&typeof document.elementsFromPoint=="function"){let me=document.elementsFromPoint(q,X),be=new Set;for(let Se of me){let xe=Ct(Se);xe&&!be.has(xe)&&(be.add(xe),_.push({object:xe}))}}let W=0,J=0,he=v?.cameraElRef.value;if(he){let me=he.getBoundingClientRect();me.width>0&&me.height>0&&(W=(q-me.left)/me.width*2-1,J=-((X-me.top)/me.height*2-1))}let Pe=0;return ce&&(Pe=Math.hypot(q-ce.x,X-ce.y)),{object:_[0]?.object??U,eventObject:U,intersections:_,pointer:{x:W,y:J},delta:Pe,nativeEvent:V,stopPropagation:()=>V.stopPropagation()}}function ie(V,q,X,_){V&&V(ge(q,X,_))}return()=>{let q={transform:(0,ee.buildPolyMeshTransform)({position:e.position,scale:e.scale,rotation:e.rotation}),...O.value??void 0,...n.style,...D.value??void 0},X=Object.fromEntries(Object.entries(n).filter(([N])=>N!=="style"&&N!=="class")),_=`polycss-mesh${k.value?" polycss-voxel-mesh":""}${e.class?` ${e.class}`:""}`,W={};e.onClick&&(W.onClick=N=>{let F=N;ie(e.onClick,F,F.clientX,F.clientY)}),e.onContextMenu&&(W.onContextmenu=N=>{let F=N;ie(e.onContextMenu,F,F.clientX,F.clientY)}),e.onDoubleClick&&(W.onDblclick=N=>{let F=N;ie(e.onDoubleClick,F,F.clientX,F.clientY)}),e.onWheel&&(W.onWheel=N=>{let F=N;ie(e.onWheel,F,F.clientX,F.clientY)}),W.onPointerdown=N=>{let F=N;ce={x:F.clientX,y:F.clientY},ie(e.onPointerDown,F,F.clientX,F.clientY)},W.onPointerup=N=>{let F=N;ie(e.onPointerUp,F,F.clientX,F.clientY),ce=null},e.onPointerMove&&(W.onPointermove=N=>{let F=N;ie(e.onPointerMove,F,F.clientX,F.clientY)}),(e.onPointerOver||e.onPointerEnter)&&(W.onPointerenter=N=>{let F=N;ie(e.onPointerOver,F,F.clientX,F.clientY),ie(e.onPointerEnter,F,F.clientX,F.clientY)}),(e.onPointerOut||e.onPointerLeave)&&(W.onPointerleave=N=>{let F=N;ie(e.onPointerOut,F,F.clientX,F.clientY),ie(e.onPointerLeave,F,F.clientX,F.clientY)}),e.onPointerCancel&&(W.onPointercancel=N=>{let F=N;ie(e.onPointerCancel,F,F.clientX,F.clientY),ce=null});let J=e.id?{"data-poly-mesh-id":e.id}:{};if(e.src&&i.loading.value&&i.polygons.value.length===0)return(0,B.h)("div",{ref:K,class:`polycss-mesh polycss-mesh-loading${e.class?` ${e.class}`:""}`,style:q,...J,...W,...X},t.fallback?.()??[]);if(e.src&&i.error.value&&i.polygons.value.length===0)return(0,B.h)("div",{ref:K,class:`polycss-mesh polycss-mesh-error${e.class?` ${e.class}`:""}`,style:q,...J,...W,...X},t.error?.({error:i.error.value})??[]);let he=l.value,Pe=t.polygon?he.map((N,F)=>(0,B.h)("template",{key:F},t.polygon?.({polygon:N,index:F}))):k.value?[]:C.entries.value.map((N,F)=>{if(N)return St({entry:N,page:C.pages.value[N.pageIndex],textureLighting:E.value,solidPaintDefaults:M.value});let pe=C.plans.value[F];if(!pe||pe.texture)return null;if((0,se.isProjectiveQuadPlan)(pe))return xt({entry:pe,textureLighting:E.value,solidPaintDefaults:M.value});if((0,se.isSolidTrianglePlan)(pe))return Pt({entry:pe,textureLighting:E.value,solidPaintDefaults:M.value});let Le=w.value?.disable?.includes("i")?null:(0,rt.cornerShapeGeometryForPlan)(pe);return Le?Rn({entry:pe,geometry:Le,textureLighting:E.value,solidPaintDefaults:M.value}):vt({entry:pe,textureLighting:E.value,solidPaintDefaults:M.value,forceBorderShape:!C.useFullRectSolid.value})}),me=t.default?.()??[],be=I.value,Se=be?[be]:[],xe=H.value,Ae=y?.value?.sceneEl??null,ae=Ae&&xe.length>0?[(0,B.h)(B.Teleport,{to:Ae},xe)]:[];return(0,B.h)("div",{ref:K,class:_,style:q,...J,...W,...X},[...Se,...ae,...Pe,...me])}}});var qe=require("vue"),kt=require("@layoutit/polycss-core");function Ai(e,t,n,o,r){let a=typeof n=="number"?n:n?.[0]??1,i=typeof n=="number"?n:n?.[1]??1,u=typeof n=="number"?n:n?.[2]??1,s=a!==1||i!==1||u!==1,d=!!t&&(!!t[0]||!!t[1]||!!t[2]),m=(e?.[1]??0)*kt.BASE_TILE,p=(e?.[0]??0)*kt.BASE_TILE,l=(e?.[2]??0)*kt.BASE_TILE,h=[];return h.push(`translate3d(${m}px, ${p}px, ${l}px)`),d&&(t[0]&&h.push(`rotateY(${-t[0]}deg)`),t[1]&&h.push(`rotateX(${-t[1]}deg)`),t[2]&&h.push(`rotateZ(${-t[2]}deg)`)),s&&h.push(`scale3d(${a}, ${i}, ${u})`),h.push(`translate(${-o/2}px, ${-r/2}px)`),h.join(" ")}var _n=(0,qe.defineComponent)({name:"PolyIframe",props:{src:{type:String,required:!0},width:{type:Number,required:!0},height:{type:Number,required:!0},position:{type:Array,default:void 0},rotation:{type:Array,default:void 0},scale:{type:[Number,Array],default:void 0},allow:{type:String,default:void 0},sandbox:{type:String,default:void 0},loading:{type:String,default:void 0},referrerpolicy:{type:String,default:void 0},title:{type:String,default:void 0},class:{type:String,default:void 0},style:{type:Object,default:void 0}},setup(e){let t=(0,qe.computed)(()=>e.width*kt.BASE_TILE),n=(0,qe.computed)(()=>e.height*kt.BASE_TILE),o=(0,qe.computed)(()=>Ai(e.position,e.rotation,e.scale,t.value,n.value));return()=>{let r={position:"absolute",left:"0",top:"0",transformOrigin:"0 0",transformStyle:"preserve-3d",transform:o.value,...e.style??{}},a={src:e.src,style:{width:`${t.value}px`,height:`${n.value}px`,border:"0",display:"block",background:"#000"}};return e.allow&&(a.allow=e.allow),e.sandbox&&(a.sandbox=e.sandbox),e.loading&&(a.loading=e.loading),e.referrerpolicy&&(a.referrerpolicy=e.referrerpolicy),e.title&&(a.title=e.title),(0,qe.h)("div",{class:e.class?`polycss-iframe ${e.class}`:"polycss-iframe",style:r},[(0,qe.h)("iframe",a)])}}});var It=require("vue");var Bn=(0,It.defineComponent)({name:"PolyGround",props:{size:{type:Number,default:6},z:{type:Number,default:0},center:{type:Array,default:()=>[0,0]},color:{type:String,default:"#7d848e"},class:{type:String,default:void 0}},setup(e){let t=(0,It.computed)(()=>{let n=e.size/2,[o,r]=e.center;return[{vertices:[[o-n,r-n,e.z],[o+n,r-n,e.z],[o+n,r+n,e.z],[o-n,r+n,e.z]],color:e.color}]});return()=>(0,It.h)(ue,{polygons:t.value,castShadow:!1,class:e.class?`polycss-ground ${e.class}`:"polycss-ground"})}});var zn=require("vue");function Er(e){return typeof e=="function"?(0,zn.computed)(()=>{let{texture:t,key:n}=e();return{texture:t,key:n}}):(0,zn.computed)(()=>({texture:e.texture,key:e.key}))}var De=require("vue");var wi=4;function on(e,t=wi){let n=e.toFixed(t).replace(/\.?0+$/,"");return Number(n)===0||Object.is(Number(n),-0)?"0":`${n}px`}function Li(e){if(e.length!==4)return null;let t=[...new Set(e.map(r=>r[0]))].sort((r,a)=>r-a),n=[...new Set(e.map(r=>r[1]))].sort((r,a)=>r-a);if(t.length!==2||n.length!==2)return null;let o=new Set([`${t[0]},${n[0]}`,`${t[0]},${n[1]}`,`${t[1]},${n[0]}`,`${t[1]},${n[1]}`]);for(let r of e)if(!o.has(`${r[0]},${r[1]}`))return null;return{u0:t[0],u1:t[1],v0:n[0],v1:n[1]}}function Ri({plan:e,material:t,uvRect:n,className:o,style:r,domAttrs:a,pointerEvents:i="auto"}){let{u0:u,u1:s,v0:d,v1:m}=n,p=s-u,l=m-d,h=1/p,y=1/l,v=Math.max(d,m),x=u/p,T=(1-v)/l,E={transform:`matrix3d(${e.canonicalMatrix})`,backgroundImage:`url(${t.texture})`,backgroundSize:`${on(h)} ${on(y)}`,backgroundPosition:`${on(-x)} ${on(-T)}`,pointerEvents:i==="none"?"none":void 0,...r},w=e.polygon.data?Object.fromEntries(Object.entries(e.polygon.data).map(([R,A])=>[`data-${R}`,String(A)])):{},g=o?.trim()||void 0;return(0,De.h)("i",{class:g,style:E,...w,...a})}var Hn=(0,De.defineComponent)({name:"Poly",inheritAttrs:!1,props:{vertices:{type:Array,required:!0},color:{type:String},texture:{type:String},uvs:{type:Array,default:void 0},data:{type:Object,default:void 0},material:{type:Object,default:void 0},position:{type:Array,default:void 0},scale:{type:[Number,Array],default:void 0},rotation:{type:Array,default:void 0},textureLighting:{type:String,default:void 0},textureQuality:{type:[Number,String],default:void 0},context:{type:Object,default:void 0},baseColor:{type:String},pointerEvents:{type:String,default:"auto"}},setup(e,{attrs:t}){let n=(0,De.computed)(()=>e.textureLighting??e.context?.textureLighting??"baked"),o=(0,De.computed)(()=>e.textureQuality??e.context?.textureQuality),r=(0,De.computed)(()=>e.material?.texture??e.texture),a=(0,De.computed)(()=>e.material&&e.uvs?Li(e.uvs):null),i=(0,De.computed)(()=>{let d=e.context?.tileSize??50;return ft({vertices:e.vertices,color:e.baseColor??e.color,texture:r.value,uvs:e.uvs,data:e.data},0,{tileSize:d,layerElevation:e.context?.layerElevation??d,directionalLight:e.context?.directionalLight})}),u=(0,De.computed)(()=>a.value?[]:[i.value]),s=ht(u,n,o);return()=>{let d=i.value,m=s.entries.value[0],p=[];e.position&&p.push(`translate3d(${e.position[0]}px, ${e.position[1]}px, ${e.position[2]}px)`),e.scale!==void 0&&(typeof e.scale=="number"?e.scale!==1&&p.push(`scale3d(${e.scale}, ${e.scale}, ${e.scale})`):p.push(`scale3d(${e.scale[0]}, ${e.scale[1]}, ${e.scale[2]})`)),e.rotation&&(e.rotation[0]&&p.push(`rotateX(${e.rotation[0]}deg)`),e.rotation[1]&&p.push(`rotateY(${e.rotation[1]}deg)`),e.rotation[2]&&p.push(`rotateZ(${e.rotation[2]}deg)`));let l=p.length>0?p.join(" "):void 0,h={};if(e.data)for(let[T,E]of Object.entries(e.data))h[`data-${T}`]=String(E);let y={...t,...h},v=Object.fromEntries(Object.entries(y).filter(([T])=>T!=="class"&&T!=="style")),x;return a.value&&e.material&&d?x=Ri({plan:d,material:e.material,uvRect:a.value,className:y.class??void 0,style:y.style,domAttrs:v,pointerEvents:e.pointerEvents??"auto"}):m?x=St({entry:m,page:s.pages.value[m.pageIndex],textureLighting:n.value,className:y.class??void 0,style:y.style,domAttrs:v,pointerEvents:e.pointerEvents??"auto"}):d&&!d.texture&&(x=(0,se.isSolidTrianglePlan)(d)?Pt({entry:d,textureLighting:n.value,className:y.class??void 0,style:y.style,domAttrs:v,pointerEvents:e.pointerEvents??"auto"}):(0,se.isProjectiveQuadPlan)(d)?xt({entry:d,textureLighting:n.value,className:y.class??void 0,style:y.style,domAttrs:v,pointerEvents:e.pointerEvents??"auto"}):vt({entry:d,textureLighting:n.value,className:y.class??void 0,style:y.style,domAttrs:v,pointerEvents:e.pointerEvents??"auto"})),x?l?(0,De.h)("div",{class:"polycss-poly-wrapper",style:{transform:l,position:"absolute",transformStyle:"preserve-3d"}},[x]):x:null}}});var te=require("vue"),fe=require("@layoutit/polycss-core");var Nn=(0,te.defineComponent)({name:"PolyBox",props:{size:{type:[Number,Array],default:void 0},center:{type:Array,default:void 0},min:{type:Array,default:void 0},max:{type:Array,default:void 0},color:{type:String,default:void 0},texture:{type:String,default:void 0},material:{type:Object,default:void 0},uvs:{type:Array,default:void 0},data:{type:Object,default:void 0},faces:{type:Object,default:void 0},position:{type:Array,default:void 0},scale:{type:[Number,Array],default:void 0},rotation:{type:Array,default:void 0},autoCenter:{type:Boolean,default:!1},id:{type:String,default:void 0}},setup(e){let t=(0,te.computed)(()=>(0,fe.boxPolygons)({size:e.size,center:e.center,min:e.min,max:e.max,color:e.color,texture:e.texture,material:e.material,uvs:e.uvs,data:e.data,faces:e.faces}));return()=>(0,te.h)(ue,{polygons:t.value,position:e.position,scale:e.scale,rotation:e.rotation,autoCenter:e.autoCenter,id:e.id})}}),Yn=(0,te.defineComponent)({name:"PolyPlane",props:{axis:{type:Number,required:!0},size:{type:Number,default:void 0},offset:{type:[Number,Array],default:void 0},along:{type:Number,default:void 0},color:{type:String,default:void 0},position:{type:Array,default:void 0},scale:{type:[Number,Array],default:void 0},rotation:{type:Array,default:void 0},autoCenter:{type:Boolean,default:!1},id:{type:String,default:void 0}},setup(e){let t=(0,te.computed)(()=>(0,fe.planePolygons)({axis:e.axis,size:e.size,offset:e.offset,along:e.along,color:e.color}));return()=>(0,te.h)(ue,{polygons:t.value,position:e.position,scale:e.scale,rotation:e.rotation,autoCenter:e.autoCenter,id:e.id})}}),jn=(0,te.defineComponent)({name:"PolyRing",props:{axis:{type:Number,required:!0},radius:{type:Number,required:!0},halfThickness:{type:Number,default:void 0},segments:{type:Number,default:void 0},color:{type:String,default:void 0},position:{type:Array,default:void 0},scale:{type:[Number,Array],default:void 0},rotation:{type:Array,default:void 0},autoCenter:{type:Boolean,default:!1},id:{type:String,default:void 0}},setup(e){let t=(0,te.computed)(()=>(0,fe.ringPolygons)({axis:e.axis,radius:e.radius,halfThickness:e.halfThickness,segments:e.segments,color:e.color}));return()=>(0,te.h)(ue,{polygons:t.value,position:e.position,scale:e.scale,rotation:e.rotation,autoCenter:e.autoCenter,id:e.id})}}),$n=(0,te.defineComponent)({name:"PolyOctahedron",props:{center:{type:Array,required:!0},size:{type:Number,required:!0},color:{type:String,default:void 0},position:{type:Array,default:void 0},scale:{type:[Number,Array],default:void 0},rotation:{type:Array,default:void 0},autoCenter:{type:Boolean,default:!1},id:{type:String,default:void 0}},setup(e){let t=(0,te.computed)(()=>(0,fe.octahedronPolygons)({center:e.center,size:e.size,color:e.color}));return()=>(0,te.h)(ue,{polygons:t.value,position:e.position,scale:e.scale,rotation:e.rotation,autoCenter:e.autoCenter,id:e.id})}}),Xn=(0,te.defineComponent)({name:"PolyTetrahedron",props:{size:{type:Number,default:void 0},color:{type:String,default:void 0},position:{type:Array,default:void 0},scale:{type:[Number,Array],default:void 0},rotation:{type:Array,default:void 0},autoCenter:{type:Boolean,default:!1},id:{type:String,default:void 0}},setup(e){let t=(0,te.computed)(()=>(0,fe.tetrahedronPolygons)({size:e.size,color:e.color}));return()=>(0,te.h)(ue,{polygons:t.value,position:e.position,scale:e.scale,rotation:e.rotation,autoCenter:e.autoCenter,id:e.id})}}),Un=(0,te.defineComponent)({name:"PolyIcosahedron",props:{size:{type:Number,default:void 0},color:{type:String,default:void 0},position:{type:Array,default:void 0},scale:{type:[Number,Array],default:void 0},rotation:{type:Array,default:void 0},autoCenter:{type:Boolean,default:!1},id:{type:String,default:void 0}},setup(e){let t=(0,te.computed)(()=>(0,fe.icosahedronPolygons)({size:e.size,color:e.color}));return()=>(0,te.h)(ue,{polygons:t.value,position:e.position,scale:e.scale,rotation:e.rotation,autoCenter:e.autoCenter,id:e.id})}}),Wn=(0,te.defineComponent)({name:"PolyDodecahedron",props:{size:{type:Number,default:void 0},color:{type:String,default:void 0},position:{type:Array,default:void 0},scale:{type:[Number,Array],default:void 0},rotation:{type:Array,default:void 0},autoCenter:{type:Boolean,default:!1},id:{type:String,default:void 0}},setup(e){let t=(0,te.computed)(()=>(0,fe.dodecahedronPolygons)({size:e.size,color:e.color}));return()=>(0,te.h)(ue,{polygons:t.value,position:e.position,scale:e.scale,rotation:e.rotation,autoCenter:e.autoCenter,id:e.id})}}),qn=(0,te.defineComponent)({name:"PolySphere",props:{radius:{type:Number,default:void 0},subdivisions:{type:Number,default:void 0},color:{type:String,default:void 0},position:{type:Array,default:void 0},scale:{type:[Number,Array],default:void 0},rotation:{type:Array,default:void 0},autoCenter:{type:Boolean,default:!1},id:{type:String,default:void 0}},setup(e){let t=(0,te.computed)(()=>(0,fe.spherePolygons)({radius:e.radius,subdivisions:e.subdivisions,color:e.color}));return()=>(0,te.h)(ue,{polygons:t.value,position:e.position,scale:e.scale,rotation:e.rotation,autoCenter:e.autoCenter,id:e.id})}}),Gn=(0,te.defineComponent)({name:"PolyCylinder",props:{radius:{type:Number,default:void 0},radiusTop:{type:Number,default:void 0},height:{type:Number,default:void 0},radialSegments:{type:Number,default:void 0},color:{type:String,default:void 0},position:{type:Array,default:void 0},scale:{type:[Number,Array],default:void 0},rotation:{type:Array,default:void 0},autoCenter:{type:Boolean,default:!1},id:{type:String,default:void 0}},setup(e){let t=(0,te.computed)(()=>(0,fe.cylinderPolygons)({radius:e.radius,radiusTop:e.radiusTop,height:e.height,radialSegments:e.radialSegments,color:e.color}));return()=>(0,te.h)(ue,{polygons:t.value,position:e.position,scale:e.scale,rotation:e.rotation,autoCenter:e.autoCenter,id:e.id})}}),Zn=(0,te.defineComponent)({name:"PolyCone",props:{radius:{type:Number,default:void 0},height:{type:Number,default:void 0},radialSegments:{type:Number,default:void 0},color:{type:String,default:void 0},position:{type:Array,default:void 0},scale:{type:[Number,Array],default:void 0},rotation:{type:Array,default:void 0},autoCenter:{type:Boolean,default:!1},id:{type:String,default:void 0}},setup(e){let t=(0,te.computed)(()=>(0,fe.conePolygons)({radius:e.radius,height:e.height,radialSegments:e.radialSegments,color:e.color}));return()=>(0,te.h)(ue,{polygons:t.value,position:e.position,scale:e.scale,rotation:e.rotation,autoCenter:e.autoCenter,id:e.id})}}),Kn=(0,te.defineComponent)({name:"PolyTorus",props:{radius:{type:Number,default:void 0},tube:{type:Number,default:void 0},radialSegments:{type:Number,default:void 0},tubularSegments:{type:Number,default:void 0},color:{type:String,default:void 0},position:{type:Array,default:void 0},scale:{type:[Number,Array],default:void 0},rotation:{type:Array,default:void 0},autoCenter:{type:Boolean,default:!1},id:{type:String,default:void 0}},setup(e){let t=(0,te.computed)(()=>(0,fe.torusPolygons)({radius:e.radius,tube:e.tube,radialSegments:e.radialSegments,tubularSegments:e.tubularSegments,color:e.color}));return()=>(0,te.h)(ue,{polygons:t.value,position:e.position,scale:e.scale,rotation:e.rotation,autoCenter:e.autoCenter,id:e.id})}});var Me=require("vue"),Qn=require("@layoutit/polycss-core");var Oi=150,Tr=4,Di=513e-6,ki=10,Ii=3,Ar=16.67,Fi=50,wr=.1,Lr=10,Rr=0,Or=5e3,Vi=.3,_i=.05;function Bi(e){return e===!0?-1:e===void 0||e===!1?1:e}function zi(e,t,n,o,r){let a=Bi(r),i=e/Tr*a,u=t/Tr*a;return{rotX:n-u,rotY:((o-i)%360+360)%360}}function Dr(e,t,n,o,r){let a=Math.max(.01,n),i=Math.max(.1,Math.cos(o*Math.PI/180)),u=-e/(a*Qn.BASE_TILE),s=-t/(a*Qn.BASE_TILE*i),d=-r*Math.PI/180,m=Math.cos(d),p=Math.sin(d);return{dWorldX:s*m-u*p,dWorldY:s*p+u*m}}var Jn=(0,Me.defineComponent)({name:"PolyOrbitControls",props:{drag:{type:Boolean,default:!0},wheel:{type:Boolean,default:!0},dolly:{type:Boolean,default:!1},invert:{type:[Boolean,Number],default:!1},minZoom:{type:Number,default:wr},maxZoom:{type:Number,default:Lr},minDistance:{type:Number,default:Rr},maxDistance:{type:Number,default:Or},animate:{type:[Boolean,Object],default:!1}},emits:{change:e=>!0,"interaction-start":e=>!0,"interaction-end":e=>!0},setup(e,{emit:t}){let n=(0,Me.inject)(ye,null);if(!n)return typeof console<"u"&&console.warn("[polycss] <PolyOrbitControls> must be used inside <PolyCamera>."),()=>null;let{store:o,cameraRef:r,cameraElRef:a,applyTransformDirect:i}=n,u=()=>({rotX:r.value.state.rotX,rotY:r.value.state.rotY,zoom:r.value.state.zoom,target:r.value.state.target,distance:r.value.state.distance}),s=()=>{t("change",u())},d=()=>{t("interaction-start",u())},m=()=>{t("interaction-end",u())},p=null,l={x:0,y:0},h=(0,Me.ref)(!1),y=null,v=null,x=null;function T(){let g=a.value;if(!g)return;let R=!1,A={x:0,y:0},z=c=>{if(e.drag&&p===null&&c.isPrimary!==!1){c.preventDefault(),p=c.pointerId,l={x:c.clientX,y:c.clientY},g.style.cursor="grabbing";try{c.target.setPointerCapture(c.pointerId)}catch{}e.animate&&e.animate.pauseOnInteraction!==!1&&(h.value=!0),d()}},k=c=>{if(p===null||c.pointerId!==p||!e.drag)return;c.preventDefault();let f=c.clientX-l.x,b=c.clientY-l.y;l={x:c.clientX,y:c.clientY};let C=r.value,M=C.state;if(c.shiftKey){let{dWorldX:D,dWorldY:I}=Dr(f,b,M.zoom,M.rotX,M.rotY);C.update({target:[M.target[0]+D,M.target[1]+I,M.target[2]]})}else{let{rotX:D,rotY:I}=zi(f,b,M.rotX,M.rotY,e.invert);C.update({rotX:D,rotY:I})}i(),o.updateCameraFromRef(C),s()},O=c=>{if(p===c.pointerId){p=null,g.style.cursor=e.drag?"grab":"";try{c.target.releasePointerCapture(c.pointerId)}catch{}h.value=!1,m()}},j=c=>{c.preventDefault()},$=c=>{c.button===2&&(R=!0,A={x:c.clientX,y:c.clientY})},Y=c=>{if(!R||!e.drag)return;let f=c.clientX-A.x,b=c.clientY-A.y;A={x:c.clientX,y:c.clientY};let C=r.value,M=C.state,{dWorldX:D,dWorldY:I}=Dr(f,b,M.zoom,M.rotX,M.rotY);C.update({target:[M.target[0]+D,M.target[1]+I,M.target[2]]}),i(),o.updateCameraFromRef(C),s()},S=c=>{c.button===2&&R&&(R=!1,m())};g.style.cursor="grab",g.style.touchAction="none",g.style.userSelect="none",g.addEventListener("pointerdown",z),g.addEventListener("pointermove",k),g.addEventListener("pointerup",O),g.addEventListener("pointercancel",O),g.addEventListener("contextmenu",j),g.addEventListener("mousedown",$),g.addEventListener("mousemove",Y),g.addEventListener("mouseup",S),y=()=>{g.removeEventListener("pointerdown",z),g.removeEventListener("pointermove",k),g.removeEventListener("pointerup",O),g.removeEventListener("pointercancel",O),g.removeEventListener("contextmenu",j),g.removeEventListener("mousedown",$),g.removeEventListener("mousemove",Y),g.removeEventListener("mouseup",S),g.style.cursor="",g.style.touchAction="",g.style.userSelect=""}}function E(){let g=a.value;if(!g)return;let R=!1,A=null,z=k=>{if(!e.wheel)return;k.preventDefault();let O=k.deltaMode===1?16:k.deltaMode===2?100:1,j=k.deltaY*O;k.ctrlKey?j*=ki:j*=Ii;let $=r.value;if(e.dolly){let Y=e.minDistance??Rr,S=e.maxDistance??Or,c=Math.max(Y,Math.min(S,$.state.distance+j*_i));$.update({distance:c})}else{let Y=Math.exp(-j*Di),S=e.minZoom??wr,c=e.maxZoom??Lr,f=Math.max(S,Math.min(c,$.state.zoom*Y));$.update({zoom:f})}i(),o.updateCameraFromRef($),R||(R=!0,d()),s(),A!==null&&clearTimeout(A),A=setTimeout(()=>{A=null,R=!1,m()},Oi)};g.addEventListener("wheel",z,{passive:!1}),v=()=>{g.removeEventListener("wheel",z),A!==null&&clearTimeout(A)}}function w(){let g=null,R=!1,A=0,z=k=>{if(R)return;let O=e.animate;if(!O){g=requestAnimationFrame(z);return}if(h.value)A=k;else{let j=Math.min(Fi,A?k-A:Ar);A=k;let Y=(O.speed??Vi)*(j/Ar),S=r.value,c=S.state;if(O.axis==="x"){let f=((c.rotX+Y)%360+360)%360;S.update({rotX:f})}else{let f=((c.rotY+Y)%360+360)%360;S.update({rotY:f})}i(),o.updateCameraFromRef(S),s()}g=requestAnimationFrame(z)};g=requestAnimationFrame(z),x=()=>{R=!0,g!==null&&cancelAnimationFrame(g),x=null}}return(0,Me.onMounted)(()=>{e.drag&&T(),e.wheel&&E(),e.animate&&w()}),(0,Me.onBeforeUnmount)(()=>{y?.(),v?.(),x?.(),y=null,v=null}),(0,Me.watch)(()=>e.drag,g=>{g&&!y&&T(),!g&&y&&(y(),y=null)}),(0,Me.watch)(()=>e.wheel,g=>{g&&!v&&E(),!g&&v&&(v(),v=null)}),(0,Me.watch)(()=>!!e.animate,g=>{g&&!x&&w(),!g&&x&&x()}),()=>null}});var Ee=require("vue"),eo=require("@layoutit/polycss-core");var Hi=150,kr=4,Ni=513e-6,Yi=10,ji=3,Ir=16.67,$i=50,Fr=.1,Vr=10,_r=0,Br=5e3,Xi=.3,Ui=.05;function Wi(e){return e===!0?-1:e===void 0||e===!1?1:e}function zr(e,t,n,o,r){let a=Wi(r),i=e/kr*a,u=t/kr*a;return{rotX:n-u,rotY:((o-i)%360+360)%360}}function qi(e,t,n,o,r){let a=Math.max(.01,n),i=Math.max(.1,Math.cos(o*Math.PI/180)),u=-e/(a*eo.BASE_TILE),s=-t/(a*eo.BASE_TILE*i),d=-r*Math.PI/180,m=Math.cos(d),p=Math.sin(d);return{dWorldX:s*m-u*p,dWorldY:s*p+u*m}}var to=(0,Ee.defineComponent)({name:"PolyMapControls",props:{drag:{type:Boolean,default:!0},wheel:{type:Boolean,default:!0},dolly:{type:Boolean,default:!1},invert:{type:[Boolean,Number],default:!1},minZoom:{type:Number,default:Fr},maxZoom:{type:Number,default:Vr},minDistance:{type:Number,default:_r},maxDistance:{type:Number,default:Br},animate:{type:[Boolean,Object],default:!1}},emits:{change:e=>!0,"interaction-start":e=>!0,"interaction-end":e=>!0},setup(e,{emit:t}){let n=(0,Ee.inject)(ye,null);if(!n)return typeof console<"u"&&console.warn("[polycss] <PolyMapControls> must be used inside <PolyCamera>."),()=>null;let{store:o,cameraRef:r,cameraElRef:a,applyTransformDirect:i}=n,u=()=>({rotX:r.value.state.rotX,rotY:r.value.state.rotY,zoom:r.value.state.zoom,target:r.value.state.target,distance:r.value.state.distance}),s=()=>{t("change",u())},d=()=>{t("interaction-start",u())},m=()=>{t("interaction-end",u())},p=null,l={x:0,y:0},h=(0,Ee.ref)(!1),y=null,v=null,x=null;function T(){let g=a.value;if(!g)return;let R=!1,A={x:0,y:0},z=c=>{if(e.drag&&p===null&&c.isPrimary!==!1){c.preventDefault(),p=c.pointerId,l={x:c.clientX,y:c.clientY},g.style.cursor="grabbing";try{c.target.setPointerCapture(c.pointerId)}catch{}e.animate&&e.animate.pauseOnInteraction!==!1&&(h.value=!0),d()}},k=c=>{if(p===null||c.pointerId!==p||!e.drag)return;c.preventDefault();let f=c.clientX-l.x,b=c.clientY-l.y;l={x:c.clientX,y:c.clientY};let C=r.value,M=C.state;if(c.shiftKey){let{rotX:D,rotY:I}=zr(f,b,M.rotX,M.rotY,e.invert);C.update({rotX:D,rotY:I})}else{let{dWorldX:D,dWorldY:I}=qi(f,b,M.zoom,M.rotX,M.rotY);C.update({target:[M.target[0]+D,M.target[1]+I,M.target[2]]})}i(),o.updateCameraFromRef(C),s()},O=c=>{if(p===c.pointerId){p=null,g.style.cursor=e.drag?"grab":"";try{c.target.releasePointerCapture(c.pointerId)}catch{}h.value=!1,m()}},j=c=>{c.preventDefault()},$=c=>{c.button===2&&(R=!0,A={x:c.clientX,y:c.clientY})},Y=c=>{if(!R||!e.drag)return;let f=c.clientX-A.x,b=c.clientY-A.y;A={x:c.clientX,y:c.clientY};let C=r.value,M=C.state,{rotX:D,rotY:I}=zr(f,b,M.rotX,M.rotY,e.invert);C.update({rotX:D,rotY:I}),i(),o.updateCameraFromRef(C),s()},S=c=>{c.button===2&&R&&(R=!1,m())};g.style.cursor="grab",g.style.touchAction="none",g.style.userSelect="none",g.addEventListener("pointerdown",z),g.addEventListener("pointermove",k),g.addEventListener("pointerup",O),g.addEventListener("pointercancel",O),g.addEventListener("contextmenu",j),g.addEventListener("mousedown",$),g.addEventListener("mousemove",Y),g.addEventListener("mouseup",S),y=()=>{g.removeEventListener("pointerdown",z),g.removeEventListener("pointermove",k),g.removeEventListener("pointerup",O),g.removeEventListener("pointercancel",O),g.removeEventListener("contextmenu",j),g.removeEventListener("mousedown",$),g.removeEventListener("mousemove",Y),g.removeEventListener("mouseup",S),g.style.cursor="",g.style.touchAction="",g.style.userSelect=""}}function E(){let g=a.value;if(!g)return;let R=!1,A=null,z=k=>{if(!e.wheel)return;k.preventDefault();let O=k.deltaMode===1?16:k.deltaMode===2?100:1,j=k.deltaY*O;k.ctrlKey?j*=Yi:j*=ji;let $=r.value;if(e.dolly){let Y=e.minDistance??_r,S=e.maxDistance??Br,c=Math.max(Y,Math.min(S,$.state.distance+j*Ui));$.update({distance:c})}else{let Y=Math.exp(-j*Ni),S=e.minZoom??Fr,c=e.maxZoom??Vr,f=Math.max(S,Math.min(c,$.state.zoom*Y));$.update({zoom:f})}i(),o.updateCameraFromRef($),R||(R=!0,d()),s(),A!==null&&clearTimeout(A),A=setTimeout(()=>{A=null,R=!1,m()},Hi)};g.addEventListener("wheel",z,{passive:!1}),v=()=>{g.removeEventListener("wheel",z),A!==null&&clearTimeout(A)}}function w(){let g=null,R=!1,A=0,z=k=>{if(R)return;let O=e.animate;if(!O){g=requestAnimationFrame(z);return}if(h.value)A=k;else{let j=Math.min($i,A?k-A:Ir);A=k;let Y=(O.speed??Xi)*(j/Ir),S=r.value,c=S.state;if(O.axis==="x"){let f=((c.rotX+Y)%360+360)%360;S.update({rotX:f})}else{let f=((c.rotY+Y)%360+360)%360;S.update({rotY:f})}i(),o.updateCameraFromRef(S),s()}g=requestAnimationFrame(z)};g=requestAnimationFrame(z),x=()=>{R=!0,g!==null&&cancelAnimationFrame(g),x=null}}return(0,Ee.onMounted)(()=>{e.drag&&T(),e.wheel&&E(),e.animate&&w()}),(0,Ee.onBeforeUnmount)(()=>{y?.(),v?.(),x?.(),y=null,v=null}),(0,Ee.watch)(()=>e.drag,g=>{g&&!y&&T(),!g&&y&&(y(),y=null)}),(0,Ee.watch)(()=>e.wheel,g=>{g&&!v&&E(),!g&&v&&(v(),v=null)}),(0,Ee.watch)(()=>!!e.animate,g=>{g&&!x&&w(),!g&&x&&x()}),()=>null}});var re=require("vue"),Te=require("@layoutit/polycss-core");var rn="#ff3653",an="#8adb00",sn="#2c8fff",Gi=.6,Zi=.8,Ki=1,je=50,Hr=60,Qi=.6,Ji=.0125,es=.15,ts=.04,ns=1,Nr=.02,no=1.04,os=.1,rs=.25,qr=1e-4,Xt={0:1,1:0,2:2},Yr=[{cssAxis:0,sign:1,key:"x",color:rn},{cssAxis:0,sign:-1,key:"-x",color:rn},{cssAxis:1,sign:1,key:"y",color:an},{cssAxis:1,sign:-1,key:"-y",color:an},{cssAxis:2,sign:1,key:"z",color:sn},{cssAxis:2,sign:-1,key:"-z",color:sn}],jr=[{cssAxis:0,key:"x",color:rn},{cssAxis:1,key:"y",color:an},{cssAxis:2,key:"z",color:sn}],$r=[{perpAxis:2,axisA:0,axisB:1,key:"xy",color:sn},{perpAxis:1,axisA:0,axisB:2,key:"xz",color:an},{perpAxis:0,axisA:1,axisB:2,key:"yz",color:rn}];function oo(e,t){let n=/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i.exec(e);if(!n)return e;let o=parseInt(n[1],16),r=parseInt(n[2],16),a=parseInt(n[3],16);return`rgba(${o}, ${r}, ${a}, ${t})`}function ln(e,t){return!t||t<=0?e:Math.round(e/t)*t}function as(e){return e.replace("-","")[0]}function ro(e,t,n,o){let r=n*Math.PI/180,a=o*Math.PI/180,i=[0,0,0];i[e]=t;let u=i[0]*Math.sin(a)+i[1]*Math.cos(a),s=i[2];return u*Math.sin(r)+s*Math.cos(r)<0}function is(e){if(e.length===0)return Hr;let t=1/0,n=1/0,o=1/0,r=-1/0,a=-1/0,i=-1/0;for(let u of e)for(let s of u.vertices)s[0]<t&&(t=s[0]),s[0]>r&&(r=s[0]),s[1]<n&&(n=s[1]),s[1]>a&&(a=s[1]),s[2]<o&&(o=s[2]),s[2]>i&&(i=s[2]);return Number.isFinite(t)?Math.max(r-t,a-n,i-o)*je*Qi:Hr}function ss(e){if(e.length===0)return[0,0,0];let t=1/0,n=1/0,o=1/0,r=-1/0,a=-1/0,i=-1/0;for(let u of e)for(let s of u.vertices)s[0]<t&&(t=s[0]),s[0]>r&&(r=s[0]),s[1]<n&&(n=s[1]),s[1]>a&&(a=s[1]),s[2]<o&&(o=s[2]),s[2]>i&&(i=s[2]);return Number.isFinite(t)?[(n+a)/2*je,(t+r)/2*je,(o+i)/2*je]:[0,0,0]}function Xr(e){let t=e.shaftLengthCss,n=[0,0,0];n[e.cssAxis]=e.sign;let o=e.wrapper.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(${n[0]*t}px, ${n[1]*t}px, ${n[2]*t}px)`,e.wrapper.appendChild(o);let r=e.wrapper.getBoundingClientRect(),a=o.getBoundingClientRect();e.wrapper.removeChild(o);let i=(a.left-r.left)/t,u=(a.top-r.top)/t,s=i*i+u*u;if(s<qr)return;let d=e.target.getPosition()??[0,0,0];e.onMouseDown?.(),e.onDraggingChanged?.(!0);let m=l=>{let h=l.clientX-e.startClientX,y=l.clientY-e.startClientY,v=(h*i+y*u)/s;v=ln(v,e.translationSnap);let x=[d[0]+v*n[0],d[1]+v*n[1],d[2]+v*n[2]];e.onObjectChange?.({object:e.target,position:x}),e.onChange?.()},p=()=>{window.removeEventListener("pointermove",m),window.removeEventListener("pointerup",p),window.removeEventListener("pointercancel",p);let l=h=>{h.stopPropagation(),h.stopImmediatePropagation()};window.addEventListener("click",l,{capture:!0,once:!0}),setTimeout(()=>window.removeEventListener("click",l,!0),0),e.onMouseUp?.(),e.onDraggingChanged?.(!1)};window.addEventListener("pointermove",m),window.addEventListener("pointerup",p),window.addEventListener("pointercancel",p)}function Ur(e){let t=[0,0,0];t[e.axisA]=1;let n=[0,0,0];n[e.axisB]=1;let o=e.probeDistanceCss;function r(p){let l=e.wrapper.ownerDocument.createElement("div");l.style.position="absolute",l.style.left="0",l.style.top="0",l.style.width="0",l.style.height="0",l.style.transform=`translate3d(${p[0]*o}px, ${p[1]*o}px, ${p[2]*o}px)`,e.wrapper.appendChild(l);let h=e.wrapper.getBoundingClientRect(),y=l.getBoundingClientRect();return e.wrapper.removeChild(l),{x:(y.left-h.left)/o,y:(y.top-h.top)/o}}let a=r(t),i=r(n),u=a.x*i.y-i.x*a.y;if(Math.abs(u)<qr)return;let s=e.target.getPosition()??[0,0,0];e.onMouseDown?.(),e.onDraggingChanged?.(!0);let d=p=>{let l=p.clientX-e.startClientX,h=p.clientY-e.startClientY,y=(i.y*l-i.x*h)/u,v=(-a.y*l+a.x*h)/u;y=ln(y,e.translationSnap),v=ln(v,e.translationSnap);let x=[s[0]+y*t[0]+v*n[0],s[1]+y*t[1]+v*n[1],s[2]+y*t[2]+v*n[2]];e.onObjectChange?.({object:e.target,position:x}),e.onChange?.()},m=()=>{window.removeEventListener("pointermove",d),window.removeEventListener("pointerup",m),window.removeEventListener("pointercancel",m),e.onMouseUp?.(),e.onDraggingChanged?.(!1)};window.addEventListener("pointermove",d),window.addEventListener("pointerup",m),window.addEventListener("pointercancel",m)}function Wr(e){let t=e.wrapper.getBoundingClientRect(),n=t.left,o=t.top,r=Math.atan2(e.startClientY-o,e.startClientX-n),a=0,i=e.target.getRotation()??[0,0,0],u=(0,Te.quatFromEulerXYZ)(i);e.onMouseDown?.(),e.onDraggingChanged?.(!0);let s=m=>{let p=Math.atan2(m.clientY-o,m.clientX-n),l=p-r;l>Math.PI?l-=2*Math.PI:l<-Math.PI&&(l+=2*Math.PI),a+=l,r=p;let h=a*180/Math.PI;h=ln(h,e.rotationSnap);let y=[0,0,0];y[e.cssAxis]=1;let v=(0,Te.quatFromAxisAngle)(y,h*Math.PI/180),x=(0,Te.eulerXYZFromQuat)((0,Te.quatMultiply)(v,u));e.onObjectChange?.({object:e.target,rotation:x}),e.onChange?.()},d=()=>{window.removeEventListener("pointermove",s),window.removeEventListener("pointerup",d),window.removeEventListener("pointercancel",d);let m=p=>{p.stopPropagation(),p.stopImmediatePropagation()};window.addEventListener("click",m,{capture:!0,once:!0}),setTimeout(()=>window.removeEventListener("click",m,!0),0),e.onMouseUp?.(),e.onDraggingChanged?.(!1),e.target.rebakeAtlas()};window.addEventListener("pointermove",s),window.addEventListener("pointerup",d),window.addEventListener("pointercancel",d)}function ls(e){return!!e&&typeof e=="object"&&"value"in e}function us(e){return e?ls(e)?e.value??null:e:null}var ao=(0,re.defineComponent)({name:"PolyTransformControls",props:{object:{type:null,default:null},mode:{type:String,default:"translate"},space:{type:String,default:"world"},size:{type:Number,default:1},showX:{type:Boolean,default:!0},showY:{type:Boolean,default:!0},showZ:{type:Boolean,default:!0},translationSnap:{type:Number,default:null},rotationSnap:{type:Number,default:null},enabled:{type:Boolean,default:!0}},emits:{change:()=>!0,objectChange:e=>!0,mouseDown:()=>!0,mouseUp:()=>!0,draggingChanged:e=>!0},setup(e,{emit:t}){let n=(0,re.ref)(null),o=(0,re.ref)(null),r=(0,re.ref)(new Map),a=(0,re.computed)(()=>us(e.object)),i=(0,re.ref)(0);(0,re.onMounted)(()=>{i.value++});let u=(0,re.ref)(0),s=(0,re.inject)(ye,void 0),d=null;(0,re.onMounted)(()=>{let c=s?.store;c&&(d=c.subscribe(()=>{u.value++}))}),(0,re.onBeforeUnmount)(()=>{d?.()});function m(){u.value;let c=s?.store.getState().cameraState;return{rotX:c?.rotX??65,rotY:c?.rotY??45}}let p=(0,re.computed)(()=>(i.value,is(a.value?.getPolygons()??[]))),l=(0,re.computed)(()=>p.value*e.size);function h(c){return o.value===c?Ki:n.value===c?Zi:Gi}function y(){t("change")}function v(c){t("objectChange",c)}function x(c){t("draggingChanged",c)}function T(){t("mouseDown")}function E(){t("mouseUp")}let w=(0,re.inject)(ye,void 0),g=null;(0,re.onMounted)(()=>{let c=w?.cameraElRef.value;if(!c)return;let f=b=>{let C=a.value;if(!C||!e.enabled||b.target?.closest(".polycss-transform-gizmo"))return;let D={x:e.showX,y:e.showY,z:e.showZ};if(e.mode==="translate")for(let L of $r){let H=["x","y","z"][L.axisA],G=["x","y","z"][L.axisB];if(!D[H]||!D[G])continue;let ne=document.querySelector(`.polycss-transform-plane--${L.key}`);if(!ne||!Mt(ne,b.clientX,b.clientY))continue;b.preventDefault(),b.stopPropagation();let K=ne.closest("[data-poly-transform-controls]");if(!K)return;o.value=L.key,Ur({axisA:L.axisA,axisB:L.axisB,probeDistanceCss:l.value,wrapper:K,target:C,startClientX:b.clientX,startClientY:b.clientY,translationSnap:e.translationSnap,onChange:y,onObjectChange:v,onMouseDown:T,onMouseUp:E,onDraggingChanged:U=>{U||(o.value=null),x(U)}});return}let I=e.mode==="translate"?Yr:jr;for(let L of I){let H=L.key.replace("-","")[0];if(!D[H])continue;let G=document.querySelector(`.polycss-transform-${e.mode==="translate"?"arrow":"ring"}--${L.key}`);if(!G||!(e.mode==="rotate"?Mt(G,b.clientX,b.clientY):Mt(G,b.clientX,b.clientY)))continue;b.preventDefault(),b.stopPropagation();let K=G.closest("[data-poly-transform-controls]");if(!K)return;if(o.value=L.key,e.mode==="translate"){let U=L;Xr({cssAxis:U.cssAxis,sign:U.sign,shaftLengthCss:l.value,wrapper:K,target:C,startClientX:b.clientX,startClientY:b.clientY,translationSnap:e.translationSnap,onChange:y,onObjectChange:v,onMouseDown:T,onMouseUp:E,onDraggingChanged:le=>{le||(o.value=null),x(le)}})}else Wr({cssAxis:L.cssAxis,wrapper:K,target:C,startClientX:b.clientX,startClientY:b.clientY,rotationSnap:e.rotationSnap,onChange:y,onObjectChange:v,onMouseDown:T,onMouseUp:E,onDraggingChanged:U=>{U||(o.value=null),x(U)}});return}};c.addEventListener("pointerdown",f),g=()=>c.removeEventListener("pointerdown",f)}),(0,re.onBeforeUnmount)(()=>{g?.()});let R=(0,re.computed)(()=>{if(e.mode!=="translate")return[];i.value;let f=l.value/je,{rotX:b,rotY:C}=m();return Yr.filter(M=>({x:e.showX,y:e.showY,z:e.showZ})[as(M.key)]).map(M=>{let D=h(M.key),I=ro(M.cssAxis,M.sign,b,C);return{spec:M,polygons:(0,Te.arrowPolygons)({axis:Xt[M.cssAxis],sign:M.sign,shaftLength:f,shaftHalfThickness:f*Ji,headLength:f*es,headHalfThickness:f*ts,color:oo(M.color,D),shaft:!I})}})}),A=(0,re.computed)(()=>{if(e.mode!=="translate")return[];i.value;let f=l.value/je,b={x:e.showX,y:e.showY,z:e.showZ},C=["x","y","z"],{rotX:M,rotY:D}=m(),I=f*rs;return $r.filter(L=>b[C[L.axisA]]&&b[C[L.axisB]]).map(L=>{let H=h(L.key),G=Xt[L.perpAxis],ne=(G+1)%3,K=(G+2)%3,U=Xt[ne],le=Xt[K],ce=ro(U,1,M,D)?-1:1,ge=ro(le,1,M,D)?-1:1;return{spec:L,polygons:(0,Te.planePolygons)({axis:G,size:f*os,offset:[ce*I,ge*I],color:oo(L.color,H)})}})}),z=(0,re.computed)(()=>{if(e.mode!=="rotate")return[];i.value;let b=l.value*ns/je*no;return jr.filter(C=>({x:e.showX,y:e.showY,z:e.showZ})[C.key]).map(C=>{let M=h(C.key);return{spec:C,polygons:(0,Te.ringQuadPolygons)({axis:Xt[C.cssAxis],outerRadius:b,color:oo(C.color,M)})}})}),k=(1-Nr)/no,O=(1+Nr)/no;function j(c){return f=>{if(!e.enabled)return;let b=a.value;if(!b)return;f.stopPropagation();let M=f.eventObject.element?.closest("[data-poly-transform-controls]");M&&(o.value=c.key,Xr({cssAxis:c.cssAxis,sign:c.sign,shaftLengthCss:l.value,wrapper:M,target:b,startClientX:f.nativeEvent.clientX,startClientY:f.nativeEvent.clientY,translationSnap:e.translationSnap,onChange:y,onObjectChange:v,onMouseDown:T,onMouseUp:E,onDraggingChanged:D=>{D||(o.value=null),x(D)}}))}}function $(c){return f=>{if(!e.enabled)return;let b=a.value;if(!b)return;f.stopPropagation();let M=f.eventObject.element?.closest("[data-poly-transform-controls]");M&&(o.value=c.key,Ur({axisA:c.axisA,axisB:c.axisB,probeDistanceCss:l.value,wrapper:M,target:b,startClientX:f.nativeEvent.clientX,startClientY:f.nativeEvent.clientY,translationSnap:e.translationSnap,onChange:y,onObjectChange:v,onMouseDown:T,onMouseUp:E,onDraggingChanged:D=>{D||(o.value=null),x(D)}}))}}function Y(c){return f=>{if(!e.enabled)return;let b=a.value;if(!b)return;let C=f.eventObject.element;f.stopPropagation();let M=C?.closest("[data-poly-transform-controls]");M&&(o.value=c.key,Wr({cssAxis:c.cssAxis,wrapper:M,target:b,startClientX:f.nativeEvent.clientX,startClientY:f.nativeEvent.clientY,rotationSnap:e.rotationSnap,onChange:y,onObjectChange:v,onMouseDown:T,onMouseUp:E,onDraggingChanged:D=>{D||(o.value=null),x(D)}}))}}function S(c){return{onPointerOver:()=>{n.value=c},onPointerOut:()=>{n.value===c&&(n.value=null)}}}return()=>{let c=a.value;if(!c)return null;let f=c.getPosition()??[0,0,0],b=ss(c.getPolygons()),C=f[1]*je+b[0],M=f[0]*je+b[1],D=f[2]*je+b[2],I={transform:`translate3d(${C}px, ${M}px, ${D}px)`,position:"absolute",transformStyle:"preserve-3d",zIndex:1e3},L=e.mode==="translate"?[...R.value.map(({spec:H,polygons:G})=>(0,re.h)(ue,{key:`arrow-${H.key}`,polygons:G,class:`polycss-transform-gizmo polycss-transform-arrow polycss-transform-arrow--${H.key}`,textureLighting:"baked",onPointerDown:j(H),...S(H.key)})),...A.value.map(({spec:H,polygons:G})=>(0,re.h)(ue,{key:`plane-${H.key}`,polygons:G,class:`polycss-transform-gizmo polycss-transform-plane polycss-transform-plane--${H.key}`,textureLighting:"baked",onPointerDown:$(H),...S(H.key)}))]:z.value.map(({spec:H,polygons:G})=>(0,re.h)(ue,{key:H.key,polygons:G,class:`polycss-transform-gizmo polycss-transform-ring polycss-transform-ring--${H.key}`,style:{"--ring-inner-ratio":k,"--ring-outer-ratio":O},textureLighting:"baked",onPointerDown:Y(H),...S(H.key)}));return(0,re.h)("div",{class:"polycss-transform-controls","data-poly-transform-controls":"","data-poly-mode":e.mode,"data-poly-space":e.space,style:I},L)}}});var $e=require("vue"),Zr=require("@layoutit/polycss-core");var cs={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 io(e,t){return{enabled:t.enabled??e.enabled,lookEnabled:t.lookEnabled??e.lookEnabled,moveEnabled:t.moveEnabled??e.moveEnabled,jumpEnabled:t.jumpEnabled??e.jumpEnabled,crouchEnabled:t.crouchEnabled??e.crouchEnabled,lookSensitivity:t.lookSensitivity??e.lookSensitivity,invertY:t.invertY??e.invertY,moveSpeed:t.moveSpeed??e.moveSpeed,jumpVelocity:t.jumpVelocity??e.jumpVelocity,gravity:t.gravity??e.gravity,eyeHeight:t.eyeHeight??e.eyeHeight,crouchHeight:t.crouchHeight??e.crouchHeight,groundZ:t.groundZ??e.groundZ,minPitch:t.minPitch??e.minPitch,maxPitch:t.maxPitch??e.maxPitch}}var Kr=new Set(["KeyW","ArrowUp"]),Qr=new Set(["KeyS","ArrowDown"]),Jr=new Set(["KeyA","ArrowLeft"]),ea=new Set(["KeyD","ArrowRight"]),ta=new Set(["Space"]),so=new Set(["ControlLeft","ControlRight"]);function Gr(e){return Kr.has(e)||Qr.has(e)||Jr.has(e)||ea.has(e)||ta.has(e)||so.has(e)}function ds(){return{change:[],start:[],end:[]}}function Ft(e,t){let n=[...e[t]];for(let o of n)try{o()}catch{}}var lo=(0,$e.defineComponent)({name:"PolyFirstPersonControls",props:{enabled:{type:Boolean,default:!0},lookEnabled:{type:Boolean,default:!0},moveEnabled:{type:Boolean,default:!0},jumpEnabled:{type:Boolean,default:!0},crouchEnabled:{type:Boolean,default:!0},lookSensitivity:{type:Number,default:.15},invertY:{type:Boolean,default:!1},moveSpeed:{type:Number,default:5},jumpVelocity:{type:Number,default:7},gravity:{type:Number,default:18},eyeHeight:{type:Number,default:1.7},crouchHeight:{type:Number,default:1},groundZ:{type:Number,default:0},minPitch:{type:Number,default:5},maxPitch:{type:Number,default:175}},emits:{change:e=>!0,"interaction-start":e=>!0,"interaction-end":e=>!0},setup(e,{emit:t,expose:n}){let o=(0,$e.inject)(ye,null);if(!o)return typeof console<"u"&&console.warn("[polycss] <PolyFirstPersonControls> must be used inside <PolyCamera>."),n({}),()=>null;let{store:r,cameraRef:a,cameraElRef:i,applyTransformDirect:u}=o,s=io(cs,e),d=[0,0,0],m=null,p=0,l=!1,h=!1,y=!1,v=new Set,x=0,T=0,E=ds();function w(c,f){let b=c*Math.PI/180,C=f*Math.PI/180;return[-Math.sin(b)*Math.cos(C),-Math.sin(b)*Math.sin(C),-Math.cos(b)]}function g(){let c=i.value,f=c?getComputedStyle(c).perspective:"",b=parseFloat(f);return(Number.isFinite(b)&&b>0?b:32e3)/Zr.BASE_TILE}function R(){let c=a.value.state,f=w(c.rotX??90,c.rotY??0),b=g();return[d[0]+f[0]*b,d[1]+f[1]*b,d[2]+f[2]*b]}function A(){let c=R(),f=a.value;f.update({target:c}),u(),r.updateCameraFromRef(f)}let z=.05;function k(c){if(m===null||l)return;let f=Math.min(z,p?(c-p)/1e3:.0167);if(p=c,s.enabled){let b=!1,C=a.value.state;if(s.moveEnabled){let L=0,H=0;for(let G of v)Kr.has(G)?L+=1:Qr.has(G)?L-=1:ea.has(G)?H+=1:Jr.has(G)&&(H-=1);if(L!==0||H!==0){let ne=(C.rotY??0)*Math.PI/180,K=-Math.cos(ne),U=-Math.sin(ne),le=-Math.sin(ne),ce=Math.cos(ne),ge=Math.hypot(L,H)||1,ie=s.moveSpeed*f;d[0]+=(K*L+le*H)/ge*ie,d[1]+=(U*L+ce*H)/ge*ie,b=!0}}let D=s.crouchEnabled&&(v.has("ControlLeft")||v.has("ControlRight"))?s.crouchHeight:s.eyeHeight;s.jumpEnabled&&(x!==0||T>0)?(x-=s.gravity*f,T+=x*f,T<=0&&(T=0,x=0)):s.jumpEnabled||(T=0,x=0);let I=s.groundZ+D+T;if(Math.abs(d[2]-I)>1e-4&&(d[2]=I,b=!0),b){let L=R(),H=a.value;H.update({target:L}),u(),r.updateCameraFromRef(H),Ft(E,"change");try{t("change",[d[0],d[1],d[2]])}catch{}}}m=requestAnimationFrame(k)}function O(){m!==null||l||(p=0,m=requestAnimationFrame(k))}function j(){m!==null&&(cancelAnimationFrame(m),m=null)}let $=null;function Y(){let c=i.value;if(!c)return;let f=c.ownerDocument??document,b=f.defaultView??globalThis,C=()=>{if(!(!s.enabled||!s.lookEnabled||l||h))try{c.requestPointerLock()}catch{}},M=()=>{let U=f.pointerLockElement===c;if(U!==h){if(h=U,U){y=!0,Ft(E,"start");try{t("interaction-start",[d[0],d[1],d[2]])}catch{}}else if(y){y=!1,Ft(E,"end");try{t("interaction-end",[d[0],d[1],d[2]])}catch{}}}},D=U=>{if(!h||l||!s.enabled||!s.lookEnabled)return;let le=U.movementX??0,ce=U.movementY??0;if(le===0&&ce===0)return;let ge=a.value,ie=ge.state,V=s.lookSensitivity,q=s.invertY?-1:1,X=(((ie.rotY??0)-le*V)%360+360)%360,_=(ie.rotX??90)-ce*V*q;_<s.minPitch?_=s.minPitch:_>s.maxPitch&&(_=s.maxPitch);let W=w(_,X),J=g(),he=[d[0]+W[0]*J,d[1]+W[1]*J,d[2]+W[2]*J];ge.update({rotX:_,rotY:X,target:he}),u(),r.updateCameraFromRef(ge),Ft(E,"change");try{t("change",[d[0],d[1],d[2]])}catch{}},I=U=>{if(!(!s.enabled||l)&&Gr(U.code)&&!(!h&&!s.moveEnabled)){if(ta.has(U.code)){if(!s.jumpEnabled)return;U.preventDefault(),!v.has(U.code)&&x===0&&T===0&&(x=s.jumpVelocity),v.add(U.code);return}so.has(U.code)&&!s.crouchEnabled||!s.moveEnabled&&!so.has(U.code)||(U.preventDefault(),v.add(U.code))}},L=U=>{Gr(U.code)&&v.delete(U.code)},H=()=>{v.clear()};c.addEventListener("click",C),f.addEventListener("pointerlockchange",M),f.addEventListener("mousemove",D),b.addEventListener("keydown",I),b.addEventListener("keyup",L),b.addEventListener("blur",H);let G=b.getComputedStyle(c).perspective,ne=parseFloat(G),K=Number.isFinite(ne)&&ne>0?ne:2e3;c.style.setProperty("--polycss-fpv-perspective",`${K}px`),c.classList.add("polycss-fpv-host"),$=()=>{if(c.removeEventListener("click",C),f.removeEventListener("pointerlockchange",M),f.removeEventListener("mousemove",D),b.removeEventListener("keydown",I),b.removeEventListener("keyup",L),b.removeEventListener("blur",H),c.style.cursor="",c.classList.remove("polycss-fpv-host"),c.style.removeProperty("--polycss-fpv-perspective"),v.clear(),h)try{f.exitPointerLock()}catch{}}}n({update(c){s=io(s,c);let f=i.value;f&&!l&&(f.style.cursor=s.lookEnabled?"crosshair":"")},resume(){if(!l)return;l=!1;let c=i.value;c&&(c.style.cursor=s.lookEnabled?"crosshair":""),O()},pause(){if(l)return;l=!0,j();let c=i.value;if(c&&(c.style.cursor=""),y){y=!1,Ft(E,"end");try{t("interaction-end",[d[0],d[1],d[2]])}catch{}}},destroy(){l=!0,j()},lock(){if(!s.enabled||!s.lookEnabled||l)return;let c=i.value;try{c?.requestPointerLock()}catch{}},unlock(){if(h){let c=i.value;try{c?.ownerDocument?.exitPointerLock()}catch{}}},isLocked(){return h},getOrigin(){return[d[0],d[1],d[2]]},setOrigin(c){d[0]=c[0],d[1]=c[1],d[2]=c[2],A(),Ft(E,"change");try{t("change",[d[0],d[1],d[2]])}catch{}},addEventListener(c,f){let b=E[c];b.includes(f)||b.push(f)},removeEventListener(c,f){let b=E[c],C=b.indexOf(f);C>=0&&b.splice(C,1)},hasEventListener(c,f){return E[c].includes(f)}}),(0,$e.onMounted)(()=>{let c=i.value;if(!c)return;l=!1,h=!1,y=!1,v.clear(),x=0,T=0;let b=a.value.state.target??[0,0,0];d[0]=b[0],d[1]=b[1],d[2]=s.groundZ+s.eyeHeight,A(),c.style.cursor=s.lookEnabled?"crosshair":"",Y(),O()}),(0,$e.onBeforeUnmount)(()=>{l=!0,j(),$?.(),$=null});let S=["enabled","lookEnabled","moveEnabled","jumpEnabled","crouchEnabled","lookSensitivity","invertY","moveSpeed","jumpVelocity","gravity","eyeHeight","crouchHeight","groundZ","minPitch","maxPitch"];for(let c of S)(0,$e.watch)(()=>e[c],()=>{s=io(s,e);let f=i.value;f&&!l&&(f.style.cursor=s.lookEnabled?"crosshair":"")});return()=>null}});var ve=require("vue");var Vt=Symbol("polycss.selection"),uo=(0,ve.defineComponent)({name:"PolySelect",props:{multiple:{type:Boolean,default:!1},clearOnMiss:{type:Boolean,default:!0},filter:{type:Function,default:void 0}},emits:{change:e=>!0,pointerMissed:e=>!0},setup(e,{emit:t,slots:n}){let o=(0,ve.reactive)({selected:[]}),r=(0,ve.computed)(()=>o.selected);function a(m){let p=e.filter?e.filter(m):m;o.selected=p,t("change",p)}let i={get selected(){return o.selected},set:m=>a(m),add:m=>{e.multiple?o.selected.includes(m)||a([...o.selected,m]):a([m])},remove:m=>{o.selected.includes(m)&&a(o.selected.filter(p=>p!==m))},toggle:m=>{o.selected.includes(m)?a(o.selected.filter(p=>p!==m)):e.multiple?a([...o.selected,m]):a([m])},clear:()=>a([]),has:m=>o.selected.includes(m)};(0,ve.provide)(Vt,{selected:r,api:i});let u=(0,ve.inject)(ye,void 0),s=(m,p)=>nn(m,p,l=>!l.closest("[data-poly-transform-controls]")),d=null;return(0,ve.onMounted)(()=>{let m=u?.cameraElRef.value;if(!m)return;let p=l=>{if(l.target?.closest("[data-poly-transform-controls]"))return;let y=Ct(l.target)??s(l.clientX,l.clientY);if(!y){t("pointerMissed",l),e.clearOnMiss&&a([]);return}e.multiple&&(l.shiftKey||l.metaKey||l.ctrlKey)?i.toggle(y):o.selected.length===1&&o.selected[0]===y?a([]):a([y])};m.addEventListener("click",p),d=()=>m.removeEventListener("click",p)}),(0,ve.onBeforeUnmount)(()=>{d?.()}),()=>(0,ve.h)("div",{style:{display:"contents"},"data-poly-select":""},n.default?.())}});function co(){let e=(0,ve.inject)(Vt,void 0);return e?e.selected:(0,ve.ref)([])}function mo(){let e=(0,ve.inject)(Vt,void 0);if(!e)throw new Error("polycss: usePolySelectionApi must be used inside <PolySelect>.");return e.api}var _t=require("vue"),na=require("@layoutit/polycss-core");var po=(0,_t.defineComponent)({name:"PolyAxesHelper",props:{size:{type:Number,default:void 0},thickness:{type:Number,default:void 0},negative:{type:Boolean,default:void 0},xColor:{type:String,default:void 0},yColor:{type:String,default:void 0},zColor:{type:String,default:void 0}},setup(e){let t=(0,_t.computed)(()=>(0,na.axesHelperPolygons)({size:e.size,thickness:e.thickness,negative:e.negative,xColor:e.xColor,yColor:e.yColor,zColor:e.zColor}));return()=>(0,_t.h)(ue,{polygons:t.value,merge:!1})}});var at=require("vue"),oa=require("@layoutit/polycss-core");var yo=(0,at.defineComponent)({name:"PolyDirectionalLightHelper",props:{light:{type:Object,required:!0},target:{type:Array,default:void 0},distance:{type:Number,default:5},size:{type:Number,default:.35},color:{type:String,default:void 0}},setup(e){let t=(0,at.computed)(()=>e.color??e.light.color??"#ffd54a"),n=(0,at.computed)(()=>(0,oa.octahedronPolygons)({center:[0,0,0],size:e.size,color:t.value})),o=(0,at.computed)(()=>{let r=e.light.direction,a=r[0],i=r[1],u=r[2],s=Math.hypot(a,i,u)||1,d=e.target?.[0]??0,m=e.target?.[1]??0,p=e.target?.[2]??0;return[d+a/s*e.distance,m+i/s*e.distance,p+u/s*e.distance]});return()=>(0,at.h)(ue,{polygons:n.value,position:o.value,merge:!1})}});var fo={quad:0,clippedSolid:0,atlas:0,stableTriangle:0},ms={polygonCount:0,mountedPolygonLeafCount:0,shadowLeafCount:0,surfaceLeafCounts:fo,bucketCount:0};function ps(e){return typeof e=="number"?{polygonCount:e}:e??{}}function Bt(e,t){return e.querySelectorAll(t).length}function ys(e,t){let n=e;return typeof n.matches=="function"&&n.matches(t)}function fs(e,t){if(!t)return[e];let n=[];return ys(e,t)&&n.push(e),n.push(...Array.from(e.querySelectorAll(t))),n}function ra(e,t){let n=ps(t);if(!e)return{...ms,surfaceLeafCounts:{...fo},polygonCount:n.polygonCount??0};let o=fs(e,n.scopeSelector),r={...fo},a=0,i=0;for(let s of o)r.quad+=Bt(s,"b"),r.clippedSolid+=Bt(s,"i"),r.atlas+=Bt(s,"s"),r.stableTriangle+=Bt(s,"u"),a+=Bt(s,"q, .polycss-shadow-svg"),i+=Bt(s,".polycss-bucket");let u=r.quad+r.clippedSolid+r.atlas+r.stableTriangle;return{polygonCount:n.polygonCount??u,mountedPolygonLeafCount:u,shadowLeafCount:a,surfaceLeafCounts:r,bucketCount:i}}var ke=require("vue"),aa=require("@layoutit/polycss-core");function Et(e){return e&&typeof e=="object"&&"value"in e?e.value:e}function ia(e,t,n){let o=(0,ke.ref)(null),r=null,a=null,i=null,u=(0,ke.ref)(0);function s(){return n==null?o.value:Et(n)??o.value}function d(){a!==null&&(cancelAnimationFrame(a),a=null),i=null}function m(){d(),r&&(r.stopAllAction(),r.uncacheRoot(),r=null,u.value++)}function p(){if(a!==null)return;function E(w){if(i===null){i=w,a=requestAnimationFrame(E);return}let g=(w-i)/1e3;i=w,r?.update(g),a=requestAnimationFrame(E)}a=requestAnimationFrame(E)}function l(){m();let E=Et(e),w=Et(t);if(!E||E.length===0||!w)return;let g=s();g&&(r=(0,aa.createPolyAnimationMixer)(g,w),u.value++,p())}let h=(0,ke.watch)(()=>{let E=Et(e),w=Et(t),g=n!=null?Et(n):o.value;return{c:E,ctrl:w,r:g}},()=>l(),{immediate:!0,deep:!1});(0,ke.onUnmounted)(()=>{h(),m()});let y=(0,ke.computed)(()=>Et(e)??[]),v=(0,ke.computed)(()=>y.value.map(E=>E.name)),x=(0,ke.computed)(()=>(u.value,r)),T=(0,ke.computed)(()=>{u.value;let E=y.value,w={};for(let g of E)Object.defineProperty(w,g.name,{enumerable:!0,get(){if(!r)return null;try{return r.clipAction(g.name)}catch{return null}}});return w});return{ref:o,mixer:x,clips:y,names:v,actions:T}}var P=require("@layoutit/polycss-core");0&&(module.exports={BASE_TILE,CAMERA_BACKFACE_CULL_EPS,DEFAULT_CAMERA_STATE,DEFAULT_PROJECTION,DEFAULT_SEAM_FACET_SPLIT_OPTIONS,DEFAULT_SEAM_OVERLAP_OPTIONS,LoopOnce,LoopPingPong,LoopRepeat,Poly,PolyAxesHelper,PolyBox,PolyCamera,PolyCameraContextKey,PolyCone,PolyCylinder,PolyDirectionalLightHelper,PolyDodecahedron,PolyFirstPersonControls,PolyGround,PolyIcosahedron,PolyIframe,PolyMapControls,PolyMesh,PolyOctahedron,PolyOrbitControls,PolyOrthographicCamera,PolyPerspectiveCamera,PolyPlane,PolyRing,PolyScene,PolySelect,PolySelectionContextKey,PolySphere,PolyTetrahedron,PolyTorus,PolyTransformControls,VOXEL_CAMERA_CULL_AXIS_EPS,VOXEL_CAMERA_CULL_NORMAL_LIMIT,arrowPolygons,axesHelperPolygons,bakeSolidTextureSampledPolygons,bakeSolidTextureSamples,boxPolygons,buildPolyMeshTransform,buildSceneContext,cameraCullNormalGroups,cameraCullNormalGroupsFromPolygons,cameraCullNormalKey,cameraCullVisibleSignature,cameraFacingDepth,clampChannel,collectPolyRenderStats,computeSceneBbox,computeShapeLighting,computeTexturePaintMetrics,conePolygons,coverPlanarPolygons,createIsometricCamera,createPolyAnimationMixer,cullInteriorPolygons,cylinderPolygons,dodecahedronPolygons,findMeshUnderPoint,findPolyMeshHandle,formatColor,icosahedronPolygons,injectPolyBaseStyles,inverseRotateVec3,isAxisAlignedSurfaceNormal,isVoxelCameraCullableNormalGroups,loadMesh,mergePolygons,normalFacesCamera,normalizeInvertMultiplier,normalizePolygons,octahedronPolygons,optimizeAnimatedMeshPolygons,optimizeMeshParseResult,optimizeMeshPolygons,parseColor,parseGltf,parseHexColor,parseMtl,parseObj,parsePureColor,parseRgbColor,parseStl,parseVox,planePolygons,pointInMeshElement,polygonCssSurfaceNormal,polygonFaces,polygonFacesCamera,repairMeshSeams,ringPolygons,rotateVec3,seamFacetSplitPolygons,seamFacetSplitReport,seamOverlapDiagnostics,seamOverlapPolygons,seamOverlapReport,shadeColor,simplifyTriangleMeshPolygons,tetrahedronPolygons,torusPolygons,usePolyAnimation,usePolyCamera,usePolyMaterial,usePolyMesh,usePolySceneContext,usePolySelect,usePolySelectionApi,worldDirectionToPolyCss,worldPositionToPolyCss});
429
+ `;var Ca=require("@layoutit/polycss-core");var bo=require("vue"),pn=Symbol("polycss/scene-context");function So(){return(0,bo.inject)(pn,null)}var se=require("@layoutit/polycss-core");var Ue=require("@layoutit/polycss-core");function yn(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 fn(e){if(Co(e))return!0;let n=(e.defaultView??(typeof window<"u"?window:void 0))?.navigator?.userAgent??"";return n?!(0,Ue.safariCssProjectiveUnsupported)(n):!0}function qt(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 Co(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 Rt(e){let n=(e.defaultView??(typeof window<"u"?window:void 0))?.navigator?.userAgent??"";return n?!(0,Ue.safariCssProjectiveUnsupported)(n):!0}function Mo(e,t,n,o,r){let a=new Set(o?.disable??[]);return(0,Ue.getSolidPaintDefaultsForPlansCore)(e,t,a,{solidTriangleSupported:fn(n),projectiveQuadSupported:Rt(n),cornerShapeSupported:qt(n),borderShapeSupported:yn(n)},Ue.parseHex,Ue.rgbKey,r)}function gn(e,t,n=new Set,o){let r=o??(typeof document<"u"?document:null);if(!r)return{};let a=n.size>0?{disable:Array.from(n)}:void 0;return Mo(e,t,r,a)}function dt(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 r=typeof matchMedia<"u"?matchMedia:void 0;return r?r("(pointer: fine)").matches&&r("(hover: hover)").matches:!0}return yn(t)}function mt(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 o=(typeof navigator<"u"?navigator:globalThis.navigator)?.userAgent??"";if(!o)return!0;let r=/\b(?:Chrome|HeadlessChrome|Chromium|Edg|OPR)\//.test(o);return!/\bVersion\/[\d.]+.*\bSafari\//.test(o)||r}return fn(t)}var Eo=require("@layoutit/polycss-core");function hn(e,t,n,o){let r=o??(typeof document<"u"?document:null);return(0,Eo.filterAtlasPlans)(e,t,n,{solidTriangleSupported:mt(o),projectiveQuadSupported:o?Rt(o):!0,borderShapeSupported:dt(o),cornerShapeSupported:r?qt(r):!1})}var To=require("@layoutit/polycss-core");function Ao(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 Pn(e,t,n){return(0,To.packTextureAtlasPlansWithScaleCore)(e,t,Ao(n))}var _e=require("@layoutit/polycss-core"),pt=new Map;function Do(e){let t=pt.get(e);return t||(t=new Promise((n,o)=>{let r=new Image;r.decoding="async",r.crossOrigin="anonymous",r.onload=()=>n(r),r.onerror=()=>o(new Error(`texture load failed: ${e}`)),r.src=e}),pt.set(e,t),t.then(()=>{pt.get(e)===t&&pt.delete(e)},()=>{pt.get(e)===t&&pt.delete(e)})),t}function Ce(e,t,n=1,o=0,r=0,a=1,i=0,u=0){e.setTransform(n*t,o*t,r*t,a*t,i*t,u*t)}function vn(e){let t=e/255;return t<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function xn(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 ko(e,t,n,o,r,a,i){let u=Math.round(t*i),s=Math.round(n*i),d=Math.max(1,Math.round(o*i)),m=Math.max(1,Math.round(r*i)),p=e.getImageData(u,s,d,m),l=p.data,h=a.r,y=a.g,v=a.b;for(let x=0;x<l.length;x+=4)l[x+3]!==0&&(l[x]=xn(vn(l[x])*h),l[x+1]=xn(vn(l[x+1])*y),l[x+2]=xn(vn(l[x+2])*v));e.putImageData(p,u,s)}function Io(e,t,n,o,r,a,i){let u=t.naturalWidth||t.width||1,s=t.naturalHeight||t.height||1,d=Math.max(r/u,a/s),m=u*d,p=s*d;Ce(e,i),e.drawImage(t,n+(r-m)/2,o+(a-p)/2,m,p)}function Ot(e,t){return Math.max(0,Math.min(t,e))}function bn(e,t,n,o,r,a,i,u){let s=t.naturalWidth||t.width||1,d=t.naturalHeight||t.height||1,m=Ot(Math.min(n.minU,n.maxU)*s,s),p=Ot(Math.max(n.minU,n.maxU)*s,s),l=Ot(Math.min(n.minV,n.maxV)*d,d),h=Ot(Math.max(n.minV,n.maxV)*d,d),y=Math.floor(m),v=Math.floor(l),x=Math.ceil(p)-y,T=Math.ceil(h)-v;x<1&&(y=Math.floor(Ot((n.minU+n.maxU)/2*s,s-1)),x=1),T<1&&(v=Math.floor(Ot((n.minV+n.maxV)/2*d,d-1)),T=1),y=Math.max(0,Math.min(s-1,y)),v=Math.max(0,Math.min(d-1,v)),x=Math.max(1,Math.min(s-y,x)),T=Math.max(1,Math.min(d-v,T)),Ce(e,u),e.drawImage(t,y,v,x,T,o,r,a,i)}function Fo(e){return e==="repeat"||e==="mirrored-repeat"}function wo(e,t){return Fo(e)?Math.floor(t):0}function Lo(e,t){return Fo(e)?Math.ceil(t)-1:0}function Ro(e,t){return e==="mirrored-repeat"&&Math.abs(t%2)===1}function Oo(e,t,n,o,r,a,i){let u=r?wo(a,r.minU):0,s=r?Lo(a,r.maxU):0,d=r?wo(i,r.minV):0,m=r?Lo(i,r.maxV):0;for(let p=u;p<=s;p++)for(let l=d;l<=m;l++){let h=Ro(a,p),y=Ro(i,l);if(!h&&!y){e.drawImage(t,p*n,l*o);continue}e.save(),e.translate((h?p+1:p)*n,(y?l+1:l)*o),e.scale(h?-1:1,y?-1:1),e.drawImage(t,0,0),e.restore()}}function Zt(e,t,n,o){for(let r=0;r<o.length;r+=2){let a=t+o[r],i=n+o[r+1];r===0?e.moveTo(a,i):e.lineTo(a,i)}e.closePath()}function Nt(e,t,n,o,r,a){for(let i=0;i<o.length;i+=2){let u=t+o[i]+r,s=n+o[i+1]+a;i===0?e.moveTo(u,s):e.lineTo(u,s)}e.closePath()}function Vo(e,t,n,o){Ce(e,o),e.beginPath(),Zt(e,t.x,t.y,t.screenPts),e.clip(),Ce(e,o),e.fillStyle=n==="dynamic"?t.polygon.color??"#cccccc":t.shadedColor,e.fillRect(t.x,t.y,t.canvasW,t.canvasH)}function Gt(e,t,n,o,r){t.polygon.textureAlphaMode==="opaque"&&(Ce(e,n),e.fillStyle=t.polygon.color??"#cccccc",e.fillRect(t.x+o,t.y+r,t.canvasW,t.canvasH))}function _o(e,t,n,o,r=0,a=0){if(t.textureTriangles?.length){let i=n.naturalWidth||n.width||1,u=n.naturalHeight||n.height||1;for(let s of t.textureTriangles){let d=(0,_e.expandClipPoints)(s.screenPts,_e.TEXTURE_TRIANGLE_BLEED);e.save(),Ce(e,o),e.beginPath(),Nt(e,t.x,t.y,d,r,a),e.clip(),Gt(e,t,o,r,a),s.uvAffine?(Ce(e,o,s.uvAffine.a/i,s.uvAffine.c/i,s.uvAffine.b/u,s.uvAffine.d/u,t.x+s.uvAffine.e+r,t.y+s.uvAffine.f+a),Oo(e,n,i,u,s.uvSampleRect,t.polygon.textureWrap?.s,t.polygon.textureWrap?.t)):s.uvSampleRect&&bn(e,n,s.uvSampleRect,t.x+r,t.y+a,t.canvasW,t.canvasH,o),e.restore()}}else if(t.uvAffine){let i=n.naturalWidth||n.width||1,u=n.naturalHeight||n.height||1,s=t.polygon.textureAlphaMode==="opaque";s&&(e.save(),Ce(e,o),e.beginPath(),Nt(e,t.x,t.y,t.screenPts,r,a),e.clip(),Gt(e,t,o,r,a)),Ce(e,o,t.uvAffine.a/i,t.uvAffine.c/i,t.uvAffine.b/u,t.uvAffine.d/u,t.x+t.uvAffine.e+r,t.y+t.uvAffine.f+a),Oo(e,n,i,u,t.uvSampleRect,t.polygon.textureWrap?.s,t.polygon.textureWrap?.t),s&&e.restore()}else if(t.uvSampleRect){let i=t.polygon.textureAlphaMode==="opaque";i&&(e.save(),Ce(e,o),e.beginPath(),Nt(e,t.x,t.y,t.screenPts,r,a),e.clip(),Gt(e,t,o,r,a)),bn(e,n,t.uvSampleRect,t.x+r,t.y+a,t.canvasW,t.canvasH,o),i&&e.restore()}else{let i=t.polygon.textureAlphaMode==="opaque";i&&(e.save(),Ce(e,o),e.beginPath(),Nt(e,t.x,t.y,t.screenPts,r,a),e.clip(),Gt(e,t,o,r,a)),Io(e,n,t.x+r,t.y+a,t.canvasW,t.canvasH,o),i&&e.restore()}}function Ma(e,t,n,o,r,a){let i=r-n,u=a-o,s=i*i+u*u;if(s<=1e-9)return Math.hypot(e-n,t-o);let d=Math.max(0,Math.min(1,((e-n)*i+(t-o)*u)/s));return Math.hypot(e-(n+i*d),t-(o+u*d))}function Ea(e,t,n,o){let r=1/0,a=n.length/2;for(let i of o){if(i<0||i>=a)continue;let u=i*2,s=(i+1)%a*2;r=Math.min(r,Ma(e,t,n[u],n[u+1],n[s],n[s+1]))}return r}function Ta(e,t,n,o,r,a){let i=Math.max(0,o-a),u=Math.min(t-1,o+a),s=Math.max(0,r-a),d=Math.min(n-1,r+a),m=null,p=1/0;for(let l=s;l<=d;l++)for(let h=i;h<=u;h++){if(h===o&&l===r)continue;let y=h-o,v=l-r,x=y*y+v*v;if(x>a*a||x>=p)continue;let T=(l*t+h)*4;e[T+3]<_e.TEXTURE_EDGE_REPAIR_SOURCE_ALPHA_MIN||(m=T,p=x)}return m}function Bo(e,t,n){if(!t.textureEdgeRepair||!t.texture||!t.textureEdgeRepairEdges||t.textureEdgeRepairEdges.size===0)return;let o=e.canvas;if(!o)return;let r=Math.max(0,Math.floor(t.x*n)),a=Math.max(0,Math.floor(t.y*n)),i=Math.max(1,Math.min(o.width-r,Math.ceil(t.canvasW*n))),u=Math.max(1,Math.min(o.height-a,Math.ceil(t.canvasH*n)));if(i<=0||u<=0)return;let s;try{s=e.getImageData(r,a,i,u)}catch{return}let d=s.data,m=new Uint8ClampedArray(d),p=Math.max(_e.TEXTURE_EDGE_REPAIR_RADIUS,_e.TEXTURE_EDGE_REPAIR_RADIUS/n),l=Math.max(2,Math.ceil(p*n)+1),h=!1;for(let y=0;y<u;y++)for(let v=0;v<i;v++){let x=(y*i+v)*4,T=d[x+3];if(T<_e.TEXTURE_EDGE_REPAIR_ALPHA_MIN||T===255)continue;let E=(r+v+.5)/n-t.x,w=(a+y+.5)/n-t.y;if(Ea(E,w,t.screenPts,t.textureEdgeRepairEdges)>p)continue;let g=Ta(m,i,u,v,y,l);g!==null&&(d[x]=m[g],d[x+1]=m[g+1],d[x+2]=m[g+2],d[x+3]=255,h=!0)}h&&e.putImageData(s,r,a)}function zo(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 Aa(e,t,n,o){let r=n.createElement("canvas");r.width=Math.max(1,Math.ceil(e.width*o)),r.height=Math.max(1,Math.ceil(e.height*o));let a=e.entries.some(m=>m.textureEdgeRepair&&m.texture&&m.textureEdgeRepairEdges&&m.textureEdgeRepairEdges.size>0),i=r.getContext("2d",a?{willReadFrequently:!0}:void 0);if(!i)return{width:e.width,height:e.height,url:null};let u=Array.from(new Set(e.entries.flatMap(m=>m.texture?[m.texture]:[]))),s=new Map;await Promise.all(u.map(async m=>{s.set(m,await Do(m))}));for(let m of e.entries){let p=m.texture?s.get(m.texture):null;if(!m.texture){i.save(),Vo(i,m,t,o),i.restore();continue}p&&(i.save(),Ce(i,o),i.beginPath(),Zt(i,m.x,m.y,m.screenPts),i.clip(),_o(i,m,p,o),i.restore()),m.texture&&t==="baked"&&(i.save(),Ce(i,o),i.beginPath(),Zt(i,m.x,m.y,m.screenPts),i.clip(),ko(i,m.x,m.y,m.canvasW,m.canvasH,m.textureTint,o),i.restore()),Bo(i,m,o)}let d=await zo(r);return r.width=1,r.height=1,{width:e.width,height:e.height,url:d}}async function Kt(e,t,n,o,r){let a=[];for(let i of e){if(r())break;a.push(await Aa(i,t,n,o))}return a}var we=require("@layoutit/polycss-core"),Yo=50,jo=[.4,-.7,.59],$o="#ffffff",Xo=1,Uo="#ffffff",Wo=.4,oe=1e-9,Yt=.75,qo=32,wa=96,Cn="0 48px 96px 48px",Ho,No=qo;function La(){let e=typeof CSS<"u"?CSS:void 0;return!!e?.supports?.("corner-top-left-shape","bevel")&&!!e.supports("corner-top-right-shape","bevel")}function Mn(){if(La())return"corner-bevel";let e=typeof navigator<"u"?navigator.userAgent:"";return/\bFirefox\//.test(e)?"border-large":"border"}function En(){let e=typeof navigator<"u"?navigator.userAgent:"";return e!==Ho&&(Ho=e,No=/\bFirefox\//.test(e)?wa:qo),No}function Go(){return Mn()==="border-large"?Cn:void 0}function Ra(){let e=Mn();if(e==="corner-bevel")return;let t=e==="border-large"?Cn:void 0;return t?{borderWidth:t}:void 0}function Zo(e){let t=Mn();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"?Cn:"")}function Ne(e){let t=(0,we.parsePureColor)(e);return t?{r:t.rgb[0],g:t.rgb[1],b:t.rgb[2]}:{r:255,g:255,b:255}}function jt({r:e,g:t,b:n}){return`${e},${t},${n}`}function Oa(e){return(0,we.parsePureColor)(e)?.alpha??1}function Jt({r:e,g:t,b:n}){let o=r=>Math.round(Math.max(0,Math.min(255,r))).toString(16).padStart(2,"0");return`#${o(e)}${o(t)}${o(n)}`}function Ko(e,t,n,o,r){let a=Ne(e),i=Ne(n),u=Ne(o),s=u.r/255*r+i.r/255*t,d=u.g/255*r+i.g/255*t,m=u.b/255*r+i.b/255*t,p=Math.max(0,Math.min(255,Math.round(a.r*s))),l=Math.max(0,Math.min(255,Math.round(a.g*d))),h=Math.max(0,Math.min(255,Math.round(a.b*m))),y=Oa(e);return y<1?`rgba(${p}, ${l}, ${h}, ${y})`:Jt({r:p,g:l,b:h})}function Qo(e,t){if(!Number.isFinite(t)||t<=1)return e;let n=(0,we.parsePureColor)(e);if(!n)return e;let o=255/Math.max(1,Math.round(t)-1),r=i=>Math.max(0,Math.min(255,Math.round(Math.round(i/o)*o))),a={r:r(n.rgb[0]),g:r(n.rgb[1]),b:r(n.rgb[2])};return n.alpha<1?`rgba(${a.r}, ${a.g}, ${a.b}, ${n.alpha})`:Jt(a)}function Jo(e,t,n){let o=(r,a)=>{if(r===a)return r;let i=a-r;return r+Math.sign(i)*Math.min(Math.abs(i),n)};return{r:o(e.r,t.r),g:o(e.g,t.g),b:o(e.b,t.b)}}function Sn(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function Da(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 ka(e){if(e.length<3)return null;let t=e[0],n=[0,0,0];for(let r=1;r+1<e.length;r++){let a=e[r],i=e[r+1],u=[a[0]-t[0],a[1]-t[1],a[2]-t[2]],s=[i[0]-t[0],i[1]-t[1],i[2]-t[2]];n[0]-=u[1]*s[2]-u[2]*s[1],n[1]-=u[2]*s[0]-u[0]*s[2],n[2]-=u[0]*s[1]-u[1]*s[0]}let o=Math.hypot(n[0],n[1],n[2]);return o<=oe?null:[n[0]/o,n[1]/o,n[2]/o]}function Ia(e){if(e.length<3)return!1;let t=0;for(let n=0;n<e.length;n++){let o=e[n],r=e[(n+1)%e.length],a=e[(n+2)%e.length],i=(r[0]-o[0])*(a[1]-r[1])-(r[1]-o[1])*(a[0]-r[0]);if(Math.abs(i)<=oe)return!1;let u=Math.sign(i);if(t===0)t=u;else if(u!==t)return!1}return!0}function Fa(e){let t=0;for(let n=0;n<e.length;n++){let o=e[n],r=e[(n+1)%e.length];t+=o[0]*r[1]-o[1]*r[0]}return t/2}function Va(e,t,n,o){let r=t[0]-e[0],a=t[1]-e[1],i=o[0]-n[0],u=o[1]-n[1],s=r*u-a*i;if(Math.abs(s)<=oe)return null;let d=n[0]-e[0],m=n[1]-e[1],p=(d*u-m*i)/s;return[e[0]+p*r,e[1]+p*a]}function Qt(e,t){if(e.length<6||t<=0)return e;let n=0,o=0,r=e.length/2;for(let i=0;i<e.length;i+=2)n+=e[i],o+=e[i+1];n/=r,o/=r;let a=e.slice();for(let i=0;i<a.length;i+=2){let u=a[i]-n,s=a[i+1]-o,d=Math.hypot(u,s);d<=oe||(a[i]+=u/d*t,a[i+1]+=s/d*t)}return a}function yt(e,t){if(e.length<6||e.length%2!==0||t<=0)return e;let n=[];for(let s=0;s<e.length;s+=2)n.push([e[s],e[s+1]]);if(!Ia(n))return Qt(e,t);let o=Fa(n);if(Math.abs(o)<=oe)return Qt(e,t);let r=o>0?1:-1,a=[];for(let s=0;s<n.length;s++){let d=n[s],m=n[(s+1)%n.length],p=m[0]-d[0],l=m[1]-d[1],h=Math.hypot(p,l);if(h<=oe)return Qt(e,t);let y=r*(l/h)*t,v=r*(-p/h)*t;a.push({a:[d[0]+y,d[1]+v],b:[m[0]+y,m[1]+v]})}let i=[],u=Math.max(2,t*4);for(let s=0;s<n.length;s++){let d=a[(s+n.length-1)%n.length],m=a[s],p=Va(d.a,d.b,m.a,m.b);if(!p)return Qt(e,t);let l=n[s],h=p[0]-l[0],y=p[1]-l[1],v=Math.hypot(h,y);v>u?i.push(l[0]+h/v*u,l[1]+y/v*u):i.push(p[0],p[1])}return i}function _a(e,t,n,o){let r=e+t;if(o<=0||n<=oe||r<=oe||!Number.isFinite(e+t+n+o))return yt([e,0,0,n,r,n],o);let a=Math.sqrt(e*e+n*n),i=Math.sqrt(t*t+n*n);if(a<=oe||i<=oe)return yt([e,0,0,n,r,n],o);let u=-o*n/a,s=-o*e/a,d=o*n/i,m=-o*t/i,p=e+u,l=s,h=r+d,y=n+m,v=-n*r;if(Math.abs(v)<=oe)return yt([e,0,0,n,r,n],o);let x=p-h,T=l-y,E=(x*n+T*e)/v,w=h-E*t,g=y-E*n,R=-o*(e+a)/n,A=n+o,z=r+o*(t+i)/n,k=A,O=Math.max(2,o*4),j=w-e,$=g,Y=Math.sqrt(j*j+$*$);Y>O&&(w=e+j/Y*O,g=$/Y*O);let S=Math.sqrt(R*R+o*o);S>O&&(R=R/S*O,A=n+o/S*O);let c=z-r,f=Math.sqrt(c*c+o*o);return f>O&&(z=r+c/f*O,k=n+o/f*O),[w,g,R,A,z,k]}function Ba(e,t){if((e+1)%3===t)return e;if((t+1)%3===e)return t}function za(e,t,n,o,r){let a=e.seamBleedEdges;if(!a?.size)return null;let i=e.seamBleed===void 0?Yt:e.seamBleed;return[[o,t],[t,n],[n,o]].map(([s,d],m)=>{let p=Ba(s,d),l=p!==void 0&&a.has(p)?e.seamBleedEdgeAmounts?.get(p)??(0,we.resolveSeamBleed)(i,Yt):0;return(0,we.safePlanSeamBleedAmount)(r,m,l)})}function er(e,t,n,o,r,a,i,u,s,d,m,p){let l=Math.round(e*1e3)/1e3||0,h=Math.round(t*1e3)/1e3||0,y=Math.round(n*1e3)/1e3||0,v=Math.round(o*1e3)/1e3||0,x=Math.round(r*1e3)/1e3||0,T=Math.round(a*1e3)/1e3||0,E=Math.round(i*1e3)/1e3||0,w=Math.round(u*1e3)/1e3||0,g=Math.round(s*1e3)/1e3||0,R=Math.round(d*1e3)/1e3||0,A=Math.round(m*1e3)/1e3||0,z=Math.round(p*1e3)/1e3||0;return`matrix3d(${l},${h},${y},0,${v},${x},${T},0,${E},${w},${g},0,${R},${A},${z},1)`}function Ha(e,t,n){return e.map(o=>[o[1]*t,o[0]*t,o[2]*n])}function Tn(e,t,n,o){if(!(0,we.isSolidTrianglePlan)(e))return null;let r=e.tileSize,a=e.layerElevation,i=Ha(e.polygon.vertices,r,a),u=ka(i);if(!u)return null;let s=[{a:0,b:1,c:2},{a:1,b:2,c:0},{a:2,b:0,c:1}].map(_=>{let W=i[_.a],J=i[_.b];return{..._,length:Math.hypot(J[0]-W[0],J[1]-W[1],J[2]-W[2])}}).sort((_,W)=>W.length-_.length),d=s[0].a,m=s[0].b,p=s[0].c,l=i[d],h=i[m],y=i[p],v=s[0].length;if(v<=oe)return null;let x=[(h[0]-l[0])/v,(h[1]-l[1])/v,(h[2]-l[2])/v],T=[y[0]-l[0],y[1]-l[1],y[2]-l[2]],E=Sn(T,x),w=[l[0]+x[0]*E,l[1]+x[1]*E,l[2]+x[2]*E],g=[w[0]-y[0],w[1]-y[1],w[2]-y[2]],R=Math.hypot(g[0],g[1],g[2]);if(R<=oe)return null;let A=[g[0]/R,g[1]/R,g[2]/R];if(Sn(Da(x,A),u)<0){let _=m;if(m=d,d=_,l=i[d],h=i[m],v=Math.hypot(h[0]-l[0],h[1]-l[1],h[2]-l[2]),v<=oe)return null;x=[(h[0]-l[0])/v,(h[1]-l[1])/v,(h[2]-l[2])/v];let W=[y[0]-l[0],y[1]-l[1],y[2]-l[2]];E=Sn(W,x),w=[l[0]+x[0]*E,l[1]+x[1]*E,l[2]+x[2]*E],g=[w[0]-y[0],w[1]-y[1],w[2]-y[2]];let J=Math.hypot(g[0],g[1],g[2]);if(J<=oe)return null;A=[g[0]/J,g[1]/J,g[2]/J]}let z=En(),k=Math.max(0,Math.min(v,E)),O=Math.max(0,v-k),j=[k,0,0,R,k+O,R],$=za(e,d,m,p,j),Y=$?(0,we.offsetConvexPolygonPointsByEdgeAmounts)(j,$):_a(k,O,R,(0,we.resolveSeamBleed)(e.seamBleed,Yt)),S=[Y[0],Y[1]],c=[Y[2],Y[3]],f=[Y[4],Y[5]],b=(c[1]+f[1])/2,C=S[0]-c[0],M=f[0]-S[0],D=b-S[1];if(C<=oe||M<=oe||D<=oe||!Number.isFinite(C+M+D))return null;let I=t==="dynamic",L=Ne(e.polygon.color??"#cccccc"),H=I&&jt(L)===o?.dynamicColorKey,G={color:I||e.shadedColor===o?.paintColor?void 0:e.shadedColor,pointerEvents:n==="none"?"none":void 0,...I&&!H?{"--pnx":u[0].toFixed(4),"--pny":u[1].toFixed(4),"--pnz":u[2].toFixed(4),"--psr":(L.r/255).toFixed(4),"--psg":(L.g/255).toFixed(4),"--psb":(L.b/255).toFixed(4)}:I?{"--pnx":u[0].toFixed(4),"--pny":u[1].toFixed(4),"--pnz":u[2].toFixed(4)}:null},ne=([_,W])=>[y[0]+(_-k)*x[0]+W*A[0],y[1]+(_-k)*x[1]+W*A[1],y[2]+(_-k)*x[2]+W*A[2]],K=ne(S),U=ne([c[0],b]),le=ne([f[0],b]),ce=z/2,ge=[(le[0]-U[0])/z,(le[1]-U[1])/z,(le[2]-U[2])/z],ie=[K[0]-ge[0]*ce,K[1]-ge[1]*ce,K[2]-ge[2]*ce],V=[(U[0]-ie[0])/z,(U[1]-ie[1])/z,(U[2]-ie[2])/z],q=[ge[0],ge[1],ge[2],0,V[0],V[1],V[2],0,u[0],u[1],u[2],0,ie[0],ie[1],ie[2],1].map(_=>(Math.round(_*1e3)/1e3||0).toString()).join(","),X=Ra();return{transform:`matrix3d(${q})`,...X??{},...G}}function en(e){if(!e)return!1;let{a:t,b:n,c:o}=e;return t===0&&n===1&&o===2||t===1&&n===2&&o===0||t===2&&n===0&&o===1}function Na(e,t,n,o){let r=e+t;if(o<=0||n<=oe||r<=oe||!Number.isFinite(e+t+n+o))return yt([e,0,0,n,r,n],o);let a=Math.sqrt(e*e+n*n),i=Math.sqrt(t*t+n*n);if(a<=oe||i<=oe)return yt([e,0,0,n,r,n],o);let u=-o*n/a,s=-o*e/a,d=o*n/i,m=-o*t/i,p=e+u,l=s,h=r+d,y=n+m,v=-n*r;if(Math.abs(v)<=oe)return yt([e,0,0,n,r,n],o);let x=p-h,T=l-y,E=(x*n+T*e)/v,w=h-E*t,g=y-E*n,R=-o*(e+a)/n,A=n+o,z=r+o*(t+i)/n,k=A,O=Math.max(2,o*4),j=w-e,$=g,Y=Math.sqrt(j*j+$*$);Y>O&&(w=e+j/Y*O,g=$/Y*O);let S=Math.sqrt(R*R+o*o);S>O&&(R=R/S*O,A=n+o/S*O);let c=z-r,f=Math.sqrt(c*c+o*o);return f>O&&(z=r+c/f*O,k=n+o/f*O),[w,g,R,A,z,k]}function tr(e,t,n){if(e.texture||e.vertices.length!==3)return null;let o=Yo,r=o,a=e.vertices[0],i=e.vertices[1],u=e.vertices[2],s=a[1]*o,d=a[0]*o,m=a[2]*r,p=i[1]*o,l=i[0]*o,h=i[2]*r,y=u[1]*o,v=u[0]*o,x=u[2]*r,T=p-s,E=l-d,w=h-m,g=y-s,R=v-d,A=x-m,z=-(E*A-w*R),k=-(w*g-T*A),O=-(T*R-E*g),j=Math.sqrt(z*z+k*k+O*O);if(j<=oe)return null;z/=j,k/=j,O/=j;let $=T*T+E*E+w*w,Y=y-p,S=v-l,c=x-h,f=s-y,b=d-v,C=m-x,M=Y*Y+S*S+c*c,D=f*f+b*b+C*C,I=en(n)?n.a:0,L=en(n)?n.b:1,H=en(n)?n.c:2,G=()=>n?tr(e,t):null;if(!en(n)){let ut=$;M>ut&&(I=1,L=2,H=0,ut=M),D>ut&&(I=2,L=0,H=1)}let ne=H===0?s:H===1?p:y,K=H===0?d:H===1?l:v,U=H===0?m:H===1?h:x,le=I===0?s:I===1?p:y,ce=I===0?d:I===1?l:v,ge=I===0?m:I===1?h:x,ie=L===0?s:L===1?p:y,V=L===0?d:L===1?l:v,q=L===0?m:L===1?h:x,X=ie-le,_=V-ce,W=q-ge,J=Math.sqrt(X*X+_*_+W*W);if(J<=oe)return G();let he=X/J,Pe=_/J,me=W/J,be=(ne-le)*he+(K-ce)*Pe+(U-ge)*me,Se=le+he*be-ne,xe=ce+Pe*be-K,Ae=ge+me*be-U,ae=Math.sqrt(Se*Se+xe*xe+Ae*Ae);if(ae<=oe)return G();Se/=ae,xe/=ae,Ae/=ae;let N=Math.max(0,Math.min(J,be)),F=Math.max(0,J-N),pe=Na(N,F,ae,Yt),Le=pe[0],it=pe[1],Re=pe[2],Ie=pe[3],Ge=pe[4],Tt=pe[5],Ze=(Ie+Tt)/2,Ke=Le-Re,Qe=Ge-Le,zt=Ze-it;if(Ke<=oe||Qe<=oe||zt<=oe||!Number.isFinite(Ke+Qe+zt))return G();let Be=1/En(),st=Ke+Qe,Fe=st*Be,ze=(Qe-Ke)*.5*Be,He=zt*Be,At=Le-N-st*.5,lt=it,Ve=er(he*Fe,Pe*Fe,me*Fe,he*ze+Se*He,Pe*ze+xe*He,me*ze+Ae*He,z,k,O,ne+he*At+Se*lt,K+Pe*At+xe*lt,U+me*At+Ae*lt),Oe;if(Math.floor(t.colorFreezeFrames??1)!==0){let ut=t.directionalLight,ho=t.ambientLight,Xe=ut?.direction??jo,sa=ut?.color??$o,la=Math.max(0,ut?.intensity??Xo),ua=ho?.color??Uo,ca=Math.max(0,ho?.intensity??Wo),un=Math.sqrt(Xe[0]*Xe[0]+Xe[1]*Xe[1]+Xe[2]*Xe[2])||1,da=Xe[0]/un,ma=Xe[1]/un,pa=Xe[2]/un,ya=la*Math.max(0,z*da+k*ma+O*pa),Po=Ko(e.color??"#cccccc",ya,sa,ua,ca);Oe=t.colorSteps?Qo(Po,t.colorSteps):Po}return{transform:Ve,borderWidth:Go(),color:Oe,basis:{a:I,b:L,c:H}}}function Ya(e,t,n){return n>0&&(n<=1||(t+e)%n===0)}function ja(e,t,n,o){let r=Math.floor(o.colorFreezeFrames??1);if(r===0)return;let a=e.__polycssStableTriangleColor;if(!(a===void 0||Ya(t,Math.max(0,Math.floor(o.colorFrame??0)),Math.max(1,r)))||a===n)return;let u=n,s=n?Ne(n):void 0,d=e.__polycssStableTriangleColorRgb,m=Math.max(0,Math.floor(o.colorMaxStep??0));m>0&&d&&s&&n&&(s=Jo(d,s,m),u=Jt(s)),e.style.color=u,e.__polycssStableTriangleColor=u,e.__polycssStableTriangleColorRgb=s}function An(e,t,n={}){if((n.textureLighting??"baked")!=="baked"||!mt())return!1;let o=Array.from(e.children).filter(a=>a instanceof HTMLElement&&a.localName==="u");if(o.length!==t.length)return!1;let r=t.map((a,i)=>tr(a,n,o[i].__polycssStableTriangleBasis));if(r.some(a=>!a))return!1;for(let a=0;a<o.length;a+=1){let i=r[a],u=o[a];u.style.visibility&&(u.style.visibility=""),u.__polycssStableTriangleBasis=i.basis,Zo(u),u.style.transform=i.transform,i.borderWidth!==void 0&&(u.style.borderWidth=i.borderWidth),i.color!==void 0&&ja(u,a,i.color,n)}return!0}var nr=require("@layoutit/polycss-core");function ft(e,t,n={},o){return(0,nr.computeTextureAtlasPlanPublic)(e,t,n,void 0,o)}function wn(e,t,n){let o=new Set(n?.disable??[]);return gn(e,t,o)}var de=require("vue");function Ln(e){for(let t of e)t.startsWith("blob:")&&URL.revokeObjectURL(t)}function or(e){return e.flatMap(t=>t.url?.startsWith("blob:")?[t.url]:[])}function tn(e){return e.map(t=>({width:t.width,height:t.height,url:null}))}function rr(e){return e.length===0||typeof Image>"u"?Promise.resolve():Promise.all(e.map(t=>{let n=new Image;n.src=t;let o=n.decode?.();return o?o.catch(()=>{}):Promise.resolve()})).then(()=>{})}function gt(e){e.length!==0&&(typeof requestAnimationFrame=="function"?requestAnimationFrame(()=>Ln(e)):setTimeout(()=>Ln(e),0))}function ht(e,t,n=(0,de.computed)(()=>{}),o=(0,de.computed)(()=>{}),r=(0,de.computed)(()=>!1)){let a=(0,de.computed)(()=>new Set(o.value?.disable??[])),i=(0,de.computed)(()=>!a.value.has("b")),u=(0,de.computed)(()=>{let x=typeof document<"u"?document:null;return i.value&&(!x||Rt(x))}),s=(0,de.computed)(()=>!a.value.has("u")&&mt()),d=(0,de.computed)(()=>!a.value.has("i")&&t.value!=="dynamic"&&dt()),m=(0,de.computed)(()=>{let x=hn(e.value,t.value,a.value,typeof document<"u"?document:null);return Pn(x,n.value,typeof document<"u"?document:null)}),p=(0,de.ref)(tn(m.value.packed.pages)),l=(0,de.ref)({plans:e.value,entries:m.value.packed.entries,pages:tn(m.value.packed.pages)}),h=[],y=0,v=!1;return(0,de.watch)(()=>[m.value,t.value,r.value],([x,T,E],w,g)=>{let{packed:R,atlasScale:A}=x;if(E){let O=++y,j=e.value,$=R.entries;if(R.pages.length===0||typeof document>"u"){gt(h),h=[],l.value={plans:j,entries:$,pages:tn(R.pages)};return}let Y=()=>v||O!==y,S=[];Kt(R.pages,T,document,A,Y).then(async c=>{if(S=or(c),await rr(S),Y()){gt(S);return}let f=h;h=S,S=[],gt(f),l.value={plans:j,entries:$,pages:c}}).catch(()=>{});return}let z=!1,k=[];if(g(()=>{z=!0,gt(k)}),R.pages.length===0){gt(h),h=[],p.value.length!==0&&(p.value=[]);return}typeof document>"u"||(p.value.some(O=>O.url)||(p.value=tn(R.pages)),Kt(R.pages,T,document,A,()=>z).then(async O=>{if(k=or(O),await rr(k),z){gt(k);return}let j=h;h=k,k=[],gt(j),p.value=O}).catch(()=>{}))},{immediate:!0}),(0,de.getCurrentScope)()&&(0,de.onScopeDispose)(()=>{v=!0,Ln(h),h=[]}),{plans:(0,de.computed)(()=>r.value?l.value.plans:e.value),entries:(0,de.computed)(()=>r.value?l.value.entries:m.value.packed.entries),pages:(0,de.computed)(()=>r.value?l.value.pages:p.value),ready:(0,de.computed)(()=>{let x=r.value?l.value.pages:p.value;return x.length===0||x.every(T=>!!T.url)}),useFullRectSolid:i,useProjectiveQuad:u,useStableTriangle:s,useBorderShape:d}}var ar=require("vue");function Pt({entry:e,textureLighting:t,solidPaintDefaults:n,className:o,style:r,domAttrs:a,pointerEvents:i="auto"}){let u=Tn(e,t,i,n);if(!u)return null;let s=e.polygon.data?Object.fromEntries(Object.entries(e.polygon.data).map(([m,p])=>[`data-${m}`,String(p)])):{},d=o?.trim()||void 0;return(0,ar.h)("u",{class:d,style:{...u,...r},"data-poly-index":String(e.index),...s,...a})}var ir=require("vue"),nt=require("@layoutit/polycss-core");var $a=new Map([["transform",0],["border-shape",1],["border-width",2],["width",3],["height",4],["color",5]]);function Xa(e){let t=e.getAttribute("style");if(!t)return;let o=t.split(";").map(r=>r.trim()).filter(Boolean).map((r,a)=>{let i=r.slice(0,r.indexOf(":")).trim().toLowerCase();return{declaration:r,index:a,order:$a.get(i)??Number.POSITIVE_INFINITY}}).sort((r,a)=>r.order-a.order||r.index-a.index).map(({declaration:r})=>r).join(";");o!==t&&e.setAttribute("style",o)}function vt({entry:e,textureLighting:t,solidPaintDefaults:n,className:o,style:r,domAttrs:a,pointerEvents:i="auto",forceBorderShape:u=!1}){let s=!e.texture&&(0,nt.isFullRectSolid)(e),d=s&&u&&dt(),m=!s||d?(0,nt.cssBorderShapeForPlan)(e):null,p=t==="dynamic",l=Ne(e.polygon.color??"#cccccc"),h=p&&jt(l)===n?.dynamicColorKey,v={transform:m?(0,nt.formatBorderShapeEntryMatrix)(e):(0,nt.formatSolidQuadEntryMatrix)(e),color:p?void 0:e.shadedColor,pointerEvents:i==="none"?"none":void 0,...p?{"--pnx":e.normal[0].toFixed(4),"--pny":e.normal[1].toFixed(4),"--pnz":e.normal[2].toFixed(4),...h?null:{"--psr":(l.r/255).toFixed(4),"--psg":(l.g/255).toFixed(4),"--psb":(l.b/255).toFixed(4)}}:null,...r},x=e.polygon.data?Object.fromEntries(Object.entries(e.polygon.data).map(([w,g])=>[`data-${w}`,String(g)])):{},T=o?.trim()||void 0,E=w=>{let g=w.el;g&&(m?g.style.setProperty("border-shape",m):g.style.removeProperty("border-shape"),Xa(g))};return(0,ir.h)(s&&!d?"b":"i",{class:T,style:v,"data-poly-index":String(e.index),...x,...a,onVnodeMounted:E,onVnodeUpdated:E})}var sr=require("vue");function xt({entry:e,textureLighting:t,solidPaintDefaults:n,className:o,style:r,domAttrs:a,pointerEvents:i="auto"}){let u=t==="dynamic",s=Ne(e.polygon.color??"#cccccc"),d=u&&jt(s)===n?.dynamicColorKey,m={transform:`matrix3d(${e.projectiveMatrix})`,color:u?void 0:e.shadedColor,pointerEvents:i==="none"?"none":void 0,...u&&!d?{"--pnx":e.normal[0].toFixed(4),"--pny":e.normal[1].toFixed(4),"--pnz":e.normal[2].toFixed(4),"--psr":(s.r/255).toFixed(4),"--psg":(s.g/255).toFixed(4),"--psb":(s.b/255).toFixed(4)}:u?{"--pnx":e.normal[0].toFixed(4),"--pny":e.normal[1].toFixed(4),"--pnz":e.normal[2].toFixed(4)}:null,...r},p=e.polygon.data?Object.fromEntries(Object.entries(e.polygon.data).map(([h,y])=>[`data-${h}`,String(y)])):{},l=o?.trim()||void 0;return(0,sr.h)("b",{class:l,style:m,"data-poly-index":String(e.index),...p,...a})}var lr=require("vue"),Dt=require("@layoutit/polycss-core");function Ua(e,t,n){if(t==="dynamic"){let o=(0,Dt.parseHex)(e.polygon.color??"#cccccc"),r=`;--pnx:${e.normal[0].toFixed(4)};--pny:${e.normal[1].toFixed(4)};--pnz:${e.normal[2].toFixed(4)}`;return(0,Dt.rgbKey)(o)!==n?.dynamicColorKey&&(r+=`;--psr:${(o.r/255).toFixed(4)};--psg:${(o.g/255).toFixed(4)};--psb:${(o.b/255).toFixed(4)}`),r}return e.shadedColor?`;color:${e.shadedColor}`:""}function Rn({entry:e,geometry:t,textureLighting:n,solidPaintDefaults:o,className:r,pointerEvents:a="auto"}){let i=(0,Dt.formatCornerShapeElementStyle)(e,t),u=Ua(e,n,o),s=a==="none"?";pointer-events:none":"",d=i+u+s,m=l=>{!l||!(l instanceof HTMLElement)||l.setAttribute("style",d)},p=e.polygon.data?Object.fromEntries(Object.entries(e.polygon.data).map(([l,h])=>[`data-${l}`,String(h)])):{};return(0,lr.h)("u",{class:r?.trim()||void 0,"data-poly-index":String(e.index),...p,onVnodeMounted:({el:l})=>m(l),onVnodeUpdated:({el:l})=>m(l)})}var ur=require("vue"),bt=require("@layoutit/polycss-core"),Wa=64;function St({entry:e,page:t,textureLighting:n,solidPaintDefaults:o,className:r,style:a,domAttrs:i,pointerEvents:u="auto"}){let s=n==="dynamic",d=e.atlasCanonicalSize??Wa,m=e.canvasW||1,p=e.canvasH||1,l=t?`${(0,bt.formatCssLengthPx)(-e.x/m*d)} ${(0,bt.formatCssLengthPx)(-e.y/p*d)}`:void 0,h=t?`${(0,bt.formatCssLengthPx)(t.width/m*d)} ${(0,bt.formatCssLengthPx)(t.height/p*d)}`:void 0,y=s&&t?.url?`url(${t.url})`:void 0,v=!s&&t?.url?`url(${t.url}) ${l} / ${h} no-repeat`:void 0,x={transform:(0,bt.formatMatrix3d)(e.atlasMatrix),"--polycss-atlas-size":`${d}px`,...s?{backgroundImage:t?.url?`url(${t.url})`:void 0,backgroundPosition:l,backgroundSize:h}:{background:v},...s?{"--pnx":e.normal[0].toFixed(4),"--pny":e.normal[1].toFixed(4),"--pnz":e.normal[2].toFixed(4)}:null,...s&&y?{maskImage:y,maskMode:"alpha",maskPosition:l,maskSize:h,maskRepeat:"no-repeat",WebkitMaskImage:y,WebkitMaskPosition:l,WebkitMaskSize:h,WebkitMaskRepeat:"no-repeat"}:null,opacity:t?.url?void 0:0,pointerEvents:u==="none"?"none":void 0,...a},T=e.polygon.data?Object.fromEntries(Object.entries(e.polygon.data).map(([w,g])=>[`data-${w}`,String(g)])):{},E=r?.trim()||void 0;return(0,ur.h)("s",{class:E,style:x,"data-poly-index":String(e.index),...T,...i})}var On=(0,Z.defineComponent)({name:"PolyScene",inheritAttrs:!1,props:{polygons:{type:Array,default:void 0},centerPolygons:{type:Array,default:void 0},perspective:{type:Number},rotX:{type:Number},rotY:{type:Number},zoom:{type:Number},directionalLight:{type:Object,default:void 0},ambientLight:{type:Object,default:void 0},textureLighting:{type:String,default:"baked"},textureQuality:{type:[Number,String],default:void 0},seamBleed:{type:[Number,String],default:void 0},strategies:{type:Object,default:void 0},autoCenter:{type:Boolean,default:!1},shadow:{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},debugShowLabels:{type:Boolean},debugShowBackfaces:{type:Boolean}},setup(e,{slots:t,attrs:n}){let o=(0,Z.inject)(ye);if(!o)throw new Error("polycss: PolyScene must be used inside a PolyCamera.");let{sceneElRef:r,applyTransformDirect:a}=o,i=(0,Z.ref)(0),u=new Map,s={register(f,b){u.set(f,b),i.value++},unregister(f){u.delete(f),i.value++},version:i,getEntries(){return Array.from(u.values())}},d=new Set,m=(0,Z.ref)(!1),p={register(f){d.add(f),m.value=d.size>0},unregister(f){d.delete(f),m.value=d.size>0},hasAny:m},l=(0,Z.ref)(null),h=(0,Z.ref)(null),y=(0,Z.computed)(()=>({textureLighting:e.textureLighting??"baked",directionalLight:e.directionalLight,ambientLight:e.ambientLight,strategies:e.strategies,seamBleed:e.seamBleed??ot.DEFAULT_SEAM_BLEED,shadow:e.shadow,shadowRegistry:s,receiverRegistry:p,groundCssZ:l.value,sceneEl:h.value}));(0,Z.provide)(pn,y),(0,Z.watch)(h,f=>{r.value=f});let v=!1;(0,Z.onMounted)(()=>{v||typeof document<"u"&&(Ht(document),v=!0)}),(0,Z.watch)(()=>e.debugShowBackfaces,f=>{let b=h.value;b&&b.classList.toggle("polycss-debug-show-backfaces",!!f)});let x=(0,Z.computed)(()=>e.polygons??[]),T=(0,Z.computed)(()=>e.centerPolygons??null),E=(0,Z.computed)(()=>({directionalLight:e.directionalLight})),w=Lt(x,E),g=(0,Z.computed)(()=>T.value??x.value),R=Lt(g,E);(0,Z.onMounted)(()=>{r.value=h.value,a()}),(0,Z.onUpdated)(a);let A=(0,Z.computed)(()=>({tileSize:50,layerElevation:50,directionalLight:e.directionalLight,textureLighting:e.textureLighting,textureQuality:e.textureQuality})),z=(0,Z.computed)(()=>{let f=e.textureLighting==="dynamic",b=f?void 0:e.directionalLight,C=f?void 0:e.ambientLight,M=(0,se.buildTextureEdgeRepairSets)(w.value.polygons),D=e.seamBleed??ot.DEFAULT_SEAM_BLEED,I=D==="auto"||typeof D=="number"&&Number.isFinite(D)&&D>0?(0,se.buildSeamBleedPolygonEdges)(w.value.polygons,{tileSize:A.value.tileSize,layerElevation:A.value.layerElevation,directionalLight:b,ambientLight:C}):null;return w.value.polygons.map((L,H)=>ft(L,H,{tileSize:A.value.tileSize,layerElevation:A.value.layerElevation,directionalLight:b,ambientLight:C,seamBleed:I?.has(H)?D:void 0,seamEdges:I?.get(H),textureEdgeRepairEdges:M[H]}))}),k=(0,Z.computed)(()=>e.textureLighting??"baked"),O=(0,Z.computed)(()=>e.textureQuality),j=(0,Z.computed)(()=>e.strategies),$=ht(z,k,O,j),Y=(0,Z.computed)(()=>{if(e.textureLighting!=="dynamic")return null;let f=e.directionalLight?.direction??[.4,-.7,.59],b=(0,ot.worldDirectionToCss)(f),C=Math.hypot(b[0],b[1],b[2])||1,M=b[0]/C,D=b[1]/C,I=b[2]/C,L=(0,ot.parseHexColor)(e.directionalLight?.color??"#ffffff")?.rgb??[255,255,255],H=(0,ot.parseHexColor)(e.ambientLight?.color??"#ffffff")?.rgb??[255,255,255],G=e.directionalLight?.intensity??1,ne=e.ambientLight?.intensity??.4,K=ce=>(ce/255).toFixed(4),U=I,le=Math.sign(U||1)*Math.max(Math.abs(U),.01);return{"--plx":M.toFixed(2),"--ply":D.toFixed(2),"--plz":I.toFixed(2),"--clx":M.toFixed(2),"--cly":D.toFixed(2),"--clz":le.toFixed(2),"--plr":K(L[0]),"--plg":K(L[1]),"--plb":K(L[2]),"--pli":G.toFixed(4),"--par":K(H[0]),"--pag":K(H[1]),"--pab":K(H[2]),"--pai":ne.toFixed(4)}}),S=50;(0,Z.watchEffect)(()=>{let f=h.value;i.value;let b=s.getEntries();if(b.length===0){f&&f.style.removeProperty("--shadow-ground-cssz"),l.value!==null&&(l.value=null);return}let C=1/0;for(let I of b){let L=I();for(let H of L.polygons)for(let G of H.vertices){let ne=G[2]+(L.position[2]??0);ne<C&&(C=ne)}}if(!Number.isFinite(C)){f&&f.style.removeProperty("--shadow-ground-cssz"),l.value!==null&&(l.value=null);return}let M=e.shadow?.lift??.05,D=(C+M)*S;l.value!==D&&(l.value=D),f&&(e.textureLighting==="dynamic"?f.style.setProperty("--shadow-ground-cssz",D.toFixed(3)):f.style.removeProperty("--shadow-ground-cssz"))});let c=(0,Z.computed)(()=>{if(!e.autoCenter)return[0,0,0];let f=R.value.sceneBbox;return[(f.min[0]+f.max[0])/2,(f.min[1]+f.max[1])/2,(f.min[2]+f.max[2])/2]});return(0,Z.watchEffect)(()=>{o.autoCenterOffset.value=c.value}),(0,Z.onBeforeUnmount)(()=>{}),()=>{let f=`polycss-scene${e.class?` ${e.class}`:""}`,b=A.value,C=$.entries.value.map((D,I)=>{if(D)return St({entry:D,page:$.pages.value[D.pageIndex],textureLighting:b.textureLighting??"baked"});let L=z.value[I];return!L||L.texture?null:$.useStableTriangle.value&&(0,se.isSolidTrianglePlan)(L)?Pt({entry:L,textureLighting:b.textureLighting??"baked"}):$.useProjectiveQuad.value&&(0,se.isProjectiveQuadPlan)(L)?xt({entry:L,textureLighting:b.textureLighting??"baked"}):$.useBorderShape.value||$.useFullRectSolid.value?vt({entry:L,textureLighting:b.textureLighting??"baked",forceBorderShape:!$.useFullRectSolid.value}):null}),M=t.default?.()??[];return(0,Z.h)("div",{ref:h,class:f,"data-polycss-lighting":b.textureLighting??"baked","aria-hidden":"true",style:{...Y.value??null,...n.style},...Object.fromEntries(Object.entries(n).filter(([D])=>D!=="style"&&D!=="class"))},[...C,...M])}}});var B=require("vue"),rt=require("@layoutit/polycss-core"),ee=require("@layoutit/polycss-core");var Ye=require("vue"),dr=require("@layoutit/polycss-core"),cr=[],Dn=[];function $t(e,t){let n=(0,Ye.ref)(cr),o=(0,Ye.ref)(void 0),r=(0,Ye.ref)(!!e.value),a=(0,Ye.ref)(null),i=(0,Ye.ref)(Dn),u=null;function s(){if(u){try{u.dispose()}catch{}u=null}}return(0,Ye.watch)(e,(d,m,p)=>{if(!d){s(),n.value=cr,o.value=void 0,r.value=!1,a.value=null,i.value=Dn;return}let l=!1;r.value=!0,a.value=null;let h=u;(0,dr.loadMesh)(d,t).then(y=>{if(l){try{y.dispose()}catch{}return}if(h)try{h.dispose()}catch{}u=y,n.value=y.polygons,o.value=y.voxelSource,r.value=!1,a.value=null,i.value=y.warnings??Dn}).catch(y=>{if(l)return;let v=y instanceof Error?y:new Error(String(y));r.value=!1,a.value=v}),p(()=>{l=!0})},{immediate:!0}),(0,Ye.onUnmounted)(()=>{s()}),{polygons:n,voxelSource:o,loading:r,error:a,warnings:i,dispose:s}}var Q=require("@layoutit/polycss-core"),qa=[.4,-.7,.59],Ga="#ffffff",Za=1,Ka="#ffffff",Qa=.4,hr=1,Ja=8,ei=Q.PROJECTIVE_QUAD_BLEED,We=1e-6,ti=(0,Q.resolveProjectiveQuadGuards)({bleed:0}),Pr={t:[0,0,1],b:[0,0,-1],fl:[0,1,0],br:[0,-1,0],fr:[1,0,0],bl:[-1,0,0]},Fn=["t","b","bl","br","fr","fl"],ni=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 mr(e){let t=[];for(let n of Fn)(0,Q.normalFacesCamera)(Pr[n],e)&&t.push(n);return t.join("|")}function oi(e,t,n){let o=e.__polycssVoxelBrushState??(e.__polycssVoxelBrushState={});o.color!==t&&(e.style.color=t,o.color=t),o.transform!==n&&(e.style.transform=n,o.transform=n)}function ri(e){let t=e.vertices;if(t.length<3)return null;let n=t[0],o=0,r=0,a=0;for(let u=1;u+1<t.length;u+=1){let s=t[u],d=t[u+1],m=s[1]-n[1],p=s[0]-n[0],l=s[2]-n[2],h=d[1]-n[1],y=d[0]-n[0],v=d[2]-n[2];o-=p*v-l*y,r-=l*h-m*v,a-=m*y-p*h}let i=Math.hypot(o,r,a);return i<=1e-9?null:[Math.round(o/i),Math.round(r/i),Math.round(a/i)]}function ai(e){if(e.texture||e.material||e.uvs||e.textureTriangles||e.vertices.length!==4)return null;let t=ri(e),n=t?ni.get(t.join(",")):void 0;if(!n)return null;let o=1/0,r=1/0,a=1/0,i=-1/0,u=-1/0,s=-1/0;for(let p of e.vertices)o=Math.min(o,p[0]),r=Math.min(r,p[1]),a=Math.min(a,p[2]),i=Math.max(i,p[0]),u=Math.max(u,p[1]),s=Math.max(s,p[2]);let d=1e-6,m=mi(e.color);return Math.abs(s-a)<=d?{axis:"z",face:n,left:r*Q.BASE_TILE,top:o*Q.BASE_TILE,width:Math.max(0,(u-r)*Q.BASE_TILE),height:Math.max(0,(i-o)*Q.BASE_TILE),z:a*Q.BASE_TILE,baseColor:m,bleed:kn()}:Math.abs(i-o)<=d?{axis:"x",face:n,left:r*Q.BASE_TILE,top:a*Q.BASE_TILE,width:Math.max(0,(u-r)*Q.BASE_TILE),height:Math.max(0,(s-a)*Q.BASE_TILE),z:-o*Q.BASE_TILE,baseColor:m,bleed:kn()}:Math.abs(u-r)<=d?{axis:"y",face:n,left:a*Q.BASE_TILE,top:o*Q.BASE_TILE,width:Math.max(0,(s-a)*Q.BASE_TILE),height:Math.max(0,(i-o)*Q.BASE_TILE),z:-r*Q.BASE_TILE,baseColor:m,bleed:kn()}:null}function kn(){return{left:0,right:0,top:0,bottom:0}}function ii(e){let t=o=>String(Number(o.toFixed(6))),n=`${e.item.baseColor}|${e.variableAxis}`;for(let o=0;o<3;o+=1)o!==e.variableAxis&&(n+=`|${o}:${t(e.fixed[o])}`);return n}function pr(e){return[e[1]*Q.BASE_TILE,e[0]*Q.BASE_TILE,e[2]*Q.BASE_TILE]}function yr(e,t){return e.axis==="x"?[t[0],t[2]]:e.axis==="y"?[t[2],t[1]]:[t[0],t[1]]}function si(e,t,n){let o=e.left,r=e.left+e.width,a=e.top,i=e.top+e.height;if(Math.abs(t[0]-n[0])<=We){if(Math.abs(t[0]-o)<=We)return"left";if(Math.abs(t[0]-r)<=We)return"right"}if(Math.abs(t[1]-n[1])<=We){if(Math.abs(t[1]-a)<=We)return"top";if(Math.abs(t[1]-i)<=We)return"bottom"}return null}function li(e,t){let n=null;for(let o=0;o<3;o+=1)if(!(Math.abs(e[o]-t[o])<=We)){if(n!==null)return null;n=o}return n}function ui(e,t,n){let o=t.vertices,r=pr(o[n]),a=pr(o[(n+1)%o.length]),i=si(e,yr(e,r),yr(e,a));if(!i)return null;let u=li(r,a);if(u===null)return null;let s=Math.min(r[u],a[u]),d=Math.max(r[u],a[u]);return d-s>We?{item:e,side:i,variableAxis:u,fixed:r,start:s,end:d}:null}function fr(e){e.item.bleed[e.side]=Math.max(e.item.bleed[e.side],ei)}function ci(e,t){let n=new Map;for(let o of t){let r=e[o.sourceIndex];if(r)for(let a=0;a<r.vertices.length;a+=1){let i=ui(o,r,a);if(!i)continue;let u=ii(i),s=n.get(u);s?s.push(i):n.set(u,[i])}}for(let o of n.values()){if(o.length<2)continue;o.sort((a,i)=>a.start-i.start||a.end-i.end);let r=[];for(let a of o){r=r.filter(i=>i.end>a.start+We);for(let i of r)i.item.sourceIndex!==a.item.sourceIndex&&(fr(i),fr(a));r.push(a)}}}function di(e){let t=(0,Q.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 mi(e){if(!e)return"#cccccc";let t=(0,Q.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 o=Math.round(Math.max(0,n.alpha)*1e3)/1e3;return`rgba(${In(n.r)}, ${In(n.g)}, ${In(n.b)}, ${o})`}return pi(n)}function pi({r:e,g:t,b:n}){let o=r=>Math.round(Math.max(0,Math.min(255,r))).toString(16).padStart(2,"0");return`#${o(e)}${o(t)}${o(n)}`}function In(e){return Math.round(Math.max(0,Math.min(255,e)))}function yi(e,t,n,o){let r=n?.direction??qa,a=Math.hypot(r[0],r[1],r[2])||1,i=r[0]/a,u=r[1]/a,s=r[2]/a,d=Math.max(0,n?.intensity??Za)*Math.max(0,e[0]*i+e[1]*u+e[2]*s),m=Math.max(0,o?.intensity??Qa),p=n?.color??Ga,l=o?.color??Ka,h=(0,Q.shadePolygon)(t,d,p,l,m),y=di(t);if(y.alpha>=1)return h;let v=parseInt(h.slice(1,3),16),x=parseInt(h.slice(3,5),16),T=parseInt(h.slice(5,7),16);return`rgba(${v}, ${x}, ${T}, ${y.alpha})`}function fi(e){if(!e?.length)return[];let t=[];for(let n=0;n<e.length;n+=1){let o=e[n],r=ai(o);if(!r||r.width<=0||r.height<=0)return[];t.push({...r,sourceIndex:n})}return ci(e,t),t}function gi(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 hi(e){let t=e.left,n=e.top,o=e.left+e.width,r=e.top+e.height;return[t,n,o,n,o,r,t,r]}function Pi(e){return new Map([[0,e.bleed.top],[1,e.bleed.right],[2,e.bleed.bottom],[3,e.bleed.left]])}function vi(e,t){let n=e.split(",").map(Number);if(n.length!==16||n.some(r=>!Number.isFinite(r)))return null;let o=Q.SOLID_QUAD_CANONICAL_SIZE/t;for(let r=0;r<8;r+=1)n[r]*=o;return`matrix3d(${n.map(r=>Number(r.toFixed(6))).join(",")})`}function gr(e,t){let n=e.left-e.bleed.left,o=e.top-e.bleed.top,r=e.width+e.bleed.left+e.bleed.right,a=e.height+e.bleed.top+e.bleed.bottom,i=e.z,u=r/t,s=a/t;return`matrix3d(${(e.axis==="x"?[u,0,0,0,0,0,s,0,0,-1,0,0,n,-i,o,1]:e.axis==="y"?[0,0,u,0,0,s,0,0,-1,0,0,0,-i,o,n,1]:[u,0,0,0,0,s,0,0,0,0,1,0,n,o,i,1]).map(m=>Number(m.toFixed(6))).join(",")})`}function xi(e,t){let{xAxis:n,yAxis:o,normal:r,tx:a,ty:i,tz:u}=gi(e),s=(0,Q.computeProjectiveQuadMatrix)(hi(e),n,o,r,a,i,u,ti,Pi(e));return s?vi(s,t)??gr(e,t):gr(e,t)}function bi(e){let t=e.defaultView?.matchMedia;return t?t("(pointer: coarse)").matches||t("(hover: none)").matches:!1}function Si(e){return bi(e)?Ja:hr}function Ci(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 Mi(e,t){let n=Ci(e),o=t.meshRotation;o&&(n=(0,Q.rotateVec3)(n,o[0]??0,o[1]??0,o[2]??0));let[r,a]=(0,Q.rotateVec3)(n,t.rotX,0,t.rotY);return{x:r,y:a}}function Ei(e,t,n){let o=e.filter(l=>t.has(l.face)).map(l=>({item:l,...Mi(l,n)}));if(o.length===0)return[];let r=1/0,a=-1/0,i=1/0,u=-1/0;for(let l of o)r=Math.min(r,l.x),a=Math.max(a,l.x),i=Math.min(i,l.y),u=Math.max(u,l.y);let s=4,d=Math.max(1e-6,a-r),m=Math.max(1e-6,u-i),p=new Map;for(let l of o){let h=Math.min(s-1,Math.max(0,Math.floor((l.x-r)/d*s))),y=Math.min(s-1,Math.max(0,Math.floor((l.y-i)/m*s))),v=`${h}:${y}`,x=p.get(v);x||(x={tx:h,ty:y,sourceIndex:l.item.sourceIndex,items:[]},p.set(v,x)),x.items.push(l.item),x.sourceIndex=Math.min(x.sourceIndex,l.item.sourceIndex)}return Array.from(p.values()).sort((l,h)=>l.ty-h.ty||l.tx-h.tx||l.sourceIndex-h.sourceIndex).flatMap(l=>l.items)}function vr(e){let{doc:t,wrapper:n,polygons:o,directionalLight:r,ambientLight:a}=e,i=fi(o);if(i.length===0)return null;let u=new Set(i.map(S=>S.face));n.classList.add("polycss-voxel-mesh");let s=Si(t);s!==hr&&n.style.setProperty("--polycss-voxel-primitive",`${s}px`);let d=new Map,m=(S,c)=>{let f=`${S}|${c}`,b=d.get(f);if(b)return b;let C=yi(Pr[S],c,r,a);return d.set(f,C),C},p=new Map,l=new Map,h=new Map,y=new Map;for(let S of i){let c=y.get(S.face);c||(c=[],y.set(S.face,c)),c.push(S)}let v="",x=0,T=new Set,E=S=>{let c=p.get(S.sourceIndex);return c||(c=t.createElement("b"),p.set(S.sourceIndex,c),oi(c,m(S.face,S.baseColor),xi(S,s))),c},w=S=>{let c=l.get(S);return c||(c=t.createElement("span"),c.className=`polycss-voxel-face polycss-voxel-face-${S}`,c.dataset.polycssVoxelFace=S,c.__polycssVoxelFaceHost=!0,l.set(S,c)),c},g=()=>{for(let S of Array.from(n.childNodes))if(!S.__polycssVoxelFaceHost)return S;return null},R=(S,c)=>{let f=c.map(M=>M.sourceIndex).join(",");if(h.get(S)===f)return;let b=w(S),C=t.createDocumentFragment();for(let M of c)C.appendChild(E(M));b.replaceChildren(C),h.set(S,f)},A=()=>{for(let S of Fn)u.has(S)&&R(S,y.get(S)??[])},z=S=>new Set(S.split("|").filter(Boolean)),k=S=>{let c=z(S);return Fn.filter(f=>c.has(f)&&u.has(f))},O=S=>{let c=0;for(let f of S)c+=y.get(f)?.length??0;return c},j=S=>{let c=new Set,f=[],b=new Map;for(let C of S){c.has(C.face)||(c.add(C.face),f.push(C.face));let M=b.get(C.face);M||(M=[],b.set(C.face,M)),M.push(C)}return{orderedFaces:f,itemsByFace:b}},$=(S,c)=>{let f=new Set(S);for(let b of T){if(f.has(b))continue;let C=l.get(b);C?.parentNode===n&&n.removeChild(C)}if(c){let b=t.createDocumentFragment();for(let C of S)b.appendChild(w(C));n.insertBefore(b,g()),T=f;return}for(let b=0;b<S.length;b+=1){let C=S[b],M=w(C);if(M.parentNode===n)continue;let D=null;for(let I=b+1;I<S.length;I+=1){let L=l.get(S[I]);if(L?.parentNode===n){D=L;break}}n.insertBefore(M,D??g())}T=f},Y=(S,c,f)=>{if(!f){let I=k(S);$(I,!1),x=O(I);return}let b=new Set(S.split("|").filter(Boolean)),C=Ei(i,b,c),{orderedFaces:M,itemsByFace:D}=j(C);for(let I of M)R(I,D.get(I)??[]);$(M,!0),x=C.length};return A(),{get brushCount(){return x},render(S){v=mr(S),Y(v,S,!0)},syncCamera(S){let c=mr(S);c!==v&&(v=c,Y(c,S,!1))},dispose(){for(let S of l.values())S.remove();n.classList.remove("polycss-voxel-mesh"),n.style.removeProperty("--polycss-voxel-primitive"),p.clear(),l.clear(),h.clear(),x=0,T=new Set,v=""}}}var Vn=new WeakMap;function xr(e,t){Vn.set(e,t)}function br(e){Vn.delete(e)}function Ct(e){let t=e;for(;t;){if(t instanceof HTMLElement){let n=Vn.get(t);if(n)return n}t=t.parentElement}return null}function Mt(e,t,n){let o=Array.from(e.querySelectorAll("i,b,s,u"));for(let r of o){let a=r.getBoundingClientRect();if(!(a.width<=0||a.height<=0)&&t>=a.left&&t<=a.right&&n>=a.top&&n<=a.bottom)return!0}return!1}function nn(e,t,n){if(typeof document>"u")return null;let o=Array.from(document.querySelectorAll(".polycss-mesh"));for(let r of o){if(n&&!n(r))continue;let a=Ct(r);if(a&&Mt(r,e,t))return a}return null}var Sr=new WeakMap,Cr=new WeakMap;function Ti(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 Mr(e){if(e.length===0)return e;let t=(0,ee.computeSceneBbox)(e),n=(t.min[0]+t.max[0])/2,o=(t.min[1]+t.max[1])/2,r=(t.min[2]+t.max[2])/2;if(n===0&&o===0&&r===0)return e;let a=i=>[i[0]-n,i[1]-o,i[2]-r];return e.map(i=>({...i,vertices:i.vertices.map(a),...i.textureTriangles?.length?{textureTriangles:i.textureTriangles.map(u=>({...u,vertices:u.vertices.map(a)}))}:null}))}var ue=(0,B.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},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},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:o}){let r=(0,B.computed)(()=>e.src??""),a=(0,B.computed)(()=>{let V={...e.parseOptions??{}};return e.mtl&&(V.mtlUrl=e.mtl),e.meshResolution!==void 0&&(V.meshResolution=e.meshResolution),Object.keys(V).length>0?V:void 0}),i=$t(r,a.value),u=(0,B.computed)(()=>e.src?i.polygons.value:e.polygons??[]),s=(0,B.ref)(null),d=null;(0,B.watch)(u,()=>{s.value=null,d=null});let m=(0,B.computed)(()=>s.value??u.value),p=(0,B.computed)(()=>e.merge?(0,ee.optimizeMeshPolygons)(m.value,e.meshResolution!==void 0?{meshResolution:e.meshResolution}:void 0):m.value),l=(0,B.computed)(()=>e.autoCenter?Mr(p.value):p.value),h=!t.polygon,y=So(),v=(0,B.inject)(ye,null),x=(0,B.ref)(0),T;(0,B.watchEffect)(V=>{T?.(),T=v?.store.subscribe(()=>{x.value++}),V(()=>{T?.(),T=void 0})});let E=(0,B.computed)(()=>e.textureLighting??y?.value.textureLighting??"baked"),w=(0,B.computed)(()=>y?.value.strategies),g=(0,B.computed)(()=>e.seamBleed??y?.value.seamBleed??ee.DEFAULT_SEAM_BLEED),R=(0,B.computed)(()=>y?.value.directionalLight),A=(0,B.computed)(()=>y?.value.ambientLight),z=(0,B.computed)(()=>e.src?i.voxelSource.value:e.voxelSource??void 0),k=(0,B.computed)(()=>!!(z.value&&s.value===null&&!t.polygon&&!t.default&&E.value==="baked"&&!e.castShadow)),O=(0,B.computed)(()=>{if(E.value!=="dynamic")return null;let V=e.rotation;if(!V||V[0]===0&&V[1]===0&&V[2]===0)return null;let q=y?.value.directionalLight?.direction;if(!q)return null;let X=(0,ee.inverseRotateVec3)(q,V),_=Math.hypot(X[0],X[1],X[2])||1;return{"--plx":(X[0]/_).toFixed(2),"--ply":(X[1]/_).toFixed(2),"--plz":(X[2]/_).toFixed(2)}}),j=(0,B.ref)(e.rotation),$=(0,B.ref)(0),Y=(0,B.computed)(()=>{let V=R.value;if(!V)return V;let q=(0,rt.worldDirectionalLightToCss)(V);return j.value?{...q,direction:(0,ee.inverseRotateVec3)(q.direction,j.value)}:q}),S=void 0,c=(0,B.computed)(()=>{if(!h||k.value)return[];let V=(0,se.buildTextureEdgeRepairSets)(l.value),q=g.value==="auto"||typeof g.value=="number"&&Number.isFinite(g.value)&&g.value>0?(0,se.buildSeamBleedPolygonEdges)(l.value,{directionalLight:Y.value,ambientLight:A.value}):null,X=(0,rt.buildBasisHints)(l.value,{directionalLight:Y.value,ambientLight:A.value});return l.value.map((_,W)=>ft(_,W,{directionalLight:Y.value,ambientLight:A.value,seamBleed:q?.has(W)?g.value:void 0,seamEdges:q?.get(W),textureEdgeRepairEdges:V[W],lightOccludedPolyIndices:S},X[W]))}),f=(0,B.computed)(()=>e.textureQuality),b=(0,B.computed)(()=>e.atomicAtlas),C=ht(c,E,f,w,b),M=(0,B.computed)(()=>h?wn(C.plans.value,E.value,w.value):{});(0,B.watch)(()=>C.entries.value,()=>{e.atomicAtlas&&C.ready.value&&e.onFrameReady?.()},{flush:"sync"});let D=(0,B.computed)(()=>Ti(M.value)),I=(0,B.computed)(()=>{if(!e.castShadow||y?.value.receiverRegistry?.hasAny.value)return null;let V=y?.value,q=V?.groundCssZ??null;if(q===null)return null;let X=V?.shadow,_=V?.directionalLight?.direction??[.4,-.7,.59],W=(0,ee.worldDirectionToCss)(_),J=e.position?.[2]??0,he=q-J*ee.BASE_TILE,Pe=(0,ee.findOverlappingPolygonDuplicates)(l.value,{normalTolerance:.1,distanceTolerance:.5,overlapFraction:.95,preserveDoubleSidedBackfaces:!1}),me=[],be=1/0,Se=1/0,xe=-1/0,Ae=-1/0,ae=1/0,N=1/0,F=-1/0,pe=-1/0,Le=l.value,it=c.value;for(let Fe=0;Fe<Le.length;Fe++){if(Pe.has(Fe)||!it[Fe])continue;let He=Le[Fe],At=[];for(let lt of He.vertices){let Ve=[lt[1]*ee.BASE_TILE,lt[0]*ee.BASE_TILE,lt[2]*ee.BASE_TILE];Ve[0]<ae&&(ae=Ve[0]),Ve[1]<N&&(N=Ve[1]),Ve[0]>F&&(F=Ve[0]),Ve[1]>pe&&(pe=Ve[1]);let Oe=(0,ee.projectCssVertexToGround)(Ve,W,he);At.push(Oe),Oe[0]<be&&(be=Oe[0]),Oe[1]<Se&&(Se=Oe[1]),Oe[0]>xe&&(xe=Oe[0]),Oe[1]>Ae&&(Ae=Oe[1])}me.push(At)}if(me.length===0)return null;let Re=X?.maxExtend??2e3,Ie=Math.max(be,ae-Re),Ge=Math.max(Se,N-Re),Tt=Math.min(xe,F+Re),Ze=Math.min(Ae,pe+Re),Ke=Tt-Ie,Qe=Ze-Ge;if(!(Ke>0)||!(Qe>0))return null;let zt=X?.color??"#000000",go=X?.opacity??.25,Be=(0,ee.parseHexColor)(zt)?.rgb??[0,0,0],st="";for(let Fe of me){let ze=(0,ee.ensureCcw2D)(Fe);st+=`M${(ze[0][0]-Ie).toFixed(3)},${(ze[0][1]-Ge).toFixed(3)}`;for(let He=1;He<ze.length;He++)st+=`L${(ze[He][0]-Ie).toFixed(3)},${(ze[He][1]-Ge).toFixed(3)}`;st+="Z"}return(0,B.h)("svg",{class:"polycss-shadow polycss-shadow-svg",width:String(Ke),height:String(Qe),viewBox:`0 0 ${Ke} ${Qe}`,style:{position:"absolute",top:"0",left:"0",display:"block",overflow:"hidden",transformOrigin:"0 0",pointerEvents:"none",willChange:"transform",transform:`translate3d(${Ie.toFixed(3)}px,${Ge.toFixed(3)}px,${he.toFixed(3)}px)`}},[(0,B.h)("path",{d:st,fill:`rgb(${Be[0]},${Be[1]},${Be[2]})`,"fill-rule":"nonzero",stroke:`rgb(${Be[0]},${Be[1]},${Be[2]})`,"stroke-width":"3","stroke-linejoin":"round",opacity:go.toFixed(4)})])}),L=(0,B.computed)(()=>e.receiveShadow?(0,rt.buildSharedEdgeMap)(l.value):void 0),H=(0,B.computed)(()=>{if(!e.receiveShadow)return[];let V=y?.value,q=V?.shadowRegistry;if(!q)return[];q.version.value,x.value;let X=q.getEntries();if(X.length===0)return[];let _=V?.directionalLight?.direction??[.4,-.7,.59],W=(0,ee.worldDirectionToCss)(_),J=V?.shadow?.lift??.001,he=(0,ee.prepareReceiverFacePlanes)(l.value,e.position??[0,0,0],e.scale,new Set,J,e.rotation);if(he.length===0)return[];let Pe=[],me=0,be=L.value;for(let ae of X){let N=ae(),F=N.renderedPolygonIndices,pe=(0,ee.prepareCasterPolyItems)(N.polygons,N.position,N.scale,F?Re=>F.has(Re):()=>!0,N.rotation??null),Le=N.polygons===l.value,it;if(!Le&&N.polygons.length>=40){let Re=N.rotation??null,Ie=N.position,Ge=JSON.stringify(N.scale??null),Tt=`${Ie[0]},${Ie[1]},${Ie[2]}|${Re?Re.join(","):"n"}|${Ge}`,Ze=Sr.get(N.polygons);(Ze===void 0||Cr.get(N.polygons)!==Tt)&&(Ze=(0,ee.prepareCasterEdgeOwners)(N.polygons,Ie,N.scale,Re),Sr.set(N.polygons,Ze),Cr.set(N.polygons,Tt)),it=Ze}Pe.push({id:Symbol(`caster-${me++}`),items:pe,selfShadowEdgeMap:Le?be:void 0,edgeOwners:it,casterPolygonCount:N.polygons.length})}let Se=v?.store.getState().cameraState,xe={rotX:Se?.rotX??65,rotY:Se?.rotY??45,meshRotation:e.rotation};return(0,ee.computeReceiverShadowFaces)({receiverPlanes:he,receiverPolygons:l.value,receiverHasTexture:l.value.some(ae=>ae.texture!==void 0),casters:Pe,lightDir:W,cameraRot:xe,ambientLight:V?.ambientLight,directionalLight:V?.directionalLight,shadow:{color:V?.shadow?.color,opacity:V?.shadow?.opacity??.25,maxExtend:V?.shadow?.maxExtend}}).map(ae=>(0,B.h)("svg",{key:`receiver-${ae.faceIndex}`,class:"polycss-shadow polycss-shadow-svg polycss-shadow-receiver","data-poly-shadow-type":"receiver","data-poly-shadow-receiver-face":String(ae.faceIndex),"data-poly-shadow-receiver-polys":JSON.stringify(ae.memberPolyIndices),width:String(ae.width),height:String(ae.height),viewBox:`0 0 ${ae.width} ${ae.height}`,style:{position:"absolute",top:"0",left:"0",display:"block",overflow:"hidden",transformOrigin:"0 0",pointerEvents:"none",willChange:"transform",transform:ae.matrixCss}},ae.paths.map((N,F)=>(0,B.h)("path",{key:F,d:N.d,fill:ae.fill,stroke:ae.fill,"stroke-width":"3","stroke-linejoin":"round",opacity:ae.opacity.toFixed(4),"data-poly-shadow-caster-polys":JSON.stringify(N.casterPolygonIndices)}))))}),G=Symbol();(0,B.watch)(()=>e.castShadow,(V,q,X)=>{let _=y?.value.shadowRegistry;_&&(V?_.register(G,()=>{let W=(0,ee.findOverlappingPolygonDuplicates)(l.value,{normalTolerance:.1,distanceTolerance:.5,overlapFraction:.95,preserveDoubleSidedBackfaces:!1}),J=new Set,he=c.value;for(let Pe=0;Pe<he.length;Pe++)he[Pe]&&!W.has(Pe)&&J.add(Pe);return{polygons:l.value,position:e.position??[0,0,0],scale:e.scale,rotation:e.rotation,renderedPolygonIndices:J}}):_.unregister(G),X(()=>_.unregister(G)))},{immediate:!0});let ne=Symbol();(0,B.watch)(()=>e.receiveShadow,(V,q,X)=>{let _=y?.value.receiverRegistry;_&&(V?_.register(ne):_.unregister(ne),X(()=>_.unregister(ne)))},{immediate:!0}),(0,B.onBeforeUnmount)(()=>{y?.value.shadowRegistry?.unregister(G),y?.value.receiverRegistry?.unregister(ne)});let K=(0,B.ref)(null),U={get element(){return K.value},get id(){return e.id},getPosition:()=>e.position,getRotation:()=>e.rotation,getScale:()=>e.scale,getPolygons:()=>d??l.value,setPolygons(V){let q=e.autoCenter?Mr(V):V;d=q;let X=K.value,_=X&&h&&An(X,q,{directionalLight:Y.value,ambientLight:A.value,textureLighting:E.value,strategies:w.value,seamBleed:g.value,colorFrame:++$.value,colorFreezeFrames:0});s.value=V.slice()},updatePolygon(V,q){let X=d??l.value,_=typeof V=="number"?V:X.indexOf(V);_<0||_>=X.length||(Object.assign(X[_],q),s.value=X.slice(),d=null)},rebakeAtlas:()=>{j.value=e.rotation}};o(U),(0,B.onMounted)(()=>{K.value&&xr(K.value,U)}),(0,B.onBeforeUnmount)(()=>{K.value&&br(K.value)});let le=(0,B.ref)(null);(0,B.watchEffect)(V=>{let q=K.value;if(le.value?.dispose(),le.value=null,!k.value||!q)return;let X=vr({doc:q.ownerDocument,wrapper:q,polygons:l.value,directionalLight:Y.value,ambientLight:A.value});if(!X)return;let _=()=>{let J=v?.store.getState().cameraState;return{rotX:J?.rotX??65,rotY:J?.rotY??45,meshRotation:e.rotation}};le.value=X,X.render(_());let W=v?.store.subscribe(()=>{X.syncCamera(_())});V(()=>{W?.(),X.dispose(),le.value===X&&(le.value=null)})});let ce=null;function ge(V,q,X){let _=[];if(typeof document<"u"&&typeof document.elementsFromPoint=="function"){let me=document.elementsFromPoint(q,X),be=new Set;for(let Se of me){let xe=Ct(Se);xe&&!be.has(xe)&&(be.add(xe),_.push({object:xe}))}}let W=0,J=0,he=v?.cameraElRef.value;if(he){let me=he.getBoundingClientRect();me.width>0&&me.height>0&&(W=(q-me.left)/me.width*2-1,J=-((X-me.top)/me.height*2-1))}let Pe=0;return ce&&(Pe=Math.hypot(q-ce.x,X-ce.y)),{object:_[0]?.object??U,eventObject:U,intersections:_,pointer:{x:W,y:J},delta:Pe,nativeEvent:V,stopPropagation:()=>V.stopPropagation()}}function ie(V,q,X,_){V&&V(ge(q,X,_))}return()=>{let q={transform:(0,ee.buildPolyMeshTransform)({position:e.position,scale:e.scale,rotation:e.rotation}),...O.value??void 0,...n.style,...D.value??void 0},X=Object.fromEntries(Object.entries(n).filter(([N])=>N!=="style"&&N!=="class")),_=`polycss-mesh${k.value?" polycss-voxel-mesh":""}${e.class?` ${e.class}`:""}`,W={};e.onClick&&(W.onClick=N=>{let F=N;ie(e.onClick,F,F.clientX,F.clientY)}),e.onContextMenu&&(W.onContextmenu=N=>{let F=N;ie(e.onContextMenu,F,F.clientX,F.clientY)}),e.onDoubleClick&&(W.onDblclick=N=>{let F=N;ie(e.onDoubleClick,F,F.clientX,F.clientY)}),e.onWheel&&(W.onWheel=N=>{let F=N;ie(e.onWheel,F,F.clientX,F.clientY)}),W.onPointerdown=N=>{let F=N;ce={x:F.clientX,y:F.clientY},ie(e.onPointerDown,F,F.clientX,F.clientY)},W.onPointerup=N=>{let F=N;ie(e.onPointerUp,F,F.clientX,F.clientY),ce=null},e.onPointerMove&&(W.onPointermove=N=>{let F=N;ie(e.onPointerMove,F,F.clientX,F.clientY)}),(e.onPointerOver||e.onPointerEnter)&&(W.onPointerenter=N=>{let F=N;ie(e.onPointerOver,F,F.clientX,F.clientY),ie(e.onPointerEnter,F,F.clientX,F.clientY)}),(e.onPointerOut||e.onPointerLeave)&&(W.onPointerleave=N=>{let F=N;ie(e.onPointerOut,F,F.clientX,F.clientY),ie(e.onPointerLeave,F,F.clientX,F.clientY)}),e.onPointerCancel&&(W.onPointercancel=N=>{let F=N;ie(e.onPointerCancel,F,F.clientX,F.clientY),ce=null});let J=e.id?{"data-poly-mesh-id":e.id}:{};if(e.src&&i.loading.value&&i.polygons.value.length===0)return(0,B.h)("div",{ref:K,class:`polycss-mesh polycss-mesh-loading${e.class?` ${e.class}`:""}`,style:q,...J,...W,...X},t.fallback?.()??[]);if(e.src&&i.error.value&&i.polygons.value.length===0)return(0,B.h)("div",{ref:K,class:`polycss-mesh polycss-mesh-error${e.class?` ${e.class}`:""}`,style:q,...J,...W,...X},t.error?.({error:i.error.value})??[]);let he=l.value,Pe=t.polygon?he.map((N,F)=>(0,B.h)("template",{key:F},t.polygon?.({polygon:N,index:F}))):k.value?[]:C.entries.value.map((N,F)=>{if(N)return St({entry:N,page:C.pages.value[N.pageIndex],textureLighting:E.value,solidPaintDefaults:M.value});let pe=C.plans.value[F];if(!pe||pe.texture)return null;if((0,se.isProjectiveQuadPlan)(pe))return xt({entry:pe,textureLighting:E.value,solidPaintDefaults:M.value});if((0,se.isSolidTrianglePlan)(pe))return Pt({entry:pe,textureLighting:E.value,solidPaintDefaults:M.value});let Le=w.value?.disable?.includes("i")?null:(0,rt.cornerShapeGeometryForPlan)(pe);return Le?Rn({entry:pe,geometry:Le,textureLighting:E.value,solidPaintDefaults:M.value}):vt({entry:pe,textureLighting:E.value,solidPaintDefaults:M.value,forceBorderShape:!C.useFullRectSolid.value})}),me=t.default?.()??[],be=I.value,Se=be?[be]:[],xe=H.value,Ae=y?.value?.sceneEl??null,ae=Ae&&xe.length>0?[(0,B.h)(B.Teleport,{to:Ae},xe)]:[];return(0,B.h)("div",{ref:K,class:_,style:q,...J,...W,...X},[...Se,...ae,...Pe,...me])}}});var qe=require("vue"),kt=require("@layoutit/polycss-core");function Ai(e,t,n,o,r){let a=typeof n=="number"?n:n?.[0]??1,i=typeof n=="number"?n:n?.[1]??1,u=typeof n=="number"?n:n?.[2]??1,s=a!==1||i!==1||u!==1,d=!!t&&(!!t[0]||!!t[1]||!!t[2]),m=(e?.[1]??0)*kt.BASE_TILE,p=(e?.[0]??0)*kt.BASE_TILE,l=(e?.[2]??0)*kt.BASE_TILE,h=[];return h.push(`translate3d(${m}px, ${p}px, ${l}px)`),d&&(t[0]&&h.push(`rotateY(${-t[0]}deg)`),t[1]&&h.push(`rotateX(${-t[1]}deg)`),t[2]&&h.push(`rotateZ(${-t[2]}deg)`)),s&&h.push(`scale3d(${a}, ${i}, ${u})`),h.push(`translate(${-o/2}px, ${-r/2}px)`),h.join(" ")}var _n=(0,qe.defineComponent)({name:"PolyIframe",props:{src:{type:String,required:!0},width:{type:Number,required:!0},height:{type:Number,required:!0},position:{type:Array,default:void 0},rotation:{type:Array,default:void 0},scale:{type:[Number,Array],default:void 0},allow:{type:String,default:void 0},sandbox:{type:String,default:void 0},loading:{type:String,default:void 0},referrerpolicy:{type:String,default:void 0},title:{type:String,default:void 0},class:{type:String,default:void 0},style:{type:Object,default:void 0}},setup(e){let t=(0,qe.computed)(()=>e.width*kt.BASE_TILE),n=(0,qe.computed)(()=>e.height*kt.BASE_TILE),o=(0,qe.computed)(()=>Ai(e.position,e.rotation,e.scale,t.value,n.value));return()=>{let r={position:"absolute",left:"0",top:"0",transformOrigin:"0 0",transformStyle:"preserve-3d",transform:o.value,...e.style??{}},a={src:e.src,style:{width:`${t.value}px`,height:`${n.value}px`,border:"0",display:"block",background:"#000"}};return e.allow&&(a.allow=e.allow),e.sandbox&&(a.sandbox=e.sandbox),e.loading&&(a.loading=e.loading),e.referrerpolicy&&(a.referrerpolicy=e.referrerpolicy),e.title&&(a.title=e.title),(0,qe.h)("div",{class:e.class?`polycss-iframe ${e.class}`:"polycss-iframe",style:r},[(0,qe.h)("iframe",a)])}}});var It=require("vue");var Bn=(0,It.defineComponent)({name:"PolyGround",props:{size:{type:Number,default:6},z:{type:Number,default:0},center:{type:Array,default:()=>[0,0]},color:{type:String,default:"#7d848e"},class:{type:String,default:void 0}},setup(e){let t=(0,It.computed)(()=>{let n=e.size/2,[o,r]=e.center;return[{vertices:[[o-n,r-n,e.z],[o+n,r-n,e.z],[o+n,r+n,e.z],[o-n,r+n,e.z]],color:e.color}]});return()=>(0,It.h)(ue,{polygons:t.value,castShadow:!1,class:e.class?`polycss-ground ${e.class}`:"polycss-ground"})}});var zn=require("vue");function Er(e){return typeof e=="function"?(0,zn.computed)(()=>{let{texture:t,key:n}=e();return{texture:t,key:n}}):(0,zn.computed)(()=>({texture:e.texture,key:e.key}))}var De=require("vue");var wi=4;function on(e,t=wi){let n=e.toFixed(t).replace(/\.?0+$/,"");return Number(n)===0||Object.is(Number(n),-0)?"0":`${n}px`}function Li(e){if(e.length!==4)return null;let t=[...new Set(e.map(r=>r[0]))].sort((r,a)=>r-a),n=[...new Set(e.map(r=>r[1]))].sort((r,a)=>r-a);if(t.length!==2||n.length!==2)return null;let o=new Set([`${t[0]},${n[0]}`,`${t[0]},${n[1]}`,`${t[1]},${n[0]}`,`${t[1]},${n[1]}`]);for(let r of e)if(!o.has(`${r[0]},${r[1]}`))return null;return{u0:t[0],u1:t[1],v0:n[0],v1:n[1]}}function Ri({plan:e,material:t,uvRect:n,className:o,style:r,domAttrs:a,pointerEvents:i="auto"}){let{u0:u,u1:s,v0:d,v1:m}=n,p=s-u,l=m-d,h=1/p,y=1/l,v=Math.max(d,m),x=u/p,T=(1-v)/l,E={transform:`matrix3d(${e.canonicalMatrix})`,backgroundImage:`url(${t.texture})`,backgroundSize:`${on(h)} ${on(y)}`,backgroundPosition:`${on(-x)} ${on(-T)}`,pointerEvents:i==="none"?"none":void 0,...r},w=e.polygon.data?Object.fromEntries(Object.entries(e.polygon.data).map(([R,A])=>[`data-${R}`,String(A)])):{},g=o?.trim()||void 0;return(0,De.h)("i",{class:g,style:E,...w,...a})}var Hn=(0,De.defineComponent)({name:"Poly",inheritAttrs:!1,props:{vertices:{type:Array,required:!0},color:{type:String},texture:{type:String},uvs:{type:Array,default:void 0},data:{type:Object,default:void 0},material:{type:Object,default:void 0},position:{type:Array,default:void 0},scale:{type:[Number,Array],default:void 0},rotation:{type:Array,default:void 0},textureLighting:{type:String,default:void 0},textureQuality:{type:[Number,String],default:void 0},context:{type:Object,default:void 0},baseColor:{type:String},pointerEvents:{type:String,default:"auto"}},setup(e,{attrs:t}){let n=(0,De.computed)(()=>e.textureLighting??e.context?.textureLighting??"baked"),o=(0,De.computed)(()=>e.textureQuality??e.context?.textureQuality),r=(0,De.computed)(()=>e.material?.texture??e.texture),a=(0,De.computed)(()=>e.material&&e.uvs?Li(e.uvs):null),i=(0,De.computed)(()=>{let d=e.context?.tileSize??50;return ft({vertices:e.vertices,color:e.baseColor??e.color,texture:r.value,uvs:e.uvs,data:e.data},0,{tileSize:d,layerElevation:e.context?.layerElevation??d,directionalLight:e.context?.directionalLight})}),u=(0,De.computed)(()=>a.value?[]:[i.value]),s=ht(u,n,o);return()=>{let d=i.value,m=s.entries.value[0],p=[];e.position&&p.push(`translate3d(${e.position[0]}px, ${e.position[1]}px, ${e.position[2]}px)`),e.scale!==void 0&&(typeof e.scale=="number"?e.scale!==1&&p.push(`scale3d(${e.scale}, ${e.scale}, ${e.scale})`):p.push(`scale3d(${e.scale[0]}, ${e.scale[1]}, ${e.scale[2]})`)),e.rotation&&(e.rotation[0]&&p.push(`rotateX(${e.rotation[0]}deg)`),e.rotation[1]&&p.push(`rotateY(${e.rotation[1]}deg)`),e.rotation[2]&&p.push(`rotateZ(${e.rotation[2]}deg)`));let l=p.length>0?p.join(" "):void 0,h={};if(e.data)for(let[T,E]of Object.entries(e.data))h[`data-${T}`]=String(E);let y={...t,...h},v=Object.fromEntries(Object.entries(y).filter(([T])=>T!=="class"&&T!=="style")),x;return a.value&&e.material&&d?x=Ri({plan:d,material:e.material,uvRect:a.value,className:y.class??void 0,style:y.style,domAttrs:v,pointerEvents:e.pointerEvents??"auto"}):m?x=St({entry:m,page:s.pages.value[m.pageIndex],textureLighting:n.value,className:y.class??void 0,style:y.style,domAttrs:v,pointerEvents:e.pointerEvents??"auto"}):d&&!d.texture&&(x=(0,se.isSolidTrianglePlan)(d)?Pt({entry:d,textureLighting:n.value,className:y.class??void 0,style:y.style,domAttrs:v,pointerEvents:e.pointerEvents??"auto"}):(0,se.isProjectiveQuadPlan)(d)?xt({entry:d,textureLighting:n.value,className:y.class??void 0,style:y.style,domAttrs:v,pointerEvents:e.pointerEvents??"auto"}):vt({entry:d,textureLighting:n.value,className:y.class??void 0,style:y.style,domAttrs:v,pointerEvents:e.pointerEvents??"auto"})),x?l?(0,De.h)("div",{class:"polycss-poly-wrapper",style:{transform:l,position:"absolute",transformStyle:"preserve-3d"}},[x]):x:null}}});var te=require("vue"),fe=require("@layoutit/polycss-core");var Nn=(0,te.defineComponent)({name:"PolyBox",props:{size:{type:[Number,Array],default:void 0},center:{type:Array,default:void 0},min:{type:Array,default:void 0},max:{type:Array,default:void 0},color:{type:String,default:void 0},texture:{type:String,default:void 0},material:{type:Object,default:void 0},uvs:{type:Array,default:void 0},data:{type:Object,default:void 0},faces:{type:Object,default:void 0},position:{type:Array,default:void 0},scale:{type:[Number,Array],default:void 0},rotation:{type:Array,default:void 0},autoCenter:{type:Boolean,default:!1},id:{type:String,default:void 0}},setup(e){let t=(0,te.computed)(()=>(0,fe.boxPolygons)({size:e.size,center:e.center,min:e.min,max:e.max,color:e.color,texture:e.texture,material:e.material,uvs:e.uvs,data:e.data,faces:e.faces}));return()=>(0,te.h)(ue,{polygons:t.value,position:e.position,scale:e.scale,rotation:e.rotation,autoCenter:e.autoCenter,id:e.id})}}),Yn=(0,te.defineComponent)({name:"PolyPlane",props:{axis:{type:Number,required:!0},size:{type:Number,default:void 0},offset:{type:[Number,Array],default:void 0},along:{type:Number,default:void 0},color:{type:String,default:void 0},position:{type:Array,default:void 0},scale:{type:[Number,Array],default:void 0},rotation:{type:Array,default:void 0},autoCenter:{type:Boolean,default:!1},id:{type:String,default:void 0}},setup(e){let t=(0,te.computed)(()=>(0,fe.planePolygons)({axis:e.axis,size:e.size,offset:e.offset,along:e.along,color:e.color}));return()=>(0,te.h)(ue,{polygons:t.value,position:e.position,scale:e.scale,rotation:e.rotation,autoCenter:e.autoCenter,id:e.id})}}),jn=(0,te.defineComponent)({name:"PolyRing",props:{axis:{type:Number,required:!0},radius:{type:Number,required:!0},halfThickness:{type:Number,default:void 0},segments:{type:Number,default:void 0},color:{type:String,default:void 0},position:{type:Array,default:void 0},scale:{type:[Number,Array],default:void 0},rotation:{type:Array,default:void 0},autoCenter:{type:Boolean,default:!1},id:{type:String,default:void 0}},setup(e){let t=(0,te.computed)(()=>(0,fe.ringPolygons)({axis:e.axis,radius:e.radius,halfThickness:e.halfThickness,segments:e.segments,color:e.color}));return()=>(0,te.h)(ue,{polygons:t.value,position:e.position,scale:e.scale,rotation:e.rotation,autoCenter:e.autoCenter,id:e.id})}}),$n=(0,te.defineComponent)({name:"PolyOctahedron",props:{center:{type:Array,required:!0},size:{type:Number,required:!0},color:{type:String,default:void 0},position:{type:Array,default:void 0},scale:{type:[Number,Array],default:void 0},rotation:{type:Array,default:void 0},autoCenter:{type:Boolean,default:!1},id:{type:String,default:void 0}},setup(e){let t=(0,te.computed)(()=>(0,fe.octahedronPolygons)({center:e.center,size:e.size,color:e.color}));return()=>(0,te.h)(ue,{polygons:t.value,position:e.position,scale:e.scale,rotation:e.rotation,autoCenter:e.autoCenter,id:e.id})}}),Xn=(0,te.defineComponent)({name:"PolyTetrahedron",props:{size:{type:Number,default:void 0},color:{type:String,default:void 0},position:{type:Array,default:void 0},scale:{type:[Number,Array],default:void 0},rotation:{type:Array,default:void 0},autoCenter:{type:Boolean,default:!1},id:{type:String,default:void 0}},setup(e){let t=(0,te.computed)(()=>(0,fe.tetrahedronPolygons)({size:e.size,color:e.color}));return()=>(0,te.h)(ue,{polygons:t.value,position:e.position,scale:e.scale,rotation:e.rotation,autoCenter:e.autoCenter,id:e.id})}}),Un=(0,te.defineComponent)({name:"PolyIcosahedron",props:{size:{type:Number,default:void 0},color:{type:String,default:void 0},position:{type:Array,default:void 0},scale:{type:[Number,Array],default:void 0},rotation:{type:Array,default:void 0},autoCenter:{type:Boolean,default:!1},id:{type:String,default:void 0}},setup(e){let t=(0,te.computed)(()=>(0,fe.icosahedronPolygons)({size:e.size,color:e.color}));return()=>(0,te.h)(ue,{polygons:t.value,position:e.position,scale:e.scale,rotation:e.rotation,autoCenter:e.autoCenter,id:e.id})}}),Wn=(0,te.defineComponent)({name:"PolyDodecahedron",props:{size:{type:Number,default:void 0},color:{type:String,default:void 0},position:{type:Array,default:void 0},scale:{type:[Number,Array],default:void 0},rotation:{type:Array,default:void 0},autoCenter:{type:Boolean,default:!1},id:{type:String,default:void 0}},setup(e){let t=(0,te.computed)(()=>(0,fe.dodecahedronPolygons)({size:e.size,color:e.color}));return()=>(0,te.h)(ue,{polygons:t.value,position:e.position,scale:e.scale,rotation:e.rotation,autoCenter:e.autoCenter,id:e.id})}}),qn=(0,te.defineComponent)({name:"PolySphere",props:{radius:{type:Number,default:void 0},subdivisions:{type:Number,default:void 0},color:{type:String,default:void 0},position:{type:Array,default:void 0},scale:{type:[Number,Array],default:void 0},rotation:{type:Array,default:void 0},autoCenter:{type:Boolean,default:!1},id:{type:String,default:void 0}},setup(e){let t=(0,te.computed)(()=>(0,fe.spherePolygons)({radius:e.radius,subdivisions:e.subdivisions,color:e.color}));return()=>(0,te.h)(ue,{polygons:t.value,position:e.position,scale:e.scale,rotation:e.rotation,autoCenter:e.autoCenter,id:e.id})}}),Gn=(0,te.defineComponent)({name:"PolyCylinder",props:{radius:{type:Number,default:void 0},radiusTop:{type:Number,default:void 0},height:{type:Number,default:void 0},radialSegments:{type:Number,default:void 0},color:{type:String,default:void 0},position:{type:Array,default:void 0},scale:{type:[Number,Array],default:void 0},rotation:{type:Array,default:void 0},autoCenter:{type:Boolean,default:!1},id:{type:String,default:void 0}},setup(e){let t=(0,te.computed)(()=>(0,fe.cylinderPolygons)({radius:e.radius,radiusTop:e.radiusTop,height:e.height,radialSegments:e.radialSegments,color:e.color}));return()=>(0,te.h)(ue,{polygons:t.value,position:e.position,scale:e.scale,rotation:e.rotation,autoCenter:e.autoCenter,id:e.id})}}),Zn=(0,te.defineComponent)({name:"PolyCone",props:{radius:{type:Number,default:void 0},height:{type:Number,default:void 0},radialSegments:{type:Number,default:void 0},color:{type:String,default:void 0},position:{type:Array,default:void 0},scale:{type:[Number,Array],default:void 0},rotation:{type:Array,default:void 0},autoCenter:{type:Boolean,default:!1},id:{type:String,default:void 0}},setup(e){let t=(0,te.computed)(()=>(0,fe.conePolygons)({radius:e.radius,height:e.height,radialSegments:e.radialSegments,color:e.color}));return()=>(0,te.h)(ue,{polygons:t.value,position:e.position,scale:e.scale,rotation:e.rotation,autoCenter:e.autoCenter,id:e.id})}}),Kn=(0,te.defineComponent)({name:"PolyTorus",props:{radius:{type:Number,default:void 0},tube:{type:Number,default:void 0},radialSegments:{type:Number,default:void 0},tubularSegments:{type:Number,default:void 0},color:{type:String,default:void 0},position:{type:Array,default:void 0},scale:{type:[Number,Array],default:void 0},rotation:{type:Array,default:void 0},autoCenter:{type:Boolean,default:!1},id:{type:String,default:void 0}},setup(e){let t=(0,te.computed)(()=>(0,fe.torusPolygons)({radius:e.radius,tube:e.tube,radialSegments:e.radialSegments,tubularSegments:e.tubularSegments,color:e.color}));return()=>(0,te.h)(ue,{polygons:t.value,position:e.position,scale:e.scale,rotation:e.rotation,autoCenter:e.autoCenter,id:e.id})}});var Me=require("vue"),Qn=require("@layoutit/polycss-core");var Oi=150,Tr=4,Di=513e-6,ki=10,Ii=3,Ar=16.67,Fi=50,wr=.1,Lr=10,Rr=0,Or=5e3,Vi=.3,_i=.05;function Bi(e){return e===!0?-1:e===void 0||e===!1?1:e}function zi(e,t,n,o,r){let a=Bi(r),i=e/Tr*a,u=t/Tr*a;return{rotX:n-u,rotY:((o-i)%360+360)%360}}function Dr(e,t,n,o,r){let a=Math.max(.01,n),i=Math.max(.1,Math.cos(o*Math.PI/180)),u=-e/(a*Qn.BASE_TILE),s=-t/(a*Qn.BASE_TILE*i),d=-r*Math.PI/180,m=Math.cos(d),p=Math.sin(d);return{dWorldX:s*m-u*p,dWorldY:s*p+u*m}}var Jn=(0,Me.defineComponent)({name:"PolyOrbitControls",props:{drag:{type:Boolean,default:!0},wheel:{type:Boolean,default:!0},dolly:{type:Boolean,default:!1},invert:{type:[Boolean,Number],default:!1},minZoom:{type:Number,default:wr},maxZoom:{type:Number,default:Lr},minDistance:{type:Number,default:Rr},maxDistance:{type:Number,default:Or},animate:{type:[Boolean,Object],default:!1}},emits:{change:e=>!0,"interaction-start":e=>!0,"interaction-end":e=>!0},setup(e,{emit:t}){let n=(0,Me.inject)(ye,null);if(!n)return typeof console<"u"&&console.warn("[polycss] <PolyOrbitControls> must be used inside <PolyCamera>."),()=>null;let{store:o,cameraRef:r,cameraElRef:a,applyTransformDirect:i}=n,u=()=>({rotX:r.value.state.rotX,rotY:r.value.state.rotY,zoom:r.value.state.zoom,target:r.value.state.target,distance:r.value.state.distance}),s=()=>{t("change",u())},d=()=>{t("interaction-start",u())},m=()=>{t("interaction-end",u())},p=null,l={x:0,y:0},h=(0,Me.ref)(!1),y=null,v=null,x=null;function T(){let g=a.value;if(!g)return;let R=!1,A={x:0,y:0},z=c=>{if(e.drag&&p===null&&c.isPrimary!==!1){c.preventDefault(),p=c.pointerId,l={x:c.clientX,y:c.clientY},g.style.cursor="grabbing";try{c.target.setPointerCapture(c.pointerId)}catch{}e.animate&&e.animate.pauseOnInteraction!==!1&&(h.value=!0),d()}},k=c=>{if(p===null||c.pointerId!==p||!e.drag)return;c.preventDefault();let f=c.clientX-l.x,b=c.clientY-l.y;l={x:c.clientX,y:c.clientY};let C=r.value,M=C.state;if(c.shiftKey){let{dWorldX:D,dWorldY:I}=Dr(f,b,M.zoom,M.rotX,M.rotY);C.update({target:[M.target[0]+D,M.target[1]+I,M.target[2]]})}else{let{rotX:D,rotY:I}=zi(f,b,M.rotX,M.rotY,e.invert);C.update({rotX:D,rotY:I})}i(),o.updateCameraFromRef(C),s()},O=c=>{if(p===c.pointerId){p=null,g.style.cursor=e.drag?"grab":"";try{c.target.releasePointerCapture(c.pointerId)}catch{}h.value=!1,m()}},j=c=>{c.preventDefault()},$=c=>{c.button===2&&(R=!0,A={x:c.clientX,y:c.clientY})},Y=c=>{if(!R||!e.drag)return;let f=c.clientX-A.x,b=c.clientY-A.y;A={x:c.clientX,y:c.clientY};let C=r.value,M=C.state,{dWorldX:D,dWorldY:I}=Dr(f,b,M.zoom,M.rotX,M.rotY);C.update({target:[M.target[0]+D,M.target[1]+I,M.target[2]]}),i(),o.updateCameraFromRef(C),s()},S=c=>{c.button===2&&R&&(R=!1,m())};g.style.cursor="grab",g.style.touchAction="none",g.style.userSelect="none",g.addEventListener("pointerdown",z),g.addEventListener("pointermove",k),g.addEventListener("pointerup",O),g.addEventListener("pointercancel",O),g.addEventListener("contextmenu",j),g.addEventListener("mousedown",$),g.addEventListener("mousemove",Y),g.addEventListener("mouseup",S),y=()=>{g.removeEventListener("pointerdown",z),g.removeEventListener("pointermove",k),g.removeEventListener("pointerup",O),g.removeEventListener("pointercancel",O),g.removeEventListener("contextmenu",j),g.removeEventListener("mousedown",$),g.removeEventListener("mousemove",Y),g.removeEventListener("mouseup",S),g.style.cursor="",g.style.touchAction="",g.style.userSelect=""}}function E(){let g=a.value;if(!g)return;let R=!1,A=null,z=k=>{if(!e.wheel)return;k.preventDefault();let O=k.deltaMode===1?16:k.deltaMode===2?100:1,j=k.deltaY*O;k.ctrlKey?j*=ki:j*=Ii;let $=r.value;if(e.dolly){let Y=e.minDistance??Rr,S=e.maxDistance??Or,c=Math.max(Y,Math.min(S,$.state.distance+j*_i));$.update({distance:c})}else{let Y=Math.exp(-j*Di),S=e.minZoom??wr,c=e.maxZoom??Lr,f=Math.max(S,Math.min(c,$.state.zoom*Y));$.update({zoom:f})}i(),o.updateCameraFromRef($),R||(R=!0,d()),s(),A!==null&&clearTimeout(A),A=setTimeout(()=>{A=null,R=!1,m()},Oi)};g.addEventListener("wheel",z,{passive:!1}),v=()=>{g.removeEventListener("wheel",z),A!==null&&clearTimeout(A)}}function w(){let g=null,R=!1,A=0,z=k=>{if(R)return;let O=e.animate;if(!O){g=requestAnimationFrame(z);return}if(h.value)A=k;else{let j=Math.min(Fi,A?k-A:Ar);A=k;let Y=(O.speed??Vi)*(j/Ar),S=r.value,c=S.state;if(O.axis==="x"){let f=((c.rotX+Y)%360+360)%360;S.update({rotX:f})}else{let f=((c.rotY+Y)%360+360)%360;S.update({rotY:f})}i(),o.updateCameraFromRef(S),s()}g=requestAnimationFrame(z)};g=requestAnimationFrame(z),x=()=>{R=!0,g!==null&&cancelAnimationFrame(g),x=null}}return(0,Me.onMounted)(()=>{e.drag&&T(),e.wheel&&E(),e.animate&&w()}),(0,Me.onBeforeUnmount)(()=>{y?.(),v?.(),x?.(),y=null,v=null}),(0,Me.watch)(()=>e.drag,g=>{g&&!y&&T(),!g&&y&&(y(),y=null)}),(0,Me.watch)(()=>e.wheel,g=>{g&&!v&&E(),!g&&v&&(v(),v=null)}),(0,Me.watch)(()=>!!e.animate,g=>{g&&!x&&w(),!g&&x&&x()}),()=>null}});var Ee=require("vue"),eo=require("@layoutit/polycss-core");var Hi=150,kr=4,Ni=513e-6,Yi=10,ji=3,Ir=16.67,$i=50,Fr=.1,Vr=10,_r=0,Br=5e3,Xi=.3,Ui=.05;function Wi(e){return e===!0?-1:e===void 0||e===!1?1:e}function zr(e,t,n,o,r){let a=Wi(r),i=e/kr*a,u=t/kr*a;return{rotX:n-u,rotY:((o-i)%360+360)%360}}function qi(e,t,n,o,r){let a=Math.max(.01,n),i=Math.max(.1,Math.cos(o*Math.PI/180)),u=-e/(a*eo.BASE_TILE),s=-t/(a*eo.BASE_TILE*i),d=-r*Math.PI/180,m=Math.cos(d),p=Math.sin(d);return{dWorldX:s*m-u*p,dWorldY:s*p+u*m}}var to=(0,Ee.defineComponent)({name:"PolyMapControls",props:{drag:{type:Boolean,default:!0},wheel:{type:Boolean,default:!0},dolly:{type:Boolean,default:!1},invert:{type:[Boolean,Number],default:!1},minZoom:{type:Number,default:Fr},maxZoom:{type:Number,default:Vr},minDistance:{type:Number,default:_r},maxDistance:{type:Number,default:Br},animate:{type:[Boolean,Object],default:!1}},emits:{change:e=>!0,"interaction-start":e=>!0,"interaction-end":e=>!0},setup(e,{emit:t}){let n=(0,Ee.inject)(ye,null);if(!n)return typeof console<"u"&&console.warn("[polycss] <PolyMapControls> must be used inside <PolyCamera>."),()=>null;let{store:o,cameraRef:r,cameraElRef:a,applyTransformDirect:i}=n,u=()=>({rotX:r.value.state.rotX,rotY:r.value.state.rotY,zoom:r.value.state.zoom,target:r.value.state.target,distance:r.value.state.distance}),s=()=>{t("change",u())},d=()=>{t("interaction-start",u())},m=()=>{t("interaction-end",u())},p=null,l={x:0,y:0},h=(0,Ee.ref)(!1),y=null,v=null,x=null;function T(){let g=a.value;if(!g)return;let R=!1,A={x:0,y:0},z=c=>{if(e.drag&&p===null&&c.isPrimary!==!1){c.preventDefault(),p=c.pointerId,l={x:c.clientX,y:c.clientY},g.style.cursor="grabbing";try{c.target.setPointerCapture(c.pointerId)}catch{}e.animate&&e.animate.pauseOnInteraction!==!1&&(h.value=!0),d()}},k=c=>{if(p===null||c.pointerId!==p||!e.drag)return;c.preventDefault();let f=c.clientX-l.x,b=c.clientY-l.y;l={x:c.clientX,y:c.clientY};let C=r.value,M=C.state;if(c.shiftKey){let{rotX:D,rotY:I}=zr(f,b,M.rotX,M.rotY,e.invert);C.update({rotX:D,rotY:I})}else{let{dWorldX:D,dWorldY:I}=qi(f,b,M.zoom,M.rotX,M.rotY);C.update({target:[M.target[0]+D,M.target[1]+I,M.target[2]]})}i(),o.updateCameraFromRef(C),s()},O=c=>{if(p===c.pointerId){p=null,g.style.cursor=e.drag?"grab":"";try{c.target.releasePointerCapture(c.pointerId)}catch{}h.value=!1,m()}},j=c=>{c.preventDefault()},$=c=>{c.button===2&&(R=!0,A={x:c.clientX,y:c.clientY})},Y=c=>{if(!R||!e.drag)return;let f=c.clientX-A.x,b=c.clientY-A.y;A={x:c.clientX,y:c.clientY};let C=r.value,M=C.state,{rotX:D,rotY:I}=zr(f,b,M.rotX,M.rotY,e.invert);C.update({rotX:D,rotY:I}),i(),o.updateCameraFromRef(C),s()},S=c=>{c.button===2&&R&&(R=!1,m())};g.style.cursor="grab",g.style.touchAction="none",g.style.userSelect="none",g.addEventListener("pointerdown",z),g.addEventListener("pointermove",k),g.addEventListener("pointerup",O),g.addEventListener("pointercancel",O),g.addEventListener("contextmenu",j),g.addEventListener("mousedown",$),g.addEventListener("mousemove",Y),g.addEventListener("mouseup",S),y=()=>{g.removeEventListener("pointerdown",z),g.removeEventListener("pointermove",k),g.removeEventListener("pointerup",O),g.removeEventListener("pointercancel",O),g.removeEventListener("contextmenu",j),g.removeEventListener("mousedown",$),g.removeEventListener("mousemove",Y),g.removeEventListener("mouseup",S),g.style.cursor="",g.style.touchAction="",g.style.userSelect=""}}function E(){let g=a.value;if(!g)return;let R=!1,A=null,z=k=>{if(!e.wheel)return;k.preventDefault();let O=k.deltaMode===1?16:k.deltaMode===2?100:1,j=k.deltaY*O;k.ctrlKey?j*=Yi:j*=ji;let $=r.value;if(e.dolly){let Y=e.minDistance??_r,S=e.maxDistance??Br,c=Math.max(Y,Math.min(S,$.state.distance+j*Ui));$.update({distance:c})}else{let Y=Math.exp(-j*Ni),S=e.minZoom??Fr,c=e.maxZoom??Vr,f=Math.max(S,Math.min(c,$.state.zoom*Y));$.update({zoom:f})}i(),o.updateCameraFromRef($),R||(R=!0,d()),s(),A!==null&&clearTimeout(A),A=setTimeout(()=>{A=null,R=!1,m()},Hi)};g.addEventListener("wheel",z,{passive:!1}),v=()=>{g.removeEventListener("wheel",z),A!==null&&clearTimeout(A)}}function w(){let g=null,R=!1,A=0,z=k=>{if(R)return;let O=e.animate;if(!O){g=requestAnimationFrame(z);return}if(h.value)A=k;else{let j=Math.min($i,A?k-A:Ir);A=k;let Y=(O.speed??Xi)*(j/Ir),S=r.value,c=S.state;if(O.axis==="x"){let f=((c.rotX+Y)%360+360)%360;S.update({rotX:f})}else{let f=((c.rotY+Y)%360+360)%360;S.update({rotY:f})}i(),o.updateCameraFromRef(S),s()}g=requestAnimationFrame(z)};g=requestAnimationFrame(z),x=()=>{R=!0,g!==null&&cancelAnimationFrame(g),x=null}}return(0,Ee.onMounted)(()=>{e.drag&&T(),e.wheel&&E(),e.animate&&w()}),(0,Ee.onBeforeUnmount)(()=>{y?.(),v?.(),x?.(),y=null,v=null}),(0,Ee.watch)(()=>e.drag,g=>{g&&!y&&T(),!g&&y&&(y(),y=null)}),(0,Ee.watch)(()=>e.wheel,g=>{g&&!v&&E(),!g&&v&&(v(),v=null)}),(0,Ee.watch)(()=>!!e.animate,g=>{g&&!x&&w(),!g&&x&&x()}),()=>null}});var re=require("vue"),Te=require("@layoutit/polycss-core");var rn="#ff3653",an="#8adb00",sn="#2c8fff",Gi=.6,Zi=.8,Ki=1,je=50,Hr=60,Qi=.6,Ji=.0125,es=.15,ts=.04,ns=1,Nr=.02,no=1.04,os=.1,rs=.25,qr=1e-4,Xt={0:1,1:0,2:2},Yr=[{cssAxis:0,sign:1,key:"x",color:rn},{cssAxis:0,sign:-1,key:"-x",color:rn},{cssAxis:1,sign:1,key:"y",color:an},{cssAxis:1,sign:-1,key:"-y",color:an},{cssAxis:2,sign:1,key:"z",color:sn},{cssAxis:2,sign:-1,key:"-z",color:sn}],jr=[{cssAxis:0,key:"x",color:rn},{cssAxis:1,key:"y",color:an},{cssAxis:2,key:"z",color:sn}],$r=[{perpAxis:2,axisA:0,axisB:1,key:"xy",color:sn},{perpAxis:1,axisA:0,axisB:2,key:"xz",color:an},{perpAxis:0,axisA:1,axisB:2,key:"yz",color:rn}];function oo(e,t){let n=/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i.exec(e);if(!n)return e;let o=parseInt(n[1],16),r=parseInt(n[2],16),a=parseInt(n[3],16);return`rgba(${o}, ${r}, ${a}, ${t})`}function ln(e,t){return!t||t<=0?e:Math.round(e/t)*t}function as(e){return e.replace("-","")[0]}function ro(e,t,n,o){let r=n*Math.PI/180,a=o*Math.PI/180,i=[0,0,0];i[e]=t;let u=i[0]*Math.sin(a)+i[1]*Math.cos(a),s=i[2];return u*Math.sin(r)+s*Math.cos(r)<0}function is(e){if(e.length===0)return Hr;let t=1/0,n=1/0,o=1/0,r=-1/0,a=-1/0,i=-1/0;for(let u of e)for(let s of u.vertices)s[0]<t&&(t=s[0]),s[0]>r&&(r=s[0]),s[1]<n&&(n=s[1]),s[1]>a&&(a=s[1]),s[2]<o&&(o=s[2]),s[2]>i&&(i=s[2]);return Number.isFinite(t)?Math.max(r-t,a-n,i-o)*je*Qi:Hr}function ss(e){if(e.length===0)return[0,0,0];let t=1/0,n=1/0,o=1/0,r=-1/0,a=-1/0,i=-1/0;for(let u of e)for(let s of u.vertices)s[0]<t&&(t=s[0]),s[0]>r&&(r=s[0]),s[1]<n&&(n=s[1]),s[1]>a&&(a=s[1]),s[2]<o&&(o=s[2]),s[2]>i&&(i=s[2]);return Number.isFinite(t)?[(n+a)/2*je,(t+r)/2*je,(o+i)/2*je]:[0,0,0]}function Xr(e){let t=e.shaftLengthCss,n=[0,0,0];n[e.cssAxis]=e.sign;let o=e.wrapper.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(${n[0]*t}px, ${n[1]*t}px, ${n[2]*t}px)`,e.wrapper.appendChild(o);let r=e.wrapper.getBoundingClientRect(),a=o.getBoundingClientRect();e.wrapper.removeChild(o);let i=(a.left-r.left)/t,u=(a.top-r.top)/t,s=i*i+u*u;if(s<qr)return;let d=e.target.getPosition()??[0,0,0];e.onMouseDown?.(),e.onDraggingChanged?.(!0);let m=l=>{let h=l.clientX-e.startClientX,y=l.clientY-e.startClientY,v=(h*i+y*u)/s;v=ln(v,e.translationSnap);let x=[d[0]+v*n[0],d[1]+v*n[1],d[2]+v*n[2]];e.onObjectChange?.({object:e.target,position:x}),e.onChange?.()},p=()=>{window.removeEventListener("pointermove",m),window.removeEventListener("pointerup",p),window.removeEventListener("pointercancel",p);let l=h=>{h.stopPropagation(),h.stopImmediatePropagation()};window.addEventListener("click",l,{capture:!0,once:!0}),setTimeout(()=>window.removeEventListener("click",l,!0),0),e.onMouseUp?.(),e.onDraggingChanged?.(!1)};window.addEventListener("pointermove",m),window.addEventListener("pointerup",p),window.addEventListener("pointercancel",p)}function Ur(e){let t=[0,0,0];t[e.axisA]=1;let n=[0,0,0];n[e.axisB]=1;let o=e.probeDistanceCss;function r(p){let l=e.wrapper.ownerDocument.createElement("div");l.style.position="absolute",l.style.left="0",l.style.top="0",l.style.width="0",l.style.height="0",l.style.transform=`translate3d(${p[0]*o}px, ${p[1]*o}px, ${p[2]*o}px)`,e.wrapper.appendChild(l);let h=e.wrapper.getBoundingClientRect(),y=l.getBoundingClientRect();return e.wrapper.removeChild(l),{x:(y.left-h.left)/o,y:(y.top-h.top)/o}}let a=r(t),i=r(n),u=a.x*i.y-i.x*a.y;if(Math.abs(u)<qr)return;let s=e.target.getPosition()??[0,0,0];e.onMouseDown?.(),e.onDraggingChanged?.(!0);let d=p=>{let l=p.clientX-e.startClientX,h=p.clientY-e.startClientY,y=(i.y*l-i.x*h)/u,v=(-a.y*l+a.x*h)/u;y=ln(y,e.translationSnap),v=ln(v,e.translationSnap);let x=[s[0]+y*t[0]+v*n[0],s[1]+y*t[1]+v*n[1],s[2]+y*t[2]+v*n[2]];e.onObjectChange?.({object:e.target,position:x}),e.onChange?.()},m=()=>{window.removeEventListener("pointermove",d),window.removeEventListener("pointerup",m),window.removeEventListener("pointercancel",m),e.onMouseUp?.(),e.onDraggingChanged?.(!1)};window.addEventListener("pointermove",d),window.addEventListener("pointerup",m),window.addEventListener("pointercancel",m)}function Wr(e){let t=e.wrapper.getBoundingClientRect(),n=t.left,o=t.top,r=Math.atan2(e.startClientY-o,e.startClientX-n),a=0,i=e.target.getRotation()??[0,0,0],u=(0,Te.quatFromEulerXYZ)(i);e.onMouseDown?.(),e.onDraggingChanged?.(!0);let s=m=>{let p=Math.atan2(m.clientY-o,m.clientX-n),l=p-r;l>Math.PI?l-=2*Math.PI:l<-Math.PI&&(l+=2*Math.PI),a+=l,r=p;let h=a*180/Math.PI;h=ln(h,e.rotationSnap);let y=[0,0,0];y[e.cssAxis]=1;let v=(0,Te.quatFromAxisAngle)(y,h*Math.PI/180),x=(0,Te.eulerXYZFromQuat)((0,Te.quatMultiply)(v,u));e.onObjectChange?.({object:e.target,rotation:x}),e.onChange?.()},d=()=>{window.removeEventListener("pointermove",s),window.removeEventListener("pointerup",d),window.removeEventListener("pointercancel",d);let m=p=>{p.stopPropagation(),p.stopImmediatePropagation()};window.addEventListener("click",m,{capture:!0,once:!0}),setTimeout(()=>window.removeEventListener("click",m,!0),0),e.onMouseUp?.(),e.onDraggingChanged?.(!1),e.target.rebakeAtlas()};window.addEventListener("pointermove",s),window.addEventListener("pointerup",d),window.addEventListener("pointercancel",d)}function ls(e){return!!e&&typeof e=="object"&&"value"in e}function us(e){return e?ls(e)?e.value??null:e:null}var ao=(0,re.defineComponent)({name:"PolyTransformControls",props:{object:{type:null,default:null},mode:{type:String,default:"translate"},space:{type:String,default:"world"},size:{type:Number,default:1},showX:{type:Boolean,default:!0},showY:{type:Boolean,default:!0},showZ:{type:Boolean,default:!0},translationSnap:{type:Number,default:null},rotationSnap:{type:Number,default:null},enabled:{type:Boolean,default:!0}},emits:{change:()=>!0,objectChange:e=>!0,mouseDown:()=>!0,mouseUp:()=>!0,draggingChanged:e=>!0},setup(e,{emit:t}){let n=(0,re.ref)(null),o=(0,re.ref)(null),r=(0,re.ref)(new Map),a=(0,re.computed)(()=>us(e.object)),i=(0,re.ref)(0);(0,re.onMounted)(()=>{i.value++});let u=(0,re.ref)(0),s=(0,re.inject)(ye,void 0),d=null;(0,re.onMounted)(()=>{let c=s?.store;c&&(d=c.subscribe(()=>{u.value++}))}),(0,re.onBeforeUnmount)(()=>{d?.()});function m(){u.value;let c=s?.store.getState().cameraState;return{rotX:c?.rotX??65,rotY:c?.rotY??45}}let p=(0,re.computed)(()=>(i.value,is(a.value?.getPolygons()??[]))),l=(0,re.computed)(()=>p.value*e.size);function h(c){return o.value===c?Ki:n.value===c?Zi:Gi}function y(){t("change")}function v(c){t("objectChange",c)}function x(c){t("draggingChanged",c)}function T(){t("mouseDown")}function E(){t("mouseUp")}let w=(0,re.inject)(ye,void 0),g=null;(0,re.onMounted)(()=>{let c=w?.cameraElRef.value;if(!c)return;let f=b=>{let C=a.value;if(!C||!e.enabled||b.target?.closest(".polycss-transform-gizmo"))return;let D={x:e.showX,y:e.showY,z:e.showZ};if(e.mode==="translate")for(let L of $r){let H=["x","y","z"][L.axisA],G=["x","y","z"][L.axisB];if(!D[H]||!D[G])continue;let ne=document.querySelector(`.polycss-transform-plane--${L.key}`);if(!ne||!Mt(ne,b.clientX,b.clientY))continue;b.preventDefault(),b.stopPropagation();let K=ne.closest("[data-poly-transform-controls]");if(!K)return;o.value=L.key,Ur({axisA:L.axisA,axisB:L.axisB,probeDistanceCss:l.value,wrapper:K,target:C,startClientX:b.clientX,startClientY:b.clientY,translationSnap:e.translationSnap,onChange:y,onObjectChange:v,onMouseDown:T,onMouseUp:E,onDraggingChanged:U=>{U||(o.value=null),x(U)}});return}let I=e.mode==="translate"?Yr:jr;for(let L of I){let H=L.key.replace("-","")[0];if(!D[H])continue;let G=document.querySelector(`.polycss-transform-${e.mode==="translate"?"arrow":"ring"}--${L.key}`);if(!G||!(e.mode==="rotate"?Mt(G,b.clientX,b.clientY):Mt(G,b.clientX,b.clientY)))continue;b.preventDefault(),b.stopPropagation();let K=G.closest("[data-poly-transform-controls]");if(!K)return;if(o.value=L.key,e.mode==="translate"){let U=L;Xr({cssAxis:U.cssAxis,sign:U.sign,shaftLengthCss:l.value,wrapper:K,target:C,startClientX:b.clientX,startClientY:b.clientY,translationSnap:e.translationSnap,onChange:y,onObjectChange:v,onMouseDown:T,onMouseUp:E,onDraggingChanged:le=>{le||(o.value=null),x(le)}})}else Wr({cssAxis:L.cssAxis,wrapper:K,target:C,startClientX:b.clientX,startClientY:b.clientY,rotationSnap:e.rotationSnap,onChange:y,onObjectChange:v,onMouseDown:T,onMouseUp:E,onDraggingChanged:U=>{U||(o.value=null),x(U)}});return}};c.addEventListener("pointerdown",f),g=()=>c.removeEventListener("pointerdown",f)}),(0,re.onBeforeUnmount)(()=>{g?.()});let R=(0,re.computed)(()=>{if(e.mode!=="translate")return[];i.value;let f=l.value/je,{rotX:b,rotY:C}=m();return Yr.filter(M=>({x:e.showX,y:e.showY,z:e.showZ})[as(M.key)]).map(M=>{let D=h(M.key),I=ro(M.cssAxis,M.sign,b,C);return{spec:M,polygons:(0,Te.arrowPolygons)({axis:Xt[M.cssAxis],sign:M.sign,shaftLength:f,shaftHalfThickness:f*Ji,headLength:f*es,headHalfThickness:f*ts,color:oo(M.color,D),shaft:!I})}})}),A=(0,re.computed)(()=>{if(e.mode!=="translate")return[];i.value;let f=l.value/je,b={x:e.showX,y:e.showY,z:e.showZ},C=["x","y","z"],{rotX:M,rotY:D}=m(),I=f*rs;return $r.filter(L=>b[C[L.axisA]]&&b[C[L.axisB]]).map(L=>{let H=h(L.key),G=Xt[L.perpAxis],ne=(G+1)%3,K=(G+2)%3,U=Xt[ne],le=Xt[K],ce=ro(U,1,M,D)?-1:1,ge=ro(le,1,M,D)?-1:1;return{spec:L,polygons:(0,Te.planePolygons)({axis:G,size:f*os,offset:[ce*I,ge*I],color:oo(L.color,H)})}})}),z=(0,re.computed)(()=>{if(e.mode!=="rotate")return[];i.value;let b=l.value*ns/je*no;return jr.filter(C=>({x:e.showX,y:e.showY,z:e.showZ})[C.key]).map(C=>{let M=h(C.key);return{spec:C,polygons:(0,Te.ringQuadPolygons)({axis:Xt[C.cssAxis],outerRadius:b,color:oo(C.color,M)})}})}),k=(1-Nr)/no,O=(1+Nr)/no;function j(c){return f=>{if(!e.enabled)return;let b=a.value;if(!b)return;f.stopPropagation();let M=f.eventObject.element?.closest("[data-poly-transform-controls]");M&&(o.value=c.key,Xr({cssAxis:c.cssAxis,sign:c.sign,shaftLengthCss:l.value,wrapper:M,target:b,startClientX:f.nativeEvent.clientX,startClientY:f.nativeEvent.clientY,translationSnap:e.translationSnap,onChange:y,onObjectChange:v,onMouseDown:T,onMouseUp:E,onDraggingChanged:D=>{D||(o.value=null),x(D)}}))}}function $(c){return f=>{if(!e.enabled)return;let b=a.value;if(!b)return;f.stopPropagation();let M=f.eventObject.element?.closest("[data-poly-transform-controls]");M&&(o.value=c.key,Ur({axisA:c.axisA,axisB:c.axisB,probeDistanceCss:l.value,wrapper:M,target:b,startClientX:f.nativeEvent.clientX,startClientY:f.nativeEvent.clientY,translationSnap:e.translationSnap,onChange:y,onObjectChange:v,onMouseDown:T,onMouseUp:E,onDraggingChanged:D=>{D||(o.value=null),x(D)}}))}}function Y(c){return f=>{if(!e.enabled)return;let b=a.value;if(!b)return;let C=f.eventObject.element;f.stopPropagation();let M=C?.closest("[data-poly-transform-controls]");M&&(o.value=c.key,Wr({cssAxis:c.cssAxis,wrapper:M,target:b,startClientX:f.nativeEvent.clientX,startClientY:f.nativeEvent.clientY,rotationSnap:e.rotationSnap,onChange:y,onObjectChange:v,onMouseDown:T,onMouseUp:E,onDraggingChanged:D=>{D||(o.value=null),x(D)}}))}}function S(c){return{onPointerOver:()=>{n.value=c},onPointerOut:()=>{n.value===c&&(n.value=null)}}}return()=>{let c=a.value;if(!c)return null;let f=c.getPosition()??[0,0,0],b=ss(c.getPolygons()),C=f[1]*je+b[0],M=f[0]*je+b[1],D=f[2]*je+b[2],I={transform:`translate3d(${C}px, ${M}px, ${D}px)`,position:"absolute",transformStyle:"preserve-3d",zIndex:1e3},L=e.mode==="translate"?[...R.value.map(({spec:H,polygons:G})=>(0,re.h)(ue,{key:`arrow-${H.key}`,polygons:G,class:`polycss-transform-gizmo polycss-transform-arrow polycss-transform-arrow--${H.key}`,textureLighting:"baked",onPointerDown:j(H),...S(H.key)})),...A.value.map(({spec:H,polygons:G})=>(0,re.h)(ue,{key:`plane-${H.key}`,polygons:G,class:`polycss-transform-gizmo polycss-transform-plane polycss-transform-plane--${H.key}`,textureLighting:"baked",onPointerDown:$(H),...S(H.key)}))]:z.value.map(({spec:H,polygons:G})=>(0,re.h)(ue,{key:H.key,polygons:G,class:`polycss-transform-gizmo polycss-transform-ring polycss-transform-ring--${H.key}`,style:{"--ring-inner-ratio":k,"--ring-outer-ratio":O},textureLighting:"baked",onPointerDown:Y(H),...S(H.key)}));return(0,re.h)("div",{class:"polycss-transform-controls","data-poly-transform-controls":"","data-poly-mode":e.mode,"data-poly-space":e.space,style:I},L)}}});var $e=require("vue"),Zr=require("@layoutit/polycss-core");var cs={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 io(e,t){return{enabled:t.enabled??e.enabled,lookEnabled:t.lookEnabled??e.lookEnabled,moveEnabled:t.moveEnabled??e.moveEnabled,jumpEnabled:t.jumpEnabled??e.jumpEnabled,crouchEnabled:t.crouchEnabled??e.crouchEnabled,lookSensitivity:t.lookSensitivity??e.lookSensitivity,invertY:t.invertY??e.invertY,moveSpeed:t.moveSpeed??e.moveSpeed,jumpVelocity:t.jumpVelocity??e.jumpVelocity,gravity:t.gravity??e.gravity,eyeHeight:t.eyeHeight??e.eyeHeight,crouchHeight:t.crouchHeight??e.crouchHeight,groundZ:t.groundZ??e.groundZ,minPitch:t.minPitch??e.minPitch,maxPitch:t.maxPitch??e.maxPitch}}var Kr=new Set(["KeyW","ArrowUp"]),Qr=new Set(["KeyS","ArrowDown"]),Jr=new Set(["KeyA","ArrowLeft"]),ea=new Set(["KeyD","ArrowRight"]),ta=new Set(["Space"]),so=new Set(["ControlLeft","ControlRight"]);function Gr(e){return Kr.has(e)||Qr.has(e)||Jr.has(e)||ea.has(e)||ta.has(e)||so.has(e)}function ds(){return{change:[],start:[],end:[]}}function Ft(e,t){let n=[...e[t]];for(let o of n)try{o()}catch{}}var lo=(0,$e.defineComponent)({name:"PolyFirstPersonControls",props:{enabled:{type:Boolean,default:!0},lookEnabled:{type:Boolean,default:!0},moveEnabled:{type:Boolean,default:!0},jumpEnabled:{type:Boolean,default:!0},crouchEnabled:{type:Boolean,default:!0},lookSensitivity:{type:Number,default:.15},invertY:{type:Boolean,default:!1},moveSpeed:{type:Number,default:5},jumpVelocity:{type:Number,default:7},gravity:{type:Number,default:18},eyeHeight:{type:Number,default:1.7},crouchHeight:{type:Number,default:1},groundZ:{type:Number,default:0},minPitch:{type:Number,default:5},maxPitch:{type:Number,default:175}},emits:{change:e=>!0,"interaction-start":e=>!0,"interaction-end":e=>!0},setup(e,{emit:t,expose:n}){let o=(0,$e.inject)(ye,null);if(!o)return typeof console<"u"&&console.warn("[polycss] <PolyFirstPersonControls> must be used inside <PolyCamera>."),n({}),()=>null;let{store:r,cameraRef:a,cameraElRef:i,applyTransformDirect:u}=o,s=io(cs,e),d=[0,0,0],m=null,p=0,l=!1,h=!1,y=!1,v=new Set,x=0,T=0,E=ds();function w(c,f){let b=c*Math.PI/180,C=f*Math.PI/180;return[-Math.sin(b)*Math.cos(C),-Math.sin(b)*Math.sin(C),-Math.cos(b)]}function g(){let c=i.value,f=c?getComputedStyle(c).perspective:"",b=parseFloat(f);return(Number.isFinite(b)&&b>0?b:32e3)/Zr.BASE_TILE}function R(){let c=a.value.state,f=w(c.rotX??90,c.rotY??0),b=g();return[d[0]+f[0]*b,d[1]+f[1]*b,d[2]+f[2]*b]}function A(){let c=R(),f=a.value;f.update({target:c}),u(),r.updateCameraFromRef(f)}let z=.05;function k(c){if(m===null||l)return;let f=Math.min(z,p?(c-p)/1e3:.0167);if(p=c,s.enabled){let b=!1,C=a.value.state;if(s.moveEnabled){let L=0,H=0;for(let G of v)Kr.has(G)?L+=1:Qr.has(G)?L-=1:ea.has(G)?H+=1:Jr.has(G)&&(H-=1);if(L!==0||H!==0){let ne=(C.rotY??0)*Math.PI/180,K=-Math.cos(ne),U=-Math.sin(ne),le=-Math.sin(ne),ce=Math.cos(ne),ge=Math.hypot(L,H)||1,ie=s.moveSpeed*f;d[0]+=(K*L+le*H)/ge*ie,d[1]+=(U*L+ce*H)/ge*ie,b=!0}}let D=s.crouchEnabled&&(v.has("ControlLeft")||v.has("ControlRight"))?s.crouchHeight:s.eyeHeight;s.jumpEnabled&&(x!==0||T>0)?(x-=s.gravity*f,T+=x*f,T<=0&&(T=0,x=0)):s.jumpEnabled||(T=0,x=0);let I=s.groundZ+D+T;if(Math.abs(d[2]-I)>1e-4&&(d[2]=I,b=!0),b){let L=R(),H=a.value;H.update({target:L}),u(),r.updateCameraFromRef(H),Ft(E,"change");try{t("change",[d[0],d[1],d[2]])}catch{}}}m=requestAnimationFrame(k)}function O(){m!==null||l||(p=0,m=requestAnimationFrame(k))}function j(){m!==null&&(cancelAnimationFrame(m),m=null)}let $=null;function Y(){let c=i.value;if(!c)return;let f=c.ownerDocument??document,b=f.defaultView??globalThis,C=()=>{if(!(!s.enabled||!s.lookEnabled||l||h))try{c.requestPointerLock()}catch{}},M=()=>{let U=f.pointerLockElement===c;if(U!==h){if(h=U,U){y=!0,Ft(E,"start");try{t("interaction-start",[d[0],d[1],d[2]])}catch{}}else if(y){y=!1,Ft(E,"end");try{t("interaction-end",[d[0],d[1],d[2]])}catch{}}}},D=U=>{if(!h||l||!s.enabled||!s.lookEnabled)return;let le=U.movementX??0,ce=U.movementY??0;if(le===0&&ce===0)return;let ge=a.value,ie=ge.state,V=s.lookSensitivity,q=s.invertY?-1:1,X=(((ie.rotY??0)-le*V)%360+360)%360,_=(ie.rotX??90)-ce*V*q;_<s.minPitch?_=s.minPitch:_>s.maxPitch&&(_=s.maxPitch);let W=w(_,X),J=g(),he=[d[0]+W[0]*J,d[1]+W[1]*J,d[2]+W[2]*J];ge.update({rotX:_,rotY:X,target:he}),u(),r.updateCameraFromRef(ge),Ft(E,"change");try{t("change",[d[0],d[1],d[2]])}catch{}},I=U=>{if(!(!s.enabled||l)&&Gr(U.code)&&!(!h&&!s.moveEnabled)){if(ta.has(U.code)){if(!s.jumpEnabled)return;U.preventDefault(),!v.has(U.code)&&x===0&&T===0&&(x=s.jumpVelocity),v.add(U.code);return}so.has(U.code)&&!s.crouchEnabled||!s.moveEnabled&&!so.has(U.code)||(U.preventDefault(),v.add(U.code))}},L=U=>{Gr(U.code)&&v.delete(U.code)},H=()=>{v.clear()};c.addEventListener("click",C),f.addEventListener("pointerlockchange",M),f.addEventListener("mousemove",D),b.addEventListener("keydown",I),b.addEventListener("keyup",L),b.addEventListener("blur",H);let G=b.getComputedStyle(c).perspective,ne=parseFloat(G),K=Number.isFinite(ne)&&ne>0?ne:2e3;c.style.setProperty("--polycss-fpv-perspective",`${K}px`),c.classList.add("polycss-fpv-host"),$=()=>{if(c.removeEventListener("click",C),f.removeEventListener("pointerlockchange",M),f.removeEventListener("mousemove",D),b.removeEventListener("keydown",I),b.removeEventListener("keyup",L),b.removeEventListener("blur",H),c.style.cursor="",c.classList.remove("polycss-fpv-host"),c.style.removeProperty("--polycss-fpv-perspective"),v.clear(),h)try{f.exitPointerLock()}catch{}}}n({update(c){s=io(s,c);let f=i.value;f&&!l&&(f.style.cursor=s.lookEnabled?"crosshair":"")},resume(){if(!l)return;l=!1;let c=i.value;c&&(c.style.cursor=s.lookEnabled?"crosshair":""),O()},pause(){if(l)return;l=!0,j();let c=i.value;if(c&&(c.style.cursor=""),y){y=!1,Ft(E,"end");try{t("interaction-end",[d[0],d[1],d[2]])}catch{}}},destroy(){l=!0,j()},lock(){if(!s.enabled||!s.lookEnabled||l)return;let c=i.value;try{c?.requestPointerLock()}catch{}},unlock(){if(h){let c=i.value;try{c?.ownerDocument?.exitPointerLock()}catch{}}},isLocked(){return h},getOrigin(){return[d[0],d[1],d[2]]},setOrigin(c){d[0]=c[0],d[1]=c[1],d[2]=c[2],A(),Ft(E,"change");try{t("change",[d[0],d[1],d[2]])}catch{}},addEventListener(c,f){let b=E[c];b.includes(f)||b.push(f)},removeEventListener(c,f){let b=E[c],C=b.indexOf(f);C>=0&&b.splice(C,1)},hasEventListener(c,f){return E[c].includes(f)}}),(0,$e.onMounted)(()=>{let c=i.value;if(!c)return;l=!1,h=!1,y=!1,v.clear(),x=0,T=0;let b=a.value.state.target??[0,0,0];d[0]=b[0],d[1]=b[1],d[2]=s.groundZ+s.eyeHeight,A(),c.style.cursor=s.lookEnabled?"crosshair":"",Y(),O()}),(0,$e.onBeforeUnmount)(()=>{l=!0,j(),$?.(),$=null});let S=["enabled","lookEnabled","moveEnabled","jumpEnabled","crouchEnabled","lookSensitivity","invertY","moveSpeed","jumpVelocity","gravity","eyeHeight","crouchHeight","groundZ","minPitch","maxPitch"];for(let c of S)(0,$e.watch)(()=>e[c],()=>{s=io(s,e);let f=i.value;f&&!l&&(f.style.cursor=s.lookEnabled?"crosshair":"")});return()=>null}});var ve=require("vue");var Vt=Symbol("polycss.selection"),uo=(0,ve.defineComponent)({name:"PolySelect",props:{multiple:{type:Boolean,default:!1},clearOnMiss:{type:Boolean,default:!0},filter:{type:Function,default:void 0}},emits:{change:e=>!0,pointerMissed:e=>!0},setup(e,{emit:t,slots:n}){let o=(0,ve.reactive)({selected:[]}),r=(0,ve.computed)(()=>o.selected);function a(m){let p=e.filter?e.filter(m):m;o.selected=p,t("change",p)}let i={get selected(){return o.selected},set:m=>a(m),add:m=>{e.multiple?o.selected.includes(m)||a([...o.selected,m]):a([m])},remove:m=>{o.selected.includes(m)&&a(o.selected.filter(p=>p!==m))},toggle:m=>{o.selected.includes(m)?a(o.selected.filter(p=>p!==m)):e.multiple?a([...o.selected,m]):a([m])},clear:()=>a([]),has:m=>o.selected.includes(m)};(0,ve.provide)(Vt,{selected:r,api:i});let u=(0,ve.inject)(ye,void 0),s=(m,p)=>nn(m,p,l=>!l.closest("[data-poly-transform-controls]")),d=null;return(0,ve.onMounted)(()=>{let m=u?.cameraElRef.value;if(!m)return;let p=l=>{if(l.target?.closest("[data-poly-transform-controls]"))return;let y=Ct(l.target)??s(l.clientX,l.clientY);if(!y){t("pointerMissed",l),e.clearOnMiss&&a([]);return}e.multiple&&(l.shiftKey||l.metaKey||l.ctrlKey)?i.toggle(y):o.selected.length===1&&o.selected[0]===y?a([]):a([y])};m.addEventListener("click",p),d=()=>m.removeEventListener("click",p)}),(0,ve.onBeforeUnmount)(()=>{d?.()}),()=>(0,ve.h)("div",{style:{display:"contents"},"data-poly-select":""},n.default?.())}});function co(){let e=(0,ve.inject)(Vt,void 0);return e?e.selected:(0,ve.ref)([])}function mo(){let e=(0,ve.inject)(Vt,void 0);if(!e)throw new Error("polycss: usePolySelectionApi must be used inside <PolySelect>.");return e.api}var _t=require("vue"),na=require("@layoutit/polycss-core");var po=(0,_t.defineComponent)({name:"PolyAxesHelper",props:{size:{type:Number,default:void 0},thickness:{type:Number,default:void 0},negative:{type:Boolean,default:void 0},xColor:{type:String,default:void 0},yColor:{type:String,default:void 0},zColor:{type:String,default:void 0}},setup(e){let t=(0,_t.computed)(()=>(0,na.axesHelperPolygons)({size:e.size,thickness:e.thickness,negative:e.negative,xColor:e.xColor,yColor:e.yColor,zColor:e.zColor}));return()=>(0,_t.h)(ue,{polygons:t.value,merge:!1})}});var at=require("vue"),oa=require("@layoutit/polycss-core");var yo=(0,at.defineComponent)({name:"PolyDirectionalLightHelper",props:{light:{type:Object,required:!0},target:{type:Array,default:void 0},distance:{type:Number,default:5},size:{type:Number,default:.35},color:{type:String,default:void 0}},setup(e){let t=(0,at.computed)(()=>e.color??e.light.color??"#ffd54a"),n=(0,at.computed)(()=>(0,oa.octahedronPolygons)({center:[0,0,0],size:e.size,color:t.value})),o=(0,at.computed)(()=>{let r=e.light.direction,a=r[0],i=r[1],u=r[2],s=Math.hypot(a,i,u)||1,d=e.target?.[0]??0,m=e.target?.[1]??0,p=e.target?.[2]??0;return[d+a/s*e.distance,m+i/s*e.distance,p+u/s*e.distance]});return()=>(0,at.h)(ue,{polygons:n.value,position:o.value,merge:!1})}});var fo={quad:0,clippedSolid:0,atlas:0,stableTriangle:0},ms={polygonCount:0,mountedPolygonLeafCount:0,shadowLeafCount:0,surfaceLeafCounts:fo,bucketCount:0};function ps(e){return typeof e=="number"?{polygonCount:e}:e??{}}function Bt(e,t){return e.querySelectorAll(t).length}function ys(e,t){let n=e;return typeof n.matches=="function"&&n.matches(t)}function fs(e,t){if(!t)return[e];let n=[];return ys(e,t)&&n.push(e),n.push(...Array.from(e.querySelectorAll(t))),n}function ra(e,t){let n=ps(t);if(!e)return{...ms,surfaceLeafCounts:{...fo},polygonCount:n.polygonCount??0};let o=fs(e,n.scopeSelector),r={...fo},a=0,i=0;for(let s of o)r.quad+=Bt(s,"b"),r.clippedSolid+=Bt(s,"i"),r.atlas+=Bt(s,"s"),r.stableTriangle+=Bt(s,"u"),a+=Bt(s,"q, .polycss-shadow-svg"),i+=Bt(s,".polycss-bucket");let u=r.quad+r.clippedSolid+r.atlas+r.stableTriangle;return{polygonCount:n.polygonCount??u,mountedPolygonLeafCount:u,shadowLeafCount:a,surfaceLeafCounts:r,bucketCount:i}}var ke=require("vue"),aa=require("@layoutit/polycss-core");function Et(e){return e&&typeof e=="object"&&"value"in e?e.value:e}function ia(e,t,n){let o=(0,ke.ref)(null),r=null,a=null,i=null,u=(0,ke.ref)(0);function s(){return n==null?o.value:Et(n)??o.value}function d(){a!==null&&(cancelAnimationFrame(a),a=null),i=null}function m(){d(),r&&(r.stopAllAction(),r.uncacheRoot(),r=null,u.value++)}function p(){if(a!==null)return;function E(w){if(i===null){i=w,a=requestAnimationFrame(E);return}let g=(w-i)/1e3;i=w,r?.update(g),a=requestAnimationFrame(E)}a=requestAnimationFrame(E)}function l(){m();let E=Et(e),w=Et(t);if(!E||E.length===0||!w)return;let g=s();g&&(r=(0,aa.createPolyAnimationMixer)(g,w),u.value++,p())}let h=(0,ke.watch)(()=>{let E=Et(e),w=Et(t),g=n!=null?Et(n):o.value;return{c:E,ctrl:w,r:g}},()=>l(),{immediate:!0,deep:!1});(0,ke.onUnmounted)(()=>{h(),m()});let y=(0,ke.computed)(()=>Et(e)??[]),v=(0,ke.computed)(()=>y.value.map(E=>E.name)),x=(0,ke.computed)(()=>(u.value,r)),T=(0,ke.computed)(()=>{u.value;let E=y.value,w={};for(let g of E)Object.defineProperty(w,g.name,{enumerable:!0,get(){if(!r)return null;try{return r.clipAction(g.name)}catch{return null}}});return w});return{ref:o,mixer:x,clips:y,names:v,actions:T}}var P=require("@layoutit/polycss-core");0&&(module.exports={BASE_TILE,CAMERA_BACKFACE_CULL_EPS,DEFAULT_CAMERA_STATE,DEFAULT_PROJECTION,DEFAULT_SEAM_FACET_SPLIT_OPTIONS,DEFAULT_SEAM_OVERLAP_OPTIONS,LoopOnce,LoopPingPong,LoopRepeat,Poly,PolyAxesHelper,PolyBox,PolyCamera,PolyCameraContextKey,PolyCone,PolyCylinder,PolyDirectionalLightHelper,PolyDodecahedron,PolyFirstPersonControls,PolyGround,PolyIcosahedron,PolyIframe,PolyMapControls,PolyMesh,PolyOctahedron,PolyOrbitControls,PolyOrthographicCamera,PolyPerspectiveCamera,PolyPlane,PolyRing,PolyScene,PolySelect,PolySelectionContextKey,PolySphere,PolyTetrahedron,PolyTorus,PolyTransformControls,VOXEL_CAMERA_CULL_AXIS_EPS,VOXEL_CAMERA_CULL_NORMAL_LIMIT,arrowPolygons,axesHelperPolygons,bakeSolidTextureSampledPolygons,bakeSolidTextureSamples,boxPolygons,buildPolyMeshTransform,buildSceneContext,cameraCullNormalGroups,cameraCullNormalGroupsFromPolygons,cameraCullNormalKey,cameraCullVisibleSignature,cameraFacingDepth,clampChannel,collectPolyRenderStats,computeSceneBbox,computeShapeLighting,computeTexturePaintMetrics,conePolygons,coverPlanarPolygons,createIsometricCamera,createPolyAnimationMixer,cullInteriorPolygons,cylinderPolygons,dodecahedronPolygons,findMeshUnderPoint,findPolyMeshHandle,formatColor,icosahedronPolygons,injectPolyBaseStyles,inverseRotateVec3,isAxisAlignedSurfaceNormal,isVoxelCameraCullableNormalGroups,loadMesh,mergePolygons,normalFacesCamera,normalizeInvertMultiplier,normalizePolygons,octahedronPolygons,optimizeAnimatedMeshPolygons,optimizeMeshParseResult,optimizeMeshPolygons,parseColor,parseGltf,parseHexColor,parseMtl,parseObj,parsePureColor,parseRgbColor,parseStl,parseVox,planePolygons,pointInMeshElement,polyCssDistanceToWorld,polyCssPositionToWorld,polygonCssSurfaceNormal,polygonFaces,polygonFacesCamera,repairMeshSeams,ringPolygons,rotateVec3,seamFacetSplitPolygons,seamFacetSplitReport,seamOverlapDiagnostics,seamOverlapPolygons,seamOverlapReport,shadeColor,simplifyTriangleMeshPolygons,tetrahedronPolygons,torusPolygons,usePolyAnimation,usePolyCamera,usePolyMaterial,usePolyMesh,usePolySceneContext,usePolySelect,usePolySelectionApi,worldDirectionToPolyCss,worldDistanceToPolyCss,worldPositionToPolyCss});