@vizbl/shopify-room-viewer 0.0.21 → 0.0.22
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.
|
@@ -7592,7 +7592,7 @@ ${ey}
|
|
|
7592
7592
|
if (_neurodynRoomCoverage <= 0.001) discard;
|
|
7593
7593
|
|
|
7594
7594
|
${r?`
|
|
7595
|
-
float _neurodynRoomGain = texture2D(uRoomLighting, vec2(_neurodynRoomUv.x, 1.0 - _neurodynRoomUv.y)).r * (255.0 / 128.0);
|
|
7595
|
+
float _neurodynRoomGain = min(texture2D(uRoomLighting, vec2(_neurodynRoomUv.x, 1.0 - _neurodynRoomUv.y)).r * (255.0 / 128.0), ${t.maxRoomGain.toFixed(3)});
|
|
7596
7596
|
outgoingLight = (outgoingLight - ${n}) * _neurodynRoomGain + ${n};
|
|
7597
7597
|
`:""}
|
|
7598
7598
|
diffuseColor.a *= smoothstep(0.0, 0.6, _neurodynRoomCoverage);
|
|
@@ -7637,7 +7637,7 @@ ${ey}
|
|
|
7637
7637
|
#endif
|
|
7638
7638
|
`);if(a.includes("#include <output_fragment>")){e.fragmentShader=a.replace("#include <output_fragment>",`${i}
|
|
7639
7639
|
#include <output_fragment>`);return}e.fragmentShader=a.replace("#include <opaque_fragment>",`${i}
|
|
7640
|
-
#include <opaque_fragment>`)}(i,t,r)},e.customProgramCacheKey=()=>`${i()}|neurodyn-room-scene-v4|shading:${r}`,e.needsUpdate=!0,()=>{e.onBeforeCompile=n,e.customProgramCacheKey=i,e.side=a,e.transparent=s,e.alphaToCoverage=o,e.needsUpdate=!0}}function ZG(e){let t=new Set;return e.traverse(e=>{if(!e.isMesh||!e.material)return;if(Array.isArray(e.material)){e.material=e.material.map(e=>{let r=e.clone();return t.add(r),r});return}let r=e.material.clone();t.add(r),e.material=r}),Array.from(t)}function ZH(e,t,r){let n=e.clone().sub(t).applyQuaternion(r);return Math.atan2(n.y,n.x)}let ZV={excludeFromCapture:!0};function ZW({resourceBounds:e}){let{resourceRef:t,rotation:r,setIsDragging:n,setRotation:i}=W6(),a=BT("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABAAAAAQACAYAAAB/HSuDAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDkuMS1jMDAyIDc5LmI3YzY0Y2NmOSwgMjAyNC8wNy8xNi0xMjozOTowNCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDI2LjAgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QjYxMUY4MDQ3RTJDMTFGMTlCMkNBN0Y1RDJDNzNDQzYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QjYxMUY4MDU3RTJDMTFGMTlCMkNBN0Y1RDJDNzNDQzYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpCNjExRjgwMjdFMkMxMUYxOUIyQ0E3RjVEMkM3M0NDNiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpCNjExRjgwMzdFMkMxMUYxOUIyQ0E3RjVEMkM3M0NDNiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PiAtRloAAIYkSURBVHja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"),s=(0,rx.useRef)(null),o=(0,rx.useMemo)(()=>{let t,r;return r=1.15*Math.max((t=e.getSize(new g0)).x,t.y),{positionZ:e.min.z-.001*r,side:r}},[e]);(0,rx.useLayoutEffect)(()=>{a.colorSpace="srgb",a.needsUpdate=!0},[a]);let l=e=>{if(!s.current)return;e.stopPropagation();let{pointerId:t,pointerTarget:r}=s.current;r.hasPointerCapture(t)&&r.releasePointerCapture(t),s.current=null,n(!1)};return o.side<=0?null:(0,rE.jsxs)("mesh",{"position-z":o.positionZ,userData:ZV,onPointerCancel:l,onPointerDown:e=>{var i;let a=t.current;if(!a||(i=e.object,e.intersections.map(e=>e.object)[0]!==i))return;e.stopPropagation(),e.nativeEvent.stopPropagation();let o=e.target;o.setPointerCapture(e.pointerId),a.updateWorldMatrix(!0,!1);let l=a.getWorldQuaternion(new g$),c=a.getWorldPosition(new g0),u=new g0(0,0,1).applyQuaternion(l);s.current={center:c,initialPoint:e.point.clone(),initialRotation:r,plane:new b2().setFromNormalAndCoplanarPoint(u,c),pointerId:e.pointerId,pointerTarget:o,surfaceQuaternion:l},n(!0)},onPointerMove:e=>{let t=s.current;if(!t)return;e.stopPropagation();let r=e.ray.intersectPlane(t.plane,new g0);r&&i(function({center:e,currentPoint:t,initialPoint:r,initialRotation:n,surfaceQuaternion:i}){let a=i.clone().invert(),s=ZH(r,e,a),o=ZH(t,e,a);return((n+gX.radToDeg(o-s)+180)%360+360)%360-180}({...t,currentPoint:r}))},onPointerUp:l,children:[(0,rE.jsx)("planeGeometry",{args:[o.side,o.side]}),(0,rE.jsx)("meshBasicMaterial",{map:a,transparent:!0,depthWrite:!1,side:2,toneMapped:!1})]})}let Zq=Math.PI/2;function ZK(e){let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId)}function ZJ({glbUrl:e,position:t,quaternion:r,materialPatch:n}){let{type:i}=W9(),{resourceRef:a,rotation:s,setIsDragging:o}=W6(),l=kx(e),{sceneInstance:c,materials:u,resourceBounds:d}=(0,rx.useMemo)(()=>{let e=l.scene.clone(!0),t=ZG(e),r=new vi().setFromObject(e).applyMatrix4(new mf().makeRotationX(Zq));return{sceneInstance:e,materials:t,resourceBounds:r}},[l]),h=(0,rx.useMemo)(()=>gX.degToRad(s),[s]);return(0,rx.useLayoutEffect)(()=>{let e=u.map(e=>Zj(e,n));return()=>{e.forEach(e=>e())}},[u,n]),(0,rE.jsx)("group",{ref:a,position:t,quaternion:r,onPointerDown:e=>{"rotate-on-floor"!==Wv[i].manipulation&&(e.nativeEvent.stopPropagation(),e.target.setPointerCapture(e.pointerId),o(!0))},onPointerUp:e=>{ZK(e),o(!1)},onPointerCancel:e=>{ZK(e),o(!1)},children:(0,rE.jsxs)("group",{"rotation-z":h,children:["drag-with-rotation-handle"===Wv[i].manipulation?(0,rE.jsx)(ZW,{resourceBounds:d}):null,(0,rE.jsx)("group",{"rotation-x":Zq,children:(0,rE.jsx)("primitive",{object:c})})]})})}function ZY(e,t){(0,rx.useLayoutEffect)(()=>{let r=e.current;if(r)return Zj(r,t)},[e,t])}let ZX=[1,1,1];function ZZ({node:e,position:t,scale:r=ZX,uvScale:n,materialPatch:i}){let a=(0,rx.useRef)(null);return(0,rx.useEffect)(()=>{if(!a.current||void 0===n)return;let t=a.current.geometry.attributes.uv,r=e.geometry.attributes.uv.array;for(let e=0;e<t.count;e++){let i=r[2*e],a=r[2*e+1];t.setXY(e,i*n,a)}t.needsUpdate=!0},[n,e.geometry]),(0,rx.useLayoutEffect)(()=>{let e=a.current?.material;if(!e)return;let t=(Array.isArray(e)?e:[e]).map(e=>Zj(e,i));return()=>{t.forEach(e=>e())}},[i,e]),(0,rE.jsx)(TS,{ref:a,object:e,position:t,scale:r})}function Z$({width:e,height:t,materialPatch:r}){let{material:n}=W8(),{nodes:i}=kx(n?.native?.glbUrl),a=(0,rx.useMemo)(()=>{let e=new g0,t={};["vizbl0","vizbl1","vizbl2","vizbl3","vizbl4","vizbl5","vizbl6","vizbl7"].forEach(r=>{let n=i[r];if(!n?.geometry)return;let a=n.clone();a.geometry=n.geometry.clone(),Array.isArray(n.material)?a.material=n.material.map(e=>e.clone()):n.material&&(a.material=n.material.clone()),a.updateMatrixWorld(!0),a.geometry.applyMatrix4(a.matrixWorld),a.position.set(0,0,0),a.rotation.set(0,0,0),a.scale.set(1,1,1),a.updateMatrixWorld(!0),a.geometry.computeBoundingBox(),a.geometry.boundingBox&&(a.geometry.boundingBox.getCenter(e),a.geometry.translate(-e.x,-e.y,-e.z)),a.geometry.computeBoundingBox(),t[r]=a});let r=t.vizbl0;if(!r?.geometry)throw Error("Corner mesh not found");let n=r.geometry.boundingBox,a=n.max.x-n.min.x,s=n.max.y-n.min.y,o={top:0,bottom:0,left:0,right:0},l={top:0,bottom:0,left:0,right:0},c=t.vizbl1;if(c?.geometry){let e=c.geometry.boundingBox;o.top=e.max.x-e.min.x,l.top=e.max.y-e.min.y}let u=t.vizbl3;if(u?.geometry){let e=u.geometry.boundingBox;o.right=e.max.y-e.min.y,l.right=e.max.x-e.min.x}let d=t.vizbl5;if(d?.geometry){let e=d.geometry.boundingBox;o.bottom=e.max.x-e.min.x,l.bottom=e.max.y-e.min.y}let h=t.vizbl7;if(h?.geometry){let e=h.geometry.boundingBox;o.left=e.max.y-e.min.y,l.left=e.max.x-e.min.x}return{cornerSize:{width:a,height:s},barLengths:o,barThickness:l,normalizedNodes:t}},[i]),s=e-2*a.cornerSize.width+.002,o=t-2*a.cornerSize.height+.002,l=s/a.barLengths.top,c=s/a.barLengths.bottom,u=o/a.barLengths.left,d=o/a.barLengths.right;return(0,rE.jsxs)("group",{children:[(0,rE.jsx)(ZZ,{node:a.normalizedNodes.vizbl0,position:[-e/2+a.cornerSize.width/2-.001,t/2-a.cornerSize.height/2+.001,0],materialPatch:r}),(0,rE.jsx)(ZZ,{node:a.normalizedNodes.vizbl1,position:[0,t/2-a.barThickness.top/2+.001,0],scale:[l,1,1],uvScale:l,materialPatch:r}),(0,rE.jsx)(ZZ,{node:a.normalizedNodes.vizbl2,position:[e/2-a.cornerSize.width/2+.001,t/2-a.cornerSize.height/2+.001,0],materialPatch:r}),(0,rE.jsx)(ZZ,{node:a.normalizedNodes.vizbl3,position:[e/2-a.barThickness.right/2+.001,0,0],scale:[1,d,1],uvScale:d,materialPatch:r}),(0,rE.jsx)(ZZ,{node:a.normalizedNodes.vizbl4,position:[e/2-a.cornerSize.width/2+.001,-t/2+a.cornerSize.height/2-.001,0],materialPatch:r}),(0,rE.jsx)(ZZ,{node:a.normalizedNodes.vizbl5,position:[0,-t/2+a.barThickness.bottom/2-.001,0],scale:[c,1,1],uvScale:c,materialPatch:r}),(0,rE.jsx)(ZZ,{node:a.normalizedNodes.vizbl6,position:[-e/2+a.cornerSize.width/2-.001,-t/2+a.cornerSize.height/2-.001,0],materialPatch:r}),(0,rE.jsx)(ZZ,{node:a.normalizedNodes.vizbl7,position:[-e/2+a.barThickness.left/2-.001,0,0],scale:[1,u,1],uvScale:u,materialPatch:r})]})}function Z0({width:e,height:t,position:r,quaternion:n,materialPatch:i}){let a=(0,rx.useRef)(null);return ZY(a,i),(0,rE.jsxs)("mesh",{position:r,quaternion:n,children:[(0,rE.jsx)("planeGeometry",{args:[e,t]}),(0,rE.jsx)("meshStandardMaterial",{ref:a,color:"white"})]})}function Z1({src:e,position:t,quaternion:r,materialPatch:n}){let{width:i,height:a}=W9(),{material:s}=W8(),{frameWidth:o,matting:l}=W7(),{angle:c,rotation:u,resourceRef:d,setIsDragging:h}=W6(),p=I0(xH,e),f=(0,rx.useRef)(null),A=(0,rx.useMemo)(()=>gX.degToRad(c),[c]),g=(0,rx.useMemo)(()=>gX.degToRad(u),[u]);ZY(f,n);let m=i+2*l,v=a+2*l,b=l>0?m:i,y=l>0?v:a;return(0,rE.jsx)("group",{ref:d,position:t,quaternion:r,onPointerDown:()=>h(!0),onPointerUp:()=>h(!1),onPointerLeave:()=>h(!1),children:(0,rE.jsxs)("group",{rotation:[0,g,A],children:[s?.native?.glbUrl&&o>0&&(0,rE.jsx)(Z$,{width:b,height:y,materialPatch:n}),l>0&&(0,rE.jsx)(Z0,{width:m,height:v,position:[0,0,.01],materialPatch:n}),(0,rE.jsxs)("mesh",{position:[0,0,.02],children:[(0,rE.jsx)("planeGeometry",{args:[i,a]}),(0,rE.jsx)("meshStandardMaterial",{ref:f,map:p})]})]})})}function Z2({model:e,patch:t}){let r=(0,rx.useMemo)(()=>{let t=new mc(1,1,{samples:4,depthBuffer:!1}),r=new bA({color:"white",side:2,toneMapped:!1,depthTest:!1,depthWrite:!1}),n=e.clone(!0);n.matrixAutoUpdate=!1;let i=new m$;i.add(n),i.overrideMaterial=r;let a=new gZ,s={value:2},o=new bA({map:t.texture,transparent:!0,depthTest:!1,depthWrite:!1,toneMapped:!1,fog:!1});return o.onBeforeCompile=e=>{e.uniforms.uMaskResolution={value:a},e.uniforms.uOutlineRadius=s,e.vertexShader="void main() { gl_Position = vec4(position.xy, 0.0, 1.0); }",e.fragmentShader=e.fragmentShader.replace("#include <common>",`#include <common>
|
|
7640
|
+
#include <opaque_fragment>`)}(i,t,r)},e.customProgramCacheKey=()=>`${i()}|neurodyn-room-scene-v5|shading:${r}|maxRoomGain:${t.maxRoomGain}`,e.needsUpdate=!0,()=>{e.onBeforeCompile=n,e.customProgramCacheKey=i,e.side=a,e.transparent=s,e.alphaToCoverage=o,e.needsUpdate=!0}}function ZG(e){let t=new Set;return e.traverse(e=>{if(!e.isMesh||!e.material)return;if(Array.isArray(e.material)){e.material=e.material.map(e=>{let r=e.clone();return t.add(r),r});return}let r=e.material.clone();t.add(r),e.material=r}),Array.from(t)}function ZH(e,t,r){let n=e.clone().sub(t).applyQuaternion(r);return Math.atan2(n.y,n.x)}let ZV={excludeFromCapture:!0};function ZW({resourceBounds:e}){let{resourceRef:t,rotation:r,setIsDragging:n,setRotation:i}=W6(),a=BT("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABAAAAAQACAYAAAB/HSuDAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDkuMS1jMDAyIDc5LmI3YzY0Y2NmOSwgMjAyNC8wNy8xNi0xMjozOTowNCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDI2LjAgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QjYxMUY4MDQ3RTJDMTFGMTlCMkNBN0Y1RDJDNzNDQzYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QjYxMUY4MDU3RTJDMTFGMTlCMkNBN0Y1RDJDNzNDQzYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpCNjExRjgwMjdFMkMxMUYxOUIyQ0E3RjVEMkM3M0NDNiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpCNjExRjgwMzdFMkMxMUYxOUIyQ0E3RjVEMkM3M0NDNiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PiAtRloAAIYkSURBVHja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"),s=(0,rx.useRef)(null),o=(0,rx.useMemo)(()=>{let t,r;return r=1.15*Math.max((t=e.getSize(new g0)).x,t.y),{positionZ:e.min.z-.001*r,side:r}},[e]);(0,rx.useLayoutEffect)(()=>{a.colorSpace="srgb",a.needsUpdate=!0},[a]);let l=e=>{if(!s.current)return;e.stopPropagation();let{pointerId:t,pointerTarget:r}=s.current;r.hasPointerCapture(t)&&r.releasePointerCapture(t),s.current=null,n(!1)};return o.side<=0?null:(0,rE.jsxs)("mesh",{"position-z":o.positionZ,userData:ZV,onPointerCancel:l,onPointerDown:e=>{var i;let a=t.current;if(!a||(i=e.object,e.intersections.map(e=>e.object)[0]!==i))return;e.stopPropagation(),e.nativeEvent.stopPropagation();let o=e.target;o.setPointerCapture(e.pointerId),a.updateWorldMatrix(!0,!1);let l=a.getWorldQuaternion(new g$),c=a.getWorldPosition(new g0),u=new g0(0,0,1).applyQuaternion(l);s.current={center:c,initialPoint:e.point.clone(),initialRotation:r,plane:new b2().setFromNormalAndCoplanarPoint(u,c),pointerId:e.pointerId,pointerTarget:o,surfaceQuaternion:l},n(!0)},onPointerMove:e=>{let t=s.current;if(!t)return;e.stopPropagation();let r=e.ray.intersectPlane(t.plane,new g0);r&&i(function({center:e,currentPoint:t,initialPoint:r,initialRotation:n,surfaceQuaternion:i}){let a=i.clone().invert(),s=ZH(r,e,a),o=ZH(t,e,a);return((n+gX.radToDeg(o-s)+180)%360+360)%360-180}({...t,currentPoint:r}))},onPointerUp:l,children:[(0,rE.jsx)("planeGeometry",{args:[o.side,o.side]}),(0,rE.jsx)("meshBasicMaterial",{map:a,transparent:!0,depthWrite:!1,side:2,toneMapped:!1})]})}let Zq=Math.PI/2;function ZK(e){let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId)}function ZJ({glbUrl:e,position:t,quaternion:r,materialPatch:n}){let{type:i}=W9(),{resourceRef:a,rotation:s,setIsDragging:o}=W6(),l=kx(e),{sceneInstance:c,materials:u,resourceBounds:d}=(0,rx.useMemo)(()=>{let e=l.scene.clone(!0),t=ZG(e),r=new vi().setFromObject(e).applyMatrix4(new mf().makeRotationX(Zq));return{sceneInstance:e,materials:t,resourceBounds:r}},[l]),h=(0,rx.useMemo)(()=>gX.degToRad(s),[s]);return(0,rx.useLayoutEffect)(()=>{let e=u.map(e=>Zj(e,n));return()=>{e.forEach(e=>e())}},[u,n]),(0,rE.jsx)("group",{ref:a,position:t,quaternion:r,onPointerDown:e=>{"rotate-on-floor"!==Wv[i].manipulation&&(e.nativeEvent.stopPropagation(),e.target.setPointerCapture(e.pointerId),o(!0))},onPointerUp:e=>{ZK(e),o(!1)},onPointerCancel:e=>{ZK(e),o(!1)},children:(0,rE.jsxs)("group",{"rotation-z":h,children:["drag-with-rotation-handle"===Wv[i].manipulation?(0,rE.jsx)(ZW,{resourceBounds:d}):null,(0,rE.jsx)("group",{"rotation-x":Zq,children:(0,rE.jsx)("primitive",{object:c})})]})})}function ZY(e,t){(0,rx.useLayoutEffect)(()=>{let r=e.current;if(r)return Zj(r,t)},[e,t])}let ZX=[1,1,1];function ZZ({node:e,position:t,scale:r=ZX,uvScale:n,materialPatch:i}){let a=(0,rx.useRef)(null);return(0,rx.useEffect)(()=>{if(!a.current||void 0===n)return;let t=a.current.geometry.attributes.uv,r=e.geometry.attributes.uv.array;for(let e=0;e<t.count;e++){let i=r[2*e],a=r[2*e+1];t.setXY(e,i*n,a)}t.needsUpdate=!0},[n,e.geometry]),(0,rx.useLayoutEffect)(()=>{let e=a.current?.material;if(!e)return;let t=(Array.isArray(e)?e:[e]).map(e=>Zj(e,i));return()=>{t.forEach(e=>e())}},[i,e]),(0,rE.jsx)(TS,{ref:a,object:e,position:t,scale:r})}function Z$({width:e,height:t,materialPatch:r}){let{material:n}=W8(),{nodes:i}=kx(n?.native?.glbUrl),a=(0,rx.useMemo)(()=>{let e=new g0,t={};["vizbl0","vizbl1","vizbl2","vizbl3","vizbl4","vizbl5","vizbl6","vizbl7"].forEach(r=>{let n=i[r];if(!n?.geometry)return;let a=n.clone();a.geometry=n.geometry.clone(),Array.isArray(n.material)?a.material=n.material.map(e=>e.clone()):n.material&&(a.material=n.material.clone()),a.updateMatrixWorld(!0),a.geometry.applyMatrix4(a.matrixWorld),a.position.set(0,0,0),a.rotation.set(0,0,0),a.scale.set(1,1,1),a.updateMatrixWorld(!0),a.geometry.computeBoundingBox(),a.geometry.boundingBox&&(a.geometry.boundingBox.getCenter(e),a.geometry.translate(-e.x,-e.y,-e.z)),a.geometry.computeBoundingBox(),t[r]=a});let r=t.vizbl0;if(!r?.geometry)throw Error("Corner mesh not found");let n=r.geometry.boundingBox,a=n.max.x-n.min.x,s=n.max.y-n.min.y,o={top:0,bottom:0,left:0,right:0},l={top:0,bottom:0,left:0,right:0},c=t.vizbl1;if(c?.geometry){let e=c.geometry.boundingBox;o.top=e.max.x-e.min.x,l.top=e.max.y-e.min.y}let u=t.vizbl3;if(u?.geometry){let e=u.geometry.boundingBox;o.right=e.max.y-e.min.y,l.right=e.max.x-e.min.x}let d=t.vizbl5;if(d?.geometry){let e=d.geometry.boundingBox;o.bottom=e.max.x-e.min.x,l.bottom=e.max.y-e.min.y}let h=t.vizbl7;if(h?.geometry){let e=h.geometry.boundingBox;o.left=e.max.y-e.min.y,l.left=e.max.x-e.min.x}return{cornerSize:{width:a,height:s},barLengths:o,barThickness:l,normalizedNodes:t}},[i]),s=e-2*a.cornerSize.width+.002,o=t-2*a.cornerSize.height+.002,l=s/a.barLengths.top,c=s/a.barLengths.bottom,u=o/a.barLengths.left,d=o/a.barLengths.right;return(0,rE.jsxs)("group",{children:[(0,rE.jsx)(ZZ,{node:a.normalizedNodes.vizbl0,position:[-e/2+a.cornerSize.width/2-.001,t/2-a.cornerSize.height/2+.001,0],materialPatch:r}),(0,rE.jsx)(ZZ,{node:a.normalizedNodes.vizbl1,position:[0,t/2-a.barThickness.top/2+.001,0],scale:[l,1,1],uvScale:l,materialPatch:r}),(0,rE.jsx)(ZZ,{node:a.normalizedNodes.vizbl2,position:[e/2-a.cornerSize.width/2+.001,t/2-a.cornerSize.height/2+.001,0],materialPatch:r}),(0,rE.jsx)(ZZ,{node:a.normalizedNodes.vizbl3,position:[e/2-a.barThickness.right/2+.001,0,0],scale:[1,d,1],uvScale:d,materialPatch:r}),(0,rE.jsx)(ZZ,{node:a.normalizedNodes.vizbl4,position:[e/2-a.cornerSize.width/2+.001,-t/2+a.cornerSize.height/2-.001,0],materialPatch:r}),(0,rE.jsx)(ZZ,{node:a.normalizedNodes.vizbl5,position:[0,-t/2+a.barThickness.bottom/2-.001,0],scale:[c,1,1],uvScale:c,materialPatch:r}),(0,rE.jsx)(ZZ,{node:a.normalizedNodes.vizbl6,position:[-e/2+a.cornerSize.width/2-.001,-t/2+a.cornerSize.height/2-.001,0],materialPatch:r}),(0,rE.jsx)(ZZ,{node:a.normalizedNodes.vizbl7,position:[-e/2+a.barThickness.left/2-.001,0,0],scale:[1,u,1],uvScale:u,materialPatch:r})]})}function Z0({width:e,height:t,position:r,quaternion:n,materialPatch:i}){let a=(0,rx.useRef)(null);return ZY(a,i),(0,rE.jsxs)("mesh",{position:r,quaternion:n,children:[(0,rE.jsx)("planeGeometry",{args:[e,t]}),(0,rE.jsx)("meshStandardMaterial",{ref:a,color:"white"})]})}function Z1({src:e,position:t,quaternion:r,materialPatch:n}){let{width:i,height:a}=W9(),{material:s}=W8(),{frameWidth:o,matting:l}=W7(),{angle:c,rotation:u,resourceRef:d,setIsDragging:h}=W6(),p=I0(xH,e),f=(0,rx.useRef)(null),A=(0,rx.useMemo)(()=>gX.degToRad(c),[c]),g=(0,rx.useMemo)(()=>gX.degToRad(u),[u]);ZY(f,n);let m=i+2*l,v=a+2*l,b=l>0?m:i,y=l>0?v:a;return(0,rE.jsx)("group",{ref:d,position:t,quaternion:r,onPointerDown:()=>h(!0),onPointerUp:()=>h(!1),onPointerLeave:()=>h(!1),children:(0,rE.jsxs)("group",{rotation:[0,g,A],children:[s?.native?.glbUrl&&o>0&&(0,rE.jsx)(Z$,{width:b,height:y,materialPatch:n}),l>0&&(0,rE.jsx)(Z0,{width:m,height:v,position:[0,0,.01],materialPatch:n}),(0,rE.jsxs)("mesh",{position:[0,0,.02],children:[(0,rE.jsx)("planeGeometry",{args:[i,a]}),(0,rE.jsx)("meshStandardMaterial",{ref:f,map:p})]})]})})}function Z2({model:e,patch:t}){let r=(0,rx.useMemo)(()=>{let t=new mc(1,1,{samples:4,depthBuffer:!1}),r=new bA({color:"white",side:2,toneMapped:!1,depthTest:!1,depthWrite:!1}),n=e.clone(!0);n.matrixAutoUpdate=!1;let i=new m$;i.add(n),i.overrideMaterial=r;let a=new gZ,s={value:2},o=new bA({map:t.texture,transparent:!0,depthTest:!1,depthWrite:!1,toneMapped:!1,fog:!1});return o.onBeforeCompile=e=>{e.uniforms.uMaskResolution={value:a},e.uniforms.uOutlineRadius=s,e.vertexShader="void main() { gl_Position = vec4(position.xy, 0.0, 1.0); }",e.fragmentShader=e.fragmentShader.replace("#include <common>",`#include <common>
|
|
7641
7641
|
uniform vec2 uMaskResolution;
|
|
7642
7642
|
uniform float uOutlineRadius;
|
|
7643
7643
|
`).replace("#include <map_fragment>",`
|
|
@@ -7652,10 +7652,10 @@ ${ey}
|
|
|
7652
7652
|
}
|
|
7653
7653
|
if (coverage < 0.01) discard;
|
|
7654
7654
|
diffuseColor = vec4(1.0, 1.0, 1.0, coverage);
|
|
7655
|
-
`)},o.customProgramCacheKey=()=>"wall-panel-exterior-outline-v1",{mask:t,maskMaterial:r,maskModel:n,maskScene:i,material:o,resolution:a,radius:s,clearColor:new mJ}},[e]);return(0,rx.useLayoutEffect)(()=>Zj(r.material,t,{shading:!1}),[r,t]),(0,rx.useLayoutEffect)(()=>()=>{r.mask.dispose(),r.maskMaterial.dispose(),r.material.dispose()},[r]),(0,rE.jsx)("mesh",{material:r.material,frustumCulled:!1,renderOrder:3,raycast:()=>{},onBeforeRender:(t,n,i)=>{let a=t.getRenderTarget(),s=t.getActiveCubeFace(),o=t.getActiveMipmapLevel(),l=t.autoClear,c=t.getClearAlpha();t.getClearColor(r.clearColor),t.getDrawingBufferSize(r.resolution);let{x:u,y:d}=r.resolution;(r.mask.width!==u||r.mask.height!==d)&&r.mask.setSize(u,d),r.radius.value=2*t.getPixelRatio(),e.updateWorldMatrix(!0,!0),r.maskModel.matrix.copy(e.matrixWorld);try{t.autoClear=!0,t.setClearColor(0,0),t.setRenderTarget(r.mask),t.render(r.maskScene,i)}finally{t.setRenderTarget(a,s,o),t.setClearColor(r.clearColor,c),t.autoClear=l}},children:(0,rE.jsx)("planeGeometry",{args:[2,2]})})}function Z3({source:e,patch:t,isPointVisible:r,outlined:n}){let{model:i,materials:a}=(0,rx.useMemo)(()=>{let t=e.clone(!0),r=ZG(t);return{model:t,materials:r}},[e]);return(0,rx.useLayoutEffect)(()=>{let e=a.map(e=>Zj(e,t));return i.traverse(e=>{e instanceof bI&&(e.raycast=function(e,t){let n=[];bI.prototype.raycast.call(this,e,n),t.push(...n.filter(e=>!r||r(e.point)))})}),()=>e.forEach(e=>e())},[r,a,i,t]),(0,rx.useLayoutEffect)(()=>()=>a.forEach(e=>e.dispose()),[a]),(0,rE.jsxs)(rE.Fragment,{children:[(0,rE.jsx)("primitive",{object:i,dispose:null}),n&&(0,rE.jsx)(Z2,{model:i,patch:t})]})}function Z9({size:e,patch:t,isPointVisible:r,onClick:n}){let[i,a]=(0,rx.useState)(!1),s=(0,rx.useMemo)(()=>{let e=document.createElement("canvas");e.width=e.height=256;let t=e.getContext("2d");if(t.lineJoin="miter",t.lineCap="round",t.beginPath(),i)t.rect(16,16,224,224);else for(let[e,r,n,i]of[[16,16,1,1],[240,16,-1,1],[16,240,1,-1],[240,240,-1,-1]])t.moveTo(e+22*n,r),t.lineTo(e,r),t.lineTo(e,r+22*i);t.strokeStyle="rgba(255,255,255,.80)",t.lineWidth=5,t.stroke(),t.strokeStyle=i?"#59636d":"rgba(70,80,90,.60)",t.lineWidth=2,t.stroke(),t.beginPath(),t.arc(128,128,29,0,2*Math.PI),t.fillStyle=i?"#ffffff":"#f5f6f7",t.fill(),t.strokeStyle="rgba(35,45,55,.32)",t.lineWidth=2,t.stroke(),t.beginPath(),t.moveTo(117,128),t.lineTo(139,128),t.moveTo(128,117),t.lineTo(128,139),t.strokeStyle="#35414d",t.lineWidth=3,t.stroke();let r=new yH(e);return r.colorSpace="srgb",r},[i]),o=(0,rx.useMemo)(()=>new bA({map:s,transparent:!0,depthWrite:!1,toneMapped:!1}),[s]);return(0,rx.useLayoutEffect)(()=>{let e=Zj(o,t,{shading:!1});return o.alphaToCoverage=!1,e},[o,t]),(0,rx.useLayoutEffect)(()=>()=>{o.dispose(),s.dispose()},[o,s]),(0,rE.jsx)("mesh",{material:o,renderOrder:2,onPointerOver:()=>a(!0),onPointerOut:()=>a(!1),raycast:function(e,t){let n=[];bI.prototype.raycast.call(this,e,n),t.push(...n.filter(e=>!r||r(e.point)))},onPointerDown:e=>{e.stopPropagation(),e.nativeEvent.stopPropagation()},onClick:e=>{e.stopPropagation(),n()},children:(0,rE.jsx)("planeGeometry",{args:[e,e]})})}function Z4({isPointVisible:e,visible:t,dragging:r,panelKey:n,number:i,size:a,depth:s,patch:o}){let l=ZM(),{t:c}=sf(),{camera:u,gl:d}=IY(),h=(0,rx.useRef)(null),p=(0,rx.useRef)(null),f=(0,rx.useMemo)(()=>new g0,[]),A=(0,rx.useMemo)(()=>{let e=document.createElement("canvas");e.width=e.height=128;let t=e.getContext("2d");for(let e of(t.beginPath(),t.arc(64,64,61,0,2*Math.PI),t.fillStyle="#f5f6f7",t.fill(),t.strokeStyle="rgba(35,45,55,.32)",t.lineWidth=2,t.stroke(),t.fillStyle="#35414d",[40,64,88]))t.beginPath(),t.arc(e,64,5,0,2*Math.PI),t.fill();let r=new yH(e);return r.colorSpace="srgb",r},[]),g=(0,rx.useMemo)(()=>new bA({map:A,transparent:!0,depthWrite:!1,toneMapped:!1}),[A]);(0,rx.useLayoutEffect)(()=>{let e=Zj(g,o,{shading:!1});return g.alphaToCoverage=!1,e},[g,o]),(0,rx.useLayoutEffect)(()=>()=>{g.dispose(),A.dispose()},[g,A]),IX(()=>{h.current&&p.current&&(h.current.getWorldPosition(f),p.current.tabIndex=!r&&(!e||e(f))?0:-1)});let m=()=>{if(!h.current)return;f.set(.05,-.05,0),h.current.localToWorld(f).project(u);let e=d.domElement.getBoundingClientRect();l.openMenu(n,{x:e.left+(f.x+1)*e.width/2,y:e.top+(1-f.y)*e.height/2})};return(0,rE.jsxs)("group",{ref:h,position:[a/2-a/12-.05,-a/2+a/20+.05,s+.002],children:[(0,rE.jsx)("mesh",{name:"panel-actions",material:g,visible:t&&!r,renderOrder:3,raycast:function(n,i){if(!t||r)return;let a=[];bI.prototype.raycast.call(this,n,a),i.push(...a.filter(t=>t.uv&&.48>=Math.hypot(t.uv.x-.5,t.uv.y-.5)&&(!e||e(t.point))))},onPointerDown:e=>{e.stopPropagation(),e.nativeEvent.stopPropagation()},onPointerUp:e=>e.stopPropagation(),onClick:e=>{e.stopPropagation(),m()},children:(0,rE.jsx)("planeGeometry",{args:[.1,.1]})}),(0,rE.jsx)(TL,{style:{pointerEvents:"none"},children:(0,rE.jsx)("button",{ref:p,type:"button","data-panel-key":n,className:"sr-only","aria-label":c("wallPanel.panelActions",{number:i}),"aria-haspopup":"menu",onFocus:()=>l.select(n),onClick:e=>{e.stopPropagation(),m()}})})]})}function Z5({glbUrl:e,position:t,quaternion:r,materialPatch:n,isPointVisible:i,onDragStart:a,onDrag:s,onDragEnd:o}){let{data:l}=od({...Zw(e),enabled:!0,suspense:!0,throwOnError:oi,placeholderData:void 0},s2,void 0),c=ZM(),{room:u}=W5(),[d,h]=(0,rx.useState)(null),{resourceRef:p,isDragging:f,setIsDragging:A}=W6(),{gl:g}=IY(),m=f?"grabbing":d?.action?"pointer":d?"grab":"auto";(0,rx.useLayoutEffect)(()=>{let e=g.domElement.style.cursor;return g.domElement.style.cursor=m,()=>{g.domElement.style.cursor=e}},[g,m]);let v=(e,t)=>h(r=>r?.key===e&&r.action===t?r:{key:e,action:t}),b=(0,rx.useRef)(null),y=l.width,w=`${u.id}:${c.generation}`,[x,C]=(0,rx.useState)({size:y,roomKey:w,x:0,y:0});if(x.roomKey!==w)C({size:y,roomKey:w,x:0,y:0});else if(x.size!==y){let e=c.panels.reduce((e,t)=>({minX:Math.min(e.minX,t.x),maxX:Math.max(e.maxX,t.x),minY:Math.min(e.minY,t.y),maxY:Math.max(e.maxY,t.y)}),{minX:1/0,maxX:-1/0,minY:1/0,maxY:-1/0}),t=x.size-y;C({size:y,roomKey:w,x:x.x+(e.minX+e.maxX)/2*t,y:x.y+(e.minY+e.maxY)/2*t})}(0,rx.useLayoutEffect)(()=>()=>A(!1),[A]);let E=(e,t=!1)=>{let r=b.current;r&&r.pointerId===e.pointerId&&(e.stopPropagation(),b.current=null,e.target.releasePointerCapture(e.pointerId),A(!1),o(),t||r.moved||(c.select(r.key),c.closeMenu()))};return(0,rE.jsx)("group",{ref:p,position:t,quaternion:r,onPointerMissed:c.clearSelection,children:(0,rE.jsxs)("group",{position:[x.x,x.y,0],children:[c.panels.map((e,t)=>{let r=c.options.find(t=>t.material.hid===e.materialId)?.model??l;return(0,rE.jsxs)("group",{position:[e.x*y,e.y*y,0],onPointerOver:t=>{t.stopPropagation(),v(Zx(e),"panel-actions"===t.object.name)},onPointerOut:()=>h(null),onPointerDown:t=>{0===t.button&&!b.current&&(t.stopPropagation(),t.nativeEvent.stopPropagation(),b.current={x:t.clientX,y:t.clientY,key:Zx(e),moved:!1,pointerId:t.pointerId},t.target.setPointerCapture(t.pointerId),A(!0),a())},onPointerMove:t=>{v(Zx(e),"panel-actions"===t.object.name);let r=b.current;r&&r.pointerId===t.pointerId&&(t.stopPropagation(),!r.moved&&Math.hypot(t.clientX-r.x,t.clientY-r.y)>4&&(r.moved=!0,c.select(r.key),c.closeMenu()),r.moved&&s())},onPointerUp:e=>E(e),onPointerCancel:e=>E(e,!0),children:[(0,rE.jsx)(Z4,{panelKey:Zx(e),number:t+1,size:y,depth:r.depth,patch:n,isPointVisible:i,dragging:f,visible:c.selected===Zx(e)||d?.key===Zx(e)}),(0,rE.jsx)("group",{"rotation-z":-e.turns*Math.PI/2,children:(0,rE.jsx)("group",{position:r.mountingOffset,children:(0,rE.jsx)(Z3,{outlined:c.selected===Zx(e)||d?.key===Zx(e),source:r.scene,patch:n,isPointVisible:i})})})]},Zx(e))}),c.selected&&c.neighbors.map(e=>(0,rE.jsx)("group",{position:[e.x*y,e.y*y,.002],children:(0,rE.jsx)(Z9,{size:y,patch:n,isPointVisible:i,onClick:()=>c.add(e)})},Zx(e)))]})})}function Z8(e){let{glbUrl:t}=W8();return t?(0,rE.jsx)(Z5,{...e,glbUrl:t}):null}let Z6={"modelled-resource":function({position:e,quaternion:t,materialPatch:r,onDrag:n,onDragEnd:i,onDragStart:a}){let{type:s}=W9(),{glbUrl:o}=W8();return o?"rotate-on-floor"===Wv[s].manipulation?(0,rE.jsx)(ZJ,{glbUrl:o,position:e,quaternion:t,materialPatch:r}):(0,rE.jsx)(TC,{autoTransform:!1,onDrag:n,onDragEnd:i,onDragStart:a,children:(0,rE.jsx)(ZJ,{glbUrl:o,position:e,quaternion:t,materialPatch:r})}):null},"textured-resource":function({position:e,quaternion:t,materialPatch:r,onDrag:n,onDragEnd:i,onDragStart:a}){let{src:s,setLoadError:o}=W8();return s?(0,rE.jsx)(ZD,{onError:()=>o("artwork-load-failed"),children:(0,rE.jsx)(TC,{autoTransform:!1,onDrag:n,onDragEnd:i,onDragStart:a,children:(0,rE.jsx)(Z1,{src:s,position:e,quaternion:t,materialPatch:r})})}):null}};function Z7(){let{room:e}=W5(),t=IY(e=>e.scene),r=I0(xH,q2(e),e=>{e.setCrossOrigin("anonymous")});return(0,rx.useLayoutEffect)(()=>(r.colorSpace="srgb",t.background=r,()=>{t.background===r&&(t.background=null)}),[t,r]),null}function $e({plane:e,geometry:t,setPlaneRef:r}){let n={planeId:e.id,kind:e.kind};return(0,rE.jsx)("mesh",{ref:t=>r(e,t),geometry:t,userData:n,children:(0,rE.jsx)("meshBasicMaterial",{visible:!1,side:2})})}function $t(){let e,{type:t}=W9(),r=ZM(),{setLoadError:n}=W8(),i="panel-group"===(e=Wv[t]).manipulation?Z8:Z6[e.identity],{room:a}=W5(),{patchSceneLoad:s}=W6(),{gl:o,size:l,camera:c,invalidate:u,raycaster:d,pointer:h}=IY(),p=(0,rx.useMemo)(()=>a.scene??qS(),[a.scene]),[f,A]=I0(xH,[p.planeIds.dataPng,p.shading?.dataPng??"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGNoaGgAAAMEAYFL09IQAAAAAElFTkSuQmCC"]),g=function({camera:e,invalidate:t,pointer:r,raycaster:n,roomId:i,scene:a,surfaces:s}){let o=`${i}:${[...s].sort().join(",")}`,l=(0,rx.useMemo)(()=>({value:0}),[]),[c,u]=(0,rx.useReducer)(ZQ,o,ZO),d=(0,rx.useRef)(null),h=(0,rx.useRef)(new Map),p=(0,rx.useRef)(null),f=c.placementKey===o,A=f?c.planeIdMap:null,g=f&&c.planeIdMapFailed,m=f?c.resourcePose:null,v=(0,rx.useMemo)(()=>a.planes.filter(e=>s.includes(e.kind)),[a,s]),b=(0,rx.useMemo)(()=>v.map(e=>e.id),[v]),y=(0,rx.useMemo)(()=>new Map(a.planes.map(e=>{let t,r;return[e.id,(t=e.polygon3D.flatMap(e=>(function(e,t){let[r,n,i]=e;return[r*(ZI(t)*(t.camera.fx/t.camera.fy)),i,-n]})(e,a)),(r=new vq).setAttribute("position",new vL(t,3)),e.polygon3D.length>=4&&r.setIndex([0,1,2,0,2,3]),r)]})),[a]),w=(0,rx.useMemo)(()=>({artifactsReady:null!==A,placementReady:null!==m,prepareReady:null!==m}),[A,m]),x=0===v.length?"no-allowed-surface":g?"plane-id-map-decode":null,C=(0,rx.useCallback)((e,t)=>{t?h.current.set(e.id,t):h.current.delete(e.id)},[]);(0,rx.useEffect)(()=>{let e=!1;return u({type:"reset-plane-id-map",placementKey:o}),Zk(a.planeIds.dataPng,a.planeIds.width,a.planeIds.height).then(t=>{e||u({type:"set-plane-id-map",placementKey:o,planeIdMap:t})}).catch(t=>{console.error(t),e||u({type:"fail-plane-id-map",placementKey:o})}),()=>{e=!0}},[o,a.planeIds]),(0,rx.useEffect)(()=>{u({type:"reset-placement",placementKey:o}),d.current=null,l.value=0,p.current=null},[l,o]);let E=(0,rx.useCallback)((r,n,i=null)=>{let a,s=ZF(r,n,e),c=i?(a=new g0(...i).applyQuaternion(new g$(...s.quaternion)).add(new g0(...s.position)),{...s,position:a.toArray()}):s;d.current=c.activePlaneId,l.value=c.activePlaneId,u({type:"set-resource-pose",placementKey:o,resourcePose:c}),t()},[l,e,t,o]),S=(0,rx.useCallback)(t=>A?function({activePlaneId:e,allowedPlaneIds:t,camera:r,planeIdMap:n,planeMap:i,pointer:a,raycaster:s}){let o=new Set(t),l=[],c=new Set,u=e=>{!(null===e||c.has(e))&&o.has(e)&&(c.add(e),l.push(e))};for(let o of(u(ZB(a,n)),u(e),t.forEach(u),s.setFromCamera(a,r),l)){let e=i.get(o),t=e?s.intersectObject(e,!1)[0]:null;if(t)return t}return null}({activePlaneId:d.current,allowedPlaneIds:b,camera:e,planeIdMap:A,planeMap:h.current,pointer:t,raycaster:n}):null,[b,e,A,n]);(0,rx.useEffect)(()=>{if(!A||null!==m)return;let r=function({allowedPlanes:e,camera:t,planeMap:r}){let n=e[0],i=n?r.get(n.id):null;return i?ZF(i,function(e){let t=e.geometry.attributes.position,r=new g0;for(let e=0;e<t.count;e++)r.add(new g0(t.getX(e),t.getY(e),t.getZ(e)));return r.divideScalar(Math.max(1,t.count))}(i),t):null}({allowedPlanes:v,camera:e,planeMap:h.current});r&&(d.current=r.activePlaneId,l.value=r.activePlaneId,u({type:"set-resource-pose",placementKey:o,resourcePose:r}),t())},[l,v,e,t,o,A,m]);let M=(0,rx.useCallback)(()=>{let t,n=S(r);if(!n||!m){p.current=null;return}let i=ZF(n.object,n.point,e);t=new g$(...i.quaternion).invert(),p.current=new g0(...m.position).sub(new g0(...i.position)).applyQuaternion(t).toArray()},[e,S,r,m]),I=(0,rx.useCallback)(()=>{let e=S(r);e&&E(e.object,e.point,p.current)},[S,r,E]),B=(0,rx.useCallback)(()=>{p.current=null},[]),k=(0,rx.useCallback)(t=>{if(!A)return!1;let r=t.clone().project(e),n=Math.floor((r.x+1)*.5*A.width),i=Math.floor((1-r.y)*.5*A.height);for(let e=-2;e<=2;e++)for(let t=-2;t<=2;t++){let r=Math.max(0,Math.min(A.width-1,n+t)),a=Math.max(0,Math.min(A.height-1,i+e));if(A.data[a*A.width+r]===d.current)return!0}return!1},[e,A]);return{isPointerOnSurface:(0,rx.useCallback)(e=>{let t=A?ZB(e,A):null;return null!==t&&b.includes(t)},[b,A]),activePlaneIdUniform:l,isPointVisible:k,failure:x,handleDrag:I,handleDragEnd:B,handleDragStart:M,planeGeometries:y,readiness:w,resourcePose:m,setPlaneRef:C}}({camera:c,invalidate:u,pointer:h,raycaster:d,roomId:`${a.id}:${r?.generation??0}`,scene:p,surfaces:Wv[t].surfaces});!function(e,t,r){let{gl:n}=IY(),{setRotation:i,setIsDragging:a}=W6();(0,rx.useEffect)(()=>{if(!e)return;let r=n.domElement,s=null,o=e=>{e.preventDefault(),e.stopImmediatePropagation()},l=()=>{let e=s;s=null,e&&r.hasPointerCapture(e.id)&&r.releasePointerCapture(e.id),e&&a(!1)},c=e=>{if(s)return void o(e);if(!e.isPrimary||0!==e.button)return;let n=r.getBoundingClientRect();t(new gZ((e.clientX-n.left)/n.width*2-1,1-(e.clientY-n.top)/n.height*2))&&(o(e),s={id:e.pointerId,startX:e.clientX,lastX:e.clientX,rotating:!1},r.setPointerCapture(e.pointerId),a(!0))},u=e=>{if(!s||s.id!==e.pointerId||(o(e),!s.rotating&&5>Math.abs(e.clientX-s.startX)))return;s.rotating=!0;let t=e.clientX-s.lastX;s.lastX=e.clientX,i(e=>e+.5*t)},d=e=>{s?.id===e.pointerId&&(o(e),l())};return r.addEventListener("pointerdown",c,!0),r.addEventListener("pointermove",u,!0),r.addEventListener("pointerup",d,!0),r.addEventListener("pointercancel",d,!0),r.addEventListener("lostpointercapture",d,!0),window.addEventListener("blur",l),()=>{r.removeEventListener("pointerdown",c,!0),r.removeEventListener("pointermove",u,!0),r.removeEventListener("pointerup",d,!0),r.removeEventListener("pointercancel",d,!0),r.removeEventListener("lostpointercapture",d,!0),window.removeEventListener("blur",l),l()}},[e,n,t,r,a,i])}("rotate-on-floor"===Wv[t].manipulation,g.isPointerOnSurface,a.id);let m=(0,rx.useMemo)(()=>new gZ(1,1),[]),v=(0,rx.useMemo)(()=>new gZ(p.planeIds.width,p.planeIds.height),[p.planeIds.height,p.planeIds.width]),b=(0,rx.useMemo)(()=>(function(e,t,r=128){let n=ZU(t),i=function(e,t,r=128){let{width:n,height:i}=t,a=n*i,s=Number.isFinite(r)&&r>0?r:128,o=new Uint8Array(a),l=new Float64Array(a);for(let r=0;r<i;r++)for(let a=0;a<n;a++){let c=r*n+a,u=Math.min(e.width-1,Math.floor((a+.5)*e.width/n)),d=Math.min(e.height-1,Math.floor((r+.5)*e.height/i));o[c]=e.data[(d*e.width+u)*4]??0,l[c]=(t.data[4*c]??s)/(2*s)}let c=l.slice();function u(e,t){let r=Math.ceil(3*t),s=Array.from({length:r+1},(e,r)=>Math.exp(-r*r/(2*t*t))),l=e;for(let e of[!0,!1]){let t=new Float64Array(a);for(let a=0;a<i;a++)for(let c=0;c<n;c++){let u=a*n+c,d=0,h=0;for(let t=-r;t<=r;t++){let r=e?c+t:c,p=e?a:a+t;if(r<0||r>=n||p<0||p>=i)continue;let f=p*n+r;if(o[u]!==o[f])continue;let A=s[Math.abs(t)];d+=l[f]*A,h+=A}t[u]=d/h}l=t}return l}for(let e=0;e<4;e++){let t=new Float64Array(a),r=new Float64Array(a);for(let e=0;e<a;e++)e%n<n-1&&o[e]===o[e+1]&&(t[e]=c[e+1]-c[e]),e<a-n&&o[e]===o[e+n]&&(r[e]=c[e+n]-c[e]);let i=Math.max(.5,1/2**e),s=u(t,i),d=u(r,i);for(let e=0;e<a;e++)s[e]=1/(Math.abs(s[e])+.001),d[e]=1/(Math.abs(d[e])+.001);let h=u(s,i),p=u(d,i),f=new Float64Array(a).fill(1);for(let e=0;e<a;e++)h[e]=e%n<n-1&&o[e]&&o[e]===o[e+1]?.004*h[e]/(Math.abs(t[e])+.02):0,p[e]=e<a-n&&o[e]&&o[e]===o[e+n]?.004*p[e]/(Math.abs(r[e])+.02):0,f[e]+=h[e]+p[e],h[e]&&(f[e+1]+=h[e]),p[e]&&(f[e+n]+=p[e]);let A=(e,t)=>{for(let r=0;r<a;r++){let i=f[r]*e[r];r%n&&(i-=h[r-1]*e[r-1]),r%n<n-1&&(i-=h[r]*e[r+1]),r>=n&&(i-=p[r-n]*e[r-n]),r<a-n&&(i-=p[r]*e[r+n]),t[r]=i}},g=new Float64Array(a),m=new Float64Array(a),v=new Float64Array(a);A(c,v);let b=0;for(let e=0;e<a;e++)g[e]=l[e]-v[e],m[e]=g[e]/f[e],b+=g[e]*m[e];for(let e=0;e<200&&b>1e-12;e++){A(m,v);let e=0;for(let t=0;t<a;t++)e+=m[t]*v[t];if(e<=0)break;let t=b/e,r=0;for(let e=0;e<a;e++)c[e]+=t*m[e],g[e]-=t*v[e],r+=g[e]*g[e]/f[e];let n=r/b;for(let e=0;e<a;e++)m[e]=g[e]/f[e]+n*m[e];b=r}}let d=new Float32Array(4*a);for(let e=0;e<a;e++)d.set([2*c[e],0,0,1],4*e);return d}(ZU(e),n,r),a=new Uint8Array(i.length);for(let e=0;e<i.length;e+=4)a.set([Math.max(0,Math.min(255,Math.round(128*i[e]))),0,0,255],e);let s=new bU(a,n.width,n.height,1023);return s.minFilter=1006,s.magFilter=1006,s.generateMipmaps=!1,s.needsUpdate=!0,s})(f,A,p.shading?.neutral),[f,A,p.shading?.neutral]);(0,rx.useLayoutEffect)(()=>()=>b.dispose(),[b]);let y=(0,rx.useMemo)(()=>({planeIdsTexture:f,lightingTexture:b,planeIdsSize:v,viewport:m,activePlaneIdUniform:g.activePlaneIdUniform}),[g.activePlaneIdUniform,v,f,b,m]);(0,rx.useLayoutEffect)(()=>{c instanceof x9&&(c.fov=p.camera.fovYDeg),c.position.set(0,0,0),c.up.set(0,0,1),c.lookAt(0,1,0),c.updateProjectionMatrix(),u()},[c,u,p.camera.fovYDeg]),(0,rx.useLayoutEffect)(()=>{f.minFilter=1003,f.magFilter=1003,f.wrapS=1001,f.wrapT=1001,f.generateMipmaps=!1,f.needsUpdate=!0},[f]),(0,rx.useLayoutEffect)(()=>{o.getDrawingBufferSize(m),m.set(Math.max(1,m.x),Math.max(1,m.y))},[o,l.height,l.width,m]);let{artifactsReady:w,placementReady:x,prepareReady:C}=g.readiness,E=g.failure;return(0,rx.useEffect)(()=>{s({artifactsReady:w,placementReady:x,prepareReady:C})},[w,s,x,C]),(0,rx.useEffect)(()=>{E&&(!function({failure:e,planes:t,resourceType:r}){let n,i;(i=(n=t.map(e=>e.kind)).filter((e,t)=>n.indexOf(e)===t)).length>0&&i.join(", ")}({failure:E,planes:p.planes,resourceType:t}),n("room-load-failed"))},[E,p.planes,n,t]),(0,rE.jsxs)(rE.Fragment,{children:[g.resourcePose&&(0,rE.jsx)(i,{position:g.resourcePose.position,quaternion:g.resourcePose.quaternion,materialPatch:y,isPointVisible:g.isPointVisible,onDrag:g.handleDrag,onDragEnd:g.handleDragEnd,onDragStart:g.handleDragStart}),p.planes.map(e=>(0,rE.jsx)($e,{plane:e,geometry:g.planeGeometries.get(e.id),setPlaneRef:g.setPlaneRef},e.id)),(0,rE.jsx)(ZD,{onError:()=>n("room-load-failed"),children:(0,rE.jsx)(Z7,{})})]})}async function $r(e,t={}){let{client:r=Wr,...n}=t;return(await r({method:"POST",url:"/layout/GetConfig",data:e,...n})).data}let $n=["room-viewer","layout-config"];function $i(){var e;let t=od({queryKey:$n,queryFn:()=>$r(),staleTime:1/0},s2,void 0);if(t.isPending)return null;let r=(e=t.data,e?.internal?.links?.find(e=>"hdr_neutral"===e.type)?.url?.trim()||void 0);return(0,rE.jsx)(R_,{files:r?[r]:void 0,preset:r?void 0:"warehouse"})}function $a(){return(0,rE.jsx)(R_,{files:["https://cdn.neurodyn.ai/assets/hdr/neutral.hdr"]})}function $s({lighting:e}){return"remote-neutral-hdr"===e?(0,rE.jsx)($i,{}):(0,rE.jsx)($a,{})}function $o({ref:e,target:t}){let{camera:r,gl:n}=IY();return(0,rx.useImperativeHandle)(e,()=>({getScreenPoint(){if(!t.current)return null;let e=t.current.getWorldPosition(new g0).project(r),i=n.domElement.getBoundingClientRect();return{x:i.left+(e.x+1)*i.width/2,y:i.top+(1-e.y)*i.height/2}}}),[r,n,t]),null}let $l={position:[0,0,0],up:[0,0,1],near:.01,far:100};function $c({className:e,ref:t,captureRef:r,introductionTarget:n,focusRef:i,onSizeChange:a,...s}){let{type:o}=W9(),{glbUrl:l}=W8(),c=ZM(),u=c?.isBaseModelReady??!0,{materialSource:d}=qO(o),{room:h}=W5(),{patchSceneLoad:p}=W6(),{active:f}=RF(),A=ZI((0,rx.useMemo)(()=>h.scene??qS(),[h.scene])),g=(0,rx.useRef)(null),m=(0,rx.useRef)(!1),v=(0,rx.useCallback)(e=>{(g.current=e,"function"==typeof t)?t(e):t&&(t.current=e)},[t]),b=q7("(max-width: 639px)"),{width:y,height:w}=function(e){let t,{ref:r,box:n="content-box"}=e,[{width:i,height:a},s]=rx.useState(Ke),o=(t=rx.useRef(!1),rx.useEffect(()=>(t.current=!0,()=>{t.current=!1}),[]),rx.useCallback(()=>t.current,[])),l=rx.useRef({...Ke}),c=rx.useRef(void 0);return c.current=e.onResize,rx.useEffect(()=>{if(!r.current||"u"<typeof window||!("ResizeObserver"in window))return;let e=new ResizeObserver(([e])=>{let t="border-box"===n?"borderBoxSize":"device-pixel-content-box"===n?"devicePixelContentBoxSize":"contentBoxSize",r=Kt(e,t,"inlineSize"),i=Kt(e,t,"blockSize");if(l.current.width!==r||l.current.height!==i){let e={width:r,height:i};l.current.width=r,l.current.height=i,c.current?c.current(e):o()&&s(e)}});return e.observe(r.current,{box:n}),()=>{e.disconnect()}},[n,r,o]),{width:i,height:a}}({ref:g}),x=(0,rx.useMemo)(()=>{if(!y||!w||!A)return null;let e=y,t=w;return b?e=(t=w)*A:y/w>A?e=w*A:t=y/A,{width:e,height:t}},[y,w,A,b]);return(0,rx.useLayoutEffect)(()=>{x&&a?.(x.width,x.height)},[x,a]),(0,rx.useEffect)(()=>{if(!x||m.current)return;m.current=!0;let e=window.setTimeout(()=>{window.dispatchEvent(new Event("resize"))},250);return()=>{window.clearTimeout(e)}},[x]),(0,rx.useEffect)(()=>{p({layoutReady:null!==x})},[p,x]),(0,rx.useEffect)(()=>{"object-glb"===d&&p({materialReady:!!l&&u})},[l,d,u,p]),(0,rx.useEffect)(()=>{p({assetsReady:!f})},[f,p]),(0,rE.jsx)("div",{ref:v,className:Wb("size-full flex items-center justify-center sm:pt-21 sm:pb-12",e),...s,children:x&&(0,rE.jsx)(Rz,{className:"touch-none bg-transparent",frameloop:"demand",camera:$l,gl:{toneMapping:4,toneMappingExposure:1.2,alpha:!0,preserveDrawingBuffer:!0},style:{width:`${x.width}px`,height:`${x.height}px`},children:(0,rE.jsxs)(rx.Suspense,{fallback:null,children:[(0,rE.jsx)(ZR,{ref:r}),(0,rE.jsx)($s,{lighting:Wv[o].lighting}),(0,rE.jsx)($t,{}),n&&i&&(0,rE.jsx)($o,{ref:i,target:n})]})})})}function $u({captureRef:e,introduction:t,className:r,canvasWrapperClassName:n,controls:i,...a}){let s,o,l,c,{isDragging:u}=W6(),d=(0,rx.useRef)(null),h=(0,rx.useRef)(null),p=(0,rx.useRef)(null),f=(s=(0,rx.useRef)(null),o=(0,rx.useRef)(!1),l=(0,rx.useCallback)(()=>{null!==s.current&&cancelAnimationFrame(s.current),s.current=null},[]),c=(0,rx.useCallback)(()=>{t&&(l(),t.onCancel())},[t,l]),(0,rx.useEffect)(()=>{if(!t){o.current=!1;return}if(!t.ready){o.current&&t.onCancel();return}return s.current=requestAnimationFrame(()=>{let e=d.current,r=p.current?.getScreenPoint(),n=e?.instance.wrapperComponent,i=e?.instance.contentComponent;if(!e||!r||!n||!i)return void t.onCancel();let{scale:a,positionX:l,positionY:c}=e.instance.transformState,u=n.getBoundingClientRect(),h=Math.min(e.instance.setup.maxScale,1.28*a),f=(e,t,r)=>r<t?(t-r)/2:Math.max(t-r,Math.min(0,e)),A=f(u.width/2-(r.x-u.left-l)/a*h,u.width,i.offsetWidth*h),g=f(u.height/2-(r.y-u.top-c)/a*h,u.height,i.offsetHeight*h);o.current=!0;let m=window.matchMedia("(prefers-reduced-motion: reduce)").matches,v=performance.now(),b=r=>{let n=m?1:Math.min(1,(r-v)/700),i=(1-Math.cos(Math.PI*n))/2;e.setTransform(l+(A-l)*i,c+(g-c)*i,a+(h-a)*i,0),n<1?s.current=requestAnimationFrame(b):(s.current=null,t.onComplete())};b(v)}),()=>{l()}},[p,t,l,d]),c),A=q7("(max-width: 639px)"),g=(0,rx.useRef)(!!t);g.current=!!t;let m=(0,rx.useCallback)(()=>{A&&d.current?.centerView(void 0,g.current?0:void 0)},[A]);return(0,rE.jsxs)("div",{className:Wb("relative flex items-center justify-center overflow-hidden",r),...a,onPointerDownCapture:e=>{f(),a.onPointerDownCapture?.(e)},onTouchStartCapture:e=>{f(),a.onTouchStartCapture?.(e)},onWheelCapture:e=>{f(),a.onWheelCapture?.(e)},children:[(0,rE.jsx)(gd,{ref:d,disabled:u,children:(0,rE.jsx)(gh,{wrapperClass:"neurodyn-rzpp-wrapper size-full!",contentClass:"neurodyn-rzpp-content h-full! min-w-full sm:max-w-full",children:(0,rE.jsx)($c,{captureRef:e??h,introductionTarget:t?.target,focusRef:p,className:n,onSizeChange:m})})}),i]})}function $d({...e}){return(0,rE.jsx)(hK,{"data-slot":"popover",...e})}function $h({...e}){return(0,rE.jsx)(hX,{"data-slot":"popover-trigger",...e})}function $p({className:e,align:t="center",sideOffset:r=4,portalContainer:n,...i}){return(0,rE.jsx)(h1,{container:n,children:(0,rE.jsx)(h3,{"data-slot":"popover-content",align:t,sideOffset:r,className:Wb("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden",e),...i})})}function $f({className:e,defaultValue:t,value:r,min:n=0,max:i=100,variant:a="default","aria-label":s,"aria-labelledby":o,...l}){let c=rx.useMemo(()=>Array.isArray(r)?r:Array.isArray(t)?t:[n],[r,t,n]);return(0,rE.jsxs)(pd,{"data-slot":"slider",defaultValue:t,value:r,min:n,max:i,"data-variant":a,"aria-label":s,"aria-labelledby":o,className:Wb("relative flex w-full touch-none cursor-pointer items-center select-none data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col",e),...l,children:[(0,rE.jsx)(pv,{"data-slot":"slider-track",className:Wb("relative grow overflow-hidden rounded-full data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5","editor"===a?"bg-border-light data-[orientation=horizontal]:h-0.5":"bg-muted data-[orientation=horizontal]:h-1.5"),children:(0,rE.jsx)(py,{"data-slot":"slider-range",className:Wb("absolute data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full","editor"===a?"bg-background-blue":"bg-primary")})}),Array.from({length:c.length},(e,t)=>(0,rE.jsx)(px,{"data-slot":"slider-thumb","aria-label":s,"aria-labelledby":o,className:Wb("ring-ring/50 block shrink-0 rounded-full border bg-white transition-[color,box-shadow] focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50","editor"===a?"size-3 border-background-blue shadow-none hover:ring-2 focus-visible:ring-2":"size-4 border-primary shadow-sm hover:ring-4 focus-visible:ring-4")},t))]})}let $A=/oklch\(([0-9.]+)\s+([0-9.]+)\s+([0-9.]+)\)/;function $g(e,t){let r=e.match($A);return r?{l:Number.parseFloat(r[1]),c:Number.parseFloat(r[2]),h:Number.parseFloat(r[3])}:{l:t[0],c:t[1],h:t[2]}}function $m({data:e,foreground:t,background:r,robustness:n="M",className:i,...a}){let[s,o]=(0,rx.useState)(null);return((0,rx.useEffect)(()=>{(async()=>{try{let i=getComputedStyle(document.documentElement),a=t??i.getPropertyValue("--foreground"),s=r??i.getPropertyValue("--background"),l=$g(a,[.21,.006,285.885]),c=$g(s,[.985,0,0]),u=await Lr.toString(e,{type:"svg",color:{dark:Le(Lt({mode:"oklch",...l})),light:Le(Lt({mode:"oklch",...c}))},width:200,errorCorrectionLevel:n,margin:0});o(u)}catch(e){console.error(e)}})()},[e,t,r,n]),s)?(0,rE.jsx)("div",{className:Wb("size-full","[&_svg]:size-full",i),dangerouslySetInnerHTML:{__html:s},...a}):null}let $v=new F0,$b=$v.getDevice(),$y=$v.getOS(),$w="iOS"===$y.name,$x="Android"===$y.name,$C="mobile"===$b.type;function $E({className:e,buttonClassName:t,buttonLeadingIcon:r,buttonLabel:n,buttonSize:i,buttonVariant:a="contrast",...s}){let{type:o,width:l,height:c,name:u}=W9(),{handoff:d}=Wv[o],{src:h,tinuuid:p,widgetSession:f}=W8(),{containerRef:A,resourceRef:g}=W6(),{t:m,i18n:v}=sf(),b=function(){let{i18n:e}=sf();return"ru"===(e.resolvedLanguage??e.language)?"arizo":"vizbl"}(),[y,w]=(0,rx.useState)(""),[x,C]=(0,rx.useState)(""),[E,S]=(0,rx.useState)(()=>f?.token),[M,I]=(0,rx.useState)(!1),[B,k]=(0,rx.useState)(!1),T=(0,rx.useRef)(null),R=v.resolvedLanguage??v.language,D=qC[b],P=(0,rx.useMemo)(()=>(function({height:e,language:t,name:r,src:n,tenantConfig:i,tinuuid:a,handoff:s,type:o,width:l,widgetSessionToken:c,pageUrl:u}){if(!s)return null;if("floor"===s.destination&&a){let e=new URL(i.ROOM_URL);return e.searchParams.set("type",o),e.searchParams.set("tinuuid",a),e.searchParams.set("name",r),e.searchParams.set("language",t),c&&e.searchParams.set("widgetSessionToken",c),e.toString()}let d=new URL(i.POSTER_URL);return n&&d.searchParams.set("texture",function(e,t){if(!t||/^[a-z][a-z0-9+.-]*:/i.test(e)||e.startsWith("//"))return e;try{return new URL(e,t).href}catch{return e}}(n,u)),d.searchParams.set("texture_width",(100*l).toString()),d.searchParams.set("texture_height",(100*e).toString()),c&&d.searchParams.set("widgetSessionToken",c),d.toString()})({height:c,language:R,name:u,src:h,tenantConfig:D,tinuuid:p,handoff:d,type:o,width:l,widgetSessionToken:E,pageUrl:"u"<typeof window?void 0:window.location.href}),[h,p,d,o,l,c,u,R,D,E]),_=(0,rx.useMemo)(()=>{if(!p)return null;let e=new URL("https://appclip.apple.com/id");return e.searchParams.set("p","com.us.vizbl.Clip"),e.searchParams.set("tinuuid",p),e.toString()},[p]);async function L(){S(await f?.getTokenForRequest().catch(()=>f.token))}let N=async()=>{if(d?.ar==="appclip"){if(!p)return;if($w&&_){Wu(f,"appclip"),window.location.assign(_);return}await L(),I(!0);return}let e=T.current,t=g.current;if(e&&t)if(e.canActivateAR)try{k(!0);let e=t.clone(!0);if(e.position.set(0,0,0),$w){let t=new Nh,r=await t.parseAsync(e),n=new File([r],"scene.usdz",{type:"model/vnd.usdz+zip"});w(URL.createObjectURL(n))}else{let t=new Li,r=await t.parseAsync(e,{binary:!0}),n=new File([r],"scene.glb",{type:"model/gltf-binary"});C(URL.createObjectURL(n))}}finally{k(!1)}else await L(),I(!0)};return((0,rx.useEffect)(()=>((""!==y||""!==x)&&T.current?.activateAR(),()=>{""!==y&&URL.revokeObjectURL(y),""!==x&&URL.revokeObjectURL(x)}),[y,x]),!d||$x&&$C||"floor"===d.destination&&!p)?null:(0,rE.jsxs)("div",{className:Wb(e),...s,children:[(0,rE.jsxs)(Ww,{variant:a,size:i,disabled:B,onClick:N,className:t,children:[r,n??m("ar.viewInPlace")]}),(0,rE.jsx)(Wx,{open:M,onOpenChange:I,children:(0,rE.jsxs)(WM,{className:"gap-6 sm:max-w-120",showCloseButton:!1,portalContainer:A,children:[(0,rE.jsx)("div",{className:"flex items-center justify-center p-10 bg-constant-white rounded-2xl",children:(0,rE.jsx)($m,{className:"size-48",robustness:"H",data:P??""})}),(0,rE.jsx)("p",{className:"text-lg text-center text-text-sub font-medium",children:m("ar.scanQrCode")}),(0,rE.jsxs)("p",{className:"text-xs text-center text-text-light",children:[m("ar.deviceRequirementsDisclaimer"),(0,rE.jsx)("br",{}),(0,rE.jsx)("a",{href:D.TERMS_URL,target:"_blank",rel:"noopener noreferrer",className:"underline underline-offset-2 transition-colors duration-300 hover:text-text-dark",style:{textDecoration:"underline",textUnderlineOffset:"2px"},children:m("legal.termsOfUse")})," ",m("legal.conjunction")," ",(0,rE.jsx)("a",{href:D.PRIVACY_URL,target:"_blank",rel:"noopener noreferrer",className:"underline underline-offset-2 transition-colors duration-300 hover:text-text-dark",style:{textDecoration:"underline",textUnderlineOffset:"2px"},children:m("legal.privacyPolicy")})]}),(0,rE.jsx)(WE,{asChild:!0,children:(0,rE.jsx)(Ww,{variant:"contrast",size:"lg",children:m("close")})})]})}),(0,rE.jsx)("model-viewer",{ref:T,className:"fixed w-px h-px opacity-0 pointer-events-none",src:x,iosSrc:y,reveal:"manual",ar:!0,cameraControls:!0,arPlacement:"wall",arModes:"webxr",arScale:"fixed",shadowIntensity:1,interactionPromptThreshold:100})]})}async function $S(e){await navigator.clipboard.writeText(e)}function $M({captureRef:e,fallbackToClipboard:t=!1,fileName:r="room-scene.png",shareMessage:n}){let[i,a]=(0,rx.useState)(!1),[s,o]=(0,rx.useState)(!1),l=(0,rx.useMemo)(()=>"u">typeof navigator&&"function"==typeof navigator.share||t&&"u">typeof navigator&&"function"==typeof navigator.clipboard?.writeText,[t]),c=(0,rx.useCallback)(async()=>{if(!l)return;let i="u">typeof navigator&&"function"==typeof navigator.share,s=window.location.href,o=`${n}
|
|
7656
|
-
${s}`;a(!0);try{if(!i&&t)return void await $S(o);let n=e.current;if(n)try{let e=await n.capture(),t=new File([e],r,{type:e.type||"image/png"});if(navigator.canShare?.({files:[t]}))return void await navigator.share({text:o,files:[t]})}catch(e){console.error("Failed to generate scene screenshot for sharing",e)}await navigator.share({text:o,url:s})}catch(e){e instanceof DOMException&&"AbortError"===e.name||console.error("Failed to share scene",e)}finally{a(!1)}},[l,e,t,r,n]);return{canShare:l,download:(0,rx.useCallback)(async()=>{let t=e.current;if(t){o(!0);try{var n;let e,i;n=await t.capture(),e=URL.createObjectURL(n),(i=document.createElement("a")).href=e,i.download=r,document.body.append(i),i.click(),i.remove(),URL.revokeObjectURL(e)}catch(e){console.error("Failed to download scene screenshot",e)}finally{o(!1)}}},[e,r]),isDownloading:s,isSharing:i,share:c}}function $I({captureRef:e}){let{type:t}=W9(),{containerRef:r,angle:n,rotation:i,setAngle:a,setRotation:s}=W6(),{t:o}=sf(),l=q7("(max-width: 639px)"),{canShare:c,isSharing:u,share:d}=$M({captureRef:e,shareMessage:o(`shareMessage.${t}`)});return(0,rE.jsxs)(rE.Fragment,{children:[(0,rE.jsx)($E,{className:"absolute bottom-4 left-4 sm:bottom-6 sm:left-6"}),(0,rE.jsxs)("div",{className:"absolute right-4 bottom-4 inline-flex items-center gap-2 sm:right-6 sm:bottom-6",children:[(0,rE.jsxs)($d,{children:[(0,rE.jsx)($h,{asChild:!0,children:(0,rE.jsxs)(Ww,{variant:"contrast",size:l?"icon":"default",children:[(0,rE.jsx)(Wj,{className:"size-5"}),(0,rE.jsx)("span",{className:"sr-only sm:not-sr-only",children:o("scene.tunePosition")})]})}),(0,rE.jsx)($p,{className:"px-3 py-3.5 bg-button-dark border-button-dark text-text-white",side:"top",align:"end",portalContainer:r,children:(0,rE.jsxs)(qt,{children:[(0,rE.jsxs)(qn,{orientation:"horizontal",children:[(0,rE.jsx)(qa,{children:o("scene.rotation")}),(0,rE.jsx)($f,{value:[i],onValueChange:([e])=>s(e??0),min:-180,max:180,step:1,className:"w-40.5 **:data-[slot=slider-range]:bg-transparent **:data-[slot=slider-thumb]:border-background-base-3 **:data-[slot=slider-thumb]]:bg-background-base-3 **:data-[slot=slider-track]:bg-icons-normal","aria-label":o("scene.rotation")})]}),(0,rE.jsxs)(qn,{orientation:"horizontal",children:[(0,rE.jsx)(qa,{children:o("scene.angle")}),(0,rE.jsx)($f,{value:[n],onValueChange:([e])=>a(e??0),max:75,min:-75,step:1,className:"w-40.5 **:data-[slot=slider-range]:bg-transparent **:data-[slot=slider-thumb]:border-background-base-3 **:data-[slot=slider-thumb]]:bg-background-base-3 **:data-[slot=slider-track]:bg-icons-normal","aria-label":o("scene.angle")})]})]})})]}),(0,rE.jsxs)(Ww,{variant:"contrast",size:l?"icon":"default",disabled:!c||u,onClick:d,children:[(0,rE.jsx)(WV,{className:"size-5"}),(0,rE.jsx)("span",{className:"sr-only sm:not-sr-only",children:o("scene.share")})]}),l&&(0,rE.jsxs)($d,{children:[(0,rE.jsx)($h,{asChild:!0,children:(0,rE.jsx)(Ww,{variant:"contrast",size:"icon",children:(0,rE.jsx)(WG,{})})}),(0,rE.jsxs)($p,{className:"grid gap-5",portalContainer:r,children:[(0,rE.jsx)(qz,{}),(0,rE.jsx)(qZ,{})]})]})]})]})}function $B({variant:e,open:t,portalContainer:r,showDialogCloseButton:n=!1,onOpenChange:i,onTryAgain:a,onCancel:s}){let{t:o}=sf(),l=e?o("custom-interior-processing"===e?"floor.error.processingBody":"viewer-load-failed"===e?"floor.error.loadBody":"artwork-load-failed"===e||"room-load-failed"===e?`loadError.${e}`:`accessError.${e}`):"";return(0,rE.jsx)(Wx,{open:t,onOpenChange:i,children:(0,rE.jsxs)(WM,{portalContainer:r,showCloseButton:!1,className:"w-full max-w-85 gap-4 rounded-2xl p-6 text-center sm:max-w-85 sm:p-6",onInteractOutside:e=>{e.preventDefault()},children:[(0,rE.jsxs)("div",{className:"grid gap-1",children:[(0,rE.jsx)(Wk,{children:o("floor.error.title")}),(0,rE.jsx)(WT,{className:"typo-base-14 font-medium text-text-base",children:l})]}),(0,rE.jsxs)("div",{className:"grid gap-2",children:[a&&(0,rE.jsxs)(Ww,{variant:"contrast",onClick:a,children:[(0,rE.jsx)(WF,{"aria-hidden":"true"}),o("floor.error.tryAgain")]}),s&&(0,rE.jsx)(Ww,{variant:"outline",onClick:s,children:o("floor.error.cancel")}),n&&(0,rE.jsx)(WE,{asChild:!0,children:(0,rE.jsx)(Ww,{variant:"outline",children:o("close")})})]})]})})}function $k({rooms:e,customRooms:t,selectedRoomId:r,isInvalidFile:n,uploadRetryRequestId:i=0,showCloseButton:a=!1,onSelectRoom:s,onUploadFile:o}){let l,{t:c}=sf(),u=(0,rx.useId)(),d=(0,rx.useRef)(null);function h(e){return e.map(e=>(0,rE.jsxs)("button",{type:"button",className:"group relative aspect-[4/3] overflow-hidden rounded-2xl bg-background-base text-left transition focus-visible:ring-2 focus-visible:ring-icons-normal focus-visible:outline-hidden","aria-pressed":e.id===r,onClick:()=>s(e.id),children:[(0,rE.jsx)("img",{crossOrigin:"anonymous",src:q2(e),alt:"",decoding:"async",className:"size-full scale-[1.02] transform-gpu object-cover transition duration-200 group-hover:scale-105"}),(0,rE.jsx)("span",{className:"typo-base-12 absolute inset-x-0 bottom-0 truncate bg-linear-to-t from-black/45 via-black/10 to-transparent px-3 py-2 text-constant-white",children:c(`rooms.${e.id}`,{defaultValue:e.name})})]},e.id))}return(0,rx.useEffect)(()=>{i>0&&d.current?.click()},[i]),(0,rE.jsxs)("section",{"aria-labelledby":"floor-interior-selection-title",className:"relative mx-auto grid h-auto min-h-0 max-h-[calc(100svh-8px)] w-full max-w-151 grid-rows-[auto_auto_minmax(0,1fr)_auto] gap-4 overflow-hidden rounded-t-2xl rounded-b-none bg-background-containers p-4 shadow-[var(--shadow-login)] sm:my-4 sm:max-h-[calc(100svh-32px)] sm:rounded-2xl sm:p-6","data-testid":"floor-interior-selection-panel","data-room-selection-panel":!0,children:[a&&(l=(0,rE.jsx)(Ww,{type:"button",variant:"outline",size:"icon",className:"absolute top-4 right-4 sm:top-6 sm:right-6","aria-label":c("close"),"data-testid":"floor-interior-selection-icon-close",children:(0,rE.jsx)(W_,{})}),(0,rE.jsx)(WE,{asChild:!0,children:l})),(0,rE.jsx)("h2",{id:"floor-interior-selection-title",className:"typo-base-16 font-medium sm:typo-base-18 text-text-dark",children:c("floor.interiorSelection.title")}),(0,rE.jsxs)("div",{className:"grid gap-2","data-testid":"floor-interior-selection-upload",children:[(0,rE.jsxs)("label",{htmlFor:u,className:"flex min-h-15 cursor-pointer items-center justify-center gap-2 rounded-xl border border-dashed border-background-blue bg-background-blue-transparent px-4 text-center typo-button-normal text-background-blue opacity-80 transition hover:bg-background-blue-transparent/80",onDragOver:e=>e.preventDefault(),onDrop:function(e){e.preventDefault();let t=e.dataTransfer.files[0];t&&o(t)},children:[(0,rE.jsx)(WD,{className:"size-5 text-background-blue"}),c("floor.interiorSelection.uploadPhoto"),(0,rE.jsx)("input",{ref:d,id:u,type:"file",accept:"image/*",className:"sr-only",onChange:function(e){let t=e.target.files?.[0];e.target.value="",t&&o(t)}})]}),n&&(0,rE.jsx)("p",{className:"typo-base-12 font-medium text-destructive",children:c("floor.interiorSelection.invalidFile")})]}),(0,rE.jsx)("div",{className:"grid min-h-0 overflow-y-auto overflow-x-hidden overscroll-contain pr-1 [scrollbar-width:none] [-ms-overflow-style:none] [&::-webkit-scrollbar]:hidden","data-testid":"floor-interior-selection-scroll-content",children:(0,rE.jsxs)("div",{className:"grid min-h-max gap-4",children:[t.length>0&&(0,rE.jsxs)("div",{className:"grid gap-3",children:[(0,rE.jsx)("h3",{className:"typo-base-16 font-medium text-text-light",children:c("floor.interiorSelection.customTitle")}),(0,rE.jsx)("div",{className:"grid grid-cols-2 gap-3 sm:grid-cols-3","data-testid":"floor-custom-interior-selection-grid",children:h(t)})]}),(0,rE.jsxs)("div",{className:"grid gap-3",children:[(0,rE.jsx)("h3",{className:"typo-base-16 font-medium text-text-light",children:c("floor.interiorSelection.presetsTitle")}),(0,rE.jsx)("div",{className:"grid grid-cols-2 gap-3 sm:grid-cols-3","data-testid":"floor-preset-interior-selection-grid",children:h(e)})]})]})}),a&&(0,rE.jsx)(WB,{className:"-mt-2 shrink-0 p-0 sm:mt-0",children:(0,rE.jsx)(WE,{asChild:!0,children:(0,rE.jsx)(Ww,{variant:"outline",className:"w-full",children:c("close")})})})]})}function $T(e){return(0,rE.jsx)("div",{className:"absolute inset-0 z-20 grid items-end p-0 sm:items-center sm:p-4","data-testid":"floor-interior-selection-overlay",children:(0,rE.jsx)($k,{...e})})}function $R({open:e,showCloseButton:t=!0,portalContainer:r,onOpenChange:n,...i}){let{t:a}=sf();return(0,rE.jsx)(Wx,{open:e,onOpenChange:n,children:(0,rE.jsxs)(WM,{contentInsideOverlay:!0,portalContainer:r,showCloseButton:!1,"data-testid":"floor-interior-selection-overlay",className:"top-auto bottom-0 grid max-h-[calc(100svh-8px)] w-[calc(100%-16px)] min-w-0 max-w-none translate-y-0 overflow-hidden rounded-t-2xl rounded-b-none border-none bg-transparent p-0 shadow-none sm:top-[50%] sm:bottom-auto sm:w-full sm:max-w-none sm:translate-y-[-50%] sm:rounded-none sm:p-4",children:[(0,rE.jsx)(Wk,{className:"sr-only",children:a("floor.interiorSelection.title")}),(0,rE.jsx)(WT,{className:"sr-only"}),(0,rE.jsx)($k,{...i,showCloseButton:t})]})})}let $D="data-material-selection-action",$P="data-material-selection-panel";function $_(){let{t:e}=sf(),{type:t}=W9();return e(`floor.materialSelection.${Wv[t].catalogTitle}`)}function $L({className:e,gridClassName:t,titleClassName:r,onOpenChange:n,...i}){let a=$_(),s=(0,rx.useRef)(null),{fetchNextMaterialsPage:o,hasNextPage:l,isFetchingNextPage:c,isLoading:u,materialItems:d,selectMaterial:h,selectedMaterialId:p}=function({includeEmbeddedObject:e=!1}={}){var t;let{material:r,tinuuid:n,embeddedObject:i,selectedObject:a,setMaterial:s,setTinuuid:o,apiKey:l,baseURL:c,source:u,widgetSession:d,setAccessError:h,setLoadError:p}=W8(),{type:f,name:A}=W9(),g=i?.owner?.uuid,{data:m,error:v,isFetchingNextPage:b,fetchNextPage:y,hasNextPage:w,isLoading:x}=od({queryKey:["room-viewer","public-objects",{apiKey:(t={apiKey:l,baseURL:c,source:u,resourceType:f}).apiKey??null,ownerUuid:g??null,resourceType:t.resourceType??null,source:t.source}],enabled:!!g,queryFn:({pageParam:e,signal:t})=>{if(!g)throw Error("Owner uuid is required.");return Wf(g,e,{apiKey:l,baseURL:c,signal:t,source:u,widgetSession:d,resourceType:f})},initialPageParam:1,getNextPageParam:(e,t,r)=>void 0!==e.pages_count?r<e.pages_count?r+1:void 0:e.objs?.length?r+1:void 0,getPreviousPageParam:(e,t,r)=>r>1?r-1:void 0},ou,void 0),{requiresMaterialModel:C}=qO(f),{getCollapseKey:E}=qL(f),{catalogsEveryMaterial:S}=qN(f),{catalogLabel:M,composition:I}=Wv[f],B=(0,rx.useMemo)(()=>m?.pages.flatMap(e=>e.objs??[])??[],[m]),k=(0,rx.useMemo)(()=>"color-design"===I?B.filter(e=>e.tinuuid&&!e.kit?.uuid&&e.materials?.[0]?.native?.glbUrl):[],[I,B]),T=oc({queries:k.map(e=>({queryKey:Wh(e.tinuuid,{apiKey:l,baseURL:c,source:u,resourceType:f}),queryFn:({signal:t})=>Wp(e.tinuuid,{apiKey:l,baseURL:c,signal:t,source:u,widgetSession:d,resourceType:f})}))}),R=B.flatMap(e=>{let t=T[k.indexOf(e)];return t?.isPending||t?.isError?[]:[{...e,kit:t?.data?.kit??e.kit}]}),D=(0,rx.useMemo)(()=>{let t={requiresMaterialModel:C,getCollapseKey:E};if(e)return qk([...i?.tinuuid&&i.materials?.[0]?[i]:[],...R],null,t);return qk(R,i,t)},[i,R,E,e,C]),P=(0,rx.useMemo)(()=>D.flatMap(e=>{if(!e.tinuuid)return[];let t="color-design"===I&&e.kit?.uuid,r=S&&!t?e.materials:e.materials?.slice(0,1);return r?.map(t=>{let r=qU(t);return r&&e.tinuuid?{materialId:r,name:("material-name"===M?t.name:e.kit?.name??e.name)??t.name??"",productName:qQ(f,e,t,A),material:t,tinuuid:e.tinuuid}:null}).filter(e=>null!==e)??[]}),[S,M,I,D,f,A]),_="color-design"===I&&a?.tinuuid===n&&a?.kit?.uuid?D.find(e=>E(e)===E(a)):void 0,L=_?.tinuuid!==n&&_?qU(_.materials?.[0]??{}):r?qU(r):"",N=v??T.find(e=>e.error)?.error,F=D.find(e=>e.tinuuid===n),O=D.find(e=>e.tinuuid&&e.materials?.[0]);(0,rx.useEffect)(()=>{let e=VO(N);e?h(e):N&&p("viewer-load-failed")},[N,h,p]),(0,rx.useEffect)(()=>{m&&0===D.length&&w&&!b&&y()},[m,y,w,b,D.length]),(0,rx.useEffect)(()=>{if(null!==r)return;let e=F??O,t=e?.materials?.[0];e&&t&&e.tinuuid&&(s(t),o(e.tinuuid))},[O,F,r,s,o]);let Q=(0,rx.useCallback)(()=>{!1===w||b||y()},[y,w,b]),U=(0,rx.useCallback)(e=>{let t=D.find(t=>t.materials?.some(t=>qU(t)===e)),r=t?.materials?.find(t=>qU(t)===e);return!!t&&!!r&&!!t.tinuuid&&(s(r),o(t.tinuuid),!0)},[D,s,o]);return{fetchNextMaterialsPage:Q,hasNextPage:w,isFetchingNextPage:b,isLoading:x||T.some(e=>e.isPending),materialItems:P,selectMaterial:U,selectedMaterialId:L}}({includeEmbeddedObject:!0});(0,rx.useEffect)(()=>{let e=s.current;e&&!u&&!c&&l&&0!==d.length&&e.scrollHeight<=e.clientHeight&&o()},[o,l,c,u,d.length]);let f=(0,rx.useCallback)(e=>{let{clientHeight:t,scrollHeight:r,scrollTop:n}=e.currentTarget;n+t>=r-64&&o()},[o]),A=(0,rx.useCallback)(e=>{h(e)&&n(!1)},[n,h]);return(0,rE.jsxs)("div",{...i,className:Wb("flex min-h-0 flex-col gap-3 overflow-hidden text-text-dark outline-none",e),"data-testid":"material-selection-panel",onPointerDownCapture:e=>{e.stopPropagation(),i.onPointerDownCapture?.(e)},onMouseDownCapture:e=>{e.stopPropagation(),i.onMouseDownCapture?.(e)},children:[(0,rE.jsx)("h2",{className:Wb("typo-base-16 font-medium sm:typo-base-14 sm:font-semibold text-text-dark",r),children:a}),(0,rE.jsx)("div",{"data-testid":"material-selection-grid",ref:s,className:Wb("min-h-0 flex-1 overflow-y-auto overflow-x-hidden overscroll-contain pr-1 [scrollbar-width:none] [-ms-overflow-style:none] [&::-webkit-scrollbar]:hidden",t),onScroll:f,children:(0,rE.jsxs)("div",{className:"grid min-h-max grid-cols-3 gap-x-2 gap-y-2","data-testid":"material-selection-grid-items",children:[d.map(({materialId:e,material:t,tinuuid:r,productName:n})=>{let i,a=e===p,s=(i=t.previews?.[0],i?.subRes?.small??i?.url);return(0,rE.jsxs)("button",{type:"button","data-selected":a,"aria-pressed":a,className:"group flex min-w-0 flex-col gap-1 rounded-lg bg-background-containers text-left focus-visible:ring-2 focus-visible:ring-icons-normal focus-visible:outline-hidden",onClick:()=>A(e),onKeyDown:t=>{("Enter"===t.key||" "===t.key)&&(t.preventDefault(),A(e))},children:[(0,rE.jsxs)("span",{className:"relative grid aspect-square w-full shrink-0 place-items-center overflow-hidden rounded-lg border border-border p-1 transition group-hover:border-icons-normal",children:[s?(0,rE.jsx)("img",{src:s,alt:"",className:"size-full rounded-md object-cover"}):(0,rE.jsx)(WQ,{className:"size-6 text-icons-normal"}),a&&(0,rE.jsx)("span",{className:"absolute top-1 right-1 grid size-6 place-items-center rounded-full bg-icons-blue text-icons-white","data-testid":"material-selection-selected-check",children:(0,rE.jsx)(WP,{className:"size-4"})})]}),(0,rE.jsx)("span",{className:"typo-base-12 line-clamp-3 w-full wrap-anywhere text-text-base",children:n})]},`${r}-${e}`)}),(u||c)&&(0,rE.jsx)("div",{className:"col-span-3 grid h-16 place-items-center",children:(0,rE.jsx)(WK,{className:"size-6"})})]})})]})}function $N({open:e,portalContainer:t,onOpenChange:r}){let{t:n}=sf(),i=$_();return(0,rE.jsx)(Wx,{open:e,onOpenChange:r,children:(0,rE.jsxs)(WM,{contentInsideOverlay:!0,"data-testid":"material-selection-mobile-overlay","data-material-selection-panel":"",className:"top-auto bottom-0 flex max-h-[calc(100svh-8px)] w-[calc(100%-16px)] !max-w-none translate-y-0 flex-col gap-2 overflow-hidden rounded-t-2xl rounded-b-none p-4 sm:hidden",portalContainer:t,showCloseButton:!1,children:[(0,rE.jsx)(Wk,{className:"sr-only",children:i}),(0,rE.jsx)(WT,{className:"sr-only"}),(0,rE.jsx)($L,{className:"min-h-0",gridClassName:"max-h-none",onOpenChange:r}),(0,rE.jsx)(WB,{className:"shrink-0 p-0",children:(0,rE.jsx)(WE,{asChild:!0,children:(0,rE.jsx)(Ww,{type:"button",variant:"outline",className:"w-full",children:n("close")})})})]})})}var $F="Progress",[$O,$Q]=Ks($F),[$U,$z]=$O($F),$j=rx.forwardRef((e,t)=>{var r,n;let{__scopeProgress:i,value:a=null,max:s,getValueLabel:o=$V,...l}=e;(s||0===s)&&!$K(s)&&console.error((r=`${s}`,`Invalid prop \`max\` of value \`${r}\` supplied to \`Progress\`. Only numbers greater than 0 are valid max values. Defaulting to \`100\`.`));let c=$K(s)?s:100;null===a||$J(a,c)||console.error((n=`${a}`,`Invalid prop \`value\` of value \`${n}\` supplied to \`Progress\`. The \`value\` prop must be:
|
|
7655
|
+
`)},o.customProgramCacheKey=()=>"wall-panel-exterior-outline-v1",{mask:t,maskMaterial:r,maskModel:n,maskScene:i,material:o,resolution:a,radius:s,clearColor:new mJ}},[e]);return(0,rx.useLayoutEffect)(()=>Zj(r.material,t,{shading:!1}),[r,t]),(0,rx.useLayoutEffect)(()=>()=>{r.mask.dispose(),r.maskMaterial.dispose(),r.material.dispose()},[r]),(0,rE.jsx)("mesh",{material:r.material,frustumCulled:!1,renderOrder:3,raycast:()=>{},onBeforeRender:(t,n,i)=>{let a=t.getRenderTarget(),s=t.getActiveCubeFace(),o=t.getActiveMipmapLevel(),l=t.autoClear,c=t.getClearAlpha();t.getClearColor(r.clearColor),t.getDrawingBufferSize(r.resolution);let{x:u,y:d}=r.resolution;(r.mask.width!==u||r.mask.height!==d)&&r.mask.setSize(u,d),r.radius.value=2*t.getPixelRatio(),e.updateWorldMatrix(!0,!0),r.maskModel.matrix.copy(e.matrixWorld);try{t.autoClear=!0,t.setClearColor(0,0),t.setRenderTarget(r.mask),t.render(r.maskScene,i)}finally{t.setRenderTarget(a,s,o),t.setClearColor(r.clearColor,c),t.autoClear=l}},children:(0,rE.jsx)("planeGeometry",{args:[2,2]})})}function Z3({source:e,patch:t,isPointVisible:r,outlined:n}){let{model:i,materials:a}=(0,rx.useMemo)(()=>{let t=e.clone(!0),r=ZG(t);return{model:t,materials:r}},[e]);return(0,rx.useLayoutEffect)(()=>{let e=a.map(e=>Zj(e,t));return i.traverse(e=>{e instanceof bI&&(e.raycast=function(e,t){let n=[];bI.prototype.raycast.call(this,e,n),t.push(...n.filter(e=>!r||r(e.point)))})}),()=>e.forEach(e=>e())},[r,a,i,t]),(0,rx.useLayoutEffect)(()=>()=>a.forEach(e=>e.dispose()),[a]),(0,rE.jsxs)(rE.Fragment,{children:[(0,rE.jsx)("primitive",{object:i,dispose:null}),n&&(0,rE.jsx)(Z2,{model:i,patch:t})]})}function Z9({size:e,patch:t,isPointVisible:r,onClick:n}){let[i,a]=(0,rx.useState)(!1),s=(0,rx.useMemo)(()=>{let e=document.createElement("canvas");e.width=e.height=256;let t=e.getContext("2d");if(t.lineJoin="miter",t.lineCap="round",t.beginPath(),i)t.rect(16,16,224,224);else for(let[e,r,n,i]of[[16,16,1,1],[240,16,-1,1],[16,240,1,-1],[240,240,-1,-1]])t.moveTo(e+22*n,r),t.lineTo(e,r),t.lineTo(e,r+22*i);t.strokeStyle="rgba(255,255,255,.80)",t.lineWidth=5,t.stroke(),t.strokeStyle=i?"#59636d":"rgba(70,80,90,.60)",t.lineWidth=2,t.stroke(),t.beginPath(),t.arc(128,128,29,0,2*Math.PI),t.fillStyle=i?"#ffffff":"#f5f6f7",t.fill(),t.strokeStyle="rgba(35,45,55,.32)",t.lineWidth=2,t.stroke(),t.beginPath(),t.moveTo(117,128),t.lineTo(139,128),t.moveTo(128,117),t.lineTo(128,139),t.strokeStyle="#35414d",t.lineWidth=3,t.stroke();let r=new yH(e);return r.colorSpace="srgb",r},[i]),o=(0,rx.useMemo)(()=>new bA({map:s,transparent:!0,depthWrite:!1,toneMapped:!1}),[s]);return(0,rx.useLayoutEffect)(()=>{let e=Zj(o,t,{shading:!1});return o.alphaToCoverage=!1,e},[o,t]),(0,rx.useLayoutEffect)(()=>()=>{o.dispose(),s.dispose()},[o,s]),(0,rE.jsx)("mesh",{material:o,renderOrder:2,onPointerOver:()=>a(!0),onPointerOut:()=>a(!1),raycast:function(e,t){let n=[];bI.prototype.raycast.call(this,e,n),t.push(...n.filter(e=>!r||r(e.point)))},onPointerDown:e=>{e.stopPropagation(),e.nativeEvent.stopPropagation()},onClick:e=>{e.stopPropagation(),n()},children:(0,rE.jsx)("planeGeometry",{args:[e,e]})})}function Z4({isPointVisible:e,visible:t,dragging:r,panelKey:n,number:i,size:a,depth:s,patch:o}){let l=ZM(),{t:c}=sf(),{camera:u,gl:d}=IY(),h=(0,rx.useRef)(null),p=(0,rx.useRef)(null),f=(0,rx.useMemo)(()=>new g0,[]),A=(0,rx.useMemo)(()=>{let e=document.createElement("canvas");e.width=e.height=128;let t=e.getContext("2d");for(let e of(t.beginPath(),t.arc(64,64,61,0,2*Math.PI),t.fillStyle="#f5f6f7",t.fill(),t.strokeStyle="rgba(35,45,55,.32)",t.lineWidth=2,t.stroke(),t.fillStyle="#35414d",[40,64,88]))t.beginPath(),t.arc(e,64,5,0,2*Math.PI),t.fill();let r=new yH(e);return r.colorSpace="srgb",r},[]),g=(0,rx.useMemo)(()=>new bA({map:A,transparent:!0,depthWrite:!1,toneMapped:!1}),[A]);(0,rx.useLayoutEffect)(()=>{let e=Zj(g,o,{shading:!1});return g.alphaToCoverage=!1,e},[g,o]),(0,rx.useLayoutEffect)(()=>()=>{g.dispose(),A.dispose()},[g,A]),IX(()=>{h.current&&p.current&&(h.current.getWorldPosition(f),p.current.tabIndex=!r&&(!e||e(f))?0:-1)});let m=()=>{if(!h.current)return;f.set(.05,-.05,0),h.current.localToWorld(f).project(u);let e=d.domElement.getBoundingClientRect();l.openMenu(n,{x:e.left+(f.x+1)*e.width/2,y:e.top+(1-f.y)*e.height/2})};return(0,rE.jsxs)("group",{ref:h,position:[a/2-a/12-.05,-a/2+a/20+.05,s+.002],children:[(0,rE.jsx)("mesh",{name:"panel-actions",material:g,visible:t&&!r,renderOrder:3,raycast:function(n,i){if(!t||r)return;let a=[];bI.prototype.raycast.call(this,n,a),i.push(...a.filter(t=>t.uv&&.48>=Math.hypot(t.uv.x-.5,t.uv.y-.5)&&(!e||e(t.point))))},onPointerDown:e=>{e.stopPropagation(),e.nativeEvent.stopPropagation()},onPointerUp:e=>e.stopPropagation(),onClick:e=>{e.stopPropagation(),m()},children:(0,rE.jsx)("planeGeometry",{args:[.1,.1]})}),(0,rE.jsx)(TL,{style:{pointerEvents:"none"},children:(0,rE.jsx)("button",{ref:p,type:"button","data-panel-key":n,className:"sr-only","aria-label":c("wallPanel.panelActions",{number:i}),"aria-haspopup":"menu",onFocus:()=>l.select(n),onClick:e=>{e.stopPropagation(),m()}})})]})}function Z5({glbUrl:e,position:t,quaternion:r,materialPatch:n,isPointVisible:i,onDragStart:a,onDrag:s,onDragEnd:o}){let{data:l}=od({...Zw(e),enabled:!0,suspense:!0,throwOnError:oi,placeholderData:void 0},s2,void 0),c=ZM(),{room:u}=W5(),[d,h]=(0,rx.useState)(null),{resourceRef:p,isDragging:f,setIsDragging:A}=W6(),{gl:g}=IY(),m=f?"grabbing":d?.action?"pointer":d?"grab":"auto";(0,rx.useLayoutEffect)(()=>{let e=g.domElement.style.cursor;return g.domElement.style.cursor=m,()=>{g.domElement.style.cursor=e}},[g,m]);let v=(e,t)=>h(r=>r?.key===e&&r.action===t?r:{key:e,action:t}),b=(0,rx.useRef)(null),y=l.width,w=`${u.id}:${c.generation}`,[x,C]=(0,rx.useState)({size:y,roomKey:w,x:0,y:0});if(x.roomKey!==w)C({size:y,roomKey:w,x:0,y:0});else if(x.size!==y){let e=c.panels.reduce((e,t)=>({minX:Math.min(e.minX,t.x),maxX:Math.max(e.maxX,t.x),minY:Math.min(e.minY,t.y),maxY:Math.max(e.maxY,t.y)}),{minX:1/0,maxX:-1/0,minY:1/0,maxY:-1/0}),t=x.size-y;C({size:y,roomKey:w,x:x.x+(e.minX+e.maxX)/2*t,y:x.y+(e.minY+e.maxY)/2*t})}(0,rx.useLayoutEffect)(()=>()=>A(!1),[A]);let E=(e,t=!1)=>{let r=b.current;r&&r.pointerId===e.pointerId&&(e.stopPropagation(),b.current=null,e.target.releasePointerCapture(e.pointerId),A(!1),o(),t||r.moved||(c.select(r.key),c.closeMenu()))};return(0,rE.jsx)("group",{ref:p,position:t,quaternion:r,onPointerMissed:c.clearSelection,children:(0,rE.jsxs)("group",{position:[x.x,x.y,0],children:[c.panels.map((e,t)=>{let r=c.options.find(t=>t.material.hid===e.materialId)?.model??l;return(0,rE.jsxs)("group",{position:[e.x*y,e.y*y,0],onPointerOver:t=>{t.stopPropagation(),v(Zx(e),"panel-actions"===t.object.name)},onPointerOut:()=>h(null),onPointerDown:t=>{0===t.button&&!b.current&&(t.stopPropagation(),t.nativeEvent.stopPropagation(),b.current={x:t.clientX,y:t.clientY,key:Zx(e),moved:!1,pointerId:t.pointerId},t.target.setPointerCapture(t.pointerId),A(!0),a())},onPointerMove:t=>{v(Zx(e),"panel-actions"===t.object.name);let r=b.current;r&&r.pointerId===t.pointerId&&(t.stopPropagation(),!r.moved&&Math.hypot(t.clientX-r.x,t.clientY-r.y)>4&&(r.moved=!0,c.select(r.key),c.closeMenu()),r.moved&&s())},onPointerUp:e=>E(e),onPointerCancel:e=>E(e,!0),children:[(0,rE.jsx)(Z4,{panelKey:Zx(e),number:t+1,size:y,depth:r.depth,patch:n,isPointVisible:i,dragging:f,visible:c.selected===Zx(e)||d?.key===Zx(e)}),(0,rE.jsx)("group",{"rotation-z":-e.turns*Math.PI/2,children:(0,rE.jsx)("group",{position:r.mountingOffset,children:(0,rE.jsx)(Z3,{outlined:c.selected===Zx(e)||d?.key===Zx(e),source:r.scene,patch:n,isPointVisible:i})})})]},Zx(e))}),c.selected&&c.neighbors.map(e=>(0,rE.jsx)("group",{position:[e.x*y,e.y*y,.002],children:(0,rE.jsx)(Z9,{size:y,patch:n,isPointVisible:i,onClick:()=>c.add(e)})},Zx(e)))]})})}function Z8(e){let{glbUrl:t}=W8();return t?(0,rE.jsx)(Z5,{...e,glbUrl:t}):null}let Z6={"modelled-resource":function({position:e,quaternion:t,materialPatch:r,onDrag:n,onDragEnd:i,onDragStart:a}){let{type:s}=W9(),{glbUrl:o}=W8();return o?"rotate-on-floor"===Wv[s].manipulation?(0,rE.jsx)(ZJ,{glbUrl:o,position:e,quaternion:t,materialPatch:r}):(0,rE.jsx)(TC,{autoTransform:!1,onDrag:n,onDragEnd:i,onDragStart:a,children:(0,rE.jsx)(ZJ,{glbUrl:o,position:e,quaternion:t,materialPatch:r})}):null},"textured-resource":function({position:e,quaternion:t,materialPatch:r,onDrag:n,onDragEnd:i,onDragStart:a}){let{src:s,setLoadError:o}=W8();return s?(0,rE.jsx)(ZD,{onError:()=>o("artwork-load-failed"),children:(0,rE.jsx)(TC,{autoTransform:!1,onDrag:n,onDragEnd:i,onDragStart:a,children:(0,rE.jsx)(Z1,{src:s,position:e,quaternion:t,materialPatch:r})})}):null}};function Z7(){let{room:e}=W5(),t=IY(e=>e.scene),r=I0(xH,q2(e),e=>{e.setCrossOrigin("anonymous")});return(0,rx.useLayoutEffect)(()=>(r.colorSpace="srgb",t.background=r,()=>{t.background===r&&(t.background=null)}),[t,r]),null}function $e({plane:e,geometry:t,setPlaneRef:r}){let n={planeId:e.id,kind:e.kind};return(0,rE.jsx)("mesh",{ref:t=>r(e,t),geometry:t,userData:n,children:(0,rE.jsx)("meshBasicMaterial",{visible:!1,side:2})})}function $t(){let e,{type:t}=W9(),r=ZM(),{setLoadError:n}=W8(),i="panel-group"===(e=Wv[t]).manipulation?Z8:Z6[e.identity],{room:a}=W5(),{patchSceneLoad:s}=W6(),{gl:o,size:l,camera:c,invalidate:u,raycaster:d,pointer:h}=IY(),p=(0,rx.useMemo)(()=>a.scene??qS(),[a.scene]),[f,A]=I0(xH,[p.planeIds.dataPng,p.shading?.dataPng??"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGNoaGgAAAMEAYFL09IQAAAAAElFTkSuQmCC"]),g=function({camera:e,invalidate:t,pointer:r,raycaster:n,roomId:i,scene:a,surfaces:s}){let o=`${i}:${[...s].sort().join(",")}`,l=(0,rx.useMemo)(()=>({value:0}),[]),[c,u]=(0,rx.useReducer)(ZQ,o,ZO),d=(0,rx.useRef)(null),h=(0,rx.useRef)(new Map),p=(0,rx.useRef)(null),f=c.placementKey===o,A=f?c.planeIdMap:null,g=f&&c.planeIdMapFailed,m=f?c.resourcePose:null,v=(0,rx.useMemo)(()=>a.planes.filter(e=>s.includes(e.kind)),[a,s]),b=(0,rx.useMemo)(()=>v.map(e=>e.id),[v]),y=(0,rx.useMemo)(()=>new Map(a.planes.map(e=>{let t,r;return[e.id,(t=e.polygon3D.flatMap(e=>(function(e,t){let[r,n,i]=e;return[r*(ZI(t)*(t.camera.fx/t.camera.fy)),i,-n]})(e,a)),(r=new vq).setAttribute("position",new vL(t,3)),e.polygon3D.length>=4&&r.setIndex([0,1,2,0,2,3]),r)]})),[a]),w=(0,rx.useMemo)(()=>({artifactsReady:null!==A,placementReady:null!==m,prepareReady:null!==m}),[A,m]),x=0===v.length?"no-allowed-surface":g?"plane-id-map-decode":null,C=(0,rx.useCallback)((e,t)=>{t?h.current.set(e.id,t):h.current.delete(e.id)},[]);(0,rx.useEffect)(()=>{let e=!1;return u({type:"reset-plane-id-map",placementKey:o}),Zk(a.planeIds.dataPng,a.planeIds.width,a.planeIds.height).then(t=>{e||u({type:"set-plane-id-map",placementKey:o,planeIdMap:t})}).catch(t=>{console.error(t),e||u({type:"fail-plane-id-map",placementKey:o})}),()=>{e=!0}},[o,a.planeIds]),(0,rx.useEffect)(()=>{u({type:"reset-placement",placementKey:o}),d.current=null,l.value=0,p.current=null},[l,o]);let E=(0,rx.useCallback)((r,n,i=null)=>{let a,s=ZF(r,n,e),c=i?(a=new g0(...i).applyQuaternion(new g$(...s.quaternion)).add(new g0(...s.position)),{...s,position:a.toArray()}):s;d.current=c.activePlaneId,l.value=c.activePlaneId,u({type:"set-resource-pose",placementKey:o,resourcePose:c}),t()},[l,e,t,o]),S=(0,rx.useCallback)(t=>A?function({activePlaneId:e,allowedPlaneIds:t,camera:r,planeIdMap:n,planeMap:i,pointer:a,raycaster:s}){let o=new Set(t),l=[],c=new Set,u=e=>{!(null===e||c.has(e))&&o.has(e)&&(c.add(e),l.push(e))};for(let o of(u(ZB(a,n)),u(e),t.forEach(u),s.setFromCamera(a,r),l)){let e=i.get(o),t=e?s.intersectObject(e,!1)[0]:null;if(t)return t}return null}({activePlaneId:d.current,allowedPlaneIds:b,camera:e,planeIdMap:A,planeMap:h.current,pointer:t,raycaster:n}):null,[b,e,A,n]);(0,rx.useEffect)(()=>{if(!A||null!==m)return;let r=function({allowedPlanes:e,camera:t,planeMap:r}){let n=e[0],i=n?r.get(n.id):null;return i?ZF(i,function(e){let t=e.geometry.attributes.position,r=new g0;for(let e=0;e<t.count;e++)r.add(new g0(t.getX(e),t.getY(e),t.getZ(e)));return r.divideScalar(Math.max(1,t.count))}(i),t):null}({allowedPlanes:v,camera:e,planeMap:h.current});r&&(d.current=r.activePlaneId,l.value=r.activePlaneId,u({type:"set-resource-pose",placementKey:o,resourcePose:r}),t())},[l,v,e,t,o,A,m]);let M=(0,rx.useCallback)(()=>{let t,n=S(r);if(!n||!m){p.current=null;return}let i=ZF(n.object,n.point,e);t=new g$(...i.quaternion).invert(),p.current=new g0(...m.position).sub(new g0(...i.position)).applyQuaternion(t).toArray()},[e,S,r,m]),I=(0,rx.useCallback)(()=>{let e=S(r);e&&E(e.object,e.point,p.current)},[S,r,E]),B=(0,rx.useCallback)(()=>{p.current=null},[]),k=(0,rx.useCallback)(t=>{if(!A)return!1;let r=t.clone().project(e),n=Math.floor((r.x+1)*.5*A.width),i=Math.floor((1-r.y)*.5*A.height);for(let e=-2;e<=2;e++)for(let t=-2;t<=2;t++){let r=Math.max(0,Math.min(A.width-1,n+t)),a=Math.max(0,Math.min(A.height-1,i+e));if(A.data[a*A.width+r]===d.current)return!0}return!1},[e,A]);return{isPointerOnSurface:(0,rx.useCallback)(e=>{let t=A?ZB(e,A):null;return null!==t&&b.includes(t)},[b,A]),activePlaneIdUniform:l,isPointVisible:k,failure:x,handleDrag:I,handleDragEnd:B,handleDragStart:M,planeGeometries:y,readiness:w,resourcePose:m,setPlaneRef:C}}({camera:c,invalidate:u,pointer:h,raycaster:d,roomId:`${a.id}:${r?.generation??0}`,scene:p,surfaces:Wv[t].surfaces});!function(e,t,r){let{gl:n}=IY(),{setRotation:i,setIsDragging:a}=W6();(0,rx.useEffect)(()=>{if(!e)return;let r=n.domElement,s=null,o=e=>{e.preventDefault(),e.stopImmediatePropagation()},l=()=>{let e=s;s=null,e&&r.hasPointerCapture(e.id)&&r.releasePointerCapture(e.id),e&&a(!1)},c=e=>{if(s)return void o(e);if(!e.isPrimary||0!==e.button)return;let n=r.getBoundingClientRect();t(new gZ((e.clientX-n.left)/n.width*2-1,1-(e.clientY-n.top)/n.height*2))&&(o(e),s={id:e.pointerId,startX:e.clientX,lastX:e.clientX,rotating:!1},r.setPointerCapture(e.pointerId),a(!0))},u=e=>{if(!s||s.id!==e.pointerId||(o(e),!s.rotating&&5>Math.abs(e.clientX-s.startX)))return;s.rotating=!0;let t=e.clientX-s.lastX;s.lastX=e.clientX,i(e=>e+.5*t)},d=e=>{s?.id===e.pointerId&&(o(e),l())};return r.addEventListener("pointerdown",c,!0),r.addEventListener("pointermove",u,!0),r.addEventListener("pointerup",d,!0),r.addEventListener("pointercancel",d,!0),r.addEventListener("lostpointercapture",d,!0),window.addEventListener("blur",l),()=>{r.removeEventListener("pointerdown",c,!0),r.removeEventListener("pointermove",u,!0),r.removeEventListener("pointerup",d,!0),r.removeEventListener("pointercancel",d,!0),r.removeEventListener("lostpointercapture",d,!0),window.removeEventListener("blur",l),l()}},[e,n,t,r,a,i])}("rotate-on-floor"===Wv[t].manipulation,g.isPointerOnSurface,a.id);let m=(0,rx.useMemo)(()=>new gZ(1,1),[]),v=(0,rx.useMemo)(()=>new gZ(p.planeIds.width,p.planeIds.height),[p.planeIds.height,p.planeIds.width]),b=(0,rx.useMemo)(()=>(function(e,t,r=128){let n=ZU(t),i=function(e,t,r=128){let{width:n,height:i}=t,a=n*i,s=Number.isFinite(r)&&r>0?r:128,o=new Uint8Array(a),l=new Float64Array(a);for(let r=0;r<i;r++)for(let a=0;a<n;a++){let c=r*n+a,u=Math.min(e.width-1,Math.floor((a+.5)*e.width/n)),d=Math.min(e.height-1,Math.floor((r+.5)*e.height/i));o[c]=e.data[(d*e.width+u)*4]??0,l[c]=(t.data[4*c]??s)/(2*s)}let c=l.slice();function u(e,t){let r=Math.ceil(3*t),s=Array.from({length:r+1},(e,r)=>Math.exp(-r*r/(2*t*t))),l=e;for(let e of[!0,!1]){let t=new Float64Array(a);for(let a=0;a<i;a++)for(let c=0;c<n;c++){let u=a*n+c,d=0,h=0;for(let t=-r;t<=r;t++){let r=e?c+t:c,p=e?a:a+t;if(r<0||r>=n||p<0||p>=i)continue;let f=p*n+r;if(o[u]!==o[f])continue;let A=s[Math.abs(t)];d+=l[f]*A,h+=A}t[u]=d/h}l=t}return l}for(let e=0;e<4;e++){let t=new Float64Array(a),r=new Float64Array(a);for(let e=0;e<a;e++)e%n<n-1&&o[e]===o[e+1]&&(t[e]=c[e+1]-c[e]),e<a-n&&o[e]===o[e+n]&&(r[e]=c[e+n]-c[e]);let i=Math.max(.5,1/2**e),s=u(t,i),d=u(r,i);for(let e=0;e<a;e++)s[e]=1/(Math.abs(s[e])+.001),d[e]=1/(Math.abs(d[e])+.001);let h=u(s,i),p=u(d,i),f=new Float64Array(a).fill(1);for(let e=0;e<a;e++)h[e]=e%n<n-1&&o[e]&&o[e]===o[e+1]?.004*h[e]/(Math.abs(t[e])+.02):0,p[e]=e<a-n&&o[e]&&o[e]===o[e+n]?.004*p[e]/(Math.abs(r[e])+.02):0,f[e]+=h[e]+p[e],h[e]&&(f[e+1]+=h[e]),p[e]&&(f[e+n]+=p[e]);let A=(e,t)=>{for(let r=0;r<a;r++){let i=f[r]*e[r];r%n&&(i-=h[r-1]*e[r-1]),r%n<n-1&&(i-=h[r]*e[r+1]),r>=n&&(i-=p[r-n]*e[r-n]),r<a-n&&(i-=p[r]*e[r+n]),t[r]=i}},g=new Float64Array(a),m=new Float64Array(a),v=new Float64Array(a);A(c,v);let b=0;for(let e=0;e<a;e++)g[e]=l[e]-v[e],m[e]=g[e]/f[e],b+=g[e]*m[e];for(let e=0;e<200&&b>1e-12;e++){A(m,v);let e=0;for(let t=0;t<a;t++)e+=m[t]*v[t];if(e<=0)break;let t=b/e,r=0;for(let e=0;e<a;e++)c[e]+=t*m[e],g[e]-=t*v[e],r+=g[e]*g[e]/f[e];let n=r/b;for(let e=0;e<a;e++)m[e]=g[e]/f[e]+n*m[e];b=r}}let d=new Float32Array(4*a);for(let e=0;e<a;e++)d.set([2*c[e],0,0,1],4*e);return d}(ZU(e),n,r),a=new Uint8Array(i.length);for(let e=0;e<i.length;e+=4)a.set([Math.max(0,Math.min(255,Math.round(128*i[e]))),0,0,255],e);let s=new bU(a,n.width,n.height,1023);return s.minFilter=1006,s.magFilter=1006,s.generateMipmaps=!1,s.needsUpdate=!0,s})(f,A,p.shading?.neutral),[f,A,p.shading?.neutral]);(0,rx.useLayoutEffect)(()=>()=>b.dispose(),[b]);let y=(0,rx.useMemo)(()=>({planeIdsTexture:f,lightingTexture:b,planeIdsSize:v,viewport:m,activePlaneIdUniform:g.activePlaneIdUniform,maxRoomGain:1.1}),[g.activePlaneIdUniform,v,f,b,m]);(0,rx.useLayoutEffect)(()=>{c instanceof x9&&(c.fov=p.camera.fovYDeg),c.position.set(0,0,0),c.up.set(0,0,1),c.lookAt(0,1,0),c.updateProjectionMatrix(),u()},[c,u,p.camera.fovYDeg]),(0,rx.useLayoutEffect)(()=>{f.minFilter=1003,f.magFilter=1003,f.wrapS=1001,f.wrapT=1001,f.generateMipmaps=!1,f.needsUpdate=!0},[f]),(0,rx.useLayoutEffect)(()=>{o.getDrawingBufferSize(m),m.set(Math.max(1,m.x),Math.max(1,m.y))},[o,l.height,l.width,m]);let{artifactsReady:w,placementReady:x,prepareReady:C}=g.readiness,E=g.failure;return(0,rx.useEffect)(()=>{s({artifactsReady:w,placementReady:x,prepareReady:C})},[w,s,x,C]),(0,rx.useEffect)(()=>{E&&(!function({failure:e,planes:t,resourceType:r}){let n,i;(i=(n=t.map(e=>e.kind)).filter((e,t)=>n.indexOf(e)===t)).length>0&&i.join(", ")}({failure:E,planes:p.planes,resourceType:t}),n("room-load-failed"))},[E,p.planes,n,t]),(0,rE.jsxs)(rE.Fragment,{children:[g.resourcePose&&(0,rE.jsx)(i,{position:g.resourcePose.position,quaternion:g.resourcePose.quaternion,materialPatch:y,isPointVisible:g.isPointVisible,onDrag:g.handleDrag,onDragEnd:g.handleDragEnd,onDragStart:g.handleDragStart}),p.planes.map(e=>(0,rE.jsx)($e,{plane:e,geometry:g.planeGeometries.get(e.id),setPlaneRef:g.setPlaneRef},e.id)),(0,rE.jsx)(ZD,{onError:()=>n("room-load-failed"),children:(0,rE.jsx)(Z7,{})})]})}async function $r(e,t={}){let{client:r=Wr,...n}=t;return(await r({method:"POST",url:"/layout/GetConfig",data:e,...n})).data}let $n=["room-viewer","layout-config"],$i=[Math.PI/2,0,0];function $a(){var e;let t=od({queryKey:$n,queryFn:()=>$r(),staleTime:1/0},s2,void 0);if(t.isPending)return null;let r=(e=t.data,e?.internal?.links?.find(e=>"hdr_neutral"===e.type)?.url?.trim()||void 0);return(0,rE.jsx)(R_,{files:r?[r]:void 0,preset:r?void 0:"warehouse",environmentRotation:$i,environmentIntensity:r?.5:.9})}function $s(){return(0,rE.jsx)(R_,{files:["https://cdn.neurodyn.ai/assets/hdr/neutral.hdr"],environmentRotation:$i})}function $o({lighting:e}){return"remote-neutral-hdr"===e?(0,rE.jsx)($a,{}):(0,rE.jsx)($s,{})}function $l({ref:e,target:t}){let{camera:r,gl:n}=IY();return(0,rx.useImperativeHandle)(e,()=>({getScreenPoint(){if(!t.current)return null;let e=t.current.getWorldPosition(new g0).project(r),i=n.domElement.getBoundingClientRect();return{x:i.left+(e.x+1)*i.width/2,y:i.top+(1-e.y)*i.height/2}}}),[r,n,t]),null}let $c={position:[0,0,0],up:[0,0,1],near:.01,far:100};function $u({className:e,ref:t,captureRef:r,introductionTarget:n,focusRef:i,onSizeChange:a,...s}){let{type:o}=W9(),{glbUrl:l}=W8(),c=ZM(),u=c?.isBaseModelReady??!0,{materialSource:d}=qO(o),{room:h}=W5(),{patchSceneLoad:p}=W6(),{active:f}=RF(),A=ZI((0,rx.useMemo)(()=>h.scene??qS(),[h.scene])),g=(0,rx.useRef)(null),m=(0,rx.useRef)(!1),v=(0,rx.useCallback)(e=>{(g.current=e,"function"==typeof t)?t(e):t&&(t.current=e)},[t]),b=q7("(max-width: 639px)"),{width:y,height:w}=function(e){let t,{ref:r,box:n="content-box"}=e,[{width:i,height:a},s]=rx.useState(Ke),o=(t=rx.useRef(!1),rx.useEffect(()=>(t.current=!0,()=>{t.current=!1}),[]),rx.useCallback(()=>t.current,[])),l=rx.useRef({...Ke}),c=rx.useRef(void 0);return c.current=e.onResize,rx.useEffect(()=>{if(!r.current||"u"<typeof window||!("ResizeObserver"in window))return;let e=new ResizeObserver(([e])=>{let t="border-box"===n?"borderBoxSize":"device-pixel-content-box"===n?"devicePixelContentBoxSize":"contentBoxSize",r=Kt(e,t,"inlineSize"),i=Kt(e,t,"blockSize");if(l.current.width!==r||l.current.height!==i){let e={width:r,height:i};l.current.width=r,l.current.height=i,c.current?c.current(e):o()&&s(e)}});return e.observe(r.current,{box:n}),()=>{e.disconnect()}},[n,r,o]),{width:i,height:a}}({ref:g}),x=(0,rx.useMemo)(()=>{if(!y||!w||!A)return null;let e=y,t=w;return b?e=(t=w)*A:y/w>A?e=w*A:t=y/A,{width:e,height:t}},[y,w,A,b]);return(0,rx.useLayoutEffect)(()=>{x&&a?.(x.width,x.height)},[x,a]),(0,rx.useEffect)(()=>{if(!x||m.current)return;m.current=!0;let e=window.setTimeout(()=>{window.dispatchEvent(new Event("resize"))},250);return()=>{window.clearTimeout(e)}},[x]),(0,rx.useEffect)(()=>{p({layoutReady:null!==x})},[p,x]),(0,rx.useEffect)(()=>{"object-glb"===d&&p({materialReady:!!l&&u})},[l,d,u,p]),(0,rx.useEffect)(()=>{p({assetsReady:!f})},[f,p]),(0,rE.jsx)("div",{ref:v,className:Wb("size-full flex items-center justify-center sm:pt-21 sm:pb-12",e),...s,children:x&&(0,rE.jsx)(Rz,{className:"touch-none bg-transparent",frameloop:"demand",camera:$c,gl:{toneMapping:4,toneMappingExposure:1.2,alpha:!0,preserveDrawingBuffer:!0},style:{width:`${x.width}px`,height:`${x.height}px`},children:(0,rE.jsxs)(rx.Suspense,{fallback:null,children:[(0,rE.jsx)(ZR,{ref:r}),(0,rE.jsx)($o,{lighting:Wv[o].lighting}),(0,rE.jsx)($t,{}),n&&i&&(0,rE.jsx)($l,{ref:i,target:n})]})})})}function $d({captureRef:e,introduction:t,className:r,canvasWrapperClassName:n,controls:i,...a}){let s,o,l,c,{isDragging:u}=W6(),d=(0,rx.useRef)(null),h=(0,rx.useRef)(null),p=(0,rx.useRef)(null),f=(s=(0,rx.useRef)(null),o=(0,rx.useRef)(!1),l=(0,rx.useCallback)(()=>{null!==s.current&&cancelAnimationFrame(s.current),s.current=null},[]),c=(0,rx.useCallback)(()=>{t&&(l(),t.onCancel())},[t,l]),(0,rx.useEffect)(()=>{if(!t){o.current=!1;return}if(!t.ready){o.current&&t.onCancel();return}return s.current=requestAnimationFrame(()=>{let e=d.current,r=p.current?.getScreenPoint(),n=e?.instance.wrapperComponent,i=e?.instance.contentComponent;if(!e||!r||!n||!i)return void t.onCancel();let{scale:a,positionX:l,positionY:c}=e.instance.transformState,u=n.getBoundingClientRect(),h=Math.min(e.instance.setup.maxScale,1.28*a),f=(e,t,r)=>r<t?(t-r)/2:Math.max(t-r,Math.min(0,e)),A=f(u.width/2-(r.x-u.left-l)/a*h,u.width,i.offsetWidth*h),g=f(u.height/2-(r.y-u.top-c)/a*h,u.height,i.offsetHeight*h);o.current=!0;let m=window.matchMedia("(prefers-reduced-motion: reduce)").matches,v=performance.now(),b=r=>{let n=m?1:Math.min(1,(r-v)/700),i=(1-Math.cos(Math.PI*n))/2;e.setTransform(l+(A-l)*i,c+(g-c)*i,a+(h-a)*i,0),n<1?s.current=requestAnimationFrame(b):(s.current=null,t.onComplete())};b(v)}),()=>{l()}},[p,t,l,d]),c),A=q7("(max-width: 639px)"),g=(0,rx.useRef)(!!t);g.current=!!t;let m=(0,rx.useCallback)(()=>{A&&d.current?.centerView(void 0,g.current?0:void 0)},[A]);return(0,rE.jsxs)("div",{className:Wb("relative flex items-center justify-center overflow-hidden",r),...a,onPointerDownCapture:e=>{f(),a.onPointerDownCapture?.(e)},onTouchStartCapture:e=>{f(),a.onTouchStartCapture?.(e)},onWheelCapture:e=>{f(),a.onWheelCapture?.(e)},children:[(0,rE.jsx)(gd,{ref:d,disabled:u,children:(0,rE.jsx)(gh,{wrapperClass:"neurodyn-rzpp-wrapper size-full!",contentClass:"neurodyn-rzpp-content h-full! min-w-full sm:max-w-full",children:(0,rE.jsx)($u,{captureRef:e??h,introductionTarget:t?.target,focusRef:p,className:n,onSizeChange:m})})}),i]})}function $h({...e}){return(0,rE.jsx)(hK,{"data-slot":"popover",...e})}function $p({...e}){return(0,rE.jsx)(hX,{"data-slot":"popover-trigger",...e})}function $f({className:e,align:t="center",sideOffset:r=4,portalContainer:n,...i}){return(0,rE.jsx)(h1,{container:n,children:(0,rE.jsx)(h3,{"data-slot":"popover-content",align:t,sideOffset:r,className:Wb("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden",e),...i})})}function $A({className:e,defaultValue:t,value:r,min:n=0,max:i=100,variant:a="default","aria-label":s,"aria-labelledby":o,...l}){let c=rx.useMemo(()=>Array.isArray(r)?r:Array.isArray(t)?t:[n],[r,t,n]);return(0,rE.jsxs)(pd,{"data-slot":"slider",defaultValue:t,value:r,min:n,max:i,"data-variant":a,"aria-label":s,"aria-labelledby":o,className:Wb("relative flex w-full touch-none cursor-pointer items-center select-none data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col",e),...l,children:[(0,rE.jsx)(pv,{"data-slot":"slider-track",className:Wb("relative grow overflow-hidden rounded-full data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5","editor"===a?"bg-border-light data-[orientation=horizontal]:h-0.5":"bg-muted data-[orientation=horizontal]:h-1.5"),children:(0,rE.jsx)(py,{"data-slot":"slider-range",className:Wb("absolute data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full","editor"===a?"bg-background-blue":"bg-primary")})}),Array.from({length:c.length},(e,t)=>(0,rE.jsx)(px,{"data-slot":"slider-thumb","aria-label":s,"aria-labelledby":o,className:Wb("ring-ring/50 block shrink-0 rounded-full border bg-white transition-[color,box-shadow] focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50","editor"===a?"size-3 border-background-blue shadow-none hover:ring-2 focus-visible:ring-2":"size-4 border-primary shadow-sm hover:ring-4 focus-visible:ring-4")},t))]})}let $g=/oklch\(([0-9.]+)\s+([0-9.]+)\s+([0-9.]+)\)/;function $m(e,t){let r=e.match($g);return r?{l:Number.parseFloat(r[1]),c:Number.parseFloat(r[2]),h:Number.parseFloat(r[3])}:{l:t[0],c:t[1],h:t[2]}}function $v({data:e,foreground:t,background:r,robustness:n="M",className:i,...a}){let[s,o]=(0,rx.useState)(null);return((0,rx.useEffect)(()=>{(async()=>{try{let i=getComputedStyle(document.documentElement),a=t??i.getPropertyValue("--foreground"),s=r??i.getPropertyValue("--background"),l=$m(a,[.21,.006,285.885]),c=$m(s,[.985,0,0]),u=await Lr.toString(e,{type:"svg",color:{dark:Le(Lt({mode:"oklch",...l})),light:Le(Lt({mode:"oklch",...c}))},width:200,errorCorrectionLevel:n,margin:0});o(u)}catch(e){console.error(e)}})()},[e,t,r,n]),s)?(0,rE.jsx)("div",{className:Wb("size-full","[&_svg]:size-full",i),dangerouslySetInnerHTML:{__html:s},...a}):null}let $b=new F0,$y=$b.getDevice(),$w=$b.getOS(),$x="iOS"===$w.name,$C="Android"===$w.name,$E="mobile"===$y.type;function $S({className:e,buttonClassName:t,buttonLeadingIcon:r,buttonLabel:n,buttonSize:i,buttonVariant:a="contrast",...s}){let{type:o,width:l,height:c,name:u}=W9(),{handoff:d}=Wv[o],{src:h,tinuuid:p,widgetSession:f}=W8(),{containerRef:A,resourceRef:g}=W6(),{t:m,i18n:v}=sf(),b=function(){let{i18n:e}=sf();return"ru"===(e.resolvedLanguage??e.language)?"arizo":"vizbl"}(),[y,w]=(0,rx.useState)(""),[x,C]=(0,rx.useState)(""),[E,S]=(0,rx.useState)(()=>f?.token),[M,I]=(0,rx.useState)(!1),[B,k]=(0,rx.useState)(!1),T=(0,rx.useRef)(null),R=v.resolvedLanguage??v.language,D=qC[b],P=(0,rx.useMemo)(()=>(function({height:e,language:t,name:r,src:n,tenantConfig:i,tinuuid:a,handoff:s,type:o,width:l,widgetSessionToken:c,pageUrl:u}){if(!s)return null;if("floor"===s.destination&&a){let e=new URL(i.ROOM_URL);return e.searchParams.set("type",o),e.searchParams.set("tinuuid",a),e.searchParams.set("name",r),e.searchParams.set("language",t),c&&e.searchParams.set("widgetSessionToken",c),e.toString()}let d=new URL(i.POSTER_URL);return n&&d.searchParams.set("texture",function(e,t){if(!t||/^[a-z][a-z0-9+.-]*:/i.test(e)||e.startsWith("//"))return e;try{return new URL(e,t).href}catch{return e}}(n,u)),d.searchParams.set("texture_width",(100*l).toString()),d.searchParams.set("texture_height",(100*e).toString()),c&&d.searchParams.set("widgetSessionToken",c),d.toString()})({height:c,language:R,name:u,src:h,tenantConfig:D,tinuuid:p,handoff:d,type:o,width:l,widgetSessionToken:E,pageUrl:"u"<typeof window?void 0:window.location.href}),[h,p,d,o,l,c,u,R,D,E]),_=(0,rx.useMemo)(()=>{if(!p)return null;let e=new URL("https://appclip.apple.com/id");return e.searchParams.set("p","com.us.vizbl.Clip"),e.searchParams.set("tinuuid",p),e.toString()},[p]);async function L(){S(await f?.getTokenForRequest().catch(()=>f.token))}let N=async()=>{if(d?.ar==="appclip"){if(!p)return;if($x&&_){Wu(f,"appclip"),window.location.assign(_);return}await L(),I(!0);return}let e=T.current,t=g.current;if(e&&t)if(e.canActivateAR)try{k(!0);let e=t.clone(!0);if(e.position.set(0,0,0),$x){let t=new Nh,r=await t.parseAsync(e),n=new File([r],"scene.usdz",{type:"model/vnd.usdz+zip"});w(URL.createObjectURL(n))}else{let t=new Li,r=await t.parseAsync(e,{binary:!0}),n=new File([r],"scene.glb",{type:"model/gltf-binary"});C(URL.createObjectURL(n))}}finally{k(!1)}else await L(),I(!0)};return((0,rx.useEffect)(()=>((""!==y||""!==x)&&T.current?.activateAR(),()=>{""!==y&&URL.revokeObjectURL(y),""!==x&&URL.revokeObjectURL(x)}),[y,x]),!d||$C&&$E||"floor"===d.destination&&!p)?null:(0,rE.jsxs)("div",{className:Wb(e),...s,children:[(0,rE.jsxs)(Ww,{variant:a,size:i,disabled:B,onClick:N,className:t,children:[r,n??m("ar.viewInPlace")]}),(0,rE.jsx)(Wx,{open:M,onOpenChange:I,children:(0,rE.jsxs)(WM,{className:"gap-6 sm:max-w-120",showCloseButton:!1,portalContainer:A,children:[(0,rE.jsx)("div",{className:"flex items-center justify-center p-10 bg-constant-white rounded-2xl",children:(0,rE.jsx)($v,{className:"size-48",robustness:"H",data:P??""})}),(0,rE.jsx)("p",{className:"text-lg text-center text-text-sub font-medium",children:m("ar.scanQrCode")}),(0,rE.jsxs)("p",{className:"text-xs text-center text-text-light",children:[m("ar.deviceRequirementsDisclaimer"),(0,rE.jsx)("br",{}),(0,rE.jsx)("a",{href:D.TERMS_URL,target:"_blank",rel:"noopener noreferrer",className:"underline underline-offset-2 transition-colors duration-300 hover:text-text-dark",style:{textDecoration:"underline",textUnderlineOffset:"2px"},children:m("legal.termsOfUse")})," ",m("legal.conjunction")," ",(0,rE.jsx)("a",{href:D.PRIVACY_URL,target:"_blank",rel:"noopener noreferrer",className:"underline underline-offset-2 transition-colors duration-300 hover:text-text-dark",style:{textDecoration:"underline",textUnderlineOffset:"2px"},children:m("legal.privacyPolicy")})]}),(0,rE.jsx)(WE,{asChild:!0,children:(0,rE.jsx)(Ww,{variant:"contrast",size:"lg",children:m("close")})})]})}),(0,rE.jsx)("model-viewer",{ref:T,className:"fixed w-px h-px opacity-0 pointer-events-none",src:x,iosSrc:y,reveal:"manual",ar:!0,cameraControls:!0,arPlacement:"wall",arModes:"webxr",arScale:"fixed",shadowIntensity:1,interactionPromptThreshold:100})]})}async function $M(e){await navigator.clipboard.writeText(e)}function $I({captureRef:e,fallbackToClipboard:t=!1,fileName:r="room-scene.png",shareMessage:n}){let[i,a]=(0,rx.useState)(!1),[s,o]=(0,rx.useState)(!1),l=(0,rx.useMemo)(()=>"u">typeof navigator&&"function"==typeof navigator.share||t&&"u">typeof navigator&&"function"==typeof navigator.clipboard?.writeText,[t]),c=(0,rx.useCallback)(async()=>{if(!l)return;let i="u">typeof navigator&&"function"==typeof navigator.share,s=window.location.href,o=`${n}
|
|
7656
|
+
${s}`;a(!0);try{if(!i&&t)return void await $M(o);let n=e.current;if(n)try{let e=await n.capture(),t=new File([e],r,{type:e.type||"image/png"});if(navigator.canShare?.({files:[t]}))return void await navigator.share({text:o,files:[t]})}catch(e){console.error("Failed to generate scene screenshot for sharing",e)}await navigator.share({text:o,url:s})}catch(e){e instanceof DOMException&&"AbortError"===e.name||console.error("Failed to share scene",e)}finally{a(!1)}},[l,e,t,r,n]);return{canShare:l,download:(0,rx.useCallback)(async()=>{let t=e.current;if(t){o(!0);try{var n;let e,i;n=await t.capture(),e=URL.createObjectURL(n),(i=document.createElement("a")).href=e,i.download=r,document.body.append(i),i.click(),i.remove(),URL.revokeObjectURL(e)}catch(e){console.error("Failed to download scene screenshot",e)}finally{o(!1)}}},[e,r]),isDownloading:s,isSharing:i,share:c}}function $B({captureRef:e}){let{type:t}=W9(),{containerRef:r,angle:n,rotation:i,setAngle:a,setRotation:s}=W6(),{t:o}=sf(),l=q7("(max-width: 639px)"),{canShare:c,isSharing:u,share:d}=$I({captureRef:e,shareMessage:o(`shareMessage.${t}`)});return(0,rE.jsxs)(rE.Fragment,{children:[(0,rE.jsx)($S,{className:"absolute bottom-4 left-4 sm:bottom-6 sm:left-6"}),(0,rE.jsxs)("div",{className:"absolute right-4 bottom-4 inline-flex items-center gap-2 sm:right-6 sm:bottom-6",children:[(0,rE.jsxs)($h,{children:[(0,rE.jsx)($p,{asChild:!0,children:(0,rE.jsxs)(Ww,{variant:"contrast",size:l?"icon":"default",children:[(0,rE.jsx)(Wj,{className:"size-5"}),(0,rE.jsx)("span",{className:"sr-only sm:not-sr-only",children:o("scene.tunePosition")})]})}),(0,rE.jsx)($f,{className:"px-3 py-3.5 bg-button-dark border-button-dark text-text-white",side:"top",align:"end",portalContainer:r,children:(0,rE.jsxs)(qt,{children:[(0,rE.jsxs)(qn,{orientation:"horizontal",children:[(0,rE.jsx)(qa,{children:o("scene.rotation")}),(0,rE.jsx)($A,{value:[i],onValueChange:([e])=>s(e??0),min:-180,max:180,step:1,className:"w-40.5 **:data-[slot=slider-range]:bg-transparent **:data-[slot=slider-thumb]:border-background-base-3 **:data-[slot=slider-thumb]]:bg-background-base-3 **:data-[slot=slider-track]:bg-icons-normal","aria-label":o("scene.rotation")})]}),(0,rE.jsxs)(qn,{orientation:"horizontal",children:[(0,rE.jsx)(qa,{children:o("scene.angle")}),(0,rE.jsx)($A,{value:[n],onValueChange:([e])=>a(e??0),max:75,min:-75,step:1,className:"w-40.5 **:data-[slot=slider-range]:bg-transparent **:data-[slot=slider-thumb]:border-background-base-3 **:data-[slot=slider-thumb]]:bg-background-base-3 **:data-[slot=slider-track]:bg-icons-normal","aria-label":o("scene.angle")})]})]})})]}),(0,rE.jsxs)(Ww,{variant:"contrast",size:l?"icon":"default",disabled:!c||u,onClick:d,children:[(0,rE.jsx)(WV,{className:"size-5"}),(0,rE.jsx)("span",{className:"sr-only sm:not-sr-only",children:o("scene.share")})]}),l&&(0,rE.jsxs)($h,{children:[(0,rE.jsx)($p,{asChild:!0,children:(0,rE.jsx)(Ww,{variant:"contrast",size:"icon",children:(0,rE.jsx)(WG,{})})}),(0,rE.jsxs)($f,{className:"grid gap-5",portalContainer:r,children:[(0,rE.jsx)(qz,{}),(0,rE.jsx)(qZ,{})]})]})]})]})}function $k({variant:e,open:t,portalContainer:r,showDialogCloseButton:n=!1,onOpenChange:i,onTryAgain:a,onCancel:s}){let{t:o}=sf(),l=e?o("custom-interior-processing"===e?"floor.error.processingBody":"viewer-load-failed"===e?"floor.error.loadBody":"artwork-load-failed"===e||"room-load-failed"===e?`loadError.${e}`:`accessError.${e}`):"";return(0,rE.jsx)(Wx,{open:t,onOpenChange:i,children:(0,rE.jsxs)(WM,{portalContainer:r,showCloseButton:!1,className:"w-full max-w-85 gap-4 rounded-2xl p-6 text-center sm:max-w-85 sm:p-6",onInteractOutside:e=>{e.preventDefault()},children:[(0,rE.jsxs)("div",{className:"grid gap-1",children:[(0,rE.jsx)(Wk,{children:o("floor.error.title")}),(0,rE.jsx)(WT,{className:"typo-base-14 font-medium text-text-base",children:l})]}),(0,rE.jsxs)("div",{className:"grid gap-2",children:[a&&(0,rE.jsxs)(Ww,{variant:"contrast",onClick:a,children:[(0,rE.jsx)(WF,{"aria-hidden":"true"}),o("floor.error.tryAgain")]}),s&&(0,rE.jsx)(Ww,{variant:"outline",onClick:s,children:o("floor.error.cancel")}),n&&(0,rE.jsx)(WE,{asChild:!0,children:(0,rE.jsx)(Ww,{variant:"outline",children:o("close")})})]})]})})}function $T({rooms:e,customRooms:t,selectedRoomId:r,isInvalidFile:n,uploadRetryRequestId:i=0,showCloseButton:a=!1,onSelectRoom:s,onUploadFile:o}){let l,{t:c}=sf(),u=(0,rx.useId)(),d=(0,rx.useRef)(null);function h(e){return e.map(e=>(0,rE.jsxs)("button",{type:"button",className:"group relative aspect-[4/3] overflow-hidden rounded-2xl bg-background-base text-left transition focus-visible:ring-2 focus-visible:ring-icons-normal focus-visible:outline-hidden","aria-pressed":e.id===r,onClick:()=>s(e.id),children:[(0,rE.jsx)("img",{crossOrigin:"anonymous",src:q2(e),alt:"",decoding:"async",className:"size-full scale-[1.02] transform-gpu object-cover transition duration-200 group-hover:scale-105"}),(0,rE.jsx)("span",{className:"typo-base-12 absolute inset-x-0 bottom-0 truncate bg-linear-to-t from-black/45 via-black/10 to-transparent px-3 py-2 text-constant-white",children:c(`rooms.${e.id}`,{defaultValue:e.name})})]},e.id))}return(0,rx.useEffect)(()=>{i>0&&d.current?.click()},[i]),(0,rE.jsxs)("section",{"aria-labelledby":"floor-interior-selection-title",className:"relative mx-auto grid h-auto min-h-0 max-h-[calc(100svh-8px)] w-full max-w-151 grid-rows-[auto_auto_minmax(0,1fr)_auto] gap-4 overflow-hidden rounded-t-2xl rounded-b-none bg-background-containers p-4 shadow-[var(--shadow-login)] sm:my-4 sm:max-h-[calc(100svh-32px)] sm:rounded-2xl sm:p-6","data-testid":"floor-interior-selection-panel","data-room-selection-panel":!0,children:[a&&(l=(0,rE.jsx)(Ww,{type:"button",variant:"outline",size:"icon",className:"absolute top-4 right-4 sm:top-6 sm:right-6","aria-label":c("close"),"data-testid":"floor-interior-selection-icon-close",children:(0,rE.jsx)(W_,{})}),(0,rE.jsx)(WE,{asChild:!0,children:l})),(0,rE.jsx)("h2",{id:"floor-interior-selection-title",className:"typo-base-16 font-medium sm:typo-base-18 text-text-dark",children:c("floor.interiorSelection.title")}),(0,rE.jsxs)("div",{className:"grid gap-2","data-testid":"floor-interior-selection-upload",children:[(0,rE.jsxs)("label",{htmlFor:u,className:"flex min-h-15 cursor-pointer items-center justify-center gap-2 rounded-xl border border-dashed border-background-blue bg-background-blue-transparent px-4 text-center typo-button-normal text-background-blue opacity-80 transition hover:bg-background-blue-transparent/80",onDragOver:e=>e.preventDefault(),onDrop:function(e){e.preventDefault();let t=e.dataTransfer.files[0];t&&o(t)},children:[(0,rE.jsx)(WD,{className:"size-5 text-background-blue"}),c("floor.interiorSelection.uploadPhoto"),(0,rE.jsx)("input",{ref:d,id:u,type:"file",accept:"image/*",className:"sr-only",onChange:function(e){let t=e.target.files?.[0];e.target.value="",t&&o(t)}})]}),n&&(0,rE.jsx)("p",{className:"typo-base-12 font-medium text-destructive",children:c("floor.interiorSelection.invalidFile")})]}),(0,rE.jsx)("div",{className:"grid min-h-0 overflow-y-auto overflow-x-hidden overscroll-contain pr-1 [scrollbar-width:none] [-ms-overflow-style:none] [&::-webkit-scrollbar]:hidden","data-testid":"floor-interior-selection-scroll-content",children:(0,rE.jsxs)("div",{className:"grid min-h-max gap-4",children:[t.length>0&&(0,rE.jsxs)("div",{className:"grid gap-3",children:[(0,rE.jsx)("h3",{className:"typo-base-16 font-medium text-text-light",children:c("floor.interiorSelection.customTitle")}),(0,rE.jsx)("div",{className:"grid grid-cols-2 gap-3 sm:grid-cols-3","data-testid":"floor-custom-interior-selection-grid",children:h(t)})]}),(0,rE.jsxs)("div",{className:"grid gap-3",children:[(0,rE.jsx)("h3",{className:"typo-base-16 font-medium text-text-light",children:c("floor.interiorSelection.presetsTitle")}),(0,rE.jsx)("div",{className:"grid grid-cols-2 gap-3 sm:grid-cols-3","data-testid":"floor-preset-interior-selection-grid",children:h(e)})]})]})}),a&&(0,rE.jsx)(WB,{className:"-mt-2 shrink-0 p-0 sm:mt-0",children:(0,rE.jsx)(WE,{asChild:!0,children:(0,rE.jsx)(Ww,{variant:"outline",className:"w-full",children:c("close")})})})]})}function $R(e){return(0,rE.jsx)("div",{className:"absolute inset-0 z-20 grid items-end p-0 sm:items-center sm:p-4","data-testid":"floor-interior-selection-overlay",children:(0,rE.jsx)($T,{...e})})}function $D({open:e,showCloseButton:t=!0,portalContainer:r,onOpenChange:n,...i}){let{t:a}=sf();return(0,rE.jsx)(Wx,{open:e,onOpenChange:n,children:(0,rE.jsxs)(WM,{contentInsideOverlay:!0,portalContainer:r,showCloseButton:!1,"data-testid":"floor-interior-selection-overlay",className:"top-auto bottom-0 grid max-h-[calc(100svh-8px)] w-[calc(100%-16px)] min-w-0 max-w-none translate-y-0 overflow-hidden rounded-t-2xl rounded-b-none border-none bg-transparent p-0 shadow-none sm:top-[50%] sm:bottom-auto sm:w-full sm:max-w-none sm:translate-y-[-50%] sm:rounded-none sm:p-4",children:[(0,rE.jsx)(Wk,{className:"sr-only",children:a("floor.interiorSelection.title")}),(0,rE.jsx)(WT,{className:"sr-only"}),(0,rE.jsx)($T,{...i,showCloseButton:t})]})})}let $P="data-material-selection-action",$_="data-material-selection-panel";function $L(){let{t:e}=sf(),{type:t}=W9();return e(`floor.materialSelection.${Wv[t].catalogTitle}`)}function $N({className:e,gridClassName:t,titleClassName:r,onOpenChange:n,...i}){let a=$L(),s=(0,rx.useRef)(null),{fetchNextMaterialsPage:o,hasNextPage:l,isFetchingNextPage:c,isLoading:u,materialItems:d,selectMaterial:h,selectedMaterialId:p}=function({includeEmbeddedObject:e=!1}={}){var t;let{material:r,tinuuid:n,embeddedObject:i,selectedObject:a,setMaterial:s,setTinuuid:o,apiKey:l,baseURL:c,source:u,widgetSession:d,setAccessError:h,setLoadError:p}=W8(),{type:f,name:A}=W9(),g=i?.owner?.uuid,{data:m,error:v,isFetchingNextPage:b,fetchNextPage:y,hasNextPage:w,isLoading:x}=od({queryKey:["room-viewer","public-objects",{apiKey:(t={apiKey:l,baseURL:c,source:u,resourceType:f}).apiKey??null,ownerUuid:g??null,resourceType:t.resourceType??null,source:t.source}],enabled:!!g,queryFn:({pageParam:e,signal:t})=>{if(!g)throw Error("Owner uuid is required.");return Wf(g,e,{apiKey:l,baseURL:c,signal:t,source:u,widgetSession:d,resourceType:f})},initialPageParam:1,getNextPageParam:(e,t,r)=>void 0!==e.pages_count?r<e.pages_count?r+1:void 0:e.objs?.length?r+1:void 0,getPreviousPageParam:(e,t,r)=>r>1?r-1:void 0},ou,void 0),{requiresMaterialModel:C}=qO(f),{getCollapseKey:E}=qL(f),{catalogsEveryMaterial:S}=qN(f),{catalogLabel:M,composition:I}=Wv[f],B=(0,rx.useMemo)(()=>m?.pages.flatMap(e=>e.objs??[])??[],[m]),k=(0,rx.useMemo)(()=>"color-design"===I?B.filter(e=>e.tinuuid&&!e.kit?.uuid&&e.materials?.[0]?.native?.glbUrl):[],[I,B]),T=oc({queries:k.map(e=>({queryKey:Wh(e.tinuuid,{apiKey:l,baseURL:c,source:u,resourceType:f}),queryFn:({signal:t})=>Wp(e.tinuuid,{apiKey:l,baseURL:c,signal:t,source:u,widgetSession:d,resourceType:f})}))}),R=B.flatMap(e=>{let t=T[k.indexOf(e)];return t?.isPending||t?.isError?[]:[{...e,kit:t?.data?.kit??e.kit}]}),D=(0,rx.useMemo)(()=>{let t={requiresMaterialModel:C,getCollapseKey:E};if(e)return qk([...i?.tinuuid&&i.materials?.[0]?[i]:[],...R],null,t);return qk(R,i,t)},[i,R,E,e,C]),P=(0,rx.useMemo)(()=>D.flatMap(e=>{if(!e.tinuuid)return[];let t="color-design"===I&&e.kit?.uuid,r=S&&!t?e.materials:e.materials?.slice(0,1);return r?.map(t=>{let r=qU(t);return r&&e.tinuuid?{materialId:r,name:("material-name"===M?t.name:e.kit?.name??e.name)??t.name??"",productName:qQ(f,e,t,A),material:t,tinuuid:e.tinuuid}:null}).filter(e=>null!==e)??[]}),[S,M,I,D,f,A]),_="color-design"===I&&a?.tinuuid===n&&a?.kit?.uuid?D.find(e=>E(e)===E(a)):void 0,L=_?.tinuuid!==n&&_?qU(_.materials?.[0]??{}):r?qU(r):"",N=v??T.find(e=>e.error)?.error,F=D.find(e=>e.tinuuid===n),O=D.find(e=>e.tinuuid&&e.materials?.[0]);(0,rx.useEffect)(()=>{let e=VO(N);e?h(e):N&&p("viewer-load-failed")},[N,h,p]),(0,rx.useEffect)(()=>{m&&0===D.length&&w&&!b&&y()},[m,y,w,b,D.length]),(0,rx.useEffect)(()=>{if(null!==r)return;let e=F??O,t=e?.materials?.[0];e&&t&&e.tinuuid&&(s(t),o(e.tinuuid))},[O,F,r,s,o]);let Q=(0,rx.useCallback)(()=>{!1===w||b||y()},[y,w,b]),U=(0,rx.useCallback)(e=>{let t=D.find(t=>t.materials?.some(t=>qU(t)===e)),r=t?.materials?.find(t=>qU(t)===e);return!!t&&!!r&&!!t.tinuuid&&(s(r),o(t.tinuuid),!0)},[D,s,o]);return{fetchNextMaterialsPage:Q,hasNextPage:w,isFetchingNextPage:b,isLoading:x||T.some(e=>e.isPending),materialItems:P,selectMaterial:U,selectedMaterialId:L}}({includeEmbeddedObject:!0});(0,rx.useEffect)(()=>{let e=s.current;e&&!u&&!c&&l&&0!==d.length&&e.scrollHeight<=e.clientHeight&&o()},[o,l,c,u,d.length]);let f=(0,rx.useCallback)(e=>{let{clientHeight:t,scrollHeight:r,scrollTop:n}=e.currentTarget;n+t>=r-64&&o()},[o]),A=(0,rx.useCallback)(e=>{h(e)&&n(!1)},[n,h]);return(0,rE.jsxs)("div",{...i,className:Wb("flex min-h-0 flex-col gap-3 overflow-hidden text-text-dark outline-none",e),"data-testid":"material-selection-panel",onPointerDownCapture:e=>{e.stopPropagation(),i.onPointerDownCapture?.(e)},onMouseDownCapture:e=>{e.stopPropagation(),i.onMouseDownCapture?.(e)},children:[(0,rE.jsx)("h2",{className:Wb("typo-base-16 font-medium sm:typo-base-14 sm:font-semibold text-text-dark",r),children:a}),(0,rE.jsx)("div",{"data-testid":"material-selection-grid",ref:s,className:Wb("min-h-0 flex-1 overflow-y-auto overflow-x-hidden overscroll-contain pr-1 [scrollbar-width:none] [-ms-overflow-style:none] [&::-webkit-scrollbar]:hidden",t),onScroll:f,children:(0,rE.jsxs)("div",{className:"grid min-h-max grid-cols-3 gap-x-2 gap-y-2","data-testid":"material-selection-grid-items",children:[d.map(({materialId:e,material:t,tinuuid:r,productName:n})=>{let i,a=e===p,s=(i=t.previews?.[0],i?.subRes?.small??i?.url);return(0,rE.jsxs)("button",{type:"button","data-selected":a,"aria-pressed":a,className:"group flex min-w-0 flex-col gap-1 rounded-lg bg-background-containers text-left focus-visible:ring-2 focus-visible:ring-icons-normal focus-visible:outline-hidden",onClick:()=>A(e),onKeyDown:t=>{("Enter"===t.key||" "===t.key)&&(t.preventDefault(),A(e))},children:[(0,rE.jsxs)("span",{className:"relative grid aspect-square w-full shrink-0 place-items-center overflow-hidden rounded-lg border border-border p-1 transition group-hover:border-icons-normal",children:[s?(0,rE.jsx)("img",{src:s,alt:"",className:"size-full rounded-md object-cover"}):(0,rE.jsx)(WQ,{className:"size-6 text-icons-normal"}),a&&(0,rE.jsx)("span",{className:"absolute top-1 right-1 grid size-6 place-items-center rounded-full bg-icons-blue text-icons-white","data-testid":"material-selection-selected-check",children:(0,rE.jsx)(WP,{className:"size-4"})})]}),(0,rE.jsx)("span",{className:"typo-base-12 line-clamp-3 w-full wrap-anywhere text-text-base",children:n})]},`${r}-${e}`)}),(u||c)&&(0,rE.jsx)("div",{className:"col-span-3 grid h-16 place-items-center",children:(0,rE.jsx)(WK,{className:"size-6"})})]})})]})}function $F({open:e,portalContainer:t,onOpenChange:r}){let{t:n}=sf(),i=$L();return(0,rE.jsx)(Wx,{open:e,onOpenChange:r,children:(0,rE.jsxs)(WM,{contentInsideOverlay:!0,"data-testid":"material-selection-mobile-overlay","data-material-selection-panel":"",className:"top-auto bottom-0 flex max-h-[calc(100svh-8px)] w-[calc(100%-16px)] !max-w-none translate-y-0 flex-col gap-2 overflow-hidden rounded-t-2xl rounded-b-none p-4 sm:hidden",portalContainer:t,showCloseButton:!1,children:[(0,rE.jsx)(Wk,{className:"sr-only",children:i}),(0,rE.jsx)(WT,{className:"sr-only"}),(0,rE.jsx)($N,{className:"min-h-0",gridClassName:"max-h-none",onOpenChange:r}),(0,rE.jsx)(WB,{className:"shrink-0 p-0",children:(0,rE.jsx)(WE,{asChild:!0,children:(0,rE.jsx)(Ww,{type:"button",variant:"outline",className:"w-full",children:n("close")})})})]})})}var $O="Progress",[$Q,$U]=Ks($O),[$z,$j]=$Q($O),$G=rx.forwardRef((e,t)=>{var r,n;let{__scopeProgress:i,value:a=null,max:s,getValueLabel:o=$W,...l}=e;(s||0===s)&&!$J(s)&&console.error((r=`${s}`,`Invalid prop \`max\` of value \`${r}\` supplied to \`Progress\`. Only numbers greater than 0 are valid max values. Defaulting to \`100\`.`));let c=$J(s)?s:100;null===a||$Y(a,c)||console.error((n=`${a}`,`Invalid prop \`value\` of value \`${n}\` supplied to \`Progress\`. The \`value\` prop must be:
|
|
7657
7657
|
- a positive number
|
|
7658
7658
|
- less than the value passed to \`max\` (or 100 if no \`max\` prop is set)
|
|
7659
7659
|
- \`null\` or \`undefined\` if the progress is indeterminate.
|
|
7660
7660
|
|
|
7661
|
-
Defaulting to \`null\`.`));let u=$J(a,c)?a:null,d=$q(u)?o(u,c):void 0;return(0,rE.jsx)($U,{scope:i,value:u,max:c,children:(0,rE.jsx)(Ku.div,{"aria-valuemax":c,"aria-valuemin":0,"aria-valuenow":$q(u)?u:void 0,"aria-valuetext":d,role:"progressbar","data-state":$W(u,c),"data-value":u??void 0,"data-max":c,...l,ref:t})})});$j.displayName=$F;var $G="ProgressIndicator",$H=rx.forwardRef((e,t)=>{let{__scopeProgress:r,...n}=e,i=$z($G,r);return(0,rE.jsx)(Ku.div,{"data-state":$W(i.value,i.max),"data-value":i.value??void 0,"data-max":i.max,...n,ref:t})});function $V(e,t){return`${Math.round(e/t*100)}%`}function $W(e,t){return null==e?"indeterminate":e===t?"complete":"loading"}function $q(e){return"number"==typeof e}function $K(e){return $q(e)&&!isNaN(e)&&e>0}function $J(e,t){return $q(e)&&!isNaN(e)&&e<=t&&e>=0}function $Y({className:e,value:t,max:r=100,...n}){let i=r>0?r:100,a="number"==typeof t?Math.min(Math.max(t/i*100,0),100):0;return(0,rE.jsx)($j,{"data-slot":"progress",className:Wb("relative h-2 w-full overflow-hidden rounded-full bg-primary/20",e),value:t,max:i,...n,children:(0,rE.jsx)($H,{"data-slot":"progress-indicator",className:"h-full bg-primary transition-[width]",style:{width:`${a}%`}})})}$H.displayName=$G;let $X=[{minimumProgress:0,translationKey:"floor.processing.stages.reading"},{minimumProgress:28,translationKey:"floor.processing.stages.mapping"},{minimumProgress:56,translationKey:"floor.processing.stages.lighting"},{minimumProgress:82,translationKey:"floor.processing.stages.finalizing"},{minimumProgress:100,translationKey:"floor.processing.stages.ready"}];function $Z({isComplete:e,open:t,onCloseAnimationEnd:r,onOpenChange:n,portalContainer:i}){let{t:a}=sf(),s=(0,rx.useRef)(t),[o,l]=(0,rx.useState)(8),c=e?100:o,u=function(e){for(let t=$X.length-1;t>=0;t-=1){let r=$X[t];if(r&&e>=r.minimumProgress)return r}return $X[0]}(c);(0,rx.useEffect)(()=>{t&&!s.current&&l(8),s.current=t},[t]),(0,rx.useEffect)(()=>{if(!t||e)return;let r=window.setInterval(()=>{l(e=>Math.min(92,e+Math.max(2,Math.round((92-e)/8))))},650);return()=>window.clearInterval(r)},[e,t]);let d=(0,rE.jsxs)("div",{role:"status","aria-live":"polite",className:"grid content-start gap-4",children:[(0,rE.jsx)("h2",{className:"typo-base-18 font-medium text-text-dark",children:a("floor.processing.title")}),(0,rE.jsxs)("div",{"data-testid":"floor-processing-progress-panel",className:"grid min-h-[97px] min-w-0 content-center gap-2 overflow-hidden rounded-xl bg-background-base px-6 py-8",children:[(0,rE.jsxs)("div",{className:"flex min-w-0 items-center justify-between gap-3",children:[(0,rE.jsx)("span",{className:"typo-base-14 min-w-0 flex-1 truncate text-left font-medium text-text-light",children:a(u.translationKey)}),(0,rE.jsxs)("span",{className:"typo-base-14 shrink-0 font-medium text-text-dark",children:[c,"%"]})]}),(0,rE.jsx)($Y,{value:c,"aria-label":a("floor.processing.progressLabel"),className:"h-1 bg-background-base-3 [&_[data-slot=progress-indicator]]:bg-button-dark [&_[data-slot=progress-indicator]]:duration-500 [&_[data-slot=progress-indicator]]:ease-out"})]})]});return(0,rE.jsx)(Wx,{open:t,onOpenChange:n,children:(0,rE.jsxs)(WM,{portalContainer:i,showCloseButton:!1,"data-testid":"floor-processing-card",className:"top-auto bottom-2 w-[calc(100%-16px)] !max-w-none translate-y-0 gap-4 overflow-hidden rounded-2xl p-6 text-center sm:top-[50%] sm:bottom-auto sm:w-full sm:!max-w-[377px] sm:translate-y-[-50%] sm:p-6",onInteractOutside:e=>{e.preventDefault()},onAnimationEnd:e=>{e.currentTarget===e.target&&"closed"===e.currentTarget.getAttribute("data-state")&&r?.()},children:[(0,rE.jsx)(Wk,{className:"sr-only",children:a("floor.processing.title")}),(0,rE.jsx)(WT,{className:"sr-only",children:a(u.translationKey)}),d]})})}let $$={desktop:[{slot:"product-card",container:"leading",appearance:"card",actionLabelResourceTypeKey:"replaceProduct",actionVariant:"outline",actionSize:"sm",actionWidth:"auto"},{slot:"room-card",container:"leading",appearance:"card",actionLabelKey:"floor.interiorSelection.chooseInterior",actionVariant:"outline",actionSize:"sm"},{slot:"ar-card",container:"trailing",appearance:"card",actionVariant:"secondary",actionSize:"sm"}],tablet:[{slot:"product-card",container:"leading",appearance:"compact-card",actionLabelResourceTypeKey:"replaceProduct",actionVariant:"outline",actionSize:"sm",actionWidth:"auto"},{slot:"room-card",container:"trailing",appearance:"framed-row",actionLabelKey:"floor.interiorSelection.chooseInteriorShort",actionVariant:"outline",actionSize:"sm"},{slot:"ar-card",container:"trailing",appearance:"inline-compact",actionVariant:"secondary",actionSize:"default"}],phone:[{slot:"product-card",container:"leading",appearance:"flow-card",actionLabelResourceTypeKey:"replaceProductShort",actionVariant:"outline",actionSize:"sm",actionWidth:"fixed"},{slot:"room-card",container:"trailing",appearance:"plain-row",actionLabelKey:"floor.interiorSelection.chooseInterior",actionVariant:"outline",actionSize:"sm"},{slot:"ar-card",container:"trailing",appearance:"inline-large",actionVariant:"secondary",actionSize:"lg"}]},$0={desktop:[{slot:"product-card",container:"leading",appearance:"card",actionLabelResourceTypeKey:"replaceProduct",actionVariant:"outline",actionSize:"sm",actionWidth:"auto"},{slot:"room-card",container:"leading",appearance:"card",actionLabelKey:"floor.interiorSelection.chooseInterior",actionVariant:"outline",actionSize:"sm"}],tablet:[{slot:"product-card",container:"leading",appearance:"compact-card",actionLabelResourceTypeKey:"replaceProduct",actionVariant:"outline",actionSize:"sm",actionWidth:"auto"},{slot:"room-card",container:"trailing",appearance:"framed-row",actionLabelKey:"floor.interiorSelection.chooseInteriorShort",actionVariant:"outline",actionSize:"sm"}],phone:[{slot:"product-card",container:"leading",appearance:"flow-card",actionLabelResourceTypeKey:"replaceProductShort",actionVariant:"outline",actionSize:"sm",actionWidth:"auto"},{slot:"room-card",container:"trailing",appearance:"plain-row",actionLabelKey:"floor.interiorSelection.chooseInterior",actionVariant:"outline",actionSize:"sm"}]},$1={"inline-compact":"h-9 w-full rounded-xl","inline-large":"h-11 w-full rounded-xl"},$2={"inline-compact":"size-5","inline-large":"size-6"},$3={desktop:"floor-ar-card",tablet:void 0,phone:void 0},$9=/^[a-z][a-z\d+.-]*:/i,$4={card:"flex min-h-24 w-fit max-w-100 items-center gap-4 rounded-2xl bg-background-containers p-4 text-left text-text-dark shadow-[var(--shadow-login)]","compact-card":"flex min-h-[116px] w-fit max-w-[421px] items-center gap-4 rounded-2xl bg-background-containers p-4 text-left text-text-dark shadow-[var(--shadow-login)]","flow-card":"flex items-center justify-start gap-4 border-b border-border-light bg-background-containers p-4 text-left"},$5={card:"size-6 text-icons-normal","compact-card":"size-6 text-icons-normal","flow-card":"size-5 text-icons-normal"},$8={desktop:"floor-desktop-product-card",tablet:"floor-tablet-product-card",phone:"floor-mobile-product-card"},$6={card:"flex h-24 w-[254px] items-center gap-4 overflow-hidden rounded-2xl bg-background-containers p-4 text-left text-text-dark shadow-[var(--shadow-login)]","framed-row":"flex h-[72px] items-center justify-between gap-3 overflow-hidden rounded-2xl bg-background-containers p-4 text-left text-text-dark shadow-[var(--shadow-login)]","plain-row":"flex w-full items-center justify-between gap-3 rounded-full bg-background-containers text-left"},$7={desktop:"floor-room-card",tablet:"floor-tablet-room-card",phone:void 0},eee={desktop:"floor-desktop-room-name",tablet:"floor-tablet-room-name",phone:"floor-mobile-room-name"},eet={"product-card":function({actions:e,band:t,slot:r,presentation:n}){let i,{t:a}=sf(),{displayUnit:s,name:o,type:l}=W9(),{containerRef:c}=W6(),{material:u,selectedObject:d,tinuuid:h}=W8(),{variantItems:p,selectedTinuuid:f,selectVariant:A}=function(){var e;let{tinuuid:t,selectedObject:r,selectResourceVariant:n,apiKey:i,baseURL:a,source:s,widgetSession:o}=W8(),{type:l}=W9(),{decodeVariant:c}=qL(l),u=r?.kit?.uuid,d=r?.owner?.uuid,{data:h,fetchNextPage:p,hasNextPage:f,isFetchingNextPage:A,isFetchNextPageError:g}=od({queryKey:["room-viewer","kit-objects",{apiKey:(e={apiKey:i,baseURL:a,source:s,resourceType:l}).apiKey??null,kitUuid:u??null,ownerUuid:d??null,resourceType:e.resourceType??null,source:e.source}],enabled:!!c&&!!u&&!!d,queryFn:({pageParam:e,signal:t})=>{if(!u||!d)throw Error("Kit uuid and owner uuid are required.");return WA(u,d,e,{apiKey:i,baseURL:a,signal:t,source:s,widgetSession:o,resourceType:l})},initialPageParam:0,getNextPageParam:(e,t,r)=>void 0!==e.pages_count?r+1<e.pages_count?r+1:void 0:e.objs?.length?r+1:void 0},ou,void 0);(0,rx.useEffect)(()=>{!f||A||g||p({cancelRefetch:!1})},[p,f,A,g]);let m=(0,rx.useMemo)(()=>h?.pages.flatMap(e=>e.objs??[])??[],[h]),v=(0,rx.useMemo)(()=>m.flatMap(e=>{let t=c?.(e.description);return e.tinuuid&&e.materials?.[0]&&t?[{tinuuid:e.tinuuid,...t}]:[]}),[m,c]);return{variantItems:v,selectedTinuuid:t,selectVariant:e=>!!v.some(t=>t.tinuuid===e)&&(n(e),!0)}}(),g=$8[t],m=a(`units.${s}`),v=e.isMaterialSelectionOpen,b=a(v?"floor.scene.hideCatalog":`resourceType.${l}.${n.actionLabelResourceTypeKey}`),y=qQ(l,d,u,o),w=(i=u?.previews?.[0],i?.subRes?.small??i?.url??d?.preview?.subRes?.small??d?.preview?.url??d?.mainPreview),x=p.find(e=>e.tinuuid===f),C=function(e){let t=e?.trim();if(!t||$9.test(t)&&!/^https?:/i.test(t)||/^[./?#]/.test(t)&&!t.startsWith("//"))return;let r=t.startsWith("//")?`https:${t}`:/^https?:/i.test(t)?t:`https://${t}`;try{let e=new URL(r);if("http:"!==e.protocol&&"https:"!==e.protocol||!e.hostname)return;return e.href}catch{return}}(d?.tinuuid===h?d.destinationUrl:void 0),E=v?e.onMaterialSelectionActionPointerDown:void 0;return(0,rE.jsxs)("div",{className:$4[n.appearance],"data-chrome-slot":r,"data-neurodyn-room-viewer-product":"","data-testid":g,children:[(0,rE.jsx)("div",{className:"grid size-16 shrink-0 place-items-center overflow-hidden bg-background-base",children:w?(0,rE.jsx)("img",{src:w,alt:"",className:"size-full object-cover"}):(0,rE.jsx)(WQ,{className:$5[n.appearance]})}),(0,rE.jsxs)("div",{className:"grid min-h-16 min-w-0 flex-1 grid-cols-1 content-center gap-2",children:[(0,rE.jsxs)("div",{className:"flex min-w-0 items-start justify-between gap-2",children:[(0,rE.jsxs)("div",{className:"min-w-0",children:[(0,rE.jsx)("div",{className:"sr-only",children:a(`resourceType.${l}.productCardTitle`)}),(0,rE.jsx)("div",{className:"typo-button-normal truncate text-text-dark",children:y})]}),C&&(0,rE.jsx)("a",{href:C,target:"_blank",rel:"noopener noreferrer",className:"typo-base-12 shrink-0 text-button-primary underline-offset-2 hover:underline","data-testid":`${g}-description-link`,children:a("floor.scene.description")})]}),(0,rE.jsxs)("div",{className:"flex flex-nowrap items-center gap-2",children:[(0,rE.jsxs)(Ww,{type:"button",variant:n.actionVariant,size:n.actionSize,[$D]:!0,"aria-expanded":v,className:Wb("w-fit shrink-0","fixed"===n.actionWidth&&"w-[137px]"),onPointerDown:E?e=>{e.preventDefault(),e.stopPropagation(),E()}:void 0,onClick:v?e.closeMaterialSelection:e.openMaterialSelection,children:[v?(0,rE.jsx)(W_,{className:"size-4"}):(0,rE.jsx)(Wz,{className:"size-4"}),b]}),p.length>1&&!!x&&(0,rE.jsxs)(qs,{value:f??void 0,onValueChange:A,children:[(0,rE.jsx)(ql,{size:"sm",className:"w-fit min-w-0 shrink *:data-[slot=select-value]:block *:data-[slot=select-value]:truncate","data-testid":`${g}-variant-select`,children:(0,rE.jsx)(qo,{})}),(0,rE.jsx)(qc,{portalContainer:c,children:p.map(e=>{var t;let r;return(0,rE.jsx)(qu,{value:e.tinuuid,children:"color"in e?e.color:(t=e.size,r=t.split("\xd7").map(e=>"cm"===s?e:Math.round(qY(Number(e)/100,s)).toString()).join("\xd7"),`${r} ${m}`)},e.tinuuid)})})]})]})]})]})},"room-card":function({actions:e,band:t,slot:r,presentation:n}){let{t:i}=sf(),{room:a}=W5(),s=i(`rooms.${a.id}`,{defaultValue:a.name}),o=(0,rE.jsx)(Ww,{type:"button",variant:n.actionVariant,size:n.actionSize,className:"card"===n.appearance?"w-fit":"shrink-0",onClick:e.openInteriorSelection,children:i(n.actionLabelKey)});return"card"===n.appearance?(0,rE.jsxs)("div",{className:$6[n.appearance],"data-chrome-slot":r,"data-neurodyn-room-viewer-room":"","data-testid":$7[t],children:[(0,rE.jsx)("img",{crossOrigin:"anonymous",src:q2(a),alt:"",className:"size-16 shrink-0 rounded-lg object-cover"}),(0,rE.jsxs)("span",{className:"grid min-w-0 flex-1 content-center gap-2",children:[(0,rE.jsx)("span",{className:"typo-button-normal block min-h-[1.35em] truncate !leading-[1.35] text-text-dark","data-testid":eee[t],children:s}),o]})]}):(0,rE.jsxs)("div",{className:$6[n.appearance],"data-chrome-slot":r,"data-neurodyn-room-viewer-room":"","data-testid":$7[t],children:[(0,rE.jsxs)("span",{className:"flex min-w-0 items-center gap-2",children:[(0,rE.jsx)("img",{crossOrigin:"anonymous",src:q2(a),alt:"",className:"size-10 shrink-0 rounded-full object-cover"}),(0,rE.jsxs)("span",{className:"grid min-w-0",children:[(0,rE.jsx)("span",{className:"typo-base-12 truncate text-text-light",children:i("floor.scene.interiorCardTitle")}),(0,rE.jsx)("span",{className:"typo-button-normal min-h-[1.35em] truncate !leading-[1.35] text-text-dark","data-testid":eee[t],children:s})]})]}),o]})},"ar-card":function({band:e,slot:t,presentation:r}){let{t:n}=sf(),{room:i}=W5(),{tinuuid:a}=W8();return!a||$x&&$C?null:"card"===r.appearance?(0,rE.jsxs)("div",{className:"flex h-24 w-[280px] items-center gap-4 overflow-hidden rounded-2xl bg-background-containers p-4 text-text-dark shadow-[var(--shadow-login)]","data-chrome-slot":t,"data-neurodyn-room-viewer-try-at-home":"","data-testid":$3[e],children:[(0,rE.jsx)("img",{crossOrigin:"anonymous",src:q2(i),alt:"",className:"size-16 shrink-0 rounded-lg object-cover"}),(0,rE.jsxs)("div",{className:"grid min-w-0 flex-1 content-center gap-2",children:[(0,rE.jsx)($E,{buttonLabel:n("floor.scene.tryAtHome"),buttonVariant:r.actionVariant,buttonSize:r.actionSize,buttonClassName:"w-fit"}),(0,rE.jsx)("div",{className:"typo-base-12 truncate font-medium text-text-light",children:n("floor.scene.tryAtHomeBody")})]})]}):(0,rE.jsx)($E,{className:"w-full","data-chrome-slot":t,"data-neurodyn-room-viewer-try-at-home":"",buttonLabel:n("floor.scene.tryAtHome"),buttonLeadingIcon:(0,rE.jsx)(WW,{className:$2[r.appearance]}),buttonVariant:r.actionVariant,buttonSize:r.actionSize,buttonClassName:$1[r.appearance]})}};function eer({actions:e,band:t,entry:r}){let n=eet[r.slot];return(0,rE.jsx)(n,{actions:e,band:t,slot:r.slot,presentation:r})}function een({actions:e,band:t,container:r}){let{type:n}=W9(),i="immersive-panels"===Wv[n].presentation?$0:$$;return(0,rE.jsx)(rE.Fragment,{children:i[t].filter(e=>e.container===r).map(r=>(0,rE.jsx)(eer,{actions:e,band:t,entry:r},r.slot))})}async function eei(e,t={}){let r=t.source??"default",n={image:e};if(VL({apiKey:t.apiKey,source:r})){let e=await t.widgetSession?.getTokenForRequest();return V8(n,{baseURL:t.baseURL,headers:{"x-api-key":t.apiKey,...e?{[Ws]:e}:{}},signal:t.signal,timeout:0,params:{productType:VN({apiKey:t.apiKey,source:r,resourceType:t.resourceType})}})}return t.signal?V0(n,{signal:t.signal,timeout:0}):V0(n,{timeout:0})}let eea=[{id:0,label:"empty",rgb:[0,0,0]},{id:1,label:"floor",rgb:[32,208,96]},{id:2,label:"wall-1",rgb:[255,59,48]},{id:3,label:"wall-2",rgb:[10,132,255]},{id:4,label:"ceiling",rgb:[255,214,10]},{id:5,label:"plane-5",rgb:[191,90,242]},{id:6,label:"plane-6",rgb:[255,159,10]},{id:7,label:"plane-7",rgb:[100,210,255]},{id:8,label:"plane-8",rgb:[255,45,85]}];function ees(){try{return"1"===window.localStorage.getItem("neurodyn-room-viewer:debug-mask-export")}catch{return!1}}async function eeo(e,t){var r,n,i;let a,s,o,l,c=await (r=e.planeIds.dataPng,new Promise((e,t)=>{let n=new Image;n.onload=()=>e(n),n.onerror=()=>t(Error("Failed to load room plane id mask image.")),n.crossOrigin="anonymous",n.src=r})),u=e.planeIds.width||c.naturalWidth||c.width,d=e.planeIds.height||c.naturalHeight||c.height,h=document.createElement("canvas"),p=h.getContext("2d",{willReadFrequently:!0});if(!p)throw Error("Failed to prepare room plane mask canvas.");h.width=u,h.height=d,p.drawImage(c,0,0,u,d);let f=p.getImageData(0,0,u,d),A=document.createElement("canvas"),g=A.getContext("2d");if(!g)throw Error("Failed to prepare room debug mask canvas.");A.width=u,A.height=d;for(let e=0;e<u*d;e++){let t=4*e,r=function(e){return eea.find(t=>t.id===e)??{id:e,label:`plane-${e}`,rgb:[73*e%255,151*e%255,211*e%255]}}(f.data[t]??0);f.data[t]=r.rgb[0],f.data[t+1]=r.rgb[1],f.data[t+2]=r.rgb[2],f.data[t+3]=255}g.putImageData(f,0,0),n=await new Promise((e,t)=>{A.toBlob(r=>{r?e(r):t(Error("Failed to export room plane mask image."))},"image/png")}),s=Array.from((a=t.lastIndexOf("."))>0?t.slice(0,a):t).map(e=>{let t=e.charCodeAt(0),r="."===e||"_"===e||"-"===e;return t>=48&&t<=57||t>=65&&t<=90||t>=97&&t<=122||r?e:"-"}).join("").split("-").filter(Boolean).join("-"),i=`${s||"room"}.debug-mask.colors.png`,o=URL.createObjectURL(n),(l=document.createElement("a")).href=o,l.download=i,l.style.display="none",document.body.append(l),l.click(),l.remove(),window.setTimeout(()=>URL.revokeObjectURL(o),1e3)}let eel="custom-interiors";function eec(){return"u">typeof crypto&&"function"==typeof crypto.randomUUID?`custom-interior-${crypto.randomUUID()}`:`custom-interior-${Date.now()}-${Math.random().toString(36).slice(2)}`}function eeu(){let e="u"<typeof indexedDB?null:indexedDB;return e?new Promise((t,r)=>{let n=e.open("neurodyn-floor-custom-interiors",1);n.onupgradeneeded=()=>{let e=n.result;e.objectStoreNames.contains(eel)||e.createObjectStore(eel,{keyPath:"id"})},n.onerror=()=>r(n.error??Error("Failed to open Custom Interior store.")),n.onsuccess=()=>t(n.result)}):Promise.resolve(null)}async function eed(e,t,r=new Date){let n=await eeu();if(!n)return null;let i={id:eec(),schemaVersion:1,name:e.name,fileName:e.name,createdAt:r.toISOString(),imageBlob:e,scene:t};try{let e=n.transaction(eel,"readwrite");return e.objectStore(eel).put(i),await new Promise((t,r)=>{e.oncomplete=()=>t(),e.onerror=()=>r(e.error??Error("Custom Interior transaction failed.")),e.onabort=()=>r(e.error??Error("Custom Interior transaction aborted."))}),i}finally{n.close()}}async function eeh(){let e=await eeu();if(!e)return[];try{return await new Promise((t,r)=>{let n=e.transaction(eel,"readonly").objectStore(eel).getAll();n.onerror=()=>r(n.error??Error("Failed to read Custom Interiors.")),n.onsuccess=()=>{let e=n.result.filter(e=>1===e.schemaVersion).sort((e,t)=>Date.parse(t.createdAt)-Date.parse(e.createdAt));t(e)}})}finally{e.close()}}function eep(e){let t=[];return{rooms:e.map(e=>{let r=URL.createObjectURL(e.imageBlob);return t.push(r),{id:e.id,name:e.name,image_url:r,scene:e.scene}}),revokeObjectUrls:()=>{for(let e of t)URL.revokeObjectURL(e);t.length=0}}}let eef={placementReady:!1,prepareReady:!1,artifactsReady:!1,assetsReady:!1};function eeA(e){let t="dialog"===e?"interior-selection":"scene";return{step:t,hasSceneSelection:"scene"===t,sceneResetKey:0}}function eeg(e,t){switch(t.type){case"open-interior-selection":case"return-to-interior-selection":return{...e,step:"interior-selection"};case"dismiss-interior-selection":case"recover-to-scene":return e.hasSceneSelection?{...e,step:"scene"}:e;case"start-custom-interior-processing":return{...e,step:"processing-custom-interior"};case"commit-interior-selection":return{step:"scene",hasSceneSelection:!0,sceneResetKey:e.sceneResetKey+1}}}function eem(e,t){return!e.aborted&&t()}async function eev({abortSignal:e,apiOptions:t,commitCustomInteriorSelection:r,downloadDebugMask:n,file:i,isActive:a,isDebugMaskExportEnabled:s,onDebugMaskError:o,onPersistenceError:l,onProcessingComplete:c,predictRoomScene:u,saveCustomInterior:d,trackRuntimeCustomInterior:h,waitForProcessingCompletion:p}){let f=await u(i,{...t,signal:e});if(!eem(e,a))return null;s()&&n(f,i.name).catch(o);let A=h(i,f);return eem(e,a)&&A&&(d(i,f).catch(l),c(),await p(),eem(e,a))?(r(A),A):null}function eeb(){return new Promise(e=>window.setTimeout(e,250))}function eey(e){console.error("Failed to export room debug mask",e)}function eew(e){console.error("Failed to persist Custom Interior",e)}function eex(e){console.error("Failed to prepare Custom Interior",e)}let eeC={"immersive-room":function({showDialogCloseButton:e=!1}){var t;let{t:r}=sf(),{name:n,type:i}=W9(),{accessError:a,glbUrl:s,apiKey:o,baseURL:l,hasRooms:c,source:u,widgetSession:d,isViewerAccessPending:h,loadError:p,selectedObject:f,tinuuid:A}=W8(),{clearActiveError:g,handleAccessError:m}=function(){let{setAccessError:e,setLoadError:t}=W8();return{clearActiveError:(0,rx.useCallback)(()=>{e(null),t(null)},[e,t]),handleAccessError:e}}(),{room:v,sourceRooms:b}=W5(),{resourceRef:y,containerRef:w,setContainerRef:x,sceneLoad:C,isRoomScenePending:E}=W6(),{dialogPortalContainer:S,viewerSurface:M,viewerDialogOpen:I,onViewerDialogOpenChange:B}=W4(),[k,T]=(0,rx.useState)(!1),[R,D]=(0,rx.useState)(!1),P=(0,rx.useRef)(null),_=(0,rx.useRef)(!1),L=a??p,N=!!L,F=(t=r("floor.scene.companyFallback"),f?.owner?.name??f?.brand??t),{canShare:O,download:Q,isDownloading:U,isSharing:z,share:j}=$M({captureRef:P,fallbackToClipboard:!0,shareMessage:r(`shareMessage.${i}`)}),G=(0,rx.useCallback)(()=>{T(!1),D(!1)},[]),H=(0,rx.useCallback)(()=>{if(_.current){_.current=!1;return}T(!0),D(!1)},[]),V=(0,rx.useCallback)(()=>{_.current=!0,G()},[G]),W=(0,rx.useCallback)(()=>{D(!0),T(!1)},[]),q=function({activeError:e,apiKey:t,baseURL:r,clearActiveError:n,closeMaterialSelection:i,glbUrl:a,handleAccessError:s,hasDialogPortalContainer:o,hasRooms:l,isRoomScenePending:c,isViewerAccessPending:u,onViewerDialogOpenChange:d,resourceType:h,sceneLoad:p,source:f,sourceRooms:A,viewerDialogOpen:g,viewerSurface:m,widgetSession:v}){let b=function(e){let{patchSceneLoad:t,setAngle:r,setRotation:n}=W6();return function(e,t){let[r,n]=(0,rx.useReducer)(eeg,e,eeA),i=(0,rx.useCallback)(e=>{e(),function({patchSceneLoad:e,setAngle:t,setRotation:r}){t(0),r(0),e(eef)}(t),n({type:"commit-interior-selection"})},[t]),a=(0,rx.useCallback)(()=>{n({type:"dismiss-interior-selection"})},[]),s=(0,rx.useCallback)(()=>{n({type:"open-interior-selection"})},[]),o=(0,rx.useCallback)(()=>{n({type:"recover-to-scene"})},[]),l=(0,rx.useCallback)(()=>{n({type:"return-to-interior-selection"})},[]),c=(0,rx.useCallback)(()=>{n({type:"start-custom-interior-processing"})},[]);return(0,rx.useMemo)(()=>({...r,commitInteriorSelection:i,dismissInteriorSelection:a,openInteriorSelection:s,recoverToScene:o,returnToInteriorSelection:l,startCustomInteriorProcessing:c}),[i,a,s,o,l,c,r])}(e,(0,rx.useMemo)(()=>({patchSceneLoad:t,setAngle:r,setRotation:n}),[t,r,n]))}(m),{appendRuntimeCustomInterior:y,customRooms:w}=function({listCustomInteriors:e}){let{appendRuntimeCustomInterior:t,customRooms:r,replaceRuntimeCustomInteriors:n}=function(){let[e,t]=(0,rx.useState)(()=>[]),r=(0,rx.useRef)(null),n=(0,rx.useCallback)(e=>{r.current?.revokeObjectUrls();let n=eep(e);return r.current=n,t(n.rooms),n.rooms},[]),i=(0,rx.useCallback)((e,n)=>{let i=eep([{id:eec(),schemaVersion:1,name:e.name,fileName:e.name,createdAt:new Date().toISOString(),imageBlob:e,scene:n}]),a=i.rooms[0];if(!a)return i.revokeObjectUrls(),null;let s=r.current;return r.current={rooms:[],revokeObjectUrls:()=>{s?.revokeObjectUrls(),i.revokeObjectUrls()}},t(e=>[a,...e.filter(e=>e.id!==a.id)]),a},[]);return(0,rx.useEffect)(()=>()=>{r.current?.revokeObjectUrls()},[]),(0,rx.useMemo)(()=>({appendRuntimeCustomInterior:i,customRooms:e,replaceRuntimeCustomInteriors:n}),[i,e,n])}(),i=(0,rx.useRef)(!0);(0,rx.useEffect)(()=>(i.current=!0,()=>{i.current=!1}),[]);let a=(0,rx.useCallback)(async()=>{let t=await e();i.current&&n(t)},[e,n]);return(0,rx.useEffect)(()=>{a()},[a]),(0,rx.useMemo)(()=>({appendRuntimeCustomInterior:t,customRooms:r,replaceRuntimeCustomInteriors:n,refreshCustomInteriors:a}),[t,r,a,n])}({listCustomInteriors:eeh}),x=(0,rx.useMemo)(()=>new Set(A.map(e=>e.id)),[A]),{commitCustomInteriorSelection:C,selectInterior:E}=function(e){let{room:t,setRoomId:r,setRooms:n}=W5(),{widgetSession:i}=W8();return function({floorFlow:e,customRooms:t,selectedRoomId:r,onInteriorSelected:n,restoreSourceRooms:i,setRoomId:a,setRooms:s}){let o=(0,rx.useCallback)(t=>{e.commitInteriorSelection(()=>{s(e=>[t,...i(e).filter(e=>e.id!==t.id)]),a(t.id)}),n?.()},[e,n,i,a,s]),l=(0,rx.useCallback)(t=>{let o=t===r;o&&e.hasSceneSelection||(e.commitInteriorSelection(()=>{s(i),a(t)}),o||n?.())},[e,n,i,r,a,s]),c=(0,rx.useCallback)(n=>{if(n===r&&e.hasSceneSelection)return;let i=t.find(e=>e.id===n);i&&o(i)},[e.hasSceneSelection,o,t,r]),u=(0,rx.useCallback)(e=>{t.some(t=>t.id===e)?c(e):l(e)},[t,c,l]);return(0,rx.useMemo)(()=>({commitCustomInteriorSelection:o,selectInterior:u}),[o,u])}({...e,selectedRoomId:t.id,onInteriorSelected:()=>Wu(i,"interior_selected"),setRoomId:r,setRooms:n})}({floorFlow:b,customRooms:w,restoreSourceRooms:(0,rx.useCallback)(e=>[...A,...e.filter(e=>!x.has(e.id))],[x,A])}),S=function(e){let{setIsRoomScenePending:t}=W6();return function({apiOptions:e,floorFlow:t,commitCustomInteriorSelection:r,downloadDebugMask:n,isDebugMaskExportEnabled:i,onAccessError:a,onDebugMaskError:s,onPersistenceError:o,onProcessingError:l,predictRoomScene:c,saveCustomInterior:u,setIsRoomScenePending:d,trackRuntimeCustomInterior:h,waitForProcessingCompletion:p}){let[f,A]=(0,rx.useState)(!1),[g,m]=(0,rx.useState)(!1),[v,b]=(0,rx.useState)(null),[y,w]=(0,rx.useState)(null),[x,C]=(0,rx.useState)(!1),[E,S]=(0,rx.useState)(0),M=(0,rx.useRef)(null),I=(0,rx.useRef)(!1),B=(0,rx.useRef)(!0),k=(0,rx.useRef)(v);v&&(k.current=v),(0,rx.useEffect)(()=>(B.current=!0,()=>{B.current=!1,M.current?.abort()}),[]);let T=(0,rx.useCallback)(()=>{b(null),w(null),C(!1)},[]),R=(0,rx.useCallback)(e=>{T(),A(!1),e()},[T]),D=(0,rx.useCallback)(async f=>{if(T(),!f.type.startsWith("image/"))return void A(!0);A(!1),m(!1),t.startCustomInteriorProcessing(),I.current=!0;let g=new AbortController;M.current?.abort(),M.current=g,d(!0);try{await eev({abortSignal:g.signal,apiOptions:e,commitCustomInteriorSelection:r,downloadDebugMask:n,file:f,isActive:()=>B.current,isDebugMaskExportEnabled:i,onDebugMaskError:s,onPersistenceError:o,onProcessingComplete:()=>{m(!0)},predictRoomScene:c,saveCustomInterior:u,trackRuntimeCustomInterior:h,waitForProcessingCompletion:p})}catch(t){if(g.signal.aborted)return;let e=VO(t);if(e){I.current&&C(!0),a(e);return}if(l(t),I.current){w("custom-interior-processing"),C(!0);return}b("custom-interior-processing")}finally{M.current===g&&(M.current=null,B.current&&d(!1))}},[e,t,r,n,i,a,s,o,l,c,T,u,d,h,p]),P=(0,rx.useCallback)(()=>{T(),A(!1),t.returnToInteriorSelection(),S(e=>e+1)},[t,T]),_=(0,rx.useCallback)(()=>{T(),t.returnToInteriorSelection()},[t,T]),L=(0,rx.useCallback)(({clearError:e,closeMaterialSelection:r})=>{e(),r(),t.hasSceneSelection&&t.recoverToScene()},[t]),N=(0,rx.useCallback)(()=>{I.current=!1,C(!1),y&&(b(y),w(null))},[y]),F=(0,rx.useCallback)(()=>B.current,[]);return(0,rx.useMemo)(()=>({displayedUploadError:v??k.current,isCustomInteriorProcessingComplete:g,isInvalidFile:f,isMounted:F,isProcessingDialogClosingForError:x,pendingUploadError:y,uploadError:v,uploadRetryRequestId:E,cancelUploadError:_,handleProcessingDialogCloseAnimationEnd:N,openInteriorSelection:R,processUploadFile:D,recoverFromActiveError:L,resetUploadErrorPresentation:T,tryUploadAgain:P}),[_,N,g,f,F,x,R,y,D,L,T,P,v,E])}({...e,setIsRoomScenePending:t})}({apiOptions:(0,rx.useMemo)(()=>({resourceType:h,apiKey:t,baseURL:r,source:f,widgetSession:v}),[t,r,h,f,v]),floorFlow:b,commitCustomInteriorSelection:C,downloadDebugMask:eeo,isDebugMaskExportEnabled:ees,onAccessError:s,onDebugMaskError:eey,onPersistenceError:eew,onProcessingError:eex,predictRoomScene:eei,saveCustomInterior:eed,trackRuntimeCustomInterior:y,waitForProcessingCompletion:eeb}),{dismissInteriorSelection:M,hasSceneSelection:I,openInteriorSelection:B,sceneResetKey:k,step:T}=b,{cancelUploadError:R,displayedUploadError:D,handleProcessingDialogCloseAnimationEnd:P,isCustomInteriorProcessingComplete:_,isInvalidFile:L,isProcessingDialogClosingForError:N,openInteriorSelection:F,pendingUploadError:O,processUploadFile:Q,recoverFromActiveError:U,resetUploadErrorPresentation:z,tryUploadAgain:j,uploadError:G,uploadRetryRequestId:H}=S,V=l&&I,W=(0,rx.useRef)(e),q=!!(e&&V&&a);e&&(W.current=e);let K=(0,rx.useCallback)(()=>{V&&(z(),M())},[M,V,z]),J=(0,rx.useCallback)(()=>{i(),F(B)},[i,B,F]),Y=(0,rx.useCallback)(()=>{U({clearError:n,closeMaterialSelection:i})},[n,i,U]),X=(0,rx.useCallback)(e=>{if(!e){if(V)return void K();d?.(!1)}},[K,V,d]),Z=(0,rx.useCallback)(e=>{if(!e){if(q)return void Y();d?.(!1)}},[q,Y,d]),$=(0,rx.useCallback)(e=>{e||R()},[R]);!function({fallbackMs:e,handleProcessingDialogCloseAnimationEnd:t,isProcessingDialogClosingForError:r}){(0,rx.useEffect)(()=>{if(!r)return;let n=window.setTimeout(t,e);return()=>window.clearTimeout(n)},[e,t,r])}({fallbackMs:220,handleProcessingDialogCloseAnimationEnd:P,isProcessingDialogClosingForError:N});let ee=function({activeError:e,canRecoverFromActiveError:t,floorFlow:r,hasDialogPortalContainer:n,hasRooms:i,isProcessingDialogClosingForError:a,isRoomScenePending:s,isViewerAccessPending:o,pendingUploadError:l,sceneLoad:c,uploadError:u,viewerDialogOpen:d,viewerSurface:h}){let p="dialog"===h&&n,f=!p||d,A=i&&r.hasSceneSelection,g=i||"scene"!==r.step?r.step:"interior-selection",m=!o&&A&&(!e||t),v=A||p,b=!o&&!e&&v,y=!o&&!e&&!v&&"interior-selection"===g;return{activeErrorDialog:{open:!a&&!!e&&f,showCloseButton:!t},interiorSelection:{open:b&&"interior-selection"===g&&f,presentation:b?"dialog":y?"screen":null,shouldRender:b||y},processingDialog:{open:!e&&!u&&!l&&s&&"processing-custom-interior"===r.step&&f},scene:{isLoading:s||!Object.values(c).every(Boolean),resetKey:r.sceneResetKey,shouldRender:m,shouldRenderDialog:m},surface:{usesSiblingDialogFlow:p},uploadErrorDialog:{open:!a&&!e&&!!u&&f}}}({activeError:e,canRecoverFromActiveError:q,floorFlow:{hasSceneSelection:I,sceneResetKey:k,step:T},hasDialogPortalContainer:o,hasRooms:l,isProcessingDialogClosingForError:N,isRoomScenePending:c,isViewerAccessPending:u,pendingUploadError:O,sceneLoad:p,uploadError:G,viewerDialogOpen:g,viewerSurface:m});return{...ee,activeErrorDialog:{...ee.activeErrorDialog,onCancel:q?Y:void 0,onOpenChange:Z,onTryAgain:q?Y:void 0,variant:e??W.current},customRooms:w,interiorSelection:{...ee.interiorSelection,isInvalidFile:L,onOpenChange:X,onSelectRoom:E,onUploadFile:Q,openFromScene:J,uploadRetryRequestId:H},sourceRooms:A,processingDialog:{...ee.processingDialog,isComplete:_,onCloseAnimationEnd:P,onOpenChange:ee.surface.usesSiblingDialogFlow?d:void 0},step:T,uploadErrorDialog:{...ee.uploadErrorDialog,onCancel:R,onOpenChange:$,onTryAgain:j,variant:D}}}({activeError:L,apiKey:o,baseURL:l,clearActiveError:g,closeMaterialSelection:G,glbUrl:s,handleAccessError:m,hasDialogPortalContainer:null!==S,hasRooms:c,isRoomScenePending:E,isViewerAccessPending:h,onViewerDialogOpenChange:B,resourceType:i,sceneLoad:C,source:u,sourceRooms:b,viewerDialogOpen:I,viewerSurface:M,widgetSession:d}),K=(0,rx.useRef)(null),J=function(e,t){let[r,n]=(0,rx.useState)(!1);return e&&r&&n(!1),(0,rx.useEffect)(()=>{let r;if(e)return;let i=()=>{t.current&&(0===Number(getComputedStyle(t.current).opacity)?n(!0):r=requestAnimationFrame(i))};return r=requestAnimationFrame(i),()=>cancelAnimationFrame(r)},[e,t]),!e&&r}(q.scene.isLoading||!q.scene.shouldRender||!I,K),Y=ZM(),{pending:X,finish:Z}=function(e,t,r){let[n,i]=(0,rx.useState)({open:e,pending:e&&t,sceneKey:r});n.open!==e?i({open:e,pending:e&&t,sceneKey:r}):n.sceneKey!==r?i({...n,sceneKey:r,pending:n.pending&&null===n.sceneKey}):n.pending&&!t&&i({...n,pending:!1});let a=(0,rx.useCallback)(()=>i(e=>({...e,pending:!1})),[]);return{pending:e&&n.pending,finish:a}}(I,q7("(max-width: 639px)")&&"focus-resource"===Wv[i].introduction,q.scene.shouldRender?`${q.scene.resetKey}:${A??""}`:null),$=Y?.select,ee=(0,rx.useCallback)(()=>{Z(),$?.("0,0")},[Z,$]),et=(0,rx.useMemo)(()=>X?{ready:J,target:y,onComplete:ee,onCancel:Z}:void 0,[X,ee,Z,J,y]),er=q.interiorSelection.openFromScene,en=(0,rx.useCallback)(()=>{G(),er()},[G,er]),ei=(0,rx.useMemo)(()=>({isMaterialSelectionOpen:k,openMaterialSelection:H,closeMaterialSelection:G,onMaterialSelectionActionPointerDown:V,openInteriorSelection:en}),[G,V,en,H,k]),ea=(0,rx.useMemo)(()=>({isMaterialSelectionOpen:R,openMaterialSelection:W,closeMaterialSelection:G,openInteriorSelection:en}),[G,en,W,R]);(0,rx.useEffect)(()=>{if(k)return document.addEventListener("pointerdown",e),document.addEventListener("keydown",t),()=>{document.removeEventListener("pointerdown",e),document.removeEventListener("keydown",t)};function e(e){var t;(t=e.target)instanceof Element&&t.closest(`[${$D}], [${$P}]`)||T(!1)}function t(e){"Escape"===e.key&&T(!1)}},[k]);let es=q.surface.usesSiblingDialogFlow?S:w,eo=(0,rE.jsxs)(rE.Fragment,{children:[(0,rE.jsx)("div",{className:"absolute inset-0 bg-constant-black","data-testid":"floor-scene-background-base"}),(0,rE.jsx)("div",{"aria-hidden":!0,className:"absolute top-[-52px] right-[-1.36%] bottom-[-52px] left-[-1.36%] blur-[40px]","data-testid":"floor-blur-background",children:(0,rE.jsx)("img",{crossOrigin:"anonymous",src:q2(v),alt:"",className:"block size-full max-w-none object-cover object-center opacity-50"})}),(0,rE.jsxs)("div",{className:"pointer-events-none absolute top-0 right-0 left-0 z-20 flex min-h-22 items-start justify-between gap-4 bg-linear-to-b from-black/75 via-black/35 to-transparent px-4 pt-4 pb-8 text-constant-white sm:px-6 lg:min-h-25 lg:pt-6",children:[(0,rE.jsx)("div",{className:"min-w-0 pt-1",children:(0,rE.jsx)("h1",{"data-testid":"floor-scene-header-company",className:"typo-base-16 truncate font-medium lg:typo-base-18",children:F})}),(0,rE.jsxs)("div",{className:"pointer-events-auto inline-flex shrink-0 items-center gap-2",children:[(0,rE.jsxs)(Ww,{type:"button",variant:"secondary","aria-label":r("floor.scene.share"),"data-neurodyn-room-viewer-share":"",disabled:!O||z,onClick:j,className:"size-10 rounded-full px-0 lg:h-9 lg:w-auto lg:rounded-xl lg:px-3.5",children:[(0,rE.jsx)(WV,{className:"size-5"}),(0,rE.jsx)("span",{className:"hidden lg:inline",children:r("floor.scene.share")})]}),(0,rE.jsxs)(Ww,{type:"button",variant:"secondary","aria-label":r("floor.scene.download"),"data-neurodyn-room-viewer-download":"",disabled:U,onClick:Q,className:"size-10 rounded-full px-0 lg:h-9 lg:w-auto lg:rounded-xl lg:px-3.5",children:[(0,rE.jsx)(WL,{className:"size-5"}),(0,rE.jsx)("span",{className:"hidden lg:inline",children:r("floor.scene.download")})]}),e&&(0,rE.jsx)(WE,{asChild:!0,children:(0,rE.jsxs)(Ww,{type:"button",variant:"secondary","aria-label":r("close"),className:"size-10 rounded-full px-0 lg:h-9 lg:w-auto lg:rounded-xl lg:px-3.5",children:[(0,rE.jsx)("span",{className:"hidden lg:inline",children:r("close")}),(0,rE.jsx)(W_,{className:"!size-5"})]})})]})]}),(0,rE.jsxs)("div",{className:"relative z-10 size-full min-h-0 min-w-0","data-testid":"floor-scene-viewport",children:[(0,rE.jsx)($u,{introduction:et,captureRef:P,className:"relative z-10 size-full min-h-0",canvasWrapperClassName:"p-0 sm:pt-0 sm:pb-0"},q.scene.resetKey),(0,rE.jsx)("div",{"aria-hidden":!q.scene.isLoading,className:Wb("absolute inset-0 z-10 flex items-center justify-center bg-radial from-background-containers to-background-base-2 transition-opacity",q.scene.isLoading?"opacity-100 pointer-events-auto duration-0":"opacity-0 pointer-events-none duration-250ms"),ref:K,"data-testid":"floor-scene-loader",style:{transitionDuration:q.scene.isLoading?"0ms":"250ms"},children:(0,rE.jsx)(WK,{variant:"logo"})})]}),(0,rE.jsxs)("div",{className:"pointer-events-none absolute right-6 bottom-6 left-6 z-20 hidden items-end justify-between gap-4 lg:flex","data-testid":"floor-desktop-cards",children:[(0,rE.jsx)("div",{className:"pointer-events-auto flex min-w-0 items-stretch gap-3",children:(0,rE.jsx)(een,{actions:ei,band:"desktop",container:"leading"})}),(0,rE.jsx)("div",{className:"pointer-events-auto",children:(0,rE.jsx)(een,{actions:ei,band:"desktop",container:"trailing"})})]}),(0,rE.jsxs)("div",{className:"pointer-events-none absolute right-6 bottom-6 left-6 z-20 hidden items-end justify-between gap-2 sm:flex lg:hidden","data-testid":"floor-tablet-cards",children:[(0,rE.jsx)("div",{className:"pointer-events-auto flex min-w-0 items-stretch gap-3",children:(0,rE.jsx)(een,{actions:ei,band:"tablet",container:"leading"})}),(0,rE.jsx)("div",{className:"pointer-events-auto grid w-[254px] gap-2",children:(0,rE.jsx)(een,{actions:ei,band:"tablet",container:"trailing"})})]}),(0,rE.jsxs)("div",{className:"relative z-20 grid bg-background-containers text-text-dark shadow-[var(--shadow-login)] sm:hidden","data-testid":"floor-mobile-cards",children:[(0,rE.jsx)("div",{className:"grid",children:(0,rE.jsx)(een,{actions:ea,band:"phone",container:"leading"})}),(0,rE.jsx)("div",{className:"grid gap-4 bg-background-containers px-6 pt-4 pb-6","data-testid":"floor-mobile-bottom-actions",children:(0,rE.jsx)(een,{actions:ea,band:"phone",container:"trailing"})})]}),k&&!N&&(0,rE.jsx)($L,{[$P]:!0,className:"absolute bottom-[152px] left-6 z-30 hidden max-h-[calc(100%-252px)] w-[348px] rounded-2xl bg-background-containers sm:flex lg:bottom-[132px] lg:max-h-[calc(100%-232px)]",gridClassName:"px-4 pb-4",titleClassName:"px-4 pt-4",onOpenChange:G}),(0,rE.jsx)($N,{open:R&&!N,portalContainer:es,onOpenChange:D})]}),el=q.interiorSelection.shouldRender?"dialog"===q.interiorSelection.presentation?(0,rE.jsx)($R,{open:q.interiorSelection.open,showCloseButton:e||q.scene.shouldRender,portalContainer:es,rooms:q.sourceRooms,customRooms:q.customRooms,selectedRoomId:v.id,isInvalidFile:q.interiorSelection.isInvalidFile,uploadRetryRequestId:q.interiorSelection.uploadRetryRequestId,onOpenChange:q.interiorSelection.onOpenChange,onSelectRoom:q.interiorSelection.onSelectRoom,onUploadFile:q.interiorSelection.onUploadFile}):"screen"===q.interiorSelection.presentation?(0,rE.jsx)($T,{rooms:q.sourceRooms,customRooms:q.customRooms,selectedRoomId:v.id,isInvalidFile:q.interiorSelection.isInvalidFile,uploadRetryRequestId:q.interiorSelection.uploadRetryRequestId,showCloseButton:e,onSelectRoom:q.interiorSelection.onSelectRoom,onUploadFile:q.interiorSelection.onUploadFile}):null:null,ec=(0,rE.jsx)($Z,{isComplete:q.processingDialog.isComplete,open:q.processingDialog.open,portalContainer:es,onCloseAnimationEnd:q.processingDialog.onCloseAnimationEnd,onOpenChange:q.processingDialog.onOpenChange}),eu=(0,rE.jsxs)(rE.Fragment,{children:[(0,rE.jsx)($B,{variant:q.activeErrorDialog.variant,open:q.activeErrorDialog.open,portalContainer:es,showDialogCloseButton:e&&q.activeErrorDialog.showCloseButton,onOpenChange:q.activeErrorDialog.onOpenChange,onTryAgain:q.activeErrorDialog.onTryAgain,onCancel:q.activeErrorDialog.onCancel}),(0,rE.jsx)($B,{variant:q.uploadErrorDialog.variant,open:q.uploadErrorDialog.open,portalContainer:es,onOpenChange:q.uploadErrorDialog.onOpenChange,onTryAgain:q.uploadErrorDialog.onTryAgain,onCancel:q.uploadErrorDialog.onCancel})]}),ed=(0,rE.jsxs)("div",{ref:x,className:"relative grid size-full grid-rows-[minmax(0,1fr)_auto] overflow-hidden text-foreground sm:block","data-neurodyn-room-viewer-container":"","data-testid":"floor-viewer-root",children:[h?(0,rE.jsx)("div",{className:"flex size-full items-center justify-center bg-radial from-background-containers to-background-base-2",children:(0,rE.jsx)(WK,{variant:"logo"})}):q.scene.shouldRender?eo:null,!q.surface.usesSiblingDialogFlow&&el,!q.surface.usesSiblingDialogFlow&&ec]});return q.surface.usesSiblingDialogFlow?(0,rE.jsxs)(rE.Fragment,{children:[(q.scene.shouldRenderDialog||h)&&(0,rE.jsx)(Wx,{open:I,onOpenChange:B,children:(0,rE.jsxs)(WM,{className:WJ,contentInsideOverlay:!0,portalContainer:S,showCloseButton:!1,onInteractOutside:e=>{e.preventDefault()},children:[(0,rE.jsx)(Wk,{className:"sr-only",children:n}),(0,rE.jsx)(WT,{className:"sr-only"}),ed]})}),el,ec,eu]}):(0,rE.jsxs)(rE.Fragment,{children:[ed,eu]})},"framed-scene":function({showDialogCloseButton:e=!1}){let{name:t}=W9(),{isViewerAccessPending:r,accessError:n,loadError:i,setLoadError:a,hasRooms:s}=W8(),{setContainerRef:o,sceneLoad:l,isRoomScenePending:c}=W6(),{dialogPortalContainer:u,viewerSurface:d,viewerDialogOpen:h,onViewerDialogOpenChange:p}=W4(),{t:f}=sf(),A=(0,rx.useRef)(null),g=r||c||s&&!Object.values(l).every(Boolean),m=n??i,v=m?(0,rE.jsx)("div",{ref:o,"data-neurodyn-room-viewer-container":"",className:"relative size-full overflow-hidden bg-radial from-background-containers to-background-base-2 text-foreground",children:(0,rE.jsx)(q8,{variant:m,showDialogCloseButton:e})}):(0,rE.jsxs)("div",{ref:o,"data-neurodyn-room-viewer-container":"",className:"relative size-full bg-radial from-background-containers to-background-base-2 text-foreground overflow-hidden",children:[e&&(0,rE.jsx)(WE,{asChild:!0,children:(0,rE.jsxs)(Ww,{className:"absolute top-3 right-6 z-20",variant:"secondary",children:[f("close"),(0,rE.jsx)(uc,{})]})}),!r&&(s?(0,rE.jsxs)(rE.Fragment,{children:[(0,rE.jsx)(q5,{className:"absolute top-0 right-0 left-0 z-15"}),(0,rE.jsxs)("div",{className:"size-full max-w-full grid grid-rows-[1fr_auto]",children:[(0,rE.jsx)(ZD,{onError:()=>a("viewer-load-failed"),children:(0,rE.jsx)($u,{captureRef:A,className:"size-full min-h-0",controls:(0,rE.jsx)($I,{captureRef:A})})}),(0,rE.jsx)(q4,{className:"bg-background"})]})]}):(0,rE.jsx)(q9,{className:"absolute inset-x-0 bottom-0 bg-background"})),(0,rE.jsx)("div",{"aria-hidden":!g,className:Wb("absolute inset-0 z-10 flex items-center justify-center bg-radial from-background-containers to-background-base-2 transition-opacity",g?"opacity-100 pointer-events-auto duration-0":"opacity-0 pointer-events-none duration-250ms"),children:(0,rE.jsx)(WK,{variant:"logo"})})]});return"dialog"!==d?v:(0,rE.jsx)(Wx,{open:h,onOpenChange:p,children:(0,rE.jsxs)(WM,{className:WJ,contentInsideOverlay:!0,portalContainer:u,showCloseButton:!1,onInteractOutside:e=>{e.preventDefault()},children:[(0,rE.jsxs)(WI,{className:"sr-only",children:[(0,rE.jsx)(Wk,{children:t}),(0,rE.jsx)(WT,{})]}),v]})})}};function eeE({showDialogCloseButton:e=!1}){let{type:t}=W9(),r=eeC[Wv[t].chrome];return(0,rE.jsx)(r,{showDialogCloseButton:e})}let eeS=0,eeM=[];function eeI(e,t,r){if(t===r)return e;let n=new Set(t.map(e=>e.id)),i=new Set(r.map(e=>e.id)),a=e.filter(e=>!n.has(e.id)&&!i.has(e.id));return a.length>0?[...a,...r]:r}function eeB({children:e,src:t,tinuuid:r,type:n,viewerSurface:i,dialogPortalContainer:a=null,viewerDialogOpen:s=!0,onViewerDialogOpenChange:o,width:l,height:c,displayUnit:u,name:d,apiKey:h,baseURL:p,source:f,externalWidgetSession:A}){var g,m;let v=function(){let{t:e}=sf();return(0,rx.useMemo)(()=>[{value:.025,label:`2.5 ${e("units.cm")}`},{value:.05,label:`5 ${e("units.cm")}`}],[e])}(),b=qX(u),y=qO(n),w="finish"===Wv[n].materialRole,{offersSizeVariants:x}=qL(n),C="floor-room-presets"===Wv[n].roomPresets?qI:qM,E=VL({apiKey:h,baseURL:p,source:f}),[S,M]=(0,rx.useState)(r),[I,B]=(0,rx.useState)(null),k=(0,rx.useCallback)(e=>{B(null),M(e)},[]),T=(0,rx.useCallback)(e=>{B(e),M(e)},[]),[R,D]=(0,rx.useState)(null),[P,_]=(0,rx.useState)(v[0].value),[L,N]=(0,rx.useState)(b[0].value),[F,O]=(0,rx.useState)(0),[Q,U]=(0,rx.useState)(0),[z,j]=(0,rx.useState)(!1),[G,H]=(0,rx.useState)(null),[V,W]=(0,rx.useState)(()=>({layoutReady:!1,placementReady:!1,materialReady:"artwork-src"===y.materialSource,artifactsReady:!1,assetsReady:!1,prepareReady:!1})),[q,K]=(0,rx.useState)(!1),[J,Y]=(0,rx.useState)(null),[X,Z]=(0,rx.useState)(null),$=(0,rx.useRef)(null),ee=(0,rx.useRef)(new Set),et=(0,rx.useRef)(null),er=(0,rx.useRef)(!0),en=(0,rx.useRef)(!1),ei="object-glb"===y.materialSource,ea="default"===f&&void 0!==h,es=VF("wall-panel"===(g={apiKey:h,baseURL:p,source:f,resourceType:n}).resourceType?g:{...g,resourceType:void 0}),eo=od({queryKey:["room-viewer","activate",{apiKey:h??null,source:f,resourceType:n}],enabled:ea,queryFn:({signal:e})=>V1(es.query,{...es.config,baseURL:p,headers:{"x-api-key":h},signal:e})},s2,void 0),el=VO(eo.error),ec=(0,rx.useMemo)(()=>{let e=eo.data;return Wc(e?.widgetSession,{apiConfig:{baseURL:p,headers:{"x-api-key":h}}})},[eo.data,h,p]),eu=(0,rx.useMemo)(()=>A instanceof Wl?A:Wc(A,{apiConfig:{baseURL:p,headers:{"x-api-key":h}}})??ec,[ec,h,p,A]),ed="shopify"===f?null!==eu:ea&&eo.isSuccess,eh=od({queryKey:["room-viewer","rooms",{apiKey:(m={apiKey:h,baseURL:p,source:f,widgetSession:eu,resourceType:n}).apiKey??null,source:m.source,resourceType:m.resourceType??null,widgetSessionId:m.widgetSession?.sid??null}],enabled:E&&ed,queryFn:async({signal:e})=>{try{return await Wg({apiKey:h,baseURL:p,signal:e,source:f,widgetSession:eu,resourceType:n})}catch(e){if(VO(e))throw e;return[]}}},s2,void 0),ep=E?eh.data??eeM:C,[ef,eA]=(0,rx.useState)(()=>({rooms:ep,sourceRooms:ep})),eg=(0,rx.useMemo)(()=>eeI(ef.rooms,ef.sourceRooms,ep),[ef.rooms,ef.sourceRooms,ep]),em=(0,rx.useCallback)(e=>{eA(t=>{let r=eeI(t.rooms,t.sourceRooms,ep);return{rooms:"function"==typeof e?e(r):e,sourceRooms:ep}})},[ep]),[ev,eb]=(0,rx.useState)(()=>C[0].id),ey=eg.find(e=>e.id===ev),ew=ey??eg[0]??C[0],ex="rotate-on-floor"===Wv[n].manipulation;(0,rx.useEffect)(()=>{ex&&U(0)},[ex,ew.id]);let eC=eg.length>0;!ey&&eg[0]&&ev!==eg[0].id&&eb(eg[0].id);let eE=!ea||eo.isSuccess||eo.isError&&null===el,eS=od({queryKey:Wh(r??void 0,{apiKey:h,baseURL:p,source:f,resourceType:n}),enabled:eE&&ei&&null===R&&!!r,queryFn:async({signal:e})=>{if(!r)throw Error("Tinuuid is required.");return Wp(r,{apiKey:h,baseURL:p,signal:e,source:f,widgetSession:eu,resourceType:n})}},s2,void 0),eM=od({queryKey:Wh(S??void 0,{apiKey:h,baseURL:p,source:f,resourceType:n}),enabled:eE&&ei&&!!S,placeholderData:t4,queryFn:async({signal:e})=>{if(!S)throw Error("Tinuuid is required.");return Wp(S,{apiKey:h,baseURL:p,signal:e,source:f,widgetSession:eu,resourceType:n})}},s2,void 0),eI=eS.data??null,eB=eM.data??null,ek=eI?.materials?.[0]??null,eT=R?.native?.glbUrl??null,eR=VO(eS.error),eD=VO(eh.error),eP=E&&("shopify"===f?null===eu||eh.isLoading:eo.isSuccess&&eh.isLoading),e_=ea&&eo.isLoading||eP,eL=eo.error&&null===el?"viewer-load-failed":null,eN=eS.error&&null===eR?"viewer-load-failed":null,eF="artwork-src"===y.materialSource&&("string"!=typeof t||0===t.trim().length)?"artwork-load-failed":null,eO=ei&&!e_&&(!r||eS.isSuccess&&null===ek||null!==R&&null===eT)?"viewer-load-failed":null,eQ=null!==I&&I===S&&(eM.isError||eM.isSuccess&&eB?.tinuuid===S&&!eB.materials?.[0]?.native?.glbUrl)?"viewer-load-failed":null,eU=J??el??eD??eR,ez=X??eQ??eL??eN??eO??eF,ej=(0,rx.useCallback)(e=>{W(t=>Object.assign({},t,e))},[]);(0,rx.useEffect)(()=>{let e=new Set(eg.map(e=>e.image_url));for(let t of Array.from(ee.current))e.has(t)||(URL.revokeObjectURL(t),ee.current.delete(t))},[eg]),(0,rx.useEffect)(()=>{let e=ee.current;return er.current=!0,()=>{for(let t of(er.current=!1,et.current?.abort(),Array.from(e)))URL.revokeObjectURL(t);e.clear()}},[]);let eG=(0,rx.useCallback)(async e=>{let t=null,r=new AbortController;et.current?.abort(),et.current=r,K(!0);try{t=URL.createObjectURL(e);let i=await eei(e,{resourceType:n,apiKey:h,baseURL:p,source:f,signal:r.signal,widgetSession:eu});if(r.signal.aborted||!er.current)return void URL.revokeObjectURL(t);ees()&&eeo(i,e.name).catch(e=>{console.error("Failed to export room debug mask",e)});let a={id:(eeS+=1,`room-custom-${eeS}`),name:e.name,image_url:t,scene:i};ee.current.add(t),ej({placementReady:!1,prepareReady:!1,artifactsReady:!1,assetsReady:!1}),em(e=>[a,...e]),eb(a.id)}catch(n){if(t&&URL.revokeObjectURL(t),r.signal.aborted)return;let e=VO(n);if(e)return void Y(e);console.error("Failed to prepare custom room scene",n)}finally{et.current===r&&(et.current=null,er.current&&K(!1))}},[h,p,ej,em,f,n,eu]);(0,rx.useEffect)(()=>{if("dialog"!==i||!s){en.current=!1;return}en.current||eu&&(Wu(eu,"widget_opened"),en.current=!0)},[s,i,eu]),(0,rx.useEffect)(()=>{ei&&(k(r),D(null),Y(null),Z(null))},[r,k,ei]),(0,rx.useEffect)(()=>{Y(null),Z(null)},[h,f]),(0,rx.useEffect)(()=>{ei&&eI&&null===R&&D(ek)},[R,ek,eI,ei]),(0,rx.useEffect)(()=>{if(!ei||!x&&!w&&I!==S||null===eB||eB.tinuuid!==S)return;let e=eB.materials?.[0];if(!e)return;let t=eB.materials?.some(e=>e===R||!!e.hid&&e.hid===R?.hid);if(I===S){B(null),D(e);return}(!t||w)&&R!==e&&D(e)},[w,R,x,eB,S,ei,I]);let eH=(0,rx.useMemo)(()=>({type:n,name:d,width:l,height:c,displayUnit:u}),[n,d,l,c,u]),eV=(0,rx.useMemo)(()=>({viewerSurface:i,dialogPortalContainer:a,viewerDialogOpen:s,onViewerDialogOpenChange:o}),[i,a,s,o]),eW=(0,rx.useMemo)(()=>({rooms:eg,sourceRooms:ep,setRooms:em,room:ew,setRoomId:eb}),[eg,ew,em,ep]),eq=(0,rx.useMemo)(()=>({src:t,glbUrl:eT,tinuuid:S,embeddedObject:eI,selectedObject:eB,material:R,setTinuuid:k,selectResourceVariant:T,setMaterial:D,apiKey:h,baseURL:p,source:f,widgetSession:eu,hasRooms:eC,isViewerAccessPending:e_,accessError:eU,setAccessError:Y,loadError:ez,setLoadError:Z}),[t,eT,S,eI,eB,R,k,T,h,p,f,eu,eC,e_,eU,ez]),eK=(0,rx.useMemo)(()=>({containerRef:G,setContainerRef:H,resourceRef:$,angle:F,setAngle:O,rotation:Q,setRotation:U,isDragging:z,setIsDragging:j,sceneLoad:V,patchSceneLoad:ej,isRoomScenePending:q,setIsRoomScenePending:K}),[G,F,Q,z,V,ej,q]),eJ=(0,rx.useMemo)(()=>({frameWidth:P,setFrameWidth:_,matting:L,setMatting:N}),[P,L]),eY=(0,rx.useMemo)(()=>({isRoomScenePending:q,selectCustomRoomFile:eG}),[q,eG]);return(0,rE.jsx)(WY,{value:eH,children:(0,rE.jsx)(WX,{value:eV,children:(0,rE.jsx)(WZ,{value:eW,children:(0,rE.jsx)(W$,{value:eq,children:(0,rE.jsx)(W0,{value:eK,children:(0,rE.jsx)(W1,{value:eJ,children:(0,rE.jsx)(W2,{value:eY,children:(0,rE.jsx)(ZS,{children:e})})})})})})})})}let eek={poster:"wallart",carpet:"rugs"};function eeT(e){return"poster"===e||"carpet"===e}let eeR=new rw({defaultOptions:{queries:{gcTime:1/0,refetchOnMount:!1,refetchOnReconnect:!1,refetchOnWindowFocus:!1,retry:(e,t)=>{let r=function(e){if(ix(e))return e.response?.status}(t);return(void 0===r||!(r>=400)||!(r<500))&&e<2}}}});function eeD({type:e,src:t,tinuuid:r,name:n,height:i,width:a,language:s,dimensionUnit:o="m",displayUnit:l="cm",apiKey:c,source:u="default",showDialogCloseButton:d=!1,viewerSurface:h="inline",dialogPortalContainer:p=null,viewerDialogOpen:f=!0,onViewerDialogOpenChange:A,widgetSession:g}){let{i18n:m}=sf(),v=c?.trim()||void 0,b=r?.trim()||void 0,y=eeT(e)?eek[e]:e,w=qO(y).takesDimensionProps?function(e,t,r="m"){return{width:qJ(e??0,r),height:qJ(t??0,r)}}(a,i,o):null;return(0,rx.useEffect)(()=>{eeT(e)&&eek[e]},[e]),(0,rx.useEffect)(()=>{"string"==typeof s&&m.changeLanguage(s)},[m,s]),(0,rE.jsx)(rI,{client:eeR,children:(0,rE.jsx)(eeB,{src:t??null,tinuuid:b??null,type:y,viewerSurface:h,dialogPortalContainer:p,viewerDialogOpen:f,onViewerDialogOpenChange:A,name:n,width:w?.width??0,height:w?.height??0,displayUnit:l,apiKey:v,baseURL:"shopify"===u?V_:void 0,source:u,externalWidgetSession:g,children:(0,rE.jsx)(eeE,{showDialogCloseButton:d})})})}function eeP({type:e,src:t,tinuuid:r,width:n,height:i,dimensionUnit:a,displayUnit:s,name:o,language:l,apiKey:c,source:u,widgetSession:d,disableClose:h=!1,open:p,defaultOpen:f,onOpenChange:A}){let[g,m]=(0,rx.useState)(null),v="immersive-room"===Wv[eeT(e)?eek[e]:e].chrome&&h,[b,y]=(0,rx.useState)(f??!1),w=p??b,[x,C]=(0,rx.useState)(w),E=w||x;(0,rx.useEffect)(()=>{w&&C(!0)},[w]);let S=(0,rE.jsx)(eeD,{type:e,src:t,tinuuid:r,name:o,height:i,width:n,dimensionUnit:a,displayUnit:s,language:l,apiKey:c,source:u,widgetSession:d,showDialogCloseButton:!v,viewerSurface:"dialog",dialogPortalContainer:g,viewerDialogOpen:w,onViewerDialogOpenChange:function(e){(e||!v)&&(void 0===p&&y(e),A?.(e))}});return(0,rE.jsxs)(rE.Fragment,{children:[(0,am.createPortal)((0,rE.jsx)("style",{children:VI.A}),document.head),(0,am.createPortal)((0,rE.jsxs)(s_.div,{"data-neurodyn-room-viewer-root":"",style:{display:"block",letterSpacing:"normal",zIndex:0x7fffffff},children:[(0,rE.jsx)("style",{children:":host{display:block!important;visibility:visible!important}"}),(0,rE.jsx)("style",{children:VD}),(0,rE.jsx)("div",{ref:m}),g&&(0,rE.jsx)(VM,{root:g,storageKey:"neurodyn-theme",defaultTheme:"light",children:(0,rE.jsx)(sA,{i18n:Vk,children:E&&S})})]}),document.body)]})}We({baseURL:"https://api.neurodyn.ai/v1/"}),VY({baseURL:"https://api.neurodyn.ai/"});let ee_=iQ({clientName:"API node client",configureFunctionName:"configureNodeApiClient",defaultBaseURL:"https://api.vizbl.com"});ee_.configureClientRuntime,ee_.configureAccessTokenResolverRuntime,ee_.configureHeadersResolverRuntime,ee_.configureUnauthorizedHandlerRuntime,ee_.isClientConfiguredRuntime,ee_.assertClientConfiguredRuntime,ee_.resetClientForTestsRuntime;let eeL=ee_.requestRuntime;async function eeN(e){return eeL(e)}async function eeF(e,t={}){let{client:r=eeN,...n}=t;return(await r({method:"POST",url:"/public/widget/activate-wallart",params:e,...n})).data}ee_.requestWithoutUnauthorizedRecovery,ee_.addResponseInterceptorRuntime,(eJ=tP||(tP={})).assertEqual=e=>{},eJ.assertIs=function(e){},eJ.assertNever=function(e){throw Error()},eJ.arrayToEnum=e=>{let t={};for(let r of e)t[r]=r;return t},eJ.getValidEnumValues=e=>{let t=eJ.objectKeys(e).filter(t=>"number"!=typeof e[e[t]]),r={};for(let n of t)r[n]=e[n];return eJ.objectValues(r)},eJ.objectValues=e=>eJ.objectKeys(e).map(function(t){return e[t]}),eJ.objectKeys="function"==typeof Object.keys?e=>Object.keys(e):e=>{let t=[];for(let r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.push(r);return t},eJ.find=(e,t)=>{for(let r of e)if(t(r))return r},eJ.isInteger="function"==typeof Number.isInteger?e=>Number.isInteger(e):e=>"number"==typeof e&&Number.isFinite(e)&&Math.floor(e)===e,eJ.joinValues=function(e,t=" | "){return e.map(e=>"string"==typeof e?`'${e}'`:e).join(t)},eJ.jsonStringifyReplacer=(e,t)=>"bigint"==typeof t?t.toString():t,(t_||(t_={})).mergeShapes=(e,t)=>({...e,...t});let eeO=tP.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),eeQ=e=>{switch(typeof e){case"undefined":return eeO.undefined;case"string":return eeO.string;case"number":return Number.isNaN(e)?eeO.nan:eeO.number;case"boolean":return eeO.boolean;case"function":return eeO.function;case"bigint":return eeO.bigint;case"symbol":return eeO.symbol;case"object":if(Array.isArray(e))return eeO.array;if(null===e)return eeO.null;if(e.then&&"function"==typeof e.then&&e.catch&&"function"==typeof e.catch)return eeO.promise;if("u">typeof Map&&e instanceof Map)return eeO.map;if("u">typeof Set&&e instanceof Set)return eeO.set;if("u">typeof Date&&e instanceof Date)return eeO.date;return eeO.object;default:return eeO.unknown}},eeU=tP.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]);class eez extends Error{get errors(){return this.issues}constructor(e){super(),this.issues=[],this.addIssue=e=>{this.issues=[...this.issues,e]},this.addIssues=(e=[])=>{this.issues=[...this.issues,...e]};const t=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,t):this.__proto__=t,this.name="ZodError",this.issues=e}format(e){let t=e||function(e){return e.message},r={_errors:[]},n=e=>{for(let i of e.issues)if("invalid_union"===i.code)i.unionErrors.map(n);else if("invalid_return_type"===i.code)n(i.returnTypeError);else if("invalid_arguments"===i.code)n(i.argumentsError);else if(0===i.path.length)r._errors.push(t(i));else{let e=r,n=0;for(;n<i.path.length;){let r=i.path[n];n===i.path.length-1?(e[r]=e[r]||{_errors:[]},e[r]._errors.push(t(i))):e[r]=e[r]||{_errors:[]},e=e[r],n++}}};return n(this),r}static assert(e){if(!(e instanceof eez))throw Error(`Not a ZodError: ${e}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,tP.jsonStringifyReplacer,2)}get isEmpty(){return 0===this.issues.length}flatten(e=e=>e.message){let t={},r=[];for(let n of this.issues)if(n.path.length>0){let r=n.path[0];t[r]=t[r]||[],t[r].push(e(n))}else r.push(e(n));return{formErrors:r,fieldErrors:t}}get formErrors(){return this.flatten()}}eez.create=e=>new eez(e);let eej=(e,t)=>{let r;switch(e.code){case eeU.invalid_type:r=e.received===eeO.undefined?"Required":`Expected ${e.expected}, received ${e.received}`;break;case eeU.invalid_literal:r=`Invalid literal value, expected ${JSON.stringify(e.expected,tP.jsonStringifyReplacer)}`;break;case eeU.unrecognized_keys:r=`Unrecognized key(s) in object: ${tP.joinValues(e.keys,", ")}`;break;case eeU.invalid_union:r="Invalid input";break;case eeU.invalid_union_discriminator:r=`Invalid discriminator value. Expected ${tP.joinValues(e.options)}`;break;case eeU.invalid_enum_value:r=`Invalid enum value. Expected ${tP.joinValues(e.options)}, received '${e.received}'`;break;case eeU.invalid_arguments:r="Invalid function arguments";break;case eeU.invalid_return_type:r="Invalid function return type";break;case eeU.invalid_date:r="Invalid date";break;case eeU.invalid_string:"object"==typeof e.validation?"includes"in e.validation?(r=`Invalid input: must include "${e.validation.includes}"`,"number"==typeof e.validation.position&&(r=`${r} at one or more positions greater than or equal to ${e.validation.position}`)):"startsWith"in e.validation?r=`Invalid input: must start with "${e.validation.startsWith}"`:"endsWith"in e.validation?r=`Invalid input: must end with "${e.validation.endsWith}"`:tP.assertNever(e.validation):r="regex"!==e.validation?`Invalid ${e.validation}`:"Invalid";break;case eeU.too_small:r="array"===e.type?`Array must contain ${e.exact?"exactly":e.inclusive?"at least":"more than"} ${e.minimum} element(s)`:"string"===e.type?`String must contain ${e.exact?"exactly":e.inclusive?"at least":"over"} ${e.minimum} character(s)`:"number"===e.type||"bigint"===e.type?`Number must be ${e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than "}${e.minimum}`:"date"===e.type?`Date must be ${e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(e.minimum))}`:"Invalid input";break;case eeU.too_big:r="array"===e.type?`Array must contain ${e.exact?"exactly":e.inclusive?"at most":"less than"} ${e.maximum} element(s)`:"string"===e.type?`String must contain ${e.exact?"exactly":e.inclusive?"at most":"under"} ${e.maximum} character(s)`:"number"===e.type?`Number must be ${e.exact?"exactly":e.inclusive?"less than or equal to":"less than"} ${e.maximum}`:"bigint"===e.type?`BigInt must be ${e.exact?"exactly":e.inclusive?"less than or equal to":"less than"} ${e.maximum}`:"date"===e.type?`Date must be ${e.exact?"exactly":e.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(e.maximum))}`:"Invalid input";break;case eeU.custom:r="Invalid input";break;case eeU.invalid_intersection_types:r="Intersection results could not be merged";break;case eeU.not_multiple_of:r=`Number must be a multiple of ${e.multipleOf}`;break;case eeU.not_finite:r="Number must be finite";break;default:r=t.defaultError,tP.assertNever(e)}return{message:r}};(eY=tL||(tL={})).errToObj=e=>"string"==typeof e?{message:e}:e||{},eY.toString=e=>"string"==typeof e?e:e?.message;let eeG=e=>{let{data:t,path:r,errorMaps:n,issueData:i}=e,a=[...r,...i.path||[]],s={...i,path:a};if(void 0!==i.message)return{...i,path:a,message:i.message};let o="";for(let e of n.filter(e=>!!e).slice().reverse())o=e(s,{data:t,defaultError:o}).message;return{...i,path:a,message:o}};function eeH(e,t){let r=eeG({issueData:t,data:e.data,path:e.path,errorMaps:[e.common.contextualErrorMap,e.schemaErrorMap,eej,void 0].filter(e=>!!e)});e.common.issues.push(r)}class eeV{constructor(){this.value="valid"}dirty(){"valid"===this.value&&(this.value="dirty")}abort(){"aborted"!==this.value&&(this.value="aborted")}static mergeArray(e,t){let r=[];for(let n of t){if("aborted"===n.status)return eeW;"dirty"===n.status&&e.dirty(),r.push(n.value)}return{status:e.value,value:r}}static async mergeObjectAsync(e,t){let r=[];for(let e of t){let t=await e.key,n=await e.value;r.push({key:t,value:n})}return eeV.mergeObjectSync(e,r)}static mergeObjectSync(e,t){let r={};for(let n of t){let{key:t,value:i}=n;if("aborted"===t.status||"aborted"===i.status)return eeW;"dirty"===t.status&&e.dirty(),"dirty"===i.status&&e.dirty(),"__proto__"!==t.value&&(void 0!==i.value||n.alwaysSet)&&(r[t.value]=i.value)}return{status:e.value,value:r}}}let eeW=Object.freeze({status:"aborted"}),eeq=e=>({status:"dirty",value:e}),eeK=e=>({status:"valid",value:e}),eeJ=e=>"u">typeof Promise&&e instanceof Promise;class eeY{constructor(e,t,r,n){this._cachedPath=[],this.parent=e,this.data=t,this._path=r,this._key=n}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}}let eeX=(e,t)=>{if("valid"===t.status)return{success:!0,data:t.value};if(!e.common.issues.length)throw Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;let t=new eez(e.common.issues);return this._error=t,this._error}}};function eeZ(e){if(!e)return{};let{errorMap:t,invalid_type_error:r,required_error:n,description:i}=e;if(t&&(r||n))throw Error('Can\'t use "invalid_type_error" or "required_error" in conjunction with custom error map.');return t?{errorMap:t,description:i}:{errorMap:(t,i)=>{let{message:a}=e;return"invalid_enum_value"===t.code?{message:a??i.defaultError}:void 0===i.data?{message:a??n??i.defaultError}:"invalid_type"!==t.code?{message:i.defaultError}:{message:a??r??i.defaultError}},description:i}}class ee${get description(){return this._def.description}_getType(e){return eeQ(e.data)}_getOrReturnCtx(e,t){return t||{common:e.parent.common,data:e.data,parsedType:eeQ(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new eeV,ctx:{common:e.parent.common,data:e.data,parsedType:eeQ(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){let t=this._parse(e);if(eeJ(t))throw Error("Synchronous parse encountered promise.");return t}_parseAsync(e){return Promise.resolve(this._parse(e))}parse(e,t){let r=this.safeParse(e,t);if(r.success)return r.data;throw r.error}safeParse(e,t){let r={common:{issues:[],async:t?.async??!1,contextualErrorMap:t?.errorMap},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:eeQ(e)},n=this._parseSync({data:e,path:r.path,parent:r});return eeX(r,n)}"~validate"(e){let t={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:eeQ(e)};if(!this["~standard"].async)try{let r=this._parseSync({data:e,path:[],parent:t});return"valid"===r.status?{value:r.value}:{issues:t.common.issues}}catch(e){e?.message?.toLowerCase()?.includes("encountered")&&(this["~standard"].async=!0),t.common={issues:[],async:!0}}return this._parseAsync({data:e,path:[],parent:t}).then(e=>"valid"===e.status?{value:e.value}:{issues:t.common.issues})}async parseAsync(e,t){let r=await this.safeParseAsync(e,t);if(r.success)return r.data;throw r.error}async safeParseAsync(e,t){let r={common:{issues:[],contextualErrorMap:t?.errorMap,async:!0},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:eeQ(e)},n=this._parse({data:e,path:r.path,parent:r});return eeX(r,await (eeJ(n)?n:Promise.resolve(n)))}refine(e,t){return this._refinement((r,n)=>{let i=e(r),a=()=>n.addIssue({code:eeU.custom,..."string"==typeof t||void 0===t?{message:t}:"function"==typeof t?t(r):t});return"u">typeof Promise&&i instanceof Promise?i.then(e=>!!e||(a(),!1)):!!i||(a(),!1)})}refinement(e,t){return this._refinement((r,n)=>!!e(r)||(n.addIssue("function"==typeof t?t(r,n):t),!1))}_refinement(e){return new etN({schema:this,typeName:tN.ZodEffects,effect:{type:"refinement",refinement:e}})}superRefine(e){return this._refinement(e)}constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:e=>this["~validate"](e)}}optional(){return etF.create(this,this._def)}nullable(){return etO.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return etb.create(this)}promise(){return etL.create(this,this._def)}or(e){return etw.create([this,e],this._def)}and(e){return etE.create(this,e,this._def)}transform(e){return new etN({...eeZ(this._def),schema:this,typeName:tN.ZodEffects,effect:{type:"transform",transform:e}})}default(e){return new etQ({...eeZ(this._def),innerType:this,defaultValue:"function"==typeof e?e:()=>e,typeName:tN.ZodDefault})}brand(){return new etj({typeName:tN.ZodBranded,type:this,...eeZ(this._def)})}catch(e){return new etU({...eeZ(this._def),innerType:this,catchValue:"function"==typeof e?e:()=>e,typeName:tN.ZodCatch})}describe(e){return new this.constructor({...this._def,description:e})}pipe(e){return etG.create(this,e)}readonly(){return etH.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}let ee0=/^c[^\s-]{8,}$/i,ee1=/^[0-9a-z]+$/,ee2=/^[0-9A-HJKMNP-TV-Z]{26}$/i,ee3=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,ee9=/^[a-z0-9_-]{21}$/i,ee4=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,ee5=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,ee8=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,ee6=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,ee7=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,ete=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,ett=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,etr=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,etn=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,eti="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",eta=RegExp(`^${eti}$`);function ets(e){let t="[0-5]\\d";e.precision?t=`${t}\\.\\d{${e.precision}}`:null==e.precision&&(t=`${t}(\\.\\d+)?`);let r=e.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${t})${r}`}class eto extends ee${_parse(e){var t,r,n,i;let a;if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==eeO.string){let t=this._getOrReturnCtx(e);return eeH(t,{code:eeU.invalid_type,expected:eeO.string,received:t.parsedType}),eeW}let s=new eeV;for(let o of this._def.checks)if("min"===o.kind)e.data.length<o.value&&(eeH(a=this._getOrReturnCtx(e,a),{code:eeU.too_small,minimum:o.value,type:"string",inclusive:!0,exact:!1,message:o.message}),s.dirty());else if("max"===o.kind)e.data.length>o.value&&(eeH(a=this._getOrReturnCtx(e,a),{code:eeU.too_big,maximum:o.value,type:"string",inclusive:!0,exact:!1,message:o.message}),s.dirty());else if("length"===o.kind){let t=e.data.length>o.value,r=e.data.length<o.value;(t||r)&&(a=this._getOrReturnCtx(e,a),t?eeH(a,{code:eeU.too_big,maximum:o.value,type:"string",inclusive:!0,exact:!0,message:o.message}):r&&eeH(a,{code:eeU.too_small,minimum:o.value,type:"string",inclusive:!0,exact:!0,message:o.message}),s.dirty())}else if("email"===o.kind)ee8.test(e.data)||(eeH(a=this._getOrReturnCtx(e,a),{validation:"email",code:eeU.invalid_string,message:o.message}),s.dirty());else if("emoji"===o.kind)I||(I=RegExp("^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$","u")),I.test(e.data)||(eeH(a=this._getOrReturnCtx(e,a),{validation:"emoji",code:eeU.invalid_string,message:o.message}),s.dirty());else if("uuid"===o.kind)ee3.test(e.data)||(eeH(a=this._getOrReturnCtx(e,a),{validation:"uuid",code:eeU.invalid_string,message:o.message}),s.dirty());else if("nanoid"===o.kind)ee9.test(e.data)||(eeH(a=this._getOrReturnCtx(e,a),{validation:"nanoid",code:eeU.invalid_string,message:o.message}),s.dirty());else if("cuid"===o.kind)ee0.test(e.data)||(eeH(a=this._getOrReturnCtx(e,a),{validation:"cuid",code:eeU.invalid_string,message:o.message}),s.dirty());else if("cuid2"===o.kind)ee1.test(e.data)||(eeH(a=this._getOrReturnCtx(e,a),{validation:"cuid2",code:eeU.invalid_string,message:o.message}),s.dirty());else if("ulid"===o.kind)ee2.test(e.data)||(eeH(a=this._getOrReturnCtx(e,a),{validation:"ulid",code:eeU.invalid_string,message:o.message}),s.dirty());else if("url"===o.kind)try{new URL(e.data)}catch{eeH(a=this._getOrReturnCtx(e,a),{validation:"url",code:eeU.invalid_string,message:o.message}),s.dirty()}else"regex"===o.kind?(o.regex.lastIndex=0,o.regex.test(e.data)||(eeH(a=this._getOrReturnCtx(e,a),{validation:"regex",code:eeU.invalid_string,message:o.message}),s.dirty())):"trim"===o.kind?e.data=e.data.trim():"includes"===o.kind?e.data.includes(o.value,o.position)||(eeH(a=this._getOrReturnCtx(e,a),{code:eeU.invalid_string,validation:{includes:o.value,position:o.position},message:o.message}),s.dirty()):"toLowerCase"===o.kind?e.data=e.data.toLowerCase():"toUpperCase"===o.kind?e.data=e.data.toUpperCase():"startsWith"===o.kind?e.data.startsWith(o.value)||(eeH(a=this._getOrReturnCtx(e,a),{code:eeU.invalid_string,validation:{startsWith:o.value},message:o.message}),s.dirty()):"endsWith"===o.kind?e.data.endsWith(o.value)||(eeH(a=this._getOrReturnCtx(e,a),{code:eeU.invalid_string,validation:{endsWith:o.value},message:o.message}),s.dirty()):"datetime"===o.kind?(function(e){let t=`${eti}T${ets(e)}`,r=[];return r.push(e.local?"Z?":"Z"),e.offset&&r.push("([+-]\\d{2}:?\\d{2})"),t=`${t}(${r.join("|")})`,RegExp(`^${t}$`)})(o).test(e.data)||(eeH(a=this._getOrReturnCtx(e,a),{code:eeU.invalid_string,validation:"datetime",message:o.message}),s.dirty()):"date"===o.kind?eta.test(e.data)||(eeH(a=this._getOrReturnCtx(e,a),{code:eeU.invalid_string,validation:"date",message:o.message}),s.dirty()):"time"===o.kind?RegExp(`^${ets(o)}$`).test(e.data)||(eeH(a=this._getOrReturnCtx(e,a),{code:eeU.invalid_string,validation:"time",message:o.message}),s.dirty()):"duration"===o.kind?ee5.test(e.data)||(eeH(a=this._getOrReturnCtx(e,a),{validation:"duration",code:eeU.invalid_string,message:o.message}),s.dirty()):"ip"===o.kind?(t=e.data,!(("v4"===(r=o.version)||!r)&&ee6.test(t)||("v6"===r||!r)&&ete.test(t))&&1&&(eeH(a=this._getOrReturnCtx(e,a),{validation:"ip",code:eeU.invalid_string,message:o.message}),s.dirty())):"jwt"===o.kind?!function(e,t){if(!ee4.test(e))return!1;try{let[r]=e.split(".");if(!r)return!1;let n=r.replace(/-/g,"+").replace(/_/g,"/").padEnd(r.length+(4-r.length%4)%4,"="),i=JSON.parse(atob(n));if("object"!=typeof i||null===i||"typ"in i&&i?.typ!=="JWT"||!i.alg||t&&i.alg!==t)return!1;return!0}catch{return!1}}(e.data,o.alg)&&(eeH(a=this._getOrReturnCtx(e,a),{validation:"jwt",code:eeU.invalid_string,message:o.message}),s.dirty()):"cidr"===o.kind?(n=e.data,!(("v4"===(i=o.version)||!i)&&ee7.test(n)||("v6"===i||!i)&&ett.test(n))&&1&&(eeH(a=this._getOrReturnCtx(e,a),{validation:"cidr",code:eeU.invalid_string,message:o.message}),s.dirty())):"base64"===o.kind?etr.test(e.data)||(eeH(a=this._getOrReturnCtx(e,a),{validation:"base64",code:eeU.invalid_string,message:o.message}),s.dirty()):"base64url"===o.kind?etn.test(e.data)||(eeH(a=this._getOrReturnCtx(e,a),{validation:"base64url",code:eeU.invalid_string,message:o.message}),s.dirty()):tP.assertNever(o);return{status:s.value,value:e.data}}_regex(e,t,r){return this.refinement(t=>e.test(t),{validation:t,code:eeU.invalid_string,...tL.errToObj(r)})}_addCheck(e){return new eto({...this._def,checks:[...this._def.checks,e]})}email(e){return this._addCheck({kind:"email",...tL.errToObj(e)})}url(e){return this._addCheck({kind:"url",...tL.errToObj(e)})}emoji(e){return this._addCheck({kind:"emoji",...tL.errToObj(e)})}uuid(e){return this._addCheck({kind:"uuid",...tL.errToObj(e)})}nanoid(e){return this._addCheck({kind:"nanoid",...tL.errToObj(e)})}cuid(e){return this._addCheck({kind:"cuid",...tL.errToObj(e)})}cuid2(e){return this._addCheck({kind:"cuid2",...tL.errToObj(e)})}ulid(e){return this._addCheck({kind:"ulid",...tL.errToObj(e)})}base64(e){return this._addCheck({kind:"base64",...tL.errToObj(e)})}base64url(e){return this._addCheck({kind:"base64url",...tL.errToObj(e)})}jwt(e){return this._addCheck({kind:"jwt",...tL.errToObj(e)})}ip(e){return this._addCheck({kind:"ip",...tL.errToObj(e)})}cidr(e){return this._addCheck({kind:"cidr",...tL.errToObj(e)})}datetime(e){return"string"==typeof e?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:e}):this._addCheck({kind:"datetime",precision:void 0===e?.precision?null:e?.precision,offset:e?.offset??!1,local:e?.local??!1,...tL.errToObj(e?.message)})}date(e){return this._addCheck({kind:"date",message:e})}time(e){return"string"==typeof e?this._addCheck({kind:"time",precision:null,message:e}):this._addCheck({kind:"time",precision:void 0===e?.precision?null:e?.precision,...tL.errToObj(e?.message)})}duration(e){return this._addCheck({kind:"duration",...tL.errToObj(e)})}regex(e,t){return this._addCheck({kind:"regex",regex:e,...tL.errToObj(t)})}includes(e,t){return this._addCheck({kind:"includes",value:e,position:t?.position,...tL.errToObj(t?.message)})}startsWith(e,t){return this._addCheck({kind:"startsWith",value:e,...tL.errToObj(t)})}endsWith(e,t){return this._addCheck({kind:"endsWith",value:e,...tL.errToObj(t)})}min(e,t){return this._addCheck({kind:"min",value:e,...tL.errToObj(t)})}max(e,t){return this._addCheck({kind:"max",value:e,...tL.errToObj(t)})}length(e,t){return this._addCheck({kind:"length",value:e,...tL.errToObj(t)})}nonempty(e){return this.min(1,tL.errToObj(e))}trim(){return new eto({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new eto({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new eto({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(e=>"datetime"===e.kind)}get isDate(){return!!this._def.checks.find(e=>"date"===e.kind)}get isTime(){return!!this._def.checks.find(e=>"time"===e.kind)}get isDuration(){return!!this._def.checks.find(e=>"duration"===e.kind)}get isEmail(){return!!this._def.checks.find(e=>"email"===e.kind)}get isURL(){return!!this._def.checks.find(e=>"url"===e.kind)}get isEmoji(){return!!this._def.checks.find(e=>"emoji"===e.kind)}get isUUID(){return!!this._def.checks.find(e=>"uuid"===e.kind)}get isNANOID(){return!!this._def.checks.find(e=>"nanoid"===e.kind)}get isCUID(){return!!this._def.checks.find(e=>"cuid"===e.kind)}get isCUID2(){return!!this._def.checks.find(e=>"cuid2"===e.kind)}get isULID(){return!!this._def.checks.find(e=>"ulid"===e.kind)}get isIP(){return!!this._def.checks.find(e=>"ip"===e.kind)}get isCIDR(){return!!this._def.checks.find(e=>"cidr"===e.kind)}get isBase64(){return!!this._def.checks.find(e=>"base64"===e.kind)}get isBase64url(){return!!this._def.checks.find(e=>"base64url"===e.kind)}get minLength(){let e=null;for(let t of this._def.checks)"min"===t.kind&&(null===e||t.value>e)&&(e=t.value);return e}get maxLength(){let e=null;for(let t of this._def.checks)"max"===t.kind&&(null===e||t.value<e)&&(e=t.value);return e}}eto.create=e=>new eto({checks:[],typeName:tN.ZodString,coerce:e?.coerce??!1,...eeZ(e)});class etl extends ee${constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){let t;if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==eeO.number){let t=this._getOrReturnCtx(e);return eeH(t,{code:eeU.invalid_type,expected:eeO.number,received:t.parsedType}),eeW}let r=new eeV;for(let n of this._def.checks)"int"===n.kind?tP.isInteger(e.data)||(eeH(t=this._getOrReturnCtx(e,t),{code:eeU.invalid_type,expected:"integer",received:"float",message:n.message}),r.dirty()):"min"===n.kind?(n.inclusive?e.data<n.value:e.data<=n.value)&&(eeH(t=this._getOrReturnCtx(e,t),{code:eeU.too_small,minimum:n.value,type:"number",inclusive:n.inclusive,exact:!1,message:n.message}),r.dirty()):"max"===n.kind?(n.inclusive?e.data>n.value:e.data>=n.value)&&(eeH(t=this._getOrReturnCtx(e,t),{code:eeU.too_big,maximum:n.value,type:"number",inclusive:n.inclusive,exact:!1,message:n.message}),r.dirty()):"multipleOf"===n.kind?0!==function(e,t){let r=(e.toString().split(".")[1]||"").length,n=(t.toString().split(".")[1]||"").length,i=r>n?r:n;return Number.parseInt(e.toFixed(i).replace(".",""))%Number.parseInt(t.toFixed(i).replace(".",""))/10**i}(e.data,n.value)&&(eeH(t=this._getOrReturnCtx(e,t),{code:eeU.not_multiple_of,multipleOf:n.value,message:n.message}),r.dirty()):"finite"===n.kind?Number.isFinite(e.data)||(eeH(t=this._getOrReturnCtx(e,t),{code:eeU.not_finite,message:n.message}),r.dirty()):tP.assertNever(n);return{status:r.value,value:e.data}}gte(e,t){return this.setLimit("min",e,!0,tL.toString(t))}gt(e,t){return this.setLimit("min",e,!1,tL.toString(t))}lte(e,t){return this.setLimit("max",e,!0,tL.toString(t))}lt(e,t){return this.setLimit("max",e,!1,tL.toString(t))}setLimit(e,t,r,n){return new etl({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:r,message:tL.toString(n)}]})}_addCheck(e){return new etl({...this._def,checks:[...this._def.checks,e]})}int(e){return this._addCheck({kind:"int",message:tL.toString(e)})}positive(e){return this._addCheck({kind:"min",value:0,inclusive:!1,message:tL.toString(e)})}negative(e){return this._addCheck({kind:"max",value:0,inclusive:!1,message:tL.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:0,inclusive:!0,message:tL.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:0,inclusive:!0,message:tL.toString(e)})}multipleOf(e,t){return this._addCheck({kind:"multipleOf",value:e,message:tL.toString(t)})}finite(e){return this._addCheck({kind:"finite",message:tL.toString(e)})}safe(e){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:tL.toString(e)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:tL.toString(e)})}get minValue(){let e=null;for(let t of this._def.checks)"min"===t.kind&&(null===e||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)"max"===t.kind&&(null===e||t.value<e)&&(e=t.value);return e}get isInt(){return!!this._def.checks.find(e=>"int"===e.kind||"multipleOf"===e.kind&&tP.isInteger(e.value))}get isFinite(){let e=null,t=null;for(let r of this._def.checks)if("finite"===r.kind||"int"===r.kind||"multipleOf"===r.kind)return!0;else"min"===r.kind?(null===t||r.value>t)&&(t=r.value):"max"===r.kind&&(null===e||r.value<e)&&(e=r.value);return Number.isFinite(t)&&Number.isFinite(e)}}etl.create=e=>new etl({checks:[],typeName:tN.ZodNumber,coerce:e?.coerce||!1,...eeZ(e)});class etc extends ee${constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(e){let t;if(this._def.coerce)try{e.data=BigInt(e.data)}catch{return this._getInvalidInput(e)}if(this._getType(e)!==eeO.bigint)return this._getInvalidInput(e);let r=new eeV;for(let n of this._def.checks)"min"===n.kind?(n.inclusive?e.data<n.value:e.data<=n.value)&&(eeH(t=this._getOrReturnCtx(e,t),{code:eeU.too_small,type:"bigint",minimum:n.value,inclusive:n.inclusive,message:n.message}),r.dirty()):"max"===n.kind?(n.inclusive?e.data>n.value:e.data>=n.value)&&(eeH(t=this._getOrReturnCtx(e,t),{code:eeU.too_big,type:"bigint",maximum:n.value,inclusive:n.inclusive,message:n.message}),r.dirty()):"multipleOf"===n.kind?e.data%n.value!==BigInt(0)&&(eeH(t=this._getOrReturnCtx(e,t),{code:eeU.not_multiple_of,multipleOf:n.value,message:n.message}),r.dirty()):tP.assertNever(n);return{status:r.value,value:e.data}}_getInvalidInput(e){let t=this._getOrReturnCtx(e);return eeH(t,{code:eeU.invalid_type,expected:eeO.bigint,received:t.parsedType}),eeW}gte(e,t){return this.setLimit("min",e,!0,tL.toString(t))}gt(e,t){return this.setLimit("min",e,!1,tL.toString(t))}lte(e,t){return this.setLimit("max",e,!0,tL.toString(t))}lt(e,t){return this.setLimit("max",e,!1,tL.toString(t))}setLimit(e,t,r,n){return new etc({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:r,message:tL.toString(n)}]})}_addCheck(e){return new etc({...this._def,checks:[...this._def.checks,e]})}positive(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:tL.toString(e)})}negative(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:tL.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:tL.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:tL.toString(e)})}multipleOf(e,t){return this._addCheck({kind:"multipleOf",value:e,message:tL.toString(t)})}get minValue(){let e=null;for(let t of this._def.checks)"min"===t.kind&&(null===e||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)"max"===t.kind&&(null===e||t.value<e)&&(e=t.value);return e}}etc.create=e=>new etc({checks:[],typeName:tN.ZodBigInt,coerce:e?.coerce??!1,...eeZ(e)});class etu extends ee${_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==eeO.boolean){let t=this._getOrReturnCtx(e);return eeH(t,{code:eeU.invalid_type,expected:eeO.boolean,received:t.parsedType}),eeW}return eeK(e.data)}}etu.create=e=>new etu({typeName:tN.ZodBoolean,coerce:e?.coerce||!1,...eeZ(e)});class etd extends ee${_parse(e){let t;if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==eeO.date){let t=this._getOrReturnCtx(e);return eeH(t,{code:eeU.invalid_type,expected:eeO.date,received:t.parsedType}),eeW}if(Number.isNaN(e.data.getTime()))return eeH(this._getOrReturnCtx(e),{code:eeU.invalid_date}),eeW;let r=new eeV;for(let n of this._def.checks)"min"===n.kind?e.data.getTime()<n.value&&(eeH(t=this._getOrReturnCtx(e,t),{code:eeU.too_small,message:n.message,inclusive:!0,exact:!1,minimum:n.value,type:"date"}),r.dirty()):"max"===n.kind?e.data.getTime()>n.value&&(eeH(t=this._getOrReturnCtx(e,t),{code:eeU.too_big,message:n.message,inclusive:!0,exact:!1,maximum:n.value,type:"date"}),r.dirty()):tP.assertNever(n);return{status:r.value,value:new Date(e.data.getTime())}}_addCheck(e){return new etd({...this._def,checks:[...this._def.checks,e]})}min(e,t){return this._addCheck({kind:"min",value:e.getTime(),message:tL.toString(t)})}max(e,t){return this._addCheck({kind:"max",value:e.getTime(),message:tL.toString(t)})}get minDate(){let e=null;for(let t of this._def.checks)"min"===t.kind&&(null===e||t.value>e)&&(e=t.value);return null!=e?new Date(e):null}get maxDate(){let e=null;for(let t of this._def.checks)"max"===t.kind&&(null===e||t.value<e)&&(e=t.value);return null!=e?new Date(e):null}}etd.create=e=>new etd({checks:[],coerce:e?.coerce||!1,typeName:tN.ZodDate,...eeZ(e)});class eth extends ee${_parse(e){if(this._getType(e)!==eeO.symbol){let t=this._getOrReturnCtx(e);return eeH(t,{code:eeU.invalid_type,expected:eeO.symbol,received:t.parsedType}),eeW}return eeK(e.data)}}eth.create=e=>new eth({typeName:tN.ZodSymbol,...eeZ(e)});class etp extends ee${_parse(e){if(this._getType(e)!==eeO.undefined){let t=this._getOrReturnCtx(e);return eeH(t,{code:eeU.invalid_type,expected:eeO.undefined,received:t.parsedType}),eeW}return eeK(e.data)}}etp.create=e=>new etp({typeName:tN.ZodUndefined,...eeZ(e)});class etf extends ee${_parse(e){if(this._getType(e)!==eeO.null){let t=this._getOrReturnCtx(e);return eeH(t,{code:eeU.invalid_type,expected:eeO.null,received:t.parsedType}),eeW}return eeK(e.data)}}etf.create=e=>new etf({typeName:tN.ZodNull,...eeZ(e)});class etA extends ee${constructor(){super(...arguments),this._any=!0}_parse(e){return eeK(e.data)}}etA.create=e=>new etA({typeName:tN.ZodAny,...eeZ(e)});class etg extends ee${constructor(){super(...arguments),this._unknown=!0}_parse(e){return eeK(e.data)}}etg.create=e=>new etg({typeName:tN.ZodUnknown,...eeZ(e)});class etm extends ee${_parse(e){let t=this._getOrReturnCtx(e);return eeH(t,{code:eeU.invalid_type,expected:eeO.never,received:t.parsedType}),eeW}}etm.create=e=>new etm({typeName:tN.ZodNever,...eeZ(e)});class etv extends ee${_parse(e){if(this._getType(e)!==eeO.undefined){let t=this._getOrReturnCtx(e);return eeH(t,{code:eeU.invalid_type,expected:eeO.void,received:t.parsedType}),eeW}return eeK(e.data)}}etv.create=e=>new etv({typeName:tN.ZodVoid,...eeZ(e)});class etb extends ee${_parse(e){let{ctx:t,status:r}=this._processInputParams(e),n=this._def;if(t.parsedType!==eeO.array)return eeH(t,{code:eeU.invalid_type,expected:eeO.array,received:t.parsedType}),eeW;if(null!==n.exactLength){let e=t.data.length>n.exactLength.value,i=t.data.length<n.exactLength.value;(e||i)&&(eeH(t,{code:e?eeU.too_big:eeU.too_small,minimum:i?n.exactLength.value:void 0,maximum:e?n.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:n.exactLength.message}),r.dirty())}if(null!==n.minLength&&t.data.length<n.minLength.value&&(eeH(t,{code:eeU.too_small,minimum:n.minLength.value,type:"array",inclusive:!0,exact:!1,message:n.minLength.message}),r.dirty()),null!==n.maxLength&&t.data.length>n.maxLength.value&&(eeH(t,{code:eeU.too_big,maximum:n.maxLength.value,type:"array",inclusive:!0,exact:!1,message:n.maxLength.message}),r.dirty()),t.common.async)return Promise.all([...t.data].map((e,r)=>n.type._parseAsync(new eeY(t,e,t.path,r)))).then(e=>eeV.mergeArray(r,e));let i=[...t.data].map((e,r)=>n.type._parseSync(new eeY(t,e,t.path,r)));return eeV.mergeArray(r,i)}get element(){return this._def.type}min(e,t){return new etb({...this._def,minLength:{value:e,message:tL.toString(t)}})}max(e,t){return new etb({...this._def,maxLength:{value:e,message:tL.toString(t)}})}length(e,t){return new etb({...this._def,exactLength:{value:e,message:tL.toString(t)}})}nonempty(e){return this.min(1,e)}}etb.create=(e,t)=>new etb({type:e,minLength:null,maxLength:null,exactLength:null,typeName:tN.ZodArray,...eeZ(t)});class ety extends ee${constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(null!==this._cached)return this._cached;let e=this._def.shape(),t=tP.objectKeys(e);return this._cached={shape:e,keys:t},this._cached}_parse(e){if(this._getType(e)!==eeO.object){let t=this._getOrReturnCtx(e);return eeH(t,{code:eeU.invalid_type,expected:eeO.object,received:t.parsedType}),eeW}let{status:t,ctx:r}=this._processInputParams(e),{shape:n,keys:i}=this._getCached(),a=[];if(!(this._def.catchall instanceof etm&&"strip"===this._def.unknownKeys))for(let e in r.data)i.includes(e)||a.push(e);let s=[];for(let e of i){let t=n[e],i=r.data[e];s.push({key:{status:"valid",value:e},value:t._parse(new eeY(r,i,r.path,e)),alwaysSet:e in r.data})}if(this._def.catchall instanceof etm){let e=this._def.unknownKeys;if("passthrough"===e)for(let e of a)s.push({key:{status:"valid",value:e},value:{status:"valid",value:r.data[e]}});else if("strict"===e)a.length>0&&(eeH(r,{code:eeU.unrecognized_keys,keys:a}),t.dirty());else if("strip"===e);else throw Error("Internal ZodObject error: invalid unknownKeys value.")}else{let e=this._def.catchall;for(let t of a){let n=r.data[t];s.push({key:{status:"valid",value:t},value:e._parse(new eeY(r,n,r.path,t)),alwaysSet:t in r.data})}}return r.common.async?Promise.resolve().then(async()=>{let e=[];for(let t of s){let r=await t.key,n=await t.value;e.push({key:r,value:n,alwaysSet:t.alwaysSet})}return e}).then(e=>eeV.mergeObjectSync(t,e)):eeV.mergeObjectSync(t,s)}get shape(){return this._def.shape()}strict(e){return tL.errToObj,new ety({...this._def,unknownKeys:"strict",...void 0!==e?{errorMap:(t,r)=>{let n=this._def.errorMap?.(t,r).message??r.defaultError;return"unrecognized_keys"===t.code?{message:tL.errToObj(e).message??n}:{message:n}}}:{}})}strip(){return new ety({...this._def,unknownKeys:"strip"})}passthrough(){return new ety({...this._def,unknownKeys:"passthrough"})}extend(e){return new ety({...this._def,shape:()=>({...this._def.shape(),...e})})}merge(e){return new ety({unknownKeys:e._def.unknownKeys,catchall:e._def.catchall,shape:()=>({...this._def.shape(),...e._def.shape()}),typeName:tN.ZodObject})}setKey(e,t){return this.augment({[e]:t})}catchall(e){return new ety({...this._def,catchall:e})}pick(e){let t={};for(let r of tP.objectKeys(e))e[r]&&this.shape[r]&&(t[r]=this.shape[r]);return new ety({...this._def,shape:()=>t})}omit(e){let t={};for(let r of tP.objectKeys(this.shape))e[r]||(t[r]=this.shape[r]);return new ety({...this._def,shape:()=>t})}deepPartial(){return function e(t){if(t instanceof ety){let r={};for(let n in t.shape){let i=t.shape[n];r[n]=etF.create(e(i))}return new ety({...t._def,shape:()=>r})}if(t instanceof etb)return new etb({...t._def,type:e(t.element)});if(t instanceof etF)return etF.create(e(t.unwrap()));if(t instanceof etO)return etO.create(e(t.unwrap()));if(t instanceof etS)return etS.create(t.items.map(t=>e(t)));else return t}(this)}partial(e){let t={};for(let r of tP.objectKeys(this.shape)){let n=this.shape[r];e&&!e[r]?t[r]=n:t[r]=n.optional()}return new ety({...this._def,shape:()=>t})}required(e){let t={};for(let r of tP.objectKeys(this.shape))if(e&&!e[r])t[r]=this.shape[r];else{let e=this.shape[r];for(;e instanceof etF;)e=e._def.innerType;t[r]=e}return new ety({...this._def,shape:()=>t})}keyof(){return etD(tP.objectKeys(this.shape))}}ety.create=(e,t)=>new ety({shape:()=>e,unknownKeys:"strip",catchall:etm.create(),typeName:tN.ZodObject,...eeZ(t)}),ety.strictCreate=(e,t)=>new ety({shape:()=>e,unknownKeys:"strict",catchall:etm.create(),typeName:tN.ZodObject,...eeZ(t)}),ety.lazycreate=(e,t)=>new ety({shape:e,unknownKeys:"strip",catchall:etm.create(),typeName:tN.ZodObject,...eeZ(t)});class etw extends ee${_parse(e){let{ctx:t}=this._processInputParams(e),r=this._def.options;if(t.common.async)return Promise.all(r.map(async e=>{let r={...t,common:{...t.common,issues:[]},parent:null};return{result:await e._parseAsync({data:t.data,path:t.path,parent:r}),ctx:r}})).then(function(e){for(let t of e)if("valid"===t.result.status)return t.result;for(let r of e)if("dirty"===r.result.status)return t.common.issues.push(...r.ctx.common.issues),r.result;let r=e.map(e=>new eez(e.ctx.common.issues));return eeH(t,{code:eeU.invalid_union,unionErrors:r}),eeW});{let e,n=[];for(let i of r){let r={...t,common:{...t.common,issues:[]},parent:null},a=i._parseSync({data:t.data,path:t.path,parent:r});if("valid"===a.status)return a;"dirty"!==a.status||e||(e={result:a,ctx:r}),r.common.issues.length&&n.push(r.common.issues)}if(e)return t.common.issues.push(...e.ctx.common.issues),e.result;let i=n.map(e=>new eez(e));return eeH(t,{code:eeU.invalid_union,unionErrors:i}),eeW}}get options(){return this._def.options}}etw.create=(e,t)=>new etw({options:e,typeName:tN.ZodUnion,...eeZ(t)});let etx=e=>{if(e instanceof etT)return etx(e.schema);if(e instanceof etN)return etx(e.innerType());if(e instanceof etR)return[e.value];if(e instanceof etP)return e.options;if(e instanceof et_)return tP.objectValues(e.enum);else if(e instanceof etQ)return etx(e._def.innerType);else if(e instanceof etp)return[void 0];else if(e instanceof etf)return[null];else if(e instanceof etF)return[void 0,...etx(e.unwrap())];else if(e instanceof etO)return[null,...etx(e.unwrap())];else if(e instanceof etj)return etx(e.unwrap());else if(e instanceof etH)return etx(e.unwrap());else if(e instanceof etU)return etx(e._def.innerType);else return[]};class etC extends ee${_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==eeO.object)return eeH(t,{code:eeU.invalid_type,expected:eeO.object,received:t.parsedType}),eeW;let r=this.discriminator,n=t.data[r],i=this.optionsMap.get(n);return i?t.common.async?i._parseAsync({data:t.data,path:t.path,parent:t}):i._parseSync({data:t.data,path:t.path,parent:t}):(eeH(t,{code:eeU.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[r]}),eeW)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(e,t,r){let n=new Map;for(let r of t){let t=etx(r.shape[e]);if(!t.length)throw Error(`A discriminator value for key \`${e}\` could not be extracted from all schema options`);for(let i of t){if(n.has(i))throw Error(`Discriminator property ${String(e)} has duplicate value ${String(i)}`);n.set(i,r)}}return new etC({typeName:tN.ZodDiscriminatedUnion,discriminator:e,options:t,optionsMap:n,...eeZ(r)})}}class etE extends ee${_parse(e){let{status:t,ctx:r}=this._processInputParams(e),n=(e,n)=>{if("aborted"===e.status||"aborted"===n.status)return eeW;let i=function e(t,r){let n=eeQ(t),i=eeQ(r);if(t===r)return{valid:!0,data:t};if(n===eeO.object&&i===eeO.object){let n=tP.objectKeys(r),i=tP.objectKeys(t).filter(e=>-1!==n.indexOf(e)),a={...t,...r};for(let n of i){let i=e(t[n],r[n]);if(!i.valid)return{valid:!1};a[n]=i.data}return{valid:!0,data:a}}if(n===eeO.array&&i===eeO.array){if(t.length!==r.length)return{valid:!1};let n=[];for(let i=0;i<t.length;i++){let a=e(t[i],r[i]);if(!a.valid)return{valid:!1};n.push(a.data)}return{valid:!0,data:n}}if(n===eeO.date&&i===eeO.date&&+t==+r)return{valid:!0,data:t};return{valid:!1}}(e.value,n.value);return i.valid?(("dirty"===e.status||"dirty"===n.status)&&t.dirty(),{status:t.value,value:i.data}):(eeH(r,{code:eeU.invalid_intersection_types}),eeW)};return r.common.async?Promise.all([this._def.left._parseAsync({data:r.data,path:r.path,parent:r}),this._def.right._parseAsync({data:r.data,path:r.path,parent:r})]).then(([e,t])=>n(e,t)):n(this._def.left._parseSync({data:r.data,path:r.path,parent:r}),this._def.right._parseSync({data:r.data,path:r.path,parent:r}))}}etE.create=(e,t,r)=>new etE({left:e,right:t,typeName:tN.ZodIntersection,...eeZ(r)});class etS extends ee${_parse(e){let{status:t,ctx:r}=this._processInputParams(e);if(r.parsedType!==eeO.array)return eeH(r,{code:eeU.invalid_type,expected:eeO.array,received:r.parsedType}),eeW;if(r.data.length<this._def.items.length)return eeH(r,{code:eeU.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),eeW;!this._def.rest&&r.data.length>this._def.items.length&&(eeH(r,{code:eeU.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),t.dirty());let n=[...r.data].map((e,t)=>{let n=this._def.items[t]||this._def.rest;return n?n._parse(new eeY(r,e,r.path,t)):null}).filter(e=>!!e);return r.common.async?Promise.all(n).then(e=>eeV.mergeArray(t,e)):eeV.mergeArray(t,n)}get items(){return this._def.items}rest(e){return new etS({...this._def,rest:e})}}etS.create=(e,t)=>{if(!Array.isArray(e))throw Error("You must pass an array of schemas to z.tuple([ ... ])");return new etS({items:e,typeName:tN.ZodTuple,rest:null,...eeZ(t)})};class etM extends ee${get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:r}=this._processInputParams(e);if(r.parsedType!==eeO.object)return eeH(r,{code:eeU.invalid_type,expected:eeO.object,received:r.parsedType}),eeW;let n=[],i=this._def.keyType,a=this._def.valueType;for(let e in r.data)n.push({key:i._parse(new eeY(r,e,r.path,e)),value:a._parse(new eeY(r,r.data[e],r.path,e)),alwaysSet:e in r.data});return r.common.async?eeV.mergeObjectAsync(t,n):eeV.mergeObjectSync(t,n)}get element(){return this._def.valueType}static create(e,t,r){return new etM(t instanceof ee$?{keyType:e,valueType:t,typeName:tN.ZodRecord,...eeZ(r)}:{keyType:eto.create(),valueType:e,typeName:tN.ZodRecord,...eeZ(t)})}}class etI extends ee${get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:r}=this._processInputParams(e);if(r.parsedType!==eeO.map)return eeH(r,{code:eeU.invalid_type,expected:eeO.map,received:r.parsedType}),eeW;let n=this._def.keyType,i=this._def.valueType,a=[...r.data.entries()].map(([e,t],a)=>({key:n._parse(new eeY(r,e,r.path,[a,"key"])),value:i._parse(new eeY(r,t,r.path,[a,"value"]))}));if(r.common.async){let e=new Map;return Promise.resolve().then(async()=>{for(let r of a){let n=await r.key,i=await r.value;if("aborted"===n.status||"aborted"===i.status)return eeW;("dirty"===n.status||"dirty"===i.status)&&t.dirty(),e.set(n.value,i.value)}return{status:t.value,value:e}})}{let e=new Map;for(let r of a){let n=r.key,i=r.value;if("aborted"===n.status||"aborted"===i.status)return eeW;("dirty"===n.status||"dirty"===i.status)&&t.dirty(),e.set(n.value,i.value)}return{status:t.value,value:e}}}}etI.create=(e,t,r)=>new etI({valueType:t,keyType:e,typeName:tN.ZodMap,...eeZ(r)});class etB extends ee${_parse(e){let{status:t,ctx:r}=this._processInputParams(e);if(r.parsedType!==eeO.set)return eeH(r,{code:eeU.invalid_type,expected:eeO.set,received:r.parsedType}),eeW;let n=this._def;null!==n.minSize&&r.data.size<n.minSize.value&&(eeH(r,{code:eeU.too_small,minimum:n.minSize.value,type:"set",inclusive:!0,exact:!1,message:n.minSize.message}),t.dirty()),null!==n.maxSize&&r.data.size>n.maxSize.value&&(eeH(r,{code:eeU.too_big,maximum:n.maxSize.value,type:"set",inclusive:!0,exact:!1,message:n.maxSize.message}),t.dirty());let i=this._def.valueType;function a(e){let r=new Set;for(let n of e){if("aborted"===n.status)return eeW;"dirty"===n.status&&t.dirty(),r.add(n.value)}return{status:t.value,value:r}}let s=[...r.data.values()].map((e,t)=>i._parse(new eeY(r,e,r.path,t)));return r.common.async?Promise.all(s).then(e=>a(e)):a(s)}min(e,t){return new etB({...this._def,minSize:{value:e,message:tL.toString(t)}})}max(e,t){return new etB({...this._def,maxSize:{value:e,message:tL.toString(t)}})}size(e,t){return this.min(e,t).max(e,t)}nonempty(e){return this.min(1,e)}}etB.create=(e,t)=>new etB({valueType:e,minSize:null,maxSize:null,typeName:tN.ZodSet,...eeZ(t)});class etk extends ee${constructor(){super(...arguments),this.validate=this.implement}_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==eeO.function)return eeH(t,{code:eeU.invalid_type,expected:eeO.function,received:t.parsedType}),eeW;function r(e,r){return eeG({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,eej,eej].filter(e=>!!e),issueData:{code:eeU.invalid_arguments,argumentsError:r}})}function n(e,r){return eeG({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,eej,eej].filter(e=>!!e),issueData:{code:eeU.invalid_return_type,returnTypeError:r}})}let i={errorMap:t.common.contextualErrorMap},a=t.data;if(this._def.returns instanceof etL){let e=this;return eeK(async function(...t){let s=new eez([]),o=await e._def.args.parseAsync(t,i).catch(e=>{throw s.addIssue(r(t,e)),s}),l=await Reflect.apply(a,this,o);return await e._def.returns._def.type.parseAsync(l,i).catch(e=>{throw s.addIssue(n(l,e)),s})})}{let e=this;return eeK(function(...t){let s=e._def.args.safeParse(t,i);if(!s.success)throw new eez([r(t,s.error)]);let o=Reflect.apply(a,this,s.data),l=e._def.returns.safeParse(o,i);if(!l.success)throw new eez([n(o,l.error)]);return l.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...e){return new etk({...this._def,args:etS.create(e).rest(etg.create())})}returns(e){return new etk({...this._def,returns:e})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}static create(e,t,r){return new etk({args:e||etS.create([]).rest(etg.create()),returns:t||etg.create(),typeName:tN.ZodFunction,...eeZ(r)})}}class etT extends ee${get schema(){return this._def.getter()}_parse(e){let{ctx:t}=this._processInputParams(e);return this._def.getter()._parse({data:t.data,path:t.path,parent:t})}}etT.create=(e,t)=>new etT({getter:e,typeName:tN.ZodLazy,...eeZ(t)});class etR extends ee${_parse(e){if(e.data!==this._def.value){let t=this._getOrReturnCtx(e);return eeH(t,{received:t.data,code:eeU.invalid_literal,expected:this._def.value}),eeW}return{status:"valid",value:e.data}}get value(){return this._def.value}}function etD(e,t){return new etP({values:e,typeName:tN.ZodEnum,...eeZ(t)})}etR.create=(e,t)=>new etR({value:e,typeName:tN.ZodLiteral,...eeZ(t)});class etP extends ee${_parse(e){if("string"!=typeof e.data){let t=this._getOrReturnCtx(e),r=this._def.values;return eeH(t,{expected:tP.joinValues(r),received:t.parsedType,code:eeU.invalid_type}),eeW}if(this._cache||(this._cache=new Set(this._def.values)),!this._cache.has(e.data)){let t=this._getOrReturnCtx(e),r=this._def.values;return eeH(t,{received:t.data,code:eeU.invalid_enum_value,options:r}),eeW}return eeK(e.data)}get options(){return this._def.values}get enum(){let e={};for(let t of this._def.values)e[t]=t;return e}get Values(){let e={};for(let t of this._def.values)e[t]=t;return e}get Enum(){let e={};for(let t of this._def.values)e[t]=t;return e}extract(e,t=this._def){return etP.create(e,{...this._def,...t})}exclude(e,t=this._def){return etP.create(this.options.filter(t=>!e.includes(t)),{...this._def,...t})}}etP.create=etD;class et_ extends ee${_parse(e){let t=tP.getValidEnumValues(this._def.values),r=this._getOrReturnCtx(e);if(r.parsedType!==eeO.string&&r.parsedType!==eeO.number){let e=tP.objectValues(t);return eeH(r,{expected:tP.joinValues(e),received:r.parsedType,code:eeU.invalid_type}),eeW}if(this._cache||(this._cache=new Set(tP.getValidEnumValues(this._def.values))),!this._cache.has(e.data)){let e=tP.objectValues(t);return eeH(r,{received:r.data,code:eeU.invalid_enum_value,options:e}),eeW}return eeK(e.data)}get enum(){return this._def.values}}et_.create=(e,t)=>new et_({values:e,typeName:tN.ZodNativeEnum,...eeZ(t)});class etL extends ee${unwrap(){return this._def.type}_parse(e){let{ctx:t}=this._processInputParams(e);return t.parsedType!==eeO.promise&&!1===t.common.async?(eeH(t,{code:eeU.invalid_type,expected:eeO.promise,received:t.parsedType}),eeW):eeK((t.parsedType===eeO.promise?t.data:Promise.resolve(t.data)).then(e=>this._def.type.parseAsync(e,{path:t.path,errorMap:t.common.contextualErrorMap})))}}etL.create=(e,t)=>new etL({type:e,typeName:tN.ZodPromise,...eeZ(t)});class etN extends ee${innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===tN.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){let{status:t,ctx:r}=this._processInputParams(e),n=this._def.effect||null,i={addIssue:e=>{eeH(r,e),e.fatal?t.abort():t.dirty()},get path(){return r.path}};if(i.addIssue=i.addIssue.bind(i),"preprocess"===n.type){let e=n.transform(r.data,i);if(r.common.async)return Promise.resolve(e).then(async e=>{if("aborted"===t.value)return eeW;let n=await this._def.schema._parseAsync({data:e,path:r.path,parent:r});return"aborted"===n.status?eeW:"dirty"===n.status||"dirty"===t.value?eeq(n.value):n});{if("aborted"===t.value)return eeW;let n=this._def.schema._parseSync({data:e,path:r.path,parent:r});return"aborted"===n.status?eeW:"dirty"===n.status||"dirty"===t.value?eeq(n.value):n}}if("refinement"===n.type){let e=e=>{let t=n.refinement(e,i);if(r.common.async)return Promise.resolve(t);if(t instanceof Promise)throw Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return e};if(!1!==r.common.async)return this._def.schema._parseAsync({data:r.data,path:r.path,parent:r}).then(r=>"aborted"===r.status?eeW:("dirty"===r.status&&t.dirty(),e(r.value).then(()=>({status:t.value,value:r.value}))));{let n=this._def.schema._parseSync({data:r.data,path:r.path,parent:r});return"aborted"===n.status?eeW:("dirty"===n.status&&t.dirty(),e(n.value),{status:t.value,value:n.value})}}if("transform"===n.type)if(!1!==r.common.async)return this._def.schema._parseAsync({data:r.data,path:r.path,parent:r}).then(e=>"valid"!==e.status?eeW:Promise.resolve(n.transform(e.value,i)).then(e=>({status:t.value,value:e})));else{let e=this._def.schema._parseSync({data:r.data,path:r.path,parent:r});if("valid"!==e.status)return eeW;let a=n.transform(e.value,i);if(a instanceof Promise)throw Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:t.value,value:a}}tP.assertNever(n)}}etN.create=(e,t,r)=>new etN({schema:e,typeName:tN.ZodEffects,effect:t,...eeZ(r)}),etN.createWithPreprocess=(e,t,r)=>new etN({schema:t,effect:{type:"preprocess",transform:e},typeName:tN.ZodEffects,...eeZ(r)});class etF extends ee${_parse(e){return this._getType(e)===eeO.undefined?eeK(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}etF.create=(e,t)=>new etF({innerType:e,typeName:tN.ZodOptional,...eeZ(t)});class etO extends ee${_parse(e){return this._getType(e)===eeO.null?eeK(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}etO.create=(e,t)=>new etO({innerType:e,typeName:tN.ZodNullable,...eeZ(t)});class etQ extends ee${_parse(e){let{ctx:t}=this._processInputParams(e),r=t.data;return t.parsedType===eeO.undefined&&(r=this._def.defaultValue()),this._def.innerType._parse({data:r,path:t.path,parent:t})}removeDefault(){return this._def.innerType}}etQ.create=(e,t)=>new etQ({innerType:e,typeName:tN.ZodDefault,defaultValue:"function"==typeof t.default?t.default:()=>t.default,...eeZ(t)});class etU extends ee${_parse(e){let{ctx:t}=this._processInputParams(e),r={...t,common:{...t.common,issues:[]}},n=this._def.innerType._parse({data:r.data,path:r.path,parent:{...r}});return eeJ(n)?n.then(e=>({status:"valid",value:"valid"===e.status?e.value:this._def.catchValue({get error(){return new eez(r.common.issues)},input:r.data})})):{status:"valid",value:"valid"===n.status?n.value:this._def.catchValue({get error(){return new eez(r.common.issues)},input:r.data})}}removeCatch(){return this._def.innerType}}etU.create=(e,t)=>new etU({innerType:e,typeName:tN.ZodCatch,catchValue:"function"==typeof t.catch?t.catch:()=>t.catch,...eeZ(t)});class etz extends ee${_parse(e){if(this._getType(e)!==eeO.nan){let t=this._getOrReturnCtx(e);return eeH(t,{code:eeU.invalid_type,expected:eeO.nan,received:t.parsedType}),eeW}return{status:"valid",value:e.data}}}etz.create=e=>new etz({typeName:tN.ZodNaN,...eeZ(e)}),Symbol("zod_brand");class etj extends ee${_parse(e){let{ctx:t}=this._processInputParams(e),r=t.data;return this._def.type._parse({data:r,path:t.path,parent:t})}unwrap(){return this._def.type}}class etG extends ee${_parse(e){let{status:t,ctx:r}=this._processInputParams(e);if(r.common.async)return(async()=>{let e=await this._def.in._parseAsync({data:r.data,path:r.path,parent:r});return"aborted"===e.status?eeW:"dirty"===e.status?(t.dirty(),eeq(e.value)):this._def.out._parseAsync({data:e.value,path:r.path,parent:r})})();{let e=this._def.in._parseSync({data:r.data,path:r.path,parent:r});return"aborted"===e.status?eeW:"dirty"===e.status?(t.dirty(),{status:"dirty",value:e.value}):this._def.out._parseSync({data:e.value,path:r.path,parent:r})}}static create(e,t){return new etG({in:e,out:t,typeName:tN.ZodPipeline})}}class etH extends ee${_parse(e){let t=this._def.innerType._parse(e),r=e=>("valid"===e.status&&(e.value=Object.freeze(e.value)),e);return eeJ(t)?t.then(e=>r(e)):r(t)}unwrap(){return this._def.innerType}}etH.create=(e,t)=>new etH({innerType:e,typeName:tN.ZodReadonly,...eeZ(t)}),ety.lazycreate,(eX=tN||(tN={})).ZodString="ZodString",eX.ZodNumber="ZodNumber",eX.ZodNaN="ZodNaN",eX.ZodBigInt="ZodBigInt",eX.ZodBoolean="ZodBoolean",eX.ZodDate="ZodDate",eX.ZodSymbol="ZodSymbol",eX.ZodUndefined="ZodUndefined",eX.ZodNull="ZodNull",eX.ZodAny="ZodAny",eX.ZodUnknown="ZodUnknown",eX.ZodNever="ZodNever",eX.ZodVoid="ZodVoid",eX.ZodArray="ZodArray",eX.ZodObject="ZodObject",eX.ZodUnion="ZodUnion",eX.ZodDiscriminatedUnion="ZodDiscriminatedUnion",eX.ZodIntersection="ZodIntersection",eX.ZodTuple="ZodTuple",eX.ZodRecord="ZodRecord",eX.ZodMap="ZodMap",eX.ZodSet="ZodSet",eX.ZodFunction="ZodFunction",eX.ZodLazy="ZodLazy",eX.ZodLiteral="ZodLiteral",eX.ZodEnum="ZodEnum",eX.ZodEffects="ZodEffects",eX.ZodNativeEnum="ZodNativeEnum",eX.ZodOptional="ZodOptional",eX.ZodNullable="ZodNullable",eX.ZodDefault="ZodDefault",eX.ZodCatch="ZodCatch",eX.ZodPromise="ZodPromise",eX.ZodBranded="ZodBranded",eX.ZodPipeline="ZodPipeline",eX.ZodReadonly="ZodReadonly";let etV=eto.create,etW=etl.create;etz.create,etc.create;let etq=etu.create;etd.create,eth.create,etp.create,etf.create,etA.create;let etK=etg.create;etm.create,etv.create,etb.create;let etJ=ety.create;ety.strictCreate,etw.create,etC.create,etE.create,etS.create,etM.create,etI.create,etB.create,etk.create,etT.create,etR.create;let etY=etP.create;et_.create,etL.create,etN.create,etF.create,etO.create;let etX=etN.createWithPreprocess;etG.create;let etZ=etY(["cm","inch"]),et$=etY(["different_fields","one_field"]),et0=etY(["left_bottom","center","right_bottom","left_center","right_center"]),et1=etJ({buttonLabel:etV(),backgroundColor:etV(),borderColor:etV(),textColor:etV(),borderRadius:etW(),borderWidth:etW()}),et2=etJ({units:etZ,productWidthAndHeight:et$,metafieldForWidth:etV().nullable(),metafieldForHeight:etV().nullable(),metafieldForWidthAndHeight:etV().nullable(),widgetPosition:et0,_widgetSettings:et1.optional(),isWidgetActive:etq()}),et3=function(e){let t=e?.trim().replace(/\/+$/,"")??"";if(!t||t.includes("/v1/http")||t.endsWith("/v1"))return t;let r=t.indexOf("/http");return r>=0?`${t.slice(0,r)}/v1${t.slice(r)}`:`${t}/v1`}("/apps/vizbl-wall-art/http"),et9=etJ({token:etV().trim().min(1),sid:etV().trim().min(1),expiresIn:etW().finite()}),et4=etJ({metafields:etV().trim().min(1),posterPic:etV().trim().min(1),title:etV().trim().optional(),widgetSession:etK().optional()}),et5=etX(e=>"string"==typeof e?JSON.parse(e):e,etJ({metafield:etK(),tinuuid:etV().trim().optional()}));async function et8(e,t){let r=await eeF({productType:"wallart-shopify",variant_id:e,metafield_key:"poster_settings"},{baseURL:et3,signal:t});return function(e){let t,r,n=et4.safeParse("string"!=typeof e?e:JSON.parse(e));if(!n.success)return null;let i=et5.safeParse(n.data.metafields);if(!i.success)return null;let a=(t=function(e){if("string"!=typeof e)return e;try{return JSON.parse(e)}catch{return}}(i.data.metafield),(r=et2.safeParse(t)).success?r.data:null);if(!a)return null;let s=et9.safeParse(n.data.widgetSession);return{settings:a,posterPic:n.data.posterPic,title:n.data.title??null,tinuuid:i.data.tinuuid??null,widgetSession:s.success?s.data:null}}(r.body??r)}let et6="44px",et7="60px",ere={left_center:{left:et7,top:"50%",transform:"translateY(-50%)"},left_bottom:{left:et7,bottom:et6},center:{left:`calc(50% + ${et7})`,bottom:et6,transform:"translateX(-50%)"},right_bottom:{right:et7,bottom:et6},right_center:{right:et7,top:"50%",transform:"translateY(-50%)"}},ert=etX(e=>"number"==typeof e&&Number.isFinite(e)?String(e):e,etV().trim().regex(/^\d+$/));function err(e){let t=ert.safeParse(e);return t.success?t.data:null}function ern(e){return e?e instanceof HTMLInputElement||e instanceof HTMLSelectElement||e instanceof HTMLTextAreaElement?e.value:e.getAttribute("value"):null}let eri=["product-form","[data-main-product]",'[id*="MainProduct"]',".product",".product__info-wrapper",".product__info-container","#MainContent"],era=[".product-recommendations",".related-products","[data-product-recommendations]"];var ers=r("./src/shopify.css?inline");function ero(){let e=function({documentRef:e=document,locationRef:t=window.location,analytics:r=window.ShopifyAnalytics}={}){var n;let i=e.body;if(i?.classList.contains("template-collection"))return!1;if(n=t.pathname,/(?:^|\/)products\/[^/]+/i.test(n)||r?.meta?.page?.pageType?.toLowerCase()==="product")return!0;let a=e.querySelector('meta[property="og:type"]')?.getAttribute("content");return!!(a?.trim().toLowerCase()==="product"||i?.classList.contains("template-product"))}();return{isProductPage:e,variantId:e?function({documentRef:e=document,locationRef:t=window.location}={}){return function(e=window.location){return err(new URLSearchParams(e.search).get("variant"))}(t)??function(e=document){for(let{field:t}of Array.from(e.querySelectorAll('form[action*="/cart/add"]')).flatMap((t,r)=>{let n;return[...Array.from(t.querySelectorAll('input[name="id"], select[name="id"]')),...!(n=t.getAttribute("id"))?[]:Array.from(e.querySelectorAll('input[name="id"][form], select[name="id"][form]')).filter(e=>e.getAttribute("form")===n)].map((e,n)=>({field:e,formIndex:r,fieldIndex:n,score:function(e){let t=0,r=(e.getAttribute("id")??"").toLowerCase(),n=(e.getAttribute("class")??"").toLowerCase();for(let i of(r.includes("product-form")&&(t+=100),n.includes("product-form")&&(t+=80),eri))e.closest(i)&&(t+=25);for(let r of era)e.closest(r)&&(t-=100);return t}(t)}))}).sort((e,t)=>t.score-e.score||e.formIndex-t.formIndex||e.fieldIndex-t.fieldIndex)){let e=err(ern(t));if(e)return e}return null}(e)??function(e=document){for(let t of Array.from(e.querySelectorAll('[name="id"][form^="product-form"]'))){let e=err(ern(t));if(e)return e}return null}(e)??function(e=document){let t=e.querySelector("[data-selected-variant-id]");return err(t?.getAttribute("data-selected-variant-id")??null)}(e)}():null}}function erl(){let e=function(){let[e,t]=(0,rx.useState)(ero);return(0,rx.useEffect)(()=>{let e=null,r=window.history.pushState,n=window.history.replaceState,i=()=>{null===e&&(e=window.requestAnimationFrame(()=>{e=null,t(e=>{let t=ero();return e.isProductPage===t.isProductPage&&e.variantId===t.variantId?e:t})}))};window.history.pushState=function(...e){let t=r.apply(this,e);return i(),t},window.history.replaceState=function(...e){let t=n.apply(this,e);return i(),t};let a=ag('body.template-product, body.template-collection, meta[property="og:type"], form[action*="/cart/add"], form[action*="/cart/add"] [name="id"], [name="id"][form], [data-selected-variant-id]',{initialize(e){let t;return{add(){t=(e=>{var t;let r=(t=e).matches("body")?["class"]:t.matches('meta[property="og:type"]')?["content"]:t.matches('form[action*="/cart/add"]')?["action","class","id"]:t.matches('form[action*="/cart/add"] [name="id"], [name="id"][form]')?["form","value"]:t.matches("[data-selected-variant-id]")?["data-selected-variant-id"]:[];if(0===r.length)return;let n=new MutationObserver(i);return n.observe(e,{attributes:!0,attributeFilter:r}),()=>{n.disconnect()}})(e),i()},remove(){t?.(),t=void 0,i()}}}});return document.addEventListener("change",i,!0),document.addEventListener("input",i,!0),document.addEventListener("click",i,!0),window.addEventListener("popstate",i),i(),()=>{null!==e&&window.cancelAnimationFrame(e),window.history.pushState=r,window.history.replaceState=n,a.abort(),document.removeEventListener("change",i,!0),document.removeEventListener("input",i,!0),document.removeEventListener("click",i,!0),window.removeEventListener("popstate",i)}},[]),e}(),[t,r]=(0,rx.useState)(!1),{data:n}=od({queryKey:["vizbl-shopify-room-viewer","activation",e.variantId],queryFn:({signal:t})=>et8(e.variantId??"",t),enabled:e.isProductPage&&null!==e.variantId,staleTime:3e5,gcTime:3e5,refetchOnWindowFocus:!1},s2,void 0),i=(0,rx.useCallback)(()=>{r(!0)},[]),a=(0,rx.useCallback)(e=>{r(e)},[]);if(!e.isProductPage||!e.variantId||!n?.settings.isWidgetActive)return null;let{settings:s,posterPic:o,title:l}=n,c=s._widgetSettings,u=function(e){if("one_field"===e.productWidthAndHeight){let[t,r]=e.metafieldForWidthAndHeight.split("x");return{width:Number(t),height:Number(r)}}return{width:Number(e.metafieldForWidth),height:Number(e.metafieldForHeight)}}(s),d="inch"===s.units?"in":"cm";return(0,rE.jsxs)(rE.Fragment,{children:[(0,rE.jsx)("button",{type:"button",onClick:i,style:{position:"fixed",zIndex:0x7ffffffe,display:"inline-flex",alignItems:"center",justifyContent:"center",padding:"13.522px 21.635px",borderStyle:"solid",borderColor:c?.borderColor??"rgba(65, 90, 229, 0.3)",borderWidth:c?.borderWidth??1,borderRadius:c?.borderRadius??121.053,background:c?.backgroundColor??"#ffffff",boxShadow:"0px 0px 20px 0px rgba(23, 32, 51, 0.14), 0px 16px 32px 0px rgba(23, 32, 51, 0.17)",color:c?.textColor??"#111111",boxSizing:"border-box",cursor:"pointer",maxWidth:"calc(100vw - 16px)",fontFamily:'Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif',fontSize:18,fontWeight:600,letterSpacing:0,lineHeight:"18px",margin:0,appearance:"none",...ere[s.widgetPosition]},children:c?.buttonLabel??"View in place"}),(0,rE.jsx)(eeP,{open:t,onOpenChange:a,type:"wallart",source:"shopify",src:o,name:l??"",width:u.width,height:u.height,dimensionUnit:d,widgetSession:n.widgetSession}),t&&(0,am.createPortal)((0,rE.jsx)("style",{children:ers.A}),document.head)]})}let erc="vizbl-shopify-room-viewer",eru=new rw({defaultOptions:{queries:{refetchOnMount:!1,refetchOnReconnect:!1,refetchOnWindowFocus:!1,retry:(e,t)=>{let r=function(e){if(ix(e))return e.response?.status}(t);return(void 0===r||!(r>=400)||!(r<500))&&e<2}}}});function erd(){let e,t=((e=document.getElementById(erc))||((e=document.createElement("div")).id=erc,document.body.appendChild(e)),e),r=ij.createRoot(t);r.render((0,rx.createElement)(rI,{client:eru},(0,rx.createElement)(erl)));let n=ag(`#${erc}`,{remove(){n.abort(),r.unmount(),erd()}})}iz({baseURL:et3}),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",erd,{once:!0}):erd()})()})();
|
|
7661
|
+
Defaulting to \`null\`.`));let u=$Y(a,c)?a:null,d=$K(u)?o(u,c):void 0;return(0,rE.jsx)($z,{scope:i,value:u,max:c,children:(0,rE.jsx)(Ku.div,{"aria-valuemax":c,"aria-valuemin":0,"aria-valuenow":$K(u)?u:void 0,"aria-valuetext":d,role:"progressbar","data-state":$q(u,c),"data-value":u??void 0,"data-max":c,...l,ref:t})})});$G.displayName=$O;var $H="ProgressIndicator",$V=rx.forwardRef((e,t)=>{let{__scopeProgress:r,...n}=e,i=$j($H,r);return(0,rE.jsx)(Ku.div,{"data-state":$q(i.value,i.max),"data-value":i.value??void 0,"data-max":i.max,...n,ref:t})});function $W(e,t){return`${Math.round(e/t*100)}%`}function $q(e,t){return null==e?"indeterminate":e===t?"complete":"loading"}function $K(e){return"number"==typeof e}function $J(e){return $K(e)&&!isNaN(e)&&e>0}function $Y(e,t){return $K(e)&&!isNaN(e)&&e<=t&&e>=0}function $X({className:e,value:t,max:r=100,...n}){let i=r>0?r:100,a="number"==typeof t?Math.min(Math.max(t/i*100,0),100):0;return(0,rE.jsx)($G,{"data-slot":"progress",className:Wb("relative h-2 w-full overflow-hidden rounded-full bg-primary/20",e),value:t,max:i,...n,children:(0,rE.jsx)($V,{"data-slot":"progress-indicator",className:"h-full bg-primary transition-[width]",style:{width:`${a}%`}})})}$V.displayName=$H;let $Z=[{minimumProgress:0,translationKey:"floor.processing.stages.reading"},{minimumProgress:28,translationKey:"floor.processing.stages.mapping"},{minimumProgress:56,translationKey:"floor.processing.stages.lighting"},{minimumProgress:82,translationKey:"floor.processing.stages.finalizing"},{minimumProgress:100,translationKey:"floor.processing.stages.ready"}];function $$({isComplete:e,open:t,onCloseAnimationEnd:r,onOpenChange:n,portalContainer:i}){let{t:a}=sf(),s=(0,rx.useRef)(t),[o,l]=(0,rx.useState)(8),c=e?100:o,u=function(e){for(let t=$Z.length-1;t>=0;t-=1){let r=$Z[t];if(r&&e>=r.minimumProgress)return r}return $Z[0]}(c);(0,rx.useEffect)(()=>{t&&!s.current&&l(8),s.current=t},[t]),(0,rx.useEffect)(()=>{if(!t||e)return;let r=window.setInterval(()=>{l(e=>Math.min(92,e+Math.max(2,Math.round((92-e)/8))))},650);return()=>window.clearInterval(r)},[e,t]);let d=(0,rE.jsxs)("div",{role:"status","aria-live":"polite",className:"grid content-start gap-4",children:[(0,rE.jsx)("h2",{className:"typo-base-18 font-medium text-text-dark",children:a("floor.processing.title")}),(0,rE.jsxs)("div",{"data-testid":"floor-processing-progress-panel",className:"grid min-h-[97px] min-w-0 content-center gap-2 overflow-hidden rounded-xl bg-background-base px-6 py-8",children:[(0,rE.jsxs)("div",{className:"flex min-w-0 items-center justify-between gap-3",children:[(0,rE.jsx)("span",{className:"typo-base-14 min-w-0 flex-1 truncate text-left font-medium text-text-light",children:a(u.translationKey)}),(0,rE.jsxs)("span",{className:"typo-base-14 shrink-0 font-medium text-text-dark",children:[c,"%"]})]}),(0,rE.jsx)($X,{value:c,"aria-label":a("floor.processing.progressLabel"),className:"h-1 bg-background-base-3 [&_[data-slot=progress-indicator]]:bg-button-dark [&_[data-slot=progress-indicator]]:duration-500 [&_[data-slot=progress-indicator]]:ease-out"})]})]});return(0,rE.jsx)(Wx,{open:t,onOpenChange:n,children:(0,rE.jsxs)(WM,{portalContainer:i,showCloseButton:!1,"data-testid":"floor-processing-card",className:"top-auto bottom-2 w-[calc(100%-16px)] !max-w-none translate-y-0 gap-4 overflow-hidden rounded-2xl p-6 text-center sm:top-[50%] sm:bottom-auto sm:w-full sm:!max-w-[377px] sm:translate-y-[-50%] sm:p-6",onInteractOutside:e=>{e.preventDefault()},onAnimationEnd:e=>{e.currentTarget===e.target&&"closed"===e.currentTarget.getAttribute("data-state")&&r?.()},children:[(0,rE.jsx)(Wk,{className:"sr-only",children:a("floor.processing.title")}),(0,rE.jsx)(WT,{className:"sr-only",children:a(u.translationKey)}),d]})})}let $0={desktop:[{slot:"product-card",container:"leading",appearance:"card",actionLabelResourceTypeKey:"replaceProduct",actionVariant:"outline",actionSize:"sm",actionWidth:"auto"},{slot:"room-card",container:"leading",appearance:"card",actionLabelKey:"floor.interiorSelection.chooseInterior",actionVariant:"outline",actionSize:"sm"},{slot:"ar-card",container:"trailing",appearance:"card",actionVariant:"secondary",actionSize:"sm"}],tablet:[{slot:"product-card",container:"leading",appearance:"compact-card",actionLabelResourceTypeKey:"replaceProduct",actionVariant:"outline",actionSize:"sm",actionWidth:"auto"},{slot:"room-card",container:"trailing",appearance:"framed-row",actionLabelKey:"floor.interiorSelection.chooseInteriorShort",actionVariant:"outline",actionSize:"sm"},{slot:"ar-card",container:"trailing",appearance:"inline-compact",actionVariant:"secondary",actionSize:"default"}],phone:[{slot:"product-card",container:"leading",appearance:"flow-card",actionLabelResourceTypeKey:"replaceProductShort",actionVariant:"outline",actionSize:"sm",actionWidth:"fixed"},{slot:"room-card",container:"trailing",appearance:"plain-row",actionLabelKey:"floor.interiorSelection.chooseInterior",actionVariant:"outline",actionSize:"sm"},{slot:"ar-card",container:"trailing",appearance:"inline-large",actionVariant:"secondary",actionSize:"lg"}]},$1={desktop:[{slot:"product-card",container:"leading",appearance:"card",actionLabelResourceTypeKey:"replaceProduct",actionVariant:"outline",actionSize:"sm",actionWidth:"auto"},{slot:"room-card",container:"leading",appearance:"card",actionLabelKey:"floor.interiorSelection.chooseInterior",actionVariant:"outline",actionSize:"sm"}],tablet:[{slot:"product-card",container:"leading",appearance:"compact-card",actionLabelResourceTypeKey:"replaceProduct",actionVariant:"outline",actionSize:"sm",actionWidth:"auto"},{slot:"room-card",container:"trailing",appearance:"framed-row",actionLabelKey:"floor.interiorSelection.chooseInteriorShort",actionVariant:"outline",actionSize:"sm"}],phone:[{slot:"product-card",container:"leading",appearance:"flow-card",actionLabelResourceTypeKey:"replaceProductShort",actionVariant:"outline",actionSize:"sm",actionWidth:"auto"},{slot:"room-card",container:"trailing",appearance:"plain-row",actionLabelKey:"floor.interiorSelection.chooseInterior",actionVariant:"outline",actionSize:"sm"}]},$2={"inline-compact":"h-9 w-full rounded-xl","inline-large":"h-11 w-full rounded-xl"},$3={"inline-compact":"size-5","inline-large":"size-6"},$9={desktop:"floor-ar-card",tablet:void 0,phone:void 0},$4=/^[a-z][a-z\d+.-]*:/i,$5={card:"flex min-h-24 w-fit max-w-100 items-center gap-4 rounded-2xl bg-background-containers p-4 text-left text-text-dark shadow-[var(--shadow-login)]","compact-card":"flex min-h-[116px] w-fit max-w-[421px] items-center gap-4 rounded-2xl bg-background-containers p-4 text-left text-text-dark shadow-[var(--shadow-login)]","flow-card":"flex items-center justify-start gap-4 border-b border-border-light bg-background-containers p-4 text-left"},$8={card:"size-6 text-icons-normal","compact-card":"size-6 text-icons-normal","flow-card":"size-5 text-icons-normal"},$6={desktop:"floor-desktop-product-card",tablet:"floor-tablet-product-card",phone:"floor-mobile-product-card"},$7={card:"flex h-24 w-[254px] items-center gap-4 overflow-hidden rounded-2xl bg-background-containers p-4 text-left text-text-dark shadow-[var(--shadow-login)]","framed-row":"flex h-[72px] items-center justify-between gap-3 overflow-hidden rounded-2xl bg-background-containers p-4 text-left text-text-dark shadow-[var(--shadow-login)]","plain-row":"flex w-full items-center justify-between gap-3 rounded-full bg-background-containers text-left"},eee={desktop:"floor-room-card",tablet:"floor-tablet-room-card",phone:void 0},eet={desktop:"floor-desktop-room-name",tablet:"floor-tablet-room-name",phone:"floor-mobile-room-name"},eer={"product-card":function({actions:e,band:t,slot:r,presentation:n}){let i,{t:a}=sf(),{displayUnit:s,name:o,type:l}=W9(),{containerRef:c}=W6(),{material:u,selectedObject:d,tinuuid:h}=W8(),{variantItems:p,selectedTinuuid:f,selectVariant:A}=function(){var e;let{tinuuid:t,selectedObject:r,selectResourceVariant:n,apiKey:i,baseURL:a,source:s,widgetSession:o}=W8(),{type:l}=W9(),{decodeVariant:c}=qL(l),u=r?.kit?.uuid,d=r?.owner?.uuid,{data:h,fetchNextPage:p,hasNextPage:f,isFetchingNextPage:A,isFetchNextPageError:g}=od({queryKey:["room-viewer","kit-objects",{apiKey:(e={apiKey:i,baseURL:a,source:s,resourceType:l}).apiKey??null,kitUuid:u??null,ownerUuid:d??null,resourceType:e.resourceType??null,source:e.source}],enabled:!!c&&!!u&&!!d,queryFn:({pageParam:e,signal:t})=>{if(!u||!d)throw Error("Kit uuid and owner uuid are required.");return WA(u,d,e,{apiKey:i,baseURL:a,signal:t,source:s,widgetSession:o,resourceType:l})},initialPageParam:0,getNextPageParam:(e,t,r)=>void 0!==e.pages_count?r+1<e.pages_count?r+1:void 0:e.objs?.length?r+1:void 0},ou,void 0);(0,rx.useEffect)(()=>{!f||A||g||p({cancelRefetch:!1})},[p,f,A,g]);let m=(0,rx.useMemo)(()=>h?.pages.flatMap(e=>e.objs??[])??[],[h]),v=(0,rx.useMemo)(()=>m.flatMap(e=>{let t=c?.(e.description);return e.tinuuid&&e.materials?.[0]&&t?[{tinuuid:e.tinuuid,...t}]:[]}),[m,c]);return{variantItems:v,selectedTinuuid:t,selectVariant:e=>!!v.some(t=>t.tinuuid===e)&&(n(e),!0)}}(),g=$6[t],m=a(`units.${s}`),v=e.isMaterialSelectionOpen,b=a(v?"floor.scene.hideCatalog":`resourceType.${l}.${n.actionLabelResourceTypeKey}`),y=qQ(l,d,u,o),w=(i=u?.previews?.[0],i?.subRes?.small??i?.url??d?.preview?.subRes?.small??d?.preview?.url??d?.mainPreview),x=p.find(e=>e.tinuuid===f),C=function(e){let t=e?.trim();if(!t||$4.test(t)&&!/^https?:/i.test(t)||/^[./?#]/.test(t)&&!t.startsWith("//"))return;let r=t.startsWith("//")?`https:${t}`:/^https?:/i.test(t)?t:`https://${t}`;try{let e=new URL(r);if("http:"!==e.protocol&&"https:"!==e.protocol||!e.hostname)return;return e.href}catch{return}}(d?.tinuuid===h?d.destinationUrl:void 0),E=v?e.onMaterialSelectionActionPointerDown:void 0;return(0,rE.jsxs)("div",{className:$5[n.appearance],"data-chrome-slot":r,"data-neurodyn-room-viewer-product":"","data-testid":g,children:[(0,rE.jsx)("div",{className:"grid size-16 shrink-0 place-items-center overflow-hidden bg-background-base",children:w?(0,rE.jsx)("img",{src:w,alt:"",className:"size-full object-cover"}):(0,rE.jsx)(WQ,{className:$8[n.appearance]})}),(0,rE.jsxs)("div",{className:"grid min-h-16 min-w-0 flex-1 grid-cols-1 content-center gap-2",children:[(0,rE.jsxs)("div",{className:"flex min-w-0 items-start justify-between gap-2",children:[(0,rE.jsxs)("div",{className:"min-w-0",children:[(0,rE.jsx)("div",{className:"sr-only",children:a(`resourceType.${l}.productCardTitle`)}),(0,rE.jsx)("div",{className:"typo-button-normal truncate text-text-dark",children:y})]}),C&&(0,rE.jsx)("a",{href:C,target:"_blank",rel:"noopener noreferrer",className:"typo-base-12 shrink-0 text-button-primary underline-offset-2 hover:underline","data-testid":`${g}-description-link`,children:a("floor.scene.description")})]}),(0,rE.jsxs)("div",{className:"flex flex-nowrap items-center gap-2",children:[(0,rE.jsxs)(Ww,{type:"button",variant:n.actionVariant,size:n.actionSize,[$P]:!0,"aria-expanded":v,className:Wb("w-fit shrink-0","fixed"===n.actionWidth&&"w-[137px]"),onPointerDown:E?e=>{e.preventDefault(),e.stopPropagation(),E()}:void 0,onClick:v?e.closeMaterialSelection:e.openMaterialSelection,children:[v?(0,rE.jsx)(W_,{className:"size-4"}):(0,rE.jsx)(Wz,{className:"size-4"}),b]}),p.length>1&&!!x&&(0,rE.jsxs)(qs,{value:f??void 0,onValueChange:A,children:[(0,rE.jsx)(ql,{size:"sm",className:"w-fit min-w-0 shrink *:data-[slot=select-value]:block *:data-[slot=select-value]:truncate","data-testid":`${g}-variant-select`,children:(0,rE.jsx)(qo,{})}),(0,rE.jsx)(qc,{portalContainer:c,children:p.map(e=>{var t;let r;return(0,rE.jsx)(qu,{value:e.tinuuid,children:"color"in e?e.color:(t=e.size,r=t.split("\xd7").map(e=>"cm"===s?e:Math.round(qY(Number(e)/100,s)).toString()).join("\xd7"),`${r} ${m}`)},e.tinuuid)})})]})]})]})]})},"room-card":function({actions:e,band:t,slot:r,presentation:n}){let{t:i}=sf(),{room:a}=W5(),s=i(`rooms.${a.id}`,{defaultValue:a.name}),o=(0,rE.jsx)(Ww,{type:"button",variant:n.actionVariant,size:n.actionSize,className:"card"===n.appearance?"w-fit":"shrink-0",onClick:e.openInteriorSelection,children:i(n.actionLabelKey)});return"card"===n.appearance?(0,rE.jsxs)("div",{className:$7[n.appearance],"data-chrome-slot":r,"data-neurodyn-room-viewer-room":"","data-testid":eee[t],children:[(0,rE.jsx)("img",{crossOrigin:"anonymous",src:q2(a),alt:"",className:"size-16 shrink-0 rounded-lg object-cover"}),(0,rE.jsxs)("span",{className:"grid min-w-0 flex-1 content-center gap-2",children:[(0,rE.jsx)("span",{className:"typo-button-normal block min-h-[1.35em] truncate !leading-[1.35] text-text-dark","data-testid":eet[t],children:s}),o]})]}):(0,rE.jsxs)("div",{className:$7[n.appearance],"data-chrome-slot":r,"data-neurodyn-room-viewer-room":"","data-testid":eee[t],children:[(0,rE.jsxs)("span",{className:"flex min-w-0 items-center gap-2",children:[(0,rE.jsx)("img",{crossOrigin:"anonymous",src:q2(a),alt:"",className:"size-10 shrink-0 rounded-full object-cover"}),(0,rE.jsxs)("span",{className:"grid min-w-0",children:[(0,rE.jsx)("span",{className:"typo-base-12 truncate text-text-light",children:i("floor.scene.interiorCardTitle")}),(0,rE.jsx)("span",{className:"typo-button-normal min-h-[1.35em] truncate !leading-[1.35] text-text-dark","data-testid":eet[t],children:s})]})]}),o]})},"ar-card":function({band:e,slot:t,presentation:r}){let{t:n}=sf(),{room:i}=W5(),{tinuuid:a}=W8();return!a||$C&&$E?null:"card"===r.appearance?(0,rE.jsxs)("div",{className:"flex h-24 w-[280px] items-center gap-4 overflow-hidden rounded-2xl bg-background-containers p-4 text-text-dark shadow-[var(--shadow-login)]","data-chrome-slot":t,"data-neurodyn-room-viewer-try-at-home":"","data-testid":$9[e],children:[(0,rE.jsx)("img",{crossOrigin:"anonymous",src:q2(i),alt:"",className:"size-16 shrink-0 rounded-lg object-cover"}),(0,rE.jsxs)("div",{className:"grid min-w-0 flex-1 content-center gap-2",children:[(0,rE.jsx)($S,{buttonLabel:n("floor.scene.tryAtHome"),buttonVariant:r.actionVariant,buttonSize:r.actionSize,buttonClassName:"w-fit"}),(0,rE.jsx)("div",{className:"typo-base-12 truncate font-medium text-text-light",children:n("floor.scene.tryAtHomeBody")})]})]}):(0,rE.jsx)($S,{className:"w-full","data-chrome-slot":t,"data-neurodyn-room-viewer-try-at-home":"",buttonLabel:n("floor.scene.tryAtHome"),buttonLeadingIcon:(0,rE.jsx)(WW,{className:$3[r.appearance]}),buttonVariant:r.actionVariant,buttonSize:r.actionSize,buttonClassName:$2[r.appearance]})}};function een({actions:e,band:t,entry:r}){let n=eer[r.slot];return(0,rE.jsx)(n,{actions:e,band:t,slot:r.slot,presentation:r})}function eei({actions:e,band:t,container:r}){let{type:n}=W9(),i="immersive-panels"===Wv[n].presentation?$1:$0;return(0,rE.jsx)(rE.Fragment,{children:i[t].filter(e=>e.container===r).map(r=>(0,rE.jsx)(een,{actions:e,band:t,entry:r},r.slot))})}async function eea(e,t={}){let r=t.source??"default",n={image:e};if(VL({apiKey:t.apiKey,source:r})){let e=await t.widgetSession?.getTokenForRequest();return V8(n,{baseURL:t.baseURL,headers:{"x-api-key":t.apiKey,...e?{[Ws]:e}:{}},signal:t.signal,timeout:0,params:{productType:VN({apiKey:t.apiKey,source:r,resourceType:t.resourceType})}})}return t.signal?V0(n,{signal:t.signal,timeout:0}):V0(n,{timeout:0})}let ees=[{id:0,label:"empty",rgb:[0,0,0]},{id:1,label:"floor",rgb:[32,208,96]},{id:2,label:"wall-1",rgb:[255,59,48]},{id:3,label:"wall-2",rgb:[10,132,255]},{id:4,label:"ceiling",rgb:[255,214,10]},{id:5,label:"plane-5",rgb:[191,90,242]},{id:6,label:"plane-6",rgb:[255,159,10]},{id:7,label:"plane-7",rgb:[100,210,255]},{id:8,label:"plane-8",rgb:[255,45,85]}];function eeo(){try{return"1"===window.localStorage.getItem("neurodyn-room-viewer:debug-mask-export")}catch{return!1}}async function eel(e,t){var r,n,i;let a,s,o,l,c=await (r=e.planeIds.dataPng,new Promise((e,t)=>{let n=new Image;n.onload=()=>e(n),n.onerror=()=>t(Error("Failed to load room plane id mask image.")),n.crossOrigin="anonymous",n.src=r})),u=e.planeIds.width||c.naturalWidth||c.width,d=e.planeIds.height||c.naturalHeight||c.height,h=document.createElement("canvas"),p=h.getContext("2d",{willReadFrequently:!0});if(!p)throw Error("Failed to prepare room plane mask canvas.");h.width=u,h.height=d,p.drawImage(c,0,0,u,d);let f=p.getImageData(0,0,u,d),A=document.createElement("canvas"),g=A.getContext("2d");if(!g)throw Error("Failed to prepare room debug mask canvas.");A.width=u,A.height=d;for(let e=0;e<u*d;e++){let t=4*e,r=function(e){return ees.find(t=>t.id===e)??{id:e,label:`plane-${e}`,rgb:[73*e%255,151*e%255,211*e%255]}}(f.data[t]??0);f.data[t]=r.rgb[0],f.data[t+1]=r.rgb[1],f.data[t+2]=r.rgb[2],f.data[t+3]=255}g.putImageData(f,0,0),n=await new Promise((e,t)=>{A.toBlob(r=>{r?e(r):t(Error("Failed to export room plane mask image."))},"image/png")}),s=Array.from((a=t.lastIndexOf("."))>0?t.slice(0,a):t).map(e=>{let t=e.charCodeAt(0),r="."===e||"_"===e||"-"===e;return t>=48&&t<=57||t>=65&&t<=90||t>=97&&t<=122||r?e:"-"}).join("").split("-").filter(Boolean).join("-"),i=`${s||"room"}.debug-mask.colors.png`,o=URL.createObjectURL(n),(l=document.createElement("a")).href=o,l.download=i,l.style.display="none",document.body.append(l),l.click(),l.remove(),window.setTimeout(()=>URL.revokeObjectURL(o),1e3)}let eec="custom-interiors";function eeu(){return"u">typeof crypto&&"function"==typeof crypto.randomUUID?`custom-interior-${crypto.randomUUID()}`:`custom-interior-${Date.now()}-${Math.random().toString(36).slice(2)}`}function eed(){let e="u"<typeof indexedDB?null:indexedDB;return e?new Promise((t,r)=>{let n=e.open("neurodyn-floor-custom-interiors",1);n.onupgradeneeded=()=>{let e=n.result;e.objectStoreNames.contains(eec)||e.createObjectStore(eec,{keyPath:"id"})},n.onerror=()=>r(n.error??Error("Failed to open Custom Interior store.")),n.onsuccess=()=>t(n.result)}):Promise.resolve(null)}async function eeh(e,t,r=new Date){let n=await eed();if(!n)return null;let i={id:eeu(),schemaVersion:1,name:e.name,fileName:e.name,createdAt:r.toISOString(),imageBlob:e,scene:t};try{let e=n.transaction(eec,"readwrite");return e.objectStore(eec).put(i),await new Promise((t,r)=>{e.oncomplete=()=>t(),e.onerror=()=>r(e.error??Error("Custom Interior transaction failed.")),e.onabort=()=>r(e.error??Error("Custom Interior transaction aborted."))}),i}finally{n.close()}}async function eep(){let e=await eed();if(!e)return[];try{return await new Promise((t,r)=>{let n=e.transaction(eec,"readonly").objectStore(eec).getAll();n.onerror=()=>r(n.error??Error("Failed to read Custom Interiors.")),n.onsuccess=()=>{let e=n.result.filter(e=>1===e.schemaVersion).sort((e,t)=>Date.parse(t.createdAt)-Date.parse(e.createdAt));t(e)}})}finally{e.close()}}function eef(e){let t=[];return{rooms:e.map(e=>{let r=URL.createObjectURL(e.imageBlob);return t.push(r),{id:e.id,name:e.name,image_url:r,scene:e.scene}}),revokeObjectUrls:()=>{for(let e of t)URL.revokeObjectURL(e);t.length=0}}}let eeA={placementReady:!1,prepareReady:!1,artifactsReady:!1,assetsReady:!1};function eeg(e){let t="dialog"===e?"interior-selection":"scene";return{step:t,hasSceneSelection:"scene"===t,sceneResetKey:0}}function eem(e,t){switch(t.type){case"open-interior-selection":case"return-to-interior-selection":return{...e,step:"interior-selection"};case"dismiss-interior-selection":case"recover-to-scene":return e.hasSceneSelection?{...e,step:"scene"}:e;case"start-custom-interior-processing":return{...e,step:"processing-custom-interior"};case"commit-interior-selection":return{step:"scene",hasSceneSelection:!0,sceneResetKey:e.sceneResetKey+1}}}function eev(e,t){return!e.aborted&&t()}async function eeb({abortSignal:e,apiOptions:t,commitCustomInteriorSelection:r,downloadDebugMask:n,file:i,isActive:a,isDebugMaskExportEnabled:s,onDebugMaskError:o,onPersistenceError:l,onProcessingComplete:c,predictRoomScene:u,saveCustomInterior:d,trackRuntimeCustomInterior:h,waitForProcessingCompletion:p}){let f=await u(i,{...t,signal:e});if(!eev(e,a))return null;s()&&n(f,i.name).catch(o);let A=h(i,f);return eev(e,a)&&A&&(d(i,f).catch(l),c(),await p(),eev(e,a))?(r(A),A):null}function eey(){return new Promise(e=>window.setTimeout(e,250))}function eew(e){console.error("Failed to export room debug mask",e)}function eex(e){console.error("Failed to persist Custom Interior",e)}function eeC(e){console.error("Failed to prepare Custom Interior",e)}let eeE={"immersive-room":function({showDialogCloseButton:e=!1}){var t;let{t:r}=sf(),{name:n,type:i}=W9(),{accessError:a,glbUrl:s,apiKey:o,baseURL:l,hasRooms:c,source:u,widgetSession:d,isViewerAccessPending:h,loadError:p,selectedObject:f,tinuuid:A}=W8(),{clearActiveError:g,handleAccessError:m}=function(){let{setAccessError:e,setLoadError:t}=W8();return{clearActiveError:(0,rx.useCallback)(()=>{e(null),t(null)},[e,t]),handleAccessError:e}}(),{room:v,sourceRooms:b}=W5(),{resourceRef:y,containerRef:w,setContainerRef:x,sceneLoad:C,isRoomScenePending:E}=W6(),{dialogPortalContainer:S,viewerSurface:M,viewerDialogOpen:I,onViewerDialogOpenChange:B}=W4(),[k,T]=(0,rx.useState)(!1),[R,D]=(0,rx.useState)(!1),P=(0,rx.useRef)(null),_=(0,rx.useRef)(!1),L=a??p,N=!!L,F=(t=r("floor.scene.companyFallback"),f?.owner?.name??f?.brand??t),{canShare:O,download:Q,isDownloading:U,isSharing:z,share:j}=$I({captureRef:P,fallbackToClipboard:!0,shareMessage:r(`shareMessage.${i}`)}),G=(0,rx.useCallback)(()=>{T(!1),D(!1)},[]),H=(0,rx.useCallback)(()=>{if(_.current){_.current=!1;return}T(!0),D(!1)},[]),V=(0,rx.useCallback)(()=>{_.current=!0,G()},[G]),W=(0,rx.useCallback)(()=>{D(!0),T(!1)},[]),q=function({activeError:e,apiKey:t,baseURL:r,clearActiveError:n,closeMaterialSelection:i,glbUrl:a,handleAccessError:s,hasDialogPortalContainer:o,hasRooms:l,isRoomScenePending:c,isViewerAccessPending:u,onViewerDialogOpenChange:d,resourceType:h,sceneLoad:p,source:f,sourceRooms:A,viewerDialogOpen:g,viewerSurface:m,widgetSession:v}){let b=function(e){let{patchSceneLoad:t,setAngle:r,setRotation:n}=W6();return function(e,t){let[r,n]=(0,rx.useReducer)(eem,e,eeg),i=(0,rx.useCallback)(e=>{e(),function({patchSceneLoad:e,setAngle:t,setRotation:r}){t(0),r(0),e(eeA)}(t),n({type:"commit-interior-selection"})},[t]),a=(0,rx.useCallback)(()=>{n({type:"dismiss-interior-selection"})},[]),s=(0,rx.useCallback)(()=>{n({type:"open-interior-selection"})},[]),o=(0,rx.useCallback)(()=>{n({type:"recover-to-scene"})},[]),l=(0,rx.useCallback)(()=>{n({type:"return-to-interior-selection"})},[]),c=(0,rx.useCallback)(()=>{n({type:"start-custom-interior-processing"})},[]);return(0,rx.useMemo)(()=>({...r,commitInteriorSelection:i,dismissInteriorSelection:a,openInteriorSelection:s,recoverToScene:o,returnToInteriorSelection:l,startCustomInteriorProcessing:c}),[i,a,s,o,l,c,r])}(e,(0,rx.useMemo)(()=>({patchSceneLoad:t,setAngle:r,setRotation:n}),[t,r,n]))}(m),{appendRuntimeCustomInterior:y,customRooms:w}=function({listCustomInteriors:e}){let{appendRuntimeCustomInterior:t,customRooms:r,replaceRuntimeCustomInteriors:n}=function(){let[e,t]=(0,rx.useState)(()=>[]),r=(0,rx.useRef)(null),n=(0,rx.useCallback)(e=>{r.current?.revokeObjectUrls();let n=eef(e);return r.current=n,t(n.rooms),n.rooms},[]),i=(0,rx.useCallback)((e,n)=>{let i=eef([{id:eeu(),schemaVersion:1,name:e.name,fileName:e.name,createdAt:new Date().toISOString(),imageBlob:e,scene:n}]),a=i.rooms[0];if(!a)return i.revokeObjectUrls(),null;let s=r.current;return r.current={rooms:[],revokeObjectUrls:()=>{s?.revokeObjectUrls(),i.revokeObjectUrls()}},t(e=>[a,...e.filter(e=>e.id!==a.id)]),a},[]);return(0,rx.useEffect)(()=>()=>{r.current?.revokeObjectUrls()},[]),(0,rx.useMemo)(()=>({appendRuntimeCustomInterior:i,customRooms:e,replaceRuntimeCustomInteriors:n}),[i,e,n])}(),i=(0,rx.useRef)(!0);(0,rx.useEffect)(()=>(i.current=!0,()=>{i.current=!1}),[]);let a=(0,rx.useCallback)(async()=>{let t=await e();i.current&&n(t)},[e,n]);return(0,rx.useEffect)(()=>{a()},[a]),(0,rx.useMemo)(()=>({appendRuntimeCustomInterior:t,customRooms:r,replaceRuntimeCustomInteriors:n,refreshCustomInteriors:a}),[t,r,a,n])}({listCustomInteriors:eep}),x=(0,rx.useMemo)(()=>new Set(A.map(e=>e.id)),[A]),{commitCustomInteriorSelection:C,selectInterior:E}=function(e){let{room:t,setRoomId:r,setRooms:n}=W5(),{widgetSession:i}=W8();return function({floorFlow:e,customRooms:t,selectedRoomId:r,onInteriorSelected:n,restoreSourceRooms:i,setRoomId:a,setRooms:s}){let o=(0,rx.useCallback)(t=>{e.commitInteriorSelection(()=>{s(e=>[t,...i(e).filter(e=>e.id!==t.id)]),a(t.id)}),n?.()},[e,n,i,a,s]),l=(0,rx.useCallback)(t=>{let o=t===r;o&&e.hasSceneSelection||(e.commitInteriorSelection(()=>{s(i),a(t)}),o||n?.())},[e,n,i,r,a,s]),c=(0,rx.useCallback)(n=>{if(n===r&&e.hasSceneSelection)return;let i=t.find(e=>e.id===n);i&&o(i)},[e.hasSceneSelection,o,t,r]),u=(0,rx.useCallback)(e=>{t.some(t=>t.id===e)?c(e):l(e)},[t,c,l]);return(0,rx.useMemo)(()=>({commitCustomInteriorSelection:o,selectInterior:u}),[o,u])}({...e,selectedRoomId:t.id,onInteriorSelected:()=>Wu(i,"interior_selected"),setRoomId:r,setRooms:n})}({floorFlow:b,customRooms:w,restoreSourceRooms:(0,rx.useCallback)(e=>[...A,...e.filter(e=>!x.has(e.id))],[x,A])}),S=function(e){let{setIsRoomScenePending:t}=W6();return function({apiOptions:e,floorFlow:t,commitCustomInteriorSelection:r,downloadDebugMask:n,isDebugMaskExportEnabled:i,onAccessError:a,onDebugMaskError:s,onPersistenceError:o,onProcessingError:l,predictRoomScene:c,saveCustomInterior:u,setIsRoomScenePending:d,trackRuntimeCustomInterior:h,waitForProcessingCompletion:p}){let[f,A]=(0,rx.useState)(!1),[g,m]=(0,rx.useState)(!1),[v,b]=(0,rx.useState)(null),[y,w]=(0,rx.useState)(null),[x,C]=(0,rx.useState)(!1),[E,S]=(0,rx.useState)(0),M=(0,rx.useRef)(null),I=(0,rx.useRef)(!1),B=(0,rx.useRef)(!0),k=(0,rx.useRef)(v);v&&(k.current=v),(0,rx.useEffect)(()=>(B.current=!0,()=>{B.current=!1,M.current?.abort()}),[]);let T=(0,rx.useCallback)(()=>{b(null),w(null),C(!1)},[]),R=(0,rx.useCallback)(e=>{T(),A(!1),e()},[T]),D=(0,rx.useCallback)(async f=>{if(T(),!f.type.startsWith("image/"))return void A(!0);A(!1),m(!1),t.startCustomInteriorProcessing(),I.current=!0;let g=new AbortController;M.current?.abort(),M.current=g,d(!0);try{await eeb({abortSignal:g.signal,apiOptions:e,commitCustomInteriorSelection:r,downloadDebugMask:n,file:f,isActive:()=>B.current,isDebugMaskExportEnabled:i,onDebugMaskError:s,onPersistenceError:o,onProcessingComplete:()=>{m(!0)},predictRoomScene:c,saveCustomInterior:u,trackRuntimeCustomInterior:h,waitForProcessingCompletion:p})}catch(t){if(g.signal.aborted)return;let e=VO(t);if(e){I.current&&C(!0),a(e);return}if(l(t),I.current){w("custom-interior-processing"),C(!0);return}b("custom-interior-processing")}finally{M.current===g&&(M.current=null,B.current&&d(!1))}},[e,t,r,n,i,a,s,o,l,c,T,u,d,h,p]),P=(0,rx.useCallback)(()=>{T(),A(!1),t.returnToInteriorSelection(),S(e=>e+1)},[t,T]),_=(0,rx.useCallback)(()=>{T(),t.returnToInteriorSelection()},[t,T]),L=(0,rx.useCallback)(({clearError:e,closeMaterialSelection:r})=>{e(),r(),t.hasSceneSelection&&t.recoverToScene()},[t]),N=(0,rx.useCallback)(()=>{I.current=!1,C(!1),y&&(b(y),w(null))},[y]),F=(0,rx.useCallback)(()=>B.current,[]);return(0,rx.useMemo)(()=>({displayedUploadError:v??k.current,isCustomInteriorProcessingComplete:g,isInvalidFile:f,isMounted:F,isProcessingDialogClosingForError:x,pendingUploadError:y,uploadError:v,uploadRetryRequestId:E,cancelUploadError:_,handleProcessingDialogCloseAnimationEnd:N,openInteriorSelection:R,processUploadFile:D,recoverFromActiveError:L,resetUploadErrorPresentation:T,tryUploadAgain:P}),[_,N,g,f,F,x,R,y,D,L,T,P,v,E])}({...e,setIsRoomScenePending:t})}({apiOptions:(0,rx.useMemo)(()=>({resourceType:h,apiKey:t,baseURL:r,source:f,widgetSession:v}),[t,r,h,f,v]),floorFlow:b,commitCustomInteriorSelection:C,downloadDebugMask:eel,isDebugMaskExportEnabled:eeo,onAccessError:s,onDebugMaskError:eew,onPersistenceError:eex,onProcessingError:eeC,predictRoomScene:eea,saveCustomInterior:eeh,trackRuntimeCustomInterior:y,waitForProcessingCompletion:eey}),{dismissInteriorSelection:M,hasSceneSelection:I,openInteriorSelection:B,sceneResetKey:k,step:T}=b,{cancelUploadError:R,displayedUploadError:D,handleProcessingDialogCloseAnimationEnd:P,isCustomInteriorProcessingComplete:_,isInvalidFile:L,isProcessingDialogClosingForError:N,openInteriorSelection:F,pendingUploadError:O,processUploadFile:Q,recoverFromActiveError:U,resetUploadErrorPresentation:z,tryUploadAgain:j,uploadError:G,uploadRetryRequestId:H}=S,V=l&&I,W=(0,rx.useRef)(e),q=!!(e&&V&&a);e&&(W.current=e);let K=(0,rx.useCallback)(()=>{V&&(z(),M())},[M,V,z]),J=(0,rx.useCallback)(()=>{i(),F(B)},[i,B,F]),Y=(0,rx.useCallback)(()=>{U({clearError:n,closeMaterialSelection:i})},[n,i,U]),X=(0,rx.useCallback)(e=>{if(!e){if(V)return void K();d?.(!1)}},[K,V,d]),Z=(0,rx.useCallback)(e=>{if(!e){if(q)return void Y();d?.(!1)}},[q,Y,d]),$=(0,rx.useCallback)(e=>{e||R()},[R]);!function({fallbackMs:e,handleProcessingDialogCloseAnimationEnd:t,isProcessingDialogClosingForError:r}){(0,rx.useEffect)(()=>{if(!r)return;let n=window.setTimeout(t,e);return()=>window.clearTimeout(n)},[e,t,r])}({fallbackMs:220,handleProcessingDialogCloseAnimationEnd:P,isProcessingDialogClosingForError:N});let ee=function({activeError:e,canRecoverFromActiveError:t,floorFlow:r,hasDialogPortalContainer:n,hasRooms:i,isProcessingDialogClosingForError:a,isRoomScenePending:s,isViewerAccessPending:o,pendingUploadError:l,sceneLoad:c,uploadError:u,viewerDialogOpen:d,viewerSurface:h}){let p="dialog"===h&&n,f=!p||d,A=i&&r.hasSceneSelection,g=i||"scene"!==r.step?r.step:"interior-selection",m=!o&&A&&(!e||t),v=A||p,b=!o&&!e&&v,y=!o&&!e&&!v&&"interior-selection"===g;return{activeErrorDialog:{open:!a&&!!e&&f,showCloseButton:!t},interiorSelection:{open:b&&"interior-selection"===g&&f,presentation:b?"dialog":y?"screen":null,shouldRender:b||y},processingDialog:{open:!e&&!u&&!l&&s&&"processing-custom-interior"===r.step&&f},scene:{isLoading:s||!Object.values(c).every(Boolean),resetKey:r.sceneResetKey,shouldRender:m,shouldRenderDialog:m},surface:{usesSiblingDialogFlow:p},uploadErrorDialog:{open:!a&&!e&&!!u&&f}}}({activeError:e,canRecoverFromActiveError:q,floorFlow:{hasSceneSelection:I,sceneResetKey:k,step:T},hasDialogPortalContainer:o,hasRooms:l,isProcessingDialogClosingForError:N,isRoomScenePending:c,isViewerAccessPending:u,pendingUploadError:O,sceneLoad:p,uploadError:G,viewerDialogOpen:g,viewerSurface:m});return{...ee,activeErrorDialog:{...ee.activeErrorDialog,onCancel:q?Y:void 0,onOpenChange:Z,onTryAgain:q?Y:void 0,variant:e??W.current},customRooms:w,interiorSelection:{...ee.interiorSelection,isInvalidFile:L,onOpenChange:X,onSelectRoom:E,onUploadFile:Q,openFromScene:J,uploadRetryRequestId:H},sourceRooms:A,processingDialog:{...ee.processingDialog,isComplete:_,onCloseAnimationEnd:P,onOpenChange:ee.surface.usesSiblingDialogFlow?d:void 0},step:T,uploadErrorDialog:{...ee.uploadErrorDialog,onCancel:R,onOpenChange:$,onTryAgain:j,variant:D}}}({activeError:L,apiKey:o,baseURL:l,clearActiveError:g,closeMaterialSelection:G,glbUrl:s,handleAccessError:m,hasDialogPortalContainer:null!==S,hasRooms:c,isRoomScenePending:E,isViewerAccessPending:h,onViewerDialogOpenChange:B,resourceType:i,sceneLoad:C,source:u,sourceRooms:b,viewerDialogOpen:I,viewerSurface:M,widgetSession:d}),K=(0,rx.useRef)(null),J=function(e,t){let[r,n]=(0,rx.useState)(!1);return e&&r&&n(!1),(0,rx.useEffect)(()=>{let r;if(e)return;let i=()=>{t.current&&(0===Number(getComputedStyle(t.current).opacity)?n(!0):r=requestAnimationFrame(i))};return r=requestAnimationFrame(i),()=>cancelAnimationFrame(r)},[e,t]),!e&&r}(q.scene.isLoading||!q.scene.shouldRender||!I,K),Y=ZM(),{pending:X,finish:Z}=function(e,t,r){let[n,i]=(0,rx.useState)({open:e,pending:e&&t,sceneKey:r});n.open!==e?i({open:e,pending:e&&t,sceneKey:r}):n.sceneKey!==r?i({...n,sceneKey:r,pending:n.pending&&null===n.sceneKey}):n.pending&&!t&&i({...n,pending:!1});let a=(0,rx.useCallback)(()=>i(e=>({...e,pending:!1})),[]);return{pending:e&&n.pending,finish:a}}(I,q7("(max-width: 639px)")&&"focus-resource"===Wv[i].introduction,q.scene.shouldRender?`${q.scene.resetKey}:${A??""}`:null),$=Y?.select,ee=(0,rx.useCallback)(()=>{Z(),$?.("0,0")},[Z,$]),et=(0,rx.useMemo)(()=>X?{ready:J,target:y,onComplete:ee,onCancel:Z}:void 0,[X,ee,Z,J,y]),er=q.interiorSelection.openFromScene,en=(0,rx.useCallback)(()=>{G(),er()},[G,er]),ei=(0,rx.useMemo)(()=>({isMaterialSelectionOpen:k,openMaterialSelection:H,closeMaterialSelection:G,onMaterialSelectionActionPointerDown:V,openInteriorSelection:en}),[G,V,en,H,k]),ea=(0,rx.useMemo)(()=>({isMaterialSelectionOpen:R,openMaterialSelection:W,closeMaterialSelection:G,openInteriorSelection:en}),[G,en,W,R]);(0,rx.useEffect)(()=>{if(k)return document.addEventListener("pointerdown",e),document.addEventListener("keydown",t),()=>{document.removeEventListener("pointerdown",e),document.removeEventListener("keydown",t)};function e(e){var t;(t=e.target)instanceof Element&&t.closest(`[${$P}], [${$_}]`)||T(!1)}function t(e){"Escape"===e.key&&T(!1)}},[k]);let es=q.surface.usesSiblingDialogFlow?S:w,eo=(0,rE.jsxs)(rE.Fragment,{children:[(0,rE.jsx)("div",{className:"absolute inset-0 bg-constant-black","data-testid":"floor-scene-background-base"}),(0,rE.jsx)("div",{"aria-hidden":!0,className:"absolute top-[-52px] right-[-1.36%] bottom-[-52px] left-[-1.36%] blur-[40px]","data-testid":"floor-blur-background",children:(0,rE.jsx)("img",{crossOrigin:"anonymous",src:q2(v),alt:"",className:"block size-full max-w-none object-cover object-center opacity-50"})}),(0,rE.jsxs)("div",{className:"pointer-events-none absolute top-0 right-0 left-0 z-20 flex min-h-22 items-start justify-between gap-4 bg-linear-to-b from-black/75 via-black/35 to-transparent px-4 pt-4 pb-8 text-constant-white sm:px-6 lg:min-h-25 lg:pt-6",children:[(0,rE.jsx)("div",{className:"min-w-0 pt-1",children:(0,rE.jsx)("h1",{"data-testid":"floor-scene-header-company",className:"typo-base-16 truncate font-medium lg:typo-base-18",children:F})}),(0,rE.jsxs)("div",{className:"pointer-events-auto inline-flex shrink-0 items-center gap-2",children:[(0,rE.jsxs)(Ww,{type:"button",variant:"secondary","aria-label":r("floor.scene.share"),"data-neurodyn-room-viewer-share":"",disabled:!O||z,onClick:j,className:"size-10 rounded-full px-0 lg:h-9 lg:w-auto lg:rounded-xl lg:px-3.5",children:[(0,rE.jsx)(WV,{className:"size-5"}),(0,rE.jsx)("span",{className:"hidden lg:inline",children:r("floor.scene.share")})]}),(0,rE.jsxs)(Ww,{type:"button",variant:"secondary","aria-label":r("floor.scene.download"),"data-neurodyn-room-viewer-download":"",disabled:U,onClick:Q,className:"size-10 rounded-full px-0 lg:h-9 lg:w-auto lg:rounded-xl lg:px-3.5",children:[(0,rE.jsx)(WL,{className:"size-5"}),(0,rE.jsx)("span",{className:"hidden lg:inline",children:r("floor.scene.download")})]}),e&&(0,rE.jsx)(WE,{asChild:!0,children:(0,rE.jsxs)(Ww,{type:"button",variant:"secondary","aria-label":r("close"),className:"size-10 rounded-full px-0 lg:h-9 lg:w-auto lg:rounded-xl lg:px-3.5",children:[(0,rE.jsx)("span",{className:"hidden lg:inline",children:r("close")}),(0,rE.jsx)(W_,{className:"!size-5"})]})})]})]}),(0,rE.jsxs)("div",{className:"relative z-10 size-full min-h-0 min-w-0","data-testid":"floor-scene-viewport",children:[(0,rE.jsx)($d,{introduction:et,captureRef:P,className:"relative z-10 size-full min-h-0",canvasWrapperClassName:"p-0 sm:pt-0 sm:pb-0"},q.scene.resetKey),(0,rE.jsx)("div",{"aria-hidden":!q.scene.isLoading,className:Wb("absolute inset-0 z-10 flex items-center justify-center bg-radial from-background-containers to-background-base-2 transition-opacity",q.scene.isLoading?"opacity-100 pointer-events-auto duration-0":"opacity-0 pointer-events-none duration-250ms"),ref:K,"data-testid":"floor-scene-loader",style:{transitionDuration:q.scene.isLoading?"0ms":"250ms"},children:(0,rE.jsx)(WK,{variant:"logo"})})]}),(0,rE.jsxs)("div",{className:"pointer-events-none absolute right-6 bottom-6 left-6 z-20 hidden items-end justify-between gap-4 lg:flex","data-testid":"floor-desktop-cards",children:[(0,rE.jsx)("div",{className:"pointer-events-auto flex min-w-0 items-stretch gap-3",children:(0,rE.jsx)(eei,{actions:ei,band:"desktop",container:"leading"})}),(0,rE.jsx)("div",{className:"pointer-events-auto",children:(0,rE.jsx)(eei,{actions:ei,band:"desktop",container:"trailing"})})]}),(0,rE.jsxs)("div",{className:"pointer-events-none absolute right-6 bottom-6 left-6 z-20 hidden items-end justify-between gap-2 sm:flex lg:hidden","data-testid":"floor-tablet-cards",children:[(0,rE.jsx)("div",{className:"pointer-events-auto flex min-w-0 items-stretch gap-3",children:(0,rE.jsx)(eei,{actions:ei,band:"tablet",container:"leading"})}),(0,rE.jsx)("div",{className:"pointer-events-auto grid w-[254px] gap-2",children:(0,rE.jsx)(eei,{actions:ei,band:"tablet",container:"trailing"})})]}),(0,rE.jsxs)("div",{className:"relative z-20 grid bg-background-containers text-text-dark shadow-[var(--shadow-login)] sm:hidden","data-testid":"floor-mobile-cards",children:[(0,rE.jsx)("div",{className:"grid",children:(0,rE.jsx)(eei,{actions:ea,band:"phone",container:"leading"})}),(0,rE.jsx)("div",{className:"grid gap-4 bg-background-containers px-6 pt-4 pb-6","data-testid":"floor-mobile-bottom-actions",children:(0,rE.jsx)(eei,{actions:ea,band:"phone",container:"trailing"})})]}),k&&!N&&(0,rE.jsx)($N,{[$_]:!0,className:"absolute bottom-[152px] left-6 z-30 hidden max-h-[calc(100%-252px)] w-[348px] rounded-2xl bg-background-containers sm:flex lg:bottom-[132px] lg:max-h-[calc(100%-232px)]",gridClassName:"px-4 pb-4",titleClassName:"px-4 pt-4",onOpenChange:G}),(0,rE.jsx)($F,{open:R&&!N,portalContainer:es,onOpenChange:D})]}),el=q.interiorSelection.shouldRender?"dialog"===q.interiorSelection.presentation?(0,rE.jsx)($D,{open:q.interiorSelection.open,showCloseButton:e||q.scene.shouldRender,portalContainer:es,rooms:q.sourceRooms,customRooms:q.customRooms,selectedRoomId:v.id,isInvalidFile:q.interiorSelection.isInvalidFile,uploadRetryRequestId:q.interiorSelection.uploadRetryRequestId,onOpenChange:q.interiorSelection.onOpenChange,onSelectRoom:q.interiorSelection.onSelectRoom,onUploadFile:q.interiorSelection.onUploadFile}):"screen"===q.interiorSelection.presentation?(0,rE.jsx)($R,{rooms:q.sourceRooms,customRooms:q.customRooms,selectedRoomId:v.id,isInvalidFile:q.interiorSelection.isInvalidFile,uploadRetryRequestId:q.interiorSelection.uploadRetryRequestId,showCloseButton:e,onSelectRoom:q.interiorSelection.onSelectRoom,onUploadFile:q.interiorSelection.onUploadFile}):null:null,ec=(0,rE.jsx)($$,{isComplete:q.processingDialog.isComplete,open:q.processingDialog.open,portalContainer:es,onCloseAnimationEnd:q.processingDialog.onCloseAnimationEnd,onOpenChange:q.processingDialog.onOpenChange}),eu=(0,rE.jsxs)(rE.Fragment,{children:[(0,rE.jsx)($k,{variant:q.activeErrorDialog.variant,open:q.activeErrorDialog.open,portalContainer:es,showDialogCloseButton:e&&q.activeErrorDialog.showCloseButton,onOpenChange:q.activeErrorDialog.onOpenChange,onTryAgain:q.activeErrorDialog.onTryAgain,onCancel:q.activeErrorDialog.onCancel}),(0,rE.jsx)($k,{variant:q.uploadErrorDialog.variant,open:q.uploadErrorDialog.open,portalContainer:es,onOpenChange:q.uploadErrorDialog.onOpenChange,onTryAgain:q.uploadErrorDialog.onTryAgain,onCancel:q.uploadErrorDialog.onCancel})]}),ed=(0,rE.jsxs)("div",{ref:x,className:"relative grid size-full grid-rows-[minmax(0,1fr)_auto] overflow-hidden text-foreground sm:block","data-neurodyn-room-viewer-container":"","data-testid":"floor-viewer-root",children:[h?(0,rE.jsx)("div",{className:"flex size-full items-center justify-center bg-radial from-background-containers to-background-base-2",children:(0,rE.jsx)(WK,{variant:"logo"})}):q.scene.shouldRender?eo:null,!q.surface.usesSiblingDialogFlow&&el,!q.surface.usesSiblingDialogFlow&&ec]});return q.surface.usesSiblingDialogFlow?(0,rE.jsxs)(rE.Fragment,{children:[(q.scene.shouldRenderDialog||h)&&(0,rE.jsx)(Wx,{open:I,onOpenChange:B,children:(0,rE.jsxs)(WM,{className:WJ,contentInsideOverlay:!0,portalContainer:S,showCloseButton:!1,onInteractOutside:e=>{e.preventDefault()},children:[(0,rE.jsx)(Wk,{className:"sr-only",children:n}),(0,rE.jsx)(WT,{className:"sr-only"}),ed]})}),el,ec,eu]}):(0,rE.jsxs)(rE.Fragment,{children:[ed,eu]})},"framed-scene":function({showDialogCloseButton:e=!1}){let{name:t}=W9(),{isViewerAccessPending:r,accessError:n,loadError:i,setLoadError:a,hasRooms:s}=W8(),{setContainerRef:o,sceneLoad:l,isRoomScenePending:c}=W6(),{dialogPortalContainer:u,viewerSurface:d,viewerDialogOpen:h,onViewerDialogOpenChange:p}=W4(),{t:f}=sf(),A=(0,rx.useRef)(null),g=r||c||s&&!Object.values(l).every(Boolean),m=n??i,v=m?(0,rE.jsx)("div",{ref:o,"data-neurodyn-room-viewer-container":"",className:"relative size-full overflow-hidden bg-radial from-background-containers to-background-base-2 text-foreground",children:(0,rE.jsx)(q8,{variant:m,showDialogCloseButton:e})}):(0,rE.jsxs)("div",{ref:o,"data-neurodyn-room-viewer-container":"",className:"relative size-full bg-radial from-background-containers to-background-base-2 text-foreground overflow-hidden",children:[e&&(0,rE.jsx)(WE,{asChild:!0,children:(0,rE.jsxs)(Ww,{className:"absolute top-3 right-6 z-20",variant:"secondary",children:[f("close"),(0,rE.jsx)(uc,{})]})}),!r&&(s?(0,rE.jsxs)(rE.Fragment,{children:[(0,rE.jsx)(q5,{className:"absolute top-0 right-0 left-0 z-15"}),(0,rE.jsxs)("div",{className:"size-full max-w-full grid grid-rows-[1fr_auto]",children:[(0,rE.jsx)(ZD,{onError:()=>a("viewer-load-failed"),children:(0,rE.jsx)($d,{captureRef:A,className:"size-full min-h-0",controls:(0,rE.jsx)($B,{captureRef:A})})}),(0,rE.jsx)(q4,{className:"bg-background"})]})]}):(0,rE.jsx)(q9,{className:"absolute inset-x-0 bottom-0 bg-background"})),(0,rE.jsx)("div",{"aria-hidden":!g,className:Wb("absolute inset-0 z-10 flex items-center justify-center bg-radial from-background-containers to-background-base-2 transition-opacity",g?"opacity-100 pointer-events-auto duration-0":"opacity-0 pointer-events-none duration-250ms"),children:(0,rE.jsx)(WK,{variant:"logo"})})]});return"dialog"!==d?v:(0,rE.jsx)(Wx,{open:h,onOpenChange:p,children:(0,rE.jsxs)(WM,{className:WJ,contentInsideOverlay:!0,portalContainer:u,showCloseButton:!1,onInteractOutside:e=>{e.preventDefault()},children:[(0,rE.jsxs)(WI,{className:"sr-only",children:[(0,rE.jsx)(Wk,{children:t}),(0,rE.jsx)(WT,{})]}),v]})})}};function eeS({showDialogCloseButton:e=!1}){let{type:t}=W9(),r=eeE[Wv[t].chrome];return(0,rE.jsx)(r,{showDialogCloseButton:e})}let eeM=0,eeI=[];function eeB(e,t,r){if(t===r)return e;let n=new Set(t.map(e=>e.id)),i=new Set(r.map(e=>e.id)),a=e.filter(e=>!n.has(e.id)&&!i.has(e.id));return a.length>0?[...a,...r]:r}function eek({children:e,src:t,tinuuid:r,type:n,viewerSurface:i,dialogPortalContainer:a=null,viewerDialogOpen:s=!0,onViewerDialogOpenChange:o,width:l,height:c,displayUnit:u,name:d,apiKey:h,baseURL:p,source:f,externalWidgetSession:A}){var g,m;let v=function(){let{t:e}=sf();return(0,rx.useMemo)(()=>[{value:.025,label:`2.5 ${e("units.cm")}`},{value:.05,label:`5 ${e("units.cm")}`}],[e])}(),b=qX(u),y=qO(n),w="finish"===Wv[n].materialRole,{offersSizeVariants:x}=qL(n),C="floor-room-presets"===Wv[n].roomPresets?qI:qM,E=VL({apiKey:h,baseURL:p,source:f}),[S,M]=(0,rx.useState)(r),[I,B]=(0,rx.useState)(null),k=(0,rx.useCallback)(e=>{B(null),M(e)},[]),T=(0,rx.useCallback)(e=>{B(e),M(e)},[]),[R,D]=(0,rx.useState)(null),[P,_]=(0,rx.useState)(v[0].value),[L,N]=(0,rx.useState)(b[0].value),[F,O]=(0,rx.useState)(0),[Q,U]=(0,rx.useState)(0),[z,j]=(0,rx.useState)(!1),[G,H]=(0,rx.useState)(null),[V,W]=(0,rx.useState)(()=>({layoutReady:!1,placementReady:!1,materialReady:"artwork-src"===y.materialSource,artifactsReady:!1,assetsReady:!1,prepareReady:!1})),[q,K]=(0,rx.useState)(!1),[J,Y]=(0,rx.useState)(null),[X,Z]=(0,rx.useState)(null),$=(0,rx.useRef)(null),ee=(0,rx.useRef)(new Set),et=(0,rx.useRef)(null),er=(0,rx.useRef)(!0),en=(0,rx.useRef)(!1),ei="object-glb"===y.materialSource,ea="default"===f&&void 0!==h,es=VF("wall-panel"===(g={apiKey:h,baseURL:p,source:f,resourceType:n}).resourceType?g:{...g,resourceType:void 0}),eo=od({queryKey:["room-viewer","activate",{apiKey:h??null,source:f,resourceType:n}],enabled:ea,queryFn:({signal:e})=>V1(es.query,{...es.config,baseURL:p,headers:{"x-api-key":h},signal:e})},s2,void 0),el=VO(eo.error),ec=(0,rx.useMemo)(()=>{let e=eo.data;return Wc(e?.widgetSession,{apiConfig:{baseURL:p,headers:{"x-api-key":h}}})},[eo.data,h,p]),eu=(0,rx.useMemo)(()=>A instanceof Wl?A:Wc(A,{apiConfig:{baseURL:p,headers:{"x-api-key":h}}})??ec,[ec,h,p,A]),ed="shopify"===f?null!==eu:ea&&eo.isSuccess,eh=od({queryKey:["room-viewer","rooms",{apiKey:(m={apiKey:h,baseURL:p,source:f,widgetSession:eu,resourceType:n}).apiKey??null,source:m.source,resourceType:m.resourceType??null,widgetSessionId:m.widgetSession?.sid??null}],enabled:E&&ed,queryFn:async({signal:e})=>{try{return await Wg({apiKey:h,baseURL:p,signal:e,source:f,widgetSession:eu,resourceType:n})}catch(e){if(VO(e))throw e;return[]}}},s2,void 0),ep=E?eh.data??eeI:C,[ef,eA]=(0,rx.useState)(()=>({rooms:ep,sourceRooms:ep})),eg=(0,rx.useMemo)(()=>eeB(ef.rooms,ef.sourceRooms,ep),[ef.rooms,ef.sourceRooms,ep]),em=(0,rx.useCallback)(e=>{eA(t=>{let r=eeB(t.rooms,t.sourceRooms,ep);return{rooms:"function"==typeof e?e(r):e,sourceRooms:ep}})},[ep]),[ev,eb]=(0,rx.useState)(()=>C[0].id),ey=eg.find(e=>e.id===ev),ew=ey??eg[0]??C[0],ex="rotate-on-floor"===Wv[n].manipulation;(0,rx.useEffect)(()=>{ex&&U(0)},[ex,ew.id]);let eC=eg.length>0;!ey&&eg[0]&&ev!==eg[0].id&&eb(eg[0].id);let eE=!ea||eo.isSuccess||eo.isError&&null===el,eS=od({queryKey:Wh(r??void 0,{apiKey:h,baseURL:p,source:f,resourceType:n}),enabled:eE&&ei&&null===R&&!!r,queryFn:async({signal:e})=>{if(!r)throw Error("Tinuuid is required.");return Wp(r,{apiKey:h,baseURL:p,signal:e,source:f,widgetSession:eu,resourceType:n})}},s2,void 0),eM=od({queryKey:Wh(S??void 0,{apiKey:h,baseURL:p,source:f,resourceType:n}),enabled:eE&&ei&&!!S,placeholderData:t4,queryFn:async({signal:e})=>{if(!S)throw Error("Tinuuid is required.");return Wp(S,{apiKey:h,baseURL:p,signal:e,source:f,widgetSession:eu,resourceType:n})}},s2,void 0),eI=eS.data??null,eB=eM.data??null,ek=eI?.materials?.[0]??null,eT=R?.native?.glbUrl??null,eR=VO(eS.error),eD=VO(eh.error),eP=E&&("shopify"===f?null===eu||eh.isLoading:eo.isSuccess&&eh.isLoading),e_=ea&&eo.isLoading||eP,eL=eo.error&&null===el?"viewer-load-failed":null,eN=eS.error&&null===eR?"viewer-load-failed":null,eF="artwork-src"===y.materialSource&&("string"!=typeof t||0===t.trim().length)?"artwork-load-failed":null,eO=ei&&!e_&&(!r||eS.isSuccess&&null===ek||null!==R&&null===eT)?"viewer-load-failed":null,eQ=null!==I&&I===S&&(eM.isError||eM.isSuccess&&eB?.tinuuid===S&&!eB.materials?.[0]?.native?.glbUrl)?"viewer-load-failed":null,eU=J??el??eD??eR,ez=X??eQ??eL??eN??eO??eF,ej=(0,rx.useCallback)(e=>{W(t=>Object.assign({},t,e))},[]);(0,rx.useEffect)(()=>{let e=new Set(eg.map(e=>e.image_url));for(let t of Array.from(ee.current))e.has(t)||(URL.revokeObjectURL(t),ee.current.delete(t))},[eg]),(0,rx.useEffect)(()=>{let e=ee.current;return er.current=!0,()=>{for(let t of(er.current=!1,et.current?.abort(),Array.from(e)))URL.revokeObjectURL(t);e.clear()}},[]);let eG=(0,rx.useCallback)(async e=>{let t=null,r=new AbortController;et.current?.abort(),et.current=r,K(!0);try{t=URL.createObjectURL(e);let i=await eea(e,{resourceType:n,apiKey:h,baseURL:p,source:f,signal:r.signal,widgetSession:eu});if(r.signal.aborted||!er.current)return void URL.revokeObjectURL(t);eeo()&&eel(i,e.name).catch(e=>{console.error("Failed to export room debug mask",e)});let a={id:(eeM+=1,`room-custom-${eeM}`),name:e.name,image_url:t,scene:i};ee.current.add(t),ej({placementReady:!1,prepareReady:!1,artifactsReady:!1,assetsReady:!1}),em(e=>[a,...e]),eb(a.id)}catch(n){if(t&&URL.revokeObjectURL(t),r.signal.aborted)return;let e=VO(n);if(e)return void Y(e);console.error("Failed to prepare custom room scene",n)}finally{et.current===r&&(et.current=null,er.current&&K(!1))}},[h,p,ej,em,f,n,eu]);(0,rx.useEffect)(()=>{if("dialog"!==i||!s){en.current=!1;return}en.current||eu&&(Wu(eu,"widget_opened"),en.current=!0)},[s,i,eu]),(0,rx.useEffect)(()=>{ei&&(k(r),D(null),Y(null),Z(null))},[r,k,ei]),(0,rx.useEffect)(()=>{Y(null),Z(null)},[h,f]),(0,rx.useEffect)(()=>{ei&&eI&&null===R&&D(ek)},[R,ek,eI,ei]),(0,rx.useEffect)(()=>{if(!ei||!x&&!w&&I!==S||null===eB||eB.tinuuid!==S)return;let e=eB.materials?.[0];if(!e)return;let t=eB.materials?.some(e=>e===R||!!e.hid&&e.hid===R?.hid);if(I===S){B(null),D(e);return}(!t||w)&&R!==e&&D(e)},[w,R,x,eB,S,ei,I]);let eH=(0,rx.useMemo)(()=>({type:n,name:d,width:l,height:c,displayUnit:u}),[n,d,l,c,u]),eV=(0,rx.useMemo)(()=>({viewerSurface:i,dialogPortalContainer:a,viewerDialogOpen:s,onViewerDialogOpenChange:o}),[i,a,s,o]),eW=(0,rx.useMemo)(()=>({rooms:eg,sourceRooms:ep,setRooms:em,room:ew,setRoomId:eb}),[eg,ew,em,ep]),eq=(0,rx.useMemo)(()=>({src:t,glbUrl:eT,tinuuid:S,embeddedObject:eI,selectedObject:eB,material:R,setTinuuid:k,selectResourceVariant:T,setMaterial:D,apiKey:h,baseURL:p,source:f,widgetSession:eu,hasRooms:eC,isViewerAccessPending:e_,accessError:eU,setAccessError:Y,loadError:ez,setLoadError:Z}),[t,eT,S,eI,eB,R,k,T,h,p,f,eu,eC,e_,eU,ez]),eK=(0,rx.useMemo)(()=>({containerRef:G,setContainerRef:H,resourceRef:$,angle:F,setAngle:O,rotation:Q,setRotation:U,isDragging:z,setIsDragging:j,sceneLoad:V,patchSceneLoad:ej,isRoomScenePending:q,setIsRoomScenePending:K}),[G,F,Q,z,V,ej,q]),eJ=(0,rx.useMemo)(()=>({frameWidth:P,setFrameWidth:_,matting:L,setMatting:N}),[P,L]),eY=(0,rx.useMemo)(()=>({isRoomScenePending:q,selectCustomRoomFile:eG}),[q,eG]);return(0,rE.jsx)(WY,{value:eH,children:(0,rE.jsx)(WX,{value:eV,children:(0,rE.jsx)(WZ,{value:eW,children:(0,rE.jsx)(W$,{value:eq,children:(0,rE.jsx)(W0,{value:eK,children:(0,rE.jsx)(W1,{value:eJ,children:(0,rE.jsx)(W2,{value:eY,children:(0,rE.jsx)(ZS,{children:e})})})})})})})})}let eeT={poster:"wallart",carpet:"rugs"};function eeR(e){return"poster"===e||"carpet"===e}let eeD=new rw({defaultOptions:{queries:{gcTime:1/0,refetchOnMount:!1,refetchOnReconnect:!1,refetchOnWindowFocus:!1,retry:(e,t)=>{let r=function(e){if(ix(e))return e.response?.status}(t);return(void 0===r||!(r>=400)||!(r<500))&&e<2}}}});function eeP({type:e,src:t,tinuuid:r,name:n,height:i,width:a,language:s,dimensionUnit:o="m",displayUnit:l="cm",apiKey:c,source:u="default",showDialogCloseButton:d=!1,viewerSurface:h="inline",dialogPortalContainer:p=null,viewerDialogOpen:f=!0,onViewerDialogOpenChange:A,widgetSession:g}){let{i18n:m}=sf(),v=c?.trim()||void 0,b=r?.trim()||void 0,y=eeR(e)?eeT[e]:e,w=qO(y).takesDimensionProps?function(e,t,r="m"){return{width:qJ(e??0,r),height:qJ(t??0,r)}}(a,i,o):null;return(0,rx.useEffect)(()=>{eeR(e)&&eeT[e]},[e]),(0,rx.useEffect)(()=>{"string"==typeof s&&m.changeLanguage(s)},[m,s]),(0,rE.jsx)(rI,{client:eeD,children:(0,rE.jsx)(eek,{src:t??null,tinuuid:b??null,type:y,viewerSurface:h,dialogPortalContainer:p,viewerDialogOpen:f,onViewerDialogOpenChange:A,name:n,width:w?.width??0,height:w?.height??0,displayUnit:l,apiKey:v,baseURL:"shopify"===u?V_:void 0,source:u,externalWidgetSession:g,children:(0,rE.jsx)(eeS,{showDialogCloseButton:d})})})}function ee_({type:e,src:t,tinuuid:r,width:n,height:i,dimensionUnit:a,displayUnit:s,name:o,language:l,apiKey:c,source:u,widgetSession:d,disableClose:h=!1,open:p,defaultOpen:f,onOpenChange:A}){let[g,m]=(0,rx.useState)(null),v="immersive-room"===Wv[eeR(e)?eeT[e]:e].chrome&&h,[b,y]=(0,rx.useState)(f??!1),w=p??b,[x,C]=(0,rx.useState)(w),E=w||x;(0,rx.useEffect)(()=>{w&&C(!0)},[w]);let S=(0,rE.jsx)(eeP,{type:e,src:t,tinuuid:r,name:o,height:i,width:n,dimensionUnit:a,displayUnit:s,language:l,apiKey:c,source:u,widgetSession:d,showDialogCloseButton:!v,viewerSurface:"dialog",dialogPortalContainer:g,viewerDialogOpen:w,onViewerDialogOpenChange:function(e){(e||!v)&&(void 0===p&&y(e),A?.(e))}});return(0,rE.jsxs)(rE.Fragment,{children:[(0,am.createPortal)((0,rE.jsx)("style",{children:VI.A}),document.head),(0,am.createPortal)((0,rE.jsxs)(s_.div,{"data-neurodyn-room-viewer-root":"",style:{display:"block",letterSpacing:"normal",zIndex:0x7fffffff},children:[(0,rE.jsx)("style",{children:":host{display:block!important;visibility:visible!important}"}),(0,rE.jsx)("style",{children:VD}),(0,rE.jsx)("div",{ref:m}),g&&(0,rE.jsx)(VM,{root:g,storageKey:"neurodyn-theme",defaultTheme:"light",children:(0,rE.jsx)(sA,{i18n:Vk,children:E&&S})})]}),document.body)]})}We({baseURL:"https://api.neurodyn.ai/v1/"}),VY({baseURL:"https://api.neurodyn.ai/"});let eeL=iQ({clientName:"API node client",configureFunctionName:"configureNodeApiClient",defaultBaseURL:"https://api.vizbl.com"});eeL.configureClientRuntime,eeL.configureAccessTokenResolverRuntime,eeL.configureHeadersResolverRuntime,eeL.configureUnauthorizedHandlerRuntime,eeL.isClientConfiguredRuntime,eeL.assertClientConfiguredRuntime,eeL.resetClientForTestsRuntime;let eeN=eeL.requestRuntime;async function eeF(e){return eeN(e)}async function eeO(e,t={}){let{client:r=eeF,...n}=t;return(await r({method:"POST",url:"/public/widget/activate-wallart",params:e,...n})).data}eeL.requestWithoutUnauthorizedRecovery,eeL.addResponseInterceptorRuntime,(eJ=tP||(tP={})).assertEqual=e=>{},eJ.assertIs=function(e){},eJ.assertNever=function(e){throw Error()},eJ.arrayToEnum=e=>{let t={};for(let r of e)t[r]=r;return t},eJ.getValidEnumValues=e=>{let t=eJ.objectKeys(e).filter(t=>"number"!=typeof e[e[t]]),r={};for(let n of t)r[n]=e[n];return eJ.objectValues(r)},eJ.objectValues=e=>eJ.objectKeys(e).map(function(t){return e[t]}),eJ.objectKeys="function"==typeof Object.keys?e=>Object.keys(e):e=>{let t=[];for(let r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.push(r);return t},eJ.find=(e,t)=>{for(let r of e)if(t(r))return r},eJ.isInteger="function"==typeof Number.isInteger?e=>Number.isInteger(e):e=>"number"==typeof e&&Number.isFinite(e)&&Math.floor(e)===e,eJ.joinValues=function(e,t=" | "){return e.map(e=>"string"==typeof e?`'${e}'`:e).join(t)},eJ.jsonStringifyReplacer=(e,t)=>"bigint"==typeof t?t.toString():t,(t_||(t_={})).mergeShapes=(e,t)=>({...e,...t});let eeQ=tP.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),eeU=e=>{switch(typeof e){case"undefined":return eeQ.undefined;case"string":return eeQ.string;case"number":return Number.isNaN(e)?eeQ.nan:eeQ.number;case"boolean":return eeQ.boolean;case"function":return eeQ.function;case"bigint":return eeQ.bigint;case"symbol":return eeQ.symbol;case"object":if(Array.isArray(e))return eeQ.array;if(null===e)return eeQ.null;if(e.then&&"function"==typeof e.then&&e.catch&&"function"==typeof e.catch)return eeQ.promise;if("u">typeof Map&&e instanceof Map)return eeQ.map;if("u">typeof Set&&e instanceof Set)return eeQ.set;if("u">typeof Date&&e instanceof Date)return eeQ.date;return eeQ.object;default:return eeQ.unknown}},eez=tP.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]);class eej extends Error{get errors(){return this.issues}constructor(e){super(),this.issues=[],this.addIssue=e=>{this.issues=[...this.issues,e]},this.addIssues=(e=[])=>{this.issues=[...this.issues,...e]};const t=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,t):this.__proto__=t,this.name="ZodError",this.issues=e}format(e){let t=e||function(e){return e.message},r={_errors:[]},n=e=>{for(let i of e.issues)if("invalid_union"===i.code)i.unionErrors.map(n);else if("invalid_return_type"===i.code)n(i.returnTypeError);else if("invalid_arguments"===i.code)n(i.argumentsError);else if(0===i.path.length)r._errors.push(t(i));else{let e=r,n=0;for(;n<i.path.length;){let r=i.path[n];n===i.path.length-1?(e[r]=e[r]||{_errors:[]},e[r]._errors.push(t(i))):e[r]=e[r]||{_errors:[]},e=e[r],n++}}};return n(this),r}static assert(e){if(!(e instanceof eej))throw Error(`Not a ZodError: ${e}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,tP.jsonStringifyReplacer,2)}get isEmpty(){return 0===this.issues.length}flatten(e=e=>e.message){let t={},r=[];for(let n of this.issues)if(n.path.length>0){let r=n.path[0];t[r]=t[r]||[],t[r].push(e(n))}else r.push(e(n));return{formErrors:r,fieldErrors:t}}get formErrors(){return this.flatten()}}eej.create=e=>new eej(e);let eeG=(e,t)=>{let r;switch(e.code){case eez.invalid_type:r=e.received===eeQ.undefined?"Required":`Expected ${e.expected}, received ${e.received}`;break;case eez.invalid_literal:r=`Invalid literal value, expected ${JSON.stringify(e.expected,tP.jsonStringifyReplacer)}`;break;case eez.unrecognized_keys:r=`Unrecognized key(s) in object: ${tP.joinValues(e.keys,", ")}`;break;case eez.invalid_union:r="Invalid input";break;case eez.invalid_union_discriminator:r=`Invalid discriminator value. Expected ${tP.joinValues(e.options)}`;break;case eez.invalid_enum_value:r=`Invalid enum value. Expected ${tP.joinValues(e.options)}, received '${e.received}'`;break;case eez.invalid_arguments:r="Invalid function arguments";break;case eez.invalid_return_type:r="Invalid function return type";break;case eez.invalid_date:r="Invalid date";break;case eez.invalid_string:"object"==typeof e.validation?"includes"in e.validation?(r=`Invalid input: must include "${e.validation.includes}"`,"number"==typeof e.validation.position&&(r=`${r} at one or more positions greater than or equal to ${e.validation.position}`)):"startsWith"in e.validation?r=`Invalid input: must start with "${e.validation.startsWith}"`:"endsWith"in e.validation?r=`Invalid input: must end with "${e.validation.endsWith}"`:tP.assertNever(e.validation):r="regex"!==e.validation?`Invalid ${e.validation}`:"Invalid";break;case eez.too_small:r="array"===e.type?`Array must contain ${e.exact?"exactly":e.inclusive?"at least":"more than"} ${e.minimum} element(s)`:"string"===e.type?`String must contain ${e.exact?"exactly":e.inclusive?"at least":"over"} ${e.minimum} character(s)`:"number"===e.type||"bigint"===e.type?`Number must be ${e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than "}${e.minimum}`:"date"===e.type?`Date must be ${e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(e.minimum))}`:"Invalid input";break;case eez.too_big:r="array"===e.type?`Array must contain ${e.exact?"exactly":e.inclusive?"at most":"less than"} ${e.maximum} element(s)`:"string"===e.type?`String must contain ${e.exact?"exactly":e.inclusive?"at most":"under"} ${e.maximum} character(s)`:"number"===e.type?`Number must be ${e.exact?"exactly":e.inclusive?"less than or equal to":"less than"} ${e.maximum}`:"bigint"===e.type?`BigInt must be ${e.exact?"exactly":e.inclusive?"less than or equal to":"less than"} ${e.maximum}`:"date"===e.type?`Date must be ${e.exact?"exactly":e.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(e.maximum))}`:"Invalid input";break;case eez.custom:r="Invalid input";break;case eez.invalid_intersection_types:r="Intersection results could not be merged";break;case eez.not_multiple_of:r=`Number must be a multiple of ${e.multipleOf}`;break;case eez.not_finite:r="Number must be finite";break;default:r=t.defaultError,tP.assertNever(e)}return{message:r}};(eY=tL||(tL={})).errToObj=e=>"string"==typeof e?{message:e}:e||{},eY.toString=e=>"string"==typeof e?e:e?.message;let eeH=e=>{let{data:t,path:r,errorMaps:n,issueData:i}=e,a=[...r,...i.path||[]],s={...i,path:a};if(void 0!==i.message)return{...i,path:a,message:i.message};let o="";for(let e of n.filter(e=>!!e).slice().reverse())o=e(s,{data:t,defaultError:o}).message;return{...i,path:a,message:o}};function eeV(e,t){let r=eeH({issueData:t,data:e.data,path:e.path,errorMaps:[e.common.contextualErrorMap,e.schemaErrorMap,eeG,void 0].filter(e=>!!e)});e.common.issues.push(r)}class eeW{constructor(){this.value="valid"}dirty(){"valid"===this.value&&(this.value="dirty")}abort(){"aborted"!==this.value&&(this.value="aborted")}static mergeArray(e,t){let r=[];for(let n of t){if("aborted"===n.status)return eeq;"dirty"===n.status&&e.dirty(),r.push(n.value)}return{status:e.value,value:r}}static async mergeObjectAsync(e,t){let r=[];for(let e of t){let t=await e.key,n=await e.value;r.push({key:t,value:n})}return eeW.mergeObjectSync(e,r)}static mergeObjectSync(e,t){let r={};for(let n of t){let{key:t,value:i}=n;if("aborted"===t.status||"aborted"===i.status)return eeq;"dirty"===t.status&&e.dirty(),"dirty"===i.status&&e.dirty(),"__proto__"!==t.value&&(void 0!==i.value||n.alwaysSet)&&(r[t.value]=i.value)}return{status:e.value,value:r}}}let eeq=Object.freeze({status:"aborted"}),eeK=e=>({status:"dirty",value:e}),eeJ=e=>({status:"valid",value:e}),eeY=e=>"u">typeof Promise&&e instanceof Promise;class eeX{constructor(e,t,r,n){this._cachedPath=[],this.parent=e,this.data=t,this._path=r,this._key=n}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}}let eeZ=(e,t)=>{if("valid"===t.status)return{success:!0,data:t.value};if(!e.common.issues.length)throw Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;let t=new eej(e.common.issues);return this._error=t,this._error}}};function ee$(e){if(!e)return{};let{errorMap:t,invalid_type_error:r,required_error:n,description:i}=e;if(t&&(r||n))throw Error('Can\'t use "invalid_type_error" or "required_error" in conjunction with custom error map.');return t?{errorMap:t,description:i}:{errorMap:(t,i)=>{let{message:a}=e;return"invalid_enum_value"===t.code?{message:a??i.defaultError}:void 0===i.data?{message:a??n??i.defaultError}:"invalid_type"!==t.code?{message:i.defaultError}:{message:a??r??i.defaultError}},description:i}}class ee0{get description(){return this._def.description}_getType(e){return eeU(e.data)}_getOrReturnCtx(e,t){return t||{common:e.parent.common,data:e.data,parsedType:eeU(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new eeW,ctx:{common:e.parent.common,data:e.data,parsedType:eeU(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){let t=this._parse(e);if(eeY(t))throw Error("Synchronous parse encountered promise.");return t}_parseAsync(e){return Promise.resolve(this._parse(e))}parse(e,t){let r=this.safeParse(e,t);if(r.success)return r.data;throw r.error}safeParse(e,t){let r={common:{issues:[],async:t?.async??!1,contextualErrorMap:t?.errorMap},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:eeU(e)},n=this._parseSync({data:e,path:r.path,parent:r});return eeZ(r,n)}"~validate"(e){let t={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:eeU(e)};if(!this["~standard"].async)try{let r=this._parseSync({data:e,path:[],parent:t});return"valid"===r.status?{value:r.value}:{issues:t.common.issues}}catch(e){e?.message?.toLowerCase()?.includes("encountered")&&(this["~standard"].async=!0),t.common={issues:[],async:!0}}return this._parseAsync({data:e,path:[],parent:t}).then(e=>"valid"===e.status?{value:e.value}:{issues:t.common.issues})}async parseAsync(e,t){let r=await this.safeParseAsync(e,t);if(r.success)return r.data;throw r.error}async safeParseAsync(e,t){let r={common:{issues:[],contextualErrorMap:t?.errorMap,async:!0},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:eeU(e)},n=this._parse({data:e,path:r.path,parent:r});return eeZ(r,await (eeY(n)?n:Promise.resolve(n)))}refine(e,t){return this._refinement((r,n)=>{let i=e(r),a=()=>n.addIssue({code:eez.custom,..."string"==typeof t||void 0===t?{message:t}:"function"==typeof t?t(r):t});return"u">typeof Promise&&i instanceof Promise?i.then(e=>!!e||(a(),!1)):!!i||(a(),!1)})}refinement(e,t){return this._refinement((r,n)=>!!e(r)||(n.addIssue("function"==typeof t?t(r,n):t),!1))}_refinement(e){return new etF({schema:this,typeName:tN.ZodEffects,effect:{type:"refinement",refinement:e}})}superRefine(e){return this._refinement(e)}constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:e=>this["~validate"](e)}}optional(){return etO.create(this,this._def)}nullable(){return etQ.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return ety.create(this)}promise(){return etN.create(this,this._def)}or(e){return etx.create([this,e],this._def)}and(e){return etS.create(this,e,this._def)}transform(e){return new etF({...ee$(this._def),schema:this,typeName:tN.ZodEffects,effect:{type:"transform",transform:e}})}default(e){return new etU({...ee$(this._def),innerType:this,defaultValue:"function"==typeof e?e:()=>e,typeName:tN.ZodDefault})}brand(){return new etG({typeName:tN.ZodBranded,type:this,...ee$(this._def)})}catch(e){return new etz({...ee$(this._def),innerType:this,catchValue:"function"==typeof e?e:()=>e,typeName:tN.ZodCatch})}describe(e){return new this.constructor({...this._def,description:e})}pipe(e){return etH.create(this,e)}readonly(){return etV.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}let ee1=/^c[^\s-]{8,}$/i,ee2=/^[0-9a-z]+$/,ee3=/^[0-9A-HJKMNP-TV-Z]{26}$/i,ee9=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,ee4=/^[a-z0-9_-]{21}$/i,ee5=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,ee8=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,ee6=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,ee7=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,ete=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,ett=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,etr=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,etn=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,eti=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,eta="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",ets=RegExp(`^${eta}$`);function eto(e){let t="[0-5]\\d";e.precision?t=`${t}\\.\\d{${e.precision}}`:null==e.precision&&(t=`${t}(\\.\\d+)?`);let r=e.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${t})${r}`}class etl extends ee0{_parse(e){var t,r,n,i;let a;if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==eeQ.string){let t=this._getOrReturnCtx(e);return eeV(t,{code:eez.invalid_type,expected:eeQ.string,received:t.parsedType}),eeq}let s=new eeW;for(let o of this._def.checks)if("min"===o.kind)e.data.length<o.value&&(eeV(a=this._getOrReturnCtx(e,a),{code:eez.too_small,minimum:o.value,type:"string",inclusive:!0,exact:!1,message:o.message}),s.dirty());else if("max"===o.kind)e.data.length>o.value&&(eeV(a=this._getOrReturnCtx(e,a),{code:eez.too_big,maximum:o.value,type:"string",inclusive:!0,exact:!1,message:o.message}),s.dirty());else if("length"===o.kind){let t=e.data.length>o.value,r=e.data.length<o.value;(t||r)&&(a=this._getOrReturnCtx(e,a),t?eeV(a,{code:eez.too_big,maximum:o.value,type:"string",inclusive:!0,exact:!0,message:o.message}):r&&eeV(a,{code:eez.too_small,minimum:o.value,type:"string",inclusive:!0,exact:!0,message:o.message}),s.dirty())}else if("email"===o.kind)ee6.test(e.data)||(eeV(a=this._getOrReturnCtx(e,a),{validation:"email",code:eez.invalid_string,message:o.message}),s.dirty());else if("emoji"===o.kind)I||(I=RegExp("^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$","u")),I.test(e.data)||(eeV(a=this._getOrReturnCtx(e,a),{validation:"emoji",code:eez.invalid_string,message:o.message}),s.dirty());else if("uuid"===o.kind)ee9.test(e.data)||(eeV(a=this._getOrReturnCtx(e,a),{validation:"uuid",code:eez.invalid_string,message:o.message}),s.dirty());else if("nanoid"===o.kind)ee4.test(e.data)||(eeV(a=this._getOrReturnCtx(e,a),{validation:"nanoid",code:eez.invalid_string,message:o.message}),s.dirty());else if("cuid"===o.kind)ee1.test(e.data)||(eeV(a=this._getOrReturnCtx(e,a),{validation:"cuid",code:eez.invalid_string,message:o.message}),s.dirty());else if("cuid2"===o.kind)ee2.test(e.data)||(eeV(a=this._getOrReturnCtx(e,a),{validation:"cuid2",code:eez.invalid_string,message:o.message}),s.dirty());else if("ulid"===o.kind)ee3.test(e.data)||(eeV(a=this._getOrReturnCtx(e,a),{validation:"ulid",code:eez.invalid_string,message:o.message}),s.dirty());else if("url"===o.kind)try{new URL(e.data)}catch{eeV(a=this._getOrReturnCtx(e,a),{validation:"url",code:eez.invalid_string,message:o.message}),s.dirty()}else"regex"===o.kind?(o.regex.lastIndex=0,o.regex.test(e.data)||(eeV(a=this._getOrReturnCtx(e,a),{validation:"regex",code:eez.invalid_string,message:o.message}),s.dirty())):"trim"===o.kind?e.data=e.data.trim():"includes"===o.kind?e.data.includes(o.value,o.position)||(eeV(a=this._getOrReturnCtx(e,a),{code:eez.invalid_string,validation:{includes:o.value,position:o.position},message:o.message}),s.dirty()):"toLowerCase"===o.kind?e.data=e.data.toLowerCase():"toUpperCase"===o.kind?e.data=e.data.toUpperCase():"startsWith"===o.kind?e.data.startsWith(o.value)||(eeV(a=this._getOrReturnCtx(e,a),{code:eez.invalid_string,validation:{startsWith:o.value},message:o.message}),s.dirty()):"endsWith"===o.kind?e.data.endsWith(o.value)||(eeV(a=this._getOrReturnCtx(e,a),{code:eez.invalid_string,validation:{endsWith:o.value},message:o.message}),s.dirty()):"datetime"===o.kind?(function(e){let t=`${eta}T${eto(e)}`,r=[];return r.push(e.local?"Z?":"Z"),e.offset&&r.push("([+-]\\d{2}:?\\d{2})"),t=`${t}(${r.join("|")})`,RegExp(`^${t}$`)})(o).test(e.data)||(eeV(a=this._getOrReturnCtx(e,a),{code:eez.invalid_string,validation:"datetime",message:o.message}),s.dirty()):"date"===o.kind?ets.test(e.data)||(eeV(a=this._getOrReturnCtx(e,a),{code:eez.invalid_string,validation:"date",message:o.message}),s.dirty()):"time"===o.kind?RegExp(`^${eto(o)}$`).test(e.data)||(eeV(a=this._getOrReturnCtx(e,a),{code:eez.invalid_string,validation:"time",message:o.message}),s.dirty()):"duration"===o.kind?ee8.test(e.data)||(eeV(a=this._getOrReturnCtx(e,a),{validation:"duration",code:eez.invalid_string,message:o.message}),s.dirty()):"ip"===o.kind?(t=e.data,!(("v4"===(r=o.version)||!r)&&ee7.test(t)||("v6"===r||!r)&&ett.test(t))&&1&&(eeV(a=this._getOrReturnCtx(e,a),{validation:"ip",code:eez.invalid_string,message:o.message}),s.dirty())):"jwt"===o.kind?!function(e,t){if(!ee5.test(e))return!1;try{let[r]=e.split(".");if(!r)return!1;let n=r.replace(/-/g,"+").replace(/_/g,"/").padEnd(r.length+(4-r.length%4)%4,"="),i=JSON.parse(atob(n));if("object"!=typeof i||null===i||"typ"in i&&i?.typ!=="JWT"||!i.alg||t&&i.alg!==t)return!1;return!0}catch{return!1}}(e.data,o.alg)&&(eeV(a=this._getOrReturnCtx(e,a),{validation:"jwt",code:eez.invalid_string,message:o.message}),s.dirty()):"cidr"===o.kind?(n=e.data,!(("v4"===(i=o.version)||!i)&&ete.test(n)||("v6"===i||!i)&&etr.test(n))&&1&&(eeV(a=this._getOrReturnCtx(e,a),{validation:"cidr",code:eez.invalid_string,message:o.message}),s.dirty())):"base64"===o.kind?etn.test(e.data)||(eeV(a=this._getOrReturnCtx(e,a),{validation:"base64",code:eez.invalid_string,message:o.message}),s.dirty()):"base64url"===o.kind?eti.test(e.data)||(eeV(a=this._getOrReturnCtx(e,a),{validation:"base64url",code:eez.invalid_string,message:o.message}),s.dirty()):tP.assertNever(o);return{status:s.value,value:e.data}}_regex(e,t,r){return this.refinement(t=>e.test(t),{validation:t,code:eez.invalid_string,...tL.errToObj(r)})}_addCheck(e){return new etl({...this._def,checks:[...this._def.checks,e]})}email(e){return this._addCheck({kind:"email",...tL.errToObj(e)})}url(e){return this._addCheck({kind:"url",...tL.errToObj(e)})}emoji(e){return this._addCheck({kind:"emoji",...tL.errToObj(e)})}uuid(e){return this._addCheck({kind:"uuid",...tL.errToObj(e)})}nanoid(e){return this._addCheck({kind:"nanoid",...tL.errToObj(e)})}cuid(e){return this._addCheck({kind:"cuid",...tL.errToObj(e)})}cuid2(e){return this._addCheck({kind:"cuid2",...tL.errToObj(e)})}ulid(e){return this._addCheck({kind:"ulid",...tL.errToObj(e)})}base64(e){return this._addCheck({kind:"base64",...tL.errToObj(e)})}base64url(e){return this._addCheck({kind:"base64url",...tL.errToObj(e)})}jwt(e){return this._addCheck({kind:"jwt",...tL.errToObj(e)})}ip(e){return this._addCheck({kind:"ip",...tL.errToObj(e)})}cidr(e){return this._addCheck({kind:"cidr",...tL.errToObj(e)})}datetime(e){return"string"==typeof e?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:e}):this._addCheck({kind:"datetime",precision:void 0===e?.precision?null:e?.precision,offset:e?.offset??!1,local:e?.local??!1,...tL.errToObj(e?.message)})}date(e){return this._addCheck({kind:"date",message:e})}time(e){return"string"==typeof e?this._addCheck({kind:"time",precision:null,message:e}):this._addCheck({kind:"time",precision:void 0===e?.precision?null:e?.precision,...tL.errToObj(e?.message)})}duration(e){return this._addCheck({kind:"duration",...tL.errToObj(e)})}regex(e,t){return this._addCheck({kind:"regex",regex:e,...tL.errToObj(t)})}includes(e,t){return this._addCheck({kind:"includes",value:e,position:t?.position,...tL.errToObj(t?.message)})}startsWith(e,t){return this._addCheck({kind:"startsWith",value:e,...tL.errToObj(t)})}endsWith(e,t){return this._addCheck({kind:"endsWith",value:e,...tL.errToObj(t)})}min(e,t){return this._addCheck({kind:"min",value:e,...tL.errToObj(t)})}max(e,t){return this._addCheck({kind:"max",value:e,...tL.errToObj(t)})}length(e,t){return this._addCheck({kind:"length",value:e,...tL.errToObj(t)})}nonempty(e){return this.min(1,tL.errToObj(e))}trim(){return new etl({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new etl({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new etl({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(e=>"datetime"===e.kind)}get isDate(){return!!this._def.checks.find(e=>"date"===e.kind)}get isTime(){return!!this._def.checks.find(e=>"time"===e.kind)}get isDuration(){return!!this._def.checks.find(e=>"duration"===e.kind)}get isEmail(){return!!this._def.checks.find(e=>"email"===e.kind)}get isURL(){return!!this._def.checks.find(e=>"url"===e.kind)}get isEmoji(){return!!this._def.checks.find(e=>"emoji"===e.kind)}get isUUID(){return!!this._def.checks.find(e=>"uuid"===e.kind)}get isNANOID(){return!!this._def.checks.find(e=>"nanoid"===e.kind)}get isCUID(){return!!this._def.checks.find(e=>"cuid"===e.kind)}get isCUID2(){return!!this._def.checks.find(e=>"cuid2"===e.kind)}get isULID(){return!!this._def.checks.find(e=>"ulid"===e.kind)}get isIP(){return!!this._def.checks.find(e=>"ip"===e.kind)}get isCIDR(){return!!this._def.checks.find(e=>"cidr"===e.kind)}get isBase64(){return!!this._def.checks.find(e=>"base64"===e.kind)}get isBase64url(){return!!this._def.checks.find(e=>"base64url"===e.kind)}get minLength(){let e=null;for(let t of this._def.checks)"min"===t.kind&&(null===e||t.value>e)&&(e=t.value);return e}get maxLength(){let e=null;for(let t of this._def.checks)"max"===t.kind&&(null===e||t.value<e)&&(e=t.value);return e}}etl.create=e=>new etl({checks:[],typeName:tN.ZodString,coerce:e?.coerce??!1,...ee$(e)});class etc extends ee0{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){let t;if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==eeQ.number){let t=this._getOrReturnCtx(e);return eeV(t,{code:eez.invalid_type,expected:eeQ.number,received:t.parsedType}),eeq}let r=new eeW;for(let n of this._def.checks)"int"===n.kind?tP.isInteger(e.data)||(eeV(t=this._getOrReturnCtx(e,t),{code:eez.invalid_type,expected:"integer",received:"float",message:n.message}),r.dirty()):"min"===n.kind?(n.inclusive?e.data<n.value:e.data<=n.value)&&(eeV(t=this._getOrReturnCtx(e,t),{code:eez.too_small,minimum:n.value,type:"number",inclusive:n.inclusive,exact:!1,message:n.message}),r.dirty()):"max"===n.kind?(n.inclusive?e.data>n.value:e.data>=n.value)&&(eeV(t=this._getOrReturnCtx(e,t),{code:eez.too_big,maximum:n.value,type:"number",inclusive:n.inclusive,exact:!1,message:n.message}),r.dirty()):"multipleOf"===n.kind?0!==function(e,t){let r=(e.toString().split(".")[1]||"").length,n=(t.toString().split(".")[1]||"").length,i=r>n?r:n;return Number.parseInt(e.toFixed(i).replace(".",""))%Number.parseInt(t.toFixed(i).replace(".",""))/10**i}(e.data,n.value)&&(eeV(t=this._getOrReturnCtx(e,t),{code:eez.not_multiple_of,multipleOf:n.value,message:n.message}),r.dirty()):"finite"===n.kind?Number.isFinite(e.data)||(eeV(t=this._getOrReturnCtx(e,t),{code:eez.not_finite,message:n.message}),r.dirty()):tP.assertNever(n);return{status:r.value,value:e.data}}gte(e,t){return this.setLimit("min",e,!0,tL.toString(t))}gt(e,t){return this.setLimit("min",e,!1,tL.toString(t))}lte(e,t){return this.setLimit("max",e,!0,tL.toString(t))}lt(e,t){return this.setLimit("max",e,!1,tL.toString(t))}setLimit(e,t,r,n){return new etc({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:r,message:tL.toString(n)}]})}_addCheck(e){return new etc({...this._def,checks:[...this._def.checks,e]})}int(e){return this._addCheck({kind:"int",message:tL.toString(e)})}positive(e){return this._addCheck({kind:"min",value:0,inclusive:!1,message:tL.toString(e)})}negative(e){return this._addCheck({kind:"max",value:0,inclusive:!1,message:tL.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:0,inclusive:!0,message:tL.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:0,inclusive:!0,message:tL.toString(e)})}multipleOf(e,t){return this._addCheck({kind:"multipleOf",value:e,message:tL.toString(t)})}finite(e){return this._addCheck({kind:"finite",message:tL.toString(e)})}safe(e){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:tL.toString(e)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:tL.toString(e)})}get minValue(){let e=null;for(let t of this._def.checks)"min"===t.kind&&(null===e||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)"max"===t.kind&&(null===e||t.value<e)&&(e=t.value);return e}get isInt(){return!!this._def.checks.find(e=>"int"===e.kind||"multipleOf"===e.kind&&tP.isInteger(e.value))}get isFinite(){let e=null,t=null;for(let r of this._def.checks)if("finite"===r.kind||"int"===r.kind||"multipleOf"===r.kind)return!0;else"min"===r.kind?(null===t||r.value>t)&&(t=r.value):"max"===r.kind&&(null===e||r.value<e)&&(e=r.value);return Number.isFinite(t)&&Number.isFinite(e)}}etc.create=e=>new etc({checks:[],typeName:tN.ZodNumber,coerce:e?.coerce||!1,...ee$(e)});class etu extends ee0{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(e){let t;if(this._def.coerce)try{e.data=BigInt(e.data)}catch{return this._getInvalidInput(e)}if(this._getType(e)!==eeQ.bigint)return this._getInvalidInput(e);let r=new eeW;for(let n of this._def.checks)"min"===n.kind?(n.inclusive?e.data<n.value:e.data<=n.value)&&(eeV(t=this._getOrReturnCtx(e,t),{code:eez.too_small,type:"bigint",minimum:n.value,inclusive:n.inclusive,message:n.message}),r.dirty()):"max"===n.kind?(n.inclusive?e.data>n.value:e.data>=n.value)&&(eeV(t=this._getOrReturnCtx(e,t),{code:eez.too_big,type:"bigint",maximum:n.value,inclusive:n.inclusive,message:n.message}),r.dirty()):"multipleOf"===n.kind?e.data%n.value!==BigInt(0)&&(eeV(t=this._getOrReturnCtx(e,t),{code:eez.not_multiple_of,multipleOf:n.value,message:n.message}),r.dirty()):tP.assertNever(n);return{status:r.value,value:e.data}}_getInvalidInput(e){let t=this._getOrReturnCtx(e);return eeV(t,{code:eez.invalid_type,expected:eeQ.bigint,received:t.parsedType}),eeq}gte(e,t){return this.setLimit("min",e,!0,tL.toString(t))}gt(e,t){return this.setLimit("min",e,!1,tL.toString(t))}lte(e,t){return this.setLimit("max",e,!0,tL.toString(t))}lt(e,t){return this.setLimit("max",e,!1,tL.toString(t))}setLimit(e,t,r,n){return new etu({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:r,message:tL.toString(n)}]})}_addCheck(e){return new etu({...this._def,checks:[...this._def.checks,e]})}positive(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:tL.toString(e)})}negative(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:tL.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:tL.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:tL.toString(e)})}multipleOf(e,t){return this._addCheck({kind:"multipleOf",value:e,message:tL.toString(t)})}get minValue(){let e=null;for(let t of this._def.checks)"min"===t.kind&&(null===e||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)"max"===t.kind&&(null===e||t.value<e)&&(e=t.value);return e}}etu.create=e=>new etu({checks:[],typeName:tN.ZodBigInt,coerce:e?.coerce??!1,...ee$(e)});class etd extends ee0{_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==eeQ.boolean){let t=this._getOrReturnCtx(e);return eeV(t,{code:eez.invalid_type,expected:eeQ.boolean,received:t.parsedType}),eeq}return eeJ(e.data)}}etd.create=e=>new etd({typeName:tN.ZodBoolean,coerce:e?.coerce||!1,...ee$(e)});class eth extends ee0{_parse(e){let t;if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==eeQ.date){let t=this._getOrReturnCtx(e);return eeV(t,{code:eez.invalid_type,expected:eeQ.date,received:t.parsedType}),eeq}if(Number.isNaN(e.data.getTime()))return eeV(this._getOrReturnCtx(e),{code:eez.invalid_date}),eeq;let r=new eeW;for(let n of this._def.checks)"min"===n.kind?e.data.getTime()<n.value&&(eeV(t=this._getOrReturnCtx(e,t),{code:eez.too_small,message:n.message,inclusive:!0,exact:!1,minimum:n.value,type:"date"}),r.dirty()):"max"===n.kind?e.data.getTime()>n.value&&(eeV(t=this._getOrReturnCtx(e,t),{code:eez.too_big,message:n.message,inclusive:!0,exact:!1,maximum:n.value,type:"date"}),r.dirty()):tP.assertNever(n);return{status:r.value,value:new Date(e.data.getTime())}}_addCheck(e){return new eth({...this._def,checks:[...this._def.checks,e]})}min(e,t){return this._addCheck({kind:"min",value:e.getTime(),message:tL.toString(t)})}max(e,t){return this._addCheck({kind:"max",value:e.getTime(),message:tL.toString(t)})}get minDate(){let e=null;for(let t of this._def.checks)"min"===t.kind&&(null===e||t.value>e)&&(e=t.value);return null!=e?new Date(e):null}get maxDate(){let e=null;for(let t of this._def.checks)"max"===t.kind&&(null===e||t.value<e)&&(e=t.value);return null!=e?new Date(e):null}}eth.create=e=>new eth({checks:[],coerce:e?.coerce||!1,typeName:tN.ZodDate,...ee$(e)});class etp extends ee0{_parse(e){if(this._getType(e)!==eeQ.symbol){let t=this._getOrReturnCtx(e);return eeV(t,{code:eez.invalid_type,expected:eeQ.symbol,received:t.parsedType}),eeq}return eeJ(e.data)}}etp.create=e=>new etp({typeName:tN.ZodSymbol,...ee$(e)});class etf extends ee0{_parse(e){if(this._getType(e)!==eeQ.undefined){let t=this._getOrReturnCtx(e);return eeV(t,{code:eez.invalid_type,expected:eeQ.undefined,received:t.parsedType}),eeq}return eeJ(e.data)}}etf.create=e=>new etf({typeName:tN.ZodUndefined,...ee$(e)});class etA extends ee0{_parse(e){if(this._getType(e)!==eeQ.null){let t=this._getOrReturnCtx(e);return eeV(t,{code:eez.invalid_type,expected:eeQ.null,received:t.parsedType}),eeq}return eeJ(e.data)}}etA.create=e=>new etA({typeName:tN.ZodNull,...ee$(e)});class etg extends ee0{constructor(){super(...arguments),this._any=!0}_parse(e){return eeJ(e.data)}}etg.create=e=>new etg({typeName:tN.ZodAny,...ee$(e)});class etm extends ee0{constructor(){super(...arguments),this._unknown=!0}_parse(e){return eeJ(e.data)}}etm.create=e=>new etm({typeName:tN.ZodUnknown,...ee$(e)});class etv extends ee0{_parse(e){let t=this._getOrReturnCtx(e);return eeV(t,{code:eez.invalid_type,expected:eeQ.never,received:t.parsedType}),eeq}}etv.create=e=>new etv({typeName:tN.ZodNever,...ee$(e)});class etb extends ee0{_parse(e){if(this._getType(e)!==eeQ.undefined){let t=this._getOrReturnCtx(e);return eeV(t,{code:eez.invalid_type,expected:eeQ.void,received:t.parsedType}),eeq}return eeJ(e.data)}}etb.create=e=>new etb({typeName:tN.ZodVoid,...ee$(e)});class ety extends ee0{_parse(e){let{ctx:t,status:r}=this._processInputParams(e),n=this._def;if(t.parsedType!==eeQ.array)return eeV(t,{code:eez.invalid_type,expected:eeQ.array,received:t.parsedType}),eeq;if(null!==n.exactLength){let e=t.data.length>n.exactLength.value,i=t.data.length<n.exactLength.value;(e||i)&&(eeV(t,{code:e?eez.too_big:eez.too_small,minimum:i?n.exactLength.value:void 0,maximum:e?n.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:n.exactLength.message}),r.dirty())}if(null!==n.minLength&&t.data.length<n.minLength.value&&(eeV(t,{code:eez.too_small,minimum:n.minLength.value,type:"array",inclusive:!0,exact:!1,message:n.minLength.message}),r.dirty()),null!==n.maxLength&&t.data.length>n.maxLength.value&&(eeV(t,{code:eez.too_big,maximum:n.maxLength.value,type:"array",inclusive:!0,exact:!1,message:n.maxLength.message}),r.dirty()),t.common.async)return Promise.all([...t.data].map((e,r)=>n.type._parseAsync(new eeX(t,e,t.path,r)))).then(e=>eeW.mergeArray(r,e));let i=[...t.data].map((e,r)=>n.type._parseSync(new eeX(t,e,t.path,r)));return eeW.mergeArray(r,i)}get element(){return this._def.type}min(e,t){return new ety({...this._def,minLength:{value:e,message:tL.toString(t)}})}max(e,t){return new ety({...this._def,maxLength:{value:e,message:tL.toString(t)}})}length(e,t){return new ety({...this._def,exactLength:{value:e,message:tL.toString(t)}})}nonempty(e){return this.min(1,e)}}ety.create=(e,t)=>new ety({type:e,minLength:null,maxLength:null,exactLength:null,typeName:tN.ZodArray,...ee$(t)});class etw extends ee0{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(null!==this._cached)return this._cached;let e=this._def.shape(),t=tP.objectKeys(e);return this._cached={shape:e,keys:t},this._cached}_parse(e){if(this._getType(e)!==eeQ.object){let t=this._getOrReturnCtx(e);return eeV(t,{code:eez.invalid_type,expected:eeQ.object,received:t.parsedType}),eeq}let{status:t,ctx:r}=this._processInputParams(e),{shape:n,keys:i}=this._getCached(),a=[];if(!(this._def.catchall instanceof etv&&"strip"===this._def.unknownKeys))for(let e in r.data)i.includes(e)||a.push(e);let s=[];for(let e of i){let t=n[e],i=r.data[e];s.push({key:{status:"valid",value:e},value:t._parse(new eeX(r,i,r.path,e)),alwaysSet:e in r.data})}if(this._def.catchall instanceof etv){let e=this._def.unknownKeys;if("passthrough"===e)for(let e of a)s.push({key:{status:"valid",value:e},value:{status:"valid",value:r.data[e]}});else if("strict"===e)a.length>0&&(eeV(r,{code:eez.unrecognized_keys,keys:a}),t.dirty());else if("strip"===e);else throw Error("Internal ZodObject error: invalid unknownKeys value.")}else{let e=this._def.catchall;for(let t of a){let n=r.data[t];s.push({key:{status:"valid",value:t},value:e._parse(new eeX(r,n,r.path,t)),alwaysSet:t in r.data})}}return r.common.async?Promise.resolve().then(async()=>{let e=[];for(let t of s){let r=await t.key,n=await t.value;e.push({key:r,value:n,alwaysSet:t.alwaysSet})}return e}).then(e=>eeW.mergeObjectSync(t,e)):eeW.mergeObjectSync(t,s)}get shape(){return this._def.shape()}strict(e){return tL.errToObj,new etw({...this._def,unknownKeys:"strict",...void 0!==e?{errorMap:(t,r)=>{let n=this._def.errorMap?.(t,r).message??r.defaultError;return"unrecognized_keys"===t.code?{message:tL.errToObj(e).message??n}:{message:n}}}:{}})}strip(){return new etw({...this._def,unknownKeys:"strip"})}passthrough(){return new etw({...this._def,unknownKeys:"passthrough"})}extend(e){return new etw({...this._def,shape:()=>({...this._def.shape(),...e})})}merge(e){return new etw({unknownKeys:e._def.unknownKeys,catchall:e._def.catchall,shape:()=>({...this._def.shape(),...e._def.shape()}),typeName:tN.ZodObject})}setKey(e,t){return this.augment({[e]:t})}catchall(e){return new etw({...this._def,catchall:e})}pick(e){let t={};for(let r of tP.objectKeys(e))e[r]&&this.shape[r]&&(t[r]=this.shape[r]);return new etw({...this._def,shape:()=>t})}omit(e){let t={};for(let r of tP.objectKeys(this.shape))e[r]||(t[r]=this.shape[r]);return new etw({...this._def,shape:()=>t})}deepPartial(){return function e(t){if(t instanceof etw){let r={};for(let n in t.shape){let i=t.shape[n];r[n]=etO.create(e(i))}return new etw({...t._def,shape:()=>r})}if(t instanceof ety)return new ety({...t._def,type:e(t.element)});if(t instanceof etO)return etO.create(e(t.unwrap()));if(t instanceof etQ)return etQ.create(e(t.unwrap()));if(t instanceof etM)return etM.create(t.items.map(t=>e(t)));else return t}(this)}partial(e){let t={};for(let r of tP.objectKeys(this.shape)){let n=this.shape[r];e&&!e[r]?t[r]=n:t[r]=n.optional()}return new etw({...this._def,shape:()=>t})}required(e){let t={};for(let r of tP.objectKeys(this.shape))if(e&&!e[r])t[r]=this.shape[r];else{let e=this.shape[r];for(;e instanceof etO;)e=e._def.innerType;t[r]=e}return new etw({...this._def,shape:()=>t})}keyof(){return etP(tP.objectKeys(this.shape))}}etw.create=(e,t)=>new etw({shape:()=>e,unknownKeys:"strip",catchall:etv.create(),typeName:tN.ZodObject,...ee$(t)}),etw.strictCreate=(e,t)=>new etw({shape:()=>e,unknownKeys:"strict",catchall:etv.create(),typeName:tN.ZodObject,...ee$(t)}),etw.lazycreate=(e,t)=>new etw({shape:e,unknownKeys:"strip",catchall:etv.create(),typeName:tN.ZodObject,...ee$(t)});class etx extends ee0{_parse(e){let{ctx:t}=this._processInputParams(e),r=this._def.options;if(t.common.async)return Promise.all(r.map(async e=>{let r={...t,common:{...t.common,issues:[]},parent:null};return{result:await e._parseAsync({data:t.data,path:t.path,parent:r}),ctx:r}})).then(function(e){for(let t of e)if("valid"===t.result.status)return t.result;for(let r of e)if("dirty"===r.result.status)return t.common.issues.push(...r.ctx.common.issues),r.result;let r=e.map(e=>new eej(e.ctx.common.issues));return eeV(t,{code:eez.invalid_union,unionErrors:r}),eeq});{let e,n=[];for(let i of r){let r={...t,common:{...t.common,issues:[]},parent:null},a=i._parseSync({data:t.data,path:t.path,parent:r});if("valid"===a.status)return a;"dirty"!==a.status||e||(e={result:a,ctx:r}),r.common.issues.length&&n.push(r.common.issues)}if(e)return t.common.issues.push(...e.ctx.common.issues),e.result;let i=n.map(e=>new eej(e));return eeV(t,{code:eez.invalid_union,unionErrors:i}),eeq}}get options(){return this._def.options}}etx.create=(e,t)=>new etx({options:e,typeName:tN.ZodUnion,...ee$(t)});let etC=e=>{if(e instanceof etR)return etC(e.schema);if(e instanceof etF)return etC(e.innerType());if(e instanceof etD)return[e.value];if(e instanceof et_)return e.options;if(e instanceof etL)return tP.objectValues(e.enum);else if(e instanceof etU)return etC(e._def.innerType);else if(e instanceof etf)return[void 0];else if(e instanceof etA)return[null];else if(e instanceof etO)return[void 0,...etC(e.unwrap())];else if(e instanceof etQ)return[null,...etC(e.unwrap())];else if(e instanceof etG)return etC(e.unwrap());else if(e instanceof etV)return etC(e.unwrap());else if(e instanceof etz)return etC(e._def.innerType);else return[]};class etE extends ee0{_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==eeQ.object)return eeV(t,{code:eez.invalid_type,expected:eeQ.object,received:t.parsedType}),eeq;let r=this.discriminator,n=t.data[r],i=this.optionsMap.get(n);return i?t.common.async?i._parseAsync({data:t.data,path:t.path,parent:t}):i._parseSync({data:t.data,path:t.path,parent:t}):(eeV(t,{code:eez.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[r]}),eeq)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(e,t,r){let n=new Map;for(let r of t){let t=etC(r.shape[e]);if(!t.length)throw Error(`A discriminator value for key \`${e}\` could not be extracted from all schema options`);for(let i of t){if(n.has(i))throw Error(`Discriminator property ${String(e)} has duplicate value ${String(i)}`);n.set(i,r)}}return new etE({typeName:tN.ZodDiscriminatedUnion,discriminator:e,options:t,optionsMap:n,...ee$(r)})}}class etS extends ee0{_parse(e){let{status:t,ctx:r}=this._processInputParams(e),n=(e,n)=>{if("aborted"===e.status||"aborted"===n.status)return eeq;let i=function e(t,r){let n=eeU(t),i=eeU(r);if(t===r)return{valid:!0,data:t};if(n===eeQ.object&&i===eeQ.object){let n=tP.objectKeys(r),i=tP.objectKeys(t).filter(e=>-1!==n.indexOf(e)),a={...t,...r};for(let n of i){let i=e(t[n],r[n]);if(!i.valid)return{valid:!1};a[n]=i.data}return{valid:!0,data:a}}if(n===eeQ.array&&i===eeQ.array){if(t.length!==r.length)return{valid:!1};let n=[];for(let i=0;i<t.length;i++){let a=e(t[i],r[i]);if(!a.valid)return{valid:!1};n.push(a.data)}return{valid:!0,data:n}}if(n===eeQ.date&&i===eeQ.date&&+t==+r)return{valid:!0,data:t};return{valid:!1}}(e.value,n.value);return i.valid?(("dirty"===e.status||"dirty"===n.status)&&t.dirty(),{status:t.value,value:i.data}):(eeV(r,{code:eez.invalid_intersection_types}),eeq)};return r.common.async?Promise.all([this._def.left._parseAsync({data:r.data,path:r.path,parent:r}),this._def.right._parseAsync({data:r.data,path:r.path,parent:r})]).then(([e,t])=>n(e,t)):n(this._def.left._parseSync({data:r.data,path:r.path,parent:r}),this._def.right._parseSync({data:r.data,path:r.path,parent:r}))}}etS.create=(e,t,r)=>new etS({left:e,right:t,typeName:tN.ZodIntersection,...ee$(r)});class etM extends ee0{_parse(e){let{status:t,ctx:r}=this._processInputParams(e);if(r.parsedType!==eeQ.array)return eeV(r,{code:eez.invalid_type,expected:eeQ.array,received:r.parsedType}),eeq;if(r.data.length<this._def.items.length)return eeV(r,{code:eez.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),eeq;!this._def.rest&&r.data.length>this._def.items.length&&(eeV(r,{code:eez.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),t.dirty());let n=[...r.data].map((e,t)=>{let n=this._def.items[t]||this._def.rest;return n?n._parse(new eeX(r,e,r.path,t)):null}).filter(e=>!!e);return r.common.async?Promise.all(n).then(e=>eeW.mergeArray(t,e)):eeW.mergeArray(t,n)}get items(){return this._def.items}rest(e){return new etM({...this._def,rest:e})}}etM.create=(e,t)=>{if(!Array.isArray(e))throw Error("You must pass an array of schemas to z.tuple([ ... ])");return new etM({items:e,typeName:tN.ZodTuple,rest:null,...ee$(t)})};class etI extends ee0{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:r}=this._processInputParams(e);if(r.parsedType!==eeQ.object)return eeV(r,{code:eez.invalid_type,expected:eeQ.object,received:r.parsedType}),eeq;let n=[],i=this._def.keyType,a=this._def.valueType;for(let e in r.data)n.push({key:i._parse(new eeX(r,e,r.path,e)),value:a._parse(new eeX(r,r.data[e],r.path,e)),alwaysSet:e in r.data});return r.common.async?eeW.mergeObjectAsync(t,n):eeW.mergeObjectSync(t,n)}get element(){return this._def.valueType}static create(e,t,r){return new etI(t instanceof ee0?{keyType:e,valueType:t,typeName:tN.ZodRecord,...ee$(r)}:{keyType:etl.create(),valueType:e,typeName:tN.ZodRecord,...ee$(t)})}}class etB extends ee0{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:r}=this._processInputParams(e);if(r.parsedType!==eeQ.map)return eeV(r,{code:eez.invalid_type,expected:eeQ.map,received:r.parsedType}),eeq;let n=this._def.keyType,i=this._def.valueType,a=[...r.data.entries()].map(([e,t],a)=>({key:n._parse(new eeX(r,e,r.path,[a,"key"])),value:i._parse(new eeX(r,t,r.path,[a,"value"]))}));if(r.common.async){let e=new Map;return Promise.resolve().then(async()=>{for(let r of a){let n=await r.key,i=await r.value;if("aborted"===n.status||"aborted"===i.status)return eeq;("dirty"===n.status||"dirty"===i.status)&&t.dirty(),e.set(n.value,i.value)}return{status:t.value,value:e}})}{let e=new Map;for(let r of a){let n=r.key,i=r.value;if("aborted"===n.status||"aborted"===i.status)return eeq;("dirty"===n.status||"dirty"===i.status)&&t.dirty(),e.set(n.value,i.value)}return{status:t.value,value:e}}}}etB.create=(e,t,r)=>new etB({valueType:t,keyType:e,typeName:tN.ZodMap,...ee$(r)});class etk extends ee0{_parse(e){let{status:t,ctx:r}=this._processInputParams(e);if(r.parsedType!==eeQ.set)return eeV(r,{code:eez.invalid_type,expected:eeQ.set,received:r.parsedType}),eeq;let n=this._def;null!==n.minSize&&r.data.size<n.minSize.value&&(eeV(r,{code:eez.too_small,minimum:n.minSize.value,type:"set",inclusive:!0,exact:!1,message:n.minSize.message}),t.dirty()),null!==n.maxSize&&r.data.size>n.maxSize.value&&(eeV(r,{code:eez.too_big,maximum:n.maxSize.value,type:"set",inclusive:!0,exact:!1,message:n.maxSize.message}),t.dirty());let i=this._def.valueType;function a(e){let r=new Set;for(let n of e){if("aborted"===n.status)return eeq;"dirty"===n.status&&t.dirty(),r.add(n.value)}return{status:t.value,value:r}}let s=[...r.data.values()].map((e,t)=>i._parse(new eeX(r,e,r.path,t)));return r.common.async?Promise.all(s).then(e=>a(e)):a(s)}min(e,t){return new etk({...this._def,minSize:{value:e,message:tL.toString(t)}})}max(e,t){return new etk({...this._def,maxSize:{value:e,message:tL.toString(t)}})}size(e,t){return this.min(e,t).max(e,t)}nonempty(e){return this.min(1,e)}}etk.create=(e,t)=>new etk({valueType:e,minSize:null,maxSize:null,typeName:tN.ZodSet,...ee$(t)});class etT extends ee0{constructor(){super(...arguments),this.validate=this.implement}_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==eeQ.function)return eeV(t,{code:eez.invalid_type,expected:eeQ.function,received:t.parsedType}),eeq;function r(e,r){return eeH({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,eeG,eeG].filter(e=>!!e),issueData:{code:eez.invalid_arguments,argumentsError:r}})}function n(e,r){return eeH({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,eeG,eeG].filter(e=>!!e),issueData:{code:eez.invalid_return_type,returnTypeError:r}})}let i={errorMap:t.common.contextualErrorMap},a=t.data;if(this._def.returns instanceof etN){let e=this;return eeJ(async function(...t){let s=new eej([]),o=await e._def.args.parseAsync(t,i).catch(e=>{throw s.addIssue(r(t,e)),s}),l=await Reflect.apply(a,this,o);return await e._def.returns._def.type.parseAsync(l,i).catch(e=>{throw s.addIssue(n(l,e)),s})})}{let e=this;return eeJ(function(...t){let s=e._def.args.safeParse(t,i);if(!s.success)throw new eej([r(t,s.error)]);let o=Reflect.apply(a,this,s.data),l=e._def.returns.safeParse(o,i);if(!l.success)throw new eej([n(o,l.error)]);return l.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...e){return new etT({...this._def,args:etM.create(e).rest(etm.create())})}returns(e){return new etT({...this._def,returns:e})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}static create(e,t,r){return new etT({args:e||etM.create([]).rest(etm.create()),returns:t||etm.create(),typeName:tN.ZodFunction,...ee$(r)})}}class etR extends ee0{get schema(){return this._def.getter()}_parse(e){let{ctx:t}=this._processInputParams(e);return this._def.getter()._parse({data:t.data,path:t.path,parent:t})}}etR.create=(e,t)=>new etR({getter:e,typeName:tN.ZodLazy,...ee$(t)});class etD extends ee0{_parse(e){if(e.data!==this._def.value){let t=this._getOrReturnCtx(e);return eeV(t,{received:t.data,code:eez.invalid_literal,expected:this._def.value}),eeq}return{status:"valid",value:e.data}}get value(){return this._def.value}}function etP(e,t){return new et_({values:e,typeName:tN.ZodEnum,...ee$(t)})}etD.create=(e,t)=>new etD({value:e,typeName:tN.ZodLiteral,...ee$(t)});class et_ extends ee0{_parse(e){if("string"!=typeof e.data){let t=this._getOrReturnCtx(e),r=this._def.values;return eeV(t,{expected:tP.joinValues(r),received:t.parsedType,code:eez.invalid_type}),eeq}if(this._cache||(this._cache=new Set(this._def.values)),!this._cache.has(e.data)){let t=this._getOrReturnCtx(e),r=this._def.values;return eeV(t,{received:t.data,code:eez.invalid_enum_value,options:r}),eeq}return eeJ(e.data)}get options(){return this._def.values}get enum(){let e={};for(let t of this._def.values)e[t]=t;return e}get Values(){let e={};for(let t of this._def.values)e[t]=t;return e}get Enum(){let e={};for(let t of this._def.values)e[t]=t;return e}extract(e,t=this._def){return et_.create(e,{...this._def,...t})}exclude(e,t=this._def){return et_.create(this.options.filter(t=>!e.includes(t)),{...this._def,...t})}}et_.create=etP;class etL extends ee0{_parse(e){let t=tP.getValidEnumValues(this._def.values),r=this._getOrReturnCtx(e);if(r.parsedType!==eeQ.string&&r.parsedType!==eeQ.number){let e=tP.objectValues(t);return eeV(r,{expected:tP.joinValues(e),received:r.parsedType,code:eez.invalid_type}),eeq}if(this._cache||(this._cache=new Set(tP.getValidEnumValues(this._def.values))),!this._cache.has(e.data)){let e=tP.objectValues(t);return eeV(r,{received:r.data,code:eez.invalid_enum_value,options:e}),eeq}return eeJ(e.data)}get enum(){return this._def.values}}etL.create=(e,t)=>new etL({values:e,typeName:tN.ZodNativeEnum,...ee$(t)});class etN extends ee0{unwrap(){return this._def.type}_parse(e){let{ctx:t}=this._processInputParams(e);return t.parsedType!==eeQ.promise&&!1===t.common.async?(eeV(t,{code:eez.invalid_type,expected:eeQ.promise,received:t.parsedType}),eeq):eeJ((t.parsedType===eeQ.promise?t.data:Promise.resolve(t.data)).then(e=>this._def.type.parseAsync(e,{path:t.path,errorMap:t.common.contextualErrorMap})))}}etN.create=(e,t)=>new etN({type:e,typeName:tN.ZodPromise,...ee$(t)});class etF extends ee0{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===tN.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){let{status:t,ctx:r}=this._processInputParams(e),n=this._def.effect||null,i={addIssue:e=>{eeV(r,e),e.fatal?t.abort():t.dirty()},get path(){return r.path}};if(i.addIssue=i.addIssue.bind(i),"preprocess"===n.type){let e=n.transform(r.data,i);if(r.common.async)return Promise.resolve(e).then(async e=>{if("aborted"===t.value)return eeq;let n=await this._def.schema._parseAsync({data:e,path:r.path,parent:r});return"aborted"===n.status?eeq:"dirty"===n.status||"dirty"===t.value?eeK(n.value):n});{if("aborted"===t.value)return eeq;let n=this._def.schema._parseSync({data:e,path:r.path,parent:r});return"aborted"===n.status?eeq:"dirty"===n.status||"dirty"===t.value?eeK(n.value):n}}if("refinement"===n.type){let e=e=>{let t=n.refinement(e,i);if(r.common.async)return Promise.resolve(t);if(t instanceof Promise)throw Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return e};if(!1!==r.common.async)return this._def.schema._parseAsync({data:r.data,path:r.path,parent:r}).then(r=>"aborted"===r.status?eeq:("dirty"===r.status&&t.dirty(),e(r.value).then(()=>({status:t.value,value:r.value}))));{let n=this._def.schema._parseSync({data:r.data,path:r.path,parent:r});return"aborted"===n.status?eeq:("dirty"===n.status&&t.dirty(),e(n.value),{status:t.value,value:n.value})}}if("transform"===n.type)if(!1!==r.common.async)return this._def.schema._parseAsync({data:r.data,path:r.path,parent:r}).then(e=>"valid"!==e.status?eeq:Promise.resolve(n.transform(e.value,i)).then(e=>({status:t.value,value:e})));else{let e=this._def.schema._parseSync({data:r.data,path:r.path,parent:r});if("valid"!==e.status)return eeq;let a=n.transform(e.value,i);if(a instanceof Promise)throw Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:t.value,value:a}}tP.assertNever(n)}}etF.create=(e,t,r)=>new etF({schema:e,typeName:tN.ZodEffects,effect:t,...ee$(r)}),etF.createWithPreprocess=(e,t,r)=>new etF({schema:t,effect:{type:"preprocess",transform:e},typeName:tN.ZodEffects,...ee$(r)});class etO extends ee0{_parse(e){return this._getType(e)===eeQ.undefined?eeJ(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}etO.create=(e,t)=>new etO({innerType:e,typeName:tN.ZodOptional,...ee$(t)});class etQ extends ee0{_parse(e){return this._getType(e)===eeQ.null?eeJ(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}etQ.create=(e,t)=>new etQ({innerType:e,typeName:tN.ZodNullable,...ee$(t)});class etU extends ee0{_parse(e){let{ctx:t}=this._processInputParams(e),r=t.data;return t.parsedType===eeQ.undefined&&(r=this._def.defaultValue()),this._def.innerType._parse({data:r,path:t.path,parent:t})}removeDefault(){return this._def.innerType}}etU.create=(e,t)=>new etU({innerType:e,typeName:tN.ZodDefault,defaultValue:"function"==typeof t.default?t.default:()=>t.default,...ee$(t)});class etz extends ee0{_parse(e){let{ctx:t}=this._processInputParams(e),r={...t,common:{...t.common,issues:[]}},n=this._def.innerType._parse({data:r.data,path:r.path,parent:{...r}});return eeY(n)?n.then(e=>({status:"valid",value:"valid"===e.status?e.value:this._def.catchValue({get error(){return new eej(r.common.issues)},input:r.data})})):{status:"valid",value:"valid"===n.status?n.value:this._def.catchValue({get error(){return new eej(r.common.issues)},input:r.data})}}removeCatch(){return this._def.innerType}}etz.create=(e,t)=>new etz({innerType:e,typeName:tN.ZodCatch,catchValue:"function"==typeof t.catch?t.catch:()=>t.catch,...ee$(t)});class etj extends ee0{_parse(e){if(this._getType(e)!==eeQ.nan){let t=this._getOrReturnCtx(e);return eeV(t,{code:eez.invalid_type,expected:eeQ.nan,received:t.parsedType}),eeq}return{status:"valid",value:e.data}}}etj.create=e=>new etj({typeName:tN.ZodNaN,...ee$(e)}),Symbol("zod_brand");class etG extends ee0{_parse(e){let{ctx:t}=this._processInputParams(e),r=t.data;return this._def.type._parse({data:r,path:t.path,parent:t})}unwrap(){return this._def.type}}class etH extends ee0{_parse(e){let{status:t,ctx:r}=this._processInputParams(e);if(r.common.async)return(async()=>{let e=await this._def.in._parseAsync({data:r.data,path:r.path,parent:r});return"aborted"===e.status?eeq:"dirty"===e.status?(t.dirty(),eeK(e.value)):this._def.out._parseAsync({data:e.value,path:r.path,parent:r})})();{let e=this._def.in._parseSync({data:r.data,path:r.path,parent:r});return"aborted"===e.status?eeq:"dirty"===e.status?(t.dirty(),{status:"dirty",value:e.value}):this._def.out._parseSync({data:e.value,path:r.path,parent:r})}}static create(e,t){return new etH({in:e,out:t,typeName:tN.ZodPipeline})}}class etV extends ee0{_parse(e){let t=this._def.innerType._parse(e),r=e=>("valid"===e.status&&(e.value=Object.freeze(e.value)),e);return eeY(t)?t.then(e=>r(e)):r(t)}unwrap(){return this._def.innerType}}etV.create=(e,t)=>new etV({innerType:e,typeName:tN.ZodReadonly,...ee$(t)}),etw.lazycreate,(eX=tN||(tN={})).ZodString="ZodString",eX.ZodNumber="ZodNumber",eX.ZodNaN="ZodNaN",eX.ZodBigInt="ZodBigInt",eX.ZodBoolean="ZodBoolean",eX.ZodDate="ZodDate",eX.ZodSymbol="ZodSymbol",eX.ZodUndefined="ZodUndefined",eX.ZodNull="ZodNull",eX.ZodAny="ZodAny",eX.ZodUnknown="ZodUnknown",eX.ZodNever="ZodNever",eX.ZodVoid="ZodVoid",eX.ZodArray="ZodArray",eX.ZodObject="ZodObject",eX.ZodUnion="ZodUnion",eX.ZodDiscriminatedUnion="ZodDiscriminatedUnion",eX.ZodIntersection="ZodIntersection",eX.ZodTuple="ZodTuple",eX.ZodRecord="ZodRecord",eX.ZodMap="ZodMap",eX.ZodSet="ZodSet",eX.ZodFunction="ZodFunction",eX.ZodLazy="ZodLazy",eX.ZodLiteral="ZodLiteral",eX.ZodEnum="ZodEnum",eX.ZodEffects="ZodEffects",eX.ZodNativeEnum="ZodNativeEnum",eX.ZodOptional="ZodOptional",eX.ZodNullable="ZodNullable",eX.ZodDefault="ZodDefault",eX.ZodCatch="ZodCatch",eX.ZodPromise="ZodPromise",eX.ZodBranded="ZodBranded",eX.ZodPipeline="ZodPipeline",eX.ZodReadonly="ZodReadonly";let etW=etl.create,etq=etc.create;etj.create,etu.create;let etK=etd.create;eth.create,etp.create,etf.create,etA.create,etg.create;let etJ=etm.create;etv.create,etb.create,ety.create;let etY=etw.create;etw.strictCreate,etx.create,etE.create,etS.create,etM.create,etI.create,etB.create,etk.create,etT.create,etR.create,etD.create;let etX=et_.create;etL.create,etN.create,etF.create,etO.create,etQ.create;let etZ=etF.createWithPreprocess;etH.create;let et$=etX(["cm","inch"]),et0=etX(["different_fields","one_field"]),et1=etX(["left_bottom","center","right_bottom","left_center","right_center"]),et2=etY({buttonLabel:etW(),backgroundColor:etW(),borderColor:etW(),textColor:etW(),borderRadius:etq(),borderWidth:etq()}),et3=etY({units:et$,productWidthAndHeight:et0,metafieldForWidth:etW().nullable(),metafieldForHeight:etW().nullable(),metafieldForWidthAndHeight:etW().nullable(),widgetPosition:et1,_widgetSettings:et2.optional(),isWidgetActive:etK()}),et9=function(e){let t=e?.trim().replace(/\/+$/,"")??"";if(!t||t.includes("/v1/http")||t.endsWith("/v1"))return t;let r=t.indexOf("/http");return r>=0?`${t.slice(0,r)}/v1${t.slice(r)}`:`${t}/v1`}("/apps/vizbl-wall-art/http"),et4=etY({token:etW().trim().min(1),sid:etW().trim().min(1),expiresIn:etq().finite()}),et5=etY({metafields:etW().trim().min(1),posterPic:etW().trim().min(1),title:etW().trim().optional(),widgetSession:etJ().optional()}),et8=etZ(e=>"string"==typeof e?JSON.parse(e):e,etY({metafield:etJ(),tinuuid:etW().trim().optional()}));async function et6(e,t){let r=await eeO({productType:"wallart-shopify",variant_id:e,metafield_key:"poster_settings"},{baseURL:et9,signal:t});return function(e){let t,r,n=et5.safeParse("string"!=typeof e?e:JSON.parse(e));if(!n.success)return null;let i=et8.safeParse(n.data.metafields);if(!i.success)return null;let a=(t=function(e){if("string"!=typeof e)return e;try{return JSON.parse(e)}catch{return}}(i.data.metafield),(r=et3.safeParse(t)).success?r.data:null);if(!a)return null;let s=et4.safeParse(n.data.widgetSession);return{settings:a,posterPic:n.data.posterPic,title:n.data.title??null,tinuuid:i.data.tinuuid??null,widgetSession:s.success?s.data:null}}(r.body??r)}let et7="44px",ere="60px",ert={left_center:{left:ere,top:"50%",transform:"translateY(-50%)"},left_bottom:{left:ere,bottom:et7},center:{left:`calc(50% + ${ere})`,bottom:et7,transform:"translateX(-50%)"},right_bottom:{right:ere,bottom:et7},right_center:{right:ere,top:"50%",transform:"translateY(-50%)"}},err=etZ(e=>"number"==typeof e&&Number.isFinite(e)?String(e):e,etW().trim().regex(/^\d+$/));function ern(e){let t=err.safeParse(e);return t.success?t.data:null}function eri(e){return e?e instanceof HTMLInputElement||e instanceof HTMLSelectElement||e instanceof HTMLTextAreaElement?e.value:e.getAttribute("value"):null}let era=["product-form","[data-main-product]",'[id*="MainProduct"]',".product",".product__info-wrapper",".product__info-container","#MainContent"],ers=[".product-recommendations",".related-products","[data-product-recommendations]"];var ero=r("./src/shopify.css?inline");function erl(){let e=function({documentRef:e=document,locationRef:t=window.location,analytics:r=window.ShopifyAnalytics}={}){var n;let i=e.body;if(i?.classList.contains("template-collection"))return!1;if(n=t.pathname,/(?:^|\/)products\/[^/]+/i.test(n)||r?.meta?.page?.pageType?.toLowerCase()==="product")return!0;let a=e.querySelector('meta[property="og:type"]')?.getAttribute("content");return!!(a?.trim().toLowerCase()==="product"||i?.classList.contains("template-product"))}();return{isProductPage:e,variantId:e?function({documentRef:e=document,locationRef:t=window.location}={}){return function(e=window.location){return ern(new URLSearchParams(e.search).get("variant"))}(t)??function(e=document){for(let{field:t}of Array.from(e.querySelectorAll('form[action*="/cart/add"]')).flatMap((t,r)=>{let n;return[...Array.from(t.querySelectorAll('input[name="id"], select[name="id"]')),...!(n=t.getAttribute("id"))?[]:Array.from(e.querySelectorAll('input[name="id"][form], select[name="id"][form]')).filter(e=>e.getAttribute("form")===n)].map((e,n)=>({field:e,formIndex:r,fieldIndex:n,score:function(e){let t=0,r=(e.getAttribute("id")??"").toLowerCase(),n=(e.getAttribute("class")??"").toLowerCase();for(let i of(r.includes("product-form")&&(t+=100),n.includes("product-form")&&(t+=80),era))e.closest(i)&&(t+=25);for(let r of ers)e.closest(r)&&(t-=100);return t}(t)}))}).sort((e,t)=>t.score-e.score||e.formIndex-t.formIndex||e.fieldIndex-t.fieldIndex)){let e=ern(eri(t));if(e)return e}return null}(e)??function(e=document){for(let t of Array.from(e.querySelectorAll('[name="id"][form^="product-form"]'))){let e=ern(eri(t));if(e)return e}return null}(e)??function(e=document){let t=e.querySelector("[data-selected-variant-id]");return ern(t?.getAttribute("data-selected-variant-id")??null)}(e)}():null}}function erc(){let e=function(){let[e,t]=(0,rx.useState)(erl);return(0,rx.useEffect)(()=>{let e=null,r=window.history.pushState,n=window.history.replaceState,i=()=>{null===e&&(e=window.requestAnimationFrame(()=>{e=null,t(e=>{let t=erl();return e.isProductPage===t.isProductPage&&e.variantId===t.variantId?e:t})}))};window.history.pushState=function(...e){let t=r.apply(this,e);return i(),t},window.history.replaceState=function(...e){let t=n.apply(this,e);return i(),t};let a=ag('body.template-product, body.template-collection, meta[property="og:type"], form[action*="/cart/add"], form[action*="/cart/add"] [name="id"], [name="id"][form], [data-selected-variant-id]',{initialize(e){let t;return{add(){t=(e=>{var t;let r=(t=e).matches("body")?["class"]:t.matches('meta[property="og:type"]')?["content"]:t.matches('form[action*="/cart/add"]')?["action","class","id"]:t.matches('form[action*="/cart/add"] [name="id"], [name="id"][form]')?["form","value"]:t.matches("[data-selected-variant-id]")?["data-selected-variant-id"]:[];if(0===r.length)return;let n=new MutationObserver(i);return n.observe(e,{attributes:!0,attributeFilter:r}),()=>{n.disconnect()}})(e),i()},remove(){t?.(),t=void 0,i()}}}});return document.addEventListener("change",i,!0),document.addEventListener("input",i,!0),document.addEventListener("click",i,!0),window.addEventListener("popstate",i),i(),()=>{null!==e&&window.cancelAnimationFrame(e),window.history.pushState=r,window.history.replaceState=n,a.abort(),document.removeEventListener("change",i,!0),document.removeEventListener("input",i,!0),document.removeEventListener("click",i,!0),window.removeEventListener("popstate",i)}},[]),e}(),[t,r]=(0,rx.useState)(!1),{data:n}=od({queryKey:["vizbl-shopify-room-viewer","activation",e.variantId],queryFn:({signal:t})=>et6(e.variantId??"",t),enabled:e.isProductPage&&null!==e.variantId,staleTime:3e5,gcTime:3e5,refetchOnWindowFocus:!1},s2,void 0),i=(0,rx.useCallback)(()=>{r(!0)},[]),a=(0,rx.useCallback)(e=>{r(e)},[]);if(!e.isProductPage||!e.variantId||!n?.settings.isWidgetActive)return null;let{settings:s,posterPic:o,title:l}=n,c=s._widgetSettings,u=function(e){if("one_field"===e.productWidthAndHeight){let[t,r]=e.metafieldForWidthAndHeight.split("x");return{width:Number(t),height:Number(r)}}return{width:Number(e.metafieldForWidth),height:Number(e.metafieldForHeight)}}(s),d="inch"===s.units?"in":"cm";return(0,rE.jsxs)(rE.Fragment,{children:[(0,rE.jsx)("button",{type:"button",onClick:i,style:{position:"fixed",zIndex:0x7ffffffe,display:"inline-flex",alignItems:"center",justifyContent:"center",padding:"13.522px 21.635px",borderStyle:"solid",borderColor:c?.borderColor??"rgba(65, 90, 229, 0.3)",borderWidth:c?.borderWidth??1,borderRadius:c?.borderRadius??121.053,background:c?.backgroundColor??"#ffffff",boxShadow:"0px 0px 20px 0px rgba(23, 32, 51, 0.14), 0px 16px 32px 0px rgba(23, 32, 51, 0.17)",color:c?.textColor??"#111111",boxSizing:"border-box",cursor:"pointer",maxWidth:"calc(100vw - 16px)",fontFamily:'Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif',fontSize:18,fontWeight:600,letterSpacing:0,lineHeight:"18px",margin:0,appearance:"none",...ert[s.widgetPosition]},children:c?.buttonLabel??"View in place"}),(0,rE.jsx)(ee_,{open:t,onOpenChange:a,type:"wallart",source:"shopify",src:o,name:l??"",width:u.width,height:u.height,dimensionUnit:d,widgetSession:n.widgetSession}),t&&(0,am.createPortal)((0,rE.jsx)("style",{children:ero.A}),document.head)]})}let eru="vizbl-shopify-room-viewer",erd=new rw({defaultOptions:{queries:{refetchOnMount:!1,refetchOnReconnect:!1,refetchOnWindowFocus:!1,retry:(e,t)=>{let r=function(e){if(ix(e))return e.response?.status}(t);return(void 0===r||!(r>=400)||!(r<500))&&e<2}}}});function erh(){let e,t=((e=document.getElementById(eru))||((e=document.createElement("div")).id=eru,document.body.appendChild(e)),e),r=ij.createRoot(t);r.render((0,rx.createElement)(rI,{client:erd},(0,rx.createElement)(erc)));let n=ag(`#${eru}`,{remove(){n.abort(),r.unmount(),erh()}})}iz({baseURL:et9}),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",erh,{once:!0}):erh()})()})();
|