@vizbl/shopify-room-viewer 0.0.24 → 0.0.25
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.
|
@@ -7588,7 +7588,7 @@ canvas {
|
|
|
7588
7588
|
::file-selector-button {
|
|
7589
7589
|
${ey}
|
|
7590
7590
|
}
|
|
7591
|
-
}`:eb);function VP(e){let t=e?.trim().replace(/\/+$/,"")??"";if(!t||t.includes("/v1/http")||t.endsWith("/v1"))return t||void 0;let r=t.indexOf("/http");return r>=0?`${t.slice(0,r)}/v1${t.slice(r)}`:`${t}/v1`}let V_=VP("/apps/vizbl-wall-art/http")??"";function VL(e){return"shopify"===e.source||void 0!==e.apiKey}function VN(e){return"wall-panel"===e.resourceType?"panels":"rugs"===e.resourceType?"rugs":"flooring"===e.resourceType?"flooring":"shopify"===e.source?"wallart-shopify":"wallart"}function VF(e){let t=VN(e);return"panels"===t?{query:void 0,config:{params:{productType:t}}}:{query:{productType:t},config:{}}}function VO(e){if(!ix(e))return null;let t=e.response?.status;return 401===t?"unauthorized":402===t?"payment-required":null}function VQ(e){return ih.create({baseURL:e,timeout:3e4})}let VU=new Set(["common","delete","get","head","post","put","patch","options","purge","link","unlink"]);function Vz(){return globalThis.process?.env?.NODE_ENV}function Vj(e){if(void 0===e)return[];let t="function"==typeof e.toJSON?e.toJSON():e,r=[];return!function e(t,r){if(null!==t&&"object"==typeof t)for(let[n,i]of Object.entries(t)){if(null==i)continue;let t=n.toLowerCase();if("common"===t){e(i,r);continue}VU.has(t)||r.push([n,String(i)])}}(t,r),r}function VG(e){return!!("u">typeof FormData&&e instanceof FormData)||null!==e&&"object"==typeof e&&(e.constructor?.name==="FormData"||"function"==typeof e.getBoundary)}let VH=new Set(["authorization","cookie","set-cookie","x-xsrf-token"]);function VV(e){if(null==e)return;let t="function"==typeof e.toJSON?e.toJSON():e;if(null===t||"object"!=typeof t)return;let r={};for(let[e,n]of Object.entries(t))null!=n&&(r[e]=VH.has(e.toLowerCase())?"[redacted]":String(n));return r}function VW(e){if(null!=e){if("string"==typeof e)try{return JSON.parse(e)}catch{return e.length>2e3?`${e.slice(0,2e3)}… (${e.length} chars)`:e}return VG(e)?"[FormData]":e}}function Vq(e){let t=(e.requestConfig.method??"GET").toUpperCase(),r=e.requestConfig.url??"",n=`[api:server] ${t} ${r} → ${e.status} (${e.durationMs}ms)`,i={requestId:e.requestId,...e.error?{error:e.error}:{},params:e.requestConfig.params,requestBody:VW(e.requestConfig.data),requestHeaders:VV(e.requestConfig.headers),responseHeaders:VV(e.responseHeaders),responseBody:VW(e.responseBody)};(e.status>=500||void 0!==e.error&&0===e.status?console.error:e.status>=400?console.warn:console.log)(n,i)}function VK({clientName:e,configureFunctionName:t,defaultBaseURL:r}){let n=VQ(r),i=VQ(r),a=null,s=null,o=null,l=null,c=null,u=null;async function d(e,t){let r=function(e,t){let r;if(void 0===t.data||VG(t.data))return t;let n=iS.from(t.headers);return n.has("Content-Type")||void 0!==(r=e.defaults.headers.common)&&iS.from(r).has("Content-Type")||n.set("Content-Type","application/json"),t.headers=n,t}(e,function(e){let t=iS.from(e.headers);if(null!==o){let e=o()?.trim();e&&!t.has("Authorization")&&t.set("Authorization",`Bearer ${e}`)}if(null!==u)for(let[r,n]of Object.entries(u({url:e.url,method:e.method})))n&&!t.has(r)&&t.set(r,n);return e.headers=t,e}({...t})),n=function(e){let t,r=iS.from(e.headers),n=r.get("x-request-id");if("string"==typeof n&&n.length>0)return n;let i=(t=globalThis.crypto,"function"==typeof t?.randomUUID?t.randomUUID():`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`);return r.set("x-request-id",i),e.headers=r,i}(r),i=function(){if("u">typeof window)return!1;let e=Vz(),t=globalThis.process;return t?.env?.DEBUG_API==="true"||"production"!==e&&"test"!==e&&"testing"!==e}(),a=i?Date.now():0;try{let t=await e.request(r);return i&&Vq({requestConfig:r,requestId:n,status:t.status,durationMs:Date.now()-a,responseHeaders:t.headers,responseBody:t.data}),t}catch(e){throw i&&Vq({requestConfig:r,requestId:n,status:e.response?.status??0,durationMs:Date.now()-a,responseHeaders:e.response?.headers,responseBody:e.response?.data,error:e.message}),e}}async function h(e){return d(e.skipUnauthorizedRecovery?i:n,function(e){let{skipUnauthorizedRecovery:t,...r}=e;return r}(e))}let p=async e=>h({...e,skipUnauthorizedRecovery:!0});function f(){return null!==a}return{configureClientRuntime:function(t){let r,s=(r=function(e){let t=Vj(e);if(0===t.length)return;let r=new Map;for(let[e,n]of t)r.set(e.toLowerCase(),n);return Object.fromEntries(Array.from(r.entries()).sort(([e],[t])=>e.localeCompare(t)))}(t.headers),JSON.stringify({...void 0!==t.baseURL?{baseURL:t.baseURL}:{},...void 0!==t.timeout?{timeout:t.timeout}:{},...void 0!==r?{headers:r}:{}}));if("{}"!==s){if(null!==a){if(a===s)return;let t=`${e} already configured. Existing: ${a}. New: ${s}.`;if("production"===Vz())return void console.warn(t);throw Error(t)}for(let e of[n,i])void 0!==t.baseURL&&(e.defaults.baseURL=t.baseURL),void 0!==t.timeout&&(e.defaults.timeout=t.timeout),void 0!==t.headers&&function(e,t){let r=e.defaults.headers,n=r.common,i=iS.from(n);for(let[e,r]of Vj(t))i.set(e,r);r.common=i.toJSON(),e.defaults.headers=r}(e,t.headers);a=s}},configureAccessTokenResolverRuntime:function(e){o=e},configureUnauthorizedHandlerRuntime:function(e){if(l=e,null===e){null!==s&&(n.interceptors.response.eject(s),s=null),c=null;return}null===s&&(s=n.interceptors.response.use(e=>e,async e=>{let t=e.config;if(e.response?.status!==401||null===l||void 0===t||t._apiRetried)return Promise.reject(e);if(null===c){let t=l;if(null===t)return Promise.reject(e);c=Promise.resolve().then(()=>t(e,{requestWithoutUnauthorizedRecovery:p})).finally(()=>{c=null})}try{if(!await c)return Promise.reject(e);t._apiRetried=!0;let r=iS.from(t.headers);return r.delete("Authorization"),t.headers=r,d(n,t)}catch{return Promise.reject(e)}}))},configureHeadersResolverRuntime:function(e){u=e},isClientConfiguredRuntime:f,assertClientConfiguredRuntime:function(){if(!f())throw Error(`${e} is not configured. Call ${t}(...) before making requests.`)},resetClientForTestsRuntime:function(){let e;if("test"!==(e=Vz())&&"testing"!==e)throw Error("resetApiClientForTests() can only be called in test environment.");n=VQ(r),i=VQ(r),a=null,s=null,o=null,l=null,c=null,u=null},requestRuntime:h,requestWithoutUnauthorizedRecovery:p,addResponseInterceptorRuntime:function(e,t){return n.interceptors.response.use(e,t)}}}let VJ=VK({clientName:"API node client",configureFunctionName:"configureNodeApiClient",defaultBaseURL:"https://api.vizbl.com"}),VY=VJ.configureClientRuntime;VJ.configureAccessTokenResolverRuntime,VJ.configureHeadersResolverRuntime,VJ.configureUnauthorizedHandlerRuntime,VJ.isClientConfiguredRuntime,VJ.assertClientConfiguredRuntime,VJ.resetClientForTestsRuntime;let VX=VJ.requestRuntime;async function VZ(e){return VX(e)}function V$(e){let t=new FormData;function r(e,r){r instanceof Blob?t.append(e,r):r instanceof Date?t.append(e,r.toISOString()):"number"==typeof r||"boolean"==typeof r?t.append(e,String(r)):"string"==typeof r?t.append(e,r):"object"==typeof r&&t.append(e,new Blob([JSON.stringify(r)],{type:"application/json"}))}return e&&Object.entries(e).forEach(([e,t])=>{if(null!=t)if(Array.isArray(t))for(let n of t)null!=n&&r(e,n);else r(e,t)}),t}async function V0(e,t={}){let{client:r=VZ,...n}=t,i=V$(e);return(await r({method:"POST",url:"/inference/room-planes/run-raw",data:i,...n})).data}async function V1(e,t={}){let{client:r=VZ,...n}=t;return(await r({method:"POST",url:"/public/widget/activate-wallart",params:e,...n})).data}async function V2(e,t,r={}){let{client:n=VZ,...i}=r;return(await n({method:"POST",url:"/public/objects/public",params:t,data:e,...i})).data}async function V3(e,t={}){let{client:r=VZ,...n}=t;return(await r({method:"POST",url:"/public/widget/shopify/get-rooms",params:e,...n})).data}async function V9(e={}){let{client:t=VZ,...r}=e;return(await t({method:"POST",url:"/public/widget/get-rooms",...r})).data}async function V4(e,t={}){let{client:r=VZ,...n}=t;return(await r({method:"POST",url:"/public/widget/token",data:e,...n})).data}async function V5({tinuuid:e},t,r={}){let{client:n=VZ,...i}=r;return(await n({method:"GET",url:`/public/objects/by-tinuuid/${e}`,params:t,...i})).data}async function V8(e,t={}){let{client:r=VZ,...n}=t,i=V$(e);return(await r({method:"POST",url:"/public/inference/room-planes/run-raw",data:i,...n})).data}async function V6(e,t={}){let{client:r=VZ,...n}=t;return(await r({method:"POST",url:"/public/widget/events",data:e,...n})).data}VJ.requestWithoutUnauthorizedRecovery,VJ.addResponseInterceptorRuntime;let V7=VK({clientName:"API client",configureFunctionName:"configureApiClient",defaultBaseURL:"https://api.vizbl.com/v1"}),We=V7.configureClientRuntime;V7.configureAccessTokenResolverRuntime,V7.configureHeadersResolverRuntime,V7.configureUnauthorizedHandlerRuntime,V7.isClientConfiguredRuntime,V7.assertClientConfiguredRuntime,V7.resetClientForTestsRuntime;let Wt=V7.requestRuntime;async function Wr(e){return Wt(e)}async function Wn(e,t={}){let{client:r=Wr,...n}=t;return(await r({method:"POST",url:"/obj/Fetch",data:e,...n})).data}async function Wi(e,t={}){let{client:r=Wr,...n}=t;return(await r({method:"POST",url:"/obj/GetKitItems",data:e,...n})).data}async function Wa(e,t={}){let{client:r=Wr,...n}=t;return(await r({method:"POST",url:"/obj/GetPublic",data:e,...n})).data}V7.requestWithoutUnauthorizedRecovery,V7.addResponseInterceptorRuntime;let Ws="x-widget-session-token",Wo=(e,t)=>V6(e,t);class Wl{apiConfig;issueWidgetToken;now;refreshPromise=null;refreshThresholdMs;session;constructor(e,t={}){this.apiConfig=t.apiConfig,this.issueWidgetToken=t.issueWidgetToken??V4,this.now=t.now??Date.now,this.refreshThresholdMs=t.refreshThresholdMs??3e4,this.session=this.toSnapshot(e)}get snapshot(){return{...this.session}}get token(){return this.session.token}get sid(){return this.session.sid}get expiresAt(){return this.session.expiresAt}isCloseToExpiry(){return this.session.expiresAt-this.now()<=this.refreshThresholdMs}async getTokenForRequest(){return this.isCloseToExpiry()?(await this.refresh()).token:this.session.token}async getHeadersForRequest(){return{[Ws]:await this.getTokenForRequest()}}async getApiConfigForRequest(e){let t=await this.getTokenForRequest();return{...this.apiConfig,...e,headers:{...this.apiConfig?.headers,...e?.headers,[Ws]:t}}}refresh(){return this.refreshPromise||(this.refreshPromise=this.issueWidgetToken({token:this.session.token},this.apiConfig).then(e=>(this.session=this.toSnapshot(e),this.snapshot)).finally(()=>{this.refreshPromise=null})),this.refreshPromise}toSnapshot(e){return{token:e.token,sid:e.sid,expiresAt:this.now()+1e3*e.expiresIn}}}function Wc(e,t){return e?.token&&e.sid&&Number.isFinite(e.expiresIn)?new Wl(e,t):null}function Wu(e,t,r={}){if(!e)return;let n=r.createWidgetEvent??Wo;e.getApiConfigForRequest(r.apiConfig).then(e=>n({event:t,timestamp:new Date().toISOString()},e)).catch(()=>{})}async function Wd(e){let t={"x-api-key":e.apiKey},r=await e.widgetSession?.getTokenForRequest();return r&&(t[Ws]=r),t}function Wh(e,t){return["room-viewer","object",{apiKey:t.apiKey??null,source:t.source,tinuuid:e??null,resourceType:t.resourceType??null}]}async function Wp(e,t){if(!VL(t))return Wn({tinuuid:e},{signal:t.signal});let{query:r,config:n}=VF(t);return V5({tinuuid:e},r,{...n,baseURL:t.baseURL,headers:await Wd(t),signal:t.signal})}async function Wf(e,t,r){let n={page:t,owners:[e]};if(!VL(r))return Wa({...n,productType:"wall-panel"===r.resourceType?"panels":"rugs"===r.resourceType?"rugs":"flooring"===r.resourceType?"flooring":"wallart"},{signal:r.signal});let{query:i,config:a}=VF(r),s=await V2(n,i,{...a,baseURL:r.baseURL,headers:await Wd(r),signal:r.signal});return{folder:s.folder,objs:s.objs,pages_count:s.pages_count}}async function WA(e,t,r,n){let i=await Wi({folder:{uuid:e,type:"kit"},page:r},{baseURL:VP(n.baseURL),signal:n.signal});return{folder:i.folder,objs:i.objs,pages_count:i.pagesCount}}async function Wg(e){let t={baseURL:e.baseURL,headers:await Wd(e),signal:e.signal},r=VF(e);return("shopify"===e.source?await V3(r.query,{...t,...r.config}):await V9(t)).rooms.filter(e=>!1!==e.active).sort((e,t)=>(e.position??0)-(t.position??0)).map(e=>({id:e.id,name:e.name,image_url:e.image_url,scene:e.scene}))}let Wm={destination:"floor",ar:"appclip"},Wv={"wall-panel":{handoff:null,surfaces:["wall"],lighting:"static-neutral-hdr",roomPresets:"wall-room-presets",chrome:"immersive-room",presentation:"immersive-panels",manipulation:"panel-group",productNameSource:"collection",catalogTitle:"wall-panel",introduction:"focus-resource",identity:"modelled-resource",composition:"single-listing",materialRole:"finish"},wallart:{handoff:{destination:"wall",ar:"webar-usdz"},surfaces:["wall"],lighting:"static-neutral-hdr",roomPresets:"wall-room-presets",chrome:"framed-scene",presentation:"framed-default",manipulation:"single-resource",productNameSource:"material",catalogTitle:"title",introduction:null,identity:"textured-resource",composition:"single-listing",materialRole:"product-identity"},rugs:{handoff:Wm,surfaces:["floor"],lighting:"remote-neutral-hdr",roomPresets:"floor-room-presets",chrome:"immersive-room",presentation:"immersive-default",manipulation:"drag-with-rotation-handle",productNameSource:"collection",catalogTitle:"rugs",introduction:null,identity:"modelled-resource",composition:"sized-design",materialRole:"placeholder"},flooring:{handoff:Wm,surfaces:["floor"],lighting:"remote-neutral-hdr",roomPresets:"floor-room-presets",chrome:"immersive-room",presentation:"immersive-default",manipulation:"rotate-on-floor",productNameSource:"collection",catalogTitle:"flooring",introduction:null,identity:"modelled-resource",composition:"color-design",materialRole:"product-identity"}};function Wb(...e){return lv(ox(e))}let Wy=ly("cursor-pointer inline-flex items-center justify-center gap-1.5 whitespace-nowrap rounded-xl transition-all disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg:not([class*=size-])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-2 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary--hover active:bg-primary--pressed disabled:bg-primary--disabled disabled:opacity-20",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary--hover active:bg-secondary--pressed disabled:bg-secondary--disabled disabled:opacity-20",outline:"border border-button-outline bg-transparent text-foreground hover:border-button-outline-hover active:bg-button-outline-pressed disabled:border-border-dark disabled:opacity-20",ghost:"hover:bg-accent hover:text-accent-foreground active:bg-accent--pressed",contrast:"bg-contrast text-contrast-foreground hover:bg-contrast--hover active:bg-contrast--pressed disabled:bg-contrast--disabled disabled:opacity-30"},size:{default:"h-9 px-3.5 typo-button-normal [&_svg]:size-5",sm:"h-8 px-3 typo-button-small [&_svg]:size-4",lg:"h-11 px-4 typo-button-big [&_svg]:size-6",icon:"size-9 rounded-full [&_svg]:size-5","icon-sm":"size-8 rounded-full [&_svg]:size-4","icon-lg":"size-11 rounded-full [&_svg]:size-6"}},defaultVariants:{variant:"default",size:"default"}});function Ww({className:e,variant:t,size:r,asChild:n=!1,...i}){return(0,rE.jsx)(n?ob:"button",{"data-slot":"button",className:Wb(Wy({variant:t,size:r,className:e})),...i})}function Wx({...e}){return(0,rE.jsx)(cz,{"data-slot":"dialog",...e})}function WC({...e}){return(0,rE.jsx)(cW,{"data-slot":"dialog-portal",...e})}function WE({...e}){return(0,rE.jsx)(c8,{"data-slot":"dialog-close",...e})}function WS({className:e,...t}){return(0,rE.jsx)(cK,{"data-slot":"dialog-overlay",className:Wb("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",e),...t})}function WM({className:e,children:t,contentInsideOverlay:r=!1,showCloseButton:n=!0,portalContainer:i,...a}){let s=(0,rE.jsxs)(cZ,{"data-slot":"dialog-content",className:Wb("bg-background-containers 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 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-6 rounded-3xl border-0 p-6 shadow-[var(--shadow-login)] duration-200 outline-none sm:max-w-120 sm:p-10",e),...a,children:[t,n&&(0,rE.jsxs)(c8,{"data-slot":"dialog-close",className:"focus-visible:ring-ring/30 absolute top-4 right-4 inline-flex size-6 cursor-pointer items-center justify-center rounded-full text-icons-light transition-colors hover:text-icons-normal focus-visible:text-icons-dark focus-visible:ring-2 focus-visible:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0",children:[(0,rE.jsx)(uc,{className:"size-6"}),(0,rE.jsx)("span",{className:"sr-only",children:"Close"})]})]});return(0,rE.jsx)(WC,{"data-slot":"dialog-portal",container:i,children:r?(0,rE.jsx)(WS,{children:s}):(0,rE.jsxs)(rE.Fragment,{children:[(0,rE.jsx)(WS,{}),s]})})}function WI({className:e,...t}){return(0,rE.jsx)("div",{"data-slot":"dialog-header",className:Wb("flex flex-col gap-2 text-left",e),...t})}function WB({className:e,showCloseButton:t=!1,children:r,...n}){return(0,rE.jsxs)("div",{"data-slot":"dialog-footer",className:Wb("flex flex-wrap items-center justify-start gap-2 pt-2",e),...n,children:[r,t&&(0,rE.jsx)(c8,{asChild:!0,children:(0,rE.jsx)(Ww,{variant:"secondary",className:"text-text-dark",children:"Close"})})]})}function Wk({className:e,...t}){return(0,rE.jsx)(c3,{"data-slot":"dialog-title",className:Wb("typo-base-18 text-text-dark",e),...t})}function WT({className:e,...t}){return(0,rE.jsx)(c4,{"data-slot":"dialog-description",className:Wb("typo-base-16 text-text-light",e),...t})}function WR(e){return(0,rE.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",...e,children:[(0,rE.jsx)("path",{d:"M22.5601 16.3031L14.8901 3.58311C14.58 3.09793 14.1526 2.69864 13.6476 2.42205C13.1425 2.14546 12.5759 2.00049 12.0001 2.00049C11.4243 2.00049 10.8577 2.14546 10.3526 2.42205C9.84755 2.69864 9.42024 3.09793 9.1101 3.58311L1.4401 16.3031C1.16915 16.7548 1.02189 17.2698 1.01311 17.7964C1.00434 18.323 1.13436 18.8427 1.3901 19.3031C1.68578 19.8214 2.11376 20.2518 2.6303 20.5505C3.14684 20.8492 3.73343 21.0054 4.3301 21.0031H19.6701C20.2629 21.0094 20.8468 20.8593 21.363 20.5678C21.8792 20.2764 22.3093 19.8539 22.6101 19.3431C22.8734 18.8779 23.0075 18.3508 22.9987 17.8163C22.9899 17.2818 22.8385 16.7594 22.5601 16.3031ZM20.8601 18.3531C20.7399 18.5597 20.5655 18.7295 20.3557 18.8441C20.146 18.9586 19.9089 19.0136 19.6701 19.0031H4.3301C4.09132 19.0136 3.85422 18.9586 3.64446 18.8441C3.4347 18.7295 3.26029 18.5597 3.1401 18.3531C3.05233 18.2011 3.00613 18.0286 3.00613 17.8531C3.00613 17.6776 3.05233 17.5051 3.1401 17.3531L10.8201 4.62311C10.9581 4.44082 11.1365 4.29298 11.3412 4.19119C11.5459 4.08939 11.7715 4.03642 12.0001 4.03642C12.2287 4.03642 12.4543 4.08939 12.659 4.19119C12.8637 4.29298 13.0421 4.44082 13.1801 4.62311L20.8501 17.3431C20.9413 17.4954 20.9902 17.6693 20.992 17.8468C20.9937 18.0243 20.9482 18.199 20.8601 18.3531Z",fill:"currentColor"}),(0,rE.jsx)("path",{d:"M12.0001 17.0001C12.2653 17.0001 12.5197 16.8948 12.7072 16.7073C12.8948 16.5197 13.0001 16.2654 13.0001 16.0001C13.0001 15.7349 12.8948 15.4806 12.7072 15.293C12.5197 15.1055 12.2653 15.0001 12.0001 15.0001C11.7349 15.0001 11.4806 15.1055 11.293 15.293C11.1055 15.4806 11.0001 15.7349 11.0001 16.0001C11.0001 16.2654 11.1055 16.5197 11.293 16.7073C11.4806 16.8948 11.7349 17.0001 12.0001 17.0001Z",fill:"currentColor"}),(0,rE.jsx)("path",{d:"M12.0001 8.00023C11.7349 8.00023 11.4806 8.10559 11.293 8.29313C11.1055 8.48066 11.0001 8.73502 11.0001 9.00023V13.0002C11.0001 13.2655 11.1055 13.5198 11.293 13.7073C11.4806 13.8949 11.7349 14.0002 12.0001 14.0002C12.2653 14.0002 12.5197 13.8949 12.7072 13.7073C12.8948 13.5198 13.0001 13.2655 13.0001 13.0002V9.00023C13.0001 8.73502 12.8948 8.48066 12.7072 8.29313C12.5197 8.10559 12.2653 8.00023 12.0001 8.00023Z",fill:"currentColor"})]})}function WD(e){return(0,rE.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",...e,children:(0,rE.jsx)("path",{d:"M21.1667 8.4C21.1667 8.16131 21.07 7.93245 20.8981 7.76367C20.7262 7.59489 20.4931 7.5 20.25 7.5H16.5833C16.2768 7.5 15.9906 7.3496 15.8206 7.09922L14.2594 4.8H9.74056L8.17936 7.09922C8.00935 7.3496 7.72316 7.5 7.41667 7.5H3.75C3.50688 7.5 3.2738 7.59489 3.10189 7.76367C2.92998 7.93245 2.83333 8.16131 2.83333 8.4V18.3C2.83333 18.5387 2.92998 18.7675 3.10189 18.9363C3.2738 19.1051 3.50689 19.2 3.75 19.2H20.25C20.4931 19.2 20.7262 19.1051 20.8981 18.9363C21.07 18.7675 21.1667 18.5387 21.1667 18.3V8.4ZM14.75 12.9C14.75 12.184 14.46 11.4973 13.9443 10.991C13.4287 10.4847 12.7292 10.2001 12 10.2C11.2707 10.2 10.5705 10.4847 10.0548 10.991C9.53923 11.4973 9.25 12.1841 9.25 12.9C9.25 13.6159 9.53923 14.3027 10.0548 14.809C10.5705 15.3153 11.2707 15.6 12 15.6C12.7292 15.5999 13.4287 15.3153 13.9443 14.809C14.46 14.3027 14.75 13.616 14.75 12.9ZM16.5833 12.9C16.5833 14.0934 16.1 15.2377 15.2406 16.0816C14.3811 16.9255 13.2155 17.3999 12 17.4C10.7844 17.4 9.61809 16.9256 8.75854 16.0816C7.89919 15.2378 7.41667 14.0933 7.41667 12.9C7.41667 11.7067 7.89919 10.5622 8.75854 9.71836C9.61809 8.87445 10.7844 8.4 12 8.4C13.2155 8.40008 14.3811 8.87452 15.2406 9.71836C16.1 10.5623 16.5833 11.7066 16.5833 12.9ZM23 18.3C23 19.0161 22.7101 19.7026 22.1943 20.209C21.6786 20.7153 20.9793 21 20.25 21H3.75C3.02065 21 2.32139 20.7153 1.80566 20.209C1.28994 19.7026 1 19.0161 1 18.3V8.4C1 7.68392 1.28994 6.99736 1.80566 6.49102C2.32139 5.98467 3.02065 5.7 3.75 5.7H6.92611L8.4873 3.40078L8.55623 3.31201C8.72911 3.11535 8.98172 3 9.25 3H14.75L14.8637 3.00703C15.1262 3.03922 15.3639 3.18167 15.5127 3.40078L17.0739 5.7H20.25C20.9793 5.7 21.6786 5.98467 22.1943 6.49102C22.7101 6.99736 23 7.68392 23 8.4V18.3Z",fill:"currentColor"})})}function WP(e){return(0,rE.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",...e,children:(0,rE.jsx)("path",{d:"M8.21723 14.9975C8.10298 14.997 7.99004 14.9731 7.8854 14.9272C7.78077 14.8814 7.68665 14.8145 7.60889 14.7308L3.55889 10.4225C3.4075 10.2611 3.3264 10.0463 3.33343 9.82513C3.34046 9.604 3.43505 9.39471 3.59639 9.24332C3.75773 9.09192 3.97261 9.01082 4.19374 9.01785C4.41488 9.02489 4.62417 9.11948 4.77556 9.28082L8.20889 12.9392L15.2172 5.27248C15.2883 5.18392 15.3768 5.11083 15.4772 5.0577C15.5776 5.00458 15.6878 4.97254 15.8011 4.96355C15.9143 4.95456 16.0282 4.96882 16.1357 5.00544C16.2432 5.04207 16.3421 5.10029 16.4263 5.17652C16.5105 5.25276 16.5782 5.3454 16.6253 5.44877C16.6724 5.55213 16.6979 5.66403 16.7001 5.7776C16.7024 5.89116 16.6815 6.00399 16.6385 6.10916C16.5956 6.21433 16.5316 6.30961 16.4506 6.38915L8.83389 14.7225C8.75686 14.8077 8.66308 14.8761 8.55841 14.9234C8.45373 14.9707 8.34042 14.996 8.22556 14.9975H8.21723Z",fill:"currentColor"})})}function W_(e){return(0,rE.jsxs)("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:[(0,rE.jsx)("g",{clipPath:"url(#clip0_3784_10212)",children:(0,rE.jsx)("path",{d:"M13.4104 11.9958L17.7104 7.70579C17.8036 7.61255 17.8776 7.50186 17.928 7.38004C17.9785 7.25822 18.0045 7.12765 18.0045 6.99579C18.0045 6.86393 17.9785 6.73336 17.928 6.61154C17.8776 6.48972 17.8036 6.37903 17.7104 6.28579C17.6171 6.19255 17.5064 6.11859 17.3846 6.06813C17.2628 6.01767 17.1322 5.9917 17.0004 5.9917C16.8685 5.9917 16.7379 6.01767 16.6161 6.06813C16.4943 6.11859 16.3836 6.19255 16.2904 6.28579L12.0004 10.5858L7.71036 6.28579C7.52206 6.09749 7.26666 5.9917 7.00036 5.9917C6.73406 5.9917 6.47866 6.09749 6.29036 6.28579C6.10206 6.47409 5.99627 6.72949 5.99627 6.99579C5.99627 7.26209 6.10206 7.51749 6.29036 7.70579L10.5904 11.9958L6.29036 16.2858C6.19651 16.3787 6.12201 16.4893 6.07116 16.6111C6.02032 16.733 5.99414 16.8637 5.99414 16.9958C5.99414 17.1278 6.02032 17.2586 6.07116 17.3804C6.12201 17.5023 6.19651 17.6129 6.29036 17.7058C6.38332 17.7995 6.49392 17.8739 6.61578 17.9247C6.73764 17.9754 6.86835 18.0016 7.00036 18.0016C7.13237 18.0016 7.26308 17.9754 7.38494 17.9247C7.5068 17.8739 7.6174 17.7995 7.71036 17.7058L12.0004 13.4058L16.2904 17.7058C16.4067 17.8236 16.5505 17.9107 16.7087 17.9593C16.867 18.0079 17.0349 18.0165 17.1973 17.9843C17.3597 17.9521 17.5116 17.8801 17.6394 17.7748C17.7671 17.6695 17.8668 17.5341 17.9294 17.3808C18.0058 17.1971 18.0257 16.9948 17.9865 16.7997C17.9473 16.6047 17.8508 16.4257 17.7094 16.2858L13.4104 11.9958Z",fill:"currentColor"})}),(0,rE.jsx)("defs",{children:(0,rE.jsx)("clipPath",{id:"clip0_3784_10212",children:(0,rE.jsx)("rect",{width:"24",height:"24",fill:"white"})})})]})}function WL(e){return(0,rE.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",...e,children:[(0,rE.jsx)("path",{d:"M14.3102 16.38L13.0002 17.64V12C13.0002 11.7348 12.8948 11.4804 12.7073 11.2929C12.5197 11.1053 12.2654 11 12.0002 11C11.735 11 11.4806 11.1053 11.2931 11.2929C11.1055 11.4804 11.0002 11.7348 11.0002 12V17.59L9.71018 16.29C9.56958 16.15 9.39071 16.0548 9.1961 16.0163C9.00149 15.9779 8.79984 15.9978 8.61656 16.0738C8.43329 16.1497 8.27658 16.2781 8.16618 16.443C8.05578 16.6078 7.99663 16.8016 7.99618 17C7.99616 17.1318 8.02212 17.2624 8.07256 17.3842C8.12301 17.506 8.19695 17.6167 8.29018 17.71L11.2902 20.71C11.4758 20.8945 11.7264 20.999 11.9881 21.0008C12.2499 21.0027 12.5019 20.9019 12.6902 20.72L15.6902 17.82C15.796 17.7323 15.8827 17.6237 15.9448 17.5011C16.0069 17.3785 16.0431 17.2444 16.0512 17.1072C16.0593 16.97 16.039 16.8325 15.9917 16.7035C15.9444 16.5744 15.871 16.4565 15.7762 16.357C15.6811 16.2574 15.5664 16.1786 15.4394 16.1255C15.3124 16.0723 15.1758 16.046 15.0382 16.0482C14.9005 16.0503 14.7648 16.0809 14.6395 16.138C14.5142 16.1951 14.4021 16.2775 14.3102 16.38Z",fill:"currentColor"}),(0,rE.jsx)("path",{d:"M17.6704 6.999C17.2623 5.82006 16.497 4.79762 15.4807 4.07397C14.4645 3.35031 13.2479 2.96143 12.0004 2.96143C10.7528 2.96143 9.53628 3.35031 8.52005 4.07397C7.50381 4.79762 6.73842 5.82006 6.33038 6.999C5.43194 7.11934 4.5831 7.48166 3.87468 8.0472C3.16627 8.61274 2.62492 9.36022 2.30855 10.2097C1.99218 11.0592 1.91269 11.9787 2.07859 12.8698C2.24449 13.761 2.64953 14.5903 3.25038 15.269C3.32296 15.3968 3.42284 15.5071 3.54289 15.592C3.66295 15.6768 3.80023 15.7341 3.94497 15.7599C4.08971 15.7856 4.23834 15.7791 4.38029 15.7408C4.52223 15.7026 4.65399 15.6335 4.76618 15.5385C4.87838 15.4435 4.96825 15.3249 5.0294 15.1912C5.09055 15.0576 5.12147 14.912 5.11996 14.765C5.11845 14.618 5.08455 14.4732 5.02067 14.3408C4.95679 14.2084 4.86451 14.0917 4.75038 13.999C4.3635 13.5665 4.11037 13.031 4.02167 12.4575C3.93297 11.884 4.01252 11.2971 4.25066 10.7679C4.4888 10.2387 4.87532 9.7899 5.36338 9.47593C5.85143 9.16197 6.42007 8.9963 7.00038 8.999H7.10038C7.33433 9.00372 7.56252 8.92625 7.74524 8.78008C7.92796 8.6339 8.05363 8.42828 8.10038 8.199C8.284 7.29477 8.77457 6.48182 9.48898 5.8979C10.2034 5.31398 11.0977 4.99499 12.0204 4.99499C12.9431 4.99499 13.8374 5.31398 14.5518 5.8979C15.2662 6.48182 15.7568 7.29477 15.9404 8.199C15.9871 8.42828 16.1128 8.6339 16.2955 8.78008C16.4782 8.92625 16.7064 9.00372 16.9404 8.999H17.0004C17.5807 8.9963 18.1493 9.16197 18.6374 9.47593C19.1254 9.7899 19.512 10.2387 19.7501 10.7679C19.9883 11.2971 20.0678 11.884 19.9791 12.4575C19.8904 13.031 19.6373 13.5665 19.2504 13.999C19.1623 14.0978 19.0947 14.2131 19.0515 14.3382C19.0083 14.4633 18.9904 14.5957 18.9987 14.7278C19.0071 14.8599 19.0416 14.989 19.1003 15.1077C19.1589 15.2263 19.2405 15.3321 19.3404 15.419C19.5394 15.5938 19.7996 15.6825 20.064 15.6656C20.3283 15.6488 20.5752 15.5277 20.7504 15.329C21.3679 14.6514 21.7873 13.8172 21.9626 12.9173C22.138 12.0175 22.0625 11.0868 21.7446 10.227C21.4267 9.36713 20.8785 8.61124 20.1599 8.04194C19.4414 7.47264 18.5802 7.11185 17.6704 6.999Z",fill:"currentColor"})]})}function WN(e){return(0,rE.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",...e,children:(0,rE.jsx)("path",{d:"M12.0002 15.496C11.8686 15.4968 11.7381 15.4716 11.6163 15.4218C11.4944 15.372 11.3836 15.2987 11.2902 15.206L7.29019 11.206C7.10188 11.0177 6.99609 10.7623 6.99609 10.496C6.99609 10.2297 7.10188 9.97434 7.29019 9.78604C7.47849 9.59773 7.73388 9.49194 8.00019 9.49194C8.26649 9.49194 8.52188 9.59773 8.71019 9.78604L12.0002 13.096L15.3002 9.91604C15.3922 9.81375 15.5043 9.73154 15.6295 9.67455C15.7547 9.61756 15.8903 9.58703 16.0279 9.58485C16.1654 9.58267 16.302 9.60889 16.4289 9.66189C16.5559 9.71488 16.6705 9.79349 16.7657 9.89282C16.8609 9.99214 16.9346 10.11 16.9821 10.2391C17.0297 10.3682 17.0501 10.5057 17.042 10.6431C17.034 10.7804 16.9977 10.9146 16.9355 11.0373C16.8732 11.16 16.7863 11.2685 16.6802 11.356L12.6802 15.216C12.4973 15.3924 12.2542 15.4925 12.0002 15.496Z",fill:"currentColor"})})}function WF(e){return(0,rE.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",...e,children:[(0,rE.jsx)("path",{d:"M21.25 12C21.25 6.89137 17.1086 2.75 12 2.75C6.89137 2.75 2.75 6.89137 2.75 12C2.75 17.1086 6.89137 21.25 12 21.25C17.1086 21.25 21.25 17.1086 21.25 12ZM22.75 12C22.75 17.9371 17.9371 22.75 12 22.75C6.06294 22.75 1.25 17.9371 1.25 12C1.25 6.06294 6.06294 1.25 12 1.25C17.9371 1.25 22.75 6.06294 22.75 12Z",fill:"currentColor"}),(0,rE.jsx)("path",{d:"M2.51074 11.4512C4.93062 13.704 8.34578 14.76 11.8662 14.75C15.3868 14.74 18.9326 13.6626 21.5586 11.75L22.4414 12.9619C19.5314 15.0814 15.6692 16.2392 11.8701 16.25C8.07098 16.2607 4.25427 15.1229 1.48926 12.5488L2.51074 11.4512Z",fill:"currentColor"}),(0,rE.jsx)("path",{d:"M12.064 2.5332C9.97218 4.60314 8.74951 8.13693 8.74367 11.8135C8.7379 15.4824 9.94419 19.1271 12.4976 21.4443L11.4898 22.5557C8.53343 19.873 7.23749 15.7674 7.24367 11.8115C7.24989 7.86332 8.55333 3.89687 11.0093 1.4668L12.064 2.5332Z",fill:"currentColor"})]})}function WO(e){return(0,rE.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 13.3333 13.3343",fill:"none",...e,children:(0,rE.jsx)("path",{d:"M12.6667 2.66759H9.33333V1.55425C9.31769 1.12747 9.13347 0.724291 8.82105 0.433114C8.50862 0.141937 8.0935 -0.0134857 7.66667 0.000918958H5.66667C5.23984 -0.0134857 4.82471 0.141937 4.51229 0.433114C4.19986 0.724291 4.01564 1.12747 4 1.55425V2.66759H0.666667C0.489856 2.66759 0.320286 2.73782 0.195262 2.86285C0.0702379 2.98787 0 3.15744 0 3.33425C0 3.51106 0.0702379 3.68063 0.195262 3.80566C0.320286 3.93068 0.489856 4.00092 0.666667 4.00092H1.33333V11.3343C1.33333 11.8647 1.54405 12.3734 1.91912 12.7485C2.29419 13.1235 2.8029 13.3343 3.33333 13.3343H10C10.5304 13.3343 11.0391 13.1235 11.4142 12.7485C11.7893 12.3734 12 11.8647 12 11.3343V4.00092H12.6667C12.8435 4.00092 13.013 3.93068 13.1381 3.80566C13.2631 3.68063 13.3333 3.51106 13.3333 3.33425C13.3333 3.15744 13.2631 2.98787 13.1381 2.86285C13.013 2.73782 12.8435 2.66759 12.6667 2.66759ZM5.33333 1.55425C5.33333 1.44759 5.47333 1.33425 5.66667 1.33425H7.66667C7.86 1.33425 8 1.44759 8 1.55425V2.66759H5.33333V1.55425ZM10.6667 11.3343C10.6667 11.5111 10.5964 11.6806 10.4714 11.8057C10.3464 11.9307 10.1768 12.0009 10 12.0009H3.33333C3.15652 12.0009 2.98695 11.9307 2.86193 11.8057C2.7369 11.6806 2.66667 11.5111 2.66667 11.3343V4.00092H10.6667V11.3343Z",fill:"currentColor"})})}function WQ(e){return(0,rE.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",...e,children:[(0,rE.jsx)("path",{d:"M18 3H6C5.20435 3 4.44129 3.31607 3.87868 3.87868C3.31607 4.44129 3 5.20435 3 6V18C3 18.7956 3.31607 19.5587 3.87868 20.1213C4.44129 20.6839 5.20435 21 6 21H18C18.7956 21 19.5587 20.6839 20.1213 20.1213C20.6839 19.5587 21 18.7956 21 18V6C21 5.20435 20.6839 4.44129 20.1213 3.87868C19.5587 3.31607 18.7956 3 18 3ZM6 5H18C18.2652 5 18.5196 5.10536 18.7071 5.29289C18.8946 5.48043 19 5.73478 19 6V14.36L15.8 11.63C15.3042 11.222 14.6821 10.999 14.04 10.999C13.3979 10.999 12.7758 11.222 12.28 11.63L5 17.7V6C5 5.73478 5.10536 5.48043 5.29289 5.29289C5.48043 5.10536 5.73478 5 6 5ZM18 19H6.56L13.56 13.16C13.6945 13.0602 13.8575 13.0062 14.025 13.0062C14.1925 13.0062 14.3555 13.0602 14.49 13.16L19 17V18C19 18.2652 18.8946 18.5196 18.7071 18.7071C18.5196 18.8946 18.2652 19 18 19Z",fill:"currentColor"}),(0,rE.jsx)("path",{d:"M7.99983 9.99992C8.39766 9.99992 8.77919 9.84188 9.06049 9.56058C9.34179 9.27927 9.49983 8.89774 9.49983 8.49992C9.49983 8.10209 9.34179 7.72056 9.06049 7.43925C8.77919 7.15795 8.39766 6.99992 7.99983 6.99992C7.60201 6.99992 7.22047 7.15795 6.93917 7.43925C6.65787 7.72056 6.49983 8.10209 6.49983 8.49992C6.49983 8.89774 6.65787 9.27927 6.93917 9.56058C7.22047 9.84188 7.60201 9.99992 7.99983 9.99992Z",fill:"currentColor"})]})}function WU(e){return(0,rE.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",...e,children:[(0,rE.jsx)("path",{d:"M12 2C11.7348 2 11.4804 2.10536 11.2929 2.29289C11.1054 2.48043 11 2.73478 11 3V5C11 5.26522 11.1054 5.51957 11.2929 5.70711C11.4804 5.89464 11.7348 6 12 6C12.2652 6 12.5196 5.89464 12.7071 5.70711C12.8946 5.51957 13 5.26522 13 5V3C13 2.73478 12.8946 2.48043 12.7071 2.29289C12.5196 2.10536 12.2652 2 12 2Z",fill:"currentColor"}),(0,rE.jsx)("path",{d:"M21.0002 11H19.0002C18.735 11 18.4806 11.1054 18.2931 11.2929C18.1055 11.4804 18.0002 11.7348 18.0002 12C18.0002 12.2652 18.1055 12.5196 18.2931 12.7071C18.4806 12.8946 18.735 13 19.0002 13H21.0002C21.2654 13 21.5197 12.8946 21.7073 12.7071C21.8948 12.5196 22.0002 12.2652 22.0002 12C22.0002 11.7348 21.8948 11.4804 21.7073 11.2929C21.5197 11.1054 21.2654 11 21.0002 11Z",fill:"currentColor"}),(0,rE.jsx)("path",{d:"M6 12C6 11.7348 5.89464 11.4804 5.70711 11.2929C5.51957 11.1054 5.26522 11 5 11H3C2.73478 11 2.48043 11.1054 2.29289 11.2929C2.10536 11.4804 2 11.7348 2 12C2 12.2652 2.10536 12.5196 2.29289 12.7071C2.48043 12.8946 2.73478 13 3 13H5C5.26522 13 5.51957 12.8946 5.70711 12.7071C5.89464 12.5196 6 12.2652 6 12Z",fill:"currentColor"}),(0,rE.jsx)("path",{d:"M6.22009 5.00298C6.02357 4.82786 5.76656 4.7362 5.50358 4.74744C5.2406 4.75869 4.99234 4.87196 4.8115 5.06322C4.63065 5.25447 4.53143 5.50867 4.5349 5.77187C4.53838 6.03507 4.64426 6.28656 4.83009 6.47298L6.27009 7.86298C6.36673 7.95629 6.48117 8.02917 6.60659 8.07728C6.73201 8.12538 6.86584 8.14773 7.00009 8.14298C7.1348 8.14246 7.26801 8.11474 7.39173 8.06147C7.51546 8.0082 7.62714 7.93048 7.72009 7.83298C7.90634 7.64561 8.01088 7.39216 8.01088 7.12798C8.01088 6.86379 7.90634 6.61034 7.72009 6.42298L6.22009 5.00298Z",fill:"currentColor"}),(0,rE.jsx)("path",{d:"M17 8.14285C17.2575 8.14182 17.5047 8.04153 17.69 7.86285L19.13 6.47285C19.3057 6.2893 19.4049 6.04577 19.4075 5.79172C19.4102 5.53767 19.316 5.29214 19.1441 5.10502C18.9723 4.91789 18.7356 4.80319 18.4823 4.78421C18.2289 4.76524 17.9779 4.84341 17.78 5.00285L16.34 6.42285C16.1538 6.61021 16.0493 6.86366 16.0493 7.12785C16.0493 7.39203 16.1538 7.64548 16.34 7.83285C16.5132 8.01557 16.7489 8.12627 17 8.14285Z",fill:"currentColor"}),(0,rE.jsx)("path",{d:"M12 17.9999C11.7348 17.9999 11.4804 18.1053 11.2929 18.2928C11.1054 18.4803 11 18.7347 11 18.9999V20.9999C11 21.2651 11.1054 21.5195 11.2929 21.707C11.4804 21.8946 11.7348 21.9999 12 21.9999C12.2652 21.9999 12.5196 21.8946 12.7071 21.707C12.8946 21.5195 13 21.2651 13 20.9999V18.9999C13 18.7347 12.8946 18.4803 12.7071 18.2928C12.5196 18.1053 12.2652 17.9999 12 17.9999Z",fill:"currentColor"}),(0,rE.jsx)("path",{d:"M17.7302 16.1399C17.5392 15.9556 17.2829 15.8547 17.0175 15.8594C16.7521 15.864 16.4995 15.974 16.3152 16.1649C16.1309 16.3559 16.0299 16.6122 16.0346 16.8776C16.0393 17.143 16.1492 17.3956 16.3402 17.5799L17.7802 18.9999C17.9702 19.1835 18.2251 19.2845 18.4893 19.2808C18.7535 19.277 19.0055 19.1688 19.1902 18.9799C19.2837 18.8868 19.3579 18.7762 19.4085 18.6543C19.4591 18.5325 19.4851 18.4019 19.4851 18.2699C19.4851 18.138 19.4591 18.0073 19.4085 17.8855C19.3579 17.7637 19.2837 17.653 19.1902 17.5599L17.7302 16.1399Z",fill:"currentColor"}),(0,rE.jsx)("path",{d:"M6.27011 16.141L4.83011 17.531C4.73638 17.624 4.66198 17.7346 4.61121 17.8564C4.56045 17.9783 4.53431 18.109 4.53431 18.241C4.53431 18.373 4.56045 18.5037 4.61121 18.6256C4.66198 18.7474 4.73638 18.858 4.83011 18.951C4.9239 19.0467 5.03596 19.1226 5.15965 19.1741C5.28333 19.2256 5.41612 19.2518 5.55011 19.251C5.79662 19.2531 6.03522 19.1641 6.22011 19.001L7.66011 17.611C7.75466 17.5197 7.83031 17.4107 7.88273 17.2902C7.93516 17.1697 7.96334 17.0401 7.96566 16.9087C7.96798 16.7773 7.9444 16.6467 7.89626 16.5244C7.84813 16.4022 7.77637 16.2905 7.68511 16.196C7.59384 16.1014 7.48484 16.0258 7.36433 15.9734C7.24383 15.9209 7.11418 15.8928 6.98278 15.8904C6.85139 15.8881 6.72082 15.9117 6.59854 15.9598C6.47626 16.008 6.36466 16.0797 6.27011 16.171V16.141Z",fill:"currentColor"})]})}function Wz(e){return(0,rE.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",...e,children:[(0,rE.jsx)("path",{d:"M20.06 11.0001H3.94C3.6907 11.0001 3.4516 11.0991 3.27532 11.2754C3.09904 11.4517 3 11.6908 3 11.9401V12.0601C3 12.5801 3.42 13.0001 3.94 13.0001H20.06C20.58 13.0001 21 12.5801 21 12.0601V11.9401C21 11.6908 20.901 11.4517 20.7247 11.2754C20.5484 11.0991 20.3093 11.0001 20.06 11.0001Z",fill:"currentColor"}),(0,rE.jsx)("path",{d:"M20.06 15.9999H3.94C3.6907 15.9999 3.4516 16.099 3.27532 16.2752C3.09904 16.4515 3 16.6906 3 16.9399V17.0599C3 17.5799 3.42 17.9999 3.94 17.9999H20.06C20.58 17.9999 21 17.5799 21 17.0599V16.9399C21 16.6906 20.901 16.4515 20.7247 16.2752C20.5484 16.099 20.3093 15.9999 20.06 15.9999Z",fill:"currentColor"}),(0,rE.jsx)("path",{d:"M20.06 6H3.94C3.6907 6 3.4516 6.09904 3.27532 6.27532C3.09904 6.4516 3 6.6907 3 6.94V7.06C3 7.58 3.42 8 3.94 8H20.06C20.58 8 21 7.58 21 7.06V6.94C21 6.6907 20.901 6.4516 20.7247 6.27532C20.5484 6.09904 20.3093 6 20.06 6Z",fill:"currentColor"})]})}function Wj(e){return(0,rE.jsxs)("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:[(0,rE.jsx)("g",{clipPath:"url(#clip0_3784_10281)",children:(0,rE.jsx)("path",{d:"M20.739 11.3791L18.039 8.67909C17.955 8.59517 17.8554 8.52861 17.7458 8.48319C17.6361 8.43778 17.5186 8.4144 17.4 8.4144C17.2813 8.4144 17.1638 8.43778 17.0541 8.48319C16.9445 8.52861 16.8449 8.59517 16.761 8.67909C16.6771 8.763 16.6105 8.86262 16.5651 8.97226C16.5197 9.0819 16.4963 9.19941 16.4963 9.31808C16.4963 9.43676 16.5197 9.55427 16.5651 9.66391C16.6105 9.77355 16.6771 9.87317 16.761 9.95708L17.922 11.1001H12.9V6.0691L14.061 7.23909C14.1451 7.32246 14.2448 7.38843 14.3545 7.43322C14.4641 7.478 14.5815 7.50073 14.7 7.50009C14.8787 7.50113 15.0538 7.44891 15.2027 7.35009C15.3517 7.25127 15.4679 7.11032 15.5364 6.94523C15.605 6.78013 15.6228 6.59835 15.5876 6.42308C15.5525 6.24781 15.4659 6.08698 15.339 5.9611L12.639 3.26111C12.4705 3.09326 12.2423 2.99902 12.0045 2.99902C11.7666 2.99902 11.5385 3.09326 11.37 3.26111L8.66999 5.9611C8.58608 6.04442 8.5194 6.14346 8.47376 6.25255C8.42812 6.36164 8.40441 6.47866 8.404 6.59691C8.40358 6.71517 8.42646 6.83235 8.47132 6.94176C8.51619 7.05117 8.58217 7.15068 8.66549 7.23459C8.74882 7.31851 8.84785 7.38519 8.95695 7.43083C9.06604 7.47647 9.18306 7.50017 9.30131 7.50059C9.54014 7.50144 9.76952 7.40737 9.93899 7.23909L11.1 6.0781V11.1001H6.069L7.239 9.93908C7.40847 9.76961 7.50368 9.53975 7.50368 9.30008C7.50368 9.06041 7.40847 8.83056 7.239 8.66109C7.06953 8.49161 6.83967 8.39641 6.6 8.39641C6.36033 8.39641 6.13048 8.49161 5.961 8.66109L3.26101 11.3611C3.17764 11.4452 3.11167 11.5449 3.06689 11.6546C3.0221 11.7642 2.99938 11.8816 3.00002 12.0001C2.99933 12.1185 3.02203 12.2359 3.06682 12.3456C3.11161 12.4552 3.1776 12.555 3.26101 12.6391L5.961 15.3391C6.0451 15.4225 6.14483 15.4885 6.25449 15.5333C6.36414 15.578 6.48156 15.6007 6.6 15.6001C6.77896 15.6015 6.95429 15.5496 7.10354 15.4508C7.25279 15.3521 7.36918 15.211 7.43781 15.0458C7.50643 14.8805 7.52417 14.6985 7.48876 14.5231C7.45334 14.3476 7.36638 14.1868 7.239 14.0611L6.078 12.9001H11.1V17.9311L9.93899 16.7611C9.76952 16.5916 9.53966 16.4964 9.29999 16.4964C9.06032 16.4964 8.83047 16.5916 8.661 16.7611C8.49152 16.9305 8.39631 17.1604 8.39631 17.4001C8.39631 17.6397 8.49152 17.8696 8.661 18.0391L11.361 20.739C11.5297 20.9065 11.7578 21.0004 11.9955 21.0004C12.2332 21.0004 12.4612 20.9065 12.63 20.739L15.33 18.0391C15.4139 17.9551 15.4805 17.8555 15.5259 17.7459C15.5713 17.6362 15.5947 17.5187 15.5947 17.4001C15.5947 17.2814 15.5713 17.1639 15.5259 17.0542C15.4805 16.9446 15.4139 16.845 15.33 16.7611C15.2461 16.6771 15.1464 16.6106 15.0368 16.5652C14.9272 16.5198 14.8096 16.4964 14.691 16.4964C14.5723 16.4964 14.4548 16.5198 14.3452 16.5652C14.2355 16.6106 14.1359 16.6771 14.052 16.7611L12.9 17.9221V12.9001H17.931L16.761 14.0611C16.6558 14.166 16.5781 14.2952 16.5349 14.4374C16.4917 14.5795 16.4843 14.7301 16.5134 14.8758C16.5424 15.0215 16.607 15.1578 16.7013 15.2725C16.7957 15.3873 16.917 15.4769 17.0544 15.5335C17.164 15.5784 17.2815 15.6011 17.4 15.6001C17.5184 15.6008 17.6359 15.5782 17.7455 15.5334C17.8552 15.4886 17.9549 15.4226 18.039 15.3391L20.739 12.6391C20.8224 12.555 20.8884 12.4552 20.9331 12.3456C20.9779 12.2359 21.0006 12.1185 21 12.0001C20.9966 11.7671 20.9031 11.5445 20.739 11.3791Z",fill:"currentColor"})}),(0,rE.jsx)("defs",{children:(0,rE.jsx)("clipPath",{id:"clip0_3784_10281",children:(0,rE.jsx)("rect",{width:"24",height:"24",fill:"currentColor"})})})]})}function WG(e){return(0,rE.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",...e,children:[(0,rE.jsx)("path",{d:"M19.5398 5.08113C18.5372 4.08551 17.3458 3.30019 16.0356 2.77129C14.7253 2.24238 13.3226 1.98054 11.9098 2.00113C9.25763 1.9945 6.71146 3.04171 4.83141 4.91238C2.95135 6.78306 1.89143 9.32396 1.8848 11.9761C1.87817 14.6283 2.92538 17.1745 4.79605 19.0545C6.66673 20.9346 9.20763 21.9945 11.8598 22.0011C12.4313 22.0108 12.9898 21.8305 13.4477 21.4884C13.9057 21.1464 14.237 20.6619 14.3898 20.1111C14.4872 19.7134 14.4862 19.2979 14.3869 18.9006C14.2875 18.5033 14.0929 18.1362 13.8198 17.8311C13.7562 17.7594 13.7146 17.6709 13.7 17.5761C13.6854 17.4814 13.6984 17.3845 13.7374 17.2969C13.7765 17.2094 13.8399 17.1349 13.9201 17.0825C14.0003 17.03 14.0939 17.0018 14.1898 17.0011H15.8398C17.3927 17.0084 18.8909 16.4279 20.0336 15.3761C21.1762 14.3244 21.8786 12.8794 21.9998 11.3311C22.037 10.1767 21.838 9.02692 21.415 7.95218C20.992 6.87745 20.3539 5.90046 19.5398 5.08113ZM15.8798 15.0011H14.2298C13.7479 14.9984 13.2756 15.1355 12.8701 15.3959C12.4647 15.6563 12.1435 16.0288 11.9455 16.4681C11.7476 16.9075 11.6813 17.3948 11.7549 17.8711C11.8284 18.3473 12.0385 18.792 12.3598 19.1511C12.4224 19.2142 12.4666 19.2932 12.4877 19.3795C12.5088 19.4658 12.5061 19.5562 12.4798 19.6411C12.4298 19.8511 12.1998 19.9811 11.8898 20.0011C10.754 19.9869 9.63429 19.7309 8.60516 19.2502C7.57603 18.7695 6.66109 18.0751 5.92126 17.2132C5.18142 16.3513 4.63365 15.3417 4.31441 14.2516C3.99517 13.1615 3.91178 12.016 4.0698 10.8911C4.35496 9.00107 5.29935 7.27276 6.73593 6.01186C8.17251 4.75096 10.0087 4.03873 11.9198 4.00113H11.9998C13.1306 3.98632 14.253 4.19813 15.3007 4.62407C16.3483 5.05001 17.3001 5.68144 18.0998 6.48113C18.7238 7.10552 19.2141 7.85048 19.5407 8.67057C19.8674 9.49066 20.0236 10.3687 19.9998 11.2511C19.8963 12.2742 19.4184 13.2229 18.6579 13.9151C17.8974 14.6072 16.9081 14.994 15.8798 15.0011Z",fill:"currentColor"}),(0,rE.jsx)("path",{d:"M11.9996 8.00025C12.3974 8.00025 12.7789 7.84222 13.0602 7.56091C13.3415 7.27961 13.4996 6.89808 13.4996 6.50025C13.4996 6.10243 13.3415 5.7209 13.0602 5.43959C12.7789 5.15829 12.3974 5.00025 11.9996 5.00025C11.6018 5.00025 11.2202 5.15829 10.9389 5.43959C10.6576 5.7209 10.4996 6.10243 10.4996 6.50025C10.4996 6.89808 10.6576 7.27961 10.9389 7.56091C11.2202 7.84222 11.6018 8.00025 11.9996 8.00025Z",fill:"currentColor"}),(0,rE.jsx)("path",{d:"M15.2496 7.20116C15.079 7.29965 14.9294 7.43079 14.8094 7.58709C14.6895 7.74339 14.6014 7.92179 14.5504 8.1121C14.4994 8.30242 14.4864 8.50092 14.512 8.69627C14.5377 8.89162 14.6016 9.08 14.7001 9.25066C14.7986 9.42131 14.9298 9.57089 15.0861 9.69086C15.2424 9.81084 15.4208 9.89885 15.6111 9.94987C15.8014 10.0009 15.9999 10.0139 16.1952 9.98825C16.3906 9.96256 16.579 9.89865 16.7496 9.80016C17.0944 9.60125 17.3461 9.27352 17.4492 8.88907C17.5524 8.50462 17.4985 8.09494 17.2996 7.75016C17.1007 7.40538 16.773 7.15373 16.3885 7.05059C16.0041 6.94744 15.5944 7.00125 15.2496 7.20016V7.20116Z",fill:"currentColor"}),(0,rE.jsx)("path",{d:"M8.74976 7.20016C8.57904 7.1018 8.39062 7.03803 8.19526 7.01249C7.99989 6.98695 7.80141 7.00014 7.61114 7.0513C7.42088 7.10247 7.24255 7.19061 7.08634 7.31069C6.93014 7.43077 6.79912 7.58045 6.70076 7.75116C6.6024 7.92188 6.53863 8.1103 6.51308 8.30567C6.48754 8.50103 6.50073 8.69951 6.5519 8.88978C6.60306 9.08005 6.6912 9.25837 6.81128 9.41458C6.93137 9.57078 7.08104 9.7018 7.25176 9.80016C7.59654 9.99881 8.00611 10.0524 8.39037 9.94903C8.77464 9.84569 9.10211 9.59394 9.30076 9.24916C9.4994 8.90438 9.55295 8.49481 9.44962 8.11055C9.34629 7.72629 9.09454 7.39881 8.74976 7.20016Z",fill:"currentColor"}),(0,rE.jsx)("path",{d:"M6.15933 11.2603C5.9133 11.4264 5.7221 11.6618 5.60993 11.9366C5.49776 12.2115 5.46967 12.5135 5.52921 12.8043C5.58876 13.0951 5.73326 13.3617 5.94443 13.5704C6.1556 13.779 6.42393 13.9204 6.71546 13.9764C7.00698 14.0325 7.30858 14.0008 7.58208 13.8853C7.85557 13.7699 8.08866 13.5759 8.25183 13.3279C8.415 13.0799 8.50091 12.789 8.49868 12.4922C8.49646 12.1953 8.4062 11.9058 8.23933 11.6603C8.12971 11.4966 7.98873 11.3563 7.82454 11.2475C7.66035 11.1387 7.47622 11.0635 7.28279 11.0263C7.08936 10.9891 6.89047 10.9906 6.69763 11.0308C6.5048 11.0709 6.32183 11.1489 6.15933 11.2603Z",fill:"currentColor"})]})}function WH(e){return(0,rE.jsx)("svg",{fill:"none",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",...e,children:(0,rE.jsx)("path",{d:"M6.05944 11.1406C6.47507 8.23438 8.97819 6 12.0001 6C13.6563 6 15.1563 6.67187 16.2438 7.75625L16.2626 7.775L16.5001 8H15.0032C14.4501 8 14.0032 8.44687 14.0032 9C14.0032 9.55313 14.4501 10 15.0032 10H19.0032C19.5563 10 20.0032 9.55313 20.0032 9V5C20.0032 4.44688 19.5563 4 19.0032 4C18.4501 4 18.0032 4.44688 18.0032 5V6.66875L17.6501 6.33437C16.2032 4.89375 14.2032 4 12.0001 4C7.96882 4 4.63444 6.98125 4.08132 10.8594C4.00319 11.4062 4.38132 11.9125 4.92819 11.9906C5.47507 12.0688 5.98132 11.6875 6.05944 11.1438V11.1406ZM19.9188 13.1406C19.9969 12.5938 19.6157 12.0875 19.0719 12.0094C18.5282 11.9312 18.0188 12.3125 17.9407 12.8562C17.5251 15.7625 15.0219 17.9969 12.0001 17.9969C10.3438 17.9969 8.84382 17.325 7.75632 16.2406L7.73757 16.2219L7.50007 15.9969H8.99694C9.55007 15.9969 9.99694 15.55 9.99694 14.9969C9.99694 14.4437 9.55007 13.9969 8.99694 13.9969L5.00007 14C4.73444 14 4.47819 14.1063 4.29069 14.2969C4.10319 14.4875 3.99694 14.7406 4.00007 15.0094L4.03132 18.9781C4.03444 19.5312 4.48757 19.975 5.04069 19.9688C5.59382 19.9625 6.03757 19.5125 6.03132 18.9594L6.01882 17.35L6.35319 17.6656C7.80007 19.1062 9.79694 20 12.0001 20C16.0313 20 19.3657 17.0187 19.9188 13.1406Z",fill:"currentColor"})})}function WV(e){return(0,rE.jsxs)("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:[(0,rE.jsx)("path",{d:"M20 15.9998C20.5522 15.9998 20.9999 16.4476 21 16.9998V18.9998C20.9999 19.7952 20.6835 20.5584 20.1211 21.1209C19.5585 21.6833 18.7955 21.9998 18 21.9998H6C5.20446 21.9998 4.44149 21.6833 3.87891 21.1209C3.31646 20.5584 3.00012 19.7952 3 18.9998V16.9998C3.00009 16.4476 3.44777 15.9998 4 15.9998C4.55223 15.9998 4.99991 16.4476 5 16.9998V18.9998C5.00012 19.2648 5.1056 19.5194 5.29297 19.7068C5.48048 19.8942 5.7349 19.9998 6 19.9998H18C18.2651 19.9998 18.5195 19.8942 18.707 19.7068C18.8944 19.5194 18.9999 19.2648 19 18.9998V16.9998C19.0001 16.4476 19.4478 15.9998 20 15.9998Z",fill:"currentColor"}),(0,rE.jsx)("path",{d:"M11.3691 3.22437C11.7619 2.90402 12.3409 2.92662 12.707 3.29273L17.707 8.29273C18.0973 8.68328 18.0975 9.31635 17.707 9.7068C17.3166 10.097 16.6834 10.097 16.293 9.7068L13 6.41383V15.9998C12.9997 16.5518 12.552 16.9997 12 16.9998C11.4479 16.9998 11.0003 16.5518 11 15.9998V6.41383L7.70703 9.7068C7.31657 10.097 6.68343 10.097 6.29297 9.7068C5.90252 9.31635 5.90268 8.68328 6.29297 8.29273L11.293 3.29273L11.3691 3.22437Z",fill:"currentColor"})]})}function WW({className:e,...t}){return(0,rE.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",className:Wb("size-6",e),...t,children:[(0,rE.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M12.0625 1.70412C12.1393 1.70359 12.2136 1.7151 12.2842 1.73439C12.6576 1.76978 13.0261 1.88527 13.3604 2.08303L19.7012 5.84084L19.7031 5.84181C20.1036 6.08032 20.4348 6.42322 20.665 6.83498C20.8952 7.24671 21.0168 7.71415 21.0166 8.19142V8.19338L20.998 15.7403C20.9979 16.1352 20.9124 16.526 20.751 16.8848C20.7319 16.9557 20.7049 17.026 20.667 17.0928C20.6355 17.1482 20.5983 17.1987 20.5576 17.2442C20.3296 17.6 20.023 17.8979 19.6631 18.1133L13.2998 21.9072C12.4738 22.3996 11.4611 22.4004 10.6436 21.917L10.6416 21.916L4.30078 18.1582L4.29883 18.1572C3.91023 17.9258 3.58764 17.5957 3.3584 17.2002C3.35105 17.1885 3.34181 17.1773 3.33496 17.1651C3.32803 17.1526 3.32268 17.1387 3.31641 17.126C3.09976 16.7236 2.98517 16.2703 2.98535 15.8076V15.8057L3.00391 8.25588C3.00603 7.28279 3.51293 6.37777 4.33984 5.88478L10.7021 2.09181C11.0682 1.87369 11.4708 1.75231 11.877 1.72658C11.9365 1.71245 11.999 1.70462 12.0625 1.70412ZM5.16895 7.36818C4.87108 7.54583 4.6844 7.87497 4.68359 8.23635L4.66602 15.3838L9.45801 12.5254C9.51085 12.7718 9.60256 13.0142 9.73535 13.2442C9.90127 13.5315 10.1161 13.7727 10.3633 13.9639L5.49512 16.8662L11.499 20.4248C11.8036 20.6044 12.1738 20.6008 12.4707 20.4238L18.5107 16.8233L13.4971 13.877C13.9543 13.482 14.2391 12.9423 14.3242 12.3672L19.3193 15.3037L19.3379 8.21291L19.3369 8.21388C19.3369 8.03517 19.2923 7.85955 19.2061 7.7051C19.1196 7.55056 18.9947 7.42151 18.8447 7.33205L12.8887 3.80275L12.8535 9.73439C12.3304 9.51037 11.7366 9.46806 11.1738 9.63576L11.21 3.76662L5.16895 7.36818Z",fill:"currentColor"}),(0,rE.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M9.91641 8.60885C11.7928 7.52595 14.1912 8.16845 15.2748 10.0444C16.3582 11.9209 15.7156 14.3211 13.8393 15.4047C11.9627 16.4879 9.56339 15.8446 8.47989 13.9682C7.39671 12.0916 8.03987 9.69227 9.91641 8.60885ZM13.8031 10.894C13.189 9.83118 11.8293 9.46704 10.766 10.0805C9.7026 10.6945 9.33693 12.0551 9.95059 13.1186C10.5646 14.1821 11.9261 14.5469 12.9897 13.9331C14.0529 13.3189 14.4171 11.9575 13.8031 10.894Z",fill:"currentColor"})]})}let Wq="var(--v-borders-medium)";function WK({className:e,variant:t="default",size:r="default",state:n="loading",role:i,"aria-live":a,"aria-label":s,...o}){switch(t){case"logo":{let t="sm"===r?4:5;return(0,rE.jsxs)("svg",{...o,role:i??"status","aria-live":a??"polite","aria-label":s??("success"===n?"Success":"error"===n?"Error":"Loading"),width:"93",height:"91",viewBox:"0 0 93 91",fill:"none",xmlns:"http://www.w3.org/2000/svg","data-slot":"spinner","data-size":r,"data-state":n,className:Wb("spinner-logo shrink-0","sm"===r?"size-9":"size-22",e),children:[(0,rE.jsx)("g",{className:"spinner-logo__intro-shell",children:(0,rE.jsx)("path",{d:"M15.7495 62.7798L46.4936 45.0297M46.4936 45.0297L77.2661 62.5451M46.4936 45.0297L46.7111 9.62225M49.9213 79.4237L74.5719 65.1917C75.6436 64.5705 76.5344 63.6811 77.1541 62.6137C77.7738 61.5462 78.1003 60.3385 78.1007 59.1129L78.1729 30.7811C78.1734 29.5494 77.851 28.3427 77.2373 27.2798C76.6236 26.2169 75.7398 25.3343 74.6729 24.7189L50.1007 10.6155C47.926 9.3694 45.2455 9.37719 43.0689 10.6339L18.4183 24.8659C16.2385 26.1244 14.8946 28.4401 14.8895 30.9447L14.8173 59.2766C14.8168 60.5082 15.1392 61.7149 15.7529 62.7778C16.3666 63.8408 17.2504 64.7233 18.3173 65.3387L42.8895 79.4421C45.0642 80.6882 47.7447 80.6805 49.9213 79.4237Z",className:"spinner-logo__outline spinner-logo__outline--intro",vectorEffect:"sm"===r?void 0:"non-scaling-stroke"})}),(0,rE.jsx)("circle",{className:"spinner-logo__intro-orb",cx:"46.27",cy:"45.8",r:"11.18",fill:"white",stroke:Wq,strokeWidth:t,strokeLinecap:"round",strokeLinejoin:"round"}),(0,rE.jsx)("circle",{className:"spinner-logo__result-ring",cx:"46.5",cy:"45.5",r:"33.46",fill:"white",stroke:Wq,strokeWidth:t,strokeLinecap:"round",strokeLinejoin:"round"}),(0,rE.jsx)("g",{transform:"translate(27.786 31.4489)",children:(0,rE.jsx)("g",{className:"spinner-logo__result-glyph spinner-logo__result-glyph--success",children:(0,rE.jsx)("path",{d:"M13.6758 28.1023C13.3559 28.101 13.0397 28.0341 12.7467 27.9057C12.4537 27.7772 12.1902 27.59 11.9725 27.3557L0.632479 15.2923C0.208575 14.8406 -0.0185097 14.2389 0.00118164 13.6198C0.020873 13.0006 0.285727 12.4146 0.737479 11.9907C1.18923 11.5668 1.79088 11.3397 2.41006 11.3594C3.02924 11.3791 3.61524 11.6439 4.03915 12.0957L13.6525 22.339L33.2758 0.87233C33.475 0.624349 33.7227 0.419696 34.0038 0.270944C34.2849 0.122191 34.5935 0.0324784 34.9105 0.00731496C35.2276 -0.0178485 35.5464 0.0220682 35.8475 0.124615C36.1485 0.227162 36.4254 0.390174 36.6612 0.603637C36.897 0.8171 37.0866 1.07651 37.2185 1.36593C37.3503 1.65535 37.4216 1.96867 37.428 2.28665C37.4344 2.60463 37.3756 2.92056 37.2555 3.21502C37.1353 3.50949 36.9562 3.77627 36.7291 3.999L15.4025 27.3323C15.1868 27.5709 14.9242 27.7625 14.6311 27.895C14.338 28.0275 14.0208 28.0981 13.6991 28.1023H13.6758Z",fill:Wq})})}),(0,rE.jsx)("g",{transform:"translate(32.4879 31.4885)",children:(0,rE.jsx)("g",{className:"spinner-logo__result-glyph spinner-logo__result-glyph--error",children:(0,rE.jsx)("path",{d:"M17.3045 14.0095L27.3378 3.99955C27.5554 3.78199 27.728 3.52371 27.8457 3.23946C27.9635 2.95521 28.0241 2.65055 28.0241 2.34288C28.0241 2.03521 27.9635 1.73055 27.8457 1.4463C27.728 1.16205 27.5554 0.903769 27.3378 0.686213C27.1203 0.468656 26.862 0.296082 26.5778 0.178341C26.2935 0.0606 25.9889 -4.58466e-09 25.6812 0C25.3735 4.58466e-09 25.0689 0.0606 24.7846 0.178341C24.5003 0.296082 24.2421 0.468656 24.0245 0.686213L14.0145 10.7195L4.00451 0.686213C3.56514 0.246838 2.96921 -4.62957e-09 2.34784 0C1.72647 4.62957e-09 1.13055 0.246838 0.691177 0.686213C0.251802 1.12559 0.0049634 1.72151 0.0049634 2.34288C0.00496339 2.96425 0.251802 3.56017 0.691177 3.99955L10.7245 14.0095L0.691177 24.0195C0.472196 24.2363 0.29836 24.4943 0.179723 24.7787C0.0610849 25.063 0 25.3681 0 25.6762C0 25.9843 0.0610849 26.2894 0.179723 26.5737C0.29836 26.8581 0.472196 27.1161 0.691177 27.3329C0.908091 27.5516 1.16616 27.7252 1.4505 27.8436C1.73484 27.9621 2.03982 28.0231 2.34784 28.0231C2.65587 28.0231 2.96085 27.9621 3.24519 27.8436C3.52953 27.7252 3.7876 27.5516 4.00451 27.3329L14.0145 17.2995L24.0245 27.3329C24.296 27.6078 24.6314 27.8111 25.0007 27.9245C25.3701 28.0379 25.7618 28.0579 26.1407 27.9828C26.5197 27.9077 26.8741 27.7397 27.1722 27.4939C27.4703 27.2481 27.7028 26.9322 27.8488 26.5745C28.0272 26.1459 28.0736 25.6738 27.9821 25.2187C27.8907 24.7636 27.6655 24.346 27.3355 24.0195L17.3045 14.0095Z",fill:Wq})})})]})}case"default":return(0,rE.jsx)(WU,{...o,role:i??"status","aria-live":a??"polite","aria-label":s??"Loading","data-slot":"spinner",className:Wb("size-4 animate-spin",e)});default:return t}}let WJ="inset-0 h-dvh 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",WY=(0,rx.createContext)(null),WX=(0,rx.createContext)(null),WZ=(0,rx.createContext)(null),W$=(0,rx.createContext)(null),W0=(0,rx.createContext)(null),W1=(0,rx.createContext)(null),W2=(0,rx.createContext)(null);function W3(e,t){let r=(0,rx.use)(e);if(!r)throw Error(`${t} must be used within a RoomViewerProvider`);return r}function W9(){return W3(WY,"useRoomViewerMetadata")}function W4(){return W3(WX,"useRoomViewerSurface")}function W5(){return W3(WZ,"useRoomViewerRooms")}function W8(){return W3(W$,"useRoomViewerResource")}function W6(){return W3(W0,"useRoomViewerSceneState")}function W7(){return W3(W1,"useRoomViewerWallResourceControls")}function qe({className:e,...t}){return(0,rE.jsx)(um,{"data-slot":"label",className:Wb("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 qt({className:e,...t}){return(0,rE.jsx)("div",{"data-slot":"field-group",className:Wb("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 qr=ly("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 qn({className:e,orientation:t="vertical",...r}){return(0,rE.jsx)("div",{role:"group","data-slot":"field","data-orientation":t,className:Wb(qr({orientation:t}),e),...r})}function qi({className:e,...t}){return(0,rE.jsx)(qe,{"data-slot":"field-label",className:Wb("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 qa({className:e,...t}){return(0,rE.jsx)("div",{"data-slot":"field-label",className:Wb("flex w-fit items-center gap-2 text-sm leading-snug font-medium group-data-[disabled=true]/field:opacity-50",e),...t})}function qs({...e}){return(0,rE.jsx)(ht,{"data-slot":"select",...e})}function qo({...e}){return(0,rE.jsx)(ha,{"data-slot":"select-value",...e})}function ql({className:e,size:t="default",children:r,...n}){return(0,rE.jsxs)(hn,{"data-slot":"select-trigger","data-size":t,className:Wb("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,rE.jsx)(hs,{asChild:!0,children:(0,rE.jsx)(WN,{className:"size-6"})})]})}function qc({className:e,children:t,position:r="item-aligned",align:n="center",portalContainer:i,...a}){return(0,rE.jsx)(ho,{container:i,children:(0,rE.jsxs)(hc,{"data-slot":"select-content",className:Wb("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,rE.jsx)(qd,{}),(0,rE.jsx)(hb,{className:Wb("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,rE.jsx)(qh,{})]})})}function qu({className:e,children:t,...r}){return(0,rE.jsxs)(hI,{"data-slot":"select-item",className:Wb("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,rE.jsx)("span",{"data-slot":"select-item-indicator",className:"absolute right-2 flex size-6 items-center justify-center",children:(0,rE.jsx)(hR,{children:(0,rE.jsx)(WP,{className:"size-5"})})}),(0,rE.jsx)(hk,{children:t})]})}function qd({className:e,...t}){return(0,rE.jsx)(hP,{"data-slot":"select-scroll-up-button",className:Wb("flex cursor-default items-center justify-center py-1",e),...t,children:(0,rE.jsx)(uu,{className:"size-4"})})}function qh({className:e,...t}){return(0,rE.jsx)(hL,{"data-slot":"select-scroll-down-button",className:Wb("flex cursor-default items-center justify-center py-1",e),...t,children:(0,rE.jsx)(ud,{className:"size-4"})})}var qp=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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"}}'),qf=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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"}}'),qA=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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"}}'),qg=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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"}}'),qm=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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"}}'),qv=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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"}}'),qb=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,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAIAAAB7GkOtAAAPDElEQVR4nO3dbW/azBaG0WL1//9kcqRGB+UBAsYej2f2vdanqk2JQ8y+/AqXP3SxLMvZiwDwH6YSQCgBAAglAAChBAAglAAAhBIAgFACABBKAABCCQBAKAEACCUAAKEEACCUAACEEgCAUAIAEEoAAEIJAEAoAQAIJQAAoQQAIJQAAIQSAIBQAgAQSgAAQgkAQCgBAAglAAChBAAglAAAhBIAgFACABBKAABCCQBAKAEACCUAAKEEACCUAACEEgCAUAIAEEoAAEIJAEAoAQAIJQAAoQQAIJQAAIQSAIBQAgAQSgAAQgkAQCgBAAglAAChBAAglAAAhBIAgFACABBKAABCCQBAKAEACCUAAKEEACCUAACEEgCAUAIAEEoAAEIJAEAoAQAIJQAAoQQAIJQAAIQSAIBQAgAQSgAAQgkAQCgBAAglAAChBAAglAAAhBIAgFACABBKAABCCQBAKAEACCUAAKEEACCUAACEEgCAUAIAEEoAAEIJAEAoAQAIJQAAoQQAIJQAAIQSAIBQAgAQSgAAQgkAQCgBAAglAAChBAAglAAAhBIAgFACABBKAABCCQBAKAEACCUAAKEEACCUAACEEgCAUAIAEEoAAEIJAEAoAQAIJQAAoQQAIJQAAIQSAIBQAgAQSgAAQgkAQCgBAAglAAChBAAglABAG9d/zl4K+IAAQANGPzMSAGhmWbygmIn1Ffay+c+kBAAglADAIewWML7L2QuQwtHhtEHvN874rKMAoQQAtrP5z9SsptCY6c8srKkAoQQANnKdD7MTANjC9KcAAYCWnABgIlZW+JjNf2oQAIBQAkCEhtvsLx7K8R/mYn2lvu+R3aQBpj+VWGVhrdcJcWKA6QgAk9kzZ4/+vxrAXASAOT5r9+dsNWehCQFgaHPNfacBmIv1lXE9Tvzb34wfAxjf37MXAO6tHO7X63WoLe6hFgbWsMoylqM37bc9/tv/ZfozI2stY1n+WfnFDgTBHgJAcfsjYfOfqqy4jKjVTsDTf7XfAN8EgEHt36x+MejXN0AtKEwAqPzJ7Dsrsv56pD3fBc4iAFTW7X0jNIAZCQDjOvRyoLbv7OY8MDOy1lLEidvgpj+TsuJSR6sGOJ5DCG8FQSk/3x+izxx/u/l/txh2FxiHdZGhbRiXQ22/D7UwcEcAKOju8wOO/l6vv+B2Naptf0ZjjSRXh0gY+ozM2snoxp+h63c4xv9ZiOIkMLR364GJz8gEgAl0vrBnj7slvF2VpAQM6HL2AqTw+m+lbQMefy8HNcYKwICslExm0kk6/r4LgaZ8LVHg6sk9NACacAgoa2bdDkm/HkaDLG2fYfrzh3VhKFEEoJMRXvZPp9sICxa1QT3vE049rgJKZAb15zlnQFbKOE+ve5l0a3oWpj9jsl7CsUx/hmXVTGEbH7gjAMzKljXs5CXExMZvwPhLSDJrJ3MzYWEzLx6mN2wDhl0w+OY+gAjOAHdm9DMFqymzGvb2BdOfWXgriIih0HxQ9v9xVr6L0elMfyYiAEXmwlljscO8G3zi/2T6MxfrKynT+WimP9OxyjI6gxUO4qUFbdgZYjouA2UCnT+zZf+ZapiClZXJmLDQitcS89EAaMILCSCUADAlOwGwn1cRsxqwAQMuErxgfWVi4wzc5Z+zlwI+Y5UFCCUAAKEEgLk58AKbefEwPQ2AbbxyqODcBigQk7LiUoQpDJ/ymqGOUxogPMzLugvbmf5MzepLKSYyrOfVQjUaACt5qVDE7YNiRv7EGBiKAMB2YsPUfCQkdRjH8BF7ALCd8w1MzeoLEEoAAEI5B0C1ozHOBMBK9gCopudxebFhagJAQd0a4CQwU7P6wkamP7OzBsMWpj8FWInhY6Y/NViPKejQc7OmP2VYlSni+s/ZSwEzEQCK+N4wPzoDNv+pxI1g1LEsy9E7AU8fXxWYlABQcz+gw3e5uV6vGsCMrLUUdOg4fnxw059JWXGp6aChbNZTiUNAlNX8lIDpv94pV2T5BX1KAKisVQNMlvVOvBj3+1v7Za3nmaK4neNg+afd4sBA7AEU8WJIPW6R/fzi9dtr887B1/sBHS4ehTEJQJy7OT7vWP/Ib1M+5MeHp6z99ZlxwFNGAylehFAjy/Cr/IhDQPCcUUJ5VnGCrJzprvwhhLUc/sPoJ4d1nWguACWZAJBOA4glAARZcyuAHpBDAEjx22R//BAxDSCEAMATGrCN520u7gOgPlMJnhIAyjL34TUBoPLo7/MRwTAp5wAoPv33Pw5UJQCU0mr6QwKHgCjoNv1txcMLtpKoo/nl/PpBbQJANW1P/GoAhQkAvKEBVCUAFGFMw6cEgIKax0BdKEkAYBUNoB4B6ME16T2Z1LCSwQRrSQvFCEAPBgcJTl/P7Wp/yvMFEMpbQVDEsiwdtkCv1+sUm5kvnooplp8+BACm91H5vr9YBnAICCCXAACEEgCAUAIAk13sCK0IAEAoAQAIJQDU4dJG+IgXTA8GEzAgg6kHpw2BAQkAQCgB6MEhIGBABhNAKAHowTkAYEACABBKAABCCQBAKAEACCUAAKEEACCUAMBn3NZHGVZlSjGdYT2vFoBQAgAQSgAAQv09ewGAje8f5YQHOwkAfKDJzL1er7fH2fNGgcf93w0/pnc8nJEAUM2yLMMOo9uCDbuEj4tnP6Mwv1qAUAIAEEoAKMhRi4YGP1rFHl4nsJauUIwVGiCUAFCTrfVWPJOF+dXCKuYg9VingVecBC5MACir4TZ7qxuAWywLNCMAAKEEACCU9wLifIMfG3H8h6oEgE5MQBiNANBG4fle+Edbw/WvhQkAe4XPR5iXAACrPr5G6esRAOANo78qR/cAQtkDAIL2VO7OaV///18yz3ULABDkt0hc38WjZCEK/kgArCEAAKEEoIeSO4/A7AwmgFACABBKAABCCUAPbqQEBiQAAKEEACCUAACEEgCAUAIAEEoAAEIJQA/eCgIYkMEEEEoAAEIJAEAoAQAIJQAAoQQAIJQAAIQSAIBQAgAQSgAAQgkAQCgBAAglAAChBAAglAAAhBIAgFACABBKAABCP9Sv5k8FwFsCABBKAABCCQBAKAEACCUAAKEEACCUAACEEgCAUALQw/V6PXsRAO4JAEAoAQAIJQAAoeoE4HK5/Pb3d//0+DcAgf7+KeF7oL8Y64//dLlcvr6+jl80gEHV2QPYwH4AkCw6ABoAJEsPQJ8GVP04IWBqRc4B7HTQ+QC7F8DIBOD5sN7QA+MemIsAPGeaA+U5Nt2D602BARUJgAkLEBoAVnI9EnBjHACEEgCAUAIAEEoAenBRKTAgAQAIJQAAoQSgB7cpAAOqEwBDFiA0AAB8RAAAQgkAQCgB6MF9AMCABAAglAAAhBIAgFACABBKAABCCQBAKAHowdtUAAMSAIBQAtCDG8GAAQkAQCgBAAglAKVcr9edXwDk+Hv2AtCAsQ6Hul6vy1Jwc1kA6oz+kisocBwjo86Gv/0A4CMCAPBG1d3rmj8VAG8JQKm3gnAUCFhPAGZl1gM7CQBAKJeBljo9ZbcAWE8AJlb1ygSgDxOk1PSXBGA98wIglAAAhBIAgFACABBKAABCCcCUXO8P7CcAAKEEACCUAEzJDV/AfuYIQCgB6OFyuTR/TOeBgZ0EACCUAACEEgCAUAIAEEoAAEIJAEAoAQAIJQAAoQQAIJQAAITeeC8AAKFvv1jzpwLgLQEACCUAAKEEoIevr6/mj1n1oCTQzd8/VRzxnvv7p/xtqW7/evpyAlQLwCxb90oADEIADpz4r0f8z8f5+ec1x3au16tDQMBOAnD+0fy7VNx9i6cVMf2B/QTgQD9H+fccXzPcXzzIz78ZpwHfS1L1VkkoTADO3HV4/Mu3Sbj9l/XnEvqM5p9BEgOYggB85m7aNj8i9P2Av830p0P/9dVHp7jFQAlgZAKwy+NVnk18fX09TvCPLh866FwFUIkAtPFiKG+bxXe7Aq/3DAA2EIDDvdiWX6nh9L9cLm5EAEoFYK5Z9vYI/uO/tvoBn9588PrB53pugbgAzOvp5aFPv6bn5aq//Wu3RQI6KPIyNo+OOP278ln97ctcAkQZyzC33bRlD6COI65J3XDFkRjDLASgiIOu+1zZgE+XZP+JcWC/mvs1aQ6dns0f/GlRLv/X9nsBL9gDYCx2DqAbewCMzp4BHMQeAF1tHuVr3v7IvgJ8RACYz+Os/87D+jvsAAEIupts54OP5u32/tPFVgX4SQDqaH4MZM/oH3PUHvTurdS2FL0LTACq2bDZ23MDv+332vNo9g9AACKMeQwn4T29KWCpu/kvALCKNmRaSk9/AYC9nFeoaqk+/QWAfsofiXJeoYwlYPR/EwDoVwU9GNwSM/q/CQD089tukDCMYAmb/gJAJ+WP/+zkRAKniCsejEwp6UkAAEI/xNQhIA5nq7bVW3o4hUBbAsAhDP2eXIHKNgIANdld4C0BgCxuTeBGACD6qJodhWQCADzh49USCADwhpPMVRW5VMM1J1Ty26fe/xlbjSQsSW8IYQ8AaMPphOkIAExg/M3/F5xOGJYAwEw3A8/O6YShCACMaOpN/k+5NeEsRVayqFcLBOpZhSXmPHDKzwlM7fLP2UtRjQAA09CAtgQAIFSFANgoAAgNAAAbCABAqOkD4PgPRPGSb2jup9KqAIFef2ZykzsGLr/Plkpjx53AQCkfZeDyeTN+fvHsMZh16Wd/3oGD9gBWfv3l4YtvX7Z/vMwyoOZYykmfXGC6j0z4+vpqO2FGnlfjLtmMzybQx6SfmTPa0p6/BHM9X8CMR4EGdzlpsac5CTzp7xVg2B2aCQJg9AOBvv5bhSMm4aCz1dAHyp8GaGLPjzzcHkDg7w9gsz33JZwfABMf4JS9olGGrwwAH3EIaIO752fEJ8uvEHhLAGq+G+jXP2cvBTA0s36/888BJLzjEsCARtwDeGSfACA0AN9kAKChWQ+tOCgEPD0VbDisN/cz5TcNOF+42fRPlt83wDZFpqcMAFQ+CQxAQ0UC4OoggNAAaABAbgA0ACA3ABoAkBsADQDIDQAAuQGwE5DAe0PBTjUDQA4NgM3KBsBcAHit8jsoeH8IgMQ9AAByA+AoEEBoAAB4QQAAQgkAQCgBAAglAAChBAAg1N+zFwA2XsXrRj/4s8//ABf9EDUsfmW3AAAAAElFTkSuQmCC"},"shading":{"width":128,"height":128,"neutral":128,"dataPng":"data:image/png;base64,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"}}'),qy=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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"}}'),qw=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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"}}'),qx=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/0CAAiAAAgAIAACIACAAAiAAAACIAACAAiAAAgAIAACIACAAAgAgAAIAIAACACAAAgAgABEmv4CAAiAAAgAIAACIACAAAiAAAACIAACAAiAAAgAIAACIACAABS9CUAAAAEQAAABEAAADRAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAgNUCsMZzIAQAEAABABAAAQAQAAEAEAABADD9BQBAAAQAQAAEAEAABABAAAQAQAAEAEAABADAfQDXTn8BAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAADyB2CZBwEJACAAAgAgAGUDsPOX2cgAASgaABkABKB0AGQAEIBlpr8AAAIgAAIACIAACAAgAAIgAKzMVi0AAvDF9LersGQAbNgCIAACgA8BCIAACAACgAAIgACQer4P/LKD/wsCEDEAX/3dNjjS/YA/fJrbHQRAAGCF6X+kARayAAgACAACIACQMwCh/nBM/5MC0MFmR5EA7PzvdgcBKBoAGz2u70QA6gbArkXqADz/lq1aAwRAAKh7EtiGLQACIABUvA/Ati0AAiAAVLzJy7YtAAIgACz70/3+sX6btwAIgACQe/q3D3ebtwAIgAAgAK2b97s/3LoQAAGA1QLw8s+5t51gsIO4D0AAIFYADj75/OXphOce2EcEQADg7Gf97wfg248F3QFwc5kACACc/SHgq0M3R04DtB8msqcIgADA+Bd7vbu+8+cXO6Z5y3zvCICdRQAEAEZe77+/Ze5vtC3b9k5g9v9AJ4QFQABg+g1fM/au9sa8+zKrTAAEANIHoHG42y8EQAAg0FGggVt1++/aLwRAAODUq/5nB2D/XO7OWYH7sdcOIwACAB8usPm4iU56DsTHALgktO8dPu1LyRvhBQDzYnwA3v0JHd+GAMx7l6cACACm/9wGHLyfwFGgb9/TIAA5AmBrJkUDpp4qOP5EORrv+xOAcAFIsTXb5TRg+EeBvgcKCcDdSWABCHtIER8ChrfEjyMCsHIAIm/QDlgJwOwAfPw2BMDbYOJeBjr2Q7EAUOpMQN/jJay1pA0QgA9HQuOPBjvMks8EHfucnzN7gAAIgADQea/QqFt8BSDphRgCcHEAYjbA7uewjwAkCkD3YvEciECfALIEQA/K3hEW5xwyPgGkD8DzSD3yZI8LLw9n+Qac8AzR9r/UWhOA1a4CivM+PD+RCcAJz4RoeThEhJ+H1j4NIACBAhDhPiwfyQWg8UKAEx4fbeuaF4BJR0UEYNg5gBQ//ttF12vAvflekOE3+rY0wCb37WW+H/duAQh3COiSK4Wcl6v53ODuj6F9A10AzglA30yclwQBGP/kLAFgyFOedm677fjx/3gAdhpge/vqGFF3APaHZsckFYCJj068/KkA9sDU7wwZ/ih/AUh0nn8nAPvTXADuMR+ZIgCMnf4CUC0AjdPcfQBb8OdnnfZQMHta0tfGTn2Ry86v75+09FqYsAHom6oCELcBAlD5hbEzAtDyJ7QHwIeA2R/uPx70F4C4Abgfe3qPe/SLvy68fb6fEAB3A1x+dd+3o7xuALI47YnwdrZcB38uDEDLpSy2q29XsQCcNv0DBSDOg93th+mm/8vZcTAAR679FwABEIC5AfCkRqOh8UdvAShyK4AArHwISAD4OGq7Twt3PA2iPVS2q+MPC5oagLJvhBcADVj2M8HxxzgfubHAsx8EQAAEgKwvix8bAA4WXQAEQADoHCjzHncY4fnnFR4WPXZQugZUAASg0ECZ+uKXvlPWCIAACAA5jgh9NehtRZevQQEQAA1gegCOXLeKAAiAAJA1AAdvXEAABEAASHNdkAYIgABoAAJw6NF1hApA42AVAAHAUSANyB2AUU+PEAABoFwDnq8udSAoSwDGPj5IADSAQgEw3Bf4BHBkqgqAAFA0AI7wrHcIKOOsFAABIEoANCDjG8G656kACAAVA+CKz1UDkOsSIAGIG4CvXjxif17mEwACkHf6C0D/8359zqgwR/x0v1gAXAIkAD3T2bEmnwDIHoCx944tMP0FIEoAjBgB4NoA9N0+JgACIADOA5M4AD+/KwC44sgosXbWD0C6QSkAAoAAWGvXjFEBQAAEgMQByDsoH9MYvAJglHw+A2S5FW+AACAAtUZJ4/vKyXUUaOt6UpBDQAhAoWliEa06/ZMSAAFAAKwaARAAAUAADHEBEAABQADMegEQAAFgzNh6+fUWmtEvAAiAACAAngaKAKw4v959sSUmAD4BoAEVA4AAuBEMARAABEAAEIDMk0sABEAABEAATKsPL4O0ggRAABAA08o6EgABQAAKjyoLUwAEAAEQAEuV9EmwJAXAqLKaBKBoISwoATCnrCYBKBoDC0cAzCnrSACKhsFCEABzymoSABAAo8o6EgAQAKPKOhIAEACjyjoSABAAAUAAQAAEwFIFDBcBsFQBw0UALFXAcBEASxUYP3RMJQEQAMD8EgABAGRDAAQAUAUBEABAAwRAAICqDRAAAQAE4NR/79oL2cYPAiAA581EAQAEIEoAKq8FGz8IQNEAWBc2fhAApyuLrhQbPwiAABRdLzZ+EAABKLp2bPzAJgA1144tH9hM/5rryFIFtiAj/vkXDSkBAAwXNusICD1ZLEwBANafLJabAACFJotlJQBAlcli4SzcAMsT2EwHAQCqjxWLQgCAimPFchAAAAQAAAEAQAAAEAAABAAAAQDyjRULQQAAAUAAABAAAAQAAAEAQAAAEAAABABIO1ksEAEAvBQMAQBqTxaLKO9q+vVb1ikgACVW0/NvWadA52RxbCH4IaB3XykAQOdw6TsMbale1YD9dWHtANMD4MxkkM9qlhuQIABCMuMokM0b6Jws865EFIATAmDbBgSg7jkAmzdwNAD3PARAAIABw0UA0p0EFgBg8DMhBCBFAFxbBYx/NpwA5P0EsH+3sG0eaH2KgADkPVvzcS0DTH8apQBMCkD7knGYCBCAQgFwtzCwcgCsBQEABMBaEABAAKwFtwsAAmAt+AQApGnAV3+7VdDo8RfbNnDqMWgvsLwwAI9/vfy7bv+y8YMAXHZYxieAUQF4PPk4/TUAuOYpAs4BBAmAEgBHZ1PLkye6552FfDwAtza2eTD3XQWUaWn/Gv0vR/nfv6gEQJprQy3wlgDsT/Bfv/jnv5UAEID0Afg4uF9+wa2Z/QI0QAAiLu2WkX07zH4BGiAA4xf1/z/Cj/3xf0YANAA0QACmBOCXg9N/UgBkAARAAEZ6vPEzcL8d/c9j+jaZnQU0QAD6AzB1KN9OYX8BDRCA75wwjm/nsteAAAhA0QDIAAiAAJQOgBKAAAjAxQG4xWBXAgEQgJMC8NWTf5QAEIClAhCZPQtM/+oBuCEGUDkAlQeE6S8DsNr0H35zkwAoARAlAC8fWmAoCIDVDZtHFJgIAmDVg9lkCgiADQAMJvu/ANgSwGCy25vmtgcwmwQA2waYTQKALQTMpuX3cFPbdgIGkwBgawGDqdJebUwP3zyUAFYeTJYzHY+/tlPDIlPJcqb7/Qd2cEg/lSxn2o8CyQCsNpgsZLoDIAaQezBZyIxqgAzAlvpSv/i7sdHsZwswoSYGIObea6TKAAjAGQG4fNc1OsXg2w3m591KphAm19EAvPsCi44gGfCxAwGYHoCPO5ihxrwMPJ447oTpP2VvnJoNaJnRf77g8Z4AIAACwMoB+CEACIAAUKUBL7+4cfQLAALgNACrBcC1pwiAAFDxKJAAIACxAuAoEBECkOs+dgQg+n4oAKT7BGDyIABjdhIBIO9pACMI0//Q/iAAZD8PbBZRMQAn/xMEAAGAy+bgtd+wACAAcOocjPPtuRIUAYAzhmDA70oAEADY3l2MHOcBuQJAogYIAIsHYL3TzmYZQT4EmEKECMDyl5wKAAIA22mvzRIABEAAWC0As2/cFQAEAJJdOBS5BAJAwPPApgoLXiG6uRAIARAA3BAQJwMCgABA0FuCBQABgDUfChTqfmCzDA+Fhm2Bx/0LAEk/BJg/1H009MnfoQAgABDuephzvlUBQAAg6AWRs79nV4IyaUMVAEz/6B8IBAABgARDcPabgQUAAcD0z3rhXd8/RwAIdU2BKYQAnFcCASDpVg2lAzCkBAKAAMBWZ88RAAQA1jwF2v36M9MHAUAAiu5Ipg8CgOlfd48ygBAABKDoTmUAIQAIQNG9ywBCADD9PcYdBAABcAMnCACmPyAACAAgAAgAIAAIACAAmP6AACAAgAAgAIAAIACAACAAgAAgACAAoAEgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAQy38EJEjIA/yspgAAAABJRU5ErkJggg=="},"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 qC={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 qE(e){return new URL(`public/room-example/${e}`,"https://cdn.neurodyn.ai/LG8wPakWNRI1O7ssxPuAcY61sOV3nsofvg4tHjAoumHFWIFoX9u0yeIk9K19I8_J55pBcLct6_ytKI9fCz4/").toString()}function qS(e={}){return{...qx,image:{...qx.image,...e}}}let qM=[{id:"room-example-11",name:"Room Example 11",image_url:qE("room-example-11.jpg"),scene:qm},{id:"room-example-12",name:"Room Example 12",image_url:qE("room-example-12.jpg"),scene:qv},{id:"room-example-13",name:"Room Example 13",image_url:qE("room-example-13.jpg"),scene:qb},{id:"room-example-14",name:"Room Example 14",image_url:qE("room-example-14.jpg"),scene:qy},{id:"room-example-15",name:"Room Example 15",image_url:qE("room-example-15.jpg"),scene:qw}],qI=[{id:"carpet-bathroom",name:"Bathroom",image_url:qE("bathroom.jpg"),scene:qp},{id:"carpet-bedroom",name:"Bedroom",image_url:qE("bedroom.jpg"),scene:qf},{id:"carpet-entryway",name:"Entryway",image_url:qE("entryway.jpg"),scene:qA},{id:"carpet-living-room",name:"Living Room",image_url:qE("living-room.jpg"),scene:qg}],qB="RcSd3KphTyq_JQEjNCqKQA,gu0109ftQmS-UQkwcW010Q,nOfGLIZcRVeU93wOkHWSbg,ozzH5I2kQMW20ao-33C86A,DBA4wR-zT92vjtuOk9varg".split(",").map(e=>e.trim()).filter(Boolean);function qk(e,t,{requiresMaterialModel:r,getCollapseKey:n}){var i;let a;return i=e.filter(e=>!!(e.tinuuid&&e.materials?.[0]&&function(e,t){if(!t)return!0;let r=e.materials?.[0]?.native?.glbUrl;return"string"==typeof r&&r.trim().length>0}(e,r)&&!(t?.uuid&&e.uuid===t.uuid||t?.tinuuid&&e.tinuuid===t.tinuuid))),a=new Set,i.filter(e=>{let t=n(e);return!a.has(t)&&(a.add(t),!0)})}let qT="vizbl-rug:";function qR(e){return e.kit?.uuid??e.uuid??e.tinuuid??""}let qD={"sized-design":{offersSizeVariants:!0,decodeVariant:function(e){if(!e?.startsWith(qT))return null;try{let t=JSON.parse(e.slice(qT.length));if("string"!=typeof t.size)return null;return{size:t.size,shape:"round"===t.shape?"round":"rect"}}catch{return null}},getCollapseKey:function(e){return e.kit?.uuid?e.kit.uuid:`object:${qR(e)}`}},"color-design":{offersSizeVariants:!1,decodeVariant:function(e){let t="vizbl-flooring:";if(!e?.startsWith(t))return null;try{let r=JSON.parse(e.slice(t.length));return null!==r&&"object"==typeof r&&"color"in r&&"string"==typeof r.color?{color:r.color}:null}catch{return null}},getCollapseKey:qR},"single-listing":{offersSizeVariants:!1,decodeVariant:null,getCollapseKey:qR}},qP={"product-identity":{catalogsEveryMaterial:!0},finish:{catalogsEveryMaterial:!1},placeholder:{catalogsEveryMaterial:!1}};function q_(e){return qD[Wv[e].composition]}let qL={"modelled-resource":{takesDimensionProps:!1,materialSource:"object-glb",requiresMaterialModel:!0},"textured-resource":{takesDimensionProps:!0,materialSource:"artwork-src",requiresMaterialModel:!1}};function qN(e){return qL[Wv[e].identity]}function qF(e,t,r,n=""){return"material"===Wv[e].productNameSource?r?.name??t?.name??t?.kit?.name??n:t?.kit?.name?.trim()||t?.name?.trim()||r?.name?.trim()||n}function qO(e){return e.hid??""}function qQ({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}=W8(),o=oc({queries:qB.map(e=>({queryKey:Wh(e,{apiKey:n,baseURL:i,source:a}),queryFn:({signal:t})=>Wp(e,{apiKey:n,baseURL:i,signal:t,source:a,widgetSession:s})}))});(0,rx.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,rx.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,rx.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}=W6(),{t:s}=sf();return(0,rE.jsxs)(qn,{className:Wb("w-fit",e),...t,children:[(0,rE.jsx)(qi,{className:"text-xs text-text-sub font-medium",children:s("material")}),(0,rE.jsxs)(qs,{value:r?.hid??void 0,onValueChange:i,children:[(0,rE.jsx)(ql,{className:"w-[145px]",size:"md",children:(0,rE.jsxs)(qo,{placeholder:s("chooseMaterial"),children:[(0,rE.jsx)("div",{className:"size-5 rounded-full border border-border-light",style:{backgroundColor:`#${r?.miniature?.color?.hex}`}}),r?.miniature?.color?.name]})}),(0,rE.jsx)(qc,{portalContainer:a,children:n.map(({material:e,materialId:t,tinuuid:r})=>(0,rE.jsxs)(qu,{value:t,children:[(0,rE.jsx)("div",{className:"size-5 rounded-full border border-border-light",style:{backgroundColor:`#${e?.miniature?.color?.hex}`}}),e.miniature?.color?.name]},`${r}-${t}`))})]})]})}let qU=rx.createContext(null),qz=rx.createContext(null);function qj({value:e,defaultValue:t,onValueChange:r,...n}){let[i,a]=rx.useState(t),s=e??i,o=rx.useMemo(()=>({value:s}),[s]),l=rx.useCallback(t=>{r?.(t),void 0===e&&a(t)},[r,e]);return(0,rE.jsx)(qU,{value:o,children:(0,rE.jsx)(pJ,{"data-slot":"tabs",value:s,onValueChange:l,...n})})}let qG=ly("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"}}),qH=ly("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 qV({className:e,children:t,size:r="default",...n}){let i=rx.use(qU),a=rx.useRef(null),s=rx.useRef(new Map),o=rx.useRef(null),l=rx.useRef(i?.value),c=rx.useRef(null),u=rx.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=rx.useCallback(()=>{null===c.current&&(c.current=requestAnimationFrame(()=>{u()}))},[u]),h=rx.useCallback((e,t)=>{t?s.current.set(e,t):s.current.delete(e),d()},[d]);rx.useLayoutEffect(()=>{l.current=i?.value,null!==c.current&&(cancelAnimationFrame(c.current),c.current=null),u()},[i?.value,u]),rx.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]),rx.useEffect(()=>()=>{null!==c.current&&cancelAnimationFrame(c.current)},[]);let p=rx.useMemo(()=>({registerTrigger:h,size:r}),[h,r]);return(0,rE.jsx)(pX,{ref:a,"data-slot":"tabs-list",className:Wb(qH({size:r}),e),...n,children:(0,rE.jsxs)(qz,{value:p,children:[(0,rE.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 qW({className:e,size:t,children:r,value:n,...i}){let a=rx.use(qz),s=rx.useRef(null),o=t??a?.size??"default",l=Wb("relative z-10 inline-flex items-center justify-center","lg"===o?"gap-1.5":"gap-1");return rx.useLayoutEffect(()=>{if(a&&n)return a.registerTrigger(n,s.current),()=>{a.registerTrigger(n,null)}},[a,n]),(0,rE.jsx)(p$,{ref:s,"data-slot":"tabs-trigger",className:Wb(qG({size:o}),"data-[state=active]:bg-transparent",e),value:n,...i,children:(0,rE.jsx)("span",{"data-slot":"tabs-trigger-content",className:l,children:r})})}function qq(e,t="m"){switch(t){case"cm":return e/100;case"in":return .0254*e;case"m":return e}}function qK(e,t){switch(t){case"cm":return 100*e;case"in":return e/.0254}}function qJ(e){let{t}=sf();return(0,rx.useMemo)(()=>[{value:0,label:t("mattingOptions.none")},{value:.05,label:`${Number(qK(.05,e).toFixed(2)).toString()} ${t(`units.${e}`)}`}],[e,t])}function qY({className:e,...t}){let{displayUnit:r}=W9(),{matting:n,setMatting:i}=W7(),{t:a}=sf(),s=qJ(r);return(0,rE.jsxs)(qn,{className:Wb("w-fit",e),...t,children:[(0,rE.jsx)(qi,{className:"text-xs text-text-sub font-medium",children:a("matting")}),(0,rE.jsx)(qj,{value:n.toString(),onValueChange:e=>i(Number(e)),children:(0,rE.jsx)(qV,{children:s.map(e=>(0,rE.jsx)(qW,{value:e.value.toString(),children:e.label},e.value))})})]})}function qX({className:e,...t}){return(0,rE.jsx)(fh,{"data-slot":"radio-group",className:Wb("grid gap-3",e),...t})}function qZ({checked:e,className:t,...r}){return(0,rE.jsx)("div",{className:Wb("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,rE.jsx)(uh,{className:"text-constant-white size-3.5",strokeWidth:4})})}function q$({className:e,variant:t="default",...r}){return(0,rE.jsxs)(ff,{"data-slot":"radio-group-item",className:Wb("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,rE.jsx)("div",{className:"relative",children:(0,rE.jsx)(qZ,{})}),"inverted"!==t&&(0,rE.jsx)(fA,{"data-slot":"radio-group-indicator",className:"relative flex items-center justify-center",children:"check"===t?(0,rE.jsx)(qZ,{checked:!0}):(0,rE.jsx)(up,{className:"fill-primary absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2"})})]})}function q0(e){let t=e.image_url;if(!/^https?:\/\//i.test(t))return t;let r=new URL(t);return r.searchParams.set("v","1"),r.href}function q1({className:e,children:t,...r}){let{className:n,onReachEnd:i,...a}=r.swiperOptions??{},{t:s}=sf(),[o,l]=(0,rx.useState)(null),[c,u]=(0,rx.useState)(!0),[d,h]=(0,rx.useState)(!1),[p,f]=(0,rx.useState)(!1),A=(0,rx.useCallback)(e=>{u(e.isBeginning),h(e.isEnd),f(e.isLocked)},[]),g=(0,rx.useCallback)(e=>{l(e),A(e)},[A]),m=(0,rx.useCallback)(e=>{h(!0),i?.(e)},[i]);return(0,rE.jsxs)("div",{className:Wb("relative w-full overflow-hidden",e),children:[(0,rE.jsx)(Ao,{className:Wb("w-full py-5",n),slidesPerView:"auto",slidesPerGroup:2,onSwiper:g,onReachBeginning:()=>u(!0),onReachEnd:m,onFromEdge:A,onLock:()=>f(!0),onUnlock:()=>f(!1),onResize:A,slidesOffsetBefore:24,slidesOffsetAfter:24,spaceBetween:12,...a,children:t}),(0,rE.jsxs)(Ww,{className:Wb("absolute top-1/2 left-8 -translate-y-1/2 z-1",{hidden:c||p}),variant:"contrast",size:"icon",onClick:()=>o?.slidePrev(),children:[(0,rE.jsx)(uf,{}),(0,rE.jsx)("span",{className:"sr-only",children:s("previousSlide")})]}),(0,rE.jsxs)(Ww,{className:Wb("absolute top-1/2 right-8 -translate-y-1/2 z-1",{hidden:d||p}),variant:"contrast",size:"icon",onClick:()=>o?.slideNext(),children:[(0,rE.jsx)(uA,{}),(0,rE.jsx)("span",{className:"sr-only",children:s("nextSlide")})]})]})}function q2({className:e,...t}){let{t:r}=sf(),{rooms:n,room:i,setRoomId:a}=W5(),{isRoomScenePending:s,selectCustomRoomFile:o}=W3(W2,"useRoomViewerCustomRoomIntake"),l=(0,rx.useId)(),c=(0,rx.useCallback)((e,t)=>r(`rooms.${t}`,{defaultValue:e}),[r]),u=(0,rx.useCallback)(async e=>{let t=e.target.files?.[0];e.target.value="",t&&await o(t)},[o]);return(0,rE.jsx)("div",{className:Wb(e),...t,children:(0,rE.jsx)(qX,{value:i.id,onValueChange:a,children:(0,rE.jsxs)(q1,{swiperOptions:{className:"py-2 sm:py-5 pb-3 sm:pb-5"},children:[(0,rE.jsx)(Al,{className:"sm:w-25! w-21! h-auto",children:(0,rE.jsxs)(qi,{htmlFor:l,className:Wb("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",s&&"cursor-wait opacity-80"),"aria-disabled":s,children:[s?(0,rE.jsxs)(rE.Fragment,{children:[(0,rE.jsx)(WK,{className:"size-5"}),(0,rE.jsx)("span",{className:"sr-only",children:r("uploadOwnPhoto")})]}):r("uploadOwnPhoto"),(0,rE.jsx)("input",{id:l,type:"file",accept:"image/*",className:"sr-only",disabled:s,onChange:u})]})}),n.map(e=>(0,rE.jsx)(Al,{className:Wb("sm:w-25! w-21! transition-transform duration-200",e.id!==i.id&&"hover:scale-110"),children:(0,rE.jsx)(qi,{htmlFor:`room-${e.id}`,className:"size-full flex flex-col gap-1 has-data-[state=checked]:bg-transparent",children:(0,rE.jsxs)("div",{className:"size-full relative h-17 sm:h-19 rounded-[0.75rem] overflow-hidden",children:[(0,rE.jsx)("img",{crossOrigin:"anonymous",src:q0(e),alt:c(e.name,e.id),className:"size-full object-cover"}),(0,rE.jsx)(q$,{value:e.id,id:`room-${e.id}`,variant:"check",className:Wb("absolute top-1.75 right-1.75",{"sr-only":e.id!==i.id})})]})})},e.id))]})})})}function q3({className:e,...t}){return(0,rE.jsxs)("div",{className:Wb("flex sm:items-end pl-0 overflow-hidden sm:flex-row flex-col py-3 sm:py-0",e),...t,children:[(0,rE.jsx)(q2,{className:"shrink-0 grow"}),(0,rE.jsxs)("div",{className:"hidden gap-5 pr-6 pb-5 md:flex",children:[(0,rE.jsx)(qQ,{}),(0,rE.jsx)(qY,{})]})]})}function q9({className:e,...t}){let{name:r}=W9();return(0,rE.jsx)("div",{className:Wb("h-16 flex items-center px-6",e),...t,children:(0,rE.jsx)("div",{className:"truncate",children:r})})}function q4({variant:e,showDialogCloseButton:t=!1}){let{t:r}=sf();return(0,rE.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,rE.jsx)(WR,{className:"size-8 text-icons-light"}),(0,rE.jsx)("h2",{className:"typo-base-16 font-medium text-text-dark",children:r("viewer-load-failed"===e||"artwork-load-failed"===e||"room-load-failed"===e?`loadError.${e}`:`accessError.${e}`)}),t&&(0,rE.jsx)(WE,{asChild:!0,children:(0,rE.jsx)(Ww,{variant:"secondary",children:r("close")})})]})}qV.displayName=pX.displayName,qW.displayName=p$.displayName,p1.displayName;let q5="u"<typeof window;function q8(e,{defaultValue:t=!1,initializeWithValue:r=!0}={}){let[n,i]=rx.useState(()=>{if(r)return q5?t:window.matchMedia(e).matches;return t});return rx.useEffect(()=>{let t=window.matchMedia(e),r=()=>{i(t.matches)};return r(),t.addEventListener("change",r),()=>{t.removeEventListener("change",r)}},[e]),n}let q6={width:void 0,height:void 0};function q7(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 Ke(e,t,{checkForDefaultPrevented:r=!0}={}){return function(n){if(e?.(n),!1===r||!n.defaultPrevented)return t?.(n)}}function Kt(e,t){if("function"==typeof e)return e(t);null!=e&&(e.current=t)}function Kr(...e){return t=>{let r=!1,n=e.map(e=>{let n=Kt(e,t);return r||"function"!=typeof n||(r=!0),n});if(r)return()=>{for(let t=0;t<n.length;t++){let r=n[t];"function"==typeof r?r():Kt(e[t],null)}}}}function Kn(...e){return rx.useCallback(Kr(...e),e)}function Ki(e,t=[]){let r=[],n=()=>{let t=r.map(e=>rx.createContext(e));return function(r){let n=r?.[e]||t;return rx.useMemo(()=>({[`__scope${e}`]:{...r,[e]:n}}),[r,n])}};return n.scopeName=e,[function(t,n){let i=rx.createContext(n),a=r.length;r=[...r,n];let s=t=>{let{scope:r,children:n,...s}=t,o=r?.[e]?.[a]||i,l=rx.useMemo(()=>s,Object.values(s));return(0,rE.jsx)(o.Provider,{value:l,children:n})};return s.displayName=t+"Provider",[s,function(r,s){let o=s?.[e]?.[a]||i,l=rx.useContext(o);if(l)return l;if(void 0!==n)return n;throw Error(`\`${r}\` must be used within \`${t}\``)}]},function(...e){let t=e[0];if(1===e.length)return t;let r=()=>{let r=e.map(e=>({useScope:e(),scopeName:e.scopeName}));return function(e){let n=r.reduce((t,{useScope:r,scopeName:n})=>{let i=r(e)[`__scope${n}`];return{...t,...i}},{});return rx.useMemo(()=>({[`__scope${t.scopeName}`]:n}),[n])}};return r.scopeName=t.scopeName,r}(n,...t)]}"u">typeof window&&window.document&&window.document.createElement;var Ka=globalThis?.document?rx.useLayoutEffect:()=>{},Ks=rC[" useInsertionEffect ".trim().toString()]||Ka;function Ko({prop:e,defaultProp:t,onChange:r=()=>{},caller:n}){let[i,a,s]=function({defaultProp:e,onChange:t}){let[r,n]=rx.useState(e),i=rx.useRef(r),a=rx.useRef(t);return Ks(()=>{a.current=t},[t]),rx.useEffect(()=>{i.current!==r&&(a.current?.(r),i.current=r)},[r,i]),[r,n,a]}({defaultProp:t,onChange:r}),o=void 0!==e,l=o?e:i;{let t=rx.useRef(void 0!==e);rx.useEffect(()=>{let e=t.current;if(e!==o){let t=o?"controlled":"uncontrolled";console.warn(`${n} is changing from ${e?"controlled":"uncontrolled"} to ${t}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`)}t.current=o},[o,n])}return[l,rx.useCallback(t=>{if(o){let r="function"==typeof t?t(e):t;r!==e&&s.current?.(r)}else a(t)},[o,e,a,s])]}Symbol("RADIX:SYNC_STATE");var Kl=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"].reduce((e,t)=>{let r=ov(`Primitive.${t}`),n=rx.forwardRef((e,n)=>{let{asChild:i,...a}=e;return"u">typeof window&&(window[Symbol.for("radix-ui")]=!0),(0,rE.jsx)(i?r:t,{...a,ref:n})});return n.displayName=`Primitive.${t}`,{...e,[t]:n}},{});function Kc(e,t){e&&(0,am.flushSync)(()=>e.dispatchEvent(t))}function Ku(e){let t=e+"CollectionProvider",[r,n]=Ki(t),[i,a]=r(t,{collectionRef:{current:null},itemMap:new Map}),s=e=>{let{scope:t,children:r}=e,n=rx.useRef(null),a=rx.useRef(new Map).current;return(0,rE.jsx)(i,{scope:t,itemMap:a,collectionRef:n,children:r})};s.displayName=t;let o=e+"CollectionSlot",l=ov(o),c=rx.forwardRef((e,t)=>{let{scope:r,children:n}=e,i=Kn(t,a(o,r).collectionRef);return(0,rE.jsx)(l,{ref:i,children:n})});c.displayName=o;let u=e+"CollectionItemSlot",d="data-radix-collection-item",h=ov(u),p=rx.forwardRef((e,t)=>{let{scope:r,children:n,...i}=e,s=rx.useRef(null),o=Kn(t,s),l=a(u,r);return rx.useEffect(()=>(l.itemMap.set(s,{ref:s,...i}),()=>void l.itemMap.delete(s))),(0,rE.jsx)(h,{...{[d]:""},ref:o,children:n})});return p.displayName=u,[{Provider:s,Slot:c,ItemSlot:p},function(t){let r=a(e+"CollectionConsumer",t);return rx.useCallback(()=>{let e=r.collectionRef.current;if(!e)return[];let t=Array.from(e.querySelectorAll(`[${d}]`));return Array.from(r.itemMap.values()).sort((e,r)=>t.indexOf(e.ref.current)-t.indexOf(r.ref.current))},[r.collectionRef,r.itemMap])},n]}var Kd=rx.createContext(void 0);function Kh(e){let t=rx.useContext(Kd);return e||t||"ltr"}function Kp(e){let t=rx.useRef(e);return rx.useEffect(()=>{t.current=e}),rx.useMemo(()=>(...e)=>t.current?.(...e),[])}var Kf="dismissableLayer.update",KA=rx.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),Kg=rx.forwardRef((e,t)=>{let{disableOutsidePointerEvents:r=!1,onEscapeKeyDown:n,onPointerDownOutside:i,onFocusOutside:a,onInteractOutside:s,onDismiss:o,...l}=e,c=rx.useContext(KA),[u,d]=rx.useState(null),h=u?.ownerDocument??globalThis?.document,[,p]=rx.useState({}),f=Kn(t,e=>d(e)),A=Array.from(c.layers),[g]=[...c.layersWithOutsidePointerEventsDisabled].slice(-1),m=A.indexOf(g),v=u?A.indexOf(u):-1,b=c.layersWithOutsidePointerEventsDisabled.size>0,y=v>=m,w=function(e,t=globalThis?.document){let r=Kp(e),n=rx.useRef(!1),i=rx.useRef(()=>{});return rx.useEffect(()=>{let e=e=>{if(e.target&&!n.current){let n=function(){Kv("dismissableLayer.pointerDownOutside",r,a,{discrete:!0})},a={originalEvent:e};"touch"===e.pointerType?(t.removeEventListener("click",i.current),i.current=n,t.addEventListener("click",i.current,{once:!0})):n()}else t.removeEventListener("click",i.current);n.current=!1},a=window.setTimeout(()=>{t.addEventListener("pointerdown",e)},0);return()=>{window.clearTimeout(a),t.removeEventListener("pointerdown",e),t.removeEventListener("click",i.current)}},[t,r]),{onPointerDownCapture:()=>n.current=!0}}(e=>{let t=e.target,r=[...c.branches].some(e=>e.contains(t));y&&!r&&(i?.(e),s?.(e),e.defaultPrevented||o?.())},h),x=function(e,t=globalThis?.document){let r=Kp(e),n=rx.useRef(!1);return rx.useEffect(()=>{let e=e=>{e.target&&!n.current&&Kv("dismissableLayer.focusOutside",r,{originalEvent:e},{discrete:!1})};return t.addEventListener("focusin",e),()=>t.removeEventListener("focusin",e)},[t,r]),{onFocusCapture:()=>n.current=!0,onBlurCapture:()=>n.current=!1}}(e=>{let t=e.target;![...c.branches].some(e=>e.contains(t))&&(a?.(e),s?.(e),e.defaultPrevented||o?.())},h);return!function(e,t=globalThis?.document){let r=Kp(e);rx.useEffect(()=>{let e=e=>{"Escape"===e.key&&r(e)};return t.addEventListener("keydown",e,{capture:!0}),()=>t.removeEventListener("keydown",e,{capture:!0})},[r,t])}(e=>{v===c.layers.size-1&&(n?.(e),!e.defaultPrevented&&o&&(e.preventDefault(),o()))},h),rx.useEffect(()=>{if(u)return r&&(0===c.layersWithOutsidePointerEventsDisabled.size&&(tR=h.body.style.pointerEvents,h.body.style.pointerEvents="none"),c.layersWithOutsidePointerEventsDisabled.add(u)),c.layers.add(u),Km(),()=>{r&&1===c.layersWithOutsidePointerEventsDisabled.size&&(h.body.style.pointerEvents=tR)}},[u,h,r,c]),rx.useEffect(()=>()=>{u&&(c.layers.delete(u),c.layersWithOutsidePointerEventsDisabled.delete(u),Km())},[u,c]),rx.useEffect(()=>{let e=()=>p({});return document.addEventListener(Kf,e),()=>document.removeEventListener(Kf,e)},[]),(0,rE.jsx)(Kl.div,{...l,ref:f,style:{pointerEvents:b?y?"auto":"none":void 0,...e.style},onFocusCapture:Ke(e.onFocusCapture,x.onFocusCapture),onBlurCapture:Ke(e.onBlurCapture,x.onBlurCapture),onPointerDownCapture:Ke(e.onPointerDownCapture,w.onPointerDownCapture)})});function Km(){let e=new CustomEvent(Kf);document.dispatchEvent(e)}function Kv(e,t,r,{discrete:n}){let i=r.originalEvent.target,a=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:r});t&&i.addEventListener(e,t,{once:!0}),n?Kc(i,a):i.dispatchEvent(a)}Kg.displayName="DismissableLayer",rx.forwardRef((e,t)=>{let r=rx.useContext(KA),n=rx.useRef(null),i=Kn(t,n);return rx.useEffect(()=>{let e=n.current;if(e)return r.branches.add(e),()=>{r.branches.delete(e)}},[r.branches]),(0,rE.jsx)(Kl.div,{...e,ref:i})}).displayName="DismissableLayerBranch";var Kb=0;function Ky(){let e=document.createElement("span");return e.setAttribute("data-radix-focus-guard",""),e.tabIndex=0,e.style.outline="none",e.style.opacity="0",e.style.position="fixed",e.style.pointerEvents="none",e}var Kw="focusScope.autoFocusOnMount",Kx="focusScope.autoFocusOnUnmount",KC={bubbles:!1,cancelable:!0},KE=rx.forwardRef((e,t)=>{let{loop:r=!1,trapped:n=!1,onMountAutoFocus:i,onUnmountAutoFocus:a,...s}=e,[o,l]=rx.useState(null),c=Kp(i),u=Kp(a),d=rx.useRef(null),h=Kn(t,e=>l(e)),p=rx.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;rx.useEffect(()=>{if(n){let e=function(e){if(p.paused||!o)return;let t=e.target;o.contains(t)?d.current=t:KI(d.current,{select:!0})},t=function(e){if(p.paused||!o)return;let t=e.relatedTarget;null!==t&&(o.contains(t)||KI(d.current,{select:!0}))};document.addEventListener("focusin",e),document.addEventListener("focusout",t);let r=new MutationObserver(function(e){if(document.activeElement===document.body)for(let t of e)t.removedNodes.length>0&&KI(o)});return o&&r.observe(o,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",e),document.removeEventListener("focusout",t),r.disconnect()}}},[n,o,p.paused]),rx.useEffect(()=>{if(o){KB.add(p);let e=document.activeElement;if(!o.contains(e)){let t=new CustomEvent(Kw,KC);o.addEventListener(Kw,c),o.dispatchEvent(t),t.defaultPrevented||(function(e,{select:t=!1}={}){let r=document.activeElement;for(let n of e)if(KI(n,{select:t}),document.activeElement!==r)return}(KS(o).filter(e=>"A"!==e.tagName),{select:!0}),document.activeElement===e&&KI(o))}return()=>{o.removeEventListener(Kw,c),setTimeout(()=>{let t=new CustomEvent(Kx,KC);o.addEventListener(Kx,u),o.dispatchEvent(t),t.defaultPrevented||KI(e??document.body,{select:!0}),o.removeEventListener(Kx,u),KB.remove(p)},0)}}},[o,c,u,p]);let f=rx.useCallback(e=>{if(!r&&!n||p.paused)return;let t="Tab"===e.key&&!e.altKey&&!e.ctrlKey&&!e.metaKey,i=document.activeElement;if(t&&i){var a;let t,n=e.currentTarget,[s,o]=[KM(t=KS(a=n),a),KM(t.reverse(),a)];s&&o?e.shiftKey||i!==o?e.shiftKey&&i===s&&(e.preventDefault(),r&&KI(o,{select:!0})):(e.preventDefault(),r&&KI(s,{select:!0})):i===n&&e.preventDefault()}},[r,n,p.paused]);return(0,rE.jsx)(Kl.div,{tabIndex:-1,...s,ref:h,onKeyDown:f})});function KS(e){let t=[],r=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>{let t="INPUT"===e.tagName&&"hidden"===e.type;return e.disabled||e.hidden||t?NodeFilter.FILTER_SKIP:e.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;r.nextNode();)t.push(r.currentNode);return t}function KM(e,t){for(let r of e)if(!function(e,{upTo:t}){if("hidden"===getComputedStyle(e).visibility)return!0;for(;e&&(void 0===t||e!==t);){if("none"===getComputedStyle(e).display)return!0;e=e.parentElement}return!1}(r,{upTo:t}))return r}function KI(e,{select:t=!1}={}){if(e&&e.focus){var r;let n=document.activeElement;e.focus({preventScroll:!0}),e!==n&&(r=e)instanceof HTMLInputElement&&"select"in r&&t&&e.select()}}KE.displayName="FocusScope";var KB=(ex=[],{add(e){let t=ex[0];e!==t&&t?.pause(),(ex=Kk(ex,e)).unshift(e)},remove(e){ex=Kk(ex,e),ex[0]?.resume()}});function Kk(e,t){let r=[...e],n=r.indexOf(t);return -1!==n&&r.splice(n,1),r}var KT=rC[" useId ".trim().toString()]||(()=>void 0),KR=0;function KD(e){let[t,r]=rx.useState(KT());return Ka(()=>{e||r(e=>e??String(KR++))},[e]),e||(t?`radix-${t}`:"")}let KP=["top","right","bottom","left"],K_=Math.min,KL=Math.max,KN=Math.round,KF=Math.floor,KO=e=>({x:e,y:e}),KQ={left:"right",right:"left",bottom:"top",top:"bottom"};function KU(e,t){return"function"==typeof e?e(t):e}function Kz(e){return e.split("-")[0]}function Kj(e){return e.split("-")[1]}function KG(e){return"x"===e?"y":"x"}function KH(e){return"y"===e?"height":"width"}function KV(e){let t=e[0];return"t"===t||"b"===t?"y":"x"}function KW(e){return e.includes("start")?e.replace("start","end"):e.replace("end","start")}let Kq=["left","right"],KK=["right","left"],KJ=["top","bottom"],KY=["bottom","top"];function KX(e){let t=Kz(e);return KQ[t]+e.slice(t.length)}function KZ(e){return"number"!=typeof e?{top:0,right:0,bottom:0,left:0,...e}:{top:e,right:e,bottom:e,left:e}}function K$(e){let{x:t,y:r,width:n,height:i}=e;return{width:n,height:i,top:r,left:t,right:t+n,bottom:r+i,x:t,y:r}}function K0(e,t,r){let n,{reference:i,floating:a}=e,s=KV(t),o=KG(KV(t)),l=KH(o),c=Kz(t),u="y"===s,d=i.x+i.width/2-a.width/2,h=i.y+i.height/2-a.height/2,p=i[l]/2-a[l]/2;switch(c){case"top":n={x:d,y:i.y-a.height};break;case"bottom":n={x:d,y:i.y+i.height};break;case"right":n={x:i.x+i.width,y:h};break;case"left":n={x:i.x-a.width,y:h};break;default:n={x:i.x,y:i.y}}switch(Kj(t)){case"start":n[o]-=p*(r&&u?-1:1);break;case"end":n[o]+=p*(r&&u?-1:1)}return n}let K1=async(e,t,r)=>{let{placement:n="bottom",strategy:i="absolute",middleware:a=[],platform:s}=r,o=a.filter(Boolean),l=await (null==s.isRTL?void 0:s.isRTL(t)),c=await s.getElementRects({reference:e,floating:t,strategy:i}),{x:u,y:d}=K0(c,n,l),h=n,p={},f=0;for(let r=0;r<o.length;r++){let{name:a,fn:A}=o[r],{x:g,y:m,data:v,reset:b}=await A({x:u,y:d,initialPlacement:n,placement:h,strategy:i,middlewareData:p,rects:c,platform:s,elements:{reference:e,floating:t}});u=null!=g?g:u,d=null!=m?m:d,p={...p,[a]:{...p[a],...v}},b&&f<=50&&(f++,"object"==typeof b&&(b.placement&&(h=b.placement),b.rects&&(c=!0===b.rects?await s.getElementRects({reference:e,floating:t,strategy:i}):b.rects),{x:u,y:d}=K0(c,h,l)),r=-1)}return{x:u,y:d,placement:h,strategy:i,middlewareData:p}};async function K2(e,t){var r;void 0===t&&(t={});let{x:n,y:i,platform:a,rects:s,elements:o,strategy:l}=e,{boundary:c="clippingAncestors",rootBoundary:u="viewport",elementContext:d="floating",altBoundary:h=!1,padding:p=0}=KU(t,e),f=KZ(p),A=o[h?"floating"===d?"reference":"floating":d],g=K$(await a.getClippingRect({element:null==(r=await (null==a.isElement?void 0:a.isElement(A)))||r?A:A.contextElement||await (null==a.getDocumentElement?void 0:a.getDocumentElement(o.floating)),boundary:c,rootBoundary:u,strategy:l})),m="floating"===d?{x:n,y:i,width:s.floating.width,height:s.floating.height}:s.reference,v=await (null==a.getOffsetParent?void 0:a.getOffsetParent(o.floating)),b=await (null==a.isElement?void 0:a.isElement(v))&&await (null==a.getScale?void 0:a.getScale(v))||{x:1,y:1},y=K$(a.convertOffsetParentRelativeRectToViewportRelativeRect?await a.convertOffsetParentRelativeRectToViewportRelativeRect({elements:o,rect:m,offsetParent:v,strategy:l}):m);return{top:(g.top-y.top+f.top)/b.y,bottom:(y.bottom-g.bottom+f.bottom)/b.y,left:(g.left-y.left+f.left)/b.x,right:(y.right-g.right+f.right)/b.x}}function K3(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function K9(e){return KP.some(t=>e[t]>=0)}let K4=new Set(["left","top"]);async function K5(e,t){let{placement:r,platform:n,elements:i}=e,a=await (null==n.isRTL?void 0:n.isRTL(i.floating)),s=Kz(r),o=Kj(r),l="y"===KV(r),c=K4.has(s)?-1:1,u=a&&l?-1:1,d=KU(t,e),{mainAxis:h,crossAxis:p,alignmentAxis:f}="number"==typeof d?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:d.mainAxis||0,crossAxis:d.crossAxis||0,alignmentAxis:d.alignmentAxis};return o&&"number"==typeof f&&(p="end"===o?-1*f:f),l?{x:p*u,y:h*c}:{x:h*c,y:p*u}}function K8(){return"u">typeof window}function K6(e){return Jt(e)?(e.nodeName||"").toLowerCase():"#document"}function K7(e){var t;return(null==e||null==(t=e.ownerDocument)?void 0:t.defaultView)||window}function Je(e){var t;return null==(t=(Jt(e)?e.ownerDocument:e.document)||window.document)?void 0:t.documentElement}function Jt(e){return!!K8()&&(e instanceof Node||e instanceof K7(e).Node)}function Jr(e){return!!K8()&&(e instanceof Element||e instanceof K7(e).Element)}function Jn(e){return!!K8()&&(e instanceof HTMLElement||e instanceof K7(e).HTMLElement)}function Ji(e){return!(!K8()||"u"<typeof ShadowRoot)&&(e instanceof ShadowRoot||e instanceof K7(e).ShadowRoot)}function Ja(e){let{overflow:t,overflowX:r,overflowY:n,display:i}=Jp(e);return/auto|scroll|overlay|hidden|clip/.test(t+n+r)&&"inline"!==i&&"contents"!==i}function Js(e){try{if(e.matches(":popover-open"))return!0}catch(e){}try{return e.matches(":modal")}catch(e){return!1}}let Jo=/transform|translate|scale|rotate|perspective|filter/,Jl=/paint|layout|strict|content/,Jc=e=>!!e&&"none"!==e;function Ju(e){let t=Jr(e)?Jp(e):e;return Jc(t.transform)||Jc(t.translate)||Jc(t.scale)||Jc(t.rotate)||Jc(t.perspective)||!Jd()&&(Jc(t.backdropFilter)||Jc(t.filter))||Jo.test(t.willChange||"")||Jl.test(t.contain||"")}function Jd(){return null==M&&(M="u">typeof CSS&&CSS.supports&&CSS.supports("-webkit-backdrop-filter","none")),M}function Jh(e){return/^(html|body|#document)$/.test(K6(e))}function Jp(e){return K7(e).getComputedStyle(e)}function Jf(e){return Jr(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function JA(e){if("html"===K6(e))return e;let t=e.assignedSlot||e.parentNode||Ji(e)&&e.host||Je(e);return Ji(t)?t.host:t}function Jg(e,t,r){var n;void 0===t&&(t=[]),void 0===r&&(r=!0);let i=function e(t){let r=JA(t);return Jh(r)?t.ownerDocument?t.ownerDocument.body:t.body:Jn(r)&&Ja(r)?r:e(r)}(e),a=i===(null==(n=e.ownerDocument)?void 0:n.body),s=K7(i);if(!a)return t.concat(i,Jg(i,[],r));{let e=Jm(s);return t.concat(s,s.visualViewport||[],Ja(i)?i:[],e&&r?Jg(e):[])}}function Jm(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function Jv(e){let t=Jp(e),r=parseFloat(t.width)||0,n=parseFloat(t.height)||0,i=Jn(e),a=i?e.offsetWidth:r,s=i?e.offsetHeight:n,o=KN(r)!==a||KN(n)!==s;return o&&(r=a,n=s),{width:r,height:n,$:o}}function Jb(e){return Jr(e)?e:e.contextElement}function Jy(e){let t=Jb(e);if(!Jn(t))return KO(1);let r=t.getBoundingClientRect(),{width:n,height:i,$:a}=Jv(t),s=(a?KN(r.width):r.width)/n,o=(a?KN(r.height):r.height)/i;return s&&Number.isFinite(s)||(s=1),o&&Number.isFinite(o)||(o=1),{x:s,y:o}}let Jw=KO(0);function Jx(e){let t=K7(e);return Jd()&&t.visualViewport?{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}:Jw}function JC(e,t,r,n){var i;void 0===t&&(t=!1),void 0===r&&(r=!1);let a=e.getBoundingClientRect(),s=Jb(e),o=KO(1);t&&(n?Jr(n)&&(o=Jy(n)):o=Jy(e));let l=(void 0===(i=r)&&(i=!1),n&&(!i||n===K7(s))&&i)?Jx(s):KO(0),c=(a.left+l.x)/o.x,u=(a.top+l.y)/o.y,d=a.width/o.x,h=a.height/o.y;if(s){let e=K7(s),t=n&&Jr(n)?K7(n):n,r=e,i=Jm(r);for(;i&&n&&t!==r;){let e=Jy(i),t=i.getBoundingClientRect(),n=Jp(i),a=t.left+(i.clientLeft+parseFloat(n.paddingLeft))*e.x,s=t.top+(i.clientTop+parseFloat(n.paddingTop))*e.y;c*=e.x,u*=e.y,d*=e.x,h*=e.y,c+=a,u+=s,i=Jm(r=K7(i))}}return K$({width:d,height:h,x:c,y:u})}function JE(e,t){let r=Jf(e).scrollLeft;return t?t.left+r:JC(Je(e)).left+r}function JS(e,t){let r=e.getBoundingClientRect();return{x:r.left+t.scrollLeft-JE(e,r),y:r.top+t.scrollTop}}let JM=new Set(["absolute","fixed"]);function JI(e,t,r){var n;let i;if("viewport"===t)i=function(e,t){let r=K7(e),n=Je(e),i=r.visualViewport,a=n.clientWidth,s=n.clientHeight,o=0,l=0;if(i){a=i.width,s=i.height;let e=Jd();(!e||e&&"fixed"===t)&&(o=i.offsetLeft,l=i.offsetTop)}let c=JE(n);if(c<=0){let e=n.ownerDocument,t=e.body,r=getComputedStyle(t),i="CSS1Compat"===e.compatMode&&parseFloat(r.marginLeft)+parseFloat(r.marginRight)||0,s=Math.abs(n.clientWidth-t.clientWidth-i);s<=25&&(a-=s)}else c<=25&&(a+=c);return{width:a,height:s,x:o,y:l}}(e,r);else if("document"===t){let t,r,a,s,o,l,c;n=Je(e),t=Je(n),r=Jf(n),a=n.ownerDocument.body,s=KL(t.scrollWidth,t.clientWidth,a.scrollWidth,a.clientWidth),o=KL(t.scrollHeight,t.clientHeight,a.scrollHeight,a.clientHeight),l=-r.scrollLeft+JE(n),c=-r.scrollTop,"rtl"===Jp(a).direction&&(l+=KL(t.clientWidth,a.clientWidth)-s),i={width:s,height:o,x:l,y:c}}else if(Jr(t)){let e,n,a,s,o,l;n=(e=JC(t,!0,"fixed"===r)).top+t.clientTop,a=e.left+t.clientLeft,s=Jn(t)?Jy(t):KO(1),o=t.clientWidth*s.x,l=t.clientHeight*s.y,i={width:o,height:l,x:a*s.x,y:n*s.y}}else{let r=Jx(e);i={x:t.x-r.x,y:t.y-r.y,width:t.width,height:t.height}}return K$(i)}function JB(e){return"static"===Jp(e).position}function Jk(e,t){if(!Jn(e)||"fixed"===Jp(e).position)return null;if(t)return t(e);let r=e.offsetParent;return Je(e)===r&&(r=r.ownerDocument.body),r}function JT(e,t){var r;let n=K7(e);if(Js(e))return n;if(!Jn(e)){let t=JA(e);for(;t&&!Jh(t);){if(Jr(t)&&!JB(t))return t;t=JA(t)}return n}let i=Jk(e,t);for(;i&&(r=i,/^(table|td|th)$/.test(K6(r)))&&JB(i);)i=Jk(i,t);return i&&Jh(i)&&JB(i)&&!Ju(i)?n:i||function(e){let t=JA(e);for(;Jn(t)&&!Jh(t);){if(Ju(t))return t;if(Js(t))break;t=JA(t)}return null}(e)||n}let JR=async function(e){let t=this.getOffsetParent||JT,r=this.getDimensions,n=await r(e.floating);return{reference:function(e,t,r){let n=Jn(t),i=Je(t),a="fixed"===r,s=JC(e,!0,a,t),o={scrollLeft:0,scrollTop:0},l=KO(0);if(n||!n&&!a)if(("body"!==K6(t)||Ja(i))&&(o=Jf(t)),n){let e=JC(t,!0,a,t);l.x=e.x+t.clientLeft,l.y=e.y+t.clientTop}else i&&(l.x=JE(i));a&&!n&&i&&(l.x=JE(i));let c=!i||n||a?KO(0):JS(i,o);return{x:s.left+o.scrollLeft-l.x-c.x,y:s.top+o.scrollTop-l.y-c.y,width:s.width,height:s.height}}(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:n.width,height:n.height}}},JD={convertOffsetParentRelativeRectToViewportRelativeRect:function(e){let{elements:t,rect:r,offsetParent:n,strategy:i}=e,a="fixed"===i,s=Je(n),o=!!t&&Js(t.floating);if(n===s||o&&a)return r;let l={scrollLeft:0,scrollTop:0},c=KO(1),u=KO(0),d=Jn(n);if((d||!d&&!a)&&(("body"!==K6(n)||Ja(s))&&(l=Jf(n)),Jn(n))){let e=JC(n);c=Jy(n),u.x=e.x+n.clientLeft,u.y=e.y+n.clientTop}let h=!s||d||a?KO(0):JS(s,l);return{width:r.width*c.x,height:r.height*c.y,x:r.x*c.x-l.scrollLeft*c.x+u.x+h.x,y:r.y*c.y-l.scrollTop*c.y+u.y+h.y}},getDocumentElement:Je,getClippingRect:function(e){let{element:t,boundary:r,rootBoundary:n,strategy:i}=e,a=[..."clippingAncestors"===r?Js(t)?[]:function(e,t){let r=t.get(e);if(r)return r;let n=Jg(e,[],!1).filter(e=>Jr(e)&&"body"!==K6(e)),i=null,a="fixed"===Jp(e).position,s=a?JA(e):e;for(;Jr(s)&&!Jh(s);){let t=Jp(s),r=Ju(s);r||"fixed"!==t.position||(i=null),(a?!r&&!i:!r&&"static"===t.position&&!!i&&JM.has(i.position)||Ja(s)&&!r&&function e(t,r){let n=JA(t);return!(n===r||!Jr(n)||Jh(n))&&("fixed"===Jp(n).position||e(n,r))}(e,s))?n=n.filter(e=>e!==s):i=t,s=JA(s)}return t.set(e,n),n}(t,this._c):[].concat(r),n],s=a[0],o=a.reduce((e,r)=>{let n=JI(t,r,i);return e.top=KL(n.top,e.top),e.right=K_(n.right,e.right),e.bottom=K_(n.bottom,e.bottom),e.left=KL(n.left,e.left),e},JI(t,s,i));return{width:o.right-o.left,height:o.bottom-o.top,x:o.left,y:o.top}},getOffsetParent:JT,getElementRects:JR,getClientRects:function(e){return Array.from(e.getClientRects())},getDimensions:function(e){let{width:t,height:r}=Jv(e);return{width:t,height:r}},getScale:Jy,isElement:Jr,isRTL:function(e){return"rtl"===Jp(e).direction}};function JP(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}let J_=e=>({name:"arrow",options:e,async fn(t){let{x:r,y:n,placement:i,rects:a,platform:s,elements:o,middlewareData:l}=t,{element:c,padding:u=0}=KU(e,t)||{};if(null==c)return{};let d=KZ(u),h={x:r,y:n},p=KG(KV(i)),f=KH(p),A=await s.getDimensions(c),g="y"===p,m=g?"clientHeight":"clientWidth",v=a.reference[f]+a.reference[p]-h[p]-a.floating[f],b=h[p]-a.reference[p],y=await (null==s.getOffsetParent?void 0:s.getOffsetParent(c)),w=y?y[m]:0;w&&await (null==s.isElement?void 0:s.isElement(y))||(w=o.floating[m]||a.floating[f]);let x=w/2-A[f]/2-1,C=K_(d[g?"top":"left"],x),E=K_(d[g?"bottom":"right"],x),S=w-A[f]-E,M=w/2-A[f]/2+(v/2-b/2),I=KL(C,K_(M,S)),B=!l.arrow&&null!=Kj(i)&&M!==I&&a.reference[f]/2-(M<C?C:E)-A[f]/2<0,k=B?M<C?M-C:M-S:0;return{[p]:h[p]+k,data:{[p]:I,centerOffset:M-I-k,...B&&{alignmentOffset:k}},reset:B}}});var JL="u">typeof document?rx.useLayoutEffect:function(){};function JN(e,t){let r,n,i;if(e===t)return!0;if(typeof e!=typeof t)return!1;if("function"==typeof e&&e.toString()===t.toString())return!0;if(e&&t&&"object"==typeof e){if(Array.isArray(e)){if((r=e.length)!==t.length)return!1;for(n=r;0!=n--;)if(!JN(e[n],t[n]))return!1;return!0}if((r=(i=Object.keys(e)).length)!==Object.keys(t).length)return!1;for(n=r;0!=n--;)if(!({}).hasOwnProperty.call(t,i[n]))return!1;for(n=r;0!=n--;){let r=i[n];if(("_owner"!==r||!e.$$typeof)&&!JN(e[r],t[r]))return!1}return!0}return e!=e&&t!=t}function JF(e){return"u"<typeof window?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function JO(e,t){let r=JF(e);return Math.round(t*r)/r}function JQ(e){let t=rx.useRef(e);return JL(()=>{t.current=e}),t}var JU=rx.forwardRef((e,t)=>{let{children:r,width:n=10,height:i=5,...a}=e;return(0,rE.jsx)(Kl.svg,{...a,ref:t,width:n,height:i,viewBox:"0 0 30 10",preserveAspectRatio:"none",children:e.asChild?r:(0,rE.jsx)("polygon",{points:"0,0 30,0 15,10"})})});JU.displayName="Arrow";var Jz="Popper",[Jj,JG]=Ki(Jz),[JH,JV]=Jj(Jz),JW=e=>{let{__scopePopper:t,children:r}=e,[n,i]=rx.useState(null);return(0,rE.jsx)(JH,{scope:t,anchor:n,onAnchorChange:i,children:r})};JW.displayName=Jz;var Jq="PopperAnchor",JK=rx.forwardRef((e,t)=>{let{__scopePopper:r,virtualRef:n,...i}=e,a=JV(Jq,r),s=rx.useRef(null),o=Kn(t,s),l=rx.useRef(null);return rx.useEffect(()=>{let e=l.current;l.current=n?.current||s.current,e!==l.current&&a.onAnchorChange(l.current)}),n?null:(0,rE.jsx)(Kl.div,{...i,ref:o})});JK.displayName=Jq;var JJ="PopperContent",[JY,JX]=Jj(JJ),JZ=rx.forwardRef((e,t)=>{var r,n,i,a,s,o,l,c,u,d,h,p,f,A,g,m,v,b,y,w,x;let{__scopePopper:C,side:E="bottom",sideOffset:S=0,align:M="center",alignOffset:I=0,arrowPadding:B=0,avoidCollisions:k=!0,collisionBoundary:T=[],collisionPadding:R=0,sticky:D="partial",hideWhenDetached:P=!1,updatePositionStrategy:_="optimized",onPlaced:L,...N}=e,F=JV(JJ,C),[O,Q]=rx.useState(null),U=Kn(t,e=>Q(e)),[z,j]=rx.useState(null),G=function(e){let[t,r]=rx.useState(void 0);return Ka(()=>{if(e){r({width:e.offsetWidth,height:e.offsetHeight});let t=new ResizeObserver(t=>{let n,i;if(!Array.isArray(t)||!t.length)return;let a=t[0];if("borderBoxSize"in a){let e=a.borderBoxSize,t=Array.isArray(e)?e[0]:e;n=t.inlineSize,i=t.blockSize}else n=e.offsetWidth,i=e.offsetHeight;r({width:n,height:i})});return t.observe(e,{box:"border-box"}),()=>t.unobserve(e)}r(void 0)},[e]),t}(z),H=G?.width??0,V=G?.height??0,W="number"==typeof R?R:{top:0,right:0,bottom:0,left:0,...R},q=Array.isArray(T)?T:[T],K=q.length>0,J={padding:W,boundary:q.filter(J2),altBoundary:K},{refs:Y,floatingStyles:X,placement:Z,isPositioned:$,middlewareData:ee}=function(e){void 0===e&&(e={});let{placement:t="bottom",strategy:r="absolute",middleware:n=[],platform:i,elements:{reference:a,floating:s}={},transform:o=!0,whileElementsMounted:l,open:c}=e,[u,d]=rx.useState({x:0,y:0,strategy:r,placement:t,middlewareData:{},isPositioned:!1}),[h,p]=rx.useState(n);JN(h,n)||p(n);let[f,A]=rx.useState(null),[g,m]=rx.useState(null),v=rx.useCallback(e=>{e!==x.current&&(x.current=e,A(e))},[]),b=rx.useCallback(e=>{e!==C.current&&(C.current=e,m(e))},[]),y=a||f,w=s||g,x=rx.useRef(null),C=rx.useRef(null),E=rx.useRef(u),S=null!=l,M=JQ(l),I=JQ(i),B=JQ(c),k=rx.useCallback(()=>{var e,n;let i,a,s;if(!x.current||!C.current)return;let o={placement:t,strategy:r,middleware:h};I.current&&(o.platform=I.current),(e=x.current,n=C.current,i=new Map,s={...(a={platform:JD,...o}).platform,_c:i},K1(e,n,{...a,platform:s})).then(e=>{let t={...e,isPositioned:!1!==B.current};T.current&&!JN(E.current,t)&&(E.current=t,(0,am.flushSync)(()=>{d(t)}))})},[h,t,r,I,B]);JL(()=>{!1===c&&E.current.isPositioned&&(E.current.isPositioned=!1,d(e=>({...e,isPositioned:!1})))},[c]);let T=rx.useRef(!1);JL(()=>(T.current=!0,()=>{T.current=!1}),[]),JL(()=>{if(y&&(x.current=y),w&&(C.current=w),y&&w){if(M.current)return M.current(y,w,k);k()}},[y,w,k,M,S]);let R=rx.useMemo(()=>({reference:x,floating:C,setReference:v,setFloating:b}),[v,b]),D=rx.useMemo(()=>({reference:y,floating:w}),[y,w]),P=rx.useMemo(()=>{let e={position:r,left:0,top:0};if(!D.floating)return e;let t=JO(D.floating,u.x),n=JO(D.floating,u.y);return o?{...e,transform:"translate("+t+"px, "+n+"px)",...JF(D.floating)>=1.5&&{willChange:"transform"}}:{position:r,left:t,top:n}},[r,o,D.floating,u.x,u.y]);return rx.useMemo(()=>({...u,update:k,refs:R,elements:D,floatingStyles:P}),[u,k,R,D,P])}({strategy:"fixed",placement:E+("center"!==M?"-"+M:""),whileElementsMounted:(...e)=>(function(e,t,r,n){let i;void 0===n&&(n={});let{ancestorScroll:a=!0,ancestorResize:s=!0,elementResize:o="function"==typeof ResizeObserver,layoutShift:l="function"==typeof IntersectionObserver,animationFrame:c=!1}=n,u=Jb(e),d=a||s?[...u?Jg(u):[],...Jg(t)]:[];d.forEach(e=>{a&&e.addEventListener("scroll",r,{passive:!0}),s&&e.addEventListener("resize",r)});let h=u&&l?function(e,t){let r,n=null,i=Je(e);function a(){var e;clearTimeout(r),null==(e=n)||e.disconnect(),n=null}return!function s(o,l){void 0===o&&(o=!1),void 0===l&&(l=1),a();let c=e.getBoundingClientRect(),{left:u,top:d,width:h,height:p}=c;if(o||t(),!h||!p)return;let f={rootMargin:-KF(d)+"px "+-KF(i.clientWidth-(u+h))+"px "+-KF(i.clientHeight-(d+p))+"px "+-KF(u)+"px",threshold:KL(0,K_(1,l))||1},A=!0;function g(t){let n=t[0].intersectionRatio;if(n!==l){if(!A)return s();n?s(!1,n):r=setTimeout(()=>{s(!1,1e-7)},1e3)}1!==n||JP(c,e.getBoundingClientRect())||s(),A=!1}try{n=new IntersectionObserver(g,{...f,root:i.ownerDocument})}catch(e){n=new IntersectionObserver(g,f)}n.observe(e)}(!0),a}(u,r):null,p=-1,f=null;o&&(f=new ResizeObserver(e=>{let[n]=e;n&&n.target===u&&f&&(f.unobserve(t),cancelAnimationFrame(p),p=requestAnimationFrame(()=>{var e;null==(e=f)||e.observe(t)})),r()}),u&&!c&&f.observe(u),f.observe(t));let A=c?JC(e):null;return c&&function t(){let n=JC(e);A&&!JP(A,n)&&r(),A=n,i=requestAnimationFrame(t)}(),r(),()=>{var e;d.forEach(e=>{a&&e.removeEventListener("scroll",r),s&&e.removeEventListener("resize",r)}),null==h||h(),null==(e=f)||e.disconnect(),f=null,c&&cancelAnimationFrame(i)}})(...e,{animationFrame:"always"===_}),elements:{reference:F.anchor},middleware:[{...{name:"offset",options:i=r={mainAxis:S+V,alignmentAxis:I},async fn(e){var t,r;let{x:n,y:a,placement:s,middlewareData:o}=e,l=await K5(e,i);return s===(null==(t=o.offset)?void 0:t.placement)&&null!=(r=o.arrow)&&r.alignmentOffset?{}:{x:n+l.x,y:a+l.y,data:{...l,placement:s}}}},options:[r,n]},k&&{...{name:"shift",options:u=l={mainAxis:!0,crossAxis:!1,limiter:"partial"===D?{...(void 0===(o=a)&&(o={}),{options:o,fn(e){let{x:t,y:r,placement:n,rects:i,middlewareData:a}=e,{offset:s=0,mainAxis:l=!0,crossAxis:c=!0}=KU(o,e),u={x:t,y:r},d=KV(n),h=KG(d),p=u[h],f=u[d],A=KU(s,e),g="number"==typeof A?{mainAxis:A,crossAxis:0}:{mainAxis:0,crossAxis:0,...A};if(l){let e="y"===h?"height":"width",t=i.reference[h]-i.floating[e]+g.mainAxis,r=i.reference[h]+i.reference[e]-g.mainAxis;p<t?p=t:p>r&&(p=r)}if(c){var m,v;let e="y"===h?"width":"height",t=K4.has(Kz(n)),r=i.reference[d]-i.floating[e]+(t&&(null==(m=a.offset)?void 0:m[d])||0)+(t?0:g.crossAxis),s=i.reference[d]+i.reference[e]+(t?0:(null==(v=a.offset)?void 0:v[d])||0)-(t?g.crossAxis:0);f<r?f=r:f>s&&(f=s)}return{[h]:p,[d]:f}}}),options:[a,s]}:void 0,...J},async fn(e){let{x:t,y:r,placement:n}=e,{mainAxis:i=!0,crossAxis:a=!1,limiter:s={fn:e=>{let{x:t,y:r}=e;return{x:t,y:r}}},...o}=KU(u,e),l={x:t,y:r},c=await K2(e,o),d=KV(Kz(n)),h=KG(d),p=l[h],f=l[d];if(i){let e="y"===h?"top":"left",t="y"===h?"bottom":"right",r=p+c[e],n=p-c[t];p=KL(r,K_(p,n))}if(a){let e="y"===d?"top":"left",t="y"===d?"bottom":"right",r=f+c[e],n=f-c[t];f=KL(r,K_(f,n))}let A=s.fn({...e,[h]:p,[d]:f});return{...A,data:{x:A.x-t,y:A.y-r,enabled:{[h]:i,[d]:a}}}}},options:[l,c]},k&&{...{name:"flip",options:p=d={...J},async fn(e){var t,r,n,i,a,s,o,l;let c,u,d,{placement:h,middlewareData:f,rects:A,initialPlacement:g,platform:m,elements:v}=e,{mainAxis:b=!0,crossAxis:y=!0,fallbackPlacements:w,fallbackStrategy:x="bestFit",fallbackAxisSideDirection:C="none",flipAlignment:E=!0,...S}=KU(p,e);if(null!=(t=f.arrow)&&t.alignmentOffset)return{};let M=Kz(h),I=KV(g),B=Kz(g)===g,k=await (null==m.isRTL?void 0:m.isRTL(v.floating)),T=w||(B||!E?[KX(g)]:(c=KX(g),[KW(g),c,KW(c)])),R="none"!==C;!w&&R&&T.push(...(u=Kj(g),d=function(e,t,r){switch(e){case"top":case"bottom":if(r)return t?KK:Kq;return t?Kq:KK;case"left":case"right":return t?KJ:KY;default:return[]}}(Kz(g),"start"===C,k),u&&(d=d.map(e=>e+"-"+u),E&&(d=d.concat(d.map(KW)))),d));let D=[g,...T],P=await K2(e,S),_=[],L=(null==(r=f.flip)?void 0:r.overflows)||[];if(b&&_.push(P[M]),y){let e,t,r,n,i=(s=h,o=A,void 0===(l=k)&&(l=!1),e=Kj(s),r=KH(t=KG(KV(s))),n="x"===t?e===(l?"end":"start")?"right":"left":"start"===e?"bottom":"top",o.reference[r]>o.floating[r]&&(n=KX(n)),[n,KX(n)]);_.push(P[i[0]],P[i[1]])}if(L=[...L,{placement:h,overflows:_}],!_.every(e=>e<=0)){let e=((null==(n=f.flip)?void 0:n.index)||0)+1,t=D[e];if(t&&("alignment"!==y||I===KV(t)||L.every(e=>KV(e.placement)!==I||e.overflows[0]>0)))return{data:{index:e,overflows:L},reset:{placement:t}};let r=null==(i=L.filter(e=>e.overflows[0]<=0).sort((e,t)=>e.overflows[1]-t.overflows[1])[0])?void 0:i.placement;if(!r)switch(x){case"bestFit":{let e=null==(a=L.filter(e=>{if(R){let t=KV(e.placement);return t===I||"y"===t}return!0}).map(e=>[e.placement,e.overflows.filter(e=>e>0).reduce((e,t)=>e+t,0)]).sort((e,t)=>e[1]-t[1])[0])?void 0:a[0];e&&(r=e);break}case"initialPlacement":r=g}if(h!==r)return{reset:{placement:r}}}return{}}},options:[d,h]},{...{name:"size",options:g=f={...J,apply:({elements:e,rects:t,availableWidth:r,availableHeight:n})=>{let{width:i,height:a}=t.reference,s=e.floating.style;s.setProperty("--radix-popper-available-width",`${r}px`),s.setProperty("--radix-popper-available-height",`${n}px`),s.setProperty("--radix-popper-anchor-width",`${i}px`),s.setProperty("--radix-popper-anchor-height",`${a}px`)}},async fn(e){var t,r;let n,i,{placement:a,rects:s,platform:o,elements:l}=e,{apply:c=()=>{},...u}=KU(g,e),d=await K2(e,u),h=Kz(a),p=Kj(a),f="y"===KV(a),{width:A,height:m}=s.floating;"top"===h||"bottom"===h?(n=h,i=p===(await (null==o.isRTL?void 0:o.isRTL(l.floating))?"start":"end")?"left":"right"):(i=h,n="end"===p?"top":"bottom");let v=m-d.top-d.bottom,b=A-d.left-d.right,y=K_(m-d[n],v),w=K_(A-d[i],b),x=!e.middlewareData.shift,C=y,E=w;if(null!=(t=e.middlewareData.shift)&&t.enabled.x&&(E=b),null!=(r=e.middlewareData.shift)&&r.enabled.y&&(C=v),x&&!p){let e=KL(d.left,0),t=KL(d.right,0),r=KL(d.top,0),n=KL(d.bottom,0);f?E=A-2*(0!==e||0!==t?e+t:KL(d.left,d.right)):C=m-2*(0!==r||0!==n?r+n:KL(d.top,d.bottom))}await c({...e,availableWidth:E,availableHeight:C});let S=await o.getDimensions(l.floating);return A!==S.width||m!==S.height?{reset:{rects:!0}}:{}}},options:[f,A]},z&&{...{name:"arrow",options:b=m={element:z,padding:B},fn(e){let{element:t,padding:r}="function"==typeof b?b(e):b;return t&&({}).hasOwnProperty.call(t,"current")?null!=t.current?J_({element:t.current,padding:r}).fn(e):{}:t?J_({element:t,padding:r}).fn(e):{}}},options:[m,v]},J3({arrowWidth:H,arrowHeight:V}),P&&{...{name:"hide",options:x=y={strategy:"referenceHidden",...J},async fn(e){let{rects:t}=e,{strategy:r="referenceHidden",...n}=KU(x,e);switch(r){case"referenceHidden":{let r=K3(await K2(e,{...n,elementContext:"reference"}),t.reference);return{data:{referenceHiddenOffsets:r,referenceHidden:K9(r)}}}case"escaped":{let r=K3(await K2(e,{...n,altBoundary:!0}),t.floating);return{data:{escapedOffsets:r,escaped:K9(r)}}}default:return{}}}},options:[y,w]}]}),[et,er]=J9(Z),en=Kp(L);Ka(()=>{$&&en?.()},[$,en]);let ei=ee.arrow?.x,ea=ee.arrow?.y,es=ee.arrow?.centerOffset!==0,[eo,el]=rx.useState();return Ka(()=>{O&&el(window.getComputedStyle(O).zIndex)},[O]),(0,rE.jsx)("div",{ref:Y.setFloating,"data-radix-popper-content-wrapper":"",style:{...X,transform:$?X.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:eo,"--radix-popper-transform-origin":[ee.transformOrigin?.x,ee.transformOrigin?.y].join(" "),...ee.hide?.referenceHidden&&{visibility:"hidden",pointerEvents:"none"}},dir:e.dir,children:(0,rE.jsx)(JY,{scope:C,placedSide:et,onArrowChange:j,arrowX:ei,arrowY:ea,shouldHideArrow:es,children:(0,rE.jsx)(Kl.div,{"data-side":et,"data-align":er,...N,ref:U,style:{...N.style,animation:$?void 0:"none"}})})})});JZ.displayName=JJ;var J$="PopperArrow",J0={top:"bottom",right:"left",bottom:"top",left:"right"},J1=rx.forwardRef(function(e,t){let{__scopePopper:r,...n}=e,i=JX(J$,r),a=J0[i.placedSide];return(0,rE.jsx)("span",{ref:i.onArrowChange,style:{position:"absolute",left:i.arrowX,top:i.arrowY,[a]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[i.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[i.placedSide],visibility:i.shouldHideArrow?"hidden":void 0},children:(0,rE.jsx)(JU,{...n,ref:t,style:{...n.style,display:"block"}})})});function J2(e){return null!==e}J1.displayName=J$;var J3=e=>({name:"transformOrigin",options:e,fn(t){let{placement:r,rects:n,middlewareData:i}=t,a=i.arrow?.centerOffset!==0,s=a?0:e.arrowWidth,o=a?0:e.arrowHeight,[l,c]=J9(r),u={start:"0%",center:"50%",end:"100%"}[c],d=(i.arrow?.x??0)+s/2,h=(i.arrow?.y??0)+o/2,p="",f="";return"bottom"===l?(p=a?u:`${d}px`,f=`${-o}px`):"top"===l?(p=a?u:`${d}px`,f=`${n.floating.height+o}px`):"right"===l?(p=`${-o}px`,f=a?u:`${h}px`):"left"===l&&(p=`${n.floating.width+o}px`,f=a?u:`${h}px`),{data:{x:p,y:f}}}});function J9(e){let[t,r="center"]=e.split("-");return[t,r]}var J4=rx.forwardRef((e,t)=>{let{container:r,...n}=e,[i,a]=rx.useState(!1);Ka(()=>a(!0),[]);let s=r||i&&globalThis?.document?.body;return s?am.createPortal((0,rE.jsx)(Kl.div,{...n,ref:t}),s):null});J4.displayName="Portal";var J5=e=>{var t;let r,n,{present:i,children:a}=e,s=function(e){var t,r;let[n,i]=rx.useState(),a=rx.useRef(null),s=rx.useRef(e),o=rx.useRef("none"),[l,c]=(t=e?"mounted":"unmounted",r={mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}},rx.useReducer((e,t)=>r[e][t]??e,t));return rx.useEffect(()=>{let e=J8(a.current);o.current="mounted"===l?e:"none"},[l]),Ka(()=>{let t=a.current,r=s.current;if(r!==e){let n=o.current,i=J8(t);e?c("MOUNT"):"none"===i||t?.display==="none"?c("UNMOUNT"):r&&n!==i?c("ANIMATION_OUT"):c("UNMOUNT"),s.current=e}},[e,c]),Ka(()=>{if(n){let e,t=n.ownerDocument.defaultView??window,r=r=>{let i=J8(a.current).includes(CSS.escape(r.animationName));if(r.target===n&&i&&(c("ANIMATION_END"),!s.current)){let r=n.style.animationFillMode;n.style.animationFillMode="forwards",e=t.setTimeout(()=>{"forwards"===n.style.animationFillMode&&(n.style.animationFillMode=r)})}},i=e=>{e.target===n&&(o.current=J8(a.current))};return n.addEventListener("animationstart",i),n.addEventListener("animationcancel",r),n.addEventListener("animationend",r),()=>{t.clearTimeout(e),n.removeEventListener("animationstart",i),n.removeEventListener("animationcancel",r),n.removeEventListener("animationend",r)}}c("ANIMATION_END")},[n,c]),{isPresent:["mounted","unmountSuspended"].includes(l),ref:rx.useCallback(e=>{a.current=e?getComputedStyle(e):null,i(e)},[])}}(i),o="function"==typeof a?a({present:s.isPresent}):rx.Children.only(a),l=Kn(s.ref,(t=o,(n=(r=Object.getOwnPropertyDescriptor(t.props,"ref")?.get)&&"isReactWarning"in r&&r.isReactWarning)?t.ref:(n=(r=Object.getOwnPropertyDescriptor(t,"ref")?.get)&&"isReactWarning"in r&&r.isReactWarning)?t.props.ref:t.props.ref||t.ref));return"function"==typeof a||s.isPresent?rx.cloneElement(o,{ref:l}):null};function J8(e){return e?.animationName||"none"}J5.displayName="Presence";var J6="rovingFocusGroup.onEntryFocus",J7={bubbles:!1,cancelable:!0},Ye="RovingFocusGroup",[Yt,Yr,Yn]=Ku(Ye),[Yi,Ya]=Ki(Ye,[Yn]),[Ys,Yo]=Yi(Ye),Yl=rx.forwardRef((e,t)=>(0,rE.jsx)(Yt.Provider,{scope:e.__scopeRovingFocusGroup,children:(0,rE.jsx)(Yt.Slot,{scope:e.__scopeRovingFocusGroup,children:(0,rE.jsx)(Yc,{...e,ref:t})})}));Yl.displayName=Ye;var Yc=rx.forwardRef((e,t)=>{let{__scopeRovingFocusGroup:r,orientation:n,loop:i=!1,dir:a,currentTabStopId:s,defaultCurrentTabStopId:o,onCurrentTabStopIdChange:l,onEntryFocus:c,preventScrollOnEntryFocus:u=!1,...d}=e,h=rx.useRef(null),p=Kn(t,h),f=Kh(a),[A,g]=Ko({prop:s,defaultProp:o??null,onChange:l,caller:Ye}),[m,v]=rx.useState(!1),b=Kp(c),y=Yr(r),w=rx.useRef(!1),[x,C]=rx.useState(0);return rx.useEffect(()=>{let e=h.current;if(e)return e.addEventListener(J6,b),()=>e.removeEventListener(J6,b)},[b]),(0,rE.jsx)(Ys,{scope:r,orientation:n,dir:f,loop:i,currentTabStopId:A,onItemFocus:rx.useCallback(e=>g(e),[g]),onItemShiftTab:rx.useCallback(()=>v(!0),[]),onFocusableItemAdd:rx.useCallback(()=>C(e=>e+1),[]),onFocusableItemRemove:rx.useCallback(()=>C(e=>e-1),[]),children:(0,rE.jsx)(Kl.div,{tabIndex:m||0===x?-1:0,"data-orientation":n,...d,ref:p,style:{outline:"none",...e.style},onMouseDown:Ke(e.onMouseDown,()=>{w.current=!0}),onFocus:Ke(e.onFocus,e=>{let t=!w.current;if(e.target===e.currentTarget&&t&&!m){let t=new CustomEvent(J6,J7);if(e.currentTarget.dispatchEvent(t),!t.defaultPrevented){let e=y().filter(e=>e.focusable);Yp([e.find(e=>e.active),e.find(e=>e.id===A),...e].filter(Boolean).map(e=>e.ref.current),u)}}w.current=!1}),onBlur:Ke(e.onBlur,()=>v(!1))})})}),Yu="RovingFocusGroupItem",Yd=rx.forwardRef((e,t)=>{let{__scopeRovingFocusGroup:r,focusable:n=!0,active:i=!1,tabStopId:a,children:s,...o}=e,l=KD(),c=a||l,u=Yo(Yu,r),d=u.currentTabStopId===c,h=Yr(r),{onFocusableItemAdd:p,onFocusableItemRemove:f,currentTabStopId:A}=u;return rx.useEffect(()=>{if(n)return p(),()=>f()},[n,p,f]),(0,rE.jsx)(Yt.ItemSlot,{scope:r,id:c,focusable:n,active:i,children:(0,rE.jsx)(Kl.span,{tabIndex:d?0:-1,"data-orientation":u.orientation,...o,ref:t,onMouseDown:Ke(e.onMouseDown,e=>{n?u.onItemFocus(c):e.preventDefault()}),onFocus:Ke(e.onFocus,()=>u.onItemFocus(c)),onKeyDown:Ke(e.onKeyDown,e=>{if("Tab"===e.key&&e.shiftKey)return void u.onItemShiftTab();if(e.target!==e.currentTarget)return;let t=function(e,t,r){var n;let i=(n=e.key,"rtl"!==r?n:"ArrowLeft"===n?"ArrowRight":"ArrowRight"===n?"ArrowLeft":n);if(!("vertical"===t&&["ArrowLeft","ArrowRight"].includes(i))&&!("horizontal"===t&&["ArrowUp","ArrowDown"].includes(i)))return Yh[i]}(e,u.orientation,u.dir);if(void 0!==t){if(e.metaKey||e.ctrlKey||e.altKey||e.shiftKey)return;e.preventDefault();let i=h().filter(e=>e.focusable).map(e=>e.ref.current);if("last"===t)i.reverse();else if("prev"===t||"next"===t){var r,n;"prev"===t&&i.reverse();let a=i.indexOf(e.currentTarget);i=u.loop?(r=i,n=a+1,r.map((e,t)=>r[(n+t)%r.length])):i.slice(a+1)}setTimeout(()=>Yp(i))}}),children:"function"==typeof s?s({isCurrentTabStop:d,hasTabStop:null!=A}):s})})});Yd.displayName=Yu;var Yh={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function Yp(e,t=!1){let r=document.activeElement;for(let n of e)if(n===r||(n.focus({preventScroll:t}),document.activeElement!==r))return}var Yf=new WeakMap,YA=new WeakMap,Yg={},Ym=0,Yv=function(e){return e&&(e.host||Yv(e.parentNode))},Yb=function(e,t,r,n){var i=(Array.isArray(e)?e:[e]).map(function(e){if(t.contains(e))return e;var r=Yv(e);return r&&t.contains(r)?r:(console.error("aria-hidden",e,"in not contained inside",t,". Doing nothing"),null)}).filter(function(e){return!!e});Yg[r]||(Yg[r]=new WeakMap);var a=Yg[r],s=[],o=new Set,l=new Set(i),c=function(e){!e||o.has(e)||(o.add(e),c(e.parentNode))};i.forEach(c);var u=function(e){!e||l.has(e)||Array.prototype.forEach.call(e.children,function(e){if(o.has(e))u(e);else try{var t=e.getAttribute(n),i=null!==t&&"false"!==t,l=(Yf.get(e)||0)+1,c=(a.get(e)||0)+1;Yf.set(e,l),a.set(e,c),s.push(e),1===l&&i&&YA.set(e,!0),1===c&&e.setAttribute(r,"true"),i||e.setAttribute(n,"true")}catch(t){console.error("aria-hidden: cannot operate on ",e,t)}})};return u(t),o.clear(),Ym++,function(){s.forEach(function(e){var t=Yf.get(e)-1,i=a.get(e)-1;Yf.set(e,t),a.set(e,i),t||(YA.has(e)||e.removeAttribute(n),YA.delete(e)),i||e.removeAttribute(r)}),--Ym||(Yf=new WeakMap,Yf=new WeakMap,YA=new WeakMap,Yg={})}},Yy=function(e,t,r){void 0===r&&(r="data-aria-hidden");var n=Array.from(Array.isArray(e)?e:[e]),i=t||("u"<typeof document?null:(Array.isArray(e)?e[0]:e).ownerDocument.body);return i?(n.push.apply(n,Array.from(i.querySelectorAll("[aria-live], script"))),Yb(n,i,r,"aria-hidden")):function(){return null}},Yw=function(){return(Yw=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var i in t=arguments[r])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e}).apply(this,arguments)};function Yx(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&0>t.indexOf(n)&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var i=0,n=Object.getOwnPropertySymbols(e);i<n.length;i++)0>t.indexOf(n[i])&&Object.prototype.propertyIsEnumerable.call(e,n[i])&&(r[n[i]]=e[n[i]]);return r}var YC="right-scroll-bar-position",YE="width-before-scroll-bar";function YS(e,t){return"function"==typeof e?e(t):e&&(e.current=t),e}var YM="u">typeof window?rx.useLayoutEffect:rx.useEffect,YI=new WeakMap,YB=(void 0===eG&&(eG={}),(void 0===eH&&(eH=function(e){return e}),eV=[],eW=!1,eq={read:function(){if(eW)throw Error("Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.");return eV.length?eV[eV.length-1]:null},useMedium:function(e){var t=eH(e,eW);return eV.push(t),function(){eV=eV.filter(function(e){return e!==t})}},assignSyncMedium:function(e){for(eW=!0;eV.length;){var t=eV;eV=[],t.forEach(e)}eV={push:function(t){return e(t)},filter:function(){return eV}}},assignMedium:function(e){eW=!0;var t=[];if(eV.length){var r=eV;eV=[],r.forEach(e),t=eV}var n=function(){var r=t;t=[],r.forEach(e)},i=function(){return Promise.resolve().then(n)};i(),eV={push:function(e){t.push(e),i()},filter:function(e){return t=t.filter(e),eV}}}}).options=Yw({async:!0,ssr:!1},eG),eq),Yk=function(){},YT=rx.forwardRef(function(e,t){var r,n,i,a,s=rx.useRef(null),o=rx.useState({onScrollCapture:Yk,onWheelCapture:Yk,onTouchMoveCapture:Yk}),l=o[0],c=o[1],u=e.forwardProps,d=e.children,h=e.className,p=e.removeScrollBar,f=e.enabled,A=e.shards,g=e.sideCar,m=e.noRelative,v=e.noIsolation,b=e.inert,y=e.allowPinchZoom,w=e.as,x=e.gapMode,C=Yx(e,["forwardProps","children","className","removeScrollBar","enabled","shards","sideCar","noRelative","noIsolation","inert","allowPinchZoom","as","gapMode"]),E=(r=[s,t],n=function(e){return r.forEach(function(t){return YS(t,e)})},(i=(0,rx.useState)(function(){return{value:null,callback:n,facade:{get current(){return i.value},set current(value){var e=i.value;e!==value&&(i.value=value,i.callback(value,e))}}}})[0]).callback=n,a=i.facade,YM(function(){var e=YI.get(a);if(e){var t=new Set(e),n=new Set(r),i=a.current;t.forEach(function(e){n.has(e)||YS(e,null)}),n.forEach(function(e){t.has(e)||YS(e,i)})}YI.set(a,r)},[r]),a),S=Yw(Yw({},C),l);return rx.createElement(rx.Fragment,null,f&&rx.createElement(g,{sideCar:YB,removeScrollBar:p,shards:A,noRelative:m,noIsolation:v,inert:b,setCallbacks:c,allowPinchZoom:!!y,lockRef:s,gapMode:x}),u?rx.cloneElement(rx.Children.only(d),Yw(Yw({},S),{ref:E})):rx.createElement(void 0===w?"div":w,Yw({},S,{className:h,ref:E}),d))});YT.defaultProps={enabled:!0,removeScrollBar:!0,inert:!1},YT.classNames={fullWidth:YE,zeroRight:YC};var YR=function(e){var t=e.sideCar,r=Yx(e,["sideCar"]);if(!t)throw Error("Sidecar: please provide `sideCar` property to import the right car");var n=t.read();if(!n)throw Error("Sidecar medium not found");return rx.createElement(n,Yw({},r))};YR.isSideCarExport=!0;var YD=function(){var e=0,t=null;return{add:function(r){if(0==e&&(t=function(){if(!document)return null;var e=document.createElement("style");e.type="text/css";var t=tD||VE.nc;return t&&e.setAttribute("nonce",t),e}())){var n,i;(n=t).styleSheet?n.styleSheet.cssText=r:n.appendChild(document.createTextNode(r)),i=t,(document.head||document.getElementsByTagName("head")[0]).appendChild(i)}e++},remove:function(){--e||!t||(t.parentNode&&t.parentNode.removeChild(t),t=null)}}},YP=function(){var e=YD();return function(t,r){rx.useEffect(function(){return e.add(t),function(){e.remove()}},[t&&r])}},Y_=function(){var e=YP();return function(t){return e(t.styles,t.dynamic),null}},YL={left:0,top:0,right:0,gap:0},YN=function(e){return parseInt(e||"",10)||0},YF=function(e){var t=window.getComputedStyle(document.body),r=t["padding"===e?"paddingLeft":"marginLeft"],n=t["padding"===e?"paddingTop":"marginTop"],i=t["padding"===e?"paddingRight":"marginRight"];return[YN(r),YN(n),YN(i)]},YO=function(e){if(void 0===e&&(e="margin"),"u"<typeof window)return YL;var t=YF(e),r=document.documentElement.clientWidth,n=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,n-r+t[2]-t[0])}},YQ=Y_(),YU="data-scroll-locked",Yz=function(e,t,r,n){var i=e.left,a=e.top,s=e.right,o=e.gap;return void 0===r&&(r="margin"),"\n .".concat("with-scroll-bars-hidden"," {\n overflow: hidden ").concat(n,";\n padding-right: ").concat(o,"px ").concat(n,";\n }\n body[").concat(YU,"] {\n overflow: hidden ").concat(n,";\n overscroll-behavior: contain;\n ").concat([t&&"position: relative ".concat(n,";"),"margin"===r&&"\n padding-left: ".concat(i,"px;\n padding-top: ").concat(a,"px;\n padding-right: ").concat(s,"px;\n margin-left:0;\n margin-top:0;\n margin-right: ").concat(o,"px ").concat(n,";\n "),"padding"===r&&"padding-right: ".concat(o,"px ").concat(n,";")].filter(Boolean).join(""),"\n }\n \n .").concat(YC," {\n right: ").concat(o,"px ").concat(n,";\n }\n \n .").concat(YE," {\n margin-right: ").concat(o,"px ").concat(n,";\n }\n \n .").concat(YC," .").concat(YC," {\n right: 0 ").concat(n,";\n }\n \n .").concat(YE," .").concat(YE," {\n margin-right: 0 ").concat(n,";\n }\n \n body[").concat(YU,"] {\n ").concat("--removed-body-scroll-bar-size",": ").concat(o,"px;\n }\n")},Yj=function(){var e=parseInt(document.body.getAttribute(YU)||"0",10);return isFinite(e)?e:0},YG=function(){rx.useEffect(function(){return document.body.setAttribute(YU,(Yj()+1).toString()),function(){var e=Yj()-1;e<=0?document.body.removeAttribute(YU):document.body.setAttribute(YU,e.toString())}},[])},YH=function(e){var t=e.noRelative,r=e.noImportant,n=e.gapMode,i=void 0===n?"margin":n;YG();var a=rx.useMemo(function(){return YO(i)},[i]);return rx.createElement(YQ,{styles:Yz(a,!t,i,r?"":"!important")})},YV=!1;if("u">typeof window)try{var YW=Object.defineProperty({},"passive",{get:function(){return YV=!0,!0}});window.addEventListener("test",YW,YW),window.removeEventListener("test",YW,YW)}catch(e){YV=!1}var Yq=!!YV&&{passive:!1},YK=function(e,t){if(!(e instanceof Element))return!1;var r=window.getComputedStyle(e);return"hidden"!==r[t]&&(r.overflowY!==r.overflowX||"TEXTAREA"===e.tagName||"visible"!==r[t])},YJ=function(e,t){var r=t.ownerDocument,n=t;do{if("u">typeof ShadowRoot&&n instanceof ShadowRoot&&(n=n.host),YY(e,n)){var i=YX(e,n);if(i[1]>i[2])return!0}n=n.parentNode}while(n&&n!==r.body);return!1},YY=function(e,t){return"v"===e?YK(t,"overflowY"):YK(t,"overflowX")},YX=function(e,t){return"v"===e?[t.scrollTop,t.scrollHeight,t.clientHeight]:[t.scrollLeft,t.scrollWidth,t.clientWidth]},YZ=function(e,t,r,n,i){var a,s=(a=window.getComputedStyle(t).direction,"h"===e&&"rtl"===a?-1:1),o=s*n,l=r.target,c=t.contains(l),u=!1,d=o>0,h=0,p=0;do{if(!l)break;var f=YX(e,l),A=f[0],g=f[1]-f[2]-s*A;(A||g)&&YY(e,l)&&(h+=g,p+=A);var m=l.parentNode;l=m&&m.nodeType===Node.DOCUMENT_FRAGMENT_NODE?m.host:m}while(!c&&l!==document.body||c&&(t.contains(l)||t===l));return d&&(i&&1>Math.abs(h)||!i&&o>h)?u=!0:!d&&(i&&1>Math.abs(p)||!i&&-o>p)&&(u=!0),u},Y$=function(e){return"changedTouches"in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},Y0=function(e){return[e.deltaX,e.deltaY]},Y1=function(e){return e&&"current"in e?e.current:e},Y2=0,Y3=[];let Y9=(eK=function(e){var t=rx.useRef([]),r=rx.useRef([0,0]),n=rx.useRef(),i=rx.useState(Y2++)[0],a=rx.useState(Y_)[0],s=rx.useRef(e);rx.useEffect(function(){s.current=e},[e]),rx.useEffect(function(){if(e.inert){document.body.classList.add("block-interactivity-".concat(i));var t=(function(e,t,r){if(r||2==arguments.length)for(var n,i=0,a=t.length;i<a;i++)!n&&i in t||(n||(n=Array.prototype.slice.call(t,0,i)),n[i]=t[i]);return e.concat(n||Array.prototype.slice.call(t))})([e.lockRef.current],(e.shards||[]).map(Y1),!0).filter(Boolean);return t.forEach(function(e){return e.classList.add("allow-interactivity-".concat(i))}),function(){document.body.classList.remove("block-interactivity-".concat(i)),t.forEach(function(e){return e.classList.remove("allow-interactivity-".concat(i))})}}},[e.inert,e.lockRef.current,e.shards]);var o=rx.useCallback(function(e,t){if("touches"in e&&2===e.touches.length||"wheel"===e.type&&e.ctrlKey)return!s.current.allowPinchZoom;var i,a=Y$(e),o=r.current,l="deltaX"in e?e.deltaX:o[0]-a[0],c="deltaY"in e?e.deltaY:o[1]-a[1],u=e.target,d=Math.abs(l)>Math.abs(c)?"h":"v";if("touches"in e&&"h"===d&&"range"===u.type)return!1;var h=window.getSelection(),p=h&&h.anchorNode;if(p&&(p===u||p.contains(u)))return!1;var f=YJ(d,u);if(!f)return!0;if(f?i=d:(i="v"===d?"h":"v",f=YJ(d,u)),!f)return!1;if(!n.current&&"changedTouches"in e&&(l||c)&&(n.current=i),!i)return!0;var A=n.current||i;return YZ(A,t,e,"h"===A?l:c,!0)},[]),l=rx.useCallback(function(e){if(Y3.length&&Y3[Y3.length-1]===a){var r="deltaY"in e?Y0(e):Y$(e),n=t.current.filter(function(t){var n;return t.name===e.type&&(t.target===e.target||e.target===t.shadowParent)&&(n=t.delta,n[0]===r[0]&&n[1]===r[1])})[0];if(n&&n.should){e.cancelable&&e.preventDefault();return}if(!n){var i=(s.current.shards||[]).map(Y1).filter(Boolean).filter(function(t){return t.contains(e.target)});(i.length>0?o(e,i[0]):!s.current.noIsolation)&&e.cancelable&&e.preventDefault()}}},[]),c=rx.useCallback(function(e,r,n,i){var a={name:e,delta:r,target:n,should:i,shadowParent:function(e){for(var t=null;null!==e;)e instanceof ShadowRoot&&(t=e.host,e=e.host),e=e.parentNode;return t}(n)};t.current.push(a),setTimeout(function(){t.current=t.current.filter(function(e){return e!==a})},1)},[]),u=rx.useCallback(function(e){r.current=Y$(e),n.current=void 0},[]),d=rx.useCallback(function(t){c(t.type,Y0(t),t.target,o(t,e.lockRef.current))},[]),h=rx.useCallback(function(t){c(t.type,Y$(t),t.target,o(t,e.lockRef.current))},[]);rx.useEffect(function(){return Y3.push(a),e.setCallbacks({onScrollCapture:d,onWheelCapture:d,onTouchMoveCapture:h}),document.addEventListener("wheel",l,Yq),document.addEventListener("touchmove",l,Yq),document.addEventListener("touchstart",u,Yq),function(){Y3=Y3.filter(function(e){return e!==a}),document.removeEventListener("wheel",l,Yq),document.removeEventListener("touchmove",l,Yq),document.removeEventListener("touchstart",u,Yq)}},[]);var p=e.removeScrollBar,f=e.inert;return rx.createElement(rx.Fragment,null,f?rx.createElement(a,{styles:"\n .block-interactivity-".concat(i," {pointer-events: none;}\n .allow-interactivity-").concat(i," {pointer-events: all;}\n")}):null,p?rx.createElement(YH,{noRelative:e.noRelative,gapMode:e.gapMode}):null)},YB.useMedium(eK),YR);var Y4=rx.forwardRef(function(e,t){return rx.createElement(YT,Yw({},e,{ref:t,sideCar:Y9}))});Y4.classNames=YT.classNames;var Y5=["Enter"," "],Y8=["ArrowUp","PageDown","End"],Y6=["ArrowDown","PageUp","Home",...Y8],Y7={ltr:[...Y5,"ArrowRight"],rtl:[...Y5,"ArrowLeft"]},Xe={ltr:["ArrowLeft"],rtl:["ArrowRight"]},Xt="Menu",[Xr,Xn,Xi]=Ku(Xt),[Xa,Xs]=Ki(Xt,[Xi,JG,Ya]),Xo=JG(),Xl=Ya(),[Xc,Xu]=Xa(Xt),[Xd,Xh]=Xa(Xt),Xp=e=>{let{__scopeMenu:t,open:r=!1,children:n,dir:i,onOpenChange:a,modal:s=!0}=e,o=Xo(t),[l,c]=rx.useState(null),u=rx.useRef(!1),d=Kp(a),h=Kh(i);return rx.useEffect(()=>{let e=()=>{u.current=!0,document.addEventListener("pointerdown",t,{capture:!0,once:!0}),document.addEventListener("pointermove",t,{capture:!0,once:!0})},t=()=>u.current=!1;return document.addEventListener("keydown",e,{capture:!0}),()=>{document.removeEventListener("keydown",e,{capture:!0}),document.removeEventListener("pointerdown",t,{capture:!0}),document.removeEventListener("pointermove",t,{capture:!0})}},[]),(0,rE.jsx)(JW,{...o,children:(0,rE.jsx)(Xc,{scope:t,open:r,onOpenChange:d,content:l,onContentChange:c,children:(0,rE.jsx)(Xd,{scope:t,onClose:rx.useCallback(()=>d(!1),[d]),isUsingKeyboardRef:u,dir:h,modal:s,children:n})})})};Xp.displayName=Xt;var Xf=rx.forwardRef((e,t)=>{let{__scopeMenu:r,...n}=e,i=Xo(r);return(0,rE.jsx)(JK,{...i,...n,ref:t})});Xf.displayName="MenuAnchor";var XA="MenuPortal",[Xg,Xm]=Xa(XA,{forceMount:void 0}),Xv=e=>{let{__scopeMenu:t,forceMount:r,children:n,container:i}=e,a=Xu(XA,t);return(0,rE.jsx)(Xg,{scope:t,forceMount:r,children:(0,rE.jsx)(J5,{present:r||a.open,children:(0,rE.jsx)(J4,{asChild:!0,container:i,children:n})})})};Xv.displayName=XA;var Xb="MenuContent",[Xy,Xw]=Xa(Xb),Xx=rx.forwardRef((e,t)=>{let r=Xm(Xb,e.__scopeMenu),{forceMount:n=r.forceMount,...i}=e,a=Xu(Xb,e.__scopeMenu),s=Xh(Xb,e.__scopeMenu);return(0,rE.jsx)(Xr.Provider,{scope:e.__scopeMenu,children:(0,rE.jsx)(J5,{present:n||a.open,children:(0,rE.jsx)(Xr.Slot,{scope:e.__scopeMenu,children:s.modal?(0,rE.jsx)(XC,{...i,ref:t}):(0,rE.jsx)(XE,{...i,ref:t})})})})}),XC=rx.forwardRef((e,t)=>{let r=Xu(Xb,e.__scopeMenu),n=rx.useRef(null),i=Kn(t,n);return rx.useEffect(()=>{let e=n.current;if(e)return Yy(e)},[]),(0,rE.jsx)(XM,{...e,ref:i,trapFocus:r.open,disableOutsidePointerEvents:r.open,disableOutsideScroll:!0,onFocusOutside:Ke(e.onFocusOutside,e=>e.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>r.onOpenChange(!1)})}),XE=rx.forwardRef((e,t)=>{let r=Xu(Xb,e.__scopeMenu);return(0,rE.jsx)(XM,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>r.onOpenChange(!1)})}),XS=ov("MenuContent.ScrollLock"),XM=rx.forwardRef((e,t)=>{let{__scopeMenu:r,loop:n=!1,trapFocus:i,onOpenAutoFocus:a,onCloseAutoFocus:s,disableOutsidePointerEvents:o,onEntryFocus:l,onEscapeKeyDown:c,onPointerDownOutside:u,onFocusOutside:d,onInteractOutside:h,onDismiss:p,disableOutsideScroll:f,...A}=e,g=Xu(Xb,r),m=Xh(Xb,r),v=Xo(r),b=Xl(r),y=Xn(r),[w,x]=rx.useState(null),C=rx.useRef(null),E=Kn(t,C,g.onContentChange),S=rx.useRef(0),M=rx.useRef(""),I=rx.useRef(0),B=rx.useRef(null),k=rx.useRef("right"),T=rx.useRef(0),R=f?Y4:rx.Fragment;rx.useEffect(()=>()=>window.clearTimeout(S.current),[]),rx.useEffect(()=>{let e=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",e[0]??Ky()),document.body.insertAdjacentElement("beforeend",e[1]??Ky()),Kb++,()=>{1===Kb&&document.querySelectorAll("[data-radix-focus-guard]").forEach(e=>e.remove()),Kb--}},[]);let D=rx.useCallback(e=>{var t,r;return k.current===B.current?.side&&(t=e,!!(r=B.current?.area)&&function(e,t){let{x:r,y:n}=e,i=!1;for(let e=0,a=t.length-1;e<t.length;a=e++){let s=t[e],o=t[a],l=s.x,c=s.y,u=o.x,d=o.y;c>n!=d>n&&r<(u-l)*(n-c)/(d-c)+l&&(i=!i)}return i}({x:t.clientX,y:t.clientY},r))},[]);return(0,rE.jsx)(Xy,{scope:r,searchRef:M,onItemEnter:rx.useCallback(e=>{D(e)&&e.preventDefault()},[D]),onItemLeave:rx.useCallback(e=>{D(e)||(C.current?.focus(),x(null))},[D]),onTriggerLeave:rx.useCallback(e=>{D(e)&&e.preventDefault()},[D]),pointerGraceTimerRef:I,onPointerGraceIntentChange:rx.useCallback(e=>{B.current=e},[]),children:(0,rE.jsx)(R,{...f?{as:XS,allowPinchZoom:!0}:void 0,children:(0,rE.jsx)(KE,{asChild:!0,trapped:i,onMountAutoFocus:Ke(a,e=>{e.preventDefault(),C.current?.focus({preventScroll:!0})}),onUnmountAutoFocus:s,children:(0,rE.jsx)(Kg,{asChild:!0,disableOutsidePointerEvents:o,onEscapeKeyDown:c,onPointerDownOutside:u,onFocusOutside:d,onInteractOutside:h,onDismiss:p,children:(0,rE.jsx)(Yl,{asChild:!0,...b,dir:m.dir,orientation:"vertical",loop:n,currentTabStopId:w,onCurrentTabStopIdChange:x,onEntryFocus:Ke(l,e=>{m.isUsingKeyboardRef.current||e.preventDefault()}),preventScrollOnEntryFocus:!0,children:(0,rE.jsx)(JZ,{role:"menu","aria-orientation":"vertical","data-state":XZ(g.open),"data-radix-menu-content":"",dir:m.dir,...v,...A,ref:E,style:{outline:"none",...A.style},onKeyDown:Ke(A.onKeyDown,e=>{let t=e.target.closest("[data-radix-menu-content]")===e.currentTarget,r=e.ctrlKey||e.altKey||e.metaKey,n=1===e.key.length;if(t){var i;let t,a,s,o,l,c;"Tab"===e.key&&e.preventDefault(),!r&&n&&(i=e.key,t=M.current+i,a=y().filter(e=>!e.disabled),s=document.activeElement,o=a.find(e=>e.ref.current===s)?.textValue,l=function(e,t,r){var n;let i=t.length>1&&Array.from(t).every(e=>e===t[0])?t[0]:t,a=r?e.indexOf(r):-1,s=(n=Math.max(a,0),e.map((t,r)=>e[(n+r)%e.length]));1===i.length&&(s=s.filter(e=>e!==r));let o=s.find(e=>e.toLowerCase().startsWith(i.toLowerCase()));return o!==r?o:void 0}(a.map(e=>e.textValue),t,o),c=a.find(e=>e.textValue===l)?.ref.current,function e(t){M.current=t,window.clearTimeout(S.current),""!==t&&(S.current=window.setTimeout(()=>e(""),1e3))}(t),c&&setTimeout(()=>c.focus()))}let a=C.current;if(e.target!==a||!Y6.includes(e.key))return;e.preventDefault();let s=y().filter(e=>!e.disabled).map(e=>e.ref.current);Y8.includes(e.key)&&s.reverse(),function(e){let t=document.activeElement;for(let r of e)if(r===t||(r.focus(),document.activeElement!==t))return}(s)}),onBlur:Ke(e.onBlur,e=>{e.currentTarget.contains(e.target)||(window.clearTimeout(S.current),M.current="")}),onPointerMove:Ke(e.onPointerMove,X1(e=>{let t=e.target,r=T.current!==e.clientX;e.currentTarget.contains(t)&&r&&(k.current=e.clientX>T.current?"right":"left",T.current=e.clientX)}))})})})})})})});Xx.displayName=Xb;var XI=rx.forwardRef((e,t)=>{let{__scopeMenu:r,...n}=e;return(0,rE.jsx)(Kl.div,{role:"group",...n,ref:t})});XI.displayName="MenuGroup";var XB=rx.forwardRef((e,t)=>{let{__scopeMenu:r,...n}=e;return(0,rE.jsx)(Kl.div,{...n,ref:t})});XB.displayName="MenuLabel";var Xk="MenuItem",XT="menu.itemSelect",XR=rx.forwardRef((e,t)=>{let{disabled:r=!1,onSelect:n,...i}=e,a=rx.useRef(null),s=Xh(Xk,e.__scopeMenu),o=Xw(Xk,e.__scopeMenu),l=Kn(t,a),c=rx.useRef(!1);return(0,rE.jsx)(XD,{...i,ref:l,disabled:r,onClick:Ke(e.onClick,()=>{let e=a.current;if(!r&&e){let t=new CustomEvent(XT,{bubbles:!0,cancelable:!0});e.addEventListener(XT,e=>n?.(e),{once:!0}),Kc(e,t),t.defaultPrevented?c.current=!1:s.onClose()}}),onPointerDown:t=>{e.onPointerDown?.(t),c.current=!0},onPointerUp:Ke(e.onPointerUp,e=>{c.current||e.currentTarget?.click()}),onKeyDown:Ke(e.onKeyDown,e=>{let t=""!==o.searchRef.current;r||t&&" "===e.key||Y5.includes(e.key)&&(e.currentTarget.click(),e.preventDefault())})})});XR.displayName=Xk;var XD=rx.forwardRef((e,t)=>{let{__scopeMenu:r,disabled:n=!1,textValue:i,...a}=e,s=Xw(Xk,r),o=Xl(r),l=rx.useRef(null),c=Kn(t,l),[u,d]=rx.useState(!1),[h,p]=rx.useState("");return rx.useEffect(()=>{let e=l.current;e&&p((e.textContent??"").trim())},[a.children]),(0,rE.jsx)(Xr.ItemSlot,{scope:r,disabled:n,textValue:i??h,children:(0,rE.jsx)(Yd,{asChild:!0,...o,focusable:!n,children:(0,rE.jsx)(Kl.div,{role:"menuitem","data-highlighted":u?"":void 0,"aria-disabled":n||void 0,"data-disabled":n?"":void 0,...a,ref:c,onPointerMove:Ke(e.onPointerMove,X1(e=>{n?s.onItemLeave(e):(s.onItemEnter(e),e.defaultPrevented||e.currentTarget.focus({preventScroll:!0}))})),onPointerLeave:Ke(e.onPointerLeave,X1(e=>s.onItemLeave(e))),onFocus:Ke(e.onFocus,()=>d(!0)),onBlur:Ke(e.onBlur,()=>d(!1))})})})}),XP=rx.forwardRef((e,t)=>{let{checked:r=!1,onCheckedChange:n,...i}=e;return(0,rE.jsx)(Xz,{scope:e.__scopeMenu,checked:r,children:(0,rE.jsx)(XR,{role:"menuitemcheckbox","aria-checked":X$(r)?"mixed":r,...i,ref:t,"data-state":X0(r),onSelect:Ke(i.onSelect,()=>n?.(!!X$(r)||!r),{checkForDefaultPrevented:!1})})})});XP.displayName="MenuCheckboxItem";var X_="MenuRadioGroup",[XL,XN]=Xa(X_,{value:void 0,onValueChange:()=>{}}),XF=rx.forwardRef((e,t)=>{let{value:r,onValueChange:n,...i}=e,a=Kp(n);return(0,rE.jsx)(XL,{scope:e.__scopeMenu,value:r,onValueChange:a,children:(0,rE.jsx)(XI,{...i,ref:t})})});XF.displayName=X_;var XO="MenuRadioItem",XQ=rx.forwardRef((e,t)=>{let{value:r,...n}=e,i=XN(XO,e.__scopeMenu),a=r===i.value;return(0,rE.jsx)(Xz,{scope:e.__scopeMenu,checked:a,children:(0,rE.jsx)(XR,{role:"menuitemradio","aria-checked":a,...n,ref:t,"data-state":X0(a),onSelect:Ke(n.onSelect,()=>i.onValueChange?.(r),{checkForDefaultPrevented:!1})})})});XQ.displayName=XO;var XU="MenuItemIndicator",[Xz,Xj]=Xa(XU,{checked:!1}),XG=rx.forwardRef((e,t)=>{let{__scopeMenu:r,forceMount:n,...i}=e,a=Xj(XU,r);return(0,rE.jsx)(J5,{present:n||X$(a.checked)||!0===a.checked,children:(0,rE.jsx)(Kl.span,{...i,ref:t,"data-state":X0(a.checked)})})});XG.displayName=XU;var XH=rx.forwardRef((e,t)=>{let{__scopeMenu:r,...n}=e;return(0,rE.jsx)(Kl.div,{role:"separator","aria-orientation":"horizontal",...n,ref:t})});XH.displayName="MenuSeparator";var XV=rx.forwardRef((e,t)=>{let{__scopeMenu:r,...n}=e,i=Xo(r);return(0,rE.jsx)(J1,{...i,...n,ref:t})});XV.displayName="MenuArrow";var[XW,Xq]=Xa("MenuSub"),XK="MenuSubTrigger",XJ=rx.forwardRef((e,t)=>{let r=Xu(XK,e.__scopeMenu),n=Xh(XK,e.__scopeMenu),i=Xq(XK,e.__scopeMenu),a=Xw(XK,e.__scopeMenu),s=rx.useRef(null),{pointerGraceTimerRef:o,onPointerGraceIntentChange:l}=a,c={__scopeMenu:e.__scopeMenu},u=rx.useCallback(()=>{s.current&&window.clearTimeout(s.current),s.current=null},[]);return rx.useEffect(()=>u,[u]),rx.useEffect(()=>{let e=o.current;return()=>{window.clearTimeout(e),l(null)}},[o,l]),(0,rE.jsx)(Xf,{asChild:!0,...c,children:(0,rE.jsx)(XD,{id:i.triggerId,"aria-haspopup":"menu","aria-expanded":r.open,"aria-controls":i.contentId,"data-state":XZ(r.open),...e,ref:Kr(t,i.onTriggerChange),onClick:t=>{e.onClick?.(t),e.disabled||t.defaultPrevented||(t.currentTarget.focus(),r.open||r.onOpenChange(!0))},onPointerMove:Ke(e.onPointerMove,X1(t=>{a.onItemEnter(t),!t.defaultPrevented&&(e.disabled||r.open||s.current||(a.onPointerGraceIntentChange(null),s.current=window.setTimeout(()=>{r.onOpenChange(!0),u()},100)))})),onPointerLeave:Ke(e.onPointerLeave,X1(e=>{u();let t=r.content?.getBoundingClientRect();if(t){let n=r.content?.dataset.side,i="right"===n,s=t[i?"left":"right"],l=t[i?"right":"left"];a.onPointerGraceIntentChange({area:[{x:e.clientX+(i?-5:5),y:e.clientY},{x:s,y:t.top},{x:l,y:t.top},{x:l,y:t.bottom},{x:s,y:t.bottom}],side:n}),window.clearTimeout(o.current),o.current=window.setTimeout(()=>a.onPointerGraceIntentChange(null),300)}else{if(a.onTriggerLeave(e),e.defaultPrevented)return;a.onPointerGraceIntentChange(null)}})),onKeyDown:Ke(e.onKeyDown,t=>{let i=""!==a.searchRef.current;e.disabled||i&&" "===t.key||Y7[n.dir].includes(t.key)&&(r.onOpenChange(!0),r.content?.focus(),t.preventDefault())})})})});XJ.displayName=XK;var XY="MenuSubContent",XX=rx.forwardRef((e,t)=>{let r=Xm(Xb,e.__scopeMenu),{forceMount:n=r.forceMount,...i}=e,a=Xu(Xb,e.__scopeMenu),s=Xh(Xb,e.__scopeMenu),o=Xq(XY,e.__scopeMenu),l=rx.useRef(null),c=Kn(t,l);return(0,rE.jsx)(Xr.Provider,{scope:e.__scopeMenu,children:(0,rE.jsx)(J5,{present:n||a.open,children:(0,rE.jsx)(Xr.Slot,{scope:e.__scopeMenu,children:(0,rE.jsx)(XM,{id:o.contentId,"aria-labelledby":o.triggerId,...i,ref:c,align:"start",side:"rtl"===s.dir?"left":"right",disableOutsidePointerEvents:!1,disableOutsideScroll:!1,trapFocus:!1,onOpenAutoFocus:e=>{s.isUsingKeyboardRef.current&&l.current?.focus(),e.preventDefault()},onCloseAutoFocus:e=>e.preventDefault(),onFocusOutside:Ke(e.onFocusOutside,e=>{e.target!==o.trigger&&a.onOpenChange(!1)}),onEscapeKeyDown:Ke(e.onEscapeKeyDown,e=>{s.onClose(),e.preventDefault()}),onKeyDown:Ke(e.onKeyDown,e=>{let t=e.currentTarget.contains(e.target),r=Xe[s.dir].includes(e.key);t&&r&&(a.onOpenChange(!1),o.trigger?.focus(),e.preventDefault())})})})})})});function XZ(e){return e?"open":"closed"}function X$(e){return"indeterminate"===e}function X0(e){return X$(e)?"indeterminate":e?"checked":"unchecked"}function X1(e){return t=>"mouse"===t.pointerType?e(t):void 0}XX.displayName=XY;var X2="DropdownMenu",[X3,X9]=Ki(X2,[Xs]),X4=Xs(),[X5,X8]=X3(X2),X6=e=>{let{__scopeDropdownMenu:t,children:r,dir:n,open:i,defaultOpen:a,onOpenChange:s,modal:o=!0}=e,l=X4(t),c=rx.useRef(null),[u,d]=Ko({prop:i,defaultProp:a??!1,onChange:s,caller:X2});return(0,rE.jsx)(X5,{scope:t,triggerId:KD(),triggerRef:c,contentId:KD(),open:u,onOpenChange:d,onOpenToggle:rx.useCallback(()=>d(e=>!e),[d]),modal:o,children:(0,rE.jsx)(Xp,{...l,open:u,onOpenChange:d,dir:n,modal:o,children:r})})};X6.displayName=X2;var X7="DropdownMenuTrigger",Ze=rx.forwardRef((e,t)=>{let{__scopeDropdownMenu:r,disabled:n=!1,...i}=e,a=X8(X7,r),s=X4(r);return(0,rE.jsx)(Xf,{asChild:!0,...s,children:(0,rE.jsx)(Kl.button,{type:"button",id:a.triggerId,"aria-haspopup":"menu","aria-expanded":a.open,"aria-controls":a.open?a.contentId:void 0,"data-state":a.open?"open":"closed","data-disabled":n?"":void 0,disabled:n,...i,ref:Kr(t,a.triggerRef),onPointerDown:Ke(e.onPointerDown,e=>{!n&&0===e.button&&!1===e.ctrlKey&&(a.onOpenToggle(),a.open||e.preventDefault())}),onKeyDown:Ke(e.onKeyDown,e=>{!n&&(["Enter"," "].includes(e.key)&&a.onOpenToggle(),"ArrowDown"===e.key&&a.onOpenChange(!0),["Enter"," ","ArrowDown"].includes(e.key)&&e.preventDefault())})})})});Ze.displayName=X7;var Zt=e=>{let{__scopeDropdownMenu:t,...r}=e,n=X4(t);return(0,rE.jsx)(Xv,{...n,...r})};Zt.displayName="DropdownMenuPortal";var Zr="DropdownMenuContent",Zn=rx.forwardRef((e,t)=>{let{__scopeDropdownMenu:r,...n}=e,i=X8(Zr,r),a=X4(r),s=rx.useRef(!1);return(0,rE.jsx)(Xx,{id:i.contentId,"aria-labelledby":i.triggerId,...a,...n,ref:t,onCloseAutoFocus:Ke(e.onCloseAutoFocus,e=>{s.current||i.triggerRef.current?.focus(),s.current=!1,e.preventDefault()}),onInteractOutside:Ke(e.onInteractOutside,e=>{let t=e.detail.originalEvent,r=0===t.button&&!0===t.ctrlKey,n=2===t.button||r;(!i.modal||n)&&(s.current=!0)}),style:{...e.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});Zn.displayName=Zr;var Zi=rx.forwardRef((e,t)=>{let{__scopeDropdownMenu:r,...n}=e,i=X4(r);return(0,rE.jsx)(XI,{...i,...n,ref:t})});Zi.displayName="DropdownMenuGroup",rx.forwardRef((e,t)=>{let{__scopeDropdownMenu:r,...n}=e,i=X4(r);return(0,rE.jsx)(XB,{...i,...n,ref:t})}).displayName="DropdownMenuLabel";var Za=rx.forwardRef((e,t)=>{let{__scopeDropdownMenu:r,...n}=e,i=X4(r);return(0,rE.jsx)(XR,{...i,...n,ref:t})});Za.displayName="DropdownMenuItem";var Zs=rx.forwardRef((e,t)=>{let{__scopeDropdownMenu:r,...n}=e,i=X4(r);return(0,rE.jsx)(XP,{...i,...n,ref:t})});Zs.displayName="DropdownMenuCheckboxItem",rx.forwardRef((e,t)=>{let{__scopeDropdownMenu:r,...n}=e,i=X4(r);return(0,rE.jsx)(XF,{...i,...n,ref:t})}).displayName="DropdownMenuRadioGroup",rx.forwardRef((e,t)=>{let{__scopeDropdownMenu:r,...n}=e,i=X4(r);return(0,rE.jsx)(XQ,{...i,...n,ref:t})}).displayName="DropdownMenuRadioItem";var Zo=rx.forwardRef((e,t)=>{let{__scopeDropdownMenu:r,...n}=e,i=X4(r);return(0,rE.jsx)(XG,{...i,...n,ref:t})});Zo.displayName="DropdownMenuItemIndicator";var Zl=rx.forwardRef((e,t)=>{let{__scopeDropdownMenu:r,...n}=e,i=X4(r);return(0,rE.jsx)(XH,{...i,...n,ref:t})});function Zc({...e}){return(0,rE.jsx)(X6,{"data-slot":"dropdown-menu",...e})}function Zu({...e}){return(0,rE.jsx)(Ze,{"data-slot":"dropdown-menu-trigger",...e})}function Zd({...e}){return(0,rE.jsx)(Zi,{"data-slot":"dropdown-menu-group",...e})}function Zh({className:e,sideOffset:t=4,portalContainer:r,...n}){return(0,rE.jsx)(Zt,{container:r,children:(0,rE.jsx)(Zn,{"data-slot":"dropdown-menu-content",sideOffset:t,className:Wb("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-md",e),...n})})}function Zp({className:e,inset:t,variant:r="default",...n}){return(0,rE.jsx)(Za,{"data-slot":"dropdown-menu-item","data-inset":t,"data-variant":r,className:Wb("relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden hover:bg-background-base focus:bg-background-base data-[highlighted]:bg-background-base data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:hover:bg-destructive/10 data-[highlighted][data-variant=destructive]:bg-destructive/10 data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg:not([class*=text-])]:text-muted-foreground data-[variant=destructive]:[&_svg:not([class*=text-])]:text-inherit [&_svg]:pointer-events-none [&_svg]:shrink-0",t&&"pl-8",e),...n})}function Zf({className:e,children:t,checked:r,indicatorPosition:n="left",...i}){return(0,rE.jsxs)(Zs,{"data-slot":"dropdown-menu-checkbox-item",className:Wb("relative flex cursor-default select-none items-center rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden hover:bg-background-base focus:bg-background-base data-[highlighted]:bg-background-base data-[disabled]:pointer-events-none data-[disabled]:opacity-50","right"===n&&"pr-8 pl-2",e),checked:r,...i,children:[(0,rE.jsx)("span",{className:Wb("pointer-events-none absolute flex size-3.5 items-center justify-center","right"===n?"right-2":"left-2"),children:(0,rE.jsx)(Zo,{children:(0,rE.jsx)(uh,{className:"size-4"})})}),t]})}function ZA({className:e,...t}){return(0,rE.jsx)(Zl,{"data-slot":"dropdown-menu-separator",className:Wb("bg-border -mx-1 my-1 h-px",e),...t})}function Zg({material:e}){let t=e.previews?.[0]?.subRes?.small??e.previews?.[0]?.url,[r,n]=(0,rx.useState)();return t&&t!==r?(0,rE.jsx)("img",{src:t,alt:"",className:"size-5 shrink-0 rounded-xs object-cover",onError:()=>n(t)}):(0,rE.jsx)(WQ,{className:"size-5! shrink-0"})}function Zm(){let e=ZE(),{containerRef:t}=W6(),{t:r}=sf(),[n,i]=(0,rx.useState)(null);if(e?.menu&&e.menu!==n&&i(e.menu),!e)return null;let a=e.panels.find(t=>Zy(t)===e.selected);return(0,rE.jsxs)(Zc,{modal:!1,open:!!(e.menu&&a),onOpenChange:t=>!t&&e.closeMenu(),children:[(0,rE.jsx)(Zu,{asChild:!0,children:(0,rE.jsx)("button",{type:"button","data-panel-menu":"","aria-label":r("wallPanel.actions"),tabIndex:-1,style:{position:"fixed",left:n?.x??0,top:n?.y??0,width:1,height:1,pointerEvents:"none",opacity:0}})}),(0,rE.jsxs)(Zh,{"data-panel-menu":"",onCloseAutoFocus:e=>e.preventDefault(),onEscapeKeyDown:r=>{r.preventDefault(),e.closeMenu();let n=Array.from(t?.querySelectorAll("[data-panel-key]")??[]).find(t=>t.dataset.panelKey===e.selected);n?.focus({preventScroll:!0})},portalContainer:t,collisionBoundary:t,collisionPadding:8,align:"start",className:"flex w-56 max-w-[var(--radix-dropdown-menu-content-available-width)] flex-col",style:{maxHeight:"var(--radix-dropdown-menu-content-available-height)"},children:[(0,rE.jsx)(Zd,{"aria-label":r("wallPanel.materials"),className:"min-h-0 overflow-y-auto overscroll-contain",children:e.options.map(({material:t,number:n,error:i,loading:s})=>(0,rE.jsxs)(Zf,{indicatorPosition:"right",checked:a?.materialId===t.hid,onCheckedChange:()=>e.chooseMaterial(t.hid),onSelect:e=>e.preventDefault(),className:"gap-2 [@media(pointer:coarse)]:min-h-11",children:[(0,rE.jsx)("span",{className:"pointer-events-none flex size-5 shrink-0 items-center justify-center",children:a?.requestedMaterialId===t.hid&&s?(0,rE.jsx)(WK,{"aria-label":r("wallPanel.loading")}):a?.requestedMaterialId===t.hid&&i?(0,rE.jsx)("span",{role:"status","aria-label":r("wallPanel.retry"),children:(0,rE.jsx)(ug,{className:"size-3.5","aria-hidden":"true"})}):(0,rE.jsx)(Zg,{material:t})}),(0,rE.jsx)("span",{className:"min-w-0 flex-1",children:t.name?.trim()?t.name:r("wallPanel.materialFallback",{number:n})})]},t.hid))}),(0,rE.jsx)(ZA,{}),(0,rE.jsx)(Zd,{className:"shrink-0",children:(0,rE.jsxs)(Zp,{className:"[@media(pointer:coarse)]:min-h-11",onSelect:t=>{t.preventDefault(),e.rotate()},children:[(0,rE.jsx)(WH,{className:"size-4!"}),r("wallPanel.rotate")]})}),(0,rE.jsx)(ZA,{}),(0,rE.jsx)(Zd,{className:"shrink-0",children:(0,rE.jsxs)(Zp,{className:"[@media(pointer:coarse)]:min-h-11",variant:"destructive",disabled:1===e.panels.length,onSelect:e.remove,children:[(0,rE.jsx)("span",{className:"flex size-4 shrink-0 items-center justify-center",children:(0,rE.jsx)(WO,{className:"size-3!"})}),r("wallPanel.delete")]})})]})]})}async function Zv(e){let t=new xD,r=new Rq(t).setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.5/");try{let{scene:n}=await new RX(t).setDRACOLoader(r).setMeshoptDecoder(Rj).loadAsync(e),i=new vi().setFromObject(n),a=i.getSize(new g0),s=i.getCenter(new g0);return{scene:n,width:a.x,depth:a.z,mountingOffset:[-s.x,-s.y,-i.min.z]}}finally{r.dispose()}}function Zb(e){return{queryKey:["wall-panel-model",e],queryFn:()=>Zv(e),staleTime:1/0,gcTime:1/0,retry:!1}}function Zy(e){return`${e.x},${e.y}`}function Zw(e,t,r){return{product:e,menu:null,generation:0,panels:[{x:0,y:0,turns:0,materialId:t}],selected:r?null:"0,0"}}Zl.displayName="DropdownMenuSeparator",rx.forwardRef((e,t)=>{let{__scopeDropdownMenu:r,...n}=e,i=X4(r);return(0,rE.jsx)(XV,{...i,...n,ref:t})}).displayName="DropdownMenuArrow",rx.forwardRef((e,t)=>{let{__scopeDropdownMenu:r,...n}=e,i=X4(r);return(0,rE.jsx)(XJ,{...i,...n,ref:t})}).displayName="DropdownMenuSubTrigger",rx.forwardRef((e,t)=>{let{__scopeDropdownMenu:r,...n}=e,i=X4(r);return(0,rE.jsx)(XX,{...i,...n,ref:t,style:{...e.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}})}).displayName="DropdownMenuSubContent";let Zx=(0,rx.createContext)(null);function ZC({children:e}){let{type:t}=W9(),{viewerDialogOpen:r}=W4(),{containerRef:n}=W6(),i="panel-group"===Wv[t].manipulation,{room:a}=W5(),s=function(e,t){let{tinuuid:r,selectedObject:n}=W8(),{viewerDialogOpen:i}=W4(),a=n?.tinuuid===r?n:null,s=a?.materials?.[0],o=q8("(max-width: 639px)"),l=function(e,t,r){let[n,i]=(0,rx.useState)(()=>Zw(e,t,r));(n.product!==e||t&&!n.panels[0]?.materialId)&&i({...n,product:e,menu:null,panels:n.panels.map(e=>({...e,materialId:t,requestedMaterialId:void 0}))});let a=(0,rx.useCallback)(()=>i(e=>({...e,menu:null})),[]),s=(0,rx.useCallback)((e,t)=>i(r=>({...r,selected:e,menu:t})),[]),o=(0,rx.useCallback)(()=>i(e=>({...e,selected:null,menu:null})),[]),l=(0,rx.useCallback)(()=>i(e=>({...Zw(e.product,t,r),generation:e.generation+1})),[t,r]),c=(0,rx.useCallback)(()=>i(e=>({...e,panels:e.panels.map(t=>Zy(t)===e.selected?{...t,turns:(t.turns+1)%4}:t)})),[]),u=(0,rx.useCallback)(()=>i(e=>e.selected&&1!==e.panels.length?{...e,panels:e.panels.filter(t=>Zy(t)!==e.selected),selected:null,menu:null}:e),[]),d=(0,rx.useCallback)(e=>i(t=>({...t,selected:e})),[]),h=(0,rx.useCallback)(e=>i(r=>{let n=Zy(e);return r.panels.some(e=>Zy(e)===n)?r:{...r,panels:[...r.panels,{...e,turns:0,materialId:r.panels.find(e=>Zy(e)===r.selected)?.materialId??t}],selected:n,menu:null}}),[t]),p=(0,rx.useCallback)(e=>i(t=>({...t,panels:t.panels.map(r=>Zy(r)===t.selected?{...r,requestedMaterialId:e===r.materialId?void 0:e}:r)})),[]),f=(0,rx.useCallback)(e=>i(t=>{let r=t.panels.map(t=>{let r=t.requestedMaterialId;return r&&e.has(r)?{...t,materialId:r,requestedMaterialId:void 0}:t});return r.some((e,r)=>e!==t.panels[r])?{...t,panels:r}:t}),[]),A=(0,rx.useMemo)(()=>{let e=new Set(n.panels.map(Zy)),t=new Map;for(let r of n.panels)for(let[n,i]of[[1,0],[-1,0],[0,1],[0,-1]]){let a={x:r.x+n,y:r.y+i},s=Zy(a);e.has(s)||t.set(s,a)}return Array.from(t.values())},[n.panels]);return{...n,neighbors:A,requestMaterial:p,applyReadyMaterials:f,openMenu:s,closeMenu:a,clearSelection:o,reset:l,rotate:c,remove:u,select:d,add:h}}(r,s?.hid??"",t&&o),c=e?a?.materials?.filter(e=>e.hid&&e.native?.glbUrl)??[]:[],u=oc({queries:c.map(e=>({...Zb(e.native.glbUrl),enabled:i&&!!(e.hid===s?.hid||l.panels.some(t=>t.requestedMaterialId===e.hid))}))}),d=u[c.findIndex(e=>e.hid===s?.hid)]?.data,h=c.map((e,t)=>({material:e,number:(a?.materials?.indexOf(e)??t)+1,model:u[t]?.data,loading:u[t]?.isFetching??!1,error:u[t]?.isError??!1})),p=h.filter(e=>e.model).map(e=>e.material.hid).join(","),{applyReadyMaterials:f}=l;return(0,rx.useEffect)(()=>{i&&f(new Set(p.split(",")))},[f,p,i,l.panels]),{...l,isBaseModelReady:!!d,options:h,chooseMaterial:e=>{let t=h.findIndex(t=>t.material.hid===e);!(t<0)&&(l.requestMaterial(e),u[t]?.isError&&u[t].refetch())}}}(i,"focus-resource"===Wv[t].introduction),{closeMenu:o}=s;(0,rx.useEffect)(()=>{o()},[a.id,o]);let{clearSelection:l,reset:c}=s;(0,rx.useEffect)(()=>{r||c()},[c,r]),(0,rx.useEffect)(()=>{if(!i||!r)return;let e=e=>{e.composedPath().some(e=>e instanceof Element&&("CANVAS"===e.tagName&&n?.contains(e)||e.matches("[data-neurodyn-room-viewer-product], [data-material-selection-panel], [data-material-selection-action]")||e.matches("[data-room-selection-panel], [data-panel-menu]")))||l()};return document.addEventListener("pointerdown",e),()=>document.removeEventListener("pointerdown",e)},[l,n,i,r]);let u=(0,rx.useMemo)(()=>i?s:null,[s,i]);return(0,rE.jsxs)(Zx,{value:u,children:[e,i&&(0,rE.jsx)(Zm,{})]})}function ZE(){return(0,rx.use)(Zx)}function ZS(e){return e.image.width/e.image.height}function ZM(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}async function ZI(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 ZB(e,t){return new Promise((r,n)=>{e.toBlob(e=>{e?r(e):n(Error(t))},"image/png")})}function Zk({ref:e}){let{camera:t,gl:r,invalidate:n,scene:i}=IY();return(0,rx.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 ZB(r.domElement,"Failed to create scene share image")}finally{a(),n()}}}),[t,r,n,i]),null}class ZT extends rx.Component{state={hasFailed:!1};static getDerivedStateFromError(){return{hasFailed:!0}}componentDidCatch(e,t){console.error("Room viewer scene failed to render",e,t.componentStack),this.props.onError(e)}render(){return this.state.hasFailed?null:this.props.children}}let ZR=new Float32Array(19),ZD=0;for(let e=-9;e<=9;e++){let t=Math.exp(-e*e/18);ZR[e+9]=t,ZD+=t}for(let e=0;e<ZR.length;e++)ZR[e]/=ZD;function ZP(e,t){return Math.max(0,Math.min(t,e))}let Z_=new g0(0,0,1),ZL=new g0(0,0,1),ZN={floor:"normal-aligned",wall:"upright",ceiling:"normal-aligned"};function ZF(e){return new g$().setFromUnitVectors(Z_,e.clone().normalize())}function ZO(e,t,r){let n,i,a,s,o,l,{kind:c,planeId:u}=e.userData,d=(i=new g0((n=e.geometry.attributes.position).getX(0),n.getY(0),n.getZ(0)),a=new g0(n.getX(1),n.getY(1),n.getZ(1)),s=new g0(n.getX(2),n.getY(2),n.getZ(2)),o=new g0().crossVectors(a.sub(i),s.sub(i)).normalize(),l=r.position.clone().sub(t).normalize(),0>o.dot(l)&&o.multiplyScalar(-1),o),h=t.clone().addScaledVector(d,.05),p=function(e,t){if("normal-aligned"===ZN[t])return ZF(e);let r=e.clone().normalize(),n=ZL.clone().addScaledVector(r,-ZL.dot(r));if(1e-6>n.lengthSq())return ZF(r);n.normalize();let i=new g0().crossVectors(n,r).normalize(),a=new mf().makeBasis(i,n,r);return new g$().setFromRotationMatrix(a)}(d,c);return{position:h.toArray(),quaternion:p.toArray(),activePlaneId:u}}function ZQ(e){return{placementKey:e,planeIdMap:null,planeIdMapFailed:!1,resourcePose:null}}function ZU(e,t){if("reset-placement"===t.type)return ZQ(t.placementKey);if(t.placementKey!==e.placementKey)return e;switch(t.type){case"reset-plane-id-map":return{...e,planeIdMap:null,planeIdMapFailed:!1};case"fail-plane-id-map":return{...e,planeIdMap:null,planeIdMapFailed:!0};case"set-plane-id-map":return{...e,planeIdMap:t.planeIdMap,planeIdMapFailed:!1};case"set-resource-pose":return{...e,resourcePose:t.resourcePose}}}function Zz(e){let t=e.image;if("data"in t)return t;let r=document.createElement("canvas");r.width=t.width,r.height=t.height;let n=r.getContext("2d");return n.drawImage(t,0,0),n.getImageData(0,0,r.width,r.height)}let Zj="NEURODYN_ROOM_SCENE_PATCH";function ZG(e,t,{shading:r=!0}={}){let n=e.onBeforeCompile,i=e.customProgramCacheKey.bind(e),a=e.side,s=e.transparent,o=e.alphaToCoverage;return e.side=2,e.transparent=!0,e.alphaToCoverage=!0,e.onBeforeCompile=(i,a)=>{n?.call(e,i,a),function(e,t,r){e.uniforms.uMask=t.activeMaskTextureUniform,e.uniforms.uRoomLighting={value:t.lightingTexture},e.uniforms.uViewport={value:t.viewport};let n=e.fragmentShader.includes("vec3 totalEmissiveRadiance")?"totalEmissiveRadiance":"vec3(0.0)",i=`
|
|
7591
|
+
}`:eb);function VP(e){let t=e?.trim().replace(/\/+$/,"")??"";if(!t||t.includes("/v1/http")||t.endsWith("/v1"))return t||void 0;let r=t.indexOf("/http");return r>=0?`${t.slice(0,r)}/v1${t.slice(r)}`:`${t}/v1`}let V_=VP("/apps/vizbl-wall-art/http")??"";function VL(e){return"shopify"===e.source||void 0!==e.apiKey}function VN(e){return"wall-panel"===e.resourceType?"panels":"rugs"===e.resourceType?"rugs":"flooring"===e.resourceType?"flooring":"shopify"===e.source?"wallart-shopify":"wallart"}function VF(e){let t=VN(e);return"panels"===t?{query:void 0,config:{params:{productType:t}}}:{query:{productType:t},config:{}}}function VO(e){if(!ix(e))return null;let t=e.response?.status;return 401===t?"unauthorized":402===t?"payment-required":null}function VQ(e){return ih.create({baseURL:e,timeout:3e4})}let VU=new Set(["common","delete","get","head","post","put","patch","options","purge","link","unlink"]);function Vz(){return globalThis.process?.env?.NODE_ENV}function Vj(e){if(void 0===e)return[];let t="function"==typeof e.toJSON?e.toJSON():e,r=[];return!function e(t,r){if(null!==t&&"object"==typeof t)for(let[n,i]of Object.entries(t)){if(null==i)continue;let t=n.toLowerCase();if("common"===t){e(i,r);continue}VU.has(t)||r.push([n,String(i)])}}(t,r),r}function VG(e){return!!("u">typeof FormData&&e instanceof FormData)||null!==e&&"object"==typeof e&&(e.constructor?.name==="FormData"||"function"==typeof e.getBoundary)}let VH=new Set(["authorization","cookie","set-cookie","x-xsrf-token"]);function VV(e){if(null==e)return;let t="function"==typeof e.toJSON?e.toJSON():e;if(null===t||"object"!=typeof t)return;let r={};for(let[e,n]of Object.entries(t))null!=n&&(r[e]=VH.has(e.toLowerCase())?"[redacted]":String(n));return r}function VW(e){if(null!=e){if("string"==typeof e)try{return JSON.parse(e)}catch{return e.length>2e3?`${e.slice(0,2e3)}… (${e.length} chars)`:e}return VG(e)?"[FormData]":e}}function Vq(e){let t=(e.requestConfig.method??"GET").toUpperCase(),r=e.requestConfig.url??"",n=`[api:server] ${t} ${r} → ${e.status} (${e.durationMs}ms)`,i={requestId:e.requestId,...e.error?{error:e.error}:{},params:e.requestConfig.params,requestBody:VW(e.requestConfig.data),requestHeaders:VV(e.requestConfig.headers),responseHeaders:VV(e.responseHeaders),responseBody:VW(e.responseBody)};(e.status>=500||void 0!==e.error&&0===e.status?console.error:e.status>=400?console.warn:console.log)(n,i)}function VK({clientName:e,configureFunctionName:t,defaultBaseURL:r}){let n=VQ(r),i=VQ(r),a=null,s=null,o=null,l=null,c=null,u=null;async function d(e,t){let r=function(e,t){let r;if(void 0===t.data||VG(t.data))return t;let n=iS.from(t.headers);return n.has("Content-Type")||void 0!==(r=e.defaults.headers.common)&&iS.from(r).has("Content-Type")||n.set("Content-Type","application/json"),t.headers=n,t}(e,function(e){let t=iS.from(e.headers);if(null!==o){let e=o()?.trim();e&&!t.has("Authorization")&&t.set("Authorization",`Bearer ${e}`)}if(null!==u)for(let[r,n]of Object.entries(u({url:e.url,method:e.method})))n&&!t.has(r)&&t.set(r,n);return e.headers=t,e}({...t})),n=function(e){let t,r=iS.from(e.headers),n=r.get("x-request-id");if("string"==typeof n&&n.length>0)return n;let i=(t=globalThis.crypto,"function"==typeof t?.randomUUID?t.randomUUID():`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`);return r.set("x-request-id",i),e.headers=r,i}(r),i=function(){if("u">typeof window)return!1;let e=Vz(),t=globalThis.process;return t?.env?.DEBUG_API==="true"||"production"!==e&&"test"!==e&&"testing"!==e}(),a=i?Date.now():0;try{let t=await e.request(r);return i&&Vq({requestConfig:r,requestId:n,status:t.status,durationMs:Date.now()-a,responseHeaders:t.headers,responseBody:t.data}),t}catch(e){throw i&&Vq({requestConfig:r,requestId:n,status:e.response?.status??0,durationMs:Date.now()-a,responseHeaders:e.response?.headers,responseBody:e.response?.data,error:e.message}),e}}async function h(e){return d(e.skipUnauthorizedRecovery?i:n,function(e){let{skipUnauthorizedRecovery:t,...r}=e;return r}(e))}let p=async e=>h({...e,skipUnauthorizedRecovery:!0});function f(){return null!==a}return{configureClientRuntime:function(t){let r,s=(r=function(e){let t=Vj(e);if(0===t.length)return;let r=new Map;for(let[e,n]of t)r.set(e.toLowerCase(),n);return Object.fromEntries(Array.from(r.entries()).sort(([e],[t])=>e.localeCompare(t)))}(t.headers),JSON.stringify({...void 0!==t.baseURL?{baseURL:t.baseURL}:{},...void 0!==t.timeout?{timeout:t.timeout}:{},...void 0!==r?{headers:r}:{}}));if("{}"!==s){if(null!==a){if(a===s)return;let t=`${e} already configured. Existing: ${a}. New: ${s}.`;if("production"===Vz())return void console.warn(t);throw Error(t)}for(let e of[n,i])void 0!==t.baseURL&&(e.defaults.baseURL=t.baseURL),void 0!==t.timeout&&(e.defaults.timeout=t.timeout),void 0!==t.headers&&function(e,t){let r=e.defaults.headers,n=r.common,i=iS.from(n);for(let[e,r]of Vj(t))i.set(e,r);r.common=i.toJSON(),e.defaults.headers=r}(e,t.headers);a=s}},configureAccessTokenResolverRuntime:function(e){o=e},configureUnauthorizedHandlerRuntime:function(e){if(l=e,null===e){null!==s&&(n.interceptors.response.eject(s),s=null),c=null;return}null===s&&(s=n.interceptors.response.use(e=>e,async e=>{let t=e.config;if(e.response?.status!==401||null===l||void 0===t||t._apiRetried)return Promise.reject(e);if(null===c){let t=l;if(null===t)return Promise.reject(e);c=Promise.resolve().then(()=>t(e,{requestWithoutUnauthorizedRecovery:p})).finally(()=>{c=null})}try{if(!await c)return Promise.reject(e);t._apiRetried=!0;let r=iS.from(t.headers);return r.delete("Authorization"),t.headers=r,d(n,t)}catch{return Promise.reject(e)}}))},configureHeadersResolverRuntime:function(e){u=e},isClientConfiguredRuntime:f,assertClientConfiguredRuntime:function(){if(!f())throw Error(`${e} is not configured. Call ${t}(...) before making requests.`)},resetClientForTestsRuntime:function(){let e;if("test"!==(e=Vz())&&"testing"!==e)throw Error("resetApiClientForTests() can only be called in test environment.");n=VQ(r),i=VQ(r),a=null,s=null,o=null,l=null,c=null,u=null},requestRuntime:h,requestWithoutUnauthorizedRecovery:p,addResponseInterceptorRuntime:function(e,t){return n.interceptors.response.use(e,t)}}}let VJ=VK({clientName:"API node client",configureFunctionName:"configureNodeApiClient",defaultBaseURL:"https://api.vizbl.com"}),VY=VJ.configureClientRuntime;VJ.configureAccessTokenResolverRuntime,VJ.configureHeadersResolverRuntime,VJ.configureUnauthorizedHandlerRuntime,VJ.isClientConfiguredRuntime,VJ.assertClientConfiguredRuntime,VJ.resetClientForTestsRuntime;let VX=VJ.requestRuntime;async function VZ(e){return VX(e)}function V$(e){let t=new FormData;function r(e,r){r instanceof Blob?t.append(e,r):r instanceof Date?t.append(e,r.toISOString()):"number"==typeof r||"boolean"==typeof r?t.append(e,String(r)):"string"==typeof r?t.append(e,r):"object"==typeof r&&t.append(e,new Blob([JSON.stringify(r)],{type:"application/json"}))}return e&&Object.entries(e).forEach(([e,t])=>{if(null!=t)if(Array.isArray(t))for(let n of t)null!=n&&r(e,n);else r(e,t)}),t}async function V0(e,t={}){let{client:r=VZ,...n}=t,i=V$(e);return(await r({method:"POST",url:"/inference/room-planes/run-raw",data:i,...n})).data}async function V1(e,t={}){let{client:r=VZ,...n}=t;return(await r({method:"POST",url:"/public/widget/activate-wallart",params:e,...n})).data}async function V2(e,t,r={}){let{client:n=VZ,...i}=r;return(await n({method:"POST",url:"/public/objects/public",params:t,data:e,...i})).data}async function V3(e,t={}){let{client:r=VZ,...n}=t;return(await r({method:"POST",url:"/public/widget/shopify/get-rooms",params:e,...n})).data}async function V9(e={}){let{client:t=VZ,...r}=e;return(await t({method:"POST",url:"/public/widget/get-rooms",...r})).data}async function V4(e,t={}){let{client:r=VZ,...n}=t;return(await r({method:"POST",url:"/public/widget/token",data:e,...n})).data}async function V5({tinuuid:e},t,r={}){let{client:n=VZ,...i}=r;return(await n({method:"GET",url:`/public/objects/by-tinuuid/${e}`,params:t,...i})).data}async function V8(e,t={}){let{client:r=VZ,...n}=t,i=V$(e);return(await r({method:"POST",url:"/public/inference/room-planes/run-raw",data:i,...n})).data}async function V6(e,t={}){let{client:r=VZ,...n}=t;return(await r({method:"POST",url:"/public/widget/events",data:e,...n})).data}VJ.requestWithoutUnauthorizedRecovery,VJ.addResponseInterceptorRuntime;let V7=VK({clientName:"API client",configureFunctionName:"configureApiClient",defaultBaseURL:"https://api.vizbl.com/v1"}),We=V7.configureClientRuntime;V7.configureAccessTokenResolverRuntime,V7.configureHeadersResolverRuntime,V7.configureUnauthorizedHandlerRuntime,V7.isClientConfiguredRuntime,V7.assertClientConfiguredRuntime,V7.resetClientForTestsRuntime;let Wt=V7.requestRuntime;async function Wr(e){return Wt(e)}async function Wn(e,t={}){let{client:r=Wr,...n}=t;return(await r({method:"POST",url:"/obj/Fetch",data:e,...n})).data}async function Wi(e,t={}){let{client:r=Wr,...n}=t;return(await r({method:"POST",url:"/obj/GetKitItems",data:e,...n})).data}async function Wa(e,t={}){let{client:r=Wr,...n}=t;return(await r({method:"POST",url:"/obj/GetPublic",data:e,...n})).data}V7.requestWithoutUnauthorizedRecovery,V7.addResponseInterceptorRuntime;let Ws="x-widget-session-token",Wo=(e,t)=>V6(e,t);class Wl{apiConfig;issueWidgetToken;now;refreshPromise=null;refreshThresholdMs;session;constructor(e,t={}){this.apiConfig=t.apiConfig,this.issueWidgetToken=t.issueWidgetToken??V4,this.now=t.now??Date.now,this.refreshThresholdMs=t.refreshThresholdMs??3e4,this.session=this.toSnapshot(e)}get snapshot(){return{...this.session}}get token(){return this.session.token}get sid(){return this.session.sid}get expiresAt(){return this.session.expiresAt}isCloseToExpiry(){return this.session.expiresAt-this.now()<=this.refreshThresholdMs}async getTokenForRequest(){return this.isCloseToExpiry()?(await this.refresh()).token:this.session.token}async getHeadersForRequest(){return{[Ws]:await this.getTokenForRequest()}}async getApiConfigForRequest(e){let t=await this.getTokenForRequest();return{...this.apiConfig,...e,headers:{...this.apiConfig?.headers,...e?.headers,[Ws]:t}}}refresh(){return this.refreshPromise||(this.refreshPromise=this.issueWidgetToken({token:this.session.token},this.apiConfig).then(e=>(this.session=this.toSnapshot(e),this.snapshot)).finally(()=>{this.refreshPromise=null})),this.refreshPromise}toSnapshot(e){return{token:e.token,sid:e.sid,expiresAt:this.now()+1e3*e.expiresIn}}}function Wc(e,t){return e?.token&&e.sid&&Number.isFinite(e.expiresIn)?new Wl(e,t):null}function Wu(e,t,r={}){if(!e)return;let n=r.createWidgetEvent??Wo;e.getApiConfigForRequest(r.apiConfig).then(e=>n({event:t,timestamp:new Date().toISOString()},e)).catch(()=>{})}async function Wd(e){let t={"x-api-key":e.apiKey},r=await e.widgetSession?.getTokenForRequest();return r&&(t[Ws]=r),t}function Wh(e,t){return["room-viewer","object",{apiKey:t.apiKey??null,source:t.source,tinuuid:e??null,resourceType:t.resourceType??null}]}function Wp(e,t,r){return["room-viewer","kit-objects",{apiKey:r.apiKey??null,kitUuid:e??null,ownerUuid:t??null,resourceType:r.resourceType??null,source:r.source}]}async function Wf(e,t){if(!VL(t))return Wn({tinuuid:e},{signal:t.signal});let{query:r,config:n}=VF(t);return V5({tinuuid:e},r,{...n,baseURL:t.baseURL,headers:await Wd(t),signal:t.signal})}async function WA(e,t,r){let n={page:t,owners:[e]};if(!VL(r))return Wa({...n,productType:"wall-panel"===r.resourceType?"panels":"rugs"===r.resourceType?"rugs":"flooring"===r.resourceType?"flooring":"wallart"},{signal:r.signal});let{query:i,config:a}=VF(r),s=await V2({...n,productType:VN(r)},i,{...a,baseURL:r.baseURL,headers:await Wd(r),signal:r.signal});return{folder:s.folder,objs:s.objs,pages_count:s.pages_count}}async function Wg(e,t,r,n){let i=await Wi({folder:{uuid:e,type:"kit"},page:r},{baseURL:VP(n.baseURL),signal:n.signal});return{folder:i.folder,objs:i.objs,pages_count:i.pagesCount}}async function Wm(e){let t={baseURL:e.baseURL,headers:await Wd(e),signal:e.signal},r=VF(e);return("shopify"===e.source?await V3(r.query,{...t,...r.config}):await V9(t)).rooms.filter(e=>!1!==e.active).sort((e,t)=>(e.position??0)-(t.position??0)).map(e=>({id:e.id,name:e.name,image_url:e.image_url,scene:e.scene}))}let Wv={destination:"floor",ar:"appclip"},Wb={"wall-panel":{handoff:null,surfaces:["wall"],lighting:"static-neutral-hdr",roomPresets:"wall-room-presets",chrome:"immersive-room",presentation:"immersive-panels",manipulation:"panel-group",productNameSource:"collection",catalogTitle:"wall-panel",introduction:"focus-resource",identity:"modelled-resource",composition:"single-listing",materialRole:"finish"},wallart:{handoff:{destination:"wall",ar:"webar-usdz"},surfaces:["wall"],lighting:"static-neutral-hdr",roomPresets:"wall-room-presets",chrome:"framed-scene",presentation:"framed-default",manipulation:"single-resource",productNameSource:"material",catalogTitle:"title",introduction:null,identity:"textured-resource",composition:"single-listing",materialRole:"product-identity"},rugs:{handoff:Wv,surfaces:["floor"],lighting:"remote-neutral-hdr",roomPresets:"floor-room-presets",chrome:"immersive-room",presentation:"immersive-default",manipulation:"drag-with-rotation-handle",productNameSource:"collection",catalogTitle:"rugs",introduction:null,identity:"modelled-resource",composition:"sized-design",materialRole:"placeholder"},flooring:{handoff:Wv,surfaces:["floor"],lighting:"remote-neutral-hdr",roomPresets:"floor-room-presets",chrome:"immersive-room",presentation:"immersive-default",manipulation:"rotate-on-floor",productNameSource:"collection",catalogTitle:"flooring",introduction:null,identity:"modelled-resource",composition:"color-design",materialRole:"product-identity"}};function Wy(...e){return lv(ox(e))}let Ww=ly("cursor-pointer inline-flex items-center justify-center gap-1.5 whitespace-nowrap rounded-xl transition-all disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg:not([class*=size-])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-2 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary--hover active:bg-primary--pressed disabled:bg-primary--disabled disabled:opacity-20",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary--hover active:bg-secondary--pressed disabled:bg-secondary--disabled disabled:opacity-20",outline:"border border-button-outline bg-transparent text-foreground hover:border-button-outline-hover active:bg-button-outline-pressed disabled:border-border-dark disabled:opacity-20",ghost:"hover:bg-accent hover:text-accent-foreground active:bg-accent--pressed",contrast:"bg-contrast text-contrast-foreground hover:bg-contrast--hover active:bg-contrast--pressed disabled:bg-contrast--disabled disabled:opacity-30"},size:{default:"h-9 px-3.5 typo-button-normal [&_svg]:size-5",sm:"h-8 px-3 typo-button-small [&_svg]:size-4",lg:"h-11 px-4 typo-button-big [&_svg]:size-6",icon:"size-9 rounded-full [&_svg]:size-5","icon-sm":"size-8 rounded-full [&_svg]:size-4","icon-lg":"size-11 rounded-full [&_svg]:size-6"}},defaultVariants:{variant:"default",size:"default"}});function Wx({className:e,variant:t,size:r,asChild:n=!1,...i}){return(0,rE.jsx)(n?ob:"button",{"data-slot":"button",className:Wy(Ww({variant:t,size:r,className:e})),...i})}function WC({...e}){return(0,rE.jsx)(cz,{"data-slot":"dialog",...e})}function WE({...e}){return(0,rE.jsx)(cW,{"data-slot":"dialog-portal",...e})}function WS({...e}){return(0,rE.jsx)(c8,{"data-slot":"dialog-close",...e})}function WM({className:e,...t}){return(0,rE.jsx)(cK,{"data-slot":"dialog-overlay",className:Wy("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",e),...t})}function WI({className:e,children:t,contentInsideOverlay:r=!1,showCloseButton:n=!0,portalContainer:i,...a}){let s=(0,rE.jsxs)(cZ,{"data-slot":"dialog-content",className:Wy("bg-background-containers 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 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-6 rounded-3xl border-0 p-6 shadow-[var(--shadow-login)] duration-200 outline-none sm:max-w-120 sm:p-10",e),...a,children:[t,n&&(0,rE.jsxs)(c8,{"data-slot":"dialog-close",className:"focus-visible:ring-ring/30 absolute top-4 right-4 inline-flex size-6 cursor-pointer items-center justify-center rounded-full text-icons-light transition-colors hover:text-icons-normal focus-visible:text-icons-dark focus-visible:ring-2 focus-visible:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0",children:[(0,rE.jsx)(uc,{className:"size-6"}),(0,rE.jsx)("span",{className:"sr-only",children:"Close"})]})]});return(0,rE.jsx)(WE,{"data-slot":"dialog-portal",container:i,children:r?(0,rE.jsx)(WM,{children:s}):(0,rE.jsxs)(rE.Fragment,{children:[(0,rE.jsx)(WM,{}),s]})})}function WB({className:e,...t}){return(0,rE.jsx)("div",{"data-slot":"dialog-header",className:Wy("flex flex-col gap-2 text-left",e),...t})}function Wk({className:e,showCloseButton:t=!1,children:r,...n}){return(0,rE.jsxs)("div",{"data-slot":"dialog-footer",className:Wy("flex flex-wrap items-center justify-start gap-2 pt-2",e),...n,children:[r,t&&(0,rE.jsx)(c8,{asChild:!0,children:(0,rE.jsx)(Wx,{variant:"secondary",className:"text-text-dark",children:"Close"})})]})}function WT({className:e,...t}){return(0,rE.jsx)(c3,{"data-slot":"dialog-title",className:Wy("typo-base-18 text-text-dark",e),...t})}function WR({className:e,...t}){return(0,rE.jsx)(c4,{"data-slot":"dialog-description",className:Wy("typo-base-16 text-text-light",e),...t})}function WD(e){return(0,rE.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",...e,children:[(0,rE.jsx)("path",{d:"M22.5601 16.3031L14.8901 3.58311C14.58 3.09793 14.1526 2.69864 13.6476 2.42205C13.1425 2.14546 12.5759 2.00049 12.0001 2.00049C11.4243 2.00049 10.8577 2.14546 10.3526 2.42205C9.84755 2.69864 9.42024 3.09793 9.1101 3.58311L1.4401 16.3031C1.16915 16.7548 1.02189 17.2698 1.01311 17.7964C1.00434 18.323 1.13436 18.8427 1.3901 19.3031C1.68578 19.8214 2.11376 20.2518 2.6303 20.5505C3.14684 20.8492 3.73343 21.0054 4.3301 21.0031H19.6701C20.2629 21.0094 20.8468 20.8593 21.363 20.5678C21.8792 20.2764 22.3093 19.8539 22.6101 19.3431C22.8734 18.8779 23.0075 18.3508 22.9987 17.8163C22.9899 17.2818 22.8385 16.7594 22.5601 16.3031ZM20.8601 18.3531C20.7399 18.5597 20.5655 18.7295 20.3557 18.8441C20.146 18.9586 19.9089 19.0136 19.6701 19.0031H4.3301C4.09132 19.0136 3.85422 18.9586 3.64446 18.8441C3.4347 18.7295 3.26029 18.5597 3.1401 18.3531C3.05233 18.2011 3.00613 18.0286 3.00613 17.8531C3.00613 17.6776 3.05233 17.5051 3.1401 17.3531L10.8201 4.62311C10.9581 4.44082 11.1365 4.29298 11.3412 4.19119C11.5459 4.08939 11.7715 4.03642 12.0001 4.03642C12.2287 4.03642 12.4543 4.08939 12.659 4.19119C12.8637 4.29298 13.0421 4.44082 13.1801 4.62311L20.8501 17.3431C20.9413 17.4954 20.9902 17.6693 20.992 17.8468C20.9937 18.0243 20.9482 18.199 20.8601 18.3531Z",fill:"currentColor"}),(0,rE.jsx)("path",{d:"M12.0001 17.0001C12.2653 17.0001 12.5197 16.8948 12.7072 16.7073C12.8948 16.5197 13.0001 16.2654 13.0001 16.0001C13.0001 15.7349 12.8948 15.4806 12.7072 15.293C12.5197 15.1055 12.2653 15.0001 12.0001 15.0001C11.7349 15.0001 11.4806 15.1055 11.293 15.293C11.1055 15.4806 11.0001 15.7349 11.0001 16.0001C11.0001 16.2654 11.1055 16.5197 11.293 16.7073C11.4806 16.8948 11.7349 17.0001 12.0001 17.0001Z",fill:"currentColor"}),(0,rE.jsx)("path",{d:"M12.0001 8.00023C11.7349 8.00023 11.4806 8.10559 11.293 8.29313C11.1055 8.48066 11.0001 8.73502 11.0001 9.00023V13.0002C11.0001 13.2655 11.1055 13.5198 11.293 13.7073C11.4806 13.8949 11.7349 14.0002 12.0001 14.0002C12.2653 14.0002 12.5197 13.8949 12.7072 13.7073C12.8948 13.5198 13.0001 13.2655 13.0001 13.0002V9.00023C13.0001 8.73502 12.8948 8.48066 12.7072 8.29313C12.5197 8.10559 12.2653 8.00023 12.0001 8.00023Z",fill:"currentColor"})]})}function WP(e){return(0,rE.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",...e,children:(0,rE.jsx)("path",{d:"M21.1667 8.4C21.1667 8.16131 21.07 7.93245 20.8981 7.76367C20.7262 7.59489 20.4931 7.5 20.25 7.5H16.5833C16.2768 7.5 15.9906 7.3496 15.8206 7.09922L14.2594 4.8H9.74056L8.17936 7.09922C8.00935 7.3496 7.72316 7.5 7.41667 7.5H3.75C3.50688 7.5 3.2738 7.59489 3.10189 7.76367C2.92998 7.93245 2.83333 8.16131 2.83333 8.4V18.3C2.83333 18.5387 2.92998 18.7675 3.10189 18.9363C3.2738 19.1051 3.50689 19.2 3.75 19.2H20.25C20.4931 19.2 20.7262 19.1051 20.8981 18.9363C21.07 18.7675 21.1667 18.5387 21.1667 18.3V8.4ZM14.75 12.9C14.75 12.184 14.46 11.4973 13.9443 10.991C13.4287 10.4847 12.7292 10.2001 12 10.2C11.2707 10.2 10.5705 10.4847 10.0548 10.991C9.53923 11.4973 9.25 12.1841 9.25 12.9C9.25 13.6159 9.53923 14.3027 10.0548 14.809C10.5705 15.3153 11.2707 15.6 12 15.6C12.7292 15.5999 13.4287 15.3153 13.9443 14.809C14.46 14.3027 14.75 13.616 14.75 12.9ZM16.5833 12.9C16.5833 14.0934 16.1 15.2377 15.2406 16.0816C14.3811 16.9255 13.2155 17.3999 12 17.4C10.7844 17.4 9.61809 16.9256 8.75854 16.0816C7.89919 15.2378 7.41667 14.0933 7.41667 12.9C7.41667 11.7067 7.89919 10.5622 8.75854 9.71836C9.61809 8.87445 10.7844 8.4 12 8.4C13.2155 8.40008 14.3811 8.87452 15.2406 9.71836C16.1 10.5623 16.5833 11.7066 16.5833 12.9ZM23 18.3C23 19.0161 22.7101 19.7026 22.1943 20.209C21.6786 20.7153 20.9793 21 20.25 21H3.75C3.02065 21 2.32139 20.7153 1.80566 20.209C1.28994 19.7026 1 19.0161 1 18.3V8.4C1 7.68392 1.28994 6.99736 1.80566 6.49102C2.32139 5.98467 3.02065 5.7 3.75 5.7H6.92611L8.4873 3.40078L8.55623 3.31201C8.72911 3.11535 8.98172 3 9.25 3H14.75L14.8637 3.00703C15.1262 3.03922 15.3639 3.18167 15.5127 3.40078L17.0739 5.7H20.25C20.9793 5.7 21.6786 5.98467 22.1943 6.49102C22.7101 6.99736 23 7.68392 23 8.4V18.3Z",fill:"currentColor"})})}function W_(e){return(0,rE.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",...e,children:(0,rE.jsx)("path",{d:"M8.21723 14.9975C8.10298 14.997 7.99004 14.9731 7.8854 14.9272C7.78077 14.8814 7.68665 14.8145 7.60889 14.7308L3.55889 10.4225C3.4075 10.2611 3.3264 10.0463 3.33343 9.82513C3.34046 9.604 3.43505 9.39471 3.59639 9.24332C3.75773 9.09192 3.97261 9.01082 4.19374 9.01785C4.41488 9.02489 4.62417 9.11948 4.77556 9.28082L8.20889 12.9392L15.2172 5.27248C15.2883 5.18392 15.3768 5.11083 15.4772 5.0577C15.5776 5.00458 15.6878 4.97254 15.8011 4.96355C15.9143 4.95456 16.0282 4.96882 16.1357 5.00544C16.2432 5.04207 16.3421 5.10029 16.4263 5.17652C16.5105 5.25276 16.5782 5.3454 16.6253 5.44877C16.6724 5.55213 16.6979 5.66403 16.7001 5.7776C16.7024 5.89116 16.6815 6.00399 16.6385 6.10916C16.5956 6.21433 16.5316 6.30961 16.4506 6.38915L8.83389 14.7225C8.75686 14.8077 8.66308 14.8761 8.55841 14.9234C8.45373 14.9707 8.34042 14.996 8.22556 14.9975H8.21723Z",fill:"currentColor"})})}function WL(e){return(0,rE.jsxs)("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:[(0,rE.jsx)("g",{clipPath:"url(#clip0_3784_10212)",children:(0,rE.jsx)("path",{d:"M13.4104 11.9958L17.7104 7.70579C17.8036 7.61255 17.8776 7.50186 17.928 7.38004C17.9785 7.25822 18.0045 7.12765 18.0045 6.99579C18.0045 6.86393 17.9785 6.73336 17.928 6.61154C17.8776 6.48972 17.8036 6.37903 17.7104 6.28579C17.6171 6.19255 17.5064 6.11859 17.3846 6.06813C17.2628 6.01767 17.1322 5.9917 17.0004 5.9917C16.8685 5.9917 16.7379 6.01767 16.6161 6.06813C16.4943 6.11859 16.3836 6.19255 16.2904 6.28579L12.0004 10.5858L7.71036 6.28579C7.52206 6.09749 7.26666 5.9917 7.00036 5.9917C6.73406 5.9917 6.47866 6.09749 6.29036 6.28579C6.10206 6.47409 5.99627 6.72949 5.99627 6.99579C5.99627 7.26209 6.10206 7.51749 6.29036 7.70579L10.5904 11.9958L6.29036 16.2858C6.19651 16.3787 6.12201 16.4893 6.07116 16.6111C6.02032 16.733 5.99414 16.8637 5.99414 16.9958C5.99414 17.1278 6.02032 17.2586 6.07116 17.3804C6.12201 17.5023 6.19651 17.6129 6.29036 17.7058C6.38332 17.7995 6.49392 17.8739 6.61578 17.9247C6.73764 17.9754 6.86835 18.0016 7.00036 18.0016C7.13237 18.0016 7.26308 17.9754 7.38494 17.9247C7.5068 17.8739 7.6174 17.7995 7.71036 17.7058L12.0004 13.4058L16.2904 17.7058C16.4067 17.8236 16.5505 17.9107 16.7087 17.9593C16.867 18.0079 17.0349 18.0165 17.1973 17.9843C17.3597 17.9521 17.5116 17.8801 17.6394 17.7748C17.7671 17.6695 17.8668 17.5341 17.9294 17.3808C18.0058 17.1971 18.0257 16.9948 17.9865 16.7997C17.9473 16.6047 17.8508 16.4257 17.7094 16.2858L13.4104 11.9958Z",fill:"currentColor"})}),(0,rE.jsx)("defs",{children:(0,rE.jsx)("clipPath",{id:"clip0_3784_10212",children:(0,rE.jsx)("rect",{width:"24",height:"24",fill:"white"})})})]})}function WN(e){return(0,rE.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",...e,children:[(0,rE.jsx)("path",{d:"M14.3102 16.38L13.0002 17.64V12C13.0002 11.7348 12.8948 11.4804 12.7073 11.2929C12.5197 11.1053 12.2654 11 12.0002 11C11.735 11 11.4806 11.1053 11.2931 11.2929C11.1055 11.4804 11.0002 11.7348 11.0002 12V17.59L9.71018 16.29C9.56958 16.15 9.39071 16.0548 9.1961 16.0163C9.00149 15.9779 8.79984 15.9978 8.61656 16.0738C8.43329 16.1497 8.27658 16.2781 8.16618 16.443C8.05578 16.6078 7.99663 16.8016 7.99618 17C7.99616 17.1318 8.02212 17.2624 8.07256 17.3842C8.12301 17.506 8.19695 17.6167 8.29018 17.71L11.2902 20.71C11.4758 20.8945 11.7264 20.999 11.9881 21.0008C12.2499 21.0027 12.5019 20.9019 12.6902 20.72L15.6902 17.82C15.796 17.7323 15.8827 17.6237 15.9448 17.5011C16.0069 17.3785 16.0431 17.2444 16.0512 17.1072C16.0593 16.97 16.039 16.8325 15.9917 16.7035C15.9444 16.5744 15.871 16.4565 15.7762 16.357C15.6811 16.2574 15.5664 16.1786 15.4394 16.1255C15.3124 16.0723 15.1758 16.046 15.0382 16.0482C14.9005 16.0503 14.7648 16.0809 14.6395 16.138C14.5142 16.1951 14.4021 16.2775 14.3102 16.38Z",fill:"currentColor"}),(0,rE.jsx)("path",{d:"M17.6704 6.999C17.2623 5.82006 16.497 4.79762 15.4807 4.07397C14.4645 3.35031 13.2479 2.96143 12.0004 2.96143C10.7528 2.96143 9.53628 3.35031 8.52005 4.07397C7.50381 4.79762 6.73842 5.82006 6.33038 6.999C5.43194 7.11934 4.5831 7.48166 3.87468 8.0472C3.16627 8.61274 2.62492 9.36022 2.30855 10.2097C1.99218 11.0592 1.91269 11.9787 2.07859 12.8698C2.24449 13.761 2.64953 14.5903 3.25038 15.269C3.32296 15.3968 3.42284 15.5071 3.54289 15.592C3.66295 15.6768 3.80023 15.7341 3.94497 15.7599C4.08971 15.7856 4.23834 15.7791 4.38029 15.7408C4.52223 15.7026 4.65399 15.6335 4.76618 15.5385C4.87838 15.4435 4.96825 15.3249 5.0294 15.1912C5.09055 15.0576 5.12147 14.912 5.11996 14.765C5.11845 14.618 5.08455 14.4732 5.02067 14.3408C4.95679 14.2084 4.86451 14.0917 4.75038 13.999C4.3635 13.5665 4.11037 13.031 4.02167 12.4575C3.93297 11.884 4.01252 11.2971 4.25066 10.7679C4.4888 10.2387 4.87532 9.7899 5.36338 9.47593C5.85143 9.16197 6.42007 8.9963 7.00038 8.999H7.10038C7.33433 9.00372 7.56252 8.92625 7.74524 8.78008C7.92796 8.6339 8.05363 8.42828 8.10038 8.199C8.284 7.29477 8.77457 6.48182 9.48898 5.8979C10.2034 5.31398 11.0977 4.99499 12.0204 4.99499C12.9431 4.99499 13.8374 5.31398 14.5518 5.8979C15.2662 6.48182 15.7568 7.29477 15.9404 8.199C15.9871 8.42828 16.1128 8.6339 16.2955 8.78008C16.4782 8.92625 16.7064 9.00372 16.9404 8.999H17.0004C17.5807 8.9963 18.1493 9.16197 18.6374 9.47593C19.1254 9.7899 19.512 10.2387 19.7501 10.7679C19.9883 11.2971 20.0678 11.884 19.9791 12.4575C19.8904 13.031 19.6373 13.5665 19.2504 13.999C19.1623 14.0978 19.0947 14.2131 19.0515 14.3382C19.0083 14.4633 18.9904 14.5957 18.9987 14.7278C19.0071 14.8599 19.0416 14.989 19.1003 15.1077C19.1589 15.2263 19.2405 15.3321 19.3404 15.419C19.5394 15.5938 19.7996 15.6825 20.064 15.6656C20.3283 15.6488 20.5752 15.5277 20.7504 15.329C21.3679 14.6514 21.7873 13.8172 21.9626 12.9173C22.138 12.0175 22.0625 11.0868 21.7446 10.227C21.4267 9.36713 20.8785 8.61124 20.1599 8.04194C19.4414 7.47264 18.5802 7.11185 17.6704 6.999Z",fill:"currentColor"})]})}function WF(e){return(0,rE.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",...e,children:(0,rE.jsx)("path",{d:"M12.0002 15.496C11.8686 15.4968 11.7381 15.4716 11.6163 15.4218C11.4944 15.372 11.3836 15.2987 11.2902 15.206L7.29019 11.206C7.10188 11.0177 6.99609 10.7623 6.99609 10.496C6.99609 10.2297 7.10188 9.97434 7.29019 9.78604C7.47849 9.59773 7.73388 9.49194 8.00019 9.49194C8.26649 9.49194 8.52188 9.59773 8.71019 9.78604L12.0002 13.096L15.3002 9.91604C15.3922 9.81375 15.5043 9.73154 15.6295 9.67455C15.7547 9.61756 15.8903 9.58703 16.0279 9.58485C16.1654 9.58267 16.302 9.60889 16.4289 9.66189C16.5559 9.71488 16.6705 9.79349 16.7657 9.89282C16.8609 9.99214 16.9346 10.11 16.9821 10.2391C17.0297 10.3682 17.0501 10.5057 17.042 10.6431C17.034 10.7804 16.9977 10.9146 16.9355 11.0373C16.8732 11.16 16.7863 11.2685 16.6802 11.356L12.6802 15.216C12.4973 15.3924 12.2542 15.4925 12.0002 15.496Z",fill:"currentColor"})})}function WO(e){return(0,rE.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",...e,children:[(0,rE.jsx)("path",{d:"M21.25 12C21.25 6.89137 17.1086 2.75 12 2.75C6.89137 2.75 2.75 6.89137 2.75 12C2.75 17.1086 6.89137 21.25 12 21.25C17.1086 21.25 21.25 17.1086 21.25 12ZM22.75 12C22.75 17.9371 17.9371 22.75 12 22.75C6.06294 22.75 1.25 17.9371 1.25 12C1.25 6.06294 6.06294 1.25 12 1.25C17.9371 1.25 22.75 6.06294 22.75 12Z",fill:"currentColor"}),(0,rE.jsx)("path",{d:"M2.51074 11.4512C4.93062 13.704 8.34578 14.76 11.8662 14.75C15.3868 14.74 18.9326 13.6626 21.5586 11.75L22.4414 12.9619C19.5314 15.0814 15.6692 16.2392 11.8701 16.25C8.07098 16.2607 4.25427 15.1229 1.48926 12.5488L2.51074 11.4512Z",fill:"currentColor"}),(0,rE.jsx)("path",{d:"M12.064 2.5332C9.97218 4.60314 8.74951 8.13693 8.74367 11.8135C8.7379 15.4824 9.94419 19.1271 12.4976 21.4443L11.4898 22.5557C8.53343 19.873 7.23749 15.7674 7.24367 11.8115C7.24989 7.86332 8.55333 3.89687 11.0093 1.4668L12.064 2.5332Z",fill:"currentColor"})]})}function WQ(e){return(0,rE.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 13.3333 13.3343",fill:"none",...e,children:(0,rE.jsx)("path",{d:"M12.6667 2.66759H9.33333V1.55425C9.31769 1.12747 9.13347 0.724291 8.82105 0.433114C8.50862 0.141937 8.0935 -0.0134857 7.66667 0.000918958H5.66667C5.23984 -0.0134857 4.82471 0.141937 4.51229 0.433114C4.19986 0.724291 4.01564 1.12747 4 1.55425V2.66759H0.666667C0.489856 2.66759 0.320286 2.73782 0.195262 2.86285C0.0702379 2.98787 0 3.15744 0 3.33425C0 3.51106 0.0702379 3.68063 0.195262 3.80566C0.320286 3.93068 0.489856 4.00092 0.666667 4.00092H1.33333V11.3343C1.33333 11.8647 1.54405 12.3734 1.91912 12.7485C2.29419 13.1235 2.8029 13.3343 3.33333 13.3343H10C10.5304 13.3343 11.0391 13.1235 11.4142 12.7485C11.7893 12.3734 12 11.8647 12 11.3343V4.00092H12.6667C12.8435 4.00092 13.013 3.93068 13.1381 3.80566C13.2631 3.68063 13.3333 3.51106 13.3333 3.33425C13.3333 3.15744 13.2631 2.98787 13.1381 2.86285C13.013 2.73782 12.8435 2.66759 12.6667 2.66759ZM5.33333 1.55425C5.33333 1.44759 5.47333 1.33425 5.66667 1.33425H7.66667C7.86 1.33425 8 1.44759 8 1.55425V2.66759H5.33333V1.55425ZM10.6667 11.3343C10.6667 11.5111 10.5964 11.6806 10.4714 11.8057C10.3464 11.9307 10.1768 12.0009 10 12.0009H3.33333C3.15652 12.0009 2.98695 11.9307 2.86193 11.8057C2.7369 11.6806 2.66667 11.5111 2.66667 11.3343V4.00092H10.6667V11.3343Z",fill:"currentColor"})})}function WU(e){return(0,rE.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",...e,children:[(0,rE.jsx)("path",{d:"M18 3H6C5.20435 3 4.44129 3.31607 3.87868 3.87868C3.31607 4.44129 3 5.20435 3 6V18C3 18.7956 3.31607 19.5587 3.87868 20.1213C4.44129 20.6839 5.20435 21 6 21H18C18.7956 21 19.5587 20.6839 20.1213 20.1213C20.6839 19.5587 21 18.7956 21 18V6C21 5.20435 20.6839 4.44129 20.1213 3.87868C19.5587 3.31607 18.7956 3 18 3ZM6 5H18C18.2652 5 18.5196 5.10536 18.7071 5.29289C18.8946 5.48043 19 5.73478 19 6V14.36L15.8 11.63C15.3042 11.222 14.6821 10.999 14.04 10.999C13.3979 10.999 12.7758 11.222 12.28 11.63L5 17.7V6C5 5.73478 5.10536 5.48043 5.29289 5.29289C5.48043 5.10536 5.73478 5 6 5ZM18 19H6.56L13.56 13.16C13.6945 13.0602 13.8575 13.0062 14.025 13.0062C14.1925 13.0062 14.3555 13.0602 14.49 13.16L19 17V18C19 18.2652 18.8946 18.5196 18.7071 18.7071C18.5196 18.8946 18.2652 19 18 19Z",fill:"currentColor"}),(0,rE.jsx)("path",{d:"M7.99983 9.99992C8.39766 9.99992 8.77919 9.84188 9.06049 9.56058C9.34179 9.27927 9.49983 8.89774 9.49983 8.49992C9.49983 8.10209 9.34179 7.72056 9.06049 7.43925C8.77919 7.15795 8.39766 6.99992 7.99983 6.99992C7.60201 6.99992 7.22047 7.15795 6.93917 7.43925C6.65787 7.72056 6.49983 8.10209 6.49983 8.49992C6.49983 8.89774 6.65787 9.27927 6.93917 9.56058C7.22047 9.84188 7.60201 9.99992 7.99983 9.99992Z",fill:"currentColor"})]})}function Wz(e){return(0,rE.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",...e,children:[(0,rE.jsx)("path",{d:"M12 2C11.7348 2 11.4804 2.10536 11.2929 2.29289C11.1054 2.48043 11 2.73478 11 3V5C11 5.26522 11.1054 5.51957 11.2929 5.70711C11.4804 5.89464 11.7348 6 12 6C12.2652 6 12.5196 5.89464 12.7071 5.70711C12.8946 5.51957 13 5.26522 13 5V3C13 2.73478 12.8946 2.48043 12.7071 2.29289C12.5196 2.10536 12.2652 2 12 2Z",fill:"currentColor"}),(0,rE.jsx)("path",{d:"M21.0002 11H19.0002C18.735 11 18.4806 11.1054 18.2931 11.2929C18.1055 11.4804 18.0002 11.7348 18.0002 12C18.0002 12.2652 18.1055 12.5196 18.2931 12.7071C18.4806 12.8946 18.735 13 19.0002 13H21.0002C21.2654 13 21.5197 12.8946 21.7073 12.7071C21.8948 12.5196 22.0002 12.2652 22.0002 12C22.0002 11.7348 21.8948 11.4804 21.7073 11.2929C21.5197 11.1054 21.2654 11 21.0002 11Z",fill:"currentColor"}),(0,rE.jsx)("path",{d:"M6 12C6 11.7348 5.89464 11.4804 5.70711 11.2929C5.51957 11.1054 5.26522 11 5 11H3C2.73478 11 2.48043 11.1054 2.29289 11.2929C2.10536 11.4804 2 11.7348 2 12C2 12.2652 2.10536 12.5196 2.29289 12.7071C2.48043 12.8946 2.73478 13 3 13H5C5.26522 13 5.51957 12.8946 5.70711 12.7071C5.89464 12.5196 6 12.2652 6 12Z",fill:"currentColor"}),(0,rE.jsx)("path",{d:"M6.22009 5.00298C6.02357 4.82786 5.76656 4.7362 5.50358 4.74744C5.2406 4.75869 4.99234 4.87196 4.8115 5.06322C4.63065 5.25447 4.53143 5.50867 4.5349 5.77187C4.53838 6.03507 4.64426 6.28656 4.83009 6.47298L6.27009 7.86298C6.36673 7.95629 6.48117 8.02917 6.60659 8.07728C6.73201 8.12538 6.86584 8.14773 7.00009 8.14298C7.1348 8.14246 7.26801 8.11474 7.39173 8.06147C7.51546 8.0082 7.62714 7.93048 7.72009 7.83298C7.90634 7.64561 8.01088 7.39216 8.01088 7.12798C8.01088 6.86379 7.90634 6.61034 7.72009 6.42298L6.22009 5.00298Z",fill:"currentColor"}),(0,rE.jsx)("path",{d:"M17 8.14285C17.2575 8.14182 17.5047 8.04153 17.69 7.86285L19.13 6.47285C19.3057 6.2893 19.4049 6.04577 19.4075 5.79172C19.4102 5.53767 19.316 5.29214 19.1441 5.10502C18.9723 4.91789 18.7356 4.80319 18.4823 4.78421C18.2289 4.76524 17.9779 4.84341 17.78 5.00285L16.34 6.42285C16.1538 6.61021 16.0493 6.86366 16.0493 7.12785C16.0493 7.39203 16.1538 7.64548 16.34 7.83285C16.5132 8.01557 16.7489 8.12627 17 8.14285Z",fill:"currentColor"}),(0,rE.jsx)("path",{d:"M12 17.9999C11.7348 17.9999 11.4804 18.1053 11.2929 18.2928C11.1054 18.4803 11 18.7347 11 18.9999V20.9999C11 21.2651 11.1054 21.5195 11.2929 21.707C11.4804 21.8946 11.7348 21.9999 12 21.9999C12.2652 21.9999 12.5196 21.8946 12.7071 21.707C12.8946 21.5195 13 21.2651 13 20.9999V18.9999C13 18.7347 12.8946 18.4803 12.7071 18.2928C12.5196 18.1053 12.2652 17.9999 12 17.9999Z",fill:"currentColor"}),(0,rE.jsx)("path",{d:"M17.7302 16.1399C17.5392 15.9556 17.2829 15.8547 17.0175 15.8594C16.7521 15.864 16.4995 15.974 16.3152 16.1649C16.1309 16.3559 16.0299 16.6122 16.0346 16.8776C16.0393 17.143 16.1492 17.3956 16.3402 17.5799L17.7802 18.9999C17.9702 19.1835 18.2251 19.2845 18.4893 19.2808C18.7535 19.277 19.0055 19.1688 19.1902 18.9799C19.2837 18.8868 19.3579 18.7762 19.4085 18.6543C19.4591 18.5325 19.4851 18.4019 19.4851 18.2699C19.4851 18.138 19.4591 18.0073 19.4085 17.8855C19.3579 17.7637 19.2837 17.653 19.1902 17.5599L17.7302 16.1399Z",fill:"currentColor"}),(0,rE.jsx)("path",{d:"M6.27011 16.141L4.83011 17.531C4.73638 17.624 4.66198 17.7346 4.61121 17.8564C4.56045 17.9783 4.53431 18.109 4.53431 18.241C4.53431 18.373 4.56045 18.5037 4.61121 18.6256C4.66198 18.7474 4.73638 18.858 4.83011 18.951C4.9239 19.0467 5.03596 19.1226 5.15965 19.1741C5.28333 19.2256 5.41612 19.2518 5.55011 19.251C5.79662 19.2531 6.03522 19.1641 6.22011 19.001L7.66011 17.611C7.75466 17.5197 7.83031 17.4107 7.88273 17.2902C7.93516 17.1697 7.96334 17.0401 7.96566 16.9087C7.96798 16.7773 7.9444 16.6467 7.89626 16.5244C7.84813 16.4022 7.77637 16.2905 7.68511 16.196C7.59384 16.1014 7.48484 16.0258 7.36433 15.9734C7.24383 15.9209 7.11418 15.8928 6.98278 15.8904C6.85139 15.8881 6.72082 15.9117 6.59854 15.9598C6.47626 16.008 6.36466 16.0797 6.27011 16.171V16.141Z",fill:"currentColor"})]})}function Wj(e){return(0,rE.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",...e,children:[(0,rE.jsx)("path",{d:"M20.06 11.0001H3.94C3.6907 11.0001 3.4516 11.0991 3.27532 11.2754C3.09904 11.4517 3 11.6908 3 11.9401V12.0601C3 12.5801 3.42 13.0001 3.94 13.0001H20.06C20.58 13.0001 21 12.5801 21 12.0601V11.9401C21 11.6908 20.901 11.4517 20.7247 11.2754C20.5484 11.0991 20.3093 11.0001 20.06 11.0001Z",fill:"currentColor"}),(0,rE.jsx)("path",{d:"M20.06 15.9999H3.94C3.6907 15.9999 3.4516 16.099 3.27532 16.2752C3.09904 16.4515 3 16.6906 3 16.9399V17.0599C3 17.5799 3.42 17.9999 3.94 17.9999H20.06C20.58 17.9999 21 17.5799 21 17.0599V16.9399C21 16.6906 20.901 16.4515 20.7247 16.2752C20.5484 16.099 20.3093 15.9999 20.06 15.9999Z",fill:"currentColor"}),(0,rE.jsx)("path",{d:"M20.06 6H3.94C3.6907 6 3.4516 6.09904 3.27532 6.27532C3.09904 6.4516 3 6.6907 3 6.94V7.06C3 7.58 3.42 8 3.94 8H20.06C20.58 8 21 7.58 21 7.06V6.94C21 6.6907 20.901 6.4516 20.7247 6.27532C20.5484 6.09904 20.3093 6 20.06 6Z",fill:"currentColor"})]})}function WG(e){return(0,rE.jsxs)("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:[(0,rE.jsx)("g",{clipPath:"url(#clip0_3784_10281)",children:(0,rE.jsx)("path",{d:"M20.739 11.3791L18.039 8.67909C17.955 8.59517 17.8554 8.52861 17.7458 8.48319C17.6361 8.43778 17.5186 8.4144 17.4 8.4144C17.2813 8.4144 17.1638 8.43778 17.0541 8.48319C16.9445 8.52861 16.8449 8.59517 16.761 8.67909C16.6771 8.763 16.6105 8.86262 16.5651 8.97226C16.5197 9.0819 16.4963 9.19941 16.4963 9.31808C16.4963 9.43676 16.5197 9.55427 16.5651 9.66391C16.6105 9.77355 16.6771 9.87317 16.761 9.95708L17.922 11.1001H12.9V6.0691L14.061 7.23909C14.1451 7.32246 14.2448 7.38843 14.3545 7.43322C14.4641 7.478 14.5815 7.50073 14.7 7.50009C14.8787 7.50113 15.0538 7.44891 15.2027 7.35009C15.3517 7.25127 15.4679 7.11032 15.5364 6.94523C15.605 6.78013 15.6228 6.59835 15.5876 6.42308C15.5525 6.24781 15.4659 6.08698 15.339 5.9611L12.639 3.26111C12.4705 3.09326 12.2423 2.99902 12.0045 2.99902C11.7666 2.99902 11.5385 3.09326 11.37 3.26111L8.66999 5.9611C8.58608 6.04442 8.5194 6.14346 8.47376 6.25255C8.42812 6.36164 8.40441 6.47866 8.404 6.59691C8.40358 6.71517 8.42646 6.83235 8.47132 6.94176C8.51619 7.05117 8.58217 7.15068 8.66549 7.23459C8.74882 7.31851 8.84785 7.38519 8.95695 7.43083C9.06604 7.47647 9.18306 7.50017 9.30131 7.50059C9.54014 7.50144 9.76952 7.40737 9.93899 7.23909L11.1 6.0781V11.1001H6.069L7.239 9.93908C7.40847 9.76961 7.50368 9.53975 7.50368 9.30008C7.50368 9.06041 7.40847 8.83056 7.239 8.66109C7.06953 8.49161 6.83967 8.39641 6.6 8.39641C6.36033 8.39641 6.13048 8.49161 5.961 8.66109L3.26101 11.3611C3.17764 11.4452 3.11167 11.5449 3.06689 11.6546C3.0221 11.7642 2.99938 11.8816 3.00002 12.0001C2.99933 12.1185 3.02203 12.2359 3.06682 12.3456C3.11161 12.4552 3.1776 12.555 3.26101 12.6391L5.961 15.3391C6.0451 15.4225 6.14483 15.4885 6.25449 15.5333C6.36414 15.578 6.48156 15.6007 6.6 15.6001C6.77896 15.6015 6.95429 15.5496 7.10354 15.4508C7.25279 15.3521 7.36918 15.211 7.43781 15.0458C7.50643 14.8805 7.52417 14.6985 7.48876 14.5231C7.45334 14.3476 7.36638 14.1868 7.239 14.0611L6.078 12.9001H11.1V17.9311L9.93899 16.7611C9.76952 16.5916 9.53966 16.4964 9.29999 16.4964C9.06032 16.4964 8.83047 16.5916 8.661 16.7611C8.49152 16.9305 8.39631 17.1604 8.39631 17.4001C8.39631 17.6397 8.49152 17.8696 8.661 18.0391L11.361 20.739C11.5297 20.9065 11.7578 21.0004 11.9955 21.0004C12.2332 21.0004 12.4612 20.9065 12.63 20.739L15.33 18.0391C15.4139 17.9551 15.4805 17.8555 15.5259 17.7459C15.5713 17.6362 15.5947 17.5187 15.5947 17.4001C15.5947 17.2814 15.5713 17.1639 15.5259 17.0542C15.4805 16.9446 15.4139 16.845 15.33 16.7611C15.2461 16.6771 15.1464 16.6106 15.0368 16.5652C14.9272 16.5198 14.8096 16.4964 14.691 16.4964C14.5723 16.4964 14.4548 16.5198 14.3452 16.5652C14.2355 16.6106 14.1359 16.6771 14.052 16.7611L12.9 17.9221V12.9001H17.931L16.761 14.0611C16.6558 14.166 16.5781 14.2952 16.5349 14.4374C16.4917 14.5795 16.4843 14.7301 16.5134 14.8758C16.5424 15.0215 16.607 15.1578 16.7013 15.2725C16.7957 15.3873 16.917 15.4769 17.0544 15.5335C17.164 15.5784 17.2815 15.6011 17.4 15.6001C17.5184 15.6008 17.6359 15.5782 17.7455 15.5334C17.8552 15.4886 17.9549 15.4226 18.039 15.3391L20.739 12.6391C20.8224 12.555 20.8884 12.4552 20.9331 12.3456C20.9779 12.2359 21.0006 12.1185 21 12.0001C20.9966 11.7671 20.9031 11.5445 20.739 11.3791Z",fill:"currentColor"})}),(0,rE.jsx)("defs",{children:(0,rE.jsx)("clipPath",{id:"clip0_3784_10281",children:(0,rE.jsx)("rect",{width:"24",height:"24",fill:"currentColor"})})})]})}function WH(e){return(0,rE.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",...e,children:[(0,rE.jsx)("path",{d:"M19.5398 5.08113C18.5372 4.08551 17.3458 3.30019 16.0356 2.77129C14.7253 2.24238 13.3226 1.98054 11.9098 2.00113C9.25763 1.9945 6.71146 3.04171 4.83141 4.91238C2.95135 6.78306 1.89143 9.32396 1.8848 11.9761C1.87817 14.6283 2.92538 17.1745 4.79605 19.0545C6.66673 20.9346 9.20763 21.9945 11.8598 22.0011C12.4313 22.0108 12.9898 21.8305 13.4477 21.4884C13.9057 21.1464 14.237 20.6619 14.3898 20.1111C14.4872 19.7134 14.4862 19.2979 14.3869 18.9006C14.2875 18.5033 14.0929 18.1362 13.8198 17.8311C13.7562 17.7594 13.7146 17.6709 13.7 17.5761C13.6854 17.4814 13.6984 17.3845 13.7374 17.2969C13.7765 17.2094 13.8399 17.1349 13.9201 17.0825C14.0003 17.03 14.0939 17.0018 14.1898 17.0011H15.8398C17.3927 17.0084 18.8909 16.4279 20.0336 15.3761C21.1762 14.3244 21.8786 12.8794 21.9998 11.3311C22.037 10.1767 21.838 9.02692 21.415 7.95218C20.992 6.87745 20.3539 5.90046 19.5398 5.08113ZM15.8798 15.0011H14.2298C13.7479 14.9984 13.2756 15.1355 12.8701 15.3959C12.4647 15.6563 12.1435 16.0288 11.9455 16.4681C11.7476 16.9075 11.6813 17.3948 11.7549 17.8711C11.8284 18.3473 12.0385 18.792 12.3598 19.1511C12.4224 19.2142 12.4666 19.2932 12.4877 19.3795C12.5088 19.4658 12.5061 19.5562 12.4798 19.6411C12.4298 19.8511 12.1998 19.9811 11.8898 20.0011C10.754 19.9869 9.63429 19.7309 8.60516 19.2502C7.57603 18.7695 6.66109 18.0751 5.92126 17.2132C5.18142 16.3513 4.63365 15.3417 4.31441 14.2516C3.99517 13.1615 3.91178 12.016 4.0698 10.8911C4.35496 9.00107 5.29935 7.27276 6.73593 6.01186C8.17251 4.75096 10.0087 4.03873 11.9198 4.00113H11.9998C13.1306 3.98632 14.253 4.19813 15.3007 4.62407C16.3483 5.05001 17.3001 5.68144 18.0998 6.48113C18.7238 7.10552 19.2141 7.85048 19.5407 8.67057C19.8674 9.49066 20.0236 10.3687 19.9998 11.2511C19.8963 12.2742 19.4184 13.2229 18.6579 13.9151C17.8974 14.6072 16.9081 14.994 15.8798 15.0011Z",fill:"currentColor"}),(0,rE.jsx)("path",{d:"M11.9996 8.00025C12.3974 8.00025 12.7789 7.84222 13.0602 7.56091C13.3415 7.27961 13.4996 6.89808 13.4996 6.50025C13.4996 6.10243 13.3415 5.7209 13.0602 5.43959C12.7789 5.15829 12.3974 5.00025 11.9996 5.00025C11.6018 5.00025 11.2202 5.15829 10.9389 5.43959C10.6576 5.7209 10.4996 6.10243 10.4996 6.50025C10.4996 6.89808 10.6576 7.27961 10.9389 7.56091C11.2202 7.84222 11.6018 8.00025 11.9996 8.00025Z",fill:"currentColor"}),(0,rE.jsx)("path",{d:"M15.2496 7.20116C15.079 7.29965 14.9294 7.43079 14.8094 7.58709C14.6895 7.74339 14.6014 7.92179 14.5504 8.1121C14.4994 8.30242 14.4864 8.50092 14.512 8.69627C14.5377 8.89162 14.6016 9.08 14.7001 9.25066C14.7986 9.42131 14.9298 9.57089 15.0861 9.69086C15.2424 9.81084 15.4208 9.89885 15.6111 9.94987C15.8014 10.0009 15.9999 10.0139 16.1952 9.98825C16.3906 9.96256 16.579 9.89865 16.7496 9.80016C17.0944 9.60125 17.3461 9.27352 17.4492 8.88907C17.5524 8.50462 17.4985 8.09494 17.2996 7.75016C17.1007 7.40538 16.773 7.15373 16.3885 7.05059C16.0041 6.94744 15.5944 7.00125 15.2496 7.20016V7.20116Z",fill:"currentColor"}),(0,rE.jsx)("path",{d:"M8.74976 7.20016C8.57904 7.1018 8.39062 7.03803 8.19526 7.01249C7.99989 6.98695 7.80141 7.00014 7.61114 7.0513C7.42088 7.10247 7.24255 7.19061 7.08634 7.31069C6.93014 7.43077 6.79912 7.58045 6.70076 7.75116C6.6024 7.92188 6.53863 8.1103 6.51308 8.30567C6.48754 8.50103 6.50073 8.69951 6.5519 8.88978C6.60306 9.08005 6.6912 9.25837 6.81128 9.41458C6.93137 9.57078 7.08104 9.7018 7.25176 9.80016C7.59654 9.99881 8.00611 10.0524 8.39037 9.94903C8.77464 9.84569 9.10211 9.59394 9.30076 9.24916C9.4994 8.90438 9.55295 8.49481 9.44962 8.11055C9.34629 7.72629 9.09454 7.39881 8.74976 7.20016Z",fill:"currentColor"}),(0,rE.jsx)("path",{d:"M6.15933 11.2603C5.9133 11.4264 5.7221 11.6618 5.60993 11.9366C5.49776 12.2115 5.46967 12.5135 5.52921 12.8043C5.58876 13.0951 5.73326 13.3617 5.94443 13.5704C6.1556 13.779 6.42393 13.9204 6.71546 13.9764C7.00698 14.0325 7.30858 14.0008 7.58208 13.8853C7.85557 13.7699 8.08866 13.5759 8.25183 13.3279C8.415 13.0799 8.50091 12.789 8.49868 12.4922C8.49646 12.1953 8.4062 11.9058 8.23933 11.6603C8.12971 11.4966 7.98873 11.3563 7.82454 11.2475C7.66035 11.1387 7.47622 11.0635 7.28279 11.0263C7.08936 10.9891 6.89047 10.9906 6.69763 11.0308C6.5048 11.0709 6.32183 11.1489 6.15933 11.2603Z",fill:"currentColor"})]})}function WV(e){return(0,rE.jsx)("svg",{fill:"none",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",...e,children:(0,rE.jsx)("path",{d:"M6.05944 11.1406C6.47507 8.23438 8.97819 6 12.0001 6C13.6563 6 15.1563 6.67187 16.2438 7.75625L16.2626 7.775L16.5001 8H15.0032C14.4501 8 14.0032 8.44687 14.0032 9C14.0032 9.55313 14.4501 10 15.0032 10H19.0032C19.5563 10 20.0032 9.55313 20.0032 9V5C20.0032 4.44688 19.5563 4 19.0032 4C18.4501 4 18.0032 4.44688 18.0032 5V6.66875L17.6501 6.33437C16.2032 4.89375 14.2032 4 12.0001 4C7.96882 4 4.63444 6.98125 4.08132 10.8594C4.00319 11.4062 4.38132 11.9125 4.92819 11.9906C5.47507 12.0688 5.98132 11.6875 6.05944 11.1438V11.1406ZM19.9188 13.1406C19.9969 12.5938 19.6157 12.0875 19.0719 12.0094C18.5282 11.9312 18.0188 12.3125 17.9407 12.8562C17.5251 15.7625 15.0219 17.9969 12.0001 17.9969C10.3438 17.9969 8.84382 17.325 7.75632 16.2406L7.73757 16.2219L7.50007 15.9969H8.99694C9.55007 15.9969 9.99694 15.55 9.99694 14.9969C9.99694 14.4437 9.55007 13.9969 8.99694 13.9969L5.00007 14C4.73444 14 4.47819 14.1063 4.29069 14.2969C4.10319 14.4875 3.99694 14.7406 4.00007 15.0094L4.03132 18.9781C4.03444 19.5312 4.48757 19.975 5.04069 19.9688C5.59382 19.9625 6.03757 19.5125 6.03132 18.9594L6.01882 17.35L6.35319 17.6656C7.80007 19.1062 9.79694 20 12.0001 20C16.0313 20 19.3657 17.0187 19.9188 13.1406Z",fill:"currentColor"})})}function WW(e){return(0,rE.jsxs)("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:[(0,rE.jsx)("path",{d:"M20 15.9998C20.5522 15.9998 20.9999 16.4476 21 16.9998V18.9998C20.9999 19.7952 20.6835 20.5584 20.1211 21.1209C19.5585 21.6833 18.7955 21.9998 18 21.9998H6C5.20446 21.9998 4.44149 21.6833 3.87891 21.1209C3.31646 20.5584 3.00012 19.7952 3 18.9998V16.9998C3.00009 16.4476 3.44777 15.9998 4 15.9998C4.55223 15.9998 4.99991 16.4476 5 16.9998V18.9998C5.00012 19.2648 5.1056 19.5194 5.29297 19.7068C5.48048 19.8942 5.7349 19.9998 6 19.9998H18C18.2651 19.9998 18.5195 19.8942 18.707 19.7068C18.8944 19.5194 18.9999 19.2648 19 18.9998V16.9998C19.0001 16.4476 19.4478 15.9998 20 15.9998Z",fill:"currentColor"}),(0,rE.jsx)("path",{d:"M11.3691 3.22437C11.7619 2.90402 12.3409 2.92662 12.707 3.29273L17.707 8.29273C18.0973 8.68328 18.0975 9.31635 17.707 9.7068C17.3166 10.097 16.6834 10.097 16.293 9.7068L13 6.41383V15.9998C12.9997 16.5518 12.552 16.9997 12 16.9998C11.4479 16.9998 11.0003 16.5518 11 15.9998V6.41383L7.70703 9.7068C7.31657 10.097 6.68343 10.097 6.29297 9.7068C5.90252 9.31635 5.90268 8.68328 6.29297 8.29273L11.293 3.29273L11.3691 3.22437Z",fill:"currentColor"})]})}function Wq({className:e,...t}){return(0,rE.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",className:Wy("size-6",e),...t,children:[(0,rE.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M12.0625 1.70412C12.1393 1.70359 12.2136 1.7151 12.2842 1.73439C12.6576 1.76978 13.0261 1.88527 13.3604 2.08303L19.7012 5.84084L19.7031 5.84181C20.1036 6.08032 20.4348 6.42322 20.665 6.83498C20.8952 7.24671 21.0168 7.71415 21.0166 8.19142V8.19338L20.998 15.7403C20.9979 16.1352 20.9124 16.526 20.751 16.8848C20.7319 16.9557 20.7049 17.026 20.667 17.0928C20.6355 17.1482 20.5983 17.1987 20.5576 17.2442C20.3296 17.6 20.023 17.8979 19.6631 18.1133L13.2998 21.9072C12.4738 22.3996 11.4611 22.4004 10.6436 21.917L10.6416 21.916L4.30078 18.1582L4.29883 18.1572C3.91023 17.9258 3.58764 17.5957 3.3584 17.2002C3.35105 17.1885 3.34181 17.1773 3.33496 17.1651C3.32803 17.1526 3.32268 17.1387 3.31641 17.126C3.09976 16.7236 2.98517 16.2703 2.98535 15.8076V15.8057L3.00391 8.25588C3.00603 7.28279 3.51293 6.37777 4.33984 5.88478L10.7021 2.09181C11.0682 1.87369 11.4708 1.75231 11.877 1.72658C11.9365 1.71245 11.999 1.70462 12.0625 1.70412ZM5.16895 7.36818C4.87108 7.54583 4.6844 7.87497 4.68359 8.23635L4.66602 15.3838L9.45801 12.5254C9.51085 12.7718 9.60256 13.0142 9.73535 13.2442C9.90127 13.5315 10.1161 13.7727 10.3633 13.9639L5.49512 16.8662L11.499 20.4248C11.8036 20.6044 12.1738 20.6008 12.4707 20.4238L18.5107 16.8233L13.4971 13.877C13.9543 13.482 14.2391 12.9423 14.3242 12.3672L19.3193 15.3037L19.3379 8.21291L19.3369 8.21388C19.3369 8.03517 19.2923 7.85955 19.2061 7.7051C19.1196 7.55056 18.9947 7.42151 18.8447 7.33205L12.8887 3.80275L12.8535 9.73439C12.3304 9.51037 11.7366 9.46806 11.1738 9.63576L11.21 3.76662L5.16895 7.36818Z",fill:"currentColor"}),(0,rE.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M9.91641 8.60885C11.7928 7.52595 14.1912 8.16845 15.2748 10.0444C16.3582 11.9209 15.7156 14.3211 13.8393 15.4047C11.9627 16.4879 9.56339 15.8446 8.47989 13.9682C7.39671 12.0916 8.03987 9.69227 9.91641 8.60885ZM13.8031 10.894C13.189 9.83118 11.8293 9.46704 10.766 10.0805C9.7026 10.6945 9.33693 12.0551 9.95059 13.1186C10.5646 14.1821 11.9261 14.5469 12.9897 13.9331C14.0529 13.3189 14.4171 11.9575 13.8031 10.894Z",fill:"currentColor"})]})}let WK="var(--v-borders-medium)";function WJ({className:e,variant:t="default",size:r="default",state:n="loading",role:i,"aria-live":a,"aria-label":s,...o}){switch(t){case"logo":{let t="sm"===r?4:5;return(0,rE.jsxs)("svg",{...o,role:i??"status","aria-live":a??"polite","aria-label":s??("success"===n?"Success":"error"===n?"Error":"Loading"),width:"93",height:"91",viewBox:"0 0 93 91",fill:"none",xmlns:"http://www.w3.org/2000/svg","data-slot":"spinner","data-size":r,"data-state":n,className:Wy("spinner-logo shrink-0","sm"===r?"size-9":"size-22",e),children:[(0,rE.jsx)("g",{className:"spinner-logo__intro-shell",children:(0,rE.jsx)("path",{d:"M15.7495 62.7798L46.4936 45.0297M46.4936 45.0297L77.2661 62.5451M46.4936 45.0297L46.7111 9.62225M49.9213 79.4237L74.5719 65.1917C75.6436 64.5705 76.5344 63.6811 77.1541 62.6137C77.7738 61.5462 78.1003 60.3385 78.1007 59.1129L78.1729 30.7811C78.1734 29.5494 77.851 28.3427 77.2373 27.2798C76.6236 26.2169 75.7398 25.3343 74.6729 24.7189L50.1007 10.6155C47.926 9.3694 45.2455 9.37719 43.0689 10.6339L18.4183 24.8659C16.2385 26.1244 14.8946 28.4401 14.8895 30.9447L14.8173 59.2766C14.8168 60.5082 15.1392 61.7149 15.7529 62.7778C16.3666 63.8408 17.2504 64.7233 18.3173 65.3387L42.8895 79.4421C45.0642 80.6882 47.7447 80.6805 49.9213 79.4237Z",className:"spinner-logo__outline spinner-logo__outline--intro",vectorEffect:"sm"===r?void 0:"non-scaling-stroke"})}),(0,rE.jsx)("circle",{className:"spinner-logo__intro-orb",cx:"46.27",cy:"45.8",r:"11.18",fill:"white",stroke:WK,strokeWidth:t,strokeLinecap:"round",strokeLinejoin:"round"}),(0,rE.jsx)("circle",{className:"spinner-logo__result-ring",cx:"46.5",cy:"45.5",r:"33.46",fill:"white",stroke:WK,strokeWidth:t,strokeLinecap:"round",strokeLinejoin:"round"}),(0,rE.jsx)("g",{transform:"translate(27.786 31.4489)",children:(0,rE.jsx)("g",{className:"spinner-logo__result-glyph spinner-logo__result-glyph--success",children:(0,rE.jsx)("path",{d:"M13.6758 28.1023C13.3559 28.101 13.0397 28.0341 12.7467 27.9057C12.4537 27.7772 12.1902 27.59 11.9725 27.3557L0.632479 15.2923C0.208575 14.8406 -0.0185097 14.2389 0.00118164 13.6198C0.020873 13.0006 0.285727 12.4146 0.737479 11.9907C1.18923 11.5668 1.79088 11.3397 2.41006 11.3594C3.02924 11.3791 3.61524 11.6439 4.03915 12.0957L13.6525 22.339L33.2758 0.87233C33.475 0.624349 33.7227 0.419696 34.0038 0.270944C34.2849 0.122191 34.5935 0.0324784 34.9105 0.00731496C35.2276 -0.0178485 35.5464 0.0220682 35.8475 0.124615C36.1485 0.227162 36.4254 0.390174 36.6612 0.603637C36.897 0.8171 37.0866 1.07651 37.2185 1.36593C37.3503 1.65535 37.4216 1.96867 37.428 2.28665C37.4344 2.60463 37.3756 2.92056 37.2555 3.21502C37.1353 3.50949 36.9562 3.77627 36.7291 3.999L15.4025 27.3323C15.1868 27.5709 14.9242 27.7625 14.6311 27.895C14.338 28.0275 14.0208 28.0981 13.6991 28.1023H13.6758Z",fill:WK})})}),(0,rE.jsx)("g",{transform:"translate(32.4879 31.4885)",children:(0,rE.jsx)("g",{className:"spinner-logo__result-glyph spinner-logo__result-glyph--error",children:(0,rE.jsx)("path",{d:"M17.3045 14.0095L27.3378 3.99955C27.5554 3.78199 27.728 3.52371 27.8457 3.23946C27.9635 2.95521 28.0241 2.65055 28.0241 2.34288C28.0241 2.03521 27.9635 1.73055 27.8457 1.4463C27.728 1.16205 27.5554 0.903769 27.3378 0.686213C27.1203 0.468656 26.862 0.296082 26.5778 0.178341C26.2935 0.0606 25.9889 -4.58466e-09 25.6812 0C25.3735 4.58466e-09 25.0689 0.0606 24.7846 0.178341C24.5003 0.296082 24.2421 0.468656 24.0245 0.686213L14.0145 10.7195L4.00451 0.686213C3.56514 0.246838 2.96921 -4.62957e-09 2.34784 0C1.72647 4.62957e-09 1.13055 0.246838 0.691177 0.686213C0.251802 1.12559 0.0049634 1.72151 0.0049634 2.34288C0.00496339 2.96425 0.251802 3.56017 0.691177 3.99955L10.7245 14.0095L0.691177 24.0195C0.472196 24.2363 0.29836 24.4943 0.179723 24.7787C0.0610849 25.063 0 25.3681 0 25.6762C0 25.9843 0.0610849 26.2894 0.179723 26.5737C0.29836 26.8581 0.472196 27.1161 0.691177 27.3329C0.908091 27.5516 1.16616 27.7252 1.4505 27.8436C1.73484 27.9621 2.03982 28.0231 2.34784 28.0231C2.65587 28.0231 2.96085 27.9621 3.24519 27.8436C3.52953 27.7252 3.7876 27.5516 4.00451 27.3329L14.0145 17.2995L24.0245 27.3329C24.296 27.6078 24.6314 27.8111 25.0007 27.9245C25.3701 28.0379 25.7618 28.0579 26.1407 27.9828C26.5197 27.9077 26.8741 27.7397 27.1722 27.4939C27.4703 27.2481 27.7028 26.9322 27.8488 26.5745C28.0272 26.1459 28.0736 25.6738 27.9821 25.2187C27.8907 24.7636 27.6655 24.346 27.3355 24.0195L17.3045 14.0095Z",fill:WK})})})]})}case"default":return(0,rE.jsx)(Wz,{...o,role:i??"status","aria-live":a??"polite","aria-label":s??"Loading","data-slot":"spinner",className:Wy("size-4 animate-spin",e)});default:return t}}let WY="inset-0 h-dvh 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",WX=(0,rx.createContext)(null),WZ=(0,rx.createContext)(null),W$=(0,rx.createContext)(null),W0=(0,rx.createContext)(null),W1=(0,rx.createContext)(null),W2=(0,rx.createContext)(null),W3=(0,rx.createContext)(null);function W9(e,t){let r=(0,rx.use)(e);if(!r)throw Error(`${t} must be used within a RoomViewerProvider`);return r}function W4(){return W9(WX,"useRoomViewerMetadata")}function W5(){return W9(WZ,"useRoomViewerSurface")}function W8(){return W9(W$,"useRoomViewerRooms")}function W6(){return W9(W0,"useRoomViewerResource")}function W7(){return W9(W1,"useRoomViewerSceneState")}function qe(){return W9(W2,"useRoomViewerWallResourceControls")}function qt({className:e,...t}){return(0,rE.jsx)(um,{"data-slot":"label",className:Wy("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 qr({className:e,...t}){return(0,rE.jsx)("div",{"data-slot":"field-group",className:Wy("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 qn=ly("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 qi({className:e,orientation:t="vertical",...r}){return(0,rE.jsx)("div",{role:"group","data-slot":"field","data-orientation":t,className:Wy(qn({orientation:t}),e),...r})}function qa({className:e,...t}){return(0,rE.jsx)(qt,{"data-slot":"field-label",className:Wy("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 qs({className:e,...t}){return(0,rE.jsx)("div",{"data-slot":"field-label",className:Wy("flex w-fit items-center gap-2 text-sm leading-snug font-medium group-data-[disabled=true]/field:opacity-50",e),...t})}function qo({...e}){return(0,rE.jsx)(ht,{"data-slot":"select",...e})}function ql({...e}){return(0,rE.jsx)(ha,{"data-slot":"select-value",...e})}function qc({className:e,size:t="default",children:r,...n}){return(0,rE.jsxs)(hn,{"data-slot":"select-trigger","data-size":t,className:Wy("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,rE.jsx)(hs,{asChild:!0,children:(0,rE.jsx)(WF,{className:"size-6"})})]})}function qu({className:e,children:t,position:r="item-aligned",align:n="center",portalContainer:i,...a}){return(0,rE.jsx)(ho,{container:i,children:(0,rE.jsxs)(hc,{"data-slot":"select-content",className:Wy("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,rE.jsx)(qh,{}),(0,rE.jsx)(hb,{className:Wy("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,rE.jsx)(qp,{})]})})}function qd({className:e,children:t,...r}){return(0,rE.jsxs)(hI,{"data-slot":"select-item",className:Wy("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,rE.jsx)("span",{"data-slot":"select-item-indicator",className:"absolute right-2 flex size-6 items-center justify-center",children:(0,rE.jsx)(hR,{children:(0,rE.jsx)(W_,{className:"size-5"})})}),(0,rE.jsx)(hk,{children:t})]})}function qh({className:e,...t}){return(0,rE.jsx)(hP,{"data-slot":"select-scroll-up-button",className:Wy("flex cursor-default items-center justify-center py-1",e),...t,children:(0,rE.jsx)(uu,{className:"size-4"})})}function qp({className:e,...t}){return(0,rE.jsx)(hL,{"data-slot":"select-scroll-down-button",className:Wy("flex cursor-default items-center justify-center py-1",e),...t,children:(0,rE.jsx)(ud,{className:"size-4"})})}var qf=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,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AAAJNklEQVR42u3csVLlOhBFUXXX/f9fFgEJVN2Ewga5z1rRy96MbUlbEkOttfYCAKK0RwAAAgAAEAAAgAAAAAQAACAAAAABAAAIAABAAAAAAgAAEAAAgAAAAAQAACAAAAABAAAIAABAAAAAAgAABAAAIAAAAAEAAAgAAEAAAAACAAAQAACAAAAABAAAIAAAAAEAAAgAAEAAAAACAAAQAACAAAAABAAACAAAQAAAAAIAABAAAIAAAAAEAAAgAAAAAQAACAAAQAAAAAIAABAAAIAAAAAEAAAgAAAAAQAACAAAEAAAgAAAAAQAACAAAAABAAAIAABAAAAAAgAAEAAAgAAAAAQAACAAAAABAAAIAABAAAAAAgAAEAAAIAAAAAEAAAgAAEAAAAACAAAQAACAAAAABAAAIAAAAAEAAAgAAEAAAAACAAAQAACAAAAABAAAIAAAQAB4BAAgAAAAAQAACAAAQAAAAAIAABAAAIAAAAAEAAAgAAAAAQAACAAAQAAAAAIAABAAAIAAAAAEAAAgAABAAAAAAgAAEAAAgAAAAAQAACAAAAABAAAIAABAAAAAAgAAEAAAgAAAAAQAACAAAAABAAAIAABAAACAAAAABAAAIAAAAAEAAAgAAEAAAAACAAAQAACAAAAABAAAIAAAAAEAAAgAAEAAAAACAAAQAACAAAAAAQAACAAAQAAAAAIAABAAAIAAAAAEAAAgAAAAAQAACAAAQAAAAAIAABAAAIAAAAAEAAAgAAAAAQAAAgAAEAAAgAAAAAQAACAAAAABAAAIAABAAAAAAgAAEAAAgAAAAAQAACAAAAABAAAIAABAAAAAAgAABIBHAAACAAAQAACAAAAABAAAIAAAAAEAAAgAAEAAAAACAAAQAACAAAAABAAAIAAAAAEAAAgAAEAAAAACAAAEAAAgAAAAAQAACAAAQAAAAAIAABAAAIAAAAAEAAAgAAAAAQAACAAAQAAAAAIAABAAAIAAAAAEAAAIAABAAAAAAgAAEAAAgAAAAAQAACAAAAABAAAIAABAAAAAAgAAEAAAgAAAAAQAACAAAAABAAAIAAAQAACAAAAABAAAIAAAAAEAAAgAAEAAAAACAAAQAACAAAAABAAAIAAAAAEAAAgAAEAAAAACAAAQAAAgAAAAAQAACAAAQAAAAAIAABAAAIAAAAAEAAAgAAAAAQAACAAAQAAAAAIAABAAAIAAAAAEAAAgAABAAHgEACAAAAABAAAIAABAAAAAAgAAEAAAgAAAAAQAACAAAAABAAAIAABAAAAAAgAAEAAAgAAAAAQAACAAAEAAAAACAAAQAACAAAAABAAAIAAAAAEAAAgAAEAAAAACAAAQAACAAAAABAAAIAAAAAEAAAgAAEAAAIAAAAAEAAAgAAAAAQAACAAAQAAAAAIAABAAAIAAAAAEAAAgAAAAAQAACAAAQAAAAAIAABAAAIAAAAABAAAIAABAAAAAAgAAEAAAgAAAAAQAACAAAAABAAAIAABAAAAAAgAAEAAAgAAAAAQAACAAAAABAAACAAAQAADAdC+PAK5RX/57exzAA+YscxX8csF/x8AClisAmLXw1wWBALBcAcC9O/PtiA3A/MTcY/f1B0fy9Y//bwAnAFjglTaAAMDiLgIAzElY3NddR/F1wJ8BwAkAFn3VDbD8M0B4QLSIJ0AAYCH1DAEEAJy88JYIAAQAZEVAOQkA/DwSPpxZ9gF/TwMREAAIgFAGI7BcAWDx92wBBACIAAABACIAQACACAAQACACAAQAiAAAAYDFyHMHBAAgAgABAIgAQAAAIgAQAIAIAAQAFh28D0AAACIAEACACAAEACACAAGABQbvCBAAgAgABAAgAgABAIgAQAAAIgAQAFhI8O4AAQCIAEAAfJ8ITYaIAICgAKg3IWBSRAQAAgAsGt4nIABMemA8AAJg5GS3vX9EABDqlfiXtvDDZwQYC8+MNu8NAWCXAyIgcP4qIYAAuGfxV9qIAJ4wZwkBBMCNg8/kiAjg9BNKIYBxf9PR/zZBsfx8DM8ZU94jTgAAO4LAiHYiQOR4LzVt949v3rjxLskKgDKILP745o0V75PlCgCwOxDHrgWYPcZLPdv949s3JrxXnABgosMuwThwIsDwse2f1pj08P379r1fwgKgDBATIMaA7907ZrkCwESIHYNv3dUAs08AShmbELFL9H2b98gKgDIYTIxYGHzX5j2WKwBMjsTsHnzTrgUIPQEoNWySJGp36Ft2IoAAOGYy2J4N3DoefMtCAAFw9KSwPRO4ZCz4joUAAuBxE8T2LODHY8E3LAQQAKMmjG3BxyLgG/YNIAAsgNtiT+gC4DtGCAgAO2AAIcBh2uIPgDlcAPhwALhlLjefCwAAhAACwO4fQAggACz+AEIAVwAACAFCAsBHACAEcAIAgBBgegB44QAIgbAA8JIBsD64AgAApwHTA8BLBUAIOAEAACEwPQC8QACEgBMAABAC0wPAywJACIQFgBcEgBBwBQAAQmB6AHgZAAgBJwAAIASmB4AHD4AfQg8LAIs/AE4DXAEAgBCYHgB2/wAIAScAACAEpgeA3T8AQiAsACz+AAgBVwAAIASmB4DdPwBCwAkAAAiB6QFg9w+A3yroBAAAnAZMDwC7fwCEQFgAWPwBEAJnr4euAAAgMATa7h8A8kLACQAABIZA2/0DQF4ItMUfAPJCwBUAAASGQNv9A0BeCDgBAIDAXy/cdv8AkHca4AQAAAJDoO3+ASAvBNriDwB5IeAKAAACQ6Dt/gEgLwScAABAYAi03T8A5IVAW/wBIC8EXAEAQOBvFWy7fwDIOw14eSQAkHca0Hb/AJDHzwAAgACw+weA+ACw+AOAKwAAYHoA2P0DgBMAAGB6ANj9A0BYAFj8AcAVAAAwPQDs/gHACQAAMD0A7P4BwAkAADA9AOz+ASAsACz+AOAKAAAQAACAAAAABAAAIAAAAAEAAAgAAEAAAAACAAAQAACAAAAABAAAIAAAAAEAAAgAAEAAAAACAAAEAAAgAAAAAQAACAAAQAAAAAIAABAAAIAAAAAEAAAgAAAAAQAACAAAQAAAAAIAABAAAIAAAAAEAAAIAABAAAAAAgAAEAAAgAAAAAQAACAAAAABAAAIAABAAAAAAgAAEAAAwBU+ACrIaMn6kH4UAAAAAElFTkSuQmCC"},"shading":{"width":128,"height":128,"neutral":128,"dataPng":"data:image/png;base64,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"}}'),qA=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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"}}'),qg=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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"}}'),qm=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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"}}'),qv=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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"}}'),qb=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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"}}'),qy=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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"}}'),qw=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,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAIAAAB7GkOtAAASiUlEQVR4nO3d63biOrYG0GDq/d8Y54yTdGfQhJBgJHtd5vy1d1UlyLa8Pkm+cHrLaVmWo5sA8KrT6fR2HGUUoCkBANCUAABoSgAANCUAAJoSAABNCQCApgQAQFMCAKApAQDQlAAAaEoAADQlAACaEgAATQkAgKYEAEBTAgCgKQEA0JQAAGhKAAA0JQAAmhIAAE0JAICmBABAUwIAoCkBANCUAABoSgAANCUAAJoSAABNCQCApgQAQFMCAKApAQDQlAAAaEoAADQlAACaEgAATQkAgKYEAEBTAgCgKQEA0JQAAGhKAAA0JQAAmhIAAE0JAICmBABAUwIAoCkBANCUAABoSgAANCUAAJoSAABNCQCApgQAQFMCAKApAQDQlAAAaEoAADQlAACaEgAATQkAgKYEAEBTAgCgKQEA0JQAAGgqawCs63p0EwByyxoAALxIAAA0JQAAmhIAAE0JAICmBABAUwIAoCkBANCUAABoSgAANCUAAJoSAABNCQCApgQAQFMCAKApAQDQlAAAaEoAADQlAACaEgAATQkAgKYEAEBTAgCgKQEA0JQAAGhKAAA0JQAAmhIAAE0JAICmBABAUwIAoCkBANCUAABoSgAANCUAAJoSAABNCQCApgQAQFMCAKApAQDQlAAAaEoAADQlAACaEgAATQkAgKYEAEBTAgCgKQEA0JQAAGhKAAA0JQAAmhIAAE0JAICmBABAUwIAoCkBANCUAABoSgAANCUAAJoSAABNCQCApgQAQFMCAKApAQDQlAAAaEoAADQlAACaEgAATQkAgKYEAEBTAgCgKQEA0JQAAGhKAAA0JQAAmhIAAE0JAICmBABAUwIAoCkBANCUAABoSgAANCUAAJpKHADruh7dBIDEEgcAAK8QAABNCQCApgQAQFMCAKApAQDQlAAAaEoAADQlAACaEgAATQkAgKYEAEBTAgCgKQEA0JQAAGhKAAA0JQAAmhIAAE0JAICmBABAUwIAoCkBANCUAABoSgAANCUAAJoSAABN/Tu6AX2t6/r5H8sihoEDKD0ATQkAgKYsAQ1byfliSQdIQQAMq/vf/0oSAJGpUIOrP0AW/xqW7BcH5n+s/ob/QHAtitRNyTZ+B6g/A/ip1n/++YZBuvAAyqg8A/i1WD9bzVV/oJKCM4BJZfqpX+sCABBfwTr1VPE1qAfaKhgAz5IBQE81A2D4Coz1H6Aeper3+m6KAMxwOp22/eDlchnSAAHwH6o8kMLlcjmfz0N+VcG7gD4ty7L5Ls+vNZwNqbB5/eenz7KgBAwf+39SXH6sxbvNCdYP+3wWEMQa4KwXAHGPTbSWAJWG/wJgMMs1wN8Hdk8V9K9/POoCQPEAUI4BHiheIvfMAHkDvP33qt7Yxdvhiz+f1KwxVH9obh1988ikon+tftnaoTTP/gjXgSGFdfSp+pkB85Kg7HMALz4T8NQvn/SbgdTWEV9EeFP9B14BbjEDANjB8rDEPzsG3WH9RwC8yvAfmJQB340d/guAl6j+wM4ZMFa1awB392+BSr2ua4GtAGav/zz1sy1qSrTUBZix/vNscpQKgD0LvfE4MKMK7XP591OdKmaYD2SxxBhBhmhEuup/yMGTcNDWefT9P3UCQGUEarjsuP5TIQD2r/5B5m5AQMuE+jBp+F8hAALyDV/Q2TL0UYB51b9CAMQZj9+8A3bGK2HlCqSwhKlLj+VoZfx9/aA0q9rADoVrw/WD40tnugy4KegWfICnilKcilHnVRBT3/l849kP8iIHICBVCWCK+MO+OjOAnScBz9o2CYjfgYCkRckMYD+qPxDqKbCCARCzaKr+0Nby87n862k+9SGAggEQkFIOBBz+1wyAAgW3wCYAj/16bWD28D/9ReDIV1c+WfwBlucvBT9b/bdNIHIHQHB/L+WKPrSyxhi8qjvHU/2BFxd/tq0XmQFMuY1XTQe2VZLNS//n8/lyuVz/+K/rQgLgESv4wJ5evPB78+OfkfDg36hWw0r58mFac4Dclnj1IVyDovnLrE3pB/4iWqGI1Zqk1X+XtgClLLuUjsdrSorXj1R/YE87PPl1Q/0C2FuQsWOIRiQV5BAC2evG5YgXAQmA7VR/IN3K0s0qkyq2heoPFHgVhAfB/lPN/3g8lH6gxhVgAfDcg9qqPzDWUav/nwTAX6n+QLFVIAHwn69rf3wwfqr+D35KYADR3LwtTpH6vY5vqP5B4h3I4uIrIRP5S32XAUBkAmAuGQCEnQQIgC2v9lTWgW1CVQ8BMP34hTrewIHW36rBzpMAAQCwhyBjweuMcRvoLff2AB1cLhcB8IshFf/zUYMRzQFSWiONHb8mAQJgvOtaH+qoA+me1ZrqX6tXue3PwB9YwxaotxLi1Nk4LQGSuux1L1D6GcBPUwHrMADFA+BucTcMB/hVzUJ51JBf8ACJlC1Y+2eA6g/kugyQfgkoSAao/kAKn/eYfgaMsjWA6g9kVHkGsAOlH8hL/XrV+uHoVgClnHd5GFgAvETpB/IGzNLh210s1AAHWsKUoJuJxb8m+3pZFqN1IIXzXi+Di5JLOyTt1BCWLkAu5/O5zgzg2ElWnCkewB8VKVt/rL/KNHCIJUbxuXnAOP0MIMhuBWpbn1nmzVKX0gdABFkONrCP9bWLgl/j9NlXgxsFgOu0QKVXwp1fjofKAbBPxTf8BxLFw/VPVQsAw3yAt7+9UDp9AKzr+jUG71z9v2+7qQmT+Bq+MtIHQKgEOqoBT/25c5VfbRhLHX4isIEAGODArr9t0nP9U07av+zY8ntpyOxZBqRTJwB2W/+57uJfH/r5Hzv3/lEn7U9/9XhzYp7tz+6Tu5vw/Zf88de+skMeR07n5U3mKRIAB34L/PVHx6yJm91NtZvt3fab/76X9j+yr3ziwNaq+OzgtMeH1PK9eG1bLvj6qc2ZoUYM4SaCgSoNgG6U7B5lj9a8fvnrV4Dt01FKdsdDfO5J+5OGWgTAjFHJzXXU7+skCkoiDtYo9mQu9QPgqzQPj4Ff+7qTAYiseABsLvobfrDw6idQUuWa9b0iz67Rv14fBoijyG2gccbjA7982AP3wFQ1A+Dwr4d8PQM2vOABwjrkSUmaBgBwlAdjlGJPShZQ8GCM6mGv/B69HIivQp2K+V4BGQAEV2QJaFK1fXE1XwYAkalQ97nWCsMZEkXjePxClwWqUt22kw1AakpY0EIvXYDZilwE3qccv/4Gf4A4BMB9d0u8ug+bOX0CckgAmuoVAA/GIN+/1OVw0doDFKPEADQlAP6fsTbQULvC932pR/UHemp6F1CWoj/w62UgCLdTx9E0AICdfR/KXP+JMDiEnQ4cb/1wdCvaEQBAFGJgZ5aA4nImAFMJgFgUffAN8ruxiwNR/eGL02EHAiAK3R1uOClmEwDHc+ELfuLUmEoAAKEZIc0jAIAEZMAMAuAYejM8y1kznAA4gH4M2zh3xhIAu7KaCS9yBg1UIQCydIgs7QSaqBAAKaj+MIqzaRQBMJ1lHxjOOTWEAJhLNwXCEgATqf4wj/Prdd4GesfrryHUNYH4BMBgSj/UsxY9ry0BjVS1l0BMzrgXCYBh9EUgFwEwhuoPpCMABlD94SjOvlcIAICmBABAUwIAoCkBADD94dCYam4V0IfrwJsJgDv0J6ADAQDQlAAAaEoAADQlABpd8Qc2WyqWhYKbBDDDUi4Dqm0PwDxLrQwotTEAsy0f3kooshlAZ/s/u7OUyIAK2wCwvyX/VCB36wGOtWSOgaztBohjyRkD+VoMENOSLQOSNRcgsiXVVCBNQwGyWJJkQI5WAuSyZJgKRG8fQF5L7AwI3TiA7JbAU4GgzQKo9EV+S8gMiNimdGIeWiCUJd5UIFZrjhV8BAEUsETKgEBNAehgCTMVCNEIgG6WADEgAACaxoAAADjYURkgAACaTgWKBMDYG3jcDgQZFThzl30zoEgAANSw7DgVEAAA4ZzP5x0+RQAAdawf3vJ7f38/f5j6KQLgjsNvzgVeUSYG3iZPBf7N+9UAB/rKgO9Dugd/FTYDLpfL8N+cYOMBXnEzG7j+3zXPRGHGVMAMAKgvUaH/dDqd3uZPBcwAgNbWbNkwcCogAIDu1oQZMCQG7swyknr9Ys6L14XS9SHgRpxrwneXgO56akXoJjZcAwC4P4yLkwcPvDIVEAAA9+W6W3QDAXDHuq5VjzcwZIF3eVgisiRH6wB4vGr/7GRwWRaXAaCJ9eNkf/CIWQq9AuDvx+b7v3x2CACUt6Yq900DYNJBuhkCZO8KwF2Fz/Gl/AuhZh+zen0CuDvRrzfpr7Y9h7wL8KfVQIDICtYsQ3KApgEAMMRSfVrf4iIwwNjqv5S4Mlw83/bx1RXKjxeAt/+e6b9ea4xfEMwAAJ6TetR/LXpAARxirVLlHxAAr7qZ5S0fjmsOwF8pVVPIAKhnLTcncA0AoEvFv2GgCtCUAJjFKhB0tmSoAAmamPQYl588AtkJAICmBEDrCSDQWcEipfIC/IXbQCeq8boooKqaAbDP97P/OtVQ94HIrJbMovoDwdWcARxL6QdSKDsDcCkY4DFVcjDDfyALATCS6g+85VmByNHKFFR/IJc6AXBs/VX9gXTqBMCBVH8gozoBsPOim6d8gezqBEDe6zAA106n09sulEiApgQAQFMCAKApAQDQ9OpjmoaGPcCJDjbANcULoKniAbDP8NwkAMhI5RrjfD4f3QSArl8I8/7+vufHXT8A/Fn9z+fz5XLZsw1ASe/v7/s8C1YnAA48PN4GAYwdjO4TAJaARjp9OLoVQHrrLsNKAQAQ0fph6kcIACCBttPrdWYGCACAYWak1LwMEADTr//0HLbAQE6idU4GCIA9Oq7uC0N0PpXWCRkgAACaZoAAGHyf780IZefH06CezqP+2RlQPADUXyhGHqzjMqDyk8BHVf/rDvrZBjkEDM+A119DWXwGcDijFXiFM2jqVEAA7EEnhg5Ou5/pL2aAANhCQYcdONFmZ0DlawA1ev/d6wcDT4xfr0+cTqevf3P936+0n++a766nuvRT/bCDdV23XQ84Fe5A87rIhvr7+M7Rm799fC/p2GHRTw178Cmedt5ZpWJ3t3aPPaEOdDr0RNiQAZWXgFJUpe+NTNFs9lSmS/y0ITGrebrDtGEtqHIAVD3MdFOjPn5xBsXJgKV2lxrb1dq+kLZbhYImGVAkAGZX7aml/3H1VFupweApYAZ0uQtowy0WO/RXpwRw4H1B9WcAzw7kP/+N0vyAnQM15gFdZgDX1K9rbqlmB+VPulPIDfz1lUG9ZgDxxexGEO2pHWfKkKmAAABSkgGvZ4AA2IM1Fl6h0v3E5boXM6BCAKTuAbKB8pVudssP3zmnJIfmewZUCABoIkuhOYSdsyEDBMBhUvfX1I1P7fDRbmT738N9Sng4rjMgfQCk2/tVt8Va1p5Sd5U9k2DqjjqlPQpfGdDxOQAo4Kv6iN7Hnnqxeclyf9e6ru/v7wIgmWK9kLaP8kVo9unqbHr8jR1vFZ1Op9wBUPXAQJlvE8tykp6StHOs9NcAmCRmNeGBniWMpgFQoLtfF9kDN6fAniTmoXyqPcYc+0scAKlFO1EpI+ONiRxFAIQWeUykykTmreZUDgA9O6DIcdVW5KVFZ/HhsgYA8EfqLD8RACE4RZlKB6NOAOTqzRZGgJhSBgDwrP3fkrbhp4yWdiYAoJFotwaFakxD+QJAj4nDsUhqh29omfr76RsAwOvUaPIFgF47iR1LhL6nH+4sWQDUE21N9porcrXF6XhxWtKNADiyhtbr9zKDeiOhwjIFQJn+UWZDyG5GV9S9E8kUAMBw6nVnAiCTgOdqwCZxIP0hlzQBoGPBJE6uttIEAABjCQCApnIEQNIp6t17IpNuC7UN6Zb6djr/jm4AEMJP5duzHYXlmAGQiHpRjK8XLixBAOh5+7Cf2ZYE4iEvS0DAc+6WexmQUfQZgF4F0DQAAJhEAKQRdjIUtmFA4gBQWQCaBkA9Ig2IQwAANBU3AAyW8z5Rlbfl0ErcAMiuRhGssRXAXQIAoKmgAWD9JxfHCzIKGgAAzCYAAJqKGABV1xOqbheQVMQAAKBjABgmAzQNAJKS3JCOAABoKlYAGEUCNA2AMpK+QWFgACfdA9CKAABoKlAA1F7/eXHrau8c4BD/jvlY/kDRB7rMAIhp22q+9IL4ogSAelHA10F0NCEFS0CMpPRDIiFmAKoGQNMAAGB/AgCgqeMDwPoPQNMA6HDfpJADAhIAAE0dHACGxgBHMQMAaEoA8D/MyaCPIwNArQE4kBkAQFMCAKCpwwKgz/pPny0FcjEDGMx34QJZHBMABsUAhzMDAGhKAHDL/Azeevg/KqFvy/OePqYAAAAASUVORK5CYII="},"shading":{"width":128,"height":128,"neutral":128,"dataPng":"data:image/png;base64,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"}}'),qx=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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"}}'),qC=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 qE={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 qS(e){return new URL(`public/room-example/${e}`,"https://cdn.neurodyn.ai/LG8wPakWNRI1O7ssxPuAcY61sOV3nsofvg4tHjAoumHFWIFoX9u0yeIk9K19I8_J55pBcLct6_ytKI9fCz4/").toString()}function qM(e={}){return{...qC,image:{...qC.image,...e}}}let qI=[{id:"room-example-11",name:"Room Example 11",image_url:qS("room-example-11.jpg"),scene:qv},{id:"room-example-12",name:"Room Example 12",image_url:qS("room-example-12.jpg"),scene:qb},{id:"room-example-13",name:"Room Example 13",image_url:qS("room-example-13.jpg"),scene:qy},{id:"room-example-14",name:"Room Example 14",image_url:qS("room-example-14.jpg"),scene:qw},{id:"room-example-15",name:"Room Example 15",image_url:qS("room-example-15.jpg"),scene:qx}],qB=[{id:"carpet-bathroom",name:"Bathroom",image_url:qS("bathroom.jpg"),scene:qf},{id:"carpet-bedroom",name:"Bedroom",image_url:qS("bedroom.jpg"),scene:qA},{id:"carpet-entryway",name:"Entryway",image_url:qS("entryway.jpg"),scene:qg},{id:"carpet-living-room",name:"Living Room",image_url:qS("living-room.jpg"),scene:qm}],qk="RcSd3KphTyq_JQEjNCqKQA,gu0109ftQmS-UQkwcW010Q,nOfGLIZcRVeU93wOkHWSbg,ozzH5I2kQMW20ao-33C86A,DBA4wR-zT92vjtuOk9varg".split(",").map(e=>e.trim()).filter(Boolean);function qT(e,t,{requiresMaterialModel:r,getCollapseKey:n}){var i;let a;return i=e.filter(e=>!!(e.tinuuid&&e.materials?.[0]&&function(e,t){if(!t)return!0;let r=e.materials?.[0]?.native?.glbUrl;return"string"==typeof r&&r.trim().length>0}(e,r)&&!(t?.uuid&&e.uuid===t.uuid||t?.tinuuid&&e.tinuuid===t.tinuuid))),a=new Set,i.filter(e=>{let t=n(e);return!a.has(t)&&(a.add(t),!0)})}let qR="vizbl-rug:";function qD(e){return e.kit?.uuid??e.uuid??e.tinuuid??""}let qP={"sized-design":{offersSizeVariants:!0,decodeVariant:function(e){if(!e?.startsWith(qR))return null;try{let t=JSON.parse(e.slice(qR.length));if("string"!=typeof t.size)return null;return{size:t.size,shape:"round"===t.shape?"round":"rect"}}catch{return null}},getCollapseKey:function(e){return e.kit?.uuid?e.kit.uuid:`object:${qD(e)}`}},"color-design":{offersSizeVariants:!1,decodeVariant:function(e){let t="vizbl-flooring:";if(!e?.startsWith(t))return null;try{let r=JSON.parse(e.slice(t.length));return null!==r&&"object"==typeof r&&"color"in r&&"string"==typeof r.color?{color:r.color}:null}catch{return null}},getCollapseKey:qD},"single-listing":{offersSizeVariants:!1,decodeVariant:null,getCollapseKey:qD}},q_={"product-identity":{catalogsEveryMaterial:!0},finish:{catalogsEveryMaterial:!1},placeholder:{catalogsEveryMaterial:!1}};function qL(e){return qP[Wb[e].composition]}let qN={"modelled-resource":{takesDimensionProps:!1,materialSource:"object-glb",requiresMaterialModel:!0},"textured-resource":{takesDimensionProps:!0,materialSource:"artwork-src",requiresMaterialModel:!1}};function qF(e){return qN[Wb[e].identity]}function qO(e,t,r,n=""){return"material"===Wb[e].productNameSource?r?.name??t?.name??t?.kit?.name??n:t?.kit?.name?.trim()||t?.name?.trim()||r?.name?.trim()||n}function qQ(e){return e.hid??""}function qU({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}=W6(),o=oc({queries:qk.map(e=>({queryKey:Wh(e,{apiKey:n,baseURL:i,source:a}),queryFn:({signal:t})=>Wf(e,{apiKey:n,baseURL:i,signal:t,source:a,widgetSession:s})}))});(0,rx.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,rx.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,rx.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}=W7(),{t:s}=sf();return(0,rE.jsxs)(qi,{className:Wy("w-fit",e),...t,children:[(0,rE.jsx)(qa,{className:"text-xs text-text-sub font-medium",children:s("material")}),(0,rE.jsxs)(qo,{value:r?.hid??void 0,onValueChange:i,children:[(0,rE.jsx)(qc,{className:"w-[145px]",size:"md",children:(0,rE.jsxs)(ql,{placeholder:s("chooseMaterial"),children:[(0,rE.jsx)("div",{className:"size-5 rounded-full border border-border-light",style:{backgroundColor:`#${r?.miniature?.color?.hex}`}}),r?.miniature?.color?.name]})}),(0,rE.jsx)(qu,{portalContainer:a,children:n.map(({material:e,materialId:t,tinuuid:r})=>(0,rE.jsxs)(qd,{value:t,children:[(0,rE.jsx)("div",{className:"size-5 rounded-full border border-border-light",style:{backgroundColor:`#${e?.miniature?.color?.hex}`}}),e.miniature?.color?.name]},`${r}-${t}`))})]})]})}let qz=rx.createContext(null),qj=rx.createContext(null);function qG({value:e,defaultValue:t,onValueChange:r,...n}){let[i,a]=rx.useState(t),s=e??i,o=rx.useMemo(()=>({value:s}),[s]),l=rx.useCallback(t=>{r?.(t),void 0===e&&a(t)},[r,e]);return(0,rE.jsx)(qz,{value:o,children:(0,rE.jsx)(pJ,{"data-slot":"tabs",value:s,onValueChange:l,...n})})}let qH=ly("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"}}),qV=ly("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 qW({className:e,children:t,size:r="default",...n}){let i=rx.use(qz),a=rx.useRef(null),s=rx.useRef(new Map),o=rx.useRef(null),l=rx.useRef(i?.value),c=rx.useRef(null),u=rx.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=rx.useCallback(()=>{null===c.current&&(c.current=requestAnimationFrame(()=>{u()}))},[u]),h=rx.useCallback((e,t)=>{t?s.current.set(e,t):s.current.delete(e),d()},[d]);rx.useLayoutEffect(()=>{l.current=i?.value,null!==c.current&&(cancelAnimationFrame(c.current),c.current=null),u()},[i?.value,u]),rx.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]),rx.useEffect(()=>()=>{null!==c.current&&cancelAnimationFrame(c.current)},[]);let p=rx.useMemo(()=>({registerTrigger:h,size:r}),[h,r]);return(0,rE.jsx)(pX,{ref:a,"data-slot":"tabs-list",className:Wy(qV({size:r}),e),...n,children:(0,rE.jsxs)(qj,{value:p,children:[(0,rE.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 qq({className:e,size:t,children:r,value:n,...i}){let a=rx.use(qj),s=rx.useRef(null),o=t??a?.size??"default",l=Wy("relative z-10 inline-flex items-center justify-center","lg"===o?"gap-1.5":"gap-1");return rx.useLayoutEffect(()=>{if(a&&n)return a.registerTrigger(n,s.current),()=>{a.registerTrigger(n,null)}},[a,n]),(0,rE.jsx)(p$,{ref:s,"data-slot":"tabs-trigger",className:Wy(qH({size:o}),"data-[state=active]:bg-transparent",e),value:n,...i,children:(0,rE.jsx)("span",{"data-slot":"tabs-trigger-content",className:l,children:r})})}function qK(e,t="m"){switch(t){case"cm":return e/100;case"in":return .0254*e;case"m":return e}}function qJ(e,t){switch(t){case"cm":return 100*e;case"in":return e/.0254}}function qY(e){let{t}=sf();return(0,rx.useMemo)(()=>[{value:0,label:t("mattingOptions.none")},{value:.05,label:`${Number(qJ(.05,e).toFixed(2)).toString()} ${t(`units.${e}`)}`}],[e,t])}function qX({className:e,...t}){let{displayUnit:r}=W4(),{matting:n,setMatting:i}=qe(),{t:a}=sf(),s=qY(r);return(0,rE.jsxs)(qi,{className:Wy("w-fit",e),...t,children:[(0,rE.jsx)(qa,{className:"text-xs text-text-sub font-medium",children:a("matting")}),(0,rE.jsx)(qG,{value:n.toString(),onValueChange:e=>i(Number(e)),children:(0,rE.jsx)(qW,{children:s.map(e=>(0,rE.jsx)(qq,{value:e.value.toString(),children:e.label},e.value))})})]})}function qZ({className:e,...t}){return(0,rE.jsx)(fh,{"data-slot":"radio-group",className:Wy("grid gap-3",e),...t})}function q$({checked:e,className:t,...r}){return(0,rE.jsx)("div",{className:Wy("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,rE.jsx)(uh,{className:"text-constant-white size-3.5",strokeWidth:4})})}function q0({className:e,variant:t="default",...r}){return(0,rE.jsxs)(ff,{"data-slot":"radio-group-item",className:Wy("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,rE.jsx)("div",{className:"relative",children:(0,rE.jsx)(q$,{})}),"inverted"!==t&&(0,rE.jsx)(fA,{"data-slot":"radio-group-indicator",className:"relative flex items-center justify-center",children:"check"===t?(0,rE.jsx)(q$,{checked:!0}):(0,rE.jsx)(up,{className:"fill-primary absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2"})})]})}function q1(e){let t=e.image_url;if(!/^https?:\/\//i.test(t))return t;let r=new URL(t);return r.searchParams.set("v","1"),r.href}function q2({className:e,children:t,...r}){let{className:n,onReachEnd:i,...a}=r.swiperOptions??{},{t:s}=sf(),[o,l]=(0,rx.useState)(null),[c,u]=(0,rx.useState)(!0),[d,h]=(0,rx.useState)(!1),[p,f]=(0,rx.useState)(!1),A=(0,rx.useCallback)(e=>{u(e.isBeginning),h(e.isEnd),f(e.isLocked)},[]),g=(0,rx.useCallback)(e=>{l(e),A(e)},[A]),m=(0,rx.useCallback)(e=>{h(!0),i?.(e)},[i]);return(0,rE.jsxs)("div",{className:Wy("relative w-full overflow-hidden",e),children:[(0,rE.jsx)(Ao,{className:Wy("w-full py-5",n),slidesPerView:"auto",slidesPerGroup:2,onSwiper:g,onReachBeginning:()=>u(!0),onReachEnd:m,onFromEdge:A,onLock:()=>f(!0),onUnlock:()=>f(!1),onResize:A,slidesOffsetBefore:24,slidesOffsetAfter:24,spaceBetween:12,...a,children:t}),(0,rE.jsxs)(Wx,{className:Wy("absolute top-1/2 left-8 -translate-y-1/2 z-1",{hidden:c||p}),variant:"contrast",size:"icon",onClick:()=>o?.slidePrev(),children:[(0,rE.jsx)(uf,{}),(0,rE.jsx)("span",{className:"sr-only",children:s("previousSlide")})]}),(0,rE.jsxs)(Wx,{className:Wy("absolute top-1/2 right-8 -translate-y-1/2 z-1",{hidden:d||p}),variant:"contrast",size:"icon",onClick:()=>o?.slideNext(),children:[(0,rE.jsx)(uA,{}),(0,rE.jsx)("span",{className:"sr-only",children:s("nextSlide")})]})]})}function q3({className:e,...t}){let{t:r}=sf(),{rooms:n,room:i,setRoomId:a}=W8(),{isRoomScenePending:s,selectCustomRoomFile:o}=W9(W3,"useRoomViewerCustomRoomIntake"),l=(0,rx.useId)(),c=(0,rx.useCallback)((e,t)=>r(`rooms.${t}`,{defaultValue:e}),[r]),u=(0,rx.useCallback)(async e=>{let t=e.target.files?.[0];e.target.value="",t&&await o(t)},[o]);return(0,rE.jsx)("div",{className:Wy(e),...t,children:(0,rE.jsx)(qZ,{value:i.id,onValueChange:a,children:(0,rE.jsxs)(q2,{swiperOptions:{className:"py-2 sm:py-5 pb-3 sm:pb-5"},children:[(0,rE.jsx)(Al,{className:"sm:w-25! w-21! h-auto",children:(0,rE.jsxs)(qa,{htmlFor:l,className:Wy("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",s&&"cursor-wait opacity-80"),"aria-disabled":s,children:[s?(0,rE.jsxs)(rE.Fragment,{children:[(0,rE.jsx)(WJ,{className:"size-5"}),(0,rE.jsx)("span",{className:"sr-only",children:r("uploadOwnPhoto")})]}):r("uploadOwnPhoto"),(0,rE.jsx)("input",{id:l,type:"file",accept:"image/*",className:"sr-only",disabled:s,onChange:u})]})}),n.map(e=>(0,rE.jsx)(Al,{className:Wy("sm:w-25! w-21! transition-transform duration-200",e.id!==i.id&&"hover:scale-110"),children:(0,rE.jsx)(qa,{htmlFor:`room-${e.id}`,className:"size-full flex flex-col gap-1 has-data-[state=checked]:bg-transparent",children:(0,rE.jsxs)("div",{className:"size-full relative h-17 sm:h-19 rounded-[0.75rem] overflow-hidden",children:[(0,rE.jsx)("img",{crossOrigin:"anonymous",src:q1(e),alt:c(e.name,e.id),className:"size-full object-cover"}),(0,rE.jsx)(q0,{value:e.id,id:`room-${e.id}`,variant:"check",className:Wy("absolute top-1.75 right-1.75",{"sr-only":e.id!==i.id})})]})})},e.id))]})})})}function q9({className:e,...t}){return(0,rE.jsxs)("div",{className:Wy("flex sm:items-end pl-0 overflow-hidden sm:flex-row flex-col py-3 sm:py-0",e),...t,children:[(0,rE.jsx)(q3,{className:"shrink-0 grow"}),(0,rE.jsxs)("div",{className:"hidden gap-5 pr-6 pb-5 md:flex",children:[(0,rE.jsx)(qU,{}),(0,rE.jsx)(qX,{})]})]})}function q4({className:e,...t}){let{name:r}=W4();return(0,rE.jsx)("div",{className:Wy("h-16 flex items-center px-6",e),...t,children:(0,rE.jsx)("div",{className:"truncate",children:r})})}function q5({variant:e,showDialogCloseButton:t=!1}){let{t:r}=sf();return(0,rE.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,rE.jsx)(WD,{className:"size-8 text-icons-light"}),(0,rE.jsx)("h2",{className:"typo-base-16 font-medium text-text-dark",children:r("viewer-load-failed"===e||"artwork-load-failed"===e||"room-load-failed"===e?`loadError.${e}`:`accessError.${e}`)}),t&&(0,rE.jsx)(WS,{asChild:!0,children:(0,rE.jsx)(Wx,{variant:"secondary",children:r("close")})})]})}qW.displayName=pX.displayName,qq.displayName=p$.displayName,p1.displayName;let q8="u"<typeof window;function q6(e,{defaultValue:t=!1,initializeWithValue:r=!0}={}){let[n,i]=rx.useState(()=>{if(r)return q8?t:window.matchMedia(e).matches;return t});return rx.useEffect(()=>{let t=window.matchMedia(e),r=()=>{i(t.matches)};return r(),t.addEventListener("change",r),()=>{t.removeEventListener("change",r)}},[e]),n}let q7={width:void 0,height:void 0};function Ke(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 Kt(e,t,{checkForDefaultPrevented:r=!0}={}){return function(n){if(e?.(n),!1===r||!n.defaultPrevented)return t?.(n)}}function Kr(e,t){if("function"==typeof e)return e(t);null!=e&&(e.current=t)}function Kn(...e){return t=>{let r=!1,n=e.map(e=>{let n=Kr(e,t);return r||"function"!=typeof n||(r=!0),n});if(r)return()=>{for(let t=0;t<n.length;t++){let r=n[t];"function"==typeof r?r():Kr(e[t],null)}}}}function Ki(...e){return rx.useCallback(Kn(...e),e)}function Ka(e,t=[]){let r=[],n=()=>{let t=r.map(e=>rx.createContext(e));return function(r){let n=r?.[e]||t;return rx.useMemo(()=>({[`__scope${e}`]:{...r,[e]:n}}),[r,n])}};return n.scopeName=e,[function(t,n){let i=rx.createContext(n),a=r.length;r=[...r,n];let s=t=>{let{scope:r,children:n,...s}=t,o=r?.[e]?.[a]||i,l=rx.useMemo(()=>s,Object.values(s));return(0,rE.jsx)(o.Provider,{value:l,children:n})};return s.displayName=t+"Provider",[s,function(r,s){let o=s?.[e]?.[a]||i,l=rx.useContext(o);if(l)return l;if(void 0!==n)return n;throw Error(`\`${r}\` must be used within \`${t}\``)}]},function(...e){let t=e[0];if(1===e.length)return t;let r=()=>{let r=e.map(e=>({useScope:e(),scopeName:e.scopeName}));return function(e){let n=r.reduce((t,{useScope:r,scopeName:n})=>{let i=r(e)[`__scope${n}`];return{...t,...i}},{});return rx.useMemo(()=>({[`__scope${t.scopeName}`]:n}),[n])}};return r.scopeName=t.scopeName,r}(n,...t)]}"u">typeof window&&window.document&&window.document.createElement;var Ks=globalThis?.document?rx.useLayoutEffect:()=>{},Ko=rC[" useInsertionEffect ".trim().toString()]||Ks;function Kl({prop:e,defaultProp:t,onChange:r=()=>{},caller:n}){let[i,a,s]=function({defaultProp:e,onChange:t}){let[r,n]=rx.useState(e),i=rx.useRef(r),a=rx.useRef(t);return Ko(()=>{a.current=t},[t]),rx.useEffect(()=>{i.current!==r&&(a.current?.(r),i.current=r)},[r,i]),[r,n,a]}({defaultProp:t,onChange:r}),o=void 0!==e,l=o?e:i;{let t=rx.useRef(void 0!==e);rx.useEffect(()=>{let e=t.current;if(e!==o){let t=o?"controlled":"uncontrolled";console.warn(`${n} is changing from ${e?"controlled":"uncontrolled"} to ${t}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`)}t.current=o},[o,n])}return[l,rx.useCallback(t=>{if(o){let r="function"==typeof t?t(e):t;r!==e&&s.current?.(r)}else a(t)},[o,e,a,s])]}Symbol("RADIX:SYNC_STATE");var Kc=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"].reduce((e,t)=>{let r=ov(`Primitive.${t}`),n=rx.forwardRef((e,n)=>{let{asChild:i,...a}=e;return"u">typeof window&&(window[Symbol.for("radix-ui")]=!0),(0,rE.jsx)(i?r:t,{...a,ref:n})});return n.displayName=`Primitive.${t}`,{...e,[t]:n}},{});function Ku(e,t){e&&(0,am.flushSync)(()=>e.dispatchEvent(t))}function Kd(e){let t=e+"CollectionProvider",[r,n]=Ka(t),[i,a]=r(t,{collectionRef:{current:null},itemMap:new Map}),s=e=>{let{scope:t,children:r}=e,n=rx.useRef(null),a=rx.useRef(new Map).current;return(0,rE.jsx)(i,{scope:t,itemMap:a,collectionRef:n,children:r})};s.displayName=t;let o=e+"CollectionSlot",l=ov(o),c=rx.forwardRef((e,t)=>{let{scope:r,children:n}=e,i=Ki(t,a(o,r).collectionRef);return(0,rE.jsx)(l,{ref:i,children:n})});c.displayName=o;let u=e+"CollectionItemSlot",d="data-radix-collection-item",h=ov(u),p=rx.forwardRef((e,t)=>{let{scope:r,children:n,...i}=e,s=rx.useRef(null),o=Ki(t,s),l=a(u,r);return rx.useEffect(()=>(l.itemMap.set(s,{ref:s,...i}),()=>void l.itemMap.delete(s))),(0,rE.jsx)(h,{...{[d]:""},ref:o,children:n})});return p.displayName=u,[{Provider:s,Slot:c,ItemSlot:p},function(t){let r=a(e+"CollectionConsumer",t);return rx.useCallback(()=>{let e=r.collectionRef.current;if(!e)return[];let t=Array.from(e.querySelectorAll(`[${d}]`));return Array.from(r.itemMap.values()).sort((e,r)=>t.indexOf(e.ref.current)-t.indexOf(r.ref.current))},[r.collectionRef,r.itemMap])},n]}var Kh=rx.createContext(void 0);function Kp(e){let t=rx.useContext(Kh);return e||t||"ltr"}function Kf(e){let t=rx.useRef(e);return rx.useEffect(()=>{t.current=e}),rx.useMemo(()=>(...e)=>t.current?.(...e),[])}var KA="dismissableLayer.update",Kg=rx.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),Km=rx.forwardRef((e,t)=>{let{disableOutsidePointerEvents:r=!1,onEscapeKeyDown:n,onPointerDownOutside:i,onFocusOutside:a,onInteractOutside:s,onDismiss:o,...l}=e,c=rx.useContext(Kg),[u,d]=rx.useState(null),h=u?.ownerDocument??globalThis?.document,[,p]=rx.useState({}),f=Ki(t,e=>d(e)),A=Array.from(c.layers),[g]=[...c.layersWithOutsidePointerEventsDisabled].slice(-1),m=A.indexOf(g),v=u?A.indexOf(u):-1,b=c.layersWithOutsidePointerEventsDisabled.size>0,y=v>=m,w=function(e,t=globalThis?.document){let r=Kf(e),n=rx.useRef(!1),i=rx.useRef(()=>{});return rx.useEffect(()=>{let e=e=>{if(e.target&&!n.current){let n=function(){Kb("dismissableLayer.pointerDownOutside",r,a,{discrete:!0})},a={originalEvent:e};"touch"===e.pointerType?(t.removeEventListener("click",i.current),i.current=n,t.addEventListener("click",i.current,{once:!0})):n()}else t.removeEventListener("click",i.current);n.current=!1},a=window.setTimeout(()=>{t.addEventListener("pointerdown",e)},0);return()=>{window.clearTimeout(a),t.removeEventListener("pointerdown",e),t.removeEventListener("click",i.current)}},[t,r]),{onPointerDownCapture:()=>n.current=!0}}(e=>{let t=e.target,r=[...c.branches].some(e=>e.contains(t));y&&!r&&(i?.(e),s?.(e),e.defaultPrevented||o?.())},h),x=function(e,t=globalThis?.document){let r=Kf(e),n=rx.useRef(!1);return rx.useEffect(()=>{let e=e=>{e.target&&!n.current&&Kb("dismissableLayer.focusOutside",r,{originalEvent:e},{discrete:!1})};return t.addEventListener("focusin",e),()=>t.removeEventListener("focusin",e)},[t,r]),{onFocusCapture:()=>n.current=!0,onBlurCapture:()=>n.current=!1}}(e=>{let t=e.target;![...c.branches].some(e=>e.contains(t))&&(a?.(e),s?.(e),e.defaultPrevented||o?.())},h);return!function(e,t=globalThis?.document){let r=Kf(e);rx.useEffect(()=>{let e=e=>{"Escape"===e.key&&r(e)};return t.addEventListener("keydown",e,{capture:!0}),()=>t.removeEventListener("keydown",e,{capture:!0})},[r,t])}(e=>{v===c.layers.size-1&&(n?.(e),!e.defaultPrevented&&o&&(e.preventDefault(),o()))},h),rx.useEffect(()=>{if(u)return r&&(0===c.layersWithOutsidePointerEventsDisabled.size&&(tR=h.body.style.pointerEvents,h.body.style.pointerEvents="none"),c.layersWithOutsidePointerEventsDisabled.add(u)),c.layers.add(u),Kv(),()=>{r&&1===c.layersWithOutsidePointerEventsDisabled.size&&(h.body.style.pointerEvents=tR)}},[u,h,r,c]),rx.useEffect(()=>()=>{u&&(c.layers.delete(u),c.layersWithOutsidePointerEventsDisabled.delete(u),Kv())},[u,c]),rx.useEffect(()=>{let e=()=>p({});return document.addEventListener(KA,e),()=>document.removeEventListener(KA,e)},[]),(0,rE.jsx)(Kc.div,{...l,ref:f,style:{pointerEvents:b?y?"auto":"none":void 0,...e.style},onFocusCapture:Kt(e.onFocusCapture,x.onFocusCapture),onBlurCapture:Kt(e.onBlurCapture,x.onBlurCapture),onPointerDownCapture:Kt(e.onPointerDownCapture,w.onPointerDownCapture)})});function Kv(){let e=new CustomEvent(KA);document.dispatchEvent(e)}function Kb(e,t,r,{discrete:n}){let i=r.originalEvent.target,a=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:r});t&&i.addEventListener(e,t,{once:!0}),n?Ku(i,a):i.dispatchEvent(a)}Km.displayName="DismissableLayer",rx.forwardRef((e,t)=>{let r=rx.useContext(Kg),n=rx.useRef(null),i=Ki(t,n);return rx.useEffect(()=>{let e=n.current;if(e)return r.branches.add(e),()=>{r.branches.delete(e)}},[r.branches]),(0,rE.jsx)(Kc.div,{...e,ref:i})}).displayName="DismissableLayerBranch";var Ky=0;function Kw(){let e=document.createElement("span");return e.setAttribute("data-radix-focus-guard",""),e.tabIndex=0,e.style.outline="none",e.style.opacity="0",e.style.position="fixed",e.style.pointerEvents="none",e}var Kx="focusScope.autoFocusOnMount",KC="focusScope.autoFocusOnUnmount",KE={bubbles:!1,cancelable:!0},KS=rx.forwardRef((e,t)=>{let{loop:r=!1,trapped:n=!1,onMountAutoFocus:i,onUnmountAutoFocus:a,...s}=e,[o,l]=rx.useState(null),c=Kf(i),u=Kf(a),d=rx.useRef(null),h=Ki(t,e=>l(e)),p=rx.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;rx.useEffect(()=>{if(n){let e=function(e){if(p.paused||!o)return;let t=e.target;o.contains(t)?d.current=t:KB(d.current,{select:!0})},t=function(e){if(p.paused||!o)return;let t=e.relatedTarget;null!==t&&(o.contains(t)||KB(d.current,{select:!0}))};document.addEventListener("focusin",e),document.addEventListener("focusout",t);let r=new MutationObserver(function(e){if(document.activeElement===document.body)for(let t of e)t.removedNodes.length>0&&KB(o)});return o&&r.observe(o,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",e),document.removeEventListener("focusout",t),r.disconnect()}}},[n,o,p.paused]),rx.useEffect(()=>{if(o){Kk.add(p);let e=document.activeElement;if(!o.contains(e)){let t=new CustomEvent(Kx,KE);o.addEventListener(Kx,c),o.dispatchEvent(t),t.defaultPrevented||(function(e,{select:t=!1}={}){let r=document.activeElement;for(let n of e)if(KB(n,{select:t}),document.activeElement!==r)return}(KM(o).filter(e=>"A"!==e.tagName),{select:!0}),document.activeElement===e&&KB(o))}return()=>{o.removeEventListener(Kx,c),setTimeout(()=>{let t=new CustomEvent(KC,KE);o.addEventListener(KC,u),o.dispatchEvent(t),t.defaultPrevented||KB(e??document.body,{select:!0}),o.removeEventListener(KC,u),Kk.remove(p)},0)}}},[o,c,u,p]);let f=rx.useCallback(e=>{if(!r&&!n||p.paused)return;let t="Tab"===e.key&&!e.altKey&&!e.ctrlKey&&!e.metaKey,i=document.activeElement;if(t&&i){var a;let t,n=e.currentTarget,[s,o]=[KI(t=KM(a=n),a),KI(t.reverse(),a)];s&&o?e.shiftKey||i!==o?e.shiftKey&&i===s&&(e.preventDefault(),r&&KB(o,{select:!0})):(e.preventDefault(),r&&KB(s,{select:!0})):i===n&&e.preventDefault()}},[r,n,p.paused]);return(0,rE.jsx)(Kc.div,{tabIndex:-1,...s,ref:h,onKeyDown:f})});function KM(e){let t=[],r=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>{let t="INPUT"===e.tagName&&"hidden"===e.type;return e.disabled||e.hidden||t?NodeFilter.FILTER_SKIP:e.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;r.nextNode();)t.push(r.currentNode);return t}function KI(e,t){for(let r of e)if(!function(e,{upTo:t}){if("hidden"===getComputedStyle(e).visibility)return!0;for(;e&&(void 0===t||e!==t);){if("none"===getComputedStyle(e).display)return!0;e=e.parentElement}return!1}(r,{upTo:t}))return r}function KB(e,{select:t=!1}={}){if(e&&e.focus){var r;let n=document.activeElement;e.focus({preventScroll:!0}),e!==n&&(r=e)instanceof HTMLInputElement&&"select"in r&&t&&e.select()}}KS.displayName="FocusScope";var Kk=(ex=[],{add(e){let t=ex[0];e!==t&&t?.pause(),(ex=KT(ex,e)).unshift(e)},remove(e){ex=KT(ex,e),ex[0]?.resume()}});function KT(e,t){let r=[...e],n=r.indexOf(t);return -1!==n&&r.splice(n,1),r}var KR=rC[" useId ".trim().toString()]||(()=>void 0),KD=0;function KP(e){let[t,r]=rx.useState(KR());return Ks(()=>{e||r(e=>e??String(KD++))},[e]),e||(t?`radix-${t}`:"")}let K_=["top","right","bottom","left"],KL=Math.min,KN=Math.max,KF=Math.round,KO=Math.floor,KQ=e=>({x:e,y:e}),KU={left:"right",right:"left",bottom:"top",top:"bottom"};function Kz(e,t){return"function"==typeof e?e(t):e}function Kj(e){return e.split("-")[0]}function KG(e){return e.split("-")[1]}function KH(e){return"x"===e?"y":"x"}function KV(e){return"y"===e?"height":"width"}function KW(e){let t=e[0];return"t"===t||"b"===t?"y":"x"}function Kq(e){return e.includes("start")?e.replace("start","end"):e.replace("end","start")}let KK=["left","right"],KJ=["right","left"],KY=["top","bottom"],KX=["bottom","top"];function KZ(e){let t=Kj(e);return KU[t]+e.slice(t.length)}function K$(e){return"number"!=typeof e?{top:0,right:0,bottom:0,left:0,...e}:{top:e,right:e,bottom:e,left:e}}function K0(e){let{x:t,y:r,width:n,height:i}=e;return{width:n,height:i,top:r,left:t,right:t+n,bottom:r+i,x:t,y:r}}function K1(e,t,r){let n,{reference:i,floating:a}=e,s=KW(t),o=KH(KW(t)),l=KV(o),c=Kj(t),u="y"===s,d=i.x+i.width/2-a.width/2,h=i.y+i.height/2-a.height/2,p=i[l]/2-a[l]/2;switch(c){case"top":n={x:d,y:i.y-a.height};break;case"bottom":n={x:d,y:i.y+i.height};break;case"right":n={x:i.x+i.width,y:h};break;case"left":n={x:i.x-a.width,y:h};break;default:n={x:i.x,y:i.y}}switch(KG(t)){case"start":n[o]-=p*(r&&u?-1:1);break;case"end":n[o]+=p*(r&&u?-1:1)}return n}let K2=async(e,t,r)=>{let{placement:n="bottom",strategy:i="absolute",middleware:a=[],platform:s}=r,o=a.filter(Boolean),l=await (null==s.isRTL?void 0:s.isRTL(t)),c=await s.getElementRects({reference:e,floating:t,strategy:i}),{x:u,y:d}=K1(c,n,l),h=n,p={},f=0;for(let r=0;r<o.length;r++){let{name:a,fn:A}=o[r],{x:g,y:m,data:v,reset:b}=await A({x:u,y:d,initialPlacement:n,placement:h,strategy:i,middlewareData:p,rects:c,platform:s,elements:{reference:e,floating:t}});u=null!=g?g:u,d=null!=m?m:d,p={...p,[a]:{...p[a],...v}},b&&f<=50&&(f++,"object"==typeof b&&(b.placement&&(h=b.placement),b.rects&&(c=!0===b.rects?await s.getElementRects({reference:e,floating:t,strategy:i}):b.rects),{x:u,y:d}=K1(c,h,l)),r=-1)}return{x:u,y:d,placement:h,strategy:i,middlewareData:p}};async function K3(e,t){var r;void 0===t&&(t={});let{x:n,y:i,platform:a,rects:s,elements:o,strategy:l}=e,{boundary:c="clippingAncestors",rootBoundary:u="viewport",elementContext:d="floating",altBoundary:h=!1,padding:p=0}=Kz(t,e),f=K$(p),A=o[h?"floating"===d?"reference":"floating":d],g=K0(await a.getClippingRect({element:null==(r=await (null==a.isElement?void 0:a.isElement(A)))||r?A:A.contextElement||await (null==a.getDocumentElement?void 0:a.getDocumentElement(o.floating)),boundary:c,rootBoundary:u,strategy:l})),m="floating"===d?{x:n,y:i,width:s.floating.width,height:s.floating.height}:s.reference,v=await (null==a.getOffsetParent?void 0:a.getOffsetParent(o.floating)),b=await (null==a.isElement?void 0:a.isElement(v))&&await (null==a.getScale?void 0:a.getScale(v))||{x:1,y:1},y=K0(a.convertOffsetParentRelativeRectToViewportRelativeRect?await a.convertOffsetParentRelativeRectToViewportRelativeRect({elements:o,rect:m,offsetParent:v,strategy:l}):m);return{top:(g.top-y.top+f.top)/b.y,bottom:(y.bottom-g.bottom+f.bottom)/b.y,left:(g.left-y.left+f.left)/b.x,right:(y.right-g.right+f.right)/b.x}}function K9(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function K4(e){return K_.some(t=>e[t]>=0)}let K5=new Set(["left","top"]);async function K8(e,t){let{placement:r,platform:n,elements:i}=e,a=await (null==n.isRTL?void 0:n.isRTL(i.floating)),s=Kj(r),o=KG(r),l="y"===KW(r),c=K5.has(s)?-1:1,u=a&&l?-1:1,d=Kz(t,e),{mainAxis:h,crossAxis:p,alignmentAxis:f}="number"==typeof d?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:d.mainAxis||0,crossAxis:d.crossAxis||0,alignmentAxis:d.alignmentAxis};return o&&"number"==typeof f&&(p="end"===o?-1*f:f),l?{x:p*u,y:h*c}:{x:h*c,y:p*u}}function K6(){return"u">typeof window}function K7(e){return Jr(e)?(e.nodeName||"").toLowerCase():"#document"}function Je(e){var t;return(null==e||null==(t=e.ownerDocument)?void 0:t.defaultView)||window}function Jt(e){var t;return null==(t=(Jr(e)?e.ownerDocument:e.document)||window.document)?void 0:t.documentElement}function Jr(e){return!!K6()&&(e instanceof Node||e instanceof Je(e).Node)}function Jn(e){return!!K6()&&(e instanceof Element||e instanceof Je(e).Element)}function Ji(e){return!!K6()&&(e instanceof HTMLElement||e instanceof Je(e).HTMLElement)}function Ja(e){return!(!K6()||"u"<typeof ShadowRoot)&&(e instanceof ShadowRoot||e instanceof Je(e).ShadowRoot)}function Js(e){let{overflow:t,overflowX:r,overflowY:n,display:i}=Jf(e);return/auto|scroll|overlay|hidden|clip/.test(t+n+r)&&"inline"!==i&&"contents"!==i}function Jo(e){try{if(e.matches(":popover-open"))return!0}catch(e){}try{return e.matches(":modal")}catch(e){return!1}}let Jl=/transform|translate|scale|rotate|perspective|filter/,Jc=/paint|layout|strict|content/,Ju=e=>!!e&&"none"!==e;function Jd(e){let t=Jn(e)?Jf(e):e;return Ju(t.transform)||Ju(t.translate)||Ju(t.scale)||Ju(t.rotate)||Ju(t.perspective)||!Jh()&&(Ju(t.backdropFilter)||Ju(t.filter))||Jl.test(t.willChange||"")||Jc.test(t.contain||"")}function Jh(){return null==M&&(M="u">typeof CSS&&CSS.supports&&CSS.supports("-webkit-backdrop-filter","none")),M}function Jp(e){return/^(html|body|#document)$/.test(K7(e))}function Jf(e){return Je(e).getComputedStyle(e)}function JA(e){return Jn(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function Jg(e){if("html"===K7(e))return e;let t=e.assignedSlot||e.parentNode||Ja(e)&&e.host||Jt(e);return Ja(t)?t.host:t}function Jm(e,t,r){var n;void 0===t&&(t=[]),void 0===r&&(r=!0);let i=function e(t){let r=Jg(t);return Jp(r)?t.ownerDocument?t.ownerDocument.body:t.body:Ji(r)&&Js(r)?r:e(r)}(e),a=i===(null==(n=e.ownerDocument)?void 0:n.body),s=Je(i);if(!a)return t.concat(i,Jm(i,[],r));{let e=Jv(s);return t.concat(s,s.visualViewport||[],Js(i)?i:[],e&&r?Jm(e):[])}}function Jv(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function Jb(e){let t=Jf(e),r=parseFloat(t.width)||0,n=parseFloat(t.height)||0,i=Ji(e),a=i?e.offsetWidth:r,s=i?e.offsetHeight:n,o=KF(r)!==a||KF(n)!==s;return o&&(r=a,n=s),{width:r,height:n,$:o}}function Jy(e){return Jn(e)?e:e.contextElement}function Jw(e){let t=Jy(e);if(!Ji(t))return KQ(1);let r=t.getBoundingClientRect(),{width:n,height:i,$:a}=Jb(t),s=(a?KF(r.width):r.width)/n,o=(a?KF(r.height):r.height)/i;return s&&Number.isFinite(s)||(s=1),o&&Number.isFinite(o)||(o=1),{x:s,y:o}}let Jx=KQ(0);function JC(e){let t=Je(e);return Jh()&&t.visualViewport?{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}:Jx}function JE(e,t,r,n){var i;void 0===t&&(t=!1),void 0===r&&(r=!1);let a=e.getBoundingClientRect(),s=Jy(e),o=KQ(1);t&&(n?Jn(n)&&(o=Jw(n)):o=Jw(e));let l=(void 0===(i=r)&&(i=!1),n&&(!i||n===Je(s))&&i)?JC(s):KQ(0),c=(a.left+l.x)/o.x,u=(a.top+l.y)/o.y,d=a.width/o.x,h=a.height/o.y;if(s){let e=Je(s),t=n&&Jn(n)?Je(n):n,r=e,i=Jv(r);for(;i&&n&&t!==r;){let e=Jw(i),t=i.getBoundingClientRect(),n=Jf(i),a=t.left+(i.clientLeft+parseFloat(n.paddingLeft))*e.x,s=t.top+(i.clientTop+parseFloat(n.paddingTop))*e.y;c*=e.x,u*=e.y,d*=e.x,h*=e.y,c+=a,u+=s,i=Jv(r=Je(i))}}return K0({width:d,height:h,x:c,y:u})}function JS(e,t){let r=JA(e).scrollLeft;return t?t.left+r:JE(Jt(e)).left+r}function JM(e,t){let r=e.getBoundingClientRect();return{x:r.left+t.scrollLeft-JS(e,r),y:r.top+t.scrollTop}}let JI=new Set(["absolute","fixed"]);function JB(e,t,r){var n;let i;if("viewport"===t)i=function(e,t){let r=Je(e),n=Jt(e),i=r.visualViewport,a=n.clientWidth,s=n.clientHeight,o=0,l=0;if(i){a=i.width,s=i.height;let e=Jh();(!e||e&&"fixed"===t)&&(o=i.offsetLeft,l=i.offsetTop)}let c=JS(n);if(c<=0){let e=n.ownerDocument,t=e.body,r=getComputedStyle(t),i="CSS1Compat"===e.compatMode&&parseFloat(r.marginLeft)+parseFloat(r.marginRight)||0,s=Math.abs(n.clientWidth-t.clientWidth-i);s<=25&&(a-=s)}else c<=25&&(a+=c);return{width:a,height:s,x:o,y:l}}(e,r);else if("document"===t){let t,r,a,s,o,l,c;n=Jt(e),t=Jt(n),r=JA(n),a=n.ownerDocument.body,s=KN(t.scrollWidth,t.clientWidth,a.scrollWidth,a.clientWidth),o=KN(t.scrollHeight,t.clientHeight,a.scrollHeight,a.clientHeight),l=-r.scrollLeft+JS(n),c=-r.scrollTop,"rtl"===Jf(a).direction&&(l+=KN(t.clientWidth,a.clientWidth)-s),i={width:s,height:o,x:l,y:c}}else if(Jn(t)){let e,n,a,s,o,l;n=(e=JE(t,!0,"fixed"===r)).top+t.clientTop,a=e.left+t.clientLeft,s=Ji(t)?Jw(t):KQ(1),o=t.clientWidth*s.x,l=t.clientHeight*s.y,i={width:o,height:l,x:a*s.x,y:n*s.y}}else{let r=JC(e);i={x:t.x-r.x,y:t.y-r.y,width:t.width,height:t.height}}return K0(i)}function Jk(e){return"static"===Jf(e).position}function JT(e,t){if(!Ji(e)||"fixed"===Jf(e).position)return null;if(t)return t(e);let r=e.offsetParent;return Jt(e)===r&&(r=r.ownerDocument.body),r}function JR(e,t){var r;let n=Je(e);if(Jo(e))return n;if(!Ji(e)){let t=Jg(e);for(;t&&!Jp(t);){if(Jn(t)&&!Jk(t))return t;t=Jg(t)}return n}let i=JT(e,t);for(;i&&(r=i,/^(table|td|th)$/.test(K7(r)))&&Jk(i);)i=JT(i,t);return i&&Jp(i)&&Jk(i)&&!Jd(i)?n:i||function(e){let t=Jg(e);for(;Ji(t)&&!Jp(t);){if(Jd(t))return t;if(Jo(t))break;t=Jg(t)}return null}(e)||n}let JD=async function(e){let t=this.getOffsetParent||JR,r=this.getDimensions,n=await r(e.floating);return{reference:function(e,t,r){let n=Ji(t),i=Jt(t),a="fixed"===r,s=JE(e,!0,a,t),o={scrollLeft:0,scrollTop:0},l=KQ(0);if(n||!n&&!a)if(("body"!==K7(t)||Js(i))&&(o=JA(t)),n){let e=JE(t,!0,a,t);l.x=e.x+t.clientLeft,l.y=e.y+t.clientTop}else i&&(l.x=JS(i));a&&!n&&i&&(l.x=JS(i));let c=!i||n||a?KQ(0):JM(i,o);return{x:s.left+o.scrollLeft-l.x-c.x,y:s.top+o.scrollTop-l.y-c.y,width:s.width,height:s.height}}(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:n.width,height:n.height}}},JP={convertOffsetParentRelativeRectToViewportRelativeRect:function(e){let{elements:t,rect:r,offsetParent:n,strategy:i}=e,a="fixed"===i,s=Jt(n),o=!!t&&Jo(t.floating);if(n===s||o&&a)return r;let l={scrollLeft:0,scrollTop:0},c=KQ(1),u=KQ(0),d=Ji(n);if((d||!d&&!a)&&(("body"!==K7(n)||Js(s))&&(l=JA(n)),Ji(n))){let e=JE(n);c=Jw(n),u.x=e.x+n.clientLeft,u.y=e.y+n.clientTop}let h=!s||d||a?KQ(0):JM(s,l);return{width:r.width*c.x,height:r.height*c.y,x:r.x*c.x-l.scrollLeft*c.x+u.x+h.x,y:r.y*c.y-l.scrollTop*c.y+u.y+h.y}},getDocumentElement:Jt,getClippingRect:function(e){let{element:t,boundary:r,rootBoundary:n,strategy:i}=e,a=[..."clippingAncestors"===r?Jo(t)?[]:function(e,t){let r=t.get(e);if(r)return r;let n=Jm(e,[],!1).filter(e=>Jn(e)&&"body"!==K7(e)),i=null,a="fixed"===Jf(e).position,s=a?Jg(e):e;for(;Jn(s)&&!Jp(s);){let t=Jf(s),r=Jd(s);r||"fixed"!==t.position||(i=null),(a?!r&&!i:!r&&"static"===t.position&&!!i&&JI.has(i.position)||Js(s)&&!r&&function e(t,r){let n=Jg(t);return!(n===r||!Jn(n)||Jp(n))&&("fixed"===Jf(n).position||e(n,r))}(e,s))?n=n.filter(e=>e!==s):i=t,s=Jg(s)}return t.set(e,n),n}(t,this._c):[].concat(r),n],s=a[0],o=a.reduce((e,r)=>{let n=JB(t,r,i);return e.top=KN(n.top,e.top),e.right=KL(n.right,e.right),e.bottom=KL(n.bottom,e.bottom),e.left=KN(n.left,e.left),e},JB(t,s,i));return{width:o.right-o.left,height:o.bottom-o.top,x:o.left,y:o.top}},getOffsetParent:JR,getElementRects:JD,getClientRects:function(e){return Array.from(e.getClientRects())},getDimensions:function(e){let{width:t,height:r}=Jb(e);return{width:t,height:r}},getScale:Jw,isElement:Jn,isRTL:function(e){return"rtl"===Jf(e).direction}};function J_(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}let JL=e=>({name:"arrow",options:e,async fn(t){let{x:r,y:n,placement:i,rects:a,platform:s,elements:o,middlewareData:l}=t,{element:c,padding:u=0}=Kz(e,t)||{};if(null==c)return{};let d=K$(u),h={x:r,y:n},p=KH(KW(i)),f=KV(p),A=await s.getDimensions(c),g="y"===p,m=g?"clientHeight":"clientWidth",v=a.reference[f]+a.reference[p]-h[p]-a.floating[f],b=h[p]-a.reference[p],y=await (null==s.getOffsetParent?void 0:s.getOffsetParent(c)),w=y?y[m]:0;w&&await (null==s.isElement?void 0:s.isElement(y))||(w=o.floating[m]||a.floating[f]);let x=w/2-A[f]/2-1,C=KL(d[g?"top":"left"],x),E=KL(d[g?"bottom":"right"],x),S=w-A[f]-E,M=w/2-A[f]/2+(v/2-b/2),I=KN(C,KL(M,S)),B=!l.arrow&&null!=KG(i)&&M!==I&&a.reference[f]/2-(M<C?C:E)-A[f]/2<0,k=B?M<C?M-C:M-S:0;return{[p]:h[p]+k,data:{[p]:I,centerOffset:M-I-k,...B&&{alignmentOffset:k}},reset:B}}});var JN="u">typeof document?rx.useLayoutEffect:function(){};function JF(e,t){let r,n,i;if(e===t)return!0;if(typeof e!=typeof t)return!1;if("function"==typeof e&&e.toString()===t.toString())return!0;if(e&&t&&"object"==typeof e){if(Array.isArray(e)){if((r=e.length)!==t.length)return!1;for(n=r;0!=n--;)if(!JF(e[n],t[n]))return!1;return!0}if((r=(i=Object.keys(e)).length)!==Object.keys(t).length)return!1;for(n=r;0!=n--;)if(!({}).hasOwnProperty.call(t,i[n]))return!1;for(n=r;0!=n--;){let r=i[n];if(("_owner"!==r||!e.$$typeof)&&!JF(e[r],t[r]))return!1}return!0}return e!=e&&t!=t}function JO(e){return"u"<typeof window?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function JQ(e,t){let r=JO(e);return Math.round(t*r)/r}function JU(e){let t=rx.useRef(e);return JN(()=>{t.current=e}),t}var Jz=rx.forwardRef((e,t)=>{let{children:r,width:n=10,height:i=5,...a}=e;return(0,rE.jsx)(Kc.svg,{...a,ref:t,width:n,height:i,viewBox:"0 0 30 10",preserveAspectRatio:"none",children:e.asChild?r:(0,rE.jsx)("polygon",{points:"0,0 30,0 15,10"})})});Jz.displayName="Arrow";var Jj="Popper",[JG,JH]=Ka(Jj),[JV,JW]=JG(Jj),Jq=e=>{let{__scopePopper:t,children:r}=e,[n,i]=rx.useState(null);return(0,rE.jsx)(JV,{scope:t,anchor:n,onAnchorChange:i,children:r})};Jq.displayName=Jj;var JK="PopperAnchor",JJ=rx.forwardRef((e,t)=>{let{__scopePopper:r,virtualRef:n,...i}=e,a=JW(JK,r),s=rx.useRef(null),o=Ki(t,s),l=rx.useRef(null);return rx.useEffect(()=>{let e=l.current;l.current=n?.current||s.current,e!==l.current&&a.onAnchorChange(l.current)}),n?null:(0,rE.jsx)(Kc.div,{...i,ref:o})});JJ.displayName=JK;var JY="PopperContent",[JX,JZ]=JG(JY),J$=rx.forwardRef((e,t)=>{var r,n,i,a,s,o,l,c,u,d,h,p,f,A,g,m,v,b,y,w,x;let{__scopePopper:C,side:E="bottom",sideOffset:S=0,align:M="center",alignOffset:I=0,arrowPadding:B=0,avoidCollisions:k=!0,collisionBoundary:T=[],collisionPadding:R=0,sticky:D="partial",hideWhenDetached:P=!1,updatePositionStrategy:_="optimized",onPlaced:L,...N}=e,F=JW(JY,C),[O,Q]=rx.useState(null),U=Ki(t,e=>Q(e)),[z,j]=rx.useState(null),G=function(e){let[t,r]=rx.useState(void 0);return Ks(()=>{if(e){r({width:e.offsetWidth,height:e.offsetHeight});let t=new ResizeObserver(t=>{let n,i;if(!Array.isArray(t)||!t.length)return;let a=t[0];if("borderBoxSize"in a){let e=a.borderBoxSize,t=Array.isArray(e)?e[0]:e;n=t.inlineSize,i=t.blockSize}else n=e.offsetWidth,i=e.offsetHeight;r({width:n,height:i})});return t.observe(e,{box:"border-box"}),()=>t.unobserve(e)}r(void 0)},[e]),t}(z),H=G?.width??0,V=G?.height??0,W="number"==typeof R?R:{top:0,right:0,bottom:0,left:0,...R},q=Array.isArray(T)?T:[T],K=q.length>0,J={padding:W,boundary:q.filter(J3),altBoundary:K},{refs:Y,floatingStyles:X,placement:Z,isPositioned:$,middlewareData:ee}=function(e){void 0===e&&(e={});let{placement:t="bottom",strategy:r="absolute",middleware:n=[],platform:i,elements:{reference:a,floating:s}={},transform:o=!0,whileElementsMounted:l,open:c}=e,[u,d]=rx.useState({x:0,y:0,strategy:r,placement:t,middlewareData:{},isPositioned:!1}),[h,p]=rx.useState(n);JF(h,n)||p(n);let[f,A]=rx.useState(null),[g,m]=rx.useState(null),v=rx.useCallback(e=>{e!==x.current&&(x.current=e,A(e))},[]),b=rx.useCallback(e=>{e!==C.current&&(C.current=e,m(e))},[]),y=a||f,w=s||g,x=rx.useRef(null),C=rx.useRef(null),E=rx.useRef(u),S=null!=l,M=JU(l),I=JU(i),B=JU(c),k=rx.useCallback(()=>{var e,n;let i,a,s;if(!x.current||!C.current)return;let o={placement:t,strategy:r,middleware:h};I.current&&(o.platform=I.current),(e=x.current,n=C.current,i=new Map,s={...(a={platform:JP,...o}).platform,_c:i},K2(e,n,{...a,platform:s})).then(e=>{let t={...e,isPositioned:!1!==B.current};T.current&&!JF(E.current,t)&&(E.current=t,(0,am.flushSync)(()=>{d(t)}))})},[h,t,r,I,B]);JN(()=>{!1===c&&E.current.isPositioned&&(E.current.isPositioned=!1,d(e=>({...e,isPositioned:!1})))},[c]);let T=rx.useRef(!1);JN(()=>(T.current=!0,()=>{T.current=!1}),[]),JN(()=>{if(y&&(x.current=y),w&&(C.current=w),y&&w){if(M.current)return M.current(y,w,k);k()}},[y,w,k,M,S]);let R=rx.useMemo(()=>({reference:x,floating:C,setReference:v,setFloating:b}),[v,b]),D=rx.useMemo(()=>({reference:y,floating:w}),[y,w]),P=rx.useMemo(()=>{let e={position:r,left:0,top:0};if(!D.floating)return e;let t=JQ(D.floating,u.x),n=JQ(D.floating,u.y);return o?{...e,transform:"translate("+t+"px, "+n+"px)",...JO(D.floating)>=1.5&&{willChange:"transform"}}:{position:r,left:t,top:n}},[r,o,D.floating,u.x,u.y]);return rx.useMemo(()=>({...u,update:k,refs:R,elements:D,floatingStyles:P}),[u,k,R,D,P])}({strategy:"fixed",placement:E+("center"!==M?"-"+M:""),whileElementsMounted:(...e)=>(function(e,t,r,n){let i;void 0===n&&(n={});let{ancestorScroll:a=!0,ancestorResize:s=!0,elementResize:o="function"==typeof ResizeObserver,layoutShift:l="function"==typeof IntersectionObserver,animationFrame:c=!1}=n,u=Jy(e),d=a||s?[...u?Jm(u):[],...Jm(t)]:[];d.forEach(e=>{a&&e.addEventListener("scroll",r,{passive:!0}),s&&e.addEventListener("resize",r)});let h=u&&l?function(e,t){let r,n=null,i=Jt(e);function a(){var e;clearTimeout(r),null==(e=n)||e.disconnect(),n=null}return!function s(o,l){void 0===o&&(o=!1),void 0===l&&(l=1),a();let c=e.getBoundingClientRect(),{left:u,top:d,width:h,height:p}=c;if(o||t(),!h||!p)return;let f={rootMargin:-KO(d)+"px "+-KO(i.clientWidth-(u+h))+"px "+-KO(i.clientHeight-(d+p))+"px "+-KO(u)+"px",threshold:KN(0,KL(1,l))||1},A=!0;function g(t){let n=t[0].intersectionRatio;if(n!==l){if(!A)return s();n?s(!1,n):r=setTimeout(()=>{s(!1,1e-7)},1e3)}1!==n||J_(c,e.getBoundingClientRect())||s(),A=!1}try{n=new IntersectionObserver(g,{...f,root:i.ownerDocument})}catch(e){n=new IntersectionObserver(g,f)}n.observe(e)}(!0),a}(u,r):null,p=-1,f=null;o&&(f=new ResizeObserver(e=>{let[n]=e;n&&n.target===u&&f&&(f.unobserve(t),cancelAnimationFrame(p),p=requestAnimationFrame(()=>{var e;null==(e=f)||e.observe(t)})),r()}),u&&!c&&f.observe(u),f.observe(t));let A=c?JE(e):null;return c&&function t(){let n=JE(e);A&&!J_(A,n)&&r(),A=n,i=requestAnimationFrame(t)}(),r(),()=>{var e;d.forEach(e=>{a&&e.removeEventListener("scroll",r),s&&e.removeEventListener("resize",r)}),null==h||h(),null==(e=f)||e.disconnect(),f=null,c&&cancelAnimationFrame(i)}})(...e,{animationFrame:"always"===_}),elements:{reference:F.anchor},middleware:[{...{name:"offset",options:i=r={mainAxis:S+V,alignmentAxis:I},async fn(e){var t,r;let{x:n,y:a,placement:s,middlewareData:o}=e,l=await K8(e,i);return s===(null==(t=o.offset)?void 0:t.placement)&&null!=(r=o.arrow)&&r.alignmentOffset?{}:{x:n+l.x,y:a+l.y,data:{...l,placement:s}}}},options:[r,n]},k&&{...{name:"shift",options:u=l={mainAxis:!0,crossAxis:!1,limiter:"partial"===D?{...(void 0===(o=a)&&(o={}),{options:o,fn(e){let{x:t,y:r,placement:n,rects:i,middlewareData:a}=e,{offset:s=0,mainAxis:l=!0,crossAxis:c=!0}=Kz(o,e),u={x:t,y:r},d=KW(n),h=KH(d),p=u[h],f=u[d],A=Kz(s,e),g="number"==typeof A?{mainAxis:A,crossAxis:0}:{mainAxis:0,crossAxis:0,...A};if(l){let e="y"===h?"height":"width",t=i.reference[h]-i.floating[e]+g.mainAxis,r=i.reference[h]+i.reference[e]-g.mainAxis;p<t?p=t:p>r&&(p=r)}if(c){var m,v;let e="y"===h?"width":"height",t=K5.has(Kj(n)),r=i.reference[d]-i.floating[e]+(t&&(null==(m=a.offset)?void 0:m[d])||0)+(t?0:g.crossAxis),s=i.reference[d]+i.reference[e]+(t?0:(null==(v=a.offset)?void 0:v[d])||0)-(t?g.crossAxis:0);f<r?f=r:f>s&&(f=s)}return{[h]:p,[d]:f}}}),options:[a,s]}:void 0,...J},async fn(e){let{x:t,y:r,placement:n}=e,{mainAxis:i=!0,crossAxis:a=!1,limiter:s={fn:e=>{let{x:t,y:r}=e;return{x:t,y:r}}},...o}=Kz(u,e),l={x:t,y:r},c=await K3(e,o),d=KW(Kj(n)),h=KH(d),p=l[h],f=l[d];if(i){let e="y"===h?"top":"left",t="y"===h?"bottom":"right",r=p+c[e],n=p-c[t];p=KN(r,KL(p,n))}if(a){let e="y"===d?"top":"left",t="y"===d?"bottom":"right",r=f+c[e],n=f-c[t];f=KN(r,KL(f,n))}let A=s.fn({...e,[h]:p,[d]:f});return{...A,data:{x:A.x-t,y:A.y-r,enabled:{[h]:i,[d]:a}}}}},options:[l,c]},k&&{...{name:"flip",options:p=d={...J},async fn(e){var t,r,n,i,a,s,o,l;let c,u,d,{placement:h,middlewareData:f,rects:A,initialPlacement:g,platform:m,elements:v}=e,{mainAxis:b=!0,crossAxis:y=!0,fallbackPlacements:w,fallbackStrategy:x="bestFit",fallbackAxisSideDirection:C="none",flipAlignment:E=!0,...S}=Kz(p,e);if(null!=(t=f.arrow)&&t.alignmentOffset)return{};let M=Kj(h),I=KW(g),B=Kj(g)===g,k=await (null==m.isRTL?void 0:m.isRTL(v.floating)),T=w||(B||!E?[KZ(g)]:(c=KZ(g),[Kq(g),c,Kq(c)])),R="none"!==C;!w&&R&&T.push(...(u=KG(g),d=function(e,t,r){switch(e){case"top":case"bottom":if(r)return t?KJ:KK;return t?KK:KJ;case"left":case"right":return t?KY:KX;default:return[]}}(Kj(g),"start"===C,k),u&&(d=d.map(e=>e+"-"+u),E&&(d=d.concat(d.map(Kq)))),d));let D=[g,...T],P=await K3(e,S),_=[],L=(null==(r=f.flip)?void 0:r.overflows)||[];if(b&&_.push(P[M]),y){let e,t,r,n,i=(s=h,o=A,void 0===(l=k)&&(l=!1),e=KG(s),r=KV(t=KH(KW(s))),n="x"===t?e===(l?"end":"start")?"right":"left":"start"===e?"bottom":"top",o.reference[r]>o.floating[r]&&(n=KZ(n)),[n,KZ(n)]);_.push(P[i[0]],P[i[1]])}if(L=[...L,{placement:h,overflows:_}],!_.every(e=>e<=0)){let e=((null==(n=f.flip)?void 0:n.index)||0)+1,t=D[e];if(t&&("alignment"!==y||I===KW(t)||L.every(e=>KW(e.placement)!==I||e.overflows[0]>0)))return{data:{index:e,overflows:L},reset:{placement:t}};let r=null==(i=L.filter(e=>e.overflows[0]<=0).sort((e,t)=>e.overflows[1]-t.overflows[1])[0])?void 0:i.placement;if(!r)switch(x){case"bestFit":{let e=null==(a=L.filter(e=>{if(R){let t=KW(e.placement);return t===I||"y"===t}return!0}).map(e=>[e.placement,e.overflows.filter(e=>e>0).reduce((e,t)=>e+t,0)]).sort((e,t)=>e[1]-t[1])[0])?void 0:a[0];e&&(r=e);break}case"initialPlacement":r=g}if(h!==r)return{reset:{placement:r}}}return{}}},options:[d,h]},{...{name:"size",options:g=f={...J,apply:({elements:e,rects:t,availableWidth:r,availableHeight:n})=>{let{width:i,height:a}=t.reference,s=e.floating.style;s.setProperty("--radix-popper-available-width",`${r}px`),s.setProperty("--radix-popper-available-height",`${n}px`),s.setProperty("--radix-popper-anchor-width",`${i}px`),s.setProperty("--radix-popper-anchor-height",`${a}px`)}},async fn(e){var t,r;let n,i,{placement:a,rects:s,platform:o,elements:l}=e,{apply:c=()=>{},...u}=Kz(g,e),d=await K3(e,u),h=Kj(a),p=KG(a),f="y"===KW(a),{width:A,height:m}=s.floating;"top"===h||"bottom"===h?(n=h,i=p===(await (null==o.isRTL?void 0:o.isRTL(l.floating))?"start":"end")?"left":"right"):(i=h,n="end"===p?"top":"bottom");let v=m-d.top-d.bottom,b=A-d.left-d.right,y=KL(m-d[n],v),w=KL(A-d[i],b),x=!e.middlewareData.shift,C=y,E=w;if(null!=(t=e.middlewareData.shift)&&t.enabled.x&&(E=b),null!=(r=e.middlewareData.shift)&&r.enabled.y&&(C=v),x&&!p){let e=KN(d.left,0),t=KN(d.right,0),r=KN(d.top,0),n=KN(d.bottom,0);f?E=A-2*(0!==e||0!==t?e+t:KN(d.left,d.right)):C=m-2*(0!==r||0!==n?r+n:KN(d.top,d.bottom))}await c({...e,availableWidth:E,availableHeight:C});let S=await o.getDimensions(l.floating);return A!==S.width||m!==S.height?{reset:{rects:!0}}:{}}},options:[f,A]},z&&{...{name:"arrow",options:b=m={element:z,padding:B},fn(e){let{element:t,padding:r}="function"==typeof b?b(e):b;return t&&({}).hasOwnProperty.call(t,"current")?null!=t.current?JL({element:t.current,padding:r}).fn(e):{}:t?JL({element:t,padding:r}).fn(e):{}}},options:[m,v]},J9({arrowWidth:H,arrowHeight:V}),P&&{...{name:"hide",options:x=y={strategy:"referenceHidden",...J},async fn(e){let{rects:t}=e,{strategy:r="referenceHidden",...n}=Kz(x,e);switch(r){case"referenceHidden":{let r=K9(await K3(e,{...n,elementContext:"reference"}),t.reference);return{data:{referenceHiddenOffsets:r,referenceHidden:K4(r)}}}case"escaped":{let r=K9(await K3(e,{...n,altBoundary:!0}),t.floating);return{data:{escapedOffsets:r,escaped:K4(r)}}}default:return{}}}},options:[y,w]}]}),[et,er]=J4(Z),en=Kf(L);Ks(()=>{$&&en?.()},[$,en]);let ei=ee.arrow?.x,ea=ee.arrow?.y,es=ee.arrow?.centerOffset!==0,[eo,el]=rx.useState();return Ks(()=>{O&&el(window.getComputedStyle(O).zIndex)},[O]),(0,rE.jsx)("div",{ref:Y.setFloating,"data-radix-popper-content-wrapper":"",style:{...X,transform:$?X.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:eo,"--radix-popper-transform-origin":[ee.transformOrigin?.x,ee.transformOrigin?.y].join(" "),...ee.hide?.referenceHidden&&{visibility:"hidden",pointerEvents:"none"}},dir:e.dir,children:(0,rE.jsx)(JX,{scope:C,placedSide:et,onArrowChange:j,arrowX:ei,arrowY:ea,shouldHideArrow:es,children:(0,rE.jsx)(Kc.div,{"data-side":et,"data-align":er,...N,ref:U,style:{...N.style,animation:$?void 0:"none"}})})})});J$.displayName=JY;var J0="PopperArrow",J1={top:"bottom",right:"left",bottom:"top",left:"right"},J2=rx.forwardRef(function(e,t){let{__scopePopper:r,...n}=e,i=JZ(J0,r),a=J1[i.placedSide];return(0,rE.jsx)("span",{ref:i.onArrowChange,style:{position:"absolute",left:i.arrowX,top:i.arrowY,[a]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[i.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[i.placedSide],visibility:i.shouldHideArrow?"hidden":void 0},children:(0,rE.jsx)(Jz,{...n,ref:t,style:{...n.style,display:"block"}})})});function J3(e){return null!==e}J2.displayName=J0;var J9=e=>({name:"transformOrigin",options:e,fn(t){let{placement:r,rects:n,middlewareData:i}=t,a=i.arrow?.centerOffset!==0,s=a?0:e.arrowWidth,o=a?0:e.arrowHeight,[l,c]=J4(r),u={start:"0%",center:"50%",end:"100%"}[c],d=(i.arrow?.x??0)+s/2,h=(i.arrow?.y??0)+o/2,p="",f="";return"bottom"===l?(p=a?u:`${d}px`,f=`${-o}px`):"top"===l?(p=a?u:`${d}px`,f=`${n.floating.height+o}px`):"right"===l?(p=`${-o}px`,f=a?u:`${h}px`):"left"===l&&(p=`${n.floating.width+o}px`,f=a?u:`${h}px`),{data:{x:p,y:f}}}});function J4(e){let[t,r="center"]=e.split("-");return[t,r]}var J5=rx.forwardRef((e,t)=>{let{container:r,...n}=e,[i,a]=rx.useState(!1);Ks(()=>a(!0),[]);let s=r||i&&globalThis?.document?.body;return s?am.createPortal((0,rE.jsx)(Kc.div,{...n,ref:t}),s):null});J5.displayName="Portal";var J8=e=>{var t;let r,n,{present:i,children:a}=e,s=function(e){var t,r;let[n,i]=rx.useState(),a=rx.useRef(null),s=rx.useRef(e),o=rx.useRef("none"),[l,c]=(t=e?"mounted":"unmounted",r={mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}},rx.useReducer((e,t)=>r[e][t]??e,t));return rx.useEffect(()=>{let e=J6(a.current);o.current="mounted"===l?e:"none"},[l]),Ks(()=>{let t=a.current,r=s.current;if(r!==e){let n=o.current,i=J6(t);e?c("MOUNT"):"none"===i||t?.display==="none"?c("UNMOUNT"):r&&n!==i?c("ANIMATION_OUT"):c("UNMOUNT"),s.current=e}},[e,c]),Ks(()=>{if(n){let e,t=n.ownerDocument.defaultView??window,r=r=>{let i=J6(a.current).includes(CSS.escape(r.animationName));if(r.target===n&&i&&(c("ANIMATION_END"),!s.current)){let r=n.style.animationFillMode;n.style.animationFillMode="forwards",e=t.setTimeout(()=>{"forwards"===n.style.animationFillMode&&(n.style.animationFillMode=r)})}},i=e=>{e.target===n&&(o.current=J6(a.current))};return n.addEventListener("animationstart",i),n.addEventListener("animationcancel",r),n.addEventListener("animationend",r),()=>{t.clearTimeout(e),n.removeEventListener("animationstart",i),n.removeEventListener("animationcancel",r),n.removeEventListener("animationend",r)}}c("ANIMATION_END")},[n,c]),{isPresent:["mounted","unmountSuspended"].includes(l),ref:rx.useCallback(e=>{a.current=e?getComputedStyle(e):null,i(e)},[])}}(i),o="function"==typeof a?a({present:s.isPresent}):rx.Children.only(a),l=Ki(s.ref,(t=o,(n=(r=Object.getOwnPropertyDescriptor(t.props,"ref")?.get)&&"isReactWarning"in r&&r.isReactWarning)?t.ref:(n=(r=Object.getOwnPropertyDescriptor(t,"ref")?.get)&&"isReactWarning"in r&&r.isReactWarning)?t.props.ref:t.props.ref||t.ref));return"function"==typeof a||s.isPresent?rx.cloneElement(o,{ref:l}):null};function J6(e){return e?.animationName||"none"}J8.displayName="Presence";var J7="rovingFocusGroup.onEntryFocus",Ye={bubbles:!1,cancelable:!0},Yt="RovingFocusGroup",[Yr,Yn,Yi]=Kd(Yt),[Ya,Ys]=Ka(Yt,[Yi]),[Yo,Yl]=Ya(Yt),Yc=rx.forwardRef((e,t)=>(0,rE.jsx)(Yr.Provider,{scope:e.__scopeRovingFocusGroup,children:(0,rE.jsx)(Yr.Slot,{scope:e.__scopeRovingFocusGroup,children:(0,rE.jsx)(Yu,{...e,ref:t})})}));Yc.displayName=Yt;var Yu=rx.forwardRef((e,t)=>{let{__scopeRovingFocusGroup:r,orientation:n,loop:i=!1,dir:a,currentTabStopId:s,defaultCurrentTabStopId:o,onCurrentTabStopIdChange:l,onEntryFocus:c,preventScrollOnEntryFocus:u=!1,...d}=e,h=rx.useRef(null),p=Ki(t,h),f=Kp(a),[A,g]=Kl({prop:s,defaultProp:o??null,onChange:l,caller:Yt}),[m,v]=rx.useState(!1),b=Kf(c),y=Yn(r),w=rx.useRef(!1),[x,C]=rx.useState(0);return rx.useEffect(()=>{let e=h.current;if(e)return e.addEventListener(J7,b),()=>e.removeEventListener(J7,b)},[b]),(0,rE.jsx)(Yo,{scope:r,orientation:n,dir:f,loop:i,currentTabStopId:A,onItemFocus:rx.useCallback(e=>g(e),[g]),onItemShiftTab:rx.useCallback(()=>v(!0),[]),onFocusableItemAdd:rx.useCallback(()=>C(e=>e+1),[]),onFocusableItemRemove:rx.useCallback(()=>C(e=>e-1),[]),children:(0,rE.jsx)(Kc.div,{tabIndex:m||0===x?-1:0,"data-orientation":n,...d,ref:p,style:{outline:"none",...e.style},onMouseDown:Kt(e.onMouseDown,()=>{w.current=!0}),onFocus:Kt(e.onFocus,e=>{let t=!w.current;if(e.target===e.currentTarget&&t&&!m){let t=new CustomEvent(J7,Ye);if(e.currentTarget.dispatchEvent(t),!t.defaultPrevented){let e=y().filter(e=>e.focusable);Yf([e.find(e=>e.active),e.find(e=>e.id===A),...e].filter(Boolean).map(e=>e.ref.current),u)}}w.current=!1}),onBlur:Kt(e.onBlur,()=>v(!1))})})}),Yd="RovingFocusGroupItem",Yh=rx.forwardRef((e,t)=>{let{__scopeRovingFocusGroup:r,focusable:n=!0,active:i=!1,tabStopId:a,children:s,...o}=e,l=KP(),c=a||l,u=Yl(Yd,r),d=u.currentTabStopId===c,h=Yn(r),{onFocusableItemAdd:p,onFocusableItemRemove:f,currentTabStopId:A}=u;return rx.useEffect(()=>{if(n)return p(),()=>f()},[n,p,f]),(0,rE.jsx)(Yr.ItemSlot,{scope:r,id:c,focusable:n,active:i,children:(0,rE.jsx)(Kc.span,{tabIndex:d?0:-1,"data-orientation":u.orientation,...o,ref:t,onMouseDown:Kt(e.onMouseDown,e=>{n?u.onItemFocus(c):e.preventDefault()}),onFocus:Kt(e.onFocus,()=>u.onItemFocus(c)),onKeyDown:Kt(e.onKeyDown,e=>{if("Tab"===e.key&&e.shiftKey)return void u.onItemShiftTab();if(e.target!==e.currentTarget)return;let t=function(e,t,r){var n;let i=(n=e.key,"rtl"!==r?n:"ArrowLeft"===n?"ArrowRight":"ArrowRight"===n?"ArrowLeft":n);if(!("vertical"===t&&["ArrowLeft","ArrowRight"].includes(i))&&!("horizontal"===t&&["ArrowUp","ArrowDown"].includes(i)))return Yp[i]}(e,u.orientation,u.dir);if(void 0!==t){if(e.metaKey||e.ctrlKey||e.altKey||e.shiftKey)return;e.preventDefault();let i=h().filter(e=>e.focusable).map(e=>e.ref.current);if("last"===t)i.reverse();else if("prev"===t||"next"===t){var r,n;"prev"===t&&i.reverse();let a=i.indexOf(e.currentTarget);i=u.loop?(r=i,n=a+1,r.map((e,t)=>r[(n+t)%r.length])):i.slice(a+1)}setTimeout(()=>Yf(i))}}),children:"function"==typeof s?s({isCurrentTabStop:d,hasTabStop:null!=A}):s})})});Yh.displayName=Yd;var Yp={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function Yf(e,t=!1){let r=document.activeElement;for(let n of e)if(n===r||(n.focus({preventScroll:t}),document.activeElement!==r))return}var YA=new WeakMap,Yg=new WeakMap,Ym={},Yv=0,Yb=function(e){return e&&(e.host||Yb(e.parentNode))},Yy=function(e,t,r,n){var i=(Array.isArray(e)?e:[e]).map(function(e){if(t.contains(e))return e;var r=Yb(e);return r&&t.contains(r)?r:(console.error("aria-hidden",e,"in not contained inside",t,". Doing nothing"),null)}).filter(function(e){return!!e});Ym[r]||(Ym[r]=new WeakMap);var a=Ym[r],s=[],o=new Set,l=new Set(i),c=function(e){!e||o.has(e)||(o.add(e),c(e.parentNode))};i.forEach(c);var u=function(e){!e||l.has(e)||Array.prototype.forEach.call(e.children,function(e){if(o.has(e))u(e);else try{var t=e.getAttribute(n),i=null!==t&&"false"!==t,l=(YA.get(e)||0)+1,c=(a.get(e)||0)+1;YA.set(e,l),a.set(e,c),s.push(e),1===l&&i&&Yg.set(e,!0),1===c&&e.setAttribute(r,"true"),i||e.setAttribute(n,"true")}catch(t){console.error("aria-hidden: cannot operate on ",e,t)}})};return u(t),o.clear(),Yv++,function(){s.forEach(function(e){var t=YA.get(e)-1,i=a.get(e)-1;YA.set(e,t),a.set(e,i),t||(Yg.has(e)||e.removeAttribute(n),Yg.delete(e)),i||e.removeAttribute(r)}),--Yv||(YA=new WeakMap,YA=new WeakMap,Yg=new WeakMap,Ym={})}},Yw=function(e,t,r){void 0===r&&(r="data-aria-hidden");var n=Array.from(Array.isArray(e)?e:[e]),i=t||("u"<typeof document?null:(Array.isArray(e)?e[0]:e).ownerDocument.body);return i?(n.push.apply(n,Array.from(i.querySelectorAll("[aria-live], script"))),Yy(n,i,r,"aria-hidden")):function(){return null}},Yx=function(){return(Yx=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var i in t=arguments[r])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e}).apply(this,arguments)};function YC(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&0>t.indexOf(n)&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var i=0,n=Object.getOwnPropertySymbols(e);i<n.length;i++)0>t.indexOf(n[i])&&Object.prototype.propertyIsEnumerable.call(e,n[i])&&(r[n[i]]=e[n[i]]);return r}var YE="right-scroll-bar-position",YS="width-before-scroll-bar";function YM(e,t){return"function"==typeof e?e(t):e&&(e.current=t),e}var YI="u">typeof window?rx.useLayoutEffect:rx.useEffect,YB=new WeakMap,Yk=(void 0===eG&&(eG={}),(void 0===eH&&(eH=function(e){return e}),eV=[],eW=!1,eq={read:function(){if(eW)throw Error("Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.");return eV.length?eV[eV.length-1]:null},useMedium:function(e){var t=eH(e,eW);return eV.push(t),function(){eV=eV.filter(function(e){return e!==t})}},assignSyncMedium:function(e){for(eW=!0;eV.length;){var t=eV;eV=[],t.forEach(e)}eV={push:function(t){return e(t)},filter:function(){return eV}}},assignMedium:function(e){eW=!0;var t=[];if(eV.length){var r=eV;eV=[],r.forEach(e),t=eV}var n=function(){var r=t;t=[],r.forEach(e)},i=function(){return Promise.resolve().then(n)};i(),eV={push:function(e){t.push(e),i()},filter:function(e){return t=t.filter(e),eV}}}}).options=Yx({async:!0,ssr:!1},eG),eq),YT=function(){},YR=rx.forwardRef(function(e,t){var r,n,i,a,s=rx.useRef(null),o=rx.useState({onScrollCapture:YT,onWheelCapture:YT,onTouchMoveCapture:YT}),l=o[0],c=o[1],u=e.forwardProps,d=e.children,h=e.className,p=e.removeScrollBar,f=e.enabled,A=e.shards,g=e.sideCar,m=e.noRelative,v=e.noIsolation,b=e.inert,y=e.allowPinchZoom,w=e.as,x=e.gapMode,C=YC(e,["forwardProps","children","className","removeScrollBar","enabled","shards","sideCar","noRelative","noIsolation","inert","allowPinchZoom","as","gapMode"]),E=(r=[s,t],n=function(e){return r.forEach(function(t){return YM(t,e)})},(i=(0,rx.useState)(function(){return{value:null,callback:n,facade:{get current(){return i.value},set current(value){var e=i.value;e!==value&&(i.value=value,i.callback(value,e))}}}})[0]).callback=n,a=i.facade,YI(function(){var e=YB.get(a);if(e){var t=new Set(e),n=new Set(r),i=a.current;t.forEach(function(e){n.has(e)||YM(e,null)}),n.forEach(function(e){t.has(e)||YM(e,i)})}YB.set(a,r)},[r]),a),S=Yx(Yx({},C),l);return rx.createElement(rx.Fragment,null,f&&rx.createElement(g,{sideCar:Yk,removeScrollBar:p,shards:A,noRelative:m,noIsolation:v,inert:b,setCallbacks:c,allowPinchZoom:!!y,lockRef:s,gapMode:x}),u?rx.cloneElement(rx.Children.only(d),Yx(Yx({},S),{ref:E})):rx.createElement(void 0===w?"div":w,Yx({},S,{className:h,ref:E}),d))});YR.defaultProps={enabled:!0,removeScrollBar:!0,inert:!1},YR.classNames={fullWidth:YS,zeroRight:YE};var YD=function(e){var t=e.sideCar,r=YC(e,["sideCar"]);if(!t)throw Error("Sidecar: please provide `sideCar` property to import the right car");var n=t.read();if(!n)throw Error("Sidecar medium not found");return rx.createElement(n,Yx({},r))};YD.isSideCarExport=!0;var YP=function(){var e=0,t=null;return{add:function(r){if(0==e&&(t=function(){if(!document)return null;var e=document.createElement("style");e.type="text/css";var t=tD||VE.nc;return t&&e.setAttribute("nonce",t),e}())){var n,i;(n=t).styleSheet?n.styleSheet.cssText=r:n.appendChild(document.createTextNode(r)),i=t,(document.head||document.getElementsByTagName("head")[0]).appendChild(i)}e++},remove:function(){--e||!t||(t.parentNode&&t.parentNode.removeChild(t),t=null)}}},Y_=function(){var e=YP();return function(t,r){rx.useEffect(function(){return e.add(t),function(){e.remove()}},[t&&r])}},YL=function(){var e=Y_();return function(t){return e(t.styles,t.dynamic),null}},YN={left:0,top:0,right:0,gap:0},YF=function(e){return parseInt(e||"",10)||0},YO=function(e){var t=window.getComputedStyle(document.body),r=t["padding"===e?"paddingLeft":"marginLeft"],n=t["padding"===e?"paddingTop":"marginTop"],i=t["padding"===e?"paddingRight":"marginRight"];return[YF(r),YF(n),YF(i)]},YQ=function(e){if(void 0===e&&(e="margin"),"u"<typeof window)return YN;var t=YO(e),r=document.documentElement.clientWidth,n=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,n-r+t[2]-t[0])}},YU=YL(),Yz="data-scroll-locked",Yj=function(e,t,r,n){var i=e.left,a=e.top,s=e.right,o=e.gap;return void 0===r&&(r="margin"),"\n .".concat("with-scroll-bars-hidden"," {\n overflow: hidden ").concat(n,";\n padding-right: ").concat(o,"px ").concat(n,";\n }\n body[").concat(Yz,"] {\n overflow: hidden ").concat(n,";\n overscroll-behavior: contain;\n ").concat([t&&"position: relative ".concat(n,";"),"margin"===r&&"\n padding-left: ".concat(i,"px;\n padding-top: ").concat(a,"px;\n padding-right: ").concat(s,"px;\n margin-left:0;\n margin-top:0;\n margin-right: ").concat(o,"px ").concat(n,";\n "),"padding"===r&&"padding-right: ".concat(o,"px ").concat(n,";")].filter(Boolean).join(""),"\n }\n \n .").concat(YE," {\n right: ").concat(o,"px ").concat(n,";\n }\n \n .").concat(YS," {\n margin-right: ").concat(o,"px ").concat(n,";\n }\n \n .").concat(YE," .").concat(YE," {\n right: 0 ").concat(n,";\n }\n \n .").concat(YS," .").concat(YS," {\n margin-right: 0 ").concat(n,";\n }\n \n body[").concat(Yz,"] {\n ").concat("--removed-body-scroll-bar-size",": ").concat(o,"px;\n }\n")},YG=function(){var e=parseInt(document.body.getAttribute(Yz)||"0",10);return isFinite(e)?e:0},YH=function(){rx.useEffect(function(){return document.body.setAttribute(Yz,(YG()+1).toString()),function(){var e=YG()-1;e<=0?document.body.removeAttribute(Yz):document.body.setAttribute(Yz,e.toString())}},[])},YV=function(e){var t=e.noRelative,r=e.noImportant,n=e.gapMode,i=void 0===n?"margin":n;YH();var a=rx.useMemo(function(){return YQ(i)},[i]);return rx.createElement(YU,{styles:Yj(a,!t,i,r?"":"!important")})},YW=!1;if("u">typeof window)try{var Yq=Object.defineProperty({},"passive",{get:function(){return YW=!0,!0}});window.addEventListener("test",Yq,Yq),window.removeEventListener("test",Yq,Yq)}catch(e){YW=!1}var YK=!!YW&&{passive:!1},YJ=function(e,t){if(!(e instanceof Element))return!1;var r=window.getComputedStyle(e);return"hidden"!==r[t]&&(r.overflowY!==r.overflowX||"TEXTAREA"===e.tagName||"visible"!==r[t])},YY=function(e,t){var r=t.ownerDocument,n=t;do{if("u">typeof ShadowRoot&&n instanceof ShadowRoot&&(n=n.host),YX(e,n)){var i=YZ(e,n);if(i[1]>i[2])return!0}n=n.parentNode}while(n&&n!==r.body);return!1},YX=function(e,t){return"v"===e?YJ(t,"overflowY"):YJ(t,"overflowX")},YZ=function(e,t){return"v"===e?[t.scrollTop,t.scrollHeight,t.clientHeight]:[t.scrollLeft,t.scrollWidth,t.clientWidth]},Y$=function(e,t,r,n,i){var a,s=(a=window.getComputedStyle(t).direction,"h"===e&&"rtl"===a?-1:1),o=s*n,l=r.target,c=t.contains(l),u=!1,d=o>0,h=0,p=0;do{if(!l)break;var f=YZ(e,l),A=f[0],g=f[1]-f[2]-s*A;(A||g)&&YX(e,l)&&(h+=g,p+=A);var m=l.parentNode;l=m&&m.nodeType===Node.DOCUMENT_FRAGMENT_NODE?m.host:m}while(!c&&l!==document.body||c&&(t.contains(l)||t===l));return d&&(i&&1>Math.abs(h)||!i&&o>h)?u=!0:!d&&(i&&1>Math.abs(p)||!i&&-o>p)&&(u=!0),u},Y0=function(e){return"changedTouches"in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},Y1=function(e){return[e.deltaX,e.deltaY]},Y2=function(e){return e&&"current"in e?e.current:e},Y3=0,Y9=[];let Y4=(eK=function(e){var t=rx.useRef([]),r=rx.useRef([0,0]),n=rx.useRef(),i=rx.useState(Y3++)[0],a=rx.useState(YL)[0],s=rx.useRef(e);rx.useEffect(function(){s.current=e},[e]),rx.useEffect(function(){if(e.inert){document.body.classList.add("block-interactivity-".concat(i));var t=(function(e,t,r){if(r||2==arguments.length)for(var n,i=0,a=t.length;i<a;i++)!n&&i in t||(n||(n=Array.prototype.slice.call(t,0,i)),n[i]=t[i]);return e.concat(n||Array.prototype.slice.call(t))})([e.lockRef.current],(e.shards||[]).map(Y2),!0).filter(Boolean);return t.forEach(function(e){return e.classList.add("allow-interactivity-".concat(i))}),function(){document.body.classList.remove("block-interactivity-".concat(i)),t.forEach(function(e){return e.classList.remove("allow-interactivity-".concat(i))})}}},[e.inert,e.lockRef.current,e.shards]);var o=rx.useCallback(function(e,t){if("touches"in e&&2===e.touches.length||"wheel"===e.type&&e.ctrlKey)return!s.current.allowPinchZoom;var i,a=Y0(e),o=r.current,l="deltaX"in e?e.deltaX:o[0]-a[0],c="deltaY"in e?e.deltaY:o[1]-a[1],u=e.target,d=Math.abs(l)>Math.abs(c)?"h":"v";if("touches"in e&&"h"===d&&"range"===u.type)return!1;var h=window.getSelection(),p=h&&h.anchorNode;if(p&&(p===u||p.contains(u)))return!1;var f=YY(d,u);if(!f)return!0;if(f?i=d:(i="v"===d?"h":"v",f=YY(d,u)),!f)return!1;if(!n.current&&"changedTouches"in e&&(l||c)&&(n.current=i),!i)return!0;var A=n.current||i;return Y$(A,t,e,"h"===A?l:c,!0)},[]),l=rx.useCallback(function(e){if(Y9.length&&Y9[Y9.length-1]===a){var r="deltaY"in e?Y1(e):Y0(e),n=t.current.filter(function(t){var n;return t.name===e.type&&(t.target===e.target||e.target===t.shadowParent)&&(n=t.delta,n[0]===r[0]&&n[1]===r[1])})[0];if(n&&n.should){e.cancelable&&e.preventDefault();return}if(!n){var i=(s.current.shards||[]).map(Y2).filter(Boolean).filter(function(t){return t.contains(e.target)});(i.length>0?o(e,i[0]):!s.current.noIsolation)&&e.cancelable&&e.preventDefault()}}},[]),c=rx.useCallback(function(e,r,n,i){var a={name:e,delta:r,target:n,should:i,shadowParent:function(e){for(var t=null;null!==e;)e instanceof ShadowRoot&&(t=e.host,e=e.host),e=e.parentNode;return t}(n)};t.current.push(a),setTimeout(function(){t.current=t.current.filter(function(e){return e!==a})},1)},[]),u=rx.useCallback(function(e){r.current=Y0(e),n.current=void 0},[]),d=rx.useCallback(function(t){c(t.type,Y1(t),t.target,o(t,e.lockRef.current))},[]),h=rx.useCallback(function(t){c(t.type,Y0(t),t.target,o(t,e.lockRef.current))},[]);rx.useEffect(function(){return Y9.push(a),e.setCallbacks({onScrollCapture:d,onWheelCapture:d,onTouchMoveCapture:h}),document.addEventListener("wheel",l,YK),document.addEventListener("touchmove",l,YK),document.addEventListener("touchstart",u,YK),function(){Y9=Y9.filter(function(e){return e!==a}),document.removeEventListener("wheel",l,YK),document.removeEventListener("touchmove",l,YK),document.removeEventListener("touchstart",u,YK)}},[]);var p=e.removeScrollBar,f=e.inert;return rx.createElement(rx.Fragment,null,f?rx.createElement(a,{styles:"\n .block-interactivity-".concat(i," {pointer-events: none;}\n .allow-interactivity-").concat(i," {pointer-events: all;}\n")}):null,p?rx.createElement(YV,{noRelative:e.noRelative,gapMode:e.gapMode}):null)},Yk.useMedium(eK),YD);var Y5=rx.forwardRef(function(e,t){return rx.createElement(YR,Yx({},e,{ref:t,sideCar:Y4}))});Y5.classNames=YR.classNames;var Y8=["Enter"," "],Y6=["ArrowUp","PageDown","End"],Y7=["ArrowDown","PageUp","Home",...Y6],Xe={ltr:[...Y8,"ArrowRight"],rtl:[...Y8,"ArrowLeft"]},Xt={ltr:["ArrowLeft"],rtl:["ArrowRight"]},Xr="Menu",[Xn,Xi,Xa]=Kd(Xr),[Xs,Xo]=Ka(Xr,[Xa,JH,Ys]),Xl=JH(),Xc=Ys(),[Xu,Xd]=Xs(Xr),[Xh,Xp]=Xs(Xr),Xf=e=>{let{__scopeMenu:t,open:r=!1,children:n,dir:i,onOpenChange:a,modal:s=!0}=e,o=Xl(t),[l,c]=rx.useState(null),u=rx.useRef(!1),d=Kf(a),h=Kp(i);return rx.useEffect(()=>{let e=()=>{u.current=!0,document.addEventListener("pointerdown",t,{capture:!0,once:!0}),document.addEventListener("pointermove",t,{capture:!0,once:!0})},t=()=>u.current=!1;return document.addEventListener("keydown",e,{capture:!0}),()=>{document.removeEventListener("keydown",e,{capture:!0}),document.removeEventListener("pointerdown",t,{capture:!0}),document.removeEventListener("pointermove",t,{capture:!0})}},[]),(0,rE.jsx)(Jq,{...o,children:(0,rE.jsx)(Xu,{scope:t,open:r,onOpenChange:d,content:l,onContentChange:c,children:(0,rE.jsx)(Xh,{scope:t,onClose:rx.useCallback(()=>d(!1),[d]),isUsingKeyboardRef:u,dir:h,modal:s,children:n})})})};Xf.displayName=Xr;var XA=rx.forwardRef((e,t)=>{let{__scopeMenu:r,...n}=e,i=Xl(r);return(0,rE.jsx)(JJ,{...i,...n,ref:t})});XA.displayName="MenuAnchor";var Xg="MenuPortal",[Xm,Xv]=Xs(Xg,{forceMount:void 0}),Xb=e=>{let{__scopeMenu:t,forceMount:r,children:n,container:i}=e,a=Xd(Xg,t);return(0,rE.jsx)(Xm,{scope:t,forceMount:r,children:(0,rE.jsx)(J8,{present:r||a.open,children:(0,rE.jsx)(J5,{asChild:!0,container:i,children:n})})})};Xb.displayName=Xg;var Xy="MenuContent",[Xw,Xx]=Xs(Xy),XC=rx.forwardRef((e,t)=>{let r=Xv(Xy,e.__scopeMenu),{forceMount:n=r.forceMount,...i}=e,a=Xd(Xy,e.__scopeMenu),s=Xp(Xy,e.__scopeMenu);return(0,rE.jsx)(Xn.Provider,{scope:e.__scopeMenu,children:(0,rE.jsx)(J8,{present:n||a.open,children:(0,rE.jsx)(Xn.Slot,{scope:e.__scopeMenu,children:s.modal?(0,rE.jsx)(XE,{...i,ref:t}):(0,rE.jsx)(XS,{...i,ref:t})})})})}),XE=rx.forwardRef((e,t)=>{let r=Xd(Xy,e.__scopeMenu),n=rx.useRef(null),i=Ki(t,n);return rx.useEffect(()=>{let e=n.current;if(e)return Yw(e)},[]),(0,rE.jsx)(XI,{...e,ref:i,trapFocus:r.open,disableOutsidePointerEvents:r.open,disableOutsideScroll:!0,onFocusOutside:Kt(e.onFocusOutside,e=>e.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>r.onOpenChange(!1)})}),XS=rx.forwardRef((e,t)=>{let r=Xd(Xy,e.__scopeMenu);return(0,rE.jsx)(XI,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>r.onOpenChange(!1)})}),XM=ov("MenuContent.ScrollLock"),XI=rx.forwardRef((e,t)=>{let{__scopeMenu:r,loop:n=!1,trapFocus:i,onOpenAutoFocus:a,onCloseAutoFocus:s,disableOutsidePointerEvents:o,onEntryFocus:l,onEscapeKeyDown:c,onPointerDownOutside:u,onFocusOutside:d,onInteractOutside:h,onDismiss:p,disableOutsideScroll:f,...A}=e,g=Xd(Xy,r),m=Xp(Xy,r),v=Xl(r),b=Xc(r),y=Xi(r),[w,x]=rx.useState(null),C=rx.useRef(null),E=Ki(t,C,g.onContentChange),S=rx.useRef(0),M=rx.useRef(""),I=rx.useRef(0),B=rx.useRef(null),k=rx.useRef("right"),T=rx.useRef(0),R=f?Y5:rx.Fragment;rx.useEffect(()=>()=>window.clearTimeout(S.current),[]),rx.useEffect(()=>{let e=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",e[0]??Kw()),document.body.insertAdjacentElement("beforeend",e[1]??Kw()),Ky++,()=>{1===Ky&&document.querySelectorAll("[data-radix-focus-guard]").forEach(e=>e.remove()),Ky--}},[]);let D=rx.useCallback(e=>{var t,r;return k.current===B.current?.side&&(t=e,!!(r=B.current?.area)&&function(e,t){let{x:r,y:n}=e,i=!1;for(let e=0,a=t.length-1;e<t.length;a=e++){let s=t[e],o=t[a],l=s.x,c=s.y,u=o.x,d=o.y;c>n!=d>n&&r<(u-l)*(n-c)/(d-c)+l&&(i=!i)}return i}({x:t.clientX,y:t.clientY},r))},[]);return(0,rE.jsx)(Xw,{scope:r,searchRef:M,onItemEnter:rx.useCallback(e=>{D(e)&&e.preventDefault()},[D]),onItemLeave:rx.useCallback(e=>{D(e)||(C.current?.focus(),x(null))},[D]),onTriggerLeave:rx.useCallback(e=>{D(e)&&e.preventDefault()},[D]),pointerGraceTimerRef:I,onPointerGraceIntentChange:rx.useCallback(e=>{B.current=e},[]),children:(0,rE.jsx)(R,{...f?{as:XM,allowPinchZoom:!0}:void 0,children:(0,rE.jsx)(KS,{asChild:!0,trapped:i,onMountAutoFocus:Kt(a,e=>{e.preventDefault(),C.current?.focus({preventScroll:!0})}),onUnmountAutoFocus:s,children:(0,rE.jsx)(Km,{asChild:!0,disableOutsidePointerEvents:o,onEscapeKeyDown:c,onPointerDownOutside:u,onFocusOutside:d,onInteractOutside:h,onDismiss:p,children:(0,rE.jsx)(Yc,{asChild:!0,...b,dir:m.dir,orientation:"vertical",loop:n,currentTabStopId:w,onCurrentTabStopIdChange:x,onEntryFocus:Kt(l,e=>{m.isUsingKeyboardRef.current||e.preventDefault()}),preventScrollOnEntryFocus:!0,children:(0,rE.jsx)(J$,{role:"menu","aria-orientation":"vertical","data-state":X$(g.open),"data-radix-menu-content":"",dir:m.dir,...v,...A,ref:E,style:{outline:"none",...A.style},onKeyDown:Kt(A.onKeyDown,e=>{let t=e.target.closest("[data-radix-menu-content]")===e.currentTarget,r=e.ctrlKey||e.altKey||e.metaKey,n=1===e.key.length;if(t){var i;let t,a,s,o,l,c;"Tab"===e.key&&e.preventDefault(),!r&&n&&(i=e.key,t=M.current+i,a=y().filter(e=>!e.disabled),s=document.activeElement,o=a.find(e=>e.ref.current===s)?.textValue,l=function(e,t,r){var n;let i=t.length>1&&Array.from(t).every(e=>e===t[0])?t[0]:t,a=r?e.indexOf(r):-1,s=(n=Math.max(a,0),e.map((t,r)=>e[(n+r)%e.length]));1===i.length&&(s=s.filter(e=>e!==r));let o=s.find(e=>e.toLowerCase().startsWith(i.toLowerCase()));return o!==r?o:void 0}(a.map(e=>e.textValue),t,o),c=a.find(e=>e.textValue===l)?.ref.current,function e(t){M.current=t,window.clearTimeout(S.current),""!==t&&(S.current=window.setTimeout(()=>e(""),1e3))}(t),c&&setTimeout(()=>c.focus()))}let a=C.current;if(e.target!==a||!Y7.includes(e.key))return;e.preventDefault();let s=y().filter(e=>!e.disabled).map(e=>e.ref.current);Y6.includes(e.key)&&s.reverse(),function(e){let t=document.activeElement;for(let r of e)if(r===t||(r.focus(),document.activeElement!==t))return}(s)}),onBlur:Kt(e.onBlur,e=>{e.currentTarget.contains(e.target)||(window.clearTimeout(S.current),M.current="")}),onPointerMove:Kt(e.onPointerMove,X2(e=>{let t=e.target,r=T.current!==e.clientX;e.currentTarget.contains(t)&&r&&(k.current=e.clientX>T.current?"right":"left",T.current=e.clientX)}))})})})})})})});XC.displayName=Xy;var XB=rx.forwardRef((e,t)=>{let{__scopeMenu:r,...n}=e;return(0,rE.jsx)(Kc.div,{role:"group",...n,ref:t})});XB.displayName="MenuGroup";var Xk=rx.forwardRef((e,t)=>{let{__scopeMenu:r,...n}=e;return(0,rE.jsx)(Kc.div,{...n,ref:t})});Xk.displayName="MenuLabel";var XT="MenuItem",XR="menu.itemSelect",XD=rx.forwardRef((e,t)=>{let{disabled:r=!1,onSelect:n,...i}=e,a=rx.useRef(null),s=Xp(XT,e.__scopeMenu),o=Xx(XT,e.__scopeMenu),l=Ki(t,a),c=rx.useRef(!1);return(0,rE.jsx)(XP,{...i,ref:l,disabled:r,onClick:Kt(e.onClick,()=>{let e=a.current;if(!r&&e){let t=new CustomEvent(XR,{bubbles:!0,cancelable:!0});e.addEventListener(XR,e=>n?.(e),{once:!0}),Ku(e,t),t.defaultPrevented?c.current=!1:s.onClose()}}),onPointerDown:t=>{e.onPointerDown?.(t),c.current=!0},onPointerUp:Kt(e.onPointerUp,e=>{c.current||e.currentTarget?.click()}),onKeyDown:Kt(e.onKeyDown,e=>{let t=""!==o.searchRef.current;r||t&&" "===e.key||Y8.includes(e.key)&&(e.currentTarget.click(),e.preventDefault())})})});XD.displayName=XT;var XP=rx.forwardRef((e,t)=>{let{__scopeMenu:r,disabled:n=!1,textValue:i,...a}=e,s=Xx(XT,r),o=Xc(r),l=rx.useRef(null),c=Ki(t,l),[u,d]=rx.useState(!1),[h,p]=rx.useState("");return rx.useEffect(()=>{let e=l.current;e&&p((e.textContent??"").trim())},[a.children]),(0,rE.jsx)(Xn.ItemSlot,{scope:r,disabled:n,textValue:i??h,children:(0,rE.jsx)(Yh,{asChild:!0,...o,focusable:!n,children:(0,rE.jsx)(Kc.div,{role:"menuitem","data-highlighted":u?"":void 0,"aria-disabled":n||void 0,"data-disabled":n?"":void 0,...a,ref:c,onPointerMove:Kt(e.onPointerMove,X2(e=>{n?s.onItemLeave(e):(s.onItemEnter(e),e.defaultPrevented||e.currentTarget.focus({preventScroll:!0}))})),onPointerLeave:Kt(e.onPointerLeave,X2(e=>s.onItemLeave(e))),onFocus:Kt(e.onFocus,()=>d(!0)),onBlur:Kt(e.onBlur,()=>d(!1))})})})}),X_=rx.forwardRef((e,t)=>{let{checked:r=!1,onCheckedChange:n,...i}=e;return(0,rE.jsx)(Xj,{scope:e.__scopeMenu,checked:r,children:(0,rE.jsx)(XD,{role:"menuitemcheckbox","aria-checked":X0(r)?"mixed":r,...i,ref:t,"data-state":X1(r),onSelect:Kt(i.onSelect,()=>n?.(!!X0(r)||!r),{checkForDefaultPrevented:!1})})})});X_.displayName="MenuCheckboxItem";var XL="MenuRadioGroup",[XN,XF]=Xs(XL,{value:void 0,onValueChange:()=>{}}),XO=rx.forwardRef((e,t)=>{let{value:r,onValueChange:n,...i}=e,a=Kf(n);return(0,rE.jsx)(XN,{scope:e.__scopeMenu,value:r,onValueChange:a,children:(0,rE.jsx)(XB,{...i,ref:t})})});XO.displayName=XL;var XQ="MenuRadioItem",XU=rx.forwardRef((e,t)=>{let{value:r,...n}=e,i=XF(XQ,e.__scopeMenu),a=r===i.value;return(0,rE.jsx)(Xj,{scope:e.__scopeMenu,checked:a,children:(0,rE.jsx)(XD,{role:"menuitemradio","aria-checked":a,...n,ref:t,"data-state":X1(a),onSelect:Kt(n.onSelect,()=>i.onValueChange?.(r),{checkForDefaultPrevented:!1})})})});XU.displayName=XQ;var Xz="MenuItemIndicator",[Xj,XG]=Xs(Xz,{checked:!1}),XH=rx.forwardRef((e,t)=>{let{__scopeMenu:r,forceMount:n,...i}=e,a=XG(Xz,r);return(0,rE.jsx)(J8,{present:n||X0(a.checked)||!0===a.checked,children:(0,rE.jsx)(Kc.span,{...i,ref:t,"data-state":X1(a.checked)})})});XH.displayName=Xz;var XV=rx.forwardRef((e,t)=>{let{__scopeMenu:r,...n}=e;return(0,rE.jsx)(Kc.div,{role:"separator","aria-orientation":"horizontal",...n,ref:t})});XV.displayName="MenuSeparator";var XW=rx.forwardRef((e,t)=>{let{__scopeMenu:r,...n}=e,i=Xl(r);return(0,rE.jsx)(J2,{...i,...n,ref:t})});XW.displayName="MenuArrow";var[Xq,XK]=Xs("MenuSub"),XJ="MenuSubTrigger",XY=rx.forwardRef((e,t)=>{let r=Xd(XJ,e.__scopeMenu),n=Xp(XJ,e.__scopeMenu),i=XK(XJ,e.__scopeMenu),a=Xx(XJ,e.__scopeMenu),s=rx.useRef(null),{pointerGraceTimerRef:o,onPointerGraceIntentChange:l}=a,c={__scopeMenu:e.__scopeMenu},u=rx.useCallback(()=>{s.current&&window.clearTimeout(s.current),s.current=null},[]);return rx.useEffect(()=>u,[u]),rx.useEffect(()=>{let e=o.current;return()=>{window.clearTimeout(e),l(null)}},[o,l]),(0,rE.jsx)(XA,{asChild:!0,...c,children:(0,rE.jsx)(XP,{id:i.triggerId,"aria-haspopup":"menu","aria-expanded":r.open,"aria-controls":i.contentId,"data-state":X$(r.open),...e,ref:Kn(t,i.onTriggerChange),onClick:t=>{e.onClick?.(t),e.disabled||t.defaultPrevented||(t.currentTarget.focus(),r.open||r.onOpenChange(!0))},onPointerMove:Kt(e.onPointerMove,X2(t=>{a.onItemEnter(t),!t.defaultPrevented&&(e.disabled||r.open||s.current||(a.onPointerGraceIntentChange(null),s.current=window.setTimeout(()=>{r.onOpenChange(!0),u()},100)))})),onPointerLeave:Kt(e.onPointerLeave,X2(e=>{u();let t=r.content?.getBoundingClientRect();if(t){let n=r.content?.dataset.side,i="right"===n,s=t[i?"left":"right"],l=t[i?"right":"left"];a.onPointerGraceIntentChange({area:[{x:e.clientX+(i?-5:5),y:e.clientY},{x:s,y:t.top},{x:l,y:t.top},{x:l,y:t.bottom},{x:s,y:t.bottom}],side:n}),window.clearTimeout(o.current),o.current=window.setTimeout(()=>a.onPointerGraceIntentChange(null),300)}else{if(a.onTriggerLeave(e),e.defaultPrevented)return;a.onPointerGraceIntentChange(null)}})),onKeyDown:Kt(e.onKeyDown,t=>{let i=""!==a.searchRef.current;e.disabled||i&&" "===t.key||Xe[n.dir].includes(t.key)&&(r.onOpenChange(!0),r.content?.focus(),t.preventDefault())})})})});XY.displayName=XJ;var XX="MenuSubContent",XZ=rx.forwardRef((e,t)=>{let r=Xv(Xy,e.__scopeMenu),{forceMount:n=r.forceMount,...i}=e,a=Xd(Xy,e.__scopeMenu),s=Xp(Xy,e.__scopeMenu),o=XK(XX,e.__scopeMenu),l=rx.useRef(null),c=Ki(t,l);return(0,rE.jsx)(Xn.Provider,{scope:e.__scopeMenu,children:(0,rE.jsx)(J8,{present:n||a.open,children:(0,rE.jsx)(Xn.Slot,{scope:e.__scopeMenu,children:(0,rE.jsx)(XI,{id:o.contentId,"aria-labelledby":o.triggerId,...i,ref:c,align:"start",side:"rtl"===s.dir?"left":"right",disableOutsidePointerEvents:!1,disableOutsideScroll:!1,trapFocus:!1,onOpenAutoFocus:e=>{s.isUsingKeyboardRef.current&&l.current?.focus(),e.preventDefault()},onCloseAutoFocus:e=>e.preventDefault(),onFocusOutside:Kt(e.onFocusOutside,e=>{e.target!==o.trigger&&a.onOpenChange(!1)}),onEscapeKeyDown:Kt(e.onEscapeKeyDown,e=>{s.onClose(),e.preventDefault()}),onKeyDown:Kt(e.onKeyDown,e=>{let t=e.currentTarget.contains(e.target),r=Xt[s.dir].includes(e.key);t&&r&&(a.onOpenChange(!1),o.trigger?.focus(),e.preventDefault())})})})})})});function X$(e){return e?"open":"closed"}function X0(e){return"indeterminate"===e}function X1(e){return X0(e)?"indeterminate":e?"checked":"unchecked"}function X2(e){return t=>"mouse"===t.pointerType?e(t):void 0}XZ.displayName=XX;var X3="DropdownMenu",[X9,X4]=Ka(X3,[Xo]),X5=Xo(),[X8,X6]=X9(X3),X7=e=>{let{__scopeDropdownMenu:t,children:r,dir:n,open:i,defaultOpen:a,onOpenChange:s,modal:o=!0}=e,l=X5(t),c=rx.useRef(null),[u,d]=Kl({prop:i,defaultProp:a??!1,onChange:s,caller:X3});return(0,rE.jsx)(X8,{scope:t,triggerId:KP(),triggerRef:c,contentId:KP(),open:u,onOpenChange:d,onOpenToggle:rx.useCallback(()=>d(e=>!e),[d]),modal:o,children:(0,rE.jsx)(Xf,{...l,open:u,onOpenChange:d,dir:n,modal:o,children:r})})};X7.displayName=X3;var Ze="DropdownMenuTrigger",Zt=rx.forwardRef((e,t)=>{let{__scopeDropdownMenu:r,disabled:n=!1,...i}=e,a=X6(Ze,r),s=X5(r);return(0,rE.jsx)(XA,{asChild:!0,...s,children:(0,rE.jsx)(Kc.button,{type:"button",id:a.triggerId,"aria-haspopup":"menu","aria-expanded":a.open,"aria-controls":a.open?a.contentId:void 0,"data-state":a.open?"open":"closed","data-disabled":n?"":void 0,disabled:n,...i,ref:Kn(t,a.triggerRef),onPointerDown:Kt(e.onPointerDown,e=>{!n&&0===e.button&&!1===e.ctrlKey&&(a.onOpenToggle(),a.open||e.preventDefault())}),onKeyDown:Kt(e.onKeyDown,e=>{!n&&(["Enter"," "].includes(e.key)&&a.onOpenToggle(),"ArrowDown"===e.key&&a.onOpenChange(!0),["Enter"," ","ArrowDown"].includes(e.key)&&e.preventDefault())})})})});Zt.displayName=Ze;var Zr=e=>{let{__scopeDropdownMenu:t,...r}=e,n=X5(t);return(0,rE.jsx)(Xb,{...n,...r})};Zr.displayName="DropdownMenuPortal";var Zn="DropdownMenuContent",Zi=rx.forwardRef((e,t)=>{let{__scopeDropdownMenu:r,...n}=e,i=X6(Zn,r),a=X5(r),s=rx.useRef(!1);return(0,rE.jsx)(XC,{id:i.contentId,"aria-labelledby":i.triggerId,...a,...n,ref:t,onCloseAutoFocus:Kt(e.onCloseAutoFocus,e=>{s.current||i.triggerRef.current?.focus(),s.current=!1,e.preventDefault()}),onInteractOutside:Kt(e.onInteractOutside,e=>{let t=e.detail.originalEvent,r=0===t.button&&!0===t.ctrlKey,n=2===t.button||r;(!i.modal||n)&&(s.current=!0)}),style:{...e.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});Zi.displayName=Zn;var Za=rx.forwardRef((e,t)=>{let{__scopeDropdownMenu:r,...n}=e,i=X5(r);return(0,rE.jsx)(XB,{...i,...n,ref:t})});Za.displayName="DropdownMenuGroup",rx.forwardRef((e,t)=>{let{__scopeDropdownMenu:r,...n}=e,i=X5(r);return(0,rE.jsx)(Xk,{...i,...n,ref:t})}).displayName="DropdownMenuLabel";var Zs=rx.forwardRef((e,t)=>{let{__scopeDropdownMenu:r,...n}=e,i=X5(r);return(0,rE.jsx)(XD,{...i,...n,ref:t})});Zs.displayName="DropdownMenuItem";var Zo=rx.forwardRef((e,t)=>{let{__scopeDropdownMenu:r,...n}=e,i=X5(r);return(0,rE.jsx)(X_,{...i,...n,ref:t})});Zo.displayName="DropdownMenuCheckboxItem",rx.forwardRef((e,t)=>{let{__scopeDropdownMenu:r,...n}=e,i=X5(r);return(0,rE.jsx)(XO,{...i,...n,ref:t})}).displayName="DropdownMenuRadioGroup",rx.forwardRef((e,t)=>{let{__scopeDropdownMenu:r,...n}=e,i=X5(r);return(0,rE.jsx)(XU,{...i,...n,ref:t})}).displayName="DropdownMenuRadioItem";var Zl=rx.forwardRef((e,t)=>{let{__scopeDropdownMenu:r,...n}=e,i=X5(r);return(0,rE.jsx)(XH,{...i,...n,ref:t})});Zl.displayName="DropdownMenuItemIndicator";var Zc=rx.forwardRef((e,t)=>{let{__scopeDropdownMenu:r,...n}=e,i=X5(r);return(0,rE.jsx)(XV,{...i,...n,ref:t})});function Zu({...e}){return(0,rE.jsx)(X7,{"data-slot":"dropdown-menu",...e})}function Zd({...e}){return(0,rE.jsx)(Zt,{"data-slot":"dropdown-menu-trigger",...e})}function Zh({...e}){return(0,rE.jsx)(Za,{"data-slot":"dropdown-menu-group",...e})}function Zp({className:e,sideOffset:t=4,portalContainer:r,...n}){return(0,rE.jsx)(Zr,{container:r,children:(0,rE.jsx)(Zi,{"data-slot":"dropdown-menu-content",sideOffset:t,className:Wy("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 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-md",e),...n})})}function Zf({className:e,inset:t,variant:r="default",...n}){return(0,rE.jsx)(Zs,{"data-slot":"dropdown-menu-item","data-inset":t,"data-variant":r,className:Wy("relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden hover:bg-background-base focus:bg-background-base data-[highlighted]:bg-background-base data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:hover:bg-destructive/10 data-[highlighted][data-variant=destructive]:bg-destructive/10 data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg:not([class*=text-])]:text-muted-foreground data-[variant=destructive]:[&_svg:not([class*=text-])]:text-inherit [&_svg]:pointer-events-none [&_svg]:shrink-0",t&&"pl-8",e),...n})}function ZA({className:e,children:t,checked:r,indicatorPosition:n="left",...i}){return(0,rE.jsxs)(Zo,{"data-slot":"dropdown-menu-checkbox-item",className:Wy("relative flex cursor-default select-none items-center rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden hover:bg-background-base focus:bg-background-base data-[highlighted]:bg-background-base data-[disabled]:pointer-events-none data-[disabled]:opacity-50","right"===n&&"pr-8 pl-2",e),checked:r,...i,children:[(0,rE.jsx)("span",{className:Wy("pointer-events-none absolute flex size-3.5 items-center justify-center","right"===n?"right-2":"left-2"),children:(0,rE.jsx)(Zl,{children:(0,rE.jsx)(uh,{className:"size-4"})})}),t]})}function Zg({className:e,...t}){return(0,rE.jsx)(Zc,{"data-slot":"dropdown-menu-separator",className:Wy("bg-border -mx-1 my-1 h-px",e),...t})}function Zm({material:e}){let t=e.previews?.[0]?.subRes?.small??e.previews?.[0]?.url,[r,n]=(0,rx.useState)();return t&&t!==r?(0,rE.jsx)("img",{src:t,alt:"",className:"size-5 shrink-0 rounded-xs object-cover",onError:()=>n(t)}):(0,rE.jsx)(WU,{className:"size-5! shrink-0"})}function Zv(){let e=ZS(),{containerRef:t}=W7(),{t:r}=sf(),[n,i]=(0,rx.useState)(null);if(e?.menu&&e.menu!==n&&i(e.menu),!e)return null;let a=e.panels.find(t=>Zw(t)===e.selected);return(0,rE.jsxs)(Zu,{modal:!1,open:!!(e.menu&&a),onOpenChange:t=>!t&&e.closeMenu(),children:[(0,rE.jsx)(Zd,{asChild:!0,children:(0,rE.jsx)("button",{type:"button","data-panel-menu":"","aria-label":r("wallPanel.actions"),tabIndex:-1,style:{position:"fixed",left:n?.x??0,top:n?.y??0,width:1,height:1,pointerEvents:"none",opacity:0}})}),(0,rE.jsxs)(Zp,{"data-panel-menu":"",onCloseAutoFocus:e=>e.preventDefault(),onEscapeKeyDown:r=>{r.preventDefault(),e.closeMenu();let n=Array.from(t?.querySelectorAll("[data-panel-key]")??[]).find(t=>t.dataset.panelKey===e.selected);n?.focus({preventScroll:!0})},portalContainer:t,collisionBoundary:t,collisionPadding:8,align:"start",className:"flex w-56 max-w-[var(--radix-dropdown-menu-content-available-width)] flex-col",style:{maxHeight:"var(--radix-dropdown-menu-content-available-height)"},children:[(0,rE.jsx)(Zh,{"aria-label":r("wallPanel.materials"),className:"min-h-0 overflow-y-auto overscroll-contain",children:e.options.map(({material:t,number:n,error:i,loading:s})=>(0,rE.jsxs)(ZA,{indicatorPosition:"right",checked:a?.materialId===t.hid,onCheckedChange:()=>e.chooseMaterial(t.hid),onSelect:e=>e.preventDefault(),className:"gap-2 [@media(pointer:coarse)]:min-h-11",children:[(0,rE.jsx)("span",{className:"pointer-events-none flex size-5 shrink-0 items-center justify-center",children:a?.requestedMaterialId===t.hid&&s?(0,rE.jsx)(WJ,{"aria-label":r("wallPanel.loading")}):a?.requestedMaterialId===t.hid&&i?(0,rE.jsx)("span",{role:"status","aria-label":r("wallPanel.retry"),children:(0,rE.jsx)(ug,{className:"size-3.5","aria-hidden":"true"})}):(0,rE.jsx)(Zm,{material:t})}),(0,rE.jsx)("span",{className:"min-w-0 flex-1",children:t.name?.trim()?t.name:r("wallPanel.materialFallback",{number:n})})]},t.hid))}),(0,rE.jsx)(Zg,{}),(0,rE.jsx)(Zh,{className:"shrink-0",children:(0,rE.jsxs)(Zf,{className:"[@media(pointer:coarse)]:min-h-11",onSelect:t=>{t.preventDefault(),e.rotate()},children:[(0,rE.jsx)(WV,{className:"size-4!"}),r("wallPanel.rotate")]})}),(0,rE.jsx)(Zg,{}),(0,rE.jsx)(Zh,{className:"shrink-0",children:(0,rE.jsxs)(Zf,{className:"[@media(pointer:coarse)]:min-h-11",variant:"destructive",disabled:1===e.panels.length,onSelect:e.remove,children:[(0,rE.jsx)("span",{className:"flex size-4 shrink-0 items-center justify-center",children:(0,rE.jsx)(WQ,{className:"size-3!"})}),r("wallPanel.delete")]})})]})]})}async function Zb(e){let t=new xD,r=new Rq(t).setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.5/");try{let{scene:n}=await new RX(t).setDRACOLoader(r).setMeshoptDecoder(Rj).loadAsync(e),i=new vi().setFromObject(n),a=i.getSize(new g0),s=i.getCenter(new g0);return{scene:n,width:a.x,depth:a.z,mountingOffset:[-s.x,-s.y,-i.min.z]}}finally{r.dispose()}}function Zy(e){return{queryKey:["wall-panel-model",e],queryFn:()=>Zb(e),staleTime:1/0,gcTime:1/0,retry:!1}}function Zw(e){return`${e.x},${e.y}`}function Zx(e,t,r){return{product:e,menu:null,generation:0,panels:[{x:0,y:0,turns:0,materialId:t}],selected:r?null:"0,0"}}Zc.displayName="DropdownMenuSeparator",rx.forwardRef((e,t)=>{let{__scopeDropdownMenu:r,...n}=e,i=X5(r);return(0,rE.jsx)(XW,{...i,...n,ref:t})}).displayName="DropdownMenuArrow",rx.forwardRef((e,t)=>{let{__scopeDropdownMenu:r,...n}=e,i=X5(r);return(0,rE.jsx)(XY,{...i,...n,ref:t})}).displayName="DropdownMenuSubTrigger",rx.forwardRef((e,t)=>{let{__scopeDropdownMenu:r,...n}=e,i=X5(r);return(0,rE.jsx)(XZ,{...i,...n,ref:t,style:{...e.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}})}).displayName="DropdownMenuSubContent";let ZC=(0,rx.createContext)(null);function ZE({children:e}){let{type:t}=W4(),{viewerDialogOpen:r}=W5(),{containerRef:n}=W7(),i="panel-group"===Wb[t].manipulation,{room:a}=W8(),s=function(e,t){let{tinuuid:r,selectedObject:n}=W6(),{viewerDialogOpen:i}=W5(),a=n?.tinuuid===r?n:null,s=a?.materials?.[0],o=q6("(max-width: 639px)"),l=function(e,t,r){let[n,i]=(0,rx.useState)(()=>Zx(e,t,r));(n.product!==e||t&&!n.panels[0]?.materialId)&&i({...n,product:e,menu:null,panels:n.panels.map(e=>({...e,materialId:t,requestedMaterialId:void 0}))});let a=(0,rx.useCallback)(()=>i(e=>({...e,menu:null})),[]),s=(0,rx.useCallback)((e,t)=>i(r=>({...r,selected:e,menu:t})),[]),o=(0,rx.useCallback)(()=>i(e=>({...e,selected:null,menu:null})),[]),l=(0,rx.useCallback)(()=>i(e=>({...Zx(e.product,t,r),generation:e.generation+1})),[t,r]),c=(0,rx.useCallback)(()=>i(e=>({...e,panels:e.panels.map(t=>Zw(t)===e.selected?{...t,turns:(t.turns+1)%4}:t)})),[]),u=(0,rx.useCallback)(()=>i(e=>e.selected&&1!==e.panels.length?{...e,panels:e.panels.filter(t=>Zw(t)!==e.selected),selected:null,menu:null}:e),[]),d=(0,rx.useCallback)(e=>i(t=>({...t,selected:e})),[]),h=(0,rx.useCallback)(e=>i(r=>{let n=Zw(e);return r.panels.some(e=>Zw(e)===n)?r:{...r,panels:[...r.panels,{...e,turns:0,materialId:r.panels.find(e=>Zw(e)===r.selected)?.materialId??t}],selected:n,menu:null}}),[t]),p=(0,rx.useCallback)(e=>i(t=>({...t,panels:t.panels.map(r=>Zw(r)===t.selected?{...r,requestedMaterialId:e===r.materialId?void 0:e}:r)})),[]),f=(0,rx.useCallback)(e=>i(t=>{let r=t.panels.map(t=>{let r=t.requestedMaterialId;return r&&e.has(r)?{...t,materialId:r,requestedMaterialId:void 0}:t});return r.some((e,r)=>e!==t.panels[r])?{...t,panels:r}:t}),[]),A=(0,rx.useMemo)(()=>{let e=new Set(n.panels.map(Zw)),t=new Map;for(let r of n.panels)for(let[n,i]of[[1,0],[-1,0],[0,1],[0,-1]]){let a={x:r.x+n,y:r.y+i},s=Zw(a);e.has(s)||t.set(s,a)}return Array.from(t.values())},[n.panels]);return{...n,neighbors:A,requestMaterial:p,applyReadyMaterials:f,openMenu:s,closeMenu:a,clearSelection:o,reset:l,rotate:c,remove:u,select:d,add:h}}(r,s?.hid??"",t&&o),c=function(e,t){let{apiKey:r,baseURL:n,source:i,widgetSession:a}=W6(),{type:s}=W4(),o=e?.kit?.uuid,l=e?.owner?.uuid,c={apiKey:r,baseURL:n,source:i,widgetSession:a,resourceType:s},{data:u,hasNextPage:d,fetchNextPage:h,isFetching:p,isFetchNextPageError:f}=od({queryKey:[...Wp(o,l,c),"panel-materials"],enabled:t&&!!o,queryFn:async({pageParam:e,signal:t})=>{try{return await Wg(o,l??"",e,{...c,signal:t})}catch(r){if(0===e||t.aborted)throw r;return{objs:[],pages_count:void 0}}},initialPageParam:0,getNextPageParam:(e,t,r)=>{let n=e.pages_count??t[0]?.pages_count;return void 0!==n?r+1<n?r+1:void 0:e.objs?.length?r+1:void 0},retry:!1},ou,void 0);(0,rx.useEffect)(()=>{t&&d&&!p&&!f&&h({cancelRefetch:!1})},[u?.pages.length,t,h,d,p,f]);let A=(0,rx.useMemo)(()=>{if(!t||!o)return[];let r=new Map;for(let t of u?.pages.flatMap(e=>e.objs??[])??[])t.tinuuid&&t.tinuuid!==e?.tinuuid&&r.set(t.tinuuid,t);return Array.from(r.values())},[e?.tinuuid,u,t,o]),g=oc({queries:A.map(e=>({queryKey:Wh(e.tinuuid,c),queryFn:({signal:t})=>Wf(e.tinuuid,{...c,signal:t}),enabled:t,retry:!1}))}),[m,v]=(0,rx.useState)({ids:[]}),b=m.resourceId===e?.tinuuid&&m.kitUuid===o,y=b?m.ids:[],w=new Set(y),x=new Map(A.flatMap((e,t)=>{let r=g[t]?.data;return r?[[e.tinuuid,r.materials??[]]]:[]})),C=Array.from(x.keys()).filter(e=>!w.has(e)),E=C.length?[...y,...C]:y;(!b||C.length)&&v({resourceId:e?.tinuuid,kitUuid:o,ids:E});let S=t?[...e?.materials??[],...E.flatMap(e=>x.get(e)??[])]:[],M=new Set;return S.flatMap((e,t)=>!e.hid||!e.native?.glbUrl||M.has(e.hid)?[]:(M.add(e.hid),[{material:e,number:t+1}]))}(a,e&&i),u=c.map(e=>e.material),d=oc({queries:u.map(e=>({...Zy(e.native.glbUrl),enabled:i&&!!(e.hid===s?.hid||l.panels.some(t=>t.requestedMaterialId===e.hid))}))}),h=d[u.findIndex(e=>e.hid===s?.hid)]?.data,p=u.map((e,t)=>({material:e,number:c[t].number,model:d[t]?.data,loading:d[t]?.isFetching??!1,error:d[t]?.isError??!1})),f=p.filter(e=>e.model).map(e=>e.material.hid).join(","),{applyReadyMaterials:A}=l;return(0,rx.useEffect)(()=>{i&&A(new Set(f.split(",")))},[A,f,i,l.panels]),{...l,isBaseModelReady:!!h,options:p,chooseMaterial:e=>{let t=p.findIndex(t=>t.material.hid===e);!(t<0)&&(l.requestMaterial(e),d[t]?.isError&&d[t].refetch())}}}(i,"focus-resource"===Wb[t].introduction),{closeMenu:o}=s;(0,rx.useEffect)(()=>{o()},[a.id,o]);let{clearSelection:l,reset:c}=s;(0,rx.useEffect)(()=>{r||c()},[c,r]),(0,rx.useEffect)(()=>{if(!i||!r)return;let e=e=>{e.composedPath().some(e=>e instanceof Element&&("CANVAS"===e.tagName&&n?.contains(e)||e.matches("[data-neurodyn-room-viewer-product], [data-material-selection-panel], [data-material-selection-action]")||e.matches("[data-room-selection-panel], [data-panel-menu]")))||l()};return document.addEventListener("pointerdown",e),()=>document.removeEventListener("pointerdown",e)},[l,n,i,r]);let u=(0,rx.useMemo)(()=>i?s:null,[s,i]);return(0,rE.jsxs)(ZC,{value:u,children:[e,i&&(0,rE.jsx)(Zv,{})]})}function ZS(){return(0,rx.use)(ZC)}function ZM(e){return e.image.width/e.image.height}function ZI(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}async function ZB(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 Zk(e,t){return new Promise((r,n)=>{e.toBlob(e=>{e?r(e):n(Error(t))},"image/png")})}function ZT({ref:e}){let{camera:t,gl:r,invalidate:n,scene:i}=IY();return(0,rx.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 Zk(r.domElement,"Failed to create scene share image")}finally{a(),n()}}}),[t,r,n,i]),null}class ZR extends rx.Component{state={hasFailed:!1};static getDerivedStateFromError(){return{hasFailed:!0}}componentDidCatch(e,t){console.error("Room viewer scene failed to render",e,t.componentStack),this.props.onError(e)}render(){return this.state.hasFailed?null:this.props.children}}let ZD=new Float32Array(19),ZP=0;for(let e=-9;e<=9;e++){let t=Math.exp(-e*e/18);ZD[e+9]=t,ZP+=t}for(let e=0;e<ZD.length;e++)ZD[e]/=ZP;function Z_(e,t){return Math.max(0,Math.min(t,e))}let ZL=new g0(0,0,1),ZN=new g0(0,0,1),ZF={floor:"normal-aligned",wall:"upright",ceiling:"normal-aligned"};function ZO(e){return new g$().setFromUnitVectors(ZL,e.clone().normalize())}function ZQ(e,t,r){let n,i,a,s,o,l,{kind:c,planeId:u}=e.userData,d=(i=new g0((n=e.geometry.attributes.position).getX(0),n.getY(0),n.getZ(0)),a=new g0(n.getX(1),n.getY(1),n.getZ(1)),s=new g0(n.getX(2),n.getY(2),n.getZ(2)),o=new g0().crossVectors(a.sub(i),s.sub(i)).normalize(),l=r.position.clone().sub(t).normalize(),0>o.dot(l)&&o.multiplyScalar(-1),o),h=t.clone().addScaledVector(d,.05),p=function(e,t){if("normal-aligned"===ZF[t])return ZO(e);let r=e.clone().normalize(),n=ZN.clone().addScaledVector(r,-ZN.dot(r));if(1e-6>n.lengthSq())return ZO(r);n.normalize();let i=new g0().crossVectors(n,r).normalize(),a=new mf().makeBasis(i,n,r);return new g$().setFromRotationMatrix(a)}(d,c);return{position:h.toArray(),quaternion:p.toArray(),activePlaneId:u}}function ZU(e){return{placementKey:e,planeIdMap:null,planeIdMapFailed:!1,resourcePose:null}}function Zz(e,t){if("reset-placement"===t.type)return ZU(t.placementKey);if(t.placementKey!==e.placementKey)return e;switch(t.type){case"reset-plane-id-map":return{...e,planeIdMap:null,planeIdMapFailed:!1};case"fail-plane-id-map":return{...e,planeIdMap:null,planeIdMapFailed:!0};case"set-plane-id-map":return{...e,planeIdMap:t.planeIdMap,planeIdMapFailed:!1};case"set-resource-pose":return{...e,resourcePose:t.resourcePose}}}function Zj(e){let t=e.image;if("data"in t)return t;let r=document.createElement("canvas");r.width=t.width,r.height=t.height;let n=r.getContext("2d");return n.drawImage(t,0,0),n.getImageData(0,0,r.width,r.height)}let ZG="NEURODYN_ROOM_SCENE_PATCH";function ZH(e,t,{shading:r=!0}={}){let n=e.onBeforeCompile,i=e.customProgramCacheKey.bind(e),a=e.side,s=e.transparent,o=e.alphaToCoverage;return e.side=2,e.transparent=!0,e.alphaToCoverage=!0,e.onBeforeCompile=(i,a)=>{n?.call(e,i,a),function(e,t,r){e.uniforms.uMask=t.activeMaskTextureUniform,e.uniforms.uRoomLighting={value:t.lightingTexture},e.uniforms.uViewport={value:t.viewport};let n=e.fragmentShader.includes("vec3 totalEmissiveRadiance")?"totalEmissiveRadiance":"vec3(0.0)",i=`
|
|
7592
7592
|
{
|
|
7593
7593
|
vec2 _neurodynRoomUv = gl_FragCoord.xy / uViewport;
|
|
7594
7594
|
float _neurodynRoomMask = texture2D(uMask, vec2(_neurodynRoomUv.x, 1.0 - _neurodynRoomUv.y)).r;
|
|
@@ -7604,15 +7604,15 @@ ${ey}
|
|
|
7604
7604
|
}
|
|
7605
7605
|
`,a=e.fragmentShader.replace("#include <common>",`
|
|
7606
7606
|
#include <common>
|
|
7607
|
-
#ifndef ${
|
|
7608
|
-
#define ${
|
|
7607
|
+
#ifndef ${ZG}
|
|
7608
|
+
#define ${ZG}
|
|
7609
7609
|
uniform sampler2D uMask;
|
|
7610
7610
|
uniform sampler2D uRoomLighting;
|
|
7611
7611
|
uniform vec2 uViewport;
|
|
7612
7612
|
#endif
|
|
7613
7613
|
`);if(a.includes("#include <output_fragment>")){e.fragmentShader=a.replace("#include <output_fragment>",`${i}
|
|
7614
7614
|
#include <output_fragment>`);return}e.fragmentShader=a.replace("#include <opaque_fragment>",`${i}
|
|
7615
|
-
#include <opaque_fragment>`)}(i,t,r)},e.customProgramCacheKey=()=>`${i()}|neurodyn-room-scene-v5|shading:${r}|maxRoomGain:${t.maxRoomGain}`,e.needsUpdate=!0,()=>{e.onBeforeCompile=n,e.customProgramCacheKey=i,e.side=a,e.transparent=s,e.alphaToCoverage=o,e.needsUpdate=!0}}function ZH(e){let t=new Set;return e.traverse(e=>{if(!e.isMesh||!e.material)return;if(Array.isArray(e.material)){e.material=e.material.map(e=>{let r=e.clone();return t.add(r),r});return}let r=e.material.clone();t.add(r),e.material=r}),Array.from(t)}function ZV(e,t,r){let n=e.clone().sub(t).applyQuaternion(r);return Math.atan2(n.y,n.x)}let ZW={excludeFromCapture:!0};function Zq({resourceBounds:e}){let{resourceRef:t,rotation:r,setIsDragging:n,setRotation:i}=W6(),a=BT("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABAAAAAQACAYAAAB/HSuDAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDkuMS1jMDAyIDc5LmI3YzY0Y2NmOSwgMjAyNC8wNy8xNi0xMjozOTowNCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDI2LjAgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QjYxMUY4MDQ3RTJDMTFGMTlCMkNBN0Y1RDJDNzNDQzYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QjYxMUY4MDU3RTJDMTFGMTlCMkNBN0Y1RDJDNzNDQzYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpCNjExRjgwMjdFMkMxMUYxOUIyQ0E3RjVEMkM3M0NDNiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpCNjExRjgwMzdFMkMxMUYxOUIyQ0E3RjVEMkM3M0NDNiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PiAtRloAAIYkSURBVHja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"),s=(0,rx.useRef)(null),o=(0,rx.useMemo)(()=>{let t,r;return r=1.15*Math.max((t=e.getSize(new g0)).x,t.y),{positionZ:e.min.z-.001*r,side:r}},[e]);(0,rx.useLayoutEffect)(()=>{a.colorSpace="srgb",a.needsUpdate=!0},[a]);let l=e=>{if(!s.current)return;e.stopPropagation();let{pointerId:t,pointerTarget:r}=s.current;r.hasPointerCapture(t)&&r.releasePointerCapture(t),s.current=null,n(!1)};return o.side<=0?null:(0,rE.jsxs)("mesh",{"position-z":o.positionZ,userData:ZW,onPointerCancel:l,onPointerDown:e=>{var i;let a=t.current;if(!a||(i=e.object,e.intersections.map(e=>e.object)[0]!==i))return;e.stopPropagation(),e.nativeEvent.stopPropagation();let o=e.target;o.setPointerCapture(e.pointerId),a.updateWorldMatrix(!0,!1);let l=a.getWorldQuaternion(new g$),c=a.getWorldPosition(new g0),u=new g0(0,0,1).applyQuaternion(l);s.current={center:c,initialPoint:e.point.clone(),initialRotation:r,plane:new b2().setFromNormalAndCoplanarPoint(u,c),pointerId:e.pointerId,pointerTarget:o,surfaceQuaternion:l},n(!0)},onPointerMove:e=>{let t=s.current;if(!t)return;e.stopPropagation();let r=e.ray.intersectPlane(t.plane,new g0);r&&i(function({center:e,currentPoint:t,initialPoint:r,initialRotation:n,surfaceQuaternion:i}){let a=i.clone().invert(),s=ZV(r,e,a),o=ZV(t,e,a);return((n+gX.radToDeg(o-s)+180)%360+360)%360-180}({...t,currentPoint:r}))},onPointerUp:l,children:[(0,rE.jsx)("planeGeometry",{args:[o.side,o.side]}),(0,rE.jsx)("meshBasicMaterial",{map:a,transparent:!0,depthWrite:!1,side:2,toneMapped:!1})]})}let ZK=Math.PI/2;function ZJ(e){let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId)}function ZY({glbUrl:e,position:t,quaternion:r,materialPatch:n}){let{type:i}=W9(),{resourceRef:a,rotation:s,setIsDragging:o}=W6(),l=kx(e),{sceneInstance:c,materials:u,resourceBounds:d}=(0,rx.useMemo)(()=>{let e=l.scene.clone(!0),t=ZH(e),r=new vi().setFromObject(e).applyMatrix4(new mf().makeRotationX(ZK));return{sceneInstance:e,materials:t,resourceBounds:r}},[l]),h=(0,rx.useMemo)(()=>gX.degToRad(s),[s]);return(0,rx.useLayoutEffect)(()=>{let e=u.map(e=>ZG(e,n));return()=>{e.forEach(e=>e())}},[u,n]),(0,rE.jsx)("group",{ref:a,position:t,quaternion:r,onPointerDown:e=>{"rotate-on-floor"!==Wv[i].manipulation&&(e.nativeEvent.stopPropagation(),e.target.setPointerCapture(e.pointerId),o(!0))},onPointerUp:e=>{ZJ(e),o(!1)},onPointerCancel:e=>{ZJ(e),o(!1)},children:(0,rE.jsxs)("group",{"rotation-z":h,children:["drag-with-rotation-handle"===Wv[i].manipulation?(0,rE.jsx)(Zq,{resourceBounds:d}):null,(0,rE.jsx)("group",{"rotation-x":ZK,children:(0,rE.jsx)("primitive",{object:c})})]})})}function ZX(e,t){(0,rx.useLayoutEffect)(()=>{let r=e.current;if(r)return ZG(r,t)},[e,t])}let ZZ=[1,1,1];function Z$({node:e,position:t,scale:r=ZZ,uvScale:n,materialPatch:i}){let a=(0,rx.useRef)(null);return(0,rx.useEffect)(()=>{if(!a.current||void 0===n)return;let t=a.current.geometry.attributes.uv,r=e.geometry.attributes.uv.array;for(let e=0;e<t.count;e++){let i=r[2*e],a=r[2*e+1];t.setXY(e,i*n,a)}t.needsUpdate=!0},[n,e.geometry]),(0,rx.useLayoutEffect)(()=>{let e=a.current?.material;if(!e)return;let t=(Array.isArray(e)?e:[e]).map(e=>ZG(e,i));return()=>{t.forEach(e=>e())}},[i,e]),(0,rE.jsx)(TS,{ref:a,object:e,position:t,scale:r})}function Z0({width:e,height:t,materialPatch:r}){let{material:n}=W8(),{nodes:i}=kx(n?.native?.glbUrl),a=(0,rx.useMemo)(()=>{let e=new g0,t={};["vizbl0","vizbl1","vizbl2","vizbl3","vizbl4","vizbl5","vizbl6","vizbl7"].forEach(r=>{let n=i[r];if(!n?.geometry)return;let a=n.clone();a.geometry=n.geometry.clone(),Array.isArray(n.material)?a.material=n.material.map(e=>e.clone()):n.material&&(a.material=n.material.clone()),a.updateMatrixWorld(!0),a.geometry.applyMatrix4(a.matrixWorld),a.position.set(0,0,0),a.rotation.set(0,0,0),a.scale.set(1,1,1),a.updateMatrixWorld(!0),a.geometry.computeBoundingBox(),a.geometry.boundingBox&&(a.geometry.boundingBox.getCenter(e),a.geometry.translate(-e.x,-e.y,-e.z)),a.geometry.computeBoundingBox(),t[r]=a});let r=t.vizbl0;if(!r?.geometry)throw Error("Corner mesh not found");let n=r.geometry.boundingBox,a=n.max.x-n.min.x,s=n.max.y-n.min.y,o={top:0,bottom:0,left:0,right:0},l={top:0,bottom:0,left:0,right:0},c=t.vizbl1;if(c?.geometry){let e=c.geometry.boundingBox;o.top=e.max.x-e.min.x,l.top=e.max.y-e.min.y}let u=t.vizbl3;if(u?.geometry){let e=u.geometry.boundingBox;o.right=e.max.y-e.min.y,l.right=e.max.x-e.min.x}let d=t.vizbl5;if(d?.geometry){let e=d.geometry.boundingBox;o.bottom=e.max.x-e.min.x,l.bottom=e.max.y-e.min.y}let h=t.vizbl7;if(h?.geometry){let e=h.geometry.boundingBox;o.left=e.max.y-e.min.y,l.left=e.max.x-e.min.x}return{cornerSize:{width:a,height:s},barLengths:o,barThickness:l,normalizedNodes:t}},[i]),s=e-2*a.cornerSize.width+.002,o=t-2*a.cornerSize.height+.002,l=s/a.barLengths.top,c=s/a.barLengths.bottom,u=o/a.barLengths.left,d=o/a.barLengths.right;return(0,rE.jsxs)("group",{children:[(0,rE.jsx)(Z$,{node:a.normalizedNodes.vizbl0,position:[-e/2+a.cornerSize.width/2-.001,t/2-a.cornerSize.height/2+.001,0],materialPatch:r}),(0,rE.jsx)(Z$,{node:a.normalizedNodes.vizbl1,position:[0,t/2-a.barThickness.top/2+.001,0],scale:[l,1,1],uvScale:l,materialPatch:r}),(0,rE.jsx)(Z$,{node:a.normalizedNodes.vizbl2,position:[e/2-a.cornerSize.width/2+.001,t/2-a.cornerSize.height/2+.001,0],materialPatch:r}),(0,rE.jsx)(Z$,{node:a.normalizedNodes.vizbl3,position:[e/2-a.barThickness.right/2+.001,0,0],scale:[1,d,1],uvScale:d,materialPatch:r}),(0,rE.jsx)(Z$,{node:a.normalizedNodes.vizbl4,position:[e/2-a.cornerSize.width/2+.001,-t/2+a.cornerSize.height/2-.001,0],materialPatch:r}),(0,rE.jsx)(Z$,{node:a.normalizedNodes.vizbl5,position:[0,-t/2+a.barThickness.bottom/2-.001,0],scale:[c,1,1],uvScale:c,materialPatch:r}),(0,rE.jsx)(Z$,{node:a.normalizedNodes.vizbl6,position:[-e/2+a.cornerSize.width/2-.001,-t/2+a.cornerSize.height/2-.001,0],materialPatch:r}),(0,rE.jsx)(Z$,{node:a.normalizedNodes.vizbl7,position:[-e/2+a.barThickness.left/2-.001,0,0],scale:[1,u,1],uvScale:u,materialPatch:r})]})}function Z1({width:e,height:t,position:r,quaternion:n,materialPatch:i}){let a=(0,rx.useRef)(null);return ZX(a,i),(0,rE.jsxs)("mesh",{position:r,quaternion:n,children:[(0,rE.jsx)("planeGeometry",{args:[e,t]}),(0,rE.jsx)("meshStandardMaterial",{ref:a,color:"white"})]})}function Z2({src:e,position:t,quaternion:r,materialPatch:n}){let{width:i,height:a}=W9(),{material:s}=W8(),{frameWidth:o,matting:l}=W7(),{angle:c,rotation:u,resourceRef:d,setIsDragging:h}=W6(),p=I0(xH,e),f=(0,rx.useRef)(null),A=(0,rx.useMemo)(()=>gX.degToRad(c),[c]),g=(0,rx.useMemo)(()=>gX.degToRad(u),[u]);ZX(f,n);let m=i+2*l,v=a+2*l,b=l>0?m:i,y=l>0?v:a;return(0,rE.jsx)("group",{ref:d,position:t,quaternion:r,onPointerDown:()=>h(!0),onPointerUp:()=>h(!1),onPointerLeave:()=>h(!1),children:(0,rE.jsxs)("group",{rotation:[0,g,A],children:[s?.native?.glbUrl&&o>0&&(0,rE.jsx)(Z0,{width:b,height:y,materialPatch:n}),l>0&&(0,rE.jsx)(Z1,{width:m,height:v,position:[0,0,.01],materialPatch:n}),(0,rE.jsxs)("mesh",{position:[0,0,.02],children:[(0,rE.jsx)("planeGeometry",{args:[i,a]}),(0,rE.jsx)("meshStandardMaterial",{ref:f,map:p})]})]})})}function Z3({model:e,patch:t}){let r=(0,rx.useMemo)(()=>{let t=new mc(1,1,{samples:4,depthBuffer:!1}),r=new bA({color:"white",side:2,toneMapped:!1,depthTest:!1,depthWrite:!1}),n=e.clone(!0);n.matrixAutoUpdate=!1;let i=new m$;i.add(n),i.overrideMaterial=r;let a=new gZ,s={value:2},o=new bA({map:t.texture,transparent:!0,depthTest:!1,depthWrite:!1,toneMapped:!1,fog:!1});return o.onBeforeCompile=e=>{e.uniforms.uMaskResolution={value:a},e.uniforms.uOutlineRadius=s,e.vertexShader="void main() { gl_Position = vec4(position.xy, 0.0, 1.0); }",e.fragmentShader=e.fragmentShader.replace("#include <common>",`#include <common>
|
|
7615
|
+
#include <opaque_fragment>`)}(i,t,r)},e.customProgramCacheKey=()=>`${i()}|neurodyn-room-scene-v5|shading:${r}|maxRoomGain:${t.maxRoomGain}`,e.needsUpdate=!0,()=>{e.onBeforeCompile=n,e.customProgramCacheKey=i,e.side=a,e.transparent=s,e.alphaToCoverage=o,e.needsUpdate=!0}}function ZV(e){let t=new Set;return e.traverse(e=>{if(!e.isMesh||!e.material)return;if(Array.isArray(e.material)){e.material=e.material.map(e=>{let r=e.clone();return t.add(r),r});return}let r=e.material.clone();t.add(r),e.material=r}),Array.from(t)}function ZW(e,t,r){let n=e.clone().sub(t).applyQuaternion(r);return Math.atan2(n.y,n.x)}let Zq={excludeFromCapture:!0};function ZK({resourceBounds:e}){let{resourceRef:t,rotation:r,setIsDragging:n,setRotation:i}=W7(),a=BT("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABAAAAAQACAYAAAB/HSuDAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDkuMS1jMDAyIDc5LmI3YzY0Y2NmOSwgMjAyNC8wNy8xNi0xMjozOTowNCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDI2LjAgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QjYxMUY4MDQ3RTJDMTFGMTlCMkNBN0Y1RDJDNzNDQzYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QjYxMUY4MDU3RTJDMTFGMTlCMkNBN0Y1RDJDNzNDQzYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpCNjExRjgwMjdFMkMxMUYxOUIyQ0E3RjVEMkM3M0NDNiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpCNjExRjgwMzdFMkMxMUYxOUIyQ0E3RjVEMkM3M0NDNiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PiAtRloAAIYkSURBVHja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"),s=(0,rx.useRef)(null),o=(0,rx.useMemo)(()=>{let t,r;return r=1.15*Math.max((t=e.getSize(new g0)).x,t.y),{positionZ:e.min.z-.001*r,side:r}},[e]);(0,rx.useLayoutEffect)(()=>{a.colorSpace="srgb",a.needsUpdate=!0},[a]);let l=e=>{if(!s.current)return;e.stopPropagation();let{pointerId:t,pointerTarget:r}=s.current;r.hasPointerCapture(t)&&r.releasePointerCapture(t),s.current=null,n(!1)};return o.side<=0?null:(0,rE.jsxs)("mesh",{"position-z":o.positionZ,userData:Zq,onPointerCancel:l,onPointerDown:e=>{var i;let a=t.current;if(!a||(i=e.object,e.intersections.map(e=>e.object)[0]!==i))return;e.stopPropagation(),e.nativeEvent.stopPropagation();let o=e.target;o.setPointerCapture(e.pointerId),a.updateWorldMatrix(!0,!1);let l=a.getWorldQuaternion(new g$),c=a.getWorldPosition(new g0),u=new g0(0,0,1).applyQuaternion(l);s.current={center:c,initialPoint:e.point.clone(),initialRotation:r,plane:new b2().setFromNormalAndCoplanarPoint(u,c),pointerId:e.pointerId,pointerTarget:o,surfaceQuaternion:l},n(!0)},onPointerMove:e=>{let t=s.current;if(!t)return;e.stopPropagation();let r=e.ray.intersectPlane(t.plane,new g0);r&&i(function({center:e,currentPoint:t,initialPoint:r,initialRotation:n,surfaceQuaternion:i}){let a=i.clone().invert(),s=ZW(r,e,a),o=ZW(t,e,a);return((n+gX.radToDeg(o-s)+180)%360+360)%360-180}({...t,currentPoint:r}))},onPointerUp:l,children:[(0,rE.jsx)("planeGeometry",{args:[o.side,o.side]}),(0,rE.jsx)("meshBasicMaterial",{map:a,transparent:!0,depthWrite:!1,side:2,toneMapped:!1})]})}let ZJ=Math.PI/2;function ZY(e){let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId)}function ZX({glbUrl:e,position:t,quaternion:r,materialPatch:n}){let{type:i}=W4(),{resourceRef:a,rotation:s,setIsDragging:o}=W7(),l=kx(e),{sceneInstance:c,materials:u,resourceBounds:d}=(0,rx.useMemo)(()=>{let e=l.scene.clone(!0),t=ZV(e),r=new vi().setFromObject(e).applyMatrix4(new mf().makeRotationX(ZJ));return{sceneInstance:e,materials:t,resourceBounds:r}},[l]),h=(0,rx.useMemo)(()=>gX.degToRad(s),[s]);return(0,rx.useLayoutEffect)(()=>{let e=u.map(e=>ZH(e,n));return()=>{e.forEach(e=>e())}},[u,n]),(0,rE.jsx)("group",{ref:a,position:t,quaternion:r,onPointerDown:e=>{"rotate-on-floor"!==Wb[i].manipulation&&(e.nativeEvent.stopPropagation(),e.target.setPointerCapture(e.pointerId),o(!0))},onPointerUp:e=>{ZY(e),o(!1)},onPointerCancel:e=>{ZY(e),o(!1)},children:(0,rE.jsxs)("group",{"rotation-z":h,children:["drag-with-rotation-handle"===Wb[i].manipulation?(0,rE.jsx)(ZK,{resourceBounds:d}):null,(0,rE.jsx)("group",{"rotation-x":ZJ,children:(0,rE.jsx)("primitive",{object:c})})]})})}function ZZ(e,t){(0,rx.useLayoutEffect)(()=>{let r=e.current;if(r)return ZH(r,t)},[e,t])}let Z$=[1,1,1];function Z0({node:e,position:t,scale:r=Z$,uvScale:n,materialPatch:i}){let a=(0,rx.useRef)(null);return(0,rx.useEffect)(()=>{if(!a.current||void 0===n)return;let t=a.current.geometry.attributes.uv,r=e.geometry.attributes.uv.array;for(let e=0;e<t.count;e++){let i=r[2*e],a=r[2*e+1];t.setXY(e,i*n,a)}t.needsUpdate=!0},[n,e.geometry]),(0,rx.useLayoutEffect)(()=>{let e=a.current?.material;if(!e)return;let t=(Array.isArray(e)?e:[e]).map(e=>ZH(e,i));return()=>{t.forEach(e=>e())}},[i,e]),(0,rE.jsx)(TS,{ref:a,object:e,position:t,scale:r})}function Z1({width:e,height:t,materialPatch:r}){let{material:n}=W6(),{nodes:i}=kx(n?.native?.glbUrl),a=(0,rx.useMemo)(()=>{let e=new g0,t={};["vizbl0","vizbl1","vizbl2","vizbl3","vizbl4","vizbl5","vizbl6","vizbl7"].forEach(r=>{let n=i[r];if(!n?.geometry)return;let a=n.clone();a.geometry=n.geometry.clone(),Array.isArray(n.material)?a.material=n.material.map(e=>e.clone()):n.material&&(a.material=n.material.clone()),a.updateMatrixWorld(!0),a.geometry.applyMatrix4(a.matrixWorld),a.position.set(0,0,0),a.rotation.set(0,0,0),a.scale.set(1,1,1),a.updateMatrixWorld(!0),a.geometry.computeBoundingBox(),a.geometry.boundingBox&&(a.geometry.boundingBox.getCenter(e),a.geometry.translate(-e.x,-e.y,-e.z)),a.geometry.computeBoundingBox(),t[r]=a});let r=t.vizbl0;if(!r?.geometry)throw Error("Corner mesh not found");let n=r.geometry.boundingBox,a=n.max.x-n.min.x,s=n.max.y-n.min.y,o={top:0,bottom:0,left:0,right:0},l={top:0,bottom:0,left:0,right:0},c=t.vizbl1;if(c?.geometry){let e=c.geometry.boundingBox;o.top=e.max.x-e.min.x,l.top=e.max.y-e.min.y}let u=t.vizbl3;if(u?.geometry){let e=u.geometry.boundingBox;o.right=e.max.y-e.min.y,l.right=e.max.x-e.min.x}let d=t.vizbl5;if(d?.geometry){let e=d.geometry.boundingBox;o.bottom=e.max.x-e.min.x,l.bottom=e.max.y-e.min.y}let h=t.vizbl7;if(h?.geometry){let e=h.geometry.boundingBox;o.left=e.max.y-e.min.y,l.left=e.max.x-e.min.x}return{cornerSize:{width:a,height:s},barLengths:o,barThickness:l,normalizedNodes:t}},[i]),s=e-2*a.cornerSize.width+.002,o=t-2*a.cornerSize.height+.002,l=s/a.barLengths.top,c=s/a.barLengths.bottom,u=o/a.barLengths.left,d=o/a.barLengths.right;return(0,rE.jsxs)("group",{children:[(0,rE.jsx)(Z0,{node:a.normalizedNodes.vizbl0,position:[-e/2+a.cornerSize.width/2-.001,t/2-a.cornerSize.height/2+.001,0],materialPatch:r}),(0,rE.jsx)(Z0,{node:a.normalizedNodes.vizbl1,position:[0,t/2-a.barThickness.top/2+.001,0],scale:[l,1,1],uvScale:l,materialPatch:r}),(0,rE.jsx)(Z0,{node:a.normalizedNodes.vizbl2,position:[e/2-a.cornerSize.width/2+.001,t/2-a.cornerSize.height/2+.001,0],materialPatch:r}),(0,rE.jsx)(Z0,{node:a.normalizedNodes.vizbl3,position:[e/2-a.barThickness.right/2+.001,0,0],scale:[1,d,1],uvScale:d,materialPatch:r}),(0,rE.jsx)(Z0,{node:a.normalizedNodes.vizbl4,position:[e/2-a.cornerSize.width/2+.001,-t/2+a.cornerSize.height/2-.001,0],materialPatch:r}),(0,rE.jsx)(Z0,{node:a.normalizedNodes.vizbl5,position:[0,-t/2+a.barThickness.bottom/2-.001,0],scale:[c,1,1],uvScale:c,materialPatch:r}),(0,rE.jsx)(Z0,{node:a.normalizedNodes.vizbl6,position:[-e/2+a.cornerSize.width/2-.001,-t/2+a.cornerSize.height/2-.001,0],materialPatch:r}),(0,rE.jsx)(Z0,{node:a.normalizedNodes.vizbl7,position:[-e/2+a.barThickness.left/2-.001,0,0],scale:[1,u,1],uvScale:u,materialPatch:r})]})}function Z2({width:e,height:t,position:r,quaternion:n,materialPatch:i}){let a=(0,rx.useRef)(null);return ZZ(a,i),(0,rE.jsxs)("mesh",{position:r,quaternion:n,children:[(0,rE.jsx)("planeGeometry",{args:[e,t]}),(0,rE.jsx)("meshStandardMaterial",{ref:a,color:"white"})]})}function Z3({src:e,position:t,quaternion:r,materialPatch:n}){let{width:i,height:a}=W4(),{material:s}=W6(),{frameWidth:o,matting:l}=qe(),{angle:c,rotation:u,resourceRef:d,setIsDragging:h}=W7(),p=I0(xH,e),f=(0,rx.useRef)(null),A=(0,rx.useMemo)(()=>gX.degToRad(c),[c]),g=(0,rx.useMemo)(()=>gX.degToRad(u),[u]);ZZ(f,n);let m=i+2*l,v=a+2*l,b=l>0?m:i,y=l>0?v:a;return(0,rE.jsx)("group",{ref:d,position:t,quaternion:r,onPointerDown:()=>h(!0),onPointerUp:()=>h(!1),onPointerLeave:()=>h(!1),children:(0,rE.jsxs)("group",{rotation:[0,g,A],children:[s?.native?.glbUrl&&o>0&&(0,rE.jsx)(Z1,{width:b,height:y,materialPatch:n}),l>0&&(0,rE.jsx)(Z2,{width:m,height:v,position:[0,0,.01],materialPatch:n}),(0,rE.jsxs)("mesh",{position:[0,0,.02],children:[(0,rE.jsx)("planeGeometry",{args:[i,a]}),(0,rE.jsx)("meshStandardMaterial",{ref:f,map:p})]})]})})}function Z9({model:e,patch:t}){let r=(0,rx.useMemo)(()=>{let t=new mc(1,1,{samples:4,depthBuffer:!1}),r=new bA({color:"white",side:2,toneMapped:!1,depthTest:!1,depthWrite:!1}),n=e.clone(!0);n.matrixAutoUpdate=!1;let i=new m$;i.add(n),i.overrideMaterial=r;let a=new gZ,s={value:2},o=new bA({map:t.texture,transparent:!0,depthTest:!1,depthWrite:!1,toneMapped:!1,fog:!1});return o.onBeforeCompile=e=>{e.uniforms.uMaskResolution={value:a},e.uniforms.uOutlineRadius=s,e.vertexShader="void main() { gl_Position = vec4(position.xy, 0.0, 1.0); }",e.fragmentShader=e.fragmentShader.replace("#include <common>",`#include <common>
|
|
7616
7616
|
uniform vec2 uMaskResolution;
|
|
7617
7617
|
uniform float uOutlineRadius;
|
|
7618
7618
|
`).replace("#include <map_fragment>",`
|
|
@@ -7627,10 +7627,10 @@ ${ey}
|
|
|
7627
7627
|
}
|
|
7628
7628
|
if (coverage < 0.01) discard;
|
|
7629
7629
|
diffuseColor = vec4(1.0, 1.0, 1.0, coverage);
|
|
7630
|
-
`)},o.customProgramCacheKey=()=>"wall-panel-exterior-outline-v1",{mask:t,maskMaterial:r,maskModel:n,maskScene:i,material:o,resolution:a,radius:s,clearColor:new mJ}},[e]);return(0,rx.useLayoutEffect)(()=>ZG(r.material,t,{shading:!1}),[r,t]),(0,rx.useLayoutEffect)(()=>()=>{r.mask.dispose(),r.maskMaterial.dispose(),r.material.dispose()},[r]),(0,rE.jsx)("mesh",{material:r.material,frustumCulled:!1,renderOrder:3,raycast:()=>{},onBeforeRender:(t,n,i)=>{let a=t.getRenderTarget(),s=t.getActiveCubeFace(),o=t.getActiveMipmapLevel(),l=t.autoClear,c=t.getClearAlpha();t.getClearColor(r.clearColor),t.getDrawingBufferSize(r.resolution);let{x:u,y:d}=r.resolution;(r.mask.width!==u||r.mask.height!==d)&&r.mask.setSize(u,d),r.radius.value=2*t.getPixelRatio(),e.updateWorldMatrix(!0,!0),r.maskModel.matrix.copy(e.matrixWorld);try{t.autoClear=!0,t.setClearColor(0,0),t.setRenderTarget(r.mask),t.render(r.maskScene,i)}finally{t.setRenderTarget(a,s,o),t.setClearColor(r.clearColor,c),t.autoClear=l}},children:(0,rE.jsx)("planeGeometry",{args:[2,2]})})}function Z9({source:e,patch:t,isPointVisible:r,outlined:n}){let{model:i,materials:a}=(0,rx.useMemo)(()=>{let t=e.clone(!0),r=ZH(t);return{model:t,materials:r}},[e]);return(0,rx.useLayoutEffect)(()=>{let e=a.map(e=>ZG(e,t));return i.traverse(e=>{e instanceof bI&&(e.raycast=function(e,t){let n=[];bI.prototype.raycast.call(this,e,n),t.push(...n.filter(e=>!r||r(e.point)))})}),()=>e.forEach(e=>e())},[r,a,i,t]),(0,rx.useLayoutEffect)(()=>()=>a.forEach(e=>e.dispose()),[a]),(0,rE.jsxs)(rE.Fragment,{children:[(0,rE.jsx)("primitive",{object:i,dispose:null}),n&&(0,rE.jsx)(Z3,{model:i,patch:t})]})}function Z4({size:e,patch:t,isPointVisible:r,onClick:n}){let[i,a]=(0,rx.useState)(!1),s=(0,rx.useMemo)(()=>{let e=document.createElement("canvas");e.width=e.height=256;let t=e.getContext("2d");if(t.lineJoin="miter",t.lineCap="round",t.beginPath(),i)t.rect(16,16,224,224);else for(let[e,r,n,i]of[[16,16,1,1],[240,16,-1,1],[16,240,1,-1],[240,240,-1,-1]])t.moveTo(e+22*n,r),t.lineTo(e,r),t.lineTo(e,r+22*i);t.strokeStyle="rgba(255,255,255,.80)",t.lineWidth=5,t.stroke(),t.strokeStyle=i?"#59636d":"rgba(70,80,90,.60)",t.lineWidth=2,t.stroke(),t.beginPath(),t.arc(128,128,29,0,2*Math.PI),t.fillStyle=i?"#ffffff":"#f5f6f7",t.fill(),t.strokeStyle="rgba(35,45,55,.32)",t.lineWidth=2,t.stroke(),t.beginPath(),t.moveTo(117,128),t.lineTo(139,128),t.moveTo(128,117),t.lineTo(128,139),t.strokeStyle="#35414d",t.lineWidth=3,t.stroke();let r=new yH(e);return r.colorSpace="srgb",r},[i]),o=(0,rx.useMemo)(()=>new bA({map:s,transparent:!0,depthWrite:!1,toneMapped:!1}),[s]);return(0,rx.useLayoutEffect)(()=>{let e=ZG(o,t,{shading:!1});return o.alphaToCoverage=!1,e},[o,t]),(0,rx.useLayoutEffect)(()=>()=>{o.dispose(),s.dispose()},[o,s]),(0,rE.jsx)("mesh",{material:o,renderOrder:2,onPointerOver:()=>a(!0),onPointerOut:()=>a(!1),raycast:function(e,t){let n=[];bI.prototype.raycast.call(this,e,n),t.push(...n.filter(e=>!r||r(e.point)))},onPointerDown:e=>{e.stopPropagation(),e.nativeEvent.stopPropagation()},onClick:e=>{e.stopPropagation(),n()},children:(0,rE.jsx)("planeGeometry",{args:[e,e]})})}function Z5({isPointVisible:e,visible:t,dragging:r,panelKey:n,number:i,size:a,depth:s,patch:o}){let l=ZE(),{t:c}=sf(),{camera:u,gl:d}=IY(),h=(0,rx.useRef)(null),p=(0,rx.useRef)(null),f=(0,rx.useMemo)(()=>new g0,[]),A=(0,rx.useMemo)(()=>{let e=document.createElement("canvas");e.width=e.height=128;let t=e.getContext("2d");for(let e of(t.beginPath(),t.arc(64,64,61,0,2*Math.PI),t.fillStyle="#f5f6f7",t.fill(),t.strokeStyle="rgba(35,45,55,.32)",t.lineWidth=2,t.stroke(),t.fillStyle="#35414d",[40,64,88]))t.beginPath(),t.arc(e,64,5,0,2*Math.PI),t.fill();let r=new yH(e);return r.colorSpace="srgb",r},[]),g=(0,rx.useMemo)(()=>new bA({map:A,transparent:!0,depthWrite:!1,toneMapped:!1}),[A]);(0,rx.useLayoutEffect)(()=>{let e=ZG(g,o,{shading:!1});return g.alphaToCoverage=!1,e},[g,o]),(0,rx.useLayoutEffect)(()=>()=>{g.dispose(),A.dispose()},[g,A]),IX(()=>{h.current&&p.current&&(h.current.getWorldPosition(f),p.current.tabIndex=!r&&(!e||e(f))?0:-1)});let m=()=>{if(!h.current)return;f.set(.05,-.05,0),h.current.localToWorld(f).project(u);let e=d.domElement.getBoundingClientRect();l.openMenu(n,{x:e.left+(f.x+1)*e.width/2,y:e.top+(1-f.y)*e.height/2})};return(0,rE.jsxs)("group",{ref:h,position:[a/2-a/12-.05,-a/2+a/20+.05,s+.002],children:[(0,rE.jsx)("mesh",{name:"panel-actions",material:g,visible:t&&!r,renderOrder:3,raycast:function(n,i){if(!t||r)return;let a=[];bI.prototype.raycast.call(this,n,a),i.push(...a.filter(t=>t.uv&&.48>=Math.hypot(t.uv.x-.5,t.uv.y-.5)&&(!e||e(t.point))))},onPointerDown:e=>{e.stopPropagation(),e.nativeEvent.stopPropagation()},onPointerUp:e=>e.stopPropagation(),onClick:e=>{e.stopPropagation(),m()},children:(0,rE.jsx)("planeGeometry",{args:[.1,.1]})}),(0,rE.jsx)(TL,{style:{pointerEvents:"none"},children:(0,rE.jsx)("button",{ref:p,type:"button","data-panel-key":n,className:"sr-only","aria-label":c("wallPanel.panelActions",{number:i}),"aria-haspopup":"menu",onFocus:()=>l.select(n),onClick:e=>{e.stopPropagation(),m()}})})]})}function Z8({glbUrl:e,position:t,quaternion:r,materialPatch:n,isPointVisible:i,onDragStart:a,onDrag:s,onDragEnd:o}){let{data:l}=od({...Zb(e),enabled:!0,suspense:!0,throwOnError:oi,placeholderData:void 0},s2,void 0),c=ZE(),{room:u}=W5(),[d,h]=(0,rx.useState)(null),{resourceRef:p,isDragging:f,setIsDragging:A}=W6(),{gl:g}=IY(),m=f?"grabbing":d?.action?"pointer":d?"grab":"auto";(0,rx.useLayoutEffect)(()=>{let e=g.domElement.style.cursor;return g.domElement.style.cursor=m,()=>{g.domElement.style.cursor=e}},[g,m]);let v=(e,t)=>h(r=>r?.key===e&&r.action===t?r:{key:e,action:t}),b=(0,rx.useRef)(null),y=l.width,w=`${u.id}:${c.generation}`,[x,C]=(0,rx.useState)({size:y,roomKey:w,x:0,y:0});if(x.roomKey!==w)C({size:y,roomKey:w,x:0,y:0});else if(x.size!==y){let e=c.panels.reduce((e,t)=>({minX:Math.min(e.minX,t.x),maxX:Math.max(e.maxX,t.x),minY:Math.min(e.minY,t.y),maxY:Math.max(e.maxY,t.y)}),{minX:1/0,maxX:-1/0,minY:1/0,maxY:-1/0}),t=x.size-y;C({size:y,roomKey:w,x:x.x+(e.minX+e.maxX)/2*t,y:x.y+(e.minY+e.maxY)/2*t})}(0,rx.useLayoutEffect)(()=>()=>A(!1),[A]);let E=(e,t=!1)=>{let r=b.current;r&&r.pointerId===e.pointerId&&(e.stopPropagation(),b.current=null,e.target.releasePointerCapture(e.pointerId),A(!1),o(),t||r.moved||(c.select(r.key),c.closeMenu()))};return(0,rE.jsx)("group",{ref:p,position:t,quaternion:r,onPointerMissed:c.clearSelection,children:(0,rE.jsxs)("group",{position:[x.x,x.y,0],children:[c.panels.map((e,t)=>{let r=c.options.find(t=>t.material.hid===e.materialId)?.model??l;return(0,rE.jsxs)("group",{position:[e.x*y,e.y*y,0],onPointerOver:t=>{t.stopPropagation(),v(Zy(e),"panel-actions"===t.object.name)},onPointerOut:()=>h(null),onPointerDown:t=>{0===t.button&&!b.current&&(t.stopPropagation(),t.nativeEvent.stopPropagation(),b.current={x:t.clientX,y:t.clientY,key:Zy(e),moved:!1,pointerId:t.pointerId},t.target.setPointerCapture(t.pointerId),A(!0),a())},onPointerMove:t=>{v(Zy(e),"panel-actions"===t.object.name);let r=b.current;r&&r.pointerId===t.pointerId&&(t.stopPropagation(),!r.moved&&Math.hypot(t.clientX-r.x,t.clientY-r.y)>4&&(r.moved=!0,c.select(r.key),c.closeMenu()),r.moved&&s())},onPointerUp:e=>E(e),onPointerCancel:e=>E(e,!0),children:[(0,rE.jsx)(Z5,{panelKey:Zy(e),number:t+1,size:y,depth:r.depth,patch:n,isPointVisible:i,dragging:f,visible:c.selected===Zy(e)||d?.key===Zy(e)}),(0,rE.jsx)("group",{"rotation-z":-e.turns*Math.PI/2,children:(0,rE.jsx)("group",{position:r.mountingOffset,children:(0,rE.jsx)(Z9,{outlined:c.selected===Zy(e)||d?.key===Zy(e),source:r.scene,patch:n,isPointVisible:i})})})]},Zy(e))}),c.selected&&c.neighbors.map(e=>(0,rE.jsx)("group",{position:[e.x*y,e.y*y,.002],children:(0,rE.jsx)(Z4,{size:y,patch:n,isPointVisible:i,onClick:()=>c.add(e)})},Zy(e)))]})})}function Z6(e){let{glbUrl:t}=W8();return t?(0,rE.jsx)(Z8,{...e,glbUrl:t}):null}let Z7={"modelled-resource":function({position:e,quaternion:t,materialPatch:r,onDrag:n,onDragEnd:i,onDragStart:a}){let{type:s}=W9(),{glbUrl:o}=W8();return o?"rotate-on-floor"===Wv[s].manipulation?(0,rE.jsx)(ZY,{glbUrl:o,position:e,quaternion:t,materialPatch:r}):(0,rE.jsx)(TC,{autoTransform:!1,onDrag:n,onDragEnd:i,onDragStart:a,children:(0,rE.jsx)(ZY,{glbUrl:o,position:e,quaternion:t,materialPatch:r})}):null},"textured-resource":function({position:e,quaternion:t,materialPatch:r,onDrag:n,onDragEnd:i,onDragStart:a}){let{src:s,setLoadError:o}=W8();return s?(0,rE.jsx)(ZT,{onError:()=>o("artwork-load-failed"),children:(0,rE.jsx)(TC,{autoTransform:!1,onDrag:n,onDragEnd:i,onDragStart:a,children:(0,rE.jsx)(Z2,{src:s,position:e,quaternion:t,materialPatch:r})})}):null}};function $e(){let{room:e}=W5(),t=IY(e=>e.scene),r=I0(xH,q0(e),e=>{e.setCrossOrigin("anonymous")});return(0,rx.useLayoutEffect)(()=>(r.colorSpace="srgb",t.background=r,()=>{t.background===r&&(t.background=null)}),[t,r]),null}function $t({plane:e,geometry:t,setPlaneRef:r}){let n={planeId:e.id,kind:e.kind};return(0,rE.jsx)("mesh",{ref:t=>r(e,t),geometry:t,userData:n,children:(0,rE.jsx)("meshBasicMaterial",{visible:!1,side:2})})}function $r(){let e,{type:t}=W9(),r=ZE(),{setLoadError:n}=W8(),i="panel-group"===(e=Wv[t]).manipulation?Z6:Z7[e.identity],{room:a}=W5(),{patchSceneLoad:s}=W6(),{gl:o,size:l,camera:c,invalidate:u,raycaster:d,pointer:h}=IY(),p=(0,rx.useMemo)(()=>a.scene??qS(),[a.scene]),[f,A]=I0(xH,[p.planeIds.dataPng,p.shading?.dataPng??"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGNoaGgAAAMEAYFL09IQAAAAAElFTkSuQmCC"]),g=function({camera:e,invalidate:t,pointer:r,raycaster:n,roomId:i,scene:a,surfaces:s}){let o=`${i}:${[...s].sort().join(",")}`,l=(0,rx.useMemo)(()=>({value:null}),[]),[c,u]=(0,rx.useReducer)(ZU,o,ZQ),d=(0,rx.useRef)(null),h=(0,rx.useRef)(new Map),p=(0,rx.useRef)(new Map),f=(0,rx.useRef)(null),A=c.placementKey===o,g=A?c.planeIdMap:null,m=A&&c.planeIdMapFailed,v=A?c.resourcePose:null,b=(0,rx.useMemo)(()=>a.planes.filter(e=>s.includes(e.kind)),[a,s]),y=(0,rx.useMemo)(()=>b.map(e=>e.id),[b]),w=(0,rx.useMemo)(()=>new Map(a.planes.map(e=>{let t,r;return[e.id,(t=e.polygon3D.flatMap(e=>(function(e,t){let[r,n,i]=e;return[r*(ZS(t)*(t.camera.fx/t.camera.fy)),i,-n]})(e,a)),(r=new vq).setAttribute("position",new vL(t,3)),e.polygon3D.length>=4&&r.setIndex([0,1,2,0,2,3]),r)]})),[a]),x=(0,rx.useMemo)(()=>({artifactsReady:null!==g,placementReady:null!==v,prepareReady:null!==v}),[g,v]),C=0===b.length?"no-allowed-surface":m?"plane-id-map-decode":null,E=(0,rx.useCallback)((e,t)=>{t?p.current.set(e.id,t):p.current.delete(e.id)},[]);(0,rx.useEffect)(()=>{let e=!1;return u({type:"reset-plane-id-map",placementKey:o}),ZI(a.planeIds.dataPng,a.planeIds.width,a.planeIds.height).then(t=>{if(e)return;let r=new Map;try{for(let e of a.planes)s.includes(e.kind)&&e.id>0&&r.set(e.id,function(e,t){let r=2*e.width,n=2*e.height,i=new Float32Array(r*n),a=new Float32Array(r*n),s=new Uint8Array(r*n),o=e.width,l=e.height,c=-1,u=-1;for(let r=0;r<e.height;r++)for(let n=0;n<e.width;n++)e.data[r*e.width+n]===t&&(o=Math.min(o,n),l=Math.min(l,r),c=Math.max(c,n),u=Math.max(u,r));let d=c<0?r:Math.max(0,2*o-11),h=u<0?n:Math.max(0,2*l-11),p=c<0?-1:Math.min(r-1,(c+1)*2+11),f=u<0?-1:Math.min(n-1,(u+1)*2+11);for(let n=h;n<=f;n++){let a=(n+.5)/2-.5,s=Math.floor(a),o=ZP(s,e.height-1),l=ZP(s+1,e.height-1),c=a-s;for(let a=d;a<=p;a++){let s=(a+.5)/2-.5,u=Math.floor(s),d=ZP(u,e.width-1),h=ZP(u+1,e.width-1),p=s-u,f=(e.data[o*e.width+d]===t?1-p:0)+(e.data[o*e.width+h]===t?p:0),A=(e.data[l*e.width+d]===t?1-p:0)+(e.data[l*e.width+h]===t?p:0);i[n*r+a]=f*(1-c)+A*c}}for(let e=h;e<=f;e++)for(let t=d;t<=p;t++){let n=0;for(let a=-9;a<=9;a++)n+=i[e*r+ZP(t+a,r-1)]*ZR[a+9];a[e*r+t]=n}for(let e=h;e<=f;e++)for(let t=d;t<=p;t++){let i=0;for(let s=-9;s<=9;s++)i+=a[ZP(e+s,n-1)*r+t]*ZR[s+9];s[e*r+t]=Math.round(255*i)}let A=new bU(s,r,n,1028);return A.minFilter=1006,A.magFilter=1006,A.wrapS=1001,A.wrapT=1001,A.generateMipmaps=!1,A.unpackAlignment=1,A.needsUpdate=!0,{data:s,width:r,height:n,texture:A}}(t,e.id))}catch(e){throw r.forEach(e=>e.texture.dispose()),e}h.current=r,u({type:"set-plane-id-map",placementKey:o,planeIdMap:t})}).catch(t=>{console.error(t),e||u({type:"fail-plane-id-map",placementKey:o})}),()=>{e=!0,h.current.forEach(e=>e.texture.dispose()),h.current=new Map,l.value=null}},[l,o,a.planeIds,a.planes,s]),(0,rx.useEffect)(()=>{u({type:"reset-placement",placementKey:o}),d.current=null,l.value=null,f.current=null},[l,o]);let S=(0,rx.useCallback)((r,n,i=null)=>{let a,s=ZO(r,n,e),c=i?(a=new g0(...i).applyQuaternion(new g$(...s.quaternion)).add(new g0(...s.position)),{...s,position:a.toArray()}):s;d.current=c.activePlaneId,l.value=h.current.get(c.activePlaneId)?.texture??null,u({type:"set-resource-pose",placementKey:o,resourcePose:c}),t()},[l,e,t,o]),M=(0,rx.useCallback)(t=>g?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(ZM(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:y,camera:e,planeIdMap:g,planeMap:p.current,pointer:t,raycaster:n}):null,[y,e,g,n]);(0,rx.useEffect)(()=>{if(!g||null!==v)return;let r=function({allowedPlanes:e,camera:t,planeMap:r}){let n=e[0],i=n?r.get(n.id):null;return i?ZO(i,function(e){let t=e.geometry.attributes.position,r=new g0;for(let e=0;e<t.count;e++)r.add(new g0(t.getX(e),t.getY(e),t.getZ(e)));return r.divideScalar(Math.max(1,t.count))}(i),t):null}({allowedPlanes:b,camera:e,planeMap:p.current});r&&(d.current=r.activePlaneId,l.value=h.current.get(r.activePlaneId)?.texture??null,u({type:"set-resource-pose",placementKey:o,resourcePose:r}),t())},[l,b,e,t,o,g,v]);let I=(0,rx.useCallback)(()=>{let t,n=M(r);if(!n||!v){f.current=null;return}let i=ZO(n.object,n.point,e);t=new g$(...i.quaternion).invert(),f.current=new g0(...v.position).sub(new g0(...i.position)).applyQuaternion(t).toArray()},[e,M,r,v]),B=(0,rx.useCallback)(()=>{let e=M(r);e&&S(e.object,e.point,f.current)},[M,r,S]),k=(0,rx.useCallback)(()=>{f.current=null},[]),T=(0,rx.useCallback)(t=>{let r,n=d.current,i=null===n?null:h.current.get(n);if(!i)return!1;let a=t.clone().project(e),s=function(e,t,r){if(t<0||t>1||r<0||r>1)return 0;let n=t*e.width-.5,i=r*e.height-.5,a=Math.floor(n),s=Math.floor(i),o=ZP(a,e.width-1),l=ZP(s,e.height-1),c=ZP(a+1,e.width-1),u=ZP(s+1,e.height-1),d=n-Math.floor(n),h=i-Math.floor(i);return((e.data[l*e.width+o]*(1-d)+e.data[l*e.width+c]*d)*(1-h)+(e.data[u*e.width+o]*(1-d)+e.data[u*e.width+c]*d)*h)/255}(i,(a.x+1)*.5,(1-a.y)*.5);return(r=ZP((s-.4)/.29999999999999993,1))*r*(3-2*r)>.001},[e]);return{isPointerOnSurface:(0,rx.useCallback)(e=>{let t=g?ZM(e,g):null;return null!==t&&y.includes(t)},[y,g]),activeMaskTextureUniform:l,isPointVisible:T,failure:C,handleDrag:B,handleDragEnd:k,handleDragStart:I,planeGeometries:w,readiness:x,resourcePose:v,setPlaneRef:E}}({camera:c,invalidate:u,pointer:h,raycaster:d,roomId:`${a.id}:${r?.generation??0}`,scene:p,surfaces:Wv[t].surfaces});!function(e,t,r){let{gl:n}=IY(),{setRotation:i,setIsDragging:a}=W6();(0,rx.useEffect)(()=>{if(!e)return;let r=n.domElement,s=null,o=e=>{e.preventDefault(),e.stopImmediatePropagation()},l=()=>{let e=s;s=null,e&&r.hasPointerCapture(e.id)&&r.releasePointerCapture(e.id),e&&a(!1)},c=e=>{if(s)return void o(e);if(!e.isPrimary||0!==e.button)return;let n=r.getBoundingClientRect();t(new gZ((e.clientX-n.left)/n.width*2-1,1-(e.clientY-n.top)/n.height*2))&&(o(e),s={id:e.pointerId,startX:e.clientX,lastX:e.clientX,rotating:!1},r.setPointerCapture(e.pointerId),a(!0))},u=e=>{if(!s||s.id!==e.pointerId||(o(e),!s.rotating&&5>Math.abs(e.clientX-s.startX)))return;s.rotating=!0;let t=e.clientX-s.lastX;s.lastX=e.clientX,i(e=>e+.5*t)},d=e=>{s?.id===e.pointerId&&(o(e),l())};return r.addEventListener("pointerdown",c,!0),r.addEventListener("pointermove",u,!0),r.addEventListener("pointerup",d,!0),r.addEventListener("pointercancel",d,!0),r.addEventListener("lostpointercapture",d,!0),window.addEventListener("blur",l),()=>{r.removeEventListener("pointerdown",c,!0),r.removeEventListener("pointermove",u,!0),r.removeEventListener("pointerup",d,!0),r.removeEventListener("pointercancel",d,!0),r.removeEventListener("lostpointercapture",d,!0),window.removeEventListener("blur",l),l()}},[e,n,t,r,a,i])}("rotate-on-floor"===Wv[t].manipulation,g.isPointerOnSurface,a.id);let m=(0,rx.useMemo)(()=>new gZ(1,1),[]),v=(0,rx.useMemo)(()=>(function(e,t,r=128){let n=Zz(t),i=function(e,t,r=128){let{width:n,height:i}=t,a=n*i,s=Number.isFinite(r)&&r>0?r:128,o=new Uint8Array(a),l=new Float64Array(a);for(let r=0;r<i;r++)for(let a=0;a<n;a++){let c=r*n+a,u=Math.min(e.width-1,Math.floor((a+.5)*e.width/n)),d=Math.min(e.height-1,Math.floor((r+.5)*e.height/i));o[c]=e.data[(d*e.width+u)*4]??0,l[c]=(t.data[4*c]??s)/(2*s)}let c=l.slice();function u(e,t){let r=Math.ceil(3*t),s=Array.from({length:r+1},(e,r)=>Math.exp(-r*r/(2*t*t))),l=e;for(let e of[!0,!1]){let t=new Float64Array(a);for(let a=0;a<i;a++)for(let c=0;c<n;c++){let u=a*n+c,d=0,h=0;for(let t=-r;t<=r;t++){let r=e?c+t:c,p=e?a:a+t;if(r<0||r>=n||p<0||p>=i)continue;let f=p*n+r;if(o[u]!==o[f])continue;let A=s[Math.abs(t)];d+=l[f]*A,h+=A}t[u]=d/h}l=t}return l}for(let e=0;e<4;e++){let t=new Float64Array(a),r=new Float64Array(a);for(let e=0;e<a;e++)e%n<n-1&&o[e]===o[e+1]&&(t[e]=c[e+1]-c[e]),e<a-n&&o[e]===o[e+n]&&(r[e]=c[e+n]-c[e]);let i=Math.max(.5,1/2**e),s=u(t,i),d=u(r,i);for(let e=0;e<a;e++)s[e]=1/(Math.abs(s[e])+.001),d[e]=1/(Math.abs(d[e])+.001);let h=u(s,i),p=u(d,i),f=new Float64Array(a).fill(1);for(let e=0;e<a;e++)h[e]=e%n<n-1&&o[e]&&o[e]===o[e+1]?.004*h[e]/(Math.abs(t[e])+.02):0,p[e]=e<a-n&&o[e]&&o[e]===o[e+n]?.004*p[e]/(Math.abs(r[e])+.02):0,f[e]+=h[e]+p[e],h[e]&&(f[e+1]+=h[e]),p[e]&&(f[e+n]+=p[e]);let A=(e,t)=>{for(let r=0;r<a;r++){let i=f[r]*e[r];r%n&&(i-=h[r-1]*e[r-1]),r%n<n-1&&(i-=h[r]*e[r+1]),r>=n&&(i-=p[r-n]*e[r-n]),r<a-n&&(i-=p[r]*e[r+n]),t[r]=i}},g=new Float64Array(a),m=new Float64Array(a),v=new Float64Array(a);A(c,v);let b=0;for(let e=0;e<a;e++)g[e]=l[e]-v[e],m[e]=g[e]/f[e],b+=g[e]*m[e];for(let e=0;e<200&&b>1e-12;e++){A(m,v);let e=0;for(let t=0;t<a;t++)e+=m[t]*v[t];if(e<=0)break;let t=b/e,r=0;for(let e=0;e<a;e++)c[e]+=t*m[e],g[e]-=t*v[e],r+=g[e]*g[e]/f[e];let n=r/b;for(let e=0;e<a;e++)m[e]=g[e]/f[e]+n*m[e];b=r}}let d=new Float32Array(4*a);for(let e=0;e<a;e++)d.set([2*c[e],0,0,1],4*e);return d}(Zz(e),n,r),a=new Uint8Array(i.length);for(let e=0;e<i.length;e+=4)a.set([Math.max(0,Math.min(255,Math.round(128*i[e]))),0,0,255],e);let s=new bU(a,n.width,n.height,1023);return s.minFilter=1006,s.magFilter=1006,s.generateMipmaps=!1,s.needsUpdate=!0,s})(f,A,p.shading?.neutral),[f,A,p.shading?.neutral]);(0,rx.useLayoutEffect)(()=>()=>v.dispose(),[v]);let b=(0,rx.useMemo)(()=>({lightingTexture:v,viewport:m,activeMaskTextureUniform:g.activeMaskTextureUniform,maxRoomGain:1.1}),[g.activeMaskTextureUniform,v,m]);(0,rx.useLayoutEffect)(()=>{c instanceof x9&&(c.fov=p.camera.fovYDeg),c.position.set(0,0,0),c.up.set(0,0,1),c.lookAt(0,1,0),c.updateProjectionMatrix(),u()},[c,u,p.camera.fovYDeg]),(0,rx.useLayoutEffect)(()=>{o.getDrawingBufferSize(m),m.set(Math.max(1,m.x),Math.max(1,m.y))},[o,l.height,l.width,m]);let{artifactsReady:y,placementReady:w,prepareReady:x}=g.readiness,C=g.failure;return(0,rx.useEffect)(()=>{s({artifactsReady:y,placementReady:w,prepareReady:x})},[y,s,w,x]),(0,rx.useEffect)(()=>{C&&(!function({failure:e,planes:t,resourceType:r}){let n,i;(i=(n=t.map(e=>e.kind)).filter((e,t)=>n.indexOf(e)===t)).length>0&&i.join(", ")}({failure:C,planes:p.planes,resourceType:t}),n("room-load-failed"))},[C,p.planes,n,t]),(0,rE.jsxs)(rE.Fragment,{children:[g.resourcePose&&(0,rE.jsx)(i,{position:g.resourcePose.position,quaternion:g.resourcePose.quaternion,materialPatch:b,isPointVisible:g.isPointVisible,onDrag:g.handleDrag,onDragEnd:g.handleDragEnd,onDragStart:g.handleDragStart}),p.planes.map(e=>(0,rE.jsx)($t,{plane:e,geometry:g.planeGeometries.get(e.id),setPlaneRef:g.setPlaneRef},e.id)),(0,rE.jsx)(ZT,{onError:()=>n("room-load-failed"),children:(0,rE.jsx)($e,{})})]})}async function $n(e,t={}){let{client:r=Wr,...n}=t;return(await r({method:"POST",url:"/layout/GetConfig",data:e,...n})).data}let $i=["room-viewer","layout-config"],$a=[Math.PI/2,0,0];function $s(){var e;let t=od({queryKey:$i,queryFn:()=>$n(),staleTime:1/0},s2,void 0);if(t.isPending)return null;let r=(e=t.data,e?.internal?.links?.find(e=>"hdr_neutral"===e.type)?.url?.trim()||void 0);return(0,rE.jsx)(R_,{files:r?[r]:void 0,preset:r?void 0:"warehouse",environmentRotation:$a,environmentIntensity:r?.5:.9})}function $o(){return(0,rE.jsx)(R_,{files:["https://cdn.neurodyn.ai/assets/hdr/neutral.hdr"],environmentRotation:$a})}function $l({lighting:e}){return"remote-neutral-hdr"===e?(0,rE.jsx)($s,{}):(0,rE.jsx)($o,{})}function $c({ref:e,target:t}){let{camera:r,gl:n}=IY();return(0,rx.useImperativeHandle)(e,()=>({getScreenPoint(){if(!t.current)return null;let e=t.current.getWorldPosition(new g0).project(r),i=n.domElement.getBoundingClientRect();return{x:i.left+(e.x+1)*i.width/2,y:i.top+(1-e.y)*i.height/2}}}),[r,n,t]),null}let $u={position:[0,0,0],up:[0,0,1],near:.01,far:100};function $d({className:e,ref:t,captureRef:r,introductionTarget:n,focusRef:i,onSizeChange:a,...s}){let{type:o}=W9(),{glbUrl:l}=W8(),c=ZE(),u=c?.isBaseModelReady??!0,{materialSource:d}=qN(o),{room:h}=W5(),{patchSceneLoad:p}=W6(),{active:f}=RF(),A=ZS((0,rx.useMemo)(()=>h.scene??qS(),[h.scene])),g=(0,rx.useRef)(null),m=(0,rx.useRef)(!1),v=(0,rx.useCallback)(e=>{(g.current=e,"function"==typeof t)?t(e):t&&(t.current=e)},[t]),b=q8("(max-width: 639px)"),{width:y,height:w}=function(e){let t,{ref:r,box:n="content-box"}=e,[{width:i,height:a},s]=rx.useState(q6),o=(t=rx.useRef(!1),rx.useEffect(()=>(t.current=!0,()=>{t.current=!1}),[]),rx.useCallback(()=>t.current,[])),l=rx.useRef({...q6}),c=rx.useRef(void 0);return c.current=e.onResize,rx.useEffect(()=>{if(!r.current||"u"<typeof window||!("ResizeObserver"in window))return;let e=new ResizeObserver(([e])=>{let t="border-box"===n?"borderBoxSize":"device-pixel-content-box"===n?"devicePixelContentBoxSize":"contentBoxSize",r=q7(e,t,"inlineSize"),i=q7(e,t,"blockSize");if(l.current.width!==r||l.current.height!==i){let e={width:r,height:i};l.current.width=r,l.current.height=i,c.current?c.current(e):o()&&s(e)}});return e.observe(r.current,{box:n}),()=>{e.disconnect()}},[n,r,o]),{width:i,height:a}}({ref:g}),x=(0,rx.useMemo)(()=>{if(!y||!w||!A)return null;let e=y,t=w;return b?e=(t=w)*A:y/w>A?e=w*A:t=y/A,{width:e,height:t}},[y,w,A,b]);return(0,rx.useLayoutEffect)(()=>{x&&a?.(x.width,x.height)},[x,a]),(0,rx.useEffect)(()=>{if(!x||m.current)return;m.current=!0;let e=window.setTimeout(()=>{window.dispatchEvent(new Event("resize"))},250);return()=>{window.clearTimeout(e)}},[x]),(0,rx.useEffect)(()=>{p({layoutReady:null!==x})},[p,x]),(0,rx.useEffect)(()=>{"object-glb"===d&&p({materialReady:!!l&&u})},[l,d,u,p]),(0,rx.useEffect)(()=>{p({assetsReady:!f})},[f,p]),(0,rE.jsx)("div",{ref:v,className:Wb("size-full flex items-center justify-center sm:pt-21 sm:pb-12",e),...s,children:x&&(0,rE.jsx)(Rz,{className:"touch-none bg-transparent",frameloop:"demand",camera:$u,gl:{toneMapping:4,toneMappingExposure:1.2,alpha:!0,preserveDrawingBuffer:!0},style:{width:`${x.width}px`,height:`${x.height}px`},children:(0,rE.jsxs)(rx.Suspense,{fallback:null,children:[(0,rE.jsx)(Zk,{ref:r}),(0,rE.jsx)($l,{lighting:Wv[o].lighting}),(0,rE.jsx)($r,{}),n&&i&&(0,rE.jsx)($c,{ref:i,target:n})]})})})}function $h({captureRef:e,introduction:t,className:r,canvasWrapperClassName:n,controls:i,...a}){let s,o,l,c,{isDragging:u}=W6(),d=(0,rx.useRef)(null),h=(0,rx.useRef)(null),p=(0,rx.useRef)(null),f=(s=(0,rx.useRef)(null),o=(0,rx.useRef)(!1),l=(0,rx.useCallback)(()=>{null!==s.current&&cancelAnimationFrame(s.current),s.current=null},[]),c=(0,rx.useCallback)(()=>{t&&(l(),t.onCancel())},[t,l]),(0,rx.useEffect)(()=>{if(!t){o.current=!1;return}if(!t.ready){o.current&&t.onCancel();return}return s.current=requestAnimationFrame(()=>{let e=d.current,r=p.current?.getScreenPoint(),n=e?.instance.wrapperComponent,i=e?.instance.contentComponent;if(!e||!r||!n||!i)return void t.onCancel();let{scale:a,positionX:l,positionY:c}=e.instance.transformState,u=n.getBoundingClientRect(),h=Math.min(e.instance.setup.maxScale,1.28*a),f=(e,t,r)=>r<t?(t-r)/2:Math.max(t-r,Math.min(0,e)),A=f(u.width/2-(r.x-u.left-l)/a*h,u.width,i.offsetWidth*h),g=f(u.height/2-(r.y-u.top-c)/a*h,u.height,i.offsetHeight*h);o.current=!0;let m=window.matchMedia("(prefers-reduced-motion: reduce)").matches,v=performance.now(),b=r=>{let n=m?1:Math.min(1,(r-v)/700),i=(1-Math.cos(Math.PI*n))/2;e.setTransform(l+(A-l)*i,c+(g-c)*i,a+(h-a)*i,0),n<1?s.current=requestAnimationFrame(b):(s.current=null,t.onComplete())};b(v)}),()=>{l()}},[p,t,l,d]),c),A=q8("(max-width: 639px)"),g=(0,rx.useRef)(!!t);g.current=!!t;let m=(0,rx.useCallback)(()=>{A&&d.current?.centerView(void 0,g.current?0:void 0)},[A]);return(0,rE.jsxs)("div",{className:Wb("relative flex items-center justify-center overflow-hidden",r),...a,onPointerDownCapture:e=>{f(),a.onPointerDownCapture?.(e)},onTouchStartCapture:e=>{f(),a.onTouchStartCapture?.(e)},onWheelCapture:e=>{f(),a.onWheelCapture?.(e)},children:[(0,rE.jsx)(gd,{ref:d,disabled:u,children:(0,rE.jsx)(gh,{wrapperClass:"neurodyn-rzpp-wrapper size-full!",contentClass:"neurodyn-rzpp-content h-full! min-w-full sm:max-w-full",children:(0,rE.jsx)($d,{captureRef:e??h,introductionTarget:t?.target,focusRef:p,className:n,onSizeChange:m})})}),i]})}function $p({...e}){return(0,rE.jsx)(hK,{"data-slot":"popover",...e})}function $f({...e}){return(0,rE.jsx)(hX,{"data-slot":"popover-trigger",...e})}function $A({className:e,align:t="center",sideOffset:r=4,portalContainer:n,...i}){return(0,rE.jsx)(h1,{container:n,children:(0,rE.jsx)(h3,{"data-slot":"popover-content",align:t,sideOffset:r,className:Wb("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden",e),...i})})}function $g({className:e,defaultValue:t,value:r,min:n=0,max:i=100,variant:a="default","aria-label":s,"aria-labelledby":o,...l}){let c=rx.useMemo(()=>Array.isArray(r)?r:Array.isArray(t)?t:[n],[r,t,n]);return(0,rE.jsxs)(pd,{"data-slot":"slider",defaultValue:t,value:r,min:n,max:i,"data-variant":a,"aria-label":s,"aria-labelledby":o,className:Wb("relative flex w-full touch-none cursor-pointer items-center select-none data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col",e),...l,children:[(0,rE.jsx)(pv,{"data-slot":"slider-track",className:Wb("relative grow overflow-hidden rounded-full data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5","editor"===a?"bg-border-light data-[orientation=horizontal]:h-0.5":"bg-muted data-[orientation=horizontal]:h-1.5"),children:(0,rE.jsx)(py,{"data-slot":"slider-range",className:Wb("absolute data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full","editor"===a?"bg-background-blue":"bg-primary")})}),Array.from({length:c.length},(e,t)=>(0,rE.jsx)(px,{"data-slot":"slider-thumb","aria-label":s,"aria-labelledby":o,className:Wb("ring-ring/50 block shrink-0 rounded-full border bg-white transition-[color,box-shadow] focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50","editor"===a?"size-3 border-background-blue shadow-none hover:ring-2 focus-visible:ring-2":"size-4 border-primary shadow-sm hover:ring-4 focus-visible:ring-4")},t))]})}let $m=/oklch\(([0-9.]+)\s+([0-9.]+)\s+([0-9.]+)\)/;function $v(e,t){let r=e.match($m);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 $b({data:e,foreground:t,background:r,robustness:n="M",className:i,...a}){let[s,o]=(0,rx.useState)(null);return((0,rx.useEffect)(()=>{(async()=>{try{let i=getComputedStyle(document.documentElement),a=t??i.getPropertyValue("--foreground"),s=r??i.getPropertyValue("--background"),l=$v(a,[.21,.006,285.885]),c=$v(s,[.985,0,0]),u=await Lr.toString(e,{type:"svg",color:{dark:Le(Lt({mode:"oklch",...l})),light:Le(Lt({mode:"oklch",...c}))},width:200,errorCorrectionLevel:n,margin:0});o(u)}catch(e){console.error(e)}})()},[e,t,r,n]),s)?(0,rE.jsx)("div",{className:Wb("size-full","[&_svg]:size-full",i),dangerouslySetInnerHTML:{__html:s},...a}):null}let $y=new F0,$w=$y.getDevice(),$x=$y.getOS(),$C="iOS"===$x.name,$E="Android"===$x.name,$S="mobile"===$w.type;function $M({className:e,buttonClassName:t,buttonLeadingIcon:r,buttonLabel:n,buttonSize:i,buttonVariant:a="contrast",...s}){let{type:o,width:l,height:c,name:u}=W9(),{handoff:d}=Wv[o],{src:h,tinuuid:p,widgetSession:f}=W8(),{containerRef:A,resourceRef:g}=W6(),{t:m,i18n:v}=sf(),b=function(){let{i18n:e}=sf();return"ru"===(e.resolvedLanguage??e.language)?"arizo":"vizbl"}(),[y,w]=(0,rx.useState)(""),[x,C]=(0,rx.useState)(""),[E,S]=(0,rx.useState)(()=>f?.token),[M,I]=(0,rx.useState)(!1),[B,k]=(0,rx.useState)(!1),T=(0,rx.useRef)(null),R=v.resolvedLanguage??v.language,D=qC[b],P=(0,rx.useMemo)(()=>(function({height:e,language:t,name:r,src:n,tenantConfig:i,tinuuid:a,handoff:s,type:o,width:l,widgetSessionToken:c,pageUrl:u}){if(!s)return null;if("floor"===s.destination&&a){let e=new URL(i.ROOM_URL);return e.searchParams.set("type",o),e.searchParams.set("tinuuid",a),e.searchParams.set("name",r),e.searchParams.set("language",t),c&&e.searchParams.set("widgetSessionToken",c),e.toString()}let d=new URL(i.POSTER_URL);return n&&d.searchParams.set("texture",function(e,t){if(!t||/^[a-z][a-z0-9+.-]*:/i.test(e)||e.startsWith("//"))return e;try{return new URL(e,t).href}catch{return e}}(n,u)),d.searchParams.set("texture_width",(100*l).toString()),d.searchParams.set("texture_height",(100*e).toString()),c&&d.searchParams.set("widgetSessionToken",c),d.toString()})({height:c,language:R,name:u,src:h,tenantConfig:D,tinuuid:p,handoff:d,type:o,width:l,widgetSessionToken:E,pageUrl:"u"<typeof window?void 0:window.location.href}),[h,p,d,o,l,c,u,R,D,E]),_=(0,rx.useMemo)(()=>{if(!p)return null;let e=new URL("https://appclip.apple.com/id");return e.searchParams.set("p","com.us.vizbl.Clip"),e.searchParams.set("tinuuid",p),e.toString()},[p]);async function L(){S(await f?.getTokenForRequest().catch(()=>f.token))}let N=async()=>{if(d?.ar==="appclip"){if(!p)return;if($C&&_){Wu(f,"appclip"),window.location.assign(_);return}await L(),I(!0);return}let e=T.current,t=g.current;if(e&&t)if(e.canActivateAR)try{k(!0);let e=t.clone(!0);if(e.position.set(0,0,0),$C){let t=new Nh,r=await t.parseAsync(e),n=new File([r],"scene.usdz",{type:"model/vnd.usdz+zip"});w(URL.createObjectURL(n))}else{let t=new Li,r=await t.parseAsync(e,{binary:!0}),n=new File([r],"scene.glb",{type:"model/gltf-binary"});C(URL.createObjectURL(n))}}finally{k(!1)}else await L(),I(!0)};return((0,rx.useEffect)(()=>((""!==y||""!==x)&&T.current?.activateAR(),()=>{""!==y&&URL.revokeObjectURL(y),""!==x&&URL.revokeObjectURL(x)}),[y,x]),!d||$E&&$S||"floor"===d.destination&&!p)?null:(0,rE.jsxs)("div",{className:Wb(e),...s,children:[(0,rE.jsxs)(Ww,{variant:a,size:i,disabled:B,onClick:N,className:t,children:[r,n??m("ar.viewInPlace")]}),(0,rE.jsx)(Wx,{open:M,onOpenChange:I,children:(0,rE.jsxs)(WM,{className:"gap-6 sm:max-w-120",showCloseButton:!1,portalContainer:A,children:[(0,rE.jsx)("div",{className:"flex items-center justify-center p-10 bg-constant-white rounded-2xl",children:(0,rE.jsx)($b,{className:"size-48",robustness:"H",data:P??""})}),(0,rE.jsx)("p",{className:"text-lg text-center text-text-sub font-medium",children:m("ar.scanQrCode")}),(0,rE.jsxs)("p",{className:"text-xs text-center text-text-light",children:[m("ar.deviceRequirementsDisclaimer"),(0,rE.jsx)("br",{}),(0,rE.jsx)("a",{href:D.TERMS_URL,target:"_blank",rel:"noopener noreferrer",className:"underline underline-offset-2 transition-colors duration-300 hover:text-text-dark",style:{textDecoration:"underline",textUnderlineOffset:"2px"},children:m("legal.termsOfUse")})," ",m("legal.conjunction")," ",(0,rE.jsx)("a",{href:D.PRIVACY_URL,target:"_blank",rel:"noopener noreferrer",className:"underline underline-offset-2 transition-colors duration-300 hover:text-text-dark",style:{textDecoration:"underline",textUnderlineOffset:"2px"},children:m("legal.privacyPolicy")})]}),(0,rE.jsx)(WE,{asChild:!0,children:(0,rE.jsx)(Ww,{variant:"contrast",size:"lg",children:m("close")})})]})}),(0,rE.jsx)("model-viewer",{ref:T,className:"fixed w-px h-px opacity-0 pointer-events-none",src:x,iosSrc:y,reveal:"manual",ar:!0,cameraControls:!0,arPlacement:"wall",arModes:"webxr",arScale:"fixed",shadowIntensity:1,interactionPromptThreshold:100})]})}async function $I(e){await navigator.clipboard.writeText(e)}function $B({captureRef:e,fallbackToClipboard:t=!1,fileName:r="room-scene.png",shareMessage:n}){let[i,a]=(0,rx.useState)(!1),[s,o]=(0,rx.useState)(!1),l=(0,rx.useMemo)(()=>"u">typeof navigator&&"function"==typeof navigator.share||t&&"u">typeof navigator&&"function"==typeof navigator.clipboard?.writeText,[t]),c=(0,rx.useCallback)(async()=>{if(!l)return;let i="u">typeof navigator&&"function"==typeof navigator.share,s=window.location.href,o=`${n}
|
|
7631
|
-
${s}`;a(!0);try{if(!i&&t)return void await $I(o);let n=e.current;if(n)try{let e=await n.capture(),t=new File([e],r,{type:e.type||"image/png"});if(navigator.canShare?.({files:[t]}))return void await navigator.share({text:o,files:[t]})}catch(e){console.error("Failed to generate scene screenshot for sharing",e)}await navigator.share({text:o,url:s})}catch(e){e instanceof DOMException&&"AbortError"===e.name||console.error("Failed to share scene",e)}finally{a(!1)}},[l,e,t,r,n]);return{canShare:l,download:(0,rx.useCallback)(async()=>{let t=e.current;if(t){o(!0);try{var n;let e,i;n=await t.capture(),e=URL.createObjectURL(n),(i=document.createElement("a")).href=e,i.download=r,document.body.append(i),i.click(),i.remove(),URL.revokeObjectURL(e)}catch(e){console.error("Failed to download scene screenshot",e)}finally{o(!1)}}},[e,r]),isDownloading:s,isSharing:i,share:c}}function $k({captureRef:e}){let{type:t}=W9(),{containerRef:r,angle:n,rotation:i,setAngle:a,setRotation:s}=W6(),{t:o}=sf(),l=q8("(max-width: 639px)"),{canShare:c,isSharing:u,share:d}=$B({captureRef:e,shareMessage:o(`shareMessage.${t}`)});return(0,rE.jsxs)(rE.Fragment,{children:[(0,rE.jsx)($M,{className:"absolute bottom-4 left-4 sm:bottom-6 sm:left-6"}),(0,rE.jsxs)("div",{className:"absolute right-4 bottom-4 inline-flex items-center gap-2 sm:right-6 sm:bottom-6",children:[(0,rE.jsxs)($p,{children:[(0,rE.jsx)($f,{asChild:!0,children:(0,rE.jsxs)(Ww,{variant:"contrast",size:l?"icon":"default",children:[(0,rE.jsx)(Wj,{className:"size-5"}),(0,rE.jsx)("span",{className:"sr-only sm:not-sr-only",children:o("scene.tunePosition")})]})}),(0,rE.jsx)($A,{className:"px-3 py-3.5 bg-button-dark border-button-dark text-text-white",side:"top",align:"end",portalContainer:r,children:(0,rE.jsxs)(qt,{children:[(0,rE.jsxs)(qn,{orientation:"horizontal",children:[(0,rE.jsx)(qa,{children:o("scene.rotation")}),(0,rE.jsx)($g,{value:[i],onValueChange:([e])=>s(e??0),min:-180,max:180,step:1,className:"w-40.5 **:data-[slot=slider-range]:bg-transparent **:data-[slot=slider-thumb]:border-background-base-3 **:data-[slot=slider-thumb]]:bg-background-base-3 **:data-[slot=slider-track]:bg-icons-normal","aria-label":o("scene.rotation")})]}),(0,rE.jsxs)(qn,{orientation:"horizontal",children:[(0,rE.jsx)(qa,{children:o("scene.angle")}),(0,rE.jsx)($g,{value:[n],onValueChange:([e])=>a(e??0),max:75,min:-75,step:1,className:"w-40.5 **:data-[slot=slider-range]:bg-transparent **:data-[slot=slider-thumb]:border-background-base-3 **:data-[slot=slider-thumb]]:bg-background-base-3 **:data-[slot=slider-track]:bg-icons-normal","aria-label":o("scene.angle")})]})]})})]}),(0,rE.jsxs)(Ww,{variant:"contrast",size:l?"icon":"default",disabled:!c||u,onClick:d,children:[(0,rE.jsx)(WV,{className:"size-5"}),(0,rE.jsx)("span",{className:"sr-only sm:not-sr-only",children:o("scene.share")})]}),l&&(0,rE.jsxs)($p,{children:[(0,rE.jsx)($f,{asChild:!0,children:(0,rE.jsx)(Ww,{variant:"contrast",size:"icon",children:(0,rE.jsx)(WG,{})})}),(0,rE.jsxs)($A,{className:"grid gap-5",portalContainer:r,children:[(0,rE.jsx)(qQ,{}),(0,rE.jsx)(qY,{})]})]})]})]})}function $T({variant:e,open:t,portalContainer:r,showDialogCloseButton:n=!1,onOpenChange:i,onTryAgain:a,onCancel:s}){let{t:o}=sf(),l=e?o("custom-interior-processing"===e?"floor.error.processingBody":"viewer-load-failed"===e?"floor.error.loadBody":"artwork-load-failed"===e||"room-load-failed"===e?`loadError.${e}`:`accessError.${e}`):"";return(0,rE.jsx)(Wx,{open:t,onOpenChange:i,children:(0,rE.jsxs)(WM,{portalContainer:r,showCloseButton:!1,className:"w-full max-w-85 gap-4 rounded-2xl p-6 text-center sm:max-w-85 sm:p-6",onInteractOutside:e=>{e.preventDefault()},children:[(0,rE.jsxs)("div",{className:"grid gap-1",children:[(0,rE.jsx)(Wk,{children:o("floor.error.title")}),(0,rE.jsx)(WT,{className:"typo-base-14 font-medium text-text-base",children:l})]}),(0,rE.jsxs)("div",{className:"grid gap-2",children:[a&&(0,rE.jsxs)(Ww,{variant:"contrast",onClick:a,children:[(0,rE.jsx)(WF,{"aria-hidden":"true"}),o("floor.error.tryAgain")]}),s&&(0,rE.jsx)(Ww,{variant:"outline",onClick:s,children:o("floor.error.cancel")}),n&&(0,rE.jsx)(WE,{asChild:!0,children:(0,rE.jsx)(Ww,{variant:"outline",children:o("close")})})]})]})})}function $R({rooms:e,customRooms:t,selectedRoomId:r,isInvalidFile:n,uploadRetryRequestId:i=0,showCloseButton:a=!1,onSelectRoom:s,onUploadFile:o}){let l,{t:c}=sf(),u=(0,rx.useId)(),d=(0,rx.useRef)(null);function h(e){return e.map(e=>(0,rE.jsxs)("button",{type:"button",className:"group relative aspect-[4/3] overflow-hidden rounded-2xl bg-background-base text-left transition focus-visible:ring-2 focus-visible:ring-icons-normal focus-visible:outline-hidden","aria-pressed":e.id===r,onClick:()=>s(e.id),children:[(0,rE.jsx)("img",{crossOrigin:"anonymous",src:q0(e),alt:"",decoding:"async",className:"size-full scale-[1.02] transform-gpu object-cover transition duration-200 group-hover:scale-105"}),(0,rE.jsx)("span",{className:"typo-base-12 absolute inset-x-0 bottom-0 truncate bg-linear-to-t from-black/45 via-black/10 to-transparent px-3 py-2 text-constant-white",children:c(`rooms.${e.id}`,{defaultValue:e.name})})]},e.id))}return(0,rx.useEffect)(()=>{i>0&&d.current?.click()},[i]),(0,rE.jsxs)("section",{"aria-labelledby":"floor-interior-selection-title",className:"relative mx-auto grid h-auto min-h-0 max-h-[calc(100svh-8px)] w-full max-w-151 grid-rows-[auto_auto_minmax(0,1fr)_auto] gap-4 overflow-hidden rounded-t-2xl rounded-b-none bg-background-containers p-4 shadow-[var(--shadow-login)] sm:my-4 sm:max-h-[calc(100svh-32px)] sm:rounded-2xl sm:p-6","data-testid":"floor-interior-selection-panel","data-room-selection-panel":!0,children:[a&&(l=(0,rE.jsx)(Ww,{type:"button",variant:"outline",size:"icon",className:"absolute top-4 right-4 sm:top-6 sm:right-6","aria-label":c("close"),"data-testid":"floor-interior-selection-icon-close",children:(0,rE.jsx)(W_,{})}),(0,rE.jsx)(WE,{asChild:!0,children:l})),(0,rE.jsx)("h2",{id:"floor-interior-selection-title",className:"typo-base-16 font-medium sm:typo-base-18 text-text-dark",children:c("floor.interiorSelection.title")}),(0,rE.jsxs)("div",{className:"grid gap-2","data-testid":"floor-interior-selection-upload",children:[(0,rE.jsxs)("label",{htmlFor:u,className:"flex min-h-15 cursor-pointer items-center justify-center gap-2 rounded-xl border border-dashed border-background-blue bg-background-blue-transparent px-4 text-center typo-button-normal text-background-blue opacity-80 transition hover:bg-background-blue-transparent/80",onDragOver:e=>e.preventDefault(),onDrop:function(e){e.preventDefault();let t=e.dataTransfer.files[0];t&&o(t)},children:[(0,rE.jsx)(WD,{className:"size-5 text-background-blue"}),c("floor.interiorSelection.uploadPhoto"),(0,rE.jsx)("input",{ref:d,id:u,type:"file",accept:"image/*",className:"sr-only",onChange:function(e){let t=e.target.files?.[0];e.target.value="",t&&o(t)}})]}),n&&(0,rE.jsx)("p",{className:"typo-base-12 font-medium text-destructive",children:c("floor.interiorSelection.invalidFile")})]}),(0,rE.jsx)("div",{className:"grid min-h-0 overflow-y-auto overflow-x-hidden overscroll-contain pr-1 [scrollbar-width:none] [-ms-overflow-style:none] [&::-webkit-scrollbar]:hidden","data-testid":"floor-interior-selection-scroll-content",children:(0,rE.jsxs)("div",{className:"grid min-h-max gap-4",children:[t.length>0&&(0,rE.jsxs)("div",{className:"grid gap-3",children:[(0,rE.jsx)("h3",{className:"typo-base-16 font-medium text-text-light",children:c("floor.interiorSelection.customTitle")}),(0,rE.jsx)("div",{className:"grid grid-cols-2 gap-3 sm:grid-cols-3","data-testid":"floor-custom-interior-selection-grid",children:h(t)})]}),(0,rE.jsxs)("div",{className:"grid gap-3",children:[(0,rE.jsx)("h3",{className:"typo-base-16 font-medium text-text-light",children:c("floor.interiorSelection.presetsTitle")}),(0,rE.jsx)("div",{className:"grid grid-cols-2 gap-3 sm:grid-cols-3","data-testid":"floor-preset-interior-selection-grid",children:h(e)})]})]})}),a&&(0,rE.jsx)(WB,{className:"-mt-2 shrink-0 p-0 sm:mt-0",children:(0,rE.jsx)(WE,{asChild:!0,children:(0,rE.jsx)(Ww,{variant:"outline",className:"w-full",children:c("close")})})})]})}function $D(e){return(0,rE.jsx)("div",{className:"absolute inset-0 z-20 grid items-end p-0 sm:items-center sm:p-4","data-testid":"floor-interior-selection-overlay",children:(0,rE.jsx)($R,{...e})})}function $P({open:e,showCloseButton:t=!0,portalContainer:r,onOpenChange:n,...i}){let{t:a}=sf();return(0,rE.jsx)(Wx,{open:e,onOpenChange:n,children:(0,rE.jsxs)(WM,{contentInsideOverlay:!0,portalContainer:r,showCloseButton:!1,"data-testid":"floor-interior-selection-overlay",className:"top-auto bottom-0 grid max-h-[calc(100svh-8px)] w-[calc(100%-16px)] min-w-0 max-w-none translate-y-0 overflow-hidden rounded-t-2xl rounded-b-none border-none bg-transparent p-0 shadow-none sm:top-[50%] sm:bottom-auto sm:w-full sm:max-w-none sm:translate-y-[-50%] sm:rounded-none sm:p-4",children:[(0,rE.jsx)(Wk,{className:"sr-only",children:a("floor.interiorSelection.title")}),(0,rE.jsx)(WT,{className:"sr-only"}),(0,rE.jsx)($R,{...i,showCloseButton:t})]})})}let $_="data-material-selection-action",$L="data-material-selection-panel";function $N(){let{t:e}=sf(),{type:t}=W9();return e(`floor.materialSelection.${Wv[t].catalogTitle}`)}function $F({className:e,gridClassName:t,titleClassName:r,onOpenChange:n,...i}){let a=$N(),s=(0,rx.useRef)(null),{fetchNextMaterialsPage:o,hasNextPage:l,isFetchingNextPage:c,isLoading:u,materialItems:d,selectMaterial:h,selectedMaterialId:p}=function({includeEmbeddedObject:e=!1}={}){var t;let{material:r,tinuuid:n,embeddedObject:i,selectedObject:a,setMaterial:s,setTinuuid:o,apiKey:l,baseURL:c,source:u,widgetSession:d,setAccessError:h,setLoadError:p}=W8(),{type:f,name:A}=W9(),g=i?.owner?.uuid,{data:m,error:v,isFetchingNextPage:b,fetchNextPage:y,hasNextPage:w,isLoading:x}=od({queryKey:["room-viewer","public-objects",{apiKey:(t={apiKey:l,baseURL:c,source:u,resourceType:f}).apiKey??null,ownerUuid:g??null,resourceType:t.resourceType??null,source:t.source}],enabled:!!g,queryFn:({pageParam:e,signal:t})=>{if(!g)throw Error("Owner uuid is required.");return Wf(g,e,{apiKey:l,baseURL:c,signal:t,source:u,widgetSession:d,resourceType:f})},initialPageParam:1,getNextPageParam:(e,t,r)=>void 0!==e.pages_count?r<e.pages_count?r+1:void 0:e.objs?.length?r+1:void 0,getPreviousPageParam:(e,t,r)=>r>1?r-1:void 0},ou,void 0),{requiresMaterialModel:C}=qN(f),{getCollapseKey:E}=q_(f),{catalogsEveryMaterial:S}=qP[Wv[f].materialRole],{composition:M,productNameSource:I}=Wv[f],B=(0,rx.useMemo)(()=>m?.pages.flatMap(e=>e.objs??[])??[],[m]),k=(0,rx.useMemo)(()=>"material"===I?[]:B.filter(e=>e.tinuuid&&(!e.kit?.uuid||!e.kit.name?.trim())&&(!C||e.materials?.[0]?.native?.glbUrl)),[B,I,C]),T=oc({queries:k.map(e=>({queryKey:Wh(e.tinuuid,{apiKey:l,baseURL:c,source:u,resourceType:f}),queryFn:({signal:t})=>Wp(e.tinuuid,{apiKey:l,baseURL:c,signal:t,source:u,widgetSession:d,resourceType:f})}))}),R=B.flatMap(e=>{let t=T[k.indexOf(e)];return t?.isPending||t?.isError?[]:[{...e,kit:t?.data?.kit?{...e.kit,...t.data.kit}:e.kit}]}),D=(0,rx.useMemo)(()=>{let t={requiresMaterialModel:C,getCollapseKey:E};if(e)return qk([...i?.tinuuid&&i.materials?.[0]?[i]:[],...R],null,t);return qk(R,i,t)},[i,R,E,e,C]),P=(0,rx.useMemo)(()=>D.flatMap(e=>{if(!e.tinuuid)return[];let t="color-design"===M&&e.kit?.uuid,r=S&&!t?e.materials:e.materials?.slice(0,1);return r?.map(t=>{let r=qO(t);return r&&e.tinuuid?{materialId:r,productName:qF(f,e,t,A),material:t,tinuuid:e.tinuuid}:null}).filter(e=>null!==e)??[]}),[S,M,D,f,A]),_="color-design"===M&&a?.tinuuid===n&&a?.kit?.uuid?D.find(e=>E(e)===E(a)):void 0,L=_?.tinuuid!==n&&_?qO(_.materials?.[0]??{}):r?qO(r):"",N=v??T.find(e=>e.error)?.error,F=D.find(e=>e.tinuuid===n),O=D.find(e=>e.tinuuid&&e.materials?.[0]);(0,rx.useEffect)(()=>{let e=VO(N);e?h(e):N&&p("viewer-load-failed")},[N,h,p]),(0,rx.useEffect)(()=>{m&&0===D.length&&w&&!b&&y()},[m,y,w,b,D.length]),(0,rx.useEffect)(()=>{if(null!==r)return;let e=F??O,t=e?.materials?.[0];e&&t&&e.tinuuid&&(s(t),o(e.tinuuid))},[O,F,r,s,o]);let Q=(0,rx.useCallback)(()=>{!1===w||b||y()},[y,w,b]),U=(0,rx.useCallback)(e=>{let t=D.find(t=>t.materials?.some(t=>qO(t)===e)),r=t?.materials?.find(t=>qO(t)===e);return!!t&&!!r&&!!t.tinuuid&&(s(r),o(t.tinuuid),!0)},[D,s,o]);return{fetchNextMaterialsPage:Q,hasNextPage:w,isFetchingNextPage:b,isLoading:x||T.some(e=>e.isPending),materialItems:P,selectMaterial:U,selectedMaterialId:L}}({includeEmbeddedObject:!0});(0,rx.useEffect)(()=>{let e=s.current;e&&!u&&!c&&l&&0!==d.length&&e.scrollHeight<=e.clientHeight&&o()},[o,l,c,u,d.length]);let f=(0,rx.useCallback)(e=>{let{clientHeight:t,scrollHeight:r,scrollTop:n}=e.currentTarget;n+t>=r-64&&o()},[o]),A=(0,rx.useCallback)(e=>{h(e)&&n(!1)},[n,h]);return(0,rE.jsxs)("div",{...i,className:Wb("flex min-h-0 flex-col gap-3 overflow-hidden text-text-dark outline-none",e),"data-testid":"material-selection-panel",onPointerDownCapture:e=>{e.stopPropagation(),i.onPointerDownCapture?.(e)},onMouseDownCapture:e=>{e.stopPropagation(),i.onMouseDownCapture?.(e)},children:[(0,rE.jsx)("h2",{className:Wb("typo-base-16 font-medium sm:typo-base-14 sm:font-semibold text-text-dark",r),children:a}),(0,rE.jsx)("div",{"data-testid":"material-selection-grid",ref:s,className:Wb("min-h-0 flex-1 overflow-y-auto overflow-x-hidden overscroll-contain pr-1 [scrollbar-width:none] [-ms-overflow-style:none] [&::-webkit-scrollbar]:hidden",t),onScroll:f,children:(0,rE.jsxs)("div",{className:"grid min-h-max grid-cols-3 gap-x-2 gap-y-2","data-testid":"material-selection-grid-items",children:[d.map(({materialId:e,material:t,tinuuid:r,productName:n})=>{let i,a=e===p,s=(i=t.previews?.[0],i?.subRes?.small??i?.url);return(0,rE.jsxs)("button",{type:"button","data-selected":a,"aria-pressed":a,className:"group flex min-w-0 flex-col gap-1 rounded-lg bg-background-containers text-left focus-visible:ring-2 focus-visible:ring-icons-normal focus-visible:outline-hidden",onClick:()=>A(e),onKeyDown:t=>{("Enter"===t.key||" "===t.key)&&(t.preventDefault(),A(e))},children:[(0,rE.jsxs)("span",{className:"relative grid aspect-square w-full shrink-0 place-items-center overflow-hidden rounded-lg border border-border p-1 transition group-hover:border-icons-normal",children:[s?(0,rE.jsx)("img",{src:s,alt:"",className:"size-full rounded-md object-cover"}):(0,rE.jsx)(WQ,{className:"size-6 text-icons-normal"}),a&&(0,rE.jsx)("span",{className:"absolute top-1 right-1 grid size-6 place-items-center rounded-full bg-icons-blue text-icons-white","data-testid":"material-selection-selected-check",children:(0,rE.jsx)(WP,{className:"size-4"})})]}),(0,rE.jsx)("span",{className:"typo-base-12 line-clamp-3 w-full wrap-anywhere text-text-base",children:n})]},`${r}-${e}`)}),(u||c)&&(0,rE.jsx)("div",{className:"col-span-3 grid h-16 place-items-center",children:(0,rE.jsx)(WK,{className:"size-6"})})]})})]})}function $O({open:e,portalContainer:t,onOpenChange:r}){let{t:n}=sf(),i=$N();return(0,rE.jsx)(Wx,{open:e,onOpenChange:r,children:(0,rE.jsxs)(WM,{contentInsideOverlay:!0,"data-testid":"material-selection-mobile-overlay","data-material-selection-panel":"",className:"top-auto bottom-0 flex max-h-[calc(100svh-8px)] w-[calc(100%-16px)] !max-w-none translate-y-0 flex-col gap-2 overflow-hidden rounded-t-2xl rounded-b-none p-4 sm:hidden",portalContainer:t,showCloseButton:!1,children:[(0,rE.jsx)(Wk,{className:"sr-only",children:i}),(0,rE.jsx)(WT,{className:"sr-only"}),(0,rE.jsx)($F,{className:"min-h-0",gridClassName:"max-h-none",onOpenChange:r}),(0,rE.jsx)(WB,{className:"shrink-0 p-0",children:(0,rE.jsx)(WE,{asChild:!0,children:(0,rE.jsx)(Ww,{type:"button",variant:"outline",className:"w-full",children:n("close")})})})]})})}var $Q="Progress",[$U,$z]=Ki($Q),[$j,$G]=$U($Q),$H=rx.forwardRef((e,t)=>{var r,n;let{__scopeProgress:i,value:a=null,max:s,getValueLabel:o=$q,...l}=e;(s||0===s)&&!$Y(s)&&console.error((r=`${s}`,`Invalid prop \`max\` of value \`${r}\` supplied to \`Progress\`. Only numbers greater than 0 are valid max values. Defaulting to \`100\`.`));let c=$Y(s)?s:100;null===a||$X(a,c)||console.error((n=`${a}`,`Invalid prop \`value\` of value \`${n}\` supplied to \`Progress\`. The \`value\` prop must be:
|
|
7630
|
+
`)},o.customProgramCacheKey=()=>"wall-panel-exterior-outline-v1",{mask:t,maskMaterial:r,maskModel:n,maskScene:i,material:o,resolution:a,radius:s,clearColor:new mJ}},[e]);return(0,rx.useLayoutEffect)(()=>ZH(r.material,t,{shading:!1}),[r,t]),(0,rx.useLayoutEffect)(()=>()=>{r.mask.dispose(),r.maskMaterial.dispose(),r.material.dispose()},[r]),(0,rE.jsx)("mesh",{material:r.material,frustumCulled:!1,renderOrder:3,raycast:()=>{},onBeforeRender:(t,n,i)=>{let a=t.getRenderTarget(),s=t.getActiveCubeFace(),o=t.getActiveMipmapLevel(),l=t.autoClear,c=t.getClearAlpha();t.getClearColor(r.clearColor),t.getDrawingBufferSize(r.resolution);let{x:u,y:d}=r.resolution;(r.mask.width!==u||r.mask.height!==d)&&r.mask.setSize(u,d),r.radius.value=2*t.getPixelRatio(),e.updateWorldMatrix(!0,!0),r.maskModel.matrix.copy(e.matrixWorld);try{t.autoClear=!0,t.setClearColor(0,0),t.setRenderTarget(r.mask),t.render(r.maskScene,i)}finally{t.setRenderTarget(a,s,o),t.setClearColor(r.clearColor,c),t.autoClear=l}},children:(0,rE.jsx)("planeGeometry",{args:[2,2]})})}function Z4({source:e,patch:t,isPointVisible:r,outlined:n}){let{model:i,materials:a}=(0,rx.useMemo)(()=>{let t=e.clone(!0),r=ZV(t);return{model:t,materials:r}},[e]);return(0,rx.useLayoutEffect)(()=>{let e=a.map(e=>ZH(e,t));return i.traverse(e=>{e instanceof bI&&(e.raycast=function(e,t){let n=[];bI.prototype.raycast.call(this,e,n),t.push(...n.filter(e=>!r||r(e.point)))})}),()=>e.forEach(e=>e())},[r,a,i,t]),(0,rx.useLayoutEffect)(()=>()=>a.forEach(e=>e.dispose()),[a]),(0,rE.jsxs)(rE.Fragment,{children:[(0,rE.jsx)("primitive",{object:i,dispose:null}),n&&(0,rE.jsx)(Z9,{model:i,patch:t})]})}function Z5({size:e,patch:t,isPointVisible:r,onClick:n}){let[i,a]=(0,rx.useState)(!1),s=(0,rx.useMemo)(()=>{let e=document.createElement("canvas");e.width=e.height=256;let t=e.getContext("2d");if(t.lineJoin="miter",t.lineCap="round",t.beginPath(),i)t.rect(16,16,224,224);else for(let[e,r,n,i]of[[16,16,1,1],[240,16,-1,1],[16,240,1,-1],[240,240,-1,-1]])t.moveTo(e+22*n,r),t.lineTo(e,r),t.lineTo(e,r+22*i);t.strokeStyle="rgba(255,255,255,.80)",t.lineWidth=5,t.stroke(),t.strokeStyle=i?"#59636d":"rgba(70,80,90,.60)",t.lineWidth=2,t.stroke(),t.beginPath(),t.arc(128,128,29,0,2*Math.PI),t.fillStyle=i?"#ffffff":"#f5f6f7",t.fill(),t.strokeStyle="rgba(35,45,55,.32)",t.lineWidth=2,t.stroke(),t.beginPath(),t.moveTo(117,128),t.lineTo(139,128),t.moveTo(128,117),t.lineTo(128,139),t.strokeStyle="#35414d",t.lineWidth=3,t.stroke();let r=new yH(e);return r.colorSpace="srgb",r},[i]),o=(0,rx.useMemo)(()=>new bA({map:s,transparent:!0,depthWrite:!1,toneMapped:!1}),[s]);return(0,rx.useLayoutEffect)(()=>{let e=ZH(o,t,{shading:!1});return o.alphaToCoverage=!1,e},[o,t]),(0,rx.useLayoutEffect)(()=>()=>{o.dispose(),s.dispose()},[o,s]),(0,rE.jsx)("mesh",{material:o,renderOrder:2,onPointerOver:()=>a(!0),onPointerOut:()=>a(!1),raycast:function(e,t){let n=[];bI.prototype.raycast.call(this,e,n),t.push(...n.filter(e=>!r||r(e.point)))},onPointerDown:e=>{e.stopPropagation(),e.nativeEvent.stopPropagation()},onClick:e=>{e.stopPropagation(),n()},children:(0,rE.jsx)("planeGeometry",{args:[e,e]})})}function Z8({isPointVisible:e,visible:t,dragging:r,panelKey:n,number:i,size:a,depth:s,patch:o}){let l=ZS(),{t:c}=sf(),{camera:u,gl:d}=IY(),h=(0,rx.useRef)(null),p=(0,rx.useRef)(null),f=(0,rx.useMemo)(()=>new g0,[]),A=(0,rx.useMemo)(()=>{let e=document.createElement("canvas");e.width=e.height=128;let t=e.getContext("2d");for(let e of(t.beginPath(),t.arc(64,64,61,0,2*Math.PI),t.fillStyle="#f5f6f7",t.fill(),t.strokeStyle="rgba(35,45,55,.32)",t.lineWidth=2,t.stroke(),t.fillStyle="#35414d",[40,64,88]))t.beginPath(),t.arc(e,64,5,0,2*Math.PI),t.fill();let r=new yH(e);return r.colorSpace="srgb",r},[]),g=(0,rx.useMemo)(()=>new bA({map:A,transparent:!0,depthWrite:!1,toneMapped:!1}),[A]);(0,rx.useLayoutEffect)(()=>{let e=ZH(g,o,{shading:!1});return g.alphaToCoverage=!1,e},[g,o]),(0,rx.useLayoutEffect)(()=>()=>{g.dispose(),A.dispose()},[g,A]),IX(()=>{h.current&&p.current&&(h.current.getWorldPosition(f),p.current.tabIndex=!r&&(!e||e(f))?0:-1)});let m=()=>{if(!h.current)return;f.set(.05,-.05,0),h.current.localToWorld(f).project(u);let e=d.domElement.getBoundingClientRect();l.openMenu(n,{x:e.left+(f.x+1)*e.width/2,y:e.top+(1-f.y)*e.height/2})};return(0,rE.jsxs)("group",{ref:h,position:[a/2-a/12-.05,-a/2+a/20+.05,s+.002],children:[(0,rE.jsx)("mesh",{name:"panel-actions",material:g,visible:t&&!r,renderOrder:3,raycast:function(n,i){if(!t||r)return;let a=[];bI.prototype.raycast.call(this,n,a),i.push(...a.filter(t=>t.uv&&.48>=Math.hypot(t.uv.x-.5,t.uv.y-.5)&&(!e||e(t.point))))},onPointerDown:e=>{e.stopPropagation(),e.nativeEvent.stopPropagation()},onPointerUp:e=>e.stopPropagation(),onClick:e=>{e.stopPropagation(),m()},children:(0,rE.jsx)("planeGeometry",{args:[.1,.1]})}),(0,rE.jsx)(TL,{style:{pointerEvents:"none"},children:(0,rE.jsx)("button",{ref:p,type:"button","data-panel-key":n,className:"sr-only","aria-label":c("wallPanel.panelActions",{number:i}),"aria-haspopup":"menu",onFocus:()=>l.select(n),onClick:e=>{e.stopPropagation(),m()}})})]})}function Z6({glbUrl:e,position:t,quaternion:r,materialPatch:n,isPointVisible:i,onDragStart:a,onDrag:s,onDragEnd:o}){let{data:l}=od({...Zy(e),enabled:!0,suspense:!0,throwOnError:oi,placeholderData:void 0},s2,void 0),c=ZS(),{room:u}=W8(),[d,h]=(0,rx.useState)(null),{resourceRef:p,isDragging:f,setIsDragging:A}=W7(),{gl:g}=IY(),m=f?"grabbing":d?.action?"pointer":d?"grab":"auto";(0,rx.useLayoutEffect)(()=>{let e=g.domElement.style.cursor;return g.domElement.style.cursor=m,()=>{g.domElement.style.cursor=e}},[g,m]);let v=(e,t)=>h(r=>r?.key===e&&r.action===t?r:{key:e,action:t}),b=(0,rx.useRef)(null),y=l.width,w=`${u.id}:${c.generation}`,[x,C]=(0,rx.useState)({size:y,roomKey:w,x:0,y:0});if(x.roomKey!==w)C({size:y,roomKey:w,x:0,y:0});else if(x.size!==y){let e=c.panels.reduce((e,t)=>({minX:Math.min(e.minX,t.x),maxX:Math.max(e.maxX,t.x),minY:Math.min(e.minY,t.y),maxY:Math.max(e.maxY,t.y)}),{minX:1/0,maxX:-1/0,minY:1/0,maxY:-1/0}),t=x.size-y;C({size:y,roomKey:w,x:x.x+(e.minX+e.maxX)/2*t,y:x.y+(e.minY+e.maxY)/2*t})}(0,rx.useLayoutEffect)(()=>()=>A(!1),[A]);let E=(e,t=!1)=>{let r=b.current;r&&r.pointerId===e.pointerId&&(e.stopPropagation(),b.current=null,e.target.releasePointerCapture(e.pointerId),A(!1),o(),t||r.moved||(c.select(r.key),c.closeMenu()))};return(0,rE.jsx)("group",{ref:p,position:t,quaternion:r,onPointerMissed:c.clearSelection,children:(0,rE.jsxs)("group",{position:[x.x,x.y,0],children:[c.panels.map((e,t)=>{let r=c.options.find(t=>t.material.hid===e.materialId)?.model??l;return(0,rE.jsxs)("group",{position:[e.x*y,e.y*y,0],onPointerOver:t=>{t.stopPropagation(),v(Zw(e),"panel-actions"===t.object.name)},onPointerOut:()=>h(null),onPointerDown:t=>{0===t.button&&!b.current&&(t.stopPropagation(),t.nativeEvent.stopPropagation(),b.current={x:t.clientX,y:t.clientY,key:Zw(e),moved:!1,pointerId:t.pointerId},t.target.setPointerCapture(t.pointerId),A(!0),a())},onPointerMove:t=>{v(Zw(e),"panel-actions"===t.object.name);let r=b.current;r&&r.pointerId===t.pointerId&&(t.stopPropagation(),!r.moved&&Math.hypot(t.clientX-r.x,t.clientY-r.y)>4&&(r.moved=!0,c.select(r.key),c.closeMenu()),r.moved&&s())},onPointerUp:e=>E(e),onPointerCancel:e=>E(e,!0),children:[(0,rE.jsx)(Z8,{panelKey:Zw(e),number:t+1,size:y,depth:r.depth,patch:n,isPointVisible:i,dragging:f,visible:c.selected===Zw(e)||d?.key===Zw(e)}),(0,rE.jsx)("group",{"rotation-z":-e.turns*Math.PI/2,children:(0,rE.jsx)("group",{position:r.mountingOffset,children:(0,rE.jsx)(Z4,{outlined:c.selected===Zw(e)||d?.key===Zw(e),source:r.scene,patch:n,isPointVisible:i})})})]},Zw(e))}),c.selected&&c.neighbors.map(e=>(0,rE.jsx)("group",{position:[e.x*y,e.y*y,.002],children:(0,rE.jsx)(Z5,{size:y,patch:n,isPointVisible:i,onClick:()=>c.add(e)})},Zw(e)))]})})}function Z7(e){let{glbUrl:t}=W6();return t?(0,rE.jsx)(Z6,{...e,glbUrl:t}):null}let $e={"modelled-resource":function({position:e,quaternion:t,materialPatch:r,onDrag:n,onDragEnd:i,onDragStart:a}){let{type:s}=W4(),{glbUrl:o}=W6();return o?"rotate-on-floor"===Wb[s].manipulation?(0,rE.jsx)(ZX,{glbUrl:o,position:e,quaternion:t,materialPatch:r}):(0,rE.jsx)(TC,{autoTransform:!1,onDrag:n,onDragEnd:i,onDragStart:a,children:(0,rE.jsx)(ZX,{glbUrl:o,position:e,quaternion:t,materialPatch:r})}):null},"textured-resource":function({position:e,quaternion:t,materialPatch:r,onDrag:n,onDragEnd:i,onDragStart:a}){let{src:s,setLoadError:o}=W6();return s?(0,rE.jsx)(ZR,{onError:()=>o("artwork-load-failed"),children:(0,rE.jsx)(TC,{autoTransform:!1,onDrag:n,onDragEnd:i,onDragStart:a,children:(0,rE.jsx)(Z3,{src:s,position:e,quaternion:t,materialPatch:r})})}):null}};function $t(){let{room:e}=W8(),t=IY(e=>e.scene),r=I0(xH,q1(e),e=>{e.setCrossOrigin("anonymous")});return(0,rx.useLayoutEffect)(()=>(r.colorSpace="srgb",t.background=r,()=>{t.background===r&&(t.background=null)}),[t,r]),null}function $r({plane:e,geometry:t,setPlaneRef:r}){let n={planeId:e.id,kind:e.kind};return(0,rE.jsx)("mesh",{ref:t=>r(e,t),geometry:t,userData:n,children:(0,rE.jsx)("meshBasicMaterial",{visible:!1,side:2})})}function $n(){let e,{type:t}=W4(),r=ZS(),{setLoadError:n}=W6(),i="panel-group"===(e=Wb[t]).manipulation?Z7:$e[e.identity],{room:a}=W8(),{patchSceneLoad:s}=W7(),{gl:o,size:l,camera:c,invalidate:u,raycaster:d,pointer:h}=IY(),p=(0,rx.useMemo)(()=>a.scene??qM(),[a.scene]),[f,A]=I0(xH,[p.planeIds.dataPng,p.shading?.dataPng??"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGNoaGgAAAMEAYFL09IQAAAAAElFTkSuQmCC"]),g=function({camera:e,invalidate:t,pointer:r,raycaster:n,roomId:i,scene:a,surfaces:s}){let o=`${i}:${[...s].sort().join(",")}`,l=(0,rx.useMemo)(()=>({value:null}),[]),[c,u]=(0,rx.useReducer)(Zz,o,ZU),d=(0,rx.useRef)(null),h=(0,rx.useRef)(new Map),p=(0,rx.useRef)(new Map),f=(0,rx.useRef)(null),A=c.placementKey===o,g=A?c.planeIdMap:null,m=A&&c.planeIdMapFailed,v=A?c.resourcePose:null,b=(0,rx.useMemo)(()=>a.planes.filter(e=>s.includes(e.kind)),[a,s]),y=(0,rx.useMemo)(()=>b.map(e=>e.id),[b]),w=(0,rx.useMemo)(()=>new Map(a.planes.map(e=>{let t,r;return[e.id,(t=e.polygon3D.flatMap(e=>(function(e,t){let[r,n,i]=e;return[r*(ZM(t)*(t.camera.fx/t.camera.fy)),i,-n]})(e,a)),(r=new vq).setAttribute("position",new vL(t,3)),e.polygon3D.length>=4&&r.setIndex([0,1,2,0,2,3]),r)]})),[a]),x=(0,rx.useMemo)(()=>({artifactsReady:null!==g,placementReady:null!==v,prepareReady:null!==v}),[g,v]),C=0===b.length?"no-allowed-surface":m?"plane-id-map-decode":null,E=(0,rx.useCallback)((e,t)=>{t?p.current.set(e.id,t):p.current.delete(e.id)},[]);(0,rx.useEffect)(()=>{let e=!1;return u({type:"reset-plane-id-map",placementKey:o}),ZB(a.planeIds.dataPng,a.planeIds.width,a.planeIds.height).then(t=>{if(e)return;let r=new Map;try{for(let e of a.planes)s.includes(e.kind)&&e.id>0&&r.set(e.id,function(e,t){let r=2*e.width,n=2*e.height,i=new Float32Array(r*n),a=new Float32Array(r*n),s=new Uint8Array(r*n),o=e.width,l=e.height,c=-1,u=-1;for(let r=0;r<e.height;r++)for(let n=0;n<e.width;n++)e.data[r*e.width+n]===t&&(o=Math.min(o,n),l=Math.min(l,r),c=Math.max(c,n),u=Math.max(u,r));let d=c<0?r:Math.max(0,2*o-11),h=u<0?n:Math.max(0,2*l-11),p=c<0?-1:Math.min(r-1,(c+1)*2+11),f=u<0?-1:Math.min(n-1,(u+1)*2+11);for(let n=h;n<=f;n++){let a=(n+.5)/2-.5,s=Math.floor(a),o=Z_(s,e.height-1),l=Z_(s+1,e.height-1),c=a-s;for(let a=d;a<=p;a++){let s=(a+.5)/2-.5,u=Math.floor(s),d=Z_(u,e.width-1),h=Z_(u+1,e.width-1),p=s-u,f=(e.data[o*e.width+d]===t?1-p:0)+(e.data[o*e.width+h]===t?p:0),A=(e.data[l*e.width+d]===t?1-p:0)+(e.data[l*e.width+h]===t?p:0);i[n*r+a]=f*(1-c)+A*c}}for(let e=h;e<=f;e++)for(let t=d;t<=p;t++){let n=0;for(let a=-9;a<=9;a++)n+=i[e*r+Z_(t+a,r-1)]*ZD[a+9];a[e*r+t]=n}for(let e=h;e<=f;e++)for(let t=d;t<=p;t++){let i=0;for(let s=-9;s<=9;s++)i+=a[Z_(e+s,n-1)*r+t]*ZD[s+9];s[e*r+t]=Math.round(255*i)}let A=new bU(s,r,n,1028);return A.minFilter=1006,A.magFilter=1006,A.wrapS=1001,A.wrapT=1001,A.generateMipmaps=!1,A.unpackAlignment=1,A.needsUpdate=!0,{data:s,width:r,height:n,texture:A}}(t,e.id))}catch(e){throw r.forEach(e=>e.texture.dispose()),e}h.current=r,u({type:"set-plane-id-map",placementKey:o,planeIdMap:t})}).catch(t=>{console.error(t),e||u({type:"fail-plane-id-map",placementKey:o})}),()=>{e=!0,h.current.forEach(e=>e.texture.dispose()),h.current=new Map,l.value=null}},[l,o,a.planeIds,a.planes,s]),(0,rx.useEffect)(()=>{u({type:"reset-placement",placementKey:o}),d.current=null,l.value=null,f.current=null},[l,o]);let S=(0,rx.useCallback)((r,n,i=null)=>{let a,s=ZQ(r,n,e),c=i?(a=new g0(...i).applyQuaternion(new g$(...s.quaternion)).add(new g0(...s.position)),{...s,position:a.toArray()}):s;d.current=c.activePlaneId,l.value=h.current.get(c.activePlaneId)?.texture??null,u({type:"set-resource-pose",placementKey:o,resourcePose:c}),t()},[l,e,t,o]),M=(0,rx.useCallback)(t=>g?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(ZI(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:y,camera:e,planeIdMap:g,planeMap:p.current,pointer:t,raycaster:n}):null,[y,e,g,n]);(0,rx.useEffect)(()=>{if(!g||null!==v)return;let r=function({allowedPlanes:e,camera:t,planeMap:r}){let n=e[0],i=n?r.get(n.id):null;return i?ZQ(i,function(e){let t=e.geometry.attributes.position,r=new g0;for(let e=0;e<t.count;e++)r.add(new g0(t.getX(e),t.getY(e),t.getZ(e)));return r.divideScalar(Math.max(1,t.count))}(i),t):null}({allowedPlanes:b,camera:e,planeMap:p.current});r&&(d.current=r.activePlaneId,l.value=h.current.get(r.activePlaneId)?.texture??null,u({type:"set-resource-pose",placementKey:o,resourcePose:r}),t())},[l,b,e,t,o,g,v]);let I=(0,rx.useCallback)(()=>{let t,n=M(r);if(!n||!v){f.current=null;return}let i=ZQ(n.object,n.point,e);t=new g$(...i.quaternion).invert(),f.current=new g0(...v.position).sub(new g0(...i.position)).applyQuaternion(t).toArray()},[e,M,r,v]),B=(0,rx.useCallback)(()=>{let e=M(r);e&&S(e.object,e.point,f.current)},[M,r,S]),k=(0,rx.useCallback)(()=>{f.current=null},[]),T=(0,rx.useCallback)(t=>{let r,n=d.current,i=null===n?null:h.current.get(n);if(!i)return!1;let a=t.clone().project(e),s=function(e,t,r){if(t<0||t>1||r<0||r>1)return 0;let n=t*e.width-.5,i=r*e.height-.5,a=Math.floor(n),s=Math.floor(i),o=Z_(a,e.width-1),l=Z_(s,e.height-1),c=Z_(a+1,e.width-1),u=Z_(s+1,e.height-1),d=n-Math.floor(n),h=i-Math.floor(i);return((e.data[l*e.width+o]*(1-d)+e.data[l*e.width+c]*d)*(1-h)+(e.data[u*e.width+o]*(1-d)+e.data[u*e.width+c]*d)*h)/255}(i,(a.x+1)*.5,(1-a.y)*.5);return(r=Z_((s-.4)/.29999999999999993,1))*r*(3-2*r)>.001},[e]);return{isPointerOnSurface:(0,rx.useCallback)(e=>{let t=g?ZI(e,g):null;return null!==t&&y.includes(t)},[y,g]),activeMaskTextureUniform:l,isPointVisible:T,failure:C,handleDrag:B,handleDragEnd:k,handleDragStart:I,planeGeometries:w,readiness:x,resourcePose:v,setPlaneRef:E}}({camera:c,invalidate:u,pointer:h,raycaster:d,roomId:`${a.id}:${r?.generation??0}`,scene:p,surfaces:Wb[t].surfaces});!function(e,t,r){let{gl:n}=IY(),{setRotation:i,setIsDragging:a}=W7();(0,rx.useEffect)(()=>{if(!e)return;let r=n.domElement,s=null,o=e=>{e.preventDefault(),e.stopImmediatePropagation()},l=()=>{let e=s;s=null,e&&r.hasPointerCapture(e.id)&&r.releasePointerCapture(e.id),e&&a(!1)},c=e=>{if(s)return void o(e);if(!e.isPrimary||0!==e.button)return;let n=r.getBoundingClientRect();t(new gZ((e.clientX-n.left)/n.width*2-1,1-(e.clientY-n.top)/n.height*2))&&(o(e),s={id:e.pointerId,startX:e.clientX,lastX:e.clientX,rotating:!1},r.setPointerCapture(e.pointerId),a(!0))},u=e=>{if(!s||s.id!==e.pointerId||(o(e),!s.rotating&&5>Math.abs(e.clientX-s.startX)))return;s.rotating=!0;let t=e.clientX-s.lastX;s.lastX=e.clientX,i(e=>e+.5*t)},d=e=>{s?.id===e.pointerId&&(o(e),l())};return r.addEventListener("pointerdown",c,!0),r.addEventListener("pointermove",u,!0),r.addEventListener("pointerup",d,!0),r.addEventListener("pointercancel",d,!0),r.addEventListener("lostpointercapture",d,!0),window.addEventListener("blur",l),()=>{r.removeEventListener("pointerdown",c,!0),r.removeEventListener("pointermove",u,!0),r.removeEventListener("pointerup",d,!0),r.removeEventListener("pointercancel",d,!0),r.removeEventListener("lostpointercapture",d,!0),window.removeEventListener("blur",l),l()}},[e,n,t,r,a,i])}("rotate-on-floor"===Wb[t].manipulation,g.isPointerOnSurface,a.id);let m=(0,rx.useMemo)(()=>new gZ(1,1),[]),v=(0,rx.useMemo)(()=>(function(e,t,r=128){let n=Zj(t),i=function(e,t,r=128){let{width:n,height:i}=t,a=n*i,s=Number.isFinite(r)&&r>0?r:128,o=new Uint8Array(a),l=new Float64Array(a);for(let r=0;r<i;r++)for(let a=0;a<n;a++){let c=r*n+a,u=Math.min(e.width-1,Math.floor((a+.5)*e.width/n)),d=Math.min(e.height-1,Math.floor((r+.5)*e.height/i));o[c]=e.data[(d*e.width+u)*4]??0,l[c]=(t.data[4*c]??s)/(2*s)}let c=l.slice();function u(e,t){let r=Math.ceil(3*t),s=Array.from({length:r+1},(e,r)=>Math.exp(-r*r/(2*t*t))),l=e;for(let e of[!0,!1]){let t=new Float64Array(a);for(let a=0;a<i;a++)for(let c=0;c<n;c++){let u=a*n+c,d=0,h=0;for(let t=-r;t<=r;t++){let r=e?c+t:c,p=e?a:a+t;if(r<0||r>=n||p<0||p>=i)continue;let f=p*n+r;if(o[u]!==o[f])continue;let A=s[Math.abs(t)];d+=l[f]*A,h+=A}t[u]=d/h}l=t}return l}for(let e=0;e<4;e++){let t=new Float64Array(a),r=new Float64Array(a);for(let e=0;e<a;e++)e%n<n-1&&o[e]===o[e+1]&&(t[e]=c[e+1]-c[e]),e<a-n&&o[e]===o[e+n]&&(r[e]=c[e+n]-c[e]);let i=Math.max(.5,1/2**e),s=u(t,i),d=u(r,i);for(let e=0;e<a;e++)s[e]=1/(Math.abs(s[e])+.001),d[e]=1/(Math.abs(d[e])+.001);let h=u(s,i),p=u(d,i),f=new Float64Array(a).fill(1);for(let e=0;e<a;e++)h[e]=e%n<n-1&&o[e]&&o[e]===o[e+1]?.004*h[e]/(Math.abs(t[e])+.02):0,p[e]=e<a-n&&o[e]&&o[e]===o[e+n]?.004*p[e]/(Math.abs(r[e])+.02):0,f[e]+=h[e]+p[e],h[e]&&(f[e+1]+=h[e]),p[e]&&(f[e+n]+=p[e]);let A=(e,t)=>{for(let r=0;r<a;r++){let i=f[r]*e[r];r%n&&(i-=h[r-1]*e[r-1]),r%n<n-1&&(i-=h[r]*e[r+1]),r>=n&&(i-=p[r-n]*e[r-n]),r<a-n&&(i-=p[r]*e[r+n]),t[r]=i}},g=new Float64Array(a),m=new Float64Array(a),v=new Float64Array(a);A(c,v);let b=0;for(let e=0;e<a;e++)g[e]=l[e]-v[e],m[e]=g[e]/f[e],b+=g[e]*m[e];for(let e=0;e<200&&b>1e-12;e++){A(m,v);let e=0;for(let t=0;t<a;t++)e+=m[t]*v[t];if(e<=0)break;let t=b/e,r=0;for(let e=0;e<a;e++)c[e]+=t*m[e],g[e]-=t*v[e],r+=g[e]*g[e]/f[e];let n=r/b;for(let e=0;e<a;e++)m[e]=g[e]/f[e]+n*m[e];b=r}}let d=new Float32Array(4*a);for(let e=0;e<a;e++)d.set([2*c[e],0,0,1],4*e);return d}(Zj(e),n,r),a=new Uint8Array(i.length);for(let e=0;e<i.length;e+=4)a.set([Math.max(0,Math.min(255,Math.round(128*i[e]))),0,0,255],e);let s=new bU(a,n.width,n.height,1023);return s.minFilter=1006,s.magFilter=1006,s.generateMipmaps=!1,s.needsUpdate=!0,s})(f,A,p.shading?.neutral),[f,A,p.shading?.neutral]);(0,rx.useLayoutEffect)(()=>()=>v.dispose(),[v]);let b=(0,rx.useMemo)(()=>({lightingTexture:v,viewport:m,activeMaskTextureUniform:g.activeMaskTextureUniform,maxRoomGain:1.1}),[g.activeMaskTextureUniform,v,m]);(0,rx.useLayoutEffect)(()=>{c instanceof x9&&(c.fov=p.camera.fovYDeg),c.position.set(0,0,0),c.up.set(0,0,1),c.lookAt(0,1,0),c.updateProjectionMatrix(),u()},[c,u,p.camera.fovYDeg]),(0,rx.useLayoutEffect)(()=>{o.getDrawingBufferSize(m),m.set(Math.max(1,m.x),Math.max(1,m.y))},[o,l.height,l.width,m]);let{artifactsReady:y,placementReady:w,prepareReady:x}=g.readiness,C=g.failure;return(0,rx.useEffect)(()=>{s({artifactsReady:y,placementReady:w,prepareReady:x})},[y,s,w,x]),(0,rx.useEffect)(()=>{C&&(!function({failure:e,planes:t,resourceType:r}){let n,i;(i=(n=t.map(e=>e.kind)).filter((e,t)=>n.indexOf(e)===t)).length>0&&i.join(", ")}({failure:C,planes:p.planes,resourceType:t}),n("room-load-failed"))},[C,p.planes,n,t]),(0,rE.jsxs)(rE.Fragment,{children:[g.resourcePose&&(0,rE.jsx)(i,{position:g.resourcePose.position,quaternion:g.resourcePose.quaternion,materialPatch:b,isPointVisible:g.isPointVisible,onDrag:g.handleDrag,onDragEnd:g.handleDragEnd,onDragStart:g.handleDragStart}),p.planes.map(e=>(0,rE.jsx)($r,{plane:e,geometry:g.planeGeometries.get(e.id),setPlaneRef:g.setPlaneRef},e.id)),(0,rE.jsx)(ZR,{onError:()=>n("room-load-failed"),children:(0,rE.jsx)($t,{})})]})}async function $i(e,t={}){let{client:r=Wr,...n}=t;return(await r({method:"POST",url:"/layout/GetConfig",data:e,...n})).data}let $a=["room-viewer","layout-config"],$s=[Math.PI/2,0,0];function $o(){var e;let t=od({queryKey:$a,queryFn:()=>$i(),staleTime:1/0},s2,void 0);if(t.isPending)return null;let r=(e=t.data,e?.internal?.links?.find(e=>"hdr_neutral"===e.type)?.url?.trim()||void 0);return(0,rE.jsx)(R_,{files:r?[r]:void 0,preset:r?void 0:"warehouse",environmentRotation:$s,environmentIntensity:r?.5:.9})}function $l(){return(0,rE.jsx)(R_,{files:["https://cdn.neurodyn.ai/assets/hdr/neutral.hdr"],environmentRotation:$s})}function $c({lighting:e}){return"remote-neutral-hdr"===e?(0,rE.jsx)($o,{}):(0,rE.jsx)($l,{})}function $u({ref:e,target:t}){let{camera:r,gl:n}=IY();return(0,rx.useImperativeHandle)(e,()=>({getScreenPoint(){if(!t.current)return null;let e=t.current.getWorldPosition(new g0).project(r),i=n.domElement.getBoundingClientRect();return{x:i.left+(e.x+1)*i.width/2,y:i.top+(1-e.y)*i.height/2}}}),[r,n,t]),null}let $d={position:[0,0,0],up:[0,0,1],near:.01,far:100};function $h({className:e,ref:t,captureRef:r,introductionTarget:n,focusRef:i,onSizeChange:a,...s}){let{type:o}=W4(),{glbUrl:l}=W6(),c=ZS(),u=c?.isBaseModelReady??!0,{materialSource:d}=qF(o),{room:h}=W8(),{patchSceneLoad:p}=W7(),{active:f}=RF(),A=ZM((0,rx.useMemo)(()=>h.scene??qM(),[h.scene])),g=(0,rx.useRef)(null),m=(0,rx.useRef)(!1),v=(0,rx.useCallback)(e=>{(g.current=e,"function"==typeof t)?t(e):t&&(t.current=e)},[t]),b=q6("(max-width: 639px)"),{width:y,height:w}=function(e){let t,{ref:r,box:n="content-box"}=e,[{width:i,height:a},s]=rx.useState(q7),o=(t=rx.useRef(!1),rx.useEffect(()=>(t.current=!0,()=>{t.current=!1}),[]),rx.useCallback(()=>t.current,[])),l=rx.useRef({...q7}),c=rx.useRef(void 0);return c.current=e.onResize,rx.useEffect(()=>{if(!r.current||"u"<typeof window||!("ResizeObserver"in window))return;let e=new ResizeObserver(([e])=>{let t="border-box"===n?"borderBoxSize":"device-pixel-content-box"===n?"devicePixelContentBoxSize":"contentBoxSize",r=Ke(e,t,"inlineSize"),i=Ke(e,t,"blockSize");if(l.current.width!==r||l.current.height!==i){let e={width:r,height:i};l.current.width=r,l.current.height=i,c.current?c.current(e):o()&&s(e)}});return e.observe(r.current,{box:n}),()=>{e.disconnect()}},[n,r,o]),{width:i,height:a}}({ref:g}),x=(0,rx.useMemo)(()=>{if(!y||!w||!A)return null;let e=y,t=w;return b?e=(t=w)*A:y/w>A?e=w*A:t=y/A,{width:e,height:t}},[y,w,A,b]);return(0,rx.useLayoutEffect)(()=>{x&&a?.(x.width,x.height)},[x,a]),(0,rx.useEffect)(()=>{if(!x||m.current)return;m.current=!0;let e=window.setTimeout(()=>{window.dispatchEvent(new Event("resize"))},250);return()=>{window.clearTimeout(e)}},[x]),(0,rx.useEffect)(()=>{p({layoutReady:null!==x})},[p,x]),(0,rx.useEffect)(()=>{"object-glb"===d&&p({materialReady:!!l&&u})},[l,d,u,p]),(0,rx.useEffect)(()=>{p({assetsReady:!f})},[f,p]),(0,rE.jsx)("div",{ref:v,className:Wy("size-full flex items-center justify-center sm:pt-21 sm:pb-12",e),...s,children:x&&(0,rE.jsx)(Rz,{className:"touch-none bg-transparent",frameloop:"demand",camera:$d,gl:{toneMapping:4,toneMappingExposure:1.2,alpha:!0,preserveDrawingBuffer:!0},style:{width:`${x.width}px`,height:`${x.height}px`},children:(0,rE.jsxs)(rx.Suspense,{fallback:null,children:[(0,rE.jsx)(ZT,{ref:r}),(0,rE.jsx)($c,{lighting:Wb[o].lighting}),(0,rE.jsx)($n,{}),n&&i&&(0,rE.jsx)($u,{ref:i,target:n})]})})})}function $p({captureRef:e,introduction:t,className:r,canvasWrapperClassName:n,controls:i,...a}){let s,o,l,c,{isDragging:u}=W7(),d=(0,rx.useRef)(null),h=(0,rx.useRef)(null),p=(0,rx.useRef)(null),f=(s=(0,rx.useRef)(null),o=(0,rx.useRef)(!1),l=(0,rx.useCallback)(()=>{null!==s.current&&cancelAnimationFrame(s.current),s.current=null},[]),c=(0,rx.useCallback)(()=>{t&&(l(),t.onCancel())},[t,l]),(0,rx.useEffect)(()=>{if(!t){o.current=!1;return}if(!t.ready){o.current&&t.onCancel();return}return s.current=requestAnimationFrame(()=>{let e=d.current,r=p.current?.getScreenPoint(),n=e?.instance.wrapperComponent,i=e?.instance.contentComponent;if(!e||!r||!n||!i)return void t.onCancel();let{scale:a,positionX:l,positionY:c}=e.instance.transformState,u=n.getBoundingClientRect(),h=Math.min(e.instance.setup.maxScale,1.28*a),f=(e,t,r)=>r<t?(t-r)/2:Math.max(t-r,Math.min(0,e)),A=f(u.width/2-(r.x-u.left-l)/a*h,u.width,i.offsetWidth*h),g=f(u.height/2-(r.y-u.top-c)/a*h,u.height,i.offsetHeight*h);o.current=!0;let m=window.matchMedia("(prefers-reduced-motion: reduce)").matches,v=performance.now(),b=r=>{let n=m?1:Math.min(1,(r-v)/700),i=(1-Math.cos(Math.PI*n))/2;e.setTransform(l+(A-l)*i,c+(g-c)*i,a+(h-a)*i,0),n<1?s.current=requestAnimationFrame(b):(s.current=null,t.onComplete())};b(v)}),()=>{l()}},[p,t,l,d]),c),A=q6("(max-width: 639px)"),g=(0,rx.useRef)(!!t);g.current=!!t;let m=(0,rx.useCallback)(()=>{A&&d.current?.centerView(void 0,g.current?0:void 0)},[A]);return(0,rE.jsxs)("div",{className:Wy("relative flex items-center justify-center overflow-hidden",r),...a,onPointerDownCapture:e=>{f(),a.onPointerDownCapture?.(e)},onTouchStartCapture:e=>{f(),a.onTouchStartCapture?.(e)},onWheelCapture:e=>{f(),a.onWheelCapture?.(e)},children:[(0,rE.jsx)(gd,{ref:d,disabled:u,children:(0,rE.jsx)(gh,{wrapperClass:"neurodyn-rzpp-wrapper size-full!",contentClass:"neurodyn-rzpp-content h-full! min-w-full sm:max-w-full",children:(0,rE.jsx)($h,{captureRef:e??h,introductionTarget:t?.target,focusRef:p,className:n,onSizeChange:m})})}),i]})}function $f({...e}){return(0,rE.jsx)(hK,{"data-slot":"popover",...e})}function $A({...e}){return(0,rE.jsx)(hX,{"data-slot":"popover-trigger",...e})}function $g({className:e,align:t="center",sideOffset:r=4,portalContainer:n,...i}){return(0,rE.jsx)(h1,{container:n,children:(0,rE.jsx)(h3,{"data-slot":"popover-content",align:t,sideOffset:r,className:Wy("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 $m({className:e,defaultValue:t,value:r,min:n=0,max:i=100,variant:a="default","aria-label":s,"aria-labelledby":o,...l}){let c=rx.useMemo(()=>Array.isArray(r)?r:Array.isArray(t)?t:[n],[r,t,n]);return(0,rE.jsxs)(pd,{"data-slot":"slider",defaultValue:t,value:r,min:n,max:i,"data-variant":a,"aria-label":s,"aria-labelledby":o,className:Wy("relative flex w-full touch-none cursor-pointer items-center select-none data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col",e),...l,children:[(0,rE.jsx)(pv,{"data-slot":"slider-track",className:Wy("relative grow overflow-hidden rounded-full data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5","editor"===a?"bg-border-light data-[orientation=horizontal]:h-0.5":"bg-muted data-[orientation=horizontal]:h-1.5"),children:(0,rE.jsx)(py,{"data-slot":"slider-range",className:Wy("absolute data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full","editor"===a?"bg-background-blue":"bg-primary")})}),Array.from({length:c.length},(e,t)=>(0,rE.jsx)(px,{"data-slot":"slider-thumb","aria-label":s,"aria-labelledby":o,className:Wy("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 $v=/oklch\(([0-9.]+)\s+([0-9.]+)\s+([0-9.]+)\)/;function $b(e,t){let r=e.match($v);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 $y({data:e,foreground:t,background:r,robustness:n="M",className:i,...a}){let[s,o]=(0,rx.useState)(null);return((0,rx.useEffect)(()=>{(async()=>{try{let i=getComputedStyle(document.documentElement),a=t??i.getPropertyValue("--foreground"),s=r??i.getPropertyValue("--background"),l=$b(a,[.21,.006,285.885]),c=$b(s,[.985,0,0]),u=await Lr.toString(e,{type:"svg",color:{dark:Le(Lt({mode:"oklch",...l})),light:Le(Lt({mode:"oklch",...c}))},width:200,errorCorrectionLevel:n,margin:0});o(u)}catch(e){console.error(e)}})()},[e,t,r,n]),s)?(0,rE.jsx)("div",{className:Wy("size-full","[&_svg]:size-full",i),dangerouslySetInnerHTML:{__html:s},...a}):null}let $w=new F0,$x=$w.getDevice(),$C=$w.getOS(),$E="iOS"===$C.name,$S="Android"===$C.name,$M="mobile"===$x.type;function $I({className:e,buttonClassName:t,buttonLeadingIcon:r,buttonLabel:n,buttonSize:i,buttonVariant:a="contrast",...s}){let{type:o,width:l,height:c,name:u}=W4(),{handoff:d}=Wb[o],{src:h,tinuuid:p,widgetSession:f}=W6(),{containerRef:A,resourceRef:g}=W7(),{t:m,i18n:v}=sf(),b=function(){let{i18n:e}=sf();return"ru"===(e.resolvedLanguage??e.language)?"arizo":"vizbl"}(),[y,w]=(0,rx.useState)(""),[x,C]=(0,rx.useState)(""),[E,S]=(0,rx.useState)(()=>f?.token),[M,I]=(0,rx.useState)(!1),[B,k]=(0,rx.useState)(!1),T=(0,rx.useRef)(null),R=v.resolvedLanguage??v.language,D=qE[b],P=(0,rx.useMemo)(()=>(function({height:e,language:t,name:r,src:n,tenantConfig:i,tinuuid:a,handoff:s,type:o,width:l,widgetSessionToken:c,pageUrl:u}){if(!s)return null;if("floor"===s.destination&&a){let e=new URL(i.ROOM_URL);return e.searchParams.set("type",o),e.searchParams.set("tinuuid",a),e.searchParams.set("name",r),e.searchParams.set("language",t),c&&e.searchParams.set("widgetSessionToken",c),e.toString()}let d=new URL(i.POSTER_URL);return n&&d.searchParams.set("texture",function(e,t){if(!t||/^[a-z][a-z0-9+.-]*:/i.test(e)||e.startsWith("//"))return e;try{return new URL(e,t).href}catch{return e}}(n,u)),d.searchParams.set("texture_width",(100*l).toString()),d.searchParams.set("texture_height",(100*e).toString()),c&&d.searchParams.set("widgetSessionToken",c),d.toString()})({height:c,language:R,name:u,src:h,tenantConfig:D,tinuuid:p,handoff:d,type:o,width:l,widgetSessionToken:E,pageUrl:"u"<typeof window?void 0:window.location.href}),[h,p,d,o,l,c,u,R,D,E]),_=(0,rx.useMemo)(()=>{if(!p)return null;let e=new URL("https://appclip.apple.com/id");return e.searchParams.set("p","com.us.vizbl.Clip"),e.searchParams.set("tinuuid",p),e.toString()},[p]);async function L(){S(await f?.getTokenForRequest().catch(()=>f.token))}let N=async()=>{if(d?.ar==="appclip"){if(!p)return;if($E&&_){Wu(f,"appclip"),window.location.assign(_);return}await L(),I(!0);return}let e=T.current,t=g.current;if(e&&t)if(e.canActivateAR)try{k(!0);let e=t.clone(!0);if(e.position.set(0,0,0),e.quaternion.identity(),e.updateMatrix(),e.updateMatrixWorld(!0),$E){let t=new Nh,r=await t.parseAsync(e,{ar:{anchoring:{type:"plane"},planeAnchoring:{alignment:"vertical"}}}),n=new File([r],"scene.usdz",{type:"model/vnd.usdz+zip"});w(URL.createObjectURL(n))}else{let t=new Li,r=await t.parseAsync(e,{binary:!0}),n=new File([r],"scene.glb",{type:"model/gltf-binary"});C(URL.createObjectURL(n))}}finally{k(!1)}else await L(),I(!0)};return((0,rx.useEffect)(()=>((""!==y||""!==x)&&T.current?.activateAR(),()=>{""!==y&&URL.revokeObjectURL(y),""!==x&&URL.revokeObjectURL(x)}),[y,x]),!d||$S&&$M||"floor"===d.destination&&!p)?null:(0,rE.jsxs)("div",{className:Wy(e),...s,children:[(0,rE.jsxs)(Wx,{variant:a,size:i,disabled:B,onClick:N,className:t,children:[r,n??m("ar.viewInPlace")]}),(0,rE.jsx)(WC,{open:M,onOpenChange:I,children:(0,rE.jsxs)(WI,{className:"gap-6 sm:max-w-120",showCloseButton:!1,portalContainer:A,children:[(0,rE.jsx)("div",{className:"flex items-center justify-center p-10 bg-constant-white rounded-2xl",children:(0,rE.jsx)($y,{className:"size-48",robustness:"H",data:P??""})}),(0,rE.jsx)("p",{className:"text-lg text-center text-text-sub font-medium",children:m("ar.scanQrCode")}),(0,rE.jsxs)("p",{className:"text-xs text-center text-text-light",children:[m("ar.deviceRequirementsDisclaimer"),(0,rE.jsx)("br",{}),(0,rE.jsx)("a",{href:D.TERMS_URL,target:"_blank",rel:"noopener noreferrer",className:"underline underline-offset-2 transition-colors duration-300 hover:text-text-dark",style:{textDecoration:"underline",textUnderlineOffset:"2px"},children:m("legal.termsOfUse")})," ",m("legal.conjunction")," ",(0,rE.jsx)("a",{href:D.PRIVACY_URL,target:"_blank",rel:"noopener noreferrer",className:"underline underline-offset-2 transition-colors duration-300 hover:text-text-dark",style:{textDecoration:"underline",textUnderlineOffset:"2px"},children:m("legal.privacyPolicy")})]}),(0,rE.jsx)(WS,{asChild:!0,children:(0,rE.jsx)(Wx,{variant:"contrast",size:"lg",children:m("close")})})]})}),(0,rE.jsx)("model-viewer",{ref:T,className:"fixed w-px h-px opacity-0 pointer-events-none",src:x,iosSrc:y,reveal:"manual",ar:!0,cameraControls:!0,arPlacement:"wall",arModes:"webxr",arScale:"fixed",shadowIntensity:1,interactionPromptThreshold:100})]})}async function $B(e){await navigator.clipboard.writeText(e)}function $k({captureRef:e,fallbackToClipboard:t=!1,fileName:r="room-scene.png",shareMessage:n}){let[i,a]=(0,rx.useState)(!1),[s,o]=(0,rx.useState)(!1),l=(0,rx.useMemo)(()=>"u">typeof navigator&&"function"==typeof navigator.share||t&&"u">typeof navigator&&"function"==typeof navigator.clipboard?.writeText,[t]),c=(0,rx.useCallback)(async()=>{if(!l)return;let i="u">typeof navigator&&"function"==typeof navigator.share,s=window.location.href,o=`${n}
|
|
7631
|
+
${s}`;a(!0);try{if(!i&&t)return void await $B(o);let n=e.current;if(n)try{let e=await n.capture(),t=new File([e],r,{type:e.type||"image/png"});if(navigator.canShare?.({files:[t]}))return void await navigator.share({text:o,files:[t]})}catch(e){console.error("Failed to generate scene screenshot for sharing",e)}await navigator.share({text:o,url:s})}catch(e){e instanceof DOMException&&"AbortError"===e.name||console.error("Failed to share scene",e)}finally{a(!1)}},[l,e,t,r,n]);return{canShare:l,download:(0,rx.useCallback)(async()=>{let t=e.current;if(t){o(!0);try{var n;let e,i;n=await t.capture(),e=URL.createObjectURL(n),(i=document.createElement("a")).href=e,i.download=r,document.body.append(i),i.click(),i.remove(),URL.revokeObjectURL(e)}catch(e){console.error("Failed to download scene screenshot",e)}finally{o(!1)}}},[e,r]),isDownloading:s,isSharing:i,share:c}}function $T({captureRef:e}){let{type:t}=W4(),{containerRef:r,angle:n,rotation:i,setAngle:a,setRotation:s}=W7(),{t:o}=sf(),l=q6("(max-width: 639px)"),{canShare:c,isSharing:u,share:d}=$k({captureRef:e,shareMessage:o(`shareMessage.${t}`)});return(0,rE.jsxs)(rE.Fragment,{children:[(0,rE.jsx)($I,{className:"absolute bottom-4 left-4 sm:bottom-6 sm:left-6"}),(0,rE.jsxs)("div",{className:"absolute right-4 bottom-4 inline-flex items-center gap-2 sm:right-6 sm:bottom-6",children:[(0,rE.jsxs)($f,{children:[(0,rE.jsx)($A,{asChild:!0,children:(0,rE.jsxs)(Wx,{variant:"contrast",size:l?"icon":"default",children:[(0,rE.jsx)(WG,{className:"size-5"}),(0,rE.jsx)("span",{className:"sr-only sm:not-sr-only",children:o("scene.tunePosition")})]})}),(0,rE.jsx)($g,{className:"px-3 py-3.5 bg-button-dark border-button-dark text-text-white",side:"top",align:"end",portalContainer:r,children:(0,rE.jsxs)(qr,{children:[(0,rE.jsxs)(qi,{orientation:"horizontal",children:[(0,rE.jsx)(qs,{children:o("scene.rotation")}),(0,rE.jsx)($m,{value:[i],onValueChange:([e])=>s(e??0),min:-180,max:180,step:1,className:"w-40.5 **:data-[slot=slider-range]:bg-transparent **:data-[slot=slider-thumb]:border-background-base-3 **:data-[slot=slider-thumb]]:bg-background-base-3 **:data-[slot=slider-track]:bg-icons-normal","aria-label":o("scene.rotation")})]}),(0,rE.jsxs)(qi,{orientation:"horizontal",children:[(0,rE.jsx)(qs,{children:o("scene.angle")}),(0,rE.jsx)($m,{value:[n],onValueChange:([e])=>a(e??0),max:75,min:-75,step:1,className:"w-40.5 **:data-[slot=slider-range]:bg-transparent **:data-[slot=slider-thumb]:border-background-base-3 **:data-[slot=slider-thumb]]:bg-background-base-3 **:data-[slot=slider-track]:bg-icons-normal","aria-label":o("scene.angle")})]})]})})]}),(0,rE.jsxs)(Wx,{variant:"contrast",size:l?"icon":"default",disabled:!c||u,onClick:d,children:[(0,rE.jsx)(WW,{className:"size-5"}),(0,rE.jsx)("span",{className:"sr-only sm:not-sr-only",children:o("scene.share")})]}),l&&(0,rE.jsxs)($f,{children:[(0,rE.jsx)($A,{asChild:!0,children:(0,rE.jsx)(Wx,{variant:"contrast",size:"icon",children:(0,rE.jsx)(WH,{})})}),(0,rE.jsxs)($g,{className:"grid gap-5",portalContainer:r,children:[(0,rE.jsx)(qU,{}),(0,rE.jsx)(qX,{})]})]})]})]})}function $R({variant:e,open:t,portalContainer:r,showDialogCloseButton:n=!1,onOpenChange:i,onTryAgain:a,onCancel:s}){let{t:o}=sf(),l=e?o("custom-interior-processing"===e?"floor.error.processingBody":"viewer-load-failed"===e?"floor.error.loadBody":"artwork-load-failed"===e||"room-load-failed"===e?`loadError.${e}`:`accessError.${e}`):"";return(0,rE.jsx)(WC,{open:t,onOpenChange:i,children:(0,rE.jsxs)(WI,{portalContainer:r,showCloseButton:!1,className:"w-full max-w-85 gap-4 rounded-2xl p-6 text-center sm:max-w-85 sm:p-6",onInteractOutside:e=>{e.preventDefault()},children:[(0,rE.jsxs)("div",{className:"grid gap-1",children:[(0,rE.jsx)(WT,{children:o("floor.error.title")}),(0,rE.jsx)(WR,{className:"typo-base-14 font-medium text-text-base",children:l})]}),(0,rE.jsxs)("div",{className:"grid gap-2",children:[a&&(0,rE.jsxs)(Wx,{variant:"contrast",onClick:a,children:[(0,rE.jsx)(WO,{"aria-hidden":"true"}),o("floor.error.tryAgain")]}),s&&(0,rE.jsx)(Wx,{variant:"outline",onClick:s,children:o("floor.error.cancel")}),n&&(0,rE.jsx)(WS,{asChild:!0,children:(0,rE.jsx)(Wx,{variant:"outline",children:o("close")})})]})]})})}function $D({rooms:e,customRooms:t,selectedRoomId:r,isInvalidFile:n,uploadRetryRequestId:i=0,showCloseButton:a=!1,onSelectRoom:s,onUploadFile:o}){let l,{t:c}=sf(),u=(0,rx.useId)(),d=(0,rx.useRef)(null);function h(e){return e.map(e=>(0,rE.jsxs)("button",{type:"button",className:"group relative aspect-[4/3] overflow-hidden rounded-2xl bg-background-base text-left transition focus-visible:ring-2 focus-visible:ring-icons-normal focus-visible:outline-hidden","aria-pressed":e.id===r,onClick:()=>s(e.id),children:[(0,rE.jsx)("img",{crossOrigin:"anonymous",src:q1(e),alt:"",decoding:"async",className:"size-full scale-[1.02] transform-gpu object-cover transition duration-200 group-hover:scale-105"}),(0,rE.jsx)("span",{className:"typo-base-12 absolute inset-x-0 bottom-0 truncate bg-linear-to-t from-black/45 via-black/10 to-transparent px-3 py-2 text-constant-white",children:c(`rooms.${e.id}`,{defaultValue:e.name})})]},e.id))}return(0,rx.useEffect)(()=>{i>0&&d.current?.click()},[i]),(0,rE.jsxs)("section",{"aria-labelledby":"floor-interior-selection-title",className:"relative mx-auto grid h-auto min-h-0 max-h-[calc(100svh-8px)] w-full max-w-151 grid-rows-[auto_auto_minmax(0,1fr)_auto] gap-4 overflow-hidden rounded-t-2xl rounded-b-none bg-background-containers p-4 shadow-[var(--shadow-login)] sm:my-4 sm:max-h-[calc(100svh-32px)] sm:rounded-2xl sm:p-6","data-testid":"floor-interior-selection-panel","data-room-selection-panel":!0,children:[a&&(l=(0,rE.jsx)(Wx,{type:"button",variant:"outline",size:"icon",className:"absolute top-4 right-4 sm:top-6 sm:right-6","aria-label":c("close"),"data-testid":"floor-interior-selection-icon-close",children:(0,rE.jsx)(WL,{})}),(0,rE.jsx)(WS,{asChild:!0,children:l})),(0,rE.jsx)("h2",{id:"floor-interior-selection-title",className:"typo-base-16 font-medium sm:typo-base-18 text-text-dark",children:c("floor.interiorSelection.title")}),(0,rE.jsxs)("div",{className:"grid gap-2","data-testid":"floor-interior-selection-upload",children:[(0,rE.jsxs)("label",{htmlFor:u,className:"flex min-h-15 cursor-pointer items-center justify-center gap-2 rounded-xl border border-dashed border-background-blue bg-background-blue-transparent px-4 text-center typo-button-normal text-background-blue opacity-80 transition hover:bg-background-blue-transparent/80",onDragOver:e=>e.preventDefault(),onDrop:function(e){e.preventDefault();let t=e.dataTransfer.files[0];t&&o(t)},children:[(0,rE.jsx)(WP,{className:"size-5 text-background-blue"}),c("floor.interiorSelection.uploadPhoto"),(0,rE.jsx)("input",{ref:d,id:u,type:"file",accept:"image/*",className:"sr-only",onChange:function(e){let t=e.target.files?.[0];e.target.value="",t&&o(t)}})]}),n&&(0,rE.jsx)("p",{className:"typo-base-12 font-medium text-destructive",children:c("floor.interiorSelection.invalidFile")})]}),(0,rE.jsx)("div",{className:"grid min-h-0 overflow-y-auto overflow-x-hidden overscroll-contain pr-1 [scrollbar-width:none] [-ms-overflow-style:none] [&::-webkit-scrollbar]:hidden","data-testid":"floor-interior-selection-scroll-content",children:(0,rE.jsxs)("div",{className:"grid min-h-max gap-4",children:[t.length>0&&(0,rE.jsxs)("div",{className:"grid gap-3",children:[(0,rE.jsx)("h3",{className:"typo-base-16 font-medium text-text-light",children:c("floor.interiorSelection.customTitle")}),(0,rE.jsx)("div",{className:"grid grid-cols-2 gap-3 sm:grid-cols-3","data-testid":"floor-custom-interior-selection-grid",children:h(t)})]}),(0,rE.jsxs)("div",{className:"grid gap-3",children:[(0,rE.jsx)("h3",{className:"typo-base-16 font-medium text-text-light",children:c("floor.interiorSelection.presetsTitle")}),(0,rE.jsx)("div",{className:"grid grid-cols-2 gap-3 sm:grid-cols-3","data-testid":"floor-preset-interior-selection-grid",children:h(e)})]})]})}),a&&(0,rE.jsx)(Wk,{className:"-mt-2 shrink-0 p-0 sm:mt-0",children:(0,rE.jsx)(WS,{asChild:!0,children:(0,rE.jsx)(Wx,{variant:"outline",className:"w-full",children:c("close")})})})]})}function $P(e){return(0,rE.jsx)("div",{className:"absolute inset-0 z-20 grid items-end p-0 sm:items-center sm:p-4","data-testid":"floor-interior-selection-overlay",children:(0,rE.jsx)($D,{...e})})}function $_({open:e,showCloseButton:t=!0,portalContainer:r,onOpenChange:n,...i}){let{t:a}=sf();return(0,rE.jsx)(WC,{open:e,onOpenChange:n,children:(0,rE.jsxs)(WI,{contentInsideOverlay:!0,portalContainer:r,showCloseButton:!1,"data-testid":"floor-interior-selection-overlay",className:"top-auto bottom-0 grid max-h-[calc(100svh-8px)] w-[calc(100%-16px)] min-w-0 max-w-none translate-y-0 overflow-hidden rounded-t-2xl rounded-b-none border-none bg-transparent p-0 shadow-none sm:top-[50%] sm:bottom-auto sm:w-full sm:max-w-none sm:translate-y-[-50%] sm:rounded-none sm:p-4",children:[(0,rE.jsx)(WT,{className:"sr-only",children:a("floor.interiorSelection.title")}),(0,rE.jsx)(WR,{className:"sr-only"}),(0,rE.jsx)($D,{...i,showCloseButton:t})]})})}let $L="data-material-selection-action",$N="data-material-selection-panel";function $F(){let{t:e}=sf(),{type:t}=W4();return e(`floor.materialSelection.${Wb[t].catalogTitle}`)}function $O({className:e,gridClassName:t,titleClassName:r,onOpenChange:n,...i}){let a=$F(),s=(0,rx.useRef)(null),{fetchNextMaterialsPage:o,hasNextPage:l,isFetchingNextPage:c,isLoading:u,materialItems:d,selectMaterial:h,selectedMaterialId:p}=function({includeEmbeddedObject:e=!1}={}){var t;let{material:r,tinuuid:n,embeddedObject:i,selectedObject:a,setMaterial:s,setTinuuid:o,apiKey:l,baseURL:c,source:u,widgetSession:d,setAccessError:h,setLoadError:p}=W6(),{type:f,name:A}=W4(),g=i?.owner?.uuid,{data:m,error:v,isFetchingNextPage:b,fetchNextPage:y,hasNextPage:w,isLoading:x}=od({queryKey:["room-viewer","public-objects",{apiKey:(t={apiKey:l,baseURL:c,source:u,resourceType:f}).apiKey??null,ownerUuid:g??null,resourceType:t.resourceType??null,source:t.source}],enabled:!!g,queryFn:({pageParam:e,signal:t})=>{if(!g)throw Error("Owner uuid is required.");return WA(g,e,{apiKey:l,baseURL:c,signal:t,source:u,widgetSession:d,resourceType:f})},initialPageParam:1,getNextPageParam:(e,t,r)=>void 0!==e.pages_count?r<e.pages_count?r+1:void 0:e.objs?.length?r+1:void 0,getPreviousPageParam:(e,t,r)=>r>1?r-1:void 0},ou,void 0),{requiresMaterialModel:C}=qF(f),{getCollapseKey:E}=qL(f),{catalogsEveryMaterial:S}=q_[Wb[f].materialRole],{composition:M,productNameSource:I}=Wb[f],B=(0,rx.useMemo)(()=>m?.pages.flatMap(e=>e.objs??[])??[],[m]),k=(0,rx.useMemo)(()=>"material"===I?[]:B.filter(e=>e.tinuuid&&(!e.kit?.uuid||!e.kit.name?.trim())&&(!C||e.materials?.[0]?.native?.glbUrl)),[B,I,C]),T=oc({queries:k.map(e=>({queryKey:Wh(e.tinuuid,{apiKey:l,baseURL:c,source:u,resourceType:f}),queryFn:({signal:t})=>Wf(e.tinuuid,{apiKey:l,baseURL:c,signal:t,source:u,widgetSession:d,resourceType:f})}))}),R=B.flatMap(e=>{let t=T[k.indexOf(e)];return t?.isPending||t?.isError?[]:[{...e,kit:t?.data?.kit?{...e.kit,...t.data.kit}:e.kit}]}),D=(0,rx.useMemo)(()=>{let t={requiresMaterialModel:C,getCollapseKey:E};if(e)return qT([...i?.tinuuid&&i.materials?.[0]?[i]:[],...R],null,t);return qT(R,i,t)},[i,R,E,e,C]),P=(0,rx.useMemo)(()=>D.flatMap(e=>{if(!e.tinuuid)return[];let t="color-design"===M&&e.kit?.uuid,r=S&&!t?e.materials:e.materials?.slice(0,1);return r?.map(t=>{let r=qQ(t);return r&&e.tinuuid?{materialId:r,productName:qO(f,e,t,A),material:t,tinuuid:e.tinuuid}:null}).filter(e=>null!==e)??[]}),[S,M,D,f,A]),_="color-design"===M&&a?.tinuuid===n&&a?.kit?.uuid?D.find(e=>E(e)===E(a)):void 0,L=_?.tinuuid!==n&&_?qQ(_.materials?.[0]??{}):r?qQ(r):"",N=v??T.find(e=>e.error)?.error,F=D.find(e=>e.tinuuid===n),O=D.find(e=>e.tinuuid&&e.materials?.[0]);(0,rx.useEffect)(()=>{let e=VO(N);e?h(e):N&&p("viewer-load-failed")},[N,h,p]),(0,rx.useEffect)(()=>{m&&0===D.length&&w&&!b&&y()},[m,y,w,b,D.length]),(0,rx.useEffect)(()=>{if(null!==r)return;let e=F??O,t=e?.materials?.[0];e&&t&&e.tinuuid&&(s(t),o(e.tinuuid))},[O,F,r,s,o]);let Q=(0,rx.useCallback)(()=>{!1===w||b||y()},[y,w,b]),U=(0,rx.useCallback)(e=>{let t=D.find(t=>t.materials?.some(t=>qQ(t)===e)),r=t?.materials?.find(t=>qQ(t)===e);return!!t&&!!r&&!!t.tinuuid&&(s(r),o(t.tinuuid),!0)},[D,s,o]);return{fetchNextMaterialsPage:Q,hasNextPage:w,isFetchingNextPage:b,isLoading:x||T.some(e=>e.isPending),materialItems:P,selectMaterial:U,selectedMaterialId:L}}({includeEmbeddedObject:!0});(0,rx.useEffect)(()=>{let e=s.current;e&&!u&&!c&&l&&0!==d.length&&e.scrollHeight<=e.clientHeight&&o()},[o,l,c,u,d.length]);let f=(0,rx.useCallback)(e=>{let{clientHeight:t,scrollHeight:r,scrollTop:n}=e.currentTarget;n+t>=r-64&&o()},[o]),A=(0,rx.useCallback)(e=>{h(e)&&n(!1)},[n,h]);return(0,rE.jsxs)("div",{...i,className:Wy("flex min-h-0 flex-col gap-3 overflow-hidden text-text-dark outline-none",e),"data-testid":"material-selection-panel",onPointerDownCapture:e=>{e.stopPropagation(),i.onPointerDownCapture?.(e)},onMouseDownCapture:e=>{e.stopPropagation(),i.onMouseDownCapture?.(e)},children:[(0,rE.jsx)("h2",{className:Wy("typo-base-16 font-medium sm:typo-base-14 sm:font-semibold text-text-dark",r),children:a}),(0,rE.jsx)("div",{"data-testid":"material-selection-grid",ref:s,className:Wy("min-h-0 flex-1 overflow-y-auto overflow-x-hidden overscroll-contain pr-1 [scrollbar-width:none] [-ms-overflow-style:none] [&::-webkit-scrollbar]:hidden",t),onScroll:f,children:(0,rE.jsxs)("div",{className:"grid min-h-max grid-cols-3 gap-x-2 gap-y-2","data-testid":"material-selection-grid-items",children:[d.map(({materialId:e,material:t,tinuuid:r,productName:n})=>{let i,a=e===p,s=(i=t.previews?.[0],i?.subRes?.small??i?.url);return(0,rE.jsxs)("button",{type:"button","data-selected":a,"aria-pressed":a,className:"group flex min-w-0 flex-col gap-1 rounded-lg bg-background-containers text-left focus-visible:ring-2 focus-visible:ring-icons-normal focus-visible:outline-hidden",onClick:()=>A(e),onKeyDown:t=>{("Enter"===t.key||" "===t.key)&&(t.preventDefault(),A(e))},children:[(0,rE.jsxs)("span",{className:"relative grid aspect-square w-full shrink-0 place-items-center overflow-hidden rounded-lg border border-border p-1 transition group-hover:border-icons-normal",children:[s?(0,rE.jsx)("img",{src:s,alt:"",className:"size-full rounded-md object-cover"}):(0,rE.jsx)(WU,{className:"size-6 text-icons-normal"}),a&&(0,rE.jsx)("span",{className:"absolute top-1 right-1 grid size-6 place-items-center rounded-full bg-icons-blue text-icons-white","data-testid":"material-selection-selected-check",children:(0,rE.jsx)(W_,{className:"size-4"})})]}),(0,rE.jsx)("span",{className:"typo-base-12 line-clamp-3 w-full wrap-anywhere text-text-base",children:n})]},`${r}-${e}`)}),(u||c)&&(0,rE.jsx)("div",{className:"col-span-3 grid h-16 place-items-center",children:(0,rE.jsx)(WJ,{className:"size-6"})})]})})]})}function $Q({open:e,portalContainer:t,onOpenChange:r}){let{t:n}=sf(),i=$F();return(0,rE.jsx)(WC,{open:e,onOpenChange:r,children:(0,rE.jsxs)(WI,{contentInsideOverlay:!0,"data-testid":"material-selection-mobile-overlay","data-material-selection-panel":"",className:"top-auto bottom-0 flex max-h-[calc(100svh-8px)] w-[calc(100%-16px)] !max-w-none translate-y-0 flex-col gap-2 overflow-hidden rounded-t-2xl rounded-b-none p-4 sm:hidden",portalContainer:t,showCloseButton:!1,children:[(0,rE.jsx)(WT,{className:"sr-only",children:i}),(0,rE.jsx)(WR,{className:"sr-only"}),(0,rE.jsx)($O,{className:"min-h-0",gridClassName:"max-h-none",onOpenChange:r}),(0,rE.jsx)(Wk,{className:"shrink-0 p-0",children:(0,rE.jsx)(WS,{asChild:!0,children:(0,rE.jsx)(Wx,{type:"button",variant:"outline",className:"w-full",children:n("close")})})})]})})}var $U="Progress",[$z,$j]=Ka($U),[$G,$H]=$z($U),$V=rx.forwardRef((e,t)=>{var r,n;let{__scopeProgress:i,value:a=null,max:s,getValueLabel:o=$K,...l}=e;(s||0===s)&&!$X(s)&&console.error((r=`${s}`,`Invalid prop \`max\` of value \`${r}\` supplied to \`Progress\`. Only numbers greater than 0 are valid max values. Defaulting to \`100\`.`));let c=$X(s)?s:100;null===a||$Z(a,c)||console.error((n=`${a}`,`Invalid prop \`value\` of value \`${n}\` supplied to \`Progress\`. The \`value\` prop must be:
|
|
7632
7632
|
- a positive number
|
|
7633
7633
|
- less than the value passed to \`max\` (or 100 if no \`max\` prop is set)
|
|
7634
7634
|
- \`null\` or \`undefined\` if the progress is indeterminate.
|
|
7635
7635
|
|
|
7636
|
-
Defaulting to \`null\`.`));let u=$X(a,c)?a:null,d=$J(u)?o(u,c):void 0;return(0,rE.jsx)($j,{scope:i,value:u,max:c,children:(0,rE.jsx)(Kl.div,{"aria-valuemax":c,"aria-valuemin":0,"aria-valuenow":$J(u)?u:void 0,"aria-valuetext":d,role:"progressbar","data-state":$K(u,c),"data-value":u??void 0,"data-max":c,...l,ref:t})})});$H.displayName=$Q;var $V="ProgressIndicator",$W=rx.forwardRef((e,t)=>{let{__scopeProgress:r,...n}=e,i=$G($V,r);return(0,rE.jsx)(Kl.div,{"data-state":$K(i.value,i.max),"data-value":i.value??void 0,"data-max":i.max,...n,ref:t})});function $q(e,t){return`${Math.round(e/t*100)}%`}function $K(e,t){return null==e?"indeterminate":e===t?"complete":"loading"}function $J(e){return"number"==typeof e}function $Y(e){return $J(e)&&!isNaN(e)&&e>0}function $X(e,t){return $J(e)&&!isNaN(e)&&e<=t&&e>=0}function $Z({className:e,value:t,max:r=100,...n}){let i=r>0?r:100,a="number"==typeof t?Math.min(Math.max(t/i*100,0),100):0;return(0,rE.jsx)($H,{"data-slot":"progress",className:Wb("relative h-2 w-full overflow-hidden rounded-full bg-primary/20",e),value:t,max:i,...n,children:(0,rE.jsx)($W,{"data-slot":"progress-indicator",className:"h-full bg-primary transition-[width]",style:{width:`${a}%`}})})}$W.displayName=$V;let $$=[{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 $0({isComplete:e,open:t,onCloseAnimationEnd:r,onOpenChange:n,portalContainer:i}){let{t:a}=sf(),s=(0,rx.useRef)(t),[o,l]=(0,rx.useState)(8),c=e?100:o,u=function(e){for(let t=$$.length-1;t>=0;t-=1){let r=$$[t];if(r&&e>=r.minimumProgress)return r}return $$[0]}(c);(0,rx.useEffect)(()=>{t&&!s.current&&l(8),s.current=t},[t]),(0,rx.useEffect)(()=>{if(!t||e)return;let r=window.setInterval(()=>{l(e=>Math.min(92,e+Math.max(2,Math.round((92-e)/8))))},650);return()=>window.clearInterval(r)},[e,t]);let d=(0,rE.jsxs)("div",{role:"status","aria-live":"polite",className:"grid content-start gap-4",children:[(0,rE.jsx)("h2",{className:"typo-base-18 font-medium text-text-dark",children:a("floor.processing.title")}),(0,rE.jsxs)("div",{"data-testid":"floor-processing-progress-panel",className:"grid min-h-[97px] min-w-0 content-center gap-2 overflow-hidden rounded-xl bg-background-base px-6 py-8",children:[(0,rE.jsxs)("div",{className:"flex min-w-0 items-center justify-between gap-3",children:[(0,rE.jsx)("span",{className:"typo-base-14 min-w-0 flex-1 truncate text-left font-medium text-text-light",children:a(u.translationKey)}),(0,rE.jsxs)("span",{className:"typo-base-14 shrink-0 font-medium text-text-dark",children:[c,"%"]})]}),(0,rE.jsx)($Z,{value:c,"aria-label":a("floor.processing.progressLabel"),className:"h-1 bg-background-base-3 [&_[data-slot=progress-indicator]]:bg-button-dark [&_[data-slot=progress-indicator]]:duration-500 [&_[data-slot=progress-indicator]]:ease-out"})]})]});return(0,rE.jsx)(Wx,{open:t,onOpenChange:n,children:(0,rE.jsxs)(WM,{portalContainer:i,showCloseButton:!1,"data-testid":"floor-processing-card",className:"top-auto bottom-2 w-[calc(100%-16px)] !max-w-none translate-y-0 gap-4 overflow-hidden rounded-2xl p-6 text-center sm:top-[50%] sm:bottom-auto sm:w-full sm:!max-w-[377px] sm:translate-y-[-50%] sm:p-6",onInteractOutside:e=>{e.preventDefault()},onAnimationEnd:e=>{e.currentTarget===e.target&&"closed"===e.currentTarget.getAttribute("data-state")&&r?.()},children:[(0,rE.jsx)(Wk,{className:"sr-only",children:a("floor.processing.title")}),(0,rE.jsx)(WT,{className:"sr-only",children:a(u.translationKey)}),d]})})}let $1={desktop:[{slot:"product-card",container:"leading",appearance:"card",actionLabelResourceTypeKey:"replaceProduct",actionVariant:"outline",actionSize:"sm",actionWidth:"auto"},{slot:"room-card",container:"leading",appearance:"card",actionLabelKey:"floor.interiorSelection.chooseInterior",actionVariant:"outline",actionSize:"sm"},{slot:"ar-card",container:"trailing",appearance:"card",actionVariant:"secondary",actionSize:"sm"}],tablet:[{slot:"product-card",container:"leading",appearance:"compact-card",actionLabelResourceTypeKey:"replaceProduct",actionVariant:"outline",actionSize:"sm",actionWidth:"auto"},{slot:"room-card",container:"trailing",appearance:"framed-row",actionLabelKey:"floor.interiorSelection.chooseInteriorShort",actionVariant:"outline",actionSize:"sm"},{slot:"ar-card",container:"trailing",appearance:"inline-compact",actionVariant:"secondary",actionSize:"default"}],phone:[{slot:"product-card",container:"leading",appearance:"flow-card",actionLabelResourceTypeKey:"replaceProductShort",actionVariant:"outline",actionSize:"sm",actionWidth:"fixed"},{slot:"room-card",container:"trailing",appearance:"plain-row",actionLabelKey:"floor.interiorSelection.chooseInterior",actionVariant:"outline",actionSize:"sm"},{slot:"ar-card",container:"trailing",appearance:"inline-large",actionVariant:"secondary",actionSize:"lg"}]},$2={desktop:[{slot:"product-card",container:"leading",appearance:"card",actionLabelResourceTypeKey:"replaceProduct",actionVariant:"outline",actionSize:"sm",actionWidth:"auto"},{slot:"room-card",container:"leading",appearance:"card",actionLabelKey:"floor.interiorSelection.chooseInterior",actionVariant:"outline",actionSize:"sm"}],tablet:[{slot:"product-card",container:"leading",appearance:"compact-card",actionLabelResourceTypeKey:"replaceProduct",actionVariant:"outline",actionSize:"sm",actionWidth:"auto"},{slot:"room-card",container:"trailing",appearance:"framed-row",actionLabelKey:"floor.interiorSelection.chooseInteriorShort",actionVariant:"outline",actionSize:"sm"}],phone:[{slot:"product-card",container:"leading",appearance:"flow-card",actionLabelResourceTypeKey:"replaceProductShort",actionVariant:"outline",actionSize:"sm",actionWidth:"auto"},{slot:"room-card",container:"trailing",appearance:"plain-row",actionLabelKey:"floor.interiorSelection.chooseInterior",actionVariant:"outline",actionSize:"sm"}]},$3={"inline-compact":"h-9 w-full rounded-xl","inline-large":"h-11 w-full rounded-xl"},$9={"inline-compact":"size-5","inline-large":"size-6"},$4={desktop:"floor-ar-card",tablet:void 0,phone:void 0},$5=/^[a-z][a-z\d+.-]*:/i,$8={card:"flex min-h-24 w-fit max-w-100 items-center gap-4 rounded-2xl bg-background-containers p-4 text-left text-text-dark shadow-[var(--shadow-login)]","compact-card":"flex min-h-[116px] w-fit max-w-[421px] items-center gap-4 rounded-2xl bg-background-containers p-4 text-left text-text-dark shadow-[var(--shadow-login)]","flow-card":"flex items-center justify-start gap-4 border-b border-border-light bg-background-containers p-4 text-left"},$6={card:"size-6 text-icons-normal","compact-card":"size-6 text-icons-normal","flow-card":"size-5 text-icons-normal"},$7={desktop:"floor-desktop-product-card",tablet:"floor-tablet-product-card",phone:"floor-mobile-product-card"},eee={card:"flex h-24 w-[254px] items-center gap-4 overflow-hidden rounded-2xl bg-background-containers p-4 text-left text-text-dark shadow-[var(--shadow-login)]","framed-row":"flex h-[72px] items-center justify-between gap-3 overflow-hidden rounded-2xl bg-background-containers p-4 text-left text-text-dark shadow-[var(--shadow-login)]","plain-row":"flex w-full items-center justify-between gap-3 rounded-full bg-background-containers text-left"},eet={desktop:"floor-room-card",tablet:"floor-tablet-room-card",phone:void 0},eer={desktop:"floor-desktop-room-name",tablet:"floor-tablet-room-name",phone:"floor-mobile-room-name"},een={"product-card":function({actions:e,band:t,slot:r,presentation:n}){let i,{t:a}=sf(),{displayUnit:s,name:o,type:l}=W9(),{containerRef:c}=W6(),{material:u,selectedObject:d,tinuuid:h}=W8(),{variantItems:p,selectedTinuuid:f,selectVariant:A}=function(){var e;let{tinuuid:t,selectedObject:r,selectResourceVariant:n,apiKey:i,baseURL:a,source:s,widgetSession:o}=W8(),{type:l}=W9(),{decodeVariant:c}=q_(l),u=r?.kit?.uuid,d=r?.owner?.uuid,{data:h,fetchNextPage:p,hasNextPage:f,isFetchingNextPage:A,isFetchNextPageError:g}=od({queryKey:["room-viewer","kit-objects",{apiKey:(e={apiKey:i,baseURL:a,source:s,resourceType:l}).apiKey??null,kitUuid:u??null,ownerUuid:d??null,resourceType:e.resourceType??null,source:e.source}],enabled:!!c&&!!u&&!!d,queryFn:({pageParam:e,signal:t})=>{if(!u||!d)throw Error("Kit uuid and owner uuid are required.");return WA(u,d,e,{apiKey:i,baseURL:a,signal:t,source:s,widgetSession:o,resourceType:l})},initialPageParam:0,getNextPageParam:(e,t,r)=>void 0!==e.pages_count?r+1<e.pages_count?r+1:void 0:e.objs?.length?r+1:void 0},ou,void 0);(0,rx.useEffect)(()=>{!f||A||g||p({cancelRefetch:!1})},[p,f,A,g]);let m=(0,rx.useMemo)(()=>h?.pages.flatMap(e=>e.objs??[])??[],[h]),v=(0,rx.useMemo)(()=>m.flatMap(e=>{let t=c?.(e.description);return e.tinuuid&&e.materials?.[0]&&t?[{tinuuid:e.tinuuid,...t}]:[]}),[m,c]);return{variantItems:v,selectedTinuuid:t,selectVariant:e=>!!v.some(t=>t.tinuuid===e)&&(n(e),!0)}}(),g=$7[t],m=a(`units.${s}`),v=e.isMaterialSelectionOpen,b=a(v?"floor.scene.hideCatalog":`resourceType.${l}.${n.actionLabelResourceTypeKey}`),y=qF(l,d,u,o),w=(i=u?.previews?.[0],i?.subRes?.small??i?.url??d?.preview?.subRes?.small??d?.preview?.url??d?.mainPreview),x=p.find(e=>e.tinuuid===f),C=function(e){let t=e?.trim();if(!t||$5.test(t)&&!/^https?:/i.test(t)||/^[./?#]/.test(t)&&!t.startsWith("//"))return;let r=t.startsWith("//")?`https:${t}`:/^https?:/i.test(t)?t:`https://${t}`;try{let e=new URL(r);if("http:"!==e.protocol&&"https:"!==e.protocol||!e.hostname)return;return e.href}catch{return}}(d?.tinuuid===h?d.destinationUrl:void 0),E=v?e.onMaterialSelectionActionPointerDown:void 0;return(0,rE.jsxs)("div",{className:$8[n.appearance],"data-chrome-slot":r,"data-neurodyn-room-viewer-product":"","data-testid":g,children:[(0,rE.jsx)("div",{className:"grid size-16 shrink-0 place-items-center overflow-hidden bg-background-base",children:w?(0,rE.jsx)("img",{src:w,alt:"",className:"size-full object-cover"}):(0,rE.jsx)(WQ,{className:$6[n.appearance]})}),(0,rE.jsxs)("div",{className:"grid min-h-16 min-w-0 flex-1 grid-cols-1 content-center gap-2",children:[(0,rE.jsxs)("div",{className:"flex min-w-0 items-start justify-between gap-2",children:[(0,rE.jsxs)("div",{className:"min-w-0",children:[(0,rE.jsx)("div",{className:"sr-only",children:a(`resourceType.${l}.productCardTitle`)}),(0,rE.jsx)("div",{className:"typo-button-normal truncate text-text-dark",children:y})]}),C&&(0,rE.jsx)("a",{href:C,target:"_blank",rel:"noopener noreferrer",className:"typo-base-12 shrink-0 text-button-primary underline-offset-2 hover:underline","data-testid":`${g}-description-link`,children:a("floor.scene.description")})]}),(0,rE.jsxs)("div",{className:"flex flex-nowrap items-center gap-2",children:[(0,rE.jsxs)(Ww,{type:"button",variant:n.actionVariant,size:n.actionSize,[$_]:!0,"aria-expanded":v,className:Wb("w-fit shrink-0","fixed"===n.actionWidth&&"w-[137px]"),onPointerDown:E?e=>{e.preventDefault(),e.stopPropagation(),E()}:void 0,onClick:v?e.closeMaterialSelection:e.openMaterialSelection,children:[v?(0,rE.jsx)(W_,{className:"size-4"}):(0,rE.jsx)(Wz,{className:"size-4"}),b]}),p.length>1&&!!x&&(0,rE.jsxs)(qs,{value:f??void 0,onValueChange:A,children:[(0,rE.jsx)(ql,{size:"sm",className:"w-fit min-w-0 shrink *:data-[slot=select-value]:block *:data-[slot=select-value]:truncate","data-testid":`${g}-variant-select`,children:(0,rE.jsx)(qo,{})}),(0,rE.jsx)(qc,{portalContainer:c,children:p.map(e=>{var t;let r;return(0,rE.jsx)(qu,{value:e.tinuuid,children:"color"in e?e.color:(t=e.size,r=t.split("\xd7").map(e=>"cm"===s?e:Math.round(qK(Number(e)/100,s)).toString()).join("\xd7"),`${r} ${m}`)},e.tinuuid)})})]})]})]})]})},"room-card":function({actions:e,band:t,slot:r,presentation:n}){let{t:i}=sf(),{room:a}=W5(),s=i(`rooms.${a.id}`,{defaultValue:a.name}),o=(0,rE.jsx)(Ww,{type:"button",variant:n.actionVariant,size:n.actionSize,className:"card"===n.appearance?"w-fit":"shrink-0",onClick:e.openInteriorSelection,children:i(n.actionLabelKey)});return"card"===n.appearance?(0,rE.jsxs)("div",{className:eee[n.appearance],"data-chrome-slot":r,"data-neurodyn-room-viewer-room":"","data-testid":eet[t],children:[(0,rE.jsx)("img",{crossOrigin:"anonymous",src:q0(a),alt:"",className:"size-16 shrink-0 rounded-lg object-cover"}),(0,rE.jsxs)("span",{className:"grid min-w-0 flex-1 content-center gap-2",children:[(0,rE.jsx)("span",{className:"typo-button-normal block min-h-[1.35em] truncate !leading-[1.35] text-text-dark","data-testid":eer[t],children:s}),o]})]}):(0,rE.jsxs)("div",{className:eee[n.appearance],"data-chrome-slot":r,"data-neurodyn-room-viewer-room":"","data-testid":eet[t],children:[(0,rE.jsxs)("span",{className:"flex min-w-0 items-center gap-2",children:[(0,rE.jsx)("img",{crossOrigin:"anonymous",src:q0(a),alt:"",className:"size-10 shrink-0 rounded-full object-cover"}),(0,rE.jsxs)("span",{className:"grid min-w-0",children:[(0,rE.jsx)("span",{className:"typo-base-12 truncate text-text-light",children:i("floor.scene.interiorCardTitle")}),(0,rE.jsx)("span",{className:"typo-button-normal min-h-[1.35em] truncate !leading-[1.35] text-text-dark","data-testid":eer[t],children:s})]})]}),o]})},"ar-card":function({band:e,slot:t,presentation:r}){let{t:n}=sf(),{room:i}=W5(),{tinuuid:a}=W8();return!a||$E&&$S?null:"card"===r.appearance?(0,rE.jsxs)("div",{className:"flex h-24 w-[280px] items-center gap-4 overflow-hidden rounded-2xl bg-background-containers p-4 text-text-dark shadow-[var(--shadow-login)]","data-chrome-slot":t,"data-neurodyn-room-viewer-try-at-home":"","data-testid":$4[e],children:[(0,rE.jsx)("img",{crossOrigin:"anonymous",src:q0(i),alt:"",className:"size-16 shrink-0 rounded-lg object-cover"}),(0,rE.jsxs)("div",{className:"grid min-w-0 flex-1 content-center gap-2",children:[(0,rE.jsx)($M,{buttonLabel:n("floor.scene.tryAtHome"),buttonVariant:r.actionVariant,buttonSize:r.actionSize,buttonClassName:"w-fit"}),(0,rE.jsx)("div",{className:"typo-base-12 truncate font-medium text-text-light",children:n("floor.scene.tryAtHomeBody")})]})]}):(0,rE.jsx)($M,{className:"w-full","data-chrome-slot":t,"data-neurodyn-room-viewer-try-at-home":"",buttonLabel:n("floor.scene.tryAtHome"),buttonLeadingIcon:(0,rE.jsx)(WW,{className:$9[r.appearance]}),buttonVariant:r.actionVariant,buttonSize:r.actionSize,buttonClassName:$3[r.appearance]})}};function eei({actions:e,band:t,entry:r}){let n=een[r.slot];return(0,rE.jsx)(n,{actions:e,band:t,slot:r.slot,presentation:r})}function eea({actions:e,band:t,container:r}){let{type:n}=W9(),i="immersive-panels"===Wv[n].presentation?$2:$1;return(0,rE.jsx)(rE.Fragment,{children:i[t].filter(e=>e.container===r).map(r=>(0,rE.jsx)(eei,{actions:e,band:t,entry:r},r.slot))})}async function ees(e,t={}){let r=t.source??"default",n={image:e};if(VL({apiKey:t.apiKey,source:r})){let e=await t.widgetSession?.getTokenForRequest();return V8(n,{baseURL:t.baseURL,headers:{"x-api-key":t.apiKey,...e?{[Ws]:e}:{}},signal:t.signal,timeout:0,params:{productType:VN({apiKey:t.apiKey,source:r,resourceType:t.resourceType})}})}return t.signal?V0(n,{signal:t.signal,timeout:0}):V0(n,{timeout:0})}let eeo=[{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 eel(){try{return"1"===window.localStorage.getItem("neurodyn-room-viewer:debug-mask-export")}catch{return!1}}async function eec(e,t){var r,n,i;let a,s,o,l,c=await (r=e.planeIds.dataPng,new Promise((e,t)=>{let n=new Image;n.onload=()=>e(n),n.onerror=()=>t(Error("Failed to load room plane id mask image.")),n.crossOrigin="anonymous",n.src=r})),u=e.planeIds.width||c.naturalWidth||c.width,d=e.planeIds.height||c.naturalHeight||c.height,h=document.createElement("canvas"),p=h.getContext("2d",{willReadFrequently:!0});if(!p)throw Error("Failed to prepare room plane mask canvas.");h.width=u,h.height=d,p.drawImage(c,0,0,u,d);let f=p.getImageData(0,0,u,d),A=document.createElement("canvas"),g=A.getContext("2d");if(!g)throw Error("Failed to prepare room debug mask canvas.");A.width=u,A.height=d;for(let e=0;e<u*d;e++){let t=4*e,r=function(e){return eeo.find(t=>t.id===e)??{id:e,label:`plane-${e}`,rgb:[73*e%255,151*e%255,211*e%255]}}(f.data[t]??0);f.data[t]=r.rgb[0],f.data[t+1]=r.rgb[1],f.data[t+2]=r.rgb[2],f.data[t+3]=255}g.putImageData(f,0,0),n=await new Promise((e,t)=>{A.toBlob(r=>{r?e(r):t(Error("Failed to export room plane mask image."))},"image/png")}),s=Array.from((a=t.lastIndexOf("."))>0?t.slice(0,a):t).map(e=>{let t=e.charCodeAt(0),r="."===e||"_"===e||"-"===e;return t>=48&&t<=57||t>=65&&t<=90||t>=97&&t<=122||r?e:"-"}).join("").split("-").filter(Boolean).join("-"),i=`${s||"room"}.debug-mask.colors.png`,o=URL.createObjectURL(n),(l=document.createElement("a")).href=o,l.download=i,l.style.display="none",document.body.append(l),l.click(),l.remove(),window.setTimeout(()=>URL.revokeObjectURL(o),1e3)}let eeu="custom-interiors";function eed(){return"u">typeof crypto&&"function"==typeof crypto.randomUUID?`custom-interior-${crypto.randomUUID()}`:`custom-interior-${Date.now()}-${Math.random().toString(36).slice(2)}`}function eeh(){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(eeu)||e.createObjectStore(eeu,{keyPath:"id"})},n.onerror=()=>r(n.error??Error("Failed to open Custom Interior store.")),n.onsuccess=()=>t(n.result)}):Promise.resolve(null)}async function eep(e,t,r=new Date){let n=await eeh();if(!n)return null;let i={id:eed(),schemaVersion:1,name:e.name,fileName:e.name,createdAt:r.toISOString(),imageBlob:e,scene:t};try{let e=n.transaction(eeu,"readwrite");return e.objectStore(eeu).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 eef(){let e=await eeh();if(!e)return[];try{return await new Promise((t,r)=>{let n=e.transaction(eeu,"readonly").objectStore(eeu).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 eeA(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 eeg={placementReady:!1,prepareReady:!1,artifactsReady:!1,assetsReady:!1};function eem(e){let t="dialog"===e?"interior-selection":"scene";return{step:t,hasSceneSelection:"scene"===t,sceneResetKey:0}}function eev(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 eeb(e,t){return!e.aborted&&t()}async function eey({abortSignal:e,apiOptions:t,commitCustomInteriorSelection:r,downloadDebugMask:n,file:i,isActive:a,isDebugMaskExportEnabled:s,onDebugMaskError:o,onPersistenceError:l,onProcessingComplete:c,predictRoomScene:u,saveCustomInterior:d,trackRuntimeCustomInterior:h,waitForProcessingCompletion:p}){let f=await u(i,{...t,signal:e});if(!eeb(e,a))return null;s()&&n(f,i.name).catch(o);let A=h(i,f);return eeb(e,a)&&A&&(d(i,f).catch(l),c(),await p(),eeb(e,a))?(r(A),A):null}function eew(){return new Promise(e=>window.setTimeout(e,250))}function eex(e){console.error("Failed to export room debug mask",e)}function eeC(e){console.error("Failed to persist Custom Interior",e)}function eeE(e){console.error("Failed to prepare Custom Interior",e)}let eeS={"immersive-room":function({showDialogCloseButton:e=!1}){var t;let{t:r}=sf(),{name:n,type:i}=W9(),{accessError:a,glbUrl:s,apiKey:o,baseURL:l,hasRooms:c,source:u,widgetSession:d,isViewerAccessPending:h,loadError:p,selectedObject:f,tinuuid:A}=W8(),{clearActiveError:g,handleAccessError:m}=function(){let{setAccessError:e,setLoadError:t}=W8();return{clearActiveError:(0,rx.useCallback)(()=>{e(null),t(null)},[e,t]),handleAccessError:e}}(),{room:v,sourceRooms:b}=W5(),{resourceRef:y,containerRef:w,setContainerRef:x,sceneLoad:C,isRoomScenePending:E}=W6(),{dialogPortalContainer:S,viewerSurface:M,viewerDialogOpen:I,onViewerDialogOpenChange:B}=W4(),[k,T]=(0,rx.useState)(!1),[R,D]=(0,rx.useState)(!1),P=(0,rx.useRef)(null),_=(0,rx.useRef)(!1),L=a??p,N=!!L,F=(t=r("floor.scene.companyFallback"),f?.owner?.name??f?.brand??t),{canShare:O,download:Q,isDownloading:U,isSharing:z,share:j}=$B({captureRef:P,fallbackToClipboard:!0,shareMessage:r(`shareMessage.${i}`)}),G=(0,rx.useCallback)(()=>{T(!1),D(!1)},[]),H=(0,rx.useCallback)(()=>{if(_.current){_.current=!1;return}T(!0),D(!1)},[]),V=(0,rx.useCallback)(()=>{_.current=!0,G()},[G]),W=(0,rx.useCallback)(()=>{D(!0),T(!1)},[]),q=function({activeError:e,apiKey:t,baseURL:r,clearActiveError:n,closeMaterialSelection:i,glbUrl:a,handleAccessError:s,hasDialogPortalContainer:o,hasRooms:l,isRoomScenePending:c,isViewerAccessPending:u,onViewerDialogOpenChange:d,resourceType:h,sceneLoad:p,source:f,sourceRooms:A,viewerDialogOpen:g,viewerSurface:m,widgetSession:v}){let b=function(e){let{patchSceneLoad:t,setAngle:r,setRotation:n}=W6();return function(e,t){let[r,n]=(0,rx.useReducer)(eev,e,eem),i=(0,rx.useCallback)(e=>{e(),function({patchSceneLoad:e,setAngle:t,setRotation:r}){t(0),r(0),e(eeg)}(t),n({type:"commit-interior-selection"})},[t]),a=(0,rx.useCallback)(()=>{n({type:"dismiss-interior-selection"})},[]),s=(0,rx.useCallback)(()=>{n({type:"open-interior-selection"})},[]),o=(0,rx.useCallback)(()=>{n({type:"recover-to-scene"})},[]),l=(0,rx.useCallback)(()=>{n({type:"return-to-interior-selection"})},[]),c=(0,rx.useCallback)(()=>{n({type:"start-custom-interior-processing"})},[]);return(0,rx.useMemo)(()=>({...r,commitInteriorSelection:i,dismissInteriorSelection:a,openInteriorSelection:s,recoverToScene:o,returnToInteriorSelection:l,startCustomInteriorProcessing:c}),[i,a,s,o,l,c,r])}(e,(0,rx.useMemo)(()=>({patchSceneLoad:t,setAngle:r,setRotation:n}),[t,r,n]))}(m),{appendRuntimeCustomInterior:y,customRooms:w}=function({listCustomInteriors:e}){let{appendRuntimeCustomInterior:t,customRooms:r,replaceRuntimeCustomInteriors:n}=function(){let[e,t]=(0,rx.useState)(()=>[]),r=(0,rx.useRef)(null),n=(0,rx.useCallback)(e=>{r.current?.revokeObjectUrls();let n=eeA(e);return r.current=n,t(n.rooms),n.rooms},[]),i=(0,rx.useCallback)((e,n)=>{let i=eeA([{id:eed(),schemaVersion:1,name:e.name,fileName:e.name,createdAt:new Date().toISOString(),imageBlob:e,scene:n}]),a=i.rooms[0];if(!a)return i.revokeObjectUrls(),null;let s=r.current;return r.current={rooms:[],revokeObjectUrls:()=>{s?.revokeObjectUrls(),i.revokeObjectUrls()}},t(e=>[a,...e.filter(e=>e.id!==a.id)]),a},[]);return(0,rx.useEffect)(()=>()=>{r.current?.revokeObjectUrls()},[]),(0,rx.useMemo)(()=>({appendRuntimeCustomInterior:i,customRooms:e,replaceRuntimeCustomInteriors:n}),[i,e,n])}(),i=(0,rx.useRef)(!0);(0,rx.useEffect)(()=>(i.current=!0,()=>{i.current=!1}),[]);let a=(0,rx.useCallback)(async()=>{let t=await e();i.current&&n(t)},[e,n]);return(0,rx.useEffect)(()=>{a()},[a]),(0,rx.useMemo)(()=>({appendRuntimeCustomInterior:t,customRooms:r,replaceRuntimeCustomInteriors:n,refreshCustomInteriors:a}),[t,r,a,n])}({listCustomInteriors:eef}),x=(0,rx.useMemo)(()=>new Set(A.map(e=>e.id)),[A]),{commitCustomInteriorSelection:C,selectInterior:E}=function(e){let{room:t,setRoomId:r,setRooms:n}=W5(),{widgetSession:i}=W8();return function({floorFlow:e,customRooms:t,selectedRoomId:r,onInteriorSelected:n,restoreSourceRooms:i,setRoomId:a,setRooms:s}){let o=(0,rx.useCallback)(t=>{e.commitInteriorSelection(()=>{s(e=>[t,...i(e).filter(e=>e.id!==t.id)]),a(t.id)}),n?.()},[e,n,i,a,s]),l=(0,rx.useCallback)(t=>{let o=t===r;o&&e.hasSceneSelection||(e.commitInteriorSelection(()=>{s(i),a(t)}),o||n?.())},[e,n,i,r,a,s]),c=(0,rx.useCallback)(n=>{if(n===r&&e.hasSceneSelection)return;let i=t.find(e=>e.id===n);i&&o(i)},[e.hasSceneSelection,o,t,r]),u=(0,rx.useCallback)(e=>{t.some(t=>t.id===e)?c(e):l(e)},[t,c,l]);return(0,rx.useMemo)(()=>({commitCustomInteriorSelection:o,selectInterior:u}),[o,u])}({...e,selectedRoomId:t.id,onInteriorSelected:()=>Wu(i,"interior_selected"),setRoomId:r,setRooms:n})}({floorFlow:b,customRooms:w,restoreSourceRooms:(0,rx.useCallback)(e=>[...A,...e.filter(e=>!x.has(e.id))],[x,A])}),S=function(e){let{setIsRoomScenePending:t}=W6();return function({apiOptions:e,floorFlow:t,commitCustomInteriorSelection:r,downloadDebugMask:n,isDebugMaskExportEnabled:i,onAccessError:a,onDebugMaskError:s,onPersistenceError:o,onProcessingError:l,predictRoomScene:c,saveCustomInterior:u,setIsRoomScenePending:d,trackRuntimeCustomInterior:h,waitForProcessingCompletion:p}){let[f,A]=(0,rx.useState)(!1),[g,m]=(0,rx.useState)(!1),[v,b]=(0,rx.useState)(null),[y,w]=(0,rx.useState)(null),[x,C]=(0,rx.useState)(!1),[E,S]=(0,rx.useState)(0),M=(0,rx.useRef)(null),I=(0,rx.useRef)(!1),B=(0,rx.useRef)(!0),k=(0,rx.useRef)(v);v&&(k.current=v),(0,rx.useEffect)(()=>(B.current=!0,()=>{B.current=!1,M.current?.abort()}),[]);let T=(0,rx.useCallback)(()=>{b(null),w(null),C(!1)},[]),R=(0,rx.useCallback)(e=>{T(),A(!1),e()},[T]),D=(0,rx.useCallback)(async f=>{if(T(),!f.type.startsWith("image/"))return void A(!0);A(!1),m(!1),t.startCustomInteriorProcessing(),I.current=!0;let g=new AbortController;M.current?.abort(),M.current=g,d(!0);try{await eey({abortSignal:g.signal,apiOptions:e,commitCustomInteriorSelection:r,downloadDebugMask:n,file:f,isActive:()=>B.current,isDebugMaskExportEnabled:i,onDebugMaskError:s,onPersistenceError:o,onProcessingComplete:()=>{m(!0)},predictRoomScene:c,saveCustomInterior:u,trackRuntimeCustomInterior:h,waitForProcessingCompletion:p})}catch(t){if(g.signal.aborted)return;let e=VO(t);if(e){I.current&&C(!0),a(e);return}if(l(t),I.current){w("custom-interior-processing"),C(!0);return}b("custom-interior-processing")}finally{M.current===g&&(M.current=null,B.current&&d(!1))}},[e,t,r,n,i,a,s,o,l,c,T,u,d,h,p]),P=(0,rx.useCallback)(()=>{T(),A(!1),t.returnToInteriorSelection(),S(e=>e+1)},[t,T]),_=(0,rx.useCallback)(()=>{T(),t.returnToInteriorSelection()},[t,T]),L=(0,rx.useCallback)(({clearError:e,closeMaterialSelection:r})=>{e(),r(),t.hasSceneSelection&&t.recoverToScene()},[t]),N=(0,rx.useCallback)(()=>{I.current=!1,C(!1),y&&(b(y),w(null))},[y]),F=(0,rx.useCallback)(()=>B.current,[]);return(0,rx.useMemo)(()=>({displayedUploadError:v??k.current,isCustomInteriorProcessingComplete:g,isInvalidFile:f,isMounted:F,isProcessingDialogClosingForError:x,pendingUploadError:y,uploadError:v,uploadRetryRequestId:E,cancelUploadError:_,handleProcessingDialogCloseAnimationEnd:N,openInteriorSelection:R,processUploadFile:D,recoverFromActiveError:L,resetUploadErrorPresentation:T,tryUploadAgain:P}),[_,N,g,f,F,x,R,y,D,L,T,P,v,E])}({...e,setIsRoomScenePending:t})}({apiOptions:(0,rx.useMemo)(()=>({resourceType:h,apiKey:t,baseURL:r,source:f,widgetSession:v}),[t,r,h,f,v]),floorFlow:b,commitCustomInteriorSelection:C,downloadDebugMask:eec,isDebugMaskExportEnabled:eel,onAccessError:s,onDebugMaskError:eex,onPersistenceError:eeC,onProcessingError:eeE,predictRoomScene:ees,saveCustomInterior:eep,trackRuntimeCustomInterior:y,waitForProcessingCompletion:eew}),{dismissInteriorSelection:M,hasSceneSelection:I,openInteriorSelection:B,sceneResetKey:k,step:T}=b,{cancelUploadError:R,displayedUploadError:D,handleProcessingDialogCloseAnimationEnd:P,isCustomInteriorProcessingComplete:_,isInvalidFile:L,isProcessingDialogClosingForError:N,openInteriorSelection:F,pendingUploadError:O,processUploadFile:Q,recoverFromActiveError:U,resetUploadErrorPresentation:z,tryUploadAgain:j,uploadError:G,uploadRetryRequestId:H}=S,V=l&&I,W=(0,rx.useRef)(e),q=!!(e&&V&&a);e&&(W.current=e);let K=(0,rx.useCallback)(()=>{V&&(z(),M())},[M,V,z]),J=(0,rx.useCallback)(()=>{i(),F(B)},[i,B,F]),Y=(0,rx.useCallback)(()=>{U({clearError:n,closeMaterialSelection:i})},[n,i,U]),X=(0,rx.useCallback)(e=>{if(!e){if(V)return void K();d?.(!1)}},[K,V,d]),Z=(0,rx.useCallback)(e=>{if(!e){if(q)return void Y();d?.(!1)}},[q,Y,d]),$=(0,rx.useCallback)(e=>{e||R()},[R]);!function({fallbackMs:e,handleProcessingDialogCloseAnimationEnd:t,isProcessingDialogClosingForError:r}){(0,rx.useEffect)(()=>{if(!r)return;let n=window.setTimeout(t,e);return()=>window.clearTimeout(n)},[e,t,r])}({fallbackMs:220,handleProcessingDialogCloseAnimationEnd:P,isProcessingDialogClosingForError:N});let ee=function({activeError:e,canRecoverFromActiveError:t,floorFlow:r,hasDialogPortalContainer:n,hasRooms:i,isProcessingDialogClosingForError:a,isRoomScenePending:s,isViewerAccessPending:o,pendingUploadError:l,sceneLoad:c,uploadError:u,viewerDialogOpen:d,viewerSurface:h}){let p="dialog"===h&&n,f=!p||d,A=i&&r.hasSceneSelection,g=i||"scene"!==r.step?r.step:"interior-selection",m=!o&&A&&(!e||t),v=A||p,b=!o&&!e&&v,y=!o&&!e&&!v&&"interior-selection"===g;return{activeErrorDialog:{open:!a&&!!e&&f,showCloseButton:!t},interiorSelection:{open:b&&"interior-selection"===g&&f,presentation:b?"dialog":y?"screen":null,shouldRender:b||y},processingDialog:{open:!e&&!u&&!l&&s&&"processing-custom-interior"===r.step&&f},scene:{isLoading:s||!Object.values(c).every(Boolean),resetKey:r.sceneResetKey,shouldRender:m,shouldRenderDialog:m},surface:{usesSiblingDialogFlow:p},uploadErrorDialog:{open:!a&&!e&&!!u&&f}}}({activeError:e,canRecoverFromActiveError:q,floorFlow:{hasSceneSelection:I,sceneResetKey:k,step:T},hasDialogPortalContainer:o,hasRooms:l,isProcessingDialogClosingForError:N,isRoomScenePending:c,isViewerAccessPending:u,pendingUploadError:O,sceneLoad:p,uploadError:G,viewerDialogOpen:g,viewerSurface:m});return{...ee,activeErrorDialog:{...ee.activeErrorDialog,onCancel:q?Y:void 0,onOpenChange:Z,onTryAgain:q?Y:void 0,variant:e??W.current},customRooms:w,interiorSelection:{...ee.interiorSelection,isInvalidFile:L,onOpenChange:X,onSelectRoom:E,onUploadFile:Q,openFromScene:J,uploadRetryRequestId:H},sourceRooms:A,processingDialog:{...ee.processingDialog,isComplete:_,onCloseAnimationEnd:P,onOpenChange:ee.surface.usesSiblingDialogFlow?d:void 0},step:T,uploadErrorDialog:{...ee.uploadErrorDialog,onCancel:R,onOpenChange:$,onTryAgain:j,variant:D}}}({activeError:L,apiKey:o,baseURL:l,clearActiveError:g,closeMaterialSelection:G,glbUrl:s,handleAccessError:m,hasDialogPortalContainer:null!==S,hasRooms:c,isRoomScenePending:E,isViewerAccessPending:h,onViewerDialogOpenChange:B,resourceType:i,sceneLoad:C,source:u,sourceRooms:b,viewerDialogOpen:I,viewerSurface:M,widgetSession:d}),K=(0,rx.useRef)(null),J=function(e,t){let[r,n]=(0,rx.useState)(!1);return e&&r&&n(!1),(0,rx.useEffect)(()=>{let r;if(e)return;let i=()=>{t.current&&(0===Number(getComputedStyle(t.current).opacity)?n(!0):r=requestAnimationFrame(i))};return r=requestAnimationFrame(i),()=>cancelAnimationFrame(r)},[e,t]),!e&&r}(q.scene.isLoading||!q.scene.shouldRender||!I,K),Y=ZE(),{pending:X,finish:Z}=function(e,t,r){let[n,i]=(0,rx.useState)({open:e,pending:e&&t,sceneKey:r});n.open!==e?i({open:e,pending:e&&t,sceneKey:r}):n.sceneKey!==r?i({...n,sceneKey:r,pending:n.pending&&null===n.sceneKey}):n.pending&&!t&&i({...n,pending:!1});let a=(0,rx.useCallback)(()=>i(e=>({...e,pending:!1})),[]);return{pending:e&&n.pending,finish:a}}(I,q8("(max-width: 639px)")&&"focus-resource"===Wv[i].introduction,q.scene.shouldRender?`${q.scene.resetKey}:${A??""}`:null),$=Y?.select,ee=(0,rx.useCallback)(()=>{Z(),$?.("0,0")},[Z,$]),et=(0,rx.useMemo)(()=>X?{ready:J,target:y,onComplete:ee,onCancel:Z}:void 0,[X,ee,Z,J,y]),er=q.interiorSelection.openFromScene,en=(0,rx.useCallback)(()=>{G(),er()},[G,er]),ei=(0,rx.useMemo)(()=>({isMaterialSelectionOpen:k,openMaterialSelection:H,closeMaterialSelection:G,onMaterialSelectionActionPointerDown:V,openInteriorSelection:en}),[G,V,en,H,k]),ea=(0,rx.useMemo)(()=>({isMaterialSelectionOpen:R,openMaterialSelection:W,closeMaterialSelection:G,openInteriorSelection:en}),[G,en,W,R]);(0,rx.useEffect)(()=>{if(k)return document.addEventListener("pointerdown",e),document.addEventListener("keydown",t),()=>{document.removeEventListener("pointerdown",e),document.removeEventListener("keydown",t)};function e(e){var t;(t=e.target)instanceof Element&&t.closest(`[${$_}], [${$L}]`)||T(!1)}function t(e){"Escape"===e.key&&T(!1)}},[k]);let es=q.surface.usesSiblingDialogFlow?S:w,eo=(0,rE.jsxs)(rE.Fragment,{children:[(0,rE.jsx)("div",{className:"absolute inset-0 bg-constant-black","data-testid":"floor-scene-background-base"}),(0,rE.jsx)("div",{"aria-hidden":!0,className:"absolute top-[-52px] right-[-1.36%] bottom-[-52px] left-[-1.36%] blur-[40px]","data-testid":"floor-blur-background",children:(0,rE.jsx)("img",{crossOrigin:"anonymous",src:q0(v),alt:"",className:"block size-full max-w-none object-cover object-center opacity-50"})}),(0,rE.jsxs)("div",{className:"pointer-events-none absolute top-0 right-0 left-0 z-20 flex min-h-22 items-start justify-between gap-4 bg-linear-to-b from-black/75 via-black/35 to-transparent px-4 pt-4 pb-8 text-constant-white sm:px-6 lg:min-h-25 lg:pt-6",children:[(0,rE.jsx)("div",{className:"min-w-0 pt-1",children:(0,rE.jsx)("h1",{"data-testid":"floor-scene-header-company",className:"typo-base-16 truncate font-medium lg:typo-base-18",children:F})}),(0,rE.jsxs)("div",{className:"pointer-events-auto inline-flex shrink-0 items-center gap-2",children:[(0,rE.jsxs)(Ww,{type:"button",variant:"secondary","aria-label":r("floor.scene.share"),"data-neurodyn-room-viewer-share":"",disabled:!O||z,onClick:j,className:"size-10 rounded-full px-0 lg:h-9 lg:w-auto lg:rounded-xl lg:px-3.5",children:[(0,rE.jsx)(WV,{className:"size-5"}),(0,rE.jsx)("span",{className:"hidden lg:inline",children:r("floor.scene.share")})]}),(0,rE.jsxs)(Ww,{type:"button",variant:"secondary","aria-label":r("floor.scene.download"),"data-neurodyn-room-viewer-download":"",disabled:U,onClick:Q,className:"size-10 rounded-full px-0 lg:h-9 lg:w-auto lg:rounded-xl lg:px-3.5",children:[(0,rE.jsx)(WL,{className:"size-5"}),(0,rE.jsx)("span",{className:"hidden lg:inline",children:r("floor.scene.download")})]}),e&&(0,rE.jsx)(WE,{asChild:!0,children:(0,rE.jsxs)(Ww,{type:"button",variant:"secondary","aria-label":r("close"),className:"size-10 rounded-full px-0 lg:h-9 lg:w-auto lg:rounded-xl lg:px-3.5",children:[(0,rE.jsx)("span",{className:"hidden lg:inline",children:r("close")}),(0,rE.jsx)(W_,{className:"!size-5"})]})})]})]}),(0,rE.jsxs)("div",{className:"relative z-10 size-full min-h-0 min-w-0","data-testid":"floor-scene-viewport",children:[(0,rE.jsx)($h,{introduction:et,captureRef:P,className:"relative z-10 size-full min-h-0",canvasWrapperClassName:"p-0 sm:pt-0 sm:pb-0"},q.scene.resetKey),(0,rE.jsx)("div",{"aria-hidden":!q.scene.isLoading,className:Wb("absolute inset-0 z-10 flex items-center justify-center bg-radial from-background-containers to-background-base-2 transition-opacity",q.scene.isLoading?"opacity-100 pointer-events-auto duration-0":"opacity-0 pointer-events-none duration-250ms"),ref:K,"data-testid":"floor-scene-loader",style:{transitionDuration:q.scene.isLoading?"0ms":"250ms"},children:(0,rE.jsx)(WK,{variant:"logo"})})]}),(0,rE.jsxs)("div",{className:"pointer-events-none absolute right-6 bottom-6 left-6 z-20 hidden items-end justify-between gap-4 lg:flex","data-testid":"floor-desktop-cards",children:[(0,rE.jsx)("div",{className:"pointer-events-auto flex min-w-0 items-stretch gap-3",children:(0,rE.jsx)(eea,{actions:ei,band:"desktop",container:"leading"})}),(0,rE.jsx)("div",{className:"pointer-events-auto",children:(0,rE.jsx)(eea,{actions:ei,band:"desktop",container:"trailing"})})]}),(0,rE.jsxs)("div",{className:"pointer-events-none absolute right-6 bottom-6 left-6 z-20 hidden items-end justify-between gap-2 sm:flex lg:hidden","data-testid":"floor-tablet-cards",children:[(0,rE.jsx)("div",{className:"pointer-events-auto flex min-w-0 items-stretch gap-3",children:(0,rE.jsx)(eea,{actions:ei,band:"tablet",container:"leading"})}),(0,rE.jsx)("div",{className:"pointer-events-auto grid w-[254px] gap-2",children:(0,rE.jsx)(eea,{actions:ei,band:"tablet",container:"trailing"})})]}),(0,rE.jsxs)("div",{className:"relative z-20 grid bg-background-containers text-text-dark shadow-[var(--shadow-login)] sm:hidden","data-testid":"floor-mobile-cards",children:[(0,rE.jsx)("div",{className:"grid",children:(0,rE.jsx)(eea,{actions:ea,band:"phone",container:"leading"})}),(0,rE.jsx)("div",{className:"grid gap-4 bg-background-containers px-6 pt-4 pb-6","data-testid":"floor-mobile-bottom-actions",children:(0,rE.jsx)(eea,{actions:ea,band:"phone",container:"trailing"})})]}),k&&!N&&(0,rE.jsx)($F,{[$L]:!0,className:"absolute bottom-[152px] left-6 z-30 hidden max-h-[calc(100%-252px)] w-[348px] rounded-2xl bg-background-containers sm:flex lg:bottom-[132px] lg:max-h-[calc(100%-232px)]",gridClassName:"px-4 pb-4",titleClassName:"px-4 pt-4",onOpenChange:G}),(0,rE.jsx)($O,{open:R&&!N,portalContainer:es,onOpenChange:D})]}),el=q.interiorSelection.shouldRender?"dialog"===q.interiorSelection.presentation?(0,rE.jsx)($P,{open:q.interiorSelection.open,showCloseButton:e||q.scene.shouldRender,portalContainer:es,rooms:q.sourceRooms,customRooms:q.customRooms,selectedRoomId:v.id,isInvalidFile:q.interiorSelection.isInvalidFile,uploadRetryRequestId:q.interiorSelection.uploadRetryRequestId,onOpenChange:q.interiorSelection.onOpenChange,onSelectRoom:q.interiorSelection.onSelectRoom,onUploadFile:q.interiorSelection.onUploadFile}):"screen"===q.interiorSelection.presentation?(0,rE.jsx)($D,{rooms:q.sourceRooms,customRooms:q.customRooms,selectedRoomId:v.id,isInvalidFile:q.interiorSelection.isInvalidFile,uploadRetryRequestId:q.interiorSelection.uploadRetryRequestId,showCloseButton:e,onSelectRoom:q.interiorSelection.onSelectRoom,onUploadFile:q.interiorSelection.onUploadFile}):null:null,ec=(0,rE.jsx)($0,{isComplete:q.processingDialog.isComplete,open:q.processingDialog.open,portalContainer:es,onCloseAnimationEnd:q.processingDialog.onCloseAnimationEnd,onOpenChange:q.processingDialog.onOpenChange}),eu=(0,rE.jsxs)(rE.Fragment,{children:[(0,rE.jsx)($T,{variant:q.activeErrorDialog.variant,open:q.activeErrorDialog.open,portalContainer:es,showDialogCloseButton:e&&q.activeErrorDialog.showCloseButton,onOpenChange:q.activeErrorDialog.onOpenChange,onTryAgain:q.activeErrorDialog.onTryAgain,onCancel:q.activeErrorDialog.onCancel}),(0,rE.jsx)($T,{variant:q.uploadErrorDialog.variant,open:q.uploadErrorDialog.open,portalContainer:es,onOpenChange:q.uploadErrorDialog.onOpenChange,onTryAgain:q.uploadErrorDialog.onTryAgain,onCancel:q.uploadErrorDialog.onCancel})]}),ed=(0,rE.jsxs)("div",{ref:x,className:"relative grid size-full grid-rows-[minmax(0,1fr)_auto] overflow-hidden text-foreground sm:block","data-neurodyn-room-viewer-container":"","data-testid":"floor-viewer-root",children:[h?(0,rE.jsx)("div",{className:"flex size-full items-center justify-center bg-radial from-background-containers to-background-base-2",children:(0,rE.jsx)(WK,{variant:"logo"})}):q.scene.shouldRender?eo:null,!q.surface.usesSiblingDialogFlow&&el,!q.surface.usesSiblingDialogFlow&&ec]});return q.surface.usesSiblingDialogFlow?(0,rE.jsxs)(rE.Fragment,{children:[(q.scene.shouldRenderDialog||h)&&(0,rE.jsx)(Wx,{open:I,onOpenChange:B,children:(0,rE.jsxs)(WM,{className:WJ,contentInsideOverlay:!0,portalContainer:S,showCloseButton:!1,onInteractOutside:e=>{e.preventDefault()},children:[(0,rE.jsx)(Wk,{className:"sr-only",children:n}),(0,rE.jsx)(WT,{className:"sr-only"}),ed]})}),el,ec,eu]}):(0,rE.jsxs)(rE.Fragment,{children:[ed,eu]})},"framed-scene":function({showDialogCloseButton:e=!1}){let{name:t}=W9(),{isViewerAccessPending:r,accessError:n,loadError:i,setLoadError:a,hasRooms:s}=W8(),{setContainerRef:o,sceneLoad:l,isRoomScenePending:c}=W6(),{dialogPortalContainer:u,viewerSurface:d,viewerDialogOpen:h,onViewerDialogOpenChange:p}=W4(),{t:f}=sf(),A=(0,rx.useRef)(null),g=r||c||s&&!Object.values(l).every(Boolean),m=n??i,v=m?(0,rE.jsx)("div",{ref:o,"data-neurodyn-room-viewer-container":"",className:"relative size-full overflow-hidden bg-radial from-background-containers to-background-base-2 text-foreground",children:(0,rE.jsx)(q4,{variant:m,showDialogCloseButton:e})}):(0,rE.jsxs)("div",{ref:o,"data-neurodyn-room-viewer-container":"",className:"relative size-full bg-radial from-background-containers to-background-base-2 text-foreground overflow-hidden",children:[e&&(0,rE.jsx)(WE,{asChild:!0,children:(0,rE.jsxs)(Ww,{className:"absolute top-3 right-6 z-20",variant:"secondary",children:[f("close"),(0,rE.jsx)(uc,{})]})}),!r&&(s?(0,rE.jsxs)(rE.Fragment,{children:[(0,rE.jsx)(q9,{className:"absolute top-0 right-0 left-0 z-15"}),(0,rE.jsxs)("div",{className:"size-full max-w-full grid grid-rows-[1fr_auto]",children:[(0,rE.jsx)(ZT,{onError:()=>a("viewer-load-failed"),children:(0,rE.jsx)($h,{captureRef:A,className:"size-full min-h-0",controls:(0,rE.jsx)($k,{captureRef:A})})}),(0,rE.jsx)(q3,{className:"bg-background"})]})]}):(0,rE.jsx)(q2,{className:"absolute inset-x-0 bottom-0 bg-background"})),(0,rE.jsx)("div",{"aria-hidden":!g,className:Wb("absolute inset-0 z-10 flex items-center justify-center bg-radial from-background-containers to-background-base-2 transition-opacity",g?"opacity-100 pointer-events-auto duration-0":"opacity-0 pointer-events-none duration-250ms"),children:(0,rE.jsx)(WK,{variant:"logo"})})]});return"dialog"!==d?v:(0,rE.jsx)(Wx,{open:h,onOpenChange:p,children:(0,rE.jsxs)(WM,{className:WJ,contentInsideOverlay:!0,portalContainer:u,showCloseButton:!1,onInteractOutside:e=>{e.preventDefault()},children:[(0,rE.jsxs)(WI,{className:"sr-only",children:[(0,rE.jsx)(Wk,{children:t}),(0,rE.jsx)(WT,{})]}),v]})})}};function eeM({showDialogCloseButton:e=!1}){let{type:t}=W9(),r=eeS[Wv[t].chrome];return(0,rE.jsx)(r,{showDialogCloseButton:e})}let eeI=0,eeB=[];function eek(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 eeT({children:e,src:t,tinuuid:r,type:n,viewerSurface:i,dialogPortalContainer:a=null,viewerDialogOpen:s=!0,onViewerDialogOpenChange:o,width:l,height:c,displayUnit:u,name:d,apiKey:h,baseURL:p,source:f,externalWidgetSession:A}){var g,m;let v=function(){let{t:e}=sf();return(0,rx.useMemo)(()=>[{value:.025,label:`2.5 ${e("units.cm")}`},{value:.05,label:`5 ${e("units.cm")}`}],[e])}(),b=qJ(u),y=qN(n),w="finish"===Wv[n].materialRole,{offersSizeVariants:x}=q_(n),C="floor-room-presets"===Wv[n].roomPresets?qI:qM,E=VL({apiKey:h,baseURL:p,source:f}),[S,M]=(0,rx.useState)(r),[I,B]=(0,rx.useState)(null),k=(0,rx.useCallback)(e=>{B(null),M(e)},[]),T=(0,rx.useCallback)(e=>{B(e),M(e)},[]),[R,D]=(0,rx.useState)(null),[P,_]=(0,rx.useState)(v[0].value),[L,N]=(0,rx.useState)(b[0].value),[F,O]=(0,rx.useState)(0),[Q,U]=(0,rx.useState)(0),[z,j]=(0,rx.useState)(!1),[G,H]=(0,rx.useState)(null),[V,W]=(0,rx.useState)(()=>({layoutReady:!1,placementReady:!1,materialReady:"artwork-src"===y.materialSource,artifactsReady:!1,assetsReady:!1,prepareReady:!1})),[q,K]=(0,rx.useState)(!1),[J,Y]=(0,rx.useState)(null),[X,Z]=(0,rx.useState)(null),$=(0,rx.useRef)(null),ee=(0,rx.useRef)(new Set),et=(0,rx.useRef)(null),er=(0,rx.useRef)(!0),en=(0,rx.useRef)(!1),ei="object-glb"===y.materialSource,ea="default"===f&&void 0!==h,es=VF("wall-panel"===(g={apiKey:h,baseURL:p,source:f,resourceType:n}).resourceType?g:{...g,resourceType:void 0}),eo=od({queryKey:["room-viewer","activate",{apiKey:h??null,source:f,resourceType:n}],enabled:ea,queryFn:({signal:e})=>V1(es.query,{...es.config,baseURL:p,headers:{"x-api-key":h},signal:e})},s2,void 0),el=VO(eo.error),ec=(0,rx.useMemo)(()=>{let e=eo.data;return Wc(e?.widgetSession,{apiConfig:{baseURL:p,headers:{"x-api-key":h}}})},[eo.data,h,p]),eu=(0,rx.useMemo)(()=>A instanceof Wl?A:Wc(A,{apiConfig:{baseURL:p,headers:{"x-api-key":h}}})??ec,[ec,h,p,A]),ed="shopify"===f?null!==eu:ea&&eo.isSuccess,eh=od({queryKey:["room-viewer","rooms",{apiKey:(m={apiKey:h,baseURL:p,source:f,widgetSession:eu,resourceType:n}).apiKey??null,source:m.source,resourceType:m.resourceType??null,widgetSessionId:m.widgetSession?.sid??null}],enabled:E&&ed,queryFn:async({signal:e})=>{try{return await Wg({apiKey:h,baseURL:p,signal:e,source:f,widgetSession:eu,resourceType:n})}catch(e){if(VO(e))throw e;return[]}}},s2,void 0),ep=E?eh.data??eeB:C,[ef,eA]=(0,rx.useState)(()=>({rooms:ep,sourceRooms:ep})),eg=(0,rx.useMemo)(()=>eek(ef.rooms,ef.sourceRooms,ep),[ef.rooms,ef.sourceRooms,ep]),em=(0,rx.useCallback)(e=>{eA(t=>{let r=eek(t.rooms,t.sourceRooms,ep);return{rooms:"function"==typeof e?e(r):e,sourceRooms:ep}})},[ep]),[ev,eb]=(0,rx.useState)(()=>C[0].id),ey=eg.find(e=>e.id===ev),ew=ey??eg[0]??C[0],ex="rotate-on-floor"===Wv[n].manipulation;(0,rx.useEffect)(()=>{ex&&U(0)},[ex,ew.id]);let eC=eg.length>0;!ey&&eg[0]&&ev!==eg[0].id&&eb(eg[0].id);let eE=!ea||eo.isSuccess||eo.isError&&null===el,eS=od({queryKey:Wh(r??void 0,{apiKey:h,baseURL:p,source:f,resourceType:n}),enabled:eE&&ei&&null===R&&!!r,queryFn:async({signal:e})=>{if(!r)throw Error("Tinuuid is required.");return Wp(r,{apiKey:h,baseURL:p,signal:e,source:f,widgetSession:eu,resourceType:n})}},s2,void 0),eM=od({queryKey:Wh(S??void 0,{apiKey:h,baseURL:p,source:f,resourceType:n}),enabled:eE&&ei&&!!S,placeholderData:t4,queryFn:async({signal:e})=>{if(!S)throw Error("Tinuuid is required.");return Wp(S,{apiKey:h,baseURL:p,signal:e,source:f,widgetSession:eu,resourceType:n})}},s2,void 0),eI=eS.data??null,eB=eM.data??null,ek=eI?.materials?.[0]??null,eT=R?.native?.glbUrl??null,eR=VO(eS.error),eD=VO(eh.error),eP=E&&("shopify"===f?null===eu||eh.isLoading:eo.isSuccess&&eh.isLoading),e_=ea&&eo.isLoading||eP,eL=eo.error&&null===el?"viewer-load-failed":null,eN=eS.error&&null===eR?"viewer-load-failed":null,eF="artwork-src"===y.materialSource&&("string"!=typeof t||0===t.trim().length)?"artwork-load-failed":null,eO=ei&&!e_&&(!r||eS.isSuccess&&null===ek||null!==R&&null===eT)?"viewer-load-failed":null,eQ=null!==I&&I===S&&(eM.isError||eM.isSuccess&&eB?.tinuuid===S&&!eB.materials?.[0]?.native?.glbUrl)?"viewer-load-failed":null,eU=J??el??eD??eR,ez=X??eQ??eL??eN??eO??eF,ej=(0,rx.useCallback)(e=>{W(t=>Object.assign({},t,e))},[]);(0,rx.useEffect)(()=>{let e=new Set(eg.map(e=>e.image_url));for(let t of Array.from(ee.current))e.has(t)||(URL.revokeObjectURL(t),ee.current.delete(t))},[eg]),(0,rx.useEffect)(()=>{let e=ee.current;return er.current=!0,()=>{for(let t of(er.current=!1,et.current?.abort(),Array.from(e)))URL.revokeObjectURL(t);e.clear()}},[]);let eG=(0,rx.useCallback)(async e=>{let t=null,r=new AbortController;et.current?.abort(),et.current=r,K(!0);try{t=URL.createObjectURL(e);let i=await ees(e,{resourceType:n,apiKey:h,baseURL:p,source:f,signal:r.signal,widgetSession:eu});if(r.signal.aborted||!er.current)return void URL.revokeObjectURL(t);eel()&&eec(i,e.name).catch(e=>{console.error("Failed to export room debug mask",e)});let a={id:(eeI+=1,`room-custom-${eeI}`),name:e.name,image_url:t,scene:i};ee.current.add(t),ej({placementReady:!1,prepareReady:!1,artifactsReady:!1,assetsReady:!1}),em(e=>[a,...e]),eb(a.id)}catch(n){if(t&&URL.revokeObjectURL(t),r.signal.aborted)return;let e=VO(n);if(e)return void Y(e);console.error("Failed to prepare custom room scene",n)}finally{et.current===r&&(et.current=null,er.current&&K(!1))}},[h,p,ej,em,f,n,eu]);(0,rx.useEffect)(()=>{if("dialog"!==i||!s){en.current=!1;return}en.current||eu&&(Wu(eu,"widget_opened"),en.current=!0)},[s,i,eu]),(0,rx.useEffect)(()=>{ei&&(k(r),D(null),Y(null),Z(null))},[r,k,ei]),(0,rx.useEffect)(()=>{Y(null),Z(null)},[h,f]),(0,rx.useEffect)(()=>{ei&&eI&&null===R&&D(ek)},[R,ek,eI,ei]),(0,rx.useEffect)(()=>{if(!ei||!x&&!w&&I!==S||null===eB||eB.tinuuid!==S)return;let e=eB.materials?.[0];if(!e)return;let t=eB.materials?.some(e=>e===R||!!e.hid&&e.hid===R?.hid);if(I===S){B(null),D(e);return}(!t||w)&&R!==e&&D(e)},[w,R,x,eB,S,ei,I]);let eH=(0,rx.useMemo)(()=>({type:n,name:d,width:l,height:c,displayUnit:u}),[n,d,l,c,u]),eV=(0,rx.useMemo)(()=>({viewerSurface:i,dialogPortalContainer:a,viewerDialogOpen:s,onViewerDialogOpenChange:o}),[i,a,s,o]),eW=(0,rx.useMemo)(()=>({rooms:eg,sourceRooms:ep,setRooms:em,room:ew,setRoomId:eb}),[eg,ew,em,ep]),eq=(0,rx.useMemo)(()=>({src:t,glbUrl:eT,tinuuid:S,embeddedObject:eI,selectedObject:eB,material:R,setTinuuid:k,selectResourceVariant:T,setMaterial:D,apiKey:h,baseURL:p,source:f,widgetSession:eu,hasRooms:eC,isViewerAccessPending:e_,accessError:eU,setAccessError:Y,loadError:ez,setLoadError:Z}),[t,eT,S,eI,eB,R,k,T,h,p,f,eu,eC,e_,eU,ez]),eK=(0,rx.useMemo)(()=>({containerRef:G,setContainerRef:H,resourceRef:$,angle:F,setAngle:O,rotation:Q,setRotation:U,isDragging:z,setIsDragging:j,sceneLoad:V,patchSceneLoad:ej,isRoomScenePending:q,setIsRoomScenePending:K}),[G,F,Q,z,V,ej,q]),eJ=(0,rx.useMemo)(()=>({frameWidth:P,setFrameWidth:_,matting:L,setMatting:N}),[P,L]),eY=(0,rx.useMemo)(()=>({isRoomScenePending:q,selectCustomRoomFile:eG}),[q,eG]);return(0,rE.jsx)(WY,{value:eH,children:(0,rE.jsx)(WX,{value:eV,children:(0,rE.jsx)(WZ,{value:eW,children:(0,rE.jsx)(W$,{value:eq,children:(0,rE.jsx)(W0,{value:eK,children:(0,rE.jsx)(W1,{value:eJ,children:(0,rE.jsx)(W2,{value:eY,children:(0,rE.jsx)(ZC,{children:e})})})})})})})})}let eeR={poster:"wallart",carpet:"rugs"};function eeD(e){return"poster"===e||"carpet"===e}let eeP=new rw({defaultOptions:{queries:{gcTime:1/0,refetchOnMount:!1,refetchOnReconnect:!1,refetchOnWindowFocus:!1,retry:(e,t)=>{let r=function(e){if(ix(e))return e.response?.status}(t);return(void 0===r||!(r>=400)||!(r<500))&&e<2}}}});function ee_({type:e,src:t,tinuuid:r,name:n,height:i,width:a,language:s,dimensionUnit:o="m",displayUnit:l="cm",apiKey:c,source:u="default",showDialogCloseButton:d=!1,viewerSurface:h="inline",dialogPortalContainer:p=null,viewerDialogOpen:f=!0,onViewerDialogOpenChange:A,widgetSession:g}){let{i18n:m}=sf(),v=c?.trim()||void 0,b=r?.trim()||void 0,y=eeD(e)?eeR[e]:e,w=qN(y).takesDimensionProps?function(e,t,r="m"){return{width:qq(e??0,r),height:qq(t??0,r)}}(a,i,o):null;return(0,rx.useEffect)(()=>{eeD(e)&&eeR[e]},[e]),(0,rx.useEffect)(()=>{"string"==typeof s&&m.changeLanguage(s)},[m,s]),(0,rE.jsx)(rI,{client:eeP,children:(0,rE.jsx)(eeT,{src:t??null,tinuuid:b??null,type:y,viewerSurface:h,dialogPortalContainer:p,viewerDialogOpen:f,onViewerDialogOpenChange:A,name:n,width:w?.width??0,height:w?.height??0,displayUnit:l,apiKey:v,baseURL:"shopify"===u?V_:void 0,source:u,externalWidgetSession:g,children:(0,rE.jsx)(eeM,{showDialogCloseButton:d})})})}function eeL({type:e,src:t,tinuuid:r,width:n,height:i,dimensionUnit:a,displayUnit:s,name:o,language:l,apiKey:c,source:u,widgetSession:d,disableClose:h=!1,open:p,defaultOpen:f,onOpenChange:A}){let[g,m]=(0,rx.useState)(null),v="immersive-room"===Wv[eeD(e)?eeR[e]:e].chrome&&h,[b,y]=(0,rx.useState)(f??!1),w=p??b,[x,C]=(0,rx.useState)(w),E=w||x;(0,rx.useEffect)(()=>{w&&C(!0)},[w]);let S=(0,rE.jsx)(ee_,{type:e,src:t,tinuuid:r,name:o,height:i,width:n,dimensionUnit:a,displayUnit:s,language:l,apiKey:c,source:u,widgetSession:d,showDialogCloseButton:!v,viewerSurface:"dialog",dialogPortalContainer:g,viewerDialogOpen:w,onViewerDialogOpenChange:function(e){(e||!v)&&(void 0===p&&y(e),A?.(e))}});return(0,rE.jsxs)(rE.Fragment,{children:[(0,am.createPortal)((0,rE.jsx)("style",{children:VI.A}),document.head),(0,am.createPortal)((0,rE.jsxs)(s_.div,{"data-neurodyn-room-viewer-root":"",style:{display:"block",letterSpacing:"normal",zIndex:0x7fffffff},children:[(0,rE.jsx)("style",{children:":host{display:block!important;visibility:visible!important}"}),(0,rE.jsx)("style",{children:VD}),(0,rE.jsx)("div",{ref:m}),g&&(0,rE.jsx)(VM,{root:g,storageKey:"neurodyn-theme",defaultTheme:"light",children:(0,rE.jsx)(sA,{i18n:Vk,children:E&&S})})]}),document.body)]})}We({baseURL:"https://api.neurodyn.ai/v1/"}),VY({baseURL:"https://api.neurodyn.ai/"});let eeN=iQ({clientName:"API node client",configureFunctionName:"configureNodeApiClient",defaultBaseURL:"https://api.vizbl.com"});eeN.configureClientRuntime,eeN.configureAccessTokenResolverRuntime,eeN.configureHeadersResolverRuntime,eeN.configureUnauthorizedHandlerRuntime,eeN.isClientConfiguredRuntime,eeN.assertClientConfiguredRuntime,eeN.resetClientForTestsRuntime;let eeF=eeN.requestRuntime;async function eeO(e){return eeF(e)}async function eeQ(e,t={}){let{client:r=eeO,...n}=t;return(await r({method:"POST",url:"/public/widget/activate-wallart",params:e,...n})).data}eeN.requestWithoutUnauthorizedRecovery,eeN.addResponseInterceptorRuntime,(eJ=tP||(tP={})).assertEqual=e=>{},eJ.assertIs=function(e){},eJ.assertNever=function(e){throw Error()},eJ.arrayToEnum=e=>{let t={};for(let r of e)t[r]=r;return t},eJ.getValidEnumValues=e=>{let t=eJ.objectKeys(e).filter(t=>"number"!=typeof e[e[t]]),r={};for(let n of t)r[n]=e[n];return eJ.objectValues(r)},eJ.objectValues=e=>eJ.objectKeys(e).map(function(t){return e[t]}),eJ.objectKeys="function"==typeof Object.keys?e=>Object.keys(e):e=>{let t=[];for(let r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.push(r);return t},eJ.find=(e,t)=>{for(let r of e)if(t(r))return r},eJ.isInteger="function"==typeof Number.isInteger?e=>Number.isInteger(e):e=>"number"==typeof e&&Number.isFinite(e)&&Math.floor(e)===e,eJ.joinValues=function(e,t=" | "){return e.map(e=>"string"==typeof e?`'${e}'`:e).join(t)},eJ.jsonStringifyReplacer=(e,t)=>"bigint"==typeof t?t.toString():t,(t_||(t_={})).mergeShapes=(e,t)=>({...e,...t});let eeU=tP.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),eez=e=>{switch(typeof e){case"undefined":return eeU.undefined;case"string":return eeU.string;case"number":return Number.isNaN(e)?eeU.nan:eeU.number;case"boolean":return eeU.boolean;case"function":return eeU.function;case"bigint":return eeU.bigint;case"symbol":return eeU.symbol;case"object":if(Array.isArray(e))return eeU.array;if(null===e)return eeU.null;if(e.then&&"function"==typeof e.then&&e.catch&&"function"==typeof e.catch)return eeU.promise;if("u">typeof Map&&e instanceof Map)return eeU.map;if("u">typeof Set&&e instanceof Set)return eeU.set;if("u">typeof Date&&e instanceof Date)return eeU.date;return eeU.object;default:return eeU.unknown}},eej=tP.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]);class eeG 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 eeG))throw Error(`Not a ZodError: ${e}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,tP.jsonStringifyReplacer,2)}get isEmpty(){return 0===this.issues.length}flatten(e=e=>e.message){let t={},r=[];for(let n of this.issues)if(n.path.length>0){let r=n.path[0];t[r]=t[r]||[],t[r].push(e(n))}else r.push(e(n));return{formErrors:r,fieldErrors:t}}get formErrors(){return this.flatten()}}eeG.create=e=>new eeG(e);let eeH=(e,t)=>{let r;switch(e.code){case eej.invalid_type:r=e.received===eeU.undefined?"Required":`Expected ${e.expected}, received ${e.received}`;break;case eej.invalid_literal:r=`Invalid literal value, expected ${JSON.stringify(e.expected,tP.jsonStringifyReplacer)}`;break;case eej.unrecognized_keys:r=`Unrecognized key(s) in object: ${tP.joinValues(e.keys,", ")}`;break;case eej.invalid_union:r="Invalid input";break;case eej.invalid_union_discriminator:r=`Invalid discriminator value. Expected ${tP.joinValues(e.options)}`;break;case eej.invalid_enum_value:r=`Invalid enum value. Expected ${tP.joinValues(e.options)}, received '${e.received}'`;break;case eej.invalid_arguments:r="Invalid function arguments";break;case eej.invalid_return_type:r="Invalid function return type";break;case eej.invalid_date:r="Invalid date";break;case eej.invalid_string:"object"==typeof e.validation?"includes"in e.validation?(r=`Invalid input: must include "${e.validation.includes}"`,"number"==typeof e.validation.position&&(r=`${r} at one or more positions greater than or equal to ${e.validation.position}`)):"startsWith"in e.validation?r=`Invalid input: must start with "${e.validation.startsWith}"`:"endsWith"in e.validation?r=`Invalid input: must end with "${e.validation.endsWith}"`:tP.assertNever(e.validation):r="regex"!==e.validation?`Invalid ${e.validation}`:"Invalid";break;case eej.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 eej.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 eej.custom:r="Invalid input";break;case eej.invalid_intersection_types:r="Intersection results could not be merged";break;case eej.not_multiple_of:r=`Number must be a multiple of ${e.multipleOf}`;break;case eej.not_finite:r="Number must be finite";break;default:r=t.defaultError,tP.assertNever(e)}return{message:r}};(eY=tL||(tL={})).errToObj=e=>"string"==typeof e?{message:e}:e||{},eY.toString=e=>"string"==typeof e?e:e?.message;let eeV=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 eeW(e,t){let r=eeV({issueData:t,data:e.data,path:e.path,errorMaps:[e.common.contextualErrorMap,e.schemaErrorMap,eeH,void 0].filter(e=>!!e)});e.common.issues.push(r)}class eeq{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 eeK;"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 eeq.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 eeK;"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 eeK=Object.freeze({status:"aborted"}),eeJ=e=>({status:"dirty",value:e}),eeY=e=>({status:"valid",value:e}),eeX=e=>"u">typeof Promise&&e instanceof Promise;class eeZ{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 ee$=(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 eeG(e.common.issues);return this._error=t,this._error}}};function ee0(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 ee1{get description(){return this._def.description}_getType(e){return eez(e.data)}_getOrReturnCtx(e,t){return t||{common:e.parent.common,data:e.data,parsedType:eez(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new eeq,ctx:{common:e.parent.common,data:e.data,parsedType:eez(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){let t=this._parse(e);if(eeX(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:eez(e)},n=this._parseSync({data:e,path:r.path,parent:r});return ee$(r,n)}"~validate"(e){let t={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:eez(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:eez(e)},n=this._parse({data:e,path:r.path,parent:r});return ee$(r,await (eeX(n)?n:Promise.resolve(n)))}refine(e,t){return this._refinement((r,n)=>{let i=e(r),a=()=>n.addIssue({code:eej.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 etO({schema:this,typeName:tN.ZodEffects,effect:{type:"refinement",refinement:e}})}superRefine(e){return this._refinement(e)}constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:e=>this["~validate"](e)}}optional(){return etQ.create(this,this._def)}nullable(){return etU.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return etw.create(this)}promise(){return etF.create(this,this._def)}or(e){return etC.create([this,e],this._def)}and(e){return etM.create(this,e,this._def)}transform(e){return new etO({...ee0(this._def),schema:this,typeName:tN.ZodEffects,effect:{type:"transform",transform:e}})}default(e){return new etz({...ee0(this._def),innerType:this,defaultValue:"function"==typeof e?e:()=>e,typeName:tN.ZodDefault})}brand(){return new etH({typeName:tN.ZodBranded,type:this,...ee0(this._def)})}catch(e){return new etj({...ee0(this._def),innerType:this,catchValue:"function"==typeof e?e:()=>e,typeName:tN.ZodCatch})}describe(e){return new this.constructor({...this._def,description:e})}pipe(e){return etV.create(this,e)}readonly(){return etW.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}let ee2=/^c[^\s-]{8,}$/i,ee3=/^[0-9a-z]+$/,ee9=/^[0-9A-HJKMNP-TV-Z]{26}$/i,ee4=/^[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,ee5=/^[a-z0-9_-]{21}$/i,ee8=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,ee6=/^[-+]?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)?)??$/,ee7=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,ete=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,ett=/^(?:(?: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])$/,etr=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,etn=/^(([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])$/,eti=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,eta=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,ets="((\\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])))",eto=RegExp(`^${ets}$`);function etl(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 etc extends ee1{_parse(e){var t,r,n,i;let a;if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==eeU.string){let t=this._getOrReturnCtx(e);return eeW(t,{code:eej.invalid_type,expected:eeU.string,received:t.parsedType}),eeK}let s=new eeq;for(let o of this._def.checks)if("min"===o.kind)e.data.length<o.value&&(eeW(a=this._getOrReturnCtx(e,a),{code:eej.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&&(eeW(a=this._getOrReturnCtx(e,a),{code:eej.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?eeW(a,{code:eej.too_big,maximum:o.value,type:"string",inclusive:!0,exact:!0,message:o.message}):r&&eeW(a,{code:eej.too_small,minimum:o.value,type:"string",inclusive:!0,exact:!0,message:o.message}),s.dirty())}else if("email"===o.kind)ee7.test(e.data)||(eeW(a=this._getOrReturnCtx(e,a),{validation:"email",code:eej.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)||(eeW(a=this._getOrReturnCtx(e,a),{validation:"emoji",code:eej.invalid_string,message:o.message}),s.dirty());else if("uuid"===o.kind)ee4.test(e.data)||(eeW(a=this._getOrReturnCtx(e,a),{validation:"uuid",code:eej.invalid_string,message:o.message}),s.dirty());else if("nanoid"===o.kind)ee5.test(e.data)||(eeW(a=this._getOrReturnCtx(e,a),{validation:"nanoid",code:eej.invalid_string,message:o.message}),s.dirty());else if("cuid"===o.kind)ee2.test(e.data)||(eeW(a=this._getOrReturnCtx(e,a),{validation:"cuid",code:eej.invalid_string,message:o.message}),s.dirty());else if("cuid2"===o.kind)ee3.test(e.data)||(eeW(a=this._getOrReturnCtx(e,a),{validation:"cuid2",code:eej.invalid_string,message:o.message}),s.dirty());else if("ulid"===o.kind)ee9.test(e.data)||(eeW(a=this._getOrReturnCtx(e,a),{validation:"ulid",code:eej.invalid_string,message:o.message}),s.dirty());else if("url"===o.kind)try{new URL(e.data)}catch{eeW(a=this._getOrReturnCtx(e,a),{validation:"url",code:eej.invalid_string,message:o.message}),s.dirty()}else"regex"===o.kind?(o.regex.lastIndex=0,o.regex.test(e.data)||(eeW(a=this._getOrReturnCtx(e,a),{validation:"regex",code:eej.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)||(eeW(a=this._getOrReturnCtx(e,a),{code:eej.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)||(eeW(a=this._getOrReturnCtx(e,a),{code:eej.invalid_string,validation:{startsWith:o.value},message:o.message}),s.dirty()):"endsWith"===o.kind?e.data.endsWith(o.value)||(eeW(a=this._getOrReturnCtx(e,a),{code:eej.invalid_string,validation:{endsWith:o.value},message:o.message}),s.dirty()):"datetime"===o.kind?(function(e){let t=`${ets}T${etl(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)||(eeW(a=this._getOrReturnCtx(e,a),{code:eej.invalid_string,validation:"datetime",message:o.message}),s.dirty()):"date"===o.kind?eto.test(e.data)||(eeW(a=this._getOrReturnCtx(e,a),{code:eej.invalid_string,validation:"date",message:o.message}),s.dirty()):"time"===o.kind?RegExp(`^${etl(o)}$`).test(e.data)||(eeW(a=this._getOrReturnCtx(e,a),{code:eej.invalid_string,validation:"time",message:o.message}),s.dirty()):"duration"===o.kind?ee6.test(e.data)||(eeW(a=this._getOrReturnCtx(e,a),{validation:"duration",code:eej.invalid_string,message:o.message}),s.dirty()):"ip"===o.kind?(t=e.data,!(("v4"===(r=o.version)||!r)&&ete.test(t)||("v6"===r||!r)&&etr.test(t))&&1&&(eeW(a=this._getOrReturnCtx(e,a),{validation:"ip",code:eej.invalid_string,message:o.message}),s.dirty())):"jwt"===o.kind?!function(e,t){if(!ee8.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)&&(eeW(a=this._getOrReturnCtx(e,a),{validation:"jwt",code:eej.invalid_string,message:o.message}),s.dirty()):"cidr"===o.kind?(n=e.data,!(("v4"===(i=o.version)||!i)&&ett.test(n)||("v6"===i||!i)&&etn.test(n))&&1&&(eeW(a=this._getOrReturnCtx(e,a),{validation:"cidr",code:eej.invalid_string,message:o.message}),s.dirty())):"base64"===o.kind?eti.test(e.data)||(eeW(a=this._getOrReturnCtx(e,a),{validation:"base64",code:eej.invalid_string,message:o.message}),s.dirty()):"base64url"===o.kind?eta.test(e.data)||(eeW(a=this._getOrReturnCtx(e,a),{validation:"base64url",code:eej.invalid_string,message:o.message}),s.dirty()):tP.assertNever(o);return{status:s.value,value:e.data}}_regex(e,t,r){return this.refinement(t=>e.test(t),{validation:t,code:eej.invalid_string,...tL.errToObj(r)})}_addCheck(e){return new etc({...this._def,checks:[...this._def.checks,e]})}email(e){return this._addCheck({kind:"email",...tL.errToObj(e)})}url(e){return this._addCheck({kind:"url",...tL.errToObj(e)})}emoji(e){return this._addCheck({kind:"emoji",...tL.errToObj(e)})}uuid(e){return this._addCheck({kind:"uuid",...tL.errToObj(e)})}nanoid(e){return this._addCheck({kind:"nanoid",...tL.errToObj(e)})}cuid(e){return this._addCheck({kind:"cuid",...tL.errToObj(e)})}cuid2(e){return this._addCheck({kind:"cuid2",...tL.errToObj(e)})}ulid(e){return this._addCheck({kind:"ulid",...tL.errToObj(e)})}base64(e){return this._addCheck({kind:"base64",...tL.errToObj(e)})}base64url(e){return this._addCheck({kind:"base64url",...tL.errToObj(e)})}jwt(e){return this._addCheck({kind:"jwt",...tL.errToObj(e)})}ip(e){return this._addCheck({kind:"ip",...tL.errToObj(e)})}cidr(e){return this._addCheck({kind:"cidr",...tL.errToObj(e)})}datetime(e){return"string"==typeof e?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:e}):this._addCheck({kind:"datetime",precision:void 0===e?.precision?null:e?.precision,offset:e?.offset??!1,local:e?.local??!1,...tL.errToObj(e?.message)})}date(e){return this._addCheck({kind:"date",message:e})}time(e){return"string"==typeof e?this._addCheck({kind:"time",precision:null,message:e}):this._addCheck({kind:"time",precision:void 0===e?.precision?null:e?.precision,...tL.errToObj(e?.message)})}duration(e){return this._addCheck({kind:"duration",...tL.errToObj(e)})}regex(e,t){return this._addCheck({kind:"regex",regex:e,...tL.errToObj(t)})}includes(e,t){return this._addCheck({kind:"includes",value:e,position:t?.position,...tL.errToObj(t?.message)})}startsWith(e,t){return this._addCheck({kind:"startsWith",value:e,...tL.errToObj(t)})}endsWith(e,t){return this._addCheck({kind:"endsWith",value:e,...tL.errToObj(t)})}min(e,t){return this._addCheck({kind:"min",value:e,...tL.errToObj(t)})}max(e,t){return this._addCheck({kind:"max",value:e,...tL.errToObj(t)})}length(e,t){return this._addCheck({kind:"length",value:e,...tL.errToObj(t)})}nonempty(e){return this.min(1,tL.errToObj(e))}trim(){return new etc({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new etc({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new etc({...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}}etc.create=e=>new etc({checks:[],typeName:tN.ZodString,coerce:e?.coerce??!1,...ee0(e)});class etu extends ee1{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)!==eeU.number){let t=this._getOrReturnCtx(e);return eeW(t,{code:eej.invalid_type,expected:eeU.number,received:t.parsedType}),eeK}let r=new eeq;for(let n of this._def.checks)"int"===n.kind?tP.isInteger(e.data)||(eeW(t=this._getOrReturnCtx(e,t),{code:eej.invalid_type,expected:"integer",received:"float",message:n.message}),r.dirty()):"min"===n.kind?(n.inclusive?e.data<n.value:e.data<=n.value)&&(eeW(t=this._getOrReturnCtx(e,t),{code:eej.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)&&(eeW(t=this._getOrReturnCtx(e,t),{code:eej.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)&&(eeW(t=this._getOrReturnCtx(e,t),{code:eej.not_multiple_of,multipleOf:n.value,message:n.message}),r.dirty()):"finite"===n.kind?Number.isFinite(e.data)||(eeW(t=this._getOrReturnCtx(e,t),{code:eej.not_finite,message:n.message}),r.dirty()):tP.assertNever(n);return{status:r.value,value:e.data}}gte(e,t){return this.setLimit("min",e,!0,tL.toString(t))}gt(e,t){return this.setLimit("min",e,!1,tL.toString(t))}lte(e,t){return this.setLimit("max",e,!0,tL.toString(t))}lt(e,t){return this.setLimit("max",e,!1,tL.toString(t))}setLimit(e,t,r,n){return new etu({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:r,message:tL.toString(n)}]})}_addCheck(e){return new etu({...this._def,checks:[...this._def.checks,e]})}int(e){return this._addCheck({kind:"int",message:tL.toString(e)})}positive(e){return this._addCheck({kind:"min",value:0,inclusive:!1,message:tL.toString(e)})}negative(e){return this._addCheck({kind:"max",value:0,inclusive:!1,message:tL.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:0,inclusive:!0,message:tL.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:0,inclusive:!0,message:tL.toString(e)})}multipleOf(e,t){return this._addCheck({kind:"multipleOf",value:e,message:tL.toString(t)})}finite(e){return this._addCheck({kind:"finite",message:tL.toString(e)})}safe(e){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:tL.toString(e)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:tL.toString(e)})}get minValue(){let e=null;for(let t of this._def.checks)"min"===t.kind&&(null===e||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)"max"===t.kind&&(null===e||t.value<e)&&(e=t.value);return e}get isInt(){return!!this._def.checks.find(e=>"int"===e.kind||"multipleOf"===e.kind&&tP.isInteger(e.value))}get isFinite(){let e=null,t=null;for(let r of this._def.checks)if("finite"===r.kind||"int"===r.kind||"multipleOf"===r.kind)return!0;else"min"===r.kind?(null===t||r.value>t)&&(t=r.value):"max"===r.kind&&(null===e||r.value<e)&&(e=r.value);return Number.isFinite(t)&&Number.isFinite(e)}}etu.create=e=>new etu({checks:[],typeName:tN.ZodNumber,coerce:e?.coerce||!1,...ee0(e)});class etd extends ee1{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)!==eeU.bigint)return this._getInvalidInput(e);let r=new eeq;for(let n of this._def.checks)"min"===n.kind?(n.inclusive?e.data<n.value:e.data<=n.value)&&(eeW(t=this._getOrReturnCtx(e,t),{code:eej.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)&&(eeW(t=this._getOrReturnCtx(e,t),{code:eej.too_big,type:"bigint",maximum:n.value,inclusive:n.inclusive,message:n.message}),r.dirty()):"multipleOf"===n.kind?e.data%n.value!==BigInt(0)&&(eeW(t=this._getOrReturnCtx(e,t),{code:eej.not_multiple_of,multipleOf:n.value,message:n.message}),r.dirty()):tP.assertNever(n);return{status:r.value,value:e.data}}_getInvalidInput(e){let t=this._getOrReturnCtx(e);return eeW(t,{code:eej.invalid_type,expected:eeU.bigint,received:t.parsedType}),eeK}gte(e,t){return this.setLimit("min",e,!0,tL.toString(t))}gt(e,t){return this.setLimit("min",e,!1,tL.toString(t))}lte(e,t){return this.setLimit("max",e,!0,tL.toString(t))}lt(e,t){return this.setLimit("max",e,!1,tL.toString(t))}setLimit(e,t,r,n){return new etd({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:r,message:tL.toString(n)}]})}_addCheck(e){return new etd({...this._def,checks:[...this._def.checks,e]})}positive(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:tL.toString(e)})}negative(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:tL.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:tL.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:tL.toString(e)})}multipleOf(e,t){return this._addCheck({kind:"multipleOf",value:e,message:tL.toString(t)})}get minValue(){let e=null;for(let t of this._def.checks)"min"===t.kind&&(null===e||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)"max"===t.kind&&(null===e||t.value<e)&&(e=t.value);return e}}etd.create=e=>new etd({checks:[],typeName:tN.ZodBigInt,coerce:e?.coerce??!1,...ee0(e)});class eth extends ee1{_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==eeU.boolean){let t=this._getOrReturnCtx(e);return eeW(t,{code:eej.invalid_type,expected:eeU.boolean,received:t.parsedType}),eeK}return eeY(e.data)}}eth.create=e=>new eth({typeName:tN.ZodBoolean,coerce:e?.coerce||!1,...ee0(e)});class etp extends ee1{_parse(e){let t;if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==eeU.date){let t=this._getOrReturnCtx(e);return eeW(t,{code:eej.invalid_type,expected:eeU.date,received:t.parsedType}),eeK}if(Number.isNaN(e.data.getTime()))return eeW(this._getOrReturnCtx(e),{code:eej.invalid_date}),eeK;let r=new eeq;for(let n of this._def.checks)"min"===n.kind?e.data.getTime()<n.value&&(eeW(t=this._getOrReturnCtx(e,t),{code:eej.too_small,message:n.message,inclusive:!0,exact:!1,minimum:n.value,type:"date"}),r.dirty()):"max"===n.kind?e.data.getTime()>n.value&&(eeW(t=this._getOrReturnCtx(e,t),{code:eej.too_big,message:n.message,inclusive:!0,exact:!1,maximum:n.value,type:"date"}),r.dirty()):tP.assertNever(n);return{status:r.value,value:new Date(e.data.getTime())}}_addCheck(e){return new etp({...this._def,checks:[...this._def.checks,e]})}min(e,t){return this._addCheck({kind:"min",value:e.getTime(),message:tL.toString(t)})}max(e,t){return this._addCheck({kind:"max",value:e.getTime(),message:tL.toString(t)})}get minDate(){let e=null;for(let t of this._def.checks)"min"===t.kind&&(null===e||t.value>e)&&(e=t.value);return null!=e?new Date(e):null}get maxDate(){let e=null;for(let t of this._def.checks)"max"===t.kind&&(null===e||t.value<e)&&(e=t.value);return null!=e?new Date(e):null}}etp.create=e=>new etp({checks:[],coerce:e?.coerce||!1,typeName:tN.ZodDate,...ee0(e)});class etf extends ee1{_parse(e){if(this._getType(e)!==eeU.symbol){let t=this._getOrReturnCtx(e);return eeW(t,{code:eej.invalid_type,expected:eeU.symbol,received:t.parsedType}),eeK}return eeY(e.data)}}etf.create=e=>new etf({typeName:tN.ZodSymbol,...ee0(e)});class etA extends ee1{_parse(e){if(this._getType(e)!==eeU.undefined){let t=this._getOrReturnCtx(e);return eeW(t,{code:eej.invalid_type,expected:eeU.undefined,received:t.parsedType}),eeK}return eeY(e.data)}}etA.create=e=>new etA({typeName:tN.ZodUndefined,...ee0(e)});class etg extends ee1{_parse(e){if(this._getType(e)!==eeU.null){let t=this._getOrReturnCtx(e);return eeW(t,{code:eej.invalid_type,expected:eeU.null,received:t.parsedType}),eeK}return eeY(e.data)}}etg.create=e=>new etg({typeName:tN.ZodNull,...ee0(e)});class etm extends ee1{constructor(){super(...arguments),this._any=!0}_parse(e){return eeY(e.data)}}etm.create=e=>new etm({typeName:tN.ZodAny,...ee0(e)});class etv extends ee1{constructor(){super(...arguments),this._unknown=!0}_parse(e){return eeY(e.data)}}etv.create=e=>new etv({typeName:tN.ZodUnknown,...ee0(e)});class etb extends ee1{_parse(e){let t=this._getOrReturnCtx(e);return eeW(t,{code:eej.invalid_type,expected:eeU.never,received:t.parsedType}),eeK}}etb.create=e=>new etb({typeName:tN.ZodNever,...ee0(e)});class ety extends ee1{_parse(e){if(this._getType(e)!==eeU.undefined){let t=this._getOrReturnCtx(e);return eeW(t,{code:eej.invalid_type,expected:eeU.void,received:t.parsedType}),eeK}return eeY(e.data)}}ety.create=e=>new ety({typeName:tN.ZodVoid,...ee0(e)});class etw extends ee1{_parse(e){let{ctx:t,status:r}=this._processInputParams(e),n=this._def;if(t.parsedType!==eeU.array)return eeW(t,{code:eej.invalid_type,expected:eeU.array,received:t.parsedType}),eeK;if(null!==n.exactLength){let e=t.data.length>n.exactLength.value,i=t.data.length<n.exactLength.value;(e||i)&&(eeW(t,{code:e?eej.too_big:eej.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&&(eeW(t,{code:eej.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&&(eeW(t,{code:eej.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 eeZ(t,e,t.path,r)))).then(e=>eeq.mergeArray(r,e));let i=[...t.data].map((e,r)=>n.type._parseSync(new eeZ(t,e,t.path,r)));return eeq.mergeArray(r,i)}get element(){return this._def.type}min(e,t){return new etw({...this._def,minLength:{value:e,message:tL.toString(t)}})}max(e,t){return new etw({...this._def,maxLength:{value:e,message:tL.toString(t)}})}length(e,t){return new etw({...this._def,exactLength:{value:e,message:tL.toString(t)}})}nonempty(e){return this.min(1,e)}}etw.create=(e,t)=>new etw({type:e,minLength:null,maxLength:null,exactLength:null,typeName:tN.ZodArray,...ee0(t)});class etx extends ee1{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(null!==this._cached)return this._cached;let e=this._def.shape(),t=tP.objectKeys(e);return this._cached={shape:e,keys:t},this._cached}_parse(e){if(this._getType(e)!==eeU.object){let t=this._getOrReturnCtx(e);return eeW(t,{code:eej.invalid_type,expected:eeU.object,received:t.parsedType}),eeK}let{status:t,ctx:r}=this._processInputParams(e),{shape:n,keys:i}=this._getCached(),a=[];if(!(this._def.catchall instanceof etb&&"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 eeZ(r,i,r.path,e)),alwaysSet:e in r.data})}if(this._def.catchall instanceof etb){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&&(eeW(r,{code:eej.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 eeZ(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=>eeq.mergeObjectSync(t,e)):eeq.mergeObjectSync(t,s)}get shape(){return this._def.shape()}strict(e){return tL.errToObj,new etx({...this._def,unknownKeys:"strict",...void 0!==e?{errorMap:(t,r)=>{let n=this._def.errorMap?.(t,r).message??r.defaultError;return"unrecognized_keys"===t.code?{message:tL.errToObj(e).message??n}:{message:n}}}:{}})}strip(){return new etx({...this._def,unknownKeys:"strip"})}passthrough(){return new etx({...this._def,unknownKeys:"passthrough"})}extend(e){return new etx({...this._def,shape:()=>({...this._def.shape(),...e})})}merge(e){return new etx({unknownKeys:e._def.unknownKeys,catchall:e._def.catchall,shape:()=>({...this._def.shape(),...e._def.shape()}),typeName:tN.ZodObject})}setKey(e,t){return this.augment({[e]:t})}catchall(e){return new etx({...this._def,catchall:e})}pick(e){let t={};for(let r of tP.objectKeys(e))e[r]&&this.shape[r]&&(t[r]=this.shape[r]);return new etx({...this._def,shape:()=>t})}omit(e){let t={};for(let r of tP.objectKeys(this.shape))e[r]||(t[r]=this.shape[r]);return new etx({...this._def,shape:()=>t})}deepPartial(){return function e(t){if(t instanceof etx){let r={};for(let n in t.shape){let i=t.shape[n];r[n]=etQ.create(e(i))}return new etx({...t._def,shape:()=>r})}if(t instanceof etw)return new etw({...t._def,type:e(t.element)});if(t instanceof etQ)return etQ.create(e(t.unwrap()));if(t instanceof etU)return etU.create(e(t.unwrap()));if(t instanceof etI)return etI.create(t.items.map(t=>e(t)));else return t}(this)}partial(e){let t={};for(let r of tP.objectKeys(this.shape)){let n=this.shape[r];e&&!e[r]?t[r]=n:t[r]=n.optional()}return new etx({...this._def,shape:()=>t})}required(e){let t={};for(let r of tP.objectKeys(this.shape))if(e&&!e[r])t[r]=this.shape[r];else{let e=this.shape[r];for(;e instanceof etQ;)e=e._def.innerType;t[r]=e}return new etx({...this._def,shape:()=>t})}keyof(){return et_(tP.objectKeys(this.shape))}}etx.create=(e,t)=>new etx({shape:()=>e,unknownKeys:"strip",catchall:etb.create(),typeName:tN.ZodObject,...ee0(t)}),etx.strictCreate=(e,t)=>new etx({shape:()=>e,unknownKeys:"strict",catchall:etb.create(),typeName:tN.ZodObject,...ee0(t)}),etx.lazycreate=(e,t)=>new etx({shape:e,unknownKeys:"strip",catchall:etb.create(),typeName:tN.ZodObject,...ee0(t)});class etC extends ee1{_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 eeG(e.ctx.common.issues));return eeW(t,{code:eej.invalid_union,unionErrors:r}),eeK});{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 eeG(e));return eeW(t,{code:eej.invalid_union,unionErrors:i}),eeK}}get options(){return this._def.options}}etC.create=(e,t)=>new etC({options:e,typeName:tN.ZodUnion,...ee0(t)});let etE=e=>{if(e instanceof etD)return etE(e.schema);if(e instanceof etO)return etE(e.innerType());if(e instanceof etP)return[e.value];if(e instanceof etL)return e.options;if(e instanceof etN)return tP.objectValues(e.enum);else if(e instanceof etz)return etE(e._def.innerType);else if(e instanceof etA)return[void 0];else if(e instanceof etg)return[null];else if(e instanceof etQ)return[void 0,...etE(e.unwrap())];else if(e instanceof etU)return[null,...etE(e.unwrap())];else if(e instanceof etH)return etE(e.unwrap());else if(e instanceof etW)return etE(e.unwrap());else if(e instanceof etj)return etE(e._def.innerType);else return[]};class etS extends ee1{_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==eeU.object)return eeW(t,{code:eej.invalid_type,expected:eeU.object,received:t.parsedType}),eeK;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}):(eeW(t,{code:eej.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[r]}),eeK)}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=etE(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 etS({typeName:tN.ZodDiscriminatedUnion,discriminator:e,options:t,optionsMap:n,...ee0(r)})}}class etM extends ee1{_parse(e){let{status:t,ctx:r}=this._processInputParams(e),n=(e,n)=>{if("aborted"===e.status||"aborted"===n.status)return eeK;let i=function e(t,r){let n=eez(t),i=eez(r);if(t===r)return{valid:!0,data:t};if(n===eeU.object&&i===eeU.object){let n=tP.objectKeys(r),i=tP.objectKeys(t).filter(e=>-1!==n.indexOf(e)),a={...t,...r};for(let n of i){let i=e(t[n],r[n]);if(!i.valid)return{valid:!1};a[n]=i.data}return{valid:!0,data:a}}if(n===eeU.array&&i===eeU.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===eeU.date&&i===eeU.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}):(eeW(r,{code:eej.invalid_intersection_types}),eeK)};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}))}}etM.create=(e,t,r)=>new etM({left:e,right:t,typeName:tN.ZodIntersection,...ee0(r)});class etI extends ee1{_parse(e){let{status:t,ctx:r}=this._processInputParams(e);if(r.parsedType!==eeU.array)return eeW(r,{code:eej.invalid_type,expected:eeU.array,received:r.parsedType}),eeK;if(r.data.length<this._def.items.length)return eeW(r,{code:eej.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),eeK;!this._def.rest&&r.data.length>this._def.items.length&&(eeW(r,{code:eej.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 eeZ(r,e,r.path,t)):null}).filter(e=>!!e);return r.common.async?Promise.all(n).then(e=>eeq.mergeArray(t,e)):eeq.mergeArray(t,n)}get items(){return this._def.items}rest(e){return new etI({...this._def,rest:e})}}etI.create=(e,t)=>{if(!Array.isArray(e))throw Error("You must pass an array of schemas to z.tuple([ ... ])");return new etI({items:e,typeName:tN.ZodTuple,rest:null,...ee0(t)})};class etB extends ee1{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!==eeU.object)return eeW(r,{code:eej.invalid_type,expected:eeU.object,received:r.parsedType}),eeK;let n=[],i=this._def.keyType,a=this._def.valueType;for(let e in r.data)n.push({key:i._parse(new eeZ(r,e,r.path,e)),value:a._parse(new eeZ(r,r.data[e],r.path,e)),alwaysSet:e in r.data});return r.common.async?eeq.mergeObjectAsync(t,n):eeq.mergeObjectSync(t,n)}get element(){return this._def.valueType}static create(e,t,r){return new etB(t instanceof ee1?{keyType:e,valueType:t,typeName:tN.ZodRecord,...ee0(r)}:{keyType:etc.create(),valueType:e,typeName:tN.ZodRecord,...ee0(t)})}}class etk extends ee1{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!==eeU.map)return eeW(r,{code:eej.invalid_type,expected:eeU.map,received:r.parsedType}),eeK;let n=this._def.keyType,i=this._def.valueType,a=[...r.data.entries()].map(([e,t],a)=>({key:n._parse(new eeZ(r,e,r.path,[a,"key"])),value:i._parse(new eeZ(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 eeK;("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 eeK;("dirty"===n.status||"dirty"===i.status)&&t.dirty(),e.set(n.value,i.value)}return{status:t.value,value:e}}}}etk.create=(e,t,r)=>new etk({valueType:t,keyType:e,typeName:tN.ZodMap,...ee0(r)});class etT extends ee1{_parse(e){let{status:t,ctx:r}=this._processInputParams(e);if(r.parsedType!==eeU.set)return eeW(r,{code:eej.invalid_type,expected:eeU.set,received:r.parsedType}),eeK;let n=this._def;null!==n.minSize&&r.data.size<n.minSize.value&&(eeW(r,{code:eej.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&&(eeW(r,{code:eej.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 eeK;"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 eeZ(r,e,r.path,t)));return r.common.async?Promise.all(s).then(e=>a(e)):a(s)}min(e,t){return new etT({...this._def,minSize:{value:e,message:tL.toString(t)}})}max(e,t){return new etT({...this._def,maxSize:{value:e,message:tL.toString(t)}})}size(e,t){return this.min(e,t).max(e,t)}nonempty(e){return this.min(1,e)}}etT.create=(e,t)=>new etT({valueType:e,minSize:null,maxSize:null,typeName:tN.ZodSet,...ee0(t)});class etR extends ee1{constructor(){super(...arguments),this.validate=this.implement}_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==eeU.function)return eeW(t,{code:eej.invalid_type,expected:eeU.function,received:t.parsedType}),eeK;function r(e,r){return eeV({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,eeH,eeH].filter(e=>!!e),issueData:{code:eej.invalid_arguments,argumentsError:r}})}function n(e,r){return eeV({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,eeH,eeH].filter(e=>!!e),issueData:{code:eej.invalid_return_type,returnTypeError:r}})}let i={errorMap:t.common.contextualErrorMap},a=t.data;if(this._def.returns instanceof etF){let e=this;return eeY(async function(...t){let s=new eeG([]),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 eeY(function(...t){let s=e._def.args.safeParse(t,i);if(!s.success)throw new eeG([r(t,s.error)]);let o=Reflect.apply(a,this,s.data),l=e._def.returns.safeParse(o,i);if(!l.success)throw new eeG([n(o,l.error)]);return l.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...e){return new etR({...this._def,args:etI.create(e).rest(etv.create())})}returns(e){return new etR({...this._def,returns:e})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}static create(e,t,r){return new etR({args:e||etI.create([]).rest(etv.create()),returns:t||etv.create(),typeName:tN.ZodFunction,...ee0(r)})}}class etD extends ee1{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})}}etD.create=(e,t)=>new etD({getter:e,typeName:tN.ZodLazy,...ee0(t)});class etP extends ee1{_parse(e){if(e.data!==this._def.value){let t=this._getOrReturnCtx(e);return eeW(t,{received:t.data,code:eej.invalid_literal,expected:this._def.value}),eeK}return{status:"valid",value:e.data}}get value(){return this._def.value}}function et_(e,t){return new etL({values:e,typeName:tN.ZodEnum,...ee0(t)})}etP.create=(e,t)=>new etP({value:e,typeName:tN.ZodLiteral,...ee0(t)});class etL extends ee1{_parse(e){if("string"!=typeof e.data){let t=this._getOrReturnCtx(e),r=this._def.values;return eeW(t,{expected:tP.joinValues(r),received:t.parsedType,code:eej.invalid_type}),eeK}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 eeW(t,{received:t.data,code:eej.invalid_enum_value,options:r}),eeK}return eeY(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 etL.create(e,{...this._def,...t})}exclude(e,t=this._def){return etL.create(this.options.filter(t=>!e.includes(t)),{...this._def,...t})}}etL.create=et_;class etN extends ee1{_parse(e){let t=tP.getValidEnumValues(this._def.values),r=this._getOrReturnCtx(e);if(r.parsedType!==eeU.string&&r.parsedType!==eeU.number){let e=tP.objectValues(t);return eeW(r,{expected:tP.joinValues(e),received:r.parsedType,code:eej.invalid_type}),eeK}if(this._cache||(this._cache=new Set(tP.getValidEnumValues(this._def.values))),!this._cache.has(e.data)){let e=tP.objectValues(t);return eeW(r,{received:r.data,code:eej.invalid_enum_value,options:e}),eeK}return eeY(e.data)}get enum(){return this._def.values}}etN.create=(e,t)=>new etN({values:e,typeName:tN.ZodNativeEnum,...ee0(t)});class etF extends ee1{unwrap(){return this._def.type}_parse(e){let{ctx:t}=this._processInputParams(e);return t.parsedType!==eeU.promise&&!1===t.common.async?(eeW(t,{code:eej.invalid_type,expected:eeU.promise,received:t.parsedType}),eeK):eeY((t.parsedType===eeU.promise?t.data:Promise.resolve(t.data)).then(e=>this._def.type.parseAsync(e,{path:t.path,errorMap:t.common.contextualErrorMap})))}}etF.create=(e,t)=>new etF({type:e,typeName:tN.ZodPromise,...ee0(t)});class etO extends ee1{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===tN.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){let{status:t,ctx:r}=this._processInputParams(e),n=this._def.effect||null,i={addIssue:e=>{eeW(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 eeK;let n=await this._def.schema._parseAsync({data:e,path:r.path,parent:r});return"aborted"===n.status?eeK:"dirty"===n.status||"dirty"===t.value?eeJ(n.value):n});{if("aborted"===t.value)return eeK;let n=this._def.schema._parseSync({data:e,path:r.path,parent:r});return"aborted"===n.status?eeK:"dirty"===n.status||"dirty"===t.value?eeJ(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?eeK:("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?eeK:("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?eeK: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 eeK;let a=n.transform(e.value,i);if(a instanceof Promise)throw Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:t.value,value:a}}tP.assertNever(n)}}etO.create=(e,t,r)=>new etO({schema:e,typeName:tN.ZodEffects,effect:t,...ee0(r)}),etO.createWithPreprocess=(e,t,r)=>new etO({schema:t,effect:{type:"preprocess",transform:e},typeName:tN.ZodEffects,...ee0(r)});class etQ extends ee1{_parse(e){return this._getType(e)===eeU.undefined?eeY(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}etQ.create=(e,t)=>new etQ({innerType:e,typeName:tN.ZodOptional,...ee0(t)});class etU extends ee1{_parse(e){return this._getType(e)===eeU.null?eeY(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}etU.create=(e,t)=>new etU({innerType:e,typeName:tN.ZodNullable,...ee0(t)});class etz extends ee1{_parse(e){let{ctx:t}=this._processInputParams(e),r=t.data;return t.parsedType===eeU.undefined&&(r=this._def.defaultValue()),this._def.innerType._parse({data:r,path:t.path,parent:t})}removeDefault(){return this._def.innerType}}etz.create=(e,t)=>new etz({innerType:e,typeName:tN.ZodDefault,defaultValue:"function"==typeof t.default?t.default:()=>t.default,...ee0(t)});class etj extends ee1{_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 eeX(n)?n.then(e=>({status:"valid",value:"valid"===e.status?e.value:this._def.catchValue({get error(){return new eeG(r.common.issues)},input:r.data})})):{status:"valid",value:"valid"===n.status?n.value:this._def.catchValue({get error(){return new eeG(r.common.issues)},input:r.data})}}removeCatch(){return this._def.innerType}}etj.create=(e,t)=>new etj({innerType:e,typeName:tN.ZodCatch,catchValue:"function"==typeof t.catch?t.catch:()=>t.catch,...ee0(t)});class etG extends ee1{_parse(e){if(this._getType(e)!==eeU.nan){let t=this._getOrReturnCtx(e);return eeW(t,{code:eej.invalid_type,expected:eeU.nan,received:t.parsedType}),eeK}return{status:"valid",value:e.data}}}etG.create=e=>new etG({typeName:tN.ZodNaN,...ee0(e)}),Symbol("zod_brand");class etH extends ee1{_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 etV extends ee1{_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?eeK:"dirty"===e.status?(t.dirty(),eeJ(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?eeK:"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 etV({in:e,out:t,typeName:tN.ZodPipeline})}}class etW extends ee1{_parse(e){let t=this._def.innerType._parse(e),r=e=>("valid"===e.status&&(e.value=Object.freeze(e.value)),e);return eeX(t)?t.then(e=>r(e)):r(t)}unwrap(){return this._def.innerType}}etW.create=(e,t)=>new etW({innerType:e,typeName:tN.ZodReadonly,...ee0(t)}),etx.lazycreate,(eX=tN||(tN={})).ZodString="ZodString",eX.ZodNumber="ZodNumber",eX.ZodNaN="ZodNaN",eX.ZodBigInt="ZodBigInt",eX.ZodBoolean="ZodBoolean",eX.ZodDate="ZodDate",eX.ZodSymbol="ZodSymbol",eX.ZodUndefined="ZodUndefined",eX.ZodNull="ZodNull",eX.ZodAny="ZodAny",eX.ZodUnknown="ZodUnknown",eX.ZodNever="ZodNever",eX.ZodVoid="ZodVoid",eX.ZodArray="ZodArray",eX.ZodObject="ZodObject",eX.ZodUnion="ZodUnion",eX.ZodDiscriminatedUnion="ZodDiscriminatedUnion",eX.ZodIntersection="ZodIntersection",eX.ZodTuple="ZodTuple",eX.ZodRecord="ZodRecord",eX.ZodMap="ZodMap",eX.ZodSet="ZodSet",eX.ZodFunction="ZodFunction",eX.ZodLazy="ZodLazy",eX.ZodLiteral="ZodLiteral",eX.ZodEnum="ZodEnum",eX.ZodEffects="ZodEffects",eX.ZodNativeEnum="ZodNativeEnum",eX.ZodOptional="ZodOptional",eX.ZodNullable="ZodNullable",eX.ZodDefault="ZodDefault",eX.ZodCatch="ZodCatch",eX.ZodPromise="ZodPromise",eX.ZodBranded="ZodBranded",eX.ZodPipeline="ZodPipeline",eX.ZodReadonly="ZodReadonly";let etq=etc.create,etK=etu.create;etG.create,etd.create;let etJ=eth.create;etp.create,etf.create,etA.create,etg.create,etm.create;let etY=etv.create;etb.create,ety.create,etw.create;let etX=etx.create;etx.strictCreate,etC.create,etS.create,etM.create,etI.create,etB.create,etk.create,etT.create,etR.create,etD.create,etP.create;let etZ=etL.create;etN.create,etF.create,etO.create,etQ.create,etU.create;let et$=etO.createWithPreprocess;etV.create;let et0=etZ(["cm","inch"]),et1=etZ(["different_fields","one_field"]),et2=etZ(["left_bottom","center","right_bottom","left_center","right_center"]),et3=etX({buttonLabel:etq(),backgroundColor:etq(),borderColor:etq(),textColor:etq(),borderRadius:etK(),borderWidth:etK()}),et9=etX({units:et0,productWidthAndHeight:et1,metafieldForWidth:etq().nullable(),metafieldForHeight:etq().nullable(),metafieldForWidthAndHeight:etq().nullable(),widgetPosition:et2,_widgetSettings:et3.optional(),isWidgetActive:etJ()}),et4=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"),et5=etX({token:etq().trim().min(1),sid:etq().trim().min(1),expiresIn:etK().finite()}),et8=etX({metafields:etq().trim().min(1),posterPic:etq().trim().min(1),title:etq().trim().optional(),widgetSession:etY().optional()}),et6=et$(e=>"string"==typeof e?JSON.parse(e):e,etX({metafield:etY(),tinuuid:etq().trim().optional()}));async function et7(e,t){let r=await eeQ({productType:"wallart-shopify",variant_id:e,metafield_key:"poster_settings"},{baseURL:et4,signal:t});return function(e){let t,r,n=et8.safeParse("string"!=typeof e?e:JSON.parse(e));if(!n.success)return null;let i=et6.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=et9.safeParse(t)).success?r.data:null);if(!a)return null;let s=et5.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 ere="44px",ert="60px",err={left_center:{left:ert,top:"50%",transform:"translateY(-50%)"},left_bottom:{left:ert,bottom:ere},center:{left:`calc(50% + ${ert})`,bottom:ere,transform:"translateX(-50%)"},right_bottom:{right:ert,bottom:ere},right_center:{right:ert,top:"50%",transform:"translateY(-50%)"}},ern=et$(e=>"number"==typeof e&&Number.isFinite(e)?String(e):e,etq().trim().regex(/^\d+$/));function eri(e){let t=ern.safeParse(e);return t.success?t.data:null}function era(e){return e?e instanceof HTMLInputElement||e instanceof HTMLSelectElement||e instanceof HTMLTextAreaElement?e.value:e.getAttribute("value"):null}let ers=["product-form","[data-main-product]",'[id*="MainProduct"]',".product",".product__info-wrapper",".product__info-container","#MainContent"],ero=[".product-recommendations",".related-products","[data-product-recommendations]"];var erl=r("./src/shopify.css?inline");function erc(){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 eri(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),ers))e.closest(i)&&(t+=25);for(let r of ero)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=eri(era(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=eri(era(t));if(e)return e}return null}(e)??function(e=document){let t=e.querySelector("[data-selected-variant-id]");return eri(t?.getAttribute("data-selected-variant-id")??null)}(e)}():null}}function eru(){let e=function(){let[e,t]=(0,rx.useState)(erc);return(0,rx.useEffect)(()=>{let e=null,r=window.history.pushState,n=window.history.replaceState,i=()=>{null===e&&(e=window.requestAnimationFrame(()=>{e=null,t(e=>{let t=erc();return e.isProductPage===t.isProductPage&&e.variantId===t.variantId?e:t})}))};window.history.pushState=function(...e){let t=r.apply(this,e);return i(),t},window.history.replaceState=function(...e){let t=n.apply(this,e);return i(),t};let a=ag('body.template-product, body.template-collection, meta[property="og:type"], form[action*="/cart/add"], form[action*="/cart/add"] [name="id"], [name="id"][form], [data-selected-variant-id]',{initialize(e){let t;return{add(){t=(e=>{var t;let r=(t=e).matches("body")?["class"]:t.matches('meta[property="og:type"]')?["content"]:t.matches('form[action*="/cart/add"]')?["action","class","id"]:t.matches('form[action*="/cart/add"] [name="id"], [name="id"][form]')?["form","value"]:t.matches("[data-selected-variant-id]")?["data-selected-variant-id"]:[];if(0===r.length)return;let n=new MutationObserver(i);return n.observe(e,{attributes:!0,attributeFilter:r}),()=>{n.disconnect()}})(e),i()},remove(){t?.(),t=void 0,i()}}}});return document.addEventListener("change",i,!0),document.addEventListener("input",i,!0),document.addEventListener("click",i,!0),window.addEventListener("popstate",i),i(),()=>{null!==e&&window.cancelAnimationFrame(e),window.history.pushState=r,window.history.replaceState=n,a.abort(),document.removeEventListener("change",i,!0),document.removeEventListener("input",i,!0),document.removeEventListener("click",i,!0),window.removeEventListener("popstate",i)}},[]),e}(),[t,r]=(0,rx.useState)(!1),{data:n}=od({queryKey:["vizbl-shopify-room-viewer","activation",e.variantId],queryFn:({signal:t})=>et7(e.variantId??"",t),enabled:e.isProductPage&&null!==e.variantId,staleTime:3e5,gcTime:3e5,refetchOnWindowFocus:!1},s2,void 0),i=(0,rx.useCallback)(()=>{r(!0)},[]),a=(0,rx.useCallback)(e=>{r(e)},[]);if(!e.isProductPage||!e.variantId||!n?.settings.isWidgetActive)return null;let{settings:s,posterPic:o,title:l}=n,c=s._widgetSettings,u=function(e){if("one_field"===e.productWidthAndHeight){let[t,r]=e.metafieldForWidthAndHeight.split("x");return{width:Number(t),height:Number(r)}}return{width:Number(e.metafieldForWidth),height:Number(e.metafieldForHeight)}}(s),d="inch"===s.units?"in":"cm";return(0,rE.jsxs)(rE.Fragment,{children:[(0,rE.jsx)("button",{type:"button",onClick:i,style:{position:"fixed",zIndex:0x7ffffffe,display:"inline-flex",alignItems:"center",justifyContent:"center",padding:"13.522px 21.635px",borderStyle:"solid",borderColor:c?.borderColor??"rgba(65, 90, 229, 0.3)",borderWidth:c?.borderWidth??1,borderRadius:c?.borderRadius??121.053,background:c?.backgroundColor??"#ffffff",boxShadow:"0px 0px 20px 0px rgba(23, 32, 51, 0.14), 0px 16px 32px 0px rgba(23, 32, 51, 0.17)",color:c?.textColor??"#111111",boxSizing:"border-box",cursor:"pointer",maxWidth:"calc(100vw - 16px)",fontFamily:'Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif',fontSize:18,fontWeight:600,letterSpacing:0,lineHeight:"18px",margin:0,appearance:"none",...err[s.widgetPosition]},children:c?.buttonLabel??"View in place"}),(0,rE.jsx)(eeL,{open:t,onOpenChange:a,type:"wallart",source:"shopify",src:o,name:l??"",width:u.width,height:u.height,dimensionUnit:d,widgetSession:n.widgetSession}),t&&(0,am.createPortal)((0,rE.jsx)("style",{children:erl.A}),document.head)]})}let erd="vizbl-shopify-room-viewer",erh=new rw({defaultOptions:{queries:{refetchOnMount:!1,refetchOnReconnect:!1,refetchOnWindowFocus:!1,retry:(e,t)=>{let r=function(e){if(ix(e))return e.response?.status}(t);return(void 0===r||!(r>=400)||!(r<500))&&e<2}}}});function erp(){let e,t=((e=document.getElementById(erd))||((e=document.createElement("div")).id=erd,document.body.appendChild(e)),e),r=ij.createRoot(t);r.render((0,rx.createElement)(rI,{client:erh},(0,rx.createElement)(eru)));let n=ag(`#${erd}`,{remove(){n.abort(),r.unmount(),erp()}})}iz({baseURL:et4}),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",erp,{once:!0}):erp()})()})();
|
|
7636
|
+
Defaulting to \`null\`.`));let u=$Z(a,c)?a:null,d=$Y(u)?o(u,c):void 0;return(0,rE.jsx)($G,{scope:i,value:u,max:c,children:(0,rE.jsx)(Kc.div,{"aria-valuemax":c,"aria-valuemin":0,"aria-valuenow":$Y(u)?u:void 0,"aria-valuetext":d,role:"progressbar","data-state":$J(u,c),"data-value":u??void 0,"data-max":c,...l,ref:t})})});$V.displayName=$U;var $W="ProgressIndicator",$q=rx.forwardRef((e,t)=>{let{__scopeProgress:r,...n}=e,i=$H($W,r);return(0,rE.jsx)(Kc.div,{"data-state":$J(i.value,i.max),"data-value":i.value??void 0,"data-max":i.max,...n,ref:t})});function $K(e,t){return`${Math.round(e/t*100)}%`}function $J(e,t){return null==e?"indeterminate":e===t?"complete":"loading"}function $Y(e){return"number"==typeof e}function $X(e){return $Y(e)&&!isNaN(e)&&e>0}function $Z(e,t){return $Y(e)&&!isNaN(e)&&e<=t&&e>=0}function $$({className:e,value:t,max:r=100,...n}){let i=r>0?r:100,a="number"==typeof t?Math.min(Math.max(t/i*100,0),100):0;return(0,rE.jsx)($V,{"data-slot":"progress",className:Wy("relative h-2 w-full overflow-hidden rounded-full bg-primary/20",e),value:t,max:i,...n,children:(0,rE.jsx)($q,{"data-slot":"progress-indicator",className:"h-full bg-primary transition-[width]",style:{width:`${a}%`}})})}$q.displayName=$W;let $0=[{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 $1({isComplete:e,open:t,onCloseAnimationEnd:r,onOpenChange:n,portalContainer:i}){let{t:a}=sf(),s=(0,rx.useRef)(t),[o,l]=(0,rx.useState)(8),c=e?100:o,u=function(e){for(let t=$0.length-1;t>=0;t-=1){let r=$0[t];if(r&&e>=r.minimumProgress)return r}return $0[0]}(c);(0,rx.useEffect)(()=>{t&&!s.current&&l(8),s.current=t},[t]),(0,rx.useEffect)(()=>{if(!t||e)return;let r=window.setInterval(()=>{l(e=>Math.min(92,e+Math.max(2,Math.round((92-e)/8))))},650);return()=>window.clearInterval(r)},[e,t]);let d=(0,rE.jsxs)("div",{role:"status","aria-live":"polite",className:"grid content-start gap-4",children:[(0,rE.jsx)("h2",{className:"typo-base-18 font-medium text-text-dark",children:a("floor.processing.title")}),(0,rE.jsxs)("div",{"data-testid":"floor-processing-progress-panel",className:"grid min-h-[97px] min-w-0 content-center gap-2 overflow-hidden rounded-xl bg-background-base px-6 py-8",children:[(0,rE.jsxs)("div",{className:"flex min-w-0 items-center justify-between gap-3",children:[(0,rE.jsx)("span",{className:"typo-base-14 min-w-0 flex-1 truncate text-left font-medium text-text-light",children:a(u.translationKey)}),(0,rE.jsxs)("span",{className:"typo-base-14 shrink-0 font-medium text-text-dark",children:[c,"%"]})]}),(0,rE.jsx)($$,{value:c,"aria-label":a("floor.processing.progressLabel"),className:"h-1 bg-background-base-3 [&_[data-slot=progress-indicator]]:bg-button-dark [&_[data-slot=progress-indicator]]:duration-500 [&_[data-slot=progress-indicator]]:ease-out"})]})]});return(0,rE.jsx)(WC,{open:t,onOpenChange:n,children:(0,rE.jsxs)(WI,{portalContainer:i,showCloseButton:!1,"data-testid":"floor-processing-card",className:"top-auto bottom-2 w-[calc(100%-16px)] !max-w-none translate-y-0 gap-4 overflow-hidden rounded-2xl p-6 text-center sm:top-[50%] sm:bottom-auto sm:w-full sm:!max-w-[377px] sm:translate-y-[-50%] sm:p-6",onInteractOutside:e=>{e.preventDefault()},onAnimationEnd:e=>{e.currentTarget===e.target&&"closed"===e.currentTarget.getAttribute("data-state")&&r?.()},children:[(0,rE.jsx)(WT,{className:"sr-only",children:a("floor.processing.title")}),(0,rE.jsx)(WR,{className:"sr-only",children:a(u.translationKey)}),d]})})}let $2={desktop:[{slot:"product-card",container:"leading",appearance:"card",actionLabelResourceTypeKey:"replaceProduct",actionVariant:"outline",actionSize:"sm",actionWidth:"auto"},{slot:"room-card",container:"leading",appearance:"card",actionLabelKey:"floor.interiorSelection.chooseInterior",actionVariant:"outline",actionSize:"sm"},{slot:"ar-card",container:"trailing",appearance:"card",actionVariant:"secondary",actionSize:"sm"}],tablet:[{slot:"product-card",container:"leading",appearance:"compact-card",actionLabelResourceTypeKey:"replaceProduct",actionVariant:"outline",actionSize:"sm",actionWidth:"auto"},{slot:"room-card",container:"trailing",appearance:"framed-row",actionLabelKey:"floor.interiorSelection.chooseInteriorShort",actionVariant:"outline",actionSize:"sm"},{slot:"ar-card",container:"trailing",appearance:"inline-compact",actionVariant:"secondary",actionSize:"default"}],phone:[{slot:"product-card",container:"leading",appearance:"flow-card",actionLabelResourceTypeKey:"replaceProductShort",actionVariant:"outline",actionSize:"sm",actionWidth:"fixed"},{slot:"room-card",container:"trailing",appearance:"plain-row",actionLabelKey:"floor.interiorSelection.chooseInterior",actionVariant:"outline",actionSize:"sm"},{slot:"ar-card",container:"trailing",appearance:"inline-large",actionVariant:"secondary",actionSize:"lg"}]},$3={desktop:[{slot:"product-card",container:"leading",appearance:"card",actionLabelResourceTypeKey:"replaceProduct",actionVariant:"outline",actionSize:"sm",actionWidth:"auto"},{slot:"room-card",container:"leading",appearance:"card",actionLabelKey:"floor.interiorSelection.chooseInterior",actionVariant:"outline",actionSize:"sm"}],tablet:[{slot:"product-card",container:"leading",appearance:"compact-card",actionLabelResourceTypeKey:"replaceProduct",actionVariant:"outline",actionSize:"sm",actionWidth:"auto"},{slot:"room-card",container:"trailing",appearance:"framed-row",actionLabelKey:"floor.interiorSelection.chooseInteriorShort",actionVariant:"outline",actionSize:"sm"}],phone:[{slot:"product-card",container:"leading",appearance:"flow-card",actionLabelResourceTypeKey:"replaceProductShort",actionVariant:"outline",actionSize:"sm",actionWidth:"auto"},{slot:"room-card",container:"trailing",appearance:"plain-row",actionLabelKey:"floor.interiorSelection.chooseInterior",actionVariant:"outline",actionSize:"sm"}]},$9={"inline-compact":"h-9 w-full rounded-xl","inline-large":"h-11 w-full rounded-xl"},$4={"inline-compact":"size-5","inline-large":"size-6"},$5={desktop:"floor-ar-card",tablet:void 0,phone:void 0},$8=/^[a-z][a-z\d+.-]*:/i,$6={card:"flex min-h-24 w-fit max-w-100 items-center gap-4 rounded-2xl bg-background-containers p-4 text-left text-text-dark shadow-[var(--shadow-login)]","compact-card":"flex min-h-[116px] w-fit max-w-[421px] items-center gap-4 rounded-2xl bg-background-containers p-4 text-left text-text-dark shadow-[var(--shadow-login)]","flow-card":"flex items-center justify-start gap-4 border-b border-border-light bg-background-containers p-4 text-left"},$7={card:"size-6 text-icons-normal","compact-card":"size-6 text-icons-normal","flow-card":"size-5 text-icons-normal"},eee={desktop:"floor-desktop-product-card",tablet:"floor-tablet-product-card",phone:"floor-mobile-product-card"},eet={card:"flex h-24 w-[254px] items-center gap-4 overflow-hidden rounded-2xl bg-background-containers p-4 text-left text-text-dark shadow-[var(--shadow-login)]","framed-row":"flex h-[72px] items-center justify-between gap-3 overflow-hidden rounded-2xl bg-background-containers p-4 text-left text-text-dark shadow-[var(--shadow-login)]","plain-row":"flex w-full items-center justify-between gap-3 rounded-full bg-background-containers text-left"},eer={desktop:"floor-room-card",tablet:"floor-tablet-room-card",phone:void 0},een={desktop:"floor-desktop-room-name",tablet:"floor-tablet-room-name",phone:"floor-mobile-room-name"},eei={"product-card":function({actions:e,band:t,slot:r,presentation:n}){let i,{t:a}=sf(),{displayUnit:s,name:o,type:l}=W4(),{containerRef:c}=W7(),{material:u,selectedObject:d,tinuuid:h}=W6(),{variantItems:p,selectedTinuuid:f,selectVariant:A}=function(){let{tinuuid:e,selectedObject:t,selectResourceVariant:r,apiKey:n,baseURL:i,source:a,widgetSession:s}=W6(),{type:o}=W4(),{decodeVariant:l}=qL(o),c=t?.kit?.uuid,u=t?.owner?.uuid,{data:d,fetchNextPage:h,hasNextPage:p,isFetchingNextPage:f,isFetchNextPageError:A}=od({queryKey:Wp(c,u,{apiKey:n,baseURL:i,source:a,resourceType:o}),enabled:!!l&&!!c&&!!u,queryFn:({pageParam:e,signal:t})=>{if(!c||!u)throw Error("Kit uuid and owner uuid are required.");return Wg(c,u,e,{apiKey:n,baseURL:i,signal:t,source:a,widgetSession:s,resourceType:o})},initialPageParam:0,getNextPageParam:(e,t,r)=>void 0!==e.pages_count?r+1<e.pages_count?r+1:void 0:e.objs?.length?r+1:void 0},ou,void 0);(0,rx.useEffect)(()=>{!p||f||A||h({cancelRefetch:!1})},[h,p,f,A]);let g=(0,rx.useMemo)(()=>d?.pages.flatMap(e=>e.objs??[])??[],[d]),m=(0,rx.useMemo)(()=>g.flatMap(e=>{let t=l?.(e.description);return e.tinuuid&&e.materials?.[0]&&t?[{tinuuid:e.tinuuid,...t}]:[]}),[g,l]);return{variantItems:m,selectedTinuuid:e,selectVariant:e=>!!m.some(t=>t.tinuuid===e)&&(r(e),!0)}}(),g=eee[t],m=a(`units.${s}`),v=e.isMaterialSelectionOpen,b=a(v?"floor.scene.hideCatalog":`resourceType.${l}.${n.actionLabelResourceTypeKey}`),y=qO(l,d,u,o),w=(i=u?.previews?.[0],i?.subRes?.small??i?.url??d?.preview?.subRes?.small??d?.preview?.url??d?.mainPreview),x=p.find(e=>e.tinuuid===f),C=function(e){let t=e?.trim();if(!t||$8.test(t)&&!/^https?:/i.test(t)||/^[./?#]/.test(t)&&!t.startsWith("//"))return;let r=t.startsWith("//")?`https:${t}`:/^https?:/i.test(t)?t:`https://${t}`;try{let e=new URL(r);if("http:"!==e.protocol&&"https:"!==e.protocol||!e.hostname)return;return e.href}catch{return}}(d?.tinuuid===h?d.destinationUrl:void 0),E=v?e.onMaterialSelectionActionPointerDown:void 0;return(0,rE.jsxs)("div",{className:$6[n.appearance],"data-chrome-slot":r,"data-neurodyn-room-viewer-product":"","data-testid":g,children:[(0,rE.jsx)("div",{className:"grid size-16 shrink-0 place-items-center overflow-hidden bg-background-base",children:w?(0,rE.jsx)("img",{src:w,alt:"",className:"size-full object-cover"}):(0,rE.jsx)(WU,{className:$7[n.appearance]})}),(0,rE.jsxs)("div",{className:"grid min-h-16 min-w-0 flex-1 grid-cols-1 content-center gap-2",children:[(0,rE.jsxs)("div",{className:"flex min-w-0 items-start justify-between gap-2",children:[(0,rE.jsxs)("div",{className:"min-w-0",children:[(0,rE.jsx)("div",{className:"sr-only",children:a(`resourceType.${l}.productCardTitle`)}),(0,rE.jsx)("div",{className:"typo-button-normal truncate text-text-dark",children:y})]}),C&&(0,rE.jsx)("a",{href:C,target:"_blank",rel:"noopener noreferrer",className:"typo-base-12 shrink-0 text-button-primary underline-offset-2 hover:underline","data-testid":`${g}-description-link`,children:a("floor.scene.description")})]}),(0,rE.jsxs)("div",{className:"flex flex-nowrap items-center gap-2",children:[(0,rE.jsxs)(Wx,{type:"button",variant:n.actionVariant,size:n.actionSize,[$L]:!0,"aria-expanded":v,className:Wy("w-fit shrink-0","fixed"===n.actionWidth&&"w-[137px]"),onPointerDown:E?e=>{e.preventDefault(),e.stopPropagation(),E()}:void 0,onClick:v?e.closeMaterialSelection:e.openMaterialSelection,children:[v?(0,rE.jsx)(WL,{className:"size-4"}):(0,rE.jsx)(Wj,{className:"size-4"}),b]}),p.length>1&&!!x&&(0,rE.jsxs)(qo,{value:f??void 0,onValueChange:A,children:[(0,rE.jsx)(qc,{size:"sm",className:"w-fit min-w-0 shrink *:data-[slot=select-value]:block *:data-[slot=select-value]:truncate","data-testid":`${g}-variant-select`,children:(0,rE.jsx)(ql,{})}),(0,rE.jsx)(qu,{portalContainer:c,children:p.map(e=>{var t;let r;return(0,rE.jsx)(qd,{value:e.tinuuid,children:"color"in e?e.color:(t=e.size,r=t.split("\xd7").map(e=>"cm"===s?e:Math.round(qJ(Number(e)/100,s)).toString()).join("\xd7"),`${r} ${m}`)},e.tinuuid)})})]})]})]})]})},"room-card":function({actions:e,band:t,slot:r,presentation:n}){let{t:i}=sf(),{room:a}=W8(),s=i(`rooms.${a.id}`,{defaultValue:a.name}),o=(0,rE.jsx)(Wx,{type:"button",variant:n.actionVariant,size:n.actionSize,className:"card"===n.appearance?"w-fit":"shrink-0",onClick:e.openInteriorSelection,children:i(n.actionLabelKey)});return"card"===n.appearance?(0,rE.jsxs)("div",{className:eet[n.appearance],"data-chrome-slot":r,"data-neurodyn-room-viewer-room":"","data-testid":eer[t],children:[(0,rE.jsx)("img",{crossOrigin:"anonymous",src:q1(a),alt:"",className:"size-16 shrink-0 rounded-lg object-cover"}),(0,rE.jsxs)("span",{className:"grid min-w-0 flex-1 content-center gap-2",children:[(0,rE.jsx)("span",{className:"typo-button-normal block min-h-[1.35em] truncate !leading-[1.35] text-text-dark","data-testid":een[t],children:s}),o]})]}):(0,rE.jsxs)("div",{className:eet[n.appearance],"data-chrome-slot":r,"data-neurodyn-room-viewer-room":"","data-testid":eer[t],children:[(0,rE.jsxs)("span",{className:"flex min-w-0 items-center gap-2",children:[(0,rE.jsx)("img",{crossOrigin:"anonymous",src:q1(a),alt:"",className:"size-10 shrink-0 rounded-full object-cover"}),(0,rE.jsxs)("span",{className:"grid min-w-0",children:[(0,rE.jsx)("span",{className:"typo-base-12 truncate text-text-light",children:i("floor.scene.interiorCardTitle")}),(0,rE.jsx)("span",{className:"typo-button-normal min-h-[1.35em] truncate !leading-[1.35] text-text-dark","data-testid":een[t],children:s})]})]}),o]})},"ar-card":function({band:e,slot:t,presentation:r}){let{t:n}=sf(),{room:i}=W8(),{tinuuid:a}=W6();return!a||$S&&$M?null:"card"===r.appearance?(0,rE.jsxs)("div",{className:"flex h-24 w-[280px] items-center gap-4 overflow-hidden rounded-2xl bg-background-containers p-4 text-text-dark shadow-[var(--shadow-login)]","data-chrome-slot":t,"data-neurodyn-room-viewer-try-at-home":"","data-testid":$5[e],children:[(0,rE.jsx)("img",{crossOrigin:"anonymous",src:q1(i),alt:"",className:"size-16 shrink-0 rounded-lg object-cover"}),(0,rE.jsxs)("div",{className:"grid min-w-0 flex-1 content-center gap-2",children:[(0,rE.jsx)($I,{buttonLabel:n("floor.scene.tryAtHome"),buttonVariant:r.actionVariant,buttonSize:r.actionSize,buttonClassName:"w-fit"}),(0,rE.jsx)("div",{className:"typo-base-12 truncate font-medium text-text-light",children:n("floor.scene.tryAtHomeBody")})]})]}):(0,rE.jsx)($I,{className:"w-full","data-chrome-slot":t,"data-neurodyn-room-viewer-try-at-home":"",buttonLabel:n("floor.scene.tryAtHome"),buttonLeadingIcon:(0,rE.jsx)(Wq,{className:$4[r.appearance]}),buttonVariant:r.actionVariant,buttonSize:r.actionSize,buttonClassName:$9[r.appearance]})}};function eea({actions:e,band:t,entry:r}){let n=eei[r.slot];return(0,rE.jsx)(n,{actions:e,band:t,slot:r.slot,presentation:r})}function ees({actions:e,band:t,container:r}){let{type:n}=W4(),i="immersive-panels"===Wb[n].presentation?$3:$2;return(0,rE.jsx)(rE.Fragment,{children:i[t].filter(e=>e.container===r).map(r=>(0,rE.jsx)(eea,{actions:e,band:t,entry:r},r.slot))})}async function eeo(e,t={}){let r=t.source??"default",n={image:e};if(VL({apiKey:t.apiKey,source:r})){let e=await t.widgetSession?.getTokenForRequest();return V8(n,{baseURL:t.baseURL,headers:{"x-api-key":t.apiKey,...e?{[Ws]:e}:{}},signal:t.signal,timeout:0,params:{productType:VN({apiKey:t.apiKey,source:r,resourceType:t.resourceType})}})}return t.signal?V0(n,{signal:t.signal,timeout:0}):V0(n,{timeout:0})}let eel=[{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 eec(){try{return"1"===window.localStorage.getItem("neurodyn-room-viewer:debug-mask-export")}catch{return!1}}async function eeu(e,t){var r,n,i;let a,s,o,l,c=await (r=e.planeIds.dataPng,new Promise((e,t)=>{let n=new Image;n.onload=()=>e(n),n.onerror=()=>t(Error("Failed to load room plane id mask image.")),n.crossOrigin="anonymous",n.src=r})),u=e.planeIds.width||c.naturalWidth||c.width,d=e.planeIds.height||c.naturalHeight||c.height,h=document.createElement("canvas"),p=h.getContext("2d",{willReadFrequently:!0});if(!p)throw Error("Failed to prepare room plane mask canvas.");h.width=u,h.height=d,p.drawImage(c,0,0,u,d);let f=p.getImageData(0,0,u,d),A=document.createElement("canvas"),g=A.getContext("2d");if(!g)throw Error("Failed to prepare room debug mask canvas.");A.width=u,A.height=d;for(let e=0;e<u*d;e++){let t=4*e,r=function(e){return eel.find(t=>t.id===e)??{id:e,label:`plane-${e}`,rgb:[73*e%255,151*e%255,211*e%255]}}(f.data[t]??0);f.data[t]=r.rgb[0],f.data[t+1]=r.rgb[1],f.data[t+2]=r.rgb[2],f.data[t+3]=255}g.putImageData(f,0,0),n=await new Promise((e,t)=>{A.toBlob(r=>{r?e(r):t(Error("Failed to export room plane mask image."))},"image/png")}),s=Array.from((a=t.lastIndexOf("."))>0?t.slice(0,a):t).map(e=>{let t=e.charCodeAt(0),r="."===e||"_"===e||"-"===e;return t>=48&&t<=57||t>=65&&t<=90||t>=97&&t<=122||r?e:"-"}).join("").split("-").filter(Boolean).join("-"),i=`${s||"room"}.debug-mask.colors.png`,o=URL.createObjectURL(n),(l=document.createElement("a")).href=o,l.download=i,l.style.display="none",document.body.append(l),l.click(),l.remove(),window.setTimeout(()=>URL.revokeObjectURL(o),1e3)}let eed="custom-interiors";function eeh(){return"u">typeof crypto&&"function"==typeof crypto.randomUUID?`custom-interior-${crypto.randomUUID()}`:`custom-interior-${Date.now()}-${Math.random().toString(36).slice(2)}`}function eep(){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(eed)||e.createObjectStore(eed,{keyPath:"id"})},n.onerror=()=>r(n.error??Error("Failed to open Custom Interior store.")),n.onsuccess=()=>t(n.result)}):Promise.resolve(null)}async function eef(e,t,r=new Date){let n=await eep();if(!n)return null;let i={id:eeh(),schemaVersion:1,name:e.name,fileName:e.name,createdAt:r.toISOString(),imageBlob:e,scene:t};try{let e=n.transaction(eed,"readwrite");return e.objectStore(eed).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 eeA(){let e=await eep();if(!e)return[];try{return await new Promise((t,r)=>{let n=e.transaction(eed,"readonly").objectStore(eed).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 eeg(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 eem={placementReady:!1,prepareReady:!1,artifactsReady:!1,assetsReady:!1};function eev(e){let t="dialog"===e?"interior-selection":"scene";return{step:t,hasSceneSelection:"scene"===t,sceneResetKey:0}}function eeb(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 eey(e,t){return!e.aborted&&t()}async function eew({abortSignal:e,apiOptions:t,commitCustomInteriorSelection:r,downloadDebugMask:n,file:i,isActive:a,isDebugMaskExportEnabled:s,onDebugMaskError:o,onPersistenceError:l,onProcessingComplete:c,predictRoomScene:u,saveCustomInterior:d,trackRuntimeCustomInterior:h,waitForProcessingCompletion:p}){let f=await u(i,{...t,signal:e});if(!eey(e,a))return null;s()&&n(f,i.name).catch(o);let A=h(i,f);return eey(e,a)&&A&&(d(i,f).catch(l),c(),await p(),eey(e,a))?(r(A),A):null}function eex(){return new Promise(e=>window.setTimeout(e,250))}function eeC(e){console.error("Failed to export room debug mask",e)}function eeE(e){console.error("Failed to persist Custom Interior",e)}function eeS(e){console.error("Failed to prepare Custom Interior",e)}let eeM={"immersive-room":function({showDialogCloseButton:e=!1}){var t;let{t:r}=sf(),{name:n,type:i}=W4(),{accessError:a,glbUrl:s,apiKey:o,baseURL:l,hasRooms:c,source:u,widgetSession:d,isViewerAccessPending:h,loadError:p,selectedObject:f,tinuuid:A}=W6(),{clearActiveError:g,handleAccessError:m}=function(){let{setAccessError:e,setLoadError:t}=W6();return{clearActiveError:(0,rx.useCallback)(()=>{e(null),t(null)},[e,t]),handleAccessError:e}}(),{room:v,sourceRooms:b}=W8(),{resourceRef:y,containerRef:w,setContainerRef:x,sceneLoad:C,isRoomScenePending:E}=W7(),{dialogPortalContainer:S,viewerSurface:M,viewerDialogOpen:I,onViewerDialogOpenChange:B}=W5(),[k,T]=(0,rx.useState)(!1),[R,D]=(0,rx.useState)(!1),P=(0,rx.useRef)(null),_=(0,rx.useRef)(!1),L=a??p,N=!!L,F=(t=r("floor.scene.companyFallback"),f?.owner?.name??f?.brand??t),{canShare:O,download:Q,isDownloading:U,isSharing:z,share:j}=$k({captureRef:P,fallbackToClipboard:!0,shareMessage:r(`shareMessage.${i}`)}),G=(0,rx.useCallback)(()=>{T(!1),D(!1)},[]),H=(0,rx.useCallback)(()=>{if(_.current){_.current=!1;return}T(!0),D(!1)},[]),V=(0,rx.useCallback)(()=>{_.current=!0,G()},[G]),W=(0,rx.useCallback)(()=>{D(!0),T(!1)},[]),q=function({activeError:e,apiKey:t,baseURL:r,clearActiveError:n,closeMaterialSelection:i,glbUrl:a,handleAccessError:s,hasDialogPortalContainer:o,hasRooms:l,isRoomScenePending:c,isViewerAccessPending:u,onViewerDialogOpenChange:d,resourceType:h,sceneLoad:p,source:f,sourceRooms:A,viewerDialogOpen:g,viewerSurface:m,widgetSession:v}){let b=function(e){let{patchSceneLoad:t,setAngle:r,setRotation:n}=W7();return function(e,t){let[r,n]=(0,rx.useReducer)(eeb,e,eev),i=(0,rx.useCallback)(e=>{e(),function({patchSceneLoad:e,setAngle:t,setRotation:r}){t(0),r(0),e(eem)}(t),n({type:"commit-interior-selection"})},[t]),a=(0,rx.useCallback)(()=>{n({type:"dismiss-interior-selection"})},[]),s=(0,rx.useCallback)(()=>{n({type:"open-interior-selection"})},[]),o=(0,rx.useCallback)(()=>{n({type:"recover-to-scene"})},[]),l=(0,rx.useCallback)(()=>{n({type:"return-to-interior-selection"})},[]),c=(0,rx.useCallback)(()=>{n({type:"start-custom-interior-processing"})},[]);return(0,rx.useMemo)(()=>({...r,commitInteriorSelection:i,dismissInteriorSelection:a,openInteriorSelection:s,recoverToScene:o,returnToInteriorSelection:l,startCustomInteriorProcessing:c}),[i,a,s,o,l,c,r])}(e,(0,rx.useMemo)(()=>({patchSceneLoad:t,setAngle:r,setRotation:n}),[t,r,n]))}(m),{appendRuntimeCustomInterior:y,customRooms:w}=function({listCustomInteriors:e}){let{appendRuntimeCustomInterior:t,customRooms:r,replaceRuntimeCustomInteriors:n}=function(){let[e,t]=(0,rx.useState)(()=>[]),r=(0,rx.useRef)(null),n=(0,rx.useCallback)(e=>{r.current?.revokeObjectUrls();let n=eeg(e);return r.current=n,t(n.rooms),n.rooms},[]),i=(0,rx.useCallback)((e,n)=>{let i=eeg([{id:eeh(),schemaVersion:1,name:e.name,fileName:e.name,createdAt:new Date().toISOString(),imageBlob:e,scene:n}]),a=i.rooms[0];if(!a)return i.revokeObjectUrls(),null;let s=r.current;return r.current={rooms:[],revokeObjectUrls:()=>{s?.revokeObjectUrls(),i.revokeObjectUrls()}},t(e=>[a,...e.filter(e=>e.id!==a.id)]),a},[]);return(0,rx.useEffect)(()=>()=>{r.current?.revokeObjectUrls()},[]),(0,rx.useMemo)(()=>({appendRuntimeCustomInterior:i,customRooms:e,replaceRuntimeCustomInteriors:n}),[i,e,n])}(),i=(0,rx.useRef)(!0);(0,rx.useEffect)(()=>(i.current=!0,()=>{i.current=!1}),[]);let a=(0,rx.useCallback)(async()=>{let t=await e();i.current&&n(t)},[e,n]);return(0,rx.useEffect)(()=>{a()},[a]),(0,rx.useMemo)(()=>({appendRuntimeCustomInterior:t,customRooms:r,replaceRuntimeCustomInteriors:n,refreshCustomInteriors:a}),[t,r,a,n])}({listCustomInteriors:eeA}),x=(0,rx.useMemo)(()=>new Set(A.map(e=>e.id)),[A]),{commitCustomInteriorSelection:C,selectInterior:E}=function(e){let{room:t,setRoomId:r,setRooms:n}=W8(),{widgetSession:i}=W6();return function({floorFlow:e,customRooms:t,selectedRoomId:r,onInteriorSelected:n,restoreSourceRooms:i,setRoomId:a,setRooms:s}){let o=(0,rx.useCallback)(t=>{e.commitInteriorSelection(()=>{s(e=>[t,...i(e).filter(e=>e.id!==t.id)]),a(t.id)}),n?.()},[e,n,i,a,s]),l=(0,rx.useCallback)(t=>{let o=t===r;o&&e.hasSceneSelection||(e.commitInteriorSelection(()=>{s(i),a(t)}),o||n?.())},[e,n,i,r,a,s]),c=(0,rx.useCallback)(n=>{if(n===r&&e.hasSceneSelection)return;let i=t.find(e=>e.id===n);i&&o(i)},[e.hasSceneSelection,o,t,r]),u=(0,rx.useCallback)(e=>{t.some(t=>t.id===e)?c(e):l(e)},[t,c,l]);return(0,rx.useMemo)(()=>({commitCustomInteriorSelection:o,selectInterior:u}),[o,u])}({...e,selectedRoomId:t.id,onInteriorSelected:()=>Wu(i,"interior_selected"),setRoomId:r,setRooms:n})}({floorFlow:b,customRooms:w,restoreSourceRooms:(0,rx.useCallback)(e=>[...A,...e.filter(e=>!x.has(e.id))],[x,A])}),S=function(e){let{setIsRoomScenePending:t}=W7();return function({apiOptions:e,floorFlow:t,commitCustomInteriorSelection:r,downloadDebugMask:n,isDebugMaskExportEnabled:i,onAccessError:a,onDebugMaskError:s,onPersistenceError:o,onProcessingError:l,predictRoomScene:c,saveCustomInterior:u,setIsRoomScenePending:d,trackRuntimeCustomInterior:h,waitForProcessingCompletion:p}){let[f,A]=(0,rx.useState)(!1),[g,m]=(0,rx.useState)(!1),[v,b]=(0,rx.useState)(null),[y,w]=(0,rx.useState)(null),[x,C]=(0,rx.useState)(!1),[E,S]=(0,rx.useState)(0),M=(0,rx.useRef)(null),I=(0,rx.useRef)(!1),B=(0,rx.useRef)(!0),k=(0,rx.useRef)(v);v&&(k.current=v),(0,rx.useEffect)(()=>(B.current=!0,()=>{B.current=!1,M.current?.abort()}),[]);let T=(0,rx.useCallback)(()=>{b(null),w(null),C(!1)},[]),R=(0,rx.useCallback)(e=>{T(),A(!1),e()},[T]),D=(0,rx.useCallback)(async f=>{if(T(),!f.type.startsWith("image/"))return void A(!0);A(!1),m(!1),t.startCustomInteriorProcessing(),I.current=!0;let g=new AbortController;M.current?.abort(),M.current=g,d(!0);try{await eew({abortSignal:g.signal,apiOptions:e,commitCustomInteriorSelection:r,downloadDebugMask:n,file:f,isActive:()=>B.current,isDebugMaskExportEnabled:i,onDebugMaskError:s,onPersistenceError:o,onProcessingComplete:()=>{m(!0)},predictRoomScene:c,saveCustomInterior:u,trackRuntimeCustomInterior:h,waitForProcessingCompletion:p})}catch(t){if(g.signal.aborted)return;let e=VO(t);if(e){I.current&&C(!0),a(e);return}if(l(t),I.current){w("custom-interior-processing"),C(!0);return}b("custom-interior-processing")}finally{M.current===g&&(M.current=null,B.current&&d(!1))}},[e,t,r,n,i,a,s,o,l,c,T,u,d,h,p]),P=(0,rx.useCallback)(()=>{T(),A(!1),t.returnToInteriorSelection(),S(e=>e+1)},[t,T]),_=(0,rx.useCallback)(()=>{T(),t.returnToInteriorSelection()},[t,T]),L=(0,rx.useCallback)(({clearError:e,closeMaterialSelection:r})=>{e(),r(),t.hasSceneSelection&&t.recoverToScene()},[t]),N=(0,rx.useCallback)(()=>{I.current=!1,C(!1),y&&(b(y),w(null))},[y]),F=(0,rx.useCallback)(()=>B.current,[]);return(0,rx.useMemo)(()=>({displayedUploadError:v??k.current,isCustomInteriorProcessingComplete:g,isInvalidFile:f,isMounted:F,isProcessingDialogClosingForError:x,pendingUploadError:y,uploadError:v,uploadRetryRequestId:E,cancelUploadError:_,handleProcessingDialogCloseAnimationEnd:N,openInteriorSelection:R,processUploadFile:D,recoverFromActiveError:L,resetUploadErrorPresentation:T,tryUploadAgain:P}),[_,N,g,f,F,x,R,y,D,L,T,P,v,E])}({...e,setIsRoomScenePending:t})}({apiOptions:(0,rx.useMemo)(()=>({resourceType:h,apiKey:t,baseURL:r,source:f,widgetSession:v}),[t,r,h,f,v]),floorFlow:b,commitCustomInteriorSelection:C,downloadDebugMask:eeu,isDebugMaskExportEnabled:eec,onAccessError:s,onDebugMaskError:eeC,onPersistenceError:eeE,onProcessingError:eeS,predictRoomScene:eeo,saveCustomInterior:eef,trackRuntimeCustomInterior:y,waitForProcessingCompletion:eex}),{dismissInteriorSelection:M,hasSceneSelection:I,openInteriorSelection:B,sceneResetKey:k,step:T}=b,{cancelUploadError:R,displayedUploadError:D,handleProcessingDialogCloseAnimationEnd:P,isCustomInteriorProcessingComplete:_,isInvalidFile:L,isProcessingDialogClosingForError:N,openInteriorSelection:F,pendingUploadError:O,processUploadFile:Q,recoverFromActiveError:U,resetUploadErrorPresentation:z,tryUploadAgain:j,uploadError:G,uploadRetryRequestId:H}=S,V=l&&I,W=(0,rx.useRef)(e),q=!!(e&&V&&a);e&&(W.current=e);let K=(0,rx.useCallback)(()=>{V&&(z(),M())},[M,V,z]),J=(0,rx.useCallback)(()=>{i(),F(B)},[i,B,F]),Y=(0,rx.useCallback)(()=>{U({clearError:n,closeMaterialSelection:i})},[n,i,U]),X=(0,rx.useCallback)(e=>{if(!e){if(V)return void K();d?.(!1)}},[K,V,d]),Z=(0,rx.useCallback)(e=>{if(!e){if(q)return void Y();d?.(!1)}},[q,Y,d]),$=(0,rx.useCallback)(e=>{e||R()},[R]);!function({fallbackMs:e,handleProcessingDialogCloseAnimationEnd:t,isProcessingDialogClosingForError:r}){(0,rx.useEffect)(()=>{if(!r)return;let n=window.setTimeout(t,e);return()=>window.clearTimeout(n)},[e,t,r])}({fallbackMs:220,handleProcessingDialogCloseAnimationEnd:P,isProcessingDialogClosingForError:N});let ee=function({activeError:e,canRecoverFromActiveError:t,floorFlow:r,hasDialogPortalContainer:n,hasRooms:i,isProcessingDialogClosingForError:a,isRoomScenePending:s,isViewerAccessPending:o,pendingUploadError:l,sceneLoad:c,uploadError:u,viewerDialogOpen:d,viewerSurface:h}){let p="dialog"===h&&n,f=!p||d,A=i&&r.hasSceneSelection,g=i||"scene"!==r.step?r.step:"interior-selection",m=!o&&A&&(!e||t),v=A||p,b=!o&&!e&&v,y=!o&&!e&&!v&&"interior-selection"===g;return{activeErrorDialog:{open:!a&&!!e&&f,showCloseButton:!t},interiorSelection:{open:b&&"interior-selection"===g&&f,presentation:b?"dialog":y?"screen":null,shouldRender:b||y},processingDialog:{open:!e&&!u&&!l&&s&&"processing-custom-interior"===r.step&&f},scene:{isLoading:s||!Object.values(c).every(Boolean),resetKey:r.sceneResetKey,shouldRender:m,shouldRenderDialog:m},surface:{usesSiblingDialogFlow:p},uploadErrorDialog:{open:!a&&!e&&!!u&&f}}}({activeError:e,canRecoverFromActiveError:q,floorFlow:{hasSceneSelection:I,sceneResetKey:k,step:T},hasDialogPortalContainer:o,hasRooms:l,isProcessingDialogClosingForError:N,isRoomScenePending:c,isViewerAccessPending:u,pendingUploadError:O,sceneLoad:p,uploadError:G,viewerDialogOpen:g,viewerSurface:m});return{...ee,activeErrorDialog:{...ee.activeErrorDialog,onCancel:q?Y:void 0,onOpenChange:Z,onTryAgain:q?Y:void 0,variant:e??W.current},customRooms:w,interiorSelection:{...ee.interiorSelection,isInvalidFile:L,onOpenChange:X,onSelectRoom:E,onUploadFile:Q,openFromScene:J,uploadRetryRequestId:H},sourceRooms:A,processingDialog:{...ee.processingDialog,isComplete:_,onCloseAnimationEnd:P,onOpenChange:ee.surface.usesSiblingDialogFlow?d:void 0},step:T,uploadErrorDialog:{...ee.uploadErrorDialog,onCancel:R,onOpenChange:$,onTryAgain:j,variant:D}}}({activeError:L,apiKey:o,baseURL:l,clearActiveError:g,closeMaterialSelection:G,glbUrl:s,handleAccessError:m,hasDialogPortalContainer:null!==S,hasRooms:c,isRoomScenePending:E,isViewerAccessPending:h,onViewerDialogOpenChange:B,resourceType:i,sceneLoad:C,source:u,sourceRooms:b,viewerDialogOpen:I,viewerSurface:M,widgetSession:d}),K=(0,rx.useRef)(null),J=function(e,t){let[r,n]=(0,rx.useState)(!1);return e&&r&&n(!1),(0,rx.useEffect)(()=>{let r;if(e)return;let i=()=>{t.current&&(0===Number(getComputedStyle(t.current).opacity)?n(!0):r=requestAnimationFrame(i))};return r=requestAnimationFrame(i),()=>cancelAnimationFrame(r)},[e,t]),!e&&r}(q.scene.isLoading||!q.scene.shouldRender||!I,K),Y=ZS(),{pending:X,finish:Z}=function(e,t,r){let[n,i]=(0,rx.useState)({open:e,pending:e&&t,sceneKey:r});n.open!==e?i({open:e,pending:e&&t,sceneKey:r}):n.sceneKey!==r?i({...n,sceneKey:r,pending:n.pending&&null===n.sceneKey}):n.pending&&!t&&i({...n,pending:!1});let a=(0,rx.useCallback)(()=>i(e=>({...e,pending:!1})),[]);return{pending:e&&n.pending,finish:a}}(I,q6("(max-width: 639px)")&&"focus-resource"===Wb[i].introduction,q.scene.shouldRender?`${q.scene.resetKey}:${A??""}`:null),$=Y?.select,ee=(0,rx.useCallback)(()=>{Z(),$?.("0,0")},[Z,$]),et=(0,rx.useMemo)(()=>X?{ready:J,target:y,onComplete:ee,onCancel:Z}:void 0,[X,ee,Z,J,y]),er=q.interiorSelection.openFromScene,en=(0,rx.useCallback)(()=>{G(),er()},[G,er]),ei=(0,rx.useMemo)(()=>({isMaterialSelectionOpen:k,openMaterialSelection:H,closeMaterialSelection:G,onMaterialSelectionActionPointerDown:V,openInteriorSelection:en}),[G,V,en,H,k]),ea=(0,rx.useMemo)(()=>({isMaterialSelectionOpen:R,openMaterialSelection:W,closeMaterialSelection:G,openInteriorSelection:en}),[G,en,W,R]);(0,rx.useEffect)(()=>{if(k)return document.addEventListener("pointerdown",e),document.addEventListener("keydown",t),()=>{document.removeEventListener("pointerdown",e),document.removeEventListener("keydown",t)};function e(e){var t;(t=e.target)instanceof Element&&t.closest(`[${$L}], [${$N}]`)||T(!1)}function t(e){"Escape"===e.key&&T(!1)}},[k]);let es=q.surface.usesSiblingDialogFlow?S:w,eo=(0,rE.jsxs)(rE.Fragment,{children:[(0,rE.jsx)("div",{className:"absolute inset-0 bg-constant-black","data-testid":"floor-scene-background-base"}),(0,rE.jsx)("div",{"aria-hidden":!0,className:"absolute top-[-52px] right-[-1.36%] bottom-[-52px] left-[-1.36%] blur-[40px]","data-testid":"floor-blur-background",children:(0,rE.jsx)("img",{crossOrigin:"anonymous",src:q1(v),alt:"",className:"block size-full max-w-none object-cover object-center opacity-50"})}),(0,rE.jsxs)("div",{className:"pointer-events-none absolute top-0 right-0 left-0 z-20 flex min-h-22 items-start justify-between gap-4 bg-linear-to-b from-black/75 via-black/35 to-transparent px-4 pt-4 pb-8 text-constant-white sm:px-6 lg:min-h-25 lg:pt-6",children:[(0,rE.jsx)("div",{className:"min-w-0 pt-1",children:(0,rE.jsx)("h1",{"data-testid":"floor-scene-header-company",className:"typo-base-16 truncate font-medium lg:typo-base-18",children:F})}),(0,rE.jsxs)("div",{className:"pointer-events-auto inline-flex shrink-0 items-center gap-2",children:[(0,rE.jsxs)(Wx,{type:"button",variant:"secondary","aria-label":r("floor.scene.share"),"data-neurodyn-room-viewer-share":"",disabled:!O||z,onClick:j,className:"size-10 rounded-full px-0 lg:h-9 lg:w-auto lg:rounded-xl lg:px-3.5",children:[(0,rE.jsx)(WW,{className:"size-5"}),(0,rE.jsx)("span",{className:"hidden lg:inline",children:r("floor.scene.share")})]}),(0,rE.jsxs)(Wx,{type:"button",variant:"secondary","aria-label":r("floor.scene.download"),"data-neurodyn-room-viewer-download":"",disabled:U,onClick:Q,className:"size-10 rounded-full px-0 lg:h-9 lg:w-auto lg:rounded-xl lg:px-3.5",children:[(0,rE.jsx)(WN,{className:"size-5"}),(0,rE.jsx)("span",{className:"hidden lg:inline",children:r("floor.scene.download")})]}),e&&(0,rE.jsx)(WS,{asChild:!0,children:(0,rE.jsxs)(Wx,{type:"button",variant:"secondary","aria-label":r("close"),className:"size-10 rounded-full px-0 lg:h-9 lg:w-auto lg:rounded-xl lg:px-3.5",children:[(0,rE.jsx)("span",{className:"hidden lg:inline",children:r("close")}),(0,rE.jsx)(WL,{className:"!size-5"})]})})]})]}),(0,rE.jsxs)("div",{className:"relative z-10 size-full min-h-0 min-w-0","data-testid":"floor-scene-viewport",children:[(0,rE.jsx)($p,{introduction:et,captureRef:P,className:"relative z-10 size-full min-h-0",canvasWrapperClassName:"p-0 sm:pt-0 sm:pb-0"},q.scene.resetKey),(0,rE.jsx)("div",{"aria-hidden":!q.scene.isLoading,className:Wy("absolute inset-0 z-10 flex items-center justify-center bg-radial from-background-containers to-background-base-2 transition-opacity",q.scene.isLoading?"opacity-100 pointer-events-auto duration-0":"opacity-0 pointer-events-none duration-250ms"),ref:K,"data-testid":"floor-scene-loader",style:{transitionDuration:q.scene.isLoading?"0ms":"250ms"},children:(0,rE.jsx)(WJ,{variant:"logo"})})]}),(0,rE.jsxs)("div",{className:"pointer-events-none absolute right-6 bottom-6 left-6 z-20 hidden items-end justify-between gap-4 lg:flex","data-testid":"floor-desktop-cards",children:[(0,rE.jsx)("div",{className:"pointer-events-auto flex min-w-0 items-stretch gap-3",children:(0,rE.jsx)(ees,{actions:ei,band:"desktop",container:"leading"})}),(0,rE.jsx)("div",{className:"pointer-events-auto",children:(0,rE.jsx)(ees,{actions:ei,band:"desktop",container:"trailing"})})]}),(0,rE.jsxs)("div",{className:"pointer-events-none absolute right-6 bottom-6 left-6 z-20 hidden items-end justify-between gap-2 sm:flex lg:hidden","data-testid":"floor-tablet-cards",children:[(0,rE.jsx)("div",{className:"pointer-events-auto flex min-w-0 items-stretch gap-3",children:(0,rE.jsx)(ees,{actions:ei,band:"tablet",container:"leading"})}),(0,rE.jsx)("div",{className:"pointer-events-auto grid w-[254px] gap-2",children:(0,rE.jsx)(ees,{actions:ei,band:"tablet",container:"trailing"})})]}),(0,rE.jsxs)("div",{className:"relative z-20 grid bg-background-containers text-text-dark shadow-[var(--shadow-login)] sm:hidden","data-testid":"floor-mobile-cards",children:[(0,rE.jsx)("div",{className:"grid",children:(0,rE.jsx)(ees,{actions:ea,band:"phone",container:"leading"})}),(0,rE.jsx)("div",{className:"grid gap-4 bg-background-containers px-6 pt-4 pb-6","data-testid":"floor-mobile-bottom-actions",children:(0,rE.jsx)(ees,{actions:ea,band:"phone",container:"trailing"})})]}),k&&!N&&(0,rE.jsx)($O,{[$N]:!0,className:"absolute bottom-[152px] left-6 z-30 hidden max-h-[calc(100%-252px)] w-[348px] rounded-2xl bg-background-containers sm:flex lg:bottom-[132px] lg:max-h-[calc(100%-232px)]",gridClassName:"px-4 pb-4",titleClassName:"px-4 pt-4",onOpenChange:G}),(0,rE.jsx)($Q,{open:R&&!N,portalContainer:es,onOpenChange:D})]}),el=q.interiorSelection.shouldRender?"dialog"===q.interiorSelection.presentation?(0,rE.jsx)($_,{open:q.interiorSelection.open,showCloseButton:e||q.scene.shouldRender,portalContainer:es,rooms:q.sourceRooms,customRooms:q.customRooms,selectedRoomId:v.id,isInvalidFile:q.interiorSelection.isInvalidFile,uploadRetryRequestId:q.interiorSelection.uploadRetryRequestId,onOpenChange:q.interiorSelection.onOpenChange,onSelectRoom:q.interiorSelection.onSelectRoom,onUploadFile:q.interiorSelection.onUploadFile}):"screen"===q.interiorSelection.presentation?(0,rE.jsx)($P,{rooms:q.sourceRooms,customRooms:q.customRooms,selectedRoomId:v.id,isInvalidFile:q.interiorSelection.isInvalidFile,uploadRetryRequestId:q.interiorSelection.uploadRetryRequestId,showCloseButton:e,onSelectRoom:q.interiorSelection.onSelectRoom,onUploadFile:q.interiorSelection.onUploadFile}):null:null,ec=(0,rE.jsx)($1,{isComplete:q.processingDialog.isComplete,open:q.processingDialog.open,portalContainer:es,onCloseAnimationEnd:q.processingDialog.onCloseAnimationEnd,onOpenChange:q.processingDialog.onOpenChange}),eu=(0,rE.jsxs)(rE.Fragment,{children:[(0,rE.jsx)($R,{variant:q.activeErrorDialog.variant,open:q.activeErrorDialog.open,portalContainer:es,showDialogCloseButton:e&&q.activeErrorDialog.showCloseButton,onOpenChange:q.activeErrorDialog.onOpenChange,onTryAgain:q.activeErrorDialog.onTryAgain,onCancel:q.activeErrorDialog.onCancel}),(0,rE.jsx)($R,{variant:q.uploadErrorDialog.variant,open:q.uploadErrorDialog.open,portalContainer:es,onOpenChange:q.uploadErrorDialog.onOpenChange,onTryAgain:q.uploadErrorDialog.onTryAgain,onCancel:q.uploadErrorDialog.onCancel})]}),ed=(0,rE.jsxs)("div",{ref:x,className:"relative grid size-full grid-rows-[minmax(0,1fr)_auto] overflow-hidden text-foreground sm:block","data-neurodyn-room-viewer-container":"","data-testid":"floor-viewer-root",children:[h?(0,rE.jsx)("div",{className:"flex size-full items-center justify-center bg-radial from-background-containers to-background-base-2",children:(0,rE.jsx)(WJ,{variant:"logo"})}):q.scene.shouldRender?eo:null,!q.surface.usesSiblingDialogFlow&&el,!q.surface.usesSiblingDialogFlow&&ec]});return q.surface.usesSiblingDialogFlow?(0,rE.jsxs)(rE.Fragment,{children:[(q.scene.shouldRenderDialog||h)&&(0,rE.jsx)(WC,{open:I,onOpenChange:B,children:(0,rE.jsxs)(WI,{className:WY,contentInsideOverlay:!0,portalContainer:S,showCloseButton:!1,onInteractOutside:e=>{e.preventDefault()},children:[(0,rE.jsx)(WT,{className:"sr-only",children:n}),(0,rE.jsx)(WR,{className:"sr-only"}),ed]})}),el,ec,eu]}):(0,rE.jsxs)(rE.Fragment,{children:[ed,eu]})},"framed-scene":function({showDialogCloseButton:e=!1}){let{name:t}=W4(),{isViewerAccessPending:r,accessError:n,loadError:i,setLoadError:a,hasRooms:s}=W6(),{setContainerRef:o,sceneLoad:l,isRoomScenePending:c}=W7(),{dialogPortalContainer:u,viewerSurface:d,viewerDialogOpen:h,onViewerDialogOpenChange:p}=W5(),{t:f}=sf(),A=(0,rx.useRef)(null),g=r||c||s&&!Object.values(l).every(Boolean),m=n??i,v=m?(0,rE.jsx)("div",{ref:o,"data-neurodyn-room-viewer-container":"",className:"relative size-full overflow-hidden bg-radial from-background-containers to-background-base-2 text-foreground",children:(0,rE.jsx)(q5,{variant:m,showDialogCloseButton:e})}):(0,rE.jsxs)("div",{ref:o,"data-neurodyn-room-viewer-container":"",className:"relative size-full bg-radial from-background-containers to-background-base-2 text-foreground overflow-hidden",children:[e&&(0,rE.jsx)(WS,{asChild:!0,children:(0,rE.jsxs)(Wx,{className:"absolute top-3 right-6 z-20",variant:"secondary",children:[f("close"),(0,rE.jsx)(uc,{})]})}),!r&&(s?(0,rE.jsxs)(rE.Fragment,{children:[(0,rE.jsx)(q4,{className:"absolute top-0 right-0 left-0 z-15"}),(0,rE.jsxs)("div",{className:"size-full max-w-full grid grid-rows-[1fr_auto]",children:[(0,rE.jsx)(ZR,{onError:()=>a("viewer-load-failed"),children:(0,rE.jsx)($p,{captureRef:A,className:"size-full min-h-0",controls:(0,rE.jsx)($T,{captureRef:A})})}),(0,rE.jsx)(q9,{className:"bg-background"})]})]}):(0,rE.jsx)(q3,{className:"absolute inset-x-0 bottom-0 bg-background"})),(0,rE.jsx)("div",{"aria-hidden":!g,className:Wy("absolute inset-0 z-10 flex items-center justify-center bg-radial from-background-containers to-background-base-2 transition-opacity",g?"opacity-100 pointer-events-auto duration-0":"opacity-0 pointer-events-none duration-250ms"),children:(0,rE.jsx)(WJ,{variant:"logo"})})]});return"dialog"!==d?v:(0,rE.jsx)(WC,{open:h,onOpenChange:p,children:(0,rE.jsxs)(WI,{className:WY,contentInsideOverlay:!0,portalContainer:u,showCloseButton:!1,onInteractOutside:e=>{e.preventDefault()},children:[(0,rE.jsxs)(WB,{className:"sr-only",children:[(0,rE.jsx)(WT,{children:t}),(0,rE.jsx)(WR,{})]}),v]})})}};function eeI({showDialogCloseButton:e=!1}){let{type:t}=W4(),r=eeM[Wb[t].chrome];return(0,rE.jsx)(r,{showDialogCloseButton:e})}let eeB=0,eek=[];function eeT(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 eeR({children:e,src:t,tinuuid:r,type:n,viewerSurface:i,dialogPortalContainer:a=null,viewerDialogOpen:s=!0,onViewerDialogOpenChange:o,width:l,height:c,displayUnit:u,name:d,apiKey:h,baseURL:p,source:f,externalWidgetSession:A}){var g,m;let v=function(){let{t:e}=sf();return(0,rx.useMemo)(()=>[{value:.025,label:`2.5 ${e("units.cm")}`},{value:.05,label:`5 ${e("units.cm")}`}],[e])}(),b=qY(u),y=qF(n),w="finish"===Wb[n].materialRole,{offersSizeVariants:x}=qL(n),C="floor-room-presets"===Wb[n].roomPresets?qB:qI,E=VL({apiKey:h,baseURL:p,source:f}),[S,M]=(0,rx.useState)(r),[I,B]=(0,rx.useState)(null),k=(0,rx.useCallback)(e=>{B(null),M(e)},[]),T=(0,rx.useCallback)(e=>{B(e),M(e)},[]),[R,D]=(0,rx.useState)(null),[P,_]=(0,rx.useState)(v[0].value),[L,N]=(0,rx.useState)(b[0].value),[F,O]=(0,rx.useState)(0),[Q,U]=(0,rx.useState)(0),[z,j]=(0,rx.useState)(!1),[G,H]=(0,rx.useState)(null),[V,W]=(0,rx.useState)(()=>({layoutReady:!1,placementReady:!1,materialReady:"artwork-src"===y.materialSource,artifactsReady:!1,assetsReady:!1,prepareReady:!1})),[q,K]=(0,rx.useState)(!1),[J,Y]=(0,rx.useState)(null),[X,Z]=(0,rx.useState)(null),$=(0,rx.useRef)(null),ee=(0,rx.useRef)(new Set),et=(0,rx.useRef)(null),er=(0,rx.useRef)(!0),en=(0,rx.useRef)(!1),ei="object-glb"===y.materialSource,ea="default"===f&&void 0!==h,es=VF("wall-panel"===(g={apiKey:h,baseURL:p,source:f,resourceType:n}).resourceType?g:{...g,resourceType:void 0}),eo=od({queryKey:["room-viewer","activate",{apiKey:h??null,source:f,resourceType:n}],enabled:ea,queryFn:({signal:e})=>V1(es.query,{...es.config,baseURL:p,headers:{"x-api-key":h},signal:e})},s2,void 0),el=VO(eo.error),ec=(0,rx.useMemo)(()=>{let e=eo.data;return Wc(e?.widgetSession,{apiConfig:{baseURL:p,headers:{"x-api-key":h}}})},[eo.data,h,p]),eu=(0,rx.useMemo)(()=>A instanceof Wl?A:Wc(A,{apiConfig:{baseURL:p,headers:{"x-api-key":h}}})??ec,[ec,h,p,A]),ed="shopify"===f?null!==eu:ea&&eo.isSuccess,eh=od({queryKey:["room-viewer","rooms",{apiKey:(m={apiKey:h,baseURL:p,source:f,widgetSession:eu,resourceType:n}).apiKey??null,source:m.source,resourceType:m.resourceType??null,widgetSessionId:m.widgetSession?.sid??null}],enabled:E&&ed,queryFn:async({signal:e})=>{try{return await Wm({apiKey:h,baseURL:p,signal:e,source:f,widgetSession:eu,resourceType:n})}catch(e){if(VO(e))throw e;return[]}}},s2,void 0),ep=E?eh.data??eek:C,[ef,eA]=(0,rx.useState)(()=>({rooms:ep,sourceRooms:ep})),eg=(0,rx.useMemo)(()=>eeT(ef.rooms,ef.sourceRooms,ep),[ef.rooms,ef.sourceRooms,ep]),em=(0,rx.useCallback)(e=>{eA(t=>{let r=eeT(t.rooms,t.sourceRooms,ep);return{rooms:"function"==typeof e?e(r):e,sourceRooms:ep}})},[ep]),[ev,eb]=(0,rx.useState)(()=>C[0].id),ey=eg.find(e=>e.id===ev),ew=ey??eg[0]??C[0],ex="rotate-on-floor"===Wb[n].manipulation;(0,rx.useEffect)(()=>{ex&&U(0)},[ex,ew.id]);let eC=eg.length>0;!ey&&eg[0]&&ev!==eg[0].id&&eb(eg[0].id);let eE=!ea||eo.isSuccess||eo.isError&&null===el,eS=od({queryKey:Wh(r??void 0,{apiKey:h,baseURL:p,source:f,resourceType:n}),enabled:eE&&ei&&null===R&&!!r,queryFn:async({signal:e})=>{if(!r)throw Error("Tinuuid is required.");return Wf(r,{apiKey:h,baseURL:p,signal:e,source:f,widgetSession:eu,resourceType:n})}},s2,void 0),eM=od({queryKey:Wh(S??void 0,{apiKey:h,baseURL:p,source:f,resourceType:n}),enabled:eE&&ei&&!!S,placeholderData:t4,queryFn:async({signal:e})=>{if(!S)throw Error("Tinuuid is required.");return Wf(S,{apiKey:h,baseURL:p,signal:e,source:f,widgetSession:eu,resourceType:n})}},s2,void 0),eI=eS.data??null,eB=eM.data??null,ek=eI?.materials?.[0]??null,eT=R?.native?.glbUrl??null,eR=VO(eS.error),eD=VO(eh.error),eP=E&&("shopify"===f?null===eu||eh.isLoading:eo.isSuccess&&eh.isLoading),e_=ea&&eo.isLoading||eP,eL=eo.error&&null===el?"viewer-load-failed":null,eN=eS.error&&null===eR?"viewer-load-failed":null,eF="artwork-src"===y.materialSource&&("string"!=typeof t||0===t.trim().length)?"artwork-load-failed":null,eO=ei&&!e_&&(!r||eS.isSuccess&&null===ek||null!==R&&null===eT)?"viewer-load-failed":null,eQ=null!==I&&I===S&&(eM.isError||eM.isSuccess&&eB?.tinuuid===S&&!eB.materials?.[0]?.native?.glbUrl)?"viewer-load-failed":null,eU=J??el??eD??eR,ez=X??eQ??eL??eN??eO??eF,ej=(0,rx.useCallback)(e=>{W(t=>Object.assign({},t,e))},[]);(0,rx.useEffect)(()=>{let e=new Set(eg.map(e=>e.image_url));for(let t of Array.from(ee.current))e.has(t)||(URL.revokeObjectURL(t),ee.current.delete(t))},[eg]),(0,rx.useEffect)(()=>{let e=ee.current;return er.current=!0,()=>{for(let t of(er.current=!1,et.current?.abort(),Array.from(e)))URL.revokeObjectURL(t);e.clear()}},[]);let eG=(0,rx.useCallback)(async e=>{let t=null,r=new AbortController;et.current?.abort(),et.current=r,K(!0);try{t=URL.createObjectURL(e);let i=await eeo(e,{resourceType:n,apiKey:h,baseURL:p,source:f,signal:r.signal,widgetSession:eu});if(r.signal.aborted||!er.current)return void URL.revokeObjectURL(t);eec()&&eeu(i,e.name).catch(e=>{console.error("Failed to export room debug mask",e)});let a={id:(eeB+=1,`room-custom-${eeB}`),name:e.name,image_url:t,scene:i};ee.current.add(t),ej({placementReady:!1,prepareReady:!1,artifactsReady:!1,assetsReady:!1}),em(e=>[a,...e]),eb(a.id)}catch(n){if(t&&URL.revokeObjectURL(t),r.signal.aborted)return;let e=VO(n);if(e)return void Y(e);console.error("Failed to prepare custom room scene",n)}finally{et.current===r&&(et.current=null,er.current&&K(!1))}},[h,p,ej,em,f,n,eu]);(0,rx.useEffect)(()=>{if("dialog"!==i||!s){en.current=!1;return}en.current||eu&&(Wu(eu,"widget_opened"),en.current=!0)},[s,i,eu]),(0,rx.useEffect)(()=>{ei&&(k(r),D(null),Y(null),Z(null))},[r,k,ei]),(0,rx.useEffect)(()=>{Y(null),Z(null)},[h,f]),(0,rx.useEffect)(()=>{ei&&eI&&null===R&&D(ek)},[R,ek,eI,ei]),(0,rx.useEffect)(()=>{if(!ei||!x&&!w&&I!==S||null===eB||eB.tinuuid!==S)return;let e=eB.materials?.[0];if(!e)return;let t=eB.materials?.some(e=>e===R||!!e.hid&&e.hid===R?.hid);if(I===S){B(null),D(e);return}(!t||w)&&R!==e&&D(e)},[w,R,x,eB,S,ei,I]);let eH=(0,rx.useMemo)(()=>({type:n,name:d,width:l,height:c,displayUnit:u}),[n,d,l,c,u]),eV=(0,rx.useMemo)(()=>({viewerSurface:i,dialogPortalContainer:a,viewerDialogOpen:s,onViewerDialogOpenChange:o}),[i,a,s,o]),eW=(0,rx.useMemo)(()=>({rooms:eg,sourceRooms:ep,setRooms:em,room:ew,setRoomId:eb}),[eg,ew,em,ep]),eq=(0,rx.useMemo)(()=>({src:t,glbUrl:eT,tinuuid:S,embeddedObject:eI,selectedObject:eB,material:R,setTinuuid:k,selectResourceVariant:T,setMaterial:D,apiKey:h,baseURL:p,source:f,widgetSession:eu,hasRooms:eC,isViewerAccessPending:e_,accessError:eU,setAccessError:Y,loadError:ez,setLoadError:Z}),[t,eT,S,eI,eB,R,k,T,h,p,f,eu,eC,e_,eU,ez]),eK=(0,rx.useMemo)(()=>({containerRef:G,setContainerRef:H,resourceRef:$,angle:F,setAngle:O,rotation:Q,setRotation:U,isDragging:z,setIsDragging:j,sceneLoad:V,patchSceneLoad:ej,isRoomScenePending:q,setIsRoomScenePending:K}),[G,F,Q,z,V,ej,q]),eJ=(0,rx.useMemo)(()=>({frameWidth:P,setFrameWidth:_,matting:L,setMatting:N}),[P,L]),eY=(0,rx.useMemo)(()=>({isRoomScenePending:q,selectCustomRoomFile:eG}),[q,eG]);return(0,rE.jsx)(WX,{value:eH,children:(0,rE.jsx)(WZ,{value:eV,children:(0,rE.jsx)(W$,{value:eW,children:(0,rE.jsx)(W0,{value:eq,children:(0,rE.jsx)(W1,{value:eK,children:(0,rE.jsx)(W2,{value:eJ,children:(0,rE.jsx)(W3,{value:eY,children:(0,rE.jsx)(ZE,{children:e})})})})})})})})}let eeD={poster:"wallart",carpet:"rugs"};function eeP(e){return"poster"===e||"carpet"===e}let ee_=new rw({defaultOptions:{queries:{gcTime:1/0,refetchOnMount:!1,refetchOnReconnect:!1,refetchOnWindowFocus:!1,retry:(e,t)=>{let r=function(e){if(ix(e))return e.response?.status}(t);return(void 0===r||!(r>=400)||!(r<500))&&e<2}}}});function eeL({type:e,src:t,tinuuid:r,name:n,height:i,width:a,language:s,dimensionUnit:o="m",displayUnit:l="cm",apiKey:c,source:u="default",showDialogCloseButton:d=!1,viewerSurface:h="inline",dialogPortalContainer:p=null,viewerDialogOpen:f=!0,onViewerDialogOpenChange:A,widgetSession:g}){let{i18n:m}=sf(),v=c?.trim()||void 0,b=r?.trim()||void 0,y=eeP(e)?eeD[e]:e,w=qF(y).takesDimensionProps?function(e,t,r="m"){return{width:qK(e??0,r),height:qK(t??0,r)}}(a,i,o):null;return(0,rx.useEffect)(()=>{eeP(e)&&eeD[e]},[e]),(0,rx.useEffect)(()=>{"string"==typeof s&&m.changeLanguage(s)},[m,s]),(0,rE.jsx)(rI,{client:ee_,children:(0,rE.jsx)(eeR,{src:t??null,tinuuid:b??null,type:y,viewerSurface:h,dialogPortalContainer:p,viewerDialogOpen:f,onViewerDialogOpenChange:A,name:n,width:w?.width??0,height:w?.height??0,displayUnit:l,apiKey:v,baseURL:"shopify"===u?V_:void 0,source:u,externalWidgetSession:g,children:(0,rE.jsx)(eeI,{showDialogCloseButton:d})})})}function eeN({type:e,src:t,tinuuid:r,width:n,height:i,dimensionUnit:a,displayUnit:s,name:o,language:l,apiKey:c,source:u,widgetSession:d,disableClose:h=!1,open:p,defaultOpen:f,onOpenChange:A}){let[g,m]=(0,rx.useState)(null),v="immersive-room"===Wb[eeP(e)?eeD[e]:e].chrome&&h,[b,y]=(0,rx.useState)(f??!1),w=p??b,[x,C]=(0,rx.useState)(w),E=w||x;(0,rx.useEffect)(()=>{w&&C(!0)},[w]);let S=(0,rE.jsx)(eeL,{type:e,src:t,tinuuid:r,name:o,height:i,width:n,dimensionUnit:a,displayUnit:s,language:l,apiKey:c,source:u,widgetSession:d,showDialogCloseButton:!v,viewerSurface:"dialog",dialogPortalContainer:g,viewerDialogOpen:w,onViewerDialogOpenChange:function(e){(e||!v)&&(void 0===p&&y(e),A?.(e))}});return(0,rE.jsxs)(rE.Fragment,{children:[(0,am.createPortal)((0,rE.jsx)("style",{children:VI.A}),document.head),(0,am.createPortal)((0,rE.jsxs)(s_.div,{"data-neurodyn-room-viewer-root":"",style:{display:"block",letterSpacing:"normal",zIndex:0x7fffffff},children:[(0,rE.jsx)("style",{children:":host{display:block!important;visibility:visible!important}"}),(0,rE.jsx)("style",{children:VD}),(0,rE.jsx)("div",{ref:m}),g&&(0,rE.jsx)(VM,{root:g,storageKey:"neurodyn-theme",defaultTheme:"light",children:(0,rE.jsx)(sA,{i18n:Vk,children:E&&S})})]}),document.body)]})}We({baseURL:"https://api.neurodyn.ai/v1/"}),VY({baseURL:"https://api.neurodyn.ai/"});let eeF=iQ({clientName:"API node client",configureFunctionName:"configureNodeApiClient",defaultBaseURL:"https://api.vizbl.com"});eeF.configureClientRuntime,eeF.configureAccessTokenResolverRuntime,eeF.configureHeadersResolverRuntime,eeF.configureUnauthorizedHandlerRuntime,eeF.isClientConfiguredRuntime,eeF.assertClientConfiguredRuntime,eeF.resetClientForTestsRuntime;let eeO=eeF.requestRuntime;async function eeQ(e){return eeO(e)}async function eeU(e,t={}){let{client:r=eeQ,...n}=t;return(await r({method:"POST",url:"/public/widget/activate-wallart",params:e,...n})).data}eeF.requestWithoutUnauthorizedRecovery,eeF.addResponseInterceptorRuntime,(eJ=tP||(tP={})).assertEqual=e=>{},eJ.assertIs=function(e){},eJ.assertNever=function(e){throw Error()},eJ.arrayToEnum=e=>{let t={};for(let r of e)t[r]=r;return t},eJ.getValidEnumValues=e=>{let t=eJ.objectKeys(e).filter(t=>"number"!=typeof e[e[t]]),r={};for(let n of t)r[n]=e[n];return eJ.objectValues(r)},eJ.objectValues=e=>eJ.objectKeys(e).map(function(t){return e[t]}),eJ.objectKeys="function"==typeof Object.keys?e=>Object.keys(e):e=>{let t=[];for(let r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.push(r);return t},eJ.find=(e,t)=>{for(let r of e)if(t(r))return r},eJ.isInteger="function"==typeof Number.isInteger?e=>Number.isInteger(e):e=>"number"==typeof e&&Number.isFinite(e)&&Math.floor(e)===e,eJ.joinValues=function(e,t=" | "){return e.map(e=>"string"==typeof e?`'${e}'`:e).join(t)},eJ.jsonStringifyReplacer=(e,t)=>"bigint"==typeof t?t.toString():t,(t_||(t_={})).mergeShapes=(e,t)=>({...e,...t});let eez=tP.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),eej=e=>{switch(typeof e){case"undefined":return eez.undefined;case"string":return eez.string;case"number":return Number.isNaN(e)?eez.nan:eez.number;case"boolean":return eez.boolean;case"function":return eez.function;case"bigint":return eez.bigint;case"symbol":return eez.symbol;case"object":if(Array.isArray(e))return eez.array;if(null===e)return eez.null;if(e.then&&"function"==typeof e.then&&e.catch&&"function"==typeof e.catch)return eez.promise;if("u">typeof Map&&e instanceof Map)return eez.map;if("u">typeof Set&&e instanceof Set)return eez.set;if("u">typeof Date&&e instanceof Date)return eez.date;return eez.object;default:return eez.unknown}},eeG=tP.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]);class eeH 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 eeH))throw Error(`Not a ZodError: ${e}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,tP.jsonStringifyReplacer,2)}get isEmpty(){return 0===this.issues.length}flatten(e=e=>e.message){let t={},r=[];for(let n of this.issues)if(n.path.length>0){let r=n.path[0];t[r]=t[r]||[],t[r].push(e(n))}else r.push(e(n));return{formErrors:r,fieldErrors:t}}get formErrors(){return this.flatten()}}eeH.create=e=>new eeH(e);let eeV=(e,t)=>{let r;switch(e.code){case eeG.invalid_type:r=e.received===eez.undefined?"Required":`Expected ${e.expected}, received ${e.received}`;break;case eeG.invalid_literal:r=`Invalid literal value, expected ${JSON.stringify(e.expected,tP.jsonStringifyReplacer)}`;break;case eeG.unrecognized_keys:r=`Unrecognized key(s) in object: ${tP.joinValues(e.keys,", ")}`;break;case eeG.invalid_union:r="Invalid input";break;case eeG.invalid_union_discriminator:r=`Invalid discriminator value. Expected ${tP.joinValues(e.options)}`;break;case eeG.invalid_enum_value:r=`Invalid enum value. Expected ${tP.joinValues(e.options)}, received '${e.received}'`;break;case eeG.invalid_arguments:r="Invalid function arguments";break;case eeG.invalid_return_type:r="Invalid function return type";break;case eeG.invalid_date:r="Invalid date";break;case eeG.invalid_string:"object"==typeof e.validation?"includes"in e.validation?(r=`Invalid input: must include "${e.validation.includes}"`,"number"==typeof e.validation.position&&(r=`${r} at one or more positions greater than or equal to ${e.validation.position}`)):"startsWith"in e.validation?r=`Invalid input: must start with "${e.validation.startsWith}"`:"endsWith"in e.validation?r=`Invalid input: must end with "${e.validation.endsWith}"`:tP.assertNever(e.validation):r="regex"!==e.validation?`Invalid ${e.validation}`:"Invalid";break;case eeG.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 eeG.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 eeG.custom:r="Invalid input";break;case eeG.invalid_intersection_types:r="Intersection results could not be merged";break;case eeG.not_multiple_of:r=`Number must be a multiple of ${e.multipleOf}`;break;case eeG.not_finite:r="Number must be finite";break;default:r=t.defaultError,tP.assertNever(e)}return{message:r}};(eY=tL||(tL={})).errToObj=e=>"string"==typeof e?{message:e}:e||{},eY.toString=e=>"string"==typeof e?e:e?.message;let eeW=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 eeq(e,t){let r=eeW({issueData:t,data:e.data,path:e.path,errorMaps:[e.common.contextualErrorMap,e.schemaErrorMap,eeV,void 0].filter(e=>!!e)});e.common.issues.push(r)}class eeK{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 eeJ;"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 eeK.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 eeJ;"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 eeJ=Object.freeze({status:"aborted"}),eeY=e=>({status:"dirty",value:e}),eeX=e=>({status:"valid",value:e}),eeZ=e=>"u">typeof Promise&&e instanceof Promise;class ee${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 ee0=(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 eeH(e.common.issues);return this._error=t,this._error}}};function ee1(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 ee2{get description(){return this._def.description}_getType(e){return eej(e.data)}_getOrReturnCtx(e,t){return t||{common:e.parent.common,data:e.data,parsedType:eej(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new eeK,ctx:{common:e.parent.common,data:e.data,parsedType:eej(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){let t=this._parse(e);if(eeZ(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:eej(e)},n=this._parseSync({data:e,path:r.path,parent:r});return ee0(r,n)}"~validate"(e){let t={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:eej(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:eej(e)},n=this._parse({data:e,path:r.path,parent:r});return ee0(r,await (eeZ(n)?n:Promise.resolve(n)))}refine(e,t){return this._refinement((r,n)=>{let i=e(r),a=()=>n.addIssue({code:eeG.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 etQ({schema:this,typeName:tN.ZodEffects,effect:{type:"refinement",refinement:e}})}superRefine(e){return this._refinement(e)}constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:e=>this["~validate"](e)}}optional(){return etU.create(this,this._def)}nullable(){return etz.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return etx.create(this)}promise(){return etO.create(this,this._def)}or(e){return etE.create([this,e],this._def)}and(e){return etI.create(this,e,this._def)}transform(e){return new etQ({...ee1(this._def),schema:this,typeName:tN.ZodEffects,effect:{type:"transform",transform:e}})}default(e){return new etj({...ee1(this._def),innerType:this,defaultValue:"function"==typeof e?e:()=>e,typeName:tN.ZodDefault})}brand(){return new etV({typeName:tN.ZodBranded,type:this,...ee1(this._def)})}catch(e){return new etG({...ee1(this._def),innerType:this,catchValue:"function"==typeof e?e:()=>e,typeName:tN.ZodCatch})}describe(e){return new this.constructor({...this._def,description:e})}pipe(e){return etW.create(this,e)}readonly(){return etq.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}let ee3=/^c[^\s-]{8,}$/i,ee9=/^[0-9a-z]+$/,ee4=/^[0-9A-HJKMNP-TV-Z]{26}$/i,ee5=/^[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,ee8=/^[a-z0-9_-]{21}$/i,ee6=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,ee7=/^[-+]?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)?)??$/,ete=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,ett=/^(?:(?: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])$/,etr=/^(?:(?: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])$/,etn=/^(([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]))$/,eti=/^(([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])$/,eta=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,ets=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,eto="((\\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])))",etl=RegExp(`^${eto}$`);function etc(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 etu extends ee2{_parse(e){var t,r,n,i;let a;if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==eez.string){let t=this._getOrReturnCtx(e);return eeq(t,{code:eeG.invalid_type,expected:eez.string,received:t.parsedType}),eeJ}let s=new eeK;for(let o of this._def.checks)if("min"===o.kind)e.data.length<o.value&&(eeq(a=this._getOrReturnCtx(e,a),{code:eeG.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&&(eeq(a=this._getOrReturnCtx(e,a),{code:eeG.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?eeq(a,{code:eeG.too_big,maximum:o.value,type:"string",inclusive:!0,exact:!0,message:o.message}):r&&eeq(a,{code:eeG.too_small,minimum:o.value,type:"string",inclusive:!0,exact:!0,message:o.message}),s.dirty())}else if("email"===o.kind)ete.test(e.data)||(eeq(a=this._getOrReturnCtx(e,a),{validation:"email",code:eeG.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)||(eeq(a=this._getOrReturnCtx(e,a),{validation:"emoji",code:eeG.invalid_string,message:o.message}),s.dirty());else if("uuid"===o.kind)ee5.test(e.data)||(eeq(a=this._getOrReturnCtx(e,a),{validation:"uuid",code:eeG.invalid_string,message:o.message}),s.dirty());else if("nanoid"===o.kind)ee8.test(e.data)||(eeq(a=this._getOrReturnCtx(e,a),{validation:"nanoid",code:eeG.invalid_string,message:o.message}),s.dirty());else if("cuid"===o.kind)ee3.test(e.data)||(eeq(a=this._getOrReturnCtx(e,a),{validation:"cuid",code:eeG.invalid_string,message:o.message}),s.dirty());else if("cuid2"===o.kind)ee9.test(e.data)||(eeq(a=this._getOrReturnCtx(e,a),{validation:"cuid2",code:eeG.invalid_string,message:o.message}),s.dirty());else if("ulid"===o.kind)ee4.test(e.data)||(eeq(a=this._getOrReturnCtx(e,a),{validation:"ulid",code:eeG.invalid_string,message:o.message}),s.dirty());else if("url"===o.kind)try{new URL(e.data)}catch{eeq(a=this._getOrReturnCtx(e,a),{validation:"url",code:eeG.invalid_string,message:o.message}),s.dirty()}else"regex"===o.kind?(o.regex.lastIndex=0,o.regex.test(e.data)||(eeq(a=this._getOrReturnCtx(e,a),{validation:"regex",code:eeG.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)||(eeq(a=this._getOrReturnCtx(e,a),{code:eeG.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)||(eeq(a=this._getOrReturnCtx(e,a),{code:eeG.invalid_string,validation:{startsWith:o.value},message:o.message}),s.dirty()):"endsWith"===o.kind?e.data.endsWith(o.value)||(eeq(a=this._getOrReturnCtx(e,a),{code:eeG.invalid_string,validation:{endsWith:o.value},message:o.message}),s.dirty()):"datetime"===o.kind?(function(e){let t=`${eto}T${etc(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)||(eeq(a=this._getOrReturnCtx(e,a),{code:eeG.invalid_string,validation:"datetime",message:o.message}),s.dirty()):"date"===o.kind?etl.test(e.data)||(eeq(a=this._getOrReturnCtx(e,a),{code:eeG.invalid_string,validation:"date",message:o.message}),s.dirty()):"time"===o.kind?RegExp(`^${etc(o)}$`).test(e.data)||(eeq(a=this._getOrReturnCtx(e,a),{code:eeG.invalid_string,validation:"time",message:o.message}),s.dirty()):"duration"===o.kind?ee7.test(e.data)||(eeq(a=this._getOrReturnCtx(e,a),{validation:"duration",code:eeG.invalid_string,message:o.message}),s.dirty()):"ip"===o.kind?(t=e.data,!(("v4"===(r=o.version)||!r)&&ett.test(t)||("v6"===r||!r)&&etn.test(t))&&1&&(eeq(a=this._getOrReturnCtx(e,a),{validation:"ip",code:eeG.invalid_string,message:o.message}),s.dirty())):"jwt"===o.kind?!function(e,t){if(!ee6.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)&&(eeq(a=this._getOrReturnCtx(e,a),{validation:"jwt",code:eeG.invalid_string,message:o.message}),s.dirty()):"cidr"===o.kind?(n=e.data,!(("v4"===(i=o.version)||!i)&&etr.test(n)||("v6"===i||!i)&&eti.test(n))&&1&&(eeq(a=this._getOrReturnCtx(e,a),{validation:"cidr",code:eeG.invalid_string,message:o.message}),s.dirty())):"base64"===o.kind?eta.test(e.data)||(eeq(a=this._getOrReturnCtx(e,a),{validation:"base64",code:eeG.invalid_string,message:o.message}),s.dirty()):"base64url"===o.kind?ets.test(e.data)||(eeq(a=this._getOrReturnCtx(e,a),{validation:"base64url",code:eeG.invalid_string,message:o.message}),s.dirty()):tP.assertNever(o);return{status:s.value,value:e.data}}_regex(e,t,r){return this.refinement(t=>e.test(t),{validation:t,code:eeG.invalid_string,...tL.errToObj(r)})}_addCheck(e){return new etu({...this._def,checks:[...this._def.checks,e]})}email(e){return this._addCheck({kind:"email",...tL.errToObj(e)})}url(e){return this._addCheck({kind:"url",...tL.errToObj(e)})}emoji(e){return this._addCheck({kind:"emoji",...tL.errToObj(e)})}uuid(e){return this._addCheck({kind:"uuid",...tL.errToObj(e)})}nanoid(e){return this._addCheck({kind:"nanoid",...tL.errToObj(e)})}cuid(e){return this._addCheck({kind:"cuid",...tL.errToObj(e)})}cuid2(e){return this._addCheck({kind:"cuid2",...tL.errToObj(e)})}ulid(e){return this._addCheck({kind:"ulid",...tL.errToObj(e)})}base64(e){return this._addCheck({kind:"base64",...tL.errToObj(e)})}base64url(e){return this._addCheck({kind:"base64url",...tL.errToObj(e)})}jwt(e){return this._addCheck({kind:"jwt",...tL.errToObj(e)})}ip(e){return this._addCheck({kind:"ip",...tL.errToObj(e)})}cidr(e){return this._addCheck({kind:"cidr",...tL.errToObj(e)})}datetime(e){return"string"==typeof e?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:e}):this._addCheck({kind:"datetime",precision:void 0===e?.precision?null:e?.precision,offset:e?.offset??!1,local:e?.local??!1,...tL.errToObj(e?.message)})}date(e){return this._addCheck({kind:"date",message:e})}time(e){return"string"==typeof e?this._addCheck({kind:"time",precision:null,message:e}):this._addCheck({kind:"time",precision:void 0===e?.precision?null:e?.precision,...tL.errToObj(e?.message)})}duration(e){return this._addCheck({kind:"duration",...tL.errToObj(e)})}regex(e,t){return this._addCheck({kind:"regex",regex:e,...tL.errToObj(t)})}includes(e,t){return this._addCheck({kind:"includes",value:e,position:t?.position,...tL.errToObj(t?.message)})}startsWith(e,t){return this._addCheck({kind:"startsWith",value:e,...tL.errToObj(t)})}endsWith(e,t){return this._addCheck({kind:"endsWith",value:e,...tL.errToObj(t)})}min(e,t){return this._addCheck({kind:"min",value:e,...tL.errToObj(t)})}max(e,t){return this._addCheck({kind:"max",value:e,...tL.errToObj(t)})}length(e,t){return this._addCheck({kind:"length",value:e,...tL.errToObj(t)})}nonempty(e){return this.min(1,tL.errToObj(e))}trim(){return new etu({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new etu({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new etu({...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}}etu.create=e=>new etu({checks:[],typeName:tN.ZodString,coerce:e?.coerce??!1,...ee1(e)});class etd extends ee2{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)!==eez.number){let t=this._getOrReturnCtx(e);return eeq(t,{code:eeG.invalid_type,expected:eez.number,received:t.parsedType}),eeJ}let r=new eeK;for(let n of this._def.checks)"int"===n.kind?tP.isInteger(e.data)||(eeq(t=this._getOrReturnCtx(e,t),{code:eeG.invalid_type,expected:"integer",received:"float",message:n.message}),r.dirty()):"min"===n.kind?(n.inclusive?e.data<n.value:e.data<=n.value)&&(eeq(t=this._getOrReturnCtx(e,t),{code:eeG.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)&&(eeq(t=this._getOrReturnCtx(e,t),{code:eeG.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)&&(eeq(t=this._getOrReturnCtx(e,t),{code:eeG.not_multiple_of,multipleOf:n.value,message:n.message}),r.dirty()):"finite"===n.kind?Number.isFinite(e.data)||(eeq(t=this._getOrReturnCtx(e,t),{code:eeG.not_finite,message:n.message}),r.dirty()):tP.assertNever(n);return{status:r.value,value:e.data}}gte(e,t){return this.setLimit("min",e,!0,tL.toString(t))}gt(e,t){return this.setLimit("min",e,!1,tL.toString(t))}lte(e,t){return this.setLimit("max",e,!0,tL.toString(t))}lt(e,t){return this.setLimit("max",e,!1,tL.toString(t))}setLimit(e,t,r,n){return new etd({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:r,message:tL.toString(n)}]})}_addCheck(e){return new etd({...this._def,checks:[...this._def.checks,e]})}int(e){return this._addCheck({kind:"int",message:tL.toString(e)})}positive(e){return this._addCheck({kind:"min",value:0,inclusive:!1,message:tL.toString(e)})}negative(e){return this._addCheck({kind:"max",value:0,inclusive:!1,message:tL.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:0,inclusive:!0,message:tL.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:0,inclusive:!0,message:tL.toString(e)})}multipleOf(e,t){return this._addCheck({kind:"multipleOf",value:e,message:tL.toString(t)})}finite(e){return this._addCheck({kind:"finite",message:tL.toString(e)})}safe(e){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:tL.toString(e)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:tL.toString(e)})}get minValue(){let e=null;for(let t of this._def.checks)"min"===t.kind&&(null===e||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)"max"===t.kind&&(null===e||t.value<e)&&(e=t.value);return e}get isInt(){return!!this._def.checks.find(e=>"int"===e.kind||"multipleOf"===e.kind&&tP.isInteger(e.value))}get isFinite(){let e=null,t=null;for(let r of this._def.checks)if("finite"===r.kind||"int"===r.kind||"multipleOf"===r.kind)return!0;else"min"===r.kind?(null===t||r.value>t)&&(t=r.value):"max"===r.kind&&(null===e||r.value<e)&&(e=r.value);return Number.isFinite(t)&&Number.isFinite(e)}}etd.create=e=>new etd({checks:[],typeName:tN.ZodNumber,coerce:e?.coerce||!1,...ee1(e)});class eth extends ee2{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)!==eez.bigint)return this._getInvalidInput(e);let r=new eeK;for(let n of this._def.checks)"min"===n.kind?(n.inclusive?e.data<n.value:e.data<=n.value)&&(eeq(t=this._getOrReturnCtx(e,t),{code:eeG.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)&&(eeq(t=this._getOrReturnCtx(e,t),{code:eeG.too_big,type:"bigint",maximum:n.value,inclusive:n.inclusive,message:n.message}),r.dirty()):"multipleOf"===n.kind?e.data%n.value!==BigInt(0)&&(eeq(t=this._getOrReturnCtx(e,t),{code:eeG.not_multiple_of,multipleOf:n.value,message:n.message}),r.dirty()):tP.assertNever(n);return{status:r.value,value:e.data}}_getInvalidInput(e){let t=this._getOrReturnCtx(e);return eeq(t,{code:eeG.invalid_type,expected:eez.bigint,received:t.parsedType}),eeJ}gte(e,t){return this.setLimit("min",e,!0,tL.toString(t))}gt(e,t){return this.setLimit("min",e,!1,tL.toString(t))}lte(e,t){return this.setLimit("max",e,!0,tL.toString(t))}lt(e,t){return this.setLimit("max",e,!1,tL.toString(t))}setLimit(e,t,r,n){return new eth({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:r,message:tL.toString(n)}]})}_addCheck(e){return new eth({...this._def,checks:[...this._def.checks,e]})}positive(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:tL.toString(e)})}negative(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:tL.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:tL.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:tL.toString(e)})}multipleOf(e,t){return this._addCheck({kind:"multipleOf",value:e,message:tL.toString(t)})}get minValue(){let e=null;for(let t of this._def.checks)"min"===t.kind&&(null===e||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)"max"===t.kind&&(null===e||t.value<e)&&(e=t.value);return e}}eth.create=e=>new eth({checks:[],typeName:tN.ZodBigInt,coerce:e?.coerce??!1,...ee1(e)});class etp extends ee2{_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==eez.boolean){let t=this._getOrReturnCtx(e);return eeq(t,{code:eeG.invalid_type,expected:eez.boolean,received:t.parsedType}),eeJ}return eeX(e.data)}}etp.create=e=>new etp({typeName:tN.ZodBoolean,coerce:e?.coerce||!1,...ee1(e)});class etf extends ee2{_parse(e){let t;if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==eez.date){let t=this._getOrReturnCtx(e);return eeq(t,{code:eeG.invalid_type,expected:eez.date,received:t.parsedType}),eeJ}if(Number.isNaN(e.data.getTime()))return eeq(this._getOrReturnCtx(e),{code:eeG.invalid_date}),eeJ;let r=new eeK;for(let n of this._def.checks)"min"===n.kind?e.data.getTime()<n.value&&(eeq(t=this._getOrReturnCtx(e,t),{code:eeG.too_small,message:n.message,inclusive:!0,exact:!1,minimum:n.value,type:"date"}),r.dirty()):"max"===n.kind?e.data.getTime()>n.value&&(eeq(t=this._getOrReturnCtx(e,t),{code:eeG.too_big,message:n.message,inclusive:!0,exact:!1,maximum:n.value,type:"date"}),r.dirty()):tP.assertNever(n);return{status:r.value,value:new Date(e.data.getTime())}}_addCheck(e){return new etf({...this._def,checks:[...this._def.checks,e]})}min(e,t){return this._addCheck({kind:"min",value:e.getTime(),message:tL.toString(t)})}max(e,t){return this._addCheck({kind:"max",value:e.getTime(),message:tL.toString(t)})}get minDate(){let e=null;for(let t of this._def.checks)"min"===t.kind&&(null===e||t.value>e)&&(e=t.value);return null!=e?new Date(e):null}get maxDate(){let e=null;for(let t of this._def.checks)"max"===t.kind&&(null===e||t.value<e)&&(e=t.value);return null!=e?new Date(e):null}}etf.create=e=>new etf({checks:[],coerce:e?.coerce||!1,typeName:tN.ZodDate,...ee1(e)});class etA extends ee2{_parse(e){if(this._getType(e)!==eez.symbol){let t=this._getOrReturnCtx(e);return eeq(t,{code:eeG.invalid_type,expected:eez.symbol,received:t.parsedType}),eeJ}return eeX(e.data)}}etA.create=e=>new etA({typeName:tN.ZodSymbol,...ee1(e)});class etg extends ee2{_parse(e){if(this._getType(e)!==eez.undefined){let t=this._getOrReturnCtx(e);return eeq(t,{code:eeG.invalid_type,expected:eez.undefined,received:t.parsedType}),eeJ}return eeX(e.data)}}etg.create=e=>new etg({typeName:tN.ZodUndefined,...ee1(e)});class etm extends ee2{_parse(e){if(this._getType(e)!==eez.null){let t=this._getOrReturnCtx(e);return eeq(t,{code:eeG.invalid_type,expected:eez.null,received:t.parsedType}),eeJ}return eeX(e.data)}}etm.create=e=>new etm({typeName:tN.ZodNull,...ee1(e)});class etv extends ee2{constructor(){super(...arguments),this._any=!0}_parse(e){return eeX(e.data)}}etv.create=e=>new etv({typeName:tN.ZodAny,...ee1(e)});class etb extends ee2{constructor(){super(...arguments),this._unknown=!0}_parse(e){return eeX(e.data)}}etb.create=e=>new etb({typeName:tN.ZodUnknown,...ee1(e)});class ety extends ee2{_parse(e){let t=this._getOrReturnCtx(e);return eeq(t,{code:eeG.invalid_type,expected:eez.never,received:t.parsedType}),eeJ}}ety.create=e=>new ety({typeName:tN.ZodNever,...ee1(e)});class etw extends ee2{_parse(e){if(this._getType(e)!==eez.undefined){let t=this._getOrReturnCtx(e);return eeq(t,{code:eeG.invalid_type,expected:eez.void,received:t.parsedType}),eeJ}return eeX(e.data)}}etw.create=e=>new etw({typeName:tN.ZodVoid,...ee1(e)});class etx extends ee2{_parse(e){let{ctx:t,status:r}=this._processInputParams(e),n=this._def;if(t.parsedType!==eez.array)return eeq(t,{code:eeG.invalid_type,expected:eez.array,received:t.parsedType}),eeJ;if(null!==n.exactLength){let e=t.data.length>n.exactLength.value,i=t.data.length<n.exactLength.value;(e||i)&&(eeq(t,{code:e?eeG.too_big:eeG.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&&(eeq(t,{code:eeG.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&&(eeq(t,{code:eeG.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 ee$(t,e,t.path,r)))).then(e=>eeK.mergeArray(r,e));let i=[...t.data].map((e,r)=>n.type._parseSync(new ee$(t,e,t.path,r)));return eeK.mergeArray(r,i)}get element(){return this._def.type}min(e,t){return new etx({...this._def,minLength:{value:e,message:tL.toString(t)}})}max(e,t){return new etx({...this._def,maxLength:{value:e,message:tL.toString(t)}})}length(e,t){return new etx({...this._def,exactLength:{value:e,message:tL.toString(t)}})}nonempty(e){return this.min(1,e)}}etx.create=(e,t)=>new etx({type:e,minLength:null,maxLength:null,exactLength:null,typeName:tN.ZodArray,...ee1(t)});class etC extends ee2{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(null!==this._cached)return this._cached;let e=this._def.shape(),t=tP.objectKeys(e);return this._cached={shape:e,keys:t},this._cached}_parse(e){if(this._getType(e)!==eez.object){let t=this._getOrReturnCtx(e);return eeq(t,{code:eeG.invalid_type,expected:eez.object,received:t.parsedType}),eeJ}let{status:t,ctx:r}=this._processInputParams(e),{shape:n,keys:i}=this._getCached(),a=[];if(!(this._def.catchall instanceof ety&&"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 ee$(r,i,r.path,e)),alwaysSet:e in r.data})}if(this._def.catchall instanceof ety){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&&(eeq(r,{code:eeG.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 ee$(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=>eeK.mergeObjectSync(t,e)):eeK.mergeObjectSync(t,s)}get shape(){return this._def.shape()}strict(e){return tL.errToObj,new etC({...this._def,unknownKeys:"strict",...void 0!==e?{errorMap:(t,r)=>{let n=this._def.errorMap?.(t,r).message??r.defaultError;return"unrecognized_keys"===t.code?{message:tL.errToObj(e).message??n}:{message:n}}}:{}})}strip(){return new etC({...this._def,unknownKeys:"strip"})}passthrough(){return new etC({...this._def,unknownKeys:"passthrough"})}extend(e){return new etC({...this._def,shape:()=>({...this._def.shape(),...e})})}merge(e){return new etC({unknownKeys:e._def.unknownKeys,catchall:e._def.catchall,shape:()=>({...this._def.shape(),...e._def.shape()}),typeName:tN.ZodObject})}setKey(e,t){return this.augment({[e]:t})}catchall(e){return new etC({...this._def,catchall:e})}pick(e){let t={};for(let r of tP.objectKeys(e))e[r]&&this.shape[r]&&(t[r]=this.shape[r]);return new etC({...this._def,shape:()=>t})}omit(e){let t={};for(let r of tP.objectKeys(this.shape))e[r]||(t[r]=this.shape[r]);return new etC({...this._def,shape:()=>t})}deepPartial(){return function e(t){if(t instanceof etC){let r={};for(let n in t.shape){let i=t.shape[n];r[n]=etU.create(e(i))}return new etC({...t._def,shape:()=>r})}if(t instanceof etx)return new etx({...t._def,type:e(t.element)});if(t instanceof etU)return etU.create(e(t.unwrap()));if(t instanceof etz)return etz.create(e(t.unwrap()));if(t instanceof etB)return etB.create(t.items.map(t=>e(t)));else return t}(this)}partial(e){let t={};for(let r of tP.objectKeys(this.shape)){let n=this.shape[r];e&&!e[r]?t[r]=n:t[r]=n.optional()}return new etC({...this._def,shape:()=>t})}required(e){let t={};for(let r of tP.objectKeys(this.shape))if(e&&!e[r])t[r]=this.shape[r];else{let e=this.shape[r];for(;e instanceof etU;)e=e._def.innerType;t[r]=e}return new etC({...this._def,shape:()=>t})}keyof(){return etL(tP.objectKeys(this.shape))}}etC.create=(e,t)=>new etC({shape:()=>e,unknownKeys:"strip",catchall:ety.create(),typeName:tN.ZodObject,...ee1(t)}),etC.strictCreate=(e,t)=>new etC({shape:()=>e,unknownKeys:"strict",catchall:ety.create(),typeName:tN.ZodObject,...ee1(t)}),etC.lazycreate=(e,t)=>new etC({shape:e,unknownKeys:"strip",catchall:ety.create(),typeName:tN.ZodObject,...ee1(t)});class etE extends ee2{_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 eeH(e.ctx.common.issues));return eeq(t,{code:eeG.invalid_union,unionErrors:r}),eeJ});{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 eeH(e));return eeq(t,{code:eeG.invalid_union,unionErrors:i}),eeJ}}get options(){return this._def.options}}etE.create=(e,t)=>new etE({options:e,typeName:tN.ZodUnion,...ee1(t)});let etS=e=>{if(e instanceof etP)return etS(e.schema);if(e instanceof etQ)return etS(e.innerType());if(e instanceof et_)return[e.value];if(e instanceof etN)return e.options;if(e instanceof etF)return tP.objectValues(e.enum);else if(e instanceof etj)return etS(e._def.innerType);else if(e instanceof etg)return[void 0];else if(e instanceof etm)return[null];else if(e instanceof etU)return[void 0,...etS(e.unwrap())];else if(e instanceof etz)return[null,...etS(e.unwrap())];else if(e instanceof etV)return etS(e.unwrap());else if(e instanceof etq)return etS(e.unwrap());else if(e instanceof etG)return etS(e._def.innerType);else return[]};class etM extends ee2{_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==eez.object)return eeq(t,{code:eeG.invalid_type,expected:eez.object,received:t.parsedType}),eeJ;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}):(eeq(t,{code:eeG.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[r]}),eeJ)}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=etS(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 etM({typeName:tN.ZodDiscriminatedUnion,discriminator:e,options:t,optionsMap:n,...ee1(r)})}}class etI extends ee2{_parse(e){let{status:t,ctx:r}=this._processInputParams(e),n=(e,n)=>{if("aborted"===e.status||"aborted"===n.status)return eeJ;let i=function e(t,r){let n=eej(t),i=eej(r);if(t===r)return{valid:!0,data:t};if(n===eez.object&&i===eez.object){let n=tP.objectKeys(r),i=tP.objectKeys(t).filter(e=>-1!==n.indexOf(e)),a={...t,...r};for(let n of i){let i=e(t[n],r[n]);if(!i.valid)return{valid:!1};a[n]=i.data}return{valid:!0,data:a}}if(n===eez.array&&i===eez.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===eez.date&&i===eez.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}):(eeq(r,{code:eeG.invalid_intersection_types}),eeJ)};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}))}}etI.create=(e,t,r)=>new etI({left:e,right:t,typeName:tN.ZodIntersection,...ee1(r)});class etB extends ee2{_parse(e){let{status:t,ctx:r}=this._processInputParams(e);if(r.parsedType!==eez.array)return eeq(r,{code:eeG.invalid_type,expected:eez.array,received:r.parsedType}),eeJ;if(r.data.length<this._def.items.length)return eeq(r,{code:eeG.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),eeJ;!this._def.rest&&r.data.length>this._def.items.length&&(eeq(r,{code:eeG.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 ee$(r,e,r.path,t)):null}).filter(e=>!!e);return r.common.async?Promise.all(n).then(e=>eeK.mergeArray(t,e)):eeK.mergeArray(t,n)}get items(){return this._def.items}rest(e){return new etB({...this._def,rest:e})}}etB.create=(e,t)=>{if(!Array.isArray(e))throw Error("You must pass an array of schemas to z.tuple([ ... ])");return new etB({items:e,typeName:tN.ZodTuple,rest:null,...ee1(t)})};class etk extends ee2{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!==eez.object)return eeq(r,{code:eeG.invalid_type,expected:eez.object,received:r.parsedType}),eeJ;let n=[],i=this._def.keyType,a=this._def.valueType;for(let e in r.data)n.push({key:i._parse(new ee$(r,e,r.path,e)),value:a._parse(new ee$(r,r.data[e],r.path,e)),alwaysSet:e in r.data});return r.common.async?eeK.mergeObjectAsync(t,n):eeK.mergeObjectSync(t,n)}get element(){return this._def.valueType}static create(e,t,r){return new etk(t instanceof ee2?{keyType:e,valueType:t,typeName:tN.ZodRecord,...ee1(r)}:{keyType:etu.create(),valueType:e,typeName:tN.ZodRecord,...ee1(t)})}}class etT extends ee2{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!==eez.map)return eeq(r,{code:eeG.invalid_type,expected:eez.map,received:r.parsedType}),eeJ;let n=this._def.keyType,i=this._def.valueType,a=[...r.data.entries()].map(([e,t],a)=>({key:n._parse(new ee$(r,e,r.path,[a,"key"])),value:i._parse(new ee$(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 eeJ;("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 eeJ;("dirty"===n.status||"dirty"===i.status)&&t.dirty(),e.set(n.value,i.value)}return{status:t.value,value:e}}}}etT.create=(e,t,r)=>new etT({valueType:t,keyType:e,typeName:tN.ZodMap,...ee1(r)});class etR extends ee2{_parse(e){let{status:t,ctx:r}=this._processInputParams(e);if(r.parsedType!==eez.set)return eeq(r,{code:eeG.invalid_type,expected:eez.set,received:r.parsedType}),eeJ;let n=this._def;null!==n.minSize&&r.data.size<n.minSize.value&&(eeq(r,{code:eeG.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&&(eeq(r,{code:eeG.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 eeJ;"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 ee$(r,e,r.path,t)));return r.common.async?Promise.all(s).then(e=>a(e)):a(s)}min(e,t){return new etR({...this._def,minSize:{value:e,message:tL.toString(t)}})}max(e,t){return new etR({...this._def,maxSize:{value:e,message:tL.toString(t)}})}size(e,t){return this.min(e,t).max(e,t)}nonempty(e){return this.min(1,e)}}etR.create=(e,t)=>new etR({valueType:e,minSize:null,maxSize:null,typeName:tN.ZodSet,...ee1(t)});class etD extends ee2{constructor(){super(...arguments),this.validate=this.implement}_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==eez.function)return eeq(t,{code:eeG.invalid_type,expected:eez.function,received:t.parsedType}),eeJ;function r(e,r){return eeW({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,eeV,eeV].filter(e=>!!e),issueData:{code:eeG.invalid_arguments,argumentsError:r}})}function n(e,r){return eeW({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,eeV,eeV].filter(e=>!!e),issueData:{code:eeG.invalid_return_type,returnTypeError:r}})}let i={errorMap:t.common.contextualErrorMap},a=t.data;if(this._def.returns instanceof etO){let e=this;return eeX(async function(...t){let s=new eeH([]),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 eeX(function(...t){let s=e._def.args.safeParse(t,i);if(!s.success)throw new eeH([r(t,s.error)]);let o=Reflect.apply(a,this,s.data),l=e._def.returns.safeParse(o,i);if(!l.success)throw new eeH([n(o,l.error)]);return l.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...e){return new etD({...this._def,args:etB.create(e).rest(etb.create())})}returns(e){return new etD({...this._def,returns:e})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}static create(e,t,r){return new etD({args:e||etB.create([]).rest(etb.create()),returns:t||etb.create(),typeName:tN.ZodFunction,...ee1(r)})}}class etP extends ee2{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})}}etP.create=(e,t)=>new etP({getter:e,typeName:tN.ZodLazy,...ee1(t)});class et_ extends ee2{_parse(e){if(e.data!==this._def.value){let t=this._getOrReturnCtx(e);return eeq(t,{received:t.data,code:eeG.invalid_literal,expected:this._def.value}),eeJ}return{status:"valid",value:e.data}}get value(){return this._def.value}}function etL(e,t){return new etN({values:e,typeName:tN.ZodEnum,...ee1(t)})}et_.create=(e,t)=>new et_({value:e,typeName:tN.ZodLiteral,...ee1(t)});class etN extends ee2{_parse(e){if("string"!=typeof e.data){let t=this._getOrReturnCtx(e),r=this._def.values;return eeq(t,{expected:tP.joinValues(r),received:t.parsedType,code:eeG.invalid_type}),eeJ}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 eeq(t,{received:t.data,code:eeG.invalid_enum_value,options:r}),eeJ}return eeX(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 etN.create(e,{...this._def,...t})}exclude(e,t=this._def){return etN.create(this.options.filter(t=>!e.includes(t)),{...this._def,...t})}}etN.create=etL;class etF extends ee2{_parse(e){let t=tP.getValidEnumValues(this._def.values),r=this._getOrReturnCtx(e);if(r.parsedType!==eez.string&&r.parsedType!==eez.number){let e=tP.objectValues(t);return eeq(r,{expected:tP.joinValues(e),received:r.parsedType,code:eeG.invalid_type}),eeJ}if(this._cache||(this._cache=new Set(tP.getValidEnumValues(this._def.values))),!this._cache.has(e.data)){let e=tP.objectValues(t);return eeq(r,{received:r.data,code:eeG.invalid_enum_value,options:e}),eeJ}return eeX(e.data)}get enum(){return this._def.values}}etF.create=(e,t)=>new etF({values:e,typeName:tN.ZodNativeEnum,...ee1(t)});class etO extends ee2{unwrap(){return this._def.type}_parse(e){let{ctx:t}=this._processInputParams(e);return t.parsedType!==eez.promise&&!1===t.common.async?(eeq(t,{code:eeG.invalid_type,expected:eez.promise,received:t.parsedType}),eeJ):eeX((t.parsedType===eez.promise?t.data:Promise.resolve(t.data)).then(e=>this._def.type.parseAsync(e,{path:t.path,errorMap:t.common.contextualErrorMap})))}}etO.create=(e,t)=>new etO({type:e,typeName:tN.ZodPromise,...ee1(t)});class etQ extends ee2{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===tN.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){let{status:t,ctx:r}=this._processInputParams(e),n=this._def.effect||null,i={addIssue:e=>{eeq(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 eeJ;let n=await this._def.schema._parseAsync({data:e,path:r.path,parent:r});return"aborted"===n.status?eeJ:"dirty"===n.status||"dirty"===t.value?eeY(n.value):n});{if("aborted"===t.value)return eeJ;let n=this._def.schema._parseSync({data:e,path:r.path,parent:r});return"aborted"===n.status?eeJ:"dirty"===n.status||"dirty"===t.value?eeY(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?eeJ:("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?eeJ:("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?eeJ: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 eeJ;let a=n.transform(e.value,i);if(a instanceof Promise)throw Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:t.value,value:a}}tP.assertNever(n)}}etQ.create=(e,t,r)=>new etQ({schema:e,typeName:tN.ZodEffects,effect:t,...ee1(r)}),etQ.createWithPreprocess=(e,t,r)=>new etQ({schema:t,effect:{type:"preprocess",transform:e},typeName:tN.ZodEffects,...ee1(r)});class etU extends ee2{_parse(e){return this._getType(e)===eez.undefined?eeX(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}etU.create=(e,t)=>new etU({innerType:e,typeName:tN.ZodOptional,...ee1(t)});class etz extends ee2{_parse(e){return this._getType(e)===eez.null?eeX(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}etz.create=(e,t)=>new etz({innerType:e,typeName:tN.ZodNullable,...ee1(t)});class etj extends ee2{_parse(e){let{ctx:t}=this._processInputParams(e),r=t.data;return t.parsedType===eez.undefined&&(r=this._def.defaultValue()),this._def.innerType._parse({data:r,path:t.path,parent:t})}removeDefault(){return this._def.innerType}}etj.create=(e,t)=>new etj({innerType:e,typeName:tN.ZodDefault,defaultValue:"function"==typeof t.default?t.default:()=>t.default,...ee1(t)});class etG extends ee2{_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 eeZ(n)?n.then(e=>({status:"valid",value:"valid"===e.status?e.value:this._def.catchValue({get error(){return new eeH(r.common.issues)},input:r.data})})):{status:"valid",value:"valid"===n.status?n.value:this._def.catchValue({get error(){return new eeH(r.common.issues)},input:r.data})}}removeCatch(){return this._def.innerType}}etG.create=(e,t)=>new etG({innerType:e,typeName:tN.ZodCatch,catchValue:"function"==typeof t.catch?t.catch:()=>t.catch,...ee1(t)});class etH extends ee2{_parse(e){if(this._getType(e)!==eez.nan){let t=this._getOrReturnCtx(e);return eeq(t,{code:eeG.invalid_type,expected:eez.nan,received:t.parsedType}),eeJ}return{status:"valid",value:e.data}}}etH.create=e=>new etH({typeName:tN.ZodNaN,...ee1(e)}),Symbol("zod_brand");class etV extends ee2{_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 etW extends ee2{_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?eeJ:"dirty"===e.status?(t.dirty(),eeY(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?eeJ:"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 etW({in:e,out:t,typeName:tN.ZodPipeline})}}class etq extends ee2{_parse(e){let t=this._def.innerType._parse(e),r=e=>("valid"===e.status&&(e.value=Object.freeze(e.value)),e);return eeZ(t)?t.then(e=>r(e)):r(t)}unwrap(){return this._def.innerType}}etq.create=(e,t)=>new etq({innerType:e,typeName:tN.ZodReadonly,...ee1(t)}),etC.lazycreate,(eX=tN||(tN={})).ZodString="ZodString",eX.ZodNumber="ZodNumber",eX.ZodNaN="ZodNaN",eX.ZodBigInt="ZodBigInt",eX.ZodBoolean="ZodBoolean",eX.ZodDate="ZodDate",eX.ZodSymbol="ZodSymbol",eX.ZodUndefined="ZodUndefined",eX.ZodNull="ZodNull",eX.ZodAny="ZodAny",eX.ZodUnknown="ZodUnknown",eX.ZodNever="ZodNever",eX.ZodVoid="ZodVoid",eX.ZodArray="ZodArray",eX.ZodObject="ZodObject",eX.ZodUnion="ZodUnion",eX.ZodDiscriminatedUnion="ZodDiscriminatedUnion",eX.ZodIntersection="ZodIntersection",eX.ZodTuple="ZodTuple",eX.ZodRecord="ZodRecord",eX.ZodMap="ZodMap",eX.ZodSet="ZodSet",eX.ZodFunction="ZodFunction",eX.ZodLazy="ZodLazy",eX.ZodLiteral="ZodLiteral",eX.ZodEnum="ZodEnum",eX.ZodEffects="ZodEffects",eX.ZodNativeEnum="ZodNativeEnum",eX.ZodOptional="ZodOptional",eX.ZodNullable="ZodNullable",eX.ZodDefault="ZodDefault",eX.ZodCatch="ZodCatch",eX.ZodPromise="ZodPromise",eX.ZodBranded="ZodBranded",eX.ZodPipeline="ZodPipeline",eX.ZodReadonly="ZodReadonly";let etK=etu.create,etJ=etd.create;etH.create,eth.create;let etY=etp.create;etf.create,etA.create,etg.create,etm.create,etv.create;let etX=etb.create;ety.create,etw.create,etx.create;let etZ=etC.create;etC.strictCreate,etE.create,etM.create,etI.create,etB.create,etk.create,etT.create,etR.create,etD.create,etP.create,et_.create;let et$=etN.create;etF.create,etO.create,etQ.create,etU.create,etz.create;let et0=etQ.createWithPreprocess;etW.create;let et1=et$(["cm","inch"]),et2=et$(["different_fields","one_field"]),et3=et$(["left_bottom","center","right_bottom","left_center","right_center"]),et9=etZ({buttonLabel:etK(),backgroundColor:etK(),borderColor:etK(),textColor:etK(),borderRadius:etJ(),borderWidth:etJ()}),et4=etZ({units:et1,productWidthAndHeight:et2,metafieldForWidth:etK().nullable(),metafieldForHeight:etK().nullable(),metafieldForWidthAndHeight:etK().nullable(),widgetPosition:et3,_widgetSettings:et9.optional(),isWidgetActive:etY()}),et5=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"),et8=etZ({token:etK().trim().min(1),sid:etK().trim().min(1),expiresIn:etJ().finite()}),et6=etZ({metafields:etK().trim().min(1),posterPic:etK().trim().min(1),title:etK().trim().optional(),widgetSession:etX().optional()}),et7=et0(e=>"string"==typeof e?JSON.parse(e):e,etZ({metafield:etX(),tinuuid:etK().trim().optional()}));async function ere(e,t){let r=await eeU({productType:"wallart-shopify",variant_id:e,metafield_key:"poster_settings"},{baseURL:et5,signal:t});return function(e){let t,r,n=et6.safeParse("string"!=typeof e?e:JSON.parse(e));if(!n.success)return null;let i=et7.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=et4.safeParse(t)).success?r.data:null);if(!a)return null;let s=et8.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 ert="44px",err="60px",ern={left_center:{left:err,top:"50%",transform:"translateY(-50%)"},left_bottom:{left:err,bottom:ert},center:{left:`calc(50% + ${err})`,bottom:ert,transform:"translateX(-50%)"},right_bottom:{right:err,bottom:ert},right_center:{right:err,top:"50%",transform:"translateY(-50%)"}},eri=et0(e=>"number"==typeof e&&Number.isFinite(e)?String(e):e,etK().trim().regex(/^\d+$/));function era(e){let t=eri.safeParse(e);return t.success?t.data:null}function ers(e){return e?e instanceof HTMLInputElement||e instanceof HTMLSelectElement||e instanceof HTMLTextAreaElement?e.value:e.getAttribute("value"):null}let ero=["product-form","[data-main-product]",'[id*="MainProduct"]',".product",".product__info-wrapper",".product__info-container","#MainContent"],erl=[".product-recommendations",".related-products","[data-product-recommendations]"];var erc=r("./src/shopify.css?inline");function eru(){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 era(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),ero))e.closest(i)&&(t+=25);for(let r of erl)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=era(ers(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=era(ers(t));if(e)return e}return null}(e)??function(e=document){let t=e.querySelector("[data-selected-variant-id]");return era(t?.getAttribute("data-selected-variant-id")??null)}(e)}():null}}function erd(){let e=function(){let[e,t]=(0,rx.useState)(eru);return(0,rx.useEffect)(()=>{let e=null,r=window.history.pushState,n=window.history.replaceState,i=()=>{null===e&&(e=window.requestAnimationFrame(()=>{e=null,t(e=>{let t=eru();return e.isProductPage===t.isProductPage&&e.variantId===t.variantId?e:t})}))};window.history.pushState=function(...e){let t=r.apply(this,e);return i(),t},window.history.replaceState=function(...e){let t=n.apply(this,e);return i(),t};let a=ag('body.template-product, body.template-collection, meta[property="og:type"], form[action*="/cart/add"], form[action*="/cart/add"] [name="id"], [name="id"][form], [data-selected-variant-id]',{initialize(e){let t;return{add(){t=(e=>{var t;let r=(t=e).matches("body")?["class"]:t.matches('meta[property="og:type"]')?["content"]:t.matches('form[action*="/cart/add"]')?["action","class","id"]:t.matches('form[action*="/cart/add"] [name="id"], [name="id"][form]')?["form","value"]:t.matches("[data-selected-variant-id]")?["data-selected-variant-id"]:[];if(0===r.length)return;let n=new MutationObserver(i);return n.observe(e,{attributes:!0,attributeFilter:r}),()=>{n.disconnect()}})(e),i()},remove(){t?.(),t=void 0,i()}}}});return document.addEventListener("change",i,!0),document.addEventListener("input",i,!0),document.addEventListener("click",i,!0),window.addEventListener("popstate",i),i(),()=>{null!==e&&window.cancelAnimationFrame(e),window.history.pushState=r,window.history.replaceState=n,a.abort(),document.removeEventListener("change",i,!0),document.removeEventListener("input",i,!0),document.removeEventListener("click",i,!0),window.removeEventListener("popstate",i)}},[]),e}(),[t,r]=(0,rx.useState)(!1),{data:n}=od({queryKey:["vizbl-shopify-room-viewer","activation",e.variantId],queryFn:({signal:t})=>ere(e.variantId??"",t),enabled:e.isProductPage&&null!==e.variantId,staleTime:3e5,gcTime:3e5,refetchOnWindowFocus:!1},s2,void 0),i=(0,rx.useCallback)(()=>{r(!0)},[]),a=(0,rx.useCallback)(e=>{r(e)},[]);if(!e.isProductPage||!e.variantId||!n?.settings.isWidgetActive)return null;let{settings:s,posterPic:o,title:l}=n,c=s._widgetSettings,u=function(e){if("one_field"===e.productWidthAndHeight){let[t,r]=e.metafieldForWidthAndHeight.split("x");return{width:Number(t),height:Number(r)}}return{width:Number(e.metafieldForWidth),height:Number(e.metafieldForHeight)}}(s),d="inch"===s.units?"in":"cm";return(0,rE.jsxs)(rE.Fragment,{children:[(0,rE.jsx)("button",{type:"button",onClick:i,style:{position:"fixed",zIndex:0x7ffffffe,display:"inline-flex",alignItems:"center",justifyContent:"center",padding:"13.522px 21.635px",borderStyle:"solid",borderColor:c?.borderColor??"rgba(65, 90, 229, 0.3)",borderWidth:c?.borderWidth??1,borderRadius:c?.borderRadius??121.053,background:c?.backgroundColor??"#ffffff",boxShadow:"0px 0px 20px 0px rgba(23, 32, 51, 0.14), 0px 16px 32px 0px rgba(23, 32, 51, 0.17)",color:c?.textColor??"#111111",boxSizing:"border-box",cursor:"pointer",maxWidth:"calc(100vw - 16px)",fontFamily:'Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif',fontSize:18,fontWeight:600,letterSpacing:0,lineHeight:"18px",margin:0,appearance:"none",...ern[s.widgetPosition]},children:c?.buttonLabel??"View in place"}),(0,rE.jsx)(eeN,{open:t,onOpenChange:a,type:"wallart",source:"shopify",src:o,name:l??"",width:u.width,height:u.height,dimensionUnit:d,widgetSession:n.widgetSession}),t&&(0,am.createPortal)((0,rE.jsx)("style",{children:erc.A}),document.head)]})}let erh="vizbl-shopify-room-viewer",erp=new rw({defaultOptions:{queries:{refetchOnMount:!1,refetchOnReconnect:!1,refetchOnWindowFocus:!1,retry:(e,t)=>{let r=function(e){if(ix(e))return e.response?.status}(t);return(void 0===r||!(r>=400)||!(r<500))&&e<2}}}});function erf(){let e,t=((e=document.getElementById(erh))||((e=document.createElement("div")).id=erh,document.body.appendChild(e)),e),r=ij.createRoot(t);r.render((0,rx.createElement)(rI,{client:erp},(0,rx.createElement)(erd)));let n=ag(`#${erh}`,{remove(){n.abort(),r.unmount(),erf()}})}iz({baseURL:et5}),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",erf,{once:!0}):erf()})()})();
|