@layoutit/polycss-vue 0.2.6 → 0.2.7

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 vn=Object.defineProperty;var Oa=Object.getOwnPropertyDescriptor;var ka=Object.getOwnPropertyNames;var Da=Object.prototype.hasOwnProperty;var Ia=(e,t)=>{for(var n in t)vn(e,n,{get:t[n],enumerable:!0})},Fa=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of ka(t))!Da.call(e,r)&&r!==n&&vn(e,r,{get:()=>t[r],enumerable:!(o=Oa(t,r))||o.enumerable});return e};var Va=e=>Fa(vn({},"__esModule",{value:!0}),e);var Bs={};Ia(Bs,{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:()=>Jn,PolyAxesHelper:()=>Eo,PolyBox:()=>eo,PolyCamera:()=>It,PolyCameraContextKey:()=>ye,PolyCone:()=>uo,PolyCylinder:()=>lo,PolyDirectionalLightHelper:()=>Ao,PolyDodecahedron:()=>io,PolyFirstPersonControls:()=>So,PolyGround:()=>Kn,PolyIcosahedron:()=>ao,PolyIframe:()=>Zn,PolyMapControls:()=>fo,PolyMesh:()=>ue,PolyOctahedron:()=>oo,PolyOrbitControls:()=>po,PolyOrthographicCamera:()=>It,PolyPerspectiveCamera:()=>Tn,PolyPlane:()=>to,PolyRing:()=>no,PolyScene:()=>Xn,PolySelect:()=>Co,PolySelectionContextKey:()=>jt,PolySphere:()=>so,PolyTetrahedron:()=>ro,PolyTorus:()=>co,PolyTransformControls:()=>xo,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,buildPolyCameraSceneTransform:()=>p.buildPolyCameraSceneTransform,buildPolyMeshTransform:()=>p.buildPolyMeshTransform,buildPolySceneTransform:()=>p.buildPolySceneTransform,buildSceneContext:()=>p.buildSceneContext,cameraCullNormalGroups:()=>p.cameraCullNormalGroups,cameraCullNormalGroupsFromPolygons:()=>p.cameraCullNormalGroupsFromPolygons,cameraCullNormalKey:()=>p.cameraCullNormalKey,cameraCullVisibleSignature:()=>p.cameraCullVisibleSignature,cameraFacingDepth:()=>p.cameraFacingDepth,capturePolyCameraSnapshot:()=>p.capturePolyCameraSnapshot,clampChannel:()=>p.clampChannel,collectPolyRenderStats:()=>Ca,collectPolyTextureReadiness:()=>ko,computeSceneBbox:()=>p.computeSceneBbox,computeShapeLighting:()=>p.computeShapeLighting,computeTexturePaintMetrics:()=>p.computeTexturePaintMetrics,conePolygons:()=>p.conePolygons,coverPlanarPolygons:()=>p.coverPlanarPolygons,createIsometricCamera:()=>p.createIsometricCamera,createPolyAnimationMixer:()=>p.createPolyAnimationMixer,cssDistanceToWorld:()=>p.cssDistanceToWorld,cssPositionToWorld:()=>p.cssPositionToWorld,cullInteriorPolygons:()=>p.cullInteriorPolygons,cylinderPolygons:()=>p.cylinderPolygons,dodecahedronPolygons:()=>p.dodecahedronPolygons,findMeshUnderPoint:()=>cn,findPolyMeshHandle:()=>Lt,formatColor:()=>p.formatColor,icosahedronPolygons:()=>p.icosahedronPolygons,injectPolyBaseStyles:()=>qt,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:()=>Rt,polyCameraTargetToCss:()=>p.polyCameraTargetToCss,polyCssDistanceToWorld:()=>p.polyCssDistanceToWorld,polyCssPositionToWorld:()=>p.polyCssPositionToWorld,polygonCssSurfaceNormal:()=>p.polygonCssSurfaceNormal,polygonFaces:()=>p.polygonFaces,polygonFacesCamera:()=>p.polygonFacesCamera,queryPolyLeaves:()=>xn,repairMeshSeams:()=>p.repairMeshSeams,resolvePolyCameraAppliedPerspectiveStyle:()=>p.resolvePolyCameraAppliedPerspectiveStyle,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:()=>Ma,usePolyCamera:()=>ft,usePolyMaterial:()=>Hr,usePolyMesh:()=>Qt,usePolySceneContext:()=>Ft,usePolySelect:()=>To,usePolySelectionApi:()=>Mo,worldDirectionToCss:()=>p.worldDirectionToCss,worldDirectionToPolyCss:()=>p.worldDirectionToPolyCss,worldDirectionalLightToCss:()=>p.worldDirectionalLightToCss,worldDirectionalLightToPolyCss:()=>p.worldDirectionalLightToPolyCss,worldDistanceToCss:()=>p.worldDistanceToCss,worldDistanceToPolyCss:()=>p.worldDistanceToPolyCss,worldPositionToCss:()=>p.worldPositionToCss,worldPositionToPolyCss:()=>p.worldPositionToPolyCss});module.exports=Va(Bs);var lt=require("vue");var ot=require("vue"),Dt=require("@layoutit/polycss-core");function Sn(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 Cn(e,t,n,o){if(!e)return;let r=(0,Dt.capturePolyCameraSnapshot)(t,{projection:n,perspectiveStyle:o});e.dataset.polycssCameraProjection=r.projection,e.dataset.polycssCameraPerspective=r.perspectiveStyle,e.dataset.polycssCameraAppliedPerspective=r.appliedPerspectiveStyle,e.dataset.polycssCameraZoom=String(r.state.zoom),e.dataset.polycssCameraDistance=String(r.state.distance),e.dataset.polycssCameraRotX=String(r.state.rotX),e.dataset.polycssCameraRotY=String(r.state.rotY),e.dataset.polycssCameraTarget=r.state.target.join(",")}function ft(e){let t=(0,Dt.createIsometricCamera)({zoom:e.value.zoom,target:e.value.target,rotX:e.value.rotX,rotY:e.value.rotY,distance:e.value.distance}),n=(0,ot.shallowRef)(t),o=(0,ot.ref)(null),r=(0,ot.ref)(null),a=(0,ot.ref)([0,0,0]),i=Sn(t.state);(0,ot.watch)(()=>({zoom:e.value.zoom,target:e.value.target,rotX:e.value.rotX,rotY:e.value.rotY,distance:e.value.distance,projection:e.value.projection,perspectiveStyle:e.value.perspectiveStyle}),(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),l(),i.updateCameraFromRef(t),i.notifyAll()),Cn(r.value,t,e.value.projection,e.value.perspectiveStyle)}),(0,ot.watch)(r,s=>Cn(s,t,e.value.projection,e.value.perspectiveStyle),{flush:"post"});function l(){let s=o.value;s&&(s.style.transform=(0,Dt.buildPolyCameraSceneTransform)(t.state,{autoCenterOffset:a.value}),Cn(r.value,t,e.value.projection,e.value.perspectiveStyle))}return{store:i,cameraRef:n,sceneElRef:o,cameraElRef:r,autoCenterOffset:a,applyTransformDirect:l}}var ye=Symbol("polycss-camera");var It=(0,lt.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,lt.computed)(()=>({zoom:e.zoom,target:e.target,rotX:e.rotX,rotY:e.rotY,distance:e.distance,projection:"orthographic",perspectiveStyle:"none"})),{store:o,cameraRef:r,sceneElRef:a,cameraElRef:i,autoCenterOffset:l,applyTransformDirect:s}=ft(n);return(0,lt.provide)(ye,{store:o,cameraRef:r,sceneElRef:a,cameraElRef:i,autoCenterOffset:l,applyTransformDirect:s}),()=>(0,lt.h)("div",{ref:i,class:`polycss-camera${e.class?` ${e.class}`:""}`,style:{perspective:"1000000px"},"data-polycss-camera-projection":"orthographic","data-polycss-camera-perspective":"none","data-polycss-camera-applied-perspective":"1000000px","data-polycss-camera-zoom":r.value.state.zoom,"data-polycss-camera-distance":r.value.state.distance,"data-polycss-camera-rot-x":r.value.state.rotX,"data-polycss-camera-rot-y":r.value.state.rotY,"data-polycss-camera-target":r.value.state.target.join(",")},t.default?.())}});var ut=require("vue");var Io=32e3,Tn=(0,ut.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,ut.computed)(()=>({zoom:e.zoom,target:e.target,rotX:e.rotX,rotY:e.rotY,distance:e.distance,projection:"perspective",perspectiveStyle:`${typeof e.perspective=="number"?e.perspective:Io}px`})),{store:o,cameraRef:r,sceneElRef:a,cameraElRef:i,autoCenterOffset:l,applyTransformDirect:s}=ft(n);return(0,ut.provide)(ye,{store:o,cameraRef:r,sceneElRef:a,cameraElRef:i,autoCenterOffset:l,applyTransformDirect:s}),()=>{let d=`${typeof e.perspective=="number"?e.perspective:Io}px`;return(0,ut.h)("div",{ref:i,class:`polycss-camera${e.class?` ${e.class}`:""}`,style:{perspective:d},"data-polycss-camera-projection":"perspective","data-polycss-camera-perspective":d,"data-polycss-camera-applied-perspective":d,"data-polycss-camera-zoom":r.value.state.zoom,"data-polycss-camera-distance":r.value.state.distance,"data-polycss-camera-rot-x":r.value.state.rotX,"data-polycss-camera-rot-y":r.value.state.rotY,"data-polycss-camera-target":r.value.state.target.join(",")},t.default?.())}}});var G=require("vue"),Ze=require("@layoutit/polycss-core");var Fo=require("vue"),en=require("@layoutit/polycss-core");function Ft(e,t){return(0,Fo.computed)(()=>{let{directionalLight:n}=t.value,o=(0,en.buildSceneContext)({polygons:e.value});return{polygons:(0,en.mergePolygons)(o.context.polygons),sceneBbox:o.context.sceneBbox}})}var Vo="polycss-styles";function qt(e=typeof document<"u"?document:null){if(!e||e.getElementById(Vo))return;let t=e.createElement("style");t.id=Vo,t.textContent=za,e.head.appendChild(t)}var za=`
1
+ "use strict";var Tn=Object.defineProperty;var Oa=Object.getOwnPropertyDescriptor;var ka=Object.getOwnPropertyNames;var Da=Object.prototype.hasOwnProperty;var Ia=(e,t)=>{for(var n in t)Tn(e,n,{get:t[n],enumerable:!0})},Fa=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of ka(t))!Da.call(e,r)&&r!==n&&Tn(e,r,{get:()=>t[r],enumerable:!(o=Oa(t,r))||o.enumerable});return e};var Va=e=>Fa(Tn({},"__esModule",{value:!0}),e);var Bs={};Ia(Bs,{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:()=>no,PolyAxesHelper:()=>Ro,PolyBox:()=>oo,PolyCamera:()=>Ht,PolyCameraContextKey:()=>he,PolyCone:()=>po,PolyCylinder:()=>mo,PolyDirectionalLightHelper:()=>wo,PolyDodecahedron:()=>uo,PolyFirstPersonControls:()=>Mo,PolyGround:()=>eo,PolyIcosahedron:()=>lo,PolyIframe:()=>Jn,PolyMapControls:()=>Po,PolyMesh:()=>pe,PolyOctahedron:()=>io,PolyOrbitControls:()=>go,PolyOrthographicCamera:()=>Ht,PolyPerspectiveCamera:()=>An,PolyPlane:()=>ro,PolyRing:()=>ao,PolyScene:()=>Wn,PolySelect:()=>Eo,PolySelectionContextKey:()=>qt,PolySphere:()=>co,PolyTetrahedron:()=>so,PolyTorus:()=>yo,PolyTransformControls:()=>So,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,buildPolyCameraSceneTransform:()=>p.buildPolyCameraSceneTransform,buildPolyMeshTransform:()=>p.buildPolyMeshTransform,buildPolySceneTransform:()=>p.buildPolySceneTransform,buildSceneContext:()=>p.buildSceneContext,cameraCullNormalGroups:()=>p.cameraCullNormalGroups,cameraCullNormalGroupsFromPolygons:()=>p.cameraCullNormalGroupsFromPolygons,cameraCullNormalKey:()=>p.cameraCullNormalKey,cameraCullVisibleSignature:()=>p.cameraCullVisibleSignature,cameraFacingDepth:()=>p.cameraFacingDepth,capturePolyCameraSnapshot:()=>p.capturePolyCameraSnapshot,clampChannel:()=>p.clampChannel,collectPolyRenderStats:()=>Ea,collectPolyTextureReadiness:()=>Fo,computeSceneBbox:()=>p.computeSceneBbox,computeShapeLighting:()=>p.computeShapeLighting,computeTexturePaintMetrics:()=>p.computeTexturePaintMetrics,conePolygons:()=>p.conePolygons,coverPlanarPolygons:()=>p.coverPlanarPolygons,createIsometricCamera:()=>p.createIsometricCamera,createPolyAnimationMixer:()=>p.createPolyAnimationMixer,cssDistanceToWorld:()=>p.cssDistanceToWorld,cssPositionToWorld:()=>p.cssPositionToWorld,cullInteriorPolygons:()=>p.cullInteriorPolygons,cylinderPolygons:()=>p.cylinderPolygons,dodecahedronPolygons:()=>p.dodecahedronPolygons,findMeshUnderPoint:()=>yn,findPolyMeshHandle:()=>Ft,formatColor:()=>p.formatColor,icosahedronPolygons:()=>p.icosahedronPolygons,injectPolyBaseStyles:()=>Kt,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:()=>Vt,polyCameraTargetToCss:()=>p.polyCameraTargetToCss,polyCssDistanceToWorld:()=>p.polyCssDistanceToWorld,polyCssPositionToWorld:()=>p.polyCssPositionToWorld,polygonCssSurfaceNormal:()=>p.polygonCssSurfaceNormal,polygonFaces:()=>p.polygonFaces,polygonFacesCamera:()=>p.polygonFacesCamera,queryPolyLeaves:()=>Cn,repairMeshSeams:()=>p.repairMeshSeams,resolvePolyCameraAppliedPerspectiveStyle:()=>p.resolvePolyCameraAppliedPerspectiveStyle,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:()=>La,usePolyCamera:()=>St,usePolyMaterial:()=>Yr,usePolyMesh:()=>tn,usePolySceneContext:()=>Nt,usePolySelect:()=>Ao,usePolySelectionApi:()=>Lo,worldDirectionToCss:()=>p.worldDirectionToCss,worldDirectionToPolyCss:()=>p.worldDirectionToPolyCss,worldDirectionalLightToCss:()=>p.worldDirectionalLightToCss,worldDirectionalLightToPolyCss:()=>p.worldDirectionalLightToPolyCss,worldDistanceToCss:()=>p.worldDistanceToCss,worldDistanceToPolyCss:()=>p.worldDistanceToPolyCss,worldPositionToCss:()=>p.worldPositionToCss,worldPositionToPolyCss:()=>p.worldPositionToPolyCss});module.exports=Va(Bs);var gt=require("vue");var st=require("vue"),_t=require("@layoutit/polycss-core");function Mn(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 En(e,t,n,o){if(!e)return;let r=(0,_t.capturePolyCameraSnapshot)(t,{projection:n,perspectiveStyle:o});e.dataset.polycssCameraProjection=r.projection,e.dataset.polycssCameraPerspective=r.perspectiveStyle,e.dataset.polycssCameraAppliedPerspective=r.appliedPerspectiveStyle,e.dataset.polycssCameraZoom=String(r.state.zoom),e.dataset.polycssCameraDistance=String(r.state.distance),e.dataset.polycssCameraRotX=String(r.state.rotX),e.dataset.polycssCameraRotY=String(r.state.rotY),e.dataset.polycssCameraTarget=r.state.target.join(",")}function St(e){let t=(0,_t.createIsometricCamera)({zoom:e.value.zoom,target:e.value.target,rotX:e.value.rotX,rotY:e.value.rotY,distance:e.value.distance}),n=(0,st.shallowRef)(t),o=(0,st.ref)(null),r=(0,st.ref)(null),a=(0,st.ref)([0,0,0]),i=Mn(t.state);(0,st.watch)(()=>({zoom:e.value.zoom,target:e.value.target,rotX:e.value.rotX,rotY:e.value.rotY,distance:e.value.distance,projection:e.value.projection,perspectiveStyle:e.value.perspectiveStyle}),(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),l(),i.updateCameraFromRef(t),i.notifyAll()),En(r.value,t,e.value.projection,e.value.perspectiveStyle)}),(0,st.watch)(r,s=>En(s,t,e.value.projection,e.value.perspectiveStyle),{flush:"post"});function l(){let s=o.value;s&&(s.style.transform=(0,_t.buildPolyCameraSceneTransform)(t.state,{autoCenterOffset:a.value}),En(r.value,t,e.value.projection,e.value.perspectiveStyle))}return{store:i,cameraRef:n,sceneElRef:o,cameraElRef:r,autoCenterOffset:a,applyTransformDirect:l}}var he=Symbol("polycss-camera");var Ht=(0,gt.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,gt.computed)(()=>({zoom:e.zoom,target:e.target,rotX:e.rotX,rotY:e.rotY,distance:e.distance,projection:"orthographic",perspectiveStyle:"none"})),{store:o,cameraRef:r,sceneElRef:a,cameraElRef:i,autoCenterOffset:l,applyTransformDirect:s}=St(n);return(0,gt.provide)(he,{store:o,cameraRef:r,sceneElRef:a,cameraElRef:i,autoCenterOffset:l,applyTransformDirect:s}),()=>(0,gt.h)("div",{ref:i,class:`polycss-camera${e.class?` ${e.class}`:""}`,style:{perspective:"1000000px"},"data-polycss-camera-projection":"orthographic","data-polycss-camera-perspective":"none","data-polycss-camera-applied-perspective":"1000000px","data-polycss-camera-zoom":r.value.state.zoom,"data-polycss-camera-distance":r.value.state.distance,"data-polycss-camera-rot-x":r.value.state.rotX,"data-polycss-camera-rot-y":r.value.state.rotY,"data-polycss-camera-target":r.value.state.target.join(",")},t.default?.())}});var ht=require("vue");var zo=32e3,An=(0,ht.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,ht.computed)(()=>({zoom:e.zoom,target:e.target,rotX:e.rotX,rotY:e.rotY,distance:e.distance,projection:"perspective",perspectiveStyle:`${typeof e.perspective=="number"?e.perspective:zo}px`})),{store:o,cameraRef:r,sceneElRef:a,cameraElRef:i,autoCenterOffset:l,applyTransformDirect:s}=St(n);return(0,ht.provide)(he,{store:o,cameraRef:r,sceneElRef:a,cameraElRef:i,autoCenterOffset:l,applyTransformDirect:s}),()=>{let d=`${typeof e.perspective=="number"?e.perspective:zo}px`;return(0,ht.h)("div",{ref:i,class:`polycss-camera${e.class?` ${e.class}`:""}`,style:{perspective:d},"data-polycss-camera-projection":"perspective","data-polycss-camera-perspective":d,"data-polycss-camera-applied-perspective":d,"data-polycss-camera-zoom":r.value.state.zoom,"data-polycss-camera-distance":r.value.state.distance,"data-polycss-camera-rot-x":r.value.state.rotX,"data-polycss-camera-rot-y":r.value.state.rotY,"data-polycss-camera-target":r.value.state.target.join(",")},t.default?.())}}});var G=require("vue"),et=require("@layoutit/polycss-core");var Bo=require("vue"),rn=require("@layoutit/polycss-core");function Nt(e,t){return(0,Bo.computed)(()=>{let{directionalLight:n}=t.value,o=(0,rn.buildSceneContext)({polygons:e.value});return{polygons:(0,rn.mergePolygons)(o.context.polygons),sceneBbox:o.context.sceneBbox}})}var _o="polycss-styles";function Kt(e=typeof document<"u"?document:null){if(!e||e.getElementById(_o))return;let t=e.createElement("style");t.id=_o,t.textContent=za,e.head.appendChild(t)}var za=`
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 Ba=require("@layoutit/polycss-core");var zo=require("vue"),Mn=Symbol("polycss/scene-context");function Bo(){return(0,zo.inject)(Mn,null)}var le=require("@layoutit/polycss-core");var rt=require("@layoutit/polycss-core");function En(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 An(e){if(_o(e))return!0;let n=(e.defaultView??(typeof window<"u"?window:void 0))?.navigator?.userAgent??"";return n?!(0,rt.safariCssProjectiveUnsupported)(n):!0}function tn(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 _o(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 Vt(e){let n=(e.defaultView??(typeof window<"u"?window:void 0))?.navigator?.userAgent??"";return n?!(0,rt.safariCssProjectiveUnsupported)(n):!0}function Ho(e,t,n,o,r){let a=new Set(o?.disable??[]);return(0,rt.getSolidPaintDefaultsForPlansCore)(e,t,a,{solidTriangleSupported:An(n),projectiveQuadSupported:Vt(n),cornerShapeSupported:tn(n),borderShapeSupported:En(n)},rt.parseHex,rt.rgbKey,r)}function Ln(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 Ho(e,t,r,a)}function gt(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 En(t)}function ht(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 An(t)}var No=require("@layoutit/polycss-core");function Rn(e,t,n,o,r,a,i){let l=o??(typeof document<"u"?document:null);return(0,No.filterAtlasPlans)(e,t,n,{solidTriangleSupported:ht(o),projectiveQuadSupported:o?Vt(o):!0,borderShapeSupported:gt(o),cornerShapeSupported:l?tn(l):!1,textureBackend:r,textureImageRendering:a,textureProjection:i})}var jo=require("@layoutit/polycss-core");function Yo(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 wn(e,t,n,o){return(0,jo.packTextureAtlasPlansWithScaleCore)(e,t,Yo(n),o)}var Xe=require("@layoutit/polycss-core"),Pt=new Map;function qo(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 Oe(e,t,n=1,o=0,r=0,a=1,i=0,l=0){e.setTransform(n*t,o*t,r*t,a*t,i*t,l*t)}function On(e){let t=e/255;return t<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function kn(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 Go(e,t,n,o,r,a,i){let l=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)),g=e.getImageData(l,s,d,m),u=g.data,h=a.r,f=a.g,P=a.b;for(let b=0;b<u.length;b+=4)u[b+3]!==0&&(u[b]=kn(On(u[b])*h),u[b+1]=kn(On(u[b+1])*f),u[b+2]=kn(On(u[b+2])*P));e.putImageData(g,l,s)}function Zo(e,t,n,o,r,a,i){let l=t.naturalWidth||t.width||1,s=t.naturalHeight||t.height||1,d=Math.max(r/l,a/s),m=l*d,g=s*d;Oe(e,i),e.drawImage(t,n+(r-m)/2,o+(a-g)/2,m,g)}function zt(e,t){return Math.max(0,Math.min(t,e))}function Dn(e,t,n,o,r,a,i,l){let s=t.naturalWidth||t.width||1,d=t.naturalHeight||t.height||1,m=zt(Math.min(n.minU,n.maxU)*s,s),g=zt(Math.max(n.minU,n.maxU)*s,s),u=zt(Math.min(n.minV,n.maxV)*d,d),h=zt(Math.max(n.minV,n.maxV)*d,d),f=Math.floor(m),P=Math.floor(u),b=Math.ceil(g)-f,A=Math.ceil(h)-P;b<1&&(f=Math.floor(zt((n.minU+n.maxU)/2*s,s-1)),b=1),A<1&&(P=Math.floor(zt((n.minV+n.maxV)/2*d,d-1)),A=1),f=Math.max(0,Math.min(s-1,f)),P=Math.max(0,Math.min(d-1,P)),b=Math.max(1,Math.min(s-f,b)),A=Math.max(1,Math.min(d-P,A)),Oe(e,l),e.drawImage(t,f,P,b,A,o,r,a,i)}function Ko(e){return e==="repeat"||e==="mirrored-repeat"}function Xo(e,t){return Ko(e)?Math.floor(t):0}function $o(e,t){return Ko(e)?Math.ceil(t)-1:0}function Uo(e,t){return e==="mirrored-repeat"&&Math.abs(t%2)===1}function Wo(e,t,n,o,r,a,i){let l=r?Xo(a,r.minU):0,s=r?$o(a,r.maxU):0,d=r?Xo(i,r.minV):0,m=r?$o(i,r.maxV):0;for(let g=l;g<=s;g++)for(let u=d;u<=m;u++){let h=Uo(a,g),f=Uo(i,u);if(!h&&!f){e.drawImage(t,g*n,u*o);continue}e.save(),e.translate((h?g+1:g)*n,(f?u+1:u)*o),e.scale(h?-1:1,f?-1:1),e.drawImage(t,0,0),e.restore()}}function on(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 Gt(e,t,n,o,r,a){for(let i=0;i<o.length;i+=2){let l=t+o[i]+r,s=n+o[i+1]+a;i===0?e.moveTo(l,s):e.lineTo(l,s)}e.closePath()}function Qo(e,t,n,o){Oe(e,o),e.beginPath(),on(e,t.x,t.y,t.screenPts),e.clip(),Oe(e,o),e.fillStyle=n==="dynamic"?t.polygon.color??"#cccccc":t.shadedColor,e.fillRect(t.x,t.y,t.canvasW,t.canvasH)}function nn(e,t,n,o,r){t.polygon.textureAlphaMode==="opaque"&&(Oe(e,n),e.fillStyle=t.polygon.color??"#cccccc",e.fillRect(t.x+o,t.y+r,t.canvasW,t.canvasH))}function Jo(e,t,n,o,r=0,a=0){if(t.textureTriangles?.length){let i=n.naturalWidth||n.width||1,l=n.naturalHeight||n.height||1;for(let s of t.textureTriangles){let d=(0,Xe.expandClipPoints)(s.screenPts,Xe.TEXTURE_TRIANGLE_BLEED);e.save(),Oe(e,o),e.beginPath(),Gt(e,t.x,t.y,d,r,a),e.clip(),nn(e,t,o,r,a),s.uvAffine?(Oe(e,o,s.uvAffine.a/i,s.uvAffine.c/i,s.uvAffine.b/l,s.uvAffine.d/l,t.x+s.uvAffine.e+r,t.y+s.uvAffine.f+a),Wo(e,n,i,l,s.uvSampleRect,t.polygon.textureWrap?.s,t.polygon.textureWrap?.t)):s.uvSampleRect&&Dn(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,l=n.naturalHeight||n.height||1,s=t.polygon.textureAlphaMode==="opaque";s&&(e.save(),Oe(e,o),e.beginPath(),Gt(e,t.x,t.y,t.screenPts,r,a),e.clip(),nn(e,t,o,r,a)),Oe(e,o,t.uvAffine.a/i,t.uvAffine.c/i,t.uvAffine.b/l,t.uvAffine.d/l,t.x+t.uvAffine.e+r,t.y+t.uvAffine.f+a),Wo(e,n,i,l,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(),Oe(e,o),e.beginPath(),Gt(e,t.x,t.y,t.screenPts,r,a),e.clip(),nn(e,t,o,r,a)),Dn(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(),Oe(e,o),e.beginPath(),Gt(e,t.x,t.y,t.screenPts,r,a),e.clip(),nn(e,t,o,r,a)),Zo(e,n,t.x+r,t.y+a,t.canvasW,t.canvasH,o),i&&e.restore()}}function _a(e,t,n,o,r,a){let i=r-n,l=a-o,s=i*i+l*l;if(s<=1e-9)return Math.hypot(e-n,t-o);let d=Math.max(0,Math.min(1,((e-n)*i+(t-o)*l)/s));return Math.hypot(e-(n+i*d),t-(o+l*d))}function Ha(e,t,n,o){let r=1/0,a=n.length/2;for(let i of o){if(i<0||i>=a)continue;let l=i*2,s=(i+1)%a*2;r=Math.min(r,_a(e,t,n[l],n[l+1],n[s],n[s+1]))}return r}function Na(e,t,n,o,r,a){let i=Math.max(0,o-a),l=Math.min(t-1,o+a),s=Math.max(0,r-a),d=Math.min(n-1,r+a),m=null,g=1/0;for(let u=s;u<=d;u++)for(let h=i;h<=l;h++){if(h===o&&u===r)continue;let f=h-o,P=u-r,b=f*f+P*P;if(b>a*a||b>=g)continue;let A=(u*t+h)*4;e[A+3]<Xe.TEXTURE_EDGE_REPAIR_SOURCE_ALPHA_MIN||(m=A,g=b)}return m}function er(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))),l=Math.max(1,Math.min(o.height-a,Math.ceil(t.canvasH*n)));if(i<=0||l<=0)return;let s;try{s=e.getImageData(r,a,i,l)}catch{return}let d=s.data,m=new Uint8ClampedArray(d),g=Math.max(Xe.TEXTURE_EDGE_REPAIR_RADIUS,Xe.TEXTURE_EDGE_REPAIR_RADIUS/n),u=Math.max(2,Math.ceil(g*n)+1),h=!1;for(let f=0;f<l;f++)for(let P=0;P<i;P++){let b=(f*i+P)*4,A=d[b+3];if(A<Xe.TEXTURE_EDGE_REPAIR_ALPHA_MIN||A===255)continue;let C=(r+P+.5)/n-t.x,L=(a+f+.5)/n-t.y;if(Ha(C,L,t.screenPts,t.textureEdgeRepairEdges)>g)continue;let y=Na(m,i,l,P,f,u);y!==null&&(d[b]=m[y],d[b+1]=m[y+1],d[b+2]=m[y+2],d[b+3]=255,h=!0)}h&&e.putImageData(s,r,a)}function tr(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 ja(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 l=Array.from(new Set(e.entries.flatMap(m=>m.texture?[m.texture]:[]))),s=new Map;await Promise.all(l.map(async m=>{s.set(m,await qo(m))}));for(let m of e.entries){let g=m.texture?s.get(m.texture):null;if(!m.texture){i.save(),Qo(i,m,t,o),i.restore();continue}g&&(i.save(),Oe(i,o),i.beginPath(),on(i,m.x,m.y,m.screenPts),i.clip(),Jo(i,m,g,o),i.restore()),m.texture&&t==="baked"&&(i.save(),Oe(i,o),i.beginPath(),on(i,m.x,m.y,m.screenPts),i.clip(),Go(i,m.x,m.y,m.canvasW,m.canvasH,m.textureTint,o),i.restore()),er(i,m,o)}let d=await tr(r);return r.width=1,r.height=1,{width:e.width,height:e.height,url:d}}async function rn(e,t,n,o,r){let a=[];for(let i of e){if(r())break;a.push(await ja(i,t,n,o))}return a}var ze=require("@layoutit/polycss-core"),rr=50,ar=[.4,-.7,.59],ir="#ffffff",sr=1,lr="#ffffff",ur=.4,ae=1e-9,Zt=.75,cr=32,Ya=96,Fn="0 48px 96px 48px",nr,or=cr;function Xa(){let e=typeof CSS<"u"?CSS:void 0;return!!e?.supports?.("corner-top-left-shape","bevel")&&!!e.supports("corner-top-right-shape","bevel")}function Vn(){if(Xa())return"corner-bevel";let e=typeof navigator<"u"?navigator.userAgent:"";return/\bFirefox\//.test(e)?"border-large":"border"}function zn(){let e=typeof navigator<"u"?navigator.userAgent:"";return e!==nr&&(nr=e,or=/\bFirefox\//.test(e)?Ya:cr),or}function dr(){return Vn()==="border-large"?Fn:void 0}function $a(){let e=Vn();if(e==="corner-bevel")return;let t=e==="border-large"?Fn:void 0;return t?{borderWidth:t}:void 0}function mr(e){let t=Vn();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"?Fn:"")}function Ge(e){let t=(0,ze.parsePureColor)(e);return t?{r:t.rgb[0],g:t.rgb[1],b:t.rgb[2]}:{r:255,g:255,b:255}}function Kt({r:e,g:t,b:n}){return`${e},${t},${n}`}function Ua(e){return(0,ze.parsePureColor)(e)?.alpha??1}function sn({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 pr(e,t,n,o,r){let a=Ge(e),i=Ge(n),l=Ge(o),s=l.r/255*r+i.r/255*t,d=l.g/255*r+i.g/255*t,m=l.b/255*r+i.b/255*t,g=Math.max(0,Math.min(255,Math.round(a.r*s))),u=Math.max(0,Math.min(255,Math.round(a.g*d))),h=Math.max(0,Math.min(255,Math.round(a.b*m))),f=Ua(e);return f<1?`rgba(${g}, ${u}, ${h}, ${f})`:sn({r:g,g:u,b:h})}function yr(e,t){if(!Number.isFinite(t)||t<=1)return e;let n=(0,ze.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})`:sn(a)}function fr(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 In(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function Wa(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 qa(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],l=[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]-=l[1]*s[2]-l[2]*s[1],n[1]-=l[2]*s[0]-l[0]*s[2],n[2]-=l[0]*s[1]-l[1]*s[0]}let o=Math.hypot(n[0],n[1],n[2]);return o<=ae?null:[n[0]/o,n[1]/o,n[2]/o]}function Ga(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)<=ae)return!1;let l=Math.sign(i);if(t===0)t=l;else if(l!==t)return!1}return!0}function Za(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 Ka(e,t,n,o){let r=t[0]-e[0],a=t[1]-e[1],i=o[0]-n[0],l=o[1]-n[1],s=r*l-a*i;if(Math.abs(s)<=ae)return null;let d=n[0]-e[0],m=n[1]-e[1],g=(d*l-m*i)/s;return[e[0]+g*r,e[1]+g*a]}function an(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 l=a[i]-n,s=a[i+1]-o,d=Math.hypot(l,s);d<=ae||(a[i]+=l/d*t,a[i+1]+=s/d*t)}return a}function xt(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(!Ga(n))return an(e,t);let o=Za(n);if(Math.abs(o)<=ae)return an(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],g=m[0]-d[0],u=m[1]-d[1],h=Math.hypot(g,u);if(h<=ae)return an(e,t);let f=r*(u/h)*t,P=r*(-g/h)*t;a.push({a:[d[0]+f,d[1]+P],b:[m[0]+f,m[1]+P]})}let i=[],l=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],g=Ka(d.a,d.b,m.a,m.b);if(!g)return an(e,t);let u=n[s],h=g[0]-u[0],f=g[1]-u[1],P=Math.hypot(h,f);P>l?i.push(u[0]+h/P*l,u[1]+f/P*l):i.push(g[0],g[1])}return i}function Qa(e,t,n,o){let r=e+t;if(o<=0||n<=ae||r<=ae||!Number.isFinite(e+t+n+o))return xt([e,0,0,n,r,n],o);let a=Math.sqrt(e*e+n*n),i=Math.sqrt(t*t+n*n);if(a<=ae||i<=ae)return xt([e,0,0,n,r,n],o);let l=-o*n/a,s=-o*e/a,d=o*n/i,m=-o*t/i,g=e+l,u=s,h=r+d,f=n+m,P=-n*r;if(Math.abs(P)<=ae)return xt([e,0,0,n,r,n],o);let b=g-h,A=u-f,C=(b*n+A*e)/P,L=h-C*t,y=f-C*n,R=-o*(e+a)/n,w=n+o,z=r+o*(t+i)/n,B=w,D=Math.max(2,o*4),Y=L-e,U=y,H=Math.sqrt(Y*Y+U*U);H>D&&(L=e+Y/H*D,y=U/H*D);let S=Math.sqrt(R*R+o*o);S>D&&(R=R/S*D,w=n+o/S*D);let c=z-r,x=Math.sqrt(c*c+o*o);return x>D&&(z=r+c/x*D,B=n+o/x*D),[L,y,R,w,z,B]}function Ja(e,t){if((e+1)%3===t)return e;if((t+1)%3===e)return t}function ei(e,t,n,o,r){let a=e.seamBleedEdges;if(!a?.size)return null;let i=e.seamBleed===void 0?Zt:e.seamBleed;return[[o,t],[t,n],[n,o]].map(([s,d],m)=>{let g=Ja(s,d),u=g!==void 0&&a.has(g)?e.seamBleedEdgeAmounts?.get(g)??(0,ze.resolveSeamBleed)(i,Zt):0;return(0,ze.safePlanSeamBleedAmount)(r,m,u)})}function gr(e,t,n,o,r,a,i,l,s,d,m,g){let u=Math.round(e*1e3)/1e3||0,h=Math.round(t*1e3)/1e3||0,f=Math.round(n*1e3)/1e3||0,P=Math.round(o*1e3)/1e3||0,b=Math.round(r*1e3)/1e3||0,A=Math.round(a*1e3)/1e3||0,C=Math.round(i*1e3)/1e3||0,L=Math.round(l*1e3)/1e3||0,y=Math.round(s*1e3)/1e3||0,R=Math.round(d*1e3)/1e3||0,w=Math.round(m*1e3)/1e3||0,z=Math.round(g*1e3)/1e3||0;return`matrix3d(${u},${h},${f},0,${P},${b},${A},0,${C},${L},${y},0,${R},${w},${z},1)`}function ti(e,t,n){return e.map(o=>[o[1]*t,o[0]*t,o[2]*n])}function Bn(e,t,n,o){if(!(0,ze.isSolidTrianglePlan)(e))return null;let r=e.tileSize,a=e.layerElevation,i=ti(e.polygon.vertices,r,a),l=qa(i);if(!l)return null;let s=[{a:0,b:1,c:2},{a:1,b:2,c:0},{a:2,b:0,c:1}].map(re=>{let Pe=i[re.a],ne=i[re.b];return{...re,length:Math.hypot(ne[0]-Pe[0],ne[1]-Pe[1],ne[2]-Pe[2])}}).sort((re,Pe)=>Pe.length-re.length),d=s[0].a,m=s[0].b,g=s[0].c,u=i[d],h=i[m],f=i[g],P=s[0].length;if(P<=ae)return null;let b=[(h[0]-u[0])/P,(h[1]-u[1])/P,(h[2]-u[2])/P],A=[f[0]-u[0],f[1]-u[1],f[2]-u[2]],C=In(A,b),L=[u[0]+b[0]*C,u[1]+b[1]*C,u[2]+b[2]*C],y=[L[0]-f[0],L[1]-f[1],L[2]-f[2]],R=Math.hypot(y[0],y[1],y[2]);if(R<=ae)return null;let w=[y[0]/R,y[1]/R,y[2]/R];if(In(Wa(b,w),l)<0){let re=m;if(m=d,d=re,u=i[d],h=i[m],P=Math.hypot(h[0]-u[0],h[1]-u[1],h[2]-u[2]),P<=ae)return null;b=[(h[0]-u[0])/P,(h[1]-u[1])/P,(h[2]-u[2])/P];let Pe=[f[0]-u[0],f[1]-u[1],f[2]-u[2]];C=In(Pe,b),L=[u[0]+b[0]*C,u[1]+b[1]*C,u[2]+b[2]*C],y=[L[0]-f[0],L[1]-f[1],L[2]-f[2]];let ne=Math.hypot(y[0],y[1],y[2]);if(ne<=ae)return null;w=[y[0]/ne,y[1]/ne,y[2]/ne]}let z=zn(),B=Math.max(0,Math.min(P,C)),D=Math.max(0,P-B),Y=[B,0,0,R,B+D,R],U=ei(e,d,m,g,Y),H=U?(0,ze.offsetConvexPolygonPointsByEdgeAmounts)(Y,U):Qa(B,D,R,(0,ze.resolveSeamBleed)(e.seamBleed,Zt)),S=[H[0],H[1]],c=[H[2],H[3]],x=[H[4],H[5]],v=(c[1]+x[1])/2,T=S[0]-c[0],M=x[0]-S[0],E=v-S[1];if(T<=ae||M<=ae||E<=ae||!Number.isFinite(T+M+E))return null;let O=t==="dynamic",k=Ge(e.polygon.color??"#cccccc"),N=O&&Kt(k)===o?.dynamicColorKey,X={color:O||e.shadedColor===o?.paintColor?void 0:e.shadedColor,pointerEvents:n==="none"?"none":void 0,...O&&!N?{"--pnx":l[0].toFixed(4),"--pny":l[1].toFixed(4),"--pnz":l[2].toFixed(4),"--psr":(k.r/255).toFixed(4),"--psg":(k.g/255).toFixed(4),"--psb":(k.b/255).toFixed(4)}:O?{"--pnx":l[0].toFixed(4),"--pny":l[1].toFixed(4),"--pnz":l[2].toFixed(4)}:null},K=([re,Pe])=>[f[0]+(re-B)*b[0]+Pe*w[0],f[1]+(re-B)*b[1]+Pe*w[1],f[2]+(re-B)*b[2]+Pe*w[2]],q=K(S),_=K([c[0],v]),de=K([x[0],v]),ge=z/2,oe=[(de[0]-_[0])/z,(de[1]-_[1])/z,(de[2]-_[2])/z],me=[q[0]-oe[0]*ge,q[1]-oe[1]*ge,q[2]-oe[2]*ge],he=[(_[0]-me[0])/z,(_[1]-me[1])/z,(_[2]-me[2])/z],Be=[oe[0],oe[1],oe[2],0,he[0],he[1],he[2],0,l[0],l[1],l[2],0,me[0],me[1],me[2],1].map(re=>(Math.round(re*1e3)/1e3||0).toString()).join(","),Re=$a();return{transform:`matrix3d(${Be})`,...Re??{},...X}}function ln(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 ni(e,t,n,o){let r=e+t;if(o<=0||n<=ae||r<=ae||!Number.isFinite(e+t+n+o))return xt([e,0,0,n,r,n],o);let a=Math.sqrt(e*e+n*n),i=Math.sqrt(t*t+n*n);if(a<=ae||i<=ae)return xt([e,0,0,n,r,n],o);let l=-o*n/a,s=-o*e/a,d=o*n/i,m=-o*t/i,g=e+l,u=s,h=r+d,f=n+m,P=-n*r;if(Math.abs(P)<=ae)return xt([e,0,0,n,r,n],o);let b=g-h,A=u-f,C=(b*n+A*e)/P,L=h-C*t,y=f-C*n,R=-o*(e+a)/n,w=n+o,z=r+o*(t+i)/n,B=w,D=Math.max(2,o*4),Y=L-e,U=y,H=Math.sqrt(Y*Y+U*U);H>D&&(L=e+Y/H*D,y=U/H*D);let S=Math.sqrt(R*R+o*o);S>D&&(R=R/S*D,w=n+o/S*D);let c=z-r,x=Math.sqrt(c*c+o*o);return x>D&&(z=r+c/x*D,B=n+o/x*D),[L,y,R,w,z,B]}function hr(e,t,n){if(e.texture||e.vertices.length!==3)return null;let o=rr,r=o,a=e.vertices[0],i=e.vertices[1],l=e.vertices[2],s=a[1]*o,d=a[0]*o,m=a[2]*r,g=i[1]*o,u=i[0]*o,h=i[2]*r,f=l[1]*o,P=l[0]*o,b=l[2]*r,A=g-s,C=u-d,L=h-m,y=f-s,R=P-d,w=b-m,z=-(C*w-L*R),B=-(L*y-A*w),D=-(A*R-C*y),Y=Math.sqrt(z*z+B*B+D*D);if(Y<=ae)return null;z/=Y,B/=Y,D/=Y;let U=A*A+C*C+L*L,H=f-g,S=P-u,c=b-h,x=s-f,v=d-P,T=m-b,M=H*H+S*S+c*c,E=x*x+v*v+T*T,O=ln(n)?n.a:0,k=ln(n)?n.b:1,N=ln(n)?n.c:2,X=()=>n?hr(e,t):null;if(!ln(n)){let we=U;M>we&&(O=1,k=2,N=0,we=M),E>we&&(O=2,k=0,N=1)}let K=N===0?s:N===1?g:f,q=N===0?d:N===1?u:P,_=N===0?m:N===1?h:b,de=O===0?s:O===1?g:f,ge=O===0?d:O===1?u:P,oe=O===0?m:O===1?h:b,me=k===0?s:k===1?g:f,he=k===0?d:k===1?u:P,Be=k===0?m:k===1?h:b,Re=me-de,re=he-ge,Pe=Be-oe,ne=Math.sqrt(Re*Re+re*re+Pe*Pe);if(ne<=ae)return X();let I=Re/ne,W=re/ne,$=Pe/ne,Z=(K-de)*I+(q-ge)*W+(_-oe)*$,J=de+I*Z-K,pe=ge+W*Z-q,Ce=oe+$*Z-_,xe=Math.sqrt(J*J+pe*pe+Ce*Ce);if(xe<=ae)return X();J/=xe,pe/=xe,Ce/=xe;let ve=Math.max(0,Math.min(ne,Z)),Fe=Math.max(0,ne-ve),Me=ni(ve,Fe,xe,Zt),Ee=Me[0],$e=Me[1],ce=Me[2],j=Me[3],V=Me[4],be=Me[5],Ue=(j+be)/2,_e=Ee-ce,Le=V-Ee,Ve=Ue-$e;if(_e<=ae||Le<=ae||Ve<=ae||!Number.isFinite(_e+Le+Ve))return X();let st=1/zn(),tt=_e+Le,pt=tt*st,yt=(Le-_e)*.5*st,$t=Ve*st,Ut=Ee-ve-tt*.5,We=$e,kt=gr(I*pt,W*pt,$*pt,I*yt+J*$t,W*yt+pe*$t,$*yt+Ce*$t,z,B,D,K+I*Ut+J*We,q+W*Ut+pe*We,_+$*Ut+Ce*We),qe;if(Math.floor(t.colorFreezeFrames??1)!==0){let we=t.directionalLight,nt=t.ambientLight,He=we?.direction??ar,Wt=we?.color??ir,je=Math.max(0,we?.intensity??sr),Ye=nt?.color??lr,Ea=Math.max(0,nt?.intensity??ur),bn=Math.sqrt(He[0]*He[0]+He[1]*He[1]+He[2]*He[2])||1,Aa=He[0]/bn,La=He[1]/bn,Ra=He[2]/bn,wa=je*Math.max(0,z*Aa+B*La+D*Ra),Do=pr(e.color??"#cccccc",wa,Wt,Ye,Ea);qe=t.colorSteps?yr(Do,t.colorSteps):Do}return{transform:kt,borderWidth:dr(),color:qe,basis:{a:O,b:k,c:N}}}function oi(e,t,n){return n>0&&(n<=1||(t+e)%n===0)}function ri(e,t,n,o){let r=Math.floor(o.colorFreezeFrames??1);if(r===0)return;let a=e.__polycssStableTriangleColor;if(!(a===void 0||oi(t,Math.max(0,Math.floor(o.colorFrame??0)),Math.max(1,r)))||a===n)return;let l=n,s=n?Ge(n):void 0,d=e.__polycssStableTriangleColorRgb,m=Math.max(0,Math.floor(o.colorMaxStep??0));m>0&&d&&s&&n&&(s=fr(d,s,m),l=sn(s)),e.style.color=l,e.__polycssStableTriangleColor=l,e.__polycssStableTriangleColorRgb=s}function _n(e,t,n={}){if((n.textureLighting??"baked")!=="baked"||!ht())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)=>hr(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],l=o[a];l.style.visibility&&(l.style.visibility=""),l.__polycssStableTriangleBasis=i.basis,mr(l),l.style.transform=i.transform,i.borderWidth!==void 0&&(l.style.borderWidth=i.borderWidth),i.color!==void 0&&ri(l,a,i.color,n)}return!0}var Pr=require("@layoutit/polycss-core");function bt(e,t,n={},o){return(0,Pr.computeTextureAtlasPlanPublic)(e,t,n,void 0,o)}function Hn(e,t,n){let o=new Set(n?.disable??[]);return Ln(e,t,o)}var se=require("vue");function Nn(e){for(let t of e)t.startsWith("blob:")&&URL.revokeObjectURL(t)}function xr(e){return e.flatMap(t=>t.url?.startsWith("blob:")?[t.url]:[])}function un(e){return e.map(t=>({width:t.width,height:t.height,url:null}))}function br(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 vt(e){e.length!==0&&(typeof requestAnimationFrame=="function"?requestAnimationFrame(()=>Nn(e)):setTimeout(()=>Nn(e),0))}function St(e,t,n=(0,se.computed)(()=>{}),o=(0,se.computed)(()=>{}),r=(0,se.computed)(()=>{}),a=(0,se.computed)(()=>{}),i=(0,se.computed)(()=>{}),l=(0,se.computed)(()=>{}),s=(0,se.computed)(()=>!1)){let d=(0,se.computed)(()=>new Set(l.value?.disable??[])),m=(0,se.computed)(()=>!d.value.has("b")),g=(0,se.computed)(()=>{let y=typeof document<"u"?document:null;return m.value&&(!y||Vt(y))}),u=(0,se.computed)(()=>!d.value.has("u")&&ht()),h=(0,se.computed)(()=>!d.value.has("i")&&t.value!=="dynamic"&&gt()),f=(0,se.computed)(()=>{let y=Rn(e.value,t.value,d.value,typeof document<"u"?document:null,r.value,a.value,i.value);return wn(y,n.value,typeof document<"u"?document:null,o.value)}),P=(0,se.ref)(un(f.value.packed.pages)),b=(0,se.ref)({plans:e.value,entries:f.value.packed.entries,pages:un(f.value.packed.pages)}),A=[],C=0,L=!1;return(0,se.watch)(()=>[f.value,t.value,s.value],([y,R,w],z,B)=>{let{packed:D,atlasScale:Y}=y;if(w){let S=++C,c=e.value,x=D.entries;if(D.pages.length===0||typeof document>"u"){vt(A),A=[],b.value={plans:c,entries:x,pages:un(D.pages)};return}let v=()=>L||S!==C,T=[];rn(D.pages,R,document,Y,v).then(async M=>{if(T=xr(M),await br(T),v()){vt(T);return}let E=A;A=T,T=[],vt(E),b.value={plans:c,entries:x,pages:M}}).catch(()=>{});return}let U=!1,H=[];if(B(()=>{U=!0,vt(H)}),D.pages.length===0){vt(A),A=[],P.value.length!==0&&(P.value=[]);return}typeof document>"u"||(P.value.some(S=>S.url)||(P.value=un(D.pages)),rn(D.pages,R,document,Y,()=>U).then(async S=>{if(H=xr(S),await br(H),U){vt(H);return}let c=A;A=H,H=[],vt(c),P.value=S}).catch(()=>{}))},{immediate:!0}),(0,se.getCurrentScope)()&&(0,se.onScopeDispose)(()=>{L=!0,Nn(A),A=[]}),{plans:(0,se.computed)(()=>s.value?b.value.plans:e.value),entries:(0,se.computed)(()=>s.value?b.value.entries:f.value.packed.entries),pages:(0,se.computed)(()=>s.value?b.value.pages:P.value),ready:(0,se.computed)(()=>{let y=s.value?b.value.pages:P.value;return y.length===0||y.every(R=>!!R.url)}),useFullRectSolid:m,useProjectiveQuad:g,useStableTriangle:u,useBorderShape:h}}var vr=require("vue");function Ct({entry:e,textureLighting:t,solidPaintDefaults:n,className:o,style:r,domAttrs:a,pointerEvents:i="auto"}){let l=Bn(e,t,i,n);if(!l)return null;let s=e.polygon.data?Object.fromEntries(Object.entries(e.polygon.data).map(([m,g])=>[`data-${m}`,String(g)])):{},d=o?.trim()||void 0;return(0,vr.h)("u",{class:d,style:{...l,...r},"data-poly-index":String(e.index),...s,...a})}var Sr=require("vue"),ct=require("@layoutit/polycss-core");var ai=new Map([["transform",0],["border-shape",1],["border-width",2],["width",3],["height",4],["color",5]]);function ii(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:ai.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 Tt({entry:e,textureLighting:t,solidPaintDefaults:n,className:o,style:r,domAttrs:a,pointerEvents:i="auto",forceBorderShape:l=!1}){let s=!e.texture&&(0,ct.isFullRectSolid)(e),d=s&&l&&gt(),m=!s||d?(0,ct.cssBorderShapeForPlan)(e):null,g=t==="dynamic",u=Ge(e.polygon.color??"#cccccc"),h=g&&Kt(u)===n?.dynamicColorKey,P={transform:m?(0,ct.formatBorderShapeEntryMatrix)(e):(0,ct.formatSolidQuadEntryMatrix)(e),color:g?void 0:e.shadedColor,pointerEvents:i==="none"?"none":void 0,...g?{"--pnx":e.normal[0].toFixed(4),"--pny":e.normal[1].toFixed(4),"--pnz":e.normal[2].toFixed(4),...h?null:{"--psr":(u.r/255).toFixed(4),"--psg":(u.g/255).toFixed(4),"--psb":(u.b/255).toFixed(4)}}:null,...r},b=e.polygon.data?Object.fromEntries(Object.entries(e.polygon.data).map(([L,y])=>[`data-${L}`,String(y)])):{},A=o?.trim()||void 0,C=L=>{let y=L.el;y&&(m?y.style.setProperty("border-shape",m):y.style.removeProperty("border-shape"),ii(y))};return(0,Sr.h)(s&&!d?"b":"i",{class:A,style:P,"data-poly-index":String(e.index),...b,...a,onVnodeMounted:C,onVnodeUpdated:C})}var Cr=require("vue");function Mt({entry:e,textureLighting:t,solidPaintDefaults:n,className:o,style:r,domAttrs:a,pointerEvents:i="auto"}){let l=t==="dynamic",s=Ge(e.polygon.color??"#cccccc"),d=l&&Kt(s)===n?.dynamicColorKey,m={transform:`matrix3d(${e.projectiveMatrix})`,color:l?void 0:e.shadedColor,pointerEvents:i==="none"?"none":void 0,...l&&!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)}:l?{"--pnx":e.normal[0].toFixed(4),"--pny":e.normal[1].toFixed(4),"--pnz":e.normal[2].toFixed(4)}:null,...r},g=e.polygon.data?Object.fromEntries(Object.entries(e.polygon.data).map(([h,f])=>[`data-${h}`,String(f)])):{},u=o?.trim()||void 0;return(0,Cr.h)("b",{class:u,style:m,"data-poly-index":String(e.index),...g,...a})}var Tr=require("vue"),Bt=require("@layoutit/polycss-core");function si(e,t,n){if(t==="dynamic"){let o=(0,Bt.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,Bt.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 jn({entry:e,geometry:t,textureLighting:n,solidPaintDefaults:o,className:r,pointerEvents:a="auto"}){let i=(0,Bt.formatCornerShapeElementStyle)(e,t),l=si(e,n,o),s=a==="none"?";pointer-events:none":"",d=i+l+s,m=u=>{!u||!(u instanceof HTMLElement)||u.setAttribute("style",d)},g=e.polygon.data?Object.fromEntries(Object.entries(e.polygon.data).map(([u,h])=>[`data-${u}`,String(h)])):{};return(0,Tr.h)("u",{class:r?.trim()||void 0,"data-poly-index":String(e.index),...g,onVnodeMounted:({el:u})=>m(u),onVnodeUpdated:({el:u})=>m(u)})}var Yn=require("vue"),Te=require("@layoutit/polycss-core"),li=64;function Et({entry:e,page:t,textureLighting:n,textureImageRendering:o,solidPaintDefaults:r,className:a,style:i,domAttrs:l,pointerEvents:s="auto"}){let d=n==="dynamic",m=(0,Te.resolvePolyTextureImageRendering)(e.polygon,o),g=e.atlasCanonicalSize??li,u=e.atlasLeafWidth??g,h=e.atlasLeafHeight??g,f=e.canvasW||1,P=e.canvasH||1,b=t?`${(0,Te.formatCssLengthPx)(-e.x/f*u)} ${(0,Te.formatCssLengthPx)(-e.y/P*h)}`:void 0,A=t?`${(0,Te.formatCssLengthPx)(t.width/f*u)} ${(0,Te.formatCssLengthPx)(t.height/P*h)}`:void 0,C=d&&t?.url?`url(${t.url})`:void 0,L={transform:(0,Te.formatMatrix3d)(e.atlasMatrix),"--polycss-atlas-size":`${g}px`,"--polycss-atlas-width":(0,Te.formatCssLengthPx)(u),"--polycss-atlas-height":(0,Te.formatCssLengthPx)(h),"--polycss-atlas-leaf-sizing":e.atlasLeafSizing??"canonical",backgroundImage:t?.url?`url(${t.url})`:void 0,backgroundPosition:b,backgroundSize:A,backgroundRepeat:t?.url?"no-repeat":void 0,imageRendering:m==="pixelated"?"pixelated":void 0,...d?{"--pnx":e.normal[0].toFixed(4),"--pny":e.normal[1].toFixed(4),"--pnz":e.normal[2].toFixed(4)}:null,...d&&C?{maskImage:C,maskMode:"alpha",maskPosition:b,maskSize:A,maskRepeat:"no-repeat",WebkitMaskImage:C,WebkitMaskPosition:b,WebkitMaskSize:A,WebkitMaskRepeat:"no-repeat"}:null,opacity:t?.url?void 0:0,pointerEvents:s==="none"?"none":void 0,...i},y=e.polygon.data?Object.fromEntries(Object.entries(e.polygon.data).map(([w,z])=>[`data-${w}`,String(z)])):{},R=a?.trim()||void 0;return(0,Yn.h)("s",{class:R,style:L,"data-poly-index":String(e.index),"data-polycss-leaf":"polygon","data-polycss-texture-backend":"atlas","data-polycss-texture-leaf-sizing":e.atlasLeafSizing??"canonical","data-polycss-texture-ready":t?.url?"true":"false","data-polycss-texture-image-rendering":m,"data-polycss-texture-projection":"affine","data-polycss-texture-lighting":n,"data-polycss-texture-leaf-width":String(u),"data-polycss-texture-leaf-height":String(h),"data-polycss-double-sided":e.polygon.doubleSided?"true":void 0,...y,...l})}function At({plan:e,geometry:t,className:n,style:o,domAttrs:r,pointerEvents:a="auto"}){let i={transform:(0,Te.formatMatrix3d)(t.matrix),"--polycss-atlas-width":(0,Te.formatCssLengthPx)(t.leafWidth),"--polycss-atlas-height":(0,Te.formatCssLengthPx)(t.leafHeight),"--polycss-atlas-leaf-sizing":"image",backgroundImage:`url(${t.url})`,backgroundPosition:`${(0,Te.formatCssLengthPx)(t.backgroundPosition[0])} ${(0,Te.formatCssLengthPx)(t.backgroundPosition[1])}`,backgroundSize:`${(0,Te.formatCssLengthPx)(t.backgroundSize[0])} ${(0,Te.formatCssLengthPx)(t.backgroundSize[1])}`,backgroundRepeat:"no-repeat",backgroundBlendMode:"normal",maskImage:"none",WebkitMaskImage:"none",imageRendering:t.imageRendering==="pixelated"?"pixelated":void 0,"--pnx":e.normal[0].toFixed(4),"--pny":e.normal[1].toFixed(4),"--pnz":e.normal[2].toFixed(4),pointerEvents:a==="none"?"none":void 0,...o},l=e.polygon.data?Object.fromEntries(Object.entries(e.polygon.data).map(([d,m])=>[`data-${d}`,String(m)])):{},s=n?.trim()||void 0;return(0,Yn.h)("s",{class:s,style:i,"data-poly-index":String(e.index),"data-polycss-leaf":"polygon","data-polycss-texture-backend":"image","data-polycss-texture-leaf-sizing":"image","data-polycss-texture-ready":"true","data-polycss-texture-image-rendering":t.imageRendering,"data-polycss-texture-projection":t.projection,"data-polycss-texture-lighting":t.lighting,"data-polycss-texture-leaf-width":String(t.leafWidth),"data-polycss-texture-leaf-height":String(t.leafHeight),"data-polycss-double-sided":e.polygon.doubleSided?"true":void 0,"data-polycss-texture-source-x":String(t.sourceRect.x),"data-polycss-texture-source-y":String(t.sourceRect.y),"data-polycss-texture-source-width":String(t.sourceRect.width),"data-polycss-texture-source-height":String(t.sourceRect.height),...l,...r})}var Xn=(0,G.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},textureLeafSizing:{type:String,default:void 0},textureImageRendering:{type:String,default:void 0},textureBackend:{type:String,default:void 0},textureProjection:{type:String,default:void 0},seamBleed:{type:[Number,String],default:void 0},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,G.inject)(ye);if(!o)throw new Error("polycss: PolyScene must be used inside a PolyCamera.");let{sceneElRef:r,applyTransformDirect:a}=o,i=(0,G.ref)(0),l=new Map,s={register(E,O){l.set(E,O),i.value++},unregister(E){l.delete(E),i.value++},version:i,getEntries(){return Array.from(l.values())}},d=new Set,m=(0,G.ref)(!1),g={register(E){d.add(E),m.value=d.size>0},unregister(E){d.delete(E),m.value=d.size>0},hasAny:m},u=(0,G.ref)(null),h=(0,G.ref)(null),f=(0,G.computed)(()=>({textureLighting:e.textureLighting??"baked",directionalLight:e.directionalLight,ambientLight:e.ambientLight,strategies:e.strategies,seamBleed:e.seamBleed??Ze.DEFAULT_SEAM_BLEED,textureLeafSizing:e.textureLeafSizing,textureImageRendering:e.textureImageRendering,textureBackend:e.textureBackend,textureProjection:e.textureProjection,shadow:e.shadow,shadowRegistry:s,receiverRegistry:g,groundCssZ:u.value,sceneEl:h.value}));(0,G.provide)(Mn,f),(0,G.watch)(h,E=>{r.value=E});let P=!1;(0,G.onMounted)(()=>{P||typeof document<"u"&&(qt(document),P=!0)}),(0,G.watch)(()=>e.debugShowBackfaces,E=>{let O=h.value;O&&O.classList.toggle("polycss-debug-show-backfaces",!!E)});let b=(0,G.computed)(()=>e.polygons??[]),A=(0,G.computed)(()=>e.centerPolygons??null),C=(0,G.computed)(()=>({directionalLight:e.directionalLight})),L=Ft(b,C),y=(0,G.computed)(()=>A.value??b.value),R=Ft(y,C);(0,G.onMounted)(()=>{r.value=h.value,a()}),(0,G.onUpdated)(a);let w=(0,G.computed)(()=>({tileSize:50,layerElevation:50,directionalLight:e.directionalLight,textureLighting:e.textureLighting,textureQuality:e.textureQuality,textureLeafSizing:e.textureLeafSizing,textureImageRendering:e.textureImageRendering})),z=(0,G.computed)(()=>{let E=e.textureLighting==="dynamic",O=E?void 0:e.directionalLight,k=E?void 0:e.ambientLight,N=(0,le.buildTextureEdgeRepairSets)(L.value.polygons),X=e.seamBleed??Ze.DEFAULT_SEAM_BLEED,K=X==="auto"||typeof X=="number"&&Number.isFinite(X)&&X>0?(0,le.buildSeamBleedPolygonEdges)(L.value.polygons,{tileSize:w.value.tileSize,layerElevation:w.value.layerElevation,directionalLight:O,ambientLight:k}):null;return L.value.polygons.map((q,_)=>bt(q,_,{tileSize:w.value.tileSize,layerElevation:w.value.layerElevation,directionalLight:O,ambientLight:k,seamBleed:K?.has(_)?X:void 0,seamEdges:K?.get(_),textureEdgeRepairEdges:N[_]}))}),B=(0,G.computed)(()=>e.textureLighting??"baked"),D=(0,G.computed)(()=>e.textureQuality),Y=(0,G.computed)(()=>e.textureLeafSizing),U=(0,G.computed)(()=>e.textureBackend),H=(0,G.computed)(()=>e.textureImageRendering),S=(0,G.computed)(()=>e.textureProjection),c=(0,G.computed)(()=>e.strategies),x=St(z,B,D,Y,U,H,S,c),v=(0,G.computed)(()=>{if(e.textureLighting!=="dynamic")return null;let E=e.directionalLight?.direction??[.4,-.7,.59],O=(0,Ze.worldDirectionToCss)(E),k=Math.hypot(O[0],O[1],O[2])||1,N=O[0]/k,X=O[1]/k,K=O[2]/k,q=(0,Ze.parseHexColor)(e.directionalLight?.color??"#ffffff")?.rgb??[255,255,255],_=(0,Ze.parseHexColor)(e.ambientLight?.color??"#ffffff")?.rgb??[255,255,255],de=e.directionalLight?.intensity??1,ge=e.ambientLight?.intensity??.4,oe=Be=>(Be/255).toFixed(4),me=K,he=Math.sign(me||1)*Math.max(Math.abs(me),.01);return{"--plx":N.toFixed(2),"--ply":X.toFixed(2),"--plz":K.toFixed(2),"--clx":N.toFixed(2),"--cly":X.toFixed(2),"--clz":he.toFixed(2),"--plr":oe(q[0]),"--plg":oe(q[1]),"--plb":oe(q[2]),"--pli":de.toFixed(4),"--par":oe(_[0]),"--pag":oe(_[1]),"--pab":oe(_[2]),"--pai":ge.toFixed(4)}}),T=50;(0,G.watchEffect)(()=>{let E=h.value;i.value;let O=s.getEntries();if(O.length===0){E&&E.style.removeProperty("--shadow-ground-cssz"),u.value!==null&&(u.value=null);return}let k=1/0;for(let K of O){let q=K();for(let _ of q.polygons)for(let de of _.vertices){let ge=de[2]+(q.position[2]??0);ge<k&&(k=ge)}}if(!Number.isFinite(k)){E&&E.style.removeProperty("--shadow-ground-cssz"),u.value!==null&&(u.value=null);return}let N=e.shadow?.lift??.05,X=(k+N)*T;u.value!==X&&(u.value=X),E&&(e.textureLighting==="dynamic"?E.style.setProperty("--shadow-ground-cssz",X.toFixed(3)):E.style.removeProperty("--shadow-ground-cssz"))});let M=(0,G.computed)(()=>{if(!e.autoCenter)return[0,0,0];let E=R.value.sceneBbox;return[(E.min[0]+E.max[0])/2,(E.min[1]+E.max[1])/2,(E.min[2]+E.max[2])/2]});return(0,G.watchEffect)(()=>{o.autoCenterOffset.value=M.value}),(0,G.onBeforeUnmount)(()=>{}),()=>{let E=`polycss-scene${e.class?` ${e.class}`:""}`,O=w.value,k=x.entries.value.map((X,K)=>{if(X)return Et({entry:X,page:x.pages.value[X.pageIndex],textureLighting:O.textureLighting??"baked",textureImageRendering:e.textureImageRendering});let q=z.value[K],_=q?(0,Ze.resolvePolyTextureLeafGeometry)(q,{imageRendering:e.textureImageRendering,backend:e.textureBackend,projection:e.textureProjection}):null;return q&&_?At({plan:q,geometry:_}):!q||q.texture?null:x.useStableTriangle.value&&(0,le.isSolidTrianglePlan)(q)?Ct({entry:q,textureLighting:O.textureLighting??"baked"}):x.useProjectiveQuad.value&&(0,le.isProjectiveQuadPlan)(q)?Mt({entry:q,textureLighting:O.textureLighting??"baked"}):x.useBorderShape.value||x.useFullRectSolid.value?Tt({entry:q,textureLighting:O.textureLighting??"baked",forceBorderShape:!x.useFullRectSolid.value}):null}),N=t.default?.()??[];return(0,G.h)("div",{ref:h,class:E,"data-polycss-lighting":O.textureLighting??"baked","aria-hidden":"true",style:{...v.value??null,...n.style},...Object.fromEntries(Object.entries(n).filter(([X])=>X!=="style"&&X!=="class"))},[...k,...N])}}});var F=require("vue"),Qe=require("@layoutit/polycss-core"),ee=require("@layoutit/polycss-core");var Ke=require("vue"),Er=require("@layoutit/polycss-core"),Mr=[],$n=[];function Qt(e,t){let n=(0,Ke.ref)(Mr),o=(0,Ke.ref)(void 0),r=(0,Ke.ref)(!!e.value),a=(0,Ke.ref)(null),i=(0,Ke.ref)($n),l=null;function s(){if(l){try{l.dispose()}catch{}l=null}}return(0,Ke.watch)(e,(d,m,g)=>{if(!d){s(),n.value=Mr,o.value=void 0,r.value=!1,a.value=null,i.value=$n;return}let u=!1;r.value=!0,a.value=null;let h=l;(0,Er.loadMesh)(d,t).then(f=>{if(u){try{f.dispose()}catch{}return}if(h)try{h.dispose()}catch{}l=f,n.value=f.polygons,o.value=f.voxelSource,r.value=!1,a.value=null,i.value=f.warnings??$n}).catch(f=>{if(u)return;let P=f instanceof Error?f:new Error(String(f));r.value=!1,a.value=P}),g(()=>{u=!0})},{immediate:!0}),(0,Ke.onUnmounted)(()=>{s()}),{polygons:n,voxelSource:o,loading:r,error:a,warnings:i,dispose:s}}var Q=require("@layoutit/polycss-core"),ui=[.4,-.7,.59],ci="#ffffff",di=1,mi="#ffffff",pi=.4,kr=1,yi=8,fi=Q.PROJECTIVE_QUAD_BLEED,at=1e-6,gi=(0,Q.resolveProjectiveQuadGuards)({bleed:0}),Dr={t:[0,0,1],b:[0,0,-1],fl:[0,1,0],br:[0,-1,0],fr:[1,0,0],bl:[-1,0,0]},qn=["t","b","bl","br","fr","fl"],hi=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 Ar(e){let t=[];for(let n of qn)(0,Q.normalFacesCamera)(Dr[n],e)&&t.push(n);return t.join("|")}function Pi(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 xi(e){let t=e.vertices;if(t.length<3)return null;let n=t[0],o=0,r=0,a=0;for(let l=1;l+1<t.length;l+=1){let s=t[l],d=t[l+1],m=s[1]-n[1],g=s[0]-n[0],u=s[2]-n[2],h=d[1]-n[1],f=d[0]-n[0],P=d[2]-n[2];o-=g*P-u*f,r-=u*h-m*P,a-=m*f-g*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 bi(e){if(e.texture||e.material||e.uvs||e.textureTriangles||e.vertices.length!==4)return null;let t=xi(e),n=t?hi.get(t.join(",")):void 0;if(!n)return null;let o=1/0,r=1/0,a=1/0,i=-1/0,l=-1/0,s=-1/0;for(let g of e.vertices)o=Math.min(o,g[0]),r=Math.min(r,g[1]),a=Math.min(a,g[2]),i=Math.max(i,g[0]),l=Math.max(l,g[1]),s=Math.max(s,g[2]);let d=1e-6,m=Ai(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,(l-r)*Q.BASE_TILE),height:Math.max(0,(i-o)*Q.BASE_TILE),z:a*Q.BASE_TILE,baseColor:m,bleed:Un()}:Math.abs(i-o)<=d?{axis:"x",face:n,left:r*Q.BASE_TILE,top:a*Q.BASE_TILE,width:Math.max(0,(l-r)*Q.BASE_TILE),height:Math.max(0,(s-a)*Q.BASE_TILE),z:-o*Q.BASE_TILE,baseColor:m,bleed:Un()}:Math.abs(l-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:Un()}:null}function Un(){return{left:0,right:0,top:0,bottom:0}}function vi(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 Lr(e){return[e[1]*Q.BASE_TILE,e[0]*Q.BASE_TILE,e[2]*Q.BASE_TILE]}function Rr(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])<=at){if(Math.abs(t[0]-o)<=at)return"left";if(Math.abs(t[0]-r)<=at)return"right"}if(Math.abs(t[1]-n[1])<=at){if(Math.abs(t[1]-a)<=at)return"top";if(Math.abs(t[1]-i)<=at)return"bottom"}return null}function Ci(e,t){let n=null;for(let o=0;o<3;o+=1)if(!(Math.abs(e[o]-t[o])<=at)){if(n!==null)return null;n=o}return n}function Ti(e,t,n){let o=t.vertices,r=Lr(o[n]),a=Lr(o[(n+1)%o.length]),i=Si(e,Rr(e,r),Rr(e,a));if(!i)return null;let l=Ci(r,a);if(l===null)return null;let s=Math.min(r[l],a[l]),d=Math.max(r[l],a[l]);return d-s>at?{item:e,side:i,variableAxis:l,fixed:r,start:s,end:d}:null}function wr(e){e.item.bleed[e.side]=Math.max(e.item.bleed[e.side],fi)}function Mi(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=Ti(o,r,a);if(!i)continue;let l=vi(i),s=n.get(l);s?s.push(i):n.set(l,[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+at);for(let i of r)i.item.sourceIndex!==a.item.sourceIndex&&(wr(i),wr(a));r.push(a)}}}function Ei(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 Ai(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(${Wn(n.r)}, ${Wn(n.g)}, ${Wn(n.b)}, ${o})`}return Li(n)}function Li({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 Wn(e){return Math.round(Math.max(0,Math.min(255,e)))}function Ri(e,t,n,o){let r=n?.direction??ui,a=Math.hypot(r[0],r[1],r[2])||1,i=r[0]/a,l=r[1]/a,s=r[2]/a,d=Math.max(0,n?.intensity??di)*Math.max(0,e[0]*i+e[1]*l+e[2]*s),m=Math.max(0,o?.intensity??pi),g=n?.color??ci,u=o?.color??mi,h=(0,Q.shadePolygon)(t,d,g,u,m),f=Ei(t);if(f.alpha>=1)return h;let P=parseInt(h.slice(1,3),16),b=parseInt(h.slice(3,5),16),A=parseInt(h.slice(5,7),16);return`rgba(${P}, ${b}, ${A}, ${f.alpha})`}function wi(e){if(!e?.length)return[];let t=[];for(let n=0;n<e.length;n+=1){let o=e[n],r=bi(o);if(!r||r.width<=0||r.height<=0)return[];t.push({...r,sourceIndex:n})}return Mi(e,t),t}function Oi(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 ki(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 Di(e){return new Map([[0,e.bleed.top],[1,e.bleed.right],[2,e.bleed.bottom],[3,e.bleed.left]])}function Ii(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 Or(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,l=r/t,s=a/t;return`matrix3d(${(e.axis==="x"?[l,0,0,0,0,0,s,0,0,-1,0,0,n,-i,o,1]:e.axis==="y"?[0,0,l,0,0,s,0,0,-1,0,0,0,-i,o,n,1]:[l,0,0,0,0,s,0,0,0,0,1,0,n,o,i,1]).map(m=>Number(m.toFixed(6))).join(",")})`}function Fi(e,t){let{xAxis:n,yAxis:o,normal:r,tx:a,ty:i,tz:l}=Oi(e),s=(0,Q.computeProjectiveQuadMatrix)(ki(e),n,o,r,a,i,l,gi,Di(e));return s?Ii(s,t)??Or(e,t):Or(e,t)}function Vi(e){let t=e.defaultView?.matchMedia;return t?t("(pointer: coarse)").matches||t("(hover: none)").matches:!1}function zi(e){return Vi(e)?yi:kr}function Bi(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 _i(e,t){let n=Bi(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 Hi(e,t,n){let o=e.filter(u=>t.has(u.face)).map(u=>({item:u,..._i(u,n)}));if(o.length===0)return[];let r=1/0,a=-1/0,i=1/0,l=-1/0;for(let u of o)r=Math.min(r,u.x),a=Math.max(a,u.x),i=Math.min(i,u.y),l=Math.max(l,u.y);let s=4,d=Math.max(1e-6,a-r),m=Math.max(1e-6,l-i),g=new Map;for(let u of o){let h=Math.min(s-1,Math.max(0,Math.floor((u.x-r)/d*s))),f=Math.min(s-1,Math.max(0,Math.floor((u.y-i)/m*s))),P=`${h}:${f}`,b=g.get(P);b||(b={tx:h,ty:f,sourceIndex:u.item.sourceIndex,items:[]},g.set(P,b)),b.items.push(u.item),b.sourceIndex=Math.min(b.sourceIndex,u.item.sourceIndex)}return Array.from(g.values()).sort((u,h)=>u.ty-h.ty||u.tx-h.tx||u.sourceIndex-h.sourceIndex).flatMap(u=>u.items)}function Ir(e){let{doc:t,wrapper:n,polygons:o,directionalLight:r,ambientLight:a}=e,i=wi(o);if(i.length===0)return null;let l=new Set(i.map(S=>S.face));n.classList.add("polycss-voxel-mesh");let s=zi(t);s!==kr&&n.style.setProperty("--polycss-voxel-primitive",`${s}px`);let d=new Map,m=(S,c)=>{let x=`${S}|${c}`,v=d.get(x);if(v)return v;let T=Ri(Dr[S],c,r,a);return d.set(x,T),T},g=new Map,u=new Map,h=new Map,f=new Map;for(let S of i){let c=f.get(S.face);c||(c=[],f.set(S.face,c)),c.push(S)}let P="",b=0,A=new Set,C=S=>{let c=g.get(S.sourceIndex);return c||(c=t.createElement("b"),g.set(S.sourceIndex,c),Pi(c,m(S.face,S.baseColor),Fi(S,s))),c},L=S=>{let c=u.get(S);return c||(c=t.createElement("span"),c.className=`polycss-voxel-face polycss-voxel-face-${S}`,c.dataset.polycssVoxelFace=S,c.__polycssVoxelFaceHost=!0,u.set(S,c)),c},y=()=>{for(let S of Array.from(n.childNodes))if(!S.__polycssVoxelFaceHost)return S;return null},R=(S,c)=>{let x=c.map(M=>M.sourceIndex).join(",");if(h.get(S)===x)return;let v=L(S),T=t.createDocumentFragment();for(let M of c)T.appendChild(C(M));v.replaceChildren(T),h.set(S,x)},w=()=>{for(let S of qn)l.has(S)&&R(S,f.get(S)??[])},z=S=>new Set(S.split("|").filter(Boolean)),B=S=>{let c=z(S);return qn.filter(x=>c.has(x)&&l.has(x))},D=S=>{let c=0;for(let x of S)c+=f.get(x)?.length??0;return c},Y=S=>{let c=new Set,x=[],v=new Map;for(let T of S){c.has(T.face)||(c.add(T.face),x.push(T.face));let M=v.get(T.face);M||(M=[],v.set(T.face,M)),M.push(T)}return{orderedFaces:x,itemsByFace:v}},U=(S,c)=>{let x=new Set(S);for(let v of A){if(x.has(v))continue;let T=u.get(v);T?.parentNode===n&&n.removeChild(T)}if(c){let v=t.createDocumentFragment();for(let T of S)v.appendChild(L(T));n.insertBefore(v,y()),A=x;return}for(let v=0;v<S.length;v+=1){let T=S[v],M=L(T);if(M.parentNode===n)continue;let E=null;for(let O=v+1;O<S.length;O+=1){let k=u.get(S[O]);if(k?.parentNode===n){E=k;break}}n.insertBefore(M,E??y())}A=x},H=(S,c,x)=>{if(!x){let O=B(S);U(O,!1),b=D(O);return}let v=new Set(S.split("|").filter(Boolean)),T=Hi(i,v,c),{orderedFaces:M,itemsByFace:E}=Y(T);for(let O of M)R(O,E.get(O)??[]);U(M,!0),b=T.length};return w(),{get brushCount(){return b},render(S){P=Ar(S),H(P,S,!0)},syncCamera(S){let c=Ar(S);c!==P&&(P=c,H(c,S,!1))},dispose(){for(let S of u.values())S.remove();n.classList.remove("polycss-voxel-mesh"),n.style.removeProperty("--polycss-voxel-primitive"),g.clear(),u.clear(),h.clear(),b=0,A=new Set,P=""}}}var Gn=new WeakMap;function Fr(e,t){Gn.set(e,t)}function Vr(e){Gn.delete(e)}function Lt(e){let t=e;for(;t;){if(t instanceof HTMLElement){let n=Gn.get(t);if(n)return n}t=t.parentElement}return null}function Rt(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 cn(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=Lt(r);if(a&&Rt(r,e,t))return a}return null}var zr=new WeakMap,Br=new WeakMap;function Ni(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 _r(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(l=>({...l,vertices:l.vertices.map(a)}))}:null}))}var ue=(0,F.defineComponent)({name:"PolyMesh",inheritAttrs:!1,props:{id:{type:String,default:void 0},src:{type:String,default:void 0},mtl:{type:String,default:void 0},polygons:{type:Array,default:void 0},voxelSource:{type:Object,default:void 0},autoCenter:{type:Boolean,default:!1},textureLighting:{type:String,default:void 0},textureQuality:{type:[Number,String],default:void 0},textureLeafSizing:{type:String,default:void 0},textureImageRendering:{type:String,default:void 0},textureBackend:{type:String,default:void 0},textureProjection:{type:String,default:void 0},seamBleed:{type:[Number,String],default:void 0},atomicAtlas:{type:Boolean,default:!1},onFrameReady:{type:Function,default:void 0},castShadow:{type:Boolean,default:!1},receiveShadow:{type:Boolean,default:!1},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,F.computed)(()=>e.src??""),a=(0,F.computed)(()=>{let I={...e.parseOptions??{}};return e.mtl&&(I.mtlUrl=e.mtl),e.meshResolution!==void 0&&(I.meshResolution=e.meshResolution),Object.keys(I).length>0?I:void 0}),i=Qt(r,a.value),l=(0,F.computed)(()=>e.src?i.polygons.value:e.polygons??[]),s=(0,F.ref)(null),d=null;(0,F.watch)(l,()=>{s.value=null,d=null});let m=(0,F.computed)(()=>s.value??l.value),g=(0,F.computed)(()=>e.merge?(0,ee.optimizeMeshPolygons)(m.value,e.meshResolution!==void 0?{meshResolution:e.meshResolution}:void 0):m.value),u=(0,F.computed)(()=>e.autoCenter?_r(g.value):g.value),h=!t.polygon,f=Bo(),P=(0,F.inject)(ye,null),b=(0,F.ref)(0),A;(0,F.watchEffect)(I=>{A?.(),A=P?.store.subscribe(()=>{b.value++}),I(()=>{A?.(),A=void 0})});let C=(0,F.computed)(()=>e.textureLighting??f?.value.textureLighting??"baked"),L=(0,F.computed)(()=>f?.value.strategies),y=(0,F.computed)(()=>e.seamBleed??f?.value.seamBleed??ee.DEFAULT_SEAM_BLEED),R=(0,F.computed)(()=>e.textureLeafSizing??f?.value.textureLeafSizing),w=(0,F.computed)(()=>e.textureImageRendering??f?.value.textureImageRendering),z=(0,F.computed)(()=>e.textureBackend??f?.value.textureBackend),B=(0,F.computed)(()=>e.textureProjection??f?.value.textureProjection),D=(0,F.computed)(()=>f?.value.directionalLight),Y=(0,F.computed)(()=>f?.value.ambientLight),U=(0,F.computed)(()=>e.src?i.voxelSource.value:e.voxelSource??void 0),H=(0,F.computed)(()=>!!(U.value&&s.value===null&&!t.polygon&&!t.default&&C.value==="baked"&&!e.castShadow)),S=(0,F.computed)(()=>{if(C.value!=="dynamic")return null;let I=e.rotation;if(!I||I[0]===0&&I[1]===0&&I[2]===0)return null;let W=f?.value.directionalLight?.direction;if(!W)return null;let $=(0,ee.inverseRotateVec3)(W,I),Z=Math.hypot($[0],$[1],$[2])||1;return{"--plx":($[0]/Z).toFixed(2),"--ply":($[1]/Z).toFixed(2),"--plz":($[2]/Z).toFixed(2)}}),c=(0,F.ref)(e.rotation),x=(0,F.ref)(0),v=(0,F.computed)(()=>{let I=D.value;if(!I)return I;let W=(0,Qe.worldDirectionalLightToCss)(I);return c.value?{...W,direction:(0,ee.inverseRotateVec3)(W.direction,c.value)}:W}),T=void 0,M=(0,F.computed)(()=>{if(!h||H.value)return[];let I=(0,le.buildTextureEdgeRepairSets)(u.value),W=y.value==="auto"||typeof y.value=="number"&&Number.isFinite(y.value)&&y.value>0?(0,le.buildSeamBleedPolygonEdges)(u.value,{directionalLight:v.value,ambientLight:Y.value}):null,$=(0,Qe.buildBasisHints)(u.value,{directionalLight:v.value,ambientLight:Y.value});return u.value.map((Z,J)=>bt(Z,J,{directionalLight:v.value,ambientLight:Y.value,seamBleed:W?.has(J)?y.value:void 0,seamEdges:W?.get(J),textureEdgeRepairEdges:I[J],lightOccludedPolyIndices:T},$[J]))}),E=(0,F.computed)(()=>e.textureQuality),O=(0,F.computed)(()=>e.atomicAtlas),k=St(M,C,E,R,z,w,B,L,O),N=[],X=()=>{let I=N.splice(0);for(let W of I)W()};(0,F.watch)(()=>k.ready.value,I=>{I&&X()},{immediate:!0}),(0,F.onBeforeUnmount)(X);let K=(0,F.computed)(()=>h?Hn(k.plans.value,C.value,L.value):{});(0,F.watch)(()=>k.entries.value,()=>{e.atomicAtlas&&k.ready.value&&e.onFrameReady?.()},{flush:"sync"});let q=(0,F.computed)(()=>Ni(K.value)),_=(0,F.computed)(()=>{if(!e.castShadow||f?.value.receiverRegistry?.hasAny.value)return null;let I=f?.value,W=I?.groundCssZ??null;if(W===null)return null;let $=I?.shadow,Z=I?.directionalLight?.direction??[.4,-.7,.59],J=(0,ee.worldDirectionToCss)(Z),pe=e.position?.[2]??0,Ce=W-pe*ee.BASE_TILE,xe=(0,ee.findOverlappingPolygonDuplicates)(u.value,{normalTolerance:.1,distanceTolerance:.5,overlapFraction:.95,preserveDoubleSidedBackfaces:!1}),ve=[],Fe=1/0,Me=1/0,Ee=-1/0,$e=-1/0,ce=1/0,j=1/0,V=-1/0,be=-1/0,Ue=u.value,_e=M.value;for(let qe=0;qe<Ue.length;qe++){if(xe.has(qe)||!_e[qe])continue;let nt=Ue[qe],He=[];for(let Wt of nt.vertices){let je=[Wt[1]*ee.BASE_TILE,Wt[0]*ee.BASE_TILE,Wt[2]*ee.BASE_TILE];je[0]<ce&&(ce=je[0]),je[1]<j&&(j=je[1]),je[0]>V&&(V=je[0]),je[1]>be&&(be=je[1]);let Ye=(0,ee.projectCssVertexToGround)(je,J,Ce);He.push(Ye),Ye[0]<Fe&&(Fe=Ye[0]),Ye[1]<Me&&(Me=Ye[1]),Ye[0]>Ee&&(Ee=Ye[0]),Ye[1]>$e&&($e=Ye[1])}ve.push(He)}if(ve.length===0)return null;let Le=$?.maxExtend??2e3,Ve=Math.max(Fe,ce-Le),mt=Math.max(Me,j-Le),st=Math.min(Ee,V+Le),tt=Math.min($e,be+Le),pt=st-Ve,yt=tt-mt;if(!(pt>0)||!(yt>0))return null;let $t=$?.color??"#000000",Ut=$?.opacity??.25,We=(0,ee.parseHexColor)($t)?.rgb??[0,0,0],kt="";for(let qe of ve){let we=(0,ee.ensureCcw2D)(qe);kt+=`M${(we[0][0]-Ve).toFixed(3)},${(we[0][1]-mt).toFixed(3)}`;for(let nt=1;nt<we.length;nt++)kt+=`L${(we[nt][0]-Ve).toFixed(3)},${(we[nt][1]-mt).toFixed(3)}`;kt+="Z"}return(0,F.h)("svg",{class:"polycss-shadow polycss-shadow-svg",width:String(pt),height:String(yt),viewBox:`0 0 ${pt} ${yt}`,style:{position:"absolute",top:"0",left:"0",display:"block",overflow:"hidden",transformOrigin:"0 0",pointerEvents:"none",willChange:"transform",transform:`translate3d(${Ve.toFixed(3)}px,${mt.toFixed(3)}px,${Ce.toFixed(3)}px)`}},[(0,F.h)("path",{d:kt,fill:`rgb(${We[0]},${We[1]},${We[2]})`,"fill-rule":"nonzero",stroke:`rgb(${We[0]},${We[1]},${We[2]})`,"stroke-width":"3","stroke-linejoin":"round",opacity:Ut.toFixed(4)})])}),de=(0,F.computed)(()=>e.receiveShadow?(0,Qe.buildSharedEdgeMap)(u.value):void 0),ge=(0,F.computed)(()=>{if(!e.receiveShadow)return[];let I=f?.value,W=I?.shadowRegistry;if(!W)return[];W.version.value,b.value;let $=W.getEntries();if($.length===0)return[];let Z=I?.directionalLight?.direction??[.4,-.7,.59],J=(0,ee.worldDirectionToCss)(Z),pe=I?.shadow?.lift??.001,Ce=(0,ee.prepareReceiverFacePlanes)(u.value,e.position??[0,0,0],e.scale,new Set,pe,e.rotation);if(Ce.length===0)return[];let xe=[],ve=0,Fe=de.value;for(let ce of $){let j=ce(),V=j.renderedPolygonIndices,be=(0,ee.prepareCasterPolyItems)(j.polygons,j.position,j.scale,V?Le=>V.has(Le):()=>!0,j.rotation??null),Ue=j.polygons===u.value,_e;if(!Ue&&j.polygons.length>=40){let Le=j.rotation??null,Ve=j.position,mt=JSON.stringify(j.scale??null),st=`${Ve[0]},${Ve[1]},${Ve[2]}|${Le?Le.join(","):"n"}|${mt}`,tt=zr.get(j.polygons);(tt===void 0||Br.get(j.polygons)!==st)&&(tt=(0,ee.prepareCasterEdgeOwners)(j.polygons,Ve,j.scale,Le),zr.set(j.polygons,tt),Br.set(j.polygons,st)),_e=tt}xe.push({id:Symbol(`caster-${ve++}`),items:be,selfShadowEdgeMap:Ue?Fe:void 0,edgeOwners:_e,casterPolygonCount:j.polygons.length})}let Me=P?.store.getState().cameraState,Ee={rotX:Me?.rotX??65,rotY:Me?.rotY??45,meshRotation:e.rotation};return(0,ee.computeReceiverShadowFaces)({receiverPlanes:Ce,receiverPolygons:u.value,receiverHasTexture:u.value.some(ce=>ce.texture!==void 0),casters:xe,lightDir:J,cameraRot:Ee,ambientLight:I?.ambientLight,directionalLight:I?.directionalLight,shadow:{color:I?.shadow?.color,opacity:I?.shadow?.opacity??.25,maxExtend:I?.shadow?.maxExtend}}).map(ce=>(0,F.h)("svg",{key:`receiver-${ce.faceIndex}`,class:"polycss-shadow polycss-shadow-svg polycss-shadow-receiver","data-poly-shadow-type":"receiver","data-poly-shadow-receiver-face":String(ce.faceIndex),"data-poly-shadow-receiver-polys":JSON.stringify(ce.memberPolyIndices),width:String(ce.width),height:String(ce.height),viewBox:`0 0 ${ce.width} ${ce.height}`,style:{position:"absolute",top:"0",left:"0",display:"block",overflow:"hidden",transformOrigin:"0 0",pointerEvents:"none",willChange:"transform",transform:ce.matrixCss}},ce.paths.map((j,V)=>(0,F.h)("path",{key:V,d:j.d,fill:ce.fill,stroke:ce.fill,"stroke-width":"3","stroke-linejoin":"round",opacity:ce.opacity.toFixed(4),"data-poly-shadow-caster-polys":JSON.stringify(j.casterPolygonIndices)}))))}),oe=Symbol();(0,F.watch)(()=>e.castShadow,(I,W,$)=>{let Z=f?.value.shadowRegistry;Z&&(I?Z.register(oe,()=>{let J=(0,ee.findOverlappingPolygonDuplicates)(u.value,{normalTolerance:.1,distanceTolerance:.5,overlapFraction:.95,preserveDoubleSidedBackfaces:!1}),pe=new Set,Ce=M.value;for(let xe=0;xe<Ce.length;xe++)Ce[xe]&&!J.has(xe)&&pe.add(xe);return{polygons:u.value,position:e.position??[0,0,0],scale:e.scale,rotation:e.rotation,renderedPolygonIndices:pe}}):Z.unregister(oe),$(()=>Z.unregister(oe)))},{immediate:!0});let me=Symbol();(0,F.watch)(()=>e.receiveShadow,(I,W,$)=>{let Z=f?.value.receiverRegistry;Z&&(I?Z.register(me):Z.unregister(me),$(()=>Z.unregister(me)))},{immediate:!0}),(0,F.onBeforeUnmount)(()=>{f?.value.shadowRegistry?.unregister(oe),f?.value.receiverRegistry?.unregister(me)});let he=(0,F.ref)(null),Be={get element(){return he.value},get id(){return e.id},getPosition:()=>e.position,getRotation:()=>e.rotation,getScale:()=>e.scale,getPolygons:()=>d??u.value,setPolygons(I){let W=e.autoCenter?_r(I):I;d=W;let $=he.value,Z=$&&h&&_n($,W,{directionalLight:v.value,ambientLight:Y.value,textureLighting:C.value,strategies:L.value,seamBleed:y.value,colorFrame:++x.value,colorFreezeFrames:0});s.value=I.slice()},updatePolygon(I,W){let $=d??u.value,Z=typeof I=="number"?I:$.indexOf(I);Z<0||Z>=$.length||(Object.assign($[Z],W),s.value=$.slice(),d=null)},rebakeAtlas:()=>{c.value=e.rotation},whenTexturesReady(){return k.ready.value?Promise.resolve():new Promise(I=>{N.push(I)})}};o(Be),(0,F.onMounted)(()=>{he.value&&Fr(he.value,Be)}),(0,F.onBeforeUnmount)(()=>{he.value&&Vr(he.value)});let Re=(0,F.ref)(null);(0,F.watchEffect)(I=>{let W=he.value;if(Re.value?.dispose(),Re.value=null,!H.value||!W)return;let $=Ir({doc:W.ownerDocument,wrapper:W,polygons:u.value,directionalLight:v.value,ambientLight:Y.value});if(!$)return;let Z=()=>{let pe=P?.store.getState().cameraState;return{rotX:pe?.rotX??65,rotY:pe?.rotY??45,meshRotation:e.rotation}};Re.value=$,$.render(Z());let J=P?.store.subscribe(()=>{$.syncCamera(Z())});I(()=>{J?.(),$.dispose(),Re.value===$&&(Re.value=null)})});let re=null;function Pe(I,W,$){let Z=[];if(typeof document<"u"&&typeof document.elementsFromPoint=="function"){let ve=document.elementsFromPoint(W,$),Fe=new Set;for(let Me of ve){let Ee=Lt(Me);Ee&&!Fe.has(Ee)&&(Fe.add(Ee),Z.push({object:Ee}))}}let J=0,pe=0,Ce=P?.cameraElRef.value;if(Ce){let ve=Ce.getBoundingClientRect();ve.width>0&&ve.height>0&&(J=(W-ve.left)/ve.width*2-1,pe=-(($-ve.top)/ve.height*2-1))}let xe=0;return re&&(xe=Math.hypot(W-re.x,$-re.y)),{object:Z[0]?.object??Be,eventObject:Be,intersections:Z,pointer:{x:J,y:pe},delta:xe,nativeEvent:I,stopPropagation:()=>I.stopPropagation()}}function ne(I,W,$,Z){I&&I(Pe(W,$,Z))}return()=>{let W={transform:(0,ee.buildPolyMeshTransform)({position:e.position,scale:e.scale,rotation:e.rotation}),...S.value??void 0,...n.style,...q.value??void 0},$=Object.fromEntries(Object.entries(n).filter(([j])=>j!=="style"&&j!=="class")),Z=`polycss-mesh${H.value?" polycss-voxel-mesh":""}${e.class?` ${e.class}`:""}`,J={};e.onClick&&(J.onClick=j=>{let V=j;ne(e.onClick,V,V.clientX,V.clientY)}),e.onContextMenu&&(J.onContextmenu=j=>{let V=j;ne(e.onContextMenu,V,V.clientX,V.clientY)}),e.onDoubleClick&&(J.onDblclick=j=>{let V=j;ne(e.onDoubleClick,V,V.clientX,V.clientY)}),e.onWheel&&(J.onWheel=j=>{let V=j;ne(e.onWheel,V,V.clientX,V.clientY)}),J.onPointerdown=j=>{let V=j;re={x:V.clientX,y:V.clientY},ne(e.onPointerDown,V,V.clientX,V.clientY)},J.onPointerup=j=>{let V=j;ne(e.onPointerUp,V,V.clientX,V.clientY),re=null},e.onPointerMove&&(J.onPointermove=j=>{let V=j;ne(e.onPointerMove,V,V.clientX,V.clientY)}),(e.onPointerOver||e.onPointerEnter)&&(J.onPointerenter=j=>{let V=j;ne(e.onPointerOver,V,V.clientX,V.clientY),ne(e.onPointerEnter,V,V.clientX,V.clientY)}),(e.onPointerOut||e.onPointerLeave)&&(J.onPointerleave=j=>{let V=j;ne(e.onPointerOut,V,V.clientX,V.clientY),ne(e.onPointerLeave,V,V.clientX,V.clientY)}),e.onPointerCancel&&(J.onPointercancel=j=>{let V=j;ne(e.onPointerCancel,V,V.clientX,V.clientY),re=null});let pe=e.id?{"data-poly-mesh-id":e.id}:{};if(e.src&&i.loading.value&&i.polygons.value.length===0)return(0,F.h)("div",{ref:he,class:`polycss-mesh polycss-mesh-loading${e.class?` ${e.class}`:""}`,style:W,...pe,...J,...$},t.fallback?.()??[]);if(e.src&&i.error.value&&i.polygons.value.length===0)return(0,F.h)("div",{ref:he,class:`polycss-mesh polycss-mesh-error${e.class?` ${e.class}`:""}`,style:W,...pe,...J,...$},t.error?.({error:i.error.value})??[]);let Ce=u.value,xe=t.polygon?Ce.map((j,V)=>(0,F.h)("template",{key:V},t.polygon?.({polygon:j,index:V}))):H.value?[]:k.entries.value.map((j,V)=>{if(j)return Et({entry:j,page:k.pages.value[j.pageIndex],textureLighting:C.value,textureImageRendering:w.value,solidPaintDefaults:K.value});let be=k.plans.value[V],Ue=be?(0,Qe.resolvePolyTextureLeafGeometry)(be,{imageRendering:w.value,backend:z.value,projection:B.value}):null;if(be&&Ue)return At({plan:be,geometry:Ue});if(!be||be.texture)return null;if((0,le.isProjectiveQuadPlan)(be))return Mt({entry:be,textureLighting:C.value,solidPaintDefaults:K.value});if((0,le.isSolidTrianglePlan)(be))return Ct({entry:be,textureLighting:C.value,solidPaintDefaults:K.value});let _e=L.value?.disable?.includes("i")?null:(0,Qe.cornerShapeGeometryForPlan)(be);return _e?jn({entry:be,geometry:_e,textureLighting:C.value,solidPaintDefaults:K.value}):Tt({entry:be,textureLighting:C.value,solidPaintDefaults:K.value,forceBorderShape:!k.useFullRectSolid.value})}),ve=t.default?.()??[],Fe=_.value,Me=Fe?[Fe]:[],Ee=ge.value,$e=f?.value?.sceneEl??null,ce=$e&&Ee.length>0?[(0,F.h)(F.Teleport,{to:$e},Ee)]:[];return(0,F.h)("div",{ref:he,class:Z,style:W,...pe,...J,...$},[...Me,...ce,...xe,...ve])}}});var it=require("vue"),_t=require("@layoutit/polycss-core");function ji(e,t,n,o,r){let a=typeof n=="number"?n:n?.[0]??1,i=typeof n=="number"?n:n?.[1]??1,l=typeof n=="number"?n:n?.[2]??1,s=a!==1||i!==1||l!==1,d=!!t&&(!!t[0]||!!t[1]||!!t[2]),m=(e?.[1]??0)*_t.BASE_TILE,g=(e?.[0]??0)*_t.BASE_TILE,u=(e?.[2]??0)*_t.BASE_TILE,h=[];return h.push(`translate3d(${m}px, ${g}px, ${u}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}, ${l})`),h.push(`translate(${-o/2}px, ${-r/2}px)`),h.join(" ")}var Zn=(0,it.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,it.computed)(()=>e.width*_t.BASE_TILE),n=(0,it.computed)(()=>e.height*_t.BASE_TILE),o=(0,it.computed)(()=>ji(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,it.h)("div",{class:e.class?`polycss-iframe ${e.class}`:"polycss-iframe",style:r},[(0,it.h)("iframe",a)])}}});var Ht=require("vue");var Kn=(0,Ht.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,Ht.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,Ht.h)(ue,{polygons:t.value,castShadow:!1,class:e.class?`polycss-ground ${e.class}`:"polycss-ground"})}});var Qn=require("vue");function Hr(e){return typeof e=="function"?(0,Qn.computed)(()=>{let{texture:t,key:n}=e();return{texture:t,key:n}}):(0,Qn.computed)(()=>({texture:e.texture,key:e.key}))}var Ae=require("vue"),Nr=require("@layoutit/polycss-core");var Yi=4;function dn(e,t=Yi){let n=e.toFixed(t).replace(/\.?0+$/,"");return Number(n)===0||Object.is(Number(n),-0)?"0":`${n}px`}function Xi(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 $i({plan:e,material:t,uvRect:n,className:o,style:r,domAttrs:a,pointerEvents:i="auto",imageRendering:l}){let{u0:s,u1:d,v0:m,v1:g}=n,u=d-s,h=g-m,f=1/u,P=1/h,b=Math.max(m,g),A=s/u,C=(1-b)/h,L={transform:`matrix3d(${e.canonicalMatrix})`,backgroundImage:`url(${t.texture})`,backgroundSize:`${dn(f)} ${dn(P)}`,backgroundPosition:`${dn(-A)} ${dn(-C)}`,backgroundRepeat:"no-repeat",imageRendering:l==="pixelated"?"pixelated":void 0,pointerEvents:i==="none"?"none":void 0,...r},y=e.polygon.data?Object.fromEntries(Object.entries(e.polygon.data).map(([w,z])=>[`data-${w}`,String(z)])):{},R=o?.trim()||void 0;return(0,Ae.h)("i",{class:R,style:L,"data-poly-index":String(e.index),"data-polycss-leaf":"polygon","data-polycss-texture-backend":"image","data-polycss-texture-ready":"true","data-polycss-texture-image-rendering":l??"auto","data-polycss-texture-projection":"affine","data-polycss-texture-lighting":"source","data-polycss-double-sided":e.polygon.doubleSided?"true":void 0,...y,...a})}var Jn=(0,Ae.defineComponent)({name:"Poly",inheritAttrs:!1,props:{vertices:{type:Array,required:!0},color:{type:String},texture:{type:String},textureImageSource:{type:Object,default:void 0},texturePresentation:{type:Object,default:void 0},uvs:{type:Array,default:void 0},data:{type:Object,default:void 0},doubleSided:{type:Boolean,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},textureLeafSizing:{type:String,default:void 0},textureImageRendering:{type:String,default:void 0},textureBackend:{type:String,default:void 0},textureProjection:{type: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,Ae.computed)(()=>e.textureLighting??e.context?.textureLighting??"baked"),o=(0,Ae.computed)(()=>e.textureQuality??e.context?.textureQuality),r=(0,Ae.computed)(()=>e.textureLeafSizing??e.context?.textureLeafSizing),a=(0,Ae.computed)(()=>e.textureImageRendering??e.context?.textureImageRendering),i=(0,Ae.computed)(()=>e.textureBackend??e.context?.textureBackend),l=(0,Ae.computed)(()=>e.textureProjection??e.context?.textureProjection),s=(0,Ae.computed)(()=>e.material?.texture??e.texture),d=(0,Ae.computed)(()=>e.material&&e.uvs?Xi(e.uvs):null),m=(0,Ae.computed)(()=>{let h=e.context?.tileSize??50;return bt({vertices:e.vertices,color:e.baseColor??e.color,texture:s.value,textureImageSource:e.textureImageSource,texturePresentation:e.texturePresentation,uvs:e.uvs,data:e.data,doubleSided:e.doubleSided,material:e.material},0,{tileSize:h,layerElevation:e.context?.layerElevation??h,directionalLight:e.context?.directionalLight})}),g=(0,Ae.computed)(()=>d.value?[]:[m.value]),u=St(g,n,o,r,i,a,l);return()=>{let h=m.value,f=u.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 b=P.length>0?P.join(" "):void 0,A={};if(e.data)for(let[R,w]of Object.entries(e.data))A[`data-${R}`]=String(w);let C={...t,...A},L=Object.fromEntries(Object.entries(C).filter(([R])=>R!=="class"&&R!=="style")),y;if(d.value&&e.material&&h)y=$i({plan:h,material:e.material,uvRect:d.value,className:C.class??void 0,style:C.style,domAttrs:L,pointerEvents:e.pointerEvents??"auto",imageRendering:a.value});else if(f)y=Et({entry:f,page:u.pages.value[f.pageIndex],textureLighting:n.value,textureImageRendering:a.value,className:C.class??void 0,style:C.style,domAttrs:L,pointerEvents:e.pointerEvents??"auto"});else{let R=h?(0,Nr.resolvePolyTextureLeafGeometry)(h,{imageRendering:a.value,backend:i.value,projection:l.value}):null;h&&R&&(y=At({plan:h,geometry:R,className:C.class??void 0,style:C.style,domAttrs:L,pointerEvents:e.pointerEvents??"auto"}))}return!y&&h&&!h.texture&&(y=(0,le.isSolidTrianglePlan)(h)?Ct({entry:h,textureLighting:n.value,className:C.class??void 0,style:C.style,domAttrs:L,pointerEvents:e.pointerEvents??"auto"}):(0,le.isProjectiveQuadPlan)(h)?Mt({entry:h,textureLighting:n.value,className:C.class??void 0,style:C.style,domAttrs:L,pointerEvents:e.pointerEvents??"auto"}):Tt({entry:h,textureLighting:n.value,className:C.class??void 0,style:C.style,domAttrs:L,pointerEvents:e.pointerEvents??"auto"})),y?b?(0,Ae.h)("div",{class:"polycss-poly-wrapper",style:{transform:b,position:"absolute",transformStyle:"preserve-3d"}},[y]):y:null}}});var te=require("vue"),fe=require("@layoutit/polycss-core");var eo=(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})}}),to=(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})}}),no=(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})}}),oo=(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})}}),ro=(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})}}),ao=(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})}}),io=(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})}}),so=(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})}}),lo=(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})}}),uo=(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})}}),co=(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 ke=require("vue"),mo=require("@layoutit/polycss-core");var Ui=150,jr=4,Wi=513e-6,qi=10,Gi=3,Yr=16.67,Zi=50,Xr=.1,$r=10,Ur=0,Wr=5e3,Ki=.3,Qi=.05;function Ji(e){return e===!0?-1:e===void 0||e===!1?1:e}function es(e,t,n,o,r){let a=Ji(r),i=e/jr*a,l=t/jr*a;return{rotX:n-l,rotY:((o-i)%360+360)%360}}function qr(e,t,n,o,r){let a=Math.max(.01,n),i=Math.max(.1,Math.cos(o*Math.PI/180)),l=-e/(a*mo.BASE_TILE),s=-t/(a*mo.BASE_TILE*i),d=-r*Math.PI/180,m=Math.cos(d),g=Math.sin(d);return{dWorldX:s*m-l*g,dWorldY:s*g+l*m}}var po=(0,ke.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:Xr},maxZoom:{type:Number,default:$r},minDistance:{type:Number,default:Ur},maxDistance:{type:Number,default:Wr},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,ke.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,l=()=>({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",l())},d=()=>{t("interaction-start",l())},m=()=>{t("interaction-end",l())},g=null,u={x:0,y:0},h=(0,ke.ref)(!1),f=null,P=null,b=null;function A(){let y=a.value;if(!y)return;let R=!1,w={x:0,y:0},z=c=>{if(e.drag&&g===null&&c.isPrimary!==!1){c.preventDefault(),g=c.pointerId,u={x:c.clientX,y:c.clientY},y.style.cursor="grabbing";try{c.target.setPointerCapture(c.pointerId)}catch{}e.animate&&e.animate.pauseOnInteraction!==!1&&(h.value=!0),d()}},B=c=>{if(g===null||c.pointerId!==g||!e.drag)return;c.preventDefault();let x=c.clientX-u.x,v=c.clientY-u.y;u={x:c.clientX,y:c.clientY};let T=r.value,M=T.state;if(c.shiftKey){let{dWorldX:E,dWorldY:O}=qr(x,v,M.zoom,M.rotX,M.rotY);T.update({target:[M.target[0]+E,M.target[1]+O,M.target[2]]})}else{let{rotX:E,rotY:O}=es(x,v,M.rotX,M.rotY,e.invert);T.update({rotX:E,rotY:O})}i(),o.updateCameraFromRef(T),s()},D=c=>{if(g===c.pointerId){g=null,y.style.cursor=e.drag?"grab":"";try{c.target.releasePointerCapture(c.pointerId)}catch{}h.value=!1,m()}},Y=c=>{c.preventDefault()},U=c=>{c.button===2&&(R=!0,w={x:c.clientX,y:c.clientY})},H=c=>{if(!R||!e.drag)return;let x=c.clientX-w.x,v=c.clientY-w.y;w={x:c.clientX,y:c.clientY};let T=r.value,M=T.state,{dWorldX:E,dWorldY:O}=qr(x,v,M.zoom,M.rotX,M.rotY);T.update({target:[M.target[0]+E,M.target[1]+O,M.target[2]]}),i(),o.updateCameraFromRef(T),s()},S=c=>{c.button===2&&R&&(R=!1,m())};y.style.cursor="grab",y.style.touchAction="none",y.style.userSelect="none",y.addEventListener("pointerdown",z),y.addEventListener("pointermove",B),y.addEventListener("pointerup",D),y.addEventListener("pointercancel",D),y.addEventListener("contextmenu",Y),y.addEventListener("mousedown",U),y.addEventListener("mousemove",H),y.addEventListener("mouseup",S),f=()=>{y.removeEventListener("pointerdown",z),y.removeEventListener("pointermove",B),y.removeEventListener("pointerup",D),y.removeEventListener("pointercancel",D),y.removeEventListener("contextmenu",Y),y.removeEventListener("mousedown",U),y.removeEventListener("mousemove",H),y.removeEventListener("mouseup",S),y.style.cursor="",y.style.touchAction="",y.style.userSelect=""}}function C(){let y=a.value;if(!y)return;let R=!1,w=null,z=B=>{if(!e.wheel)return;B.preventDefault();let D=B.deltaMode===1?16:B.deltaMode===2?100:1,Y=B.deltaY*D;B.ctrlKey?Y*=qi:Y*=Gi;let U=r.value;if(e.dolly){let H=e.minDistance??Ur,S=e.maxDistance??Wr,c=Math.max(H,Math.min(S,U.state.distance+Y*Qi));U.update({distance:c})}else{let H=Math.exp(-Y*Wi),S=e.minZoom??Xr,c=e.maxZoom??$r,x=Math.max(S,Math.min(c,U.state.zoom*H));U.update({zoom:x})}i(),o.updateCameraFromRef(U),R||(R=!0,d()),s(),w!==null&&clearTimeout(w),w=setTimeout(()=>{w=null,R=!1,m()},Ui)};y.addEventListener("wheel",z,{passive:!1}),P=()=>{y.removeEventListener("wheel",z),w!==null&&clearTimeout(w)}}function L(){let y=null,R=!1,w=0,z=B=>{if(R)return;let D=e.animate;if(!D){y=requestAnimationFrame(z);return}if(h.value)w=B;else{let Y=Math.min(Zi,w?B-w:Yr);w=B;let H=(D.speed??Ki)*(Y/Yr),S=r.value,c=S.state;if(D.axis==="x"){let x=((c.rotX+H)%360+360)%360;S.update({rotX:x})}else{let x=((c.rotY+H)%360+360)%360;S.update({rotY:x})}i(),o.updateCameraFromRef(S),s()}y=requestAnimationFrame(z)};y=requestAnimationFrame(z),b=()=>{R=!0,y!==null&&cancelAnimationFrame(y),b=null}}return(0,ke.onMounted)(()=>{e.drag&&A(),e.wheel&&C(),e.animate&&L()}),(0,ke.onBeforeUnmount)(()=>{f?.(),P?.(),b?.(),f=null,P=null}),(0,ke.watch)(()=>e.drag,y=>{y&&!f&&A(),!y&&f&&(f(),f=null)}),(0,ke.watch)(()=>e.wheel,y=>{y&&!P&&C(),!y&&P&&(P(),P=null)}),(0,ke.watch)(()=>!!e.animate,y=>{y&&!b&&L(),!y&&b&&b()}),()=>null}});var De=require("vue"),yo=require("@layoutit/polycss-core");var ts=150,Gr=4,ns=513e-6,os=10,rs=3,Zr=16.67,as=50,Kr=.1,Qr=10,Jr=0,ea=5e3,is=.3,ss=.05;function ls(e){return e===!0?-1:e===void 0||e===!1?1:e}function ta(e,t,n,o,r){let a=ls(r),i=e/Gr*a,l=t/Gr*a;return{rotX:n-l,rotY:((o-i)%360+360)%360}}function us(e,t,n,o,r){let a=Math.max(.01,n),i=Math.max(.1,Math.cos(o*Math.PI/180)),l=-e/(a*yo.BASE_TILE),s=-t/(a*yo.BASE_TILE*i),d=-r*Math.PI/180,m=Math.cos(d),g=Math.sin(d);return{dWorldX:s*m-l*g,dWorldY:s*g+l*m}}var fo=(0,De.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:Kr},maxZoom:{type:Number,default:Qr},minDistance:{type:Number,default:Jr},maxDistance:{type:Number,default:ea},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,De.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,l=()=>({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",l())},d=()=>{t("interaction-start",l())},m=()=>{t("interaction-end",l())},g=null,u={x:0,y:0},h=(0,De.ref)(!1),f=null,P=null,b=null;function A(){let y=a.value;if(!y)return;let R=!1,w={x:0,y:0},z=c=>{if(e.drag&&g===null&&c.isPrimary!==!1){c.preventDefault(),g=c.pointerId,u={x:c.clientX,y:c.clientY},y.style.cursor="grabbing";try{c.target.setPointerCapture(c.pointerId)}catch{}e.animate&&e.animate.pauseOnInteraction!==!1&&(h.value=!0),d()}},B=c=>{if(g===null||c.pointerId!==g||!e.drag)return;c.preventDefault();let x=c.clientX-u.x,v=c.clientY-u.y;u={x:c.clientX,y:c.clientY};let T=r.value,M=T.state;if(c.shiftKey){let{rotX:E,rotY:O}=ta(x,v,M.rotX,M.rotY,e.invert);T.update({rotX:E,rotY:O})}else{let{dWorldX:E,dWorldY:O}=us(x,v,M.zoom,M.rotX,M.rotY);T.update({target:[M.target[0]+E,M.target[1]+O,M.target[2]]})}i(),o.updateCameraFromRef(T),s()},D=c=>{if(g===c.pointerId){g=null,y.style.cursor=e.drag?"grab":"";try{c.target.releasePointerCapture(c.pointerId)}catch{}h.value=!1,m()}},Y=c=>{c.preventDefault()},U=c=>{c.button===2&&(R=!0,w={x:c.clientX,y:c.clientY})},H=c=>{if(!R||!e.drag)return;let x=c.clientX-w.x,v=c.clientY-w.y;w={x:c.clientX,y:c.clientY};let T=r.value,M=T.state,{rotX:E,rotY:O}=ta(x,v,M.rotX,M.rotY,e.invert);T.update({rotX:E,rotY:O}),i(),o.updateCameraFromRef(T),s()},S=c=>{c.button===2&&R&&(R=!1,m())};y.style.cursor="grab",y.style.touchAction="none",y.style.userSelect="none",y.addEventListener("pointerdown",z),y.addEventListener("pointermove",B),y.addEventListener("pointerup",D),y.addEventListener("pointercancel",D),y.addEventListener("contextmenu",Y),y.addEventListener("mousedown",U),y.addEventListener("mousemove",H),y.addEventListener("mouseup",S),f=()=>{y.removeEventListener("pointerdown",z),y.removeEventListener("pointermove",B),y.removeEventListener("pointerup",D),y.removeEventListener("pointercancel",D),y.removeEventListener("contextmenu",Y),y.removeEventListener("mousedown",U),y.removeEventListener("mousemove",H),y.removeEventListener("mouseup",S),y.style.cursor="",y.style.touchAction="",y.style.userSelect=""}}function C(){let y=a.value;if(!y)return;let R=!1,w=null,z=B=>{if(!e.wheel)return;B.preventDefault();let D=B.deltaMode===1?16:B.deltaMode===2?100:1,Y=B.deltaY*D;B.ctrlKey?Y*=os:Y*=rs;let U=r.value;if(e.dolly){let H=e.minDistance??Jr,S=e.maxDistance??ea,c=Math.max(H,Math.min(S,U.state.distance+Y*ss));U.update({distance:c})}else{let H=Math.exp(-Y*ns),S=e.minZoom??Kr,c=e.maxZoom??Qr,x=Math.max(S,Math.min(c,U.state.zoom*H));U.update({zoom:x})}i(),o.updateCameraFromRef(U),R||(R=!0,d()),s(),w!==null&&clearTimeout(w),w=setTimeout(()=>{w=null,R=!1,m()},ts)};y.addEventListener("wheel",z,{passive:!1}),P=()=>{y.removeEventListener("wheel",z),w!==null&&clearTimeout(w)}}function L(){let y=null,R=!1,w=0,z=B=>{if(R)return;let D=e.animate;if(!D){y=requestAnimationFrame(z);return}if(h.value)w=B;else{let Y=Math.min(as,w?B-w:Zr);w=B;let H=(D.speed??is)*(Y/Zr),S=r.value,c=S.state;if(D.axis==="x"){let x=((c.rotX+H)%360+360)%360;S.update({rotX:x})}else{let x=((c.rotY+H)%360+360)%360;S.update({rotY:x})}i(),o.updateCameraFromRef(S),s()}y=requestAnimationFrame(z)};y=requestAnimationFrame(z),b=()=>{R=!0,y!==null&&cancelAnimationFrame(y),b=null}}return(0,De.onMounted)(()=>{e.drag&&A(),e.wheel&&C(),e.animate&&L()}),(0,De.onBeforeUnmount)(()=>{f?.(),P?.(),b?.(),f=null,P=null}),(0,De.watch)(()=>e.drag,y=>{y&&!f&&A(),!y&&f&&(f(),f=null)}),(0,De.watch)(()=>e.wheel,y=>{y&&!P&&C(),!y&&P&&(P(),P=null)}),(0,De.watch)(()=>!!e.animate,y=>{y&&!b&&L(),!y&&b&&b()}),()=>null}});var ie=require("vue"),Ie=require("@layoutit/polycss-core");var mn="#ff3653",pn="#8adb00",yn="#2c8fff",cs=.6,ds=.8,ms=1,Je=50,na=60,ps=.6,ys=.0125,fs=.15,gs=.04,hs=1,oa=.02,go=1.04,Ps=.1,xs=.25,ca=1e-4,Jt={0:1,1:0,2:2},ra=[{cssAxis:0,sign:1,key:"x",color:mn},{cssAxis:0,sign:-1,key:"-x",color:mn},{cssAxis:1,sign:1,key:"y",color:pn},{cssAxis:1,sign:-1,key:"-y",color:pn},{cssAxis:2,sign:1,key:"z",color:yn},{cssAxis:2,sign:-1,key:"-z",color:yn}],aa=[{cssAxis:0,key:"x",color:mn},{cssAxis:1,key:"y",color:pn},{cssAxis:2,key:"z",color:yn}],ia=[{perpAxis:2,axisA:0,axisB:1,key:"xy",color:yn},{perpAxis:1,axisA:0,axisB:2,key:"xz",color:pn},{perpAxis:0,axisA:1,axisB:2,key:"yz",color:mn}];function ho(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 fn(e,t){return!t||t<=0?e:Math.round(e/t)*t}function bs(e){return e.replace("-","")[0]}function Po(e,t,n,o){let r=n*Math.PI/180,a=o*Math.PI/180,i=[0,0,0];i[e]=t;let l=i[0]*Math.sin(a)+i[1]*Math.cos(a),s=i[2];return l*Math.sin(r)+s*Math.cos(r)<0}function vs(e){if(e.length===0)return na;let t=1/0,n=1/0,o=1/0,r=-1/0,a=-1/0,i=-1/0;for(let l of e)for(let s of l.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*ps:na}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 l of e)for(let s of l.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 sa(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,l=(a.top-r.top)/t,s=i*i+l*l;if(s<ca)return;let d=e.target.getPosition()??[0,0,0];e.onMouseDown?.(),e.onDraggingChanged?.(!0);let m=u=>{let h=u.clientX-e.startClientX,f=u.clientY-e.startClientY,P=(h*i+f*l)/s;P=fn(P,e.translationSnap);let b=[d[0]+P*n[0],d[1]+P*n[1],d[2]+P*n[2]];e.onObjectChange?.({object:e.target,position:b}),e.onChange?.()},g=()=>{window.removeEventListener("pointermove",m),window.removeEventListener("pointerup",g),window.removeEventListener("pointercancel",g);let u=h=>{h.stopPropagation(),h.stopImmediatePropagation()};window.addEventListener("click",u,{capture:!0,once:!0}),setTimeout(()=>window.removeEventListener("click",u,!0),0),e.onMouseUp?.(),e.onDraggingChanged?.(!1)};window.addEventListener("pointermove",m),window.addEventListener("pointerup",g),window.addEventListener("pointercancel",g)}function la(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(g){let u=e.wrapper.ownerDocument.createElement("div");u.style.position="absolute",u.style.left="0",u.style.top="0",u.style.width="0",u.style.height="0",u.style.transform=`translate3d(${g[0]*o}px, ${g[1]*o}px, ${g[2]*o}px)`,e.wrapper.appendChild(u);let h=e.wrapper.getBoundingClientRect(),f=u.getBoundingClientRect();return e.wrapper.removeChild(u),{x:(f.left-h.left)/o,y:(f.top-h.top)/o}}let a=r(t),i=r(n),l=a.x*i.y-i.x*a.y;if(Math.abs(l)<ca)return;let s=e.target.getPosition()??[0,0,0];e.onMouseDown?.(),e.onDraggingChanged?.(!0);let d=g=>{let u=g.clientX-e.startClientX,h=g.clientY-e.startClientY,f=(i.y*u-i.x*h)/l,P=(-a.y*u+a.x*h)/l;f=fn(f,e.translationSnap),P=fn(P,e.translationSnap);let b=[s[0]+f*t[0]+P*n[0],s[1]+f*t[1]+P*n[1],s[2]+f*t[2]+P*n[2]];e.onObjectChange?.({object:e.target,position:b}),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 ua(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],l=(0,Ie.quatFromEulerXYZ)(i);e.onMouseDown?.(),e.onDraggingChanged?.(!0);let s=m=>{let g=Math.atan2(m.clientY-o,m.clientX-n),u=g-r;u>Math.PI?u-=2*Math.PI:u<-Math.PI&&(u+=2*Math.PI),a+=u,r=g;let h=a*180/Math.PI;h=fn(h,e.rotationSnap);let f=[0,0,0];f[e.cssAxis]=1;let P=(0,Ie.quatFromAxisAngle)(f,h*Math.PI/180),b=(0,Ie.eulerXYZFromQuat)((0,Ie.quatMultiply)(P,l));e.onObjectChange?.({object:e.target,rotation:b}),e.onChange?.()},d=()=>{window.removeEventListener("pointermove",s),window.removeEventListener("pointerup",d),window.removeEventListener("pointercancel",d);let m=g=>{g.stopPropagation(),g.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 Cs(e){return!!e&&typeof e=="object"&&"value"in e}function Ts(e){return e?Cs(e)?e.value??null:e:null}var xo=(0,ie.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,ie.ref)(null),o=(0,ie.ref)(null),r=(0,ie.ref)(new Map),a=(0,ie.computed)(()=>Ts(e.object)),i=(0,ie.ref)(0);(0,ie.onMounted)(()=>{i.value++});let l=(0,ie.ref)(0),s=(0,ie.inject)(ye,void 0),d=null;(0,ie.onMounted)(()=>{let c=s?.store;c&&(d=c.subscribe(()=>{l.value++}))}),(0,ie.onBeforeUnmount)(()=>{d?.()});function m(){l.value;let c=s?.store.getState().cameraState;return{rotX:c?.rotX??65,rotY:c?.rotY??45}}let g=(0,ie.computed)(()=>(i.value,vs(a.value?.getPolygons()??[]))),u=(0,ie.computed)(()=>g.value*e.size);function h(c){return o.value===c?ms:n.value===c?ds:cs}function f(){t("change")}function P(c){t("objectChange",c)}function b(c){t("draggingChanged",c)}function A(){t("mouseDown")}function C(){t("mouseUp")}let L=(0,ie.inject)(ye,void 0),y=null;(0,ie.onMounted)(()=>{let c=L?.cameraElRef.value;if(!c)return;let x=v=>{let T=a.value;if(!T||!e.enabled||v.target?.closest(".polycss-transform-gizmo"))return;let E={x:e.showX,y:e.showY,z:e.showZ};if(e.mode==="translate")for(let k of ia){let N=["x","y","z"][k.axisA],X=["x","y","z"][k.axisB];if(!E[N]||!E[X])continue;let K=document.querySelector(`.polycss-transform-plane--${k.key}`);if(!K||!Rt(K,v.clientX,v.clientY))continue;v.preventDefault(),v.stopPropagation();let q=K.closest("[data-poly-transform-controls]");if(!q)return;o.value=k.key,la({axisA:k.axisA,axisB:k.axisB,probeDistanceCss:u.value,wrapper:q,target:T,startClientX:v.clientX,startClientY:v.clientY,translationSnap:e.translationSnap,onChange:f,onObjectChange:P,onMouseDown:A,onMouseUp:C,onDraggingChanged:_=>{_||(o.value=null),b(_)}});return}let O=e.mode==="translate"?ra:aa;for(let k of O){let N=k.key.replace("-","")[0];if(!E[N])continue;let X=document.querySelector(`.polycss-transform-${e.mode==="translate"?"arrow":"ring"}--${k.key}`);if(!X||!(e.mode==="rotate"?Rt(X,v.clientX,v.clientY):Rt(X,v.clientX,v.clientY)))continue;v.preventDefault(),v.stopPropagation();let q=X.closest("[data-poly-transform-controls]");if(!q)return;if(o.value=k.key,e.mode==="translate"){let _=k;sa({cssAxis:_.cssAxis,sign:_.sign,shaftLengthCss:u.value,wrapper:q,target:T,startClientX:v.clientX,startClientY:v.clientY,translationSnap:e.translationSnap,onChange:f,onObjectChange:P,onMouseDown:A,onMouseUp:C,onDraggingChanged:de=>{de||(o.value=null),b(de)}})}else ua({cssAxis:k.cssAxis,wrapper:q,target:T,startClientX:v.clientX,startClientY:v.clientY,rotationSnap:e.rotationSnap,onChange:f,onObjectChange:P,onMouseDown:A,onMouseUp:C,onDraggingChanged:_=>{_||(o.value=null),b(_)}});return}};c.addEventListener("pointerdown",x),y=()=>c.removeEventListener("pointerdown",x)}),(0,ie.onBeforeUnmount)(()=>{y?.()});let R=(0,ie.computed)(()=>{if(e.mode!=="translate")return[];i.value;let x=u.value/Je,{rotX:v,rotY:T}=m();return ra.filter(M=>({x:e.showX,y:e.showY,z:e.showZ})[bs(M.key)]).map(M=>{let E=h(M.key),O=Po(M.cssAxis,M.sign,v,T);return{spec:M,polygons:(0,Ie.arrowPolygons)({axis:Jt[M.cssAxis],sign:M.sign,shaftLength:x,shaftHalfThickness:x*ys,headLength:x*fs,headHalfThickness:x*gs,color:ho(M.color,E),shaft:!O})}})}),w=(0,ie.computed)(()=>{if(e.mode!=="translate")return[];i.value;let x=u.value/Je,v={x:e.showX,y:e.showY,z:e.showZ},T=["x","y","z"],{rotX:M,rotY:E}=m(),O=x*xs;return ia.filter(k=>v[T[k.axisA]]&&v[T[k.axisB]]).map(k=>{let N=h(k.key),X=Jt[k.perpAxis],K=(X+1)%3,q=(X+2)%3,_=Jt[K],de=Jt[q],ge=Po(_,1,M,E)?-1:1,oe=Po(de,1,M,E)?-1:1;return{spec:k,polygons:(0,Ie.planePolygons)({axis:X,size:x*Ps,offset:[ge*O,oe*O],color:ho(k.color,N)})}})}),z=(0,ie.computed)(()=>{if(e.mode!=="rotate")return[];i.value;let v=u.value*hs/Je*go;return aa.filter(T=>({x:e.showX,y:e.showY,z:e.showZ})[T.key]).map(T=>{let M=h(T.key);return{spec:T,polygons:(0,Ie.ringQuadPolygons)({axis:Jt[T.cssAxis],outerRadius:v,color:ho(T.color,M)})}})}),B=(1-oa)/go,D=(1+oa)/go;function Y(c){return x=>{if(!e.enabled)return;let v=a.value;if(!v)return;x.stopPropagation();let M=x.eventObject.element?.closest("[data-poly-transform-controls]");M&&(o.value=c.key,sa({cssAxis:c.cssAxis,sign:c.sign,shaftLengthCss:u.value,wrapper:M,target:v,startClientX:x.nativeEvent.clientX,startClientY:x.nativeEvent.clientY,translationSnap:e.translationSnap,onChange:f,onObjectChange:P,onMouseDown:A,onMouseUp:C,onDraggingChanged:E=>{E||(o.value=null),b(E)}}))}}function U(c){return x=>{if(!e.enabled)return;let v=a.value;if(!v)return;x.stopPropagation();let M=x.eventObject.element?.closest("[data-poly-transform-controls]");M&&(o.value=c.key,la({axisA:c.axisA,axisB:c.axisB,probeDistanceCss:u.value,wrapper:M,target:v,startClientX:x.nativeEvent.clientX,startClientY:x.nativeEvent.clientY,translationSnap:e.translationSnap,onChange:f,onObjectChange:P,onMouseDown:A,onMouseUp:C,onDraggingChanged:E=>{E||(o.value=null),b(E)}}))}}function H(c){return x=>{if(!e.enabled)return;let v=a.value;if(!v)return;let T=x.eventObject.element;x.stopPropagation();let M=T?.closest("[data-poly-transform-controls]");M&&(o.value=c.key,ua({cssAxis:c.cssAxis,wrapper:M,target:v,startClientX:x.nativeEvent.clientX,startClientY:x.nativeEvent.clientY,rotationSnap:e.rotationSnap,onChange:f,onObjectChange:P,onMouseDown:A,onMouseUp:C,onDraggingChanged:E=>{E||(o.value=null),b(E)}}))}}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 x=c.getPosition()??[0,0,0],v=Ss(c.getPolygons()),T=x[1]*Je+v[0],M=x[0]*Je+v[1],E=x[2]*Je+v[2],O={transform:`translate3d(${T}px, ${M}px, ${E}px)`,position:"absolute",transformStyle:"preserve-3d",zIndex:1e3},k=e.mode==="translate"?[...R.value.map(({spec:N,polygons:X})=>(0,ie.h)(ue,{key:`arrow-${N.key}`,polygons:X,class:`polycss-transform-gizmo polycss-transform-arrow polycss-transform-arrow--${N.key}`,textureLighting:"baked",onPointerDown:Y(N),...S(N.key)})),...w.value.map(({spec:N,polygons:X})=>(0,ie.h)(ue,{key:`plane-${N.key}`,polygons:X,class:`polycss-transform-gizmo polycss-transform-plane polycss-transform-plane--${N.key}`,textureLighting:"baked",onPointerDown:U(N),...S(N.key)}))]:z.value.map(({spec:N,polygons:X})=>(0,ie.h)(ue,{key:N.key,polygons:X,class:`polycss-transform-gizmo polycss-transform-ring polycss-transform-ring--${N.key}`,style:{"--ring-inner-ratio":B,"--ring-outer-ratio":D},textureLighting:"baked",onPointerDown:H(N),...S(N.key)}));return(0,ie.h)("div",{class:"polycss-transform-controls","data-poly-transform-controls":"","data-poly-mode":e.mode,"data-poly-space":e.space,style:O},k)}}});var et=require("vue"),ma=require("@layoutit/polycss-core");var Ms={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 bo(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 pa=new Set(["KeyW","ArrowUp"]),ya=new Set(["KeyS","ArrowDown"]),fa=new Set(["KeyA","ArrowLeft"]),ga=new Set(["KeyD","ArrowRight"]),ha=new Set(["Space"]),vo=new Set(["ControlLeft","ControlRight"]);function da(e){return pa.has(e)||ya.has(e)||fa.has(e)||ga.has(e)||ha.has(e)||vo.has(e)}function Es(){return{change:[],start:[],end:[]}}function Nt(e,t){let n=[...e[t]];for(let o of n)try{o()}catch{}}var So=(0,et.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,et.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:l}=o,s=bo(Ms,e),d=[0,0,0],m=null,g=0,u=!1,h=!1,f=!1,P=new Set,b=0,A=0,C=Es();function L(c,x){let v=c*Math.PI/180,T=x*Math.PI/180;return[-Math.sin(v)*Math.cos(T),-Math.sin(v)*Math.sin(T),-Math.cos(v)]}function y(){let c=i.value,x=c?getComputedStyle(c).perspective:"",v=parseFloat(x);return(Number.isFinite(v)&&v>0?v:32e3)/ma.BASE_TILE}function R(){let c=a.value.state,x=L(c.rotX??90,c.rotY??0),v=y();return[d[0]+x[0]*v,d[1]+x[1]*v,d[2]+x[2]*v]}function w(){let c=R(),x=a.value;x.update({target:c}),l(),r.updateCameraFromRef(x)}let z=.05;function B(c){if(m===null||u)return;let x=Math.min(z,g?(c-g)/1e3:.0167);if(g=c,s.enabled){let v=!1,T=a.value.state;if(s.moveEnabled){let k=0,N=0;for(let X of P)pa.has(X)?k+=1:ya.has(X)?k-=1:ga.has(X)?N+=1:fa.has(X)&&(N-=1);if(k!==0||N!==0){let K=(T.rotY??0)*Math.PI/180,q=-Math.cos(K),_=-Math.sin(K),de=-Math.sin(K),ge=Math.cos(K),oe=Math.hypot(k,N)||1,me=s.moveSpeed*x;d[0]+=(q*k+de*N)/oe*me,d[1]+=(_*k+ge*N)/oe*me,v=!0}}let E=s.crouchEnabled&&(P.has("ControlLeft")||P.has("ControlRight"))?s.crouchHeight:s.eyeHeight;s.jumpEnabled&&(b!==0||A>0)?(b-=s.gravity*x,A+=b*x,A<=0&&(A=0,b=0)):s.jumpEnabled||(A=0,b=0);let O=s.groundZ+E+A;if(Math.abs(d[2]-O)>1e-4&&(d[2]=O,v=!0),v){let k=R(),N=a.value;N.update({target:k}),l(),r.updateCameraFromRef(N),Nt(C,"change");try{t("change",[d[0],d[1],d[2]])}catch{}}}m=requestAnimationFrame(B)}function D(){m!==null||u||(g=0,m=requestAnimationFrame(B))}function Y(){m!==null&&(cancelAnimationFrame(m),m=null)}let U=null;function H(){let c=i.value;if(!c)return;let x=c.ownerDocument??document,v=x.defaultView??globalThis,T=()=>{if(!(!s.enabled||!s.lookEnabled||u||h))try{c.requestPointerLock()}catch{}},M=()=>{let _=x.pointerLockElement===c;if(_!==h){if(h=_,_){f=!0,Nt(C,"start");try{t("interaction-start",[d[0],d[1],d[2]])}catch{}}else if(f){f=!1,Nt(C,"end");try{t("interaction-end",[d[0],d[1],d[2]])}catch{}}}},E=_=>{if(!h||u||!s.enabled||!s.lookEnabled)return;let de=_.movementX??0,ge=_.movementY??0;if(de===0&&ge===0)return;let oe=a.value,me=oe.state,he=s.lookSensitivity,Be=s.invertY?-1:1,Re=(((me.rotY??0)-de*he)%360+360)%360,re=(me.rotX??90)-ge*he*Be;re<s.minPitch?re=s.minPitch:re>s.maxPitch&&(re=s.maxPitch);let Pe=L(re,Re),ne=y(),I=[d[0]+Pe[0]*ne,d[1]+Pe[1]*ne,d[2]+Pe[2]*ne];oe.update({rotX:re,rotY:Re,target:I}),l(),r.updateCameraFromRef(oe),Nt(C,"change");try{t("change",[d[0],d[1],d[2]])}catch{}},O=_=>{if(!(!s.enabled||u)&&da(_.code)&&!(!h&&!s.moveEnabled)){if(ha.has(_.code)){if(!s.jumpEnabled)return;_.preventDefault(),!P.has(_.code)&&b===0&&A===0&&(b=s.jumpVelocity),P.add(_.code);return}vo.has(_.code)&&!s.crouchEnabled||!s.moveEnabled&&!vo.has(_.code)||(_.preventDefault(),P.add(_.code))}},k=_=>{da(_.code)&&P.delete(_.code)},N=()=>{P.clear()};c.addEventListener("click",T),x.addEventListener("pointerlockchange",M),x.addEventListener("mousemove",E),v.addEventListener("keydown",O),v.addEventListener("keyup",k),v.addEventListener("blur",N);let X=v.getComputedStyle(c).perspective,K=parseFloat(X),q=Number.isFinite(K)&&K>0?K:2e3;c.style.setProperty("--polycss-fpv-perspective",`${q}px`),c.classList.add("polycss-fpv-host"),U=()=>{if(c.removeEventListener("click",T),x.removeEventListener("pointerlockchange",M),x.removeEventListener("mousemove",E),v.removeEventListener("keydown",O),v.removeEventListener("keyup",k),v.removeEventListener("blur",N),c.style.cursor="",c.classList.remove("polycss-fpv-host"),c.style.removeProperty("--polycss-fpv-perspective"),P.clear(),h)try{x.exitPointerLock()}catch{}}}n({update(c){s=bo(s,c);let x=i.value;x&&!u&&(x.style.cursor=s.lookEnabled?"crosshair":"")},resume(){if(!u)return;u=!1;let c=i.value;c&&(c.style.cursor=s.lookEnabled?"crosshair":""),D()},pause(){if(u)return;u=!0,Y();let c=i.value;if(c&&(c.style.cursor=""),f){f=!1,Nt(C,"end");try{t("interaction-end",[d[0],d[1],d[2]])}catch{}}},destroy(){u=!0,Y()},lock(){if(!s.enabled||!s.lookEnabled||u)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],w(),Nt(C,"change");try{t("change",[d[0],d[1],d[2]])}catch{}},addEventListener(c,x){let v=C[c];v.includes(x)||v.push(x)},removeEventListener(c,x){let v=C[c],T=v.indexOf(x);T>=0&&v.splice(T,1)},hasEventListener(c,x){return C[c].includes(x)}}),(0,et.onMounted)(()=>{let c=i.value;if(!c)return;u=!1,h=!1,f=!1,P.clear(),b=0,A=0;let v=a.value.state.target??[0,0,0];d[0]=v[0],d[1]=v[1],d[2]=s.groundZ+s.eyeHeight,w(),c.style.cursor=s.lookEnabled?"crosshair":"",H(),D()}),(0,et.onBeforeUnmount)(()=>{u=!0,Y(),U?.(),U=null});let S=["enabled","lookEnabled","moveEnabled","jumpEnabled","crouchEnabled","lookSensitivity","invertY","moveSpeed","jumpVelocity","gravity","eyeHeight","crouchHeight","groundZ","minPitch","maxPitch"];for(let c of S)(0,et.watch)(()=>e[c],()=>{s=bo(s,e);let x=i.value;x&&!u&&(x.style.cursor=s.lookEnabled?"crosshair":"")});return()=>null}});var Se=require("vue");var jt=Symbol("polycss.selection"),Co=(0,Se.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,Se.reactive)({selected:[]}),r=(0,Se.computed)(()=>o.selected);function a(m){let g=e.filter?e.filter(m):m;o.selected=g,t("change",g)}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(g=>g!==m))},toggle:m=>{o.selected.includes(m)?a(o.selected.filter(g=>g!==m)):e.multiple?a([...o.selected,m]):a([m])},clear:()=>a([]),has:m=>o.selected.includes(m)};(0,Se.provide)(jt,{selected:r,api:i});let l=(0,Se.inject)(ye,void 0),s=(m,g)=>cn(m,g,u=>!u.closest("[data-poly-transform-controls]")),d=null;return(0,Se.onMounted)(()=>{let m=l?.cameraElRef.value;if(!m)return;let g=u=>{if(u.target?.closest("[data-poly-transform-controls]"))return;let f=Lt(u.target)??s(u.clientX,u.clientY);if(!f){t("pointerMissed",u),e.clearOnMiss&&a([]);return}e.multiple&&(u.shiftKey||u.metaKey||u.ctrlKey)?i.toggle(f):o.selected.length===1&&o.selected[0]===f?a([]):a([f])};m.addEventListener("click",g),d=()=>m.removeEventListener("click",g)}),(0,Se.onBeforeUnmount)(()=>{d?.()}),()=>(0,Se.h)("div",{style:{display:"contents"},"data-poly-select":""},n.default?.())}});function To(){let e=(0,Se.inject)(jt,void 0);return e?e.selected:(0,Se.ref)([])}function Mo(){let e=(0,Se.inject)(jt,void 0);if(!e)throw new Error("polycss: usePolySelectionApi must be used inside <PolySelect>.");return e.api}var Yt=require("vue"),Pa=require("@layoutit/polycss-core");var Eo=(0,Yt.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,Yt.computed)(()=>(0,Pa.axesHelperPolygons)({size:e.size,thickness:e.thickness,negative:e.negative,xColor:e.xColor,yColor:e.yColor,zColor:e.zColor}));return()=>(0,Yt.h)(ue,{polygons:t.value,merge:!1})}});var dt=require("vue"),xa=require("@layoutit/polycss-core");var Ao=(0,dt.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,dt.computed)(()=>e.color??e.light.color??"#ffd54a"),n=(0,dt.computed)(()=>(0,xa.octahedronPolygons)({center:[0,0,0],size:e.size,color:t.value})),o=(0,dt.computed)(()=>{let r=e.light.direction,a=r[0],i=r[1],l=r[2],s=Math.hypot(a,i,l)||1,d=e.target?.[0]??0,m=e.target?.[1]??0,g=e.target?.[2]??0;return[d+a/s*e.distance,m+i/s*e.distance,g+l/s*e.distance]});return()=>(0,dt.h)(ue,{polygons:n.value,position:o.value,merge:!1})}});var Lo={quad:0,clippedSolid:0,atlas:0,stableTriangle:0},Ro={ready:!0,textureLeafCount:0,readyTextureLeafCount:0,pendingTextureLeafCount:0,atlasTextureLeafCount:0,imageTextureLeafCount:0};function wo(){return{ready:!0,leafCount:0,atlasCount:0,imageCount:0,pendingCount:0,sizingCounts:{canonical:0,local:0,raster:0,image:0,unknown:0},imageRenderingCounts:{auto:0,pixelated:0,unknown:0},projectionCounts:{affine:0,projective:0,fallback:0,unknown:0},minLeafWidth:0,maxLeafWidth:0,minLeafHeight:0,maxLeafHeight:0,doubleSidedCount:0}}function Oo(){return{runtimeAtlasUrlCount:0,snapshotAtlasCount:0,snapshotBackgroundCount:0,selfContained:!0}}function gn(){return{rootFound:!1,projection:"unknown",perspectiveStyle:"",appliedPerspectiveStyle:""}}var As={polygonCount:0,mountedPolygonLeafCount:0,shadowLeafCount:0,surfaceLeafCounts:Lo,textureReadiness:Ro,textureStats:wo(),snapshotStats:Oo(),cameraStats:gn(),bucketCount:0};function hn(e){return typeof e=="number"?{polygonCount:e}:e??{}}function wt(e,t){return e.querySelectorAll(t).length}function ba(e,t){return(Sa(e,t)?1:0)+wt(e,t)}function va(e){if(!e)return!1;let t=/url\((?:"([^"]*)"|'([^']*)'|([^)]*))\)/g,n;for(;n=t.exec(e);){let o=(n[1]??n[2]??n[3]??"").trim();if(o&&!o.startsWith("data:"))return!0}return!1}function Ls(e){let t=0,n=e instanceof HTMLElement?e:null;n&&va(n.getAttribute("style"))&&t++;for(let o of Array.from(e.querySelectorAll("[style]")))o instanceof HTMLElement&&va(o.getAttribute("style"))&&t++;return t}function Sa(e,t){let n=e;return typeof n.matches=="function"&&n.matches(t)}function Pn(e,t){if(!t)return[e];let n=[];return Sa(e,t)&&n.push(e),n.push(...Array.from(e.querySelectorAll(t))),n}function Rs(e){switch(e.toLowerCase()){case"b":return"quad";case"i":return"clippedSolid";case"s":return"atlas";case"u":return"stableTriangle";default:return null}}function ws(e){if(e==null||e==="")return;let t=Number.parseInt(e,10);return Number.isFinite(t)?t:void 0}function Xt(e){if(e==null||e==="")return;let t=Number(e);return Number.isFinite(t)?t:void 0}function Os(e){if(e==null||e==="")return;let t=e.split(",").map(n=>Number(n));if(!(t.length!==3||t.some(n=>!Number.isFinite(n))))return t}function ks(e){return e==="orthographic"||e==="perspective"?e:"unknown"}function Ds(e,t){if(!t)return;let n=e.getAttribute("data-polycss-texture-ready");return n==="true"?!0:n==="false"?!1:e.style.opacity!=="0"}function xn(e,t){if(!e)return[];let n=hn(t),o=[];for(let r of Pn(e,n.scopeSelector))for(let a of Array.from(r.querySelectorAll("b,i,s,u"))){let i=a,l=Rs(i.tagName);if(!l)continue;let s=i.getAttribute("data-polycss-texture-backend")??(l==="atlas"?"atlas":void 0),d=Ds(i,s);o.push({element:i,strategy:l,polygonIndex:ws(i.getAttribute("data-poly-index")),textureBackend:s,textureReady:d,textureLeafSizing:i.getAttribute("data-polycss-texture-leaf-sizing")??void 0,textureImageRendering:i.getAttribute("data-polycss-texture-image-rendering")??void 0,textureProjection:i.getAttribute("data-polycss-texture-projection")??void 0,textureLeafWidth:Xt(i.getAttribute("data-polycss-texture-leaf-width")),textureLeafHeight:Xt(i.getAttribute("data-polycss-texture-leaf-height")),doubleSided:i.getAttribute("data-polycss-double-sided")==="true"})}return o}function ko(e,t){let n={...Ro};for(let o of xn(e,t))o.textureBackend&&(n.textureLeafCount++,o.textureBackend==="image"?n.imageTextureLeafCount++:n.atlasTextureLeafCount++,o.textureReady===!1?n.pendingTextureLeafCount++:n.readyTextureLeafCount++);return n.ready=n.pendingTextureLeafCount===0,n}function Is(e,t){let n=wo(),o=!1,r=!1;for(let a of xn(e,t))if(a.textureBackend){switch(n.leafCount++,a.textureBackend==="image"?n.imageCount++:n.atlasCount++,a.textureReady===!1&&n.pendingCount++,a.textureLeafSizing){case"canonical":case"local":case"raster":case"image":n.sizingCounts[a.textureLeafSizing]++;break;default:n.sizingCounts.unknown++;break}switch(a.textureImageRendering){case"auto":case"pixelated":n.imageRenderingCounts[a.textureImageRendering]++;break;default:n.imageRenderingCounts.unknown++;break}switch(a.textureProjection){case"affine":case"projective":case"fallback":n.projectionCounts[a.textureProjection]++;break;default:n.projectionCounts.unknown++;break}typeof a.textureLeafWidth=="number"&&(n.minLeafWidth=o?Math.min(n.minLeafWidth,a.textureLeafWidth):a.textureLeafWidth,n.maxLeafWidth=o?Math.max(n.maxLeafWidth,a.textureLeafWidth):a.textureLeafWidth,o=!0),typeof a.textureLeafHeight=="number"&&(n.minLeafHeight=r?Math.min(n.minLeafHeight,a.textureLeafHeight):a.textureLeafHeight,n.maxLeafHeight=r?Math.max(n.maxLeafHeight,a.textureLeafHeight):a.textureLeafHeight,r=!0),a.doubleSided&&n.doubleSidedCount++}return n.pendingCount=Math.min(n.pendingCount,n.leafCount),n.ready=n.pendingCount===0,n}function Fs(e,t){let n=Oo();if(!e)return n;let o=hn(t);for(let r of Pn(e,o.scopeSelector))n.runtimeAtlasUrlCount+=Ls(r),n.snapshotAtlasCount+=ba(r,"[data-polycss-snapshot-atlas]"),n.snapshotBackgroundCount+=ba(r,"[data-polycss-snapshot-bg]");return n.selfContained=n.runtimeAtlasUrlCount===0,n}function Vs(e){let t=e instanceof HTMLElement?e:null;if(t){if(t.classList.contains("polycss-camera"))return t;let o=t.closest(".polycss-camera");if(o instanceof HTMLElement)return o}let n=e.querySelector(".polycss-camera");return n instanceof HTMLElement?n:null}function zs(e,t){if(!e)return gn();let n=hn(t),o=null;for(let r of Pn(e,n.scopeSelector))if(o=Vs(r),o)break;return o?{rootFound:!0,projection:ks(o.getAttribute("data-polycss-camera-projection")),perspectiveStyle:o.getAttribute("data-polycss-camera-perspective")??"",appliedPerspectiveStyle:o.getAttribute("data-polycss-camera-applied-perspective")??o.style.perspective??"",zoom:Xt(o.getAttribute("data-polycss-camera-zoom")),distance:Xt(o.getAttribute("data-polycss-camera-distance")),rotX:Xt(o.getAttribute("data-polycss-camera-rot-x")),rotY:Xt(o.getAttribute("data-polycss-camera-rot-y")),target:Os(o.getAttribute("data-polycss-camera-target"))}:gn()}function Ca(e,t){let n=hn(t);if(!e)return{...As,surfaceLeafCounts:{...Lo},textureReadiness:{...Ro},textureStats:wo(),snapshotStats:Oo(),cameraStats:gn(),polygonCount:n.polygonCount??0};let o=Pn(e,n.scopeSelector),r={...Lo},a=0,i=0;for(let s of o)r.quad+=wt(s,"b"),r.clippedSolid+=wt(s,"i"),r.atlas+=wt(s,"s"),r.stableTriangle+=wt(s,"u"),a+=wt(s,"q, .polycss-shadow-svg"),i+=wt(s,".polycss-bucket");let l=r.quad+r.clippedSolid+r.atlas+r.stableTriangle;return{polygonCount:n.polygonCount??l,mountedPolygonLeafCount:l,shadowLeafCount:a,surfaceLeafCounts:r,textureReadiness:ko(e,n),textureStats:Is(e,n),snapshotStats:Fs(e,n),cameraStats:zs(e,n),bucketCount:i}}var Ne=require("vue"),Ta=require("@layoutit/polycss-core");function Ot(e){return e&&typeof e=="object"&&"value"in e?e.value:e}function Ma(e,t,n){let o=(0,Ne.ref)(null),r=null,a=null,i=null,l=(0,Ne.ref)(0);function s(){return n==null?o.value:Ot(n)??o.value}function d(){a!==null&&(cancelAnimationFrame(a),a=null),i=null}function m(){d(),r&&(r.stopAllAction(),r.uncacheRoot(),r=null,l.value++)}function g(){if(a!==null)return;function C(L){if(i===null){i=L,a=requestAnimationFrame(C);return}let y=(L-i)/1e3;i=L,r?.update(y),a=requestAnimationFrame(C)}a=requestAnimationFrame(C)}function u(){m();let C=Ot(e),L=Ot(t);if(!C||C.length===0||!L)return;let y=s();y&&(r=(0,Ta.createPolyAnimationMixer)(y,L),l.value++,g())}let h=(0,Ne.watch)(()=>{let C=Ot(e),L=Ot(t),y=n!=null?Ot(n):o.value;return{c:C,ctrl:L,r:y}},()=>u(),{immediate:!0,deep:!1});(0,Ne.onUnmounted)(()=>{h(),m()});let f=(0,Ne.computed)(()=>Ot(e)??[]),P=(0,Ne.computed)(()=>f.value.map(C=>C.name)),b=(0,Ne.computed)(()=>(l.value,r)),A=(0,Ne.computed)(()=>{l.value;let C=f.value,L={};for(let y of C)Object.defineProperty(L,y.name,{enumerable:!0,get(){if(!r)return null;try{return r.clipAction(y.name)}catch{return null}}});return L});return{ref:o,mixer:b,clips:f,names:P,actions:A}}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,buildPolyCameraSceneTransform,buildPolyMeshTransform,buildPolySceneTransform,buildSceneContext,cameraCullNormalGroups,cameraCullNormalGroupsFromPolygons,cameraCullNormalKey,cameraCullVisibleSignature,cameraFacingDepth,capturePolyCameraSnapshot,clampChannel,collectPolyRenderStats,collectPolyTextureReadiness,computeSceneBbox,computeShapeLighting,computeTexturePaintMetrics,conePolygons,coverPlanarPolygons,createIsometricCamera,createPolyAnimationMixer,cssDistanceToWorld,cssPositionToWorld,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,polyCameraTargetToCss,polyCssDistanceToWorld,polyCssPositionToWorld,polygonCssSurfaceNormal,polygonFaces,polygonFacesCamera,queryPolyLeaves,repairMeshSeams,resolvePolyCameraAppliedPerspectiveStyle,ringPolygons,rotateVec3,seamFacetSplitPolygons,seamFacetSplitReport,seamOverlapDiagnostics,seamOverlapPolygons,seamOverlapReport,shadeColor,simplifyTriangleMeshPolygons,tetrahedronPolygons,torusPolygons,usePolyAnimation,usePolyCamera,usePolyMaterial,usePolyMesh,usePolySceneContext,usePolySelect,usePolySelectionApi,worldDirectionToCss,worldDirectionToPolyCss,worldDirectionalLightToCss,worldDirectionalLightToPolyCss,worldDistanceToCss,worldDistanceToPolyCss,worldPositionToCss,worldPositionToPolyCss});
429
+ `;var Ba=require("@layoutit/polycss-core");var Ho=require("vue"),Ln=Symbol("polycss/scene-context");function No(){return(0,Ho.inject)(Ln,null)}var me=require("@layoutit/polycss-core");var lt=require("@layoutit/polycss-core");function Rn(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 wn(e){if(jo(e))return!0;let n=(e.defaultView??(typeof window<"u"?window:void 0))?.navigator?.userAgent??"";return n?!(0,lt.safariCssProjectiveUnsupported)(n):!0}function an(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 jo(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 jt(e){let n=(e.defaultView??(typeof window<"u"?window:void 0))?.navigator?.userAgent??"";return n?!(0,lt.safariCssProjectiveUnsupported)(n):!0}function Yo(e,t,n,o,r){let a=new Set(o?.disable??[]);return(0,lt.getSolidPaintDefaultsForPlansCore)(e,t,a,{solidTriangleSupported:wn(n),projectiveQuadSupported:jt(n),cornerShapeSupported:an(n),borderShapeSupported:Rn(n)},lt.parseHex,lt.rgbKey,r)}function On(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 Yo(e,t,r,a)}function Ct(e){let t=e??(typeof document<"u"?document:null);if(!t){if(!!!(typeof CSS<"u"?CSS:void 0)?.supports?.("border-shape","polygon(0 0, 100% 0, 0 100%) circle(0)"))return!1;let r=typeof matchMedia<"u"?matchMedia:void 0;return r?r("(pointer: fine)").matches&&r("(hover: hover)").matches:!0}return Rn(t)}function Tt(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 wn(t)}var Xo=require("@layoutit/polycss-core");function kn(e,t,n,o,r,a,i){let l=o??(typeof document<"u"?document:null);return(0,Xo.filterAtlasPlans)(e,t,n,{solidTriangleSupported:Tt(o),projectiveQuadSupported:o?jt(o):!0,borderShapeSupported:Ct(o),cornerShapeSupported:l?an(l):!1,textureBackend:r,textureImageRendering:a,textureProjection:i})}var $o=require("@layoutit/polycss-core");function Uo(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 Dn(e,t,n,o){return(0,$o.packTextureAtlasPlansWithScaleCore)(e,t,Uo(n),o)}var Ge=require("@layoutit/polycss-core"),Mt=new Map;function Ko(e){let t=Mt.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}),Mt.set(e,t),t.then(()=>{Mt.get(e)===t&&Mt.delete(e)},()=>{Mt.get(e)===t&&Mt.delete(e)})),t}function ke(e,t,n=1,o=0,r=0,a=1,i=0,l=0){e.setTransform(n*t,o*t,r*t,a*t,i*t,l*t)}function In(e){let t=e/255;return t<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function Fn(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 Qo(e,t,n,o,r,a,i){let l=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)),g=e.getImageData(l,s,d,m),u=g.data,h=a.r,y=a.g,P=a.b;for(let b=0;b<u.length;b+=4)u[b+3]!==0&&(u[b]=Fn(In(u[b])*h),u[b+1]=Fn(In(u[b+1])*y),u[b+2]=Fn(In(u[b+2])*P));e.putImageData(g,l,s)}function Jo(e,t,n,o,r,a,i){let l=t.naturalWidth||t.width||1,s=t.naturalHeight||t.height||1,d=Math.max(r/l,a/s),m=l*d,g=s*d;ke(e,i),e.drawImage(t,n+(r-m)/2,o+(a-g)/2,m,g)}function Yt(e,t){return Math.max(0,Math.min(t,e))}function Vn(e,t,n,o,r,a,i,l){let s=t.naturalWidth||t.width||1,d=t.naturalHeight||t.height||1,m=Yt(Math.min(n.minU,n.maxU)*s,s),g=Yt(Math.max(n.minU,n.maxU)*s,s),u=Yt(Math.min(n.minV,n.maxV)*d,d),h=Yt(Math.max(n.minV,n.maxV)*d,d),y=Math.floor(m),P=Math.floor(u),b=Math.ceil(g)-y,A=Math.ceil(h)-P;b<1&&(y=Math.floor(Yt((n.minU+n.maxU)/2*s,s-1)),b=1),A<1&&(P=Math.floor(Yt((n.minV+n.maxV)/2*d,d-1)),A=1),y=Math.max(0,Math.min(s-1,y)),P=Math.max(0,Math.min(d-1,P)),b=Math.max(1,Math.min(s-y,b)),A=Math.max(1,Math.min(d-P,A)),ke(e,l),e.drawImage(t,y,P,b,A,o,r,a,i)}function er(e){return e==="repeat"||e==="mirrored-repeat"}function Wo(e,t){return er(e)?Math.floor(t):0}function qo(e,t){return er(e)?Math.ceil(t)-1:0}function Go(e,t){return e==="mirrored-repeat"&&Math.abs(t%2)===1}function Zo(e,t,n,o,r,a,i){let l=r?Wo(a,r.minU):0,s=r?qo(a,r.maxU):0,d=r?Wo(i,r.minV):0,m=r?qo(i,r.maxV):0;for(let g=l;g<=s;g++)for(let u=d;u<=m;u++){let h=Go(a,g),y=Go(i,u);if(!h&&!y){e.drawImage(t,g*n,u*o);continue}e.save(),e.translate((h?g+1:g)*n,(y?u+1:u)*o),e.scale(h?-1:1,y?-1:1),e.drawImage(t,0,0),e.restore()}}function ln(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 Qt(e,t,n,o,r,a){for(let i=0;i<o.length;i+=2){let l=t+o[i]+r,s=n+o[i+1]+a;i===0?e.moveTo(l,s):e.lineTo(l,s)}e.closePath()}function tr(e,t,n,o){ke(e,o),e.beginPath(),ln(e,t.x,t.y,t.screenPts),e.clip(),ke(e,o),e.fillStyle=n==="dynamic"?t.polygon.color??"#cccccc":t.shadedColor,e.fillRect(t.x,t.y,t.canvasW,t.canvasH)}function sn(e,t,n,o,r){t.polygon.textureAlphaMode==="opaque"&&(ke(e,n),e.fillStyle=t.polygon.color??"#cccccc",e.fillRect(t.x+o,t.y+r,t.canvasW,t.canvasH))}function nr(e,t,n,o,r=0,a=0){if(t.textureTriangles?.length){let i=n.naturalWidth||n.width||1,l=n.naturalHeight||n.height||1;for(let s of t.textureTriangles){let d=(0,Ge.expandClipPoints)(s.screenPts,Ge.TEXTURE_TRIANGLE_BLEED);e.save(),ke(e,o),e.beginPath(),Qt(e,t.x,t.y,d,r,a),e.clip(),sn(e,t,o,r,a),s.uvAffine?(ke(e,o,s.uvAffine.a/i,s.uvAffine.c/i,s.uvAffine.b/l,s.uvAffine.d/l,t.x+s.uvAffine.e+r,t.y+s.uvAffine.f+a),Zo(e,n,i,l,s.uvSampleRect,t.polygon.textureWrap?.s,t.polygon.textureWrap?.t)):s.uvSampleRect&&Vn(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,l=n.naturalHeight||n.height||1,s=t.polygon.textureAlphaMode==="opaque";s&&(e.save(),ke(e,o),e.beginPath(),Qt(e,t.x,t.y,t.screenPts,r,a),e.clip(),sn(e,t,o,r,a)),ke(e,o,t.uvAffine.a/i,t.uvAffine.c/i,t.uvAffine.b/l,t.uvAffine.d/l,t.x+t.uvAffine.e+r,t.y+t.uvAffine.f+a),Zo(e,n,i,l,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(),ke(e,o),e.beginPath(),Qt(e,t.x,t.y,t.screenPts,r,a),e.clip(),sn(e,t,o,r,a)),Vn(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(),ke(e,o),e.beginPath(),Qt(e,t.x,t.y,t.screenPts,r,a),e.clip(),sn(e,t,o,r,a)),Jo(e,n,t.x+r,t.y+a,t.canvasW,t.canvasH,o),i&&e.restore()}}function _a(e,t,n,o,r,a){let i=r-n,l=a-o,s=i*i+l*l;if(s<=1e-9)return Math.hypot(e-n,t-o);let d=Math.max(0,Math.min(1,((e-n)*i+(t-o)*l)/s));return Math.hypot(e-(n+i*d),t-(o+l*d))}function Ha(e,t,n,o){let r=1/0,a=n.length/2;for(let i of o){if(i<0||i>=a)continue;let l=i*2,s=(i+1)%a*2;r=Math.min(r,_a(e,t,n[l],n[l+1],n[s],n[s+1]))}return r}function Na(e,t,n,o,r,a){let i=Math.max(0,o-a),l=Math.min(t-1,o+a),s=Math.max(0,r-a),d=Math.min(n-1,r+a),m=null,g=1/0;for(let u=s;u<=d;u++)for(let h=i;h<=l;h++){if(h===o&&u===r)continue;let y=h-o,P=u-r,b=y*y+P*P;if(b>a*a||b>=g)continue;let A=(u*t+h)*4;e[A+3]<Ge.TEXTURE_EDGE_REPAIR_SOURCE_ALPHA_MIN||(m=A,g=b)}return m}function or(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))),l=Math.max(1,Math.min(o.height-a,Math.ceil(t.canvasH*n)));if(i<=0||l<=0)return;let s;try{s=e.getImageData(r,a,i,l)}catch{return}let d=s.data,m=new Uint8ClampedArray(d),g=Math.max(Ge.TEXTURE_EDGE_REPAIR_RADIUS,Ge.TEXTURE_EDGE_REPAIR_RADIUS/n),u=Math.max(2,Math.ceil(g*n)+1),h=!1;for(let y=0;y<l;y++)for(let P=0;P<i;P++){let b=(y*i+P)*4,A=d[b+3];if(A<Ge.TEXTURE_EDGE_REPAIR_ALPHA_MIN||A===255)continue;let C=(r+P+.5)/n-t.x,R=(a+y+.5)/n-t.y;if(Ha(C,R,t.screenPts,t.textureEdgeRepairEdges)>g)continue;let f=Na(m,i,l,P,y,u);f!==null&&(d[b]=m[f],d[b+1]=m[f+1],d[b+2]=m[f+2],d[b+3]=255,h=!0)}h&&e.putImageData(s,r,a)}function rr(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 ja(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 l=Array.from(new Set(e.entries.flatMap(m=>m.texture?[m.texture]:[]))),s=new Map;await Promise.all(l.map(async m=>{s.set(m,await Ko(m))}));for(let m of e.entries){let g=m.texture?s.get(m.texture):null;if(!m.texture){i.save(),tr(i,m,t,o),i.restore();continue}g&&(i.save(),ke(i,o),i.beginPath(),ln(i,m.x,m.y,m.screenPts),i.clip(),nr(i,m,g,o),i.restore()),m.texture&&t==="baked"&&(i.save(),ke(i,o),i.beginPath(),ln(i,m.x,m.y,m.screenPts),i.clip(),Qo(i,m.x,m.y,m.canvasW,m.canvasH,m.textureTint,o),i.restore()),or(i,m,o)}let d=await rr(r);return r.width=1,r.height=1,{width:e.width,height:e.height,url:d}}async function un(e,t,n,o,r){let a=[];for(let i of e){if(r())break;a.push(await ja(i,t,n,o))}return a}var Ne=require("@layoutit/polycss-core"),sr=50,lr=[.4,-.7,.59],ur="#ffffff",cr=1,dr="#ffffff",mr=.4,ae=1e-9,Jt=.75,pr=32,Ya=96,Bn="0 48px 96px 48px",ar,ir=pr;function Xa(){let e=typeof CSS<"u"?CSS:void 0;return!!e?.supports?.("corner-top-left-shape","bevel")&&!!e.supports("corner-top-right-shape","bevel")}function _n(){if(Xa())return"corner-bevel";let e=typeof navigator<"u"?navigator.userAgent:"";return/\bFirefox\//.test(e)?"border-large":"border"}function Hn(){let e=typeof navigator<"u"?navigator.userAgent:"";return e!==ar&&(ar=e,ir=/\bFirefox\//.test(e)?Ya:pr),ir}function yr(){return _n()==="border-large"?Bn:void 0}function $a(){let e=_n();if(e==="corner-bevel")return;let t=e==="border-large"?Bn:void 0;return t?{borderWidth:t}:void 0}function fr(e){let t=_n();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"?Bn:"")}function Je(e){let t=(0,Ne.parsePureColor)(e);return t?{r:t.rgb[0],g:t.rgb[1],b:t.rgb[2]}:{r:255,g:255,b:255}}function en({r:e,g:t,b:n}){return`${e},${t},${n}`}function Ua(e){return(0,Ne.parsePureColor)(e)?.alpha??1}function dn({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 gr(e,t,n,o,r){let a=Je(e),i=Je(n),l=Je(o),s=l.r/255*r+i.r/255*t,d=l.g/255*r+i.g/255*t,m=l.b/255*r+i.b/255*t,g=Math.max(0,Math.min(255,Math.round(a.r*s))),u=Math.max(0,Math.min(255,Math.round(a.g*d))),h=Math.max(0,Math.min(255,Math.round(a.b*m))),y=Ua(e);return y<1?`rgba(${g}, ${u}, ${h}, ${y})`:dn({r:g,g:u,b:h})}function hr(e,t){if(!Number.isFinite(t)||t<=1)return e;let n=(0,Ne.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})`:dn(a)}function Pr(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 zn(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function Wa(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 qa(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],l=[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]-=l[1]*s[2]-l[2]*s[1],n[1]-=l[2]*s[0]-l[0]*s[2],n[2]-=l[0]*s[1]-l[1]*s[0]}let o=Math.hypot(n[0],n[1],n[2]);return o<=ae?null:[n[0]/o,n[1]/o,n[2]/o]}function Ga(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)<=ae)return!1;let l=Math.sign(i);if(t===0)t=l;else if(l!==t)return!1}return!0}function Za(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 Ka(e,t,n,o){let r=t[0]-e[0],a=t[1]-e[1],i=o[0]-n[0],l=o[1]-n[1],s=r*l-a*i;if(Math.abs(s)<=ae)return null;let d=n[0]-e[0],m=n[1]-e[1],g=(d*l-m*i)/s;return[e[0]+g*r,e[1]+g*a]}function cn(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 l=a[i]-n,s=a[i+1]-o,d=Math.hypot(l,s);d<=ae||(a[i]+=l/d*t,a[i+1]+=s/d*t)}return a}function Et(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(!Ga(n))return cn(e,t);let o=Za(n);if(Math.abs(o)<=ae)return cn(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],g=m[0]-d[0],u=m[1]-d[1],h=Math.hypot(g,u);if(h<=ae)return cn(e,t);let y=r*(u/h)*t,P=r*(-g/h)*t;a.push({a:[d[0]+y,d[1]+P],b:[m[0]+y,m[1]+P]})}let i=[],l=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],g=Ka(d.a,d.b,m.a,m.b);if(!g)return cn(e,t);let u=n[s],h=g[0]-u[0],y=g[1]-u[1],P=Math.hypot(h,y);P>l?i.push(u[0]+h/P*l,u[1]+y/P*l):i.push(g[0],g[1])}return i}function Qa(e,t,n,o){let r=e+t;if(o<=0||n<=ae||r<=ae||!Number.isFinite(e+t+n+o))return Et([e,0,0,n,r,n],o);let a=Math.sqrt(e*e+n*n),i=Math.sqrt(t*t+n*n);if(a<=ae||i<=ae)return Et([e,0,0,n,r,n],o);let l=-o*n/a,s=-o*e/a,d=o*n/i,m=-o*t/i,g=e+l,u=s,h=r+d,y=n+m,P=-n*r;if(Math.abs(P)<=ae)return Et([e,0,0,n,r,n],o);let b=g-h,A=u-y,C=(b*n+A*e)/P,R=h-C*t,f=y-C*n,O=-o*(e+a)/n,k=n+o,B=r+o*(t+i)/n,_=k,I=Math.max(2,o*4),U=R-e,X=f,Y=Math.sqrt(U*U+X*X);Y>I&&(R=e+U/Y*I,f=X/Y*I);let v=Math.sqrt(O*O+o*o);v>I&&(O=O/v*I,k=n+o/v*I);let c=B-r,x=Math.sqrt(c*c+o*o);return x>I&&(B=r+c/x*I,_=n+o/x*I),[R,f,O,k,B,_]}function Ja(e,t){if((e+1)%3===t)return e;if((t+1)%3===e)return t}function ei(e,t,n,o,r){let a=e.seamBleedEdges;if(!a?.size)return null;let i=e.seamBleed===void 0?Jt:e.seamBleed;return[[o,t],[t,n],[n,o]].map(([s,d],m)=>{let g=Ja(s,d),u=g!==void 0&&a.has(g)?e.seamBleedEdgeAmounts?.get(g)??(0,Ne.resolveSeamBleed)(i,Jt):0;return(0,Ne.safePlanSeamBleedAmount)(r,m,u)})}function xr(e,t,n,o,r,a,i,l,s,d,m,g){let u=Math.round(e*1e3)/1e3||0,h=Math.round(t*1e3)/1e3||0,y=Math.round(n*1e3)/1e3||0,P=Math.round(o*1e3)/1e3||0,b=Math.round(r*1e3)/1e3||0,A=Math.round(a*1e3)/1e3||0,C=Math.round(i*1e3)/1e3||0,R=Math.round(l*1e3)/1e3||0,f=Math.round(s*1e3)/1e3||0,O=Math.round(d*1e3)/1e3||0,k=Math.round(m*1e3)/1e3||0,B=Math.round(g*1e3)/1e3||0;return`matrix3d(${u},${h},${y},0,${P},${b},${A},0,${C},${R},${f},0,${O},${k},${B},1)`}function ti(e,t,n){return e.map(o=>[o[1]*t,o[0]*t,o[2]*n])}function Nn(e,t,n,o){if(!(0,Ne.isSolidTrianglePlan)(e))return null;let r=e.tileSize,a=e.layerElevation,i=ti(e.polygon.vertices,r,a),l=qa(i);if(!l)return null;let s=[{a:0,b:1,c:2},{a:1,b:2,c:0},{a:2,b:0,c:1}].map(se=>{let re=i[se.a],ye=i[se.b];return{...se,length:Math.hypot(ye[0]-re[0],ye[1]-re[1],ye[2]-re[2])}}).sort((se,re)=>re.length-se.length),d=s[0].a,m=s[0].b,g=s[0].c,u=i[d],h=i[m],y=i[g],P=s[0].length;if(P<=ae)return null;let b=[(h[0]-u[0])/P,(h[1]-u[1])/P,(h[2]-u[2])/P],A=[y[0]-u[0],y[1]-u[1],y[2]-u[2]],C=zn(A,b),R=[u[0]+b[0]*C,u[1]+b[1]*C,u[2]+b[2]*C],f=[R[0]-y[0],R[1]-y[1],R[2]-y[2]],O=Math.hypot(f[0],f[1],f[2]);if(O<=ae)return null;let k=[f[0]/O,f[1]/O,f[2]/O];if(zn(Wa(b,k),l)<0){let se=m;if(m=d,d=se,u=i[d],h=i[m],P=Math.hypot(h[0]-u[0],h[1]-u[1],h[2]-u[2]),P<=ae)return null;b=[(h[0]-u[0])/P,(h[1]-u[1])/P,(h[2]-u[2])/P];let re=[y[0]-u[0],y[1]-u[1],y[2]-u[2]];C=zn(re,b),R=[u[0]+b[0]*C,u[1]+b[1]*C,u[2]+b[2]*C],f=[R[0]-y[0],R[1]-y[1],R[2]-y[2]];let ye=Math.hypot(f[0],f[1],f[2]);if(ye<=ae)return null;k=[f[0]/ye,f[1]/ye,f[2]/ye]}let B=Hn(),_=Math.max(0,Math.min(P,C)),I=Math.max(0,P-_),U=[_,0,0,O,_+I,O],X=ei(e,d,m,g,U),Y=X?(0,Ne.offsetConvexPolygonPointsByEdgeAmounts)(U,X):Qa(_,I,O,(0,Ne.resolveSeamBleed)(e.seamBleed,Jt)),v=[Y[0],Y[1]],c=[Y[2],Y[3]],x=[Y[4],Y[5]],S=(c[1]+x[1])/2,T=v[0]-c[0],M=x[0]-v[0],E=S-v[1];if(T<=ae||M<=ae||E<=ae||!Number.isFinite(T+M+E))return null;let L=t==="dynamic",F=Je(e.polygon.color??"#cccccc"),N=L&&en(F)===o?.dynamicColorKey,j={color:L||e.shadedColor===o?.paintColor?void 0:e.shadedColor,pointerEvents:n==="none"?"none":void 0,...L&&!N?{"--pnx":l[0].toFixed(4),"--pny":l[1].toFixed(4),"--pnz":l[2].toFixed(4),"--psr":(F.r/255).toFixed(4),"--psg":(F.g/255).toFixed(4),"--psb":(F.b/255).toFixed(4)}:L?{"--pnx":l[0].toFixed(4),"--pny":l[1].toFixed(4),"--pnz":l[2].toFixed(4)}:null},Q=([se,re])=>[y[0]+(se-_)*b[0]+re*k[0],y[1]+(se-_)*b[1]+re*k[1],y[2]+(se-_)*b[2]+re*k[2]],W=Q(v),z=Q([c[0],S]),le=Q([x[0],S]),xe=B/2,ue=[(le[0]-z[0])/B,(le[1]-z[1])/B,(le[2]-z[2])/B],ve=[W[0]-ue[0]*xe,W[1]-ue[1]*xe,W[2]-ue[2]*xe],Ve=[(z[0]-ve[0])/B,(z[1]-ve[1])/B,(z[2]-ve[2])/B],Xe=[ue[0],ue[1],ue[2],0,Ve[0],Ve[1],Ve[2],0,l[0],l[1],l[2],0,ve[0],ve[1],ve[2],1].map(se=>(Math.round(se*1e3)/1e3||0).toString()).join(","),ze=$a();return{transform:`matrix3d(${Xe})`,...ze??{},...j}}function mn(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 ni(e,t,n,o){let r=e+t;if(o<=0||n<=ae||r<=ae||!Number.isFinite(e+t+n+o))return Et([e,0,0,n,r,n],o);let a=Math.sqrt(e*e+n*n),i=Math.sqrt(t*t+n*n);if(a<=ae||i<=ae)return Et([e,0,0,n,r,n],o);let l=-o*n/a,s=-o*e/a,d=o*n/i,m=-o*t/i,g=e+l,u=s,h=r+d,y=n+m,P=-n*r;if(Math.abs(P)<=ae)return Et([e,0,0,n,r,n],o);let b=g-h,A=u-y,C=(b*n+A*e)/P,R=h-C*t,f=y-C*n,O=-o*(e+a)/n,k=n+o,B=r+o*(t+i)/n,_=k,I=Math.max(2,o*4),U=R-e,X=f,Y=Math.sqrt(U*U+X*X);Y>I&&(R=e+U/Y*I,f=X/Y*I);let v=Math.sqrt(O*O+o*o);v>I&&(O=O/v*I,k=n+o/v*I);let c=B-r,x=Math.sqrt(c*c+o*o);return x>I&&(B=r+c/x*I,_=n+o/x*I),[R,f,O,k,B,_]}function br(e,t,n){if(e.texture||e.vertices.length!==3)return null;let o=sr,r=o,a=e.vertices[0],i=e.vertices[1],l=e.vertices[2],s=a[1]*o,d=a[0]*o,m=a[2]*r,g=i[1]*o,u=i[0]*o,h=i[2]*r,y=l[1]*o,P=l[0]*o,b=l[2]*r,A=g-s,C=u-d,R=h-m,f=y-s,O=P-d,k=b-m,B=-(C*k-R*O),_=-(R*f-A*k),I=-(A*O-C*f),U=Math.sqrt(B*B+_*_+I*I);if(U<=ae)return null;B/=U,_/=U,I/=U;let X=A*A+C*C+R*R,Y=y-g,v=P-u,c=b-h,x=s-y,S=d-P,T=m-b,M=Y*Y+v*v+c*c,E=x*x+S*S+T*T,L=mn(n)?n.a:0,F=mn(n)?n.b:1,N=mn(n)?n.c:2,j=()=>n?br(e,t):null;if(!mn(n)){let Ee=X;M>Ee&&(L=1,F=2,N=0,Ee=M),E>Ee&&(L=2,F=0,N=1)}let Q=N===0?s:N===1?g:y,W=N===0?d:N===1?u:P,z=N===0?m:N===1?h:b,le=L===0?s:L===1?g:y,xe=L===0?d:L===1?u:P,ue=L===0?m:L===1?h:b,ve=F===0?s:F===1?g:y,Ve=F===0?d:F===1?u:P,Xe=F===0?m:F===1?h:b,ze=ve-le,se=Ve-xe,re=Xe-ue,ye=Math.sqrt(ze*ze+se*se+re*re);if(ye<=ae)return j();let Be=ze/ye,je=se/ye,bt=re/ye,Te=(Q-le)*Be+(W-xe)*je+(z-ue)*bt,w=le+Be*Te-Q,$=xe+je*Te-W,H=ue+bt*Te-z,q=Math.sqrt(w*w+$*$+H*H);if(q<=ae)return j();w/=q,$/=q,H/=q;let Z=Math.max(0,Math.min(ye,Te)),Se=Math.max(0,ye-Z),ge=ni(Z,Se,q,Jt),Me=ge[0],ce=ge[1],_e=ge[2],$e=ge[3],we=ge[4],Ue=ge[5],Ze=($e+Ue)/2,J=Me-_e,V=we-Me,fe=Ze-ce;if(J<=ae||V<=ae||fe<=ae||!Number.isFinite(J+V+fe))return j();let at=1/Hn(),ee=J+V,oe=ee*at,He=(V-J)*.5*at,it=fe*at,mt=Me-Z-ee*.5,Ke=ce,pt=xr(Be*oe,je*oe,bt*oe,Be*He+w*it,je*He+$*it,bt*He+H*it,B,_,I,Q+Be*mt+w*Ke,W+je*mt+$*Ke,z+bt*mt+H*Ke),Qe;if(Math.floor(t.colorFreezeFrames??1)!==0){let Ee=t.directionalLight,Le=t.ambientLight,Ae=Ee?.direction??lr,Oe=Ee?.color??ur,yt=Math.max(0,Ee?.intensity??cr),ft=Le?.color??dr,on=Math.max(0,Le?.intensity??mr),vt=Math.sqrt(Ae[0]*Ae[0]+Ae[1]*Ae[1]+Ae[2]*Ae[2])||1,We=Ae[0]/vt,qe=Ae[1]/vt,Ra=Ae[2]/vt,wa=yt*Math.max(0,B*We+_*qe+I*Ra),Vo=gr(e.color??"#cccccc",wa,Oe,ft,on);Qe=t.colorSteps?hr(Vo,t.colorSteps):Vo}return{transform:pt,borderWidth:yr(),color:Qe,basis:{a:L,b:F,c:N}}}function oi(e,t,n){return n>0&&(n<=1||(t+e)%n===0)}function ri(e,t,n,o){let r=Math.floor(o.colorFreezeFrames??1);if(r===0)return;let a=e.__polycssStableTriangleColor;if(!(a===void 0||oi(t,Math.max(0,Math.floor(o.colorFrame??0)),Math.max(1,r)))||a===n)return;let l=n,s=n?Je(n):void 0,d=e.__polycssStableTriangleColorRgb,m=Math.max(0,Math.floor(o.colorMaxStep??0));m>0&&d&&s&&n&&(s=Pr(d,s,m),l=dn(s)),e.style.color=l,e.__polycssStableTriangleColor=l,e.__polycssStableTriangleColorRgb=s}function jn(e,t,n={}){if((n.textureLighting??"baked")!=="baked"||!Tt())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)=>br(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],l=o[a];l.style.visibility&&(l.style.visibility=""),l.__polycssStableTriangleBasis=i.basis,fr(l),l.style.transform=i.transform,i.borderWidth!==void 0&&(l.style.borderWidth=i.borderWidth),i.color!==void 0&&ri(l,a,i.color,n)}return!0}var vr=require("@layoutit/polycss-core");function At(e,t,n={},o){return(0,vr.computeTextureAtlasPlanPublic)(e,t,n,void 0,o)}function Yn(e,t,n){let o=new Set(n?.disable??[]);return On(e,t,o)}var de=require("vue");function Xn(e){for(let t of e)t.startsWith("blob:")&&URL.revokeObjectURL(t)}function Sr(e){return e.flatMap(t=>t.url?.startsWith("blob:")?[t.url]:[])}function pn(e){return e.map(t=>({width:t.width,height:t.height,url:null}))}function Cr(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 Lt(e){e.length!==0&&(typeof requestAnimationFrame=="function"?requestAnimationFrame(()=>Xn(e)):setTimeout(()=>Xn(e),0))}function Rt(e,t,n=(0,de.computed)(()=>{}),o=(0,de.computed)(()=>{}),r=(0,de.computed)(()=>{}),a=(0,de.computed)(()=>{}),i=(0,de.computed)(()=>{}),l=(0,de.computed)(()=>{}),s=(0,de.computed)(()=>!1)){let d=(0,de.computed)(()=>new Set(l.value?.disable??[])),m=(0,de.computed)(()=>!d.value.has("b")),g=(0,de.computed)(()=>{let f=typeof document<"u"?document:null;return m.value&&(!f||jt(f))}),u=(0,de.computed)(()=>!d.value.has("u")&&Tt()),h=(0,de.computed)(()=>!d.value.has("i")&&t.value!=="dynamic"&&Ct()),y=(0,de.computed)(()=>{let f=kn(e.value,t.value,d.value,typeof document<"u"?document:null,r.value,a.value,i.value);return Dn(f,n.value,typeof document<"u"?document:null,o.value)}),P=(0,de.ref)(pn(y.value.packed.pages)),b=(0,de.ref)({plans:e.value,entries:y.value.packed.entries,pages:pn(y.value.packed.pages)}),A=[],C=0,R=!1;return(0,de.watch)(()=>[y.value,t.value,s.value],([f,O,k],B,_)=>{let{packed:I,atlasScale:U}=f;if(k){let v=++C,c=e.value,x=I.entries;if(I.pages.length===0||typeof document>"u"){Lt(A),A=[],b.value={plans:c,entries:x,pages:pn(I.pages)};return}let S=()=>R||v!==C,T=[];un(I.pages,O,document,U,S).then(async M=>{if(T=Sr(M),await Cr(T),S()){Lt(T);return}let E=A;A=T,T=[],Lt(E),b.value={plans:c,entries:x,pages:M}}).catch(()=>{});return}let X=!1,Y=[];if(_(()=>{X=!0,Lt(Y)}),I.pages.length===0){Lt(A),A=[],P.value.length!==0&&(P.value=[]);return}typeof document>"u"||(P.value.some(v=>v.url)||(P.value=pn(I.pages)),un(I.pages,O,document,U,()=>X).then(async v=>{if(Y=Sr(v),await Cr(Y),X){Lt(Y);return}let c=A;A=Y,Y=[],Lt(c),P.value=v}).catch(()=>{}))},{immediate:!0}),(0,de.getCurrentScope)()&&(0,de.onScopeDispose)(()=>{R=!0,Xn(A),A=[]}),{plans:(0,de.computed)(()=>s.value?b.value.plans:e.value),entries:(0,de.computed)(()=>s.value?b.value.entries:y.value.packed.entries),pages:(0,de.computed)(()=>s.value?b.value.pages:P.value),ready:(0,de.computed)(()=>{let f=s.value?b.value.pages:P.value;return f.length===0||f.every(O=>!!O.url)}),useFullRectSolid:m,useProjectiveQuad:g,useStableTriangle:u,useBorderShape:h}}var Tr=require("vue");function wt({entry:e,textureLighting:t,solidPaintDefaults:n,className:o,style:r,domAttrs:a,pointerEvents:i="auto"}){let l=Nn(e,t,i,n);if(!l)return null;let s=e.polygon.data?Object.fromEntries(Object.entries(e.polygon.data).map(([m,g])=>[`data-${m}`,String(g)])):{},d=o?.trim()||void 0;return(0,Tr.h)("u",{class:d,style:{...l,...r},"data-poly-index":String(e.index),...s,...a})}var Mr=require("vue"),Pt=require("@layoutit/polycss-core");var ai=new Map([["transform",0],["border-shape",1],["border-width",2],["width",3],["height",4],["color",5]]);function ii(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:ai.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 Ot({entry:e,textureLighting:t,solidPaintDefaults:n,className:o,style:r,domAttrs:a,pointerEvents:i="auto",forceBorderShape:l=!1}){let s=!e.texture&&(0,Pt.isFullRectSolid)(e),d=s&&l&&Ct(),m=!s||d?(0,Pt.cssBorderShapeForPlan)(e):null,g=t==="dynamic",u=Je(e.polygon.color??"#cccccc"),h=g&&en(u)===n?.dynamicColorKey,P={transform:m?(0,Pt.formatBorderShapeEntryMatrix)(e):(0,Pt.formatSolidQuadEntryMatrix)(e),color:g?void 0:e.shadedColor,pointerEvents:i==="none"?"none":void 0,...g?{"--pnx":e.normal[0].toFixed(4),"--pny":e.normal[1].toFixed(4),"--pnz":e.normal[2].toFixed(4),...h?null:{"--psr":(u.r/255).toFixed(4),"--psg":(u.g/255).toFixed(4),"--psb":(u.b/255).toFixed(4)}}:null,...r},b=e.polygon.data?Object.fromEntries(Object.entries(e.polygon.data).map(([R,f])=>[`data-${R}`,String(f)])):{},A=o?.trim()||void 0,C=R=>{let f=R.el;f&&(m?f.style.setProperty("border-shape",m):f.style.removeProperty("border-shape"),ii(f))};return(0,Mr.h)(s&&!d?"b":"i",{class:A,style:P,"data-poly-index":String(e.index),...b,...a,onVnodeMounted:C,onVnodeUpdated:C})}var Er=require("vue");function kt({entry:e,textureLighting:t,solidPaintDefaults:n,className:o,style:r,domAttrs:a,pointerEvents:i="auto"}){let l=t==="dynamic",s=Je(e.polygon.color??"#cccccc"),d=l&&en(s)===n?.dynamicColorKey,m={transform:`matrix3d(${e.projectiveMatrix})`,color:l?void 0:e.shadedColor,pointerEvents:i==="none"?"none":void 0,...l&&!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)}:l?{"--pnx":e.normal[0].toFixed(4),"--pny":e.normal[1].toFixed(4),"--pnz":e.normal[2].toFixed(4)}:null,...r},g=e.polygon.data?Object.fromEntries(Object.entries(e.polygon.data).map(([h,y])=>[`data-${h}`,String(y)])):{},u=o?.trim()||void 0;return(0,Er.h)("b",{class:u,style:m,"data-poly-index":String(e.index),...g,...a})}var Ar=require("vue"),Xt=require("@layoutit/polycss-core");function si(e,t,n){if(t==="dynamic"){let o=(0,Xt.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,Xt.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 $n({entry:e,geometry:t,textureLighting:n,solidPaintDefaults:o,className:r,pointerEvents:a="auto"}){let i=(0,Xt.formatCornerShapeElementStyle)(e,t),l=si(e,n,o),s=a==="none"?";pointer-events:none":"",d=i+l+s,m=u=>{!u||!(u instanceof HTMLElement)||u.setAttribute("style",d)},g=e.polygon.data?Object.fromEntries(Object.entries(e.polygon.data).map(([u,h])=>[`data-${u}`,String(h)])):{};return(0,Ar.h)("u",{class:r?.trim()||void 0,"data-poly-index":String(e.index),...g,onVnodeMounted:({el:u})=>m(u),onVnodeUpdated:({el:u})=>m(u)})}var Un=require("vue"),Ce=require("@layoutit/polycss-core"),li=64;function Dt({entry:e,page:t,textureLighting:n,textureImageRendering:o,solidPaintDefaults:r,className:a,style:i,domAttrs:l,pointerEvents:s="auto"}){let d=n==="dynamic",m=(0,Ce.resolvePolyTextureImageRendering)(e.polygon,o),g=e.atlasCanonicalSize??li,u=e.atlasLeafWidth??g,h=e.atlasLeafHeight??g,y=e.canvasW||1,P=e.canvasH||1,b=t?`${(0,Ce.formatCssLengthPx)(-e.x/y*u)} ${(0,Ce.formatCssLengthPx)(-e.y/P*h)}`:void 0,A=t?`${(0,Ce.formatCssLengthPx)(t.width/y*u)} ${(0,Ce.formatCssLengthPx)(t.height/P*h)}`:void 0,C=d&&t?.url?`url(${t.url})`:void 0,R={transform:(0,Ce.formatMatrix3d)(e.atlasMatrix),"--polycss-atlas-size":`${g}px`,"--polycss-atlas-width":(0,Ce.formatCssLengthPx)(u),"--polycss-atlas-height":(0,Ce.formatCssLengthPx)(h),"--polycss-atlas-leaf-sizing":e.atlasLeafSizing??"canonical",backgroundImage:t?.url?`url(${t.url})`:void 0,backgroundPosition:b,backgroundSize:A,backgroundRepeat:t?.url?"no-repeat":void 0,imageRendering:m==="pixelated"?"pixelated":void 0,...d?{"--pnx":e.normal[0].toFixed(4),"--pny":e.normal[1].toFixed(4),"--pnz":e.normal[2].toFixed(4)}:null,...d&&C?{maskImage:C,maskMode:"alpha",maskPosition:b,maskSize:A,maskRepeat:"no-repeat",WebkitMaskImage:C,WebkitMaskPosition:b,WebkitMaskSize:A,WebkitMaskRepeat:"no-repeat"}:null,opacity:t?.url?void 0:0,pointerEvents:s==="none"?"none":void 0,...i},f=e.polygon.data?Object.fromEntries(Object.entries(e.polygon.data).map(([k,B])=>[`data-${k}`,String(B)])):{},O=a?.trim()||void 0;return(0,Un.h)("s",{class:O,style:R,"data-poly-index":String(e.index),"data-polycss-leaf":"polygon","data-polycss-texture-backend":"atlas","data-polycss-texture-leaf-sizing":e.atlasLeafSizing??"canonical","data-polycss-texture-ready":t?.url?"true":"false","data-polycss-texture-image-rendering":m,"data-polycss-texture-projection":"affine","data-polycss-texture-lighting":n,"data-polycss-texture-leaf-width":String(u),"data-polycss-texture-leaf-height":String(h),"data-polycss-double-sided":e.polygon.doubleSided?"true":void 0,...f,...l})}function It({plan:e,geometry:t,className:n,style:o,domAttrs:r,pointerEvents:a="auto"}){let i={transform:(0,Ce.formatMatrix3d)(t.matrix),"--polycss-atlas-width":(0,Ce.formatCssLengthPx)(t.leafWidth),"--polycss-atlas-height":(0,Ce.formatCssLengthPx)(t.leafHeight),"--polycss-atlas-leaf-sizing":"image",backgroundImage:`url(${t.url})`,backgroundPosition:`${(0,Ce.formatCssLengthPx)(t.backgroundPosition[0])} ${(0,Ce.formatCssLengthPx)(t.backgroundPosition[1])}`,backgroundSize:`${(0,Ce.formatCssLengthPx)(t.backgroundSize[0])} ${(0,Ce.formatCssLengthPx)(t.backgroundSize[1])}`,backgroundRepeat:"no-repeat",backgroundBlendMode:"normal",maskImage:"none",WebkitMaskImage:"none",imageRendering:t.imageRendering==="pixelated"?"pixelated":void 0,"--pnx":e.normal[0].toFixed(4),"--pny":e.normal[1].toFixed(4),"--pnz":e.normal[2].toFixed(4),pointerEvents:a==="none"?"none":void 0,...o},l=e.polygon.data?Object.fromEntries(Object.entries(e.polygon.data).map(([d,m])=>[`data-${d}`,String(m)])):{},s=n?.trim()||void 0;return(0,Un.h)("s",{class:s,style:i,"data-poly-index":String(e.index),"data-polycss-leaf":"polygon","data-polycss-texture-backend":"image","data-polycss-texture-leaf-sizing":"image","data-polycss-texture-ready":"true","data-polycss-texture-image-rendering":t.imageRendering,"data-polycss-texture-projection":t.projection,"data-polycss-texture-lighting":t.lighting,"data-polycss-texture-leaf-width":String(t.leafWidth),"data-polycss-texture-leaf-height":String(t.leafHeight),"data-polycss-double-sided":e.polygon.doubleSided?"true":void 0,"data-polycss-texture-source-x":String(t.sourceRect.x),"data-polycss-texture-source-y":String(t.sourceRect.y),"data-polycss-texture-source-width":String(t.sourceRect.width),"data-polycss-texture-source-height":String(t.sourceRect.height),...l,...r})}var Wn=(0,G.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},pointLights:{type:Array,default:void 0},ambientLight:{type:Object,default:void 0},textureLighting:{type:String,default:"baked"},textureQuality:{type:[Number,String],default:void 0},textureLeafSizing:{type:String,default:void 0},textureImageRendering:{type:String,default:void 0},textureBackend:{type:String,default:void 0},textureProjection:{type:String,default:void 0},seamBleed:{type:[Number,String],default:void 0},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,G.inject)(he);if(!o)throw new Error("polycss: PolyScene must be used inside a PolyCamera.");let{sceneElRef:r,applyTransformDirect:a}=o,i=(0,G.ref)(0),l=new Map,s={register(E,L){l.set(E,L),i.value++},unregister(E){l.delete(E),i.value++},version:i,getEntries(){return Array.from(l.values())}},d=new Set,m=(0,G.ref)(!1),g={register(E){d.add(E),m.value=d.size>0},unregister(E){d.delete(E),m.value=d.size>0},hasAny:m},u=(0,G.ref)(null),h=(0,G.ref)(null),y=(0,G.computed)(()=>({textureLighting:e.textureLighting??"baked",directionalLight:e.directionalLight,pointLights:e.pointLights,ambientLight:e.ambientLight,strategies:e.strategies,seamBleed:e.seamBleed??et.DEFAULT_SEAM_BLEED,textureLeafSizing:e.textureLeafSizing,textureImageRendering:e.textureImageRendering,textureBackend:e.textureBackend,textureProjection:e.textureProjection,shadow:e.shadow,shadowRegistry:s,receiverRegistry:g,groundCssZ:u.value,sceneEl:h.value}));(0,G.provide)(Ln,y),(0,G.watch)(h,E=>{r.value=E});let P=!1;(0,G.onMounted)(()=>{P||typeof document<"u"&&(Kt(document),P=!0)}),(0,G.watch)(()=>e.debugShowBackfaces,E=>{let L=h.value;L&&L.classList.toggle("polycss-debug-show-backfaces",!!E)});let b=(0,G.computed)(()=>e.polygons??[]),A=(0,G.computed)(()=>e.centerPolygons??null),C=(0,G.computed)(()=>({directionalLight:e.directionalLight})),R=Nt(b,C),f=(0,G.computed)(()=>A.value??b.value),O=Nt(f,C);(0,G.onMounted)(()=>{r.value=h.value,a()}),(0,G.onUpdated)(a);let k=(0,G.computed)(()=>({tileSize:50,layerElevation:50,directionalLight:e.directionalLight,textureLighting:e.textureLighting,textureQuality:e.textureQuality,textureLeafSizing:e.textureLeafSizing,textureImageRendering:e.textureImageRendering})),B=(0,G.computed)(()=>{let E=e.textureLighting==="dynamic",L=E?void 0:e.directionalLight,F=E?void 0:e.ambientLight,N=E?void 0:e.pointLights,j=(0,me.buildTextureEdgeRepairSets)(R.value.polygons),Q=e.seamBleed??et.DEFAULT_SEAM_BLEED,W=Q==="auto"||typeof Q=="number"&&Number.isFinite(Q)&&Q>0?(0,me.buildSeamBleedPolygonEdges)(R.value.polygons,{tileSize:k.value.tileSize,layerElevation:k.value.layerElevation,directionalLight:L,ambientLight:F}):null;return R.value.polygons.map((z,le)=>At(z,le,{tileSize:k.value.tileSize,layerElevation:k.value.layerElevation,directionalLight:L,pointLights:N,ambientLight:F,seamBleed:W?.has(le)?Q:void 0,seamEdges:W?.get(le),textureEdgeRepairEdges:j[le]}))}),_=(0,G.computed)(()=>e.textureLighting??"baked"),I=(0,G.computed)(()=>e.textureQuality),U=(0,G.computed)(()=>e.textureLeafSizing),X=(0,G.computed)(()=>e.textureBackend),Y=(0,G.computed)(()=>e.textureImageRendering),v=(0,G.computed)(()=>e.textureProjection),c=(0,G.computed)(()=>e.strategies),x=Rt(B,_,I,U,X,Y,v,c),S=(0,G.computed)(()=>{if(e.textureLighting!=="dynamic")return null;let E=e.directionalLight?.direction??[.4,-.7,.59],L=(0,et.worldDirectionToCss)(E),F=Math.hypot(L[0],L[1],L[2])||1,N=L[0]/F,j=L[1]/F,Q=L[2]/F,W=(0,et.parseHexColor)(e.directionalLight?.color??"#ffffff")?.rgb??[255,255,255],z=(0,et.parseHexColor)(e.ambientLight?.color??"#ffffff")?.rgb??[255,255,255],le=e.directionalLight?.intensity??1,xe=e.ambientLight?.intensity??.4,ue=Xe=>(Xe/255).toFixed(4),ve=Q,Ve=Math.sign(ve||1)*Math.max(Math.abs(ve),.01);return{"--plx":N.toFixed(2),"--ply":j.toFixed(2),"--plz":Q.toFixed(2),"--clx":N.toFixed(2),"--cly":j.toFixed(2),"--clz":Ve.toFixed(2),"--plr":ue(W[0]),"--plg":ue(W[1]),"--plb":ue(W[2]),"--pli":le.toFixed(4),"--par":ue(z[0]),"--pag":ue(z[1]),"--pab":ue(z[2]),"--pai":xe.toFixed(4)}}),T=50;(0,G.watchEffect)(()=>{let E=h.value;i.value;let L=s.getEntries();if(L.length===0){E&&E.style.removeProperty("--shadow-ground-cssz"),u.value!==null&&(u.value=null);return}let F=1/0;for(let Q of L){let W=Q();for(let z of W.polygons)for(let le of z.vertices){let xe=le[2]+(W.position[2]??0);xe<F&&(F=xe)}}if(!Number.isFinite(F)){E&&E.style.removeProperty("--shadow-ground-cssz"),u.value!==null&&(u.value=null);return}let N=e.shadow?.lift??.05,j=(F+N)*T;u.value!==j&&(u.value=j),E&&(e.textureLighting==="dynamic"?E.style.setProperty("--shadow-ground-cssz",j.toFixed(3)):E.style.removeProperty("--shadow-ground-cssz"))});let M=(0,G.computed)(()=>{if(!e.autoCenter)return[0,0,0];let E=O.value.sceneBbox;return[(E.min[0]+E.max[0])/2,(E.min[1]+E.max[1])/2,(E.min[2]+E.max[2])/2]});return(0,G.watchEffect)(()=>{o.autoCenterOffset.value=M.value}),(0,G.onBeforeUnmount)(()=>{}),()=>{let E=`polycss-scene${e.class?` ${e.class}`:""}`,L=k.value,F=x.entries.value.map((j,Q)=>{if(j)return Dt({entry:j,page:x.pages.value[j.pageIndex],textureLighting:L.textureLighting??"baked",textureImageRendering:e.textureImageRendering});let W=B.value[Q],z=W?(0,et.resolvePolyTextureLeafGeometry)(W,{imageRendering:e.textureImageRendering,backend:e.textureBackend,projection:e.textureProjection}):null;return W&&z?It({plan:W,geometry:z}):!W||W.texture?null:x.useStableTriangle.value&&(0,me.isSolidTrianglePlan)(W)?wt({entry:W,textureLighting:L.textureLighting??"baked"}):x.useProjectiveQuad.value&&(0,me.isProjectiveQuadPlan)(W)?kt({entry:W,textureLighting:L.textureLighting??"baked"}):x.useBorderShape.value||x.useFullRectSolid.value?Ot({entry:W,textureLighting:L.textureLighting??"baked",forceBorderShape:!x.useFullRectSolid.value}):null}),N=t.default?.()??[];return(0,G.h)("div",{ref:h,class:E,"data-polycss-lighting":L.textureLighting??"baked","aria-hidden":"true",style:{...S.value??null,...n.style},...Object.fromEntries(Object.entries(n).filter(([j])=>j!=="style"&&j!=="class"))},[...F,...N])}}});var D=require("vue"),nt=require("@layoutit/polycss-core"),K=require("@layoutit/polycss-core");var tt=require("vue"),Rr=require("@layoutit/polycss-core"),Lr=[],qn=[];function tn(e,t){let n=(0,tt.ref)(Lr),o=(0,tt.ref)(void 0),r=(0,tt.ref)(!!e.value),a=(0,tt.ref)(null),i=(0,tt.ref)(qn),l=null;function s(){if(l){try{l.dispose()}catch{}l=null}}return(0,tt.watch)(e,(d,m,g)=>{if(!d){s(),n.value=Lr,o.value=void 0,r.value=!1,a.value=null,i.value=qn;return}let u=!1;r.value=!0,a.value=null;let h=l;(0,Rr.loadMesh)(d,t).then(y=>{if(u){try{y.dispose()}catch{}return}if(h)try{h.dispose()}catch{}l=y,n.value=y.polygons,o.value=y.voxelSource,r.value=!1,a.value=null,i.value=y.warnings??qn}).catch(y=>{if(u)return;let P=y instanceof Error?y:new Error(String(y));r.value=!1,a.value=P}),g(()=>{u=!0})},{immediate:!0}),(0,tt.onUnmounted)(()=>{s()}),{polygons:n,voxelSource:o,loading:r,error:a,warnings:i,dispose:s}}var te=require("@layoutit/polycss-core"),ui=[.4,-.7,.59],ci="#ffffff",di=1,mi="#ffffff",pi=.4,Fr=1,yi=8,fi=te.PROJECTIVE_QUAD_BLEED,ut=1e-6,gi=(0,te.resolveProjectiveQuadGuards)({bleed:0}),Vr={t:[0,0,1],b:[0,0,-1],fl:[0,1,0],br:[0,-1,0],fr:[1,0,0],bl:[-1,0,0]},Kn=["t","b","bl","br","fr","fl"],hi=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 wr(e){let t=[];for(let n of Kn)(0,te.normalFacesCamera)(Vr[n],e)&&t.push(n);return t.join("|")}function Pi(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 xi(e){let t=e.vertices;if(t.length<3)return null;let n=t[0],o=0,r=0,a=0;for(let l=1;l+1<t.length;l+=1){let s=t[l],d=t[l+1],m=s[1]-n[1],g=s[0]-n[0],u=s[2]-n[2],h=d[1]-n[1],y=d[0]-n[0],P=d[2]-n[2];o-=g*P-u*y,r-=u*h-m*P,a-=m*y-g*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 bi(e){if(e.texture||e.material||e.uvs||e.textureTriangles||e.vertices.length!==4)return null;let t=xi(e),n=t?hi.get(t.join(",")):void 0;if(!n)return null;let o=1/0,r=1/0,a=1/0,i=-1/0,l=-1/0,s=-1/0;for(let g of e.vertices)o=Math.min(o,g[0]),r=Math.min(r,g[1]),a=Math.min(a,g[2]),i=Math.max(i,g[0]),l=Math.max(l,g[1]),s=Math.max(s,g[2]);let d=1e-6,m=Ai(e.color);return Math.abs(s-a)<=d?{axis:"z",face:n,left:r*te.BASE_TILE,top:o*te.BASE_TILE,width:Math.max(0,(l-r)*te.BASE_TILE),height:Math.max(0,(i-o)*te.BASE_TILE),z:a*te.BASE_TILE,baseColor:m,bleed:Gn()}:Math.abs(i-o)<=d?{axis:"x",face:n,left:r*te.BASE_TILE,top:a*te.BASE_TILE,width:Math.max(0,(l-r)*te.BASE_TILE),height:Math.max(0,(s-a)*te.BASE_TILE),z:-o*te.BASE_TILE,baseColor:m,bleed:Gn()}:Math.abs(l-r)<=d?{axis:"y",face:n,left:a*te.BASE_TILE,top:o*te.BASE_TILE,width:Math.max(0,(s-a)*te.BASE_TILE),height:Math.max(0,(i-o)*te.BASE_TILE),z:-r*te.BASE_TILE,baseColor:m,bleed:Gn()}:null}function Gn(){return{left:0,right:0,top:0,bottom:0}}function vi(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 Or(e){return[e[1]*te.BASE_TILE,e[0]*te.BASE_TILE,e[2]*te.BASE_TILE]}function kr(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])<=ut){if(Math.abs(t[0]-o)<=ut)return"left";if(Math.abs(t[0]-r)<=ut)return"right"}if(Math.abs(t[1]-n[1])<=ut){if(Math.abs(t[1]-a)<=ut)return"top";if(Math.abs(t[1]-i)<=ut)return"bottom"}return null}function Ci(e,t){let n=null;for(let o=0;o<3;o+=1)if(!(Math.abs(e[o]-t[o])<=ut)){if(n!==null)return null;n=o}return n}function Ti(e,t,n){let o=t.vertices,r=Or(o[n]),a=Or(o[(n+1)%o.length]),i=Si(e,kr(e,r),kr(e,a));if(!i)return null;let l=Ci(r,a);if(l===null)return null;let s=Math.min(r[l],a[l]),d=Math.max(r[l],a[l]);return d-s>ut?{item:e,side:i,variableAxis:l,fixed:r,start:s,end:d}:null}function Dr(e){e.item.bleed[e.side]=Math.max(e.item.bleed[e.side],fi)}function Mi(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=Ti(o,r,a);if(!i)continue;let l=vi(i),s=n.get(l);s?s.push(i):n.set(l,[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+ut);for(let i of r)i.item.sourceIndex!==a.item.sourceIndex&&(Dr(i),Dr(a));r.push(a)}}}function Ei(e){let t=(0,te.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 Ai(e){if(!e)return"#cccccc";let t=(0,te.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(${Zn(n.r)}, ${Zn(n.g)}, ${Zn(n.b)}, ${o})`}return Li(n)}function Li({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 Zn(e){return Math.round(Math.max(0,Math.min(255,e)))}function Ri(e,t,n,o){let r=n?.direction??ui,a=Math.hypot(r[0],r[1],r[2])||1,i=r[0]/a,l=r[1]/a,s=r[2]/a,d=Math.max(0,n?.intensity??di)*Math.max(0,e[0]*i+e[1]*l+e[2]*s),m=Math.max(0,o?.intensity??pi),g=n?.color??ci,u=o?.color??mi,h=(0,te.shadePolygon)(t,d,g,u,m),y=Ei(t);if(y.alpha>=1)return h;let P=parseInt(h.slice(1,3),16),b=parseInt(h.slice(3,5),16),A=parseInt(h.slice(5,7),16);return`rgba(${P}, ${b}, ${A}, ${y.alpha})`}function wi(e){if(!e?.length)return[];let t=[];for(let n=0;n<e.length;n+=1){let o=e[n],r=bi(o);if(!r||r.width<=0||r.height<=0)return[];t.push({...r,sourceIndex:n})}return Mi(e,t),t}function Oi(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 ki(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 Di(e){return new Map([[0,e.bleed.top],[1,e.bleed.right],[2,e.bleed.bottom],[3,e.bleed.left]])}function Ii(e,t){let n=e.split(",").map(Number);if(n.length!==16||n.some(r=>!Number.isFinite(r)))return null;let o=te.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 Ir(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,l=r/t,s=a/t;return`matrix3d(${(e.axis==="x"?[l,0,0,0,0,0,s,0,0,-1,0,0,n,-i,o,1]:e.axis==="y"?[0,0,l,0,0,s,0,0,-1,0,0,0,-i,o,n,1]:[l,0,0,0,0,s,0,0,0,0,1,0,n,o,i,1]).map(m=>Number(m.toFixed(6))).join(",")})`}function Fi(e,t){let{xAxis:n,yAxis:o,normal:r,tx:a,ty:i,tz:l}=Oi(e),s=(0,te.computeProjectiveQuadMatrix)(ki(e),n,o,r,a,i,l,gi,Di(e));return s?Ii(s,t)??Ir(e,t):Ir(e,t)}function Vi(e){let t=e.defaultView?.matchMedia;return t?t("(pointer: coarse)").matches||t("(hover: none)").matches:!1}function zi(e){return Vi(e)?yi:Fr}function Bi(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 _i(e,t){let n=Bi(e),o=t.meshRotation;o&&(n=(0,te.rotateVec3)(n,o[0]??0,o[1]??0,o[2]??0));let[r,a]=(0,te.rotateVec3)(n,t.rotX,0,t.rotY);return{x:r,y:a}}function Hi(e,t,n){let o=e.filter(u=>t.has(u.face)).map(u=>({item:u,..._i(u,n)}));if(o.length===0)return[];let r=1/0,a=-1/0,i=1/0,l=-1/0;for(let u of o)r=Math.min(r,u.x),a=Math.max(a,u.x),i=Math.min(i,u.y),l=Math.max(l,u.y);let s=4,d=Math.max(1e-6,a-r),m=Math.max(1e-6,l-i),g=new Map;for(let u of o){let h=Math.min(s-1,Math.max(0,Math.floor((u.x-r)/d*s))),y=Math.min(s-1,Math.max(0,Math.floor((u.y-i)/m*s))),P=`${h}:${y}`,b=g.get(P);b||(b={tx:h,ty:y,sourceIndex:u.item.sourceIndex,items:[]},g.set(P,b)),b.items.push(u.item),b.sourceIndex=Math.min(b.sourceIndex,u.item.sourceIndex)}return Array.from(g.values()).sort((u,h)=>u.ty-h.ty||u.tx-h.tx||u.sourceIndex-h.sourceIndex).flatMap(u=>u.items)}function zr(e){let{doc:t,wrapper:n,polygons:o,directionalLight:r,ambientLight:a}=e,i=wi(o);if(i.length===0)return null;let l=new Set(i.map(v=>v.face));n.classList.add("polycss-voxel-mesh");let s=zi(t);s!==Fr&&n.style.setProperty("--polycss-voxel-primitive",`${s}px`);let d=new Map,m=(v,c)=>{let x=`${v}|${c}`,S=d.get(x);if(S)return S;let T=Ri(Vr[v],c,r,a);return d.set(x,T),T},g=new Map,u=new Map,h=new Map,y=new Map;for(let v of i){let c=y.get(v.face);c||(c=[],y.set(v.face,c)),c.push(v)}let P="",b=0,A=new Set,C=v=>{let c=g.get(v.sourceIndex);return c||(c=t.createElement("b"),g.set(v.sourceIndex,c),Pi(c,m(v.face,v.baseColor),Fi(v,s))),c},R=v=>{let c=u.get(v);return c||(c=t.createElement("span"),c.className=`polycss-voxel-face polycss-voxel-face-${v}`,c.dataset.polycssVoxelFace=v,c.__polycssVoxelFaceHost=!0,u.set(v,c)),c},f=()=>{for(let v of Array.from(n.childNodes))if(!v.__polycssVoxelFaceHost)return v;return null},O=(v,c)=>{let x=c.map(M=>M.sourceIndex).join(",");if(h.get(v)===x)return;let S=R(v),T=t.createDocumentFragment();for(let M of c)T.appendChild(C(M));S.replaceChildren(T),h.set(v,x)},k=()=>{for(let v of Kn)l.has(v)&&O(v,y.get(v)??[])},B=v=>new Set(v.split("|").filter(Boolean)),_=v=>{let c=B(v);return Kn.filter(x=>c.has(x)&&l.has(x))},I=v=>{let c=0;for(let x of v)c+=y.get(x)?.length??0;return c},U=v=>{let c=new Set,x=[],S=new Map;for(let T of v){c.has(T.face)||(c.add(T.face),x.push(T.face));let M=S.get(T.face);M||(M=[],S.set(T.face,M)),M.push(T)}return{orderedFaces:x,itemsByFace:S}},X=(v,c)=>{let x=new Set(v);for(let S of A){if(x.has(S))continue;let T=u.get(S);T?.parentNode===n&&n.removeChild(T)}if(c){let S=t.createDocumentFragment();for(let T of v)S.appendChild(R(T));n.insertBefore(S,f()),A=x;return}for(let S=0;S<v.length;S+=1){let T=v[S],M=R(T);if(M.parentNode===n)continue;let E=null;for(let L=S+1;L<v.length;L+=1){let F=u.get(v[L]);if(F?.parentNode===n){E=F;break}}n.insertBefore(M,E??f())}A=x},Y=(v,c,x)=>{if(!x){let L=_(v);X(L,!1),b=I(L);return}let S=new Set(v.split("|").filter(Boolean)),T=Hi(i,S,c),{orderedFaces:M,itemsByFace:E}=U(T);for(let L of M)O(L,E.get(L)??[]);X(M,!0),b=T.length};return k(),{get brushCount(){return b},render(v){P=wr(v),Y(P,v,!0)},syncCamera(v){let c=wr(v);c!==P&&(P=c,Y(c,v,!1))},dispose(){for(let v of u.values())v.remove();n.classList.remove("polycss-voxel-mesh"),n.style.removeProperty("--polycss-voxel-primitive"),g.clear(),u.clear(),h.clear(),b=0,A=new Set,P=""}}}var Qn=new WeakMap;function Br(e,t){Qn.set(e,t)}function _r(e){Qn.delete(e)}function Ft(e){let t=e;for(;t;){if(t instanceof HTMLElement){let n=Qn.get(t);if(n)return n}t=t.parentElement}return null}function Vt(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 yn(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=Ft(r);if(a&&Vt(r,e,t))return a}return null}var Hr=new WeakMap,Nr=new WeakMap;function Ni(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 jr(e){if(e.length===0)return e;let t=(0,K.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(l=>({...l,vertices:l.vertices.map(a)}))}:null}))}var pe=(0,D.defineComponent)({name:"PolyMesh",inheritAttrs:!1,props:{id:{type:String,default:void 0},src:{type:String,default:void 0},mtl:{type:String,default:void 0},polygons:{type:Array,default:void 0},voxelSource:{type:Object,default:void 0},autoCenter:{type:Boolean,default:!1},textureLighting:{type:String,default:void 0},textureQuality:{type:[Number,String],default:void 0},textureLeafSizing:{type:String,default:void 0},textureImageRendering:{type:String,default:void 0},textureBackend:{type:String,default:void 0},textureProjection:{type:String,default:void 0},seamBleed:{type:[Number,String],default:void 0},atomicAtlas:{type:Boolean,default:!1},onFrameReady:{type:Function,default:void 0},castShadow:{type:Boolean,default:!1},receiveShadow:{type:Boolean,default:!1},shadowDefinition:{type:Number,default:void 0},merge:{type:Boolean,default:!0},meshResolution:{type:String,default:void 0},parseOptions:{type:Object,default:void 0},class:{type:String},position:{type:Array,default:void 0},scale:{type:[Number,Array],default:void 0},rotation:{type:Array,default:void 0},onClick:{type:Function,default:void 0},onContextMenu:{type:Function,default:void 0},onDoubleClick:{type:Function,default:void 0},onWheel:{type:Function,default:void 0},onPointerDown:{type:Function,default:void 0},onPointerUp:{type:Function,default:void 0},onPointerMove:{type:Function,default:void 0},onPointerOver:{type:Function,default:void 0},onPointerOut:{type:Function,default:void 0},onPointerEnter:{type:Function,default:void 0},onPointerLeave:{type:Function,default:void 0},onPointerCancel:{type:Function,default:void 0}},setup(e,{slots:t,attrs:n,expose:o}){let r=(0,D.computed)(()=>e.src??""),a=(0,D.computed)(()=>{let w={...e.parseOptions??{}};return e.mtl&&(w.mtlUrl=e.mtl),e.meshResolution!==void 0&&(w.meshResolution=e.meshResolution),Object.keys(w).length>0?w:void 0}),i=tn(r,a.value),l=(0,D.computed)(()=>e.src?i.polygons.value:e.polygons??[]),s=(0,D.ref)(null),d=null;(0,D.watch)(l,()=>{s.value=null,d=null});let m=(0,D.computed)(()=>s.value??l.value),g=(0,D.computed)(()=>e.merge?(0,K.optimizeMeshPolygons)(m.value,e.meshResolution!==void 0?{meshResolution:e.meshResolution}:void 0):m.value),u=(0,D.computed)(()=>e.autoCenter?jr(g.value):g.value),h=!t.polygon,y=No(),P=(0,D.inject)(he,null),b=(0,D.ref)(0),A;(0,D.watchEffect)(w=>{A?.(),A=P?.store.subscribe(()=>{b.value++}),w(()=>{A?.(),A=void 0})});let C=(0,D.computed)(()=>e.textureLighting??y?.value.textureLighting??"baked"),R=(0,D.computed)(()=>y?.value.strategies),f=(0,D.computed)(()=>e.seamBleed??y?.value.seamBleed??K.DEFAULT_SEAM_BLEED),O=(0,D.computed)(()=>e.textureLeafSizing??y?.value.textureLeafSizing),k=(0,D.computed)(()=>e.textureImageRendering??y?.value.textureImageRendering),B=(0,D.computed)(()=>e.textureBackend??y?.value.textureBackend),_=(0,D.computed)(()=>e.textureProjection??y?.value.textureProjection),I=(0,D.computed)(()=>y?.value.directionalLight),U=(0,D.computed)(()=>y?.value.pointLights),X=(0,D.computed)(()=>y?.value.ambientLight),Y=(0,D.computed)(()=>e.src?i.voxelSource.value:e.voxelSource??void 0),v=(0,D.computed)(()=>!!(Y.value&&s.value===null&&!t.polygon&&!t.default&&C.value==="baked"&&!e.castShadow)),c=(0,D.computed)(()=>{if(C.value!=="dynamic")return null;let w=e.rotation;if(!w||w[0]===0&&w[1]===0&&w[2]===0)return null;let $=y?.value.directionalLight?.direction;if(!$)return null;let H=(0,K.inverseRotateVec3)($,w),q=Math.hypot(H[0],H[1],H[2])||1;return{"--plx":(H[0]/q).toFixed(2),"--ply":(H[1]/q).toFixed(2),"--plz":(H[2]/q).toFixed(2)}}),x=(0,D.ref)(e.rotation),S=(0,D.ref)(0),T=(0,D.computed)(()=>{let w=I.value;if(!w)return w;let $=(0,nt.worldDirectionalLightToCss)(w);return x.value?{...$,direction:(0,K.inverseRotateVec3)($.direction,x.value)}:$}),M=(0,D.computed)(()=>{let w=U.value;if(!w||w.length===0)return;let $=e.position??[0,0,0],H=x.value??[0,0,0],q=H[0]!==0||H[1]!==0||H[2]!==0;return w.map(Z=>{let Se=[Z.position[0]-$[0],Z.position[1]-$[1],Z.position[2]-$[2]],ge=q?(0,K.inverseRotateVec3)(Se,H):Se;return{...Z,position:ge}})}),E=void 0,L=(0,D.computed)(()=>{if(!h||v.value)return[];let w=(0,me.buildTextureEdgeRepairSets)(u.value),$=f.value==="auto"||typeof f.value=="number"&&Number.isFinite(f.value)&&f.value>0?(0,me.buildSeamBleedPolygonEdges)(u.value,{directionalLight:T.value,ambientLight:X.value}):null,H=(0,nt.buildBasisHints)(u.value,{directionalLight:T.value,ambientLight:X.value});return u.value.map((q,Z)=>At(q,Z,{directionalLight:T.value,pointLights:M.value,ambientLight:X.value,seamBleed:$?.has(Z)?f.value:void 0,seamEdges:$?.get(Z),textureEdgeRepairEdges:w[Z],lightOccludedPolyIndices:E},H[Z]))}),F=(0,D.computed)(()=>e.textureQuality),N=(0,D.computed)(()=>e.atomicAtlas),j=Rt(L,C,F,O,B,k,_,R,N),Q=[],W=()=>{let w=Q.splice(0);for(let $ of w)$()};(0,D.watch)(()=>j.ready.value,w=>{w&&W()},{immediate:!0}),(0,D.onBeforeUnmount)(W);let z=(0,D.computed)(()=>h?Yn(j.plans.value,C.value,R.value):{});(0,D.watch)(()=>j.entries.value,()=>{e.atomicAtlas&&j.ready.value&&e.onFrameReady?.()},{flush:"sync"});let le=(0,D.computed)(()=>Ni(z.value)),xe=(0,D.computed)(()=>{if(!e.castShadow||y?.value.receiverRegistry?.hasAny.value)return null;let w=y?.value,$=w?.groundCssZ??null;if($===null)return null;let H=w?.shadow,q=w?.directionalLight?.direction??[.4,-.7,.59],Z=(0,K.worldDirectionToCss)(q),Se=e.position?.[2]??0,ge=$-Se*K.BASE_TILE,Me=(0,K.findOverlappingPolygonDuplicates)(u.value,{normalTolerance:.1,distanceTolerance:.5,overlapFraction:.95,preserveDoubleSidedBackfaces:!1}),ce=[],_e=1/0,$e=1/0,we=-1/0,Ue=-1/0,Ze=1/0,J=1/0,V=-1/0,fe=-1/0,dt=u.value,at=L.value;for(let Oe=0;Oe<dt.length;Oe++){if(Me.has(Oe)||!at[Oe])continue;let ft=dt[Oe],on=[];for(let vt of ft.vertices){let We=[vt[1]*K.BASE_TILE,vt[0]*K.BASE_TILE,vt[2]*K.BASE_TILE];We[0]<Ze&&(Ze=We[0]),We[1]<J&&(J=We[1]),We[0]>V&&(V=We[0]),We[1]>fe&&(fe=We[1]);let qe=(0,K.projectCssVertexToGround)(We,Z,ge);on.push(qe),qe[0]<_e&&(_e=qe[0]),qe[1]<$e&&($e=qe[1]),qe[0]>we&&(we=qe[0]),qe[1]>Ue&&(Ue=qe[1])}ce.push(on)}if(ce.length===0)return null;let ee=H?.maxExtend??2e3,oe=Math.max(_e,Ze-ee),He=Math.max($e,J-ee),it=Math.min(we,V+ee),mt=Math.min(Ue,fe+ee),Ke=it-oe,pt=mt-He;if(!(Ke>0)||!(pt>0))return null;let Qe=H?.color??"#000000",Ee=H?.opacity??.25,Le=(0,K.parseHexColor)(Qe)?.rgb??[0,0,0],Ae="";for(let Oe of ce){let yt=(0,K.ensureCcw2D)(Oe);Ae+=`M${(yt[0][0]-oe).toFixed(3)},${(yt[0][1]-He).toFixed(3)}`;for(let ft=1;ft<yt.length;ft++)Ae+=`L${(yt[ft][0]-oe).toFixed(3)},${(yt[ft][1]-He).toFixed(3)}`;Ae+="Z"}return(0,D.h)("svg",{class:"polycss-shadow polycss-shadow-svg",width:String(Ke),height:String(pt),viewBox:`0 0 ${Ke} ${pt}`,style:{position:"absolute",top:"0",left:"0",display:"block",overflow:"hidden",transformOrigin:"0 0",pointerEvents:"none",willChange:"transform",transform:`translate3d(${oe.toFixed(3)}px,${He.toFixed(3)}px,${ge.toFixed(3)}px)`}},[(0,D.h)("path",{d:Ae,fill:`rgb(${Le[0]},${Le[1]},${Le[2]})`,"fill-rule":"nonzero",stroke:`rgb(${Le[0]},${Le[1]},${Le[2]})`,"stroke-width":"3","stroke-linejoin":"round",opacity:Ee.toFixed(4)})])}),ue=(0,D.computed)(()=>e.receiveShadow?(0,nt.buildSharedEdgeMap)(u.value):void 0),ve=(0,D.computed)(()=>{if(!e.receiveShadow)return[];let w=y?.value,$=w?.shadowRegistry;if(!$)return[];$.version.value,b.value;let H=$.getEntries();if(H.length===0)return[];let q=w?.directionalLight?.direction??[.4,-.7,.59],Z=(0,K.worldDirectionToCss)(q),ge=C.value==="dynamic"?[]:w?.pointLights??[],Me=ge.map(ee=>({position:(0,K.worldPositionToCss)(ee.position),color:ee.color,intensity:ee.intensity})),ce=ge.map((ee,oe)=>ee.castShadow?oe:-1).filter(ee=>ee>=0),_e=!!w?.directionalLight?.direction&&(w.directionalLight.intensity??1)>0,$e=ce.length>0,we=w?.shadow?.lift??.001,Ue=(0,K.prepareReceiverFacePlanes)(u.value,e.position??[0,0,0],e.scale,new Set,we,e.rotation);if(Ue.length===0)return[];let Ze=[],J=0,V=ue.value;for(let ee of H){let oe=ee(),He=(0,K.prepareCasterPolyItems)(oe.polygons,oe.position,oe.scale,()=>!0,oe.rotation??null),it=oe.polygons===u.value,mt;if(!it&&(oe.polygons.length>=40||$e)){let Qe=oe.rotation??null,Ee=oe.position,Le=JSON.stringify(oe.scale??null),Ae=`${Ee[0]},${Ee[1]},${Ee[2]}|${Qe?Qe.join(","):"n"}|${Le}`,Oe=Hr.get(oe.polygons);(Oe===void 0||Nr.get(oe.polygons)!==Ae)&&(Oe=(0,K.prepareCasterEdgeOwners)(oe.polygons,Ee,oe.scale,Qe),Hr.set(oe.polygons,Oe),Nr.set(oe.polygons,Ae)),mt=Oe}let Ke,pt;if(w?.shadow?.parametric){let Qe=oe.shadowDefinition??w.shadow.definition??16,Ee=(0,K.buildParametricCasterOverride)({polysWorldVerts:He.map(Le=>Le.wv),lightDir:Z,definition:Qe,isSelf:it,style:w.shadow.style,pointLights:ce.map(Le=>({position:Me[Le].position,index:Le}))});Ke=Ee.overrideSilhouette,pt=Ee.overridePointSilhouettes}Ze.push({id:Symbol(`caster-${J++}`),items:He,selfShadowEdgeMap:it?V:void 0,edgeOwners:mt,casterPolygonCount:oe.polygons.length,overrideSilhouette:Ke,overridePointSilhouettes:pt})}let fe=P?.store.getState().cameraState,dt={rotX:fe?.rotX??65,rotY:fe?.rotY??45,meshRotation:e.rotation};return(0,K.computeMergedReceiverShadows)({receiverPlanes:Ue,receiverPolygons:u.value,receiverHasTexture:u.value.some(ee=>ee.texture!==void 0),casters:Ze,lightDir:Z,runDirectional:_e,pointPasses:ce.map(ee=>({lightPos:Me[ee].position,index:ee})),allPointLights:Me,cameraRot:dt,ambientLight:w?.ambientLight,directionalLight:w?.directionalLight,shadow:{color:w?.shadow?.color,opacity:w?.shadow?.opacity??.25,maxExtend:w?.shadow?.maxExtend}}).map(ee=>(0,D.h)("svg",{key:`receiver-${ee.faceIndex}`,class:"polycss-shadow polycss-shadow-svg polycss-shadow-receiver","data-poly-shadow-type":"receiver","data-poly-shadow-receiver-face":String(ee.faceIndex),"data-poly-shadow-receiver-polys":JSON.stringify(ee.memberPolyIndices),width:String(ee.width),height:String(ee.height),viewBox:`0 0 ${ee.width} ${ee.height}`,style:{position:"absolute",top:"0",left:"0",display:"block",overflow:"hidden",transformOrigin:"0 0",pointerEvents:"none",willChange:"transform",opacity:String(ee.svgOpacity),transform:ee.matrixCss}},[...ee.baseFill&&ee.baseD?[(0,D.h)("path",{d:ee.baseD,fill:ee.baseFill,"fill-rule":"nonzero"})]:[],...ee.layers.map((oe,He)=>(0,D.h)("path",{key:He,d:oe.d,fill:oe.fill,"fill-rule":"nonzero",...oe.opacity!==1?{opacity:oe.opacity.toFixed(4)}:{},...oe.multiply?{style:{mixBlendMode:"multiply"}}:{}}))]))}),Ve=(0,D.shallowRef)(u.value),Xe=-1;(0,D.watch)(u,w=>{let $=y?.value.shadow?.followAnimation??!1,H=w.length!==Xe;Xe>=0&&!$&&!H||(Xe=w.length,Ve.value=w)},{immediate:!0});let ze=Symbol();(0,D.watch)(()=>e.castShadow,(w,$,H)=>{let q=y?.value.shadowRegistry;q&&(w?q.register(ze,()=>{let Z=Ve.value,Se=(0,K.findOverlappingPolygonDuplicates)(Z,{normalTolerance:.1,distanceTolerance:.5,overlapFraction:.95,preserveDoubleSidedBackfaces:!1}),ge=new Set,Me=L.value;for(let ce=0;ce<Me.length;ce++)Me[ce]&&!Se.has(ce)&&ge.add(ce);return{polygons:Z,position:e.position??[0,0,0],scale:e.scale,rotation:e.rotation,renderedPolygonIndices:ge,shadowDefinition:e.shadowDefinition}}):q.unregister(ze),H(()=>q.unregister(ze)))},{immediate:!0});let se=Symbol();(0,D.watch)(()=>e.receiveShadow,(w,$,H)=>{let q=y?.value.receiverRegistry;q&&(w?q.register(se):q.unregister(se),H(()=>q.unregister(se)))},{immediate:!0}),(0,D.onBeforeUnmount)(()=>{y?.value.shadowRegistry?.unregister(ze),y?.value.receiverRegistry?.unregister(se)});let re=(0,D.ref)(null),ye={get element(){return re.value},get id(){return e.id},getPosition:()=>e.position,getRotation:()=>e.rotation,getScale:()=>e.scale,getPolygons:()=>d??u.value,setPolygons(w){let $=e.autoCenter?jr(w):w;d=$;let H=re.value,q=H&&h&&jn(H,$,{directionalLight:T.value,ambientLight:X.value,textureLighting:C.value,strategies:R.value,seamBleed:f.value,colorFrame:++S.value,colorFreezeFrames:0});s.value=w.slice()},updatePolygon(w,$){let H=d??u.value,q=typeof w=="number"?w:H.indexOf(w);q<0||q>=H.length||(Object.assign(H[q],$),s.value=H.slice(),d=null)},rebakeAtlas:()=>{x.value=e.rotation},whenTexturesReady(){return j.ready.value?Promise.resolve():new Promise(w=>{Q.push(w)})}};o(ye),(0,D.onMounted)(()=>{re.value&&Br(re.value,ye)}),(0,D.onBeforeUnmount)(()=>{re.value&&_r(re.value)});let Be=(0,D.ref)(null);(0,D.watchEffect)(w=>{let $=re.value;if(Be.value?.dispose(),Be.value=null,!v.value||!$)return;let H=zr({doc:$.ownerDocument,wrapper:$,polygons:u.value,directionalLight:T.value,ambientLight:X.value});if(!H)return;let q=()=>{let Se=P?.store.getState().cameraState;return{rotX:Se?.rotX??65,rotY:Se?.rotY??45,meshRotation:e.rotation}};Be.value=H,H.render(q());let Z=P?.store.subscribe(()=>{H.syncCamera(q())});w(()=>{Z?.(),H.dispose(),Be.value===H&&(Be.value=null)})});let je=null;function bt(w,$,H){let q=[];if(typeof document<"u"&&typeof document.elementsFromPoint=="function"){let ce=document.elementsFromPoint($,H),_e=new Set;for(let $e of ce){let we=Ft($e);we&&!_e.has(we)&&(_e.add(we),q.push({object:we}))}}let Z=0,Se=0,ge=P?.cameraElRef.value;if(ge){let ce=ge.getBoundingClientRect();ce.width>0&&ce.height>0&&(Z=($-ce.left)/ce.width*2-1,Se=-((H-ce.top)/ce.height*2-1))}let Me=0;return je&&(Me=Math.hypot($-je.x,H-je.y)),{object:q[0]?.object??ye,eventObject:ye,intersections:q,pointer:{x:Z,y:Se},delta:Me,nativeEvent:w,stopPropagation:()=>w.stopPropagation()}}function Te(w,$,H,q){w&&w(bt($,H,q))}return()=>{let $={transform:(0,K.buildPolyMeshTransform)({position:e.position,scale:e.scale,rotation:e.rotation}),...c.value??void 0,...n.style,...le.value??void 0},H=Object.fromEntries(Object.entries(n).filter(([J])=>J!=="style"&&J!=="class")),q=`polycss-mesh${v.value?" polycss-voxel-mesh":""}${e.class?` ${e.class}`:""}`,Z={};e.onClick&&(Z.onClick=J=>{let V=J;Te(e.onClick,V,V.clientX,V.clientY)}),e.onContextMenu&&(Z.onContextmenu=J=>{let V=J;Te(e.onContextMenu,V,V.clientX,V.clientY)}),e.onDoubleClick&&(Z.onDblclick=J=>{let V=J;Te(e.onDoubleClick,V,V.clientX,V.clientY)}),e.onWheel&&(Z.onWheel=J=>{let V=J;Te(e.onWheel,V,V.clientX,V.clientY)}),Z.onPointerdown=J=>{let V=J;je={x:V.clientX,y:V.clientY},Te(e.onPointerDown,V,V.clientX,V.clientY)},Z.onPointerup=J=>{let V=J;Te(e.onPointerUp,V,V.clientX,V.clientY),je=null},e.onPointerMove&&(Z.onPointermove=J=>{let V=J;Te(e.onPointerMove,V,V.clientX,V.clientY)}),(e.onPointerOver||e.onPointerEnter)&&(Z.onPointerenter=J=>{let V=J;Te(e.onPointerOver,V,V.clientX,V.clientY),Te(e.onPointerEnter,V,V.clientX,V.clientY)}),(e.onPointerOut||e.onPointerLeave)&&(Z.onPointerleave=J=>{let V=J;Te(e.onPointerOut,V,V.clientX,V.clientY),Te(e.onPointerLeave,V,V.clientX,V.clientY)}),e.onPointerCancel&&(Z.onPointercancel=J=>{let V=J;Te(e.onPointerCancel,V,V.clientX,V.clientY),je=null});let Se=e.id?{"data-poly-mesh-id":e.id}:{};if(e.src&&i.loading.value&&i.polygons.value.length===0)return(0,D.h)("div",{ref:re,class:`polycss-mesh polycss-mesh-loading${e.class?` ${e.class}`:""}`,style:$,...Se,...Z,...H},t.fallback?.()??[]);if(e.src&&i.error.value&&i.polygons.value.length===0)return(0,D.h)("div",{ref:re,class:`polycss-mesh polycss-mesh-error${e.class?` ${e.class}`:""}`,style:$,...Se,...Z,...H},t.error?.({error:i.error.value})??[]);let ge=u.value,Me=t.polygon?ge.map((J,V)=>(0,D.h)("template",{key:V},t.polygon?.({polygon:J,index:V}))):v.value?[]:j.entries.value.map((J,V)=>{if(J)return Dt({entry:J,page:j.pages.value[J.pageIndex],textureLighting:C.value,textureImageRendering:k.value,solidPaintDefaults:z.value});let fe=j.plans.value[V],dt=fe?(0,nt.resolvePolyTextureLeafGeometry)(fe,{imageRendering:k.value,backend:B.value,projection:_.value}):null;if(fe&&dt)return It({plan:fe,geometry:dt});if(!fe||fe.texture)return null;if((0,me.isProjectiveQuadPlan)(fe))return kt({entry:fe,textureLighting:C.value,solidPaintDefaults:z.value});if((0,me.isSolidTrianglePlan)(fe))return wt({entry:fe,textureLighting:C.value,solidPaintDefaults:z.value});let at=R.value?.disable?.includes("i")?null:(0,nt.cornerShapeGeometryForPlan)(fe);return at?$n({entry:fe,geometry:at,textureLighting:C.value,solidPaintDefaults:z.value}):Ot({entry:fe,textureLighting:C.value,solidPaintDefaults:z.value,forceBorderShape:!j.useFullRectSolid.value})}),ce=t.default?.()??[],_e=xe.value,$e=_e?[_e]:[],we=ve.value,Ue=y?.value?.sceneEl??null,Ze=Ue&&we.length>0?[(0,D.h)(D.Teleport,{to:Ue},we)]:[];return(0,D.h)("div",{ref:re,class:q,style:$,...Se,...Z,...H},[...$e,...Ze,...Me,...ce])}}});var ct=require("vue"),$t=require("@layoutit/polycss-core");function ji(e,t,n,o,r){let a=typeof n=="number"?n:n?.[0]??1,i=typeof n=="number"?n:n?.[1]??1,l=typeof n=="number"?n:n?.[2]??1,s=a!==1||i!==1||l!==1,d=!!t&&(!!t[0]||!!t[1]||!!t[2]),m=(e?.[1]??0)*$t.BASE_TILE,g=(e?.[0]??0)*$t.BASE_TILE,u=(e?.[2]??0)*$t.BASE_TILE,h=[];return h.push(`translate3d(${m}px, ${g}px, ${u}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}, ${l})`),h.push(`translate(${-o/2}px, ${-r/2}px)`),h.join(" ")}var Jn=(0,ct.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,ct.computed)(()=>e.width*$t.BASE_TILE),n=(0,ct.computed)(()=>e.height*$t.BASE_TILE),o=(0,ct.computed)(()=>ji(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,ct.h)("div",{class:e.class?`polycss-iframe ${e.class}`:"polycss-iframe",style:r},[(0,ct.h)("iframe",a)])}}});var Ut=require("vue");var eo=(0,Ut.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,Ut.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,Ut.h)(pe,{polygons:t.value,castShadow:!1,class:e.class?`polycss-ground ${e.class}`:"polycss-ground"})}});var to=require("vue");function Yr(e){return typeof e=="function"?(0,to.computed)(()=>{let{texture:t,key:n}=e();return{texture:t,key:n}}):(0,to.computed)(()=>({texture:e.texture,key:e.key}))}var Re=require("vue"),Xr=require("@layoutit/polycss-core");var Yi=4;function fn(e,t=Yi){let n=e.toFixed(t).replace(/\.?0+$/,"");return Number(n)===0||Object.is(Number(n),-0)?"0":`${n}px`}function Xi(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 $i({plan:e,material:t,uvRect:n,className:o,style:r,domAttrs:a,pointerEvents:i="auto",imageRendering:l}){let{u0:s,u1:d,v0:m,v1:g}=n,u=d-s,h=g-m,y=1/u,P=1/h,b=Math.max(m,g),A=s/u,C=(1-b)/h,R={transform:`matrix3d(${e.canonicalMatrix})`,backgroundImage:`url(${t.texture})`,backgroundSize:`${fn(y)} ${fn(P)}`,backgroundPosition:`${fn(-A)} ${fn(-C)}`,backgroundRepeat:"no-repeat",imageRendering:l==="pixelated"?"pixelated":void 0,pointerEvents:i==="none"?"none":void 0,...r},f=e.polygon.data?Object.fromEntries(Object.entries(e.polygon.data).map(([k,B])=>[`data-${k}`,String(B)])):{},O=o?.trim()||void 0;return(0,Re.h)("i",{class:O,style:R,"data-poly-index":String(e.index),"data-polycss-leaf":"polygon","data-polycss-texture-backend":"image","data-polycss-texture-ready":"true","data-polycss-texture-image-rendering":l??"auto","data-polycss-texture-projection":"affine","data-polycss-texture-lighting":"source","data-polycss-double-sided":e.polygon.doubleSided?"true":void 0,...f,...a})}var no=(0,Re.defineComponent)({name:"Poly",inheritAttrs:!1,props:{vertices:{type:Array,required:!0},color:{type:String},texture:{type:String},textureImageSource:{type:Object,default:void 0},texturePresentation:{type:Object,default:void 0},uvs:{type:Array,default:void 0},data:{type:Object,default:void 0},doubleSided:{type:Boolean,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},textureLeafSizing:{type:String,default:void 0},textureImageRendering:{type:String,default:void 0},textureBackend:{type:String,default:void 0},textureProjection:{type: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,Re.computed)(()=>e.textureLighting??e.context?.textureLighting??"baked"),o=(0,Re.computed)(()=>e.textureQuality??e.context?.textureQuality),r=(0,Re.computed)(()=>e.textureLeafSizing??e.context?.textureLeafSizing),a=(0,Re.computed)(()=>e.textureImageRendering??e.context?.textureImageRendering),i=(0,Re.computed)(()=>e.textureBackend??e.context?.textureBackend),l=(0,Re.computed)(()=>e.textureProjection??e.context?.textureProjection),s=(0,Re.computed)(()=>e.material?.texture??e.texture),d=(0,Re.computed)(()=>e.material&&e.uvs?Xi(e.uvs):null),m=(0,Re.computed)(()=>{let h=e.context?.tileSize??50;return At({vertices:e.vertices,color:e.baseColor??e.color,texture:s.value,textureImageSource:e.textureImageSource,texturePresentation:e.texturePresentation,uvs:e.uvs,data:e.data,doubleSided:e.doubleSided,material:e.material},0,{tileSize:h,layerElevation:e.context?.layerElevation??h,directionalLight:e.context?.directionalLight})}),g=(0,Re.computed)(()=>d.value?[]:[m.value]),u=Rt(g,n,o,r,i,a,l);return()=>{let h=m.value,y=u.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 b=P.length>0?P.join(" "):void 0,A={};if(e.data)for(let[O,k]of Object.entries(e.data))A[`data-${O}`]=String(k);let C={...t,...A},R=Object.fromEntries(Object.entries(C).filter(([O])=>O!=="class"&&O!=="style")),f;if(d.value&&e.material&&h)f=$i({plan:h,material:e.material,uvRect:d.value,className:C.class??void 0,style:C.style,domAttrs:R,pointerEvents:e.pointerEvents??"auto",imageRendering:a.value});else if(y)f=Dt({entry:y,page:u.pages.value[y.pageIndex],textureLighting:n.value,textureImageRendering:a.value,className:C.class??void 0,style:C.style,domAttrs:R,pointerEvents:e.pointerEvents??"auto"});else{let O=h?(0,Xr.resolvePolyTextureLeafGeometry)(h,{imageRendering:a.value,backend:i.value,projection:l.value}):null;h&&O&&(f=It({plan:h,geometry:O,className:C.class??void 0,style:C.style,domAttrs:R,pointerEvents:e.pointerEvents??"auto"}))}return!f&&h&&!h.texture&&(f=(0,me.isSolidTrianglePlan)(h)?wt({entry:h,textureLighting:n.value,className:C.class??void 0,style:C.style,domAttrs:R,pointerEvents:e.pointerEvents??"auto"}):(0,me.isProjectiveQuadPlan)(h)?kt({entry:h,textureLighting:n.value,className:C.class??void 0,style:C.style,domAttrs:R,pointerEvents:e.pointerEvents??"auto"}):Ot({entry:h,textureLighting:n.value,className:C.class??void 0,style:C.style,domAttrs:R,pointerEvents:e.pointerEvents??"auto"})),f?b?(0,Re.h)("div",{class:"polycss-poly-wrapper",style:{transform:b,position:"absolute",transformStyle:"preserve-3d"}},[f]):f:null}}});var ne=require("vue"),Pe=require("@layoutit/polycss-core");var oo=(0,ne.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,ne.computed)(()=>(0,Pe.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,ne.h)(pe,{polygons:t.value,position:e.position,scale:e.scale,rotation:e.rotation,autoCenter:e.autoCenter,id:e.id})}}),ro=(0,ne.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,ne.computed)(()=>(0,Pe.planePolygons)({axis:e.axis,size:e.size,offset:e.offset,along:e.along,color:e.color}));return()=>(0,ne.h)(pe,{polygons:t.value,position:e.position,scale:e.scale,rotation:e.rotation,autoCenter:e.autoCenter,id:e.id})}}),ao=(0,ne.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,ne.computed)(()=>(0,Pe.ringPolygons)({axis:e.axis,radius:e.radius,halfThickness:e.halfThickness,segments:e.segments,color:e.color}));return()=>(0,ne.h)(pe,{polygons:t.value,position:e.position,scale:e.scale,rotation:e.rotation,autoCenter:e.autoCenter,id:e.id})}}),io=(0,ne.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,ne.computed)(()=>(0,Pe.octahedronPolygons)({center:e.center,size:e.size,color:e.color}));return()=>(0,ne.h)(pe,{polygons:t.value,position:e.position,scale:e.scale,rotation:e.rotation,autoCenter:e.autoCenter,id:e.id})}}),so=(0,ne.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,ne.computed)(()=>(0,Pe.tetrahedronPolygons)({size:e.size,color:e.color}));return()=>(0,ne.h)(pe,{polygons:t.value,position:e.position,scale:e.scale,rotation:e.rotation,autoCenter:e.autoCenter,id:e.id})}}),lo=(0,ne.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,ne.computed)(()=>(0,Pe.icosahedronPolygons)({size:e.size,color:e.color}));return()=>(0,ne.h)(pe,{polygons:t.value,position:e.position,scale:e.scale,rotation:e.rotation,autoCenter:e.autoCenter,id:e.id})}}),uo=(0,ne.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,ne.computed)(()=>(0,Pe.dodecahedronPolygons)({size:e.size,color:e.color}));return()=>(0,ne.h)(pe,{polygons:t.value,position:e.position,scale:e.scale,rotation:e.rotation,autoCenter:e.autoCenter,id:e.id})}}),co=(0,ne.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,ne.computed)(()=>(0,Pe.spherePolygons)({radius:e.radius,subdivisions:e.subdivisions,color:e.color}));return()=>(0,ne.h)(pe,{polygons:t.value,position:e.position,scale:e.scale,rotation:e.rotation,autoCenter:e.autoCenter,id:e.id})}}),mo=(0,ne.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,ne.computed)(()=>(0,Pe.cylinderPolygons)({radius:e.radius,radiusTop:e.radiusTop,height:e.height,radialSegments:e.radialSegments,color:e.color}));return()=>(0,ne.h)(pe,{polygons:t.value,position:e.position,scale:e.scale,rotation:e.rotation,autoCenter:e.autoCenter,id:e.id})}}),po=(0,ne.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,ne.computed)(()=>(0,Pe.conePolygons)({radius:e.radius,height:e.height,radialSegments:e.radialSegments,color:e.color}));return()=>(0,ne.h)(pe,{polygons:t.value,position:e.position,scale:e.scale,rotation:e.rotation,autoCenter:e.autoCenter,id:e.id})}}),yo=(0,ne.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,ne.computed)(()=>(0,Pe.torusPolygons)({radius:e.radius,tube:e.tube,radialSegments:e.radialSegments,tubularSegments:e.tubularSegments,color:e.color}));return()=>(0,ne.h)(pe,{polygons:t.value,position:e.position,scale:e.scale,rotation:e.rotation,autoCenter:e.autoCenter,id:e.id})}});var De=require("vue"),fo=require("@layoutit/polycss-core");var Ui=150,$r=4,Wi=513e-6,qi=10,Gi=3,Ur=16.67,Zi=50,Wr=.1,qr=10,Gr=0,Zr=5e3,Ki=.3,Qi=.05;function Ji(e){return e===!0?-1:e===void 0||e===!1?1:e}function es(e,t,n,o,r){let a=Ji(r),i=e/$r*a,l=t/$r*a;return{rotX:n-l,rotY:((o-i)%360+360)%360}}function Kr(e,t,n,o,r){let a=Math.max(.01,n),i=Math.max(.1,Math.cos(o*Math.PI/180)),l=-e/(a*fo.BASE_TILE),s=-t/(a*fo.BASE_TILE*i),d=-r*Math.PI/180,m=Math.cos(d),g=Math.sin(d);return{dWorldX:s*m-l*g,dWorldY:s*g+l*m}}var go=(0,De.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:qr},minDistance:{type:Number,default:Gr},maxDistance:{type:Number,default:Zr},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,De.inject)(he,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,l=()=>({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",l())},d=()=>{t("interaction-start",l())},m=()=>{t("interaction-end",l())},g=null,u={x:0,y:0},h=(0,De.ref)(!1),y=null,P=null,b=null;function A(){let f=a.value;if(!f)return;let O=!1,k={x:0,y:0},B=c=>{if(e.drag&&g===null&&c.isPrimary!==!1){c.preventDefault(),g=c.pointerId,u={x:c.clientX,y:c.clientY},f.style.cursor="grabbing";try{c.target.setPointerCapture(c.pointerId)}catch{}e.animate&&e.animate.pauseOnInteraction!==!1&&(h.value=!0),d()}},_=c=>{if(g===null||c.pointerId!==g||!e.drag)return;c.preventDefault();let x=c.clientX-u.x,S=c.clientY-u.y;u={x:c.clientX,y:c.clientY};let T=r.value,M=T.state;if(c.shiftKey){let{dWorldX:E,dWorldY:L}=Kr(x,S,M.zoom,M.rotX,M.rotY);T.update({target:[M.target[0]+E,M.target[1]+L,M.target[2]]})}else{let{rotX:E,rotY:L}=es(x,S,M.rotX,M.rotY,e.invert);T.update({rotX:E,rotY:L})}i(),o.updateCameraFromRef(T),s()},I=c=>{if(g===c.pointerId){g=null,f.style.cursor=e.drag?"grab":"";try{c.target.releasePointerCapture(c.pointerId)}catch{}h.value=!1,m()}},U=c=>{c.preventDefault()},X=c=>{c.button===2&&(O=!0,k={x:c.clientX,y:c.clientY})},Y=c=>{if(!O||!e.drag)return;let x=c.clientX-k.x,S=c.clientY-k.y;k={x:c.clientX,y:c.clientY};let T=r.value,M=T.state,{dWorldX:E,dWorldY:L}=Kr(x,S,M.zoom,M.rotX,M.rotY);T.update({target:[M.target[0]+E,M.target[1]+L,M.target[2]]}),i(),o.updateCameraFromRef(T),s()},v=c=>{c.button===2&&O&&(O=!1,m())};f.style.cursor="grab",f.style.touchAction="none",f.style.userSelect="none",f.addEventListener("pointerdown",B),f.addEventListener("pointermove",_),f.addEventListener("pointerup",I),f.addEventListener("pointercancel",I),f.addEventListener("contextmenu",U),f.addEventListener("mousedown",X),f.addEventListener("mousemove",Y),f.addEventListener("mouseup",v),y=()=>{f.removeEventListener("pointerdown",B),f.removeEventListener("pointermove",_),f.removeEventListener("pointerup",I),f.removeEventListener("pointercancel",I),f.removeEventListener("contextmenu",U),f.removeEventListener("mousedown",X),f.removeEventListener("mousemove",Y),f.removeEventListener("mouseup",v),f.style.cursor="",f.style.touchAction="",f.style.userSelect=""}}function C(){let f=a.value;if(!f)return;let O=!1,k=null,B=_=>{if(!e.wheel)return;_.preventDefault();let I=_.deltaMode===1?16:_.deltaMode===2?100:1,U=_.deltaY*I;_.ctrlKey?U*=qi:U*=Gi;let X=r.value;if(e.dolly){let Y=e.minDistance??Gr,v=e.maxDistance??Zr,c=Math.max(Y,Math.min(v,X.state.distance+U*Qi));X.update({distance:c})}else{let Y=Math.exp(-U*Wi),v=e.minZoom??Wr,c=e.maxZoom??qr,x=Math.max(v,Math.min(c,X.state.zoom*Y));X.update({zoom:x})}i(),o.updateCameraFromRef(X),O||(O=!0,d()),s(),k!==null&&clearTimeout(k),k=setTimeout(()=>{k=null,O=!1,m()},Ui)};f.addEventListener("wheel",B,{passive:!1}),P=()=>{f.removeEventListener("wheel",B),k!==null&&clearTimeout(k)}}function R(){let f=null,O=!1,k=0,B=_=>{if(O)return;let I=e.animate;if(!I){f=requestAnimationFrame(B);return}if(h.value)k=_;else{let U=Math.min(Zi,k?_-k:Ur);k=_;let Y=(I.speed??Ki)*(U/Ur),v=r.value,c=v.state;if(I.axis==="x"){let x=((c.rotX+Y)%360+360)%360;v.update({rotX:x})}else{let x=((c.rotY+Y)%360+360)%360;v.update({rotY:x})}i(),o.updateCameraFromRef(v),s()}f=requestAnimationFrame(B)};f=requestAnimationFrame(B),b=()=>{O=!0,f!==null&&cancelAnimationFrame(f),b=null}}return(0,De.onMounted)(()=>{e.drag&&A(),e.wheel&&C(),e.animate&&R()}),(0,De.onBeforeUnmount)(()=>{y?.(),P?.(),b?.(),y=null,P=null}),(0,De.watch)(()=>e.drag,f=>{f&&!y&&A(),!f&&y&&(y(),y=null)}),(0,De.watch)(()=>e.wheel,f=>{f&&!P&&C(),!f&&P&&(P(),P=null)}),(0,De.watch)(()=>!!e.animate,f=>{f&&!b&&R(),!f&&b&&b()}),()=>null}});var Ie=require("vue"),ho=require("@layoutit/polycss-core");var ts=150,Qr=4,ns=513e-6,os=10,rs=3,Jr=16.67,as=50,ea=.1,ta=10,na=0,oa=5e3,is=.3,ss=.05;function ls(e){return e===!0?-1:e===void 0||e===!1?1:e}function ra(e,t,n,o,r){let a=ls(r),i=e/Qr*a,l=t/Qr*a;return{rotX:n-l,rotY:((o-i)%360+360)%360}}function us(e,t,n,o,r){let a=Math.max(.01,n),i=Math.max(.1,Math.cos(o*Math.PI/180)),l=-e/(a*ho.BASE_TILE),s=-t/(a*ho.BASE_TILE*i),d=-r*Math.PI/180,m=Math.cos(d),g=Math.sin(d);return{dWorldX:s*m-l*g,dWorldY:s*g+l*m}}var Po=(0,Ie.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:ea},maxZoom:{type:Number,default:ta},minDistance:{type:Number,default:na},maxDistance:{type:Number,default:oa},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,Ie.inject)(he,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,l=()=>({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",l())},d=()=>{t("interaction-start",l())},m=()=>{t("interaction-end",l())},g=null,u={x:0,y:0},h=(0,Ie.ref)(!1),y=null,P=null,b=null;function A(){let f=a.value;if(!f)return;let O=!1,k={x:0,y:0},B=c=>{if(e.drag&&g===null&&c.isPrimary!==!1){c.preventDefault(),g=c.pointerId,u={x:c.clientX,y:c.clientY},f.style.cursor="grabbing";try{c.target.setPointerCapture(c.pointerId)}catch{}e.animate&&e.animate.pauseOnInteraction!==!1&&(h.value=!0),d()}},_=c=>{if(g===null||c.pointerId!==g||!e.drag)return;c.preventDefault();let x=c.clientX-u.x,S=c.clientY-u.y;u={x:c.clientX,y:c.clientY};let T=r.value,M=T.state;if(c.shiftKey){let{rotX:E,rotY:L}=ra(x,S,M.rotX,M.rotY,e.invert);T.update({rotX:E,rotY:L})}else{let{dWorldX:E,dWorldY:L}=us(x,S,M.zoom,M.rotX,M.rotY);T.update({target:[M.target[0]+E,M.target[1]+L,M.target[2]]})}i(),o.updateCameraFromRef(T),s()},I=c=>{if(g===c.pointerId){g=null,f.style.cursor=e.drag?"grab":"";try{c.target.releasePointerCapture(c.pointerId)}catch{}h.value=!1,m()}},U=c=>{c.preventDefault()},X=c=>{c.button===2&&(O=!0,k={x:c.clientX,y:c.clientY})},Y=c=>{if(!O||!e.drag)return;let x=c.clientX-k.x,S=c.clientY-k.y;k={x:c.clientX,y:c.clientY};let T=r.value,M=T.state,{rotX:E,rotY:L}=ra(x,S,M.rotX,M.rotY,e.invert);T.update({rotX:E,rotY:L}),i(),o.updateCameraFromRef(T),s()},v=c=>{c.button===2&&O&&(O=!1,m())};f.style.cursor="grab",f.style.touchAction="none",f.style.userSelect="none",f.addEventListener("pointerdown",B),f.addEventListener("pointermove",_),f.addEventListener("pointerup",I),f.addEventListener("pointercancel",I),f.addEventListener("contextmenu",U),f.addEventListener("mousedown",X),f.addEventListener("mousemove",Y),f.addEventListener("mouseup",v),y=()=>{f.removeEventListener("pointerdown",B),f.removeEventListener("pointermove",_),f.removeEventListener("pointerup",I),f.removeEventListener("pointercancel",I),f.removeEventListener("contextmenu",U),f.removeEventListener("mousedown",X),f.removeEventListener("mousemove",Y),f.removeEventListener("mouseup",v),f.style.cursor="",f.style.touchAction="",f.style.userSelect=""}}function C(){let f=a.value;if(!f)return;let O=!1,k=null,B=_=>{if(!e.wheel)return;_.preventDefault();let I=_.deltaMode===1?16:_.deltaMode===2?100:1,U=_.deltaY*I;_.ctrlKey?U*=os:U*=rs;let X=r.value;if(e.dolly){let Y=e.minDistance??na,v=e.maxDistance??oa,c=Math.max(Y,Math.min(v,X.state.distance+U*ss));X.update({distance:c})}else{let Y=Math.exp(-U*ns),v=e.minZoom??ea,c=e.maxZoom??ta,x=Math.max(v,Math.min(c,X.state.zoom*Y));X.update({zoom:x})}i(),o.updateCameraFromRef(X),O||(O=!0,d()),s(),k!==null&&clearTimeout(k),k=setTimeout(()=>{k=null,O=!1,m()},ts)};f.addEventListener("wheel",B,{passive:!1}),P=()=>{f.removeEventListener("wheel",B),k!==null&&clearTimeout(k)}}function R(){let f=null,O=!1,k=0,B=_=>{if(O)return;let I=e.animate;if(!I){f=requestAnimationFrame(B);return}if(h.value)k=_;else{let U=Math.min(as,k?_-k:Jr);k=_;let Y=(I.speed??is)*(U/Jr),v=r.value,c=v.state;if(I.axis==="x"){let x=((c.rotX+Y)%360+360)%360;v.update({rotX:x})}else{let x=((c.rotY+Y)%360+360)%360;v.update({rotY:x})}i(),o.updateCameraFromRef(v),s()}f=requestAnimationFrame(B)};f=requestAnimationFrame(B),b=()=>{O=!0,f!==null&&cancelAnimationFrame(f),b=null}}return(0,Ie.onMounted)(()=>{e.drag&&A(),e.wheel&&C(),e.animate&&R()}),(0,Ie.onBeforeUnmount)(()=>{y?.(),P?.(),b?.(),y=null,P=null}),(0,Ie.watch)(()=>e.drag,f=>{f&&!y&&A(),!f&&y&&(y(),y=null)}),(0,Ie.watch)(()=>e.wheel,f=>{f&&!P&&C(),!f&&P&&(P(),P=null)}),(0,Ie.watch)(()=>!!e.animate,f=>{f&&!b&&R(),!f&&b&&b()}),()=>null}});var ie=require("vue"),Fe=require("@layoutit/polycss-core");var gn="#ff3653",hn="#8adb00",Pn="#2c8fff",cs=.6,ds=.8,ms=1,ot=50,aa=60,ps=.6,ys=.0125,fs=.15,gs=.04,hs=1,ia=.02,xo=1.04,Ps=.1,xs=.25,pa=1e-4,nn={0:1,1:0,2:2},sa=[{cssAxis:0,sign:1,key:"x",color:gn},{cssAxis:0,sign:-1,key:"-x",color:gn},{cssAxis:1,sign:1,key:"y",color:hn},{cssAxis:1,sign:-1,key:"-y",color:hn},{cssAxis:2,sign:1,key:"z",color:Pn},{cssAxis:2,sign:-1,key:"-z",color:Pn}],la=[{cssAxis:0,key:"x",color:gn},{cssAxis:1,key:"y",color:hn},{cssAxis:2,key:"z",color:Pn}],ua=[{perpAxis:2,axisA:0,axisB:1,key:"xy",color:Pn},{perpAxis:1,axisA:0,axisB:2,key:"xz",color:hn},{perpAxis:0,axisA:1,axisB:2,key:"yz",color:gn}];function bo(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 xn(e,t){return!t||t<=0?e:Math.round(e/t)*t}function bs(e){return e.replace("-","")[0]}function vo(e,t,n,o){let r=n*Math.PI/180,a=o*Math.PI/180,i=[0,0,0];i[e]=t;let l=i[0]*Math.sin(a)+i[1]*Math.cos(a),s=i[2];return l*Math.sin(r)+s*Math.cos(r)<0}function vs(e){if(e.length===0)return aa;let t=1/0,n=1/0,o=1/0,r=-1/0,a=-1/0,i=-1/0;for(let l of e)for(let s of l.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)*ot*ps:aa}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 l of e)for(let s of l.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*ot,(t+r)/2*ot,(o+i)/2*ot]:[0,0,0]}function ca(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,l=(a.top-r.top)/t,s=i*i+l*l;if(s<pa)return;let d=e.target.getPosition()??[0,0,0];e.onMouseDown?.(),e.onDraggingChanged?.(!0);let m=u=>{let h=u.clientX-e.startClientX,y=u.clientY-e.startClientY,P=(h*i+y*l)/s;P=xn(P,e.translationSnap);let b=[d[0]+P*n[0],d[1]+P*n[1],d[2]+P*n[2]];e.onObjectChange?.({object:e.target,position:b}),e.onChange?.()},g=()=>{window.removeEventListener("pointermove",m),window.removeEventListener("pointerup",g),window.removeEventListener("pointercancel",g);let u=h=>{h.stopPropagation(),h.stopImmediatePropagation()};window.addEventListener("click",u,{capture:!0,once:!0}),setTimeout(()=>window.removeEventListener("click",u,!0),0),e.onMouseUp?.(),e.onDraggingChanged?.(!1)};window.addEventListener("pointermove",m),window.addEventListener("pointerup",g),window.addEventListener("pointercancel",g)}function da(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(g){let u=e.wrapper.ownerDocument.createElement("div");u.style.position="absolute",u.style.left="0",u.style.top="0",u.style.width="0",u.style.height="0",u.style.transform=`translate3d(${g[0]*o}px, ${g[1]*o}px, ${g[2]*o}px)`,e.wrapper.appendChild(u);let h=e.wrapper.getBoundingClientRect(),y=u.getBoundingClientRect();return e.wrapper.removeChild(u),{x:(y.left-h.left)/o,y:(y.top-h.top)/o}}let a=r(t),i=r(n),l=a.x*i.y-i.x*a.y;if(Math.abs(l)<pa)return;let s=e.target.getPosition()??[0,0,0];e.onMouseDown?.(),e.onDraggingChanged?.(!0);let d=g=>{let u=g.clientX-e.startClientX,h=g.clientY-e.startClientY,y=(i.y*u-i.x*h)/l,P=(-a.y*u+a.x*h)/l;y=xn(y,e.translationSnap),P=xn(P,e.translationSnap);let b=[s[0]+y*t[0]+P*n[0],s[1]+y*t[1]+P*n[1],s[2]+y*t[2]+P*n[2]];e.onObjectChange?.({object:e.target,position:b}),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 ma(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],l=(0,Fe.quatFromEulerXYZ)(i);e.onMouseDown?.(),e.onDraggingChanged?.(!0);let s=m=>{let g=Math.atan2(m.clientY-o,m.clientX-n),u=g-r;u>Math.PI?u-=2*Math.PI:u<-Math.PI&&(u+=2*Math.PI),a+=u,r=g;let h=a*180/Math.PI;h=xn(h,e.rotationSnap);let y=[0,0,0];y[e.cssAxis]=1;let P=(0,Fe.quatFromAxisAngle)(y,h*Math.PI/180),b=(0,Fe.eulerXYZFromQuat)((0,Fe.quatMultiply)(P,l));e.onObjectChange?.({object:e.target,rotation:b}),e.onChange?.()},d=()=>{window.removeEventListener("pointermove",s),window.removeEventListener("pointerup",d),window.removeEventListener("pointercancel",d);let m=g=>{g.stopPropagation(),g.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 Cs(e){return!!e&&typeof e=="object"&&"value"in e}function Ts(e){return e?Cs(e)?e.value??null:e:null}var So=(0,ie.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,ie.ref)(null),o=(0,ie.ref)(null),r=(0,ie.ref)(new Map),a=(0,ie.computed)(()=>Ts(e.object)),i=(0,ie.ref)(0);(0,ie.onMounted)(()=>{i.value++});let l=(0,ie.ref)(0),s=(0,ie.inject)(he,void 0),d=null;(0,ie.onMounted)(()=>{let c=s?.store;c&&(d=c.subscribe(()=>{l.value++}))}),(0,ie.onBeforeUnmount)(()=>{d?.()});function m(){l.value;let c=s?.store.getState().cameraState;return{rotX:c?.rotX??65,rotY:c?.rotY??45}}let g=(0,ie.computed)(()=>(i.value,vs(a.value?.getPolygons()??[]))),u=(0,ie.computed)(()=>g.value*e.size);function h(c){return o.value===c?ms:n.value===c?ds:cs}function y(){t("change")}function P(c){t("objectChange",c)}function b(c){t("draggingChanged",c)}function A(){t("mouseDown")}function C(){t("mouseUp")}let R=(0,ie.inject)(he,void 0),f=null;(0,ie.onMounted)(()=>{let c=R?.cameraElRef.value;if(!c)return;let x=S=>{let T=a.value;if(!T||!e.enabled||S.target?.closest(".polycss-transform-gizmo"))return;let E={x:e.showX,y:e.showY,z:e.showZ};if(e.mode==="translate")for(let F of ua){let N=["x","y","z"][F.axisA],j=["x","y","z"][F.axisB];if(!E[N]||!E[j])continue;let Q=document.querySelector(`.polycss-transform-plane--${F.key}`);if(!Q||!Vt(Q,S.clientX,S.clientY))continue;S.preventDefault(),S.stopPropagation();let W=Q.closest("[data-poly-transform-controls]");if(!W)return;o.value=F.key,da({axisA:F.axisA,axisB:F.axisB,probeDistanceCss:u.value,wrapper:W,target:T,startClientX:S.clientX,startClientY:S.clientY,translationSnap:e.translationSnap,onChange:y,onObjectChange:P,onMouseDown:A,onMouseUp:C,onDraggingChanged:z=>{z||(o.value=null),b(z)}});return}let L=e.mode==="translate"?sa:la;for(let F of L){let N=F.key.replace("-","")[0];if(!E[N])continue;let j=document.querySelector(`.polycss-transform-${e.mode==="translate"?"arrow":"ring"}--${F.key}`);if(!j||!(e.mode==="rotate"?Vt(j,S.clientX,S.clientY):Vt(j,S.clientX,S.clientY)))continue;S.preventDefault(),S.stopPropagation();let W=j.closest("[data-poly-transform-controls]");if(!W)return;if(o.value=F.key,e.mode==="translate"){let z=F;ca({cssAxis:z.cssAxis,sign:z.sign,shaftLengthCss:u.value,wrapper:W,target:T,startClientX:S.clientX,startClientY:S.clientY,translationSnap:e.translationSnap,onChange:y,onObjectChange:P,onMouseDown:A,onMouseUp:C,onDraggingChanged:le=>{le||(o.value=null),b(le)}})}else ma({cssAxis:F.cssAxis,wrapper:W,target:T,startClientX:S.clientX,startClientY:S.clientY,rotationSnap:e.rotationSnap,onChange:y,onObjectChange:P,onMouseDown:A,onMouseUp:C,onDraggingChanged:z=>{z||(o.value=null),b(z)}});return}};c.addEventListener("pointerdown",x),f=()=>c.removeEventListener("pointerdown",x)}),(0,ie.onBeforeUnmount)(()=>{f?.()});let O=(0,ie.computed)(()=>{if(e.mode!=="translate")return[];i.value;let x=u.value/ot,{rotX:S,rotY:T}=m();return sa.filter(M=>({x:e.showX,y:e.showY,z:e.showZ})[bs(M.key)]).map(M=>{let E=h(M.key),L=vo(M.cssAxis,M.sign,S,T);return{spec:M,polygons:(0,Fe.arrowPolygons)({axis:nn[M.cssAxis],sign:M.sign,shaftLength:x,shaftHalfThickness:x*ys,headLength:x*fs,headHalfThickness:x*gs,color:bo(M.color,E),shaft:!L})}})}),k=(0,ie.computed)(()=>{if(e.mode!=="translate")return[];i.value;let x=u.value/ot,S={x:e.showX,y:e.showY,z:e.showZ},T=["x","y","z"],{rotX:M,rotY:E}=m(),L=x*xs;return ua.filter(F=>S[T[F.axisA]]&&S[T[F.axisB]]).map(F=>{let N=h(F.key),j=nn[F.perpAxis],Q=(j+1)%3,W=(j+2)%3,z=nn[Q],le=nn[W],xe=vo(z,1,M,E)?-1:1,ue=vo(le,1,M,E)?-1:1;return{spec:F,polygons:(0,Fe.planePolygons)({axis:j,size:x*Ps,offset:[xe*L,ue*L],color:bo(F.color,N)})}})}),B=(0,ie.computed)(()=>{if(e.mode!=="rotate")return[];i.value;let S=u.value*hs/ot*xo;return la.filter(T=>({x:e.showX,y:e.showY,z:e.showZ})[T.key]).map(T=>{let M=h(T.key);return{spec:T,polygons:(0,Fe.ringQuadPolygons)({axis:nn[T.cssAxis],outerRadius:S,color:bo(T.color,M)})}})}),_=(1-ia)/xo,I=(1+ia)/xo;function U(c){return x=>{if(!e.enabled)return;let S=a.value;if(!S)return;x.stopPropagation();let M=x.eventObject.element?.closest("[data-poly-transform-controls]");M&&(o.value=c.key,ca({cssAxis:c.cssAxis,sign:c.sign,shaftLengthCss:u.value,wrapper:M,target:S,startClientX:x.nativeEvent.clientX,startClientY:x.nativeEvent.clientY,translationSnap:e.translationSnap,onChange:y,onObjectChange:P,onMouseDown:A,onMouseUp:C,onDraggingChanged:E=>{E||(o.value=null),b(E)}}))}}function X(c){return x=>{if(!e.enabled)return;let S=a.value;if(!S)return;x.stopPropagation();let M=x.eventObject.element?.closest("[data-poly-transform-controls]");M&&(o.value=c.key,da({axisA:c.axisA,axisB:c.axisB,probeDistanceCss:u.value,wrapper:M,target:S,startClientX:x.nativeEvent.clientX,startClientY:x.nativeEvent.clientY,translationSnap:e.translationSnap,onChange:y,onObjectChange:P,onMouseDown:A,onMouseUp:C,onDraggingChanged:E=>{E||(o.value=null),b(E)}}))}}function Y(c){return x=>{if(!e.enabled)return;let S=a.value;if(!S)return;let T=x.eventObject.element;x.stopPropagation();let M=T?.closest("[data-poly-transform-controls]");M&&(o.value=c.key,ma({cssAxis:c.cssAxis,wrapper:M,target:S,startClientX:x.nativeEvent.clientX,startClientY:x.nativeEvent.clientY,rotationSnap:e.rotationSnap,onChange:y,onObjectChange:P,onMouseDown:A,onMouseUp:C,onDraggingChanged:E=>{E||(o.value=null),b(E)}}))}}function v(c){return{onPointerOver:()=>{n.value=c},onPointerOut:()=>{n.value===c&&(n.value=null)}}}return()=>{let c=a.value;if(!c)return null;let x=c.getPosition()??[0,0,0],S=Ss(c.getPolygons()),T=x[1]*ot+S[0],M=x[0]*ot+S[1],E=x[2]*ot+S[2],L={transform:`translate3d(${T}px, ${M}px, ${E}px)`,position:"absolute",transformStyle:"preserve-3d",zIndex:1e3},F=e.mode==="translate"?[...O.value.map(({spec:N,polygons:j})=>(0,ie.h)(pe,{key:`arrow-${N.key}`,polygons:j,class:`polycss-transform-gizmo polycss-transform-arrow polycss-transform-arrow--${N.key}`,textureLighting:"baked",onPointerDown:U(N),...v(N.key)})),...k.value.map(({spec:N,polygons:j})=>(0,ie.h)(pe,{key:`plane-${N.key}`,polygons:j,class:`polycss-transform-gizmo polycss-transform-plane polycss-transform-plane--${N.key}`,textureLighting:"baked",onPointerDown:X(N),...v(N.key)}))]:B.value.map(({spec:N,polygons:j})=>(0,ie.h)(pe,{key:N.key,polygons:j,class:`polycss-transform-gizmo polycss-transform-ring polycss-transform-ring--${N.key}`,style:{"--ring-inner-ratio":_,"--ring-outer-ratio":I},textureLighting:"baked",onPointerDown:Y(N),...v(N.key)}));return(0,ie.h)("div",{class:"polycss-transform-controls","data-poly-transform-controls":"","data-poly-mode":e.mode,"data-poly-space":e.space,style:L},F)}}});var rt=require("vue"),fa=require("@layoutit/polycss-core");var Ms={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 Co(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 ga=new Set(["KeyW","ArrowUp"]),ha=new Set(["KeyS","ArrowDown"]),Pa=new Set(["KeyA","ArrowLeft"]),xa=new Set(["KeyD","ArrowRight"]),ba=new Set(["Space"]),To=new Set(["ControlLeft","ControlRight"]);function ya(e){return ga.has(e)||ha.has(e)||Pa.has(e)||xa.has(e)||ba.has(e)||To.has(e)}function Es(){return{change:[],start:[],end:[]}}function Wt(e,t){let n=[...e[t]];for(let o of n)try{o()}catch{}}var Mo=(0,rt.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,rt.inject)(he,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:l}=o,s=Co(Ms,e),d=[0,0,0],m=null,g=0,u=!1,h=!1,y=!1,P=new Set,b=0,A=0,C=Es();function R(c,x){let S=c*Math.PI/180,T=x*Math.PI/180;return[-Math.sin(S)*Math.cos(T),-Math.sin(S)*Math.sin(T),-Math.cos(S)]}function f(){let c=i.value,x=c?getComputedStyle(c).perspective:"",S=parseFloat(x);return(Number.isFinite(S)&&S>0?S:32e3)/fa.BASE_TILE}function O(){let c=a.value.state,x=R(c.rotX??90,c.rotY??0),S=f();return[d[0]+x[0]*S,d[1]+x[1]*S,d[2]+x[2]*S]}function k(){let c=O(),x=a.value;x.update({target:c}),l(),r.updateCameraFromRef(x)}let B=.05;function _(c){if(m===null||u)return;let x=Math.min(B,g?(c-g)/1e3:.0167);if(g=c,s.enabled){let S=!1,T=a.value.state;if(s.moveEnabled){let F=0,N=0;for(let j of P)ga.has(j)?F+=1:ha.has(j)?F-=1:xa.has(j)?N+=1:Pa.has(j)&&(N-=1);if(F!==0||N!==0){let Q=(T.rotY??0)*Math.PI/180,W=-Math.cos(Q),z=-Math.sin(Q),le=-Math.sin(Q),xe=Math.cos(Q),ue=Math.hypot(F,N)||1,ve=s.moveSpeed*x;d[0]+=(W*F+le*N)/ue*ve,d[1]+=(z*F+xe*N)/ue*ve,S=!0}}let E=s.crouchEnabled&&(P.has("ControlLeft")||P.has("ControlRight"))?s.crouchHeight:s.eyeHeight;s.jumpEnabled&&(b!==0||A>0)?(b-=s.gravity*x,A+=b*x,A<=0&&(A=0,b=0)):s.jumpEnabled||(A=0,b=0);let L=s.groundZ+E+A;if(Math.abs(d[2]-L)>1e-4&&(d[2]=L,S=!0),S){let F=O(),N=a.value;N.update({target:F}),l(),r.updateCameraFromRef(N),Wt(C,"change");try{t("change",[d[0],d[1],d[2]])}catch{}}}m=requestAnimationFrame(_)}function I(){m!==null||u||(g=0,m=requestAnimationFrame(_))}function U(){m!==null&&(cancelAnimationFrame(m),m=null)}let X=null;function Y(){let c=i.value;if(!c)return;let x=c.ownerDocument??document,S=x.defaultView??globalThis,T=()=>{if(!(!s.enabled||!s.lookEnabled||u||h))try{c.requestPointerLock()}catch{}},M=()=>{let z=x.pointerLockElement===c;if(z!==h){if(h=z,z){y=!0,Wt(C,"start");try{t("interaction-start",[d[0],d[1],d[2]])}catch{}}else if(y){y=!1,Wt(C,"end");try{t("interaction-end",[d[0],d[1],d[2]])}catch{}}}},E=z=>{if(!h||u||!s.enabled||!s.lookEnabled)return;let le=z.movementX??0,xe=z.movementY??0;if(le===0&&xe===0)return;let ue=a.value,ve=ue.state,Ve=s.lookSensitivity,Xe=s.invertY?-1:1,ze=(((ve.rotY??0)-le*Ve)%360+360)%360,se=(ve.rotX??90)-xe*Ve*Xe;se<s.minPitch?se=s.minPitch:se>s.maxPitch&&(se=s.maxPitch);let re=R(se,ze),ye=f(),Be=[d[0]+re[0]*ye,d[1]+re[1]*ye,d[2]+re[2]*ye];ue.update({rotX:se,rotY:ze,target:Be}),l(),r.updateCameraFromRef(ue),Wt(C,"change");try{t("change",[d[0],d[1],d[2]])}catch{}},L=z=>{if(!(!s.enabled||u)&&ya(z.code)&&!(!h&&!s.moveEnabled)){if(ba.has(z.code)){if(!s.jumpEnabled)return;z.preventDefault(),!P.has(z.code)&&b===0&&A===0&&(b=s.jumpVelocity),P.add(z.code);return}To.has(z.code)&&!s.crouchEnabled||!s.moveEnabled&&!To.has(z.code)||(z.preventDefault(),P.add(z.code))}},F=z=>{ya(z.code)&&P.delete(z.code)},N=()=>{P.clear()};c.addEventListener("click",T),x.addEventListener("pointerlockchange",M),x.addEventListener("mousemove",E),S.addEventListener("keydown",L),S.addEventListener("keyup",F),S.addEventListener("blur",N);let j=S.getComputedStyle(c).perspective,Q=parseFloat(j),W=Number.isFinite(Q)&&Q>0?Q:2e3;c.style.setProperty("--polycss-fpv-perspective",`${W}px`),c.classList.add("polycss-fpv-host"),X=()=>{if(c.removeEventListener("click",T),x.removeEventListener("pointerlockchange",M),x.removeEventListener("mousemove",E),S.removeEventListener("keydown",L),S.removeEventListener("keyup",F),S.removeEventListener("blur",N),c.style.cursor="",c.classList.remove("polycss-fpv-host"),c.style.removeProperty("--polycss-fpv-perspective"),P.clear(),h)try{x.exitPointerLock()}catch{}}}n({update(c){s=Co(s,c);let x=i.value;x&&!u&&(x.style.cursor=s.lookEnabled?"crosshair":"")},resume(){if(!u)return;u=!1;let c=i.value;c&&(c.style.cursor=s.lookEnabled?"crosshair":""),I()},pause(){if(u)return;u=!0,U();let c=i.value;if(c&&(c.style.cursor=""),y){y=!1,Wt(C,"end");try{t("interaction-end",[d[0],d[1],d[2]])}catch{}}},destroy(){u=!0,U()},lock(){if(!s.enabled||!s.lookEnabled||u)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],k(),Wt(C,"change");try{t("change",[d[0],d[1],d[2]])}catch{}},addEventListener(c,x){let S=C[c];S.includes(x)||S.push(x)},removeEventListener(c,x){let S=C[c],T=S.indexOf(x);T>=0&&S.splice(T,1)},hasEventListener(c,x){return C[c].includes(x)}}),(0,rt.onMounted)(()=>{let c=i.value;if(!c)return;u=!1,h=!1,y=!1,P.clear(),b=0,A=0;let S=a.value.state.target??[0,0,0];d[0]=S[0],d[1]=S[1],d[2]=s.groundZ+s.eyeHeight,k(),c.style.cursor=s.lookEnabled?"crosshair":"",Y(),I()}),(0,rt.onBeforeUnmount)(()=>{u=!0,U(),X?.(),X=null});let v=["enabled","lookEnabled","moveEnabled","jumpEnabled","crouchEnabled","lookSensitivity","invertY","moveSpeed","jumpVelocity","gravity","eyeHeight","crouchHeight","groundZ","minPitch","maxPitch"];for(let c of v)(0,rt.watch)(()=>e[c],()=>{s=Co(s,e);let x=i.value;x&&!u&&(x.style.cursor=s.lookEnabled?"crosshair":"")});return()=>null}});var be=require("vue");var qt=Symbol("polycss.selection"),Eo=(0,be.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,be.reactive)({selected:[]}),r=(0,be.computed)(()=>o.selected);function a(m){let g=e.filter?e.filter(m):m;o.selected=g,t("change",g)}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(g=>g!==m))},toggle:m=>{o.selected.includes(m)?a(o.selected.filter(g=>g!==m)):e.multiple?a([...o.selected,m]):a([m])},clear:()=>a([]),has:m=>o.selected.includes(m)};(0,be.provide)(qt,{selected:r,api:i});let l=(0,be.inject)(he,void 0),s=(m,g)=>yn(m,g,u=>!u.closest("[data-poly-transform-controls]")),d=null;return(0,be.onMounted)(()=>{let m=l?.cameraElRef.value;if(!m)return;let g=u=>{if(u.target?.closest("[data-poly-transform-controls]"))return;let y=Ft(u.target)??s(u.clientX,u.clientY);if(!y){t("pointerMissed",u),e.clearOnMiss&&a([]);return}e.multiple&&(u.shiftKey||u.metaKey||u.ctrlKey)?i.toggle(y):o.selected.length===1&&o.selected[0]===y?a([]):a([y])};m.addEventListener("click",g),d=()=>m.removeEventListener("click",g)}),(0,be.onBeforeUnmount)(()=>{d?.()}),()=>(0,be.h)("div",{style:{display:"contents"},"data-poly-select":""},n.default?.())}});function Ao(){let e=(0,be.inject)(qt,void 0);return e?e.selected:(0,be.ref)([])}function Lo(){let e=(0,be.inject)(qt,void 0);if(!e)throw new Error("polycss: usePolySelectionApi must be used inside <PolySelect>.");return e.api}var Gt=require("vue"),va=require("@layoutit/polycss-core");var Ro=(0,Gt.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,Gt.computed)(()=>(0,va.axesHelperPolygons)({size:e.size,thickness:e.thickness,negative:e.negative,xColor:e.xColor,yColor:e.yColor,zColor:e.zColor}));return()=>(0,Gt.h)(pe,{polygons:t.value,merge:!1})}});var xt=require("vue"),Sa=require("@layoutit/polycss-core");var wo=(0,xt.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,xt.computed)(()=>e.color??e.light.color??"#ffd54a"),n=(0,xt.computed)(()=>(0,Sa.octahedronPolygons)({center:[0,0,0],size:e.size,color:t.value})),o=(0,xt.computed)(()=>{let r=e.light.direction,a=r[0],i=r[1],l=r[2],s=Math.hypot(a,i,l)||1,d=e.target?.[0]??0,m=e.target?.[1]??0,g=e.target?.[2]??0;return[d+a/s*e.distance,m+i/s*e.distance,g+l/s*e.distance]});return()=>(0,xt.h)(pe,{polygons:n.value,position:o.value,merge:!1})}});var Oo={quad:0,clippedSolid:0,atlas:0,stableTriangle:0},ko={ready:!0,textureLeafCount:0,readyTextureLeafCount:0,pendingTextureLeafCount:0,atlasTextureLeafCount:0,imageTextureLeafCount:0};function Do(){return{ready:!0,leafCount:0,atlasCount:0,imageCount:0,pendingCount:0,sizingCounts:{canonical:0,local:0,raster:0,image:0,unknown:0},imageRenderingCounts:{auto:0,pixelated:0,unknown:0},projectionCounts:{affine:0,projective:0,fallback:0,unknown:0},minLeafWidth:0,maxLeafWidth:0,minLeafHeight:0,maxLeafHeight:0,doubleSidedCount:0}}function Io(){return{runtimeAtlasUrlCount:0,snapshotAtlasCount:0,snapshotBackgroundCount:0,selfContained:!0}}function bn(){return{rootFound:!1,projection:"unknown",perspectiveStyle:"",appliedPerspectiveStyle:""}}var As={polygonCount:0,mountedPolygonLeafCount:0,shadowLeafCount:0,surfaceLeafCounts:Oo,textureReadiness:ko,textureStats:Do(),snapshotStats:Io(),cameraStats:bn(),bucketCount:0};function vn(e){return typeof e=="number"?{polygonCount:e}:e??{}}function zt(e,t){return e.querySelectorAll(t).length}function Ca(e,t){return(Ma(e,t)?1:0)+zt(e,t)}function Ta(e){if(!e)return!1;let t=/url\((?:"([^"]*)"|'([^']*)'|([^)]*))\)/g,n;for(;n=t.exec(e);){let o=(n[1]??n[2]??n[3]??"").trim();if(o&&!o.startsWith("data:"))return!0}return!1}function Ls(e){let t=0,n=e instanceof HTMLElement?e:null;n&&Ta(n.getAttribute("style"))&&t++;for(let o of Array.from(e.querySelectorAll("[style]")))o instanceof HTMLElement&&Ta(o.getAttribute("style"))&&t++;return t}function Ma(e,t){let n=e;return typeof n.matches=="function"&&n.matches(t)}function Sn(e,t){if(!t)return[e];let n=[];return Ma(e,t)&&n.push(e),n.push(...Array.from(e.querySelectorAll(t))),n}function Rs(e){switch(e.toLowerCase()){case"b":return"quad";case"i":return"clippedSolid";case"s":return"atlas";case"u":return"stableTriangle";default:return null}}function ws(e){if(e==null||e==="")return;let t=Number.parseInt(e,10);return Number.isFinite(t)?t:void 0}function Zt(e){if(e==null||e==="")return;let t=Number(e);return Number.isFinite(t)?t:void 0}function Os(e){if(e==null||e==="")return;let t=e.split(",").map(n=>Number(n));if(!(t.length!==3||t.some(n=>!Number.isFinite(n))))return t}function ks(e){return e==="orthographic"||e==="perspective"?e:"unknown"}function Ds(e,t){if(!t)return;let n=e.getAttribute("data-polycss-texture-ready");return n==="true"?!0:n==="false"?!1:e.style.opacity!=="0"}function Cn(e,t){if(!e)return[];let n=vn(t),o=[];for(let r of Sn(e,n.scopeSelector))for(let a of Array.from(r.querySelectorAll("b,i,s,u"))){let i=a,l=Rs(i.tagName);if(!l)continue;let s=i.getAttribute("data-polycss-texture-backend")??(l==="atlas"?"atlas":void 0),d=Ds(i,s);o.push({element:i,strategy:l,polygonIndex:ws(i.getAttribute("data-poly-index")),textureBackend:s,textureReady:d,textureLeafSizing:i.getAttribute("data-polycss-texture-leaf-sizing")??void 0,textureImageRendering:i.getAttribute("data-polycss-texture-image-rendering")??void 0,textureProjection:i.getAttribute("data-polycss-texture-projection")??void 0,textureLeafWidth:Zt(i.getAttribute("data-polycss-texture-leaf-width")),textureLeafHeight:Zt(i.getAttribute("data-polycss-texture-leaf-height")),doubleSided:i.getAttribute("data-polycss-double-sided")==="true"})}return o}function Fo(e,t){let n={...ko};for(let o of Cn(e,t))o.textureBackend&&(n.textureLeafCount++,o.textureBackend==="image"?n.imageTextureLeafCount++:n.atlasTextureLeafCount++,o.textureReady===!1?n.pendingTextureLeafCount++:n.readyTextureLeafCount++);return n.ready=n.pendingTextureLeafCount===0,n}function Is(e,t){let n=Do(),o=!1,r=!1;for(let a of Cn(e,t))if(a.textureBackend){switch(n.leafCount++,a.textureBackend==="image"?n.imageCount++:n.atlasCount++,a.textureReady===!1&&n.pendingCount++,a.textureLeafSizing){case"canonical":case"local":case"raster":case"image":n.sizingCounts[a.textureLeafSizing]++;break;default:n.sizingCounts.unknown++;break}switch(a.textureImageRendering){case"auto":case"pixelated":n.imageRenderingCounts[a.textureImageRendering]++;break;default:n.imageRenderingCounts.unknown++;break}switch(a.textureProjection){case"affine":case"projective":case"fallback":n.projectionCounts[a.textureProjection]++;break;default:n.projectionCounts.unknown++;break}typeof a.textureLeafWidth=="number"&&(n.minLeafWidth=o?Math.min(n.minLeafWidth,a.textureLeafWidth):a.textureLeafWidth,n.maxLeafWidth=o?Math.max(n.maxLeafWidth,a.textureLeafWidth):a.textureLeafWidth,o=!0),typeof a.textureLeafHeight=="number"&&(n.minLeafHeight=r?Math.min(n.minLeafHeight,a.textureLeafHeight):a.textureLeafHeight,n.maxLeafHeight=r?Math.max(n.maxLeafHeight,a.textureLeafHeight):a.textureLeafHeight,r=!0),a.doubleSided&&n.doubleSidedCount++}return n.pendingCount=Math.min(n.pendingCount,n.leafCount),n.ready=n.pendingCount===0,n}function Fs(e,t){let n=Io();if(!e)return n;let o=vn(t);for(let r of Sn(e,o.scopeSelector))n.runtimeAtlasUrlCount+=Ls(r),n.snapshotAtlasCount+=Ca(r,"[data-polycss-snapshot-atlas]"),n.snapshotBackgroundCount+=Ca(r,"[data-polycss-snapshot-bg]");return n.selfContained=n.runtimeAtlasUrlCount===0,n}function Vs(e){let t=e instanceof HTMLElement?e:null;if(t){if(t.classList.contains("polycss-camera"))return t;let o=t.closest(".polycss-camera");if(o instanceof HTMLElement)return o}let n=e.querySelector(".polycss-camera");return n instanceof HTMLElement?n:null}function zs(e,t){if(!e)return bn();let n=vn(t),o=null;for(let r of Sn(e,n.scopeSelector))if(o=Vs(r),o)break;return o?{rootFound:!0,projection:ks(o.getAttribute("data-polycss-camera-projection")),perspectiveStyle:o.getAttribute("data-polycss-camera-perspective")??"",appliedPerspectiveStyle:o.getAttribute("data-polycss-camera-applied-perspective")??o.style.perspective??"",zoom:Zt(o.getAttribute("data-polycss-camera-zoom")),distance:Zt(o.getAttribute("data-polycss-camera-distance")),rotX:Zt(o.getAttribute("data-polycss-camera-rot-x")),rotY:Zt(o.getAttribute("data-polycss-camera-rot-y")),target:Os(o.getAttribute("data-polycss-camera-target"))}:bn()}function Ea(e,t){let n=vn(t);if(!e)return{...As,surfaceLeafCounts:{...Oo},textureReadiness:{...ko},textureStats:Do(),snapshotStats:Io(),cameraStats:bn(),polygonCount:n.polygonCount??0};let o=Sn(e,n.scopeSelector),r={...Oo},a=0,i=0;for(let s of o)r.quad+=zt(s,"b"),r.clippedSolid+=zt(s,"i"),r.atlas+=zt(s,"s"),r.stableTriangle+=zt(s,"u"),a+=zt(s,"q, .polycss-shadow-svg"),i+=zt(s,".polycss-bucket");let l=r.quad+r.clippedSolid+r.atlas+r.stableTriangle;return{polygonCount:n.polygonCount??l,mountedPolygonLeafCount:l,shadowLeafCount:a,surfaceLeafCounts:r,textureReadiness:Fo(e,n),textureStats:Is(e,n),snapshotStats:Fs(e,n),cameraStats:zs(e,n),bucketCount:i}}var Ye=require("vue"),Aa=require("@layoutit/polycss-core");function Bt(e){return e&&typeof e=="object"&&"value"in e?e.value:e}function La(e,t,n){let o=(0,Ye.ref)(null),r=null,a=null,i=null,l=(0,Ye.ref)(0);function s(){return n==null?o.value:Bt(n)??o.value}function d(){a!==null&&(cancelAnimationFrame(a),a=null),i=null}function m(){d(),r&&(r.stopAllAction(),r.uncacheRoot(),r=null,l.value++)}function g(){if(a!==null)return;function C(R){if(i===null){i=R,a=requestAnimationFrame(C);return}let f=(R-i)/1e3;i=R,r?.update(f),a=requestAnimationFrame(C)}a=requestAnimationFrame(C)}function u(){m();let C=Bt(e),R=Bt(t);if(!C||C.length===0||!R)return;let f=s();f&&(r=(0,Aa.createPolyAnimationMixer)(f,R),l.value++,g())}let h=(0,Ye.watch)(()=>{let C=Bt(e),R=Bt(t),f=n!=null?Bt(n):o.value;return{c:C,ctrl:R,r:f}},()=>u(),{immediate:!0,deep:!1});(0,Ye.onUnmounted)(()=>{h(),m()});let y=(0,Ye.computed)(()=>Bt(e)??[]),P=(0,Ye.computed)(()=>y.value.map(C=>C.name)),b=(0,Ye.computed)(()=>(l.value,r)),A=(0,Ye.computed)(()=>{l.value;let C=y.value,R={};for(let f of C)Object.defineProperty(R,f.name,{enumerable:!0,get(){if(!r)return null;try{return r.clipAction(f.name)}catch{return null}}});return R});return{ref:o,mixer:b,clips:y,names:P,actions:A}}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,buildPolyCameraSceneTransform,buildPolyMeshTransform,buildPolySceneTransform,buildSceneContext,cameraCullNormalGroups,cameraCullNormalGroupsFromPolygons,cameraCullNormalKey,cameraCullVisibleSignature,cameraFacingDepth,capturePolyCameraSnapshot,clampChannel,collectPolyRenderStats,collectPolyTextureReadiness,computeSceneBbox,computeShapeLighting,computeTexturePaintMetrics,conePolygons,coverPlanarPolygons,createIsometricCamera,createPolyAnimationMixer,cssDistanceToWorld,cssPositionToWorld,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,polyCameraTargetToCss,polyCssDistanceToWorld,polyCssPositionToWorld,polygonCssSurfaceNormal,polygonFaces,polygonFacesCamera,queryPolyLeaves,repairMeshSeams,resolvePolyCameraAppliedPerspectiveStyle,ringPolygons,rotateVec3,seamFacetSplitPolygons,seamFacetSplitReport,seamOverlapDiagnostics,seamOverlapPolygons,seamOverlapReport,shadeColor,simplifyTriangleMeshPolygons,tetrahedronPolygons,torusPolygons,usePolyAnimation,usePolyCamera,usePolyMaterial,usePolyMesh,usePolySceneContext,usePolySelect,usePolySelectionApi,worldDirectionToCss,worldDirectionToPolyCss,worldDirectionalLightToCss,worldDirectionalLightToPolyCss,worldDistanceToCss,worldDistanceToPolyCss,worldPositionToCss,worldPositionToPolyCss});