Files

1 line
18 KiB
JavaScript

(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,741872,e=>{"use strict";let t=(e,t)=>{};e.s(["INVALID_GHOST_COLOR",0,0xef4444,"VALID_GHOST_COLOR",0,2278750,"applyGhost",0,function(e,i){let a=i?.invalid??!1,o=!a&&(i?.valid??!1),n=[];return e.traverse(e=>{if(e.raycast=t,!e.isMesh||"cutout"===e.name)return;let i=e.material,l=Array.isArray(i),r=e=>{if(!1===e.visible)return null;let t=e.clone();return t.transparent=!0,t.depthWrite=!1,a?(t.color?.setHex(0xef4444),t.emissive?.setHex(0xef4444),t.opacity=.4):o?(t.color?.setHex(2278750),t.emissive?.setHex(2278750),t.opacity=.45):t.opacity=.5,n.push(t),t};if(l){let t=i.map(r).filter(e=>null!==e);t.length>0&&(e.material=t)}else{let t=r(i);t&&(e.material=t)}}),()=>{for(let e of n)e.dispose()}}])},593887,e=>{"use strict";var t=e.i(69490);e.s(["useFacingPose",()=>t.default])},676962,902665,e=>{"use strict";e.i(958123);var t=e.i(73299),i=e.i(312580);e.i(818350);var a=e.i(926501);e.i(592888);var o=e.i(810741);let n=new(e.i(190072)).Vector3;function l(e){let t=o.useViewer.getState().selection.buildingId,a=t?i.sceneRegistry.nodes.get(t):void 0;return a&&(a.updateWorldMatrix(!0,!1),a.worldToLocal(e)),[e.x,e.y,e.z]}e.s(["getRoofWallOpeningCursorPose",0,function(e,a){let o=i.sceneRegistry.nodes.get(e.segment.id);if(!o)return null;o.updateWorldMatrix(!0,!1);let r=(0,t.roofFacePointToSegment)(e.segment,e.face.id,e.position);return n.set(r[0],r[1],r[2]),o.localToWorld(n),{position:l(n),rotationY:(a.rotation??0)+(e.segment.rotation??0)+e.face.yaw}},"resolveRoofWallOpeningTarget",0,function(e){let{event:i,width:o,height:n,ignoreId:l,vertical:r}=e,d=(0,a.resolveRoofWallHit)(i.node,i.position,i.normal,i.object);if(!d)return null;let s="bottom-locked"===r.kind?n/2:r.snap?.(d.v)??d.v,c=(0,t.clampRectToRoofWallFace)(d.face,d.u,s,o,n,"bottom-locked"===r.kind?{lockV:!0}:void 0);if(!c)return null;let u=!(0,a.hasRoofFaceChildOverlap)(d.segment,d.face.id,c.u,c.v,o,n,l);return{segment:d.segment,face:d.face,position:[c.u,c.v,0],valid:u}},"worldToSelectedBuildingLocal",0,l],676962);var r=e.i(866922),d=e.i(583602),s=e.i(697496),c=e.i(56226);e.s(["collectWallOpeningAlignmentCandidates",0,function(e,t){return(0,r.collectAlignmentAnchors)(e,t).filter(t=>{let i=e[t.nodeId]?.parentId;return!!i&&e[i]?.type==="wall"})},"resolveWallSlideAlignment",0,function(e){let{wallNode:t,rawLocalX:i,width:a,candidates:o,bypass:n,applySnap:l}=e,r=(0,s.snapToHalf)(i);if(n||0===o.length)return c.useAlignmentGuides.getState().clear(),r;let u=t.end[0]-t.start[0],p=t.end[1]-t.start[1],m=Math.sqrt(u*u+p*p);if(m<1e-6)return c.useAlignmentGuides.getState().clear(),r;let g=u/m,f=p/m,S=(0,d.resolveAlignment)({moving:[{nodeId:"__wall-opening-draft__",kind:"corner",x:t.start[0]+i*g,z:t.start[1]+i*f}],candidates:o,threshold:.08}),v=null,w=1/0;for(let e of S.guides){let a="x"===e.axis?g:f;if(.5>Math.abs(a))continue;let o="x"===e.axis?t.start[0]:t.start[1],n=(e.coord-o)/a,l=Math.abs(n-i);l<w&&(w=l,v=n)}if(null===v)return c.useAlignmentGuides.getState().clear(),r;let I=Math.max(a/2,Math.min(m-a/2,v)),h=(0,d.resolveAlignment)({moving:[{nodeId:"__wall-opening-draft__",kind:"corner",x:t.start[0]+I*g,z:t.start[1]+I*f}],candidates:o,threshold:.08});return 0===h.guides.length?c.useAlignmentGuides.getState().clear():c.useAlignmentGuides.getState().set(h.guides),!1===l?r:I}],902665)},287186,e=>{"use strict";var t=e.i(843476);e.i(818350);var i=e.i(204985);e.i(592888);var a=e.i(518603),o=e.i(271645),n=e.i(741872);e.s(["default",0,({node:e,invalid:l,valid:r})=>{let d=(0,o.useMemo)(()=>{let t=(0,a.buildWindowPreviewMesh)(e);return t.layers.set(i.EDITOR_LAYER),t},[e]);return(0,o.useEffect)(()=>(0,n.applyGhost)(d,{invalid:l,valid:r}),[d,l,r]),(0,o.useEffect)(()=>()=>{d.traverse(e=>{e.geometry?.dispose()})},[d]),(0,t.jsx)("primitive",{object:d})}])},537211,e=>{"use strict";var t=e.i(843476);e.i(818350);var i=e.i(204985),a=e.i(271645),o=e.i(190072),n=e.i(843662);let l=new n.LineBasicNodeMaterial({color:3718648,transparent:!0,opacity:.85,depthWrite:!1}),r=new n.LineBasicNodeMaterial({color:3718648,transparent:!0,opacity:.6,depthWrite:!1});e.s(["WindowFloorProjection",0,function({centerX:e,centerZ:n,centerY:d,floorY:s,width:c,rotationY:u}){let p=(0,a.useMemo)(()=>{let t=c/2,a=Math.cos(u),r=-Math.sin(u),d=new o.Float32BufferAttribute(new Float32Array(6),3),p=new o.BufferGeometry;p.setAttribute("position",d);let m=new o.LineSegments(p,l);return m.frustumCulled=!1,m.layers.set(i.EDITOR_LAYER),m.renderOrder=1e3,m.raycast=()=>{},d.setXYZ(0,e-a*t,s+.002,n-r*t),d.setXYZ(1,e+a*t,s+.002,n+r*t),d.needsUpdate=!0,m},[e,n,s,c,u]),m=(0,a.useMemo)(()=>{let t=Math.max(d-s,0),a=[],l=s;for(;l<s+t;){let i=Math.min(l+.12,s+t);a.push(e,l,n,e,i,n),l+=.2}let c=new o.Float32BufferAttribute(new Float32Array(a),3),u=new o.BufferGeometry;u.setAttribute("position",c);let p=new o.LineSegments(u,r);return p.frustumCulled=!1,p.layers.set(i.EDITOR_LAYER),p.renderOrder=1e3,p.raycast=()=>{},p},[e,n,d,s]);return(0,a.useEffect)(()=>()=>p.geometry.dispose(),[p]),(0,a.useEffect)(()=>()=>m.geometry.dispose(),[m]),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("primitive",{object:p}),(0,t.jsx)("primitive",{object:m})]})}])},459025,e=>{"use strict";var t=e.i(843476);e.i(958123);var i=e.i(787542),a=e.i(788398),o=e.i(312580),n=e.i(413295),l=e.i(339136),r=e.i(34731),d=e.i(705421);e.i(818350);var s=e.i(697496),c=e.i(73724),u=e.i(524590),p=e.i(204985),m=e.i(174499),g=e.i(410068),f=e.i(127541),S=e.i(56226),v=e.i(768970),w=e.i(593887);e.i(592888);var I=e.i(810741),h=e.i(271645),b=e.i(190072),y=e.i(843662),F=e.i(504317),N=e.i(676962),M=e.i(755055),T=e.i(902665),A=e.i(537211),L=e.i(287186),W=e.i(362098);let x=new y.LineBasicNodeMaterial({color:0xef4444,linewidth:3,depthTest:!1,depthWrite:!1});e.s(["default",0,({node:e})=>{let y=(0,h.useRef)(null),[P,E]=(0,h.useState)(null),R=P?.side??e.side,Y=(0,h.useMemo)(()=>({...e,side:R,position:[0,0,0],rotation:[0,0,0]}),[e,R]),O=(0,h.useCallback)(()=>{v.useEditor.getState().setMovingNode(null)},[]);(0,h.useEffect)(()=>{r.useScene.temporal.getState().pause();let t="object"==typeof e.metadata&&null!==e.metadata?e.metadata:{},p=!!t.isNew,h={position:[...e.position],rotation:[...e.rotation],side:e.side,parentId:e.parentId,wallId:e.wallId,roofSegmentId:e.roofSegmentId,roofFace:e.roofFace,metadata:e.metadata,visible:e.visible};p||r.useScene.getState().updateNode(e.id,{metadata:{...t,isTransient:!0}});let A=e.parentId,L=!1,P=!1,R=null,Y=-1/0,k=()=>{Y=performance.now()},G=!1,X=null,j=-1,C=e.side,_=null,D=e.parentId,V=null,H=null,B=e=>{e&&r.useScene.getState().dirtyNodes.add(e)},K=new Map,U=()=>I.useViewer.getState().selection.levelId,z=()=>{let e=U();return e?o.sceneRegistry.nodes.get(e)?.position.y??0:0},Z=e=>n.spatialGridManager.getSlabElevationForWall(e.node.parentId??"",e.node.start,e.node.end,e.node.curveOffset??0,e.node.thickness,e.node.supportSlabId),q=()=>{y.current&&(y.current.visible=!1),S.useAlignmentGuides.getState().clear(),(0,F.clearOpeningGuides3D)(),E(null),w.useFacingPose.getState().clear(),(0,c.clearPlacementSurface)()},J=(0,T.collectWallOpeningAlignmentCandidates)(r.useScene.getState().nodes,e.id),Q=t=>{if(!(0,s.isValidWallSideFace)(t.normal))return;if((0,a.isCurvedWall)(t.node))return void q();if(t.node.parentId!==U())return;let i=(0,s.getSideFromNormal)(t.normal),o=C??i,n=o!==i?Math.PI:0,l=(0,s.calculateItemRotation)(t.normal)+n,d=t.localPosition[0],c=t.localPosition[1];if(!_||_.wallId!==t.node.id){let e=t.node.id===D;e||(D=null),_={wallId:t.node.id,rawX:d,rawY:c,startX:e?h.position[0]:d,startY:e?h.position[1]:(0,s.snapToHalf)(c)}}let u=_.startX+(d-_.rawX),p=_.startY+(c-_.rawY),g=((0,m.isMagneticSnapActive)()?(0,F.resolveSillSnap)({wall:t.node,movingId:e.id,localX:u,localY:p,width:e.width,height:e.height,nodes:r.useScene.getState().nodes}):null)??(0,s.snapToHalf)(p),f=(0,T.resolveWallSlideAlignment)({wallNode:t.node,rawLocalX:u,width:e.width,candidates:J,applySnap:(0,m.isMagneticSnapActive)()}),{clampedX:S,clampedY:v}=(0,W.clampToWall)(t.node,f,g,e.width,e.height,r.useScene.getState().nodes),w=!(0,M.hasWallChildOverlap)(t.node.id,S,v,e.width,e.height,e.id);return{wallNode:t.node,wallId:t.node.id,side:o,itemRotation:l,clampedX:S,clampedY:v,valid:w,event:t}},$=t=>{if(((e,...t)=>{if(e===j)return;let i=(0,m.isGridSnapActive)()?v.useEditor.getState().gridSnapStep:.1,a=t.map(e=>Math.round(e/i)).join(",");a!==X&&(X=a,j=e,(0,f.triggerSFX)("sfx:grid-snap"))})(t.event.nativeEvent?.timeStamp??-1,t.clampedX),A!==t.wallId)r.useScene.getState().updateNode(e.id,{position:[t.clampedX,t.clampedY,0],rotation:[0,t.itemRotation,0],side:t.side,parentId:t.wallId,wallId:t.wallId,roofSegmentId:void 0,roofFace:void 0,visible:!1}),B(A),A=t.wallId;else{let i=o.sceneRegistry.nodes.get(e.id);i&&(i.position.set(t.clampedX,t.clampedY,0),i.rotation.set(0,t.itemRotation,0),i.updateMatrixWorld(!0))}l.useLiveTransforms.getState().set(e.id,{position:[t.clampedX,t.clampedY,0],rotation:t.itemRotation}),(e=>{if(!e)return;let t=globalThis.performance?.now?.()??Date.now();t-(K.get(e)??0)>60&&(K.set(e,t),B(e))})(t.wallId),y.current&&(y.current.visible=!1);let i=(0,M.resolveOpeningPlacement)({collides:!t.valid,forcePlace:G}),a=Math.atan2(t.wallNode.end[1]-t.wallNode.start[1],t.wallNode.end[0]-t.wallNode.start[0]),n=(0,W.wallLocalToWorld)(t.wallNode,t.clampedX,t.clampedY,z(),Z(t.event)),d=t.itemRotation-a;E({position:n,rotationY:d,tint:i.tint,floorY:z()+Z(t.event),side:t.side}),w.useFacingPose.getState().set({position:[n[0],z()+Z(t.event),n[2]],rotationY:d,depth:e.frameDepth??.07}),(0,c.publishPlacementSurface)(new b.Vector3(...n),new b.Vector3(Math.sin(d),0,Math.cos(d))),(0,F.publishOpeningGuidesForWallEvent)({wall:t.wallNode,movingId:e.id,centerS:t.clampedX,centerY:t.clampedY,width:e.width,height:e.height,includeVertical:!0,levelYOffset:z(),slabElevation:Z(t.event)})},ee=e=>{let t=Q(e);t?(k(),P=!1,V=t,H=null,$(t),e.stopPropagation()):eo()},et=e=>{if(!(0,s.isValidWallSideFace)(e.normal)||(0,a.isCurvedWall)(e.node)||e.node.parentId!==U())return void eo();let t=Q(e);t?(k(),P=!1,V=t,H=null,$(t),e.stopPropagation()):eo()},ei=t=>{let i;if(!L){if(L=!0,p){r.useScene.getState().deleteNode(e.id),r.useScene.temporal.getState().resume();let a=structuredClone(e);delete a.id,a.metadata=(0,g.stripPlacementMetadataFlags)(a.metadata);let o=d.WindowNode.parse({...a,position:[t.clampedX,t.clampedY,0],rotation:[0,t.itemRotation,0],side:t.side,wallId:t.wallId,parentId:t.wallId,roofSegmentId:void 0,roofFace:void 0,visible:!0});r.useScene.getState().createNode(o,t.wallId),i=o.id}else r.useScene.getState().updateNode(e.id,{position:h.position,rotation:h.rotation,side:h.side,parentId:h.parentId,wallId:h.wallId,roofSegmentId:h.roofSegmentId,roofFace:h.roofFace,metadata:h.metadata,visible:h.visible}),r.useScene.temporal.getState().resume(),r.useScene.getState().updateNode(e.id,{position:[t.clampedX,t.clampedY,0],rotation:[0,t.itemRotation,0],side:t.side,parentId:t.wallId,wallId:t.wallId,roofSegmentId:void 0,metadata:{},visible:!0}),h.parentId&&h.parentId!==t.wallId&&B(h.parentId),i=e.id;B(t.wallId),l.useLiveTransforms.getState().clear(e.id),r.useScene.temporal.getState().pause(),(0,f.triggerSFX)("sfx:structure-build"),q(),I.useViewer.getState().setSelection({selectedIds:[i]}),O()}},ea=e=>{if(L||!(0,s.isValidWallSideFace)(e.normal)||(0,a.isCurvedWall)(e.node)||e.node.parentId!==U())return;let t=V?.wallId===e.node.id?V:Q(e);!t||(t.valid||e.nativeEvent?.altKey===!0)&&(ei(t),e.stopPropagation())},eo=()=>{q(),l.useLiveTransforms.getState().clear(e.id),_=null,V=null,H=null},en=(t,i)=>{let a;P=!0,V=null,H=null,q(),l.useLiveTransforms.getState().clear(e.id);let o=U(),n=(a=e.position[1])>.1?a:W.DEFAULT_WINDOW_SILL_M+e.height/2,d="back"===C?Math.PI:0;A!==o?(A&&A!==o&&B(A),r.useScene.getState().updateNode(e.id,{position:[t,n,i],rotation:[0,d,0],side:C,parentId:o??void 0,wallId:void 0,roofSegmentId:void 0,roofFace:void 0,visible:!1}),A=o):r.useScene.getState().updateNode(e.id,{position:[t,n,i],rotation:[0,d,0],side:C,visible:!1}),E({position:[t,z()+n,i],rotationY:d,tint:"invalid",floorY:z(),side:C}),w.useFacingPose.getState().clear(),(0,c.clearPlacementSurface)()},el=e=>{if(L||I.useViewer.getState().cameraDragging||performance.now()-Y<64)return;let[t,,i]=e.localPosition;R=[t,i],en(t,i)},er=t=>(0,N.resolveRoofWallOpeningTarget)({event:t,width:e.width,height:e.height,ignoreId:e.id,vertical:{kind:"free",snap:s.snapToHalf}}),ed=t=>{var i,a,o,n;let d,s,u,p=er(t);p?(k(),P=!1,_=null,D=null,V=null,H=t,l.useLiveTransforms.getState().clear(e.id),(0,F.clearOpeningGuides3D)(),E(null),w.useFacingPose.getState().clear(),(0,c.clearPlacementSurface)(),(d=r.useScene.getState().nodes[e.id])&&!1===d.visible&&r.useScene.getState().updateNode(e.id,{visible:!0}),A!==p.segment.id?(r.useScene.getState().updateNode(e.id,{position:p.position,rotation:[0,0,0],side:"front",parentId:p.segment.id,wallId:void 0,roofSegmentId:p.segment.id,roofFace:p.face.id,visible:!0}),B(A),A=p.segment.id):r.useScene.getState().updateNode(e.id,{position:p.position,rotation:[0,0,0],roofFace:p.face.id}),i=t.node,(s=(0,N.getRoofWallOpeningCursorPose)(p,i))&&(a=s.position,o=s.rotationY,n=p.valid,(u=y.current)&&(u.visible=!0,u.position.set(...a),u.rotation.y=o,x.color.setHex(n?2278750:0xef4444))),t.stopPropagation()):ec()},es=t=>{let i;if(L)return;let a=er(t);if(!a||!a.valid&&t.nativeEvent?.altKey!==!0)return;L=!0;let o=a.segment.id;if(p){r.useScene.getState().deleteNode(e.id),r.useScene.temporal.getState().resume();let t=structuredClone(e);delete t.id,t.metadata=(0,g.stripPlacementMetadataFlags)(t.metadata);let n=d.WindowNode.parse({...t,position:a.position,rotation:[0,0,0],side:"front",wallId:void 0,roofSegmentId:o,roofFace:a.face.id,parentId:o,visible:!0});r.useScene.getState().createNode(n,o),i=n.id}else r.useScene.getState().updateNode(e.id,{position:h.position,rotation:h.rotation,side:h.side,parentId:h.parentId,wallId:h.wallId,roofSegmentId:h.roofSegmentId,roofFace:h.roofFace,metadata:h.metadata,visible:h.visible}),r.useScene.temporal.getState().resume(),r.useScene.getState().updateNode(e.id,{position:a.position,rotation:[0,0,0],side:"front",parentId:o,wallId:void 0,roofSegmentId:o,roofFace:a.face.id,metadata:{},visible:!0}),h.parentId&&h.parentId!==o&&B(h.parentId),i=e.id;B(o),l.useLiveTransforms.getState().clear(e.id),r.useScene.temporal.getState().pause(),(0,f.triggerSFX)("sfx:structure-build"),q(),I.useViewer.getState().setSelection({selectedIds:[i]}),O(),t.stopPropagation()},ec=()=>{q(),l.useLiveTransforms.getState().clear(e.id),_=null,V=null,H=null},eu=()=>{l.useLiveTransforms.getState().clear(e.id),p?(r.useScene.getState().deleteNode(e.id),A&&B(A)):(r.useScene.getState().updateNode(e.id,{position:h.position,rotation:h.rotation,side:h.side,parentId:h.parentId,wallId:h.wallId,roofSegmentId:h.roofSegmentId,roofFace:h.roofFace,metadata:h.metadata,visible:h.visible}),h.parentId&&B(h.parentId)),r.useScene.temporal.getState().resume(),q(),O()},ep=e=>{if((0,u.consumePlacementDragRelease)(e)){if(V&&!P&&(V.valid||e.altKey))return void ei(V);H&&es(H)}},em=t=>{if(L||"r"!==t.key&&"R"!==t.key)return;let i=t.target;if((!i||"INPUT"!==i.tagName&&"TEXTAREA"!==i.tagName&&!i.isContentEditable)&&!t.repeat)if(t.preventDefault(),C="front"===C?"back":"front",(0,f.triggerSFX)("sfx:item-rotate"),V){let e=Q(V.event);e&&(V=e,$(e))}else R?en(R[0],R[1]):r.useScene.getState().updateNode(e.id,{side:C,rotation:[0,"back"===C?Math.PI:0,0]})},eg=e=>{if("Alt"!==e.key)return;let t="keydown"===e.type;t!==G&&(G=t,!L&&V&&$(V))};if(i.emitter.on("wall:enter",ee),i.emitter.on("wall:move",et),i.emitter.on("wall:click",ea),i.emitter.on("wall:leave",eo),i.emitter.on("roof:enter",ed),i.emitter.on("roof:move",ed),i.emitter.on("roof:click",es),i.emitter.on("roof:leave",ec),i.emitter.on("grid:move",el),i.emitter.on("tool:cancel",eu),window.addEventListener("pointerup",ep),window.addEventListener("keydown",em),window.addEventListener("keydown",eg),window.addEventListener("keyup",eg),!p&&e.wallId){let t=r.useScene.getState().nodes[e.wallId];if(t?.type==="wall"){let i=Math.atan2(t.end[1]-t.start[1],t.end[0]-t.start[0]),a=e.rotation[1]-i,o=(0,W.wallLocalToWorld)(t,e.position[0],e.position[1],z(),n.spatialGridManager.getSlabElevationForWall(t.parentId??"",t.start,t.end,t.curveOffset??0,t.thickness,t.supportSlabId));(0,c.publishPlacementSurface)(new b.Vector3(...o),new b.Vector3(Math.sin(a),0,Math.cos(a))),k()}}return()=>{let t=r.useScene.getState().nodes[e.id],a=t?.metadata;a?.isTransient?p?(r.useScene.getState().deleteNode(e.id),A&&B(A)):(r.useScene.getState().updateNode(e.id,{position:h.position,rotation:h.rotation,side:h.side,parentId:h.parentId,wallId:h.wallId,roofSegmentId:h.roofSegmentId,roofFace:h.roofFace,metadata:h.metadata,visible:h.visible}),h.parentId&&B(h.parentId)):t&&!1===t.visible&&r.useScene.getState().updateNode(e.id,{visible:!0}),l.useLiveTransforms.getState().clear(e.id),S.useAlignmentGuides.getState().clear(),(0,F.clearOpeningGuides3D)(),w.useFacingPose.getState().clear(),(0,c.clearPlacementSurface)(),r.useScene.temporal.getState().resume(),i.emitter.off("wall:enter",ee),i.emitter.off("wall:move",et),i.emitter.off("wall:click",ea),i.emitter.off("wall:leave",eo),i.emitter.off("roof:enter",ed),i.emitter.off("roof:move",ed),i.emitter.off("roof:click",es),i.emitter.off("roof:leave",ec),i.emitter.off("grid:move",el),i.emitter.off("tool:cancel",eu),window.removeEventListener("pointerup",ep),window.removeEventListener("keydown",em),window.removeEventListener("keydown",eg),window.removeEventListener("keyup",eg)}},[e,O]);let k=(0,h.useMemo)(()=>{let t=new b.BoxGeometry(e.width,e.height,e.frameDepth??.07),i=new b.EdgesGeometry(t);return t.dispose(),i},[e]);return(0,h.useEffect)(()=>()=>k.dispose(),[k]),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("group",{ref:y,visible:!1,children:(0,t.jsx)("lineSegments",{geometry:k,layers:p.EDITOR_LAYER,material:x})}),P&&(0,t.jsx)("group",{position:P.position,"rotation-y":P.rotationY,children:(0,t.jsx)(L.default,{invalid:"invalid"===P.tint,node:Y,valid:"valid"===P.tint})}),P&&(0,t.jsx)(A.WindowFloorProjection,{centerX:P.position[0],centerY:P.position[1],centerZ:P.position[2],floorY:P.floorY,rotationY:P.rotationY,width:e.width})]})}])}]);