@liveroom-tech/react-immersive 6.1.1 → 6.1.3

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.
Files changed (43) hide show
  1. package/dist/{SequencesTab-LWGOVQ6Y.mjs → SequencesTab-66VBWTO5.mjs} +1 -1
  2. package/dist/binding-builder.css +1 -1
  3. package/dist/binding-builder.d.mts +3 -3
  4. package/dist/binding-builder.d.ts +3 -3
  5. package/dist/binding-builder.js +75 -27
  6. package/dist/binding-builder.mjs +1 -1
  7. package/dist/{chunk-KNCABWVN.mjs → chunk-4RYMXBK6.mjs} +2 -2
  8. package/dist/chunk-5P7ETEAN.mjs +50 -0
  9. package/dist/{chunk-EV6THDXD.mjs → chunk-6Q6YZ7O5.mjs} +1 -1
  10. package/dist/{chunk-MLT4JQAY.mjs → chunk-B75URXOE.mjs} +1 -1
  11. package/dist/chunk-EC542N4J.mjs +1 -0
  12. package/dist/{chunk-5PJ5MLKE.mjs → chunk-JK7GRGRG.mjs} +1 -1
  13. package/dist/{chunk-DEFZEXTA.mjs → chunk-LKKH4PO7.mjs} +1 -1
  14. package/dist/chunk-U3BQMOC3.mjs +83 -0
  15. package/dist/{chunk-Z2VQGUC2.mjs → chunk-VMYNX63T.mjs} +2 -2
  16. package/dist/hosted.css +1 -1
  17. package/dist/hosted.d.mts +3 -3
  18. package/dist/hosted.d.ts +3 -3
  19. package/dist/hosted.js +74 -26
  20. package/dist/hosted.mjs +1 -1
  21. package/dist/index.css +1 -1
  22. package/dist/index.d.mts +4 -4
  23. package/dist/index.d.ts +4 -4
  24. package/dist/index.js +72 -24
  25. package/dist/index.mjs +1 -1
  26. package/dist/{modelFileResolver-B8ADn9Nl.d.mts → modelFileResolver-B2B3F3d1.d.mts} +7 -0
  27. package/dist/{modelFileResolver-B8ADn9Nl.d.ts → modelFileResolver-B2B3F3d1.d.ts} +7 -0
  28. package/dist/{modelViewerProps-BE4D56Ti.d.ts → modelViewerProps-Bo48RDq6.d.ts} +4 -2
  29. package/dist/{modelViewerProps-DBwh-fmu.d.mts → modelViewerProps-DkvYb1GH.d.mts} +4 -2
  30. package/dist/{publicProps-3LNTAskZ.d.ts → publicProps-DJSccx3b.d.ts} +1 -1
  31. package/dist/{publicProps-Clr1nSE6.d.mts → publicProps-DN0-8tBm.d.mts} +1 -1
  32. package/dist/simple-model-viewer.d.mts +2 -2
  33. package/dist/simple-model-viewer.d.ts +2 -2
  34. package/dist/simple-model-viewer.js +1 -1
  35. package/dist/simple-model-viewer.mjs +1 -1
  36. package/dist/utils.d.mts +4 -4
  37. package/dist/utils.d.ts +4 -4
  38. package/dist/utils.js +50 -2
  39. package/dist/utils.mjs +1 -1
  40. package/package.json +1 -1
  41. package/dist/chunk-5FLX45O5.mjs +0 -2
  42. package/dist/chunk-644OGSQJ.mjs +0 -83
  43. package/dist/chunk-OPDRK3GS.mjs +0 -1
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- "use client";import{c as he}from"./chunk-5PJ5MLKE.mjs";import"./chunk-MMO7KCYU.mjs";import{a as _e,b as Ne,c as xn}from"./chunk-F5QSXMME.mjs";import{A as ft,B as qe,C as kn,a as Ee,c as lt,e as yn,m as On,n as jn,x as ut,y as pt,z as He}from"./chunk-644OGSQJ.mjs";import"./chunk-7OWHW66D.mjs";import"./chunk-MLT4JQAY.mjs";import"./chunk-FGAJ2UT7.mjs";import{A as ct}from"./chunk-KNCABWVN.mjs";import{a as st,b as at}from"./chunk-DEFZEXTA.mjs";import"./chunk-37YITTIK.mjs";import{$ as qt,Aa as vn,Ba as Mn,C as Se,Ca as Pn,D as Oe,Da as Rn,E as kt,Ea as dt,F as Ut,Ha as Ue,Ia as De,J as re,Ja as An,K as Te,Ka as En,La as Tn,M as Dt,Ma as In,N as Ht,Na as Ln,X as _t,Z as Nt,aa as Ft,ba as Kt,ca as Gt,da as $t,e as ot,ea as zt,fa as Wt,ga as fn,ha as ge,ia as ye,ja as ke,oa as gn,pa as mn,sa as bn,ta as hn,va as Vn,za as Bn}from"./chunk-5FLX45O5.mjs";import{b as Cn,c as Sn}from"./chunk-CCBFMNAU.mjs";import{a as xt,b as At,e as Et,f as Tt,g as It}from"./chunk-LX3GXQNU.mjs";import{b as fe,c as Le,d as Xt,e as Jt,f as Qt,g as Zt,h as en,i as tn,j as nn,k as rn,l as on,m as sn,n as an,o as cn,p as ln,q as dn,r as un,s as pn}from"./chunk-7JCFNZJM.mjs";import{a as ee,b as le,c as Ie}from"./chunk-GV4ZRXL6.mjs";import{n as wn}from"./chunk-EV6THDXD.mjs";import{a as Lt}from"./chunk-OPDRK3GS.mjs";import{c as Yt}from"./chunk-BNKTI3CY.mjs";import"./chunk-JR557W27.mjs";import{useCallback as Un,useEffect as je,useMemo as Be,useRef as Fe,useState as me}from"react";import{jsx as ie,jsxs as Ke}from"react/jsx-runtime";var Dn=Object.freeze({});function gt(e){return ie(st,{labels:e.labels,children:ie(Hn,{...e})})}function Hn({before:e,after:t,layout:i="slider",split:s,onSplitChange:p,reveal:y="auto",semanticComparison:l=!1,showComparisonOutlines:x,onComparisonOutlinesChange:B,onComparisonChange:O,linkSections:v,...m}){let k=at(),[E,C]=me(y==="auto");je(()=>{y==="auto"&&C(!0)},[y]);let[h,b]=me(.5),[f,S]=me(!0),R=x??f,j=P=>{x===void 0&&S(P),B?.(P)},q=He(s??h),X=Un(P=>{let A=He(P);s===void 0&&b(A),p?.(A)},[s,p]),_=Fe([null,null]),[V,J]=me([null,null]),[N,a]=me(null),[r,c]=me(null),u=[{...m,...e},{...m,...t}];je(()=>a(null),[u[0].sceneConfig?.section,u[1].sceneConfig?.section]);let w=P=>{let A=u[P].objectBindings;return A&&typeof A=="object"?A:V[P]?.url===u[P].modelUrl?V[P].bindings:Dn},L=w(0),$=w(1),n=Be(()=>l?Ue({objectBindings:L,sceneConfig:u[0].sceneConfig},{objectBindings:$,sceneConfig:u[1].sceneConfig},typeof l=="object"?l:{}):null,[l,L,$,u[0].sceneConfig,u[1].sceneConfig]),o=n?JSON.stringify(n):"",g=Fe(null);je(()=>{n&&g.current!==o&&(g.current=o,O?.(n))},[n,o,O]);let d=n?.objects.find(P=>P.id===r),M=Be(()=>n?[De(n,"before",r),De(n,"after",r)]:null,[n,r]),I=Be(()=>pt(),[]);je(()=>()=>I.detach(),[I]);let T=[e,t],D=Be(()=>[0,1].map(P=>(A,W)=>{_.current[P]=A,J(K=>K[P]?.bindings===A.objectBindings&&K[P]?.url===W?K:K.map((G,we)=>we===P?{url:W,bindings:A.objectBindings}:G)),I.attach(P,A.raw.controls,A.invalidate)}),[I]),z=T.map((P,A)=>{let{label:W,...K}=P,G={preset:"minimal",...m,...K},we=K.onViewerReady??m.onViewerReady;return{...G,...v??!!l?{sceneConfig:{...G.sceneConfig,section:N??u[1].sceneConfig?.section??Se},onSceneConfigChange:oe=>{a(oe.section??Se),(K.onSceneConfigChange??m.onSceneConfigChange)?.(oe)}}:{},...M?{comparisonHighlights:R?M[A]:void 0,selectedObject:A===0?d?.beforeKey?L[d.beforeKey]:null:d?.afterKey?$[d.afterKey]:null}:{},onObjectSelect:oe=>{if((K.onObjectSelect??m.onObjectSelect)?.(oe),n){let Ce=n.objects.find(Z=>(A===0?Z.beforeObjectId:Z.afterObjectId)===oe?.modelObjectId);c(Ce?.id??null)}},onViewerReady:oe=>{D[A](oe,G.modelUrl),we?.(oe)}}}),F=[e.label??k("compareBefore"),t.label??k("compareAfter")];(!z[0].modelUrl||!z[1].modelUrl)&&console.error("[react-immersive] CompareViewer needs a modelUrl, shared or on each side.");let ce=Fe(null),Q=n?ie(ut,{showOutlines:R,onShowOutlinesChange:j,report:n,selected:r,onSelect:P=>{c(P.id);let A=P.afterObjectId?1:0,W=_.current[A],K=A===1?P.afterObjectId:P.beforeObjectId,G=K?W?.raw.nodes[K]:null;W&&G&&(I.setLeader(A),W.raw.controls.fitToBox(G,!0),W.invalidate())},onClear:()=>c(null)}):null;if(!E)return ie(ct,{className:"ri-compare",background:lt(m.backgroundColor,m.sceneConfig),poster:m.poster??t.poster??e.poster,onReveal:()=>C(!0)});if(i==="side-by-side")return Ke("div",{className:"ri-compare ri-compare--sideBySide",children:[z.map((P,A)=>Ke("div",{className:"ri-compare__pane",children:[ie(he,{...P}),ie("span",{className:"ri-compare__label",children:F[A]})]},A)),Q]});let Y=`${q*100}%`;return Ke("div",{ref:ce,className:"ri-compare ri-compare--slider",style:{"--ri-compare-split":Y},children:[ie("div",{className:"ri-compare__layer",children:ie(he,{...z[0]})}),ie("div",{className:"ri-compare__layer ri-compare__layer--after",children:ie(he,{...z[1]})}),Q,ie(ft,{split:q,onSplitChange:X,labels:[F[0],F[1]],containerRef:ce})]})}import{useCallback as xe,useRef as jt}from"react";import{useCallback as H,useMemo as mt,useState as _n}from"react";var bt={baseColor:"texture",metalness:"metalnessMap",roughness:"roughnessMap",emissive:"emissiveMap",alpha:"alphaMap",normal:"normalMap",bump:"bumpMap",ao:"aoMap",displacement:"displacementMap",clearcoat:"clearcoatMap",clearcoatRoughness:"clearcoatRoughnessMap",clearcoatNormal:"clearcoatNormalMap",anisotropy:"anisotropyMap",transmission:"transmissionMap",thickness:"thicknessMap",sheenColor:"sheenColorMap",sheenRoughness:"sheenRoughnessMap",specularIntensity:"specularIntensityMap",specularColor:"specularColorMap"};function wt(e){if(e)return Object.fromEntries(Object.entries(e).map(([t,i])=>[t,i&&typeof i=="object"?{...i}:i]))}function Nn(e){return Object.fromEntries(Object.entries(e).filter(([,t])=>t.visible===!1).map(([t])=>[t,!0]))}function Ge(e){let[t,i]=_n(e),s=H((a,r)=>{i(c=>r===void 0?fe(c,a):fe(c,a,r))},[]),p=H((a,r)=>s(a,Le(r)),[s]),y=H((a,r)=>p(a,{baseColor:r}),[p]),l=H((a,r,c="baseColor")=>{let u=bt[c],w=typeof r=="string"?{path:r}:r;s(a,{style:{material:{[u]:w}}})},[s]),x=H((a,r="baseColor")=>{let c=bt[r];s(a,{style:{material:{[c]:void 0}}})},[s]),B=H((a,r)=>{i(c=>{let u=ee(c,a);if(!u)return c;let w=wt(c[u]?.style?.material),L=le(c,r);if(L.length===0)return c;let $=c;for(let n of L){let o=c[n];o&&($===c&&($={...c}),$[n]={...o,style:{...o.style,material:wt(w)}})}return $})},[]),O=H(a=>s(a,{style:{material:void 0}}),[s]),v=H((a,r)=>s(a,{transform:r}),[s]),m=H(a=>s(a,{transform:void 0}),[s]),k=H((a,r)=>s(a,{metadata:r}),[s]),E=H((a,r)=>{i(c=>{let u=c;for(let w of le(c,a)){let L=c[w],$=r(L.decals??[]);u===c&&(u={...c}),u[w]={...L,decals:$.length>0?$:void 0}}return u})},[]),C=H((a,r)=>{let c=r.id??`decal-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`;return E(a,u=>[...u.filter(w=>w.id!==c),{...r,id:c}]),c},[E]),h=H((a,r,c)=>E(a,u=>u.map(w=>w.id===r?{...w,...c}:w)),[E]),b=H((a,r)=>E(a,c=>c.filter(u=>u.id!==r)),[E]),f=H(a=>Ie(t,a),[t]),S=H(a=>le(t,a).map(r=>t[r]?.id??r),[t]),R=H(a=>{let r=ee(t,a);return r?t[r]?.style?.material??null:null},[t]),j=H(a=>s(a,{visible:!1}),[s]),q=H(a=>s(a,{visible:!0}),[s]),X=H(a=>{i(r=>{let c=le(r,a).reduce((u,w)=>{let L=r[w];return L&&u.push({ids:w,patch:{visible:L.visible===!1}}),u},[]);return fe(r,c)})},[i]),_=H(()=>{i(a=>fe(a,Object.keys(a),{visible:!0}))},[i]),V=mt(()=>Nn(t),[t]),J=mt(()=>Object.keys(V).map(a=>t[a]?.id??a),[V,t]),N=H(a=>{let r=ee(t,a);return r?t[r]?.visible===!1:!1},[t]);return{objectBindings:t,setObjectBindings:i,updateObjectBindings:s,setMaterial:p,setBaseColor:y,setTexture:l,clearTexture:x,copyMaterial:B,resetMaterial:O,getMaterial:R,setTransform:v,resetTransform:m,updateMetadata:k,addDecal:C,updateDecal:h,removeDecal:b,selectObjectBindings:f,selectObjectBindingIds:S,hiddenObjects:V,hiddenObjectIds:J,hideObject:j,showObject:q,toggleObjectVisibility:X,isObjectHidden:N,clearHiddenObjects:_}}import{useCallback as te,useMemo as qn,useRef as Fn,useState as Kn}from"react";function $e(e){let t=Fn(null),[i,s]=Kn(()=>{let f=typeof e=="function"?e():e;return t.current=f,f}),p=te(f=>{s(S=>{let R=typeof f=="function"?f(S):f;return _e(S,R)})},[]),y=te(()=>{let f=t.current;f&&s(f)},[]),l=te((f,S)=>{p(R=>({lighting:{lights:R.lighting.lights.map(j=>j.id===f?{...j,...S}:j)}}))},[p]),x=te(f=>{p(S=>S.lighting.lights.some(R=>R.id===f.id)?{}:{lighting:{lights:[...S.lighting.lights,Ne(f)]}})},[p]),B=te(f=>{p(S=>({lighting:{lights:S.lighting.lights.filter(R=>R.id!==f)}}))},[p]),O=te((f,S)=>l(f,{intensity:S}),[l]),v=te((f,S)=>l(f,{color:S}),[l]),m=te(f=>l(f,{visible:!0}),[l]),k=te(f=>l(f,{visible:!1}),[l]),E=te(f=>{p(S=>({lighting:{lights:S.lighting.lights.map(R=>R.id===f?{...R,visible:!R.visible}:R)}}))},[p]),C=te((f,S)=>l(f,{attachment:S,attachedToCamera:!1}),[l]),h=te(f=>l(f,{attachment:void 0}),[l]),b=qn(()=>({items:i.lighting.lights,get:f=>i.lighting.lights.find(S=>S.id===f),add:x,update:l,remove:B,setIntensity:O,setColor:v,show:m,hide:k,toggle:E,attach:C,detach:h}),[i.lighting.lights,x,l,B,O,v,m,k,E,C,h]);return{sceneConfig:i,setSceneConfig:s,updateSceneConfig:p,resetSceneConfig:y,lights:b}}import{useCallback as ze}from"react";function We({bindings:e,scene:t,camera:i,animations:s,isolation:p,onAction:y}){let{objectBindings:l,updateObjectBindings:x,showObject:B,hideObject:O,toggleObjectVisibility:v}=e,m=t?.updateSceneConfig,k=i?.focusObject,E=i?.fitScene,C=i?.resetView,h=i?.setCameraTarget,b=i?.setCameraState,f=s?.play,S=s?.pause,R=s?.stop,j=s?.setSpeed,q=s?.seek,X=p?.handleIsolationChange,_=ze(N=>{let a=ee(l,N);return a?l[a]?.actions??[]:[]},[l]),V=ze(async N=>{for(let a of N.action.effects??[]){if("objectBindings"in a){x(a.target,a.objectBindings);continue}if("sceneConfig"in a){m?.(a.sceneConfig);continue}if("isolation"in a){X?.(a.isolation);continue}if("visibility"in a){a.visibility==="show"?B(a.target):a.visibility==="hide"?O(a.target):v(a.target);continue}if("camera"in a){let c=a.camera;c.type==="focus-object"?await k?.(c.objectId??N.objectId):c.type==="fit-scene"?await E?.():c.type==="reset"?await C?.():c.type==="set-target"?await h?.(c.target,c.transition??!0):await b?.(c.state,c.transition??!0);continue}let r=a.animation;if(r.type==="play"){let{type:c,clip:u,...w}=r;f?.(u,w)}else r.type==="pause"?S?.(r.clip):r.type==="stop"?R?.(r.clip):r.type==="set-speed"?j?.(r.speed,r.clip):q?.(r.time,r.clip)}await y?.(N)},[E,k,O,y,S,f,C,q,j,b,h,X,B,R,v,x,m]),J=ze(async(N,a)=>{let r=ee(l,N);if(!r)return null;let c=l[r],u=c?.actions?.find(L=>L.id===a);if(!c||!u)return null;let w={objectId:r,action:u,binding:c};return await V(w),w},[V,l]);return{getActionsForObject:_,handleAction:V,runAction:J}}import{useCallback as Ve,useRef as yt}from"react";function Gn(e){return typeof e=="function"?e:e?.handleViewerReady??null}function Ye(...e){let t=yt(null),i=yt(e);i.current=e;let s=Ve(B=>{t.current=B;let O=new Set;for(let v of i.current){let m=Gn(v);m&&!O.has(m)&&(O.add(m),m(B))}},[]),p=Ve(()=>t.current,[]),y=Ve(B=>{let O=t.current;return O?O.captureImage(B):Promise.reject(new Error("ModelViewer is not ready yet."))},[]),l=Ve(()=>{let B=t.current;return B?(B.invalidate(),!0):!1},[]),x=Ve(B=>{let O=t.current;return O?O.captureVideo(B):Promise.reject(new Error("ModelViewer is not ready yet."))},[]);return{handleViewerReady:s,getViewer:p,captureImage:y,captureVideo:x,invalidate:l}}import{useCallback as U,useEffect as $n,useRef as se}from"react";import{Material as zn,PointLight as Wn,Vector3 as Yn}from"three";var Qe=["emissiveIntensity","opacity","metalness","roughness","transmission","clearcoat","clearcoatRoughness","ior","thickness"],ve=1;function Me(e){return typeof e=="string"?[e]:e}function Pe(e,t=0,i=1){return Math.min(i,Math.max(t,e))}function Xe(e,t){return e+Math.random()*(t-e)}function ht([e,t],i){return e+(t-e)*i}function Je([e,t],i){return[e[0]+(t[0]-e[0])*i,e[1]+(t[1]-e[1])*i,e[2]+(t[2]-e[2])*i]}function Vt(e,t){let i=Pe(e);switch(t){case"ease-in":return i*i;case"ease-out":return 1-(1-i)*(1-i);case"ease-in-out":return i<.5?2*i*i:1-Math.pow(-2*i+2,2)/2;default:return i}}function Xn(e){let t=e.material;return t?(Array.isArray(t)?t:[t]).filter(i=>i instanceof zn):[]}function Jn(e){let t={opacity:e.opacity,transparent:e.transparent};e.color&&(t.baseColor=`#${e.color.getHexString()}`),e.emissive&&(t.emissive=`#${e.emissive.getHexString()}`);for(let i of Qe){let s=e[i];typeof s=="number"&&(t[i]=s)}return t}function Ct(e,t){t.baseColor!==void 0&&e.color&&e.color.set(t.baseColor),t.emissive!==void 0&&e.emissive&&e.emissive.set(t.emissive);for(let i of Qe){let s=t[i];s!==void 0&&typeof e[i]=="number"&&(e[i]=s)}t.transparent!==void 0&&(e.transparent=t.transparent),e.needsUpdate=!0}function Qn(e){return{position:[e.position.x,e.position.y,e.position.z],rotation:[e.rotation.x,e.rotation.y,e.rotation.z],scale:[e.scale.x,e.scale.y,e.scale.z],visible:e.visible}}function Zn(e,t){if(t.position&&e.position.set(...t.position),t.rotation&&e.rotation.set(...t.rotation),t.scale!==void 0){let i=typeof t.scale=="number"?[t.scale,t.scale,t.scale]:t.scale;e.scale.set(...i)}t.visible!==void 0&&(e.visible=t.visible),e.updateMatrix(),e.updateMatrixWorld(!0)}function Ze(e={}){let t=se(e);t.current=e;let i=se(null),s=se(null),p=se(null),y=se(new Map),l=se(new Map),x=se(new Map),B=se(new Map),O=U(n=>{let o=i.current;if(!o)return null;let g=ee(o.objectBindings,n);return o.raw.nodes[n]??(g?o.raw.nodes[g]:null)??(o.raw.scene?ot(o.raw.scene,n):null)??null},[]),v=U(n=>{let o=i.current;return o?typeof n=="object"&&!Array.isArray(n)?le(o.objectBindings,n):Me(n).map(g=>ee(o.objectBindings,g)??g):typeof n=="string"?[n]:Array.isArray(n)?n:[]},[]),m=U(()=>{i.current?.invalidate()},[]),k=U((n,o)=>{let g=!1;for(let d of v(n)){let M=O(d);if(M)for(let I of Xn(M))x.current.has(I)||x.current.set(I,Jn(I)),Ct(I,o),g=!0}return g},[O,v]),E=U((n,o)=>{let g=k(n,o);return g&&m(),g},[m,k]),C=U((n,o)=>{let g=!1;for(let d of v(n)){let M=O(d);M&&(B.current.has(M)||B.current.set(M,Qn(M)),Zn(M,o),g=!0)}return g},[O,v]),h=U((n,o)=>{let g=C(n,o);return g&&m(),g},[m,C]),b=U(n=>{let o=O(n);if(!o)return null;o.updateWorldMatrix(!0,!1);let g=o.getWorldPosition(new Yn);return[g.x,g.y,g.z]},[O]),f=U(n=>{let o=l.current.get(n);return o?(o.light.removeFromParent(),o.light.dispose(),l.current.delete(n),m(),!0):!1},[m]),S=U(n=>{let o=O(n.target);if(!o)return!1;let g=l.current.get(n.id),d=g?.light??new Wn;return g&&g.target!==n.target&&d.removeFromParent(),d.name=`react-immersive-runtime-light:${n.id}`,d.color.set(n.color??"#ffffff"),d.intensity=n.intensity??1,d.distance=n.distance??0,d.decay=n.decay??2,d.castShadow=n.castShadow??!1,d.position.set(...n.offset??[0,0,0]),d.parent!==o&&o.add(d),l.current.set(n.id,{light:d,target:n.target}),m(),!0},[m,O]),R=U((n,o)=>{let g=l.current.get(n);if(!g)return!1;if(o.target&&o.target!==g.target){let d=O(o.target);if(!d)return!1;g.light.removeFromParent(),d.add(g.light),g.target=o.target}return o.color!==void 0&&g.light.color.set(o.color),o.intensity!==void 0&&(g.light.intensity=o.intensity),o.distance!==void 0&&(g.light.distance=o.distance),o.decay!==void 0&&(g.light.decay=o.decay),o.offset!==void 0&&g.light.position.set(...o.offset),o.castShadow!==void 0&&(g.light.castShadow=o.castShadow),m(),!0},[m,O]),j=U((n,o)=>{let g=d=>o[d%o.length]??0;for(let d of n.materials??[])v(d.targets).forEach((M,I)=>{let T=g(I),D={};for(let z of Qe){let F=d.values[z];F&&(D[z]=ht(F,T))}k(M,D)});for(let d of n.transforms??[])v(d.targets).forEach((M,I)=>{let T=g(I),D={};d.values.position&&(D.position=Je(d.values.position,T)),d.values.rotation&&(D.rotation=Je(d.values.rotation,T)),d.values.scale&&(D.scale=Je(d.values.scale,T)),C(M,D)});for(let d of n.lights??[])Me(d.lights).forEach((M,I)=>{let T=l.current.get(M);T&&(T.light.intensity=ht(d.intensity,g(I)))})},[v,k,C]),q=se(()=>{}),X=se(()=>{});X.current=n=>{p.current=null;let o=!1;for(let[g,d]of y.current){d.startedAt===null&&(d.startedAt=n);let M=d.lastFrameAt??n;d.lastFrameAt=n;let I=d.override&&d.override.until>n?d.override.level:null;d.override&&I===null&&(d.override=null);let T=d.update(n,n-d.startedAt,Math.min(100,n-M),I);o=!0,T||(y.current.delete(g),d.onComplete?.())}o&&m(),y.current.size>0&&q.current()},q.current=()=>{p.current!==null||typeof requestAnimationFrame>"u"||(p.current=requestAnimationFrame(n=>X.current(n)))};let _=U(n=>(y.current.set(n.id,n),q.current(),n.id),[]),V=U((n,o={})=>{let g=o.id??`transition-${ve++}`,d=Math.max(1,o.duration??400),M=o.easing??"ease-in-out";return _({id:g,startedAt:null,lastFrameAt:null,override:null,onComplete:o.onComplete,update:(I,T,D,z)=>{let F=z??Vt(T/d,M);return j(n,[F]),T<d}})},[j,_]),J=U((n,o={})=>{let g=o.id??`pulse-${ve++}`,d=Math.max(1,o.duration??1e3),M=o.minLevel??0,I=o.maxLevel??1,T=o.repeat??1/0,D=o.synchronized??!0,z=Math.max(1,...[...n.materials??[],...n.transforms??[]].map(F=>v(F.targets).length),...(n.lights??[]).map(F=>Me(F.lights).length));return _({id:g,startedAt:null,lastFrameAt:null,override:null,onComplete:o.onComplete,update:(F,ce,ue,Q)=>{let Y=ce/d,P=Array.from({length:D?1:z},(A,W)=>{if(Q!==null)return Q;let K=Y+(D?0:W/z),G=.5-Math.cos(K%1*Math.PI*2)/2;return M+(I-M)*G});return j(n,P),T===1/0||Y<T}})},[j,_,v]),N=U((n,o={})=>{let g=o.id??`timeline-${ve++}`,d=o.repeat??1,M=n.map(T=>({...T,duration:Math.max(1,T.duration),hold:Math.max(0,T.hold??0)})),I=Math.max(1,M.reduce((T,D)=>T+D.duration+D.hold,0));return _({id:g,startedAt:null,lastFrameAt:null,override:null,onComplete:o.onComplete,update:(T,D,z,F)=>{if(M.length===0||d<=0)return!1;let ce=D/I;if(d!==1/0&&ce>=d){for(let Y of M)j(Y.channels,[1]);return!1}let ue=D%I,Q=0;for(let Y of M){let P=Q+Y.duration,A=P+Y.hold;if(ue>=P){j(Y.channels,[F??1]),Q=A;continue}if(ue>=Q){let W=F??Vt((ue-Q)/Y.duration,Y.easing??"ease-in-out");j(Y.channels,[W]);break}}return!0}})},[j,_]),a=U((n,o={})=>{let g=o.id??`flicker-${ve++}`,d=o.synchronized??!0,M=o.minLevel??.15,I=o.maxLevel??1,T=o.interval??[45,160],D=typeof T=="number"?[T,T]:T,z=[Math.max(1,Math.min(...D)),Math.max(1,Math.max(...D))],F=Pe(o.response??.7,.01,1),ce=Pe(o.blackoutChance??.08),ue=Pe(o.flashChance??.12),Q=o.flashLevel??1.15,Y=Math.max(1,...[...n.materials??[],...n.transforms??[]].map(G=>v(G.targets).length),...(n.lights??[]).map(G=>Me(G.lights).length)),P=d?1:Y,A=Array.from({length:P},()=>M),W=Array.from({length:P},()=>M),K=Array.from({length:P},()=>0);return _({id:g,startedAt:null,lastFrameAt:null,override:null,onComplete:o.onComplete,update:(G,we,oe,Ce)=>{for(let Z=0;Z<P;Z+=1){if(Ce!==null)W[Z]=Ce;else if(G>=K[Z]){let it=Math.random();W[Z]=it<ce?Xe(0,Math.min(.04,M)):it<ce+ue?Q:Xe(M,I),K[Z]=G+Xe(...z)}let Rt=1-Math.pow(1-F,Math.max(1,oe)/16.67);A[Z]+=(W[Z]-A[Z])*Rt}return j(n,A),o.duration===void 0||we<o.duration}})},[j,_,v]),r=U((n,o,g)=>{let d=y.current.get(n);if(!d)return!1;let M=typeof performance>"u"?Date.now():performance.now();return d.override={level:o,until:M+Math.max(0,g)},q.current(),!0},[]),c=U(n=>y.current.delete(n),[]),u=U(()=>{y.current.clear(),p.current!==null&&typeof cancelAnimationFrame<"u"&&(cancelAnimationFrame(p.current),p.current=null)},[]),w=U(()=>{for(let[n,o]of x.current)Ct(n,o);x.current.clear();for(let[n,o]of B.current)n.position.set(...o.position),n.rotation.set(...o.rotation),n.scale.set(...o.scale),n.visible=o.visible,n.updateMatrix(),n.updateMatrixWorld(!0);B.current.clear();for(let n of l.current.values())n.light.removeFromParent(),n.light.dispose();l.current.clear(),m()},[m]),L=U(()=>{u(),w()},[w,u]),$=U(n=>{s.current&&s.current!==n.raw.scene&&w(),i.current=n,s.current=n.raw.scene,t.current.onViewerReady?.(n)},[w]);return $n(()=>()=>{L(),i.current=null,s.current=null},[L]),{handleViewerReady:$,setMaterial:E,setTransform:h,getWorldPosition:b,addPointLight:S,updatePointLight:R,removePointLight:f,transition:V,timeline:N,pulse:J,flicker:a,overrideEffect:r,stopEffect:c,stopAllEffects:u,resetRuntime:L}}import{useCallback as er,useState as tr}from"react";function et(){let[e,t]=tr(null),i=er(s=>{t(s)},[t]);return{hoveredObjectBinding:e,handleHoveredObject:i}}import{useCallback as St,useState as nr}from"react";function tt(e=null){let[t,i]=nr(e),s=St((y,l)=>i({...l,target:y}),[]),p=St(()=>i(null),[]);return{isolation:t,isolate:s,clearIsolation:p,handleIsolationChange:i}}import{useCallback as Re,useState as de}from"react";function nt(){let[e,t]=de(!0),[i,s]=de(!1),[p,y]=de(null),[l,x]=de(null),[B,O]=de(0),[v,m]=de([]),[k,E]=de([]),[C,h]=de([]),b=Re(j=>{x(j.bounds),O(j.objectCount),m(j.materialVariants),E(j.materialVariantGroups),y(null),t(!1),s(!0)},[]),f=Re(j=>h(j),[]),S=Re(j=>{y(j),x(null),O(0),m([]),E([]),h([]),t(!1),s(!1)},[]),R=Re(()=>{t(!0),s(!1),y(null),x(null),O(0),m([]),E([]),h([])},[]);return{isLoading:e,isReady:i,error:p,bounds:l,objectCount:B,materialVariants:v,materialVariantGroups:k,objects:C,handleModelLoaded:b,handleObjectCatalog:f,handleLoadError:S,resetModelState:R}}import{useCallback as Ot,useState as rr}from"react";function rt(e=null){let[t,i]=rr(e),s=Ot(y=>{i(y)},[i]),p=Ot(()=>{i(null)},[]);return{selectedObjectBinding:t,setSelectedObjectBinding:i,handleObjectSelect:s,clearSelection:p}}var ir={};function or(e={}){let t=jt(e);t.current=e;let i=jt(e.bindings===void 0||e.bindings==="auto"),s=Ge(()=>{let V=t.current.bindings;return V===void 0||V==="auto"?ir:typeof V=="function"?V():V}),p=$e(()=>{let V=t.current.sceneConfig;return V===void 0?Oe:typeof V=="function"?V():V}),y=rt(),l=et(),x=Ee(e.camera),B=nt(),O=qe(),v=tt(),m=Ze(),k=Ye(x,m),E=We({bindings:s,scene:p,camera:x,animations:O,isolation:v,onAction:e.onAction}),{setObjectBindings:C}=s,{handleObjectCatalog:h}=B,b=xe(V=>{h(V),i.current&&C(J=>{let N=dt(V.map(a=>a.name));for(let a of Object.keys(N))J[a]&&(N[a]=J[a]);return N})},[h,C]),{handleObjectSelect:f}=y,S=xe(V=>{f(V),t.current.onObjectSelect?.(V)},[f]),{handleHoveredObject:R}=l,j=xe(V=>{R(V),t.current.onObjectHover?.(V)},[R]),{handleLoadError:q}=B,X=xe(V=>{q(V),t.current.onLoadError?.(V)},[q]),_=e.sceneConfig!==void 0||p.sceneConfig!==Oe;return{props:{objectBindings:s.objectBindings,onObjectBindingsChange:C,selectedObject:y.selectedObjectBinding,onObjectSelect:S,onObjectHover:j,onCameraChange:x.handleCameraChange,onViewerReady:k.handleViewerReady,onModelLoaded:B.handleModelLoaded,onLoadError:X,onObjectCatalog:b,onAnimationsReady:O.handleAnimationsReady,onAction:E.handleAction,onSceneConfigChange:p.setSceneConfig,isolation:v.isolation,onIsolationChange:v.handleIsolationChange,..._?{sceneConfig:p.sceneConfig}:{}},bindings:s,selection:y,hover:l,camera:x,model:B,animations:O,actions:E,scene:p,isolation:v,effects:m,connection:k}}import{useMemo as sr}from"react";function ar(e,t){return sr(()=>{if(!t)return null;let i=e[t];return i||(Object.values(e).find(s=>s.id===t||s.modelObjectId===t)??null)},[e,t])}import{useMemo as cr}from"react";function lr(e){return cr(()=>Object.values(e).map(t=>t.modelObjectId),[e])}import{useCallback as ne,useEffect as Ae,useRef as ae,useState as dr}from"react";function ur(e,t){if(!e.objectBindings&&(!!e.hidden?.length||!!e.selected)&&Object.keys(t).length===0)return null;let s={};if(e.objectBindings)s.bindings=e.objectBindings;else if(e.hidden){let p=new Set(e.hidden);s.bindings=Object.fromEntries(Object.entries(t).map(([y,l])=>[y,{...l,visible:!p.has(l.id)}]))}if(e.selected!==void 0){let p=e.objectBindings??t,y=e.selected?ee(p,e.selected):null;s.selected=y?p[y]:null}return s}function Bt(e){return JSON.stringify(e&&{modelUrl:e.modelUrl,activeModelId:e.activeModelId,tilesetUrl:e.tilesetUrl,mergeModels:e.mergeModels,models:e.models?.map(({id:t,url:i,mergeModels:s})=>({id:t,url:i,mergeModels:s}))})}function pr(e){let t=ae(e);t.current=e;let i=e.paramKey??"view",s=`${i}Id`,[p,y]=dr(!1),l=ae(null),x=ae(null),B=ae(null),O=ae(null),v=ae(null),m=ae(null),k=ae(null),E=ae(null),C=ae(!0),h=ne(r=>{let c=r instanceof Error?r:new Error(String(r));t.current.onError?t.current.onError(c):k.current!==c.message&&console.warn("[react-immersive]",c.message),k.current=c.message},[]),b=ne(()=>{v.current!==null&&clearTimeout(v.current),v.current=null},[]);Ae(()=>(C.current=!0,()=>{C.current=!1,b()}),[b]);let f=ne(()=>{let r=t.current,c=(r.mode??(r.configuration?"configuration":"view"))==="configuration";return{version:1,camera:r.cameraState??void 0,hidden:Object.values(r.objectBindings).filter(u=>u.visible===!1).map(u=>u.id),selected:r.selectedObjectBinding?.id??null,...c?{objectBindings:r.objectBindings,configuration:r.configuration}:{}}},[]),S=ne(()=>ye(f(),typeof window>"u"?void 0:window.location.href),[f]),R=ne(()=>ke(f(),typeof window>"u"?void 0:window.location.href),[f]),j=ne((r,c,u=window.location.href)=>{let w=new URL(u),L=new URLSearchParams(w.hash.slice(1));if(L.delete(i),L.delete(s),L.set(c?s:i,r),w.hash=L.toString(),!c&&w.href.length>(t.current.maxUrlLength??65536))throw new Error("Viewer configuration is too large for an inline link. Save JSON instead, or configure storage for createShareUrl(). Uploaded images can make links large.");return w.href},[i,s]),q=ne(()=>j(ge(S()),!1),[S,j]),X=ne(async()=>{let r=window.location.href,c=t.current.storage,u=await R();if(!c)return j(ge(u),!1,r);let w=await c.save(u);if(typeof w!="string"||!w.trim()||w.length>2048)throw new Error("Viewer state storage returned an invalid id.");return j(w,!0,r)},[R,j]),_=ne(()=>{if(b(),l.current||m.current)return;let r=q();window.history.replaceState(null,"",r),O.current=`inline:${new URL(r).hash}`},[b,q]),V=ne(async()=>{let r=l.current;if(!r||x.current||!C.current)return!1;x.current=r,b();try{let c=t.current,u=r.state;if(u.configuration&&!r.configurationApplied){if(!c.onConfigurationChange)throw new Error("Restoring a full viewer configuration requires onConfigurationChange.");return r.configurationApplied=!0,c.onConfigurationChange(u.configuration),!1}if(u.configuration&&Bt(c.configuration)!==Bt(u.configuration)||c.isReady===!1)return!1;if(u.camera&&!r.cameraApplied){if(!await c.setCameraState(u.camera,!1)||l.current!==r||!C.current)return!1;r.cameraApplied=!0}c=t.current;let w=ur(u,c.objectBindings);return!w||l.current!==r?!1:(w.bindings&&c.onObjectBindingsChange(w.bindings),w.selected!==void 0&&c.setSelectedObjectBinding(w.selected),l.current=null,B.current=r.key,y(!0),!0)}catch(c){throw l.current===r&&(l.current=null),y(!1),c}finally{x.current=null,l.current&&l.current!==r&&C.current&&V().catch(h)}},[b,h]),J=ne(async r=>{let c=ye(r,window.location.href);b(),E.current=null,m.current=null;let u=new URLSearchParams(window.location.hash.slice(1));return O.current=u.has(i)?`inline:${window.location.hash}`:u.has(s)?`stored:${s}:${u.get(s)}`:null,B.current=null,l.current={key:`manual:${ge(c)}`,origin:"manual",state:c,configurationApplied:!1,cameraApplied:!1},y(!1),V()},[V,b,i,s]),N=ne(async()=>{let r=new URLSearchParams(window.location.hash.slice(1)),c=r.get(i),u=r.get(s),w=c!==null?`inline:${window.location.hash}`:u!==null?`stored:${s}:${u}`:null;if(!w)return E.current=null,m.current=null,l.current?.origin==="manual"?V():(l.current=null,B.current=null,y(!0),!1);if(w===O.current||w===B.current)return l.current?.origin==="manual"?V():!1;if(l.current?.key===w)return V();b(),y(!1),E.current=w,l.current=null;let L=c;if(c===null){let n=t.current.storage;if(!n)throw new Error("This shared link requires a viewer state storage adapter.");(!m.current||m.current.key!==w)&&(m.current={key:w,promise:n.load(u)});let o=m.current;try{L=await o.promise}finally{m.current===o&&(m.current=null)}if(E.current!==w||!C.current)return!1;let g=l.current;if(g?.key===w||B.current===w)return g?V():!1}let $;try{$=ye(L,window.location.href)}catch(n){throw n}return l.current={key:w,origin:"url",state:$,configurationApplied:!1,cameraApplied:!1},V()},[V,b,s,i]);Ae(()=>{l.current&&V().catch(h)}),Ae(()=>{let r=()=>{N().catch(h)};return window.addEventListener("hashchange",r),()=>window.removeEventListener("hashchange",r)},[N,h]);let a=null;if(e.autoSync!==!1&&p&&!l.current&&!m.current)try{a=ge(S())}catch{}return Ae(()=>{if(e.autoSync===!1||!p||l.current||m.current){b();return}if(a===null){try{S()}catch(r){h(r)}return}return v.current=setTimeout(()=>{v.current=null;try{_()}catch(r){h(r)}},Math.max(0,e.debounceMs??400)),b},[a,e.autoSync,e.debounceMs,p,b,S,_,h]),{getState:S,getStateAsync:R,restoreState:J,getShareUrl:q,createShareUrl:X,syncUrl:_,restoreFromUrl:N}}import{useCallback as pe,useState as vt}from"react";var fr={};function Mt(){return`asset-${globalThis.crypto.randomUUID()}`}function gr(e){let[t,i]=vt(e),[s,p]=vt(()=>e[0]?re(e[0]):""),y=t.find(C=>re(C)===s)??t[0],l=y?re(y):"",x=pe(C=>{i(h=>h.map(b=>re(b)===l?{...b,objectBindings:C}:b))},[l]),B=pe(C=>{i(h=>h.map(b=>re(b)===l?{...b,sceneConfig:C}:b))},[l]),O=pe(C=>p(h=>{let b=t.find(f=>f.url===C);return b?re(b):h}),[t]),v=pe(C=>{let h={...C,id:C.id??Mt()};return i(b=>{if(b.some(f=>re(f)===h.id))throw new Error("Asset instance ID already exists.");return[...b,h]}),h.id},[]),m=pe(C=>{let h=t.find(j=>re(j)===C);if(!h)return null;let b=structuredClone(h);b.id=Mt(),b.sceneConfig?.measurements&&(b.sceneConfig.measurements.items=b.sceneConfig.measurements.items.map(j=>({...j,modelId:b.id}))),b.label=`${h.label??"Asset"} copy`;let[f,S,R]=h.transform?.position??[0,0,0];return b.transform={...b.transform,position:[f+1,S,R]},i(j=>[...j,b]),b.id},[t]),k=pe(C=>{i(h=>h.filter(b=>re(b)!==C))},[]),E=pe((C,h)=>{let b=Te(h);i(f=>f.map(S=>re(S)===C?{...S,transform:b}:S))},[]);return{modelUrl:y?.url??"",models:t,activeModelId:l,onModelChange:O,onActiveModelChange:p,objectBindings:fr,onObjectBindingsChange:x,sceneConfig:y?.sceneConfig,onSceneConfigChange:B,addModel:v,duplicateModel:m,removeModel:k,updateModelTransform:E}}import{useCallback as be,useEffect as mr,useState as br,useSyncExternalStore as wr}from"react";var yr={sequenceId:null,time:0,duration:0,status:"stopped",previewing:!1,ready:!1,issues:[]},hr=()=>()=>{},Pt=()=>yr;function Vr(){let[e,t]=br(null),i=wr(e?.subscribe??hr,e?.getState??Pt,Pt);mr(()=>()=>e?.stop(),[e]);let s=be(p=>t(p),[]);return{controls:e,playback:i,handleSequencesReady:s,play:be(p=>e?.play(p)??!1,[e]),pause:be(()=>e?.pause(),[e]),stop:be(()=>e?.stop(),[e]),seek:be(p=>e?.seek(p)??!1,[e]),select:be(p=>e?.select(p)??!1,[e])}}export{hn as ACTION_CATALOG,kn as AssetDiagnosticsPanel,gt as CompareViewer,Lt as DEFAULT_MODEL_VIEWER_LABELS,Oe as DEFAULT_SCENE_CONFIG,Se as DEFAULT_SECTION_CONFIG,En as MATERIAL_BLENDING_MODES,An as MATERIAL_SIDES,fn as MAX_VIEWER_STATE_BYTES,_t as MEASUREMENT_UNITS,yn as MODEL_VIEWER_PRESETS,he as ModelViewer,jn as ProductOptions,At as SEQUENCE_EASINGS,xt as SEQUENCE_OBJECT_PROPERTIES,vn as applyIsolation,pn as applyProductOptions,Sn as applyStyleRules,Rn as buildBindingsFromNodes,qt as calibrateMeasurements,Yt as chooseMaterialVariant,Tn as collectObjectHierarchy,Cn as colorScaleValue,Ue as compareViewerConfigurations,In as copyBindingStyle,gn as createARHandoffUrl,Pn as createDefaultBinding,on as decodeProductSelections,Jt as defaultProductSelections,xn as defineObjectBindings,rn as encodeProductSelections,Qt as evaluateProductConfiguration,bn as exportConfiguredUSDZ,Vn as findCatalogAction,tn as formatProductPrice,sn as generateProductSkus,Ht as groundAsset,Mn as inferType,wn as inspectAsset,Bn as isolatedBindingKeys,Le as material,Kt as measurementResult,Nt as measurementScale,Ft as measurementValue,zt as measurementsToCsv,Te as parseAssetTransform,Gt as parseMeasurements,un as parseProductConfiguration,Xt as parseProductDefinition,ln as parseSceneProduct,kt as parseSectionConfig,Wt as parseSelectionSets,Et as parseSequences,ye as parseViewerState,Ln as pasteBindingStyle,fe as patchBindings,_e as patchSceneConfig,ke as prepareViewerState,nn as productCheckoutUrl,an as productDefinitionWarnings,cn as productOptionStates,en as productPriceFromDefinition,mn as readARHandoffUrl,Zt as resolveProductSelections,Tt as sampleSequenceTrack,Ne as sceneLight,Ut as sectionSnapshot,le as selectBindingKeys,Ie as selectBindings,$t as serializeMeasurements,dn as serializeProductConfiguration,ge as serializeViewerState,Dt as snapAssetToGrid,It as upsertSequenceKeyframe,ar as useObjectBinding,lr as useObjectBindingIds,Ge as useObjectBindings,On as useProductConfigurator,$e as useSceneConfig,pr as useShareableViewerState,or as useViewer,We as useViewerActions,qe as useViewerAnimations,Ee as useViewerCamera,Ye as useViewerConnection,Ze as useViewerEffects,et as useViewerHover,tt as useViewerIsolation,nt as useViewerModel,gr as useViewerModels,rt as useViewerSelection,Vr as useViewerSequences};
1
+ "use client";import{c as he}from"./chunk-JK7GRGRG.mjs";import"./chunk-MMO7KCYU.mjs";import{a as _e,b as Ne,c as xn}from"./chunk-F5QSXMME.mjs";import{A as qe,B as kn,b as lt,d as yn,l as On,m as jn,w as ut,x as pt,y as He,z as ft}from"./chunk-U3BQMOC3.mjs";import"./chunk-B75URXOE.mjs";import"./chunk-FGAJ2UT7.mjs";import{A as ct}from"./chunk-4RYMXBK6.mjs";import{a as st,b as at}from"./chunk-LKKH4PO7.mjs";import"./chunk-37YITTIK.mjs";import{Aa as mn,Fa as bn,Ga as hn,Ia as Vn,Ma as Bn,N as Se,Na as vn,O as Oe,Oa as Mn,P as kt,Pa as Pn,Q as Ut,Qa as Rn,Ra as dt,U as re,Ua as Ue,V as Te,Va as De,Wa as An,X as Dt,Xa as En,Y as Ht,Ya as Tn,Za as In,_a as Ln,e as ot,ga as _t,ia as Nt,ka as qt,l as Ee,la as Ft,ma as Kt,na as Gt,oa as $t,pa as zt,qa as Wt,ra as fn,sa as ge,ta as ye,ua as ke,za as gn}from"./chunk-5P7ETEAN.mjs";import{b as Cn,c as Sn}from"./chunk-CCBFMNAU.mjs";import"./chunk-7OWHW66D.mjs";import{a as xt,b as At,e as Et,f as Tt,g as It}from"./chunk-LX3GXQNU.mjs";import{b as fe,c as Le,d as Xt,e as Jt,f as Qt,g as Zt,h as en,i as tn,j as nn,k as rn,l as on,m as sn,n as an,o as cn,p as ln,q as dn,r as un,s as pn}from"./chunk-7JCFNZJM.mjs";import{a as ee,b as le,c as Ie}from"./chunk-GV4ZRXL6.mjs";import{E as wn}from"./chunk-6Q6YZ7O5.mjs";import{a as Lt}from"./chunk-EC542N4J.mjs";import{c as Yt}from"./chunk-BNKTI3CY.mjs";import"./chunk-JR557W27.mjs";import{useCallback as Un,useEffect as je,useMemo as Be,useRef as Fe,useState as me}from"react";import{jsx as ie,jsxs as Ke}from"react/jsx-runtime";var Dn=Object.freeze({});function gt(e){return ie(st,{labels:e.labels,children:ie(Hn,{...e})})}function Hn({before:e,after:t,layout:i="slider",split:s,onSplitChange:p,reveal:y="auto",semanticComparison:l=!1,showComparisonOutlines:x,onComparisonOutlinesChange:B,onComparisonChange:O,linkSections:v,...m}){let k=at(),[E,C]=me(y==="auto");je(()=>{y==="auto"&&C(!0)},[y]);let[h,b]=me(.5),[f,S]=me(!0),R=x??f,j=P=>{x===void 0&&S(P),B?.(P)},q=He(s??h),X=Un(P=>{let A=He(P);s===void 0&&b(A),p?.(A)},[s,p]),_=Fe([null,null]),[V,J]=me([null,null]),[N,a]=me(null),[r,c]=me(null),u=[{...m,...e},{...m,...t}];je(()=>a(null),[u[0].sceneConfig?.section,u[1].sceneConfig?.section]);let w=P=>{let A=u[P].objectBindings;return A&&typeof A=="object"?A:V[P]?.url===u[P].modelUrl?V[P].bindings:Dn},L=w(0),$=w(1),n=Be(()=>l?Ue({objectBindings:L,sceneConfig:u[0].sceneConfig},{objectBindings:$,sceneConfig:u[1].sceneConfig},typeof l=="object"?l:{}):null,[l,L,$,u[0].sceneConfig,u[1].sceneConfig]),o=n?JSON.stringify(n):"",g=Fe(null);je(()=>{n&&g.current!==o&&(g.current=o,O?.(n))},[n,o,O]);let d=n?.objects.find(P=>P.id===r),M=Be(()=>n?[De(n,"before",r),De(n,"after",r)]:null,[n,r]),I=Be(()=>pt(),[]);je(()=>()=>I.detach(),[I]);let T=[e,t],D=Be(()=>[0,1].map(P=>(A,W)=>{_.current[P]=A,J(K=>K[P]?.bindings===A.objectBindings&&K[P]?.url===W?K:K.map((G,we)=>we===P?{url:W,bindings:A.objectBindings}:G)),I.attach(P,A.raw.controls,A.invalidate)}),[I]),z=T.map((P,A)=>{let{label:W,...K}=P,G={preset:"minimal",...m,...K},we=K.onViewerReady??m.onViewerReady;return{...G,...v??!!l?{sceneConfig:{...G.sceneConfig,section:N??u[1].sceneConfig?.section??Se},onSceneConfigChange:oe=>{a(oe.section??Se),(K.onSceneConfigChange??m.onSceneConfigChange)?.(oe)}}:{},...M?{comparisonHighlights:R?M[A]:void 0,selectedObject:A===0?d?.beforeKey?L[d.beforeKey]:null:d?.afterKey?$[d.afterKey]:null}:{},onObjectSelect:oe=>{if((K.onObjectSelect??m.onObjectSelect)?.(oe),n){let Ce=n.objects.find(Z=>(A===0?Z.beforeObjectId:Z.afterObjectId)===oe?.modelObjectId);c(Ce?.id??null)}},onViewerReady:oe=>{D[A](oe,G.modelUrl),we?.(oe)}}}),F=[e.label??k("compareBefore"),t.label??k("compareAfter")];(!z[0].modelUrl||!z[1].modelUrl)&&console.error("[react-immersive] CompareViewer needs a modelUrl, shared or on each side.");let ce=Fe(null),Q=n?ie(ut,{showOutlines:R,onShowOutlinesChange:j,report:n,selected:r,onSelect:P=>{c(P.id);let A=P.afterObjectId?1:0,W=_.current[A],K=A===1?P.afterObjectId:P.beforeObjectId,G=K?W?.raw.nodes[K]:null;W&&G&&(I.setLeader(A),W.raw.controls.fitToBox(G,!0),W.invalidate())},onClear:()=>c(null)}):null;if(!E)return ie(ct,{className:"ri-compare",background:lt(m.backgroundColor,m.sceneConfig),poster:m.poster??t.poster??e.poster,onReveal:()=>C(!0)});if(i==="side-by-side")return Ke("div",{className:"ri-compare ri-compare--sideBySide",children:[z.map((P,A)=>Ke("div",{className:"ri-compare__pane",children:[ie(he,{...P}),ie("span",{className:"ri-compare__label",children:F[A]})]},A)),Q]});let Y=`${q*100}%`;return Ke("div",{ref:ce,className:"ri-compare ri-compare--slider",style:{"--ri-compare-split":Y},children:[ie("div",{className:"ri-compare__layer",children:ie(he,{...z[0]})}),ie("div",{className:"ri-compare__layer ri-compare__layer--after",children:ie(he,{...z[1]})}),Q,ie(ft,{split:q,onSplitChange:X,labels:[F[0],F[1]],containerRef:ce})]})}import{useCallback as xe,useRef as jt}from"react";import{useCallback as H,useMemo as mt,useState as _n}from"react";var bt={baseColor:"texture",metalness:"metalnessMap",roughness:"roughnessMap",emissive:"emissiveMap",alpha:"alphaMap",normal:"normalMap",bump:"bumpMap",ao:"aoMap",displacement:"displacementMap",clearcoat:"clearcoatMap",clearcoatRoughness:"clearcoatRoughnessMap",clearcoatNormal:"clearcoatNormalMap",anisotropy:"anisotropyMap",transmission:"transmissionMap",thickness:"thicknessMap",sheenColor:"sheenColorMap",sheenRoughness:"sheenRoughnessMap",specularIntensity:"specularIntensityMap",specularColor:"specularColorMap"};function wt(e){if(e)return Object.fromEntries(Object.entries(e).map(([t,i])=>[t,i&&typeof i=="object"?{...i}:i]))}function Nn(e){return Object.fromEntries(Object.entries(e).filter(([,t])=>t.visible===!1).map(([t])=>[t,!0]))}function Ge(e){let[t,i]=_n(e),s=H((a,r)=>{i(c=>r===void 0?fe(c,a):fe(c,a,r))},[]),p=H((a,r)=>s(a,Le(r)),[s]),y=H((a,r)=>p(a,{baseColor:r}),[p]),l=H((a,r,c="baseColor")=>{let u=bt[c],w=typeof r=="string"?{path:r}:r;s(a,{style:{material:{[u]:w}}})},[s]),x=H((a,r="baseColor")=>{let c=bt[r];s(a,{style:{material:{[c]:void 0}}})},[s]),B=H((a,r)=>{i(c=>{let u=ee(c,a);if(!u)return c;let w=wt(c[u]?.style?.material),L=le(c,r);if(L.length===0)return c;let $=c;for(let n of L){let o=c[n];o&&($===c&&($={...c}),$[n]={...o,style:{...o.style,material:wt(w)}})}return $})},[]),O=H(a=>s(a,{style:{material:void 0}}),[s]),v=H((a,r)=>s(a,{transform:r}),[s]),m=H(a=>s(a,{transform:void 0}),[s]),k=H((a,r)=>s(a,{metadata:r}),[s]),E=H((a,r)=>{i(c=>{let u=c;for(let w of le(c,a)){let L=c[w],$=r(L.decals??[]);u===c&&(u={...c}),u[w]={...L,decals:$.length>0?$:void 0}}return u})},[]),C=H((a,r)=>{let c=r.id??`decal-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`;return E(a,u=>[...u.filter(w=>w.id!==c),{...r,id:c}]),c},[E]),h=H((a,r,c)=>E(a,u=>u.map(w=>w.id===r?{...w,...c}:w)),[E]),b=H((a,r)=>E(a,c=>c.filter(u=>u.id!==r)),[E]),f=H(a=>Ie(t,a),[t]),S=H(a=>le(t,a).map(r=>t[r]?.id??r),[t]),R=H(a=>{let r=ee(t,a);return r?t[r]?.style?.material??null:null},[t]),j=H(a=>s(a,{visible:!1}),[s]),q=H(a=>s(a,{visible:!0}),[s]),X=H(a=>{i(r=>{let c=le(r,a).reduce((u,w)=>{let L=r[w];return L&&u.push({ids:w,patch:{visible:L.visible===!1}}),u},[]);return fe(r,c)})},[i]),_=H(()=>{i(a=>fe(a,Object.keys(a),{visible:!0}))},[i]),V=mt(()=>Nn(t),[t]),J=mt(()=>Object.keys(V).map(a=>t[a]?.id??a),[V,t]),N=H(a=>{let r=ee(t,a);return r?t[r]?.visible===!1:!1},[t]);return{objectBindings:t,setObjectBindings:i,updateObjectBindings:s,setMaterial:p,setBaseColor:y,setTexture:l,clearTexture:x,copyMaterial:B,resetMaterial:O,getMaterial:R,setTransform:v,resetTransform:m,updateMetadata:k,addDecal:C,updateDecal:h,removeDecal:b,selectObjectBindings:f,selectObjectBindingIds:S,hiddenObjects:V,hiddenObjectIds:J,hideObject:j,showObject:q,toggleObjectVisibility:X,isObjectHidden:N,clearHiddenObjects:_}}import{useCallback as te,useMemo as qn,useRef as Fn,useState as Kn}from"react";function $e(e){let t=Fn(null),[i,s]=Kn(()=>{let f=typeof e=="function"?e():e;return t.current=f,f}),p=te(f=>{s(S=>{let R=typeof f=="function"?f(S):f;return _e(S,R)})},[]),y=te(()=>{let f=t.current;f&&s(f)},[]),l=te((f,S)=>{p(R=>({lighting:{lights:R.lighting.lights.map(j=>j.id===f?{...j,...S}:j)}}))},[p]),x=te(f=>{p(S=>S.lighting.lights.some(R=>R.id===f.id)?{}:{lighting:{lights:[...S.lighting.lights,Ne(f)]}})},[p]),B=te(f=>{p(S=>({lighting:{lights:S.lighting.lights.filter(R=>R.id!==f)}}))},[p]),O=te((f,S)=>l(f,{intensity:S}),[l]),v=te((f,S)=>l(f,{color:S}),[l]),m=te(f=>l(f,{visible:!0}),[l]),k=te(f=>l(f,{visible:!1}),[l]),E=te(f=>{p(S=>({lighting:{lights:S.lighting.lights.map(R=>R.id===f?{...R,visible:!R.visible}:R)}}))},[p]),C=te((f,S)=>l(f,{attachment:S,attachedToCamera:!1}),[l]),h=te(f=>l(f,{attachment:void 0}),[l]),b=qn(()=>({items:i.lighting.lights,get:f=>i.lighting.lights.find(S=>S.id===f),add:x,update:l,remove:B,setIntensity:O,setColor:v,show:m,hide:k,toggle:E,attach:C,detach:h}),[i.lighting.lights,x,l,B,O,v,m,k,E,C,h]);return{sceneConfig:i,setSceneConfig:s,updateSceneConfig:p,resetSceneConfig:y,lights:b}}import{useCallback as ze}from"react";function We({bindings:e,scene:t,camera:i,animations:s,isolation:p,onAction:y}){let{objectBindings:l,updateObjectBindings:x,showObject:B,hideObject:O,toggleObjectVisibility:v}=e,m=t?.updateSceneConfig,k=i?.focusObject,E=i?.fitScene,C=i?.resetView,h=i?.setCameraTarget,b=i?.setCameraState,f=s?.play,S=s?.pause,R=s?.stop,j=s?.setSpeed,q=s?.seek,X=p?.handleIsolationChange,_=ze(N=>{let a=ee(l,N);return a?l[a]?.actions??[]:[]},[l]),V=ze(async N=>{for(let a of N.action.effects??[]){if("objectBindings"in a){x(a.target,a.objectBindings);continue}if("sceneConfig"in a){m?.(a.sceneConfig);continue}if("isolation"in a){X?.(a.isolation);continue}if("visibility"in a){a.visibility==="show"?B(a.target):a.visibility==="hide"?O(a.target):v(a.target);continue}if("camera"in a){let c=a.camera;c.type==="focus-object"?await k?.(c.objectId??N.objectId):c.type==="fit-scene"?await E?.():c.type==="reset"?await C?.():c.type==="set-target"?await h?.(c.target,c.transition??!0):await b?.(c.state,c.transition??!0);continue}let r=a.animation;if(r.type==="play"){let{type:c,clip:u,...w}=r;f?.(u,w)}else r.type==="pause"?S?.(r.clip):r.type==="stop"?R?.(r.clip):r.type==="set-speed"?j?.(r.speed,r.clip):q?.(r.time,r.clip)}await y?.(N)},[E,k,O,y,S,f,C,q,j,b,h,X,B,R,v,x,m]),J=ze(async(N,a)=>{let r=ee(l,N);if(!r)return null;let c=l[r],u=c?.actions?.find(L=>L.id===a);if(!c||!u)return null;let w={objectId:r,action:u,binding:c};return await V(w),w},[V,l]);return{getActionsForObject:_,handleAction:V,runAction:J}}import{useCallback as Ve,useRef as yt}from"react";function Gn(e){return typeof e=="function"?e:e?.handleViewerReady??null}function Ye(...e){let t=yt(null),i=yt(e);i.current=e;let s=Ve(B=>{t.current=B;let O=new Set;for(let v of i.current){let m=Gn(v);m&&!O.has(m)&&(O.add(m),m(B))}},[]),p=Ve(()=>t.current,[]),y=Ve(B=>{let O=t.current;return O?O.captureImage(B):Promise.reject(new Error("ModelViewer is not ready yet."))},[]),l=Ve(()=>{let B=t.current;return B?(B.invalidate(),!0):!1},[]),x=Ve(B=>{let O=t.current;return O?O.captureVideo(B):Promise.reject(new Error("ModelViewer is not ready yet."))},[]);return{handleViewerReady:s,getViewer:p,captureImage:y,captureVideo:x,invalidate:l}}import{useCallback as U,useEffect as $n,useRef as se}from"react";import{Material as zn,PointLight as Wn,Vector3 as Yn}from"three";var Qe=["emissiveIntensity","opacity","metalness","roughness","transmission","clearcoat","clearcoatRoughness","ior","thickness"],ve=1;function Me(e){return typeof e=="string"?[e]:e}function Pe(e,t=0,i=1){return Math.min(i,Math.max(t,e))}function Xe(e,t){return e+Math.random()*(t-e)}function ht([e,t],i){return e+(t-e)*i}function Je([e,t],i){return[e[0]+(t[0]-e[0])*i,e[1]+(t[1]-e[1])*i,e[2]+(t[2]-e[2])*i]}function Vt(e,t){let i=Pe(e);switch(t){case"ease-in":return i*i;case"ease-out":return 1-(1-i)*(1-i);case"ease-in-out":return i<.5?2*i*i:1-Math.pow(-2*i+2,2)/2;default:return i}}function Xn(e){let t=e.material;return t?(Array.isArray(t)?t:[t]).filter(i=>i instanceof zn):[]}function Jn(e){let t={opacity:e.opacity,transparent:e.transparent};e.color&&(t.baseColor=`#${e.color.getHexString()}`),e.emissive&&(t.emissive=`#${e.emissive.getHexString()}`);for(let i of Qe){let s=e[i];typeof s=="number"&&(t[i]=s)}return t}function Ct(e,t){t.baseColor!==void 0&&e.color&&e.color.set(t.baseColor),t.emissive!==void 0&&e.emissive&&e.emissive.set(t.emissive);for(let i of Qe){let s=t[i];s!==void 0&&typeof e[i]=="number"&&(e[i]=s)}t.transparent!==void 0&&(e.transparent=t.transparent),e.needsUpdate=!0}function Qn(e){return{position:[e.position.x,e.position.y,e.position.z],rotation:[e.rotation.x,e.rotation.y,e.rotation.z],scale:[e.scale.x,e.scale.y,e.scale.z],visible:e.visible}}function Zn(e,t){if(t.position&&e.position.set(...t.position),t.rotation&&e.rotation.set(...t.rotation),t.scale!==void 0){let i=typeof t.scale=="number"?[t.scale,t.scale,t.scale]:t.scale;e.scale.set(...i)}t.visible!==void 0&&(e.visible=t.visible),e.updateMatrix(),e.updateMatrixWorld(!0)}function Ze(e={}){let t=se(e);t.current=e;let i=se(null),s=se(null),p=se(null),y=se(new Map),l=se(new Map),x=se(new Map),B=se(new Map),O=U(n=>{let o=i.current;if(!o)return null;let g=ee(o.objectBindings,n);return o.raw.nodes[n]??(g?o.raw.nodes[g]:null)??(o.raw.scene?ot(o.raw.scene,n):null)??null},[]),v=U(n=>{let o=i.current;return o?typeof n=="object"&&!Array.isArray(n)?le(o.objectBindings,n):Me(n).map(g=>ee(o.objectBindings,g)??g):typeof n=="string"?[n]:Array.isArray(n)?n:[]},[]),m=U(()=>{i.current?.invalidate()},[]),k=U((n,o)=>{let g=!1;for(let d of v(n)){let M=O(d);if(M)for(let I of Xn(M))x.current.has(I)||x.current.set(I,Jn(I)),Ct(I,o),g=!0}return g},[O,v]),E=U((n,o)=>{let g=k(n,o);return g&&m(),g},[m,k]),C=U((n,o)=>{let g=!1;for(let d of v(n)){let M=O(d);M&&(B.current.has(M)||B.current.set(M,Qn(M)),Zn(M,o),g=!0)}return g},[O,v]),h=U((n,o)=>{let g=C(n,o);return g&&m(),g},[m,C]),b=U(n=>{let o=O(n);if(!o)return null;o.updateWorldMatrix(!0,!1);let g=o.getWorldPosition(new Yn);return[g.x,g.y,g.z]},[O]),f=U(n=>{let o=l.current.get(n);return o?(o.light.removeFromParent(),o.light.dispose(),l.current.delete(n),m(),!0):!1},[m]),S=U(n=>{let o=O(n.target);if(!o)return!1;let g=l.current.get(n.id),d=g?.light??new Wn;return g&&g.target!==n.target&&d.removeFromParent(),d.name=`react-immersive-runtime-light:${n.id}`,d.color.set(n.color??"#ffffff"),d.intensity=n.intensity??1,d.distance=n.distance??0,d.decay=n.decay??2,d.castShadow=n.castShadow??!1,d.position.set(...n.offset??[0,0,0]),d.parent!==o&&o.add(d),l.current.set(n.id,{light:d,target:n.target}),m(),!0},[m,O]),R=U((n,o)=>{let g=l.current.get(n);if(!g)return!1;if(o.target&&o.target!==g.target){let d=O(o.target);if(!d)return!1;g.light.removeFromParent(),d.add(g.light),g.target=o.target}return o.color!==void 0&&g.light.color.set(o.color),o.intensity!==void 0&&(g.light.intensity=o.intensity),o.distance!==void 0&&(g.light.distance=o.distance),o.decay!==void 0&&(g.light.decay=o.decay),o.offset!==void 0&&g.light.position.set(...o.offset),o.castShadow!==void 0&&(g.light.castShadow=o.castShadow),m(),!0},[m,O]),j=U((n,o)=>{let g=d=>o[d%o.length]??0;for(let d of n.materials??[])v(d.targets).forEach((M,I)=>{let T=g(I),D={};for(let z of Qe){let F=d.values[z];F&&(D[z]=ht(F,T))}k(M,D)});for(let d of n.transforms??[])v(d.targets).forEach((M,I)=>{let T=g(I),D={};d.values.position&&(D.position=Je(d.values.position,T)),d.values.rotation&&(D.rotation=Je(d.values.rotation,T)),d.values.scale&&(D.scale=Je(d.values.scale,T)),C(M,D)});for(let d of n.lights??[])Me(d.lights).forEach((M,I)=>{let T=l.current.get(M);T&&(T.light.intensity=ht(d.intensity,g(I)))})},[v,k,C]),q=se(()=>{}),X=se(()=>{});X.current=n=>{p.current=null;let o=!1;for(let[g,d]of y.current){d.startedAt===null&&(d.startedAt=n);let M=d.lastFrameAt??n;d.lastFrameAt=n;let I=d.override&&d.override.until>n?d.override.level:null;d.override&&I===null&&(d.override=null);let T=d.update(n,n-d.startedAt,Math.min(100,n-M),I);o=!0,T||(y.current.delete(g),d.onComplete?.())}o&&m(),y.current.size>0&&q.current()},q.current=()=>{p.current!==null||typeof requestAnimationFrame>"u"||(p.current=requestAnimationFrame(n=>X.current(n)))};let _=U(n=>(y.current.set(n.id,n),q.current(),n.id),[]),V=U((n,o={})=>{let g=o.id??`transition-${ve++}`,d=Math.max(1,o.duration??400),M=o.easing??"ease-in-out";return _({id:g,startedAt:null,lastFrameAt:null,override:null,onComplete:o.onComplete,update:(I,T,D,z)=>{let F=z??Vt(T/d,M);return j(n,[F]),T<d}})},[j,_]),J=U((n,o={})=>{let g=o.id??`pulse-${ve++}`,d=Math.max(1,o.duration??1e3),M=o.minLevel??0,I=o.maxLevel??1,T=o.repeat??1/0,D=o.synchronized??!0,z=Math.max(1,...[...n.materials??[],...n.transforms??[]].map(F=>v(F.targets).length),...(n.lights??[]).map(F=>Me(F.lights).length));return _({id:g,startedAt:null,lastFrameAt:null,override:null,onComplete:o.onComplete,update:(F,ce,ue,Q)=>{let Y=ce/d,P=Array.from({length:D?1:z},(A,W)=>{if(Q!==null)return Q;let K=Y+(D?0:W/z),G=.5-Math.cos(K%1*Math.PI*2)/2;return M+(I-M)*G});return j(n,P),T===1/0||Y<T}})},[j,_,v]),N=U((n,o={})=>{let g=o.id??`timeline-${ve++}`,d=o.repeat??1,M=n.map(T=>({...T,duration:Math.max(1,T.duration),hold:Math.max(0,T.hold??0)})),I=Math.max(1,M.reduce((T,D)=>T+D.duration+D.hold,0));return _({id:g,startedAt:null,lastFrameAt:null,override:null,onComplete:o.onComplete,update:(T,D,z,F)=>{if(M.length===0||d<=0)return!1;let ce=D/I;if(d!==1/0&&ce>=d){for(let Y of M)j(Y.channels,[1]);return!1}let ue=D%I,Q=0;for(let Y of M){let P=Q+Y.duration,A=P+Y.hold;if(ue>=P){j(Y.channels,[F??1]),Q=A;continue}if(ue>=Q){let W=F??Vt((ue-Q)/Y.duration,Y.easing??"ease-in-out");j(Y.channels,[W]);break}}return!0}})},[j,_]),a=U((n,o={})=>{let g=o.id??`flicker-${ve++}`,d=o.synchronized??!0,M=o.minLevel??.15,I=o.maxLevel??1,T=o.interval??[45,160],D=typeof T=="number"?[T,T]:T,z=[Math.max(1,Math.min(...D)),Math.max(1,Math.max(...D))],F=Pe(o.response??.7,.01,1),ce=Pe(o.blackoutChance??.08),ue=Pe(o.flashChance??.12),Q=o.flashLevel??1.15,Y=Math.max(1,...[...n.materials??[],...n.transforms??[]].map(G=>v(G.targets).length),...(n.lights??[]).map(G=>Me(G.lights).length)),P=d?1:Y,A=Array.from({length:P},()=>M),W=Array.from({length:P},()=>M),K=Array.from({length:P},()=>0);return _({id:g,startedAt:null,lastFrameAt:null,override:null,onComplete:o.onComplete,update:(G,we,oe,Ce)=>{for(let Z=0;Z<P;Z+=1){if(Ce!==null)W[Z]=Ce;else if(G>=K[Z]){let it=Math.random();W[Z]=it<ce?Xe(0,Math.min(.04,M)):it<ce+ue?Q:Xe(M,I),K[Z]=G+Xe(...z)}let Rt=1-Math.pow(1-F,Math.max(1,oe)/16.67);A[Z]+=(W[Z]-A[Z])*Rt}return j(n,A),o.duration===void 0||we<o.duration}})},[j,_,v]),r=U((n,o,g)=>{let d=y.current.get(n);if(!d)return!1;let M=typeof performance>"u"?Date.now():performance.now();return d.override={level:o,until:M+Math.max(0,g)},q.current(),!0},[]),c=U(n=>y.current.delete(n),[]),u=U(()=>{y.current.clear(),p.current!==null&&typeof cancelAnimationFrame<"u"&&(cancelAnimationFrame(p.current),p.current=null)},[]),w=U(()=>{for(let[n,o]of x.current)Ct(n,o);x.current.clear();for(let[n,o]of B.current)n.position.set(...o.position),n.rotation.set(...o.rotation),n.scale.set(...o.scale),n.visible=o.visible,n.updateMatrix(),n.updateMatrixWorld(!0);B.current.clear();for(let n of l.current.values())n.light.removeFromParent(),n.light.dispose();l.current.clear(),m()},[m]),L=U(()=>{u(),w()},[w,u]),$=U(n=>{s.current&&s.current!==n.raw.scene&&w(),i.current=n,s.current=n.raw.scene,t.current.onViewerReady?.(n)},[w]);return $n(()=>()=>{L(),i.current=null,s.current=null},[L]),{handleViewerReady:$,setMaterial:E,setTransform:h,getWorldPosition:b,addPointLight:S,updatePointLight:R,removePointLight:f,transition:V,timeline:N,pulse:J,flicker:a,overrideEffect:r,stopEffect:c,stopAllEffects:u,resetRuntime:L}}import{useCallback as er,useState as tr}from"react";function et(){let[e,t]=tr(null),i=er(s=>{t(s)},[t]);return{hoveredObjectBinding:e,handleHoveredObject:i}}import{useCallback as St,useState as nr}from"react";function tt(e=null){let[t,i]=nr(e),s=St((y,l)=>i({...l,target:y}),[]),p=St(()=>i(null),[]);return{isolation:t,isolate:s,clearIsolation:p,handleIsolationChange:i}}import{useCallback as Re,useState as de}from"react";function nt(){let[e,t]=de(!0),[i,s]=de(!1),[p,y]=de(null),[l,x]=de(null),[B,O]=de(0),[v,m]=de([]),[k,E]=de([]),[C,h]=de([]),b=Re(j=>{x(j.bounds),O(j.objectCount),m(j.materialVariants),E(j.materialVariantGroups),y(null),t(!1),s(!0)},[]),f=Re(j=>h(j),[]),S=Re(j=>{y(j),x(null),O(0),m([]),E([]),h([]),t(!1),s(!1)},[]),R=Re(()=>{t(!0),s(!1),y(null),x(null),O(0),m([]),E([]),h([])},[]);return{isLoading:e,isReady:i,error:p,bounds:l,objectCount:B,materialVariants:v,materialVariantGroups:k,objects:C,handleModelLoaded:b,handleObjectCatalog:f,handleLoadError:S,resetModelState:R}}import{useCallback as Ot,useState as rr}from"react";function rt(e=null){let[t,i]=rr(e),s=Ot(y=>{i(y)},[i]),p=Ot(()=>{i(null)},[]);return{selectedObjectBinding:t,setSelectedObjectBinding:i,handleObjectSelect:s,clearSelection:p}}var ir={};function or(e={}){let t=jt(e);t.current=e;let i=jt(e.bindings===void 0||e.bindings==="auto"),s=Ge(()=>{let V=t.current.bindings;return V===void 0||V==="auto"?ir:typeof V=="function"?V():V}),p=$e(()=>{let V=t.current.sceneConfig;return V===void 0?Oe:typeof V=="function"?V():V}),y=rt(),l=et(),x=Ee(e.camera),B=nt(),O=qe(),v=tt(),m=Ze(),k=Ye(x,m),E=We({bindings:s,scene:p,camera:x,animations:O,isolation:v,onAction:e.onAction}),{setObjectBindings:C}=s,{handleObjectCatalog:h}=B,b=xe(V=>{h(V),i.current&&C(J=>{let N=dt(V.map(a=>a.name));for(let a of Object.keys(N))J[a]&&(N[a]=J[a]);return N})},[h,C]),{handleObjectSelect:f}=y,S=xe(V=>{f(V),t.current.onObjectSelect?.(V)},[f]),{handleHoveredObject:R}=l,j=xe(V=>{R(V),t.current.onObjectHover?.(V)},[R]),{handleLoadError:q}=B,X=xe(V=>{q(V),t.current.onLoadError?.(V)},[q]),_=e.sceneConfig!==void 0||p.sceneConfig!==Oe;return{props:{objectBindings:s.objectBindings,onObjectBindingsChange:C,selectedObject:y.selectedObjectBinding,onObjectSelect:S,onObjectHover:j,onCameraChange:x.handleCameraChange,onViewerReady:k.handleViewerReady,onModelLoaded:B.handleModelLoaded,onLoadError:X,onObjectCatalog:b,onAnimationsReady:O.handleAnimationsReady,onAction:E.handleAction,onSceneConfigChange:p.setSceneConfig,isolation:v.isolation,onIsolationChange:v.handleIsolationChange,..._?{sceneConfig:p.sceneConfig}:{}},bindings:s,selection:y,hover:l,camera:x,model:B,animations:O,actions:E,scene:p,isolation:v,effects:m,connection:k}}import{useMemo as sr}from"react";function ar(e,t){return sr(()=>{if(!t)return null;let i=e[t];return i||(Object.values(e).find(s=>s.id===t||s.modelObjectId===t)??null)},[e,t])}import{useMemo as cr}from"react";function lr(e){return cr(()=>Object.values(e).map(t=>t.modelObjectId),[e])}import{useCallback as ne,useEffect as Ae,useRef as ae,useState as dr}from"react";function ur(e,t){if(!e.objectBindings&&(!!e.hidden?.length||!!e.selected)&&Object.keys(t).length===0)return null;let s={};if(e.objectBindings)s.bindings=e.objectBindings;else if(e.hidden){let p=new Set(e.hidden);s.bindings=Object.fromEntries(Object.entries(t).map(([y,l])=>[y,{...l,visible:!p.has(l.id)}]))}if(e.selected!==void 0){let p=e.objectBindings??t,y=e.selected?ee(p,e.selected):null;s.selected=y?p[y]:null}return s}function Bt(e){return JSON.stringify(e&&{modelUrl:e.modelUrl,activeModelId:e.activeModelId,tilesetUrl:e.tilesetUrl,mergeModels:e.mergeModels,models:e.models?.map(({id:t,url:i,mergeModels:s})=>({id:t,url:i,mergeModels:s}))})}function pr(e){let t=ae(e);t.current=e;let i=e.paramKey??"view",s=`${i}Id`,[p,y]=dr(!1),l=ae(null),x=ae(null),B=ae(null),O=ae(null),v=ae(null),m=ae(null),k=ae(null),E=ae(null),C=ae(!0),h=ne(r=>{let c=r instanceof Error?r:new Error(String(r));t.current.onError?t.current.onError(c):k.current!==c.message&&console.warn("[react-immersive]",c.message),k.current=c.message},[]),b=ne(()=>{v.current!==null&&clearTimeout(v.current),v.current=null},[]);Ae(()=>(C.current=!0,()=>{C.current=!1,b()}),[b]);let f=ne(()=>{let r=t.current,c=(r.mode??(r.configuration?"configuration":"view"))==="configuration";return{version:1,camera:r.cameraState??void 0,hidden:Object.values(r.objectBindings).filter(u=>u.visible===!1).map(u=>u.id),selected:r.selectedObjectBinding?.id??null,...c?{objectBindings:r.objectBindings,configuration:r.configuration}:{}}},[]),S=ne(()=>ye(f(),typeof window>"u"?void 0:window.location.href),[f]),R=ne(()=>ke(f(),typeof window>"u"?void 0:window.location.href),[f]),j=ne((r,c,u=window.location.href)=>{let w=new URL(u),L=new URLSearchParams(w.hash.slice(1));if(L.delete(i),L.delete(s),L.set(c?s:i,r),w.hash=L.toString(),!c&&w.href.length>(t.current.maxUrlLength??65536))throw new Error("Viewer configuration is too large for an inline link. Save JSON instead, or configure storage for createShareUrl(). Uploaded images can make links large.");return w.href},[i,s]),q=ne(()=>j(ge(S()),!1),[S,j]),X=ne(async()=>{let r=window.location.href,c=t.current.storage,u=await R();if(!c)return j(ge(u),!1,r);let w=await c.save(u);if(typeof w!="string"||!w.trim()||w.length>2048)throw new Error("Viewer state storage returned an invalid id.");return j(w,!0,r)},[R,j]),_=ne(()=>{if(b(),l.current||m.current)return;let r=q();window.history.replaceState(null,"",r),O.current=`inline:${new URL(r).hash}`},[b,q]),V=ne(async()=>{let r=l.current;if(!r||x.current||!C.current)return!1;x.current=r,b();try{let c=t.current,u=r.state;if(u.configuration&&!r.configurationApplied){if(!c.onConfigurationChange)throw new Error("Restoring a full viewer configuration requires onConfigurationChange.");return r.configurationApplied=!0,c.onConfigurationChange(u.configuration),!1}if(u.configuration&&Bt(c.configuration)!==Bt(u.configuration)||c.isReady===!1)return!1;if(u.camera&&!r.cameraApplied){if(!await c.setCameraState(u.camera,!1)||l.current!==r||!C.current)return!1;r.cameraApplied=!0}c=t.current;let w=ur(u,c.objectBindings);return!w||l.current!==r?!1:(w.bindings&&c.onObjectBindingsChange(w.bindings),w.selected!==void 0&&c.setSelectedObjectBinding(w.selected),l.current=null,B.current=r.key,y(!0),!0)}catch(c){throw l.current===r&&(l.current=null),y(!1),c}finally{x.current=null,l.current&&l.current!==r&&C.current&&V().catch(h)}},[b,h]),J=ne(async r=>{let c=ye(r,window.location.href);b(),E.current=null,m.current=null;let u=new URLSearchParams(window.location.hash.slice(1));return O.current=u.has(i)?`inline:${window.location.hash}`:u.has(s)?`stored:${s}:${u.get(s)}`:null,B.current=null,l.current={key:`manual:${ge(c)}`,origin:"manual",state:c,configurationApplied:!1,cameraApplied:!1},y(!1),V()},[V,b,i,s]),N=ne(async()=>{let r=new URLSearchParams(window.location.hash.slice(1)),c=r.get(i),u=r.get(s),w=c!==null?`inline:${window.location.hash}`:u!==null?`stored:${s}:${u}`:null;if(!w)return E.current=null,m.current=null,l.current?.origin==="manual"?V():(l.current=null,B.current=null,y(!0),!1);if(w===O.current||w===B.current)return l.current?.origin==="manual"?V():!1;if(l.current?.key===w)return V();b(),y(!1),E.current=w,l.current=null;let L=c;if(c===null){let n=t.current.storage;if(!n)throw new Error("This shared link requires a viewer state storage adapter.");(!m.current||m.current.key!==w)&&(m.current={key:w,promise:n.load(u)});let o=m.current;try{L=await o.promise}finally{m.current===o&&(m.current=null)}if(E.current!==w||!C.current)return!1;let g=l.current;if(g?.key===w||B.current===w)return g?V():!1}let $;try{$=ye(L,window.location.href)}catch(n){throw n}return l.current={key:w,origin:"url",state:$,configurationApplied:!1,cameraApplied:!1},V()},[V,b,s,i]);Ae(()=>{l.current&&V().catch(h)}),Ae(()=>{let r=()=>{N().catch(h)};return window.addEventListener("hashchange",r),()=>window.removeEventListener("hashchange",r)},[N,h]);let a=null;if(e.autoSync!==!1&&p&&!l.current&&!m.current)try{a=ge(S())}catch{}return Ae(()=>{if(e.autoSync===!1||!p||l.current||m.current){b();return}if(a===null){try{S()}catch(r){h(r)}return}return v.current=setTimeout(()=>{v.current=null;try{_()}catch(r){h(r)}},Math.max(0,e.debounceMs??400)),b},[a,e.autoSync,e.debounceMs,p,b,S,_,h]),{getState:S,getStateAsync:R,restoreState:J,getShareUrl:q,createShareUrl:X,syncUrl:_,restoreFromUrl:N}}import{useCallback as pe,useState as vt}from"react";var fr={};function Mt(){return`asset-${globalThis.crypto.randomUUID()}`}function gr(e){let[t,i]=vt(e),[s,p]=vt(()=>e[0]?re(e[0]):""),y=t.find(C=>re(C)===s)??t[0],l=y?re(y):"",x=pe(C=>{i(h=>h.map(b=>re(b)===l?{...b,objectBindings:C}:b))},[l]),B=pe(C=>{i(h=>h.map(b=>re(b)===l?{...b,sceneConfig:C}:b))},[l]),O=pe(C=>p(h=>{let b=t.find(f=>f.url===C);return b?re(b):h}),[t]),v=pe(C=>{let h={...C,id:C.id??Mt()};return i(b=>{if(b.some(f=>re(f)===h.id))throw new Error("Asset instance ID already exists.");return[...b,h]}),h.id},[]),m=pe(C=>{let h=t.find(j=>re(j)===C);if(!h)return null;let b=structuredClone(h);b.id=Mt(),b.sceneConfig?.measurements&&(b.sceneConfig.measurements.items=b.sceneConfig.measurements.items.map(j=>({...j,modelId:b.id}))),b.label=`${h.label??"Asset"} copy`;let[f,S,R]=h.transform?.position??[0,0,0];return b.transform={...b.transform,position:[f+1,S,R]},i(j=>[...j,b]),b.id},[t]),k=pe(C=>{i(h=>h.filter(b=>re(b)!==C))},[]),E=pe((C,h)=>{let b=Te(h);i(f=>f.map(S=>re(S)===C?{...S,transform:b}:S))},[]);return{modelUrl:y?.url??"",models:t,activeModelId:l,onModelChange:O,onActiveModelChange:p,objectBindings:fr,onObjectBindingsChange:x,sceneConfig:y?.sceneConfig,onSceneConfigChange:B,addModel:v,duplicateModel:m,removeModel:k,updateModelTransform:E}}import{useCallback as be,useEffect as mr,useState as br,useSyncExternalStore as wr}from"react";var yr={sequenceId:null,time:0,duration:0,status:"stopped",previewing:!1,ready:!1,issues:[]},hr=()=>()=>{},Pt=()=>yr;function Vr(){let[e,t]=br(null),i=wr(e?.subscribe??hr,e?.getState??Pt,Pt);mr(()=>()=>e?.stop(),[e]);let s=be(p=>t(p),[]);return{controls:e,playback:i,handleSequencesReady:s,play:be(p=>e?.play(p)??!1,[e]),pause:be(()=>e?.pause(),[e]),stop:be(()=>e?.stop(),[e]),seek:be(p=>e?.seek(p)??!1,[e]),select:be(p=>e?.select(p)??!1,[e])}}export{hn as ACTION_CATALOG,kn as AssetDiagnosticsPanel,gt as CompareViewer,Lt as DEFAULT_MODEL_VIEWER_LABELS,Oe as DEFAULT_SCENE_CONFIG,Se as DEFAULT_SECTION_CONFIG,En as MATERIAL_BLENDING_MODES,An as MATERIAL_SIDES,fn as MAX_VIEWER_STATE_BYTES,_t as MEASUREMENT_UNITS,yn as MODEL_VIEWER_PRESETS,he as ModelViewer,jn as ProductOptions,At as SEQUENCE_EASINGS,xt as SEQUENCE_OBJECT_PROPERTIES,vn as applyIsolation,pn as applyProductOptions,Sn as applyStyleRules,Rn as buildBindingsFromNodes,qt as calibrateMeasurements,Yt as chooseMaterialVariant,Tn as collectObjectHierarchy,Cn as colorScaleValue,Ue as compareViewerConfigurations,In as copyBindingStyle,gn as createARHandoffUrl,Pn as createDefaultBinding,on as decodeProductSelections,Jt as defaultProductSelections,xn as defineObjectBindings,rn as encodeProductSelections,Qt as evaluateProductConfiguration,bn as exportConfiguredUSDZ,Vn as findCatalogAction,tn as formatProductPrice,sn as generateProductSkus,Ht as groundAsset,Mn as inferType,wn as inspectAsset,Bn as isolatedBindingKeys,Le as material,Kt as measurementResult,Nt as measurementScale,Ft as measurementValue,zt as measurementsToCsv,Te as parseAssetTransform,Gt as parseMeasurements,un as parseProductConfiguration,Xt as parseProductDefinition,ln as parseSceneProduct,kt as parseSectionConfig,Wt as parseSelectionSets,Et as parseSequences,ye as parseViewerState,Ln as pasteBindingStyle,fe as patchBindings,_e as patchSceneConfig,ke as prepareViewerState,nn as productCheckoutUrl,an as productDefinitionWarnings,cn as productOptionStates,en as productPriceFromDefinition,mn as readARHandoffUrl,Zt as resolveProductSelections,Tt as sampleSequenceTrack,Ne as sceneLight,Ut as sectionSnapshot,le as selectBindingKeys,Ie as selectBindings,$t as serializeMeasurements,dn as serializeProductConfiguration,ge as serializeViewerState,Dt as snapAssetToGrid,It as upsertSequenceKeyframe,ar as useObjectBinding,lr as useObjectBindingIds,Ge as useObjectBindings,On as useProductConfigurator,$e as useSceneConfig,pr as useShareableViewerState,or as useViewer,We as useViewerActions,qe as useViewerAnimations,Ee as useViewerCamera,Ye as useViewerConnection,Ze as useViewerEffects,et as useViewerHover,tt as useViewerIsolation,nt as useViewerModel,gr as useViewerModels,rt as useViewerSelection,Vr as useViewerSequences};
@@ -85,6 +85,13 @@ declare const DEFAULT_MODEL_VIEWER_LABELS: {
85
85
  readonly arCheckingSupport: "Checking AR support…";
86
86
  readonly arUnavailable: "AR is unavailable in this browser. Open this link in an AR-capable browser on your phone.";
87
87
  readonly arStartFailed: "Could not start AR. Check camera permissions and try again.";
88
+ readonly arAnimations: "AR animations";
89
+ readonly arAnimationSelect: "Animation";
90
+ readonly arAnimationSaved: "Project autoplay";
91
+ readonly arAnimationClips: "Model clips";
92
+ readonly arAnimationSequences: "Sequences";
93
+ readonly arAnimationPlay: "Play animation";
94
+ readonly arAnimationPause: "Pause animation";
88
95
  readonly arRefresh: "Refresh AR";
89
96
  readonly arRetry: "Try again";
90
97
  readonly arExportDetails: "Export details";
@@ -85,6 +85,13 @@ declare const DEFAULT_MODEL_VIEWER_LABELS: {
85
85
  readonly arCheckingSupport: "Checking AR support…";
86
86
  readonly arUnavailable: "AR is unavailable in this browser. Open this link in an AR-capable browser on your phone.";
87
87
  readonly arStartFailed: "Could not start AR. Check camera permissions and try again.";
88
+ readonly arAnimations: "AR animations";
89
+ readonly arAnimationSelect: "Animation";
90
+ readonly arAnimationSaved: "Project autoplay";
91
+ readonly arAnimationClips: "Model clips";
92
+ readonly arAnimationSequences: "Sequences";
93
+ readonly arAnimationPlay: "Play animation";
94
+ readonly arAnimationPause: "Pause animation";
88
95
  readonly arRefresh: "Refresh AR";
89
96
  readonly arRetry: "Try again";
90
97
  readonly arExportDetails: "Export details";
@@ -1,5 +1,5 @@
1
1
  import { Object3D, Material } from 'three';
2
- import { e as ViewerModelBounds, R as ReducedMotionSetting, d as ModelViewerLabels, V as ViewerLoading, g as ViewerReveal, b as ModelFormat, f as ViewerModelInfo } from './modelFileResolver-B8ADn9Nl.js';
2
+ import { e as ViewerModelBounds, R as ReducedMotionSetting, d as ModelViewerLabels, V as ViewerLoading, g as ViewerReveal, b as ModelFormat, f as ViewerModelInfo } from './modelFileResolver-B2B3F3d1.js';
3
3
  import { ReactNode } from 'react';
4
4
  import { CameraControls } from '@react-three/drei';
5
5
 
@@ -1317,6 +1317,8 @@ type ARSnapshotSource = {
1317
1317
  instanceId?: string;
1318
1318
  objectBindings?: NonNullable<ShareableViewerState["objectBindings"]>;
1319
1319
  materialOverrides?: Record<string, Material | Material[]>;
1320
+ /** Authored autoplay clips and sequences to include in Quick Look. */
1321
+ sceneConfig?: Pick<SceneConfig, "animations" | "sequences">;
1320
1322
  };
1321
1323
  type ARExportOptions = {
1322
1324
  scaleMode?: "normalized" | "real-world";
@@ -1338,7 +1340,7 @@ type ARHandoffRequest = {
1338
1340
  /** Detached live data. Local model URLs may still be temporary. */
1339
1341
  state: ShareableViewerState;
1340
1342
  signal: AbortSignal;
1341
- /** Creates a static USDZ from the currently loaded visible model geometry. */
1343
+ /** Exports the current geometry and supported authored animation to USDZ. */
1342
1344
  exportUSDZ: () => Promise<ARSnapshot>;
1343
1345
  };
1344
1346
  type ARHandoffStatus = "idle" | "preparing" | "ready" | "error" | "stale";
@@ -1,5 +1,5 @@
1
1
  import { Object3D, Material } from 'three';
2
- import { e as ViewerModelBounds, R as ReducedMotionSetting, d as ModelViewerLabels, V as ViewerLoading, g as ViewerReveal, b as ModelFormat, f as ViewerModelInfo } from './modelFileResolver-B8ADn9Nl.mjs';
2
+ import { e as ViewerModelBounds, R as ReducedMotionSetting, d as ModelViewerLabels, V as ViewerLoading, g as ViewerReveal, b as ModelFormat, f as ViewerModelInfo } from './modelFileResolver-B2B3F3d1.mjs';
3
3
  import { ReactNode } from 'react';
4
4
  import { CameraControls } from '@react-three/drei';
5
5
 
@@ -1317,6 +1317,8 @@ type ARSnapshotSource = {
1317
1317
  instanceId?: string;
1318
1318
  objectBindings?: NonNullable<ShareableViewerState["objectBindings"]>;
1319
1319
  materialOverrides?: Record<string, Material | Material[]>;
1320
+ /** Authored autoplay clips and sequences to include in Quick Look. */
1321
+ sceneConfig?: Pick<SceneConfig, "animations" | "sequences">;
1320
1322
  };
1321
1323
  type ARExportOptions = {
1322
1324
  scaleMode?: "normalized" | "real-world";
@@ -1338,7 +1340,7 @@ type ARHandoffRequest = {
1338
1340
  /** Detached live data. Local model URLs may still be temporary. */
1339
1341
  state: ShareableViewerState;
1340
1342
  signal: AbortSignal;
1341
- /** Creates a static USDZ from the currently loaded visible model geometry. */
1343
+ /** Exports the current geometry and supported authored animation to USDZ. */
1342
1344
  exportUSDZ: () => Promise<ARSnapshot>;
1343
1345
  };
1344
1346
  type ARHandoffStatus = "idle" | "preparing" | "ready" | "error" | "stale";
@@ -1,4 +1,4 @@
1
- import { a as ARHandoffOptions } from './modelViewerProps-BE4D56Ti.js';
1
+ import { a as ARHandoffOptions } from './modelViewerProps-Bo48RDq6.js';
2
2
 
3
3
  /** Props of `BindingBuilder`. */
4
4
  type BindingBuilderProps = {
@@ -1,4 +1,4 @@
1
- import { a as ARHandoffOptions } from './modelViewerProps-DBwh-fmu.mjs';
1
+ import { a as ARHandoffOptions } from './modelViewerProps-DkvYb1GH.mjs';
2
2
 
3
3
  /** Props of `BindingBuilder`. */
4
4
  type BindingBuilderProps = {
@@ -1,6 +1,6 @@
1
1
  import * as react from 'react';
2
- import { d as ModelViewerLabels, V as ViewerLoading, g as ViewerReveal, b as ModelFormat, R as ReducedMotionSetting, f as ViewerModelInfo } from './modelFileResolver-B8ADn9Nl.mjs';
3
- export { D as DEFAULT_MODEL_VIEWER_LABELS, M as MaterialVariantGroup, a as MaterialVariantOption, c as ModelViewerLabelKey, e as ViewerModelBounds } from './modelFileResolver-B8ADn9Nl.mjs';
2
+ import { d as ModelViewerLabels, V as ViewerLoading, g as ViewerReveal, b as ModelFormat, R as ReducedMotionSetting, f as ViewerModelInfo } from './modelFileResolver-B2B3F3d1.mjs';
3
+ export { D as DEFAULT_MODEL_VIEWER_LABELS, M as MaterialVariantGroup, a as MaterialVariantOption, c as ModelViewerLabelKey, e as ViewerModelBounds } from './modelFileResolver-B2B3F3d1.mjs';
4
4
  import { PresetsType } from '@react-three/drei/helpers/environment-assets';
5
5
 
6
6
  /** How the render's colors are mapped to the screen. */
@@ -1,6 +1,6 @@
1
1
  import * as react from 'react';
2
- import { d as ModelViewerLabels, V as ViewerLoading, g as ViewerReveal, b as ModelFormat, R as ReducedMotionSetting, f as ViewerModelInfo } from './modelFileResolver-B8ADn9Nl.js';
3
- export { D as DEFAULT_MODEL_VIEWER_LABELS, M as MaterialVariantGroup, a as MaterialVariantOption, c as ModelViewerLabelKey, e as ViewerModelBounds } from './modelFileResolver-B8ADn9Nl.js';
2
+ import { d as ModelViewerLabels, V as ViewerLoading, g as ViewerReveal, b as ModelFormat, R as ReducedMotionSetting, f as ViewerModelInfo } from './modelFileResolver-B2B3F3d1.js';
3
+ export { D as DEFAULT_MODEL_VIEWER_LABELS, M as MaterialVariantGroup, a as MaterialVariantOption, c as ModelViewerLabelKey, e as ViewerModelBounds } from './modelFileResolver-B2B3F3d1.js';
4
4
  import { PresetsType } from '@react-three/drei/helpers/environment-assets';
5
5
 
6
6
  /** How the render's colors are mapped to the screen. */