@layoutit/polycss-vue 0.2.7 → 0.2.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/three.js ADDED
@@ -0,0 +1 @@
1
+ import{AmbientLight as ws,DirectionalLight as Ds,Euler as Is,Object3D as Vs,OrthographicCamera as Os,PerspectiveCamera as Fs,PointLight as Bs,Vector3 as ks,polyToThreeDirection as Hs,polyToThreePoint as zs,threeToPolyDirection as _s,threeToPolyPoint as js,transformPointToPoly as Ns,transformPolygonsToPoly as $s}from"@layoutit/polycss-core/three";import{computed as an,defineComponent as Eo,h as Ao,provide as Lo,ref as wo,watch as Do}from"vue";import{PerspectiveCamera as Io}from"@layoutit/polycss-core/three";import{ref as St,shallowRef as To,watch as rn}from"vue";import{buildPolyCameraSceneTransform as Mo,capturePolyCameraSnapshot as Co,createIsometricCamera as Ro}from"@layoutit/polycss-core";function vt(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 Tt(e,t,n,o){if(!e)return;let r=Co(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 ze(e){let t=Ro({zoom:e.value.zoom,target:e.value.target,rotX:e.value.rotX,rotY:e.value.rotY,distance:e.value.distance}),n=To(t),o=St(null),r=St(null),i=St([0,0,0]),a=vt(t.state);rn(()=>({zoom:e.value.zoom,target:e.value.target,rotX:e.value.rotX,rotY:e.value.rotY,distance:e.value.distance,projection:e.value.projection,perspectiveStyle:e.value.perspectiveStyle}),(l,c)=>{let d={};l.zoom!==void 0&&l.zoom!==c?.zoom&&(d.zoom=l.zoom),l.target!==void 0&&l.target!==c?.target&&(d.target=l.target),l.rotX!==void 0&&l.rotX!==c?.rotX&&(d.rotX=l.rotX),l.rotY!==void 0&&l.rotY!==c?.rotY&&(d.rotY=l.rotY),l.distance!==void 0&&l.distance!==c?.distance&&(d.distance=l.distance),Object.keys(d).length>0&&(t.update(d),s(),a.updateCameraFromRef(t),a.notifyAll()),Tt(r.value,t,e.value.projection,e.value.perspectiveStyle)}),rn(r,l=>Tt(l,t,e.value.projection,e.value.perspectiveStyle),{flush:"post"});function s(){let l=o.value;l&&(l.style.transform=Mo(t.state,{autoCenterOffset:i.value}),Tt(r.value,t,e.value.projection,e.value.perspectiveStyle))}return{store:a,cameraRef:n,sceneElRef:o,cameraElRef:r,autoCenterOffset:i,applyTransformDirect:s}}var Ce=Symbol("polycss-camera");function Vo(e,t){return t.fov!==void 0&&(e.fov=t.fov),t.aspect!==void 0&&(e.aspect=t.aspect),t.near!==void 0&&(e.near=t.near),t.far!==void 0&&(e.far=t.far),t.zoom!==void 0&&(e.zoom=t.zoom),t.position!==void 0&&e.position.set(t.position[0],t.position[1],t.position[2]),t.up!==void 0&&e.up.set(t.up[0],t.up[1],t.up[2]),t.lookAt!==void 0&&e.lookAt(t.lookAt[0],t.lookAt[1],t.lookAt[2]),e}var Oo=Eo({name:"PolyThreePerspectiveCamera",props:{camera:{type:Object,default:void 0},fov:{type:Number,default:50},aspect:{type:Number,default:1},near:{type:Number,default:.1},far:{type:Number,default:2e3},zoom:{type:Number,default:void 0},polyZoom:{type:Number,default:void 0},perspective:{type:Number,default:void 0},viewportHeight:{type:Number,default:void 0},position:{type:Array,default:void 0},lookAt:{type:Array,default:void 0},up:{type:Array,default:void 0},class:{type:String,default:void 0}},setup(e,{slots:t}){let n=new Io(e.fov,e.aspect,e.near,e.far),o=wo(e.viewportHeight??420),r=an(()=>Vo(e.camera??n,e).toPolyCameraState({zoom:e.polyZoom,perspective:e.perspective,viewportHeight:e.viewportHeight??o.value})),i=an(()=>({zoom:r.value.zoom,target:r.value.target,rotX:r.value.rotX,rotY:r.value.rotY,distance:r.value.distance,projection:"perspective",perspectiveStyle:`${r.value.perspective}px`})),{store:a,cameraRef:s,sceneElRef:l,cameraElRef:c,autoCenterOffset:d,applyTransformDirect:m}=ze(i);return Lo(Ce,{store:a,cameraRef:s,sceneElRef:l,cameraElRef:c,autoCenterOffset:d,applyTransformDirect:m}),Do(c,(u,p,f)=>{if(e.viewportHeight!==void 0||!u)return;let y=()=>{o.value=u.getBoundingClientRect().height||u.clientHeight||420};if(y(),typeof ResizeObserver>"u")return;let g=new ResizeObserver(y);g.observe(u),f(()=>g.disconnect())},{flush:"post"}),()=>{let u=`${r.value.perspective}px`;return Ao("div",{ref:c,class:`polycss-camera${e.class?` ${e.class}`:""}`,style:{perspective:u},"data-polycss-camera-projection":"perspective","data-polycss-camera-perspective":u,"data-polycss-camera-applied-perspective":u,"data-polycss-camera-zoom":s.value.state.zoom,"data-polycss-camera-distance":s.value.state.distance,"data-polycss-camera-rot-x":s.value.state.rotX,"data-polycss-camera-rot-y":s.value.state.rotY,"data-polycss-camera-target":s.value.state.target.join(",")},t.default?.())}}});import{computed as ln,defineComponent as Fo,h as Bo,provide as ko,ref as Ho,watch as zo}from"vue";import{OrthographicCamera as _o}from"@layoutit/polycss-core/three";function jo(e,t){return t.left!==void 0&&(e.left=t.left),t.right!==void 0&&(e.right=t.right),t.top!==void 0&&(e.top=t.top),t.bottom!==void 0&&(e.bottom=t.bottom),t.near!==void 0&&(e.near=t.near),t.far!==void 0&&(e.far=t.far),t.zoom!==void 0&&(e.zoom=t.zoom),t.position!==void 0&&e.position.set(t.position[0],t.position[1],t.position[2]),t.up!==void 0&&e.up.set(t.up[0],t.up[1],t.up[2]),t.lookAt!==void 0&&e.lookAt(t.lookAt[0],t.lookAt[1],t.lookAt[2]),e}var No=Fo({name:"PolyThreeOrthographicCamera",props:{camera:{type:Object,default:void 0},left:{type:Number,default:-1},right:{type:Number,default:1},top:{type:Number,default:1},bottom:{type:Number,default:-1},near:{type:Number,default:.1},far:{type:Number,default:2e3},zoom:{type:Number,default:void 0},polyZoom:{type:Number,default:void 0},viewportHeight:{type:Number,default:void 0},position:{type:Array,default:void 0},lookAt:{type:Array,default:void 0},up:{type:Array,default:void 0},class:{type:String,default:void 0}},setup(e,{slots:t}){let n=new _o(e.left,e.right,e.top,e.bottom,e.near,e.far),o=Ho(e.viewportHeight??420),r=ln(()=>jo(e.camera??n,e).toPolyCameraState({zoom:e.polyZoom,viewportHeight:e.viewportHeight??o.value})),i=ln(()=>({zoom:r.value.zoom,target:r.value.target,rotX:r.value.rotX,rotY:r.value.rotY,distance:r.value.distance,projection:"orthographic",perspectiveStyle:"none"})),{store:a,cameraRef:s,sceneElRef:l,cameraElRef:c,autoCenterOffset:d,applyTransformDirect:m}=ze(i);return ko(Ce,{store:a,cameraRef:s,sceneElRef:l,cameraElRef:c,autoCenterOffset:d,applyTransformDirect:m}),zo(c,(u,p,f)=>{if(e.viewportHeight!==void 0||!u)return;let y=()=>{o.value=u.getBoundingClientRect().height||u.clientHeight||420};if(y(),typeof ResizeObserver>"u")return;let g=new ResizeObserver(y);g.observe(u),f(()=>g.disconnect())},{flush:"post"}),()=>Bo("div",{ref:c,class:`polycss-camera${e.class?` ${e.class}`:""}`,style:{perspective:"none"},"data-polycss-camera-projection":"orthographic","data-polycss-camera-perspective":"none","data-polycss-camera-applied-perspective":"1000000px","data-polycss-camera-zoom":s.value.state.zoom,"data-polycss-camera-distance":s.value.state.distance,"data-polycss-camera-rot-x":s.value.state.rotX,"data-polycss-camera-rot-y":s.value.state.rotY,"data-polycss-camera-target":s.value.state.target.join(",")},t.default?.())}});import{computed as bt,defineComponent as ui,h as ci,shallowRef as di}from"vue";import{computeSceneBbox as fi}from"@layoutit/polycss-core";import{Object3D as mi,transformPolygonsToPoly as pi}from"@layoutit/polycss-core/three";import{defineComponent as za,h as Oe,Teleport as _a,computed as _,inject as ja,onMounted as Na,onBeforeUnmount as tn,ref as ot,shallowRef as $a,watch as rt,watchEffect as po}from"vue";import{buildBasisHints as Ua,buildSharedEdgeMap as Wa,cornerShapeGeometryForPlan as Ya,resolvePolyTextureLeafGeometry as Xa,worldDirectionalLightToCss as Ga}from"@layoutit/polycss-core";import{BASE_TILE as Pt,buildParametricCasterOverride as qa,buildPolyMeshTransform as Qa,computeMergedReceiverShadows as Ka,computeSceneBbox as Za,DEFAULT_SEAM_BLEED as Ja,ensureCcw2D as ei,inverseRotateVec3 as nn,findOverlappingPolygonDuplicates as yo,optimizeMeshPolygons as ti,parseHexColor as ni,prepareCasterEdgeOwners as oi,prepareCasterPolyItems as ri,prepareReceiverFacePlanes as ai,projectCssVertexToGround as ii,worldDirectionToCss as go,worldPositionToCss as li}from"@layoutit/polycss-core";import{ref as at,watch as $o,onUnmounted as Uo}from"vue";import{loadMesh as Wo}from"@layoutit/polycss-core";var sn=[],Mt=[];function ct(e,t){let n=at(sn),o=at(void 0),r=at(!!e.value),i=at(null),a=at(Mt),s=null;function l(){if(s){try{s.dispose()}catch{}s=null}}return $o(e,(c,d,m)=>{if(!c){l(),n.value=sn,o.value=void 0,r.value=!1,i.value=null,a.value=Mt;return}let u=!1;r.value=!0,i.value=null;let p=s;Wo(c,t).then(f=>{if(u){try{f.dispose()}catch{}return}if(p)try{p.dispose()}catch{}s=f,n.value=f.polygons,o.value=f.voxelSource,r.value=!1,i.value=null,a.value=f.warnings??Mt}).catch(f=>{if(u)return;let y=f instanceof Error?f:new Error(String(f));r.value=!1,i.value=y}),m(()=>{u=!0})},{immediate:!0}),Uo(()=>{l()}),{polygons:n,voxelSource:o,loading:r,error:i,warnings:a,dispose:l}}import{isSolidTrianglePlan as Gn,isProjectiveQuadPlan as qn,buildTextureEdgeRepairSets as Qn,buildSeamBleedPolygonEdges as Kn,buildSeamBleedPolygonSet as Ll,cssBorderShapeForPlan as wl}from"@layoutit/polycss-core";import{getSolidPaintDefaultsForPlansCore as Yo,safariCssProjectiveUnsupported as un,parseHex as Xo,rgbKey as Go}from"@layoutit/polycss-core";function Ct(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 Rt(e){if(cn(e))return!0;let n=(e.defaultView??(typeof window<"u"?window:void 0))?.navigator?.userAgent??"";return n?!un(n):!0}function dt(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 cn(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 tt(e){let n=(e.defaultView??(typeof window<"u"?window:void 0))?.navigator?.userAgent??"";return n?!un(n):!0}function dn(e,t,n,o,r){let i=new Set(o?.disable??[]);return Yo(e,t,i,{solidTriangleSupported:Rt(n),projectiveQuadSupported:tt(n),cornerShapeSupported:dt(n),borderShapeSupported:Ct(n)},Xo,Go,r)}function Et(e,t,n=new Set,o){let r=o??(typeof document<"u"?document:null);if(!r)return{};let i=n.size>0?{disable:Array.from(n)}:void 0;return dn(e,t,r,i)}function Qe(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 Ct(t)}function Ke(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 Rt(t)}import{filterAtlasPlans as qo}from"@layoutit/polycss-core";function At(e,t,n,o,r,i,a){let s=o??(typeof document<"u"?document:null);return qo(e,t,n,{solidTriangleSupported:Ke(o),projectiveQuadSupported:o?tt(o):!0,borderShapeSupported:Qe(o),cornerShapeSupported:s?dt(s):!1,textureBackend:r,textureImageRendering:i,textureProjection:a})}import{packTextureAtlasPlansWithScaleCore as Qo}from"@layoutit/polycss-core";function fn(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 Lt(e,t,n,o){return Qo(e,t,fn(n),o)}import{expandClipPoints as Ko,TEXTURE_TRIANGLE_BLEED as Zo,TEXTURE_EDGE_REPAIR_ALPHA_MIN as Jo,TEXTURE_EDGE_REPAIR_SOURCE_ALPHA_MIN as er,TEXTURE_EDGE_REPAIR_RADIUS as mn}from"@layoutit/polycss-core";var Ze=new Map;function xn(e){let t=Ze.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}),Ze.set(e,t),t.then(()=>{Ze.get(e)===t&&Ze.delete(e)},()=>{Ze.get(e)===t&&Ze.delete(e)})),t}function fe(e,t,n=1,o=0,r=0,i=1,a=0,s=0){e.setTransform(n*t,o*t,r*t,i*t,a*t,s*t)}function wt(e){let t=e/255;return t<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function Dt(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 Pn(e,t,n,o,r,i,a){let s=Math.round(t*a),l=Math.round(n*a),c=Math.max(1,Math.round(o*a)),d=Math.max(1,Math.round(r*a)),m=e.getImageData(s,l,c,d),u=m.data,p=i.r,f=i.g,y=i.b;for(let g=0;g<u.length;g+=4)u[g+3]!==0&&(u[g]=Dt(wt(u[g])*p),u[g+1]=Dt(wt(u[g+1])*f),u[g+2]=Dt(wt(u[g+2])*y));e.putImageData(m,s,l)}function bn(e,t,n,o,r,i,a){let s=t.naturalWidth||t.width||1,l=t.naturalHeight||t.height||1,c=Math.max(r/s,i/l),d=s*c,m=l*c;fe(e,a),e.drawImage(t,n+(r-d)/2,o+(i-m)/2,d,m)}function nt(e,t){return Math.max(0,Math.min(t,e))}function It(e,t,n,o,r,i,a,s){let l=t.naturalWidth||t.width||1,c=t.naturalHeight||t.height||1,d=nt(Math.min(n.minU,n.maxU)*l,l),m=nt(Math.max(n.minU,n.maxU)*l,l),u=nt(Math.min(n.minV,n.maxV)*c,c),p=nt(Math.max(n.minV,n.maxV)*c,c),f=Math.floor(d),y=Math.floor(u),g=Math.ceil(m)-f,T=Math.ceil(p)-y;g<1&&(f=Math.floor(nt((n.minU+n.maxU)/2*l,l-1)),g=1),T<1&&(y=Math.floor(nt((n.minV+n.maxV)/2*c,c-1)),T=1),f=Math.max(0,Math.min(l-1,f)),y=Math.max(0,Math.min(c-1,y)),g=Math.max(1,Math.min(l-f,g)),T=Math.max(1,Math.min(c-y,T)),fe(e,s),e.drawImage(t,f,y,g,T,o,r,i,a)}function vn(e){return e==="repeat"||e==="mirrored-repeat"}function pn(e,t){return vn(e)?Math.floor(t):0}function yn(e,t){return vn(e)?Math.ceil(t)-1:0}function gn(e,t){return e==="mirrored-repeat"&&Math.abs(t%2)===1}function hn(e,t,n,o,r,i,a){let s=r?pn(i,r.minU):0,l=r?yn(i,r.maxU):0,c=r?pn(a,r.minV):0,d=r?yn(a,r.maxV):0;for(let m=s;m<=l;m++)for(let u=c;u<=d;u++){let p=gn(i,m),f=gn(a,u);if(!p&&!f){e.drawImage(t,m*n,u*o);continue}e.save(),e.translate((p?m+1:m)*n,(f?u+1:u)*o),e.scale(p?-1:1,f?-1:1),e.drawImage(t,0,0),e.restore()}}function mt(e,t,n,o){for(let r=0;r<o.length;r+=2){let i=t+o[r],a=n+o[r+1];r===0?e.moveTo(i,a):e.lineTo(i,a)}e.closePath()}function it(e,t,n,o,r,i){for(let a=0;a<o.length;a+=2){let s=t+o[a]+r,l=n+o[a+1]+i;a===0?e.moveTo(s,l):e.lineTo(s,l)}e.closePath()}function Sn(e,t,n,o){fe(e,o),e.beginPath(),mt(e,t.x,t.y,t.screenPts),e.clip(),fe(e,o),e.fillStyle=n==="dynamic"?t.polygon.color??"#cccccc":t.shadedColor,e.fillRect(t.x,t.y,t.canvasW,t.canvasH)}function ft(e,t,n,o,r){t.polygon.textureAlphaMode==="opaque"&&(fe(e,n),e.fillStyle=t.polygon.color??"#cccccc",e.fillRect(t.x+o,t.y+r,t.canvasW,t.canvasH))}function Tn(e,t,n,o,r=0,i=0){if(t.textureTriangles?.length){let a=n.naturalWidth||n.width||1,s=n.naturalHeight||n.height||1;for(let l of t.textureTriangles){let c=Ko(l.screenPts,Zo);e.save(),fe(e,o),e.beginPath(),it(e,t.x,t.y,c,r,i),e.clip(),ft(e,t,o,r,i),l.uvAffine?(fe(e,o,l.uvAffine.a/a,l.uvAffine.c/a,l.uvAffine.b/s,l.uvAffine.d/s,t.x+l.uvAffine.e+r,t.y+l.uvAffine.f+i),hn(e,n,a,s,l.uvSampleRect,t.polygon.textureWrap?.s,t.polygon.textureWrap?.t)):l.uvSampleRect&&It(e,n,l.uvSampleRect,t.x+r,t.y+i,t.canvasW,t.canvasH,o),e.restore()}}else if(t.uvAffine){let a=n.naturalWidth||n.width||1,s=n.naturalHeight||n.height||1,l=t.polygon.textureAlphaMode==="opaque";l&&(e.save(),fe(e,o),e.beginPath(),it(e,t.x,t.y,t.screenPts,r,i),e.clip(),ft(e,t,o,r,i)),fe(e,o,t.uvAffine.a/a,t.uvAffine.c/a,t.uvAffine.b/s,t.uvAffine.d/s,t.x+t.uvAffine.e+r,t.y+t.uvAffine.f+i),hn(e,n,a,s,t.uvSampleRect,t.polygon.textureWrap?.s,t.polygon.textureWrap?.t),l&&e.restore()}else if(t.uvSampleRect){let a=t.polygon.textureAlphaMode==="opaque";a&&(e.save(),fe(e,o),e.beginPath(),it(e,t.x,t.y,t.screenPts,r,i),e.clip(),ft(e,t,o,r,i)),It(e,n,t.uvSampleRect,t.x+r,t.y+i,t.canvasW,t.canvasH,o),a&&e.restore()}else{let a=t.polygon.textureAlphaMode==="opaque";a&&(e.save(),fe(e,o),e.beginPath(),it(e,t.x,t.y,t.screenPts,r,i),e.clip(),ft(e,t,o,r,i)),bn(e,n,t.x+r,t.y+i,t.canvasW,t.canvasH,o),a&&e.restore()}}function tr(e,t,n,o,r,i){let a=r-n,s=i-o,l=a*a+s*s;if(l<=1e-9)return Math.hypot(e-n,t-o);let c=Math.max(0,Math.min(1,((e-n)*a+(t-o)*s)/l));return Math.hypot(e-(n+a*c),t-(o+s*c))}function nr(e,t,n,o){let r=1/0,i=n.length/2;for(let a of o){if(a<0||a>=i)continue;let s=a*2,l=(a+1)%i*2;r=Math.min(r,tr(e,t,n[s],n[s+1],n[l],n[l+1]))}return r}function or(e,t,n,o,r,i){let a=Math.max(0,o-i),s=Math.min(t-1,o+i),l=Math.max(0,r-i),c=Math.min(n-1,r+i),d=null,m=1/0;for(let u=l;u<=c;u++)for(let p=a;p<=s;p++){if(p===o&&u===r)continue;let f=p-o,y=u-r,g=f*f+y*y;if(g>i*i||g>=m)continue;let T=(u*t+p)*4;e[T+3]<er||(d=T,m=g)}return d}function Mn(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)),i=Math.max(0,Math.floor(t.y*n)),a=Math.max(1,Math.min(o.width-r,Math.ceil(t.canvasW*n))),s=Math.max(1,Math.min(o.height-i,Math.ceil(t.canvasH*n)));if(a<=0||s<=0)return;let l;try{l=e.getImageData(r,i,a,s)}catch{return}let c=l.data,d=new Uint8ClampedArray(c),m=Math.max(mn,mn/n),u=Math.max(2,Math.ceil(m*n)+1),p=!1;for(let f=0;f<s;f++)for(let y=0;y<a;y++){let g=(f*a+y)*4,T=c[g+3];if(T<Jo||T===255)continue;let C=(r+y+.5)/n-t.x,E=(i+f+.5)/n-t.y;if(nr(C,E,t.screenPts,t.textureEdgeRepairEdges)>m)continue;let v=or(d,a,s,y,f,u);v!==null&&(c[g]=d[v],c[g+1]=d[v+1],c[g+2]=d[v+2],c[g+3]=255,p=!0)}p&&e.putImageData(l,r,i)}function Cn(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 rr(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 i=e.entries.some(d=>d.textureEdgeRepair&&d.texture&&d.textureEdgeRepairEdges&&d.textureEdgeRepairEdges.size>0),a=r.getContext("2d",i?{willReadFrequently:!0}:void 0);if(!a)return{width:e.width,height:e.height,url:null};let s=Array.from(new Set(e.entries.flatMap(d=>d.texture?[d.texture]:[]))),l=new Map;await Promise.all(s.map(async d=>{l.set(d,await xn(d))}));for(let d of e.entries){let m=d.texture?l.get(d.texture):null;if(!d.texture){a.save(),Sn(a,d,t,o),a.restore();continue}m&&(a.save(),fe(a,o),a.beginPath(),mt(a,d.x,d.y,d.screenPts),a.clip(),Tn(a,d,m,o),a.restore()),d.texture&&t==="baked"&&(a.save(),fe(a,o),a.beginPath(),mt(a,d.x,d.y,d.screenPts),a.clip(),Pn(a,d.x,d.y,d.canvasW,d.canvasH,d.textureTint,o),a.restore()),Mn(a,d,o)}let c=await Cn(r);return r.width=1,r.height=1,{width:e.width,height:e.height,url:c}}async function pt(e,t,n,o,r){let i=[];for(let a of e){if(r())break;i.push(await rr(a,t,n,o))}return i}import{isSolidTrianglePlan as ar,offsetConvexPolygonPointsByEdgeAmounts as ir,parsePureColor as Ot,resolveSeamBleed as An,safePlanSeamBleedAmount as lr}from"@layoutit/polycss-core";var Ln=50,wn=[.4,-.7,.59],Dn="#ffffff",In=1,Vn="#ffffff",On=.4,H=1e-9,lt=.75,Fn=32,sr=96,Ft="0 48px 96px 48px",Rn,En=Fn;function ur(){let e=typeof CSS<"u"?CSS:void 0;return!!e?.supports?.("corner-top-left-shape","bevel")&&!!e.supports("corner-top-right-shape","bevel")}function Bt(){if(ur())return"corner-bevel";let e=typeof navigator<"u"?navigator.userAgent:"";return/\bFirefox\//.test(e)?"border-large":"border"}function kt(){let e=typeof navigator<"u"?navigator.userAgent:"";return e!==Rn&&(Rn=e,En=/\bFirefox\//.test(e)?sr:Fn),En}function Bn(){return Bt()==="border-large"?Ft:void 0}function cr(){let e=Bt();if(e==="corner-bevel")return;let t=e==="border-large"?Ft:void 0;return t?{borderWidth:t}:void 0}function kn(e){let t=Bt();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"?Ft:"")}function Ve(e){let t=Ot(e);return t?{r:t.rgb[0],g:t.rgb[1],b:t.rgb[2]}:{r:255,g:255,b:255}}function st({r:e,g:t,b:n}){return`${e},${t},${n}`}function dr(e){return Ot(e)?.alpha??1}function gt({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 Hn(e,t,n,o,r){let i=Ve(e),a=Ve(n),s=Ve(o),l=s.r/255*r+a.r/255*t,c=s.g/255*r+a.g/255*t,d=s.b/255*r+a.b/255*t,m=Math.max(0,Math.min(255,Math.round(i.r*l))),u=Math.max(0,Math.min(255,Math.round(i.g*c))),p=Math.max(0,Math.min(255,Math.round(i.b*d))),f=dr(e);return f<1?`rgba(${m}, ${u}, ${p}, ${f})`:gt({r:m,g:u,b:p})}function zn(e,t){if(!Number.isFinite(t)||t<=1)return e;let n=Ot(e);if(!n)return e;let o=255/Math.max(1,Math.round(t)-1),r=a=>Math.max(0,Math.min(255,Math.round(Math.round(a/o)*o))),i={r:r(n.rgb[0]),g:r(n.rgb[1]),b:r(n.rgb[2])};return n.alpha<1?`rgba(${i.r}, ${i.g}, ${i.b}, ${n.alpha})`:gt(i)}function _n(e,t,n){let o=(r,i)=>{if(r===i)return r;let a=i-r;return r+Math.sign(a)*Math.min(Math.abs(a),n)};return{r:o(e.r,t.r),g:o(e.g,t.g),b:o(e.b,t.b)}}function Vt(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function fr(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 mr(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 i=e[r],a=e[r+1],s=[i[0]-t[0],i[1]-t[1],i[2]-t[2]],l=[a[0]-t[0],a[1]-t[1],a[2]-t[2]];n[0]-=s[1]*l[2]-s[2]*l[1],n[1]-=s[2]*l[0]-s[0]*l[2],n[2]-=s[0]*l[1]-s[1]*l[0]}let o=Math.hypot(n[0],n[1],n[2]);return o<=H?null:[n[0]/o,n[1]/o,n[2]/o]}function pr(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],i=e[(n+2)%e.length],a=(r[0]-o[0])*(i[1]-r[1])-(r[1]-o[1])*(i[0]-r[0]);if(Math.abs(a)<=H)return!1;let s=Math.sign(a);if(t===0)t=s;else if(s!==t)return!1}return!0}function yr(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 gr(e,t,n,o){let r=t[0]-e[0],i=t[1]-e[1],a=o[0]-n[0],s=o[1]-n[1],l=r*s-i*a;if(Math.abs(l)<=H)return null;let c=n[0]-e[0],d=n[1]-e[1],m=(c*s-d*a)/l;return[e[0]+m*r,e[1]+m*i]}function yt(e,t){if(e.length<6||t<=0)return e;let n=0,o=0,r=e.length/2;for(let a=0;a<e.length;a+=2)n+=e[a],o+=e[a+1];n/=r,o/=r;let i=e.slice();for(let a=0;a<i.length;a+=2){let s=i[a]-n,l=i[a+1]-o,c=Math.hypot(s,l);c<=H||(i[a]+=s/c*t,i[a+1]+=l/c*t)}return i}function Je(e,t){if(e.length<6||e.length%2!==0||t<=0)return e;let n=[];for(let l=0;l<e.length;l+=2)n.push([e[l],e[l+1]]);if(!pr(n))return yt(e,t);let o=yr(n);if(Math.abs(o)<=H)return yt(e,t);let r=o>0?1:-1,i=[];for(let l=0;l<n.length;l++){let c=n[l],d=n[(l+1)%n.length],m=d[0]-c[0],u=d[1]-c[1],p=Math.hypot(m,u);if(p<=H)return yt(e,t);let f=r*(u/p)*t,y=r*(-m/p)*t;i.push({a:[c[0]+f,c[1]+y],b:[d[0]+f,d[1]+y]})}let a=[],s=Math.max(2,t*4);for(let l=0;l<n.length;l++){let c=i[(l+n.length-1)%n.length],d=i[l],m=gr(c.a,c.b,d.a,d.b);if(!m)return yt(e,t);let u=n[l],p=m[0]-u[0],f=m[1]-u[1],y=Math.hypot(p,f);y>s?a.push(u[0]+p/y*s,u[1]+f/y*s):a.push(m[0],m[1])}return a}function hr(e,t,n,o){let r=e+t;if(o<=0||n<=H||r<=H||!Number.isFinite(e+t+n+o))return Je([e,0,0,n,r,n],o);let i=Math.sqrt(e*e+n*n),a=Math.sqrt(t*t+n*n);if(i<=H||a<=H)return Je([e,0,0,n,r,n],o);let s=-o*n/i,l=-o*e/i,c=o*n/a,d=-o*t/a,m=e+s,u=l,p=r+c,f=n+d,y=-n*r;if(Math.abs(y)<=H)return Je([e,0,0,n,r,n],o);let g=m-p,T=u-f,C=(g*n+T*e)/y,E=p-C*t,v=f-C*n,O=-o*(e+i)/n,j=n+o,k=r+o*(t+a)/n,U=j,w=Math.max(2,o*4),q=E-e,Y=v,z=Math.sqrt(q*q+Y*Y);z>w&&(E=e+q/z*w,v=Y/z*w);let h=Math.sqrt(O*O+o*o);h>w&&(O=O/h*w,j=n+o/h*w);let b=k-r,A=Math.sqrt(b*b+o*o);return A>w&&(k=r+b/A*w,U=n+o/A*w),[E,v,O,j,k,U]}function xr(e,t){if((e+1)%3===t)return e;if((t+1)%3===e)return t}function Pr(e,t,n,o,r){let i=e.seamBleedEdges;if(!i?.size)return null;let a=e.seamBleed===void 0?lt:e.seamBleed;return[[o,t],[t,n],[n,o]].map(([l,c],d)=>{let m=xr(l,c),u=m!==void 0&&i.has(m)?e.seamBleedEdgeAmounts?.get(m)??An(a,lt):0;return lr(r,d,u)})}function jn(e,t,n,o,r,i,a,s,l,c,d,m){let u=Math.round(e*1e3)/1e3||0,p=Math.round(t*1e3)/1e3||0,f=Math.round(n*1e3)/1e3||0,y=Math.round(o*1e3)/1e3||0,g=Math.round(r*1e3)/1e3||0,T=Math.round(i*1e3)/1e3||0,C=Math.round(a*1e3)/1e3||0,E=Math.round(s*1e3)/1e3||0,v=Math.round(l*1e3)/1e3||0,O=Math.round(c*1e3)/1e3||0,j=Math.round(d*1e3)/1e3||0,k=Math.round(m*1e3)/1e3||0;return`matrix3d(${u},${p},${f},0,${y},${g},${T},0,${C},${E},${v},0,${O},${j},${k},1)`}function br(e,t,n){return e.map(o=>[o[1]*t,o[0]*t,o[2]*n])}function Ht(e,t,n,o){if(!ar(e))return null;let r=e.tileSize,i=e.layerElevation,a=br(e.polygon.vertices,r,i),s=mr(a);if(!s)return null;let l=[{a:0,b:1,c:2},{a:1,b:2,c:0},{a:2,b:0,c:1}].map(Q=>{let W=a[Q.a],Z=a[Q.b];return{...Q,length:Math.hypot(Z[0]-W[0],Z[1]-W[1],Z[2]-W[2])}}).sort((Q,W)=>W.length-Q.length),c=l[0].a,d=l[0].b,m=l[0].c,u=a[c],p=a[d],f=a[m],y=l[0].length;if(y<=H)return null;let g=[(p[0]-u[0])/y,(p[1]-u[1])/y,(p[2]-u[2])/y],T=[f[0]-u[0],f[1]-u[1],f[2]-u[2]],C=Vt(T,g),E=[u[0]+g[0]*C,u[1]+g[1]*C,u[2]+g[2]*C],v=[E[0]-f[0],E[1]-f[1],E[2]-f[2]],O=Math.hypot(v[0],v[1],v[2]);if(O<=H)return null;let j=[v[0]/O,v[1]/O,v[2]/O];if(Vt(fr(g,j),s)<0){let Q=d;if(d=c,c=Q,u=a[c],p=a[d],y=Math.hypot(p[0]-u[0],p[1]-u[1],p[2]-u[2]),y<=H)return null;g=[(p[0]-u[0])/y,(p[1]-u[1])/y,(p[2]-u[2])/y];let W=[f[0]-u[0],f[1]-u[1],f[2]-u[2]];C=Vt(W,g),E=[u[0]+g[0]*C,u[1]+g[1]*C,u[2]+g[2]*C],v=[E[0]-f[0],E[1]-f[1],E[2]-f[2]];let Z=Math.hypot(v[0],v[1],v[2]);if(Z<=H)return null;j=[v[0]/Z,v[1]/Z,v[2]/Z]}let k=kt(),U=Math.max(0,Math.min(y,C)),w=Math.max(0,y-U),q=[U,0,0,O,U+w,O],Y=Pr(e,c,d,m,q),z=Y?ir(q,Y):hr(U,w,O,An(e.seamBleed,lt)),h=[z[0],z[1]],b=[z[2],z[3]],A=[z[4],z[5]],B=(b[1]+A[1])/2,D=h[0]-b[0],X=A[0]-h[0],me=B-h[1];if(D<=H||X<=H||me<=H||!Number.isFinite(D+X+me))return null;let N=t==="dynamic",J=Ve(e.polygon.color??"#cccccc"),pe=N&&st(J)===o?.dynamicColorKey,ue={color:N||e.shadedColor===o?.paintColor?void 0:e.shadedColor,pointerEvents:n==="none"?"none":void 0,...N&&!pe?{"--pnx":s[0].toFixed(4),"--pny":s[1].toFixed(4),"--pnz":s[2].toFixed(4),"--psr":(J.r/255).toFixed(4),"--psg":(J.g/255).toFixed(4),"--psb":(J.b/255).toFixed(4)}:N?{"--pnx":s[0].toFixed(4),"--pny":s[1].toFixed(4),"--pnz":s[2].toFixed(4)}:null},Re=([Q,W])=>[f[0]+(Q-U)*g[0]+W*j[0],f[1]+(Q-U)*g[1]+W*j[1],f[2]+(Q-U)*g[2]+W*j[2]],Ee=Re(h),ne=Re([b[0],B]),Fe=Re([A[0],B]),Be=k/2,he=[(Fe[0]-ne[0])/k,(Fe[1]-ne[1])/k,(Fe[2]-ne[2])/k],Ae=[Ee[0]-he[0]*Be,Ee[1]-he[1]*Be,Ee[2]-he[2]*Be],je=[(ne[0]-Ae[0])/k,(ne[1]-Ae[1])/k,(ne[2]-Ae[2])/k],Xe=[he[0],he[1],he[2],0,je[0],je[1],je[2],0,s[0],s[1],s[2],0,Ae[0],Ae[1],Ae[2],1].map(Q=>(Math.round(Q*1e3)/1e3||0).toString()).join(","),Le=cr();return{transform:`matrix3d(${Xe})`,...Le??{},...ue}}function ht(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 vr(e,t,n,o){let r=e+t;if(o<=0||n<=H||r<=H||!Number.isFinite(e+t+n+o))return Je([e,0,0,n,r,n],o);let i=Math.sqrt(e*e+n*n),a=Math.sqrt(t*t+n*n);if(i<=H||a<=H)return Je([e,0,0,n,r,n],o);let s=-o*n/i,l=-o*e/i,c=o*n/a,d=-o*t/a,m=e+s,u=l,p=r+c,f=n+d,y=-n*r;if(Math.abs(y)<=H)return Je([e,0,0,n,r,n],o);let g=m-p,T=u-f,C=(g*n+T*e)/y,E=p-C*t,v=f-C*n,O=-o*(e+i)/n,j=n+o,k=r+o*(t+a)/n,U=j,w=Math.max(2,o*4),q=E-e,Y=v,z=Math.sqrt(q*q+Y*Y);z>w&&(E=e+q/z*w,v=Y/z*w);let h=Math.sqrt(O*O+o*o);h>w&&(O=O/h*w,j=n+o/h*w);let b=k-r,A=Math.sqrt(b*b+o*o);return A>w&&(k=r+b/A*w,U=n+o/A*w),[E,v,O,j,k,U]}function Nn(e,t,n){if(e.texture||e.vertices.length!==3)return null;let o=Ln,r=o,i=e.vertices[0],a=e.vertices[1],s=e.vertices[2],l=i[1]*o,c=i[0]*o,d=i[2]*r,m=a[1]*o,u=a[0]*o,p=a[2]*r,f=s[1]*o,y=s[0]*o,g=s[2]*r,T=m-l,C=u-c,E=p-d,v=f-l,O=y-c,j=g-d,k=-(C*j-E*O),U=-(E*v-T*j),w=-(T*O-C*v),q=Math.sqrt(k*k+U*U+w*w);if(q<=H)return null;k/=q,U/=q,w/=q;let Y=T*T+C*C+E*E,z=f-m,h=y-u,b=g-p,A=l-f,B=c-y,D=d-g,X=z*z+h*h+b*b,me=A*A+B*B+D*D,N=ht(n)?n.a:0,J=ht(n)?n.b:1,pe=ht(n)?n.c:2,ue=()=>n?Nn(e,t):null;if(!ht(n)){let ae=Y;X>ae&&(N=1,J=2,pe=0,ae=X),me>ae&&(N=2,J=0,pe=1)}let Re=pe===0?l:pe===1?m:f,Ee=pe===0?c:pe===1?u:y,ne=pe===0?d:pe===1?p:g,Fe=N===0?l:N===1?m:f,Be=N===0?c:N===1?u:y,he=N===0?d:N===1?p:g,Ae=J===0?l:J===1?m:f,je=J===0?c:J===1?u:y,Xe=J===0?d:J===1?p:g,Le=Ae-Fe,Q=je-Be,W=Xe-he,Z=Math.sqrt(Le*Le+Q*Q+W*W);if(Z<=H)return ue();let be=Le/Z,xe=Q/Z,Ge=W/Z,oe=(Re-Fe)*be+(Ee-Be)*xe+(ne-he)*Ge,x=Fe+be*oe-Re,M=Be+xe*oe-Ee,S=he+Ge*oe-ne,R=Math.sqrt(x*x+M*M+S*S);if(R<=H)return ue();x/=R,M/=R,S/=R;let L=Math.max(0,Math.min(Z,oe)),ee=Math.max(0,Z-L),K=vr(L,ee,R,lt),re=K[0],$=K[1],ye=K[2],ve=K[3],ce=K[4],Se=K[5],we=(ve+Se)/2,I=re-ye,P=ce-re,G=we-$;if(I<=H||P<=H||G<=H||!Number.isFinite(I+P+G))return ue();let ke=1/kt(),V=I+P,F=V*ke,ge=(P-I)*.5*ke,He=G*ke,$e=re-L-V*.5,De=$,Ue=jn(be*F,xe*F,Ge*F,be*ge+x*He,xe*ge+M*He,Ge*ge+S*He,k,U,w,Re+be*$e+x*De,Ee+xe*$e+M*De,ne+Ge*$e+S*De),Ie;if(Math.floor(t.colorFreezeFrames??1)!==0){let ae=t.directionalLight,se=t.ambientLight,ie=ae?.direction??wn,de=ae?.color??Dn,We=Math.max(0,ae?.intensity??In),Ye=se?.color??Vn,ut=Math.max(0,se?.intensity??On),qe=Math.sqrt(ie[0]*ie[0]+ie[1]*ie[1]+ie[2]*ie[2])||1,Te=ie[0]/qe,Me=ie[1]/qe,vo=ie[2]/qe,So=We*Math.max(0,k*Te+U*Me+w*vo),on=Hn(e.color??"#cccccc",So,de,Ye,ut);Ie=t.colorSteps?zn(on,t.colorSteps):on}return{transform:Ue,borderWidth:Bn(),color:Ie,basis:{a:N,b:J,c:pe}}}function Sr(e,t,n){return n>0&&(n<=1||(t+e)%n===0)}function Tr(e,t,n,o){let r=Math.floor(o.colorFreezeFrames??1);if(r===0)return;let i=e.__polycssStableTriangleColor;if(!(i===void 0||Sr(t,Math.max(0,Math.floor(o.colorFrame??0)),Math.max(1,r)))||i===n)return;let s=n,l=n?Ve(n):void 0,c=e.__polycssStableTriangleColorRgb,d=Math.max(0,Math.floor(o.colorMaxStep??0));d>0&&c&&l&&n&&(l=_n(c,l,d),s=gt(l)),e.style.color=s,e.__polycssStableTriangleColor=s,e.__polycssStableTriangleColorRgb=l}function zt(e,t,n={}){if((n.textureLighting??"baked")!=="baked"||!Ke())return!1;let o=Array.from(e.children).filter(i=>i instanceof HTMLElement&&i.localName==="u");if(o.length!==t.length)return!1;let r=t.map((i,a)=>Nn(i,n,o[a].__polycssStableTriangleBasis));if(r.some(i=>!i))return!1;for(let i=0;i<o.length;i+=1){let a=r[i],s=o[i];s.style.visibility&&(s.style.visibility=""),s.__polycssStableTriangleBasis=a.basis,kn(s),s.style.transform=a.transform,a.borderWidth!==void 0&&(s.style.borderWidth=a.borderWidth),a.color!==void 0&&Tr(s,i,a.color,n)}return!0}import{computeTextureAtlasPlanPublic as Mr}from"@layoutit/polycss-core";function _t(e,t,n={},o){return Mr(e,t,n,void 0,o)}function jt(e,t,n){let o=new Set(n?.disable??[]);return Et(e,t,o)}import{computed as le,getCurrentScope as Cr,onScopeDispose as Rr,ref as $n,watch as Er}from"vue";function Nt(e){for(let t of e)t.startsWith("blob:")&&URL.revokeObjectURL(t)}function Un(e){return e.flatMap(t=>t.url?.startsWith("blob:")?[t.url]:[])}function xt(e){return e.map(t=>({width:t.width,height:t.height,url:null}))}function Wn(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 et(e){e.length!==0&&(typeof requestAnimationFrame=="function"?requestAnimationFrame(()=>Nt(e)):setTimeout(()=>Nt(e),0))}function $t(e,t,n=le(()=>{}),o=le(()=>{}),r=le(()=>{}),i=le(()=>{}),a=le(()=>{}),s=le(()=>{}),l=le(()=>!1)){let c=le(()=>new Set(s.value?.disable??[])),d=le(()=>!c.value.has("b")),m=le(()=>{let v=typeof document<"u"?document:null;return d.value&&(!v||tt(v))}),u=le(()=>!c.value.has("u")&&Ke()),p=le(()=>!c.value.has("i")&&t.value!=="dynamic"&&Qe()),f=le(()=>{let v=At(e.value,t.value,c.value,typeof document<"u"?document:null,r.value,i.value,a.value);return Lt(v,n.value,typeof document<"u"?document:null,o.value)}),y=$n(xt(f.value.packed.pages)),g=$n({plans:e.value,entries:f.value.packed.entries,pages:xt(f.value.packed.pages)}),T=[],C=0,E=!1;return Er(()=>[f.value,t.value,l.value],([v,O,j],k,U)=>{let{packed:w,atlasScale:q}=v;if(j){let h=++C,b=e.value,A=w.entries;if(w.pages.length===0||typeof document>"u"){et(T),T=[],g.value={plans:b,entries:A,pages:xt(w.pages)};return}let B=()=>E||h!==C,D=[];pt(w.pages,O,document,q,B).then(async X=>{if(D=Un(X),await Wn(D),B()){et(D);return}let me=T;T=D,D=[],et(me),g.value={plans:b,entries:A,pages:X}}).catch(()=>{});return}let Y=!1,z=[];if(U(()=>{Y=!0,et(z)}),w.pages.length===0){et(T),T=[],y.value.length!==0&&(y.value=[]);return}typeof document>"u"||(y.value.some(h=>h.url)||(y.value=xt(w.pages)),pt(w.pages,O,document,q,()=>Y).then(async h=>{if(z=Un(h),await Wn(z),Y){et(z);return}let b=T;T=z,z=[],et(b),y.value=h}).catch(()=>{}))},{immediate:!0}),Cr()&&Rr(()=>{E=!0,Nt(T),T=[]}),{plans:le(()=>l.value?g.value.plans:e.value),entries:le(()=>l.value?g.value.entries:f.value.packed.entries),pages:le(()=>l.value?g.value.pages:y.value),ready:le(()=>{let v=l.value?g.value.pages:y.value;return v.length===0||v.every(O=>!!O.url)}),useFullRectSolid:d,useProjectiveQuad:m,useStableTriangle:u,useBorderShape:p}}import{h as Ar}from"vue";function Ut({entry:e,textureLighting:t,solidPaintDefaults:n,className:o,style:r,domAttrs:i,pointerEvents:a="auto"}){let s=Ht(e,t,a,n);if(!s)return null;let l=e.polygon.data?Object.fromEntries(Object.entries(e.polygon.data).map(([d,m])=>[`data-${d}`,String(m)])):{},c=o?.trim()||void 0;return Ar("u",{class:c,style:{...s,...r},"data-poly-index":String(e.index),...l,...i})}import{h as Lr}from"vue";import{isFullRectSolid as wr,cssBorderShapeForPlan as Dr,formatSolidQuadEntryMatrix as Ir,formatBorderShapeEntryMatrix as Vr}from"@layoutit/polycss-core";var Or=new Map([["transform",0],["border-shape",1],["border-width",2],["width",3],["height",4],["color",5]]);function Fr(e){let t=e.getAttribute("style");if(!t)return;let o=t.split(";").map(r=>r.trim()).filter(Boolean).map((r,i)=>{let a=r.slice(0,r.indexOf(":")).trim().toLowerCase();return{declaration:r,index:i,order:Or.get(a)??Number.POSITIVE_INFINITY}}).sort((r,i)=>r.order-i.order||r.index-i.index).map(({declaration:r})=>r).join(";");o!==t&&e.setAttribute("style",o)}function Wt({entry:e,textureLighting:t,solidPaintDefaults:n,className:o,style:r,domAttrs:i,pointerEvents:a="auto",forceBorderShape:s=!1}){let l=!e.texture&&wr(e),c=l&&s&&Qe(),d=!l||c?Dr(e):null,m=t==="dynamic",u=Ve(e.polygon.color??"#cccccc"),p=m&&st(u)===n?.dynamicColorKey,y={transform:d?Vr(e):Ir(e),color:m?void 0:e.shadedColor,pointerEvents:a==="none"?"none":void 0,...m?{"--pnx":e.normal[0].toFixed(4),"--pny":e.normal[1].toFixed(4),"--pnz":e.normal[2].toFixed(4),...p?null:{"--psr":(u.r/255).toFixed(4),"--psg":(u.g/255).toFixed(4),"--psb":(u.b/255).toFixed(4)}}:null,...r},g=e.polygon.data?Object.fromEntries(Object.entries(e.polygon.data).map(([E,v])=>[`data-${E}`,String(v)])):{},T=o?.trim()||void 0,C=E=>{let v=E.el;v&&(d?v.style.setProperty("border-shape",d):v.style.removeProperty("border-shape"),Fr(v))};return Lr(l&&!c?"b":"i",{class:T,style:y,"data-poly-index":String(e.index),...g,...i,onVnodeMounted:C,onVnodeUpdated:C})}import{h as Br}from"vue";function Yt({entry:e,textureLighting:t,solidPaintDefaults:n,className:o,style:r,domAttrs:i,pointerEvents:a="auto"}){let s=t==="dynamic",l=Ve(e.polygon.color??"#cccccc"),c=s&&st(l)===n?.dynamicColorKey,d={transform:`matrix3d(${e.projectiveMatrix})`,color:s?void 0:e.shadedColor,pointerEvents:a==="none"?"none":void 0,...s&&!c?{"--pnx":e.normal[0].toFixed(4),"--pny":e.normal[1].toFixed(4),"--pnz":e.normal[2].toFixed(4),"--psr":(l.r/255).toFixed(4),"--psg":(l.g/255).toFixed(4),"--psb":(l.b/255).toFixed(4)}:s?{"--pnx":e.normal[0].toFixed(4),"--pny":e.normal[1].toFixed(4),"--pnz":e.normal[2].toFixed(4)}:null,...r},m=e.polygon.data?Object.fromEntries(Object.entries(e.polygon.data).map(([p,f])=>[`data-${p}`,String(f)])):{},u=o?.trim()||void 0;return Br("b",{class:u,style:d,"data-poly-index":String(e.index),...m,...i})}import{h as kr}from"vue";import{formatCornerShapeElementStyle as Hr,parseHex as zr,rgbKey as _r}from"@layoutit/polycss-core";function jr(e,t,n){if(t==="dynamic"){let o=zr(e.polygon.color??"#cccccc"),r=`;--pnx:${e.normal[0].toFixed(4)};--pny:${e.normal[1].toFixed(4)};--pnz:${e.normal[2].toFixed(4)}`;return _r(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 Xt({entry:e,geometry:t,textureLighting:n,solidPaintDefaults:o,className:r,pointerEvents:i="auto"}){let a=Hr(e,t),s=jr(e,n,o),l=i==="none"?";pointer-events:none":"",c=a+s+l,d=u=>{!u||!(u instanceof HTMLElement)||u.setAttribute("style",c)},m=e.polygon.data?Object.fromEntries(Object.entries(e.polygon.data).map(([u,p])=>[`data-${u}`,String(p)])):{};return kr("u",{class:r?.trim()||void 0,"data-poly-index":String(e.index),...m,onVnodeMounted:({el:u})=>d(u),onVnodeUpdated:({el:u})=>d(u)})}import{h as Yn}from"vue";import{formatMatrix3d as Xn,formatCssLengthPx as Pe,resolvePolyTextureImageRendering as Nr}from"@layoutit/polycss-core";var $r=64;function Gt({entry:e,page:t,textureLighting:n,textureImageRendering:o,solidPaintDefaults:r,className:i,style:a,domAttrs:s,pointerEvents:l="auto"}){let c=n==="dynamic",d=Nr(e.polygon,o),m=e.atlasCanonicalSize??$r,u=e.atlasLeafWidth??m,p=e.atlasLeafHeight??m,f=e.canvasW||1,y=e.canvasH||1,g=t?`${Pe(-e.x/f*u)} ${Pe(-e.y/y*p)}`:void 0,T=t?`${Pe(t.width/f*u)} ${Pe(t.height/y*p)}`:void 0,C=c&&t?.url?`url(${t.url})`:void 0,E={transform:Xn(e.atlasMatrix),"--polycss-atlas-size":`${m}px`,"--polycss-atlas-width":Pe(u),"--polycss-atlas-height":Pe(p),"--polycss-atlas-leaf-sizing":e.atlasLeafSizing??"canonical",backgroundImage:t?.url?`url(${t.url})`:void 0,backgroundPosition:g,backgroundSize:T,backgroundRepeat:t?.url?"no-repeat":void 0,imageRendering:d==="pixelated"?"pixelated":void 0,...c?{"--pnx":e.normal[0].toFixed(4),"--pny":e.normal[1].toFixed(4),"--pnz":e.normal[2].toFixed(4)}:null,...c&&C?{maskImage:C,maskMode:"alpha",maskPosition:g,maskSize:T,maskRepeat:"no-repeat",WebkitMaskImage:C,WebkitMaskPosition:g,WebkitMaskSize:T,WebkitMaskRepeat:"no-repeat"}:null,opacity:t?.url?void 0:0,pointerEvents:l==="none"?"none":void 0,...a},v=e.polygon.data?Object.fromEntries(Object.entries(e.polygon.data).map(([j,k])=>[`data-${j}`,String(k)])):{},O=i?.trim()||void 0;return Yn("s",{class:O,style:E,"data-poly-index":String(e.index),"data-polycss-leaf":"polygon","data-polycss-texture-backend":"atlas","data-polycss-texture-leaf-sizing":e.atlasLeafSizing??"canonical","data-polycss-texture-ready":t?.url?"true":"false","data-polycss-texture-image-rendering":d,"data-polycss-texture-projection":"affine","data-polycss-texture-lighting":n,"data-polycss-texture-leaf-width":String(u),"data-polycss-texture-leaf-height":String(p),"data-polycss-double-sided":e.polygon.doubleSided?"true":void 0,...v,...s})}function qt({plan:e,geometry:t,className:n,style:o,domAttrs:r,pointerEvents:i="auto"}){let a={transform:Xn(t.matrix),"--polycss-atlas-width":Pe(t.leafWidth),"--polycss-atlas-height":Pe(t.leafHeight),"--polycss-atlas-leaf-sizing":"image",backgroundImage:`url(${t.url})`,backgroundPosition:`${Pe(t.backgroundPosition[0])} ${Pe(t.backgroundPosition[1])}`,backgroundSize:`${Pe(t.backgroundSize[0])} ${Pe(t.backgroundSize[1])}`,backgroundRepeat:"no-repeat",backgroundBlendMode:"normal",maskImage:"none",WebkitMaskImage:"none",imageRendering:t.imageRendering==="pixelated"?"pixelated":void 0,"--pnx":e.normal[0].toFixed(4),"--pny":e.normal[1].toFixed(4),"--pnz":e.normal[2].toFixed(4),pointerEvents:i==="none"?"none":void 0,...o},s=e.polygon.data?Object.fromEntries(Object.entries(e.polygon.data).map(([c,d])=>[`data-${c}`,String(d)])):{},l=n?.trim()||void 0;return Yn("s",{class:l,style:a,"data-poly-index":String(e.index),"data-polycss-leaf":"polygon","data-polycss-texture-backend":"image","data-polycss-texture-leaf-sizing":"image","data-polycss-texture-ready":"true","data-polycss-texture-image-rendering":t.imageRendering,"data-polycss-texture-projection":t.projection,"data-polycss-texture-lighting":t.lighting,"data-polycss-texture-leaf-width":String(t.leafWidth),"data-polycss-texture-leaf-height":String(t.leafHeight),"data-polycss-double-sided":e.polygon.doubleSided?"true":void 0,"data-polycss-texture-source-x":String(t.sourceRect.x),"data-polycss-texture-source-y":String(t.sourceRect.y),"data-polycss-texture-source-width":String(t.sourceRect.width),"data-polycss-texture-source-height":String(t.sourceRect.height),...s,...r})}import{inject as Ur}from"vue";var Wr=Symbol("polycss/scene-context");function Zn(){return Ur(Wr,null)}import{BASE_TILE as te,computeProjectiveQuadMatrix as Yr,normalFacesCamera as Xr,parsePureColor as ao,PROJECTIVE_QUAD_BLEED as Gr,resolveProjectiveQuadGuards as qr,rotateVec3 as Jn,shadePolygon as Qr,SOLID_QUAD_CANONICAL_SIZE as Kr}from"@layoutit/polycss-core";var Zr=[.4,-.7,.59],Jr="#ffffff",ea=1,ta="#ffffff",na=.4,io=1,oa=8,ra=Gr,_e=1e-6,aa=qr({bleed:0}),lo={t:[0,0,1],b:[0,0,-1],fl:[0,1,0],br:[0,-1,0],fr:[1,0,0],bl:[-1,0,0]},Zt=["t","b","bl","br","fr","fl"],ia=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 eo(e){let t=[];for(let n of Zt)Xr(lo[n],e)&&t.push(n);return t.join("|")}function la(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 sa(e){let t=e.vertices;if(t.length<3)return null;let n=t[0],o=0,r=0,i=0;for(let s=1;s+1<t.length;s+=1){let l=t[s],c=t[s+1],d=l[1]-n[1],m=l[0]-n[0],u=l[2]-n[2],p=c[1]-n[1],f=c[0]-n[0],y=c[2]-n[2];o-=m*y-u*f,r-=u*p-d*y,i-=d*f-m*p}let a=Math.hypot(o,r,i);return a<=1e-9?null:[Math.round(o/a),Math.round(r/a),Math.round(i/a)]}function ua(e){if(e.texture||e.material||e.uvs||e.textureTriangles||e.vertices.length!==4)return null;let t=sa(e),n=t?ia.get(t.join(",")):void 0;if(!n)return null;let o=1/0,r=1/0,i=1/0,a=-1/0,s=-1/0,l=-1/0;for(let m of e.vertices)o=Math.min(o,m[0]),r=Math.min(r,m[1]),i=Math.min(i,m[2]),a=Math.max(a,m[0]),s=Math.max(s,m[1]),l=Math.max(l,m[2]);let c=1e-6,d=ga(e.color);return Math.abs(l-i)<=c?{axis:"z",face:n,left:r*te,top:o*te,width:Math.max(0,(s-r)*te),height:Math.max(0,(a-o)*te),z:i*te,baseColor:d,bleed:Qt()}:Math.abs(a-o)<=c?{axis:"x",face:n,left:r*te,top:i*te,width:Math.max(0,(s-r)*te),height:Math.max(0,(l-i)*te),z:-o*te,baseColor:d,bleed:Qt()}:Math.abs(s-r)<=c?{axis:"y",face:n,left:i*te,top:o*te,width:Math.max(0,(l-i)*te),height:Math.max(0,(a-o)*te),z:-r*te,baseColor:d,bleed:Qt()}:null}function Qt(){return{left:0,right:0,top:0,bottom:0}}function ca(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 to(e){return[e[1]*te,e[0]*te,e[2]*te]}function no(e,t){return e.axis==="x"?[t[0],t[2]]:e.axis==="y"?[t[2],t[1]]:[t[0],t[1]]}function da(e,t,n){let o=e.left,r=e.left+e.width,i=e.top,a=e.top+e.height;if(Math.abs(t[0]-n[0])<=_e){if(Math.abs(t[0]-o)<=_e)return"left";if(Math.abs(t[0]-r)<=_e)return"right"}if(Math.abs(t[1]-n[1])<=_e){if(Math.abs(t[1]-i)<=_e)return"top";if(Math.abs(t[1]-a)<=_e)return"bottom"}return null}function fa(e,t){let n=null;for(let o=0;o<3;o+=1)if(!(Math.abs(e[o]-t[o])<=_e)){if(n!==null)return null;n=o}return n}function ma(e,t,n){let o=t.vertices,r=to(o[n]),i=to(o[(n+1)%o.length]),a=da(e,no(e,r),no(e,i));if(!a)return null;let s=fa(r,i);if(s===null)return null;let l=Math.min(r[s],i[s]),c=Math.max(r[s],i[s]);return c-l>_e?{item:e,side:a,variableAxis:s,fixed:r,start:l,end:c}:null}function oo(e){e.item.bleed[e.side]=Math.max(e.item.bleed[e.side],ra)}function pa(e,t){let n=new Map;for(let o of t){let r=e[o.sourceIndex];if(r)for(let i=0;i<r.vertices.length;i+=1){let a=ma(o,r,i);if(!a)continue;let s=ca(a),l=n.get(s);l?l.push(a):n.set(s,[a])}}for(let o of n.values()){if(o.length<2)continue;o.sort((i,a)=>i.start-a.start||i.end-a.end);let r=[];for(let i of o){r=r.filter(a=>a.end>i.start+_e);for(let a of r)a.item.sourceIndex!==i.item.sourceIndex&&(oo(a),oo(i));r.push(i)}}}function ya(e){let t=ao(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 ga(e){if(!e)return"#cccccc";let t=ao(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(${Kt(n.r)}, ${Kt(n.g)}, ${Kt(n.b)}, ${o})`}return ha(n)}function ha({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 Kt(e){return Math.round(Math.max(0,Math.min(255,e)))}function xa(e,t,n,o){let r=n?.direction??Zr,i=Math.hypot(r[0],r[1],r[2])||1,a=r[0]/i,s=r[1]/i,l=r[2]/i,c=Math.max(0,n?.intensity??ea)*Math.max(0,e[0]*a+e[1]*s+e[2]*l),d=Math.max(0,o?.intensity??na),m=n?.color??Jr,u=o?.color??ta,p=Qr(t,c,m,u,d),f=ya(t);if(f.alpha>=1)return p;let y=parseInt(p.slice(1,3),16),g=parseInt(p.slice(3,5),16),T=parseInt(p.slice(5,7),16);return`rgba(${y}, ${g}, ${T}, ${f.alpha})`}function Pa(e){if(!e?.length)return[];let t=[];for(let n=0;n<e.length;n+=1){let o=e[n],r=ua(o);if(!r||r.width<=0||r.height<=0)return[];t.push({...r,sourceIndex:n})}return pa(e,t),t}function ba(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 va(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 Sa(e){return new Map([[0,e.bleed.top],[1,e.bleed.right],[2,e.bleed.bottom],[3,e.bleed.left]])}function Ta(e,t){let n=e.split(",").map(Number);if(n.length!==16||n.some(r=>!Number.isFinite(r)))return null;let o=Kr/t;for(let r=0;r<8;r+=1)n[r]*=o;return`matrix3d(${n.map(r=>Number(r.toFixed(6))).join(",")})`}function ro(e,t){let n=e.left-e.bleed.left,o=e.top-e.bleed.top,r=e.width+e.bleed.left+e.bleed.right,i=e.height+e.bleed.top+e.bleed.bottom,a=e.z,s=r/t,l=i/t;return`matrix3d(${(e.axis==="x"?[s,0,0,0,0,0,l,0,0,-1,0,0,n,-a,o,1]:e.axis==="y"?[0,0,s,0,0,l,0,0,-1,0,0,0,-a,o,n,1]:[s,0,0,0,0,l,0,0,0,0,1,0,n,o,a,1]).map(d=>Number(d.toFixed(6))).join(",")})`}function Ma(e,t){let{xAxis:n,yAxis:o,normal:r,tx:i,ty:a,tz:s}=ba(e),l=Yr(va(e),n,o,r,i,a,s,aa,Sa(e));return l?Ta(l,t)??ro(e,t):ro(e,t)}function Ca(e){let t=e.defaultView?.matchMedia;return t?t("(pointer: coarse)").matches||t("(hover: none)").matches:!1}function Ra(e){return Ca(e)?oa:io}function Ea(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 Aa(e,t){let n=Ea(e),o=t.meshRotation;o&&(n=Jn(n,o[0]??0,o[1]??0,o[2]??0));let[r,i]=Jn(n,t.rotX,0,t.rotY);return{x:r,y:i}}function La(e,t,n){let o=e.filter(u=>t.has(u.face)).map(u=>({item:u,...Aa(u,n)}));if(o.length===0)return[];let r=1/0,i=-1/0,a=1/0,s=-1/0;for(let u of o)r=Math.min(r,u.x),i=Math.max(i,u.x),a=Math.min(a,u.y),s=Math.max(s,u.y);let l=4,c=Math.max(1e-6,i-r),d=Math.max(1e-6,s-a),m=new Map;for(let u of o){let p=Math.min(l-1,Math.max(0,Math.floor((u.x-r)/c*l))),f=Math.min(l-1,Math.max(0,Math.floor((u.y-a)/d*l))),y=`${p}:${f}`,g=m.get(y);g||(g={tx:p,ty:f,sourceIndex:u.item.sourceIndex,items:[]},m.set(y,g)),g.items.push(u.item),g.sourceIndex=Math.min(g.sourceIndex,u.item.sourceIndex)}return Array.from(m.values()).sort((u,p)=>u.ty-p.ty||u.tx-p.tx||u.sourceIndex-p.sourceIndex).flatMap(u=>u.items)}function so(e){let{doc:t,wrapper:n,polygons:o,directionalLight:r,ambientLight:i}=e,a=Pa(o);if(a.length===0)return null;let s=new Set(a.map(h=>h.face));n.classList.add("polycss-voxel-mesh");let l=Ra(t);l!==io&&n.style.setProperty("--polycss-voxel-primitive",`${l}px`);let c=new Map,d=(h,b)=>{let A=`${h}|${b}`,B=c.get(A);if(B)return B;let D=xa(lo[h],b,r,i);return c.set(A,D),D},m=new Map,u=new Map,p=new Map,f=new Map;for(let h of a){let b=f.get(h.face);b||(b=[],f.set(h.face,b)),b.push(h)}let y="",g=0,T=new Set,C=h=>{let b=m.get(h.sourceIndex);return b||(b=t.createElement("b"),m.set(h.sourceIndex,b),la(b,d(h.face,h.baseColor),Ma(h,l))),b},E=h=>{let b=u.get(h);return b||(b=t.createElement("span"),b.className=`polycss-voxel-face polycss-voxel-face-${h}`,b.dataset.polycssVoxelFace=h,b.__polycssVoxelFaceHost=!0,u.set(h,b)),b},v=()=>{for(let h of Array.from(n.childNodes))if(!h.__polycssVoxelFaceHost)return h;return null},O=(h,b)=>{let A=b.map(X=>X.sourceIndex).join(",");if(p.get(h)===A)return;let B=E(h),D=t.createDocumentFragment();for(let X of b)D.appendChild(C(X));B.replaceChildren(D),p.set(h,A)},j=()=>{for(let h of Zt)s.has(h)&&O(h,f.get(h)??[])},k=h=>new Set(h.split("|").filter(Boolean)),U=h=>{let b=k(h);return Zt.filter(A=>b.has(A)&&s.has(A))},w=h=>{let b=0;for(let A of h)b+=f.get(A)?.length??0;return b},q=h=>{let b=new Set,A=[],B=new Map;for(let D of h){b.has(D.face)||(b.add(D.face),A.push(D.face));let X=B.get(D.face);X||(X=[],B.set(D.face,X)),X.push(D)}return{orderedFaces:A,itemsByFace:B}},Y=(h,b)=>{let A=new Set(h);for(let B of T){if(A.has(B))continue;let D=u.get(B);D?.parentNode===n&&n.removeChild(D)}if(b){let B=t.createDocumentFragment();for(let D of h)B.appendChild(E(D));n.insertBefore(B,v()),T=A;return}for(let B=0;B<h.length;B+=1){let D=h[B],X=E(D);if(X.parentNode===n)continue;let me=null;for(let N=B+1;N<h.length;N+=1){let J=u.get(h[N]);if(J?.parentNode===n){me=J;break}}n.insertBefore(X,me??v())}T=A},z=(h,b,A)=>{if(!A){let N=U(h);Y(N,!1),g=w(N);return}let B=new Set(h.split("|").filter(Boolean)),D=La(a,B,b),{orderedFaces:X,itemsByFace:me}=q(D);for(let N of X)O(N,me.get(N)??[]);Y(X,!0),g=D.length};return j(),{get brushCount(){return g},render(h){y=eo(h),z(y,h,!0)},syncCamera(h){let b=eo(h);b!==y&&(y=b,z(b,h,!1))},dispose(){for(let h of u.values())h.remove();n.classList.remove("polycss-voxel-mesh"),n.style.removeProperty("--polycss-voxel-primitive"),m.clear(),u.clear(),p.clear(),g=0,T=new Set,y=""}}}import{defineComponent as wa,h as Da,provide as Ia,computed as Va}from"vue";var Jt=wa({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=Va(()=>({zoom:e.zoom,target:e.target,rotX:e.rotX,rotY:e.rotY,distance:e.distance,projection:"orthographic",perspectiveStyle:"none"})),{store:o,cameraRef:r,sceneElRef:i,cameraElRef:a,autoCenterOffset:s,applyTransformDirect:l}=ze(n);return Ia(Ce,{store:o,cameraRef:r,sceneElRef:i,cameraElRef:a,autoCenterOffset:s,applyTransformDirect:l}),()=>Da("div",{ref:a,class:`polycss-camera${e.class?` ${e.class}`:""}`,style:{perspective:"1000000px"},"data-polycss-camera-projection":"orthographic","data-polycss-camera-perspective":"none","data-polycss-camera-applied-perspective":"1000000px","data-polycss-camera-zoom":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?.())}});import{defineComponent as Oa,h as Fa,provide as Ba,computed as ka}from"vue";var uo=32e3,Ha=Oa({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=ka(()=>({zoom:e.zoom,target:e.target,rotX:e.rotX,rotY:e.rotY,distance:e.distance,projection:"perspective",perspectiveStyle:`${typeof e.perspective=="number"?e.perspective:uo}px`})),{store:o,cameraRef:r,sceneElRef:i,cameraElRef:a,autoCenterOffset:s,applyTransformDirect:l}=ze(n);return Ba(Ce,{store:o,cameraRef:r,sceneElRef:i,cameraElRef:a,autoCenterOffset:s,applyTransformDirect:l}),()=>{let c=`${typeof e.perspective=="number"?e.perspective:uo}px`;return Fa("div",{ref:a,class:`polycss-camera${e.class?` ${e.class}`:""}`,style:{perspective:c},"data-polycss-camera-projection":"perspective","data-polycss-camera-perspective":c,"data-polycss-camera-applied-perspective":c,"data-polycss-camera-zoom":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 en=new WeakMap;function co(e,t){en.set(e,t)}function fo(e){en.delete(e)}function mo(e){let t=e;for(;t;){if(t instanceof HTMLElement){let n=en.get(t);if(n)return n}t=t.parentElement}return null}var ho=new WeakMap,xo=new WeakMap;function si(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 Po(e){if(e.length===0)return e;let t=Za(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 i=a=>[a[0]-n,a[1]-o,a[2]-r];return e.map(a=>({...a,vertices:a.vertices.map(i),...a.textureTriangles?.length?{textureTriangles:a.textureTriangles.map(s=>({...s,vertices:s.vertices.map(i)}))}:null}))}var bo=za({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=_(()=>e.src??""),i=_(()=>{let x={...e.parseOptions??{}};return e.mtl&&(x.mtlUrl=e.mtl),e.meshResolution!==void 0&&(x.meshResolution=e.meshResolution),Object.keys(x).length>0?x:void 0}),a=ct(r,i.value),s=_(()=>e.src?a.polygons.value:e.polygons??[]),l=ot(null),c=null;rt(s,()=>{l.value=null,c=null});let d=_(()=>l.value??s.value),m=_(()=>e.merge?ti(d.value,e.meshResolution!==void 0?{meshResolution:e.meshResolution}:void 0):d.value),u=_(()=>e.autoCenter?Po(m.value):m.value),p=!t.polygon,f=Zn(),y=ja(Ce,null),g=ot(0),T;po(x=>{T?.(),T=y?.store.subscribe(()=>{g.value++}),x(()=>{T?.(),T=void 0})});let C=_(()=>e.textureLighting??f?.value.textureLighting??"baked"),E=_(()=>f?.value.strategies),v=_(()=>e.seamBleed??f?.value.seamBleed??Ja),O=_(()=>e.textureLeafSizing??f?.value.textureLeafSizing),j=_(()=>e.textureImageRendering??f?.value.textureImageRendering),k=_(()=>e.textureBackend??f?.value.textureBackend),U=_(()=>e.textureProjection??f?.value.textureProjection),w=_(()=>f?.value.directionalLight),q=_(()=>f?.value.pointLights),Y=_(()=>f?.value.ambientLight),z=_(()=>e.src?a.voxelSource.value:e.voxelSource??void 0),h=_(()=>!!(z.value&&l.value===null&&!t.polygon&&!t.default&&C.value==="baked"&&!e.castShadow)),b=_(()=>{if(C.value!=="dynamic")return null;let x=e.rotation;if(!x||x[0]===0&&x[1]===0&&x[2]===0)return null;let M=f?.value.directionalLight?.direction;if(!M)return null;let S=nn(M,x),R=Math.hypot(S[0],S[1],S[2])||1;return{"--plx":(S[0]/R).toFixed(2),"--ply":(S[1]/R).toFixed(2),"--plz":(S[2]/R).toFixed(2)}}),A=ot(e.rotation),B=ot(0),D=_(()=>{let x=w.value;if(!x)return x;let M=Ga(x);return A.value?{...M,direction:nn(M.direction,A.value)}:M}),X=_(()=>{let x=q.value;if(!x||x.length===0)return;let M=e.position??[0,0,0],S=A.value??[0,0,0],R=S[0]!==0||S[1]!==0||S[2]!==0;return x.map(L=>{let ee=[L.position[0]-M[0],L.position[1]-M[1],L.position[2]-M[2]],K=R?nn(ee,S):ee;return{...L,position:K}})}),me=void 0,N=_(()=>{if(!p||h.value)return[];let x=Qn(u.value),M=v.value==="auto"||typeof v.value=="number"&&Number.isFinite(v.value)&&v.value>0?Kn(u.value,{directionalLight:D.value,ambientLight:Y.value}):null,S=Ua(u.value,{directionalLight:D.value,ambientLight:Y.value});return u.value.map((R,L)=>_t(R,L,{directionalLight:D.value,pointLights:X.value,ambientLight:Y.value,seamBleed:M?.has(L)?v.value:void 0,seamEdges:M?.get(L),textureEdgeRepairEdges:x[L],lightOccludedPolyIndices:me},S[L]))}),J=_(()=>e.textureQuality),pe=_(()=>e.atomicAtlas),ue=$t(N,C,J,O,k,j,U,E,pe),Re=[],Ee=()=>{let x=Re.splice(0);for(let M of x)M()};rt(()=>ue.ready.value,x=>{x&&Ee()},{immediate:!0}),tn(Ee);let ne=_(()=>p?jt(ue.plans.value,C.value,E.value):{});rt(()=>ue.entries.value,()=>{e.atomicAtlas&&ue.ready.value&&e.onFrameReady?.()},{flush:"sync"});let Fe=_(()=>si(ne.value)),Be=_(()=>{if(!e.castShadow||f?.value.receiverRegistry?.hasAny.value)return null;let x=f?.value,M=x?.groundCssZ??null;if(M===null)return null;let S=x?.shadow,R=x?.directionalLight?.direction??[.4,-.7,.59],L=go(R),ee=e.position?.[2]??0,K=M-ee*Pt,re=yo(u.value,{normalTolerance:.1,distanceTolerance:.5,overlapFraction:.95,preserveDoubleSidedBackfaces:!1}),$=[],ye=1/0,ve=1/0,ce=-1/0,Se=-1/0,we=1/0,I=1/0,P=-1/0,G=-1/0,Ne=u.value,ke=N.value;for(let de=0;de<Ne.length;de++){if(re.has(de)||!ke[de])continue;let Ye=Ne[de],ut=[];for(let qe of Ye.vertices){let Te=[qe[1]*Pt,qe[0]*Pt,qe[2]*Pt];Te[0]<we&&(we=Te[0]),Te[1]<I&&(I=Te[1]),Te[0]>P&&(P=Te[0]),Te[1]>G&&(G=Te[1]);let Me=ii(Te,L,K);ut.push(Me),Me[0]<ye&&(ye=Me[0]),Me[1]<ve&&(ve=Me[1]),Me[0]>ce&&(ce=Me[0]),Me[1]>Se&&(Se=Me[1])}$.push(ut)}if($.length===0)return null;let V=S?.maxExtend??2e3,F=Math.max(ye,we-V),ge=Math.max(ve,I-V),He=Math.min(ce,P+V),$e=Math.min(Se,G+V),De=He-F,Ue=$e-ge;if(!(De>0)||!(Ue>0))return null;let Ie=S?.color??"#000000",ae=S?.opacity??.25,se=ni(Ie)?.rgb??[0,0,0],ie="";for(let de of $){let We=ei(de);ie+=`M${(We[0][0]-F).toFixed(3)},${(We[0][1]-ge).toFixed(3)}`;for(let Ye=1;Ye<We.length;Ye++)ie+=`L${(We[Ye][0]-F).toFixed(3)},${(We[Ye][1]-ge).toFixed(3)}`;ie+="Z"}return Oe("svg",{class:"polycss-shadow polycss-shadow-svg",width:String(De),height:String(Ue),viewBox:`0 0 ${De} ${Ue}`,style:{position:"absolute",top:"0",left:"0",display:"block",overflow:"hidden",transformOrigin:"0 0",pointerEvents:"none",willChange:"transform",transform:`translate3d(${F.toFixed(3)}px,${ge.toFixed(3)}px,${K.toFixed(3)}px)`}},[Oe("path",{d:ie,fill:`rgb(${se[0]},${se[1]},${se[2]})`,"fill-rule":"nonzero",stroke:`rgb(${se[0]},${se[1]},${se[2]})`,"stroke-width":"3","stroke-linejoin":"round",opacity:ae.toFixed(4)})])}),he=_(()=>e.receiveShadow?Wa(u.value):void 0),Ae=_(()=>{if(!e.receiveShadow)return[];let x=f?.value,M=x?.shadowRegistry;if(!M)return[];M.version.value,g.value;let S=M.getEntries();if(S.length===0)return[];let R=x?.directionalLight?.direction??[.4,-.7,.59],L=go(R),K=C.value==="dynamic"?[]:x?.pointLights??[],re=K.map(V=>({position:li(V.position),color:V.color,intensity:V.intensity})),$=K.map((V,F)=>V.castShadow?F:-1).filter(V=>V>=0),ye=!!x?.directionalLight?.direction&&(x.directionalLight.intensity??1)>0,ve=$.length>0,ce=x?.shadow?.lift??.001,Se=ai(u.value,e.position??[0,0,0],e.scale,new Set,ce,e.rotation);if(Se.length===0)return[];let we=[],I=0,P=he.value;for(let V of S){let F=V(),ge=ri(F.polygons,F.position,F.scale,()=>!0,F.rotation??null),He=F.polygons===u.value,$e;if(!He&&(F.polygons.length>=40||ve)){let Ie=F.rotation??null,ae=F.position,se=JSON.stringify(F.scale??null),ie=`${ae[0]},${ae[1]},${ae[2]}|${Ie?Ie.join(","):"n"}|${se}`,de=ho.get(F.polygons);(de===void 0||xo.get(F.polygons)!==ie)&&(de=oi(F.polygons,ae,F.scale,Ie),ho.set(F.polygons,de),xo.set(F.polygons,ie)),$e=de}let De,Ue;if(x?.shadow?.parametric){let Ie=F.shadowDefinition??x.shadow.definition??16,ae=qa({polysWorldVerts:ge.map(se=>se.wv),lightDir:L,definition:Ie,isSelf:He,style:x.shadow.style,pointLights:$.map(se=>({position:re[se].position,index:se}))});De=ae.overrideSilhouette,Ue=ae.overridePointSilhouettes}we.push({id:Symbol(`caster-${I++}`),items:ge,selfShadowEdgeMap:He?P:void 0,edgeOwners:$e,casterPolygonCount:F.polygons.length,overrideSilhouette:De,overridePointSilhouettes:Ue})}let G=y?.store.getState().cameraState,Ne={rotX:G?.rotX??65,rotY:G?.rotY??45,meshRotation:e.rotation};return Ka({receiverPlanes:Se,receiverPolygons:u.value,receiverHasTexture:u.value.some(V=>V.texture!==void 0),casters:we,lightDir:L,runDirectional:ye,pointPasses:$.map(V=>({lightPos:re[V].position,index:V})),allPointLights:re,cameraRot:Ne,ambientLight:x?.ambientLight,directionalLight:x?.directionalLight,shadow:{color:x?.shadow?.color,opacity:x?.shadow?.opacity??.25,maxExtend:x?.shadow?.maxExtend}}).map(V=>Oe("svg",{key:`receiver-${V.faceIndex}`,class:"polycss-shadow polycss-shadow-svg polycss-shadow-receiver","data-poly-shadow-type":"receiver","data-poly-shadow-receiver-face":String(V.faceIndex),"data-poly-shadow-receiver-polys":JSON.stringify(V.memberPolyIndices),width:String(V.width),height:String(V.height),viewBox:`0 0 ${V.width} ${V.height}`,style:{position:"absolute",top:"0",left:"0",display:"block",overflow:"hidden",transformOrigin:"0 0",pointerEvents:"none",willChange:"transform",opacity:String(V.svgOpacity),transform:V.matrixCss}},[...V.baseFill&&V.baseD?[Oe("path",{d:V.baseD,fill:V.baseFill,"fill-rule":"nonzero"})]:[],...V.layers.map((F,ge)=>Oe("path",{key:ge,d:F.d,fill:F.fill,"fill-rule":"nonzero",...F.opacity!==1?{opacity:F.opacity.toFixed(4)}:{},...F.multiply?{style:{mixBlendMode:"multiply"}}:{}}))]))}),je=$a(u.value),Xe=-1;rt(u,x=>{let M=f?.value.shadow?.followAnimation??!1,S=x.length!==Xe;Xe>=0&&!M&&!S||(Xe=x.length,je.value=x)},{immediate:!0});let Le=Symbol();rt(()=>e.castShadow,(x,M,S)=>{let R=f?.value.shadowRegistry;R&&(x?R.register(Le,()=>{let L=je.value,ee=yo(L,{normalTolerance:.1,distanceTolerance:.5,overlapFraction:.95,preserveDoubleSidedBackfaces:!1}),K=new Set,re=N.value;for(let $=0;$<re.length;$++)re[$]&&!ee.has($)&&K.add($);return{polygons:L,position:e.position??[0,0,0],scale:e.scale,rotation:e.rotation,renderedPolygonIndices:K,shadowDefinition:e.shadowDefinition}}):R.unregister(Le),S(()=>R.unregister(Le)))},{immediate:!0});let Q=Symbol();rt(()=>e.receiveShadow,(x,M,S)=>{let R=f?.value.receiverRegistry;R&&(x?R.register(Q):R.unregister(Q),S(()=>R.unregister(Q)))},{immediate:!0}),tn(()=>{f?.value.shadowRegistry?.unregister(Le),f?.value.receiverRegistry?.unregister(Q)});let W=ot(null),Z={get element(){return W.value},get id(){return e.id},getPosition:()=>e.position,getRotation:()=>e.rotation,getScale:()=>e.scale,getPolygons:()=>c??u.value,setPolygons(x){let M=e.autoCenter?Po(x):x;c=M;let S=W.value,R=S&&p&&zt(S,M,{directionalLight:D.value,ambientLight:Y.value,textureLighting:C.value,strategies:E.value,seamBleed:v.value,colorFrame:++B.value,colorFreezeFrames:0});l.value=x.slice()},updatePolygon(x,M){let S=c??u.value,R=typeof x=="number"?x:S.indexOf(x);R<0||R>=S.length||(Object.assign(S[R],M),l.value=S.slice(),c=null)},rebakeAtlas:()=>{A.value=e.rotation},whenTexturesReady(){return ue.ready.value?Promise.resolve():new Promise(x=>{Re.push(x)})}};o(Z),Na(()=>{W.value&&co(W.value,Z)}),tn(()=>{W.value&&fo(W.value)});let be=ot(null);po(x=>{let M=W.value;if(be.value?.dispose(),be.value=null,!h.value||!M)return;let S=so({doc:M.ownerDocument,wrapper:M,polygons:u.value,directionalLight:D.value,ambientLight:Y.value});if(!S)return;let R=()=>{let ee=y?.store.getState().cameraState;return{rotX:ee?.rotX??65,rotY:ee?.rotY??45,meshRotation:e.rotation}};be.value=S,S.render(R());let L=y?.store.subscribe(()=>{S.syncCamera(R())});x(()=>{L?.(),S.dispose(),be.value===S&&(be.value=null)})});let xe=null;function Ge(x,M,S){let R=[];if(typeof document<"u"&&typeof document.elementsFromPoint=="function"){let $=document.elementsFromPoint(M,S),ye=new Set;for(let ve of $){let ce=mo(ve);ce&&!ye.has(ce)&&(ye.add(ce),R.push({object:ce}))}}let L=0,ee=0,K=y?.cameraElRef.value;if(K){let $=K.getBoundingClientRect();$.width>0&&$.height>0&&(L=(M-$.left)/$.width*2-1,ee=-((S-$.top)/$.height*2-1))}let re=0;return xe&&(re=Math.hypot(M-xe.x,S-xe.y)),{object:R[0]?.object??Z,eventObject:Z,intersections:R,pointer:{x:L,y:ee},delta:re,nativeEvent:x,stopPropagation:()=>x.stopPropagation()}}function oe(x,M,S,R){x&&x(Ge(M,S,R))}return()=>{let M={transform:Qa({position:e.position,scale:e.scale,rotation:e.rotation}),...b.value??void 0,...n.style,...Fe.value??void 0},S=Object.fromEntries(Object.entries(n).filter(([I])=>I!=="style"&&I!=="class")),R=`polycss-mesh${h.value?" polycss-voxel-mesh":""}${e.class?` ${e.class}`:""}`,L={};e.onClick&&(L.onClick=I=>{let P=I;oe(e.onClick,P,P.clientX,P.clientY)}),e.onContextMenu&&(L.onContextmenu=I=>{let P=I;oe(e.onContextMenu,P,P.clientX,P.clientY)}),e.onDoubleClick&&(L.onDblclick=I=>{let P=I;oe(e.onDoubleClick,P,P.clientX,P.clientY)}),e.onWheel&&(L.onWheel=I=>{let P=I;oe(e.onWheel,P,P.clientX,P.clientY)}),L.onPointerdown=I=>{let P=I;xe={x:P.clientX,y:P.clientY},oe(e.onPointerDown,P,P.clientX,P.clientY)},L.onPointerup=I=>{let P=I;oe(e.onPointerUp,P,P.clientX,P.clientY),xe=null},e.onPointerMove&&(L.onPointermove=I=>{let P=I;oe(e.onPointerMove,P,P.clientX,P.clientY)}),(e.onPointerOver||e.onPointerEnter)&&(L.onPointerenter=I=>{let P=I;oe(e.onPointerOver,P,P.clientX,P.clientY),oe(e.onPointerEnter,P,P.clientX,P.clientY)}),(e.onPointerOut||e.onPointerLeave)&&(L.onPointerleave=I=>{let P=I;oe(e.onPointerOut,P,P.clientX,P.clientY),oe(e.onPointerLeave,P,P.clientX,P.clientY)}),e.onPointerCancel&&(L.onPointercancel=I=>{let P=I;oe(e.onPointerCancel,P,P.clientX,P.clientY),xe=null});let ee=e.id?{"data-poly-mesh-id":e.id}:{};if(e.src&&a.loading.value&&a.polygons.value.length===0)return Oe("div",{ref:W,class:`polycss-mesh polycss-mesh-loading${e.class?` ${e.class}`:""}`,style:M,...ee,...L,...S},t.fallback?.()??[]);if(e.src&&a.error.value&&a.polygons.value.length===0)return Oe("div",{ref:W,class:`polycss-mesh polycss-mesh-error${e.class?` ${e.class}`:""}`,style:M,...ee,...L,...S},t.error?.({error:a.error.value})??[]);let K=u.value,re=t.polygon?K.map((I,P)=>Oe("template",{key:P},t.polygon?.({polygon:I,index:P}))):h.value?[]:ue.entries.value.map((I,P)=>{if(I)return Gt({entry:I,page:ue.pages.value[I.pageIndex],textureLighting:C.value,textureImageRendering:j.value,solidPaintDefaults:ne.value});let G=ue.plans.value[P],Ne=G?Xa(G,{imageRendering:j.value,backend:k.value,projection:U.value}):null;if(G&&Ne)return qt({plan:G,geometry:Ne});if(!G||G.texture)return null;if(qn(G))return Yt({entry:G,textureLighting:C.value,solidPaintDefaults:ne.value});if(Gn(G))return Ut({entry:G,textureLighting:C.value,solidPaintDefaults:ne.value});let ke=E.value?.disable?.includes("i")?null:Ya(G);return ke?Xt({entry:G,geometry:ke,textureLighting:C.value,solidPaintDefaults:ne.value}):Wt({entry:G,textureLighting:C.value,solidPaintDefaults:ne.value,forceBorderShape:!ue.useFullRectSolid.value})}),$=t.default?.()??[],ye=Be.value,ve=ye?[ye]:[],ce=Ae.value,Se=f?.value?.sceneEl??null,we=Se&&ce.length>0?[Oe(_a,{to:Se},ce)]:[];return Oe("div",{ref:W,class:R,style:M,...ee,...L,...S},[...ve,...we,...re,...$])}}});function yi(e,t){return t.position&&e.position.set(t.position[0],t.position[1],t.position[2]),t.rotation&&e.rotation.set(t.rotation[0],t.rotation[1],t.rotation[2]),typeof t.scale=="number"?e.scale.set(t.scale,t.scale,t.scale):t.scale&&e.scale.set(t.scale[0],t.scale[1],t.scale[2]),e}function gi(e){if(e.length===0)return e;let t=fi(e),n=[(t.min[0]+t.max[0])/2,(t.min[1]+t.max[1])/2,(t.min[2]+t.max[2])/2];if(n[0]===0&&n[1]===0&&n[2]===0)return e;let o=r=>[r[0]-n[0],r[1]-n[1],r[2]-n[2]];return e.map(r=>({...r,vertices:r.vertices.map(o),...r.textureTriangles?.length?{textureTriangles:r.textureTriangles.map(i=>({...i,vertices:i.vertices.map(o)}))}:null}))}var hi=ui({name:"PolyThreeMesh",inheritAttrs:!1,props:{id:{type:String,default:void 0},object:{type:Object,default:void 0},polygons:{type:Array,default:void 0},src:{type:String,default:void 0},mtl:{type:String,default:void 0},position:{type:Array,default:void 0},rotation:{type:Array,default:void 0},scale:{type:[Number,Array],default:void 0},autoCenter:{type:Boolean,default:!1},textureLighting:{type:String,default:void 0},textureQuality:{type:[Number,String],default:void 0},textureLeafSizing:{type:String,default:void 0},textureImageRendering:{type:String,default:void 0},textureBackend:{type:String,default:void 0},textureProjection:{type:String,default:void 0},castShadow:{type:Boolean,default:!1},receiveShadow:{type:Boolean,default:!1},merge:{type:Boolean,default:!0},meshResolution:{type:String,default:void 0},parseOptions:{type:Object,default:void 0},class:{type:String,default:void 0},style:{type:[Object,String],default:void 0}},setup(e,{attrs:t,slots:n}){let o=di(e.object??new mi),r=bt(()=>e.src??""),i=bt(()=>{if(!(!e.mtl&&!e.parseOptions&&e.meshResolution===void 0))return{...e.parseOptions??{},...e.mtl?{mtlUrl:e.mtl}:{},...e.meshResolution!==void 0?{meshResolution:e.meshResolution}:{}}}),a=ct(r,i.value),s=bt(()=>{let c=e.polygons??(e.src?a.polygons.value:[]);return e.autoCenter?gi(c):c}),l=bt(()=>pi(s.value,yi(e.object??o.value,{position:e.position,rotation:e.rotation,scale:e.scale})));return()=>e.src&&a.loading.value&&l.value.length===0&&n.fallback?n.fallback():e.src&&a.error.value&&n.error?n.error({error:a.error.value}):ci(bo,{...t,id:e.id,polygons:l.value,autoCenter:!1,textureLighting:e.textureLighting,textureQuality:e.textureQuality,textureLeafSizing:e.textureLeafSizing,textureImageRendering:e.textureImageRendering,textureBackend:e.textureBackend,textureProjection:e.textureProjection,castShadow:e.castShadow,receiveShadow:e.receiveShadow,merge:e.merge,meshResolution:e.meshResolution,class:e.class,style:e.style},n)}});export{ws as AmbientLight,Ds as DirectionalLight,Is as Euler,Vs as Object3D,Os as OrthographicCamera,Fs as PerspectiveCamera,Bs as PointLight,hi as PolyThreeMesh,No as PolyThreeOrthographicCamera,Oo as PolyThreePerspectiveCamera,ks as Vector3,Hs as polyToThreeDirection,zs as polyToThreePoint,_s as threeToPolyDirection,js as threeToPolyPoint,Ns as transformPointToPoly,$s as transformPolygonsToPoly};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@layoutit/polycss-vue",
3
- "version": "0.2.7",
3
+ "version": "0.2.8",
4
4
  "description": "Native Vue 3 components for CSS polygon mesh rendering with 60fps imperative updates.",
5
5
  "type": "module",
6
6
  "main": "dist/index.cjs",
@@ -36,13 +36,25 @@
36
36
  "types": "./dist/index.d.ts",
37
37
  "import": "./dist/index.js",
38
38
  "require": "./dist/index.cjs"
39
+ },
40
+ "./three": {
41
+ "types": "./dist/three.d.ts",
42
+ "import": "./dist/three.js",
43
+ "require": "./dist/three.cjs"
44
+ }
45
+ },
46
+ "typesVersions": {
47
+ "*": {
48
+ "three": [
49
+ "dist/three.d.ts"
50
+ ]
39
51
  }
40
52
  },
41
53
  "publishConfig": {
42
54
  "access": "public"
43
55
  },
44
56
  "dependencies": {
45
- "@layoutit/polycss-core": "^0.2.7"
57
+ "@layoutit/polycss-core": "^0.2.8"
46
58
  },
47
59
  "peerDependencies": {
48
60
  "vue": "^3.0.0"