@vizbl/shopify-room-viewer 0.0.9 → 0.0.11

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.
@@ -3282,10 +3282,6 @@ No matching component was found for:
3282
3282
  background-color: var(--v-button-dark);
3283
3283
  }
3284
3284
 
3285
- .bg-button-light {
3286
- background-color: var(--v-button-light);
3287
- }
3288
-
3289
3285
  .bg-button-white {
3290
3286
  background-color: var(--v-button-white);
3291
3287
  }
@@ -4778,14 +4774,6 @@ No matching component was found for:
4778
4774
  background-color: var(--v-borders-dark);
4779
4775
  }
4780
4776
 
4781
- .hover\\:bg-button-dark-hover:hover {
4782
- background-color: var(--v-button-dark-hover);
4783
- }
4784
-
4785
- .hover\\:bg-button-light-hover:hover {
4786
- background-color: var(--v-button-light-hover);
4787
- }
4788
-
4789
4777
  .hover\\:bg-button-white:hover {
4790
4778
  background-color: var(--v-button-white);
4791
4779
  }
@@ -5022,14 +5010,6 @@ No matching component was found for:
5022
5010
  background-color: var(--v-backgrounds-base-3);
5023
5011
  }
5024
5012
 
5025
- .active\\:bg-button-dark-pressed:active {
5026
- background-color: var(--v-button-dark-pressed);
5027
- }
5028
-
5029
- .active\\:bg-button-light-pressed:active {
5030
- background-color: var(--v-button-light-pressed);
5031
- }
5032
-
5033
5013
  .active\\:bg-button-outline-pressed:active {
5034
5014
  background-color: var(--v-button-outline-pressed);
5035
5015
  }
@@ -7481,7 +7461,7 @@ ${eg}`:eg),GY=function(e){let t=e?.trim().replace(/\/+$/,"")??"";if(!t||t.includ
7481
7461
  - less than the value passed to \`max\` (or 100 if no \`max\` prop is set)
7482
7462
  - \`null\` or \`undefined\` if the progress is indeterminate.
7483
7463
 
7484
- Defaulting to \`null\`.`));let u=Ws(a,c)?a:null,d=Wi(u)?o(u,c):void 0;return(0,rd.jsx)(V8,{scope:i,value:u,max:c,children:(0,rd.jsx)(V3.div,{"aria-valuemax":c,"aria-valuemin":0,"aria-valuenow":Wi(u)?u:void 0,"aria-valuetext":d,role:"progressbar","data-state":Wn(u,c),"data-value":u??void 0,"data-max":c,...l,ref:t})})});V7.displayName=V4;var We="ProgressIndicator",Wt=(0,rc.forwardRef)((e,t)=>{let{__scopeProgress:r,...n}=e,i=V6(We,r);return(0,rd.jsx)(V3.div,{"data-state":Wn(i.value,i.max),"data-value":i.value??void 0,"data-max":i.max,...n,ref:t})});function Wr(e,t){return`${Math.round(e/t*100)}%`}function Wn(e,t){return null==e?"indeterminate":e===t?"complete":"loading"}function Wi(e){return"number"==typeof e}function Wa(e){return Wi(e)&&!isNaN(e)&&e>0}function Ws(e,t){return Wi(e)&&!isNaN(e)&&e<=t&&e>=0}function Wo({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,rd.jsx)(V7,{"data-slot":"progress",className:Vk("relative h-2 w-full overflow-hidden rounded-full bg-primary/20",e),value:t,max:i,...n,children:(0,rd.jsx)(Wt,{"data-slot":"progress-indicator",className:"h-full bg-primary transition-[width]",style:{width:`${a}%`}})})}Wt.displayName=We;let Wl="inset-0 h-svh min-w-full max-w-none translate-x-0 translate-y-0 rounded-none border-none bg-transparent p-0 shadow-none sm:p-0 sm:max-w-none",Wc=(0,rc.createContext)(null),Wu=(0,rc.createContext)(null),Wd=(0,rc.createContext)(null),Wh=(0,rc.createContext)(null),Wp=(0,rc.createContext)(null),WA=(0,rc.createContext)(null),Wf=(0,rc.createContext)(null);function Wg(e,t){let r=(0,rc.use)(e);if(!r)throw Error(`${t} must be used within a RoomViewerProvider`);return r}function Wm(){return Wg(Wc,"useRoomViewerMetadata")}function Wv(){return Wg(Wd,"useRoomViewerRooms")}function Wb(){return Wg(Wh,"useRoomViewerResource")}function Wy(){return Wg(Wp,"useRoomViewerSceneState")}function Ww(){return Wg(WA,"useRoomViewerWallResourceControls")}let Wx=new dT,WC=Wx.getDevice(),WE=Wx.getOS(),WS="iOS"===WE.name,WI="Android"===WE.name,WM="mobile"===WC.type;function WB({variant:e,open:t,portalContainer:r,showDialogCloseButton:n=!1,onOpenChange:i,onTryAgain:a,onCancel:s}){let{t:o}=st(),l=e?o("custom-interior-processing"===e?"floor.error.processingBody":"viewer-load-failed"===e?"floor.error.loadBody":`accessError.${e}`):"";return(0,rd.jsx)(VD,{open:t,onOpenChange:i,children:(0,rd.jsxs)(VN,{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,rd.jsxs)("div",{className:"grid gap-1",children:[(0,rd.jsx)(VQ,{children:o("floor.error.title")}),(0,rd.jsx)(VU,{className:"typo-base-14 font-medium text-text-base",children:l})]}),(0,rd.jsxs)("div",{className:"grid gap-2",children:[a&&(0,rd.jsxs)(VR,{variant:"contrast",onClick:a,children:[(0,rd.jsx)(Vq,{"aria-hidden":"true"}),o("floor.error.tryAgain")]}),s&&(0,rd.jsx)(VR,{variant:"outline",onClick:s,children:o("floor.error.cancel")}),n&&(0,rd.jsx)(VP,{asChild:!0,children:(0,rd.jsx)(VR,{variant:"outline",children:o("close")})})]})]})})}function Wk({className:e,...t}){return(0,rd.jsx)(dR,{"data-slot":"label",className:Vk("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",e),...t})}function WT({className:e,orientation:t="horizontal",decorative:r=!0,...n}){return(0,rd.jsx)(dP,{"data-slot":"separator",decorative:r,orientation:t,className:Vk("bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px",e),...n})}function WR({className:e,...t}){return(0,rd.jsx)("div",{"data-slot":"field-group",className:Vk("group/field-group @container/field-group flex w-full flex-col gap-7 data-[slot=checkbox-group]:gap-3 [&>[data-slot=field-group]]:gap-4",e),...t})}let WD=la("group/field flex w-full gap-3 data-[invalid=true]:text-destructive",{variants:{orientation:{vertical:["flex-col [&>*]:w-full [&>.sr-only]:w-auto"],horizontal:["flex-row items-center","[&>[data-slot=field-label]]:flex-auto","has-[>[data-slot=field-content]]:items-start has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px"],responsive:["flex-col [&>*]:w-full [&>.sr-only]:w-auto @md/field-group:flex-row @md/field-group:items-center @md/field-group:[&>*]:w-auto","@md/field-group:[&>[data-slot=field-label]]:flex-auto","@md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px"]}},defaultVariants:{orientation:"vertical"}});function W_({className:e,orientation:t="vertical",...r}){return(0,rd.jsx)("div",{role:"group","data-slot":"field","data-orientation":t,className:Vk(WD({orientation:t}),e),...r})}function WP({className:e,...t}){return(0,rd.jsx)(Wk,{"data-slot":"field-label",className:Vk("group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50","has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col has-[>[data-slot=field]]:rounded-md has-[>[data-slot=field]]:border [&>*]:data-[slot=field]:p-4","has-data-[state=checked]:bg-primary/5 has-data-[state=checked]:border-primary dark:has-data-[state=checked]:bg-primary/10",e),...t})}function WL({className:e,...t}){return(0,rd.jsx)("div",{"data-slot":"field-label",className:Vk("flex w-fit items-center gap-2 text-sm leading-snug font-medium group-data-[disabled=true]/field:opacity-50",e),...t})}function WN({...e}){return(0,rd.jsx)(pi,{"data-slot":"popover",...e})}function WO({...e}){return(0,rd.jsx)(po,{"data-slot":"popover-trigger",...e})}function WF({className:e,align:t="center",sideOffset:r=4,portalContainer:n,...i}){return(0,rd.jsx)(pd,{container:n,children:(0,rd.jsx)(pp,{"data-slot":"popover-content",align:t,sideOffset:r,className:Vk("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 WQ({className:e,defaultValue:t,value:r,min:n=0,max:i=100,variant:a="default","aria-label":s,"aria-labelledby":o,...l}){let c=(0,rc.useMemo)(()=>Array.isArray(r)?r:Array.isArray(t)?t:[n],[r,t,n]);return(0,rd.jsxs)(pN,{"data-slot":"slider",defaultValue:t,value:r,min:n,max:i,"data-variant":a,"aria-label":s,"aria-labelledby":o,className:Vk("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,rd.jsx)(pj,{"data-slot":"slider-track",className:Vk("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,rd.jsx)(pV,{"data-slot":"slider-range",className:Vk("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,rd.jsx)(pq,{"data-slot":"slider-thumb","aria-label":s,"aria-labelledby":o,className:Vk("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 WU="u"<typeof window;function Wz(e,{defaultValue:t=!1,initializeWithValue:r=!0}={}){let[n,i]=(0,rc.useState)(()=>{if(r)return WU?t:window.matchMedia(e).matches;return t});return(0,rc.useEffect)(()=>{let t=window.matchMedia(e),r=()=>{i(t.matches)};return r(),t.addEventListener("change",r),()=>{t.removeEventListener("change",r)}},[e]),n}function WH({...e}){return(0,rd.jsx)(Ar,{"data-slot":"select",...e})}function Wj({...e}){return(0,rd.jsx)(As,{"data-slot":"select-value",...e})}function WG({className:e,size:t="default",children:r,...n}){return(0,rd.jsxs)(Ai,{"data-slot":"select-trigger","data-size":t,className:Vk("flex w-fit items-center justify-between gap-2 whitespace-nowrap rounded-md border bg-background-white shadow-sm outline-none transition-colors cursor-pointer","border-border-medium","text-text-dark","hover:border-border-dark","focus-visible:border-border-dark","aria-invalid:border-border-red","disabled:cursor-not-allowed disabled:border-border-medium disabled:bg-background-base disabled:opacity-40","data-[size=default]:h-11 data-[size=default]:px-2 data-[size=default]:py-2.5 data-[size=default]:typo-base-16","data-[size=md]:h-9 data-[size=md]:px-2 data-[size=md]:py-2 data-[size=md]:typo-base-14","data-[size=sm]:h-[1.875rem] data-[size=sm]:px-2 data-[size=sm]:typo-base-12","*:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2","[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*=size-])]:size-6 [&_svg:not([class*=text-])]:text-text-dark",e),...n,children:[r,(0,rd.jsx)(Ao,{asChild:!0,children:(0,rd.jsx)(VW,{className:"size-6"})})]})}function WV({className:e,children:t,position:r="item-aligned",align:n="center",portalContainer:i,...a}){return(0,rd.jsx)(Al,{container:i,children:(0,rd.jsxs)(Au,{"data-slot":"select-content",className:Vk("relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-xl border bg-background-white text-text-dark shadow-md","border-border-medium","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","popper"===r&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",e),position:r,align:n,...a,children:[(0,rd.jsx)(Wq,{}),(0,rd.jsx)(Ay,{className:Vk("p-1","popper"===r&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"),children:t}),(0,rd.jsx)(WK,{})]})})}function WW({className:e,children:t,...r}){return(0,rd.jsxs)(AB,{"data-slot":"select-item",className:Vk("relative flex w-full cursor-pointer select-none items-center gap-2 rounded-md py-2.5 pr-8 pl-3 outline-hidden","typo-base-16 text-text-sub","focus:bg-background-base focus:text-text-dark","data-[disabled]:pointer-events-none data-[disabled]:opacity-50","[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*=size-])]:size-6 [&_svg:not([class*=text-])]:text-text-dark","*:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",e),...r,children:[(0,rd.jsx)("span",{"data-slot":"select-item-indicator",className:"absolute right-2 flex size-6 items-center justify-center",children:(0,rd.jsx)(AD,{children:(0,rd.jsx)(Vj,{className:"size-5"})})}),(0,rd.jsx)(AT,{children:t})]})}function Wq({className:e,...t}){return(0,rd.jsx)(AP,{"data-slot":"select-scroll-up-button",className:Vk("flex cursor-default items-center justify-center py-1",e),...t,children:(0,rd.jsx)(c9,{className:"size-4"})})}function WK({className:e,...t}){return(0,rd.jsx)(AN,{"data-slot":"select-scroll-down-button",className:Vk("flex cursor-default items-center justify-center py-1",e),...t,children:(0,rd.jsx)(c5,{className:"size-4"})})}var WY=JSON.parse('{"version":1,"image":{"width":1152,"height":768,"fileName":"bathroom.jpg"},"camera":{"fovYDeg":46.95,"fx":884.1691,"fy":589.446,"cx":255.9992,"cy":256.0003,"net":512,"frame":"+X right, +Y down, +Z forward; meters; OpenCV"},"planes":[{"id":1,"kind":"floor","polygon3D":[[-4.9139,1.1239,0.1328],[1.7293,1.1239,-1.9012],[4.8937,0.9661,8.4344],[-1.7494,0.9661,10.4683]],"polygon2D":[[-73044.5,7868],[69379.5,20259],[1730.3,485.3],[243.5,465.6]],"pixelCount":64473},{"id":2,"kind":"wall","polygon3D":[[-1.8438,5.8702,6.4128],[-0.1895,5.8702,7.1854],[-0.1834,-6.7435,7.1724],[-1.8377,-6.7435,6.3998]],"polygon2D":[[4,1193.4],[523.5,1106.3],[525.1,-447.3],[4.7,-547.7]],"pixelCount":46912},{"id":3,"kind":"wall","polygon3D":[[-0.3441,3.5388,7.4548],[1.1166,3.5388,3.9579],[1.1131,-4.5581,3.9565],[-0.3475,-4.5581,7.4534]],"polygon2D":[[484.2,803.7],[1137.2,1174.5],[1135.7,-634.6],[483.2,-156.7]],"pixelCount":18435},{"id":4,"kind":"wall","polygon3D":[[-2.9664,8.8209,12.276],[0.4037,8.8209,2.9966],[-0.5173,-6.6906,2.6621],[-3.8874,-6.6906,11.9415]],"polygon2D":[[95.3,1019.3],[844,2986.7],[189.4,-1838.2],[-71.6,-111.4]],"pixelCount":303}],"planeIds":{"width":512,"height":512,"dataPng":"data:image/png;base64,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"},"shading":{"width":128,"height":128,"neutral":128,"dataPng":"data:image/png;base64,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"}}'),WJ=JSON.parse('{"version":1,"image":{"width":1248,"height":832,"fileName":"bedroom.jpg"},"camera":{"fovYDeg":46.84,"fx":886.546,"fy":591.0306,"cx":256.0001,"cy":255.9998,"net":512,"frame":"+X right, +Y down, +Z forward; meters; OpenCV"},"planes":[{"id":1,"kind":"floor","polygon3D":[[-4.0513,1.1899,-1.3067],[2.5725,1.1899,-2.0753],[3.87,0.1831,9.1068],[-2.7538,0.1831,9.8754]],"polygon2D":[[-174467.9,23273.1],[111806.3,23273.1],[1542.3,435.3],[21.4,433.8]],"pixelCount":101427},{"id":2,"kind":"wall","polygon3D":[[0.2754,3.5068,7.4975],[1.8879,3.5068,6.156],[1.4729,-6.0368,5.6572],[-0.1396,-6.0368,6.9987]],"polygon2D":[[703.4,865.2],[1286.7,963.1],[1186.6,-608.9],[580.9,-412.4]],"pixelCount":45487},{"id":3,"kind":"wall","polygon3D":[[-1.6906,3.9065,5.5869],[-0.1653,3.9065,7.3877],[0.198,-6.2752,7.08],[-1.3272,-6.2752,5.2792]],"polygon2D":[[-29.9,1087.5],[575.6,923.9],[684.4,-435.3],[80.7,-725.6]],"pixelCount":24698}],"planeIds":{"width":512,"height":512,"dataPng":"data:image/png;base64,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"},"shading":{"width":128,"height":128,"neutral":128,"dataPng":"data:image/png;base64,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"}}'),WX=JSON.parse('{"version":1,"image":{"width":1248,"height":832,"fileName":"entryway.jpg"},"camera":{"fovYDeg":46.86,"fx":886.1516,"fy":590.7677,"cx":255.9999,"cy":255.9997,"net":512,"frame":"+X right, +Y down, +Z forward; meters; OpenCV"},"planes":[{"id":1,"kind":"floor","polygon3D":[[-8.6435,1.1708,2.4254],[1.2106,1.1708,-3.7261],[8.3191,0.9709,7.661],[-1.535,0.9709,13.8125]],"polygon2D":[[-7073.7,879.4],[52923.7,22895.4],[2969.5,537.7],[384,483.5]],"pixelCount":69575},{"id":2,"kind":"wall","polygon3D":[[-0.9123,3.856,3.1077],[-0.7274,3.856,6.2012],[-0.6851,-4.4714,6.1987],[-0.8699,-4.4714,3.1052]],"polygon2D":[[-10.1,1607.1],[370.6,1012.9],[385.3,-276.5],[18.9,-966.4]],"pixelCount":47763},{"id":3,"kind":"wall","polygon3D":[[-0.888,4.3857,6.582],[1.1141,4.3857,6.5081],[1.1088,-5.5794,6.3649],[-0.8933,-5.5794,6.4388]],"polygon2D":[[332.6,1055.7],[993.8,1062.9],[1000.3,-425.5],[324.3,-415.9]],"pixelCount":41609},{"id":4,"kind":"wall","polygon3D":[[1.2093,4.5168,6.7312],[1.1406,4.5168,3.9536],[1.1241,-5.6604,3.954],[1.1929,-5.6604,6.7316]],"polygon2D":[[1012.1,1060.2],[1247.1,1512.8],[1238.1,-958.3],[1006.8,-391.2]],"pixelCount":34711},{"id":5,"kind":"wall","polygon3D":[[-0.9999,3.3374,7.7388],[0.4764,3.3374,7.6913],[0.4746,-4.56,7.6329],[-1.0018,-4.56,7.6804]],"polygon2D":[[344.9,830],[757.8,832.6],[758.3,-157.5],[342.3,-154]],"pixelCount":5560}],"planeIds":{"width":512,"height":512,"dataPng":"data:image/png;base64,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"},"shading":{"width":128,"height":128,"neutral":128,"dataPng":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAIAAABMXPacAAAACXBIWXMAAAPoAAAD6AG1e1JrAAAgAElEQVR42t2dabdsVXWG628ZHSMOjckIQ6MkRlDEFsVegyIYEAIqKii9NEJCK52A9CJEWmlCJ9IoCILNH8lz93PrZZ659t7nXO6HDDM/1KhTp2rXrvmu2c811+aCCy648MILfYQuuuiiiy+++MeFLrnkkv+c6L8muuyyy6644oorr7zyqquuuvrqq3/yk59cc801d9xxx913333XXXf99wL9x18/nXfeeeeee+75558vry7a0sUThVeQzy/YST+a6PwtnTcRF9zkHbMAcLlLL700AMD9yy+/fATgxhtv/PlE991337333vv/D4DKshUM5D6PFwxUAcil9gHQlv8SAFn+DQC4f+2111533XW33XbbPffcAwb3TvT/CQD5tSsG4f6FW1rh/rwEzMpUAAj3oasmcvnD/euvv/6GG25AEd15551gABINg79e7p911lnnnHPOrhhE81y4kyoAYpAr7ACgSUAESgCgBgASUJc/3P/pT3/6s5/97NZbb7399tubHNx///2/+tWv/k/Y95NV4iewjK7c0hVbunyiyyaCFUsYwFBZF4URTi5hsCgBjfsNgEiArK/6J8sfMwAAt9xyC6b4gQce+OWW5P7DDz/80EMPHTxDf7pKN0zE/Vy3JdbHQQLADx8xkGAfrIu2CMfl5LoWWpSA0QDsBQB+PACw/PGF4D5Mh/UYZJ6H+w8++CB/HijH79hJfMUBAbCOwR4B4OfDmREDGArTXK8xpRcVqkIw6wJ1CRgd0FkANABRQQHggS258Efu83iQAKxjMAvACgZ7BwAmjBjAt/B65H6TgwbAuVvatE/Ocl8A4v9cPVG1wPz4m266iSUPr+G+vB65z/NHHnnkIAHAxqDoljC4fqIRAG71IAEYMYjmUBSqDp8FYN4NrTDOml8BaA6oP6ABIJdl+hL3oQMyyLMA4PJib5YkwFtqAMxicKAAwJPYAy0wBCtXABCDmIH5OGDJAa0xsPqnAhAXKACgdlz469yXDhIAhODmm29u3PdR7jdTLAAVA+X4QAGAM7wiB2Ho6I+uA9A80V0AqAagOqANAF0gAMD9l9fw96GJ4D6PgNG4L0IHCQBCwJdW7jczEAzkfjAQhgAgzWIgDAahwiBb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"}}'),WZ=JSON.parse('{"version":1,"image":{"width":1152,"height":768,"fileName":"living-room.jpg"},"camera":{"fovYDeg":46.91,"fx":885.0345,"fy":590.023,"cx":255.9995,"cy":256.0006,"net":512,"frame":"+X right, +Y down, +Z forward; meters; OpenCV"},"planes":[{"id":1,"kind":"floor","polygon3D":[[-9.0471,1.1441,1.2581],[1.4149,1.1441,-4.3437],[8.6732,0.813,9.2121],[-1.7888,0.813,14.8138]],"polygon2D":[[-13743.9,1188.8],[56926.9,20635.4],[2450.8,462.1],[335.5,432.6]],"pixelCount":88236},{"id":2,"kind":"wall","polygon3D":[[-2.2646,3.6145,7.9916],[0.9936,3.6145,8.0919],[0.9975,-6.0145,7.964],[-2.2607,-6.0145,7.8638]],"polygon2D":[[11.7,784.3],[820.5,779.3],[825.4,-284.4],[3.5,-292.9]],"pixelCount":48816},{"id":3,"kind":"wall","polygon3D":[[-1.6686,3.4823,6.2591],[1.6181,3.4823,6.3756],[1.6324,-5.6636,5.9733],[-1.6544,-5.6636,5.8569]],"polygon2D":[[45.1,876.4],[1081.4,867.4],[1120.2,-455.1],[13.5,-471.8]],"pixelCount":28145},{"id":4,"kind":"wall","polygon3D":[[1.2612,4.5356,9.3158],[1.5173,4.5356,5.2171],[1.4349,-6.4437,5.2119],[1.1788,-6.4437,9.3107]],"polygon2D":[[845.6,814.9],[1155.1,1153.4],[1124.2,-710.2],[828.1,-228.5]],"pixelCount":20909}],"planeIds":{"width":512,"height":512,"dataPng":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AAAIKElEQVR42u3dwZKqMBCG0W7L93/luHGppSUIJP85+zszxZX0Z4Ciq2oUABDl5hAAgAAAAAQAACAAAAABAAAIAABAAAAAAgAAEAAAgAAAAAQAACAAAAABAAAIAABAAAAAAgAAEAAAgAAAAAEAAAgAAEAAAAACAAAQAACAAAAABAAAIAAAAAEAAAgAAEAAAAACAAAQAACAAAAABAAAIAAAAAEAAAIAABAAAIAAAAAEAAAgAAAAAQAACAAAQAAAAAIAABAAAIAAAAAEAAAgAAAAAQAACAAAQAAAAAIAAAQAACAAAAABAAAIAABAAAAAAgAAEAAAgAAAAAQAACAAAAABAAAIAABAAAAAAgAAEAAAgAAAAAQAAAgAAEAAAAACAAAQAACAAAAABAAAIAAAAAEAAAgAAEAAAAACAAAQAACAAAAABAAAIAAAAAEAAAgAABAADgEACAAAQAAAAAIAABAAAIAAAAAEAAAgAAAAAQAACAAAQAAAAAIAABAAAIAAAAAEAAAgAAAAAQAACAAAEAAAgAAAAAQAACAAAAABAAAIAABAAAAAAgAAEAAAgAAAAAQAACAAAAABAAAIAABAAAAAAgAAEAAAIAAAAAEAAAgAAEAAAAACAAAQAACAAAAABAAAIAAAAAEAAAgAAEAAAAACAAAQAACAAAAABAAAIAAAQAAAAAIAABAAAIAAAAAEAAAgAAAAAQAACAAAQAAAAAIAABAAAIAAAAAEAAAgAAAAAQAACAAAQAAAgAAAAAQAACAAAAABAAAIAABAAAAAAgAAEAAAgAAAAAQAACAAAAABAAAIAABAAAAAAgAAEAAAgAAAAAHgEACAAAAABAAAIAAAAAEAAAgAAEAAAAACAAAQAACAAAAABAAAIAAAAAEAAAgAAEAAAAACAAAQAACAAAAAAQAACAAAQAAAAAIAABAAAIAAAAAEAAAgAAAAAQAACAAAQAAAAAIAABAAAIAAAAAEAAAgAAAAAQAAAgAAEAAAgAAAAAQAACAAAAABAAAIAABAAAAAAgAAEAAAgAAAAAQAACAAAAABAAAIAABAAAAAAgAABAAAIAAAAAEAAAgAAEAAAAACAAAQAACAAAAABAAAIAAAAAEAAAgAAEAAAAACAAAQAACAAAAABAAACAAAQAAAAAIAABAAAIAAAAAEAAAgAAAAAQAACAAAQAAAAAIAABAAAIAAAAAEAAAgAAAAAQAACAAAEAAOAQAIAABAAAAAAgAAEAAAgAAAAAQAACAAAAABAAAIAABAAAAAAgAAEAAAgAAAAAQAACAAAAABAAAIAAAQAACAAAAABAAAIAAAAAEAAAgAAEAAAAACAAAQAACAAAAABAAAIAAAAAEAAAgAAEAAAAACAAAQAAAgAAAAAQAACAAAQAAAAAIAABAAAIAAAAAEAAAgAAAAAQAACAAAQAAAAHu49w4/ZPzwb/qE3wkAPANgjx/SjiMQ6Eprny9FnBIAAFwnRsQA5R4AgMwYsDOLAACwKwACACBpuIoABAAAIAAAQAAAUC5XIAAAEAEIAAA8JogAAEAIIAAAbKcLAQQAAEIAAQCAHQ7Ky4BglcXNC1dIOE98zgUAGP4ffpaF0rdXIUC5BAAGA7g/AAEAhj8IAQQAGP4w9/B2XgkAAAQFAgB8+wchgAAAwx+EAOUxwJ0/aB5LYdXhn7SIDue6RwexAwCGJ9gRQACA4Q/OSwQAWGTAbgACAAx/EAKUdwFg+Pub/f/hRkHsAGB4AHYEEAAY/oDzGQGAxQKwGyAAwPAHhEC5CRAMf+BS57ubBe0AYDEA7AogADD8ASGAAMDwB4QAAgDDH7BGUG4CxIkN5K4fbiQUABj+gHUlPghcAsDwB9xHIADA8AeEgAAAwx8QAgIADH9ACAgAMPwBISAAwPAHrFMCAAx/wG6AAADDHxACAgDDH8A6JgBw0gBYzwQAThaACdaW9i4AMPwFjmMLdgDA4g1Y4+wA4MQAWHmt6QnfMmgHAMMfIHDtEwAY/gCBXALA8Ac4YB0cAgDDHyB7fRwuAWD4AyAAMPwBrJnH/A09zxMLbw2fJcMfYEHjxVo77ABg+ANkrLH9hzcSCgAMf4AJ19qtISAAAGDyQOjUewBq4/0AvskCkDYDlwsAABAC5RIAAJTLAgIAAISAAACAyBAQAAAQ+EihlwEBQGAE2AEAgPIyIABAAAAAAgAAEAAAgAAAAAQAACAAAAABAAAIAABAAAAAAgAAEAAAgAAAAAQAACAAAAABAAAIAAAQAACAAAAABAAAIAAAAAEAAAgAAEAAAAACAAAQAACAAAAABAAAIAAAAAEAAAgAAEAAAAACAAAQAAAgAAAAAQAACAAAQAAAAAIAABAAAIAAAAAEAAAgAAAAAQAACAAAQAAAAAIAABAAAIAAAAAEAAAgAABAAAAAAgAAEAAAgAAAAAQAACAAAAABAAAIAABAAAAAAgAAEAAAgAAAAAQAACAAAAABAAAIAABAAACAAAAABAAAIAAAAAEAAAgAAEAAAAACAAAQAACAAAAABAAAIAAAAAEAAAgAAEAAAAACAAAQAACAAAAAAeAQAIAAAAAEAAAgAAAAAQAACAAAQAAAAAIAABAAAIAAAAAEAAAgAAAAAQAACAAAQAAAAAIAABAAAIAAAAABAAAIAABAAAAAAgAAEAAAgAAAAAQAACAAAAABAAAIAABAAAAAAgAAEAAAgAAAAAQAACAAAAABAAACAAAQAACAAAAABAAAIAAAAAEAAAgAAEAAAAACAAAQAACAAAAABAAAIAAAAAEAAHznAZi8IaXCQtfyAAAAAElFTkSuQmCC"},"shading":{"width":128,"height":128,"neutral":128,"dataPng":"data:image/png;base64,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"}}'),W$=JSON.parse('{"version":1,"image":{"width":2000,"height":1300,"fileName":"room-example-11.jpg"},"camera":{"fovYDeg":46.86,"fx":908.9087,"fy":590.7906,"cx":255.9987,"cy":256.0001,"net":512,"frame":"+X right, +Y down, +Z forward; meters; OpenCV"},"planes":[{"id":1,"kind":"floor","polygon3D":[[1.2985,1.1722,5.5054],[-1.6272,1.1722,4.846],[-0.6999,0.9798,0.7309],[2.2259,0.9798,1.3902]],"polygon2D":[[1837.4,969.4],[-192.2,1012.9],[-2399.9,2660.9],[6684.7,1707.2]],"pixelCount":21724},{"id":2,"kind":"wall","polygon3D":[[-0.9505,3.4707,3.555],[0.6996,3.4707,4.0983],[0.6109,-4.2935,4.3676],[-1.0392,-4.2935,3.8243]],"polygon2D":[[50.7,2114.5],[1606,1920.3],[1496.6,-824.6],[35.2,-1034.1]],"pixelCount":135151},{"id":3,"kind":"wall","polygon3D":[[0.7451,2.7204,4.5579],[1.0313,2.7204,3.7229],[1.0502,-4.07,3.7293],[0.7639,-4.07,4.5644]],"polygon2D":[[1580.4,1545.3],[1983.6,1746.1],[1999.8,-987.1],[1594.2,-687.6]],"pixelCount":28490}],"planeIds":{"width":512,"height":512,"dataPng":"data:image/png;base64,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"},"shading":{"width":128,"height":128,"neutral":128,"dataPng":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAIAAABMXPacAAAACXBIWXMAAAPoAAAD6AG1e1JrAAAgAElEQVR42t2dabM9RZGHzyfypREy4zgG4QjMDG6gosiqCLigICKiCAjI5gIygLgMoDOy7/u+KbKKiriGn2We0w83yZtVXafv/UPMhXxxok+f7j7dv19VZlZWVvbqmmuuufbaa6+77rqfT/KLSf5nkv/tyS9/+cvY9rBfLJBy2M+3Szmm+2v+ybu9rpFrG/Hp+PzvLfnZz37mJ/LTLfnJT37y4x//+Oqrr/7Rj3501VVXXXnllf81yeWXX/7DH/7w0ksv/f73v/+9733v4osvZuPcc889/fTTL7vsMg7m4jfccAN3fv3113vwD37wA5C57777br/99htvvPHWW2/ltvmJywLdo48++tBDD91zzz0cc/fdd/N11aIvFgX0VoKAJTSUYwq+3esU6Ls0KOVrMBEb12xJpiFEAuQATK+c5IorrpADMAVrYIWA7373u2x/61vfOuusszjGc/0JoPnkdO7klltu4Sv/zjG33XYbN8z+u+6668knn3zggQdghcvy07333vvYY4+t4hkKWGP0uxxk+NqvLYLl4IVctv2gJaDbMwoHmYboBPYA5IpJ7ASATicAaPvBOeecQyfgGM769re/fcEFF3znO9+5+eabAQTcQZ/9/BGfdKk77riDJn/nnXfS3vnkdK5DT+ITAp544olVbv4BQYGe/uWnGwMCxjLoHHOH+bU99+czMiCg2xWkIRRREBD9QMUiBxAA4pdccomqhuPPOOMM0L/oooto6WDNfXI1DuYvuEn+kYZPq/feQO/CCy/kYAi4//77af6csormP4e+0KPprk8SBGRjsJCDwdd8qS43c1wu56NYiMwBgGoGwhJEJwhLcN555wEiKgjc+fX888/nmqh7LgUsXAT0ORh8UTU0eZ6IA/gLegC9hF/B7YlJOABUV8XwikLgrhT0cz/ocuDXLjFzO3fH5UYOBgqq0CAHxRSHJVAR0eoBl1aPFoIGDgABTuS2uQi3xHW44COPPHL3JNwVV/DiDz/8MHw8/fTTbHD8r371K87lpzUBBbXc8EU/ZEBAxq71nQZu1RIC8mEDhdb6Tgs7hHoJmLI7FFooFNGlk3z961/nE4Y4kgM4mJvhdLQQoPN500030dhp4OznAHil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"}}'),W0=JSON.parse('{"version":1,"image":{"width":2000,"height":1300,"fileName":"room-example-12.jpg"},"camera":{"fovYDeg":46.91,"fx":907.7026,"fy":590.0067,"cx":255.9981,"cy":256.0012,"net":512,"frame":"+X right, +Y down, +Z forward; meters; OpenCV"},"planes":[{"id":1,"kind":"floor","polygon3D":[[2.672,1.316,6.1305],[-2.0106,1.316,6.4245],[-2.3631,0.9879,0.8107],[2.3196,0.9879,0.5167]],"polygon2D":[[2545.4,971.6],[-109.7,956.9],[-9335.6,2475.7],[16917.9,3514.4]],"pixelCount":38744},{"id":2,"kind":"wall","polygon3D":[[-1.3052,3.3024,4.7978],[0.8197,3.3024,5.4447],[0.7214,-5.1365,5.7676],[-1.4035,-5.1365,5.1207]],"polygon2D":[[35.4,1681.1],[1533.8,1558.6],[1443.5,-684.1],[28.2,-852.7]],"pixelCount":115187},{"id":3,"kind":"wall","polygon3D":[[0.8416,-1.0331,5.8907],[1.269,-1.0331,4.6406],[1.3241,-2.633,4.6594],[0.8967,-2.633,5.9096]],"polygon2D":[[1506.6,387.3],[1969.6,316.5],[2007.6,-196.6],[1538,-17.5]],"pixelCount":6152},{"id":4,"kind":"wall","polygon3D":[[0.6327,2.4819,4.523],[1.048,2.4819,4.4645],[1.0956,-4.2751,4.8023],[0.6803,-4.2751,4.8608]],"polygon2D":[[1496,1472],[1832.3,1482.8],[1808.9,-683.6],[1496.2,-667.6]],"pixelCount":1290}],"planeIds":{"width":512,"height":512,"dataPng":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAIAAAB7GkOtAAAOwklEQVR4nO3d23LiyBYEUKOY//9kfKLbZwgPYAxCUu1dudbDxER325YNyqwb+OMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaO20LMvdvzifz4dfDAAFCuAx9QAQWgCPqQeA0AL4qRK+vpZ6AAgqgCfpBoDQAnhMPQCEFsBj6gEgtAAeUw8AoQXwmHoAAimA36kHYEoK4F3qAWhKAexLPQBlKYCR1AMwkAKoSz0Au1IAXakH4E0KYE7qAfiVAkikHgAFwB3qAUIoAF6jHmAaCoAtqQdoRAFwHPUApSgAqlAPcDAFQA/qATanAJiBeoAVFACT0w3wEwVANPVAMgUAP1IPzE0BwErqge4UAOxCPVCfAoAB1AMVKAAoRz1wDAUAzagHtqIAYCrqgecpAAiiHvhOAQD/px7SKADgKephPgoA2IB66EgBALtTDzUpAGAAlVCB9AcIpQAAQikAgFAKACCUAgAIpQAAQikAgFAKACCUAgAIpQAAQikAgFAKACCUAgAIpQAAQikAgFAKACCUAgAIpQAAQikAgFAKACCUAgAIpQAAQikAgFAKACCUAgAIpQAAQikAgFAKACCUAgAIpQAAQikAgFAKACCUAgAIpQAAQikAgFAKACCUAgAIpQAAQikAgFAKACCUAgCOdj6fR18CfygAgFAKACCUAgAIpQAAQikAgFAKACCUAgAIpQAAQikAgFAKACCUAgAIpQAAQikAgFAKACCUAgAIpQAAQikAgFAKACCUAgAIpQAAQikAgFC1CuB8Po++BIAUhQpA+gOEFgAApQvAOB1gDotAB8idAdztgFHFsO7rnv/a4XIAZl8CKtUBr+pynQCl/NM6aqtdD0DLTeB2YXq54GVZLv8F4En/Cc2BHfDql77699If4FUv5GadKcLVldS5MIDGBfAVppdIla0AQTOAnUL/66Tm+5+89YElgDoOWjp/KaAf/GNBD7CVAXunz4S4YT5AmwLYPJ2/f0Iv9AUY8EKw5wfs5/N5j+OYoh+g8RLQVTE8menPD/y9DgDgVS/n5m3UGqEDdLTvwNnaPcC0BVAh363/AKxwRHTueqZT+gOssxyTtjtNFKQ/wGpvBeiGsS7KAQ62bJj46856rqYzAN6xPkN3els3ABrvAXwluxE6wDy/E7jOm7VpF4A3rYnR54P+15he1xnSH+B9S7vYLXIZAN0tvXZupT9AxWOg62y4oATA816IVKc2AWay+5h6w2G7BgLoVABSG6Cm08cUbA9AI8aFRcyQm9If4LhXAg8k7gE2IUwBQikAgFAKACDU0vT8gFMEAHEFIP0BcgsAgNwCcBgU4E1iFCDUPAVgYwAgtAAAmL8AbjcADP8BIgrgivQHiCgA538ANrF0z9PL8L/7NwJwsD+hKToBAvX7fQB3l/51GMCrmuXmJeht/AJkFcCTbwWqHgBmK4Cfwv3yh+e/Dr8ogH4a7wFcsSUA8JJlvsSc6XsB2M9sWSn9AZ4kLgFCLbMOw+0GA4zZBF6WZUj+Cn2AJ40fqu+nwkQEoKxpI1L6Azy1BDTNyoncB3jSVHEp/QGet+wx/D9+PvHn1xpIf4AKp4AO6wC5D7DOmMOaAAzXe/hs+A+wmgAFCKUAAEKdPiZiRQhasPVYxDy/EEb6Q/G4d5NWM8nj4YkF9WmCamZ4GDyZAFZoH53SHyqz3F9Z7/SU/tCIG7aaxo+HJxPAO2QoQCgFAOzFBkBxCgA4mmIoovELwc7n89c2wO2TyfYAlCX965jqrSC+SH8oGPSXG1MB1NF4BnAh8aEF0V+N6ASOIP0LUgAAodoXgPUfKOju0Qx3azW9N4E9n6B+Adzep5aDiugaoEYT0Jebt4hmp4A8bwC20ilPpT/MwRJQESIVOHQDgDraPDaeRgDb6pGq0h+mYf2njqV+Ckt/gD1Uz1bpD+24bbso/UIwTyOY4A3b7/7V4ZfDHXUTVvpDa27h+jxCAKGKFoCxA8Deiubs9yXC87+GXhHAbOq+F5DEB0icAdyyKASQMgMQ+gC7krAAoSrOAAz8AQ5QPWqvtoLtDAPMXABfKX85+ukMKEBKATwY6VsdAthKjzyV+wARm8AXch9gP3UTVvoD7KpoyEp/gL0tohYg05/01wEAgZavA5elOqDUxQDMqtYpINEPEPdL4UU/5PDa/iKW4UH8Zxta+gMcbhnbzKIfYJR381eCAzRl+QUgVJVTQJelJ4UEcIzTJXCH78uLfggxPG34shTJX+kPcLASsSv9AY63DA9i6Q/Q4IVg275oy0vAAAa6k7+/hvImqS36AcZahsS39AcYbjk+oKU/QAUD3vrt4K8IwF3LSzu031++sSLKpT9AHS8n8uoOkP4ApRxx4Ef6AxS0HHDgR/oDFPRUNF8l+OM3cpL4AC08m9TPZPr36P/6H00AEPcbwbzdK0Bxa47x3A19g32AXrziFyDUskemW/8BqM8gHSCUAgAItVcB2AAAKE5MA4RaUwCP93jtAAO0sMtbOlv/AahPUgOE+mf0BQAD3C7VmrgH2rgAzuezpxHsaqdttmc+rbt7MmYAsKW5D0H89N0phqACePBgex4wpbljffOfjxyYfAZwu9Tz9QzwwNM6QL8/gbtcc0E2GIKWgJZlcaukmfURn/X7Gs4AsSZ7APOnlfdwpQjPsXkK4HYVSL3XvBMuX+vuA+SehFhzzgCE2l1+LMAGBfB93b9IrBS5DICIGUCFzK1wDQAdbbZqP2QDQPoDrLY+tcdu+Z7/GngBAN21PLcj+gFCCwCAxAIw/AcYXACCGCDxdwLfpr8+AOjl9NJhnm3ffGYFNQOwlV2SWkwD1NdvExiATSgAgFAKACDU9jvAALRgBgAQqlMBmIIAbKjNgX3pD5D1KyHlPsBOOi0BAbAhBQAQascCsHoDUJkZAECopfhwfuxvHgaY2L7xahUIoHcBDMxxFQKwk90XWCQ4QE2/F4AEB5jSEVusKgSgXwHIboBZHXTIUpEAdCoAqQ0wseNeZqVOAHoUgLwGmJs3WgAItRw5/H/105qFAOzHDAAglAIACHWnACy8ACQ4egagXQCKsAQEEEoBAIS6LgBLNAAhzAAAQikAgFADCsAqE0AFZgAAoRQAQCgFABBKAQCEUgAAof5TAM7nAOQwAwAIVbcATEcAQgtgWepeG8AEhCxAKAUAEEoBAIQqXQC2AQD2I2EBQlUvAJMAgJ2IV4BQDQrAJABgD7IVIJQCAAilAABCKQCAUAoAIFSPAnAQCGBzghUglAIACKUAAEIpAIBQCgAgVI8C8AviATb3z0dtoh/giBlAqeP2579GXwXAtMrNAIQ+QFYByH2AiAIQ9wDDFVr0B+BICgAglAIACHVdAKVOggKwH3EPEEoBAIRSAAChFABAKAUAEEoBAIRSAAChrt8LyLv0AFFOp9PtH35+fn6kzQCkP8DH31a4WwyTOV1e/Sv9gUCnJ4J+1gnB/BUH8MDplZH+ZE2gAEh3df9Pdofzq9PrSz3TPEmcAiLd579u/yphFZjkHYIZvgfYxONbeppBH1dO20V5uyeJGQC1RlUXd//BiOt66quvuOBpRpGtnTZ9CNo9oM0ul77W3RsHDKlOp9Plq6y+yK8PvLrau3949beXz7Di61I/sj9rP7JmAGzjpyHwgxF9wZtn3Vd88N09+QnbjRx5UvFHtvTF0fp0xPtP/eML4M1rvp0BPDP8f/xJmCCOP6s+pgqAj50iu2MBvHnZL12wDkgbd3/We1iv3wuIadS8B970YEz96wdeFuuPPPF5+bR3twcef1TBvKim15P8VO8VJ51+fNS/GXadAfwUpo/d/ajvCbvfKcAHN/zzX7RCTBRU4dn+vuEPrhlAe3PcCXdtO1q//agWPzqzgYmdRp8EcwqINlqH4JsX36Kr3nd1ZuydI2TtnEZ8p2YAvd+LPOTeuD1xX9/m1znrVOBrnnf14+ryKG9u3Trnagqgt0aBuJXAb3mTbfD9rN7P+D7S3+G6ejsd0vcKoJxqtzfVHDYV2GMSs+5F1wVrb45NAgXQ+yH/PmHMGUZtfnrnAJtH2LY1cMwP852rje2AXYtfAcxwcPjrzzvG4jv3f+vO2+rif10yLvgjWn1JBb+X7psECqCxpucaYztg1zFsi7lg2QuLnRB4PLq+307Ne2nbF4J9/4QthrrPfPub/4jgY20TmAEMtmK8JjXuevMtnQ8z62lOOi4NKYBCKk/eh3vwNj63//KlzzzkZ+6BpkITKIBChMJjO42aH3xajwh9PTPXVADUNXydZPgFwK7HyhUA5YhdOGZOoAAGs8gg8WFU5iiAwZI3fuU+jKUA6Bf6277CAGIpAHa3YdRuOFt68424YQIKgKzc3+8LKQ/aUQDU1Wt3xNtV0o4CGKxXxu2t+09DB9CLAmC87rkPTSkAxhD6MJwC4FByH+pQAOxL4kNZCoC9iH4obhl9AQCMoQAAQimAkSySAAMpAIBQCgAglAIACKUAhrEBAIylAABCKQCAUApgDOs/wHAKACCUAmAXpjhQnwIYQDgCFSgAgFAK4GiG/0ARCgC2p+ZpwS+EOZRcmJ6HmEbMAI4jGoBSFMBBpD9QjQIACKUAjmD4DxSkAHYn/YGaFMC+MtM/87uGdhTAjuQgUJmE2ov0B4ozA9iF9AfqUwDbk/5ACwpgY9If6EJabUb0A72YAWxD+gPtLJLrTae/Rl8FwKoZgPxaR/QDrf0nwj4/P4deTA9CH5iDPYDXSH9gGteLGCYBd8l9YP4ZgKS7YqEfmNWP6ZY8FZD4QIJfhrdpNSD6gRzPrm/M1wSyHgj32gL3BDUg9wG+rN/hrFwGUh7gVxsccanTBHIf4HnHnXF8pyckO8DmHHIHCOWtIABCKQCAUAoAIJQCAAilAABCKQCAUAoAIJQCAAilAABCKQCAUAoAIJQCAAilAABCKQCAUAoAIJQCAAilAABCKQCAUAoAIJQCAAilAABCKQCAUAoA4CPT/wCVd6s7KHQKbAAAAABJRU5ErkJggg=="},"shading":{"width":128,"height":128,"neutral":128,"dataPng":"data:image/png;base64,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"}}'),W1=JSON.parse('{"version":1,"image":{"width":2000,"height":1300,"fileName":"room-example-13.jpg"},"camera":{"fovYDeg":46.89,"fx":908.1038,"fy":590.2675,"cx":255.9987,"cy":256.0003,"net":512,"frame":"+X right, +Y down, +Z forward; meters; OpenCV"},"planes":[{"id":1,"kind":"floor","polygon3D":[[3.2792,1.3056,9.6119],[-2.7571,1.3056,10.1592],[-3.8115,0.6999,-1.4706],[2.2248,0.6999,-2.0179]],"polygon2D":[[2210.2,853.6],[37.3,842.6],[-269409.8,21629.6],[158842.3,21629.6]],"pixelCount":31534},{"id":2,"kind":"wall","polygon3D":[[-0.5743,3.32,3.4235],[0.7368,3.32,2.7668],[0.8568,-3.7711,3.0063],[-0.4542,-3.7711,3.6631]],"polygon2D":[[405,2103.4],[1944.7,2448.4],[2011,-1230],[560.1,-892.9]],"pixelCount":125424},{"id":3,"kind":"wall","polygon3D":[[-1.3321,-1.8048,5.0373],[-0.8869,-1.8048,5.8802],[-0.903,-2.8694,5.8887],[-1.3482,-2.8694,5.0458]],"polygon2D":[[61.9,113],[465,190],[456.1,-80.3],[52.2,-202.3]],"pixelCount":1336}],"planeIds":{"width":512,"height":512,"dataPng":"data:image/png;base64,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"},"shading":{"width":128,"height":128,"neutral":128,"dataPng":"data:image/png;base64,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"}}'),W2=JSON.parse('{"version":1,"image":{"width":2000,"height":1300,"fileName":"room-example-14.jpg"},"camera":{"fovYDeg":46.85,"fx":909.0403,"fy":590.8762,"cx":255.9978,"cy":256.0005,"net":512,"frame":"+X right, +Y down, +Z forward; meters; OpenCV"},"planes":[{"id":1,"kind":"floor","polygon3D":[[-2.94,1.12,1.7007],[2.0573,1.12,0.6517],[2.9124,1.076,4.7249],[-2.085,1.076,5.7739]],"polygon2D":[[-5138.6,1638],[12210.4,3228.5],[3188.8,991.7],[-282.3,929.6]],"pixelCount":39164},{"id":2,"kind":"wall","polygon3D":[[-1.149,3.2799,4.3039],[0.9715,3.2799,4.4413],[0.9888,-4.3113,4.174],[-1.1317,-4.3113,4.0366]],"polygon2D":[[52,1793.3],[1776.7,1758],[1841.2,-899.6],[4.5,-952.3]],"pixelCount":124984},{"id":3,"kind":"wall","polygon3D":[[1.0927,4.0707,4.5124],[1.1069,4.0707,3.8596],[1.0596,-4.7237,3.8586],[1.0454,-4.7237,4.5114]],"polygon2D":[[1859.9,2003.4],[2018.4,2232.3],[1975.1,-1186.6],[1822.8,-920.9]],"pixelCount":12478},{"id":4,"kind":"wall","polygon3D":[[-0.9813,6.4779,3.8224],[-0.9379,6.4779,8.338],[-1.1517,-5.9419,8.3401],[-1.1951,-5.9419,3.8244]],"polygon2D":[[88.4,3192.5],[600.6,1815.6],[509.6,-418.9],[-109.7,-1680.9]],"pixelCount":1820}],"planeIds":{"width":512,"height":512,"dataPng":"data:image/png;base64,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"},"shading":{"width":128,"height":128,"neutral":128,"dataPng":"data:image/png;base64,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"}}'),W3=JSON.parse('{"version":1,"image":{"width":2000,"height":1300,"fileName":"room-example-15.jpg"},"camera":{"fovYDeg":46.78,"fx":910.4678,"fy":591.8041,"cx":256.0003,"cy":256.0005,"net":512,"frame":"+X right, +Y down, +Z forward; meters; OpenCV"},"planes":[{"id":1,"kind":"floor","polygon3D":[[-3.567,1.4458,5.8989],[-2.171,1.4458,0.6437],[3.5896,1.349,2.174],[2.1936,1.349,7.4292]],"polygon2D":[[-1150.6,1018.3],[-10994.8,4024.9],[6872.4,1582.4],[2050.1,922.8]],"pixelCount":29996},{"id":2,"kind":"wall","polygon3D":[[-1.0442,4.4985,3.8051],[0.3624,4.4985,4.7905],[0.3446,-4.8826,4.816],[-1.062,-4.8826,3.8305]],"polygon2D":[[24,2426.5],[1269,2061],[1254.5,-873.4],[14,-1265.3]],"pixelCount":125241},{"id":3,"kind":"wall","polygon3D":[[0.5026,4.5778,5.3354],[1.2253,4.5778,4.2733],[1.123,-5.197,4.2037],[0.4002,-5.197,5.2657]],"polygon2D":[[1335,1939.3],[2019.8,2259.7],[1950.1,-1207.7],[1270.3,-833]],"pixelCount":63743},{"id":4,"kind":"wall","polygon3D":[[-0.7092,2.1349,4.0964],[0.4431,2.1349,2.7453],[0.4197,0.1215,2.7254],[-0.7326,0.1215,4.0764]],"polygon2D":[[384.3,1433.1],[1574,1818.5],[1547.7,717],[360.8,694.8]],"pixelCount":1277}],"planeIds":{"width":512,"height":512,"dataPng":"data:image/png;base64,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"},"shading":{"width":128,"height":128,"neutral":128,"dataPng":"data:image/png;base64,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"}}'),W4=JSON.parse('{"version":1,"image":{"width":2000,"height":1300,"fileName":"room.jpg"},"camera":{"fovYDeg":46.86,"fx":909.32,"fy":591.06,"cx":256,"cy":256,"net":512,"frame":"+X right, +Y down, +Z forward; meters; OpenCV"},"planes":[{"kind":"floor","polygon3D":[[1.2985,1.1722,5.5054],[-1.6272,1.1722,4.846],[-0.6999,0.9798,0.7309],[2.2259,0.9798,1.3902]],"polygon2D":[[1837.4,969.4],[-192.2,1012.9],[-2399.9,2660.9],[6684.7,1707.2]],"pixelCount":21724,"id":1},{"kind":"wall","polygon3D":[[-0.9505,3.4707,3.555],[0.6996,3.4707,4.0983],[0.6109,-4.2935,4.3676],[-1.0392,-4.2935,3.8243]],"polygon2D":[[50.7,2114.5],[1606,1920.3],[1496.6,-824.6],[35.2,-1034.1]],"pixelCount":135151,"id":2},{"kind":"wall","polygon3D":[[0.7451,2.7204,4.5579],[1.0313,2.7204,3.7229],[1.0502,-4.07,3.7293],[0.7639,-4.07,4.5644]],"polygon2D":[[1580.4,1545.3],[1983.6,1746.1],[1999.8,-987.1],[1594.2,-687.6]],"pixelCount":28490,"id":3}],"planeIds":{"width":512,"height":512,"dataPng":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAIAAAB7GkOtAAAACXBIWXMAAAPoAAAD6AG1e1JrAAAP1klEQVR42u3d627bOBCAUdl+/3feBQoEbWzLNEVKM5xzfi3abJvqMl+s63YHSOjBYZvNCBAAAQAQAAEAEAABABAAAQAQAAEAEAABABAAAQAQAAEAEAABABAAAQAQAAEAEAABABAAAQDQAAEAEAABABAAAQAQAAEABAABAAQAAQAEAAEABAABAAQAAQAEAAEABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAAAUAAAAFAAAABQAAAAUAAAAFAAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAEAAEABAABAAQAAQAEAAEABAABAAQAAQAEAABABAAAQAQAAEAEAABABAAAQAQAAEAEAABABAAAQAQAAEAEAABABAAAQAQAAEAEAABABAAAQAQAAEAEAABABAAAQAwAQXAEAAEABAABAAQAAQAEAAEABAABAAQAAEAEAABABAAAQAQAAEAEAABABAAAQAQAAEAEAABABAAAQAQAAEAEAABABAAAQAQAAEAEAABABAAAQAQAAEAEAABABAAAQAEAAEABAABAAQAAQAEAAEABAABAAQAAQAEAABABAAAQAQAAEAEAABABAAAQAQAAEAEAABABAAAQAQAAEAEAABABAAAQAQAAEAEAABABAAAQAQAAEAEAABABAAAQAEAAEABAABAAQAAQAEAAEABAABAAQAAQAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAABQAAAAUAAAAFAAAABQAAAAUAAAAFAAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAAXg9rJ8IACAA68/6lwQAEIBac18AAO51Zr0AAOQLwDaNAAACsPigFwCAiAHYriMAgACUG/0CAAiAAAgAIAACIACAAAiAAAACIAACAAiAAAgAIAAC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"},"shading":{"width":128,"height":128,"neutral":128,"dataPng":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAIAAABMXPacAAAACXBIWXMAAAPoAAAD6AG1e1JrAAAgAElEQVR42t2dabM9RZGHzyfypREy4zgG4QjMDG6gosiqCLigICKiCAjI5gIygLgMoDOy7/u+KbKKiriGn2We0w83yZtVXafv/UPMhXxxok+f7j7dv19VZlZWVvbqmmuuufbaa6+77rqfT/KLSf5nkv/tyS9/+cvY9rBfLJBy2M+3Szmm+2v+ybu9rpFrG/Hp+PzvLfnZz37mJ/LTLfnJT37y4x//+Oqrr/7Rj3501VVXXXnllf81yeWXX/7DH/7w0ksv/f73v/+9733v4osvZuPcc889/fTTL7vsMg7m4jfccAN3fv3113vwD37wA5C57777br/99htvvPHWW2/ltvmJywLdo48++tBDD91zzz0cc/fdd/N11aIvFgX0VoKAJTSUYwq+3esU6Ls0KOVrMBEb12xJpiFEAuQATK+c5IorrpADMAVrYIWA7373u2x/61vfOuusszjGc/0JoPnkdO7klltu4Sv/zjG33XYbN8z+u+6668knn3zggQdghcvy07333vvYY4+t4hkKWGP0uxxk+NqvLYLl4IVctv2gJaDbMwoHmYboBPYA5IpJ7ASATicAaPvBOeecQyfgGM769re/fcEFF3znO9+5+eabAQTcQZ/9/BGfdKk77riDJn/nnXfS3vnkdK5DT+ITAp544olVbv4BQYGe/uWnGwMCxjLoHHOH+bU99+czMiCg2xWkIRRREBD9QMUiBxAA4pdccomqhuPPOOMM0L/oooto6WDNfXI1DuYvuEn+kYZPq/feQO/CCy/kYAi4//77af6csormP4e+0KPprk8SBGRjsJCDwdd8qS43c1wu56NYiMwBgGoGwhJEJwhLcN555wEiKgjc+fX888/nmqh7LgUsXAT0ORh8UTU0eZ6IA/gLegC9hF/B7YlJOABUV8XwikLgrhT0cz/ocuDXLjFzO3fH5UYOBgqq0CAHxRSHJVAR0eoBl1aPFoIGDgABTuS2uQi3xHW44COPPHL3JNwVV/DiDz/8MHw8/fTTbHD8r371K87lpzUBBbXc8EU/ZEBAxq71nQZu1RIC8mEDhdb6Tgs7hHoJmLI7FFooFNGlk3z961/nE4Y4kgM4mJvhdLQQoPN500030dhp4OznAHil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"}}');let W9={arizo:{PRIVACY_URL:"https://arizo.ru/privacy-policy/",POSTER_URL:"https://viewer.arizo.ru/poster/app/index.html",ROOM_URL:"https://integrations.arizo.ru/room-viewer",TERMS_URL:"https://arizo.ru/terms-of-use/"},vizbl:{PRIVACY_URL:"https://vizbl.com/legal/privacy-policy",POSTER_URL:"https://viewer.vizbl.com/poster/app/index.html",ROOM_URL:"https://integrations.vizbl.com/room-viewer",TERMS_URL:"https://vizbl.com/legal/terms-of-use"}};function W5(e){return new URL(`public/room-example/${e}`,"https://cdn.neurodyn.ai/LG8wPakWNRI1O7ssxPuAcY61sOV3nsofvg4tHjAoumHFWIFoX9u0yeIk9K19I8_J55pBcLct6_ytKI9fCz4/").toString()}function W8(e={}){return{...W4,image:{...W4.image,...e}}}let W6=[{id:"room-example-11",name:"Room Example 11",image_url:W5("room-example-11.jpg"),scene:W$},{id:"room-example-12",name:"Room Example 12",image_url:W5("room-example-12.jpg"),scene:W0},{id:"room-example-13",name:"Room Example 13",image_url:W5("room-example-13.jpg"),scene:W1},{id:"room-example-14",name:"Room Example 14",image_url:W5("room-example-14.jpg"),scene:W2},{id:"room-example-15",name:"Room Example 15",image_url:W5("room-example-15.jpg"),scene:W3}],W7=[{id:"carpet-bathroom",name:"Bathroom",image_url:W5("bathroom.jpg"),scene:WY},{id:"carpet-bedroom",name:"Bedroom",image_url:W5("bedroom.jpg"),scene:WJ},{id:"carpet-entryway",name:"Entryway",image_url:W5("entryway.jpg"),scene:WX},{id:"carpet-living-room",name:"Living Room",image_url:W5("living-room.jpg"),scene:WZ}],qe="RcSd3KphTyq_JQEjNCqKQA,gu0109ftQmS-UQkwcW010Q,nOfGLIZcRVeU93wOkHWSbg,ozzH5I2kQMW20ao-33C86A,DBA4wR-zT92vjtuOk9varg".split(",").map(e=>e.trim()).filter(Boolean);function qt(e){return e.hid??""}function qr({includeViewedObject:e=!1}={}){var t;let{material:r,tinuuid:n,viewedObject:i,setMaterial:a,setTinuuid:s,apiKey:o,baseURL:l,source:c,widgetSession:u,setAccessError:d,setLoadError:h}=Wb(),p=r?qt(r):"",A=i?.owner?.uuid,{data:f,error:g,isFetchingNextPage:m,fetchNextPage:v,hasNextPage:b,isLoading:y}=s5({queryKey:["room-viewer","public-objects",{apiKey:(t={apiKey:o,baseURL:l,source:c}).apiKey??null,ownerUuid:A??null,source:t.source}],enabled:!!A,queryFn:({pageParam:e,signal:t})=>{if(!A)throw Error("Owner uuid is required.");return VM(A,e,{apiKey:o,baseURL:l,signal:t,source:c,widgetSession:u})},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},s9,void 0),w=(0,rc.useMemo)(()=>f?.pages.flatMap(e=>e.objs??[])??[],[f]),x=(0,rc.useMemo)(()=>{let t=w.filter(e=>!!(e.tinuuid&&e.materials?.[0]&&!(i?.uuid&&e.uuid===i.uuid||i?.tinuuid&&e.tinuuid===i.tinuuid)));return e?[...i?.tinuuid&&i.materials?.[0]?[i]:[],...t]:t},[w,e,i]),C=(0,rc.useMemo)(()=>x.flatMap(e=>e.tinuuid?e.materials?.map(t=>{let r=qt(t);return r&&e.tinuuid?{materialId:r,material:t,tinuuid:e.tinuuid}:null}).filter(e=>null!==e)??[]:[]),[x]),E=x.find(e=>e.tinuuid===n),S=x.find(e=>e.tinuuid&&e.materials?.[0]);return(0,rc.useEffect)(()=>{let e=GZ(g);e?d(e):g&&h("viewer-load-failed")},[g,d,h]),(0,rc.useEffect)(()=>{f&&0===x.length&&b&&!m&&v()},[f,v,b,m,x.length]),(0,rc.useEffect)(()=>{if(null!==r)return;let e=E??S,t=e?.materials?.[0];e&&t&&e.tinuuid&&(a(t),s(e.tinuuid))},[S,E,r,a,s]),{fetchNextMaterialsPage:(0,rc.useCallback)(()=>{!1===b||m||v()},[v,b,m]),hasNextPage:b,isFetchingNextPage:m,isLoading:y,materialItems:C,selectMaterial:(0,rc.useCallback)(e=>{let t=x.find(t=>t.materials?.some(t=>qt(t)===e)),r=t?.materials?.find(t=>qt(t)===e);return!!t&&!!r&&!!t.tinuuid&&(a(r),s(t.tinuuid),!0)},[x,a,s]),selectedMaterialId:p}}function qn({className:e,...t}){let{material:r,options:n,selectMaterial:i}=function(){let{material:e,setMaterial:t,setTinuuid:r,apiKey:n,baseURL:i,source:a,widgetSession:s}=Wb(),o=function({queries:e,...t},r){let n=rp(void 0),i=rc.useContext(sJ),a=rc.useContext(sX),s=rc.useMemo(()=>e.map(e=>{let t=n.defaultQueryOptions(e);return t._optimisticResults=i?"isRestoring":"optimistic",t}),[e,n,i]);s.forEach(e=>{s1(e),sZ(e,a)}),s$(a);let[o]=rc.useState(()=>new sY(n,s,t)),[l,c,u]=o.getOptimisticResult(s,t.combine),d=!i&&!1!==t.subscribed;rc.useSyncExternalStore(rc.useCallback(e=>d?o.subscribe(tX.batchCalls(e)):tT,[o,d]),()=>o.getCurrentResult(),()=>o.getCurrentResult()),rc.useEffect(()=>{o.setQueries(s,t)},[s,t,o]);let h=l.some((e,t)=>s3(s[t],e))?l.flatMap((e,t)=>{let r=s[t];if(r){let t=new sj(n,r);if(s3(r,e))return s4(r,t,a);s2(e,i)&&s4(r,t,a)}return[]}):[];if(h.length>0)throw Promise.all(h);let p=l.find((e,t)=>{let r=s[t];return r&&s0({result:e,errorResetBoundary:a,throwOnError:r.throwOnError,query:n.getQueryCache().get(r.queryHash),suspense:r.suspense})});if(p?.error)throw p.error;return c(u())}({queries:qe.map(e=>({queryKey:VS(e,{apiKey:n,baseURL:i,source:a}),queryFn:({signal:t})=>VI(e,{apiKey:n,baseURL:i,signal:t,source:a,widgetSession:s})}))});(0,rc.useEffect)(()=>{let n=o[0]?.data,i=n?.materials?.[0],a=n?.tinuuid;null===e&&i&&a&&(t(i),r(a))},[e,o,t,r]);let l=(0,rc.useMemo)(()=>o.flatMap(e=>{let t=e.data,r=t?.materials?.[0];return t?.tinuuid&&r?.hid?[{material:r,materialId:r.hid,tinuuid:t.tinuuid}]:[]}),[o]),c=(0,rc.useCallback)(e=>{let n=l.find(t=>t.materialId===e);return!!n&&(t(n.material),r(n.tinuuid),!0)},[l,t,r]);return{material:e,options:l,selectMaterial:c}}(),{containerRef:a}=Wy(),{t:s}=st();return(0,rd.jsxs)(W_,{className:Vk("w-fit",e),...t,children:[(0,rd.jsx)(WP,{className:"text-xs text-text-sub font-medium",children:s("material")}),(0,rd.jsxs)(WH,{value:r?.hid??void 0,onValueChange:i,children:[(0,rd.jsx)(WG,{className:"w-[145px]",size:"md",children:(0,rd.jsxs)(Wj,{placeholder:s("chooseMaterial"),children:[(0,rd.jsx)("div",{className:"size-5 rounded-full border border-border-light",style:{backgroundColor:`#${r?.miniature?.color?.hex}`}}),r?.miniature?.color?.name]})}),(0,rd.jsx)(WV,{portalContainer:a,children:n.map(({material:e,materialId:t,tinuuid:r})=>(0,rd.jsxs)(WW,{value:t,children:[(0,rd.jsx)("div",{className:"size-5 rounded-full border border-border-light",style:{backgroundColor:`#${e?.miniature?.color?.hex}`}}),e.miniature?.color?.name]},`${r}-${t}`))})]})]})}let qi=(0,rc.createContext)(null),qa=(0,rc.createContext)(null);function qs({value:e,defaultValue:t,onValueChange:r,...n}){let[i,a]=(0,rc.useState)(t),s=e??i,o=(0,rc.useMemo)(()=>({value:s}),[s]),l=(0,rc.useCallback)(t=>{r?.(t),void 0===e&&a(t)},[r,e]);return(0,rd.jsx)(qi,{value:o,children:(0,rd.jsx)(ga,{"data-slot":"tabs",value:s,onValueChange:l,...n})})}let qo=la("cursor-pointer group inline-flex items-center justify-center shrink-0 whitespace-nowrap outline-none transition-colors relative z-10 text-text-base [&_svg]:text-icons-normal [&_svg]:transition-colors hover:text-text-dark hover:[&_svg]:text-icons-dark active:bg-background-base-3 active:text-text-dark active:[&_svg]:text-icons-dark data-[state=active]:bg-background-white data-[state=active]:text-text-dark data-[state=active]:[&_svg]:text-icons-dark disabled:pointer-events-none disabled:opacity-50 focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background",{variants:{size:{default:"h-7 rounded-lg px-2 typo-button-normal active:rounded-lg data-[state=active]:rounded-lg [&_svg]:size-4",sm:"h-6 rounded-[4px] px-2 typo-button-small active:rounded-lg data-[state=active]:rounded-lg [&_svg]:size-4",lg:"h-9 rounded-lg px-3 typo-button-big active:rounded-lg data-[state=active]:rounded-lg [&_svg]:size-6"}},defaultVariants:{size:"default"}}),ql=la("relative inline-flex items-center rounded-xl bg-background-base-2",{variants:{size:{default:"p-1",sm:"p-[3px]",lg:"p-1"}},defaultVariants:{size:"default"}});function qc({className:e,children:t,size:r="default",...n}){let i=(0,rc.use)(qi),a=(0,rc.useRef)(null),s=(0,rc.useRef)(new Map),o=(0,rc.useRef)(null),l=(0,rc.useRef)(i?.value),c=(0,rc.useRef)(null),u=(0,rc.useCallback)(()=>{c.current=null;let e=o.current;if(!e)return;let t=l.current;if(!t){e.style.opacity="0";return}let r=a.current,n=s.current.get(t);if(!r||!n){e.style.opacity="0";return}let i=Math.round(n.offsetLeft),u=Math.round(n.offsetTop),d=Math.round(n.offsetWidth),h=Math.round(n.offsetHeight);e.style.transform=`translate3d(${i}px, ${u}px, 0)`,e.style.width=`${d}px`,e.style.height=`${h}px`,e.style.opacity="1"},[]),d=(0,rc.useCallback)(()=>{null===c.current&&(c.current=requestAnimationFrame(()=>{u()}))},[u]),h=(0,rc.useCallback)((e,t)=>{t?s.current.set(e,t):s.current.delete(e),d()},[d]);(0,rc.useLayoutEffect)(()=>{l.current=i?.value,null!==c.current&&(cancelAnimationFrame(c.current),c.current=null),u()},[i?.value,u]),(0,rc.useEffect)(()=>{let e=a.current;if(!e||"u"<typeof ResizeObserver)return;let t=new ResizeObserver(()=>d());t.observe(e);let r=i?.value;if(r){let e=s.current.get(r);e&&t.observe(e)}return()=>{t.disconnect()}},[d,i?.value]),(0,rc.useEffect)(()=>()=>{null!==c.current&&cancelAnimationFrame(c.current)},[]);let p=(0,rc.useMemo)(()=>({registerTrigger:h,size:r}),[h,r]);return(0,rd.jsx)(go,{ref:a,"data-slot":"tabs-list",className:Vk(ql({size:r}),e),...n,children:(0,rd.jsxs)(qa,{value:p,children:[(0,rd.jsx)("div",{ref:o,"aria-hidden":!0,"data-slot":"tabs-indicator",className:"pointer-events-none absolute top-0 left-0 z-0 rounded-lg bg-background-white opacity-0 transition-[transform,width,height,opacity] duration-[250ms] ease-out motion-reduce:transition-none"}),t]})})}function qu({className:e,size:t,children:r,value:n,...i}){let a=(0,rc.use)(qa),s=(0,rc.useRef)(null),o=t??a?.size??"default",l=Vk("relative z-10 inline-flex items-center justify-center","lg"===o?"gap-1.5":"gap-1");return(0,rc.useLayoutEffect)(()=>{if(a&&n)return a.registerTrigger(n,s.current),()=>{a.registerTrigger(n,null)}},[a,n]),(0,rd.jsx)(gc,{ref:s,"data-slot":"tabs-trigger",className:Vk(qo({size:o}),"data-[state=active]:bg-transparent",e),value:n,...i,children:(0,rd.jsx)("span",{"data-slot":"tabs-trigger-content",className:l,children:r})})}function qd(e,t="m"){switch(t){case"cm":return e/100;case"in":return .0254*e;case"m":return e}}function qh(e){let{t}=st();return(0,rc.useMemo)(()=>[{value:0,label:t("mattingOptions.none")},{value:.05,label:`${Number((function(e,t){switch(t){case"cm":return 5;case"in":return 1.9685039370078743}})(.05,e).toFixed(2)).toString()} ${t(`units.${e}`)}`}],[e,t])}function qp({className:e,...t}){let{displayUnit:r}=Wm(),{matting:n,setMatting:i}=Ww(),{t:a}=st(),s=qh(r);return(0,rd.jsxs)(W_,{className:Vk("w-fit",e),...t,children:[(0,rd.jsx)(WP,{className:"text-xs text-text-sub font-medium",children:a("matting")}),(0,rd.jsx)(qs,{value:n.toString(),onValueChange:e=>i(Number(e)),children:(0,rd.jsx)(qc,{children:s.map(e=>(0,rd.jsx)(qu,{value:e.value.toString(),children:e.label},e.value))})})]})}qc.displayName=go.displayName,qu.displayName=gc.displayName,gd.displayName;let qA=/oklch\(([0-9.]+)\s+([0-9.]+)\s+([0-9.]+)\)/;function qf(e,t){let r=e.match(qA);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 qg({data:e,foreground:t,background:r,robustness:n="M",className:i,...a}){let[s,o]=(0,rc.useState)(null);return((0,rc.useEffect)(()=>{(async()=>{try{let i=getComputedStyle(document.documentElement),a=t??i.getPropertyValue("--foreground"),s=r??i.getPropertyValue("--background"),l=qf(a,[.21,.006,285.885]),c=qf(s,[.985,0,0]),u=await vK.toString(e,{type:"svg",color:{dark:vW(vq({mode:"oklch",...l})),light:vW(vq({mode:"oklch",...c}))},width:200,errorCorrectionLevel:n,margin:0});o(u)}catch(e){console.error(e)}})()},[e,t,r,n]),s)?(0,rd.jsx)("div",{className:Vk("size-full","[&_svg]:size-full",i),dangerouslySetInnerHTML:{__html:s},...a}):null}function qm({className:e,buttonClassName:t,buttonLeadingIcon:r,buttonLabel:n,buttonSize:i,buttonVariant:a="contrast",...s}){let{placement:o,type:l,width:c,height:u,name:d}=Wm(),{src:h,tinuuid:p,widgetSession:A}=Wb(),{containerRef:f,resourceRef:g}=Wy(),{t:m,i18n:v}=st(),b=function(){let{i18n:e}=st();return"ru"===(e.resolvedLanguage??e.language)?"arizo":"vizbl"}(),[y,w]=(0,rc.useState)(""),[x,C]=(0,rc.useState)(""),[E,S]=(0,rc.useState)(()=>A?.token),[I,M]=(0,rc.useState)(!1),[B,k]=(0,rc.useState)(!1),T=(0,rc.useRef)(null),R=v.resolvedLanguage??v.language,D=W9[b],_=(0,rc.useMemo)(()=>(function({height:e,language:t,name:r,src:n,tenantConfig:i,tinuuid:a,placement:s,type:o,width:l,widgetSessionToken:c,pageUrl:u}){if("floor"===s&&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:u,language:R,name:d,src:h,tenantConfig:D,tinuuid:p,placement:o,type:l,width:c,widgetSessionToken:E,pageUrl:"u"<typeof window?void 0:window.location.href}),[h,p,o,l,c,u,d,R,D,E]),P=(0,rc.useMemo)(()=>{if(!p||"vizbl"!==b)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,b]);async function L(){S(await A?.getTokenForRequest().catch(()=>A.token))}let N=async()=>{if("floor"===o){if(!p)return;if(WS&&P){VC(A,"appclip"),window.location.assign(P);return}await L(),M(!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),WS){let t=new M1,r=await t.parseAsync(e),n=new File([r],"scene.usdz",{type:"model/vnd.usdz+zip"});w(URL.createObjectURL(n))}else{let t=new Bt,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(),M(!0)};return((0,rc.useEffect)(()=>((""!==y||""!==x)&&T.current?.activateAR(),()=>{""!==y&&URL.revokeObjectURL(y),""!==x&&URL.revokeObjectURL(x)}),[y,x]),WI&&WM||"floor"===o&&!p)?null:(0,rd.jsxs)("div",{className:Vk(e),...s,children:[(0,rd.jsxs)(VR,{variant:a,size:i,disabled:B,onClick:N,className:t,children:[r,n??m("ar.viewInPlace")]}),(0,rd.jsx)(VD,{open:I,onOpenChange:M,children:(0,rd.jsxs)(VN,{className:"gap-6 sm:max-w-120",showCloseButton:!1,portalContainer:f,children:[(0,rd.jsx)("div",{className:"flex items-center justify-center p-10 bg-constant-white rounded-2xl",children:(0,rd.jsx)(qg,{className:"size-48",robustness:"H",data:_})}),(0,rd.jsx)("p",{className:"text-lg text-center text-text-sub font-medium",children:m("ar.scanQrCode")}),(0,rd.jsxs)("p",{className:"text-xs text-center text-text-light",children:[m("ar.deviceRequirementsDisclaimer"),(0,rd.jsx)("br",{}),(0,rd.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,rd.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,rd.jsx)(VP,{asChild:!0,children:(0,rd.jsx)(VR,{variant:"contrast",size:"lg",children:m("close")})})]})}),(0,rd.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})]})}let qv={width:void 0,height:void 0};function qb(e,t,r){return e[t]?Array.isArray(e[t])?e[t][0][r]:e[t][r]:"contentBoxSize"===t?e.contentRect["inlineSize"===r?"width":"height"]:void 0}function qy(e){return e.image.width/e.image.height}async function qw(e,t,r){let n=new Image;n.crossOrigin="anonymous",await new Promise((t,r)=>{n.onload=()=>t(),n.onerror=()=>r(Error("Failed to decode room plane id map.")),n.src=e});let i=document.createElement("canvas"),a=i.getContext("2d");if(!a)throw Error("Failed to get 2D context for room plane id map.");i.width=t,i.height=r,a.drawImage(n,0,0,t,r);var s=a.getImageData(0,0,t,r);let o=new Uint8Array(t*r);for(let e=0;e<o.length;e++)o[e]=s.data[4*e]??0;return{data:o,width:t,height:r}}async function qx(e,t){return new Promise((r,n)=>{e.toBlob(e=>{e?r(e):n(Error(t))},"image/png")})}function qC({ref:e}){let{camera:t,gl:r,invalidate:n,scene:i}=Q4();return(0,rc.useImperativeHandle)(e,()=>({capture:async()=>{let e;n(),await new Promise(e=>requestAnimationFrame(()=>e()));let a=(e=new Map,i.traverse(t=>{!0===t.userData.excludeFromCapture&&(e.set(t,t.visible),t.visible=!1)}),()=>{e.forEach((e,t)=>{t.visible=e})});try{return r.render(i,t),await qx(r.domElement,"Failed to create scene share image")}finally{a(),n()}}}),[t,r,n,i]),null}let qE=new bE(0,0,1),qS=new bE(0,0,1);function qI(e){return new bC().setFromUnitVectors(qE,e.clone().normalize())}function qM(e,t,r,n){let i,a,s,o,l,c,u=(a=new bE((i=e.geometry.attributes.position).getX(0),i.getY(0),i.getZ(0)),s=new bE(i.getX(1),i.getY(1),i.getZ(1)),o=new bE(i.getX(2),i.getY(2),i.getZ(2)),l=new bE().crossVectors(s.sub(a),o.sub(a)).normalize(),c=r.position.clone().sub(t).normalize(),0>l.dot(c)&&l.multiplyScalar(-1),l),d=t.clone().addScaledVector(u,.05),h=function(e,t){if("floor"===t)return qI(e);let r=e.clone().normalize(),n=qS.clone().addScaledVector(r,-qS.dot(r));if(1e-6>n.lengthSq())return qI(r);n.normalize();let i=new bE().crossVectors(n,r).normalize(),a=new yd().makeBasis(i,n,r);return new bC().setFromRotationMatrix(a)}(u,n);return{position:d.toArray(),quaternion:h.toArray(),activePlaneId:e.userData.planeId}}function qB(e){return{placementKey:e,planeIdMap:null,resourcePose:null}}function qk(e,t){if("reset-placement"===t.type)return qB(t.placementKey);if(t.placementKey!==e.placementKey)return e;switch(t.type){case"reset-plane-id-map":return{...e,planeIdMap:null};case"set-plane-id-map":return{...e,planeIdMap:t.planeIdMap};case"set-resource-pose":return{...e,resourcePose:t.resourcePose}}}let qT="NEURODYN_ROOM_SCENE_PATCH";function qR(e,t){let r=e.onBeforeCompile,n=e.customProgramCacheKey.bind(e),i=e.side,a=e.transparent,s=e.alphaToCoverage;return e.side=2,e.transparent=!0,e.alphaToCoverage=!0,e.onBeforeCompile=(n,i)=>{r?.call(e,n,i),function(e,t){e.uniforms.uPlaneIds={value:t.planeIdsTexture},e.uniforms.uShading={value:t.shadingTexture},e.uniforms.uActiveId=t.activePlaneIdUniform,e.uniforms.uPlaneIdsSize={value:t.planeIdsSize},e.uniforms.uViewport={value:t.viewport};let r=`
7464
+ Defaulting to \`null\`.`));let u=Ws(a,c)?a:null,d=Wi(u)?o(u,c):void 0;return(0,rd.jsx)(V8,{scope:i,value:u,max:c,children:(0,rd.jsx)(V3.div,{"aria-valuemax":c,"aria-valuemin":0,"aria-valuenow":Wi(u)?u:void 0,"aria-valuetext":d,role:"progressbar","data-state":Wn(u,c),"data-value":u??void 0,"data-max":c,...l,ref:t})})});V7.displayName=V4;var We="ProgressIndicator",Wt=(0,rc.forwardRef)((e,t)=>{let{__scopeProgress:r,...n}=e,i=V6(We,r);return(0,rd.jsx)(V3.div,{"data-state":Wn(i.value,i.max),"data-value":i.value??void 0,"data-max":i.max,...n,ref:t})});function Wr(e,t){return`${Math.round(e/t*100)}%`}function Wn(e,t){return null==e?"indeterminate":e===t?"complete":"loading"}function Wi(e){return"number"==typeof e}function Wa(e){return Wi(e)&&!isNaN(e)&&e>0}function Ws(e,t){return Wi(e)&&!isNaN(e)&&e<=t&&e>=0}function Wo({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,rd.jsx)(V7,{"data-slot":"progress",className:Vk("relative h-2 w-full overflow-hidden rounded-full bg-primary/20",e),value:t,max:i,...n,children:(0,rd.jsx)(Wt,{"data-slot":"progress-indicator",className:"h-full bg-primary transition-[width]",style:{width:`${a}%`}})})}Wt.displayName=We;let Wl="inset-0 h-svh min-w-full max-w-none translate-x-0 translate-y-0 rounded-none border-none bg-transparent p-0 shadow-none sm:p-0 sm:max-w-none",Wc=(0,rc.createContext)(null),Wu=(0,rc.createContext)(null),Wd=(0,rc.createContext)(null),Wh=(0,rc.createContext)(null),Wp=(0,rc.createContext)(null),WA=(0,rc.createContext)(null),Wf=(0,rc.createContext)(null);function Wg(e,t){let r=(0,rc.use)(e);if(!r)throw Error(`${t} must be used within a RoomViewerProvider`);return r}function Wm(){return Wg(Wc,"useRoomViewerMetadata")}function Wv(){return Wg(Wd,"useRoomViewerRooms")}function Wb(){return Wg(Wh,"useRoomViewerResource")}function Wy(){return Wg(Wp,"useRoomViewerSceneState")}function Ww(){return Wg(WA,"useRoomViewerWallResourceControls")}let Wx=new dT,WC=Wx.getDevice(),WE=Wx.getOS(),WS="iOS"===WE.name,WI="Android"===WE.name,WM="mobile"===WC.type;function WB({variant:e,open:t,portalContainer:r,showDialogCloseButton:n=!1,onOpenChange:i,onTryAgain:a,onCancel:s}){let{t:o}=st(),l=e?o("custom-interior-processing"===e?"floor.error.processingBody":"viewer-load-failed"===e?"floor.error.loadBody":`accessError.${e}`):"";return(0,rd.jsx)(VD,{open:t,onOpenChange:i,children:(0,rd.jsxs)(VN,{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,rd.jsxs)("div",{className:"grid gap-1",children:[(0,rd.jsx)(VQ,{children:o("floor.error.title")}),(0,rd.jsx)(VU,{className:"typo-base-14 font-medium text-text-base",children:l})]}),(0,rd.jsxs)("div",{className:"grid gap-2",children:[a&&(0,rd.jsxs)(VR,{variant:"contrast",onClick:a,children:[(0,rd.jsx)(Vq,{"aria-hidden":"true"}),o("floor.error.tryAgain")]}),s&&(0,rd.jsx)(VR,{variant:"outline",onClick:s,children:o("floor.error.cancel")}),n&&(0,rd.jsx)(VP,{asChild:!0,children:(0,rd.jsx)(VR,{variant:"outline",children:o("close")})})]})]})})}function Wk({className:e,...t}){return(0,rd.jsx)(dR,{"data-slot":"label",className:Vk("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",e),...t})}function WT({className:e,orientation:t="horizontal",decorative:r=!0,...n}){return(0,rd.jsx)(dP,{"data-slot":"separator",decorative:r,orientation:t,className:Vk("bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px",e),...n})}function WR({className:e,...t}){return(0,rd.jsx)("div",{"data-slot":"field-group",className:Vk("group/field-group @container/field-group flex w-full flex-col gap-7 data-[slot=checkbox-group]:gap-3 [&>[data-slot=field-group]]:gap-4",e),...t})}let WD=la("group/field flex w-full gap-3 data-[invalid=true]:text-destructive",{variants:{orientation:{vertical:["flex-col [&>*]:w-full [&>.sr-only]:w-auto"],horizontal:["flex-row items-center","[&>[data-slot=field-label]]:flex-auto","has-[>[data-slot=field-content]]:items-start has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px"],responsive:["flex-col [&>*]:w-full [&>.sr-only]:w-auto @md/field-group:flex-row @md/field-group:items-center @md/field-group:[&>*]:w-auto","@md/field-group:[&>[data-slot=field-label]]:flex-auto","@md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px"]}},defaultVariants:{orientation:"vertical"}});function W_({className:e,orientation:t="vertical",...r}){return(0,rd.jsx)("div",{role:"group","data-slot":"field","data-orientation":t,className:Vk(WD({orientation:t}),e),...r})}function WP({className:e,...t}){return(0,rd.jsx)(Wk,{"data-slot":"field-label",className:Vk("group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50","has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col has-[>[data-slot=field]]:rounded-md has-[>[data-slot=field]]:border [&>*]:data-[slot=field]:p-4","has-data-[state=checked]:bg-primary/5 has-data-[state=checked]:border-primary dark:has-data-[state=checked]:bg-primary/10",e),...t})}function WL({className:e,...t}){return(0,rd.jsx)("div",{"data-slot":"field-label",className:Vk("flex w-fit items-center gap-2 text-sm leading-snug font-medium group-data-[disabled=true]/field:opacity-50",e),...t})}function WN({...e}){return(0,rd.jsx)(pi,{"data-slot":"popover",...e})}function WO({...e}){return(0,rd.jsx)(po,{"data-slot":"popover-trigger",...e})}function WF({className:e,align:t="center",sideOffset:r=4,portalContainer:n,...i}){return(0,rd.jsx)(pd,{container:n,children:(0,rd.jsx)(pp,{"data-slot":"popover-content",align:t,sideOffset:r,className:Vk("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 WQ({className:e,defaultValue:t,value:r,min:n=0,max:i=100,variant:a="default","aria-label":s,"aria-labelledby":o,...l}){let c=(0,rc.useMemo)(()=>Array.isArray(r)?r:Array.isArray(t)?t:[n],[r,t,n]);return(0,rd.jsxs)(pN,{"data-slot":"slider",defaultValue:t,value:r,min:n,max:i,"data-variant":a,"aria-label":s,"aria-labelledby":o,className:Vk("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,rd.jsx)(pj,{"data-slot":"slider-track",className:Vk("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,rd.jsx)(pV,{"data-slot":"slider-range",className:Vk("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,rd.jsx)(pq,{"data-slot":"slider-thumb","aria-label":s,"aria-labelledby":o,className:Vk("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 WU="u"<typeof window;function Wz(e,{defaultValue:t=!1,initializeWithValue:r=!0}={}){let[n,i]=(0,rc.useState)(()=>{if(r)return WU?t:window.matchMedia(e).matches;return t});return(0,rc.useEffect)(()=>{let t=window.matchMedia(e),r=()=>{i(t.matches)};return r(),t.addEventListener("change",r),()=>{t.removeEventListener("change",r)}},[e]),n}function WH({...e}){return(0,rd.jsx)(Ar,{"data-slot":"select",...e})}function Wj({...e}){return(0,rd.jsx)(As,{"data-slot":"select-value",...e})}function WG({className:e,size:t="default",children:r,...n}){return(0,rd.jsxs)(Ai,{"data-slot":"select-trigger","data-size":t,className:Vk("flex w-fit items-center justify-between gap-2 whitespace-nowrap rounded-md border bg-background-white shadow-sm outline-none transition-colors cursor-pointer","border-border-medium","text-text-dark","hover:border-border-dark","focus-visible:border-border-dark","aria-invalid:border-border-red","disabled:cursor-not-allowed disabled:border-border-medium disabled:bg-background-base disabled:opacity-40","data-[size=default]:h-11 data-[size=default]:px-2 data-[size=default]:py-2.5 data-[size=default]:typo-base-16","data-[size=md]:h-9 data-[size=md]:px-2 data-[size=md]:py-2 data-[size=md]:typo-base-14","data-[size=sm]:h-[1.875rem] data-[size=sm]:px-2 data-[size=sm]:typo-base-12","*:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2","[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*=size-])]:size-6 [&_svg:not([class*=text-])]:text-text-dark",e),...n,children:[r,(0,rd.jsx)(Ao,{asChild:!0,children:(0,rd.jsx)(VW,{className:"size-6"})})]})}function WV({className:e,children:t,position:r="item-aligned",align:n="center",portalContainer:i,...a}){return(0,rd.jsx)(Al,{container:i,children:(0,rd.jsxs)(Au,{"data-slot":"select-content",className:Vk("relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-xl border bg-background-white text-text-dark shadow-md","border-border-medium","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","popper"===r&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",e),position:r,align:n,...a,children:[(0,rd.jsx)(Wq,{}),(0,rd.jsx)(Ay,{className:Vk("p-1","popper"===r&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"),children:t}),(0,rd.jsx)(WK,{})]})})}function WW({className:e,children:t,...r}){return(0,rd.jsxs)(AB,{"data-slot":"select-item",className:Vk("relative flex w-full cursor-pointer select-none items-center gap-2 rounded-md py-2.5 pr-8 pl-3 outline-hidden","typo-base-16 text-text-sub","focus:bg-background-base focus:text-text-dark","data-[disabled]:pointer-events-none data-[disabled]:opacity-50","[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*=size-])]:size-6 [&_svg:not([class*=text-])]:text-text-dark","*:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",e),...r,children:[(0,rd.jsx)("span",{"data-slot":"select-item-indicator",className:"absolute right-2 flex size-6 items-center justify-center",children:(0,rd.jsx)(AD,{children:(0,rd.jsx)(Vj,{className:"size-5"})})}),(0,rd.jsx)(AT,{children:t})]})}function Wq({className:e,...t}){return(0,rd.jsx)(AP,{"data-slot":"select-scroll-up-button",className:Vk("flex cursor-default items-center justify-center py-1",e),...t,children:(0,rd.jsx)(c9,{className:"size-4"})})}function WK({className:e,...t}){return(0,rd.jsx)(AN,{"data-slot":"select-scroll-down-button",className:Vk("flex cursor-default items-center justify-center py-1",e),...t,children:(0,rd.jsx)(c5,{className:"size-4"})})}var WY=JSON.parse('{"version":1,"image":{"width":1152,"height":768,"fileName":"bathroom.jpg"},"camera":{"fovYDeg":46.95,"fx":884.1691,"fy":589.446,"cx":255.9992,"cy":256.0003,"net":512,"frame":"+X right, +Y down, +Z forward; meters; OpenCV"},"planes":[{"id":1,"kind":"floor","polygon3D":[[-4.9139,1.1239,0.1328],[1.7293,1.1239,-1.9012],[4.8937,0.9661,8.4344],[-1.7494,0.9661,10.4683]],"polygon2D":[[-73044.5,7868],[69379.5,20259],[1730.3,485.3],[243.5,465.6]],"pixelCount":64473},{"id":2,"kind":"wall","polygon3D":[[-1.8438,5.8702,6.4128],[-0.1895,5.8702,7.1854],[-0.1834,-6.7435,7.1724],[-1.8377,-6.7435,6.3998]],"polygon2D":[[4,1193.4],[523.5,1106.3],[525.1,-447.3],[4.7,-547.7]],"pixelCount":46912},{"id":3,"kind":"wall","polygon3D":[[-0.3441,3.5388,7.4548],[1.1166,3.5388,3.9579],[1.1131,-4.5581,3.9565],[-0.3475,-4.5581,7.4534]],"polygon2D":[[484.2,803.7],[1137.2,1174.5],[1135.7,-634.6],[483.2,-156.7]],"pixelCount":18435},{"id":4,"kind":"wall","polygon3D":[[-2.9664,8.8209,12.276],[0.4037,8.8209,2.9966],[-0.5173,-6.6906,2.6621],[-3.8874,-6.6906,11.9415]],"polygon2D":[[95.3,1019.3],[844,2986.7],[189.4,-1838.2],[-71.6,-111.4]],"pixelCount":303}],"planeIds":{"width":512,"height":512,"dataPng":"data:image/png;base64,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"},"shading":{"width":128,"height":128,"neutral":128,"dataPng":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAIAAABMXPacAAAACXBIWXMAAAPoAAAD6AG1e1JrAAAgAElEQVR42uWdabdkRZWG84/xE+SbH1xLxZFRUEAFQVBoZGxkaAZBcICyQSgKUBmaEoqpcO5Wf1E/lQ/3ZeeOOHlv1c0rUuwPufLmzTwnzvvGHmLHjojVL/bkl2vhzc9+9rMnnniC16effvrYsWP/PZMffjrkmT3Jgz9T5Nm15Atg9dRTTz29J8f25OkFeWotq4p+OHjyySfhgPe/Wsunk4BnNmXKQT4HJTFt6EtAY+KpIqugn494//Of//ynP/0p//rVgnza0F/iwD8rvseWZUR/ToAcYIL4Fz/7FBLwzLI0SwAUQpTXhth2AvjzQwLqR77hc6zQ9HL8Fxv1aYN+5CC4j+J/fQ10cxOU7t9cRJQgniCfgz7/+nSiX43+FPdR9ifAd81dqAR4AuDGJSRYEv3zj4Cpg91OwBTu0UyFgzkBeRdTVU0NQIM4NBiYBn1D1fMD+piRg3CwBPr2b1Yl6E64Wv9m0fgkSqBU9DVQ5wcBB+Rg6b/PbsrUWzQCNDy8biNADkR8iv75RMC+HEw/D+i/XssSB9WohACHXB8RwM9efPHF5sf5TbzuiP55RsAWDpaGwYG+EtB+GPSrA3CwBZIbBLz11lvNoVclGNHnPQbqfCJg5GA09NXa/HqQ1v1H9O34oA+YoPcRAfzg97///euvv978Oz/OD0b0zz8CGgcH6fjIc889ty8BteMD5k9+8pPHH398Iwp67bXX3nzzzRZRcQn+u4Q+wlXOMwLkYF+LH9yfW8tohdoIIEm2Rx555PG1wMGGE+b3aMAbb7zRFFArpB5IYEX/vCRgyeY09CNTN5BAxkFVcHvsscfg4LG1bGjAww8//Pzzz8MBV6x6pBXSFTssqOhzrf9ay/lHwLODNLPTOGjBaHLUoh/0wJ2+D25nNCDOga9++9vfxkj99re/hYPaBWKFtqDPRZ/YlEPi8ru10JiXXnrphRdeoBk8Bi1+4IEH7rnnnjvvvPP222//0Y9+dNtttx3yRktJhSV/m/6+RQMUCYjXlQB9L3A9+uijoLeqEwh8ihK8/PLLWKHf/OY3/D4X0gotoQ8uDX1uWcd754DLK6+8IgG0BwJohgTcf//9EHDHHXdAAOjDwRERMKL/3IIsqcXx48eFbsoBzwIHGxrAl4CVPyGAkLRO+uS/I/pcxVzFEvpj2uQg3f+VtfAGAhig0Aweg3tBwF133QUBon94ApayCwdEvxofv4YZp8Ggzxs5qNFn04MNApAHH3yQNqH1b63Fi2qFuIToqyh8E/R1JpWAhv44qck12wM0RFA+On7l4MSJEzyMGnDvvffefffdQf9ICdhi8ZcIEHRUFg54Pb4WbfiUg1XmACSABjkXhht4++23c2lp5Gf0wYceeohuCPrQwJ+VAK5eZxcSz1X028N48aocoD9ywNe4mreu6B8RAVsCntHoJ1yMBgA9neYgHHQC7MJ8z3GZSuANdAOATh8EfbCg+1cCMn9Q0a8EjOrc0Fdo9JQDOQ76t+/JUUwDTNGfZh1sMzjw4HLw/FpUgu0ccPdVBgEZNeideU44PHnyJK9xA/wM3H/84x8TilQCDJAqATW1Nyr1Evp+n29y0ykHog/od6zlzrUcBQFLwX7F3dZqMEAGKHitHKgEUw5y904AQgfnObH1YGpEVAkAdNBHD0Tf8bQEOEwL+pWA1q22oK/QetGvHLz66qtAf/cghyTg2ZlU9GlMCEh0zzOKuBl7DfpBOGh3nxAA+vRuAHVSnvwEz68f5hN9gIMI+n5Fv3X/pSHlvugjfAHuw4FjAgjA9N13332oIL3kP/fkiAgI+hLAJxlY8dQacdDQ9iY82cLB9O6rzAbn4Z2BMdbkaYmIcAbAp+44jK7oc3t9b8YTW5K6B0FfS8gDVA7UAAjACYcDaTgkAb+eSUVfAoyDDTR45ETkRuF1iDtysOXuEwJULowMz2lMSUSEM1BXVLTqeIN+y2HV3jROU9SM94i+l6LpcFBNEAbn3iI70YCl4FLstBu8ERmzwgYw9lF7faxQ42Dfu69iNCoExPigz+X4l0xCAAiakGh2H5L8+TSCHjOFtZyvgj4W0jhHJAcSwBAMDu7ZlEMS8PxMJOD4nviJgyGTycItASIuJpWDg9z9o6qISgDocxWzSAg2BxTQA4DmHi3uzGhrjHPq80xThmORU7LnMholiAbctZZ4YKKgW2+9decEZDylSIMcJKucrMzIwcHvPjFBiMGMdg30AZp70A6+pntI99f4GDs233W8SDhoCjEttqnzR/wQJ6QHJhy4a1OIRG9dy84JsNkn9iRM7MvB2d59NVbzZkSmv83VxU6Pn6hf1anop+8c35RRG6YzqOMsEhowJSDoH5KA4wuSkZRBZER/MHJwbndfJMCEdXwLIojxQnZ/bbcjl0D8wiCVg6lXGAc4UQVNkATE8lT0j4IAcwkoHwEYryc2xSFVODjM3RcJAH1DrghWmHvzxu6vmdL6G92n77fmNg5GQzQ656oHVQOq3T9qAuj4+h444P1Lm8IXdlKkvEhAq5rmC0wXA4EE1OAn3X9En3Y3DqbOoLmE5pYrAcQ8GJ9bBzkMBC/MhDaDuxO0cjDKTubjFgmoxaT++c477zAiU+8koHX/in6sZ3NiS3FR88m1pKARcOtMDgPBVF9pOTc1HQkNr8xkxwRMR0O1SuC9996jNU5vxgEsdf9GgA82eoKl6ezKgamIIyLAQOvFTbH7c7tTp06Rk4eG/5nJjgmYLj2o8v7779OaWrZeCYjmnjMB00ltCXAQACKMe2+55ZbdEoDQqpc3hTsC8ftrUfVH+bcgQPtTQ+aKfrNC03h0aUY7HEjAa2uBAHKF/zHIIQlAnISIaP3RAPT+9OnTp9by1qYcLQEtHJQA+oK1XRkBgJroGye8OJOzJaANlasGkINzNua2TTk8AQiN/N2ekHoRcZ4aDnjwt9dyqsjOCEjeeIuAdSXA6MjspvGymcuqxeFjjES3pCjGXEU0gF5JjsRqlCY7IQChza+uhZDvnbWA/rvvvuv7xsGOCdi37L0RoNLowZKztJBEcQgjDQfUgNEfSACX1QRFA46IAET3S99/dy1vb8pRaYDh/NKkqDkGTCEE0MRMe/E1YE2yTEOBpKRHnWgcnDMBaAAEtBn5nROAVAJwtmjDWzPZDQHJA28pwxMmCKBBzilLAN8xYouTjDQaphwchAA4rmEoJmi3GvDLQSQA0DU+BjxvzuTICWizo5ogc9TqDZ87XgcdumcCZN5XGqIKUw6ms1GVANWr+oBRdkgAT0ezccIafQngz6MKQzPOGqFvFslgoBGQXDG4v1EkNDQOogo1LbGvBmjcuCDzkXfMZIcEINyLRwB0e/rJPTkqAqYa0HIyIK4LmhIA0BKQtkrDwTmoNDQNiInjFjsnYOoDHIUF9JNFPh4C5IBbgoULDSQApECT5jpsqe0LDVMOMjiYTteEjBqGeoudm6BpbTpdinvVB5lysEsCWjFwsz/mG+j+IGitr7kj5wuDTvVXNr3pQQ2N2vhgykGiILs/F4SA3UZB09LoEHByQXZMQK2GnHLgnzgAWiYBtWohCtuihVEPasV5jYvq9Fl1zraBn4RgasKOmgAallTEyWXZPQFbVvtpCojJQNAVByGA7qkH1mUlRm56EJ8sB+P4oE1hVg7UMK9PuYYrA3Zlghr6BnWZgNvOwY5N0EhAy0YQBUlAJsIqARmwJGk1crDFIU9nMbk+LREILsWVIWC3PqCi75hGSS1e42DnC6TOjgAaZHmpvwIjDbT2Qdxr4nCJgzZAqwm7lr52zRo/98pUxh0RAQ7pk8WyIs8hSOVg9wSkBfsSwECsEsAnIwGnNkUOmiHKIDlK0GhoBKheXA0npAnaYRg6oq/UqcfKwRESsMUJW3QFAeAiASqN8xgxESEgeaumBFtGZ2MqO3Gq66W4IASgAcwJ3znIYQgY0bdhUw7+pQS0BX8QYClAI0BbSaNbRq8pkEnT6gliiCoNVaRB+wP6RAFqwA4JQF4eRBM05WD6/WhM0sAvL8hZENAsEqYAHyABKYaQgCxIcy57yaSEgGqFau565MAr6H5BnwagAcA9crBbAkYrVAmY4ntAAirHGwSM44BxYdQSAWBkVi5pSyX5uPw55ieqEoztlgbnRiSApQn/Ag0YORB9S1SmEJ8VAdXJr1LVvFQjXwnQBzgVEwIMFmsF5+sz0U+0eLTO4dRnqKZJ98vdsYEQANx3DXJEBCgOjJXmvc6BgIr+WRPghkKZQJYACuiSFGroC3QSCZjymq8eOWjiU8X+SIC1WTskoJmailRDXwKmHByQgIY+F99GQBNQCAHVCTNBVtOiTgwIcRYYmWGfEjBy0HwD8Q+3Bn1mhHDCtTZ9J8vERn8bpBr6BsdTDpYIaIw29LnIKqsqtiy/d1gAEC0MNRdEcrTlpRUXl3kn55iwJFsImAo/j/2BAJzw3TM5Z/QNDRoBQaeiT2+zGJCfVA5MbRm8NgLq+9QtVPQ/JMCocfsWCGZDRwK4LhrAz5sGIFnh7lJLhwgHISC1f/4pAafXognaLQGNA1EzZEhn4kEsyHRTHxMw1YSOhYttVjwKkeqFDQLG7QNGAQjaWpev8CGf0CyTiJoarT9v9M8mdjIcE/0QUJ+hNqtyw33t/h988AEEuERptwQYwqX/8mo7Q0CWRLi3W6pXbGdCvub8Rg7S/ScEPL+fAASXTsm4KkLXcIfjTA7bDl65cQYBbTBcCbChI/rhIA5AAkR/V8vE6tg77oeWO8EXVXbxKASQCZYA4zpxb9OxmZRN96oOIE/qf7cR0ErmAYKbaYKcEXNJOy2jWWN5BLcxkHfRr0ow1YCqyLVnTQkY0d8VAVZEe+uMWvS9dDUe2SflqR1R+kRtKrDOCdbkY7U/dWy0aILqEjUFIPgN/0pZigSwloaukcmZaKJl9RDG8h0egNYYBbXu30ynzar/koAP1sLi2XtmsisCEO5uwCaOtFZVdo0qHICYNioZquQc6ySa2jMOSNtAdZUx8EEI4AYu4ZMDN9YAFDiAjFqi4i35k6iRJWbQY7XTSECAri0bNUACWLdz1AQgFoYqxv5y4Hpgl63VFGEG6pYSKfyEp3ayRCYUbVfkIwK2LNIMAdwPArJAwymBxD+ZFo6YeEjkM1r/KQHNLoWAP/zhD2rADqOgEzMJATyvfdmYwoWoPDhoGNc5RlHeK0KD1Z5UV+TRWnXXKlWIIwGtWdYFuYBSDiyMqB2/zR9lDqCiP9XHrAS2u9XxsFFQCNjtQGw6E2dq3aQ6OGqUaMnDa8He8tQSkL7//qZYz8vPNWX8XDLso0Kv4Vol8bkvAV5Xm25YhjLyQ/PpGQSM5VkV+mrfpxygT9zdVplb5TFCACZotwOxEX2noJ3b4NYqsQEFNRkUJmFvaR6Ppv1Jlz9dxKJ24OIiWgJZVOrk+WppTzTXZmbdC1h40WxS4T45GY6lC4/JuLHXN5cbp81FnHsw2+qbRsB0MLwTAsys6GCdg+PWhqFuYchTkwvhwWkkLc8sRSOApvpGo+3ox1yAvT7oc4vVNPNs6s11qbZMDeBDLID7KyIoo/VxtUa6OtIlc18JUDdNHPGo7VgcbuEylThhBBR2TgDPqMJZBeMMK73VkQH/olVudYgFBjSX8NU8VZPYIo2YxqdOmPt+le5f7Q83/vOf/8xj80tVwboguzzGx7XzNMVNp90Vp4a6rxxMkrrICCWJqRzhQVslQB8w5eCQBMTeakstAwAym8RDORHiLjU4P9CgwfrqpElGArROjn5qZNUJaOhzy/9dixxov7jfn/70pz/+8Y+u4VagwVjIhUpJqtQB95jnqYPeEJAvZArT5ZjcohLwSJHKwWEISLxn+yVAu58yMpfGu0ba5COPCTJ0ytMLkrVN+uFWq/ARAePGGnD1t7/9rXLA9/7yl79wUf6LWXDHPrdM1BXbZ7O6vI25kxMdcz4jARofDy1Aw7gFPQhF5u6NgMrBYZbJVz+XKe6ajjUucG8CF6dIAA07vSwh4NQgEwJiCrkuv6Snw8H/rYXH5kKw4va14OKOoW5c5ugcVoze7C9VAwCXzsu/jHMqE9UJ+6jcIsd7cC/0nbtYqq9ze2QQOdhtpULtKO5TIAGuHuBhAY1mn94qByWgrbEGET6FALo8HPz973//xz/+wYf0Au7q7jUhwI07tEK0EkAB2gyEQKOkoEb/NawelaPG/rTBATavoJ+NiXjUBEIV+kfXgiv64cchp/cTPfCpmXQNiALySoeVNKGHAzogMNn93dTSrIh7xjkkNinksDudXfRtBwiKcp3xCAeGGU53cHH3RX5oLVTj4g9oQwgI7jbg3/kEiVMLMiEgERjWDWcL9P/85z8diCNm9gECHWSp9E033YQDqPvWWFipwXGgwavhcCK5Nn06qnlq8dAwcAdrluSReIAGw2Ku5qZI2aZU+n/4SZZV1rlDAPD99a9/Ff3MpGOg+RfEGIeBDuXgcMCY0P0DBYLrJIDD6dPrIYA/ubi5prqcuO4Javc35auAO2NON+Rj2OHudboBCBjPrDsfCEAJ3J4Sr0vkk2UXjmPdvh/jAPpm5NmwAQ6Apm4oxNdMRThE5Ifu9hipM3N1Fpt7wUGiYdNtoG8lOncBd7TVLQP8Ycq2+PmuVox+PAQ4DjCK5wk196YWHKbyCd+xKt3cLz0UaH7wgx/AAe8rB/zQZDq/GjfiqONkru9r5rUTkltvC/RsAnHzzTdTCITN4Zo0T+tpfsbm7XbV7sdAQHJBDkGz90PmF02DGJywOsW+6YLpm9bSOOCi+EasxJjeSLhl2r1aJCvsnEHzZAb2QLnxxhuvu+463mDxtWnJ4uqc6rLpXS1d/1cTkKqILFbVLUuAxkH0Adddaz1CAXS+//3vVw5yUXc0dQnNuA1nQt5wYIGpDplPMDh2f/ehQQm4GjaNEYnTDCnzquibm/zkEVBP77Tq3+SagQo0AJlDcFNABCFsWSv6ihzUiz6+J06ZZcNHaRiLlpxMdt5Df8Nv0TMtHjpHD3AwjPFxB9Mp+tbEf8IIqIc4hwATswKETiT/DAc44Yq+0i76eBGHCDqVBJ2p1Ig5MoTFtkASfEdp4p8MQ4m4+OYW9J1F+SQR0I7T1gplDxQAcvDldsVAM6K/nQA5UKWMXrILbd1nNMMIerfpl1rUnpTGkuWp6Juj/yQRUA/VdibE9DJiDYRpH9AHzRF9hgXuZZ6LPrYpHgyUA7lzhITbblngZejlwFjis22nepM1i5nQ2IK+H9KSNm3gdq80GO+C2fzud7971VVXXXLJJV//+tcvvfTSb37zm/h8fuXgI7v0K0dFQN2e0mofEbGf8p4QkHFpjt6j3VP0efWKV199NYb70T2x9bFgOeInxFvsp50xOaEGGOnXWiPHJXKwL/r81u33lwjAtwP3lVdeefHFF3/1q1+FBsjgE4Y4fI1AAwLSfjvKUQz6Vm7P3QgwFrIayaO7oMFTe6oJquhLAE9y+eWXwwHP8PCe0I/MXXMpCYgeKMaszoekli8mqHKQdJMT4kvo8x2TqW5xPyWA1l5//fUQQJu//OUvQ0MI4JueEmKbg36OQN0lAePJF9kL2lkR1ZDHoE0wwRs5IFKs6CM8wGWXXRYOeNQHi/g8VvfFCuXUkyz3yD5bGevWGX89eYqipuhnGUU9ZiAEMKyTAAaSKME3vvGNL37xi1/60pewQpDhsAMNtsFT9D1J7vDb5m8QkGK3evAU752TcmGQWHuMl1ayog8f1157beNAFTG3k0fyjkHfPRidW85YLGvNsllQyjT9BEMUE9TQdz0+YIH7yIEE0M0hgG4EAZ///OchgDbzXgL4Pq3djj5DxVvWsksCcpiVI4OcYkuLaXcUmdvTDlp5355gnRg3XbmWcHDFFVfAAZ+HMI/dSyKzHpbubHOCzlpNX6vJTHQn6yf0Qd9aKJfzczvb3DigJQ6zQR+vC+i0Ew6+9rWv0Wlwy/yXb4q+fXEL+jfccMN1azl3AnJKcA1Gc/4tT8JduRM4RnnpHTzP/WvxPCus7be+9S0eRgLCAZ/AAT9BgTz8Kmd+5mzWnL+XQ1essci0QS0/DgGunnC20vkGixhMN3HlrN8LB47s3Hkd9Gkwjpd2orjf+c534IDW8gZQ9FW6w4Ogzw9xIRixQ2lA3apbP6kSOAHAXWm3VWkeo+e8GFYF9EH5c5/73Fe+8hWactWe0LPg4Oq1YKDkzMMfQoDHgfB4TiqEgDZpExOUVTcCbUSkHsCBGVyPfAsBtjkHzvAJz/K9732Ppl500UX0+muuuQZnwNd0vNa+Wfka9I2mQN9NYqfo88jXrOWsCYgfDgG+xzFai2kXNg1HU2hoQkwApSmg/9nPfvYLX/gCoNMgVJv+RYN4Awc8nh47J3zUsycdZoeATE7E+icGlYAsDMpmGnBgfQ6vzoNqbVxRHN+bA1h5bF7xAXxoZ7InGfg70V07By3nCuLAr7ajjxG7fi3nToBvnJWlm9PWKLI2xyJhgeNDOhHof+YznyGcwARxKDHNoim8oVloDy3m4a1szYG4Qd9TCtyDsda21EWvWamSeoW6/M+aJ70xcREKRD+NxffcVT5xOtOqHifZzW5l+hPheXlG42ZPMvLoXF7pRj4L2gPKFX2euqFPz8O+HdQHNCuk80FoXAwfYmxAy2g33/EILT4E6AsuuODCCy/EjNLx6R0qOE2kxfQa+h3Pprrk6KeYfhd6xP0adMbyOPjKepWsvMwy7lqY7Swr+JpDNQ52CtPVDHWjZWNcGuC5UCgBfctJUOMLXul5II7DwDcAK++BmPcNfWzsiD7e5fK1HIiAqgTGXhZAGERqPQ1jwM7e6hQC6PNb2goHmFRuDwEMFNzjHKetjkNAjpzM1vf2xMxIa/frpE3QT4G7M/tCn7mEumcjNKhhlgrUHa2T3pDm7FZkrQ0c0EinQnUYBh2oDt0I0IHVng76WFoTGNBAn+NDWRnRv2xPDkSAovOhn9LZQT/Rjidn8wVL0rUArlzwiDGv40Fa9u56uGo76yeVaK2UMSPeavqzrCPJVAnIWCFsWUFTM94ymt1xMtSoX+O9hxNpedQDA1YIUAkAl54OB6BJ4gj0wVfTbxy1BX3eX7GWCQG1vEBP6FlVgAjoTgJ7dB7i6XCZrsmabEee2Y3PXOZ0HqY+djDKsqm2926W8EUtXGzVdrhRe/KrNu0cX7JliwHf0z+sxfPARN24gwaHzWh2BpvYH15BH9B5PQj60HbxWuYEaBksfdAsGpNpu7X7Jkppa93atO0u6FAoPa5OvNQlarVkMYtbs8KyrrOt61jb/kKNg7a+o261kVLtWvHZtqbwyhaEeXK0HtjAHwLMgIG18cWlawFZc0oHRJ8RH5EhIfsGAXJg9Z1HteXAWu2J/xV9o/JskZX1JJYcZXWg9iRYa2HaQqVUqNfPo1JLu0fU3Z3q+7HcKLUXdT1IqK0rhGuVGFoeDoymkr9LMhiXG4t0yVqAWMS1UdvRx4L5q48IcF7M0/Osf7L6LOtjzdXUPcoyRV4Lvupq7Njl9MF4yxbetM09ssav7orf9sNvexMFzbiT2s1rJWQ0rK5EizH0Ey6lWw4HmqOoAuaIYA9VwPLokxEQB2tVIQRsQZ//rpzsNRLX+FgZmNq/LAdzzqTu4qnxycKPrJsd1+PVBc31HJz82XSiraAft9wdD0qJNoSDuhlRPZI1bavrROIhqpOg21keSVyEOQoHqAIc3LAWaIhjMDRSA7ROW9B3xLoyNKTv51RijI8uN6MkrX/y9RXKLFPOYuXmRbM2ym/mJ1lElminGqvRBLU98OuZQbXMIhnsehbxyEGcTVhvuxWFAy4IB7hlw3FCI2NTS9PQA8NuLBKuGIsk4qCsWmxH/0MCzM6Lfk4F9c+E7VkBUA8UiQ2piyN9wkpMVi0rbQFlC3hyFkTtkumV49F8jYwcHh7THzq9SD6shi7BVS1drayDQ4ZpcqAqmNO+cS2oAsEojgFwARrQRd/3zfKYp/nQBAV9x+VaHkUPYXRUF0Smq7ZETRQ8HTwWJq9tf/uYiyAejMbtXlI9lw126+GDTer+qyFYK6qVz+gvfX8sH66Fe/gD9UBzFFWQBghoFsm+z2tFH8eAooA+b844YR1vPZC1TqZrhXKss25AUNL0Oi5NTFmTaOnj06WT09376r4ZdTM/O3hdS1vHGeOa0+Z+rTOrI5K6iUnbKq12hWy4AUQeqK45IstCdBQO9ApEpYyKsUihAfR5NVICd9BP7HRmTjjoG3fG/WYmPRqQxWzTY9uyx1dbpFdHUuO6yRqYB+uY7LrTt/+qe3xnl+kwMe4DXrfgqkejtiFh+lMlvi79zCiEWzg7G88cPcArhAAEx6A2ALraABOgr5+Qj1WO4K5T53Kg1JSZHFjVU1GQjDqRMsrSrkZto7D09DpMbbFm9roPB6NCZCfNLN+sMZXe1bss1WzXgeRoFa1V0CvUAbOe2YypQqiqYzBGwhtXc7QSZcfflQApcS2qYWhmrNohF/UU7eS5pps/trh+TAxMx7exFW1L4+1nwbctS+sMT+xJblGbIdZND9qikqzcs1hWz2w9qwOFqgomUFEFTL+BaYIiiFlp912BHskqMCMiCxcsHqlnW2Srm5RY5xTqtv9qTV6O2+NVfGOjc5F8J+MvlWA882Hc5yVBqhxUy5bcXLZqauYoVG35nIYBkeaoTjhXVQgHqIKOIRaJcpgVv6fjW/Ns/cgDa0karmlAthKoB61mW4F6qG09D7zVQtfYph6R3E70XToXtJ4/M+6zGVuU6+SA5tFChgbXpKQmLM45RrKVCtQAgZvqmc0dGaTGLVcOpIGOnzHaCvSdfzDnrHsxic+/nK1N3W495tfUhZUsOY4vKEyDxdqvx43rq+Fu66en53M3M1gPtU9lX/PJTRErDU0VwnrrLrUbtSgZK6JblgPMUTjQFoG+Xo6YZIYAAAQ+SURBVMHhgqqw0pPctykW5iUNlwMDGvrm+mtdV3MJ8RZhZdycZzzmtkU4NaxMpbu1e1tOPWvL/2Ov2mxB1Yb0iewPURW39ZtEazU5CD5JHOkSYoukQQ24di1wcGYk7OxPlECvgv2Bz2Sha72QEwYSkDmcerpkVtqMR3S2kGl6wnA4q5tYGPu3k+hDwPTwy7YFTD2apnFQtaFGR61Ie9xVvGpDNpfhcbAidaTm/Kh5bMPTcIBLWLnmSxOWWiutv/anVi0q/pkKQ5OpVhaFpAZH3RYqHTl9fIys6qG2OTK9qkUAzfEG4SDHPk23YfZ9mxQbQ2EhXjqgt/m2mpf10cBHVXCkZh1Y9ck65DNRUIJZZ32dg8w+ECP66f6aoBS4yUHOoJ+eDlrNdHWh9uV2clBoqxt6jQFo3FKUr96uktEUaJyYbLu2154+BgLjsSuZCsxQyWqiqgoJT3UGZzRAoiwFUBV0v24HVAvlAq7ox/6kwjBzy9VnjLhULIypxtM6ahced9Rv3iJHINTFw7las0hVLWrn3TIcObEggb4ufPPzGEz6aEbLJi2c2tQnIysLx+z++oDswuEkQXp9pFbPWdahZG65Lvdo52hUcMU9Uez0EOOlMyUqE14kJa0JFsKKd2wX0bK16YSx7wfo2tOrD0ukW/c8kYC0HGwdIjhKkAP1YAU52h/RN/xndKb9aZaniug7g5askVML8dv1kKh6bne6vJ+nEqmZrPpeTPMmFxHTaGejIV+eciCRbbSRjl+HcuMYpZ19lj9jUZvQOzNSq4mjlUV3mn5rTyz3tPsn6ByVwOBH9CVAStp6m5issCIcRlNRo3qXkJcRRn1v3Xy1OV6tWsuqf/lmrYtpelANSMhImLCUbU1etqXFEh1UN2ZPws7XHCqqcIaAGoNaoOosTZ522v0b+matRw4SL9UDe+O0ZbGt2sjSpXTksCis1eBEq1JUmW/W/1ZzNHbPhm9N+lZwp4M7/Yp9P2mo2MZqXX0DXFmoc6YqwmXvxj8W3uIA3I0vHSd9Kk44s8cp90wlVqu1rmOFJ/ckdRj1TRvZZcVgO9212rS6kbWmLOTVqCHdqGFRL16XbNqLa6w8jcHyZw0rfJMBo/WDtQf43so7ZGX3twRRH+BCotp3mhLY99P9M3WTFS/p3XZ23UMth05xbuWjFmbXJZtLEseeA16bElSlya77LV6qV0uY1DLbbVA9nrIw7oqRHTjijWus7BtA+5CAiGNgS4jbWqVwYNhTofe1lvwbleZftSq9FkjLSt6MCjR61PF4snyY5tUy77oMvTnq6p8zmEhwPGYy6tgl0I8GLSGDYUI48Bb17v65svI52QjXRrlyMS2r46+EPZWDuAEBrWtU6wxz1ZvKhBJblDK9luxrQW0167bTwKGuv4we5BDq6HGobaHaONXRslvjgbN5U1P0eVNPB2+J5GPHjv0/yn+az2KN2Q0AAAAASUVORK5CYII="}}'),WJ=JSON.parse('{"version":1,"image":{"width":1248,"height":832,"fileName":"bedroom.jpg"},"camera":{"fovYDeg":46.84,"fx":886.546,"fy":591.0306,"cx":256.0001,"cy":255.9998,"net":512,"frame":"+X right, +Y down, +Z forward; meters; OpenCV"},"planes":[{"id":1,"kind":"floor","polygon3D":[[-4.0513,1.1899,-1.3067],[2.5725,1.1899,-2.0753],[3.87,0.1831,9.1068],[-2.7538,0.1831,9.8754]],"polygon2D":[[-174467.9,23273.1],[111806.3,23273.1],[1542.3,435.3],[21.4,433.8]],"pixelCount":101427},{"id":2,"kind":"wall","polygon3D":[[0.2754,3.5068,7.4975],[1.8879,3.5068,6.156],[1.4729,-6.0368,5.6572],[-0.1396,-6.0368,6.9987]],"polygon2D":[[703.4,865.2],[1286.7,963.1],[1186.6,-608.9],[580.9,-412.4]],"pixelCount":45487},{"id":3,"kind":"wall","polygon3D":[[-1.6906,3.9065,5.5869],[-0.1653,3.9065,7.3877],[0.198,-6.2752,7.08],[-1.3272,-6.2752,5.2792]],"polygon2D":[[-29.9,1087.5],[575.6,923.9],[684.4,-435.3],[80.7,-725.6]],"pixelCount":24698}],"planeIds":{"width":512,"height":512,"dataPng":"data:image/png;base64,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"},"shading":{"width":128,"height":128,"neutral":128,"dataPng":"data:image/png;base64,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"}}'),WX=JSON.parse('{"version":1,"image":{"width":1248,"height":832,"fileName":"entryway.jpg"},"camera":{"fovYDeg":46.86,"fx":886.1516,"fy":590.7677,"cx":255.9999,"cy":255.9997,"net":512,"frame":"+X right, +Y down, +Z forward; meters; OpenCV"},"planes":[{"id":1,"kind":"floor","polygon3D":[[-8.6435,1.1708,2.4254],[1.2106,1.1708,-3.7261],[8.3191,0.9709,7.661],[-1.535,0.9709,13.8125]],"polygon2D":[[-7073.7,879.4],[52923.7,22895.4],[2969.5,537.7],[384,483.5]],"pixelCount":69575},{"id":2,"kind":"wall","polygon3D":[[-0.9123,3.856,3.1077],[-0.7274,3.856,6.2012],[-0.6851,-4.4714,6.1987],[-0.8699,-4.4714,3.1052]],"polygon2D":[[-10.1,1607.1],[370.6,1012.9],[385.3,-276.5],[18.9,-966.4]],"pixelCount":47763},{"id":3,"kind":"wall","polygon3D":[[-0.888,4.3857,6.582],[1.1141,4.3857,6.5081],[1.1088,-5.5794,6.3649],[-0.8933,-5.5794,6.4388]],"polygon2D":[[332.6,1055.7],[993.8,1062.9],[1000.3,-425.5],[324.3,-415.9]],"pixelCount":41609},{"id":4,"kind":"wall","polygon3D":[[1.2093,4.5168,6.7312],[1.1406,4.5168,3.9536],[1.1241,-5.6604,3.954],[1.1929,-5.6604,6.7316]],"polygon2D":[[1012.1,1060.2],[1247.1,1512.8],[1238.1,-958.3],[1006.8,-391.2]],"pixelCount":34711},{"id":5,"kind":"wall","polygon3D":[[-0.9999,3.3374,7.7388],[0.4764,3.3374,7.6913],[0.4746,-4.56,7.6329],[-1.0018,-4.56,7.6804]],"polygon2D":[[344.9,830],[757.8,832.6],[758.3,-157.5],[342.3,-154]],"pixelCount":5560}],"planeIds":{"width":512,"height":512,"dataPng":"data:image/png;base64,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"},"shading":{"width":128,"height":128,"neutral":128,"dataPng":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAIAAABMXPacAAAACXBIWXMAAAPoAAAD6AG1e1JrAAAgAElEQVR42t2dabdsVXWG628ZHSMOjckIQ6MkRlDEFsVegyIYEAIqKii9NEJCK52A9CJEWmlCJ9IoCILNH8lz93PrZZ659t7nXO6HDDM/1KhTp2rXrvmu2c811+aCCy648MILfYQuuuiiiy+++MeFLrnkkv+c6L8muuyyy6644oorr7zyqquuuvrqq3/yk59cc801d9xxx913333XXXf99wL9x18/nXfeeeeee+75558vry7a0sUThVeQzy/YST+a6PwtnTcRF9zkHbMAcLlLL700AMD9yy+/fATgxhtv/PlE991337333vv/D4DKshUM5D6PFwxUAcil9gHQlv8SAFn+DQC4f+2111533XW33XbbPffcAwb3TvT/CQD5tSsG4f6FW1rh/rwEzMpUAAj3oasmcvnD/euvv/6GG25AEd15551gABINg79e7p911lnnnHPOrhhE81y4kyoAYpAr7ACgSUAESgCgBgASUJc/3P/pT3/6s5/97NZbb7399tubHNx///2/+tWv/k/Y95NV4iewjK7c0hVbunyiyyaCFUsYwFBZF4URTi5hsCgBjfsNgEiArK/6J8sfMwAAt9xyC6b4gQce+OWW5P7DDz/80EMPHTxDf7pKN0zE/Vy3JdbHQQLADx8xkGAfrIu2CMfl5LoWWpSA0QDsBQB+PACw/PGF4D5Mh/UYZJ6H+w8++CB/HijH79hJfMUBAbCOwR4B4OfDmREDGArTXK8xpRcVqkIw6wJ1CRgd0FkANABRQQHggS258Efu83iQAKxjMAvACgZ7BwAmjBjAt/B65H6TgwbAuVvatE/Ocl8A4v9cPVG1wPz4m266iSUPr+G+vB65z/NHHnnkIAHAxqDoljC4fqIRAG71IAEYMYjmUBSqDp8FYN4NrTDOml8BaA6oP6ABIJdl+hL3oQMyyLMA4PJib5YkwFtqAMxicKAAwJPYAy0wBCtXABCDmIH5OGDJAa0xsPqnAhAXKACgdlz469yXDhIAhODmm29u3PdR7jdTLAAVA+X4QAGAM7wiB2Ho6I+uA9A80V0AqAagOqANAF0gAMD9l9fw96GJ4D6PgNG4L0IHCQBCwJdW7jczEAzkfjAQhgAgzWIgDAahwiBb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"}}'),WZ=JSON.parse('{"version":1,"image":{"width":1152,"height":768,"fileName":"living-room.jpg"},"camera":{"fovYDeg":46.91,"fx":885.0345,"fy":590.023,"cx":255.9995,"cy":256.0006,"net":512,"frame":"+X right, +Y down, +Z forward; meters; OpenCV"},"planes":[{"id":1,"kind":"floor","polygon3D":[[-9.0471,1.1441,1.2581],[1.4149,1.1441,-4.3437],[8.6732,0.813,9.2121],[-1.7888,0.813,14.8138]],"polygon2D":[[-13743.9,1188.8],[56926.9,20635.4],[2450.8,462.1],[335.5,432.6]],"pixelCount":88236},{"id":2,"kind":"wall","polygon3D":[[-2.2646,3.6145,7.9916],[0.9936,3.6145,8.0919],[0.9975,-6.0145,7.964],[-2.2607,-6.0145,7.8638]],"polygon2D":[[11.7,784.3],[820.5,779.3],[825.4,-284.4],[3.5,-292.9]],"pixelCount":48816},{"id":3,"kind":"wall","polygon3D":[[-1.6686,3.4823,6.2591],[1.6181,3.4823,6.3756],[1.6324,-5.6636,5.9733],[-1.6544,-5.6636,5.8569]],"polygon2D":[[45.1,876.4],[1081.4,867.4],[1120.2,-455.1],[13.5,-471.8]],"pixelCount":28145},{"id":4,"kind":"wall","polygon3D":[[1.2612,4.5356,9.3158],[1.5173,4.5356,5.2171],[1.4349,-6.4437,5.2119],[1.1788,-6.4437,9.3107]],"polygon2D":[[845.6,814.9],[1155.1,1153.4],[1124.2,-710.2],[828.1,-228.5]],"pixelCount":20909}],"planeIds":{"width":512,"height":512,"dataPng":"data:image/png;base64,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"},"shading":{"width":128,"height":128,"neutral":128,"dataPng":"data:image/png;base64,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"}}'),W$=JSON.parse('{"version":1,"image":{"width":2000,"height":1300,"fileName":"room-example-11.jpg"},"camera":{"fovYDeg":46.86,"fx":908.9087,"fy":590.7906,"cx":255.9987,"cy":256.0001,"net":512,"frame":"+X right, +Y down, +Z forward; meters; OpenCV"},"planes":[{"id":1,"kind":"floor","polygon3D":[[1.2985,1.1722,5.5054],[-1.6272,1.1722,4.846],[-0.6999,0.9798,0.7309],[2.2259,0.9798,1.3902]],"polygon2D":[[1837.4,969.4],[-192.2,1012.9],[-2399.9,2660.9],[6684.7,1707.2]],"pixelCount":21724},{"id":2,"kind":"wall","polygon3D":[[-0.9505,3.4707,3.555],[0.6996,3.4707,4.0983],[0.6109,-4.2935,4.3676],[-1.0392,-4.2935,3.8243]],"polygon2D":[[50.7,2114.5],[1606,1920.3],[1496.6,-824.6],[35.2,-1034.1]],"pixelCount":135151},{"id":3,"kind":"wall","polygon3D":[[0.7451,2.7204,4.5579],[1.0313,2.7204,3.7229],[1.0502,-4.07,3.7293],[0.7639,-4.07,4.5644]],"polygon2D":[[1580.4,1545.3],[1983.6,1746.1],[1999.8,-987.1],[1594.2,-687.6]],"pixelCount":28490}],"planeIds":{"width":512,"height":512,"dataPng":"data:image/png;base64,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"},"shading":{"width":128,"height":128,"neutral":128,"dataPng":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAIAAABMXPacAAAACXBIWXMAAAPoAAAD6AG1e1JrAAAgAElEQVR42t2dabM9RZGHzyfypREy4zgG4QjMDG6gosiqCLigICKiCAjI5gIygLgMoDOy7/u+KbKKiriGn2We0w83yZtVXafv/UPMhXxxok+f7j7dv19VZlZWVvbqmmuuufbaa6+77rqfT/KLSf5nkv/tyS9/+cvY9rBfLJBy2M+3Szmm+2v+ybu9rpFrG/Hp+PzvLfnZz37mJ/LTLfnJT37y4x//+Oqrr/7Rj3501VVXXXnllf81yeWXX/7DH/7w0ksv/f73v/+9733v4osvZuPcc889/fTTL7vsMg7m4jfccAN3fv3113vwD37wA5C57777br/99htvvPHWW2/ltvmJywLdo48++tBDD91zzz0cc/fdd/N11aIvFgX0VoKAJTSUYwq+3esU6Ls0KOVrMBEb12xJpiFEAuQATK+c5IorrpADMAVrYIWA7373u2x/61vfOuusszjGc/0JoPnkdO7klltu4Sv/zjG33XYbN8z+u+6668knn3zggQdghcvy07333vvYY4+t4hkKWGP0uxxk+NqvLYLl4IVctv2gJaDbMwoHmYboBPYA5IpJ7ASATicAaPvBOeecQyfgGM769re/fcEFF3znO9+5+eabAQTcQZ/9/BGfdKk77riDJn/nnXfS3vnkdK5DT+ITAp544olVbv4BQYGe/uWnGwMCxjLoHHOH+bU99+czMiCg2xWkIRRREBD9QMUiBxAA4pdccomqhuPPOOMM0L/oooto6WDNfXI1DuYvuEn+kYZPq/feQO/CCy/kYAi4//77af6csormP4e+0KPprk8SBGRjsJCDwdd8qS43c1wu56NYiMwBgGoGwhJEJwhLcN555wEiKgjc+fX888/nmqh7LgUsXAT0ORh8UTU0eZ6IA/gLegC9hF/B7YlJOABUV8XwikLgrhT0cz/ocuDXLjFzO3fH5UYOBgqq0CAHxRSHJVAR0eoBl1aPFoIGDgABTuS2uQi3xHW44COPPHL3JNwVV/DiDz/8MHw8/fTTbHD8r371K87lpzUBBbXc8EU/ZEBAxq71nQZu1RIC8mEDhdb6Tgs7hHoJmLI7FFooFNGlk3z961/nE4Y4kgM4mJvhdLQQoPN500030dhp4OznAHil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"}}'),W0=JSON.parse('{"version":1,"image":{"width":2000,"height":1300,"fileName":"room-example-12.jpg"},"camera":{"fovYDeg":46.91,"fx":907.7026,"fy":590.0067,"cx":255.9981,"cy":256.0012,"net":512,"frame":"+X right, +Y down, +Z forward; meters; OpenCV"},"planes":[{"id":1,"kind":"floor","polygon3D":[[2.672,1.316,6.1305],[-2.0106,1.316,6.4245],[-2.3631,0.9879,0.8107],[2.3196,0.9879,0.5167]],"polygon2D":[[2545.4,971.6],[-109.7,956.9],[-9335.6,2475.7],[16917.9,3514.4]],"pixelCount":38744},{"id":2,"kind":"wall","polygon3D":[[-1.3052,3.3024,4.7978],[0.8197,3.3024,5.4447],[0.7214,-5.1365,5.7676],[-1.4035,-5.1365,5.1207]],"polygon2D":[[35.4,1681.1],[1533.8,1558.6],[1443.5,-684.1],[28.2,-852.7]],"pixelCount":115187},{"id":3,"kind":"wall","polygon3D":[[0.8416,-1.0331,5.8907],[1.269,-1.0331,4.6406],[1.3241,-2.633,4.6594],[0.8967,-2.633,5.9096]],"polygon2D":[[1506.6,387.3],[1969.6,316.5],[2007.6,-196.6],[1538,-17.5]],"pixelCount":6152},{"id":4,"kind":"wall","polygon3D":[[0.6327,2.4819,4.523],[1.048,2.4819,4.4645],[1.0956,-4.2751,4.8023],[0.6803,-4.2751,4.8608]],"polygon2D":[[1496,1472],[1832.3,1482.8],[1808.9,-683.6],[1496.2,-667.6]],"pixelCount":1290}],"planeIds":{"width":512,"height":512,"dataPng":"data:image/png;base64,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"},"shading":{"width":128,"height":128,"neutral":128,"dataPng":"data:image/png;base64,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"}}'),W1=JSON.parse('{"version":1,"image":{"width":2000,"height":1300,"fileName":"room-example-13.jpg"},"camera":{"fovYDeg":46.89,"fx":908.1038,"fy":590.2675,"cx":255.9987,"cy":256.0003,"net":512,"frame":"+X right, +Y down, +Z forward; meters; OpenCV"},"planes":[{"id":1,"kind":"floor","polygon3D":[[3.2792,1.3056,9.6119],[-2.7571,1.3056,10.1592],[-3.8115,0.6999,-1.4706],[2.2248,0.6999,-2.0179]],"polygon2D":[[2210.2,853.6],[37.3,842.6],[-269409.8,21629.6],[158842.3,21629.6]],"pixelCount":31534},{"id":2,"kind":"wall","polygon3D":[[-0.5743,3.32,3.4235],[0.7368,3.32,2.7668],[0.8568,-3.7711,3.0063],[-0.4542,-3.7711,3.6631]],"polygon2D":[[405,2103.4],[1944.7,2448.4],[2011,-1230],[560.1,-892.9]],"pixelCount":125424},{"id":3,"kind":"wall","polygon3D":[[-1.3321,-1.8048,5.0373],[-0.8869,-1.8048,5.8802],[-0.903,-2.8694,5.8887],[-1.3482,-2.8694,5.0458]],"polygon2D":[[61.9,113],[465,190],[456.1,-80.3],[52.2,-202.3]],"pixelCount":1336}],"planeIds":{"width":512,"height":512,"dataPng":"data:image/png;base64,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"},"shading":{"width":128,"height":128,"neutral":128,"dataPng":"data:image/png;base64,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"}}'),W2=JSON.parse('{"version":1,"image":{"width":2000,"height":1300,"fileName":"room-example-14.jpg"},"camera":{"fovYDeg":46.85,"fx":909.0403,"fy":590.8762,"cx":255.9978,"cy":256.0005,"net":512,"frame":"+X right, +Y down, +Z forward; meters; OpenCV"},"planes":[{"id":1,"kind":"floor","polygon3D":[[-2.94,1.12,1.7007],[2.0573,1.12,0.6517],[2.9124,1.076,4.7249],[-2.085,1.076,5.7739]],"polygon2D":[[-5138.6,1638],[12210.4,3228.5],[3188.8,991.7],[-282.3,929.6]],"pixelCount":39164},{"id":2,"kind":"wall","polygon3D":[[-1.149,3.2799,4.3039],[0.9715,3.2799,4.4413],[0.9888,-4.3113,4.174],[-1.1317,-4.3113,4.0366]],"polygon2D":[[52,1793.3],[1776.7,1758],[1841.2,-899.6],[4.5,-952.3]],"pixelCount":124984},{"id":3,"kind":"wall","polygon3D":[[1.0927,4.0707,4.5124],[1.1069,4.0707,3.8596],[1.0596,-4.7237,3.8586],[1.0454,-4.7237,4.5114]],"polygon2D":[[1859.9,2003.4],[2018.4,2232.3],[1975.1,-1186.6],[1822.8,-920.9]],"pixelCount":12478},{"id":4,"kind":"wall","polygon3D":[[-0.9813,6.4779,3.8224],[-0.9379,6.4779,8.338],[-1.1517,-5.9419,8.3401],[-1.1951,-5.9419,3.8244]],"polygon2D":[[88.4,3192.5],[600.6,1815.6],[509.6,-418.9],[-109.7,-1680.9]],"pixelCount":1820}],"planeIds":{"width":512,"height":512,"dataPng":"data:image/png;base64,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"},"shading":{"width":128,"height":128,"neutral":128,"dataPng":"data:image/png;base64,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"}}'),W3=JSON.parse('{"version":1,"image":{"width":2000,"height":1300,"fileName":"room-example-15.jpg"},"camera":{"fovYDeg":46.78,"fx":910.4678,"fy":591.8041,"cx":256.0003,"cy":256.0005,"net":512,"frame":"+X right, +Y down, +Z forward; meters; OpenCV"},"planes":[{"id":1,"kind":"floor","polygon3D":[[-3.567,1.4458,5.8989],[-2.171,1.4458,0.6437],[3.5896,1.349,2.174],[2.1936,1.349,7.4292]],"polygon2D":[[-1150.6,1018.3],[-10994.8,4024.9],[6872.4,1582.4],[2050.1,922.8]],"pixelCount":29996},{"id":2,"kind":"wall","polygon3D":[[-1.0442,4.4985,3.8051],[0.3624,4.4985,4.7905],[0.3446,-4.8826,4.816],[-1.062,-4.8826,3.8305]],"polygon2D":[[24,2426.5],[1269,2061],[1254.5,-873.4],[14,-1265.3]],"pixelCount":125241},{"id":3,"kind":"wall","polygon3D":[[0.5026,4.5778,5.3354],[1.2253,4.5778,4.2733],[1.123,-5.197,4.2037],[0.4002,-5.197,5.2657]],"polygon2D":[[1335,1939.3],[2019.8,2259.7],[1950.1,-1207.7],[1270.3,-833]],"pixelCount":63743},{"id":4,"kind":"wall","polygon3D":[[-0.7092,2.1349,4.0964],[0.4431,2.1349,2.7453],[0.4197,0.1215,2.7254],[-0.7326,0.1215,4.0764]],"polygon2D":[[384.3,1433.1],[1574,1818.5],[1547.7,717],[360.8,694.8]],"pixelCount":1277}],"planeIds":{"width":512,"height":512,"dataPng":"data:image/png;base64,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"},"shading":{"width":128,"height":128,"neutral":128,"dataPng":"data:image/png;base64,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"}}'),W4=JSON.parse('{"version":1,"image":{"width":2000,"height":1300,"fileName":"room.jpg"},"camera":{"fovYDeg":46.86,"fx":909.32,"fy":591.06,"cx":256,"cy":256,"net":512,"frame":"+X right, +Y down, +Z forward; meters; OpenCV"},"planes":[{"kind":"floor","polygon3D":[[1.2985,1.1722,5.5054],[-1.6272,1.1722,4.846],[-0.6999,0.9798,0.7309],[2.2259,0.9798,1.3902]],"polygon2D":[[1837.4,969.4],[-192.2,1012.9],[-2399.9,2660.9],[6684.7,1707.2]],"pixelCount":21724,"id":1},{"kind":"wall","polygon3D":[[-0.9505,3.4707,3.555],[0.6996,3.4707,4.0983],[0.6109,-4.2935,4.3676],[-1.0392,-4.2935,3.8243]],"polygon2D":[[50.7,2114.5],[1606,1920.3],[1496.6,-824.6],[35.2,-1034.1]],"pixelCount":135151,"id":2},{"kind":"wall","polygon3D":[[0.7451,2.7204,4.5579],[1.0313,2.7204,3.7229],[1.0502,-4.07,3.7293],[0.7639,-4.07,4.5644]],"polygon2D":[[1580.4,1545.3],[1983.6,1746.1],[1999.8,-987.1],[1594.2,-687.6]],"pixelCount":28490,"id":3}],"planeIds":{"width":512,"height":512,"dataPng":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAIAAAB7GkOtAAAACXBIWXMAAAPoAAAD6AG1e1JrAAAP1klEQVR42u3d627bOBCAUdl+/3feBQoEbWzLNEVKM5xzfi3abJvqMl+s63YHSOjBYZvNCBAAAQAQAAEAEAABABAAAQAQAAEAEAABABAAAQAQAAEAEAABABAAAQAQAAEAEAABABAAAQDQAAEAEAABABAAAQAQAAEABAABAAQAAQAEAAEABAABAAQAAQAEAAEABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAAAUAAAAFAAAABQAAAAUAAAAFAAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAEAAEABAABAAQAAQAEAAEABAABAAQAAQAEAABABAAAQAQAAEAEAABABAAAQAQAAEAEAABABAAAQAQAAEAEAABABAAAQAQAAEAEAABABAAAQAQAAEAEAABABAAAQAwAQXAEAAEABAABAAQAAQAEAAEABAABAAQAAEAEAABABAAAQAQAAEAEAABABAAAQAQAAEAEAABABAAAQAQAAEAEAABABAAAQAQAAEAEAABABAAAQAQAAEAEAABABAAAQAEAAEABAABAAQAAQAEAAEABAABAAQAAQAEAABABAAAQAQAAEAEAABABAAAQAQAAEAEAABABAAAQAQAAEAEAABABAAAQAQAAEAEAABABAAAQAQAAEAEAABABAAAQAEAAEABAABAAQAAQAEAAEABAABAAQAAQAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAABQAAAAUAAAAFAAAABQAAAAUAAAAFAAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAAXg9rJ8IACAA68/6lwQAEIBac18AAO51Zr0AAOQLwDaNAAACsPigFwCAiAHYriMAgACUG/0CAAiAAAgAIAACIACAAAiAAAACIAACAAiAAAgAIAAC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"},"shading":{"width":128,"height":128,"neutral":128,"dataPng":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAIAAABMXPacAAAACXBIWXMAAAPoAAAD6AG1e1JrAAAgAElEQVR42t2dabM9RZGHzyfypREy4zgG4QjMDG6gosiqCLigICKiCAjI5gIygLgMoDOy7/u+KbKKiriGn2We0w83yZtVXafv/UPMhXxxok+f7j7dv19VZlZWVvbqmmuuufbaa6+77rqfT/KLSf5nkv/tyS9/+cvY9rBfLJBy2M+3Szmm+2v+ybu9rpFrG/Hp+PzvLfnZz37mJ/LTLfnJT37y4x//+Oqrr/7Rj3501VVXXXnllf81yeWXX/7DH/7w0ksv/f73v/+9733v4osvZuPcc889/fTTL7vsMg7m4jfccAN3fv3113vwD37wA5C57777br/99htvvPHWW2/ltvmJywLdo48++tBDD91zzz0cc/fdd/N11aIvFgX0VoKAJTSUYwq+3esU6Ls0KOVrMBEb12xJpiFEAuQATK+c5IorrpADMAVrYIWA7373u2x/61vfOuusszjGc/0JoPnkdO7klltu4Sv/zjG33XYbN8z+u+6668knn3zggQdghcvy07333vvYY4+t4hkKWGP0uxxk+NqvLYLl4IVctv2gJaDbMwoHmYboBPYA5IpJ7ASATicAaPvBOeecQyfgGM769re/fcEFF3znO9+5+eabAQTcQZ/9/BGfdKk77riDJn/nnXfS3vnkdK5DT+ITAp544olVbv4BQYGe/uWnGwMCxjLoHHOH+bU99+czMiCg2xWkIRRREBD9QMUiBxAA4pdccomqhuPPOOMM0L/oooto6WDNfXI1DuYvuEn+kYZPq/feQO/CCy/kYAi4//77af6csormP4e+0KPprk8SBGRjsJCDwdd8qS43c1wu56NYiMwBgGoGwhJEJwhLcN555wEiKgjc+fX888/nmqh7LgUsXAT0ORh8UTU0eZ6IA/gLegC9hF/B7YlJOABUV8XwikLgrhT0cz/ocuDXLjFzO3fH5UYOBgqq0CAHxRSHJVAR0eoBl1aPFoIGDgABTuS2uQi3xHW44COPPHL3JNwVV/DiDz/8MHw8/fTTbHD8r371K87lpzUBBbXc8EU/ZEBAxq71nQZu1RIC8mEDhdb6Tgs7hHoJmLI7FFooFNGlk3z961/nE4Y4kgM4mJvhdLQQoPN500030dhp4OznAHil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"}}');let W9={arizo:{PRIVACY_URL:"https://arizo.ru/privacy-policy/",POSTER_URL:"https://viewer.arizo.ru/poster/app/index.html",ROOM_URL:"https://integrations.arizo.ru/room-viewer",TERMS_URL:"https://arizo.ru/terms-of-use/"},vizbl:{PRIVACY_URL:"https://vizbl.com/legal/privacy-policy",POSTER_URL:"https://viewer.vizbl.com/poster/app/index.html",ROOM_URL:"https://integrations.vizbl.com/room-viewer",TERMS_URL:"https://vizbl.com/legal/terms-of-use"}};function W5(e){return new URL(`public/room-example/${e}`,"https://cdn.neurodyn.ai/LG8wPakWNRI1O7ssxPuAcY61sOV3nsofvg4tHjAoumHFWIFoX9u0yeIk9K19I8_J55pBcLct6_ytKI9fCz4/").toString()}function W8(e={}){return{...W4,image:{...W4.image,...e}}}let W6=[{id:"room-example-11",name:"Room Example 11",image_url:W5("room-example-11.jpg"),scene:W$},{id:"room-example-12",name:"Room Example 12",image_url:W5("room-example-12.jpg"),scene:W0},{id:"room-example-13",name:"Room Example 13",image_url:W5("room-example-13.jpg"),scene:W1},{id:"room-example-14",name:"Room Example 14",image_url:W5("room-example-14.jpg"),scene:W2},{id:"room-example-15",name:"Room Example 15",image_url:W5("room-example-15.jpg"),scene:W3}],W7=[{id:"carpet-bathroom",name:"Bathroom",image_url:W5("bathroom.jpg"),scene:WY},{id:"carpet-bedroom",name:"Bedroom",image_url:W5("bedroom.jpg"),scene:WJ},{id:"carpet-entryway",name:"Entryway",image_url:W5("entryway.jpg"),scene:WX},{id:"carpet-living-room",name:"Living Room",image_url:W5("living-room.jpg"),scene:WZ}],qe="RcSd3KphTyq_JQEjNCqKQA,gu0109ftQmS-UQkwcW010Q,nOfGLIZcRVeU93wOkHWSbg,ozzH5I2kQMW20ao-33C86A,DBA4wR-zT92vjtuOk9varg".split(",").map(e=>e.trim()).filter(Boolean);function qt(e){return e.hid??""}function qr({includeViewedObject:e=!1}={}){var t;let{material:r,tinuuid:n,viewedObject:i,setMaterial:a,setTinuuid:s,apiKey:o,baseURL:l,source:c,widgetSession:u,setAccessError:d,setLoadError:h}=Wb(),p=r?qt(r):"",A=i?.owner?.uuid,{data:f,error:g,isFetchingNextPage:m,fetchNextPage:v,hasNextPage:b,isLoading:y}=s5({queryKey:["room-viewer","public-objects",{apiKey:(t={apiKey:o,baseURL:l,source:c}).apiKey??null,ownerUuid:A??null,source:t.source}],enabled:!!A,queryFn:({pageParam:e,signal:t})=>{if(!A)throw Error("Owner uuid is required.");return VM(A,e,{apiKey:o,baseURL:l,signal:t,source:c,widgetSession:u})},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},s9,void 0),w=(0,rc.useMemo)(()=>f?.pages.flatMap(e=>e.objs??[])??[],[f]),x=(0,rc.useMemo)(()=>{let t=w.filter(e=>!!(e.tinuuid&&e.materials?.[0]&&!(i?.uuid&&e.uuid===i.uuid||i?.tinuuid&&e.tinuuid===i.tinuuid)));return e?[...i?.tinuuid&&i.materials?.[0]?[i]:[],...t]:t},[w,e,i]),C=(0,rc.useMemo)(()=>x.flatMap(e=>e.tinuuid?e.materials?.map(t=>{let r=qt(t);return r&&e.tinuuid?{materialId:r,material:t,tinuuid:e.tinuuid}:null}).filter(e=>null!==e)??[]:[]),[x]),E=x.find(e=>e.tinuuid===n),S=x.find(e=>e.tinuuid&&e.materials?.[0]);return(0,rc.useEffect)(()=>{let e=GZ(g);e?d(e):g&&h("viewer-load-failed")},[g,d,h]),(0,rc.useEffect)(()=>{f&&0===x.length&&b&&!m&&v()},[f,v,b,m,x.length]),(0,rc.useEffect)(()=>{if(null!==r)return;let e=E??S,t=e?.materials?.[0];e&&t&&e.tinuuid&&(a(t),s(e.tinuuid))},[S,E,r,a,s]),{fetchNextMaterialsPage:(0,rc.useCallback)(()=>{!1===b||m||v()},[v,b,m]),hasNextPage:b,isFetchingNextPage:m,isLoading:y,materialItems:C,selectMaterial:(0,rc.useCallback)(e=>{let t=x.find(t=>t.materials?.some(t=>qt(t)===e)),r=t?.materials?.find(t=>qt(t)===e);return!!t&&!!r&&!!t.tinuuid&&(a(r),s(t.tinuuid),!0)},[x,a,s]),selectedMaterialId:p}}function qn({className:e,...t}){let{material:r,options:n,selectMaterial:i}=function(){let{material:e,setMaterial:t,setTinuuid:r,apiKey:n,baseURL:i,source:a,widgetSession:s}=Wb(),o=function({queries:e,...t},r){let n=rp(void 0),i=rc.useContext(sJ),a=rc.useContext(sX),s=rc.useMemo(()=>e.map(e=>{let t=n.defaultQueryOptions(e);return t._optimisticResults=i?"isRestoring":"optimistic",t}),[e,n,i]);s.forEach(e=>{s1(e),sZ(e,a)}),s$(a);let[o]=rc.useState(()=>new sY(n,s,t)),[l,c,u]=o.getOptimisticResult(s,t.combine),d=!i&&!1!==t.subscribed;rc.useSyncExternalStore(rc.useCallback(e=>d?o.subscribe(tX.batchCalls(e)):tT,[o,d]),()=>o.getCurrentResult(),()=>o.getCurrentResult()),rc.useEffect(()=>{o.setQueries(s,t)},[s,t,o]);let h=l.some((e,t)=>s3(s[t],e))?l.flatMap((e,t)=>{let r=s[t];if(r){let t=new sj(n,r);if(s3(r,e))return s4(r,t,a);s2(e,i)&&s4(r,t,a)}return[]}):[];if(h.length>0)throw Promise.all(h);let p=l.find((e,t)=>{let r=s[t];return r&&s0({result:e,errorResetBoundary:a,throwOnError:r.throwOnError,query:n.getQueryCache().get(r.queryHash),suspense:r.suspense})});if(p?.error)throw p.error;return c(u())}({queries:qe.map(e=>({queryKey:VS(e,{apiKey:n,baseURL:i,source:a}),queryFn:({signal:t})=>VI(e,{apiKey:n,baseURL:i,signal:t,source:a,widgetSession:s})}))});(0,rc.useEffect)(()=>{let n=o[0]?.data,i=n?.materials?.[0],a=n?.tinuuid;null===e&&i&&a&&(t(i),r(a))},[e,o,t,r]);let l=(0,rc.useMemo)(()=>o.flatMap(e=>{let t=e.data,r=t?.materials?.[0];return t?.tinuuid&&r?.hid?[{material:r,materialId:r.hid,tinuuid:t.tinuuid}]:[]}),[o]),c=(0,rc.useCallback)(e=>{let n=l.find(t=>t.materialId===e);return!!n&&(t(n.material),r(n.tinuuid),!0)},[l,t,r]);return{material:e,options:l,selectMaterial:c}}(),{containerRef:a}=Wy(),{t:s}=st();return(0,rd.jsxs)(W_,{className:Vk("w-fit",e),...t,children:[(0,rd.jsx)(WP,{className:"text-xs text-text-sub font-medium",children:s("material")}),(0,rd.jsxs)(WH,{value:r?.hid??void 0,onValueChange:i,children:[(0,rd.jsx)(WG,{className:"w-[145px]",size:"md",children:(0,rd.jsxs)(Wj,{placeholder:s("chooseMaterial"),children:[(0,rd.jsx)("div",{className:"size-5 rounded-full border border-border-light",style:{backgroundColor:`#${r?.miniature?.color?.hex}`}}),r?.miniature?.color?.name]})}),(0,rd.jsx)(WV,{portalContainer:a,children:n.map(({material:e,materialId:t,tinuuid:r})=>(0,rd.jsxs)(WW,{value:t,children:[(0,rd.jsx)("div",{className:"size-5 rounded-full border border-border-light",style:{backgroundColor:`#${e?.miniature?.color?.hex}`}}),e.miniature?.color?.name]},`${r}-${t}`))})]})]})}let qi=(0,rc.createContext)(null),qa=(0,rc.createContext)(null);function qs({value:e,defaultValue:t,onValueChange:r,...n}){let[i,a]=(0,rc.useState)(t),s=e??i,o=(0,rc.useMemo)(()=>({value:s}),[s]),l=(0,rc.useCallback)(t=>{r?.(t),void 0===e&&a(t)},[r,e]);return(0,rd.jsx)(qi,{value:o,children:(0,rd.jsx)(ga,{"data-slot":"tabs",value:s,onValueChange:l,...n})})}let qo=la("cursor-pointer group inline-flex items-center justify-center shrink-0 whitespace-nowrap outline-none transition-colors relative z-10 text-text-base [&_svg]:text-icons-normal [&_svg]:transition-colors hover:text-text-dark hover:[&_svg]:text-icons-dark active:bg-background-base-3 active:text-text-dark active:[&_svg]:text-icons-dark data-[state=active]:bg-background-white data-[state=active]:text-text-dark data-[state=active]:[&_svg]:text-icons-dark disabled:pointer-events-none disabled:opacity-50 focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background",{variants:{size:{default:"h-7 rounded-lg px-2 typo-button-normal active:rounded-lg data-[state=active]:rounded-lg [&_svg]:size-4",sm:"h-6 rounded-[4px] px-2 typo-button-small active:rounded-lg data-[state=active]:rounded-lg [&_svg]:size-4",lg:"h-9 rounded-lg px-3 typo-button-big active:rounded-lg data-[state=active]:rounded-lg [&_svg]:size-6"}},defaultVariants:{size:"default"}}),ql=la("relative inline-flex items-center rounded-xl bg-background-base-2",{variants:{size:{default:"p-1",sm:"p-[3px]",lg:"p-1"}},defaultVariants:{size:"default"}});function qc({className:e,children:t,size:r="default",...n}){let i=(0,rc.use)(qi),a=(0,rc.useRef)(null),s=(0,rc.useRef)(new Map),o=(0,rc.useRef)(null),l=(0,rc.useRef)(i?.value),c=(0,rc.useRef)(null),u=(0,rc.useCallback)(()=>{c.current=null;let e=o.current;if(!e)return;let t=l.current;if(!t){e.style.opacity="0";return}let r=a.current,n=s.current.get(t);if(!r||!n){e.style.opacity="0";return}let i=Math.round(n.offsetLeft),u=Math.round(n.offsetTop),d=Math.round(n.offsetWidth),h=Math.round(n.offsetHeight);e.style.transform=`translate3d(${i}px, ${u}px, 0)`,e.style.width=`${d}px`,e.style.height=`${h}px`,e.style.opacity="1"},[]),d=(0,rc.useCallback)(()=>{null===c.current&&(c.current=requestAnimationFrame(()=>{u()}))},[u]),h=(0,rc.useCallback)((e,t)=>{t?s.current.set(e,t):s.current.delete(e),d()},[d]);(0,rc.useLayoutEffect)(()=>{l.current=i?.value,null!==c.current&&(cancelAnimationFrame(c.current),c.current=null),u()},[i?.value,u]),(0,rc.useEffect)(()=>{let e=a.current;if(!e||"u"<typeof ResizeObserver)return;let t=new ResizeObserver(()=>d());t.observe(e);let r=i?.value;if(r){let e=s.current.get(r);e&&t.observe(e)}return()=>{t.disconnect()}},[d,i?.value]),(0,rc.useEffect)(()=>()=>{null!==c.current&&cancelAnimationFrame(c.current)},[]);let p=(0,rc.useMemo)(()=>({registerTrigger:h,size:r}),[h,r]);return(0,rd.jsx)(go,{ref:a,"data-slot":"tabs-list",className:Vk(ql({size:r}),e),...n,children:(0,rd.jsxs)(qa,{value:p,children:[(0,rd.jsx)("div",{ref:o,"aria-hidden":!0,"data-slot":"tabs-indicator",className:"pointer-events-none absolute top-0 left-0 z-0 rounded-lg bg-background-white opacity-0 transition-[transform,width,height,opacity] duration-[250ms] ease-out motion-reduce:transition-none"}),t]})})}function qu({className:e,size:t,children:r,value:n,...i}){let a=(0,rc.use)(qa),s=(0,rc.useRef)(null),o=t??a?.size??"default",l=Vk("relative z-10 inline-flex items-center justify-center","lg"===o?"gap-1.5":"gap-1");return(0,rc.useLayoutEffect)(()=>{if(a&&n)return a.registerTrigger(n,s.current),()=>{a.registerTrigger(n,null)}},[a,n]),(0,rd.jsx)(gc,{ref:s,"data-slot":"tabs-trigger",className:Vk(qo({size:o}),"data-[state=active]:bg-transparent",e),value:n,...i,children:(0,rd.jsx)("span",{"data-slot":"tabs-trigger-content",className:l,children:r})})}function qd(e,t="m"){switch(t){case"cm":return e/100;case"in":return .0254*e;case"m":return e}}function qh(e){let{t}=st();return(0,rc.useMemo)(()=>[{value:0,label:t("mattingOptions.none")},{value:.05,label:`${Number((function(e,t){switch(t){case"cm":return 5;case"in":return 1.9685039370078743}})(.05,e).toFixed(2)).toString()} ${t(`units.${e}`)}`}],[e,t])}function qp({className:e,...t}){let{displayUnit:r}=Wm(),{matting:n,setMatting:i}=Ww(),{t:a}=st(),s=qh(r);return(0,rd.jsxs)(W_,{className:Vk("w-fit",e),...t,children:[(0,rd.jsx)(WP,{className:"text-xs text-text-sub font-medium",children:a("matting")}),(0,rd.jsx)(qs,{value:n.toString(),onValueChange:e=>i(Number(e)),children:(0,rd.jsx)(qc,{children:s.map(e=>(0,rd.jsx)(qu,{value:e.value.toString(),children:e.label},e.value))})})]})}qc.displayName=go.displayName,qu.displayName=gc.displayName,gd.displayName;let qA=/oklch\(([0-9.]+)\s+([0-9.]+)\s+([0-9.]+)\)/;function qf(e,t){let r=e.match(qA);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 qg({data:e,foreground:t,background:r,robustness:n="M",className:i,...a}){let[s,o]=(0,rc.useState)(null);return((0,rc.useEffect)(()=>{(async()=>{try{let i=getComputedStyle(document.documentElement),a=t??i.getPropertyValue("--foreground"),s=r??i.getPropertyValue("--background"),l=qf(a,[.21,.006,285.885]),c=qf(s,[.985,0,0]),u=await vK.toString(e,{type:"svg",color:{dark:vW(vq({mode:"oklch",...l})),light:vW(vq({mode:"oklch",...c}))},width:200,errorCorrectionLevel:n,margin:0});o(u)}catch(e){console.error(e)}})()},[e,t,r,n]),s)?(0,rd.jsx)("div",{className:Vk("size-full","[&_svg]:size-full",i),dangerouslySetInnerHTML:{__html:s},...a}):null}function qm({className:e,buttonClassName:t,buttonLeadingIcon:r,buttonLabel:n,buttonSize:i,buttonVariant:a="contrast",...s}){let{placement:o,type:l,width:c,height:u,name:d}=Wm(),{src:h,tinuuid:p,widgetSession:A}=Wb(),{containerRef:f,resourceRef:g}=Wy(),{t:m,i18n:v}=st(),b=function(){let{i18n:e}=st();return"ru"===(e.resolvedLanguage??e.language)?"arizo":"vizbl"}(),[y,w]=(0,rc.useState)(""),[x,C]=(0,rc.useState)(""),[E,S]=(0,rc.useState)(()=>A?.token),[I,M]=(0,rc.useState)(!1),[B,k]=(0,rc.useState)(!1),T=(0,rc.useRef)(null),R=v.resolvedLanguage??v.language,D=W9[b],_=(0,rc.useMemo)(()=>(function({height:e,language:t,name:r,src:n,tenantConfig:i,tinuuid:a,placement:s,type:o,width:l,widgetSessionToken:c,pageUrl:u}){if("floor"===s&&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:u,language:R,name:d,src:h,tenantConfig:D,tinuuid:p,placement:o,type:l,width:c,widgetSessionToken:E,pageUrl:"u"<typeof window?void 0:window.location.href}),[h,p,o,l,c,u,d,R,D,E]),P=(0,rc.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 A?.getTokenForRequest().catch(()=>A.token))}let N=async()=>{if("floor"===o){if(!p)return;if(WS&&P){VC(A,"appclip"),window.location.assign(P);return}await L(),M(!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),WS){let t=new M1,r=await t.parseAsync(e),n=new File([r],"scene.usdz",{type:"model/vnd.usdz+zip"});w(URL.createObjectURL(n))}else{let t=new Bt,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(),M(!0)};return((0,rc.useEffect)(()=>((""!==y||""!==x)&&T.current?.activateAR(),()=>{""!==y&&URL.revokeObjectURL(y),""!==x&&URL.revokeObjectURL(x)}),[y,x]),WI&&WM||"floor"===o&&!p)?null:(0,rd.jsxs)("div",{className:Vk(e),...s,children:[(0,rd.jsxs)(VR,{variant:a,size:i,disabled:B,onClick:N,className:t,children:[r,n??m("ar.viewInPlace")]}),(0,rd.jsx)(VD,{open:I,onOpenChange:M,children:(0,rd.jsxs)(VN,{className:"gap-6 sm:max-w-120",showCloseButton:!1,portalContainer:f,children:[(0,rd.jsx)("div",{className:"flex items-center justify-center p-10 bg-constant-white rounded-2xl",children:(0,rd.jsx)(qg,{className:"size-48",robustness:"H",data:_})}),(0,rd.jsx)("p",{className:"text-lg text-center text-text-sub font-medium",children:m("ar.scanQrCode")}),(0,rd.jsxs)("p",{className:"text-xs text-center text-text-light",children:[m("ar.deviceRequirementsDisclaimer"),(0,rd.jsx)("br",{}),(0,rd.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,rd.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,rd.jsx)(VP,{asChild:!0,children:(0,rd.jsx)(VR,{variant:"contrast",size:"lg",children:m("close")})})]})}),(0,rd.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})]})}let qv={width:void 0,height:void 0};function qb(e,t,r){return e[t]?Array.isArray(e[t])?e[t][0][r]:e[t][r]:"contentBoxSize"===t?e.contentRect["inlineSize"===r?"width":"height"]:void 0}function qy(e){return e.image.width/e.image.height}async function qw(e,t,r){let n=new Image;n.crossOrigin="anonymous",await new Promise((t,r)=>{n.onload=()=>t(),n.onerror=()=>r(Error("Failed to decode room plane id map.")),n.src=e});let i=document.createElement("canvas"),a=i.getContext("2d");if(!a)throw Error("Failed to get 2D context for room plane id map.");i.width=t,i.height=r,a.drawImage(n,0,0,t,r);var s=a.getImageData(0,0,t,r);let o=new Uint8Array(t*r);for(let e=0;e<o.length;e++)o[e]=s.data[4*e]??0;return{data:o,width:t,height:r}}async function qx(e,t){return new Promise((r,n)=>{e.toBlob(e=>{e?r(e):n(Error(t))},"image/png")})}function qC({ref:e}){let{camera:t,gl:r,invalidate:n,scene:i}=Q4();return(0,rc.useImperativeHandle)(e,()=>({capture:async()=>{let e;n(),await new Promise(e=>requestAnimationFrame(()=>e()));let a=(e=new Map,i.traverse(t=>{!0===t.userData.excludeFromCapture&&(e.set(t,t.visible),t.visible=!1)}),()=>{e.forEach((e,t)=>{t.visible=e})});try{return r.render(i,t),await qx(r.domElement,"Failed to create scene share image")}finally{a(),n()}}}),[t,r,n,i]),null}let qE=new bE(0,0,1),qS=new bE(0,0,1);function qI(e){return new bC().setFromUnitVectors(qE,e.clone().normalize())}function qM(e,t,r,n){let i,a,s,o,l,c,u=(a=new bE((i=e.geometry.attributes.position).getX(0),i.getY(0),i.getZ(0)),s=new bE(i.getX(1),i.getY(1),i.getZ(1)),o=new bE(i.getX(2),i.getY(2),i.getZ(2)),l=new bE().crossVectors(s.sub(a),o.sub(a)).normalize(),c=r.position.clone().sub(t).normalize(),0>l.dot(c)&&l.multiplyScalar(-1),l),d=t.clone().addScaledVector(u,.05),h=function(e,t){if("floor"===t)return qI(e);let r=e.clone().normalize(),n=qS.clone().addScaledVector(r,-qS.dot(r));if(1e-6>n.lengthSq())return qI(r);n.normalize();let i=new bE().crossVectors(n,r).normalize(),a=new yd().makeBasis(i,n,r);return new bC().setFromRotationMatrix(a)}(u,n);return{position:d.toArray(),quaternion:h.toArray(),activePlaneId:e.userData.planeId}}function qB(e){return{placementKey:e,planeIdMap:null,resourcePose:null}}function qk(e,t){if("reset-placement"===t.type)return qB(t.placementKey);if(t.placementKey!==e.placementKey)return e;switch(t.type){case"reset-plane-id-map":return{...e,planeIdMap:null};case"set-plane-id-map":return{...e,planeIdMap:t.planeIdMap};case"set-resource-pose":return{...e,resourcePose:t.resourcePose}}}let qT="NEURODYN_ROOM_SCENE_PATCH";function qR(e,t){let r=e.onBeforeCompile,n=e.customProgramCacheKey.bind(e),i=e.side,a=e.transparent,s=e.alphaToCoverage;return e.side=2,e.transparent=!0,e.alphaToCoverage=!0,e.onBeforeCompile=(n,i)=>{r?.call(e,n,i),function(e,t){e.uniforms.uPlaneIds={value:t.planeIdsTexture},e.uniforms.uShading={value:t.shadingTexture},e.uniforms.uActiveId=t.activePlaneIdUniform,e.uniforms.uPlaneIdsSize={value:t.planeIdsSize},e.uniforms.uViewport={value:t.viewport};let r=`
7485
7465
  {
7486
7466
  vec2 _neurodynRoomUv = gl_FragCoord.xy / uViewport;
7487
7467
  float _neurodynRoomCoverage = neurodynRoomScenePlaneCoverage(_neurodynRoomUv);
@@ -7532,4 +7512,4 @@ Defaulting to \`null\`.`));let u=Ws(a,c)?a:null,d=Wi(u)?o(u,c):void 0;return(0,r
7532
7512
  `);if(n.includes("#include <output_fragment>")){e.fragmentShader=n.replace("#include <output_fragment>",`${r}
7533
7513
  #include <output_fragment>`);return}e.fragmentShader=n.replace("#include <opaque_fragment>",`${r}
7534
7514
  #include <opaque_fragment>`)}(n,t)},e.customProgramCacheKey=()=>`${n()}|neurodyn-room-scene-v2`,e.needsUpdate=!0,()=>{e.onBeforeCompile=r,e.customProgramCacheKey=n,e.side=i,e.transparent=a,e.alphaToCoverage=s,e.needsUpdate=!0}}function qD(e,t,r){let n=e.clone().sub(t).applyQuaternion(r);return Math.atan2(n.y,n.x)}let q_={excludeFromCapture:!0};function qP({resourceBounds:e}){let{resourceRef:t,rotation:r,setIsDragging:n,setRotation:i}=Wy(),a=UO("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABAAAAAQACAYAAAB/HSuDAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDkuMS1jMDAyIDc5LmI3YzY0Y2NmOSwgMjAyNC8wNy8xNi0xMjozOTowNCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDI2LjAgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QjYxMUY4MDQ3RTJDMTFGMTlCMkNBN0Y1RDJDNzNDQzYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QjYxMUY4MDU3RTJDMTFGMTlCMkNBN0Y1RDJDNzNDQzYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpCNjExRjgwMjdFMkMxMUYxOUIyQ0E3RjVEMkM3M0NDNiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpCNjExRjgwMzdFMkMxMUYxOUIyQ0E3RjVEMkM3M0NDNiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PiAtRloAAIYkSURBVHja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"),s=(0,rc.useRef)(null),o=(0,rc.useMemo)(()=>{let t,r;return r=1.15*Math.max((t=e.getSize(new bE)).x,t.y),{positionZ:e.min.z-.001*r,side:r}},[e]);(0,rc.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,rd.jsxs)("mesh",{"position-z":o.positionZ,userData:q_,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 bC),c=a.getWorldPosition(new bE),u=new bE(0,0,1).applyQuaternion(l);s.current={center:c,initialPoint:e.point.clone(),initialRotation:r,plane:new xU().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 bE);r&&i(function({center:e,currentPoint:t,initialPoint:r,initialRotation:n,surfaceQuaternion:i}){let a=i.clone().invert(),s=qD(r,e,a),o=qD(t,e,a);return((n+bw.radToDeg(o-s)+180)%360+360)%360-180}({...t,currentPoint:r}))},onPointerUp:l,children:[(0,rd.jsx)("planeGeometry",{args:[o.side,o.side]}),(0,rd.jsx)("meshBasicMaterial",{map:a,transparent:!0,depthWrite:!1,side:2,toneMapped:!1})]})}let qL=Math.PI/2;function qN(e){let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId)}function qO({glbUrl:e,position:t,quaternion:r,materialPatch:n}){let{type:i}=Wm(),{resourceRef:a,rotation:s,setIsDragging:o}=Wy(),l=zk(e),{sceneInstance:c,materials:u,resourceBounds:d}=(0,rc.useMemo)(()=>{let e,t=l.scene.clone(!0),r=(e=new Set,t.traverse(t=>{if(!t.isMesh||!t.material)return;if(Array.isArray(t.material)){t.material=t.material.map(t=>{let r=t.clone();return e.add(r),r});return}let r=t.material.clone();e.add(r),t.material=r}),Array.from(e)),n=new bK().setFromObject(t).applyMatrix4(new yd().makeRotationX(qL));return{sceneInstance:t,materials:r,resourceBounds:n}},[l]),h=(0,rc.useMemo)(()=>bw.degToRad(s),[s]);return(0,rc.useLayoutEffect)(()=>{let e=u.map(e=>qR(e,n));return()=>{e.forEach(e=>e())}},[u,n]),(0,rd.jsx)("group",{ref:a,position:t,quaternion:r,onPointerDown:e=>{e.nativeEvent.stopPropagation(),e.target.setPointerCapture(e.pointerId),o(!0)},onPointerUp:e=>{qN(e),o(!1)},onPointerCancel:e=>{qN(e),o(!1)},children:(0,rd.jsxs)("group",{"rotation-z":h,children:["rugs"===i?(0,rd.jsx)(qP,{resourceBounds:d}):null,(0,rd.jsx)("group",{"rotation-x":qL,children:(0,rd.jsx)("primitive",{object:c})})]})})}function qF(){let{room:e}=Wv(),t=Q4(e=>e.scene),r=Q8(Sm,e.image_url);return(0,rc.useLayoutEffect)(()=>(r.colorSpace="srgb",t.background=r,()=>{t.background===r&&(t.background=null)}),[t,r]),null}function qQ({plane:e,geometry:t,setPlaneRef:r}){return(0,rd.jsx)("mesh",{ref:t=>r(e,t),geometry:t,userData:{planeId:e.id,kind:e.kind},children:(0,rd.jsx)("meshBasicMaterial",{visible:!1,side:2})})}function qU(e,t){(0,rc.useLayoutEffect)(()=>{let r=e.current;if(r)return qR(r,t)},[e,t])}let qz=[1,1,1];function qH({node:e,position:t,scale:r=qz,uvScale:n,materialPatch:i}){let a=(0,rc.useRef)(null);return(0,rc.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,rc.useLayoutEffect)(()=>{let e=a.current?.material;if(!e)return;let t=(Array.isArray(e)?e:[e]).map(e=>qR(e,i));return()=>{t.forEach(e=>e())}},[i,e]),(0,rd.jsx)(zD,{ref:a,object:e,position:t,scale:r})}function qj({width:e,height:t,materialPatch:r}){let{material:n}=Wb(),{nodes:i}=zk(n?.native?.glbUrl),a=(0,rc.useMemo)(()=>{let e=new bE,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,rd.jsxs)("group",{children:[(0,rd.jsx)(qH,{node:a.normalizedNodes.vizbl0,position:[-e/2+a.cornerSize.width/2-.001,t/2-a.cornerSize.height/2+.001,0],materialPatch:r}),(0,rd.jsx)(qH,{node:a.normalizedNodes.vizbl1,position:[0,t/2-a.barThickness.top/2+.001,0],scale:[l,1,1],uvScale:l,materialPatch:r}),(0,rd.jsx)(qH,{node:a.normalizedNodes.vizbl2,position:[e/2-a.cornerSize.width/2+.001,t/2-a.cornerSize.height/2+.001,0],materialPatch:r}),(0,rd.jsx)(qH,{node:a.normalizedNodes.vizbl3,position:[e/2-a.barThickness.right/2+.001,0,0],scale:[1,d,1],uvScale:d,materialPatch:r}),(0,rd.jsx)(qH,{node:a.normalizedNodes.vizbl4,position:[e/2-a.cornerSize.width/2+.001,-t/2+a.cornerSize.height/2-.001,0],materialPatch:r}),(0,rd.jsx)(qH,{node:a.normalizedNodes.vizbl5,position:[0,-t/2+a.barThickness.bottom/2-.001,0],scale:[c,1,1],uvScale:c,materialPatch:r}),(0,rd.jsx)(qH,{node:a.normalizedNodes.vizbl6,position:[-e/2+a.cornerSize.width/2-.001,-t/2+a.cornerSize.height/2-.001,0],materialPatch:r}),(0,rd.jsx)(qH,{node:a.normalizedNodes.vizbl7,position:[-e/2+a.barThickness.left/2-.001,0,0],scale:[1,u,1],uvScale:u,materialPatch:r})]})}function qG({width:e,height:t,position:r,quaternion:n,materialPatch:i}){let a=(0,rc.useRef)(null);return qU(a,i),(0,rd.jsxs)("mesh",{position:r,quaternion:n,children:[(0,rd.jsx)("planeGeometry",{args:[e,t]}),(0,rd.jsx)("meshStandardMaterial",{ref:a,color:"white"})]})}function qV({src:e,position:t,quaternion:r,materialPatch:n}){let{width:i,height:a}=Wm(),{material:s}=Wb(),{frameWidth:o,matting:l}=Ww(),{angle:c,rotation:u,resourceRef:d,setIsDragging:h}=Wy(),p=Q8(Sm,e),A=(0,rc.useRef)(null),f=(0,rc.useMemo)(()=>bw.degToRad(c),[c]),g=(0,rc.useMemo)(()=>bw.degToRad(u),[u]);qU(A,n);let m=i+2*l,v=a+2*l,b=l>0?m:i,y=l>0?v:a;return(0,rd.jsx)("group",{ref:d,position:t,quaternion:r,onPointerDown:()=>h(!0),onPointerUp:()=>h(!1),onPointerLeave:()=>h(!1),children:(0,rd.jsxs)("group",{rotation:[0,g,f],children:[s?.native?.glbUrl&&o>0&&(0,rd.jsx)(qj,{width:b,height:y,materialPatch:n}),l>0&&(0,rd.jsx)(qG,{width:m,height:v,position:[0,0,.01],materialPatch:n}),(0,rd.jsxs)("mesh",{position:[0,0,.02],children:[(0,rd.jsx)("planeGeometry",{args:[i,a]}),(0,rd.jsx)("meshStandardMaterial",{ref:A,map:p})]})]})})}function qW(){let{placement:e}=Wm(),{src:t,glbUrl:r}=Wb(),{room:n}=Wv(),{patchSceneLoad:i}=Wy(),{gl:a,size:s,camera:o,invalidate:l,raycaster:c,pointer:u}=Q4(),d=(0,rc.useMemo)(()=>n.scene??W8(),[n.scene]),[h,p]=Q8(Sm,[d.planeIds.dataPng,d.shading?.dataPng??"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGNoaGgAAAMEAYFL09IQAAAAAElFTkSuQmCC"]),A=function({camera:e,invalidate:t,pointer:r,raycaster:n,roomId:i,scene:a,placement:s}){let o=`${i}:${s}`,l=(0,rc.useMemo)(()=>({value:0}),[]),[c,u]=(0,rc.useReducer)(qk,o,qB),d=(0,rc.useRef)(null),h=(0,rc.useRef)(new Map),p=(0,rc.useRef)(null),A=c.placementKey===o?c.planeIdMap:null,f=c.placementKey===o?c.resourcePose:null,g=(0,rc.useMemo)(()=>a.planes.filter(e=>"floor"===s?"floor"===e.kind:"floor"!==e.kind),[a,s]),m=(0,rc.useMemo)(()=>g.map(e=>e.id),[g]),v=(0,rc.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*(qy(t)*(t.camera.fx/t.camera.fy)),i,-n]})(e,a)),(r=new wx).setAttribute("position",new wA(t,3)),e.polygon3D.length>=4&&r.setIndex([0,1,2,0,2,3]),r)]})),[a]),b=(0,rc.useMemo)(()=>({artifactsReady:null!==A,placementReady:null!==f,prepareReady:null!==f}),[A,f]),y=(0,rc.useCallback)((e,t)=>{t?h.current.set(e.id,t):h.current.delete(e.id)},[]);(0,rc.useEffect)(()=>{let e=!1;return u({type:"reset-plane-id-map",placementKey:o}),qw(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:"reset-plane-id-map",placementKey:o})}),()=>{e=!0}},[o,a.planeIds]),(0,rc.useEffect)(()=>{u({type:"reset-placement",placementKey:o}),d.current=null,l.value=0,p.current=null},[l,o]);let w=(0,rc.useCallback)((r,n,i=null)=>{let a,c=qM(r,n,e,s),h=i?(a=new bE(...i).applyQuaternion(new bC(...c.quaternion)).add(new bE(...c.position)),{...c,position:a.toArray()}):c;d.current=h.activePlaneId,l.value=h.activePlaneId,u({type:"set-resource-pose",placementKey:o,resourcePose:h}),t()},[l,e,t,o,s]),x=(0,rc.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(function(e,t){let r=Math.floor((e.x+1)*.5*t.width),n=Math.floor((1-e.y)*.5*t.height);if(r<0||n<0||r>=t.width||n>=t.height)return null;let i=t.data[n*t.width+r]??0;return i>0?i:null}(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:m,camera:e,planeIdMap:A,planeMap:h.current,pointer:t,raycaster:n}):null,[m,e,A,n]);(0,rc.useEffect)(()=>{if(!A||null!==f)return;let r=function({allowedPlanes:e,camera:t,planeMap:r,placement:n}){let i=e[0],a=i?r.get(i.id):null;return a?qM(a,function(e){let t=e.geometry.attributes.position,r=new bE;for(let e=0;e<t.count;e++)r.add(new bE(t.getX(e),t.getY(e),t.getZ(e)));return r.divideScalar(Math.max(1,t.count))}(a),t,n):null}({allowedPlanes:g,camera:e,planeMap:h.current,placement:s});r&&(d.current=r.activePlaneId,l.value=r.activePlaneId,u({type:"set-resource-pose",placementKey:o,resourcePose:r}),t())},[l,g,e,t,o,A,f,s]);let C=(0,rc.useCallback)(()=>{let t,n=x(r);if(!n||!f){p.current=null;return}let i=qM(n.object,n.point,e,s);t=new bC(...i.quaternion).invert(),p.current=new bE(...f.position).sub(new bE(...i.position)).applyQuaternion(t).toArray()},[e,x,s,r,f]);return{activePlaneIdUniform:l,handleDrag:(0,rc.useCallback)(()=>{let e=x(r);e&&w(e.object,e.point,p.current)},[x,r,w]),handleDragEnd:(0,rc.useCallback)(()=>{p.current=null},[]),handleDragStart:C,planeGeometries:v,readiness:b,resourcePose:f,setPlaneRef:y}}({camera:o,invalidate:l,pointer:u,raycaster:c,roomId:n.id,scene:d,placement:e}),f=(0,rc.useMemo)(()=>new bx(1,1),[]),g=(0,rc.useMemo)(()=>new bx(d.planeIds.width,d.planeIds.height),[d.planeIds.height,d.planeIds.width]),m=(0,rc.useMemo)(()=>({planeIdsTexture:h,shadingTexture:p,planeIdsSize:g,viewport:f,activePlaneIdUniform:A.activePlaneIdUniform}),[A.activePlaneIdUniform,g,h,p,f]);(0,rc.useLayoutEffect)(()=>{o instanceof wW&&(o.fov=d.camera.fovYDeg),o.position.set(0,0,0),o.up.set(0,0,1),o.lookAt(0,1,0),o.updateProjectionMatrix(),l()},[o,l,d.camera.fovYDeg]),(0,rc.useLayoutEffect)(()=>{h.minFilter=1003,h.magFilter=1003,h.wrapS=1001,h.wrapT=1001,h.generateMipmaps=!1,h.needsUpdate=!0,p.minFilter=1006,p.magFilter=1006,p.wrapS=1001,p.wrapT=1001,p.generateMipmaps=!1,p.needsUpdate=!0},[h,p]),(0,rc.useLayoutEffect)(()=>{a.getDrawingBufferSize(f),f.set(Math.max(1,f.x),Math.max(1,f.y))},[a,s.height,s.width,f]);let{artifactsReady:v,placementReady:b,prepareReady:y}=A.readiness;return(0,rc.useEffect)(()=>{i({artifactsReady:v,placementReady:b,prepareReady:y})},[v,i,b,y]),(0,rd.jsxs)(rd.Fragment,{children:["floor"===e?A.resourcePose&&r&&(0,rd.jsx)(HD,{autoTransform:!1,onDrag:A.handleDrag,onDragEnd:A.handleDragEnd,onDragStart:A.handleDragStart,children:(0,rd.jsx)(qO,{glbUrl:r,position:A.resourcePose.position,quaternion:A.resourcePose.quaternion,materialPatch:m})}):A.resourcePose&&t&&(0,rd.jsx)(HD,{autoTransform:!1,onDrag:A.handleDrag,onDragEnd:A.handleDragEnd,onDragStart:A.handleDragStart,children:(0,rd.jsx)(qV,{src:t,position:A.resourcePose.position,quaternion:A.resourcePose.quaternion,materialPatch:m})}),d.planes.map(e=>(0,rd.jsx)(qQ,{plane:e,geometry:A.planeGeometries.get(e.id),setPlaneRef:A.setPlaneRef},e.id)),(0,rd.jsx)(qF,{})]})}let qq={position:[0,0,0],up:[0,0,1],near:.01,far:100};function qK({className:e,ref:t,captureRef:r,onSizeChange:n,...i}){let{placement:a}=Wm(),{src:s,glbUrl:o}=Wb(),{room:l}=Wv(),{patchSceneLoad:c}=Wy(),{active:u}=HL(),d=qy((0,rc.useMemo)(()=>l.scene??W8(),[l.scene])),h=(0,rc.useRef)(null),p=(0,rc.useRef)(!1),A=(0,rc.useCallback)(e=>{(h.current=e,"function"==typeof t)?t(e):t&&(t.current=e)},[t]),f=Wz("(max-width: 639px)"),{width:g,height:m}=function(e){let t,{ref:r,box:n="content-box"}=e,[{width:i,height:a},s]=(0,rc.useState)(qv),o=(t=(0,rc.useRef)(!1),(0,rc.useEffect)(()=>(t.current=!0,()=>{t.current=!1}),[]),(0,rc.useCallback)(()=>t.current,[])),l=(0,rc.useRef)({...qv}),c=(0,rc.useRef)(void 0);return c.current=e.onResize,(0,rc.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=qb(e,t,"inlineSize"),i=qb(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:h}),v=(0,rc.useMemo)(()=>{if(!g||!m||!d)return null;let e=g,t=m;return f?e=(t=m)*d:g/m>d?e=m*d:t=g/d,{width:e,height:t}},[g,m,d,f]);return(0,rc.useLayoutEffect)(()=>{v&&n?.(v.width,v.height)},[v,n]),(0,rc.useEffect)(()=>{if(!v||p.current)return;p.current=!0;let e=window.setTimeout(()=>{window.dispatchEvent(new Event("resize"))},250);return()=>{window.clearTimeout(e)}},[v]),(0,rc.useEffect)(()=>{c({layoutReady:null!==v})},[c,v]),(0,rc.useEffect)(()=>{c({materialReady:"wall"===a?!!s:!!o})},[o,c,s,a]),(0,rc.useEffect)(()=>{c({assetsReady:!u})},[u,c]),(0,rd.jsx)("div",{ref:A,className:Vk("size-full flex items-center justify-center sm:pt-21 sm:pb-12",e),...i,children:v&&(0,rd.jsx)(jC,{className:"touch-none bg-transparent",frameloop:"demand",camera:qq,gl:{toneMapping:4,toneMappingExposure:1.2,alpha:!0,preserveDrawingBuffer:!0},style:{width:`${v.width}px`,height:`${v.height}px`},children:(0,rd.jsxs)(rc.Suspense,{fallback:null,children:[(0,rd.jsx)(qC,{ref:r}),(0,rd.jsx)(jb,{files:"wall"===a?["https://cdn.neurodyn.ai/assets/hdr/neutral.hdr"]:void 0,preset:"floor"===a?"warehouse":void 0}),(0,rd.jsx)(qW,{})]})})})}async function qY(e){await navigator.clipboard.writeText(e)}function qJ({captureRef:e,fallbackToClipboard:t=!1,fileName:r="room-scene.png",shareMessage:n}){let[i,a]=(0,rc.useState)(!1),[s,o]=(0,rc.useState)(!1),l=(0,rc.useMemo)(()=>"u">typeof navigator&&"function"==typeof navigator.share||t&&"u">typeof navigator&&"function"==typeof navigator.clipboard?.writeText,[t]),c=(0,rc.useCallback)(async()=>{if(!l)return;let i="u">typeof navigator&&"function"==typeof navigator.share,s=window.location.href,o=`${n}
7535
- ${s}`;a(!0);try{if(!i&&t)return void await qY(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,rc.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 qX({captureRef:e,className:t,canvasWrapperClassName:r,chrome:n="default",...i}){let{placement:a,type:s}=Wm(),{containerRef:o,isDragging:l,angle:c,rotation:u,setAngle:d,setRotation:h}=Wy(),{t:p}=st(),A=(0,rc.useRef)(null),f=(0,rc.useRef)(null),g=e??f,m=Wz("(max-width: 639px)"),v=Wz("(min-width: 768px)"),{canShare:b,isSharing:y,share:w}=qJ({captureRef:g,shareMessage:p(`shareMessage.${s}`)}),x=(0,rc.useCallback)(()=>{m&&A.current?.centerView()},[m]);return(0,rd.jsxs)("div",{className:Vk("relative flex items-center justify-center overflow-hidden",t),...i,children:[(0,rd.jsx)(fV,{ref:A,disabled:l,children:(0,rd.jsx)(fW,{wrapperClass:"neurodyn-rzpp-wrapper size-full!",contentClass:"neurodyn-rzpp-content h-full! min-w-full sm:max-w-full",children:(0,rd.jsx)(qK,{captureRef:g,className:r,onSizeChange:x})})}),"default"===n&&(0,rd.jsxs)(rd.Fragment,{children:[(0,rd.jsx)(qm,{className:"absolute bottom-4 left-4 sm:bottom-6 sm:left-6"}),"floor"===a&&(0,rd.jsxs)("div",{className:"bg-button-dark typo-button-normal absolute bottom-6 left-1/2 hidden h-9 -translate-x-1/2 items-center gap-1.5 rounded-lg px-3.75 text-text-white md:inline-flex",children:[(0,rd.jsx)("span",{className:"shrink-0",children:p("scene.position")}),(0,rd.jsx)(WQ,{value:[u],onValueChange:([e])=>h(e??0),min:-180,max:180,step:1,className:"w-29.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":p("scene.position")})]}),(0,rd.jsxs)("div",{className:"absolute right-4 bottom-4 inline-flex items-center gap-2 sm:right-6 sm:bottom-6",children:[("wall"===a||"floor"===a&&!v)&&(0,rd.jsxs)(WN,{children:[(0,rd.jsx)(WO,{asChild:!0,children:(0,rd.jsxs)(VR,{variant:"contrast",size:m?"icon":"default",children:[(0,rd.jsx)(VX,{className:"size-5"}),(0,rd.jsx)("span",{className:"sr-only sm:not-sr-only",children:p("scene.tunePosition")})]})}),(0,rd.jsx)(WF,{className:"px-3 py-3.5 bg-button-dark border-button-dark text-text-white",side:"top",align:"end",portalContainer:o,children:(0,rd.jsxs)(WR,{children:[(0,rd.jsxs)(W_,{orientation:"horizontal",children:[(0,rd.jsx)(WL,{children:p("scene.rotation")}),(0,rd.jsx)(WQ,{value:[u],onValueChange:([e])=>h(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":p("scene.rotation")})]}),"wall"===a&&(0,rd.jsxs)(W_,{orientation:"horizontal",children:[(0,rd.jsx)(WL,{children:p("scene.angle")}),(0,rd.jsx)(WQ,{value:[c],onValueChange:([e])=>d(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":p("scene.angle")})]})]})})]}),"wall"===a&&(0,rd.jsxs)(VR,{variant:"contrast",size:m?"icon":"default",disabled:!b||y,onClick:w,children:[(0,rd.jsx)(V$,{className:"size-5"}),(0,rd.jsx)("span",{className:"sr-only sm:not-sr-only",children:p("scene.share")})]}),m&&"wall"===a&&(0,rd.jsxs)(WN,{children:[(0,rd.jsx)(WO,{asChild:!0,children:(0,rd.jsx)(VR,{variant:"contrast",size:"icon",children:(0,rd.jsx)(VZ,{})})}),(0,rd.jsxs)(WF,{className:"grid gap-5",portalContainer:o,children:[(0,rd.jsx)(qn,{}),(0,rd.jsx)(qp,{})]})]})]})]})]})}function qZ({className:e,gridClassName:t,titleClassName:r,onOpenChange:n,...i}){let{t:a}=st(),s=(0,rc.useRef)(null),{fetchNextMaterialsPage:o,hasNextPage:l,isFetchingNextPage:c,isLoading:u,materialItems:d,selectMaterial:h,selectedMaterialId:p}=qr({includeViewedObject:!0});(0,rc.useEffect)(()=>{let e=s.current;e&&!u&&!c&&l&&0!==d.length&&e.scrollHeight<=e.clientHeight&&o()},[o,l,c,u,d.length]);let A=(0,rc.useCallback)(e=>{let{clientHeight:t,scrollHeight:r,scrollTop:n}=e.currentTarget;n+t>=r-64&&o()},[o]),f=(0,rc.useCallback)(e=>{h(e)&&n(!1)},[n,h]);return(0,rd.jsxs)("div",{...i,className:Vk("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,rd.jsx)("h2",{className:Vk("typo-base-16 font-medium sm:typo-base-14 sm:font-semibold text-text-dark",r),children:a("floor.materialSelection.title")}),(0,rd.jsx)("div",{"data-testid":"material-selection-grid",ref:s,className:Vk("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:A,children:(0,rd.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})=>{let n,i=e===p,a=(n=t.previews?.[0],n?.subRes?.small??n?.url);return(0,rd.jsxs)("button",{type:"button","data-selected":i,"aria-pressed":i,className:Vk("group relative grid aspect-square min-w-0 place-items-center overflow-hidden rounded-lg border border-border bg-background-containers p-1 text-left transition hover:border-icons-normal focus-visible:ring-2 focus-visible:ring-icons-normal focus-visible:outline-hidden"),onClick:()=>f(e),onKeyDown:t=>{("Enter"===t.key||" "===t.key)&&(t.preventDefault(),f(e))},children:[a?(0,rd.jsx)("img",{src:a,alt:"",className:"size-full rounded-md object-cover"}):(0,rd.jsx)(VK,{className:"size-6 text-icons-normal"}),(0,rd.jsx)("span",{className:"sr-only",children:t.name}),i&&(0,rd.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,rd.jsx)(Vj,{className:"size-4"})})]},`${r}-${e}`)}),(u||c)&&(0,rd.jsx)("div",{className:"col-span-3 grid h-16 place-items-center",children:(0,rd.jsx)(V2,{className:"size-6"})})]})})]})}function q$({open:e,portalContainer:t,onOpenChange:r}){let{t:n}=st();return(0,rd.jsx)(VD,{open:e,onOpenChange:r,children:(0,rd.jsxs)(VN,{contentInsideOverlay:!0,"data-testid":"material-selection-mobile-overlay",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,rd.jsx)(VQ,{className:"sr-only",children:n("floor.materialSelection.title")}),(0,rd.jsx)(VU,{className:"sr-only"}),(0,rd.jsx)(qZ,{className:"min-h-0",gridClassName:"max-h-none",onOpenChange:r}),(0,rd.jsx)(VF,{className:"shrink-0 p-0",children:(0,rd.jsx)(VP,{asChild:!0,children:(0,rd.jsx)(VR,{type:"button",variant:"outline",className:"w-full",children:n("close")})})})]})})}let q0="data-material-selection-action",q1="data-material-selection-panel";function q2({actionLabel:e,actionClassName:t,actionPlacement:r,className:n,iconClassName:i,isOpen:a,materialName:s,previewClassName:o,previewUrl:l,testId:c,titleLabel:u,onClick:d,onPointerDown:h}){let p=(0,rd.jsxs)(VR,{type:"button",variant:"outline",size:"sm",[q0]:!0,"aria-expanded":a,className:Vk("trailing"===r?"shrink-0":"w-fit",t),onPointerDown:h?e=>{e.preventDefault(),e.stopPropagation(),h()}:void 0,onClick:d,children:[a?(0,rd.jsx)(VG,{className:"size-4"}):(0,rd.jsx)(VJ,{className:"size-4"}),e]});return(0,rd.jsxs)("div",{className:n,"data-testid":c,children:[(0,rd.jsx)("div",{className:o,children:l?(0,rd.jsx)("img",{src:l,alt:"",className:"size-full object-cover"}):(0,rd.jsx)(VK,{className:i})}),(0,rd.jsxs)("div",{className:"grid min-w-0 flex-1 content-center gap-3",children:[(0,rd.jsxs)("div",{className:"min-w-0",children:[(0,rd.jsx)("div",{className:"sr-only",children:u}),(0,rd.jsx)("div",{className:"typo-button-normal truncate text-text-dark",children:s})]}),"stacked"===r&&p]}),"trailing"===r&&p]})}function q3({actions:e,canShowAr:t,companyName:r,hasActiveError:n,material:i,portalContainer:a,ref:s,room:o,scene:l,showDialogCloseButton:c=!1}){let{t:u}=st(),{type:d}=Wm(),[h,p]=(0,rc.useState)(!1),[A,f]=(0,rc.useState)(!1),g=(0,rc.useRef)(null),m=(0,rc.useRef)(!1),v=u(h?"floor.scene.hideCatalog":`resourceType.${d}.replaceProduct`),b=u(A?"floor.scene.hideCatalog":`resourceType.${d}.replaceProductShort`),y=u(`resourceType.${d}.productCardTitle`),{canShare:w,download:x,isDownloading:C,isSharing:E,share:S}=qJ({captureRef:g,fallbackToClipboard:!0,shareMessage:u(`shareMessage.${d}`)}),I=(0,rc.useCallback)(()=>{p(!1),f(!1)},[]);(0,rc.useImperativeHandle)(s,()=>({closeMaterialSelection:I}),[I]);let M=(0,rc.useCallback)(()=>{if(m.current){m.current=!1;return}p(!0),f(!1)},[]),B=(0,rc.useCallback)(()=>{m.current=!0,I()},[I]),k=(0,rc.useCallback)(()=>{f(!0),p(!1)},[]),T=(0,rc.useCallback)(()=>{I(),e.openInteriorSelection()},[e,I]);return(0,rc.useEffect)(()=>{if(h)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(`[${q0}], [${q1}]`)||p(!1)}function t(e){"Escape"===e.key&&p(!1)}},[h]),(0,rd.jsxs)(rd.Fragment,{children:[(0,rd.jsx)("div",{className:"absolute inset-0 bg-constant-black","data-testid":"floor-scene-background-base"}),(0,rd.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,rd.jsx)("img",{src:o.imageUrl,alt:"",className:"block size-full max-w-none object-cover object-center opacity-50"})}),(0,rd.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,rd.jsx)("div",{className:"min-w-0 pt-1",children:(0,rd.jsx)("h1",{"data-testid":"floor-scene-header-company",className:"typo-base-16 truncate font-medium lg:typo-base-18",children:r})}),(0,rd.jsxs)("div",{className:"pointer-events-auto inline-flex shrink-0 items-center gap-2",children:[(0,rd.jsxs)(VR,{type:"button",variant:"contrast","aria-label":u("floor.scene.share"),disabled:!w||E,onClick:S,className:"size-10 rounded-full px-0 lg:h-9 lg:w-auto lg:rounded-xl lg:px-3.5",children:[(0,rd.jsx)(V$,{className:"size-5"}),(0,rd.jsx)("span",{className:"hidden lg:inline",children:u("floor.scene.share")})]}),(0,rd.jsxs)(VR,{type:"button",variant:"contrast","aria-label":u("floor.scene.download"),disabled:C,onClick:x,className:"size-10 rounded-full px-0 lg:h-9 lg:w-auto lg:rounded-xl lg:px-3.5",children:[(0,rd.jsx)(VV,{className:"size-5"}),(0,rd.jsx)("span",{className:"hidden lg:inline",children:u("floor.scene.download")})]}),c&&(0,rd.jsx)(VP,{asChild:!0,children:(0,rd.jsxs)(VR,{type:"button",variant:"contrast","aria-label":u("close"),className:"size-10 rounded-full px-0 lg:h-9 lg:w-auto lg:rounded-xl lg:px-3.5",children:[(0,rd.jsx)("span",{className:"hidden lg:inline",children:u("close")}),(0,rd.jsx)(VG,{className:"!size-5"})]})})]})]}),(0,rd.jsx)(qX,{captureRef:g,chrome:"none",className:"relative z-10 size-full min-h-0",canvasWrapperClassName:"p-0 sm:pt-0 sm:pb-0"},l.resetKey),(0,rd.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,rd.jsxs)("div",{className:"pointer-events-auto flex min-w-0 items-stretch gap-3",children:[(0,rd.jsx)(q2,{actionLabel:v,actionPlacement:"stacked",className:"flex h-24 w-fit max-w-80 items-center gap-4 overflow-hidden rounded-2xl bg-background-containers p-4 text-left text-text-dark shadow-[var(--shadow-login)]",iconClassName:"size-6 text-icons-normal",isOpen:h,materialName:i.name,previewClassName:"grid size-16 shrink-0 place-items-center overflow-hidden bg-background-base",previewUrl:i.previewUrl,testId:"floor-desktop-product-card",titleLabel:y,onClick:h?I:M,onPointerDown:h?B:void 0}),(0,rd.jsxs)("div",{className:"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)]","data-testid":"floor-room-card",children:[(0,rd.jsx)("img",{src:o.imageUrl,alt:"",className:"size-16 shrink-0 rounded-lg object-cover"}),(0,rd.jsxs)("span",{className:"grid min-w-0 flex-1 content-center gap-2",children:[(0,rd.jsx)("span",{className:"typo-button-normal block min-h-[1.35em] truncate !leading-[1.35] text-text-dark","data-testid":"floor-desktop-room-name",children:o.name}),(0,rd.jsx)(VR,{type:"button",variant:"outline",size:"sm",className:"w-fit",onClick:T,children:u("floor.interiorSelection.chooseInterior")})]})]})]}),t&&(0,rd.jsxs)("div",{className:"pointer-events-auto flex h-24 w-[280px] items-center gap-4 overflow-hidden rounded-2xl bg-button-dark p-4 text-text-white shadow-[var(--shadow-login)]","data-testid":"floor-ar-card",children:[(0,rd.jsx)("img",{src:o.imageUrl,alt:"",className:"size-16 shrink-0 rounded-lg object-cover"}),(0,rd.jsxs)("div",{className:"grid min-w-0 flex-1 content-center gap-2",children:[(0,rd.jsx)(qm,{buttonLabel:u("floor.scene.tryAtHome"),buttonVariant:"secondary",buttonSize:"sm",buttonClassName:"w-fit bg-button-light text-text-dark hover:bg-button-light-hover active:bg-button-light-pressed"}),(0,rd.jsx)("div",{className:"typo-base-12 truncate font-medium text-text-white",children:u("floor.scene.tryAtHomeBody")})]})]})]}),(0,rd.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,rd.jsx)(q2,{actionLabel:v,actionPlacement:"stacked",className:"pointer-events-auto flex h-[116px] w-fit max-w-[421px] items-center gap-4 overflow-hidden rounded-2xl bg-background-containers p-4 text-left text-text-dark shadow-[var(--shadow-login)]",iconClassName:"size-6 text-icons-normal",isOpen:h,materialName:i.name,previewClassName:"grid size-16 shrink-0 place-items-center overflow-hidden bg-background-base",previewUrl:i.previewUrl,testId:"floor-tablet-product-card",titleLabel:y,onClick:h?I:M,onPointerDown:h?B:void 0}),(0,rd.jsxs)("div",{className:"pointer-events-auto grid w-[254px] gap-2",children:[(0,rd.jsxs)("div",{className:"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)]","data-testid":"floor-tablet-room-card",children:[(0,rd.jsxs)("span",{className:"flex min-w-0 items-center gap-2",children:[(0,rd.jsx)("img",{src:o.imageUrl,alt:"",className:"size-10 shrink-0 rounded-full object-cover"}),(0,rd.jsxs)("span",{className:"grid min-w-0",children:[(0,rd.jsx)("span",{className:"typo-base-12 truncate text-text-light",children:u("floor.scene.interiorCardTitle")}),(0,rd.jsx)("span",{className:"typo-button-normal min-h-[1.35em] truncate !leading-[1.35] text-text-dark","data-testid":"floor-tablet-room-name",children:o.name})]})]}),(0,rd.jsx)(VR,{type:"button",variant:"outline",size:"sm",className:"shrink-0",onClick:T,children:u("floor.interiorSelection.chooseInteriorShort")})]}),t&&(0,rd.jsx)(qm,{className:"w-full",buttonLabel:u("floor.scene.tryAtHome"),buttonLeadingIcon:(0,rd.jsx)(V0,{className:"size-5"}),buttonVariant:"contrast",buttonSize:"default",buttonClassName:"h-9 w-full rounded-xl bg-button-dark text-text-white hover:bg-button-dark-hover active:bg-button-dark-pressed"})]})]}),(0,rd.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,rd.jsx)(q2,{actionLabel:b,actionClassName:"w-[137px]",actionPlacement:"stacked",className:"flex items-center justify-start gap-4 border-b border-border-light bg-background-containers p-4 text-left",iconClassName:"size-5 text-icons-normal",isOpen:A,materialName:i.name,previewClassName:"grid size-16 shrink-0 place-items-center overflow-hidden bg-background-base",previewUrl:i.previewUrl,testId:"floor-mobile-product-card",titleLabel:y,onClick:A?I:k}),(0,rd.jsxs)("div",{className:"grid gap-4 bg-background-containers px-6 pt-4 pb-6","data-testid":"floor-mobile-bottom-actions",children:[(0,rd.jsxs)("div",{className:"flex w-full items-center justify-between gap-3 rounded-full bg-background-containers text-left",children:[(0,rd.jsxs)("span",{className:"flex min-w-0 items-center gap-2",children:[(0,rd.jsx)("img",{src:o.imageUrl,alt:"",className:"size-10 shrink-0 rounded-full object-cover"}),(0,rd.jsxs)("span",{className:"grid min-w-0",children:[(0,rd.jsx)("span",{className:"typo-base-12 truncate text-text-light",children:u("floor.scene.interiorCardTitle")}),(0,rd.jsx)("span",{className:"typo-button-normal min-h-[1.35em] truncate !leading-[1.35] text-text-dark","data-testid":"floor-mobile-room-name",children:o.name})]})]}),(0,rd.jsx)(VR,{type:"button",variant:"outline",size:"sm",className:"shrink-0",onClick:T,children:u("floor.interiorSelection.chooseInterior")})]}),t&&(0,rd.jsx)(qm,{className:"w-full",buttonLabel:u("floor.scene.tryAtHome"),buttonLeadingIcon:(0,rd.jsx)(V0,{className:"size-6"}),buttonVariant:"contrast",buttonSize:"lg",buttonClassName:"h-11 w-full rounded-xl bg-button-dark text-text-white hover:bg-button-dark-hover active:bg-button-dark-pressed"})]})]}),h&&!n&&(0,rd.jsx)(qZ,{[q1]:!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:I}),(0,rd.jsx)(q$,{open:A&&!n,portalContainer:a,onOpenChange:f}),(0,rd.jsx)("div",{"aria-hidden":!l.isLoading,className:Vk("absolute inset-0 z-10 flex items-center justify-center bg-radial from-background-containers to-background-base-2 transition-opacity",l.isLoading?"opacity-100 pointer-events-auto duration-0":"opacity-0 pointer-events-none duration-250ms"),children:(0,rd.jsx)(V2,{variant:"logo"})})]})}function q4({rooms:e,customRooms:t,selectedRoomId:r,isInvalidFile:n,uploadRetryRequestId:i=0,showCloseButton:a=!1,onSelectRoom:s,onUploadFile:o}){let l,{t:c}=st(),u=(0,rc.useId)(),d=(0,rc.useRef)(null);function h(e){return e.map(e=>(0,rd.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,rd.jsx)("img",{src:e.image_url,alt:"",decoding:"async",className:"size-full scale-[1.02] transform-gpu object-cover transition duration-200 group-hover:scale-105"}),(0,rd.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,rc.useEffect)(()=>{i>0&&d.current?.click()},[i]),(0,rd.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",children:[a&&(l=(0,rd.jsx)(VR,{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,rd.jsx)(VG,{})}),(0,rd.jsx)(VP,{asChild:!0,children:l})),(0,rd.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,rd.jsxs)("div",{className:"grid gap-2","data-testid":"floor-interior-selection-upload",children:[(0,rd.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,rd.jsx)(VH,{className:"size-5 text-background-blue"}),c("floor.interiorSelection.uploadPhoto"),(0,rd.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,rd.jsx)("p",{className:"typo-base-12 font-medium text-destructive",children:c("floor.interiorSelection.invalidFile")})]}),(0,rd.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,rd.jsxs)("div",{className:"grid min-h-max gap-4",children:[t.length>0&&(0,rd.jsxs)("div",{className:"grid gap-3",children:[(0,rd.jsx)("h3",{className:"typo-base-16 font-medium text-text-light",children:c("floor.interiorSelection.customTitle")}),(0,rd.jsx)("div",{className:"grid grid-cols-2 gap-3 sm:grid-cols-3","data-testid":"floor-custom-interior-selection-grid",children:h(t)})]}),(0,rd.jsxs)("div",{className:"grid gap-3",children:[(0,rd.jsx)("h3",{className:"typo-base-16 font-medium text-text-light",children:c("floor.interiorSelection.presetsTitle")}),(0,rd.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,rd.jsx)(VF,{className:"-mt-2 shrink-0 p-0 sm:mt-0",children:(0,rd.jsx)(VP,{asChild:!0,children:(0,rd.jsx)(VR,{variant:"outline",className:"w-full",children:c("close")})})})]})}function q9(e){return(0,rd.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,rd.jsx)(q4,{...e})})}function q5({open:e,portalContainer:t,onOpenChange:r,...n}){let{t:i}=st();return(0,rd.jsx)(VD,{open:e,onOpenChange:r,children:(0,rd.jsxs)(VN,{contentInsideOverlay:!0,portalContainer:t,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,rd.jsx)(VQ,{className:"sr-only",children:i("floor.interiorSelection.title")}),(0,rd.jsx)(VU,{className:"sr-only"}),(0,rd.jsx)(q4,{...n,showCloseButton:!0})]})})}async function q8(e,t={}){let r=t.source??"default",n={image:e};if(GJ({apiKey:t.apiKey,source:r})){let e=await t.widgetSession?.getTokenForRequest();return Vd(n,{baseURL:t.baseURL,headers:{"x-api-key":t.apiKey,...e?{[Vb]:e}:{}},signal:t.signal,timeout:0,params:{productType:GX({apiKey:t.apiKey,source:r})}})}return t.signal?Vi(n,{signal:t.signal,timeout:0}):Vi(n,{timeout:0})}let q6=[{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 q7(){try{return"1"===window.localStorage.getItem("neurodyn-room-viewer:debug-mask-export")}catch{return!1}}async function Ke(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 A=p.getImageData(0,0,u,d),f=document.createElement("canvas"),g=f.getContext("2d");if(!g)throw Error("Failed to prepare room debug mask canvas.");f.width=u,f.height=d;for(let e=0;e<u*d;e++){let t=4*e,r=function(e){return q6.find(t=>t.id===e)??{id:e,label:`plane-${e}`,rgb:[73*e%255,151*e%255,211*e%255]}}(A.data[t]??0);A.data[t]=r.rgb[0],A.data[t+1]=r.rgb[1],A.data[t+2]=r.rgb[2],A.data[t+3]=255}g.putImageData(A,0,0),n=await new Promise((e,t)=>{f.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 Kt="custom-interiors";function Kr(){return"u">typeof crypto&&"function"==typeof crypto.randomUUID?`custom-interior-${crypto.randomUUID()}`:`custom-interior-${Date.now()}-${Math.random().toString(36).slice(2)}`}function Kn(){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(Kt)||e.createObjectStore(Kt,{keyPath:"id"})},n.onerror=()=>r(n.error??Error("Failed to open Custom Interior store.")),n.onsuccess=()=>t(n.result)}):Promise.resolve(null)}async function Ki(e,t,r=new Date){let n=await Kn();if(!n)return null;let i={id:Kr(),schemaVersion:1,name:e.name,fileName:e.name,createdAt:r.toISOString(),imageBlob:e,scene:t};try{let e=n.transaction(Kt,"readwrite");return e.objectStore(Kt).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 Ka(){let e=await Kn();if(!e)return[];try{return await new Promise((t,r)=>{let n=e.transaction(Kt,"readonly").objectStore(Kt).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 Ks(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 Ko={placementReady:!1,prepareReady:!1,artifactsReady:!1,assetsReady:!1};function Kl(e){let t="dialog"===e?"interior-selection":"scene";return{step:t,hasSceneSelection:"scene"===t,sceneResetKey:0}}function Kc(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 Ku(e,t){return!e.aborted&&t()}async function Kd({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 A=await u(i,{...t,signal:e});if(!Ku(e,a))return null;s()&&n(A,i.name).catch(o);let f=h(i,A);return Ku(e,a)&&f&&(d(i,A).catch(l),c(),await p(),Ku(e,a))?(r(f),f):null}function Kh(){return new Promise(e=>window.setTimeout(e,250))}function Kp(e){console.error("Failed to export room debug mask",e)}function KA(e){console.error("Failed to persist Custom Interior",e)}function Kf(e){console.error("Failed to prepare Custom Interior",e)}let Kg=[{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 Km({isComplete:e,open:t,onCloseAnimationEnd:r,onOpenChange:n,portalContainer:i}){let{t:a}=st(),s=(0,rc.useRef)(t),[o,l]=(0,rc.useState)(8),c=e?100:o,u=function(e){for(let t=Kg.length-1;t>=0;t-=1){let r=Kg[t];if(r&&e>=r.minimumProgress)return r}return Kg[0]}(c);(0,rc.useEffect)(()=>{t&&!s.current&&l(8),s.current=t},[t]),(0,rc.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,rd.jsxs)("div",{role:"status","aria-live":"polite",className:"grid content-start gap-4",children:[(0,rd.jsx)("h2",{className:"typo-base-18 font-medium text-text-dark",children:a("floor.processing.title")}),(0,rd.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,rd.jsxs)("div",{className:"flex min-w-0 items-center justify-between gap-3",children:[(0,rd.jsx)("span",{className:"typo-base-14 min-w-0 flex-1 truncate text-left font-medium text-text-light",children:a(u.translationKey)}),(0,rd.jsxs)("span",{className:"typo-base-14 shrink-0 font-medium text-text-dark",children:[c,"%"]})]}),(0,rd.jsx)(Wo,{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,rd.jsx)(VD,{open:t,onOpenChange:n,children:(0,rd.jsxs)(VN,{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,rd.jsx)(VQ,{className:"sr-only",children:a("floor.processing.title")}),(0,rd.jsx)(VU,{className:"sr-only",children:a(u.translationKey)}),d]})})}function Kv({showDialogCloseButton:e=!1}){var t;let r,{name:n}=Wm(),{accessError:i,tinuuid:a,material:s,apiKey:o,baseURL:l,hasRooms:c,source:u,widgetSession:d,isViewerAccessPending:h,loadError:p,viewedObject:A}=Wb(),{clearActiveError:f,handleAccessError:g}=function(){let{setAccessError:e,setLoadError:t}=Wb();return{clearActiveError:(0,rc.useCallback)(()=>{e(null),t(null)},[e,t]),handleAccessError:e}}(),{room:m,sourceRooms:v}=Wv(),{containerRef:b,setContainerRef:y,sceneLoad:w,isRoomScenePending:x}=Wy(),{dialogPortalContainer:C,viewerSurface:E,viewerDialogOpen:S,onViewerDialogOpenChange:I}=Wg(Wu,"useRoomViewerSurface"),{t:M}=st(),B=(0,rc.useRef)(null),k=i??p,T=M(`rooms.${m.id}`,{defaultValue:m.name}),R=(t=M("floor.scene.companyFallback"),A?.owner?.name??A?.brand??t),D=s?.name??A?.name??n,_=(r=s?.previews?.[0],r?.subRes?.small??r?.url??A?.preview?.subRes?.small??A?.preview?.url??A?.mainPreview),P=function({activeError:e,apiKey:t,baseURL:r,clearActiveError:n,closeMaterialSelection:i,handleAccessError:a,hasDialogPortalContainer:s,hasRooms:o,isRoomScenePending:l,isViewerAccessPending:c,material:u,onViewerDialogOpenChange:d,sceneLoad:h,source:p,sourceRooms:A,viewerDialogOpen:f,viewerSurface:g,widgetSession:m}){let v=function(e){let{patchSceneLoad:t,setAngle:r,setRotation:n}=Wy();return function(e,t){let[r,n]=(0,rc.useReducer)(Kc,e,Kl),i=(0,rc.useCallback)(e=>{e(),function({patchSceneLoad:e,setAngle:t,setRotation:r}){t(0),r(0),e(Ko)}(t),n({type:"commit-interior-selection"})},[t]),a=(0,rc.useCallback)(()=>{n({type:"dismiss-interior-selection"})},[]),s=(0,rc.useCallback)(()=>{n({type:"open-interior-selection"})},[]),o=(0,rc.useCallback)(()=>{n({type:"recover-to-scene"})},[]),l=(0,rc.useCallback)(()=>{n({type:"return-to-interior-selection"})},[]),c=(0,rc.useCallback)(()=>{n({type:"start-custom-interior-processing"})},[]);return(0,rc.useMemo)(()=>({...r,commitInteriorSelection:i,dismissInteriorSelection:a,openInteriorSelection:s,recoverToScene:o,returnToInteriorSelection:l,startCustomInteriorProcessing:c}),[i,a,s,o,l,c,r])}(e,(0,rc.useMemo)(()=>({patchSceneLoad:t,setAngle:r,setRotation:n}),[t,r,n]))}(g),{appendRuntimeCustomInterior:b,customRooms:y}=function({listCustomInteriors:e}){let{appendRuntimeCustomInterior:t,customRooms:r,replaceRuntimeCustomInteriors:n}=function(){let[e,t]=(0,rc.useState)(()=>[]),r=(0,rc.useRef)(null),n=(0,rc.useCallback)(e=>{r.current?.revokeObjectUrls();let n=Ks(e);return r.current=n,t(n.rooms),n.rooms},[]),i=(0,rc.useCallback)((e,n)=>{let i=Ks([{id:Kr(),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,rc.useEffect)(()=>()=>{r.current?.revokeObjectUrls()},[]),(0,rc.useMemo)(()=>({appendRuntimeCustomInterior:i,customRooms:e,replaceRuntimeCustomInteriors:n}),[i,e,n])}(),i=(0,rc.useRef)(!0);(0,rc.useEffect)(()=>(i.current=!0,()=>{i.current=!1}),[]);let a=(0,rc.useCallback)(async()=>{let t=await e();i.current&&n(t)},[e,n]);return(0,rc.useEffect)(()=>{a()},[a]),(0,rc.useMemo)(()=>({appendRuntimeCustomInterior:t,customRooms:r,replaceRuntimeCustomInteriors:n,refreshCustomInteriors:a}),[t,r,a,n])}({listCustomInteriors:Ka}),w=(0,rc.useMemo)(()=>new Set(A.map(e=>e.id)),[A]),{commitCustomInteriorSelection:x,selectInterior:C}=function(e){let{room:t,setRoomId:r,setRooms:n}=Wv(),{widgetSession:i}=Wb();return function({floorFlow:e,customRooms:t,selectedRoomId:r,onInteriorSelected:n,restoreSourceRooms:i,setRoomId:a,setRooms:s}){let o=(0,rc.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,rc.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,rc.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,rc.useCallback)(e=>{t.some(t=>t.id===e)?c(e):l(e)},[t,c,l]);return(0,rc.useMemo)(()=>({commitCustomInteriorSelection:o,selectInterior:u}),[o,u])}({...e,selectedRoomId:t.id,onInteriorSelected:()=>VC(i,"interior_selected"),setRoomId:r,setRooms:n})}({floorFlow:v,customRooms:y,restoreSourceRooms:(0,rc.useCallback)(e=>[...A,...e.filter(e=>!w.has(e.id))],[w,A])}),E=function(e){let{setIsRoomScenePending:t}=Wy();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[A,f]=(0,rc.useState)(!1),[g,m]=(0,rc.useState)(!1),[v,b]=(0,rc.useState)(null),[y,w]=(0,rc.useState)(null),[x,C]=(0,rc.useState)(!1),[E,S]=(0,rc.useState)(0),I=(0,rc.useRef)(null),M=(0,rc.useRef)(!1),B=(0,rc.useRef)(!0),k=(0,rc.useRef)(v);v&&(k.current=v),(0,rc.useEffect)(()=>(B.current=!0,()=>{B.current=!1,I.current?.abort()}),[]);let T=(0,rc.useCallback)(()=>{b(null),w(null),C(!1)},[]),R=(0,rc.useCallback)(e=>{T(),f(!1),e()},[T]),D=(0,rc.useCallback)(async A=>{if(T(),!A.type.startsWith("image/"))return void f(!0);f(!1),m(!1),t.startCustomInteriorProcessing(),M.current=!0;let g=new AbortController;I.current?.abort(),I.current=g,d(!0);try{await Kd({abortSignal:g.signal,apiOptions:e,commitCustomInteriorSelection:r,downloadDebugMask:n,file:A,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=GZ(t);if(e){M.current&&C(!0),a(e);return}if(l(t),M.current){w("custom-interior-processing"),C(!0);return}b("custom-interior-processing")}finally{I.current===g&&(I.current=null,B.current&&d(!1))}},[e,t,r,n,i,a,s,o,l,c,T,u,d,h,p]),_=(0,rc.useCallback)(()=>{T(),f(!1),t.returnToInteriorSelection(),S(e=>e+1)},[t,T]),P=(0,rc.useCallback)(()=>{T(),t.returnToInteriorSelection()},[t,T]),L=(0,rc.useCallback)(({clearError:e,closeMaterialSelection:r})=>{e(),r(),t.hasSceneSelection&&t.recoverToScene()},[t]),N=(0,rc.useCallback)(()=>{M.current=!1,C(!1),y&&(b(y),w(null))},[y]),O=(0,rc.useCallback)(()=>B.current,[]);return(0,rc.useMemo)(()=>({displayedUploadError:v??k.current,isCustomInteriorProcessingComplete:g,isInvalidFile:A,isMounted:O,isProcessingDialogClosingForError:x,pendingUploadError:y,uploadError:v,uploadRetryRequestId:E,cancelUploadError:P,handleProcessingDialogCloseAnimationEnd:N,openInteriorSelection:R,processUploadFile:D,recoverFromActiveError:L,resetUploadErrorPresentation:T,tryUploadAgain:_}),[P,N,g,A,O,x,R,y,D,L,T,_,v,E])}({...e,setIsRoomScenePending:t})}({apiOptions:(0,rc.useMemo)(()=>({apiKey:t,baseURL:r,source:p,widgetSession:m}),[t,r,p,m]),floorFlow:v,commitCustomInteriorSelection:x,downloadDebugMask:Ke,isDebugMaskExportEnabled:q7,onAccessError:a,onDebugMaskError:Kp,onPersistenceError:KA,onProcessingError:Kf,predictRoomScene:q8,saveCustomInterior:Ki,trackRuntimeCustomInterior:b,waitForProcessingCompletion:Kh}),{dismissInteriorSelection:S,hasSceneSelection:I,openInteriorSelection:M,sceneResetKey:B,step:k}=v,{cancelUploadError:T,displayedUploadError:R,handleProcessingDialogCloseAnimationEnd:D,isCustomInteriorProcessingComplete:_,isInvalidFile:P,isProcessingDialogClosingForError:L,openInteriorSelection:N,pendingUploadError:O,processUploadFile:F,recoverFromActiveError:Q,resetUploadErrorPresentation:U,tryUploadAgain:z,uploadError:H,uploadRetryRequestId:j}=E,G=o&&I,V=(0,rc.useRef)(e),W=!!(e&&G&&u);e&&(V.current=e);let q=(0,rc.useCallback)(()=>{G&&(U(),S())},[S,G,U]),K=(0,rc.useCallback)(()=>{i(),N(M)},[i,M,N]),Y=(0,rc.useCallback)(()=>{Q({clearError:n,closeMaterialSelection:i})},[n,i,Q]),J=(0,rc.useCallback)(e=>{if(!e){if(G)return void q();d?.(!1)}},[q,G,d]),X=(0,rc.useCallback)(e=>{if(!e){if(W)return void Y();d?.(!1)}},[W,Y,d]),Z=(0,rc.useCallback)(e=>{e||T()},[T]);!function({fallbackMs:e,handleProcessingDialogCloseAnimationEnd:t,isProcessingDialogClosingForError:r}){(0,rc.useEffect)(()=>{if(!r)return;let n=window.setTimeout(t,e);return()=>window.clearTimeout(n)},[e,t,r])}({fallbackMs:220,handleProcessingDialogCloseAnimationEnd:D,isProcessingDialogClosingForError:L});let $=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,A=!p||d,f=i&&r.hasSceneSelection,g=i||"scene"!==r.step?r.step:"interior-selection",m=!o&&f&&(!e||t),v=f||p,b=!o&&!e&&v,y=!o&&!e&&!v&&"interior-selection"===g;return{activeErrorDialog:{open:!a&&!!e&&A,showCloseButton:!t},interiorSelection:{open:b&&"interior-selection"===g&&A,presentation:b?"dialog":y?"screen":null,shouldRender:b||y},processingDialog:{open:!e&&!u&&!l&&s&&"processing-custom-interior"===r.step&&A},scene:{isLoading:s||!Object.values(c).every(Boolean),resetKey:r.sceneResetKey,shouldRender:m,shouldRenderDialog:m},surface:{usesSiblingDialogFlow:p},uploadErrorDialog:{open:!a&&!e&&!!u&&A}}}({activeError:e,canRecoverFromActiveError:W,floorFlow:{hasSceneSelection:I,sceneResetKey:B,step:k},hasDialogPortalContainer:s,hasRooms:o,isProcessingDialogClosingForError:L,isRoomScenePending:l,isViewerAccessPending:c,pendingUploadError:O,sceneLoad:h,uploadError:H,viewerDialogOpen:f,viewerSurface:g});return{...$,activeErrorDialog:{...$.activeErrorDialog,onCancel:W?Y:void 0,onOpenChange:X,onTryAgain:W?Y:void 0,variant:e??V.current},customRooms:y,interiorSelection:{...$.interiorSelection,isInvalidFile:P,onOpenChange:J,onSelectRoom:C,onUploadFile:F,openFromScene:K,uploadRetryRequestId:j},sourceRooms:A,processingDialog:{...$.processingDialog,isComplete:_,onCloseAnimationEnd:D,onOpenChange:$.surface.usesSiblingDialogFlow?d:void 0},step:k,uploadErrorDialog:{...$.uploadErrorDialog,onCancel:T,onOpenChange:Z,onTryAgain:z,variant:R}}}({activeError:k,apiKey:o,baseURL:l,clearActiveError:f,closeMaterialSelection:(0,rc.useCallback)(()=>{B.current?.closeMaterialSelection()},[]),handleAccessError:g,hasDialogPortalContainer:null!==C,hasRooms:c,isRoomScenePending:x,isViewerAccessPending:h,material:s,onViewerDialogOpenChange:I,sceneLoad:w,source:u,sourceRooms:v,viewerDialogOpen:S,viewerSurface:E,widgetSession:d}),L=P.surface.usesSiblingDialogFlow?C:b,N=P.interiorSelection.shouldRender?"dialog"===P.interiorSelection.presentation?(0,rd.jsx)(q5,{open:P.interiorSelection.open,portalContainer:L,rooms:P.sourceRooms,customRooms:P.customRooms,selectedRoomId:m.id,isInvalidFile:P.interiorSelection.isInvalidFile,uploadRetryRequestId:P.interiorSelection.uploadRetryRequestId,onOpenChange:P.interiorSelection.onOpenChange,onSelectRoom:P.interiorSelection.onSelectRoom,onUploadFile:P.interiorSelection.onUploadFile}):"screen"===P.interiorSelection.presentation?(0,rd.jsx)(q9,{rooms:P.sourceRooms,customRooms:P.customRooms,selectedRoomId:m.id,isInvalidFile:P.interiorSelection.isInvalidFile,uploadRetryRequestId:P.interiorSelection.uploadRetryRequestId,showCloseButton:e,onSelectRoom:P.interiorSelection.onSelectRoom,onUploadFile:P.interiorSelection.onUploadFile}):null:null,O=(0,rd.jsx)(Km,{isComplete:P.processingDialog.isComplete,open:P.processingDialog.open,portalContainer:L,onCloseAnimationEnd:P.processingDialog.onCloseAnimationEnd,onOpenChange:P.processingDialog.onOpenChange}),F=(0,rd.jsxs)(rd.Fragment,{children:[(0,rd.jsx)(WB,{variant:P.activeErrorDialog.variant,open:P.activeErrorDialog.open,portalContainer:L,showDialogCloseButton:e&&P.activeErrorDialog.showCloseButton,onOpenChange:P.activeErrorDialog.onOpenChange,onTryAgain:P.activeErrorDialog.onTryAgain,onCancel:P.activeErrorDialog.onCancel}),(0,rd.jsx)(WB,{variant:P.uploadErrorDialog.variant,open:P.uploadErrorDialog.open,portalContainer:L,onOpenChange:P.uploadErrorDialog.onOpenChange,onTryAgain:P.uploadErrorDialog.onTryAgain,onCancel:P.uploadErrorDialog.onCancel})]}),Q=(0,rd.jsxs)("div",{ref:y,className:"relative grid size-full grid-rows-[minmax(0,1fr)_auto] overflow-hidden text-foreground sm:block","data-testid":"floor-viewer-root",children:[h?(0,rd.jsx)("div",{className:"flex size-full items-center justify-center bg-radial from-background-containers to-background-base-2",children:(0,rd.jsx)(V2,{variant:"logo"})}):P.scene.shouldRender?(0,rd.jsx)(q3,{ref:B,actions:{openInteriorSelection:P.interiorSelection.openFromScene},canShowAr:!!a&&!(WI&&WM),companyName:R,hasActiveError:!!k,material:{name:D,previewUrl:_},portalContainer:L,room:{imageUrl:m.image_url,name:T},scene:{isLoading:P.scene.isLoading,resetKey:P.scene.resetKey},showDialogCloseButton:e}):null,!P.surface.usesSiblingDialogFlow&&N,!P.surface.usesSiblingDialogFlow&&O]});return P.surface.usesSiblingDialogFlow?(0,rd.jsxs)(rd.Fragment,{children:[(P.scene.shouldRenderDialog||h)&&(0,rd.jsx)(VD,{open:S,onOpenChange:I,children:(0,rd.jsxs)(VN,{className:Wl,contentInsideOverlay:!0,portalContainer:C,showCloseButton:!1,onInteractOutside:e=>{e.preventDefault()},children:[(0,rd.jsx)(VQ,{className:"sr-only",children:n}),(0,rd.jsx)(VU,{className:"sr-only"}),Q]})}),N,O,F]}):(0,rd.jsxs)(rd.Fragment,{children:[Q,F]})}function Kb({className:e,...t}){return(0,rd.jsx)(jH,{"data-slot":"radio-group",className:Vk("grid gap-3",e),...t})}function Ky({checked:e,className:t,...r}){return(0,rd.jsx)("div",{className:Vk("absolute top-1/2 left-1/2 size-6 -translate-x-1/2 -translate-y-1/2","flex items-center justify-center rounded-full",e?"bg-lime-400":"bg-background-base-2",t),...r,children:(0,rd.jsx)(c8,{className:"text-constant-white size-3.5",strokeWidth:4})})}function Kw({className:e,variant:t="default",...r}){return(0,rd.jsxs)(jG,{"data-slot":"radio-group-item",className:Vk("border-input text-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 aspect-square size-4 shrink-0 rounded-full border transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50","check"===t&&"size-6","inverted"===t&&"size-5 border-button-outline data-[state=checked]:border-border-red data-[state=checked]:border-4 data-[state=checked]:bg-constant-white cursor-pointer transition-all",e),...r,children:["check"===t&&(0,rd.jsx)("div",{className:"relative",children:(0,rd.jsx)(Ky,{})}),"inverted"!==t&&(0,rd.jsx)(jV,{"data-slot":"radio-group-indicator",className:"relative flex items-center justify-center",children:"check"===t?(0,rd.jsx)(Ky,{checked:!0}):(0,rd.jsx)(c6,{className:"fill-primary absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2"})})]})}function Kx({className:e,children:t,...r}){let{className:n,onReachEnd:i,...a}=r.swiperOptions??{},{t:s}=st(),[o,l]=(0,rc.useState)(null),[c,u]=(0,rc.useState)(!0),[d,h]=(0,rc.useState)(!1),[p,A]=(0,rc.useState)(!1),f=(0,rc.useCallback)(e=>{u(e.isBeginning),h(e.isEnd),A(e.isLocked)},[]),g=(0,rc.useCallback)(e=>{l(e),f(e)},[f]),m=(0,rc.useCallback)(e=>{h(!0),i?.(e)},[i]);return(0,rd.jsxs)("div",{className:Vk("relative w-full overflow-hidden",e),children:[(0,rd.jsx)(GO,{className:Vk("w-full py-5",n),slidesPerView:"auto",slidesPerGroup:2,onSwiper:g,onReachBeginning:()=>u(!0),onReachEnd:m,onFromEdge:f,onLock:()=>A(!0),onUnlock:()=>A(!1),onResize:f,slidesOffsetBefore:24,slidesOffsetAfter:24,spaceBetween:12,...a,children:t}),(0,rd.jsxs)(VR,{className:Vk("absolute top-1/2 left-8 -translate-y-1/2 z-1",{hidden:c||p}),variant:"contrast",size:"icon",onClick:()=>o?.slidePrev(),children:[(0,rd.jsx)(c7,{}),(0,rd.jsx)("span",{className:"sr-only",children:s("previousSlide")})]}),(0,rd.jsxs)(VR,{className:Vk("absolute top-1/2 right-8 -translate-y-1/2 z-1",{hidden:d||p}),variant:"contrast",size:"icon",onClick:()=>o?.slideNext(),children:[(0,rd.jsx)(ue,{}),(0,rd.jsx)("span",{className:"sr-only",children:s("nextSlide")})]})]})}function KC({className:e,...t}){let r=Wz("(max-width: 640px)"),{fetchNextMaterialsPage:n,materialItems:i,selectMaterial:a,selectedMaterialId:s}=qr(),o=(0,rc.useCallback)(()=>{n()},[n]);return 0===i.length?null:(0,rd.jsxs)(rd.Fragment,{children:[!r&&(0,rd.jsx)(WT,{orientation:"vertical"}),(0,rd.jsx)("div",{className:Vk(e),...t,children:(0,rd.jsx)(Kb,{value:s||void 0,onValueChange:e=>{a(e)},children:(0,rd.jsx)(Kx,{swiperOptions:{onReachEnd:o,className:"py-2 sm:py-5"},children:i.map(({materialId:e,material:t,tinuuid:n})=>(0,rd.jsx)(GF,{className:Vk("sm:w-25! w-18! transition-transform duration-200",e!==s&&"hover:scale-110"),children:(0,rd.jsxs)(WP,{htmlFor:`material-${e}`,className:"size-full flex flex-col gap-1 has-data-[state=checked]:bg-transparent",children:[(0,rd.jsxs)("div",{className:"size-full relative sm:h-19 h-13 rounded-[0.75rem] overflow-hidden grid place-items-center sm:block",children:[(0,rd.jsx)("img",{src:t.previews?.[0]?.subRes?.small??t.previews?.[0]?.url,alt:t.name??"",className:"size-full object-cover"}),(0,rd.jsx)(Kw,{value:e,id:`material-${e}`,variant:"check",className:Vk("absolute sm:top-1.75 sm:right-1.75",{"sr-only":e!==s})})]}),!r&&(0,rd.jsx)("span",{className:Vk("block w-full text-xs text-left text-text-light truncate",{"text-text-dark":e===s}),children:t.name})]})},`${n}-${e}`))})})})]})}function KE({className:e,...t}){let{t:r}=st(),{placement:n}=Wm(),{rooms:i,room:a,setRoomId:s}=Wv(),{isRoomScenePending:o,selectCustomRoomFile:l}=Wg(Wf,"useRoomViewerCustomRoomIntake"),c=Wz("(max-width: 640px)"),u=(0,rc.useId)(),d=(0,rc.useCallback)((e,t)=>r(`rooms.${t}`,{defaultValue:e}),[r]),h=(0,rc.useCallback)(async e=>{let t=e.target.files?.[0];e.target.value="",t&&await l(t)},[l]);return(0,rd.jsx)("div",{className:Vk(e),...t,children:(0,rd.jsx)(Kb,{value:a.id,onValueChange:s,children:(0,rd.jsxs)(Kx,{swiperOptions:{className:"py-2 sm:py-5 pb-3 sm:pb-5"},children:[(0,rd.jsx)(GF,{className:"sm:w-25! w-21! h-auto",children:(0,rd.jsxs)(WP,{htmlFor:u,className:Vk("flex size-full cursor-pointer items-center justify-center rounded-[0.75rem] border border-dashed border-muted-foreground/40 bg-transparent px-2 text-center text-xs leading-tight text-muted-foreground transition-colors hover:border-foreground/40 hover:text-foreground",o&&"cursor-wait opacity-80"),"aria-disabled":o,children:[o?(0,rd.jsxs)(rd.Fragment,{children:[(0,rd.jsx)(V2,{className:"size-5"}),(0,rd.jsx)("span",{className:"sr-only",children:r("uploadOwnPhoto")})]}):r("uploadOwnPhoto"),(0,rd.jsx)("input",{id:u,type:"file",accept:"image/*",className:"sr-only",disabled:o,onChange:h})]})}),i.map(e=>(0,rd.jsx)(GF,{className:Vk("sm:w-25! w-21! transition-transform duration-200",e.id!==a.id&&"hover:scale-110"),children:(0,rd.jsxs)(WP,{htmlFor:`room-${e.id}`,className:"size-full flex flex-col gap-1 has-data-[state=checked]:bg-transparent",children:[(0,rd.jsxs)("div",{className:"size-full relative h-17 sm:h-19 rounded-[0.75rem] overflow-hidden",children:[(0,rd.jsx)("img",{src:e.image_url,alt:d(e.name,e.id),className:"size-full object-cover",crossOrigin:"anonymous"}),(0,rd.jsx)(Kw,{value:e.id,id:`room-${e.id}`,variant:"check",className:Vk("absolute top-1.75 right-1.75",{"sr-only":e.id!==a.id})})]}),"floor"===n&&!c&&(0,rd.jsx)("span",{className:Vk("block w-full text-xs text-left text-text-light truncate",{"text-text-dark":e.id===a.id}),children:d(e.name,e.id)})]})},e.id))]})})})}function KS({className:e,...t}){let{placement:r}=Wm();return(0,rd.jsxs)("div",{className:Vk("flex sm:items-end pl-0 overflow-hidden sm:flex-row flex-col py-3 sm:py-0",e),...t,children:[(0,rd.jsx)(KE,{className:Vk("shrink-0",{"sm:min-w-148.5 min-w-full":"floor"===r,grow:"wall"===r})}),"wall"===r&&(0,rd.jsxs)("div",{className:"hidden gap-5 pr-6 pb-5 md:flex",children:[(0,rd.jsx)(qn,{}),(0,rd.jsx)(qp,{})]}),"floor"===r&&(0,rd.jsx)(KC,{})]})}function KI({className:e,...t}){let{name:r}=Wm();return(0,rd.jsx)("div",{className:Vk("h-16 flex items-center px-6",e),...t,children:(0,rd.jsx)("div",{className:"truncate",children:r})})}function KM({variant:e,showDialogCloseButton:t=!1}){let{t:r}=st();return(0,rd.jsxs)("div",{className:"flex size-full flex-col items-center justify-center gap-4 bg-radial from-background-containers to-background-base-2 p-4 text-center",children:[(0,rd.jsx)(Vz,{className:"size-8 text-icons-light"}),(0,rd.jsx)("h2",{className:"typo-base-16 font-medium text-text-dark",children:r(`accessError.${e}`)}),t&&(0,rd.jsx)(VP,{asChild:!0,children:(0,rd.jsx)(VR,{variant:"secondary",children:r("close")})})]})}function KB({showDialogCloseButton:e=!1}){let{placement:t}=Wm(),{isViewerAccessPending:r,accessError:n,hasRooms:i}=Wb(),{setContainerRef:a,sceneLoad:s,isRoomScenePending:o}=Wy(),{t:l}=st(),c=r||o||i&&!Object.values(s).every(Boolean);return"floor"===t?(0,rd.jsx)(Kv,{showDialogCloseButton:e}):n?(0,rd.jsx)("div",{ref:a,className:"relative size-full overflow-hidden bg-radial from-background-containers to-background-base-2 text-foreground",children:(0,rd.jsx)(KM,{variant:n,showDialogCloseButton:e})}):(0,rd.jsxs)("div",{ref:a,className:"relative size-full bg-radial from-background-containers to-background-base-2 text-foreground overflow-hidden",children:[e&&(0,rd.jsx)(VP,{asChild:!0,children:(0,rd.jsxs)(VR,{className:"absolute top-3 right-6 z-20",variant:"secondary",children:[l("close"),(0,rd.jsx)(c4,{})]})}),!r&&(i?(0,rd.jsxs)(rd.Fragment,{children:[(0,rd.jsx)(KI,{className:"absolute top-0 right-0 left-0 z-15"}),(0,rd.jsxs)("div",{className:"size-full max-w-full grid grid-rows-[1fr_auto]",children:[(0,rd.jsx)(qX,{className:"size-full min-h-0"}),(0,rd.jsx)(KS,{className:"bg-background"})]})]}):(0,rd.jsx)(KE,{className:"absolute inset-x-0 bottom-0 bg-background"})),(0,rd.jsx)("div",{"aria-hidden":!c,className:Vk("absolute inset-0 z-10 flex items-center justify-center bg-radial from-background-containers to-background-base-2 transition-opacity",c?"opacity-100 pointer-events-auto duration-0":"opacity-0 pointer-events-none duration-250ms"),children:(0,rd.jsx)(V2,{variant:"logo"})})]})}let Kk={poster:"wallart",carpet:"rugs"},KT={wallart:"wall",rugs:"floor",flooring:"floor"};function KR(e){return"poster"===e||"carpet"===e?Kk[e]:e}let KD=0,K_=[];function KP(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 KL({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:A,externalWidgetSession:f}){var g;let m=function(){let{t:e}=st();return(0,rc.useMemo)(()=>[{value:.025,label:`2.5 ${e("units.cm")}`},{value:.05,label:`5 ${e("units.cm")}`}],[e])}(),v=qh(u),b=KT[n],y="floor"===b?W7:W6,w=GJ({apiKey:h,baseURL:p,source:A}),[x,C]=(0,rc.useState)(r),[E,S]=(0,rc.useState)(null),[I,M]=(0,rc.useState)(m[0].value),[B,k]=(0,rc.useState)(v[0].value),[T,R]=(0,rc.useState)(0),[D,_]=(0,rc.useState)(0),[P,L]=(0,rc.useState)(!1),[N,O]=(0,rc.useState)(null),[F,Q]=(0,rc.useState)(()=>({layoutReady:!1,placementReady:!1,materialReady:!1,artifactsReady:!1,assetsReady:!1,prepareReady:!1})),[U,z]=(0,rc.useState)(!1),[H,j]=(0,rc.useState)(null),[G,V]=(0,rc.useState)(null),W=(0,rc.useRef)(null),q=(0,rc.useRef)(new Set),K=(0,rc.useRef)(null),Y=(0,rc.useRef)(!0),J=(0,rc.useRef)(!1),X="floor"===b,Z="default"===A&&void 0!==h,$=s5({queryKey:["room-viewer","activate",{apiKey:h??null,source:A}],enabled:Z,queryFn:({signal:e})=>Va({productType:GX({apiKey:h,baseURL:p,source:A})},{baseURL:p,headers:{"x-api-key":h},signal:e})},sj,void 0),ee=GZ($.error),et=(0,rc.useMemo)(()=>{let e=$.data;return Vx(e?.widgetSession,{apiConfig:{baseURL:p,headers:{"x-api-key":h}}})},[$.data,h,p]),er=(0,rc.useMemo)(()=>f instanceof Vw?f:Vx(f,{apiConfig:{baseURL:p,headers:{"x-api-key":h}}})??et,[et,h,p,f]),en="shopify"===A?null!==er:Z&&$.isSuccess,ei=s5({queryKey:["room-viewer","rooms",{apiKey:(g={apiKey:h,baseURL:p,source:A,widgetSession:er}).apiKey??null,source:g.source,widgetSessionId:g.widgetSession?.sid??null}],enabled:w&&en,queryFn:async({signal:e})=>{try{return await VB({apiKey:h,baseURL:p,signal:e,source:A,widgetSession:er})}catch(e){if(GZ(e))throw e;return[]}}},sj,void 0),ea=w?ei.data??K_:y,[es,eo]=(0,rc.useState)(()=>({rooms:ea,sourceRooms:ea})),el=(0,rc.useMemo)(()=>KP(es.rooms,es.sourceRooms,ea),[es.rooms,es.sourceRooms,ea]),ec=(0,rc.useCallback)(e=>{eo(t=>{let r=KP(t.rooms,t.sourceRooms,ea);return{rooms:"function"==typeof e?e(r):e,sourceRooms:ea}})},[ea]),[eu,ed]=(0,rc.useState)(()=>y[0].id),eh=el.find(e=>e.id===eu),ep=eh??el[0]??y[0],eA=el.length>0;!eh&&el[0]&&eu!==el[0].id&&ed(el[0].id);let ef=s5({queryKey:VS(r??void 0,{apiKey:h,baseURL:p,source:A}),enabled:(!Z||$.isSuccess||$.isError&&null===ee)&&X&&null===E&&!!r,queryFn:async({signal:e})=>{if(!r)throw Error("Tinuuid is required.");return VI(r,{apiKey:h,baseURL:p,signal:e,source:A,widgetSession:er})}},sj,void 0),eg=ef.data??null,em=E?.native?.glbUrl??null,ev=GZ(ef.error),eb=GZ(ei.error),ey=w&&("shopify"===A?null===er||ei.isLoading:$.isSuccess&&ei.isLoading),ew=Z&&$.isLoading||ey,ex=$.error&&null===ee?"viewer-load-failed":null,eC=ef.error&&null===ev?"viewer-load-failed":null,eE=H??ee??eb??ev,eS=G??ex??eC,eI=(0,rc.useCallback)(e=>{Q(t=>Object.assign({},t,e))},[]);(0,rc.useEffect)(()=>{let e=new Set(el.map(e=>e.image_url));for(let t of Array.from(q.current))e.has(t)||(URL.revokeObjectURL(t),q.current.delete(t))},[el]),(0,rc.useEffect)(()=>{let e=q.current;return Y.current=!0,()=>{for(let t of(Y.current=!1,K.current?.abort(),Array.from(e)))URL.revokeObjectURL(t);e.clear()}},[]);let eM=(0,rc.useCallback)(async e=>{let t=null,r=new AbortController;K.current?.abort(),K.current=r,z(!0);try{t=URL.createObjectURL(e);let n=await q8(e,{apiKey:h,baseURL:p,source:A,signal:r.signal,widgetSession:er});if(r.signal.aborted||!Y.current)return void URL.revokeObjectURL(t);q7()&&Ke(n,e.name).catch(e=>{console.error("Failed to export room debug mask",e)});let i={id:(KD+=1,`room-custom-${KD}`),name:e.name,image_url:t,scene:n};q.current.add(t),eI({placementReady:!1,prepareReady:!1,artifactsReady:!1,assetsReady:!1}),ec(e=>[i,...e]),ed(i.id)}catch(n){if(t&&URL.revokeObjectURL(t),r.signal.aborted)return;let e=GZ(n);if(e)return void j(e);console.error("Failed to prepare custom room scene",n)}finally{K.current===r&&(K.current=null,Y.current&&z(!1))}},[h,p,eI,ec,A,er]);(0,rc.useEffect)(()=>{if("dialog"!==i||!s){J.current=!1;return}J.current||er&&(VC(er,"widget_opened"),J.current=!0)},[s,i,er]),(0,rc.useEffect)(()=>{X&&(C(r),S(null),j(null),V(null))},[r,X]),(0,rc.useEffect)(()=>{j(null),V(null)},[h,A]),(0,rc.useEffect)(()=>{X&&eg&&null===E&&S(eg.materials?.[0]??null)},[E,eg,X]);let eB=(0,rc.useMemo)(()=>({type:n,placement:b,name:d,width:l,height:c,displayUnit:u}),[n,b,d,l,c,u]),ek=(0,rc.useMemo)(()=>({viewerSurface:i,dialogPortalContainer:a,viewerDialogOpen:s,onViewerDialogOpenChange:o}),[i,a,s,o]),eT=(0,rc.useMemo)(()=>({rooms:el,sourceRooms:ea,setRooms:ec,room:ep,setRoomId:ed}),[el,ep,ec,ea]),eR=(0,rc.useMemo)(()=>({src:t,glbUrl:em,tinuuid:x,viewedObject:eg,material:E,setTinuuid:C,setMaterial:S,apiKey:h,baseURL:p,source:A,widgetSession:er,hasRooms:eA,isViewerAccessPending:ew,accessError:eE,setAccessError:j,loadError:eS,setLoadError:V}),[t,em,x,eg,E,h,p,A,er,eA,ew,eE,eS]),eD=(0,rc.useMemo)(()=>({containerRef:N,setContainerRef:O,resourceRef:W,angle:T,setAngle:R,rotation:D,setRotation:_,isDragging:P,setIsDragging:L,sceneLoad:F,patchSceneLoad:eI,isRoomScenePending:U,setIsRoomScenePending:z}),[N,T,D,P,F,eI,U]),e_=(0,rc.useMemo)(()=>({frameWidth:I,setFrameWidth:M,matting:B,setMatting:k}),[I,B]),eP=(0,rc.useMemo)(()=>({isRoomScenePending:U,selectCustomRoomFile:eM}),[U,eM]);return(0,rd.jsx)(Wc,{value:eB,children:(0,rd.jsx)(Wu,{value:ek,children:(0,rd.jsx)(Wd,{value:eT,children:(0,rd.jsx)(Wh,{value:eR,children:(0,rd.jsx)(Wp,{value:eD,children:(0,rd.jsx)(WA,{value:e_,children:(0,rd.jsx)(Wf,{value:eP,children:e})})})})})})})}let KN=new rl({defaultOptions:{queries:{gcTime:1/0,refetchOnMount:!1,refetchOnReconnect:!1,refetchOnWindowFocus:!1,retry:(e,t)=>{let r=function(e){if(il(e))return e.response?.status}(t);return(void 0===r||!(r>=400)||!(r<500))&&e<2}}}});function KO({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:A=!0,onViewerDialogOpenChange:f,widgetSession:g}){let{i18n:m}=st(),v=c?.trim()||void 0,b=KR(e),y="wall"===KT[b]?function(e,t,r="m"){return{width:qd(e??0,r),height:qd(t??0,r)}}(a,i,o):null;return(0,rc.useEffect)(()=>{},[e]),(0,rc.useEffect)(()=>{"string"==typeof s&&m.changeLanguage(s)},[m,s]),(0,rd.jsx)(rA,{client:KN,children:(0,rd.jsx)(KL,{src:t??null,tinuuid:r??null,type:b,viewerSurface:h,dialogPortalContainer:p,viewerDialogOpen:A,onViewerDialogOpenChange:f,name:n,width:y?.width??0,height:y?.height??0,displayUnit:l,apiKey:v,baseURL:"shopify"===u?GY:void 0,source:u,externalWidgetSession:g,children:(0,rd.jsx)(KB,{showDialogCloseButton:d})})})}function KF({type:e,src:t,tinuuid:r,width:n,height:i,dimensionUnit:a,displayUnit:s,name:o,language:l,apiKey:c,source:u,widgetSession:d,open:h,defaultOpen:p,onOpenChange:A,...f}){let[g,m]=(0,rc.useState)(null),v=KT[KR(e)],[b,y]=(0,rc.useState)(p??!1),w=h??b,[x,C]=(0,rc.useState)(w),E=w||x;(0,rc.useEffect)(()=>{w&&C(!0)},[w]);let S=(0,rd.jsx)(KO,{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:!0,viewerSurface:"dialog",dialogPortalContainer:g,viewerDialogOpen:w,onViewerDialogOpenChange:function(e){void 0===h&&y(e),A?.(e)}});return(0,rd.jsxs)(rd.Fragment,{children:[(0,ai.createPortal)((0,rd.jsx)("style",{children:GG.A}),document.head),(0,ai.createPortal)((0,rd.jsxs)(sw.div,{style:{display:"block",letterSpacing:"normal",zIndex:0x7fffffff},children:[(0,rd.jsx)("style",{children:GK}),(0,rd.jsx)("div",{ref:m}),g&&(0,rd.jsx)(Gj,{root:g,storageKey:"neurodyn-theme",defaultTheme:"light",children:(0,rd.jsx)(sr,{i18n:GW,children:"floor"===v?E&&S:(0,rd.jsx)(VD,{...f,open:h,defaultOpen:p,onOpenChange:A,children:(0,rd.jsxs)(VN,{className:Wl,contentInsideOverlay:!0,portalContainer:g,showCloseButton:!1,onInteractOutside:e=>{e.preventDefault()},children:[(0,rd.jsxs)(VO,{className:"sr-only",children:[(0,rd.jsx)(VQ,{children:o}),(0,rd.jsx)(VU,{})]}),S]})})})})]}),document.body)]})}VA({baseURL:"https://api.neurodyn.ai/v1/"}),Ve({baseURL:"https://api.neurodyn.ai/"});let KQ=iI({clientName:"API node client",configureFunctionName:"configureNodeApiClient",defaultBaseURL:"https://api.vizbl.com"});KQ.configureClientRuntime,KQ.configureAccessTokenResolverRuntime,KQ.configureHeadersResolverRuntime,KQ.configureUnauthorizedHandlerRuntime,KQ.isClientConfiguredRuntime,KQ.assertClientConfiguredRuntime,KQ.resetClientForTestsRuntime;let KU=KQ.requestRuntime;async function Kz(e){return KU(e)}async function KH(e,t={}){let{client:r=Kz,...n}=t;return(await r({method:"POST",url:"/public/widget/activate-wallart",params:e,...n})).data}KQ.requestWithoutUnauthorizedRecovery,KQ.addResponseInterceptorRuntime,(eQ=tw||(tw={})).assertEqual=e=>{},eQ.assertIs=function(e){},eQ.assertNever=function(e){throw Error()},eQ.arrayToEnum=e=>{let t={};for(let r of e)t[r]=r;return t},eQ.getValidEnumValues=e=>{let t=eQ.objectKeys(e).filter(t=>"number"!=typeof e[e[t]]),r={};for(let n of t)r[n]=e[n];return eQ.objectValues(r)},eQ.objectValues=e=>eQ.objectKeys(e).map(function(t){return e[t]}),eQ.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},eQ.find=(e,t)=>{for(let r of e)if(t(r))return r},eQ.isInteger="function"==typeof Number.isInteger?e=>Number.isInteger(e):e=>"number"==typeof e&&Number.isFinite(e)&&Math.floor(e)===e,eQ.joinValues=function(e,t=" | "){return e.map(e=>"string"==typeof e?`'${e}'`:e).join(t)},eQ.jsonStringifyReplacer=(e,t)=>"bigint"==typeof t?t.toString():t,(tx||(tx={})).mergeShapes=(e,t)=>({...e,...t});let Kj=tw.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),KG=e=>{switch(typeof e){case"undefined":return Kj.undefined;case"string":return Kj.string;case"number":return Number.isNaN(e)?Kj.nan:Kj.number;case"boolean":return Kj.boolean;case"function":return Kj.function;case"bigint":return Kj.bigint;case"symbol":return Kj.symbol;case"object":if(Array.isArray(e))return Kj.array;if(null===e)return Kj.null;if(e.then&&"function"==typeof e.then&&e.catch&&"function"==typeof e.catch)return Kj.promise;if("u">typeof Map&&e instanceof Map)return Kj.map;if("u">typeof Set&&e instanceof Set)return Kj.set;if("u">typeof Date&&e instanceof Date)return Kj.date;return Kj.object;default:return Kj.unknown}},KV=tw.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 KW 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 KW))throw Error(`Not a ZodError: ${e}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,tw.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()}}KW.create=e=>new KW(e);let Kq=(e,t)=>{let r;switch(e.code){case KV.invalid_type:r=e.received===Kj.undefined?"Required":`Expected ${e.expected}, received ${e.received}`;break;case KV.invalid_literal:r=`Invalid literal value, expected ${JSON.stringify(e.expected,tw.jsonStringifyReplacer)}`;break;case KV.unrecognized_keys:r=`Unrecognized key(s) in object: ${tw.joinValues(e.keys,", ")}`;break;case KV.invalid_union:r="Invalid input";break;case KV.invalid_union_discriminator:r=`Invalid discriminator value. Expected ${tw.joinValues(e.options)}`;break;case KV.invalid_enum_value:r=`Invalid enum value. Expected ${tw.joinValues(e.options)}, received '${e.received}'`;break;case KV.invalid_arguments:r="Invalid function arguments";break;case KV.invalid_return_type:r="Invalid function return type";break;case KV.invalid_date:r="Invalid date";break;case KV.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}"`:tw.assertNever(e.validation):r="regex"!==e.validation?`Invalid ${e.validation}`:"Invalid";break;case KV.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 KV.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 KV.custom:r="Invalid input";break;case KV.invalid_intersection_types:r="Intersection results could not be merged";break;case KV.not_multiple_of:r=`Number must be a multiple of ${e.multipleOf}`;break;case KV.not_finite:r="Number must be finite";break;default:r=t.defaultError,tw.assertNever(e)}return{message:r}};(eU=tC||(tC={})).errToObj=e=>"string"==typeof e?{message:e}:e||{},eU.toString=e=>"string"==typeof e?e:e?.message;let KK=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 KY(e,t){let r=KK({issueData:t,data:e.data,path:e.path,errorMaps:[e.common.contextualErrorMap,e.schemaErrorMap,Kq,void 0].filter(e=>!!e)});e.common.issues.push(r)}class KJ{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 KX;"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 KJ.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 KX;"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 KX=Object.freeze({status:"aborted"}),KZ=e=>({status:"dirty",value:e}),K$=e=>({status:"valid",value:e}),K0=e=>"u">typeof Promise&&e instanceof Promise;class K1{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 K2=(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 KW(e.common.issues);return this._error=t,this._error}}};function K3(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 K4{get description(){return this._def.description}_getType(e){return KG(e.data)}_getOrReturnCtx(e,t){return t||{common:e.parent.common,data:e.data,parsedType:KG(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new KJ,ctx:{common:e.parent.common,data:e.data,parsedType:KG(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){let t=this._parse(e);if(K0(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:KG(e)},n=this._parseSync({data:e,path:r.path,parent:r});return K2(r,n)}"~validate"(e){let t={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:KG(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:KG(e)},n=this._parse({data:e,path:r.path,parent:r});return K2(r,await (K0(n)?n:Promise.resolve(n)))}refine(e,t){return this._refinement((r,n)=>{let i=e(r),a=()=>n.addIssue({code:KV.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 Yz({schema:this,typeName:tE.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 YH.create(this,this._def)}nullable(){return Yj.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return YE.create(this)}promise(){return YU.create(this,this._def)}or(e){return YI.create([this,e],this._def)}and(e){return Yk.create(this,e,this._def)}transform(e){return new Yz({...K3(this._def),schema:this,typeName:tE.ZodEffects,effect:{type:"transform",transform:e}})}default(e){return new YG({...K3(this._def),innerType:this,defaultValue:"function"==typeof e?e:()=>e,typeName:tE.ZodDefault})}brand(){return new Yq({typeName:tE.ZodBranded,type:this,...K3(this._def)})}catch(e){return new YV({...K3(this._def),innerType:this,catchValue:"function"==typeof e?e:()=>e,typeName:tE.ZodCatch})}describe(e){return new this.constructor({...this._def,description:e})}pipe(e){return YK.create(this,e)}readonly(){return YY.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}let K9=/^c[^\s-]{8,}$/i,K5=/^[0-9a-z]+$/,K8=/^[0-9A-HJKMNP-TV-Z]{26}$/i,K6=/^[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,K7=/^[a-z0-9_-]{21}$/i,Ye=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,Yt=/^[-+]?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)?)??$/,Yr=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,Yn=/^(?:(?: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])$/,Yi=/^(?:(?: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])$/,Ya=/^(([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]))$/,Ys=/^(([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])$/,Yo=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,Yl=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,Yc="((\\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])))",Yu=RegExp(`^${Yc}$`);function Yd(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 Yh extends K4{_parse(e){var t,r,n,i;let a;if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==Kj.string){let t=this._getOrReturnCtx(e);return KY(t,{code:KV.invalid_type,expected:Kj.string,received:t.parsedType}),KX}let s=new KJ;for(let o of this._def.checks)if("min"===o.kind)e.data.length<o.value&&(KY(a=this._getOrReturnCtx(e,a),{code:KV.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&&(KY(a=this._getOrReturnCtx(e,a),{code:KV.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?KY(a,{code:KV.too_big,maximum:o.value,type:"string",inclusive:!0,exact:!0,message:o.message}):r&&KY(a,{code:KV.too_small,minimum:o.value,type:"string",inclusive:!0,exact:!0,message:o.message}),s.dirty())}else if("email"===o.kind)Yr.test(e.data)||(KY(a=this._getOrReturnCtx(e,a),{validation:"email",code:KV.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)||(KY(a=this._getOrReturnCtx(e,a),{validation:"emoji",code:KV.invalid_string,message:o.message}),s.dirty());else if("uuid"===o.kind)K6.test(e.data)||(KY(a=this._getOrReturnCtx(e,a),{validation:"uuid",code:KV.invalid_string,message:o.message}),s.dirty());else if("nanoid"===o.kind)K7.test(e.data)||(KY(a=this._getOrReturnCtx(e,a),{validation:"nanoid",code:KV.invalid_string,message:o.message}),s.dirty());else if("cuid"===o.kind)K9.test(e.data)||(KY(a=this._getOrReturnCtx(e,a),{validation:"cuid",code:KV.invalid_string,message:o.message}),s.dirty());else if("cuid2"===o.kind)K5.test(e.data)||(KY(a=this._getOrReturnCtx(e,a),{validation:"cuid2",code:KV.invalid_string,message:o.message}),s.dirty());else if("ulid"===o.kind)K8.test(e.data)||(KY(a=this._getOrReturnCtx(e,a),{validation:"ulid",code:KV.invalid_string,message:o.message}),s.dirty());else if("url"===o.kind)try{new URL(e.data)}catch{KY(a=this._getOrReturnCtx(e,a),{validation:"url",code:KV.invalid_string,message:o.message}),s.dirty()}else"regex"===o.kind?(o.regex.lastIndex=0,o.regex.test(e.data)||(KY(a=this._getOrReturnCtx(e,a),{validation:"regex",code:KV.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)||(KY(a=this._getOrReturnCtx(e,a),{code:KV.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)||(KY(a=this._getOrReturnCtx(e,a),{code:KV.invalid_string,validation:{startsWith:o.value},message:o.message}),s.dirty()):"endsWith"===o.kind?e.data.endsWith(o.value)||(KY(a=this._getOrReturnCtx(e,a),{code:KV.invalid_string,validation:{endsWith:o.value},message:o.message}),s.dirty()):"datetime"===o.kind?(function(e){let t=`${Yc}T${Yd(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)||(KY(a=this._getOrReturnCtx(e,a),{code:KV.invalid_string,validation:"datetime",message:o.message}),s.dirty()):"date"===o.kind?Yu.test(e.data)||(KY(a=this._getOrReturnCtx(e,a),{code:KV.invalid_string,validation:"date",message:o.message}),s.dirty()):"time"===o.kind?RegExp(`^${Yd(o)}$`).test(e.data)||(KY(a=this._getOrReturnCtx(e,a),{code:KV.invalid_string,validation:"time",message:o.message}),s.dirty()):"duration"===o.kind?Yt.test(e.data)||(KY(a=this._getOrReturnCtx(e,a),{validation:"duration",code:KV.invalid_string,message:o.message}),s.dirty()):"ip"===o.kind?(t=e.data,!(("v4"===(r=o.version)||!r)&&Yn.test(t)||("v6"===r||!r)&&Ya.test(t))&&1&&(KY(a=this._getOrReturnCtx(e,a),{validation:"ip",code:KV.invalid_string,message:o.message}),s.dirty())):"jwt"===o.kind?!function(e,t){if(!Ye.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)&&(KY(a=this._getOrReturnCtx(e,a),{validation:"jwt",code:KV.invalid_string,message:o.message}),s.dirty()):"cidr"===o.kind?(n=e.data,!(("v4"===(i=o.version)||!i)&&Yi.test(n)||("v6"===i||!i)&&Ys.test(n))&&1&&(KY(a=this._getOrReturnCtx(e,a),{validation:"cidr",code:KV.invalid_string,message:o.message}),s.dirty())):"base64"===o.kind?Yo.test(e.data)||(KY(a=this._getOrReturnCtx(e,a),{validation:"base64",code:KV.invalid_string,message:o.message}),s.dirty()):"base64url"===o.kind?Yl.test(e.data)||(KY(a=this._getOrReturnCtx(e,a),{validation:"base64url",code:KV.invalid_string,message:o.message}),s.dirty()):tw.assertNever(o);return{status:s.value,value:e.data}}_regex(e,t,r){return this.refinement(t=>e.test(t),{validation:t,code:KV.invalid_string,...tC.errToObj(r)})}_addCheck(e){return new Yh({...this._def,checks:[...this._def.checks,e]})}email(e){return this._addCheck({kind:"email",...tC.errToObj(e)})}url(e){return this._addCheck({kind:"url",...tC.errToObj(e)})}emoji(e){return this._addCheck({kind:"emoji",...tC.errToObj(e)})}uuid(e){return this._addCheck({kind:"uuid",...tC.errToObj(e)})}nanoid(e){return this._addCheck({kind:"nanoid",...tC.errToObj(e)})}cuid(e){return this._addCheck({kind:"cuid",...tC.errToObj(e)})}cuid2(e){return this._addCheck({kind:"cuid2",...tC.errToObj(e)})}ulid(e){return this._addCheck({kind:"ulid",...tC.errToObj(e)})}base64(e){return this._addCheck({kind:"base64",...tC.errToObj(e)})}base64url(e){return this._addCheck({kind:"base64url",...tC.errToObj(e)})}jwt(e){return this._addCheck({kind:"jwt",...tC.errToObj(e)})}ip(e){return this._addCheck({kind:"ip",...tC.errToObj(e)})}cidr(e){return this._addCheck({kind:"cidr",...tC.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,...tC.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,...tC.errToObj(e?.message)})}duration(e){return this._addCheck({kind:"duration",...tC.errToObj(e)})}regex(e,t){return this._addCheck({kind:"regex",regex:e,...tC.errToObj(t)})}includes(e,t){return this._addCheck({kind:"includes",value:e,position:t?.position,...tC.errToObj(t?.message)})}startsWith(e,t){return this._addCheck({kind:"startsWith",value:e,...tC.errToObj(t)})}endsWith(e,t){return this._addCheck({kind:"endsWith",value:e,...tC.errToObj(t)})}min(e,t){return this._addCheck({kind:"min",value:e,...tC.errToObj(t)})}max(e,t){return this._addCheck({kind:"max",value:e,...tC.errToObj(t)})}length(e,t){return this._addCheck({kind:"length",value:e,...tC.errToObj(t)})}nonempty(e){return this.min(1,tC.errToObj(e))}trim(){return new Yh({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new Yh({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new Yh({...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}}Yh.create=e=>new Yh({checks:[],typeName:tE.ZodString,coerce:e?.coerce??!1,...K3(e)});class Yp extends K4{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)!==Kj.number){let t=this._getOrReturnCtx(e);return KY(t,{code:KV.invalid_type,expected:Kj.number,received:t.parsedType}),KX}let r=new KJ;for(let n of this._def.checks)"int"===n.kind?tw.isInteger(e.data)||(KY(t=this._getOrReturnCtx(e,t),{code:KV.invalid_type,expected:"integer",received:"float",message:n.message}),r.dirty()):"min"===n.kind?(n.inclusive?e.data<n.value:e.data<=n.value)&&(KY(t=this._getOrReturnCtx(e,t),{code:KV.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)&&(KY(t=this._getOrReturnCtx(e,t),{code:KV.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)&&(KY(t=this._getOrReturnCtx(e,t),{code:KV.not_multiple_of,multipleOf:n.value,message:n.message}),r.dirty()):"finite"===n.kind?Number.isFinite(e.data)||(KY(t=this._getOrReturnCtx(e,t),{code:KV.not_finite,message:n.message}),r.dirty()):tw.assertNever(n);return{status:r.value,value:e.data}}gte(e,t){return this.setLimit("min",e,!0,tC.toString(t))}gt(e,t){return this.setLimit("min",e,!1,tC.toString(t))}lte(e,t){return this.setLimit("max",e,!0,tC.toString(t))}lt(e,t){return this.setLimit("max",e,!1,tC.toString(t))}setLimit(e,t,r,n){return new Yp({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:r,message:tC.toString(n)}]})}_addCheck(e){return new Yp({...this._def,checks:[...this._def.checks,e]})}int(e){return this._addCheck({kind:"int",message:tC.toString(e)})}positive(e){return this._addCheck({kind:"min",value:0,inclusive:!1,message:tC.toString(e)})}negative(e){return this._addCheck({kind:"max",value:0,inclusive:!1,message:tC.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:0,inclusive:!0,message:tC.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:0,inclusive:!0,message:tC.toString(e)})}multipleOf(e,t){return this._addCheck({kind:"multipleOf",value:e,message:tC.toString(t)})}finite(e){return this._addCheck({kind:"finite",message:tC.toString(e)})}safe(e){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:tC.toString(e)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:tC.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&&tw.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)}}Yp.create=e=>new Yp({checks:[],typeName:tE.ZodNumber,coerce:e?.coerce||!1,...K3(e)});class YA extends K4{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)!==Kj.bigint)return this._getInvalidInput(e);let r=new KJ;for(let n of this._def.checks)"min"===n.kind?(n.inclusive?e.data<n.value:e.data<=n.value)&&(KY(t=this._getOrReturnCtx(e,t),{code:KV.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)&&(KY(t=this._getOrReturnCtx(e,t),{code:KV.too_big,type:"bigint",maximum:n.value,inclusive:n.inclusive,message:n.message}),r.dirty()):"multipleOf"===n.kind?e.data%n.value!==BigInt(0)&&(KY(t=this._getOrReturnCtx(e,t),{code:KV.not_multiple_of,multipleOf:n.value,message:n.message}),r.dirty()):tw.assertNever(n);return{status:r.value,value:e.data}}_getInvalidInput(e){let t=this._getOrReturnCtx(e);return KY(t,{code:KV.invalid_type,expected:Kj.bigint,received:t.parsedType}),KX}gte(e,t){return this.setLimit("min",e,!0,tC.toString(t))}gt(e,t){return this.setLimit("min",e,!1,tC.toString(t))}lte(e,t){return this.setLimit("max",e,!0,tC.toString(t))}lt(e,t){return this.setLimit("max",e,!1,tC.toString(t))}setLimit(e,t,r,n){return new YA({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:r,message:tC.toString(n)}]})}_addCheck(e){return new YA({...this._def,checks:[...this._def.checks,e]})}positive(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:tC.toString(e)})}negative(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:tC.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:tC.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:tC.toString(e)})}multipleOf(e,t){return this._addCheck({kind:"multipleOf",value:e,message:tC.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}}YA.create=e=>new YA({checks:[],typeName:tE.ZodBigInt,coerce:e?.coerce??!1,...K3(e)});class Yf extends K4{_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==Kj.boolean){let t=this._getOrReturnCtx(e);return KY(t,{code:KV.invalid_type,expected:Kj.boolean,received:t.parsedType}),KX}return K$(e.data)}}Yf.create=e=>new Yf({typeName:tE.ZodBoolean,coerce:e?.coerce||!1,...K3(e)});class Yg extends K4{_parse(e){let t;if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==Kj.date){let t=this._getOrReturnCtx(e);return KY(t,{code:KV.invalid_type,expected:Kj.date,received:t.parsedType}),KX}if(Number.isNaN(e.data.getTime()))return KY(this._getOrReturnCtx(e),{code:KV.invalid_date}),KX;let r=new KJ;for(let n of this._def.checks)"min"===n.kind?e.data.getTime()<n.value&&(KY(t=this._getOrReturnCtx(e,t),{code:KV.too_small,message:n.message,inclusive:!0,exact:!1,minimum:n.value,type:"date"}),r.dirty()):"max"===n.kind?e.data.getTime()>n.value&&(KY(t=this._getOrReturnCtx(e,t),{code:KV.too_big,message:n.message,inclusive:!0,exact:!1,maximum:n.value,type:"date"}),r.dirty()):tw.assertNever(n);return{status:r.value,value:new Date(e.data.getTime())}}_addCheck(e){return new Yg({...this._def,checks:[...this._def.checks,e]})}min(e,t){return this._addCheck({kind:"min",value:e.getTime(),message:tC.toString(t)})}max(e,t){return this._addCheck({kind:"max",value:e.getTime(),message:tC.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}}Yg.create=e=>new Yg({checks:[],coerce:e?.coerce||!1,typeName:tE.ZodDate,...K3(e)});class Ym extends K4{_parse(e){if(this._getType(e)!==Kj.symbol){let t=this._getOrReturnCtx(e);return KY(t,{code:KV.invalid_type,expected:Kj.symbol,received:t.parsedType}),KX}return K$(e.data)}}Ym.create=e=>new Ym({typeName:tE.ZodSymbol,...K3(e)});class Yv extends K4{_parse(e){if(this._getType(e)!==Kj.undefined){let t=this._getOrReturnCtx(e);return KY(t,{code:KV.invalid_type,expected:Kj.undefined,received:t.parsedType}),KX}return K$(e.data)}}Yv.create=e=>new Yv({typeName:tE.ZodUndefined,...K3(e)});class Yb extends K4{_parse(e){if(this._getType(e)!==Kj.null){let t=this._getOrReturnCtx(e);return KY(t,{code:KV.invalid_type,expected:Kj.null,received:t.parsedType}),KX}return K$(e.data)}}Yb.create=e=>new Yb({typeName:tE.ZodNull,...K3(e)});class Yy extends K4{constructor(){super(...arguments),this._any=!0}_parse(e){return K$(e.data)}}Yy.create=e=>new Yy({typeName:tE.ZodAny,...K3(e)});class Yw extends K4{constructor(){super(...arguments),this._unknown=!0}_parse(e){return K$(e.data)}}Yw.create=e=>new Yw({typeName:tE.ZodUnknown,...K3(e)});class Yx extends K4{_parse(e){let t=this._getOrReturnCtx(e);return KY(t,{code:KV.invalid_type,expected:Kj.never,received:t.parsedType}),KX}}Yx.create=e=>new Yx({typeName:tE.ZodNever,...K3(e)});class YC extends K4{_parse(e){if(this._getType(e)!==Kj.undefined){let t=this._getOrReturnCtx(e);return KY(t,{code:KV.invalid_type,expected:Kj.void,received:t.parsedType}),KX}return K$(e.data)}}YC.create=e=>new YC({typeName:tE.ZodVoid,...K3(e)});class YE extends K4{_parse(e){let{ctx:t,status:r}=this._processInputParams(e),n=this._def;if(t.parsedType!==Kj.array)return KY(t,{code:KV.invalid_type,expected:Kj.array,received:t.parsedType}),KX;if(null!==n.exactLength){let e=t.data.length>n.exactLength.value,i=t.data.length<n.exactLength.value;(e||i)&&(KY(t,{code:e?KV.too_big:KV.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&&(KY(t,{code:KV.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&&(KY(t,{code:KV.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 K1(t,e,t.path,r)))).then(e=>KJ.mergeArray(r,e));let i=[...t.data].map((e,r)=>n.type._parseSync(new K1(t,e,t.path,r)));return KJ.mergeArray(r,i)}get element(){return this._def.type}min(e,t){return new YE({...this._def,minLength:{value:e,message:tC.toString(t)}})}max(e,t){return new YE({...this._def,maxLength:{value:e,message:tC.toString(t)}})}length(e,t){return new YE({...this._def,exactLength:{value:e,message:tC.toString(t)}})}nonempty(e){return this.min(1,e)}}YE.create=(e,t)=>new YE({type:e,minLength:null,maxLength:null,exactLength:null,typeName:tE.ZodArray,...K3(t)});class YS extends K4{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=tw.objectKeys(e);return this._cached={shape:e,keys:t},this._cached}_parse(e){if(this._getType(e)!==Kj.object){let t=this._getOrReturnCtx(e);return KY(t,{code:KV.invalid_type,expected:Kj.object,received:t.parsedType}),KX}let{status:t,ctx:r}=this._processInputParams(e),{shape:n,keys:i}=this._getCached(),a=[];if(!(this._def.catchall instanceof Yx&&"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 K1(r,i,r.path,e)),alwaysSet:e in r.data})}if(this._def.catchall instanceof Yx){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&&(KY(r,{code:KV.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 K1(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=>KJ.mergeObjectSync(t,e)):KJ.mergeObjectSync(t,s)}get shape(){return this._def.shape()}strict(e){return tC.errToObj,new YS({...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:tC.errToObj(e).message??n}:{message:n}}}:{}})}strip(){return new YS({...this._def,unknownKeys:"strip"})}passthrough(){return new YS({...this._def,unknownKeys:"passthrough"})}extend(e){return new YS({...this._def,shape:()=>({...this._def.shape(),...e})})}merge(e){return new YS({unknownKeys:e._def.unknownKeys,catchall:e._def.catchall,shape:()=>({...this._def.shape(),...e._def.shape()}),typeName:tE.ZodObject})}setKey(e,t){return this.augment({[e]:t})}catchall(e){return new YS({...this._def,catchall:e})}pick(e){let t={};for(let r of tw.objectKeys(e))e[r]&&this.shape[r]&&(t[r]=this.shape[r]);return new YS({...this._def,shape:()=>t})}omit(e){let t={};for(let r of tw.objectKeys(this.shape))e[r]||(t[r]=this.shape[r]);return new YS({...this._def,shape:()=>t})}deepPartial(){return function e(t){if(t instanceof YS){let r={};for(let n in t.shape){let i=t.shape[n];r[n]=YH.create(e(i))}return new YS({...t._def,shape:()=>r})}if(t instanceof YE)return new YE({...t._def,type:e(t.element)});if(t instanceof YH)return YH.create(e(t.unwrap()));if(t instanceof Yj)return Yj.create(e(t.unwrap()));if(t instanceof YT)return YT.create(t.items.map(t=>e(t)));else return t}(this)}partial(e){let t={};for(let r of tw.objectKeys(this.shape)){let n=this.shape[r];e&&!e[r]?t[r]=n:t[r]=n.optional()}return new YS({...this._def,shape:()=>t})}required(e){let t={};for(let r of tw.objectKeys(this.shape))if(e&&!e[r])t[r]=this.shape[r];else{let e=this.shape[r];for(;e instanceof YH;)e=e._def.innerType;t[r]=e}return new YS({...this._def,shape:()=>t})}keyof(){return YO(tw.objectKeys(this.shape))}}YS.create=(e,t)=>new YS({shape:()=>e,unknownKeys:"strip",catchall:Yx.create(),typeName:tE.ZodObject,...K3(t)}),YS.strictCreate=(e,t)=>new YS({shape:()=>e,unknownKeys:"strict",catchall:Yx.create(),typeName:tE.ZodObject,...K3(t)}),YS.lazycreate=(e,t)=>new YS({shape:e,unknownKeys:"strip",catchall:Yx.create(),typeName:tE.ZodObject,...K3(t)});class YI extends K4{_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 KW(e.ctx.common.issues));return KY(t,{code:KV.invalid_union,unionErrors:r}),KX});{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 KW(e));return KY(t,{code:KV.invalid_union,unionErrors:i}),KX}}get options(){return this._def.options}}YI.create=(e,t)=>new YI({options:e,typeName:tE.ZodUnion,...K3(t)});let YM=e=>{if(e instanceof YL)return YM(e.schema);if(e instanceof Yz)return YM(e.innerType());if(e instanceof YN)return[e.value];if(e instanceof YF)return e.options;if(e instanceof YQ)return tw.objectValues(e.enum);else if(e instanceof YG)return YM(e._def.innerType);else if(e instanceof Yv)return[void 0];else if(e instanceof Yb)return[null];else if(e instanceof YH)return[void 0,...YM(e.unwrap())];else if(e instanceof Yj)return[null,...YM(e.unwrap())];else if(e instanceof Yq)return YM(e.unwrap());else if(e instanceof YY)return YM(e.unwrap());else if(e instanceof YV)return YM(e._def.innerType);else return[]};class YB extends K4{_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==Kj.object)return KY(t,{code:KV.invalid_type,expected:Kj.object,received:t.parsedType}),KX;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}):(KY(t,{code:KV.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[r]}),KX)}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=YM(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 YB({typeName:tE.ZodDiscriminatedUnion,discriminator:e,options:t,optionsMap:n,...K3(r)})}}class Yk extends K4{_parse(e){let{status:t,ctx:r}=this._processInputParams(e),n=(e,n)=>{if("aborted"===e.status||"aborted"===n.status)return KX;let i=function e(t,r){let n=KG(t),i=KG(r);if(t===r)return{valid:!0,data:t};if(n===Kj.object&&i===Kj.object){let n=tw.objectKeys(r),i=tw.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===Kj.array&&i===Kj.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===Kj.date&&i===Kj.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}):(KY(r,{code:KV.invalid_intersection_types}),KX)};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}))}}Yk.create=(e,t,r)=>new Yk({left:e,right:t,typeName:tE.ZodIntersection,...K3(r)});class YT extends K4{_parse(e){let{status:t,ctx:r}=this._processInputParams(e);if(r.parsedType!==Kj.array)return KY(r,{code:KV.invalid_type,expected:Kj.array,received:r.parsedType}),KX;if(r.data.length<this._def.items.length)return KY(r,{code:KV.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),KX;!this._def.rest&&r.data.length>this._def.items.length&&(KY(r,{code:KV.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 K1(r,e,r.path,t)):null}).filter(e=>!!e);return r.common.async?Promise.all(n).then(e=>KJ.mergeArray(t,e)):KJ.mergeArray(t,n)}get items(){return this._def.items}rest(e){return new YT({...this._def,rest:e})}}YT.create=(e,t)=>{if(!Array.isArray(e))throw Error("You must pass an array of schemas to z.tuple([ ... ])");return new YT({items:e,typeName:tE.ZodTuple,rest:null,...K3(t)})};class YR extends K4{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!==Kj.object)return KY(r,{code:KV.invalid_type,expected:Kj.object,received:r.parsedType}),KX;let n=[],i=this._def.keyType,a=this._def.valueType;for(let e in r.data)n.push({key:i._parse(new K1(r,e,r.path,e)),value:a._parse(new K1(r,r.data[e],r.path,e)),alwaysSet:e in r.data});return r.common.async?KJ.mergeObjectAsync(t,n):KJ.mergeObjectSync(t,n)}get element(){return this._def.valueType}static create(e,t,r){return new YR(t instanceof K4?{keyType:e,valueType:t,typeName:tE.ZodRecord,...K3(r)}:{keyType:Yh.create(),valueType:e,typeName:tE.ZodRecord,...K3(t)})}}class YD extends K4{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!==Kj.map)return KY(r,{code:KV.invalid_type,expected:Kj.map,received:r.parsedType}),KX;let n=this._def.keyType,i=this._def.valueType,a=[...r.data.entries()].map(([e,t],a)=>({key:n._parse(new K1(r,e,r.path,[a,"key"])),value:i._parse(new K1(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 KX;("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 KX;("dirty"===n.status||"dirty"===i.status)&&t.dirty(),e.set(n.value,i.value)}return{status:t.value,value:e}}}}YD.create=(e,t,r)=>new YD({valueType:t,keyType:e,typeName:tE.ZodMap,...K3(r)});class Y_ extends K4{_parse(e){let{status:t,ctx:r}=this._processInputParams(e);if(r.parsedType!==Kj.set)return KY(r,{code:KV.invalid_type,expected:Kj.set,received:r.parsedType}),KX;let n=this._def;null!==n.minSize&&r.data.size<n.minSize.value&&(KY(r,{code:KV.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&&(KY(r,{code:KV.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 KX;"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 K1(r,e,r.path,t)));return r.common.async?Promise.all(s).then(e=>a(e)):a(s)}min(e,t){return new Y_({...this._def,minSize:{value:e,message:tC.toString(t)}})}max(e,t){return new Y_({...this._def,maxSize:{value:e,message:tC.toString(t)}})}size(e,t){return this.min(e,t).max(e,t)}nonempty(e){return this.min(1,e)}}Y_.create=(e,t)=>new Y_({valueType:e,minSize:null,maxSize:null,typeName:tE.ZodSet,...K3(t)});class YP extends K4{constructor(){super(...arguments),this.validate=this.implement}_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==Kj.function)return KY(t,{code:KV.invalid_type,expected:Kj.function,received:t.parsedType}),KX;function r(e,r){return KK({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,Kq,Kq].filter(e=>!!e),issueData:{code:KV.invalid_arguments,argumentsError:r}})}function n(e,r){return KK({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,Kq,Kq].filter(e=>!!e),issueData:{code:KV.invalid_return_type,returnTypeError:r}})}let i={errorMap:t.common.contextualErrorMap},a=t.data;if(this._def.returns instanceof YU){let e=this;return K$(async function(...t){let s=new KW([]),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 K$(function(...t){let s=e._def.args.safeParse(t,i);if(!s.success)throw new KW([r(t,s.error)]);let o=Reflect.apply(a,this,s.data),l=e._def.returns.safeParse(o,i);if(!l.success)throw new KW([n(o,l.error)]);return l.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...e){return new YP({...this._def,args:YT.create(e).rest(Yw.create())})}returns(e){return new YP({...this._def,returns:e})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}static create(e,t,r){return new YP({args:e||YT.create([]).rest(Yw.create()),returns:t||Yw.create(),typeName:tE.ZodFunction,...K3(r)})}}class YL extends K4{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})}}YL.create=(e,t)=>new YL({getter:e,typeName:tE.ZodLazy,...K3(t)});class YN extends K4{_parse(e){if(e.data!==this._def.value){let t=this._getOrReturnCtx(e);return KY(t,{received:t.data,code:KV.invalid_literal,expected:this._def.value}),KX}return{status:"valid",value:e.data}}get value(){return this._def.value}}function YO(e,t){return new YF({values:e,typeName:tE.ZodEnum,...K3(t)})}YN.create=(e,t)=>new YN({value:e,typeName:tE.ZodLiteral,...K3(t)});class YF extends K4{_parse(e){if("string"!=typeof e.data){let t=this._getOrReturnCtx(e),r=this._def.values;return KY(t,{expected:tw.joinValues(r),received:t.parsedType,code:KV.invalid_type}),KX}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 KY(t,{received:t.data,code:KV.invalid_enum_value,options:r}),KX}return K$(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 YF.create(e,{...this._def,...t})}exclude(e,t=this._def){return YF.create(this.options.filter(t=>!e.includes(t)),{...this._def,...t})}}YF.create=YO;class YQ extends K4{_parse(e){let t=tw.getValidEnumValues(this._def.values),r=this._getOrReturnCtx(e);if(r.parsedType!==Kj.string&&r.parsedType!==Kj.number){let e=tw.objectValues(t);return KY(r,{expected:tw.joinValues(e),received:r.parsedType,code:KV.invalid_type}),KX}if(this._cache||(this._cache=new Set(tw.getValidEnumValues(this._def.values))),!this._cache.has(e.data)){let e=tw.objectValues(t);return KY(r,{received:r.data,code:KV.invalid_enum_value,options:e}),KX}return K$(e.data)}get enum(){return this._def.values}}YQ.create=(e,t)=>new YQ({values:e,typeName:tE.ZodNativeEnum,...K3(t)});class YU extends K4{unwrap(){return this._def.type}_parse(e){let{ctx:t}=this._processInputParams(e);return t.parsedType!==Kj.promise&&!1===t.common.async?(KY(t,{code:KV.invalid_type,expected:Kj.promise,received:t.parsedType}),KX):K$((t.parsedType===Kj.promise?t.data:Promise.resolve(t.data)).then(e=>this._def.type.parseAsync(e,{path:t.path,errorMap:t.common.contextualErrorMap})))}}YU.create=(e,t)=>new YU({type:e,typeName:tE.ZodPromise,...K3(t)});class Yz extends K4{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===tE.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=>{KY(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 KX;let n=await this._def.schema._parseAsync({data:e,path:r.path,parent:r});return"aborted"===n.status?KX:"dirty"===n.status||"dirty"===t.value?KZ(n.value):n});{if("aborted"===t.value)return KX;let n=this._def.schema._parseSync({data:e,path:r.path,parent:r});return"aborted"===n.status?KX:"dirty"===n.status||"dirty"===t.value?KZ(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?KX:("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?KX:("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?KX: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 KX;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}}tw.assertNever(n)}}Yz.create=(e,t,r)=>new Yz({schema:e,typeName:tE.ZodEffects,effect:t,...K3(r)}),Yz.createWithPreprocess=(e,t,r)=>new Yz({schema:t,effect:{type:"preprocess",transform:e},typeName:tE.ZodEffects,...K3(r)});class YH extends K4{_parse(e){return this._getType(e)===Kj.undefined?K$(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}YH.create=(e,t)=>new YH({innerType:e,typeName:tE.ZodOptional,...K3(t)});class Yj extends K4{_parse(e){return this._getType(e)===Kj.null?K$(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}Yj.create=(e,t)=>new Yj({innerType:e,typeName:tE.ZodNullable,...K3(t)});class YG extends K4{_parse(e){let{ctx:t}=this._processInputParams(e),r=t.data;return t.parsedType===Kj.undefined&&(r=this._def.defaultValue()),this._def.innerType._parse({data:r,path:t.path,parent:t})}removeDefault(){return this._def.innerType}}YG.create=(e,t)=>new YG({innerType:e,typeName:tE.ZodDefault,defaultValue:"function"==typeof t.default?t.default:()=>t.default,...K3(t)});class YV extends K4{_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 K0(n)?n.then(e=>({status:"valid",value:"valid"===e.status?e.value:this._def.catchValue({get error(){return new KW(r.common.issues)},input:r.data})})):{status:"valid",value:"valid"===n.status?n.value:this._def.catchValue({get error(){return new KW(r.common.issues)},input:r.data})}}removeCatch(){return this._def.innerType}}YV.create=(e,t)=>new YV({innerType:e,typeName:tE.ZodCatch,catchValue:"function"==typeof t.catch?t.catch:()=>t.catch,...K3(t)});class YW extends K4{_parse(e){if(this._getType(e)!==Kj.nan){let t=this._getOrReturnCtx(e);return KY(t,{code:KV.invalid_type,expected:Kj.nan,received:t.parsedType}),KX}return{status:"valid",value:e.data}}}YW.create=e=>new YW({typeName:tE.ZodNaN,...K3(e)}),Symbol("zod_brand");class Yq extends K4{_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 YK extends K4{_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?KX:"dirty"===e.status?(t.dirty(),KZ(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?KX:"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 YK({in:e,out:t,typeName:tE.ZodPipeline})}}class YY extends K4{_parse(e){let t=this._def.innerType._parse(e),r=e=>("valid"===e.status&&(e.value=Object.freeze(e.value)),e);return K0(t)?t.then(e=>r(e)):r(t)}unwrap(){return this._def.innerType}}YY.create=(e,t)=>new YY({innerType:e,typeName:tE.ZodReadonly,...K3(t)}),YS.lazycreate,(ez=tE||(tE={})).ZodString="ZodString",ez.ZodNumber="ZodNumber",ez.ZodNaN="ZodNaN",ez.ZodBigInt="ZodBigInt",ez.ZodBoolean="ZodBoolean",ez.ZodDate="ZodDate",ez.ZodSymbol="ZodSymbol",ez.ZodUndefined="ZodUndefined",ez.ZodNull="ZodNull",ez.ZodAny="ZodAny",ez.ZodUnknown="ZodUnknown",ez.ZodNever="ZodNever",ez.ZodVoid="ZodVoid",ez.ZodArray="ZodArray",ez.ZodObject="ZodObject",ez.ZodUnion="ZodUnion",ez.ZodDiscriminatedUnion="ZodDiscriminatedUnion",ez.ZodIntersection="ZodIntersection",ez.ZodTuple="ZodTuple",ez.ZodRecord="ZodRecord",ez.ZodMap="ZodMap",ez.ZodSet="ZodSet",ez.ZodFunction="ZodFunction",ez.ZodLazy="ZodLazy",ez.ZodLiteral="ZodLiteral",ez.ZodEnum="ZodEnum",ez.ZodEffects="ZodEffects",ez.ZodNativeEnum="ZodNativeEnum",ez.ZodOptional="ZodOptional",ez.ZodNullable="ZodNullable",ez.ZodDefault="ZodDefault",ez.ZodCatch="ZodCatch",ez.ZodPromise="ZodPromise",ez.ZodBranded="ZodBranded",ez.ZodPipeline="ZodPipeline",ez.ZodReadonly="ZodReadonly";let YJ=Yh.create,YX=Yp.create;YW.create,YA.create;let YZ=Yf.create;Yg.create,Ym.create,Yv.create,Yb.create,Yy.create;let Y$=Yw.create;Yx.create,YC.create,YE.create;let Y0=YS.create;YS.strictCreate,YI.create,YB.create,Yk.create,YT.create,YR.create,YD.create,Y_.create,YP.create,YL.create,YN.create;let Y1=YF.create;YQ.create,YU.create,Yz.create,YH.create,Yj.create;let Y2=Yz.createWithPreprocess;YK.create;let Y3=Y1(["cm","inch"]),Y4=Y1(["different_fields","one_field"]),Y9=Y1(["left_bottom","center","right_bottom","left_center","right_center"]),Y5=Y0({buttonLabel:YJ(),backgroundColor:YJ(),borderColor:YJ(),textColor:YJ(),borderRadius:YX(),borderWidth:YX()}),Y8=Y0({units:Y3,productWidthAndHeight:Y4,metafieldForWidth:YJ().nullable(),metafieldForHeight:YJ().nullable(),metafieldForWidthAndHeight:YJ().nullable(),widgetPosition:Y9,_widgetSettings:Y5.optional(),isWidgetActive:YZ()}),Y6=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"),Y7=Y0({token:YJ().trim().min(1),sid:YJ().trim().min(1),expiresIn:YX().finite()}),Je=Y0({metafields:YJ().trim().min(1),posterPic:YJ().trim().min(1),title:YJ().trim().optional(),widgetSession:Y$().optional()}),Jt=Y2(e=>"string"==typeof e?JSON.parse(e):e,Y0({metafield:Y$(),tinuuid:YJ().trim().optional()}));async function Jr(e,t){let r=await KH({productType:"wallart-shopify",variant_id:e,metafield_key:"poster_settings"},{baseURL:Y6,signal:t});return function(e){let t,r,n=Je.safeParse("string"!=typeof e?e:JSON.parse(e));if(!n.success)return null;let i=Jt.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=Y8.safeParse(t)).success?r.data:null);if(!a)return null;let s=Y7.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 Jn="44px",Ji="60px",Ja={left_center:{left:Ji,top:"50%",transform:"translateY(-50%)"},left_bottom:{left:Ji,bottom:Jn},center:{left:`calc(50% + ${Ji})`,bottom:Jn,transform:"translateX(-50%)"},right_bottom:{right:Ji,bottom:Jn},right_center:{right:Ji,top:"50%",transform:"translateY(-50%)"}},Js=Y2(e=>"number"==typeof e&&Number.isFinite(e)?String(e):e,YJ().trim().regex(/^\d+$/));function Jo(e){let t=Js.safeParse(e);return t.success?t.data:null}function Jl(e){return e?e instanceof HTMLInputElement||e instanceof HTMLSelectElement||e instanceof HTMLTextAreaElement?e.value:e.getAttribute("value"):null}let Jc=["product-form","[data-main-product]",'[id*="MainProduct"]',".product",".product__info-wrapper",".product__info-container","#MainContent"],Ju=[".product-recommendations",".related-products","[data-product-recommendations]"];var Jd=i("./src/shopify.css?inline");function Jh(){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 Jo(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),Jc))e.closest(i)&&(t+=25);for(let r of Ju)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=Jo(Jl(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=Jo(Jl(t));if(e)return e}return null}(e)??function(e=document){let t=e.querySelector("[data-selected-variant-id]");return Jo(t?.getAttribute("data-selected-variant-id")??null)}(e)}():null}}function Jp(){let e=function(){let[e,t]=(0,rc.useState)(Jh);return(0,rc.useEffect)(()=>{let e=null,r=window.history.pushState,n=window.history.replaceState,i=()=>{null===e&&(e=window.requestAnimationFrame(()=>{e=null,t(e=>{let t=Jh();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=an('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,rc.useState)(!1),{data:n}=s5({queryKey:["vizbl-shopify-room-viewer","activation",e.variantId],queryFn:({signal:t})=>Jr(e.variantId??"",t),enabled:e.isProductPage&&null!==e.variantId,staleTime:3e5,gcTime:3e5,refetchOnWindowFocus:!1},sj,void 0),i=(0,rc.useCallback)(()=>{r(!0)},[]),a=(0,rc.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,rd.jsxs)(rd.Fragment,{children:[(0,rd.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",...Ja[s.widgetPosition]},children:c?.buttonLabel??"View in place"}),(0,rd.jsx)(KF,{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,ai.createPortal)((0,rd.jsx)("style",{children:Jd.A}),document.head)]})}let JA="vizbl-shopify-room-viewer",Jf=new rl({defaultOptions:{queries:{refetchOnMount:!1,refetchOnReconnect:!1,refetchOnWindowFocus:!1,retry:(e,t)=>{let r=function(e){if(il(e))return e.response?.status}(t);return(void 0===r||!(r>=400)||!(r<500))&&e<2}}}});function Jg(){let e,t=((e=document.getElementById(JA))||((e=document.createElement("div")).id=JA,document.body.appendChild(e)),e),r=ik.createRoot(t);r.render((0,rc.createElement)(rA,{client:Jf},(0,rc.createElement)(Jp)));let n=an(`#${JA}`,{remove(){n.abort(),r.unmount(),Jg()}})}iB({baseURL:Y6}),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",Jg,{once:!0}):Jg()})()})();
7515
+ ${s}`;a(!0);try{if(!i&&t)return void await qY(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,rc.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 qX({captureRef:e,className:t,canvasWrapperClassName:r,chrome:n="default",...i}){let{placement:a,type:s}=Wm(),{containerRef:o,isDragging:l,angle:c,rotation:u,setAngle:d,setRotation:h}=Wy(),{t:p}=st(),A=(0,rc.useRef)(null),f=(0,rc.useRef)(null),g=e??f,m=Wz("(max-width: 639px)"),v=Wz("(min-width: 768px)"),{canShare:b,isSharing:y,share:w}=qJ({captureRef:g,shareMessage:p(`shareMessage.${s}`)}),x=(0,rc.useCallback)(()=>{m&&A.current?.centerView()},[m]);return(0,rd.jsxs)("div",{className:Vk("relative flex items-center justify-center overflow-hidden",t),...i,children:[(0,rd.jsx)(fV,{ref:A,disabled:l,children:(0,rd.jsx)(fW,{wrapperClass:"neurodyn-rzpp-wrapper size-full!",contentClass:"neurodyn-rzpp-content h-full! min-w-full sm:max-w-full",children:(0,rd.jsx)(qK,{captureRef:g,className:r,onSizeChange:x})})}),"default"===n&&(0,rd.jsxs)(rd.Fragment,{children:[(0,rd.jsx)(qm,{className:"absolute bottom-4 left-4 sm:bottom-6 sm:left-6"}),"floor"===a&&(0,rd.jsxs)("div",{className:"bg-button-dark typo-button-normal absolute bottom-6 left-1/2 hidden h-9 -translate-x-1/2 items-center gap-1.5 rounded-lg px-3.75 text-text-white md:inline-flex",children:[(0,rd.jsx)("span",{className:"shrink-0",children:p("scene.position")}),(0,rd.jsx)(WQ,{value:[u],onValueChange:([e])=>h(e??0),min:-180,max:180,step:1,className:"w-29.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":p("scene.position")})]}),(0,rd.jsxs)("div",{className:"absolute right-4 bottom-4 inline-flex items-center gap-2 sm:right-6 sm:bottom-6",children:[("wall"===a||"floor"===a&&!v)&&(0,rd.jsxs)(WN,{children:[(0,rd.jsx)(WO,{asChild:!0,children:(0,rd.jsxs)(VR,{variant:"contrast",size:m?"icon":"default",children:[(0,rd.jsx)(VX,{className:"size-5"}),(0,rd.jsx)("span",{className:"sr-only sm:not-sr-only",children:p("scene.tunePosition")})]})}),(0,rd.jsx)(WF,{className:"px-3 py-3.5 bg-button-dark border-button-dark text-text-white",side:"top",align:"end",portalContainer:o,children:(0,rd.jsxs)(WR,{children:[(0,rd.jsxs)(W_,{orientation:"horizontal",children:[(0,rd.jsx)(WL,{children:p("scene.rotation")}),(0,rd.jsx)(WQ,{value:[u],onValueChange:([e])=>h(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":p("scene.rotation")})]}),"wall"===a&&(0,rd.jsxs)(W_,{orientation:"horizontal",children:[(0,rd.jsx)(WL,{children:p("scene.angle")}),(0,rd.jsx)(WQ,{value:[c],onValueChange:([e])=>d(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":p("scene.angle")})]})]})})]}),"wall"===a&&(0,rd.jsxs)(VR,{variant:"contrast",size:m?"icon":"default",disabled:!b||y,onClick:w,children:[(0,rd.jsx)(V$,{className:"size-5"}),(0,rd.jsx)("span",{className:"sr-only sm:not-sr-only",children:p("scene.share")})]}),m&&"wall"===a&&(0,rd.jsxs)(WN,{children:[(0,rd.jsx)(WO,{asChild:!0,children:(0,rd.jsx)(VR,{variant:"contrast",size:"icon",children:(0,rd.jsx)(VZ,{})})}),(0,rd.jsxs)(WF,{className:"grid gap-5",portalContainer:o,children:[(0,rd.jsx)(qn,{}),(0,rd.jsx)(qp,{})]})]})]})]})]})}function qZ({className:e,gridClassName:t,titleClassName:r,onOpenChange:n,...i}){let{t:a}=st(),s=(0,rc.useRef)(null),{fetchNextMaterialsPage:o,hasNextPage:l,isFetchingNextPage:c,isLoading:u,materialItems:d,selectMaterial:h,selectedMaterialId:p}=qr({includeViewedObject:!0});(0,rc.useEffect)(()=>{let e=s.current;e&&!u&&!c&&l&&0!==d.length&&e.scrollHeight<=e.clientHeight&&o()},[o,l,c,u,d.length]);let A=(0,rc.useCallback)(e=>{let{clientHeight:t,scrollHeight:r,scrollTop:n}=e.currentTarget;n+t>=r-64&&o()},[o]),f=(0,rc.useCallback)(e=>{h(e)&&n(!1)},[n,h]);return(0,rd.jsxs)("div",{...i,className:Vk("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,rd.jsx)("h2",{className:Vk("typo-base-16 font-medium sm:typo-base-14 sm:font-semibold text-text-dark",r),children:a("floor.materialSelection.title")}),(0,rd.jsx)("div",{"data-testid":"material-selection-grid",ref:s,className:Vk("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:A,children:(0,rd.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})=>{let n,i=e===p,a=(n=t.previews?.[0],n?.subRes?.small??n?.url);return(0,rd.jsxs)("button",{type:"button","data-selected":i,"aria-pressed":i,className:Vk("group relative grid aspect-square min-w-0 place-items-center overflow-hidden rounded-lg border border-border bg-background-containers p-1 text-left transition hover:border-icons-normal focus-visible:ring-2 focus-visible:ring-icons-normal focus-visible:outline-hidden"),onClick:()=>f(e),onKeyDown:t=>{("Enter"===t.key||" "===t.key)&&(t.preventDefault(),f(e))},children:[a?(0,rd.jsx)("img",{src:a,alt:"",className:"size-full rounded-md object-cover"}):(0,rd.jsx)(VK,{className:"size-6 text-icons-normal"}),(0,rd.jsx)("span",{className:"sr-only",children:t.name}),i&&(0,rd.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,rd.jsx)(Vj,{className:"size-4"})})]},`${r}-${e}`)}),(u||c)&&(0,rd.jsx)("div",{className:"col-span-3 grid h-16 place-items-center",children:(0,rd.jsx)(V2,{className:"size-6"})})]})})]})}function q$({open:e,portalContainer:t,onOpenChange:r}){let{t:n}=st();return(0,rd.jsx)(VD,{open:e,onOpenChange:r,children:(0,rd.jsxs)(VN,{contentInsideOverlay:!0,"data-testid":"material-selection-mobile-overlay",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,rd.jsx)(VQ,{className:"sr-only",children:n("floor.materialSelection.title")}),(0,rd.jsx)(VU,{className:"sr-only"}),(0,rd.jsx)(qZ,{className:"min-h-0",gridClassName:"max-h-none",onOpenChange:r}),(0,rd.jsx)(VF,{className:"shrink-0 p-0",children:(0,rd.jsx)(VP,{asChild:!0,children:(0,rd.jsx)(VR,{type:"button",variant:"outline",className:"w-full",children:n("close")})})})]})})}let q0="data-material-selection-action",q1="data-material-selection-panel";function q2({actionLabel:e,actionClassName:t,actionPlacement:r,className:n,iconClassName:i,isOpen:a,materialName:s,previewClassName:o,previewUrl:l,testId:c,titleLabel:u,onClick:d,onPointerDown:h}){let p=(0,rd.jsxs)(VR,{type:"button",variant:"outline",size:"sm",[q0]:!0,"aria-expanded":a,className:Vk("trailing"===r?"shrink-0":"w-fit",t),onPointerDown:h?e=>{e.preventDefault(),e.stopPropagation(),h()}:void 0,onClick:d,children:[a?(0,rd.jsx)(VG,{className:"size-4"}):(0,rd.jsx)(VJ,{className:"size-4"}),e]});return(0,rd.jsxs)("div",{className:n,"data-testid":c,children:[(0,rd.jsx)("div",{className:o,children:l?(0,rd.jsx)("img",{src:l,alt:"",className:"size-full object-cover"}):(0,rd.jsx)(VK,{className:i})}),(0,rd.jsxs)("div",{className:"grid min-w-0 flex-1 content-center gap-3",children:[(0,rd.jsxs)("div",{className:"min-w-0",children:[(0,rd.jsx)("div",{className:"sr-only",children:u}),(0,rd.jsx)("div",{className:"typo-button-normal truncate text-text-dark",children:s})]}),"stacked"===r&&p]}),"trailing"===r&&p]})}function q3({actions:e,canShowAr:t,companyName:r,hasActiveError:n,material:i,portalContainer:a,ref:s,room:o,scene:l,showDialogCloseButton:c=!1}){let{t:u}=st(),{type:d}=Wm(),[h,p]=(0,rc.useState)(!1),[A,f]=(0,rc.useState)(!1),g=(0,rc.useRef)(null),m=(0,rc.useRef)(!1),v=u(h?"floor.scene.hideCatalog":`resourceType.${d}.replaceProduct`),b=u(A?"floor.scene.hideCatalog":`resourceType.${d}.replaceProductShort`),y=u(`resourceType.${d}.productCardTitle`),{canShare:w,download:x,isDownloading:C,isSharing:E,share:S}=qJ({captureRef:g,fallbackToClipboard:!0,shareMessage:u(`shareMessage.${d}`)}),I=(0,rc.useCallback)(()=>{p(!1),f(!1)},[]);(0,rc.useImperativeHandle)(s,()=>({closeMaterialSelection:I}),[I]);let M=(0,rc.useCallback)(()=>{if(m.current){m.current=!1;return}p(!0),f(!1)},[]),B=(0,rc.useCallback)(()=>{m.current=!0,I()},[I]),k=(0,rc.useCallback)(()=>{f(!0),p(!1)},[]),T=(0,rc.useCallback)(()=>{I(),e.openInteriorSelection()},[e,I]);return(0,rc.useEffect)(()=>{if(h)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(`[${q0}], [${q1}]`)||p(!1)}function t(e){"Escape"===e.key&&p(!1)}},[h]),(0,rd.jsxs)(rd.Fragment,{children:[(0,rd.jsx)("div",{className:"absolute inset-0 bg-constant-black","data-testid":"floor-scene-background-base"}),(0,rd.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,rd.jsx)("img",{src:o.imageUrl,alt:"",className:"block size-full max-w-none object-cover object-center opacity-50"})}),(0,rd.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,rd.jsx)("div",{className:"min-w-0 pt-1",children:(0,rd.jsx)("h1",{"data-testid":"floor-scene-header-company",className:"typo-base-16 truncate font-medium lg:typo-base-18",children:r})}),(0,rd.jsxs)("div",{className:"pointer-events-auto inline-flex shrink-0 items-center gap-2",children:[(0,rd.jsxs)(VR,{type:"button",variant:"secondary","aria-label":u("floor.scene.share"),disabled:!w||E,onClick:S,className:"size-10 rounded-full px-0 lg:h-9 lg:w-auto lg:rounded-xl lg:px-3.5",children:[(0,rd.jsx)(V$,{className:"size-5"}),(0,rd.jsx)("span",{className:"hidden lg:inline",children:u("floor.scene.share")})]}),(0,rd.jsxs)(VR,{type:"button",variant:"secondary","aria-label":u("floor.scene.download"),disabled:C,onClick:x,className:"size-10 rounded-full px-0 lg:h-9 lg:w-auto lg:rounded-xl lg:px-3.5",children:[(0,rd.jsx)(VV,{className:"size-5"}),(0,rd.jsx)("span",{className:"hidden lg:inline",children:u("floor.scene.download")})]}),c&&(0,rd.jsx)(VP,{asChild:!0,children:(0,rd.jsxs)(VR,{type:"button",variant:"secondary","aria-label":u("close"),className:"size-10 rounded-full px-0 lg:h-9 lg:w-auto lg:rounded-xl lg:px-3.5",children:[(0,rd.jsx)("span",{className:"hidden lg:inline",children:u("close")}),(0,rd.jsx)(VG,{className:"!size-5"})]})})]})]}),(0,rd.jsx)(qX,{captureRef:g,chrome:"none",className:"relative z-10 size-full min-h-0",canvasWrapperClassName:"p-0 sm:pt-0 sm:pb-0"},l.resetKey),(0,rd.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,rd.jsxs)("div",{className:"pointer-events-auto flex min-w-0 items-stretch gap-3",children:[(0,rd.jsx)(q2,{actionLabel:v,actionPlacement:"stacked",className:"flex h-24 w-fit max-w-80 items-center gap-4 overflow-hidden rounded-2xl bg-background-containers p-4 text-left text-text-dark shadow-[var(--shadow-login)]",iconClassName:"size-6 text-icons-normal",isOpen:h,materialName:i.name,previewClassName:"grid size-16 shrink-0 place-items-center overflow-hidden bg-background-base",previewUrl:i.previewUrl,testId:"floor-desktop-product-card",titleLabel:y,onClick:h?I:M,onPointerDown:h?B:void 0}),(0,rd.jsxs)("div",{className:"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)]","data-testid":"floor-room-card",children:[(0,rd.jsx)("img",{src:o.imageUrl,alt:"",className:"size-16 shrink-0 rounded-lg object-cover"}),(0,rd.jsxs)("span",{className:"grid min-w-0 flex-1 content-center gap-2",children:[(0,rd.jsx)("span",{className:"typo-button-normal block min-h-[1.35em] truncate !leading-[1.35] text-text-dark","data-testid":"floor-desktop-room-name",children:o.name}),(0,rd.jsx)(VR,{type:"button",variant:"outline",size:"sm",className:"w-fit",onClick:T,children:u("floor.interiorSelection.chooseInterior")})]})]})]}),t&&(0,rd.jsxs)("div",{className:"pointer-events-auto 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-testid":"floor-ar-card",children:[(0,rd.jsx)("img",{src:o.imageUrl,alt:"",className:"size-16 shrink-0 rounded-lg object-cover"}),(0,rd.jsxs)("div",{className:"grid min-w-0 flex-1 content-center gap-2",children:[(0,rd.jsx)(qm,{buttonLabel:u("floor.scene.tryAtHome"),buttonVariant:"secondary",buttonSize:"sm",buttonClassName:"w-fit"}),(0,rd.jsx)("div",{className:"typo-base-12 truncate font-medium text-text-light",children:u("floor.scene.tryAtHomeBody")})]})]})]}),(0,rd.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,rd.jsx)(q2,{actionLabel:v,actionPlacement:"stacked",className:"pointer-events-auto flex h-[116px] w-fit max-w-[421px] items-center gap-4 overflow-hidden rounded-2xl bg-background-containers p-4 text-left text-text-dark shadow-[var(--shadow-login)]",iconClassName:"size-6 text-icons-normal",isOpen:h,materialName:i.name,previewClassName:"grid size-16 shrink-0 place-items-center overflow-hidden bg-background-base",previewUrl:i.previewUrl,testId:"floor-tablet-product-card",titleLabel:y,onClick:h?I:M,onPointerDown:h?B:void 0}),(0,rd.jsxs)("div",{className:"pointer-events-auto grid w-[254px] gap-2",children:[(0,rd.jsxs)("div",{className:"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)]","data-testid":"floor-tablet-room-card",children:[(0,rd.jsxs)("span",{className:"flex min-w-0 items-center gap-2",children:[(0,rd.jsx)("img",{src:o.imageUrl,alt:"",className:"size-10 shrink-0 rounded-full object-cover"}),(0,rd.jsxs)("span",{className:"grid min-w-0",children:[(0,rd.jsx)("span",{className:"typo-base-12 truncate text-text-light",children:u("floor.scene.interiorCardTitle")}),(0,rd.jsx)("span",{className:"typo-button-normal min-h-[1.35em] truncate !leading-[1.35] text-text-dark","data-testid":"floor-tablet-room-name",children:o.name})]})]}),(0,rd.jsx)(VR,{type:"button",variant:"outline",size:"sm",className:"shrink-0",onClick:T,children:u("floor.interiorSelection.chooseInteriorShort")})]}),t&&(0,rd.jsx)(qm,{className:"w-full",buttonLabel:u("floor.scene.tryAtHome"),buttonLeadingIcon:(0,rd.jsx)(V0,{className:"size-5"}),buttonVariant:"secondary",buttonSize:"default",buttonClassName:"h-9 w-full rounded-xl"})]})]}),(0,rd.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,rd.jsx)(q2,{actionLabel:b,actionClassName:"w-[137px]",actionPlacement:"stacked",className:"flex items-center justify-start gap-4 border-b border-border-light bg-background-containers p-4 text-left",iconClassName:"size-5 text-icons-normal",isOpen:A,materialName:i.name,previewClassName:"grid size-16 shrink-0 place-items-center overflow-hidden bg-background-base",previewUrl:i.previewUrl,testId:"floor-mobile-product-card",titleLabel:y,onClick:A?I:k}),(0,rd.jsxs)("div",{className:"grid gap-4 bg-background-containers px-6 pt-4 pb-6","data-testid":"floor-mobile-bottom-actions",children:[(0,rd.jsxs)("div",{className:"flex w-full items-center justify-between gap-3 rounded-full bg-background-containers text-left",children:[(0,rd.jsxs)("span",{className:"flex min-w-0 items-center gap-2",children:[(0,rd.jsx)("img",{src:o.imageUrl,alt:"",className:"size-10 shrink-0 rounded-full object-cover"}),(0,rd.jsxs)("span",{className:"grid min-w-0",children:[(0,rd.jsx)("span",{className:"typo-base-12 truncate text-text-light",children:u("floor.scene.interiorCardTitle")}),(0,rd.jsx)("span",{className:"typo-button-normal min-h-[1.35em] truncate !leading-[1.35] text-text-dark","data-testid":"floor-mobile-room-name",children:o.name})]})]}),(0,rd.jsx)(VR,{type:"button",variant:"outline",size:"sm",className:"shrink-0",onClick:T,children:u("floor.interiorSelection.chooseInterior")})]}),t&&(0,rd.jsx)(qm,{className:"w-full",buttonLabel:u("floor.scene.tryAtHome"),buttonLeadingIcon:(0,rd.jsx)(V0,{className:"size-6"}),buttonVariant:"secondary",buttonSize:"lg",buttonClassName:"h-11 w-full rounded-xl"})]})]}),h&&!n&&(0,rd.jsx)(qZ,{[q1]:!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:I}),(0,rd.jsx)(q$,{open:A&&!n,portalContainer:a,onOpenChange:f}),(0,rd.jsx)("div",{"aria-hidden":!l.isLoading,className:Vk("absolute inset-0 z-10 flex items-center justify-center bg-radial from-background-containers to-background-base-2 transition-opacity",l.isLoading?"opacity-100 pointer-events-auto duration-0":"opacity-0 pointer-events-none duration-250ms"),children:(0,rd.jsx)(V2,{variant:"logo"})})]})}function q4({rooms:e,customRooms:t,selectedRoomId:r,isInvalidFile:n,uploadRetryRequestId:i=0,showCloseButton:a=!1,onSelectRoom:s,onUploadFile:o}){let l,{t:c}=st(),u=(0,rc.useId)(),d=(0,rc.useRef)(null);function h(e){return e.map(e=>(0,rd.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,rd.jsx)("img",{src:e.image_url,alt:"",decoding:"async",className:"size-full scale-[1.02] transform-gpu object-cover transition duration-200 group-hover:scale-105"}),(0,rd.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,rc.useEffect)(()=>{i>0&&d.current?.click()},[i]),(0,rd.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",children:[a&&(l=(0,rd.jsx)(VR,{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,rd.jsx)(VG,{})}),(0,rd.jsx)(VP,{asChild:!0,children:l})),(0,rd.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,rd.jsxs)("div",{className:"grid gap-2","data-testid":"floor-interior-selection-upload",children:[(0,rd.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,rd.jsx)(VH,{className:"size-5 text-background-blue"}),c("floor.interiorSelection.uploadPhoto"),(0,rd.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,rd.jsx)("p",{className:"typo-base-12 font-medium text-destructive",children:c("floor.interiorSelection.invalidFile")})]}),(0,rd.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,rd.jsxs)("div",{className:"grid min-h-max gap-4",children:[t.length>0&&(0,rd.jsxs)("div",{className:"grid gap-3",children:[(0,rd.jsx)("h3",{className:"typo-base-16 font-medium text-text-light",children:c("floor.interiorSelection.customTitle")}),(0,rd.jsx)("div",{className:"grid grid-cols-2 gap-3 sm:grid-cols-3","data-testid":"floor-custom-interior-selection-grid",children:h(t)})]}),(0,rd.jsxs)("div",{className:"grid gap-3",children:[(0,rd.jsx)("h3",{className:"typo-base-16 font-medium text-text-light",children:c("floor.interiorSelection.presetsTitle")}),(0,rd.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,rd.jsx)(VF,{className:"-mt-2 shrink-0 p-0 sm:mt-0",children:(0,rd.jsx)(VP,{asChild:!0,children:(0,rd.jsx)(VR,{variant:"outline",className:"w-full",children:c("close")})})})]})}function q9(e){return(0,rd.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,rd.jsx)(q4,{...e})})}function q5({open:e,portalContainer:t,onOpenChange:r,...n}){let{t:i}=st();return(0,rd.jsx)(VD,{open:e,onOpenChange:r,children:(0,rd.jsxs)(VN,{contentInsideOverlay:!0,portalContainer:t,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,rd.jsx)(VQ,{className:"sr-only",children:i("floor.interiorSelection.title")}),(0,rd.jsx)(VU,{className:"sr-only"}),(0,rd.jsx)(q4,{...n,showCloseButton:!0})]})})}async function q8(e,t={}){let r=t.source??"default",n={image:e};if(GJ({apiKey:t.apiKey,source:r})){let e=await t.widgetSession?.getTokenForRequest();return Vd(n,{baseURL:t.baseURL,headers:{"x-api-key":t.apiKey,...e?{[Vb]:e}:{}},signal:t.signal,timeout:0,params:{productType:GX({apiKey:t.apiKey,source:r})}})}return t.signal?Vi(n,{signal:t.signal,timeout:0}):Vi(n,{timeout:0})}let q6=[{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 q7(){try{return"1"===window.localStorage.getItem("neurodyn-room-viewer:debug-mask-export")}catch{return!1}}async function Ke(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 A=p.getImageData(0,0,u,d),f=document.createElement("canvas"),g=f.getContext("2d");if(!g)throw Error("Failed to prepare room debug mask canvas.");f.width=u,f.height=d;for(let e=0;e<u*d;e++){let t=4*e,r=function(e){return q6.find(t=>t.id===e)??{id:e,label:`plane-${e}`,rgb:[73*e%255,151*e%255,211*e%255]}}(A.data[t]??0);A.data[t]=r.rgb[0],A.data[t+1]=r.rgb[1],A.data[t+2]=r.rgb[2],A.data[t+3]=255}g.putImageData(A,0,0),n=await new Promise((e,t)=>{f.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 Kt="custom-interiors";function Kr(){return"u">typeof crypto&&"function"==typeof crypto.randomUUID?`custom-interior-${crypto.randomUUID()}`:`custom-interior-${Date.now()}-${Math.random().toString(36).slice(2)}`}function Kn(){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(Kt)||e.createObjectStore(Kt,{keyPath:"id"})},n.onerror=()=>r(n.error??Error("Failed to open Custom Interior store.")),n.onsuccess=()=>t(n.result)}):Promise.resolve(null)}async function Ki(e,t,r=new Date){let n=await Kn();if(!n)return null;let i={id:Kr(),schemaVersion:1,name:e.name,fileName:e.name,createdAt:r.toISOString(),imageBlob:e,scene:t};try{let e=n.transaction(Kt,"readwrite");return e.objectStore(Kt).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 Ka(){let e=await Kn();if(!e)return[];try{return await new Promise((t,r)=>{let n=e.transaction(Kt,"readonly").objectStore(Kt).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 Ks(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 Ko={placementReady:!1,prepareReady:!1,artifactsReady:!1,assetsReady:!1};function Kl(e){let t="dialog"===e?"interior-selection":"scene";return{step:t,hasSceneSelection:"scene"===t,sceneResetKey:0}}function Kc(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 Ku(e,t){return!e.aborted&&t()}async function Kd({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 A=await u(i,{...t,signal:e});if(!Ku(e,a))return null;s()&&n(A,i.name).catch(o);let f=h(i,A);return Ku(e,a)&&f&&(d(i,A).catch(l),c(),await p(),Ku(e,a))?(r(f),f):null}function Kh(){return new Promise(e=>window.setTimeout(e,250))}function Kp(e){console.error("Failed to export room debug mask",e)}function KA(e){console.error("Failed to persist Custom Interior",e)}function Kf(e){console.error("Failed to prepare Custom Interior",e)}let Kg=[{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 Km({isComplete:e,open:t,onCloseAnimationEnd:r,onOpenChange:n,portalContainer:i}){let{t:a}=st(),s=(0,rc.useRef)(t),[o,l]=(0,rc.useState)(8),c=e?100:o,u=function(e){for(let t=Kg.length-1;t>=0;t-=1){let r=Kg[t];if(r&&e>=r.minimumProgress)return r}return Kg[0]}(c);(0,rc.useEffect)(()=>{t&&!s.current&&l(8),s.current=t},[t]),(0,rc.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,rd.jsxs)("div",{role:"status","aria-live":"polite",className:"grid content-start gap-4",children:[(0,rd.jsx)("h2",{className:"typo-base-18 font-medium text-text-dark",children:a("floor.processing.title")}),(0,rd.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,rd.jsxs)("div",{className:"flex min-w-0 items-center justify-between gap-3",children:[(0,rd.jsx)("span",{className:"typo-base-14 min-w-0 flex-1 truncate text-left font-medium text-text-light",children:a(u.translationKey)}),(0,rd.jsxs)("span",{className:"typo-base-14 shrink-0 font-medium text-text-dark",children:[c,"%"]})]}),(0,rd.jsx)(Wo,{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,rd.jsx)(VD,{open:t,onOpenChange:n,children:(0,rd.jsxs)(VN,{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,rd.jsx)(VQ,{className:"sr-only",children:a("floor.processing.title")}),(0,rd.jsx)(VU,{className:"sr-only",children:a(u.translationKey)}),d]})})}function Kv({showDialogCloseButton:e=!1}){var t;let r,{name:n}=Wm(),{accessError:i,tinuuid:a,material:s,apiKey:o,baseURL:l,hasRooms:c,source:u,widgetSession:d,isViewerAccessPending:h,loadError:p,viewedObject:A}=Wb(),{clearActiveError:f,handleAccessError:g}=function(){let{setAccessError:e,setLoadError:t}=Wb();return{clearActiveError:(0,rc.useCallback)(()=>{e(null),t(null)},[e,t]),handleAccessError:e}}(),{room:m,sourceRooms:v}=Wv(),{containerRef:b,setContainerRef:y,sceneLoad:w,isRoomScenePending:x}=Wy(),{dialogPortalContainer:C,viewerSurface:E,viewerDialogOpen:S,onViewerDialogOpenChange:I}=Wg(Wu,"useRoomViewerSurface"),{t:M}=st(),B=(0,rc.useRef)(null),k=i??p,T=M(`rooms.${m.id}`,{defaultValue:m.name}),R=(t=M("floor.scene.companyFallback"),A?.owner?.name??A?.brand??t),D=s?.name??A?.name??n,_=(r=s?.previews?.[0],r?.subRes?.small??r?.url??A?.preview?.subRes?.small??A?.preview?.url??A?.mainPreview),P=function({activeError:e,apiKey:t,baseURL:r,clearActiveError:n,closeMaterialSelection:i,handleAccessError:a,hasDialogPortalContainer:s,hasRooms:o,isRoomScenePending:l,isViewerAccessPending:c,material:u,onViewerDialogOpenChange:d,sceneLoad:h,source:p,sourceRooms:A,viewerDialogOpen:f,viewerSurface:g,widgetSession:m}){let v=function(e){let{patchSceneLoad:t,setAngle:r,setRotation:n}=Wy();return function(e,t){let[r,n]=(0,rc.useReducer)(Kc,e,Kl),i=(0,rc.useCallback)(e=>{e(),function({patchSceneLoad:e,setAngle:t,setRotation:r}){t(0),r(0),e(Ko)}(t),n({type:"commit-interior-selection"})},[t]),a=(0,rc.useCallback)(()=>{n({type:"dismiss-interior-selection"})},[]),s=(0,rc.useCallback)(()=>{n({type:"open-interior-selection"})},[]),o=(0,rc.useCallback)(()=>{n({type:"recover-to-scene"})},[]),l=(0,rc.useCallback)(()=>{n({type:"return-to-interior-selection"})},[]),c=(0,rc.useCallback)(()=>{n({type:"start-custom-interior-processing"})},[]);return(0,rc.useMemo)(()=>({...r,commitInteriorSelection:i,dismissInteriorSelection:a,openInteriorSelection:s,recoverToScene:o,returnToInteriorSelection:l,startCustomInteriorProcessing:c}),[i,a,s,o,l,c,r])}(e,(0,rc.useMemo)(()=>({patchSceneLoad:t,setAngle:r,setRotation:n}),[t,r,n]))}(g),{appendRuntimeCustomInterior:b,customRooms:y}=function({listCustomInteriors:e}){let{appendRuntimeCustomInterior:t,customRooms:r,replaceRuntimeCustomInteriors:n}=function(){let[e,t]=(0,rc.useState)(()=>[]),r=(0,rc.useRef)(null),n=(0,rc.useCallback)(e=>{r.current?.revokeObjectUrls();let n=Ks(e);return r.current=n,t(n.rooms),n.rooms},[]),i=(0,rc.useCallback)((e,n)=>{let i=Ks([{id:Kr(),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,rc.useEffect)(()=>()=>{r.current?.revokeObjectUrls()},[]),(0,rc.useMemo)(()=>({appendRuntimeCustomInterior:i,customRooms:e,replaceRuntimeCustomInteriors:n}),[i,e,n])}(),i=(0,rc.useRef)(!0);(0,rc.useEffect)(()=>(i.current=!0,()=>{i.current=!1}),[]);let a=(0,rc.useCallback)(async()=>{let t=await e();i.current&&n(t)},[e,n]);return(0,rc.useEffect)(()=>{a()},[a]),(0,rc.useMemo)(()=>({appendRuntimeCustomInterior:t,customRooms:r,replaceRuntimeCustomInteriors:n,refreshCustomInteriors:a}),[t,r,a,n])}({listCustomInteriors:Ka}),w=(0,rc.useMemo)(()=>new Set(A.map(e=>e.id)),[A]),{commitCustomInteriorSelection:x,selectInterior:C}=function(e){let{room:t,setRoomId:r,setRooms:n}=Wv(),{widgetSession:i}=Wb();return function({floorFlow:e,customRooms:t,selectedRoomId:r,onInteriorSelected:n,restoreSourceRooms:i,setRoomId:a,setRooms:s}){let o=(0,rc.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,rc.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,rc.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,rc.useCallback)(e=>{t.some(t=>t.id===e)?c(e):l(e)},[t,c,l]);return(0,rc.useMemo)(()=>({commitCustomInteriorSelection:o,selectInterior:u}),[o,u])}({...e,selectedRoomId:t.id,onInteriorSelected:()=>VC(i,"interior_selected"),setRoomId:r,setRooms:n})}({floorFlow:v,customRooms:y,restoreSourceRooms:(0,rc.useCallback)(e=>[...A,...e.filter(e=>!w.has(e.id))],[w,A])}),E=function(e){let{setIsRoomScenePending:t}=Wy();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[A,f]=(0,rc.useState)(!1),[g,m]=(0,rc.useState)(!1),[v,b]=(0,rc.useState)(null),[y,w]=(0,rc.useState)(null),[x,C]=(0,rc.useState)(!1),[E,S]=(0,rc.useState)(0),I=(0,rc.useRef)(null),M=(0,rc.useRef)(!1),B=(0,rc.useRef)(!0),k=(0,rc.useRef)(v);v&&(k.current=v),(0,rc.useEffect)(()=>(B.current=!0,()=>{B.current=!1,I.current?.abort()}),[]);let T=(0,rc.useCallback)(()=>{b(null),w(null),C(!1)},[]),R=(0,rc.useCallback)(e=>{T(),f(!1),e()},[T]),D=(0,rc.useCallback)(async A=>{if(T(),!A.type.startsWith("image/"))return void f(!0);f(!1),m(!1),t.startCustomInteriorProcessing(),M.current=!0;let g=new AbortController;I.current?.abort(),I.current=g,d(!0);try{await Kd({abortSignal:g.signal,apiOptions:e,commitCustomInteriorSelection:r,downloadDebugMask:n,file:A,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=GZ(t);if(e){M.current&&C(!0),a(e);return}if(l(t),M.current){w("custom-interior-processing"),C(!0);return}b("custom-interior-processing")}finally{I.current===g&&(I.current=null,B.current&&d(!1))}},[e,t,r,n,i,a,s,o,l,c,T,u,d,h,p]),_=(0,rc.useCallback)(()=>{T(),f(!1),t.returnToInteriorSelection(),S(e=>e+1)},[t,T]),P=(0,rc.useCallback)(()=>{T(),t.returnToInteriorSelection()},[t,T]),L=(0,rc.useCallback)(({clearError:e,closeMaterialSelection:r})=>{e(),r(),t.hasSceneSelection&&t.recoverToScene()},[t]),N=(0,rc.useCallback)(()=>{M.current=!1,C(!1),y&&(b(y),w(null))},[y]),O=(0,rc.useCallback)(()=>B.current,[]);return(0,rc.useMemo)(()=>({displayedUploadError:v??k.current,isCustomInteriorProcessingComplete:g,isInvalidFile:A,isMounted:O,isProcessingDialogClosingForError:x,pendingUploadError:y,uploadError:v,uploadRetryRequestId:E,cancelUploadError:P,handleProcessingDialogCloseAnimationEnd:N,openInteriorSelection:R,processUploadFile:D,recoverFromActiveError:L,resetUploadErrorPresentation:T,tryUploadAgain:_}),[P,N,g,A,O,x,R,y,D,L,T,_,v,E])}({...e,setIsRoomScenePending:t})}({apiOptions:(0,rc.useMemo)(()=>({apiKey:t,baseURL:r,source:p,widgetSession:m}),[t,r,p,m]),floorFlow:v,commitCustomInteriorSelection:x,downloadDebugMask:Ke,isDebugMaskExportEnabled:q7,onAccessError:a,onDebugMaskError:Kp,onPersistenceError:KA,onProcessingError:Kf,predictRoomScene:q8,saveCustomInterior:Ki,trackRuntimeCustomInterior:b,waitForProcessingCompletion:Kh}),{dismissInteriorSelection:S,hasSceneSelection:I,openInteriorSelection:M,sceneResetKey:B,step:k}=v,{cancelUploadError:T,displayedUploadError:R,handleProcessingDialogCloseAnimationEnd:D,isCustomInteriorProcessingComplete:_,isInvalidFile:P,isProcessingDialogClosingForError:L,openInteriorSelection:N,pendingUploadError:O,processUploadFile:F,recoverFromActiveError:Q,resetUploadErrorPresentation:U,tryUploadAgain:z,uploadError:H,uploadRetryRequestId:j}=E,G=o&&I,V=(0,rc.useRef)(e),W=!!(e&&G&&u);e&&(V.current=e);let q=(0,rc.useCallback)(()=>{G&&(U(),S())},[S,G,U]),K=(0,rc.useCallback)(()=>{i(),N(M)},[i,M,N]),Y=(0,rc.useCallback)(()=>{Q({clearError:n,closeMaterialSelection:i})},[n,i,Q]),J=(0,rc.useCallback)(e=>{if(!e){if(G)return void q();d?.(!1)}},[q,G,d]),X=(0,rc.useCallback)(e=>{if(!e){if(W)return void Y();d?.(!1)}},[W,Y,d]),Z=(0,rc.useCallback)(e=>{e||T()},[T]);!function({fallbackMs:e,handleProcessingDialogCloseAnimationEnd:t,isProcessingDialogClosingForError:r}){(0,rc.useEffect)(()=>{if(!r)return;let n=window.setTimeout(t,e);return()=>window.clearTimeout(n)},[e,t,r])}({fallbackMs:220,handleProcessingDialogCloseAnimationEnd:D,isProcessingDialogClosingForError:L});let $=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,A=!p||d,f=i&&r.hasSceneSelection,g=i||"scene"!==r.step?r.step:"interior-selection",m=!o&&f&&(!e||t),v=f||p,b=!o&&!e&&v,y=!o&&!e&&!v&&"interior-selection"===g;return{activeErrorDialog:{open:!a&&!!e&&A,showCloseButton:!t},interiorSelection:{open:b&&"interior-selection"===g&&A,presentation:b?"dialog":y?"screen":null,shouldRender:b||y},processingDialog:{open:!e&&!u&&!l&&s&&"processing-custom-interior"===r.step&&A},scene:{isLoading:s||!Object.values(c).every(Boolean),resetKey:r.sceneResetKey,shouldRender:m,shouldRenderDialog:m},surface:{usesSiblingDialogFlow:p},uploadErrorDialog:{open:!a&&!e&&!!u&&A}}}({activeError:e,canRecoverFromActiveError:W,floorFlow:{hasSceneSelection:I,sceneResetKey:B,step:k},hasDialogPortalContainer:s,hasRooms:o,isProcessingDialogClosingForError:L,isRoomScenePending:l,isViewerAccessPending:c,pendingUploadError:O,sceneLoad:h,uploadError:H,viewerDialogOpen:f,viewerSurface:g});return{...$,activeErrorDialog:{...$.activeErrorDialog,onCancel:W?Y:void 0,onOpenChange:X,onTryAgain:W?Y:void 0,variant:e??V.current},customRooms:y,interiorSelection:{...$.interiorSelection,isInvalidFile:P,onOpenChange:J,onSelectRoom:C,onUploadFile:F,openFromScene:K,uploadRetryRequestId:j},sourceRooms:A,processingDialog:{...$.processingDialog,isComplete:_,onCloseAnimationEnd:D,onOpenChange:$.surface.usesSiblingDialogFlow?d:void 0},step:k,uploadErrorDialog:{...$.uploadErrorDialog,onCancel:T,onOpenChange:Z,onTryAgain:z,variant:R}}}({activeError:k,apiKey:o,baseURL:l,clearActiveError:f,closeMaterialSelection:(0,rc.useCallback)(()=>{B.current?.closeMaterialSelection()},[]),handleAccessError:g,hasDialogPortalContainer:null!==C,hasRooms:c,isRoomScenePending:x,isViewerAccessPending:h,material:s,onViewerDialogOpenChange:I,sceneLoad:w,source:u,sourceRooms:v,viewerDialogOpen:S,viewerSurface:E,widgetSession:d}),L=P.surface.usesSiblingDialogFlow?C:b,N=P.interiorSelection.shouldRender?"dialog"===P.interiorSelection.presentation?(0,rd.jsx)(q5,{open:P.interiorSelection.open,portalContainer:L,rooms:P.sourceRooms,customRooms:P.customRooms,selectedRoomId:m.id,isInvalidFile:P.interiorSelection.isInvalidFile,uploadRetryRequestId:P.interiorSelection.uploadRetryRequestId,onOpenChange:P.interiorSelection.onOpenChange,onSelectRoom:P.interiorSelection.onSelectRoom,onUploadFile:P.interiorSelection.onUploadFile}):"screen"===P.interiorSelection.presentation?(0,rd.jsx)(q9,{rooms:P.sourceRooms,customRooms:P.customRooms,selectedRoomId:m.id,isInvalidFile:P.interiorSelection.isInvalidFile,uploadRetryRequestId:P.interiorSelection.uploadRetryRequestId,showCloseButton:e,onSelectRoom:P.interiorSelection.onSelectRoom,onUploadFile:P.interiorSelection.onUploadFile}):null:null,O=(0,rd.jsx)(Km,{isComplete:P.processingDialog.isComplete,open:P.processingDialog.open,portalContainer:L,onCloseAnimationEnd:P.processingDialog.onCloseAnimationEnd,onOpenChange:P.processingDialog.onOpenChange}),F=(0,rd.jsxs)(rd.Fragment,{children:[(0,rd.jsx)(WB,{variant:P.activeErrorDialog.variant,open:P.activeErrorDialog.open,portalContainer:L,showDialogCloseButton:e&&P.activeErrorDialog.showCloseButton,onOpenChange:P.activeErrorDialog.onOpenChange,onTryAgain:P.activeErrorDialog.onTryAgain,onCancel:P.activeErrorDialog.onCancel}),(0,rd.jsx)(WB,{variant:P.uploadErrorDialog.variant,open:P.uploadErrorDialog.open,portalContainer:L,onOpenChange:P.uploadErrorDialog.onOpenChange,onTryAgain:P.uploadErrorDialog.onTryAgain,onCancel:P.uploadErrorDialog.onCancel})]}),Q=(0,rd.jsxs)("div",{ref:y,className:"relative grid size-full grid-rows-[minmax(0,1fr)_auto] overflow-hidden text-foreground sm:block","data-testid":"floor-viewer-root",children:[h?(0,rd.jsx)("div",{className:"flex size-full items-center justify-center bg-radial from-background-containers to-background-base-2",children:(0,rd.jsx)(V2,{variant:"logo"})}):P.scene.shouldRender?(0,rd.jsx)(q3,{ref:B,actions:{openInteriorSelection:P.interiorSelection.openFromScene},canShowAr:!!a&&!(WI&&WM),companyName:R,hasActiveError:!!k,material:{name:D,previewUrl:_},portalContainer:L,room:{imageUrl:m.image_url,name:T},scene:{isLoading:P.scene.isLoading,resetKey:P.scene.resetKey},showDialogCloseButton:e}):null,!P.surface.usesSiblingDialogFlow&&N,!P.surface.usesSiblingDialogFlow&&O]});return P.surface.usesSiblingDialogFlow?(0,rd.jsxs)(rd.Fragment,{children:[(P.scene.shouldRenderDialog||h)&&(0,rd.jsx)(VD,{open:S,onOpenChange:I,children:(0,rd.jsxs)(VN,{className:Wl,contentInsideOverlay:!0,portalContainer:C,showCloseButton:!1,onInteractOutside:e=>{e.preventDefault()},children:[(0,rd.jsx)(VQ,{className:"sr-only",children:n}),(0,rd.jsx)(VU,{className:"sr-only"}),Q]})}),N,O,F]}):(0,rd.jsxs)(rd.Fragment,{children:[Q,F]})}function Kb({className:e,...t}){return(0,rd.jsx)(jH,{"data-slot":"radio-group",className:Vk("grid gap-3",e),...t})}function Ky({checked:e,className:t,...r}){return(0,rd.jsx)("div",{className:Vk("absolute top-1/2 left-1/2 size-6 -translate-x-1/2 -translate-y-1/2","flex items-center justify-center rounded-full",e?"bg-lime-400":"bg-background-base-2",t),...r,children:(0,rd.jsx)(c8,{className:"text-constant-white size-3.5",strokeWidth:4})})}function Kw({className:e,variant:t="default",...r}){return(0,rd.jsxs)(jG,{"data-slot":"radio-group-item",className:Vk("border-input text-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 aspect-square size-4 shrink-0 rounded-full border transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50","check"===t&&"size-6","inverted"===t&&"size-5 border-button-outline data-[state=checked]:border-border-red data-[state=checked]:border-4 data-[state=checked]:bg-constant-white cursor-pointer transition-all",e),...r,children:["check"===t&&(0,rd.jsx)("div",{className:"relative",children:(0,rd.jsx)(Ky,{})}),"inverted"!==t&&(0,rd.jsx)(jV,{"data-slot":"radio-group-indicator",className:"relative flex items-center justify-center",children:"check"===t?(0,rd.jsx)(Ky,{checked:!0}):(0,rd.jsx)(c6,{className:"fill-primary absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2"})})]})}function Kx({className:e,children:t,...r}){let{className:n,onReachEnd:i,...a}=r.swiperOptions??{},{t:s}=st(),[o,l]=(0,rc.useState)(null),[c,u]=(0,rc.useState)(!0),[d,h]=(0,rc.useState)(!1),[p,A]=(0,rc.useState)(!1),f=(0,rc.useCallback)(e=>{u(e.isBeginning),h(e.isEnd),A(e.isLocked)},[]),g=(0,rc.useCallback)(e=>{l(e),f(e)},[f]),m=(0,rc.useCallback)(e=>{h(!0),i?.(e)},[i]);return(0,rd.jsxs)("div",{className:Vk("relative w-full overflow-hidden",e),children:[(0,rd.jsx)(GO,{className:Vk("w-full py-5",n),slidesPerView:"auto",slidesPerGroup:2,onSwiper:g,onReachBeginning:()=>u(!0),onReachEnd:m,onFromEdge:f,onLock:()=>A(!0),onUnlock:()=>A(!1),onResize:f,slidesOffsetBefore:24,slidesOffsetAfter:24,spaceBetween:12,...a,children:t}),(0,rd.jsxs)(VR,{className:Vk("absolute top-1/2 left-8 -translate-y-1/2 z-1",{hidden:c||p}),variant:"contrast",size:"icon",onClick:()=>o?.slidePrev(),children:[(0,rd.jsx)(c7,{}),(0,rd.jsx)("span",{className:"sr-only",children:s("previousSlide")})]}),(0,rd.jsxs)(VR,{className:Vk("absolute top-1/2 right-8 -translate-y-1/2 z-1",{hidden:d||p}),variant:"contrast",size:"icon",onClick:()=>o?.slideNext(),children:[(0,rd.jsx)(ue,{}),(0,rd.jsx)("span",{className:"sr-only",children:s("nextSlide")})]})]})}function KC({className:e,...t}){let r=Wz("(max-width: 640px)"),{fetchNextMaterialsPage:n,materialItems:i,selectMaterial:a,selectedMaterialId:s}=qr(),o=(0,rc.useCallback)(()=>{n()},[n]);return 0===i.length?null:(0,rd.jsxs)(rd.Fragment,{children:[!r&&(0,rd.jsx)(WT,{orientation:"vertical"}),(0,rd.jsx)("div",{className:Vk(e),...t,children:(0,rd.jsx)(Kb,{value:s||void 0,onValueChange:e=>{a(e)},children:(0,rd.jsx)(Kx,{swiperOptions:{onReachEnd:o,className:"py-2 sm:py-5"},children:i.map(({materialId:e,material:t,tinuuid:n})=>(0,rd.jsx)(GF,{className:Vk("sm:w-25! w-18! transition-transform duration-200",e!==s&&"hover:scale-110"),children:(0,rd.jsxs)(WP,{htmlFor:`material-${e}`,className:"size-full flex flex-col gap-1 has-data-[state=checked]:bg-transparent",children:[(0,rd.jsxs)("div",{className:"size-full relative sm:h-19 h-13 rounded-[0.75rem] overflow-hidden grid place-items-center sm:block",children:[(0,rd.jsx)("img",{src:t.previews?.[0]?.subRes?.small??t.previews?.[0]?.url,alt:t.name??"",className:"size-full object-cover"}),(0,rd.jsx)(Kw,{value:e,id:`material-${e}`,variant:"check",className:Vk("absolute sm:top-1.75 sm:right-1.75",{"sr-only":e!==s})})]}),!r&&(0,rd.jsx)("span",{className:Vk("block w-full text-xs text-left text-text-light truncate",{"text-text-dark":e===s}),children:t.name})]})},`${n}-${e}`))})})})]})}function KE({className:e,...t}){let{t:r}=st(),{placement:n}=Wm(),{rooms:i,room:a,setRoomId:s}=Wv(),{isRoomScenePending:o,selectCustomRoomFile:l}=Wg(Wf,"useRoomViewerCustomRoomIntake"),c=Wz("(max-width: 640px)"),u=(0,rc.useId)(),d=(0,rc.useCallback)((e,t)=>r(`rooms.${t}`,{defaultValue:e}),[r]),h=(0,rc.useCallback)(async e=>{let t=e.target.files?.[0];e.target.value="",t&&await l(t)},[l]);return(0,rd.jsx)("div",{className:Vk(e),...t,children:(0,rd.jsx)(Kb,{value:a.id,onValueChange:s,children:(0,rd.jsxs)(Kx,{swiperOptions:{className:"py-2 sm:py-5 pb-3 sm:pb-5"},children:[(0,rd.jsx)(GF,{className:"sm:w-25! w-21! h-auto",children:(0,rd.jsxs)(WP,{htmlFor:u,className:Vk("flex size-full cursor-pointer items-center justify-center rounded-[0.75rem] border border-dashed border-muted-foreground/40 bg-transparent px-2 text-center text-xs leading-tight text-muted-foreground transition-colors hover:border-foreground/40 hover:text-foreground",o&&"cursor-wait opacity-80"),"aria-disabled":o,children:[o?(0,rd.jsxs)(rd.Fragment,{children:[(0,rd.jsx)(V2,{className:"size-5"}),(0,rd.jsx)("span",{className:"sr-only",children:r("uploadOwnPhoto")})]}):r("uploadOwnPhoto"),(0,rd.jsx)("input",{id:u,type:"file",accept:"image/*",className:"sr-only",disabled:o,onChange:h})]})}),i.map(e=>(0,rd.jsx)(GF,{className:Vk("sm:w-25! w-21! transition-transform duration-200",e.id!==a.id&&"hover:scale-110"),children:(0,rd.jsxs)(WP,{htmlFor:`room-${e.id}`,className:"size-full flex flex-col gap-1 has-data-[state=checked]:bg-transparent",children:[(0,rd.jsxs)("div",{className:"size-full relative h-17 sm:h-19 rounded-[0.75rem] overflow-hidden",children:[(0,rd.jsx)("img",{src:e.image_url,alt:d(e.name,e.id),className:"size-full object-cover",crossOrigin:"anonymous"}),(0,rd.jsx)(Kw,{value:e.id,id:`room-${e.id}`,variant:"check",className:Vk("absolute top-1.75 right-1.75",{"sr-only":e.id!==a.id})})]}),"floor"===n&&!c&&(0,rd.jsx)("span",{className:Vk("block w-full text-xs text-left text-text-light truncate",{"text-text-dark":e.id===a.id}),children:d(e.name,e.id)})]})},e.id))]})})})}function KS({className:e,...t}){let{placement:r}=Wm();return(0,rd.jsxs)("div",{className:Vk("flex sm:items-end pl-0 overflow-hidden sm:flex-row flex-col py-3 sm:py-0",e),...t,children:[(0,rd.jsx)(KE,{className:Vk("shrink-0",{"sm:min-w-148.5 min-w-full":"floor"===r,grow:"wall"===r})}),"wall"===r&&(0,rd.jsxs)("div",{className:"hidden gap-5 pr-6 pb-5 md:flex",children:[(0,rd.jsx)(qn,{}),(0,rd.jsx)(qp,{})]}),"floor"===r&&(0,rd.jsx)(KC,{})]})}function KI({className:e,...t}){let{name:r}=Wm();return(0,rd.jsx)("div",{className:Vk("h-16 flex items-center px-6",e),...t,children:(0,rd.jsx)("div",{className:"truncate",children:r})})}function KM({variant:e,showDialogCloseButton:t=!1}){let{t:r}=st();return(0,rd.jsxs)("div",{className:"flex size-full flex-col items-center justify-center gap-4 bg-radial from-background-containers to-background-base-2 p-4 text-center",children:[(0,rd.jsx)(Vz,{className:"size-8 text-icons-light"}),(0,rd.jsx)("h2",{className:"typo-base-16 font-medium text-text-dark",children:r(`accessError.${e}`)}),t&&(0,rd.jsx)(VP,{asChild:!0,children:(0,rd.jsx)(VR,{variant:"secondary",children:r("close")})})]})}function KB({showDialogCloseButton:e=!1}){let{placement:t}=Wm(),{isViewerAccessPending:r,accessError:n,hasRooms:i}=Wb(),{setContainerRef:a,sceneLoad:s,isRoomScenePending:o}=Wy(),{t:l}=st(),c=r||o||i&&!Object.values(s).every(Boolean);return"floor"===t?(0,rd.jsx)(Kv,{showDialogCloseButton:e}):n?(0,rd.jsx)("div",{ref:a,className:"relative size-full overflow-hidden bg-radial from-background-containers to-background-base-2 text-foreground",children:(0,rd.jsx)(KM,{variant:n,showDialogCloseButton:e})}):(0,rd.jsxs)("div",{ref:a,className:"relative size-full bg-radial from-background-containers to-background-base-2 text-foreground overflow-hidden",children:[e&&(0,rd.jsx)(VP,{asChild:!0,children:(0,rd.jsxs)(VR,{className:"absolute top-3 right-6 z-20",variant:"secondary",children:[l("close"),(0,rd.jsx)(c4,{})]})}),!r&&(i?(0,rd.jsxs)(rd.Fragment,{children:[(0,rd.jsx)(KI,{className:"absolute top-0 right-0 left-0 z-15"}),(0,rd.jsxs)("div",{className:"size-full max-w-full grid grid-rows-[1fr_auto]",children:[(0,rd.jsx)(qX,{className:"size-full min-h-0"}),(0,rd.jsx)(KS,{className:"bg-background"})]})]}):(0,rd.jsx)(KE,{className:"absolute inset-x-0 bottom-0 bg-background"})),(0,rd.jsx)("div",{"aria-hidden":!c,className:Vk("absolute inset-0 z-10 flex items-center justify-center bg-radial from-background-containers to-background-base-2 transition-opacity",c?"opacity-100 pointer-events-auto duration-0":"opacity-0 pointer-events-none duration-250ms"),children:(0,rd.jsx)(V2,{variant:"logo"})})]})}let Kk={poster:"wallart",carpet:"rugs"},KT={wallart:"wall",rugs:"floor",flooring:"floor"};function KR(e){return"poster"===e||"carpet"===e?Kk[e]:e}let KD=0,K_=[];function KP(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 KL({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:A,externalWidgetSession:f}){var g;let m=function(){let{t:e}=st();return(0,rc.useMemo)(()=>[{value:.025,label:`2.5 ${e("units.cm")}`},{value:.05,label:`5 ${e("units.cm")}`}],[e])}(),v=qh(u),b=KT[n],y="floor"===b?W7:W6,w=GJ({apiKey:h,baseURL:p,source:A}),[x,C]=(0,rc.useState)(r),[E,S]=(0,rc.useState)(null),[I,M]=(0,rc.useState)(m[0].value),[B,k]=(0,rc.useState)(v[0].value),[T,R]=(0,rc.useState)(0),[D,_]=(0,rc.useState)(0),[P,L]=(0,rc.useState)(!1),[N,O]=(0,rc.useState)(null),[F,Q]=(0,rc.useState)(()=>({layoutReady:!1,placementReady:!1,materialReady:!1,artifactsReady:!1,assetsReady:!1,prepareReady:!1})),[U,z]=(0,rc.useState)(!1),[H,j]=(0,rc.useState)(null),[G,V]=(0,rc.useState)(null),W=(0,rc.useRef)(null),q=(0,rc.useRef)(new Set),K=(0,rc.useRef)(null),Y=(0,rc.useRef)(!0),J=(0,rc.useRef)(!1),X="floor"===b,Z="default"===A&&void 0!==h,$=s5({queryKey:["room-viewer","activate",{apiKey:h??null,source:A}],enabled:Z,queryFn:({signal:e})=>Va({productType:GX({apiKey:h,baseURL:p,source:A})},{baseURL:p,headers:{"x-api-key":h},signal:e})},sj,void 0),ee=GZ($.error),et=(0,rc.useMemo)(()=>{let e=$.data;return Vx(e?.widgetSession,{apiConfig:{baseURL:p,headers:{"x-api-key":h}}})},[$.data,h,p]),er=(0,rc.useMemo)(()=>f instanceof Vw?f:Vx(f,{apiConfig:{baseURL:p,headers:{"x-api-key":h}}})??et,[et,h,p,f]),en="shopify"===A?null!==er:Z&&$.isSuccess,ei=s5({queryKey:["room-viewer","rooms",{apiKey:(g={apiKey:h,baseURL:p,source:A,widgetSession:er}).apiKey??null,source:g.source,widgetSessionId:g.widgetSession?.sid??null}],enabled:w&&en,queryFn:async({signal:e})=>{try{return await VB({apiKey:h,baseURL:p,signal:e,source:A,widgetSession:er})}catch(e){if(GZ(e))throw e;return[]}}},sj,void 0),ea=w?ei.data??K_:y,[es,eo]=(0,rc.useState)(()=>({rooms:ea,sourceRooms:ea})),el=(0,rc.useMemo)(()=>KP(es.rooms,es.sourceRooms,ea),[es.rooms,es.sourceRooms,ea]),ec=(0,rc.useCallback)(e=>{eo(t=>{let r=KP(t.rooms,t.sourceRooms,ea);return{rooms:"function"==typeof e?e(r):e,sourceRooms:ea}})},[ea]),[eu,ed]=(0,rc.useState)(()=>y[0].id),eh=el.find(e=>e.id===eu),ep=eh??el[0]??y[0],eA=el.length>0;!eh&&el[0]&&eu!==el[0].id&&ed(el[0].id);let ef=s5({queryKey:VS(r??void 0,{apiKey:h,baseURL:p,source:A}),enabled:(!Z||$.isSuccess||$.isError&&null===ee)&&X&&null===E&&!!r,queryFn:async({signal:e})=>{if(!r)throw Error("Tinuuid is required.");return VI(r,{apiKey:h,baseURL:p,signal:e,source:A,widgetSession:er})}},sj,void 0),eg=ef.data??null,em=E?.native?.glbUrl??null,ev=GZ(ef.error),eb=GZ(ei.error),ey=w&&("shopify"===A?null===er||ei.isLoading:$.isSuccess&&ei.isLoading),ew=Z&&$.isLoading||ey,ex=$.error&&null===ee?"viewer-load-failed":null,eC=ef.error&&null===ev?"viewer-load-failed":null,eE=H??ee??eb??ev,eS=G??ex??eC,eI=(0,rc.useCallback)(e=>{Q(t=>Object.assign({},t,e))},[]);(0,rc.useEffect)(()=>{let e=new Set(el.map(e=>e.image_url));for(let t of Array.from(q.current))e.has(t)||(URL.revokeObjectURL(t),q.current.delete(t))},[el]),(0,rc.useEffect)(()=>{let e=q.current;return Y.current=!0,()=>{for(let t of(Y.current=!1,K.current?.abort(),Array.from(e)))URL.revokeObjectURL(t);e.clear()}},[]);let eM=(0,rc.useCallback)(async e=>{let t=null,r=new AbortController;K.current?.abort(),K.current=r,z(!0);try{t=URL.createObjectURL(e);let n=await q8(e,{apiKey:h,baseURL:p,source:A,signal:r.signal,widgetSession:er});if(r.signal.aborted||!Y.current)return void URL.revokeObjectURL(t);q7()&&Ke(n,e.name).catch(e=>{console.error("Failed to export room debug mask",e)});let i={id:(KD+=1,`room-custom-${KD}`),name:e.name,image_url:t,scene:n};q.current.add(t),eI({placementReady:!1,prepareReady:!1,artifactsReady:!1,assetsReady:!1}),ec(e=>[i,...e]),ed(i.id)}catch(n){if(t&&URL.revokeObjectURL(t),r.signal.aborted)return;let e=GZ(n);if(e)return void j(e);console.error("Failed to prepare custom room scene",n)}finally{K.current===r&&(K.current=null,Y.current&&z(!1))}},[h,p,eI,ec,A,er]);(0,rc.useEffect)(()=>{if("dialog"!==i||!s){J.current=!1;return}J.current||er&&(VC(er,"widget_opened"),J.current=!0)},[s,i,er]),(0,rc.useEffect)(()=>{X&&(C(r),S(null),j(null),V(null))},[r,X]),(0,rc.useEffect)(()=>{j(null),V(null)},[h,A]),(0,rc.useEffect)(()=>{X&&eg&&null===E&&S(eg.materials?.[0]??null)},[E,eg,X]);let eB=(0,rc.useMemo)(()=>({type:n,placement:b,name:d,width:l,height:c,displayUnit:u}),[n,b,d,l,c,u]),ek=(0,rc.useMemo)(()=>({viewerSurface:i,dialogPortalContainer:a,viewerDialogOpen:s,onViewerDialogOpenChange:o}),[i,a,s,o]),eT=(0,rc.useMemo)(()=>({rooms:el,sourceRooms:ea,setRooms:ec,room:ep,setRoomId:ed}),[el,ep,ec,ea]),eR=(0,rc.useMemo)(()=>({src:t,glbUrl:em,tinuuid:x,viewedObject:eg,material:E,setTinuuid:C,setMaterial:S,apiKey:h,baseURL:p,source:A,widgetSession:er,hasRooms:eA,isViewerAccessPending:ew,accessError:eE,setAccessError:j,loadError:eS,setLoadError:V}),[t,em,x,eg,E,h,p,A,er,eA,ew,eE,eS]),eD=(0,rc.useMemo)(()=>({containerRef:N,setContainerRef:O,resourceRef:W,angle:T,setAngle:R,rotation:D,setRotation:_,isDragging:P,setIsDragging:L,sceneLoad:F,patchSceneLoad:eI,isRoomScenePending:U,setIsRoomScenePending:z}),[N,T,D,P,F,eI,U]),e_=(0,rc.useMemo)(()=>({frameWidth:I,setFrameWidth:M,matting:B,setMatting:k}),[I,B]),eP=(0,rc.useMemo)(()=>({isRoomScenePending:U,selectCustomRoomFile:eM}),[U,eM]);return(0,rd.jsx)(Wc,{value:eB,children:(0,rd.jsx)(Wu,{value:ek,children:(0,rd.jsx)(Wd,{value:eT,children:(0,rd.jsx)(Wh,{value:eR,children:(0,rd.jsx)(Wp,{value:eD,children:(0,rd.jsx)(WA,{value:e_,children:(0,rd.jsx)(Wf,{value:eP,children:e})})})})})})})}let KN=new rl({defaultOptions:{queries:{gcTime:1/0,refetchOnMount:!1,refetchOnReconnect:!1,refetchOnWindowFocus:!1,retry:(e,t)=>{let r=function(e){if(il(e))return e.response?.status}(t);return(void 0===r||!(r>=400)||!(r<500))&&e<2}}}});function KO({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:A=!0,onViewerDialogOpenChange:f,widgetSession:g}){let{i18n:m}=st(),v=c?.trim()||void 0,b=KR(e),y="wall"===KT[b]?function(e,t,r="m"){return{width:qd(e??0,r),height:qd(t??0,r)}}(a,i,o):null;return(0,rc.useEffect)(()=>{},[e]),(0,rc.useEffect)(()=>{"string"==typeof s&&m.changeLanguage(s)},[m,s]),(0,rd.jsx)(rA,{client:KN,children:(0,rd.jsx)(KL,{src:t??null,tinuuid:r??null,type:b,viewerSurface:h,dialogPortalContainer:p,viewerDialogOpen:A,onViewerDialogOpenChange:f,name:n,width:y?.width??0,height:y?.height??0,displayUnit:l,apiKey:v,baseURL:"shopify"===u?GY:void 0,source:u,externalWidgetSession:g,children:(0,rd.jsx)(KB,{showDialogCloseButton:d})})})}function KF({type:e,src:t,tinuuid:r,width:n,height:i,dimensionUnit:a,displayUnit:s,name:o,language:l,apiKey:c,source:u,widgetSession:d,open:h,defaultOpen:p,onOpenChange:A,...f}){let[g,m]=(0,rc.useState)(null),v=KT[KR(e)],[b,y]=(0,rc.useState)(p??!1),w=h??b,[x,C]=(0,rc.useState)(w),E=w||x;(0,rc.useEffect)(()=>{w&&C(!0)},[w]);let S=(0,rd.jsx)(KO,{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:!0,viewerSurface:"dialog",dialogPortalContainer:g,viewerDialogOpen:w,onViewerDialogOpenChange:function(e){void 0===h&&y(e),A?.(e)}});return(0,rd.jsxs)(rd.Fragment,{children:[(0,ai.createPortal)((0,rd.jsx)("style",{children:GG.A}),document.head),(0,ai.createPortal)((0,rd.jsxs)(sw.div,{style:{display:"block",letterSpacing:"normal",zIndex:0x7fffffff},children:[(0,rd.jsx)("style",{children:GK}),(0,rd.jsx)("div",{ref:m}),g&&(0,rd.jsx)(Gj,{root:g,storageKey:"neurodyn-theme",defaultTheme:"light",children:(0,rd.jsx)(sr,{i18n:GW,children:"floor"===v?E&&S:(0,rd.jsx)(VD,{...f,open:h,defaultOpen:p,onOpenChange:A,children:(0,rd.jsxs)(VN,{className:Wl,contentInsideOverlay:!0,portalContainer:g,showCloseButton:!1,onInteractOutside:e=>{e.preventDefault()},children:[(0,rd.jsxs)(VO,{className:"sr-only",children:[(0,rd.jsx)(VQ,{children:o}),(0,rd.jsx)(VU,{})]}),S]})})})})]}),document.body)]})}VA({baseURL:"https://api.neurodyn.ai/v1/"}),Ve({baseURL:"https://api.neurodyn.ai/"});let KQ=iI({clientName:"API node client",configureFunctionName:"configureNodeApiClient",defaultBaseURL:"https://api.vizbl.com"});KQ.configureClientRuntime,KQ.configureAccessTokenResolverRuntime,KQ.configureHeadersResolverRuntime,KQ.configureUnauthorizedHandlerRuntime,KQ.isClientConfiguredRuntime,KQ.assertClientConfiguredRuntime,KQ.resetClientForTestsRuntime;let KU=KQ.requestRuntime;async function Kz(e){return KU(e)}async function KH(e,t={}){let{client:r=Kz,...n}=t;return(await r({method:"POST",url:"/public/widget/activate-wallart",params:e,...n})).data}KQ.requestWithoutUnauthorizedRecovery,KQ.addResponseInterceptorRuntime,(eQ=tw||(tw={})).assertEqual=e=>{},eQ.assertIs=function(e){},eQ.assertNever=function(e){throw Error()},eQ.arrayToEnum=e=>{let t={};for(let r of e)t[r]=r;return t},eQ.getValidEnumValues=e=>{let t=eQ.objectKeys(e).filter(t=>"number"!=typeof e[e[t]]),r={};for(let n of t)r[n]=e[n];return eQ.objectValues(r)},eQ.objectValues=e=>eQ.objectKeys(e).map(function(t){return e[t]}),eQ.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},eQ.find=(e,t)=>{for(let r of e)if(t(r))return r},eQ.isInteger="function"==typeof Number.isInteger?e=>Number.isInteger(e):e=>"number"==typeof e&&Number.isFinite(e)&&Math.floor(e)===e,eQ.joinValues=function(e,t=" | "){return e.map(e=>"string"==typeof e?`'${e}'`:e).join(t)},eQ.jsonStringifyReplacer=(e,t)=>"bigint"==typeof t?t.toString():t,(tx||(tx={})).mergeShapes=(e,t)=>({...e,...t});let Kj=tw.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),KG=e=>{switch(typeof e){case"undefined":return Kj.undefined;case"string":return Kj.string;case"number":return Number.isNaN(e)?Kj.nan:Kj.number;case"boolean":return Kj.boolean;case"function":return Kj.function;case"bigint":return Kj.bigint;case"symbol":return Kj.symbol;case"object":if(Array.isArray(e))return Kj.array;if(null===e)return Kj.null;if(e.then&&"function"==typeof e.then&&e.catch&&"function"==typeof e.catch)return Kj.promise;if("u">typeof Map&&e instanceof Map)return Kj.map;if("u">typeof Set&&e instanceof Set)return Kj.set;if("u">typeof Date&&e instanceof Date)return Kj.date;return Kj.object;default:return Kj.unknown}},KV=tw.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 KW 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 KW))throw Error(`Not a ZodError: ${e}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,tw.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()}}KW.create=e=>new KW(e);let Kq=(e,t)=>{let r;switch(e.code){case KV.invalid_type:r=e.received===Kj.undefined?"Required":`Expected ${e.expected}, received ${e.received}`;break;case KV.invalid_literal:r=`Invalid literal value, expected ${JSON.stringify(e.expected,tw.jsonStringifyReplacer)}`;break;case KV.unrecognized_keys:r=`Unrecognized key(s) in object: ${tw.joinValues(e.keys,", ")}`;break;case KV.invalid_union:r="Invalid input";break;case KV.invalid_union_discriminator:r=`Invalid discriminator value. Expected ${tw.joinValues(e.options)}`;break;case KV.invalid_enum_value:r=`Invalid enum value. Expected ${tw.joinValues(e.options)}, received '${e.received}'`;break;case KV.invalid_arguments:r="Invalid function arguments";break;case KV.invalid_return_type:r="Invalid function return type";break;case KV.invalid_date:r="Invalid date";break;case KV.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}"`:tw.assertNever(e.validation):r="regex"!==e.validation?`Invalid ${e.validation}`:"Invalid";break;case KV.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 KV.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 KV.custom:r="Invalid input";break;case KV.invalid_intersection_types:r="Intersection results could not be merged";break;case KV.not_multiple_of:r=`Number must be a multiple of ${e.multipleOf}`;break;case KV.not_finite:r="Number must be finite";break;default:r=t.defaultError,tw.assertNever(e)}return{message:r}};(eU=tC||(tC={})).errToObj=e=>"string"==typeof e?{message:e}:e||{},eU.toString=e=>"string"==typeof e?e:e?.message;let KK=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 KY(e,t){let r=KK({issueData:t,data:e.data,path:e.path,errorMaps:[e.common.contextualErrorMap,e.schemaErrorMap,Kq,void 0].filter(e=>!!e)});e.common.issues.push(r)}class KJ{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 KX;"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 KJ.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 KX;"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 KX=Object.freeze({status:"aborted"}),KZ=e=>({status:"dirty",value:e}),K$=e=>({status:"valid",value:e}),K0=e=>"u">typeof Promise&&e instanceof Promise;class K1{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 K2=(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 KW(e.common.issues);return this._error=t,this._error}}};function K3(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 K4{get description(){return this._def.description}_getType(e){return KG(e.data)}_getOrReturnCtx(e,t){return t||{common:e.parent.common,data:e.data,parsedType:KG(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new KJ,ctx:{common:e.parent.common,data:e.data,parsedType:KG(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){let t=this._parse(e);if(K0(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:KG(e)},n=this._parseSync({data:e,path:r.path,parent:r});return K2(r,n)}"~validate"(e){let t={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:KG(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:KG(e)},n=this._parse({data:e,path:r.path,parent:r});return K2(r,await (K0(n)?n:Promise.resolve(n)))}refine(e,t){return this._refinement((r,n)=>{let i=e(r),a=()=>n.addIssue({code:KV.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 Yz({schema:this,typeName:tE.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 YH.create(this,this._def)}nullable(){return Yj.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return YE.create(this)}promise(){return YU.create(this,this._def)}or(e){return YI.create([this,e],this._def)}and(e){return Yk.create(this,e,this._def)}transform(e){return new Yz({...K3(this._def),schema:this,typeName:tE.ZodEffects,effect:{type:"transform",transform:e}})}default(e){return new YG({...K3(this._def),innerType:this,defaultValue:"function"==typeof e?e:()=>e,typeName:tE.ZodDefault})}brand(){return new Yq({typeName:tE.ZodBranded,type:this,...K3(this._def)})}catch(e){return new YV({...K3(this._def),innerType:this,catchValue:"function"==typeof e?e:()=>e,typeName:tE.ZodCatch})}describe(e){return new this.constructor({...this._def,description:e})}pipe(e){return YK.create(this,e)}readonly(){return YY.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}let K9=/^c[^\s-]{8,}$/i,K5=/^[0-9a-z]+$/,K8=/^[0-9A-HJKMNP-TV-Z]{26}$/i,K6=/^[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,K7=/^[a-z0-9_-]{21}$/i,Ye=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,Yt=/^[-+]?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)?)??$/,Yr=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,Yn=/^(?:(?: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])$/,Yi=/^(?:(?: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])$/,Ya=/^(([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]))$/,Ys=/^(([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])$/,Yo=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,Yl=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,Yc="((\\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])))",Yu=RegExp(`^${Yc}$`);function Yd(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 Yh extends K4{_parse(e){var t,r,n,i;let a;if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==Kj.string){let t=this._getOrReturnCtx(e);return KY(t,{code:KV.invalid_type,expected:Kj.string,received:t.parsedType}),KX}let s=new KJ;for(let o of this._def.checks)if("min"===o.kind)e.data.length<o.value&&(KY(a=this._getOrReturnCtx(e,a),{code:KV.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&&(KY(a=this._getOrReturnCtx(e,a),{code:KV.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?KY(a,{code:KV.too_big,maximum:o.value,type:"string",inclusive:!0,exact:!0,message:o.message}):r&&KY(a,{code:KV.too_small,minimum:o.value,type:"string",inclusive:!0,exact:!0,message:o.message}),s.dirty())}else if("email"===o.kind)Yr.test(e.data)||(KY(a=this._getOrReturnCtx(e,a),{validation:"email",code:KV.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)||(KY(a=this._getOrReturnCtx(e,a),{validation:"emoji",code:KV.invalid_string,message:o.message}),s.dirty());else if("uuid"===o.kind)K6.test(e.data)||(KY(a=this._getOrReturnCtx(e,a),{validation:"uuid",code:KV.invalid_string,message:o.message}),s.dirty());else if("nanoid"===o.kind)K7.test(e.data)||(KY(a=this._getOrReturnCtx(e,a),{validation:"nanoid",code:KV.invalid_string,message:o.message}),s.dirty());else if("cuid"===o.kind)K9.test(e.data)||(KY(a=this._getOrReturnCtx(e,a),{validation:"cuid",code:KV.invalid_string,message:o.message}),s.dirty());else if("cuid2"===o.kind)K5.test(e.data)||(KY(a=this._getOrReturnCtx(e,a),{validation:"cuid2",code:KV.invalid_string,message:o.message}),s.dirty());else if("ulid"===o.kind)K8.test(e.data)||(KY(a=this._getOrReturnCtx(e,a),{validation:"ulid",code:KV.invalid_string,message:o.message}),s.dirty());else if("url"===o.kind)try{new URL(e.data)}catch{KY(a=this._getOrReturnCtx(e,a),{validation:"url",code:KV.invalid_string,message:o.message}),s.dirty()}else"regex"===o.kind?(o.regex.lastIndex=0,o.regex.test(e.data)||(KY(a=this._getOrReturnCtx(e,a),{validation:"regex",code:KV.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)||(KY(a=this._getOrReturnCtx(e,a),{code:KV.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)||(KY(a=this._getOrReturnCtx(e,a),{code:KV.invalid_string,validation:{startsWith:o.value},message:o.message}),s.dirty()):"endsWith"===o.kind?e.data.endsWith(o.value)||(KY(a=this._getOrReturnCtx(e,a),{code:KV.invalid_string,validation:{endsWith:o.value},message:o.message}),s.dirty()):"datetime"===o.kind?(function(e){let t=`${Yc}T${Yd(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)||(KY(a=this._getOrReturnCtx(e,a),{code:KV.invalid_string,validation:"datetime",message:o.message}),s.dirty()):"date"===o.kind?Yu.test(e.data)||(KY(a=this._getOrReturnCtx(e,a),{code:KV.invalid_string,validation:"date",message:o.message}),s.dirty()):"time"===o.kind?RegExp(`^${Yd(o)}$`).test(e.data)||(KY(a=this._getOrReturnCtx(e,a),{code:KV.invalid_string,validation:"time",message:o.message}),s.dirty()):"duration"===o.kind?Yt.test(e.data)||(KY(a=this._getOrReturnCtx(e,a),{validation:"duration",code:KV.invalid_string,message:o.message}),s.dirty()):"ip"===o.kind?(t=e.data,!(("v4"===(r=o.version)||!r)&&Yn.test(t)||("v6"===r||!r)&&Ya.test(t))&&1&&(KY(a=this._getOrReturnCtx(e,a),{validation:"ip",code:KV.invalid_string,message:o.message}),s.dirty())):"jwt"===o.kind?!function(e,t){if(!Ye.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)&&(KY(a=this._getOrReturnCtx(e,a),{validation:"jwt",code:KV.invalid_string,message:o.message}),s.dirty()):"cidr"===o.kind?(n=e.data,!(("v4"===(i=o.version)||!i)&&Yi.test(n)||("v6"===i||!i)&&Ys.test(n))&&1&&(KY(a=this._getOrReturnCtx(e,a),{validation:"cidr",code:KV.invalid_string,message:o.message}),s.dirty())):"base64"===o.kind?Yo.test(e.data)||(KY(a=this._getOrReturnCtx(e,a),{validation:"base64",code:KV.invalid_string,message:o.message}),s.dirty()):"base64url"===o.kind?Yl.test(e.data)||(KY(a=this._getOrReturnCtx(e,a),{validation:"base64url",code:KV.invalid_string,message:o.message}),s.dirty()):tw.assertNever(o);return{status:s.value,value:e.data}}_regex(e,t,r){return this.refinement(t=>e.test(t),{validation:t,code:KV.invalid_string,...tC.errToObj(r)})}_addCheck(e){return new Yh({...this._def,checks:[...this._def.checks,e]})}email(e){return this._addCheck({kind:"email",...tC.errToObj(e)})}url(e){return this._addCheck({kind:"url",...tC.errToObj(e)})}emoji(e){return this._addCheck({kind:"emoji",...tC.errToObj(e)})}uuid(e){return this._addCheck({kind:"uuid",...tC.errToObj(e)})}nanoid(e){return this._addCheck({kind:"nanoid",...tC.errToObj(e)})}cuid(e){return this._addCheck({kind:"cuid",...tC.errToObj(e)})}cuid2(e){return this._addCheck({kind:"cuid2",...tC.errToObj(e)})}ulid(e){return this._addCheck({kind:"ulid",...tC.errToObj(e)})}base64(e){return this._addCheck({kind:"base64",...tC.errToObj(e)})}base64url(e){return this._addCheck({kind:"base64url",...tC.errToObj(e)})}jwt(e){return this._addCheck({kind:"jwt",...tC.errToObj(e)})}ip(e){return this._addCheck({kind:"ip",...tC.errToObj(e)})}cidr(e){return this._addCheck({kind:"cidr",...tC.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,...tC.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,...tC.errToObj(e?.message)})}duration(e){return this._addCheck({kind:"duration",...tC.errToObj(e)})}regex(e,t){return this._addCheck({kind:"regex",regex:e,...tC.errToObj(t)})}includes(e,t){return this._addCheck({kind:"includes",value:e,position:t?.position,...tC.errToObj(t?.message)})}startsWith(e,t){return this._addCheck({kind:"startsWith",value:e,...tC.errToObj(t)})}endsWith(e,t){return this._addCheck({kind:"endsWith",value:e,...tC.errToObj(t)})}min(e,t){return this._addCheck({kind:"min",value:e,...tC.errToObj(t)})}max(e,t){return this._addCheck({kind:"max",value:e,...tC.errToObj(t)})}length(e,t){return this._addCheck({kind:"length",value:e,...tC.errToObj(t)})}nonempty(e){return this.min(1,tC.errToObj(e))}trim(){return new Yh({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new Yh({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new Yh({...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}}Yh.create=e=>new Yh({checks:[],typeName:tE.ZodString,coerce:e?.coerce??!1,...K3(e)});class Yp extends K4{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)!==Kj.number){let t=this._getOrReturnCtx(e);return KY(t,{code:KV.invalid_type,expected:Kj.number,received:t.parsedType}),KX}let r=new KJ;for(let n of this._def.checks)"int"===n.kind?tw.isInteger(e.data)||(KY(t=this._getOrReturnCtx(e,t),{code:KV.invalid_type,expected:"integer",received:"float",message:n.message}),r.dirty()):"min"===n.kind?(n.inclusive?e.data<n.value:e.data<=n.value)&&(KY(t=this._getOrReturnCtx(e,t),{code:KV.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)&&(KY(t=this._getOrReturnCtx(e,t),{code:KV.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)&&(KY(t=this._getOrReturnCtx(e,t),{code:KV.not_multiple_of,multipleOf:n.value,message:n.message}),r.dirty()):"finite"===n.kind?Number.isFinite(e.data)||(KY(t=this._getOrReturnCtx(e,t),{code:KV.not_finite,message:n.message}),r.dirty()):tw.assertNever(n);return{status:r.value,value:e.data}}gte(e,t){return this.setLimit("min",e,!0,tC.toString(t))}gt(e,t){return this.setLimit("min",e,!1,tC.toString(t))}lte(e,t){return this.setLimit("max",e,!0,tC.toString(t))}lt(e,t){return this.setLimit("max",e,!1,tC.toString(t))}setLimit(e,t,r,n){return new Yp({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:r,message:tC.toString(n)}]})}_addCheck(e){return new Yp({...this._def,checks:[...this._def.checks,e]})}int(e){return this._addCheck({kind:"int",message:tC.toString(e)})}positive(e){return this._addCheck({kind:"min",value:0,inclusive:!1,message:tC.toString(e)})}negative(e){return this._addCheck({kind:"max",value:0,inclusive:!1,message:tC.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:0,inclusive:!0,message:tC.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:0,inclusive:!0,message:tC.toString(e)})}multipleOf(e,t){return this._addCheck({kind:"multipleOf",value:e,message:tC.toString(t)})}finite(e){return this._addCheck({kind:"finite",message:tC.toString(e)})}safe(e){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:tC.toString(e)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:tC.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&&tw.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)}}Yp.create=e=>new Yp({checks:[],typeName:tE.ZodNumber,coerce:e?.coerce||!1,...K3(e)});class YA extends K4{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)!==Kj.bigint)return this._getInvalidInput(e);let r=new KJ;for(let n of this._def.checks)"min"===n.kind?(n.inclusive?e.data<n.value:e.data<=n.value)&&(KY(t=this._getOrReturnCtx(e,t),{code:KV.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)&&(KY(t=this._getOrReturnCtx(e,t),{code:KV.too_big,type:"bigint",maximum:n.value,inclusive:n.inclusive,message:n.message}),r.dirty()):"multipleOf"===n.kind?e.data%n.value!==BigInt(0)&&(KY(t=this._getOrReturnCtx(e,t),{code:KV.not_multiple_of,multipleOf:n.value,message:n.message}),r.dirty()):tw.assertNever(n);return{status:r.value,value:e.data}}_getInvalidInput(e){let t=this._getOrReturnCtx(e);return KY(t,{code:KV.invalid_type,expected:Kj.bigint,received:t.parsedType}),KX}gte(e,t){return this.setLimit("min",e,!0,tC.toString(t))}gt(e,t){return this.setLimit("min",e,!1,tC.toString(t))}lte(e,t){return this.setLimit("max",e,!0,tC.toString(t))}lt(e,t){return this.setLimit("max",e,!1,tC.toString(t))}setLimit(e,t,r,n){return new YA({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:r,message:tC.toString(n)}]})}_addCheck(e){return new YA({...this._def,checks:[...this._def.checks,e]})}positive(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:tC.toString(e)})}negative(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:tC.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:tC.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:tC.toString(e)})}multipleOf(e,t){return this._addCheck({kind:"multipleOf",value:e,message:tC.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}}YA.create=e=>new YA({checks:[],typeName:tE.ZodBigInt,coerce:e?.coerce??!1,...K3(e)});class Yf extends K4{_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==Kj.boolean){let t=this._getOrReturnCtx(e);return KY(t,{code:KV.invalid_type,expected:Kj.boolean,received:t.parsedType}),KX}return K$(e.data)}}Yf.create=e=>new Yf({typeName:tE.ZodBoolean,coerce:e?.coerce||!1,...K3(e)});class Yg extends K4{_parse(e){let t;if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==Kj.date){let t=this._getOrReturnCtx(e);return KY(t,{code:KV.invalid_type,expected:Kj.date,received:t.parsedType}),KX}if(Number.isNaN(e.data.getTime()))return KY(this._getOrReturnCtx(e),{code:KV.invalid_date}),KX;let r=new KJ;for(let n of this._def.checks)"min"===n.kind?e.data.getTime()<n.value&&(KY(t=this._getOrReturnCtx(e,t),{code:KV.too_small,message:n.message,inclusive:!0,exact:!1,minimum:n.value,type:"date"}),r.dirty()):"max"===n.kind?e.data.getTime()>n.value&&(KY(t=this._getOrReturnCtx(e,t),{code:KV.too_big,message:n.message,inclusive:!0,exact:!1,maximum:n.value,type:"date"}),r.dirty()):tw.assertNever(n);return{status:r.value,value:new Date(e.data.getTime())}}_addCheck(e){return new Yg({...this._def,checks:[...this._def.checks,e]})}min(e,t){return this._addCheck({kind:"min",value:e.getTime(),message:tC.toString(t)})}max(e,t){return this._addCheck({kind:"max",value:e.getTime(),message:tC.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}}Yg.create=e=>new Yg({checks:[],coerce:e?.coerce||!1,typeName:tE.ZodDate,...K3(e)});class Ym extends K4{_parse(e){if(this._getType(e)!==Kj.symbol){let t=this._getOrReturnCtx(e);return KY(t,{code:KV.invalid_type,expected:Kj.symbol,received:t.parsedType}),KX}return K$(e.data)}}Ym.create=e=>new Ym({typeName:tE.ZodSymbol,...K3(e)});class Yv extends K4{_parse(e){if(this._getType(e)!==Kj.undefined){let t=this._getOrReturnCtx(e);return KY(t,{code:KV.invalid_type,expected:Kj.undefined,received:t.parsedType}),KX}return K$(e.data)}}Yv.create=e=>new Yv({typeName:tE.ZodUndefined,...K3(e)});class Yb extends K4{_parse(e){if(this._getType(e)!==Kj.null){let t=this._getOrReturnCtx(e);return KY(t,{code:KV.invalid_type,expected:Kj.null,received:t.parsedType}),KX}return K$(e.data)}}Yb.create=e=>new Yb({typeName:tE.ZodNull,...K3(e)});class Yy extends K4{constructor(){super(...arguments),this._any=!0}_parse(e){return K$(e.data)}}Yy.create=e=>new Yy({typeName:tE.ZodAny,...K3(e)});class Yw extends K4{constructor(){super(...arguments),this._unknown=!0}_parse(e){return K$(e.data)}}Yw.create=e=>new Yw({typeName:tE.ZodUnknown,...K3(e)});class Yx extends K4{_parse(e){let t=this._getOrReturnCtx(e);return KY(t,{code:KV.invalid_type,expected:Kj.never,received:t.parsedType}),KX}}Yx.create=e=>new Yx({typeName:tE.ZodNever,...K3(e)});class YC extends K4{_parse(e){if(this._getType(e)!==Kj.undefined){let t=this._getOrReturnCtx(e);return KY(t,{code:KV.invalid_type,expected:Kj.void,received:t.parsedType}),KX}return K$(e.data)}}YC.create=e=>new YC({typeName:tE.ZodVoid,...K3(e)});class YE extends K4{_parse(e){let{ctx:t,status:r}=this._processInputParams(e),n=this._def;if(t.parsedType!==Kj.array)return KY(t,{code:KV.invalid_type,expected:Kj.array,received:t.parsedType}),KX;if(null!==n.exactLength){let e=t.data.length>n.exactLength.value,i=t.data.length<n.exactLength.value;(e||i)&&(KY(t,{code:e?KV.too_big:KV.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&&(KY(t,{code:KV.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&&(KY(t,{code:KV.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 K1(t,e,t.path,r)))).then(e=>KJ.mergeArray(r,e));let i=[...t.data].map((e,r)=>n.type._parseSync(new K1(t,e,t.path,r)));return KJ.mergeArray(r,i)}get element(){return this._def.type}min(e,t){return new YE({...this._def,minLength:{value:e,message:tC.toString(t)}})}max(e,t){return new YE({...this._def,maxLength:{value:e,message:tC.toString(t)}})}length(e,t){return new YE({...this._def,exactLength:{value:e,message:tC.toString(t)}})}nonempty(e){return this.min(1,e)}}YE.create=(e,t)=>new YE({type:e,minLength:null,maxLength:null,exactLength:null,typeName:tE.ZodArray,...K3(t)});class YS extends K4{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=tw.objectKeys(e);return this._cached={shape:e,keys:t},this._cached}_parse(e){if(this._getType(e)!==Kj.object){let t=this._getOrReturnCtx(e);return KY(t,{code:KV.invalid_type,expected:Kj.object,received:t.parsedType}),KX}let{status:t,ctx:r}=this._processInputParams(e),{shape:n,keys:i}=this._getCached(),a=[];if(!(this._def.catchall instanceof Yx&&"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 K1(r,i,r.path,e)),alwaysSet:e in r.data})}if(this._def.catchall instanceof Yx){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&&(KY(r,{code:KV.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 K1(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=>KJ.mergeObjectSync(t,e)):KJ.mergeObjectSync(t,s)}get shape(){return this._def.shape()}strict(e){return tC.errToObj,new YS({...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:tC.errToObj(e).message??n}:{message:n}}}:{}})}strip(){return new YS({...this._def,unknownKeys:"strip"})}passthrough(){return new YS({...this._def,unknownKeys:"passthrough"})}extend(e){return new YS({...this._def,shape:()=>({...this._def.shape(),...e})})}merge(e){return new YS({unknownKeys:e._def.unknownKeys,catchall:e._def.catchall,shape:()=>({...this._def.shape(),...e._def.shape()}),typeName:tE.ZodObject})}setKey(e,t){return this.augment({[e]:t})}catchall(e){return new YS({...this._def,catchall:e})}pick(e){let t={};for(let r of tw.objectKeys(e))e[r]&&this.shape[r]&&(t[r]=this.shape[r]);return new YS({...this._def,shape:()=>t})}omit(e){let t={};for(let r of tw.objectKeys(this.shape))e[r]||(t[r]=this.shape[r]);return new YS({...this._def,shape:()=>t})}deepPartial(){return function e(t){if(t instanceof YS){let r={};for(let n in t.shape){let i=t.shape[n];r[n]=YH.create(e(i))}return new YS({...t._def,shape:()=>r})}if(t instanceof YE)return new YE({...t._def,type:e(t.element)});if(t instanceof YH)return YH.create(e(t.unwrap()));if(t instanceof Yj)return Yj.create(e(t.unwrap()));if(t instanceof YT)return YT.create(t.items.map(t=>e(t)));else return t}(this)}partial(e){let t={};for(let r of tw.objectKeys(this.shape)){let n=this.shape[r];e&&!e[r]?t[r]=n:t[r]=n.optional()}return new YS({...this._def,shape:()=>t})}required(e){let t={};for(let r of tw.objectKeys(this.shape))if(e&&!e[r])t[r]=this.shape[r];else{let e=this.shape[r];for(;e instanceof YH;)e=e._def.innerType;t[r]=e}return new YS({...this._def,shape:()=>t})}keyof(){return YO(tw.objectKeys(this.shape))}}YS.create=(e,t)=>new YS({shape:()=>e,unknownKeys:"strip",catchall:Yx.create(),typeName:tE.ZodObject,...K3(t)}),YS.strictCreate=(e,t)=>new YS({shape:()=>e,unknownKeys:"strict",catchall:Yx.create(),typeName:tE.ZodObject,...K3(t)}),YS.lazycreate=(e,t)=>new YS({shape:e,unknownKeys:"strip",catchall:Yx.create(),typeName:tE.ZodObject,...K3(t)});class YI extends K4{_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 KW(e.ctx.common.issues));return KY(t,{code:KV.invalid_union,unionErrors:r}),KX});{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 KW(e));return KY(t,{code:KV.invalid_union,unionErrors:i}),KX}}get options(){return this._def.options}}YI.create=(e,t)=>new YI({options:e,typeName:tE.ZodUnion,...K3(t)});let YM=e=>{if(e instanceof YL)return YM(e.schema);if(e instanceof Yz)return YM(e.innerType());if(e instanceof YN)return[e.value];if(e instanceof YF)return e.options;if(e instanceof YQ)return tw.objectValues(e.enum);else if(e instanceof YG)return YM(e._def.innerType);else if(e instanceof Yv)return[void 0];else if(e instanceof Yb)return[null];else if(e instanceof YH)return[void 0,...YM(e.unwrap())];else if(e instanceof Yj)return[null,...YM(e.unwrap())];else if(e instanceof Yq)return YM(e.unwrap());else if(e instanceof YY)return YM(e.unwrap());else if(e instanceof YV)return YM(e._def.innerType);else return[]};class YB extends K4{_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==Kj.object)return KY(t,{code:KV.invalid_type,expected:Kj.object,received:t.parsedType}),KX;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}):(KY(t,{code:KV.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[r]}),KX)}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=YM(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 YB({typeName:tE.ZodDiscriminatedUnion,discriminator:e,options:t,optionsMap:n,...K3(r)})}}class Yk extends K4{_parse(e){let{status:t,ctx:r}=this._processInputParams(e),n=(e,n)=>{if("aborted"===e.status||"aborted"===n.status)return KX;let i=function e(t,r){let n=KG(t),i=KG(r);if(t===r)return{valid:!0,data:t};if(n===Kj.object&&i===Kj.object){let n=tw.objectKeys(r),i=tw.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===Kj.array&&i===Kj.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===Kj.date&&i===Kj.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}):(KY(r,{code:KV.invalid_intersection_types}),KX)};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}))}}Yk.create=(e,t,r)=>new Yk({left:e,right:t,typeName:tE.ZodIntersection,...K3(r)});class YT extends K4{_parse(e){let{status:t,ctx:r}=this._processInputParams(e);if(r.parsedType!==Kj.array)return KY(r,{code:KV.invalid_type,expected:Kj.array,received:r.parsedType}),KX;if(r.data.length<this._def.items.length)return KY(r,{code:KV.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),KX;!this._def.rest&&r.data.length>this._def.items.length&&(KY(r,{code:KV.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 K1(r,e,r.path,t)):null}).filter(e=>!!e);return r.common.async?Promise.all(n).then(e=>KJ.mergeArray(t,e)):KJ.mergeArray(t,n)}get items(){return this._def.items}rest(e){return new YT({...this._def,rest:e})}}YT.create=(e,t)=>{if(!Array.isArray(e))throw Error("You must pass an array of schemas to z.tuple([ ... ])");return new YT({items:e,typeName:tE.ZodTuple,rest:null,...K3(t)})};class YR extends K4{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!==Kj.object)return KY(r,{code:KV.invalid_type,expected:Kj.object,received:r.parsedType}),KX;let n=[],i=this._def.keyType,a=this._def.valueType;for(let e in r.data)n.push({key:i._parse(new K1(r,e,r.path,e)),value:a._parse(new K1(r,r.data[e],r.path,e)),alwaysSet:e in r.data});return r.common.async?KJ.mergeObjectAsync(t,n):KJ.mergeObjectSync(t,n)}get element(){return this._def.valueType}static create(e,t,r){return new YR(t instanceof K4?{keyType:e,valueType:t,typeName:tE.ZodRecord,...K3(r)}:{keyType:Yh.create(),valueType:e,typeName:tE.ZodRecord,...K3(t)})}}class YD extends K4{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!==Kj.map)return KY(r,{code:KV.invalid_type,expected:Kj.map,received:r.parsedType}),KX;let n=this._def.keyType,i=this._def.valueType,a=[...r.data.entries()].map(([e,t],a)=>({key:n._parse(new K1(r,e,r.path,[a,"key"])),value:i._parse(new K1(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 KX;("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 KX;("dirty"===n.status||"dirty"===i.status)&&t.dirty(),e.set(n.value,i.value)}return{status:t.value,value:e}}}}YD.create=(e,t,r)=>new YD({valueType:t,keyType:e,typeName:tE.ZodMap,...K3(r)});class Y_ extends K4{_parse(e){let{status:t,ctx:r}=this._processInputParams(e);if(r.parsedType!==Kj.set)return KY(r,{code:KV.invalid_type,expected:Kj.set,received:r.parsedType}),KX;let n=this._def;null!==n.minSize&&r.data.size<n.minSize.value&&(KY(r,{code:KV.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&&(KY(r,{code:KV.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 KX;"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 K1(r,e,r.path,t)));return r.common.async?Promise.all(s).then(e=>a(e)):a(s)}min(e,t){return new Y_({...this._def,minSize:{value:e,message:tC.toString(t)}})}max(e,t){return new Y_({...this._def,maxSize:{value:e,message:tC.toString(t)}})}size(e,t){return this.min(e,t).max(e,t)}nonempty(e){return this.min(1,e)}}Y_.create=(e,t)=>new Y_({valueType:e,minSize:null,maxSize:null,typeName:tE.ZodSet,...K3(t)});class YP extends K4{constructor(){super(...arguments),this.validate=this.implement}_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==Kj.function)return KY(t,{code:KV.invalid_type,expected:Kj.function,received:t.parsedType}),KX;function r(e,r){return KK({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,Kq,Kq].filter(e=>!!e),issueData:{code:KV.invalid_arguments,argumentsError:r}})}function n(e,r){return KK({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,Kq,Kq].filter(e=>!!e),issueData:{code:KV.invalid_return_type,returnTypeError:r}})}let i={errorMap:t.common.contextualErrorMap},a=t.data;if(this._def.returns instanceof YU){let e=this;return K$(async function(...t){let s=new KW([]),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 K$(function(...t){let s=e._def.args.safeParse(t,i);if(!s.success)throw new KW([r(t,s.error)]);let o=Reflect.apply(a,this,s.data),l=e._def.returns.safeParse(o,i);if(!l.success)throw new KW([n(o,l.error)]);return l.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...e){return new YP({...this._def,args:YT.create(e).rest(Yw.create())})}returns(e){return new YP({...this._def,returns:e})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}static create(e,t,r){return new YP({args:e||YT.create([]).rest(Yw.create()),returns:t||Yw.create(),typeName:tE.ZodFunction,...K3(r)})}}class YL extends K4{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})}}YL.create=(e,t)=>new YL({getter:e,typeName:tE.ZodLazy,...K3(t)});class YN extends K4{_parse(e){if(e.data!==this._def.value){let t=this._getOrReturnCtx(e);return KY(t,{received:t.data,code:KV.invalid_literal,expected:this._def.value}),KX}return{status:"valid",value:e.data}}get value(){return this._def.value}}function YO(e,t){return new YF({values:e,typeName:tE.ZodEnum,...K3(t)})}YN.create=(e,t)=>new YN({value:e,typeName:tE.ZodLiteral,...K3(t)});class YF extends K4{_parse(e){if("string"!=typeof e.data){let t=this._getOrReturnCtx(e),r=this._def.values;return KY(t,{expected:tw.joinValues(r),received:t.parsedType,code:KV.invalid_type}),KX}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 KY(t,{received:t.data,code:KV.invalid_enum_value,options:r}),KX}return K$(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 YF.create(e,{...this._def,...t})}exclude(e,t=this._def){return YF.create(this.options.filter(t=>!e.includes(t)),{...this._def,...t})}}YF.create=YO;class YQ extends K4{_parse(e){let t=tw.getValidEnumValues(this._def.values),r=this._getOrReturnCtx(e);if(r.parsedType!==Kj.string&&r.parsedType!==Kj.number){let e=tw.objectValues(t);return KY(r,{expected:tw.joinValues(e),received:r.parsedType,code:KV.invalid_type}),KX}if(this._cache||(this._cache=new Set(tw.getValidEnumValues(this._def.values))),!this._cache.has(e.data)){let e=tw.objectValues(t);return KY(r,{received:r.data,code:KV.invalid_enum_value,options:e}),KX}return K$(e.data)}get enum(){return this._def.values}}YQ.create=(e,t)=>new YQ({values:e,typeName:tE.ZodNativeEnum,...K3(t)});class YU extends K4{unwrap(){return this._def.type}_parse(e){let{ctx:t}=this._processInputParams(e);return t.parsedType!==Kj.promise&&!1===t.common.async?(KY(t,{code:KV.invalid_type,expected:Kj.promise,received:t.parsedType}),KX):K$((t.parsedType===Kj.promise?t.data:Promise.resolve(t.data)).then(e=>this._def.type.parseAsync(e,{path:t.path,errorMap:t.common.contextualErrorMap})))}}YU.create=(e,t)=>new YU({type:e,typeName:tE.ZodPromise,...K3(t)});class Yz extends K4{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===tE.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=>{KY(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 KX;let n=await this._def.schema._parseAsync({data:e,path:r.path,parent:r});return"aborted"===n.status?KX:"dirty"===n.status||"dirty"===t.value?KZ(n.value):n});{if("aborted"===t.value)return KX;let n=this._def.schema._parseSync({data:e,path:r.path,parent:r});return"aborted"===n.status?KX:"dirty"===n.status||"dirty"===t.value?KZ(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?KX:("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?KX:("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?KX: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 KX;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}}tw.assertNever(n)}}Yz.create=(e,t,r)=>new Yz({schema:e,typeName:tE.ZodEffects,effect:t,...K3(r)}),Yz.createWithPreprocess=(e,t,r)=>new Yz({schema:t,effect:{type:"preprocess",transform:e},typeName:tE.ZodEffects,...K3(r)});class YH extends K4{_parse(e){return this._getType(e)===Kj.undefined?K$(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}YH.create=(e,t)=>new YH({innerType:e,typeName:tE.ZodOptional,...K3(t)});class Yj extends K4{_parse(e){return this._getType(e)===Kj.null?K$(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}Yj.create=(e,t)=>new Yj({innerType:e,typeName:tE.ZodNullable,...K3(t)});class YG extends K4{_parse(e){let{ctx:t}=this._processInputParams(e),r=t.data;return t.parsedType===Kj.undefined&&(r=this._def.defaultValue()),this._def.innerType._parse({data:r,path:t.path,parent:t})}removeDefault(){return this._def.innerType}}YG.create=(e,t)=>new YG({innerType:e,typeName:tE.ZodDefault,defaultValue:"function"==typeof t.default?t.default:()=>t.default,...K3(t)});class YV extends K4{_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 K0(n)?n.then(e=>({status:"valid",value:"valid"===e.status?e.value:this._def.catchValue({get error(){return new KW(r.common.issues)},input:r.data})})):{status:"valid",value:"valid"===n.status?n.value:this._def.catchValue({get error(){return new KW(r.common.issues)},input:r.data})}}removeCatch(){return this._def.innerType}}YV.create=(e,t)=>new YV({innerType:e,typeName:tE.ZodCatch,catchValue:"function"==typeof t.catch?t.catch:()=>t.catch,...K3(t)});class YW extends K4{_parse(e){if(this._getType(e)!==Kj.nan){let t=this._getOrReturnCtx(e);return KY(t,{code:KV.invalid_type,expected:Kj.nan,received:t.parsedType}),KX}return{status:"valid",value:e.data}}}YW.create=e=>new YW({typeName:tE.ZodNaN,...K3(e)}),Symbol("zod_brand");class Yq extends K4{_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 YK extends K4{_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?KX:"dirty"===e.status?(t.dirty(),KZ(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?KX:"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 YK({in:e,out:t,typeName:tE.ZodPipeline})}}class YY extends K4{_parse(e){let t=this._def.innerType._parse(e),r=e=>("valid"===e.status&&(e.value=Object.freeze(e.value)),e);return K0(t)?t.then(e=>r(e)):r(t)}unwrap(){return this._def.innerType}}YY.create=(e,t)=>new YY({innerType:e,typeName:tE.ZodReadonly,...K3(t)}),YS.lazycreate,(ez=tE||(tE={})).ZodString="ZodString",ez.ZodNumber="ZodNumber",ez.ZodNaN="ZodNaN",ez.ZodBigInt="ZodBigInt",ez.ZodBoolean="ZodBoolean",ez.ZodDate="ZodDate",ez.ZodSymbol="ZodSymbol",ez.ZodUndefined="ZodUndefined",ez.ZodNull="ZodNull",ez.ZodAny="ZodAny",ez.ZodUnknown="ZodUnknown",ez.ZodNever="ZodNever",ez.ZodVoid="ZodVoid",ez.ZodArray="ZodArray",ez.ZodObject="ZodObject",ez.ZodUnion="ZodUnion",ez.ZodDiscriminatedUnion="ZodDiscriminatedUnion",ez.ZodIntersection="ZodIntersection",ez.ZodTuple="ZodTuple",ez.ZodRecord="ZodRecord",ez.ZodMap="ZodMap",ez.ZodSet="ZodSet",ez.ZodFunction="ZodFunction",ez.ZodLazy="ZodLazy",ez.ZodLiteral="ZodLiteral",ez.ZodEnum="ZodEnum",ez.ZodEffects="ZodEffects",ez.ZodNativeEnum="ZodNativeEnum",ez.ZodOptional="ZodOptional",ez.ZodNullable="ZodNullable",ez.ZodDefault="ZodDefault",ez.ZodCatch="ZodCatch",ez.ZodPromise="ZodPromise",ez.ZodBranded="ZodBranded",ez.ZodPipeline="ZodPipeline",ez.ZodReadonly="ZodReadonly";let YJ=Yh.create,YX=Yp.create;YW.create,YA.create;let YZ=Yf.create;Yg.create,Ym.create,Yv.create,Yb.create,Yy.create;let Y$=Yw.create;Yx.create,YC.create,YE.create;let Y0=YS.create;YS.strictCreate,YI.create,YB.create,Yk.create,YT.create,YR.create,YD.create,Y_.create,YP.create,YL.create,YN.create;let Y1=YF.create;YQ.create,YU.create,Yz.create,YH.create,Yj.create;let Y2=Yz.createWithPreprocess;YK.create;let Y3=Y1(["cm","inch"]),Y4=Y1(["different_fields","one_field"]),Y9=Y1(["left_bottom","center","right_bottom","left_center","right_center"]),Y5=Y0({buttonLabel:YJ(),backgroundColor:YJ(),borderColor:YJ(),textColor:YJ(),borderRadius:YX(),borderWidth:YX()}),Y8=Y0({units:Y3,productWidthAndHeight:Y4,metafieldForWidth:YJ().nullable(),metafieldForHeight:YJ().nullable(),metafieldForWidthAndHeight:YJ().nullable(),widgetPosition:Y9,_widgetSettings:Y5.optional(),isWidgetActive:YZ()}),Y6=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"),Y7=Y0({token:YJ().trim().min(1),sid:YJ().trim().min(1),expiresIn:YX().finite()}),Je=Y0({metafields:YJ().trim().min(1),posterPic:YJ().trim().min(1),title:YJ().trim().optional(),widgetSession:Y$().optional()}),Jt=Y2(e=>"string"==typeof e?JSON.parse(e):e,Y0({metafield:Y$(),tinuuid:YJ().trim().optional()}));async function Jr(e,t){let r=await KH({productType:"wallart-shopify",variant_id:e,metafield_key:"poster_settings"},{baseURL:Y6,signal:t});return function(e){let t,r,n=Je.safeParse("string"!=typeof e?e:JSON.parse(e));if(!n.success)return null;let i=Jt.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=Y8.safeParse(t)).success?r.data:null);if(!a)return null;let s=Y7.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 Jn="44px",Ji="60px",Ja={left_center:{left:Ji,top:"50%",transform:"translateY(-50%)"},left_bottom:{left:Ji,bottom:Jn},center:{left:`calc(50% + ${Ji})`,bottom:Jn,transform:"translateX(-50%)"},right_bottom:{right:Ji,bottom:Jn},right_center:{right:Ji,top:"50%",transform:"translateY(-50%)"}},Js=Y2(e=>"number"==typeof e&&Number.isFinite(e)?String(e):e,YJ().trim().regex(/^\d+$/));function Jo(e){let t=Js.safeParse(e);return t.success?t.data:null}function Jl(e){return e?e instanceof HTMLInputElement||e instanceof HTMLSelectElement||e instanceof HTMLTextAreaElement?e.value:e.getAttribute("value"):null}let Jc=["product-form","[data-main-product]",'[id*="MainProduct"]',".product",".product__info-wrapper",".product__info-container","#MainContent"],Ju=[".product-recommendations",".related-products","[data-product-recommendations]"];var Jd=i("./src/shopify.css?inline");function Jh(){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 Jo(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),Jc))e.closest(i)&&(t+=25);for(let r of Ju)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=Jo(Jl(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=Jo(Jl(t));if(e)return e}return null}(e)??function(e=document){let t=e.querySelector("[data-selected-variant-id]");return Jo(t?.getAttribute("data-selected-variant-id")??null)}(e)}():null}}function Jp(){let e=function(){let[e,t]=(0,rc.useState)(Jh);return(0,rc.useEffect)(()=>{let e=null,r=window.history.pushState,n=window.history.replaceState,i=()=>{null===e&&(e=window.requestAnimationFrame(()=>{e=null,t(e=>{let t=Jh();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=an('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,rc.useState)(!1),{data:n}=s5({queryKey:["vizbl-shopify-room-viewer","activation",e.variantId],queryFn:({signal:t})=>Jr(e.variantId??"",t),enabled:e.isProductPage&&null!==e.variantId,staleTime:3e5,gcTime:3e5,refetchOnWindowFocus:!1},sj,void 0),i=(0,rc.useCallback)(()=>{r(!0)},[]),a=(0,rc.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,rd.jsxs)(rd.Fragment,{children:[(0,rd.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",...Ja[s.widgetPosition]},children:c?.buttonLabel??"View in place"}),(0,rd.jsx)(KF,{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,ai.createPortal)((0,rd.jsx)("style",{children:Jd.A}),document.head)]})}let JA="vizbl-shopify-room-viewer",Jf=new rl({defaultOptions:{queries:{refetchOnMount:!1,refetchOnReconnect:!1,refetchOnWindowFocus:!1,retry:(e,t)=>{let r=function(e){if(il(e))return e.response?.status}(t);return(void 0===r||!(r>=400)||!(r<500))&&e<2}}}});function Jg(){let e,t=((e=document.getElementById(JA))||((e=document.createElement("div")).id=JA,document.body.appendChild(e)),e),r=ik.createRoot(t);r.render((0,rc.createElement)(rA,{client:Jf},(0,rc.createElement)(Jp)));let n=an(`#${JA}`,{remove(){n.abort(),r.unmount(),Jg()}})}iB({baseURL:Y6}),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",Jg,{once:!0}):Jg()})()})();