@liveroom-tech/react-immersive 6.2.0 → 6.2.1

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 (61) hide show
  1. package/dist/DownloadedEnvironment-NHM4U2LJ.mjs +1 -0
  2. package/dist/{SequencesTab-ODR5IGDX.mjs → SequencesTab-VZKEKAUG.mjs} +1 -1
  3. package/dist/StreamingTilesModel-6Z7SIC2J.mjs +16 -0
  4. package/dist/binding-builder.css +1 -1
  5. package/dist/binding-builder.d.mts +3 -3
  6. package/dist/binding-builder.d.ts +3 -3
  7. package/dist/binding-builder.js +59 -58
  8. package/dist/binding-builder.mjs +1 -1
  9. package/dist/chunk-25WC5KDO.mjs +50 -0
  10. package/dist/chunk-2AJK643D.mjs +1 -0
  11. package/dist/chunk-3OCHN3CA.mjs +1 -0
  12. package/dist/{chunk-3XZKDTB2.mjs → chunk-7OVEHDDE.mjs} +1 -1
  13. package/dist/chunk-KFLS7GI6.mjs +1 -0
  14. package/dist/{chunk-EWNN4BBR.mjs → chunk-KYXJG3TX.mjs} +1 -1
  15. package/dist/{chunk-2CUPPOBW.mjs → chunk-LD7QWHB4.mjs} +2 -2
  16. package/dist/{chunk-GXY3VML4.mjs → chunk-NMRTI3NQ.mjs} +1 -1
  17. package/dist/chunk-RKDATTUM.mjs +1 -0
  18. package/dist/chunk-RXZ4Q7CY.mjs +1 -0
  19. package/dist/chunk-TUYVYSN5.mjs +1 -0
  20. package/dist/{chunk-IOLT2VXU.mjs → chunk-UAZ6I25Y.mjs} +1 -1
  21. package/dist/chunk-UCD76KQ6.mjs +1 -0
  22. package/dist/chunk-UHRJ2RBF.mjs +1 -0
  23. package/dist/chunk-UTVFRMYW.mjs +47 -0
  24. package/dist/chunk-YKDDNX2D.mjs +69 -0
  25. package/dist/exportSceneMesh-YJFOLFHS.mjs +1 -0
  26. package/dist/hosted.css +1 -1
  27. package/dist/hosted.d.mts +3 -3
  28. package/dist/hosted.d.ts +3 -3
  29. package/dist/hosted.js +58 -57
  30. package/dist/hosted.mjs +1 -1
  31. package/dist/index.css +1 -1
  32. package/dist/index.d.mts +4 -4
  33. package/dist/index.d.ts +4 -4
  34. package/dist/index.js +52 -51
  35. package/dist/index.mjs +1 -1
  36. package/dist/meshFormats-4C6NHYOA.mjs +1 -0
  37. package/dist/modelFileResolver-CVmON8hg.d.mts +1724 -0
  38. package/dist/modelFileResolver-CVmON8hg.d.ts +1724 -0
  39. package/dist/modelViewerProps-BBnZTFO-.d.ts +949 -0
  40. package/dist/modelViewerProps-CIY4nsNY.d.mts +949 -0
  41. package/dist/{publicProps-Cmh9JtzJ.d.ts → publicProps-BARVwXu7.d.ts} +1 -1
  42. package/dist/{publicProps-TMARX628.d.mts → publicProps-n0Yvr_Km.d.mts} +1 -1
  43. package/dist/simple-model-viewer.css +1 -1
  44. package/dist/simple-model-viewer.d.mts +22 -4
  45. package/dist/simple-model-viewer.d.ts +22 -4
  46. package/dist/simple-model-viewer.js +5 -5
  47. package/dist/simple-model-viewer.mjs +1 -1
  48. package/dist/utils.d.mts +4 -4
  49. package/dist/utils.d.ts +4 -4
  50. package/dist/utils.js +2 -2
  51. package/dist/utils.mjs +1 -1
  52. package/dist/xrRuntime-5S7KYUVB.mjs +1 -0
  53. package/package.json +1 -1
  54. package/dist/chunk-3MIILDHB.mjs +0 -83
  55. package/dist/chunk-6Q6YZ7O5.mjs +0 -1
  56. package/dist/chunk-7MN2TMY6.mjs +0 -47
  57. package/dist/chunk-X4WRTDO6.mjs +0 -50
  58. package/dist/modelFileResolver-ChKYsF21.d.mts +0 -495
  59. package/dist/modelFileResolver-ChKYsF21.d.ts +0 -495
  60. package/dist/modelViewerProps-Ch6pIZIE.d.ts +0 -2159
  61. package/dist/modelViewerProps-HazR2IE_.d.mts +0 -2159
@@ -1 +1 @@
1
- "use client";import{a as Ir}from"./chunk-MMO7KCYU.mjs";import{A as Mr,C as Sr,D as Cr,H as Rr,J as Lr,L as Nr,M as Er,P as zr,Q as Pr,T as Tr,U as Dr,V as Vr,W as jr,h as cr,i as pr,k as ur,l as mr,m as vr,n as ze,o as gr,p as br,t as fr,u as hr,v as xr,w as wr,x as yr,y as _r,z as kr}from"./chunk-7MN2TMY6.mjs";import{a as dr,b as be}from"./chunk-GXY3VML4.mjs";import{a as Or}from"./chunk-37YITTIK.mjs";import"./chunk-6Q6YZ7O5.mjs";import{a as Nn}from"./chunk-IOLT2VXU.mjs";import"./chunk-BNKTI3CY.mjs";import"./chunk-JR557W27.mjs";import{useRef as R,useState as g,useCallback as k,useEffect as M,useMemo as $,Component as En,Suspense as Pe}from"react";import{CameraControls as zn,Environment as Pn}from"@react-three/drei";import{useFrame as Wr,useThree as X}from"@react-three/fiber";import{Canvas as Tn}from"@react-three/fiber";import{ACESFilmicToneMapping as Dn,AgXToneMapping as Vn,Box3 as we,Color as On,MeshStandardMaterial as jn,NeutralToneMapping as In,NoToneMapping as Bn,PerspectiveCamera as $r,Vector3 as D}from"three";import{SkeletonUtils as An}from"three-stdlib";import{X as De,Check as Xr,Settings as Fn,ChevronDown as Kn,Boxes as Hn,RotateCcw as Gn,Trash2 as Un,Upload as Te,AlertTriangle as Wn}from"lucide-react";import{Fragment as Ur,jsx as e,jsxs as c}from"react/jsx-runtime";var Br={color:"#93c5fd",intensity:.05},Ar=["apartment","city","dawn","forest","lobby","night","park","studio","sunset","warehouse"],qr={aces:Dn,agx:Vn,neutral:In,none:Bn};function Ve(r){return!!(r&&"isMesh"in r&&r.isMesh)}function Fr(r,o){Array.isArray(r)?r.forEach(o):o(r)}function Kr(r,o,a){if(!o)return;let d=o.camera;if(!(d instanceof $r))return;let s=new we().setFromObject(r).getSize(new D).length();if(!Number.isFinite(s)||s<=0)return;d.near=s/100,d.far=s*100,d.updateProjectionMatrix();let l=Nr(a);o.minDistance=a?.minDistance??s*.05,o.maxDistance=a?.maxDistance??s*10,o.minPolarAngle=l.minPolarAngle,o.maxPolarAngle=l.maxPolarAngle,o.minAzimuthAngle=l.minAzimuthAngle,o.maxAzimuthAngle=l.maxAzimuthAngle,o.boundaryEnclosesCamera=l.boundaryEnclosesCamera,o.boundaryFriction=l.boundaryFriction,o.setBoundary(l.panBoundary?new we(new D(...l.panBoundary[0]),new D(...l.panBoundary[1])):void 0)}var ye=class extends En{constructor(){super(...arguments);this.state={hasError:!1}}static getDerivedStateFromError(){return{hasError:!0}}componentDidCatch(a){this.props.onLoadError?.(a)}render(){return this.state.hasError?null:this.props.children}};function $n({url:r,format:o,dracoDecoderPath:a,ktx2TranscoderPath:d,meshopt:s,hiddenKeys:l,selectedKey:b,panelHoveredKey:f,nodeRefsOut:t,onMeshesReady:i,onModelLoaded:V,onLoadProgress:h,onMeshClick:y,highlightOnHover:E}){let{scene:w}=zr(r,{dracoDecoderPath:a,ktx2TranscoderPath:d,meshopt:s},o,h),G=X(p=>p.invalidate),{setCanvasCursor:A,restoreCanvasCursor:O}=Dr(),[j,F]=g(null),L=$(()=>An.clone(w),[w]),z=$(()=>{let p={};return L.traverse(u=>{if(!Ve(u))return;let _=u.name||u.uuid;p[_]={key:_,label:u.name||u.type,ref:u}}),p},[L]),I=$(()=>{let p={};for(let[u,{ref:_}]of Object.entries(z)){let U=(Array.isArray(_.material)?_.material:[_.material]).map(x=>{let N=(Pr(x)??new jn).clone();return N.userData.baseColor=N.color.clone(),N.userData.baseMap=N.map,N.userData.baseEmissive=N.emissive.clone(),N.userData.baseEmissiveMap=N.emissiveMap,N.userData.baseEmissiveIntensity=N.emissiveIntensity,N});p[u]=Array.isArray(_.material)?U:U[0]}return p},[z]);M(()=>()=>{Object.values(I).forEach(p=>Fr(p,u=>u.dispose()))},[I]);let q=R(null);M(()=>{q.current!==r&&(q.current=r,L.updateWorldMatrix(!0,!0),Tr(L),i(z),V(L))},[r,L,z,i,V]),M(()=>{let p=new AbortController;return gr(L,p.signal),()=>{p.abort(),br(L)}},[L]);let ae=$(()=>!vr(L),[L]);M(()=>{for(let[p,{ref:u}]of Object.entries(z))t.current[p]=u},[z,t]),M(()=>{!E&&j!==null&&(F(null),O())},[E,j,O]),M(()=>{for(let[p,{ref:u}]of Object.entries(z)){u.visible=!l.has(p);let _=I[p];if(!_)continue;u.material=_;let ee=E&&j===p,U=E&&f===p;Fr(_,x=>{if(x.color.copy(x.userData.baseColor),x.map=x.userData.baseMap??null,x.emissive.copy(x.userData.baseEmissive),x.emissiveMap=x.userData.baseEmissiveMap??null,x.emissiveIntensity=x.userData.baseEmissiveIntensity,U||ee){let re=!!x.userData.baseEmissiveMap;x.emissive.set(Br.color),x.emissiveIntensity=re?x.userData.baseEmissiveIntensity:Br.intensity}x.needsUpdate=!0})}G()},[z,I,j,b,f,E,l,G]);let Z=p=>{if(!Er(p))return null;let u=p;for(;u;){let _=u.name||u.uuid;if(z[_])return _;u=u.parent}return null},ie=ae?{onClick:p=>{let u=Z(p.object);u&&(p.stopPropagation(),y(u))},...E?{onPointerOver:p=>{let u=Z(p.object);u&&(p.stopPropagation(),A("pointer"),F(u))},onPointerOut:p=>{p.stopPropagation(),O(),F(null)}}:{}}:{};return e("primitive",{object:L,...ie})}function Xn({scene:r,controlsRef:o,refitOnResize:a,onInitialFitComplete:d,resumeViewRef:s,cameraLimits:l}){let b=R(l);b.current=l;let f=JSON.stringify(l??null);M(()=>{r&&Kr(r,o.current,b.current)},[r,o,f]);let t=R(!1),i=X(y=>y.invalidate),V=X(y=>y.size),h=R(null);return M(()=>{t.current=!1,i()},[i,r]),Wr(()=>{if(t.current)return;if(!r||!o.current){i();return}t.current=!0,Kr(r,o.current,l);let y=s.current;if(y){s.current=null,o.current.setLookAt(...y.position,...y.target,!1).catch(()=>{}).finally(d);return}o.current.fitToBox(r,!0,{paddingTop:.5,paddingBottom:.5,paddingLeft:.5,paddingRight:.5}).catch(()=>{}).finally(d)}),M(()=>{if(!(!a||!t.current||!r||!o.current))return h.current&&clearTimeout(h.current),h.current=setTimeout(()=>{o.current?.fitToBox(r,!0,{paddingTop:.5,paddingBottom:.5,paddingLeft:.5,paddingRight:.5}).catch(()=>{}),i()},150),()=>{h.current&&clearTimeout(h.current)}},[V.width,V.height,a]),null}function qn({scene:r,exposure:o,toneMapping:a,fov:d,wireframe:s}){let l=X(t=>t.gl),b=X(t=>t.camera),f=X(t=>t.invalidate);return M(()=>{l.toneMappingExposure=o,f()},[l,o,f]),M(()=>{b instanceof $r&&(b.fov=d,b.updateProjectionMatrix(),f())},[b,d,f]),M(()=>{l.toneMapping=qr[a],r?.traverse(t=>{if(Ve(t))for(let i of[t.material].flat())i.wireframe=s,i.needsUpdate=!0}),f()},[l,r,a,s,f]),null}function Jn({enabled:r,speed:o,controlsRef:a}){let d=X(s=>s.invalidate);return Wr((s,l)=>{!r||!a.current||(a.current.rotate(l*.2*o,0,!1),d())}),null}function fe(r){return Array.from(r.types).includes("Files")}function oe({label:r,checked:o,onChange:a}){return c("div",{className:"ri-env-row",children:[e("span",{className:"ri-env-row__label",title:r,children:r}),e("div",{className:"ri-env-row__value",children:e("button",{type:"button",className:"ri-env-checkbox-btn",role:"checkbox","aria-checked":o,"aria-label":r,onClick:()=>a(!o),children:e("span",{className:`ri-env-checkbox${o?" ri-env-checkbox--checked":""}`,children:o&&e(Xr,{size:10,strokeWidth:2.5,"aria-hidden":"true"})})})})]})}function he({label:r,value:o,onChange:a}){return c("div",{className:"ri-env-row",children:[e("span",{className:"ri-env-row__label",title:r,children:r}),e("div",{className:"ri-env-row__value",children:c("label",{className:"ri-env-color-swatch",children:[e("span",{className:"ri-env-color-swatch__chip",style:{background:o}}),e("span",{className:"ri-env-color-swatch__hex",children:o}),e("input",{type:"color",className:"ri-env-color-swatch__input","aria-label":r,value:o,onChange:d=>a(d.target.value)})]})})]})}function B({label:r,value:o,min:a,max:d,step:s,format:l=f=>f.toFixed(2),onChange:b}){return c("div",{className:"ri-env-row",children:[e("span",{className:"ri-env-row__label",title:r,children:r}),c("div",{className:"ri-env-row__value ri-env-row__value--slider",children:[e("input",{type:"range",className:"ri-env-slider","aria-label":r,min:a,max:d,step:s,value:o,onChange:f=>b(Number(f.target.value))}),e("span",{className:"ri-env-slider__value",children:l(o)})]})]})}function Hr({label:r,optionLabels:o,value:a,options:d,onChange:s}){return c("div",{className:"ri-env-row",children:[e("span",{className:"ri-env-row__label",title:r,children:r}),e("div",{className:"ri-env-row__value",children:e("select",{className:"ri-env-select","aria-label":r,value:a,onChange:l=>s(l.target.value),children:d.map(l=>e("option",{value:l,children:o?.[l]??l},l))})})]})}function xe({label:r,value:o}){return c("div",{className:"ri-env-row",children:[e("span",{className:"ri-env-row__label",title:r,children:r}),e("span",{className:"ri-env-row__info",children:o})]})}var Gr=r=>`${Math.round(r)}\xB0`;function Q({title:r,children:o}){let[a,d]=g(!1);return c("div",{className:"ri-env-section",children:[c("button",{type:"button",className:"ri-env-section__header","aria-expanded":!a,onClick:()=>d(s=>!s),children:[e(Kn,{size:12,strokeWidth:2,className:`ri-env-section__chevron${a?" env-section__chevron--collapsed":""}`}),e("span",{children:r})]}),!a&&e("div",{className:"ri-env-section__body",children:o})]})}function Yn({isOpen:r,onToggle:o,settings:a,modelInfo:d,onChange:s,onReset:l,environmentEnabled:b,environmentUrl:f}){let t=be();return c("div",{className:`ri-left-panel-wrapper ${r?"ri-left-panel-wrapper--open":"ri-left-panel-wrapper--closed"}`,children:[!r&&e("button",{className:"ri-side-panel__open-btn ri-side-panel__open-btn--left",onClick:()=>o(!0),children:e(Fn,{size:20,strokeWidth:1.8})}),c("div",{className:`ri-side-panel ri-side-panel--left ${r?"ri-side-panel--open-left":"ri-side-panel--closed-left"}`,"aria-hidden":!r,children:[e("div",{className:"ri-side-panel__header",children:c("div",{className:"ri-side-panel__header-top",children:[e("span",{className:"ri-side-panel__eyebrow",children:t("sceneSettings")}),e("button",{className:"ri-side-panel__close-btn",onClick:()=>o(!1),title:t("close"),children:e(De,{size:12,strokeWidth:1.6})})]})}),c("div",{className:"ri-env-controls",children:[b&&c(Q,{title:t("environment"),children:[!f&&e(Hr,{label:t("environmentPreset"),value:a.envPreset,options:Ar,optionLabels:Object.fromEntries(Ar.map(i=>[i,t(`environment${i[0].toUpperCase()}${i.slice(1)}`)])),onChange:i=>s("envPreset",i)}),e(B,{label:t("environmentIntensity"),value:a.envIntensity,min:0,max:3,step:.05,onChange:i=>s("envIntensity",i)}),e(B,{label:t("rotation"),value:a.envRotation,min:0,max:360,step:1,format:Gr,onChange:i=>s("envRotation",i)}),e(oe,{label:t("showEnvironmentAsBackground"),checked:a.backgroundEnabled,onChange:i=>s("backgroundEnabled",i)}),a.backgroundEnabled?e(B,{label:t("backgroundBlur"),value:a.backgroundBlur,min:0,max:1,step:.01,onChange:i=>s("backgroundBlur",i)}):e(he,{label:t("backgroundColor"),value:a.backgroundColor,onChange:i=>s("backgroundColor",i)})]}),!b&&e(Q,{title:t("background"),children:e(he,{label:t("backgroundColor"),value:a.backgroundColor,onChange:i=>s("backgroundColor",i)})}),c(Q,{title:t("lighting"),children:[e(B,{label:t("exposure"),value:a.exposure,min:0,max:2,step:.05,onChange:i=>s("exposure",i)}),e(Hr,{label:t("toneMapping"),value:a.toneMapping,options:Object.keys(qr),optionLabels:{aces:t("toneMappingAces"),agx:t("toneMappingAgx"),neutral:t("toneMappingNeutral"),none:t("toneMappingNone")},onChange:i=>s("toneMapping",i)}),e(B,{label:t("ambientLightIntensity"),value:a.ambientIntensity,min:0,max:3,step:.05,onChange:i=>s("ambientIntensity",i)}),e(he,{label:t("ambientLightColor"),value:a.ambientColor,onChange:i=>s("ambientColor",i)}),e(B,{label:t("directLightIntensity"),value:a.directionalIntensity,min:0,max:5,step:.05,onChange:i=>s("directionalIntensity",i)}),e(he,{label:t("directLightColor"),value:a.directionalColor,onChange:i=>s("directionalColor",i)})]}),c(Q,{title:t("ground"),children:[e(oe,{label:t("groundShadow"),checked:a.groundShadow,onChange:i=>s("groundShadow",i)}),a.groundShadow&&e(B,{label:t("groundShadowOpacity"),value:a.groundShadowOpacity,min:0,max:1,step:.01,onChange:i=>s("groundShadowOpacity",i)}),e(oe,{label:t("floorGrid"),checked:a.showFloorGrid,onChange:i=>s("showFloorGrid",i)})]}),c(Q,{title:t("display"),children:[e(oe,{label:t("wireframe"),checked:a.wireframe,onChange:i=>s("wireframe",i)}),e(oe,{label:t("autoRotate"),checked:a.autoRotate,onChange:i=>s("autoRotate",i)}),a.autoRotate&&e(B,{label:t("autoRotateSpeed"),value:a.autoRotateSpeed,min:.1,max:5,step:.1,onChange:i=>s("autoRotateSpeed",i)}),e(B,{label:t("fieldOfView"),value:a.fov,min:15,max:90,step:1,format:Gr,onChange:i=>s("fov",i)})]}),d&&c(Q,{title:t("modelInfo"),children:[e(xe,{label:t("modelInfoObjects"),value:d.objects.toLocaleString()}),e(xe,{label:t("modelInfoTriangles"),value:d.triangles.toLocaleString()}),e(xe,{label:t("modelInfoMaterials"),value:d.materials.toLocaleString()}),e(xe,{label:t("size"),value:d.size})]}),e("div",{className:"ri-env-footer",children:c("button",{type:"button",className:"ri-env-reset",onClick:l,children:[e(Gn,{size:12,"aria-hidden":"true"}),t("resetSettings")]})})]})]})]})}function Qn(r){let o=0,a=new Set;r.traverse(s=>{if(Ve(s)){o+=1;for(let l of[s.material].flat())a.add(l.name||l.uuid)}});let d=new we().setFromObject(r).getSize(new D);return{objects:o,triangles:ze(r),materials:a.size,size:[d.x,d.y,d.z].map(s=>Number(s.toPrecision(3))).join(" \xD7 ")}}function Zn({meshKeys:r,hiddenKeys:o,selectedKey:a,isOpen:d,onToggle:s,onFocus:l,onHover:b,onToggleVisibility:f}){let t=be(),[i,V]=g(""),[h,y]=g(null),E=Object.values(r).filter(w=>w.label.toLowerCase().includes(i.toLowerCase()));return c("div",{className:`ri-right-panel-wrapper ${d?"ri-right-panel-wrapper--open":"ri-right-panel-wrapper--closed"}`,children:[!d&&e("button",{className:"ri-side-panel__open-btn",onClick:()=>s(!0),children:e(Hn,{size:20,strokeWidth:1.8})}),c("div",{className:`ri-side-panel ${d?"ri-side-panel--open":"ri-side-panel--closed"}`,"aria-hidden":!d,children:[e("div",{className:"ri-side-panel__header",children:c("div",{className:"ri-side-panel__header-top",children:[e("span",{className:"ri-side-panel__eyebrow",children:t("sceneObjects")}),e("span",{className:"ri-side-panel__title","aria-label":t("objectCount",{count:E.length}),children:E.length}),e("button",{className:"ri-side-panel__close-btn",onClick:()=>s(!1),title:t("close"),children:e(De,{size:12,strokeWidth:1.6})})]})}),e("div",{className:"ri-side-panel__search-wrap",children:e("input",{className:"ri-side-panel__search",type:"text",placeholder:t("searchObjects"),value:i,onChange:w=>V(w.target.value)})}),e("div",{className:"ri-side-panel__list",children:E.map(({key:w,label:G})=>{let A=!o.has(w),O=a===w,j=h===w;return c("div",{onClick:()=>l(w),onMouseEnter:()=>{y(w),b(w)},onMouseLeave:()=>{y(null),b(null)},className:["ri-side-panel__row",j?"ri-side-panel__row--hovered":"",O?"ri-side-panel__row--selected":""].filter(Boolean).join(" "),children:[e("button",{type:"button",className:`ri-side-panel__label ri-side-panel__labelButton${j||O?" ri-side-panel__label--hovered":""}`,"aria-current":O?"true":void 0,onFocus:()=>{y(w),b(w)},onBlur:()=>{y(null),b(null)},children:G}),e("button",{type:"button",className:"ri-side-panel__vis-btn",title:t(A?"hide":"show"),"aria-label":t(A?"hideObject":"showObject",{name:G}),onClick:F=>{F.stopPropagation(),f(w)},children:e("span",{className:`ri-side-panel__checkbox${A?" ri-side-panel__checkbox--checked":""}`,children:A&&e(Xr,{size:9,strokeWidth:5,color:"white"})})})]},w)})})]})]})}function Jr(r){return e(dr,{labels:r.labels,children:e(et,{...r})})}function et({modelUrl:r,poster:o,loading:a,reveal:d,modelFormat:s,dracoDecoderPath:l,ktx2TranscoderPath:b,meshopt:f=!0,backgroundColor:t="#1a1a1a",showSceneObjectsPanel:i=!0,showSceneSettingsPanel:V=!0,enableModelUpload:h=!1,zoomOnSelected:y=!1,highlightOnHover:E=!1,showLoadingOverlay:w=!0,showLoadError:G=!0,refitOnResize:A=!0,cameraLimits:O,showResetButton:j=!0,backgroundEnabled:F=!1,autoRotate:L=!1,envPreset:z="city",environmentUrl:I,environmentEnabled:q=!0,exposure:ae=1,ambientIntensity:Z=.6,ambientColor:ie="#ffffff",directionalIntensity:p=1.2,directionalColor:u="#ffffff",envIntensity:_=1,envRotation:ee=0,backgroundBlur:U=0,toneMapping:x="aces",groundShadow:re=!1,groundShadowOpacity:N=.5,showFloorGrid:Oe=!1,wireframe:je=!1,autoRotateSpeed:Ie=1,fov:Be=45,onModelLoaded:Ae,onLoadError:se,labels:Yr,reducedMotion:Qr="user"}){let P=be(),le=Or(Qr),Fe=L&&!le;Ir("simple-model-viewer","SimpleModelViewer");let K=R(null),de=R(null),Ke=R({}),He=R(null),_e=R(null),ne=R(0),[C,ke]=g(null),[Ge,Ue]=g(null),[Zr,Me]=g(!1),[en,We]=g({}),[$e,Xe]=g(new Set),[qe,Je]=g(null),[rn,Ye]=g(null),[Qe,Ze]=g(null),[nn,er]=g(null),[rr,ce]=g(!1),[tn,Se]=g(null),[on,an]=g(0),[nr,tr]=g(!1),[pe,Ce]=g(!1),[sn,ue]=g(null),ln=Cr(sn),[dn,me]=g(!1),[cn,pn]=g(()=>typeof window>"u"?!0:window.innerWidth>900),[un,mn]=g(()=>typeof window>"u"?!0:window.innerWidth>900),ve=$(()=>({backgroundEnabled:F,backgroundColor:t,autoRotate:Fe,envPreset:z,exposure:ae,ambientIntensity:Z,ambientColor:ie,directionalIntensity:p,directionalColor:u,envIntensity:_,envRotation:ee,backgroundBlur:U,toneMapping:x,groundShadow:re,groundShadowOpacity:N,showFloorGrid:Oe,wireframe:je,autoRotateSpeed:Ie,fov:Be}),[F,t,Fe,z,ae,Z,ie,p,u,_,ee,U,x,re,N,Oe,je,Ie,Be]),[v,ge]=g(ve),S=h?Qe:r,or=R(null),Re=R(null),Le=R(null),[te,ar]=g(null);M(()=>()=>{te&&URL.revokeObjectURL(te)},[te]);let ir=R(S);ir.current=S;let Ne=R(null),H=_r({loading:a,reveal:d,rootRef:or,onPark:()=>{Ne.current=Re.current?.gl??null;let n=K.current;if(n&&pe){Le.current={position:n.getPosition(new D).toArray(),target:n.getTarget(new D).toArray()};let m=S;yr(Re.current).then(T=>{T&&(m===ir.current?ar(T):URL.revokeObjectURL(T))})}ke(null),Ce(!1)}});M(()=>{if(H.live)return;let n=Ne.current;Ne.current=null,n&&wr(n)},[H.live]);let W=k(()=>{Le.current=null,de.current=null,ar(null),ke(null),Ue(null),Me(!1),We({}),Xe(new Set),Je(null),Ye(null),ce(!1),Se(null),Ce(!1),ue(null)},[]),J=k(()=>{_e.current?.cleanup(),_e.current=null},[]),vn=k(()=>{J(),Ze(null),er(null),W(),ge(ve)},[ve,W,J]),sr=k(async n=>{tr(!0);try{let m=await ur(n);J(),_e.current=m,Ze(m.url),er(m.name),W()}catch(m){ce(!0),Se(m),se?.(m)}finally{tr(!1)}},[se,W,J]),Ee=k(n=>{let m=n?.[0];m&&sr(m)},[sr]);M(()=>()=>{J()},[J]);let gn=k(()=>C,[C]),bn=!(q&&v.backgroundEnabled)&&new On(v.backgroundColor).getHSL({h:0,s:0,l:0}).l>.5?"#000000":"#ffffff",fn=$(()=>C?Qn(C):null,[C]),Y=$(()=>{if(!C)return null;let n=new we().setFromObject(C);if(n.isEmpty())return null;let m=n.getSize(new D);return{y:n.min.y,center:n.getCenter(new D),size:Math.max(m.x,m.y,m.z)}},[C]),hn=k((n,m)=>{ge(T=>({...T,[n]:m}))},[]);M(()=>{ge(n=>({...n,backgroundColor:t}))},[t]),M(()=>{W()},[S,W]);let xn=k(n=>{We(n)},[]),wn=k(n=>{ke(n),ce(!1);let m=ze(n);Ue(m>mr?m:null),Me(!1),ue(null),Ae?.(Vr(n))},[Ae]),yn=k(n=>{ce(!0),Se(n),ue(null),se?.(n)},[se]),_n=k(n=>{n.lengthComputable&&n.total>0&&ue(n.loaded/n.total*100)},[]),lr=k(n=>{if(Je(n),!y)return;let m=Ke.current[n];!m||!K.current||K.current.fitToBox(m,!0,{paddingTop:.5,paddingBottom:.5,paddingLeft:.5,paddingRight:.5}).catch(()=>{})},[y]),kn=k(n=>{Xe(m=>{let T=new Set(m);return T.has(n)?T.delete(n):T.add(n),T})},[]),Mn=k(n=>{!h||!fe(n.dataTransfer)||(n.preventDefault(),n.stopPropagation(),ne.current+=1,me(!0))},[h]),Sn=k(n=>{!h||!fe(n.dataTransfer)||(n.preventDefault(),n.stopPropagation(),n.dataTransfer.dropEffect="copy",me(!0))},[h]),Cn=k(n=>{!h||!fe(n.dataTransfer)||(n.preventDefault(),n.stopPropagation(),ne.current=Math.max(0,ne.current-1),ne.current===0&&me(!1))},[h]),Rn=k(n=>{!h||!fe(n.dataTransfer)||(n.preventDefault(),n.stopPropagation(),ne.current=0,me(!1),Ee(n.dataTransfer.files))},[h,Ee]),Ln=w&&(nr||!!(S&&H.live&&!rr&&(!C||!pe)));return c("div",{className:"smv-root",ref:or,"data-reduced-motion":le?"":void 0,style:{background:v.backgroundColor},onDragEnter:Mn,onDragOver:Sn,onDragLeave:Cn,onDrop:Rn,children:[V&&S&&e(Yn,{isOpen:un,onToggle:mn,environmentUrl:I,environmentEnabled:q,settings:v,modelInfo:fn,onReset:()=>ge(ve),onChange:hn}),c("div",{className:"smv-canvasArea",children:[G&&rr&&S&&c("div",{className:"smv-load-error",role:"alert",children:[e("strong",{children:P("loadErrorTitle")}),e("p",{children:Sr(tn,S,s,Yr).detail}),e("button",{type:"button",onClick:()=>{cr(S),W(),an(n=>n+1)},children:P("retryModelLoad")})]}),j&&C&&pe&&e("button",{type:"button",className:"smv-reset-camera",onClick:()=>{let n=K.current,m=de.current;!n||!m||n.setLookAt(...m.position,...m.target,!1).then(()=>n.fitToBox(C,!le,{paddingTop:.5,paddingBottom:.5,paddingLeft:.5,paddingRight:.5})).catch(()=>{})},children:P("resetCameraView")}),Ge!==null&&!Zr&&c("div",{className:"smv-largeModelBanner",children:[e(Wn,{size:14,className:"smv-largeModelBanner__icon"}),e("span",{children:P("simpleLargeModelWarning",{millions:Math.round(Ge/1e6)})}),e("button",{type:"button",className:"smv-largeModelBanner__dismiss",onClick:()=>Me(!0),"aria-label":P("dismiss"),children:e(De,{size:12})})]}),h?c(Ur,{children:[e("input",{ref:He,type:"file",accept:pr,className:"smv-upload-input",onChange:n=>{Ee(n.target.files),n.currentTarget.value=""}}),S?e("div",{className:"smv-upload-toolbar",children:c(Ur,{children:[e("span",{className:"smv-upload-toolbar__name",children:nn??P("uploadedModel")}),c("button",{type:"button",className:"smv-upload-toolbar__button smv-upload-toolbar__button--ghost",onClick:vn,children:[e(Un,{size:14}),P("clear")]})]})}):null]}):null,S&&!H.live?e(Mr,{className:"ri-viewerPlaceholder--inset",background:v.backgroundColor,poster:te??o,onReveal:H.awaitingReveal?H.reveal:void 0}):S?c(Tn,{dpr:[1,2],frameloop:H.visible?"demand":"never",resize:{debounce:0,scroll:!1},raycaster:{firstHitOnly:!0},style:{background:v.backgroundColor},camera:{position:[0,0,5],fov:45,near:.1,far:1e3},children:[e(hr,{captureRef:Re}),e(xr,{}),c(Pe,{fallback:null,children:[e("ambientLight",{intensity:v.ambientIntensity,color:v.ambientColor}),e("directionalLight",{position:[-4,5,7],intensity:v.directionalIntensity,color:v.directionalColor,castShadow:!0}),e("directionalLight",{position:[-5,5,5],intensity:.5}),q&&e(ye,{children:e(Pe,{fallback:null,children:e(Pn,{...I?{files:I}:{preset:v.envPreset},background:v.backgroundEnabled,environmentIntensity:v.envIntensity,backgroundIntensity:v.envIntensity,backgroundBlurriness:v.backgroundBlur})})},I??v.envPreset),e(Lr,{rotation:v.envRotation}),e(qn,{scene:C,exposure:v.exposure,toneMapping:v.toneMapping,fov:v.fov,wireframe:v.wireframe}),e(Jn,{enabled:v.autoRotate,speed:v.autoRotateSpeed,controlsRef:K}),v.groundShadow&&Y&&e(Rr,{position:[Y.center.x,Y.y,Y.center.z],scale:Y.size*2,opacity:v.groundShadowOpacity,blur:2,far:Y.size,resolution:1024,color:"#000000"}),v.showFloorGrid&&e(fr,{getTarget:gn,revision:C,lineColor:bn}),e(ye,{onLoadError:yn,children:e(Pe,{fallback:null,children:e($n,{url:S,format:Qe?void 0:s,dracoDecoderPath:l,ktx2TranscoderPath:b,meshopt:f,hiddenKeys:$e,selectedKey:qe,panelHoveredKey:rn,nodeRefsOut:Ke,onMeshesReady:xn,onModelLoaded:wn,onLoadProgress:_n,onMeshClick:lr,highlightOnHover:E})})},`${S}:${on}`),e(Xn,{scene:C,controlsRef:K,refitOnResize:A,onInitialFitComplete:()=>{let n=K.current;n&&!de.current&&(de.current={position:n.getPosition(new D).toArray(),target:n.getTarget(new D).toArray()}),Ce(!0)},cameraLimits:O,resumeViewRef:Le}),e(zn,{ref:K,makeDefault:!0,smoothTime:le?0:.3})]})]}):e("div",{className:"smv-upload-empty-state",style:{background:v.backgroundColor},children:c("div",{className:"smv-upload-empty-state__card",children:[e("div",{className:"smv-upload-empty-state__icon",children:e(Te,{size:24})}),e("p",{className:"smv-upload-empty-state__body",children:P("dropModelHint",{formats:".glb, .gltf, .obj, .fbx, .usdz, .stl, .ply, .zip"})}),c("button",{type:"button",className:"smv-upload-empty-state__button",onClick:()=>He.current?.click(),children:[e(Te,{size:15}),P("chooseModel")]})]})}),S&&H.live?e(kr,{src:te??o,hidden:!!(C&&pe)}):null,e(jr,{visible:Ln,message:P("loadingModel"),progress:nr?void 0:ln??void 0}),h&&dn?e("div",{className:"smv-upload-drop-overlay",children:c("div",{className:"smv-upload-drop-overlay__card",children:[e(Te,{size:20}),e("span",{children:P("releaseToLoadYourModel")})]})}):null]}),i&&S&&e(Zn,{meshKeys:en,hiddenKeys:$e,selectedKey:qe,isOpen:cn,onToggle:pn,onFocus:lr,onHover:Ye,onToggleVisibility:kn})]})}export{Nn as DEFAULT_MODEL_VIEWER_LABELS,Jr as SimpleModelViewer};
1
+ "use client";import{a as Xr}from"./chunk-MMO7KCYU.mjs";import{A as Tr,C as Vr,E as Or,F as Ir,H as jr,I as Br,J as Fr,K as Hr,L as Gr,M as Ur,N as $r,h as br,i as fr,k as hr,o as kr,p as Mr,q as Sr,r as Cr,s as Rr,t as Er,u as Lr,v as Nr,x as zr,y as Pr,z as Dr}from"./chunk-UTVFRMYW.mjs";import{a as gr,b as fe}from"./chunk-NMRTI3NQ.mjs";import{a as Wr}from"./chunk-37YITTIK.mjs";import"./chunk-2AJK643D.mjs";import{a as xr,b as wr,c as De,d as yr,e as _r,f as Ar,j as Kr}from"./chunk-RKDATTUM.mjs";import"./chunk-KFLS7GI6.mjs";import{a as Fn}from"./chunk-UAZ6I25Y.mjs";import"./chunk-BNKTI3CY.mjs";import"./chunk-UCD76KQ6.mjs";import"./chunk-RXZ4Q7CY.mjs";import"./chunk-JR557W27.mjs";import{useRef as C,useState as b,useCallback as k,useEffect as M,useMemo as H,Component as Gn,Suspense as Te}from"react";import{CameraControls as Un}from"@react-three/drei";import{useFrame as on,useThree as q}from"@react-three/fiber";import{Canvas as Wn}from"@react-three/fiber";import{ACESFilmicToneMapping as $n,AgXToneMapping as Xn,Box3 as _e,Color as qn,MeshStandardMaterial as Jn,NeutralToneMapping as Yn,NoToneMapping as Zn,PerspectiveCamera as an,Vector3 as V}from"three";import{SkeletonUtils as Qn}from"three-stdlib";import{X as Oe,Check as sn,Settings as et,ChevronDown as rt,Boxes as nt,RotateCcw as tt,Trash2 as ot,Upload as Ve,AlertTriangle as at}from"lucide-react";import{Box3 as qr,Vector3 as oe}from"three";var Jr=.1;function Kn(r,o){if(!o||r.isEmpty())return r.clone();let t=r.getCenter(new oe),l=r.getSize(new oe),a=Math.hypot(l.x,l.z)/2;return new qr(new oe(t.x-a,r.min.y,t.z-a),new oe(t.x+a,r.max.y,t.z+a))}function Hn(r,o){let t=r.getSize(new oe),l=Math.max(t.x,t.y,t.z),a=Number.isFinite(l)?l*Math.max(0,o):0;return{paddingTop:a,paddingBottom:a,paddingLeft:a,paddingRight:a}}function he(r,o,{fitPadding:t,spinning:l},a){let d=new qr().setFromObject(o);return r.fitToBox(Kn(d,l),a,Hn(d,t))}import{Fragment as tn,jsx as e,jsxs as c}from"react/jsx-runtime";var Yr={color:"#93c5fd",intensity:.05},Zr=["neutral","apartment","city","dawn","forest","lobby","night","park","studio","sunset","warehouse"],ln={aces:$n,agx:Xn,neutral:Yn,none:Zn};function Ie(r){return!!(r&&"isMesh"in r&&r.isMesh)}function Qr(r,o){Array.isArray(r)?r.forEach(o):o(r)}function en(r,o,t){if(!o)return;let l=o.camera;if(!(l instanceof an))return;let a=new _e().setFromObject(r).getSize(new V).length();if(!Number.isFinite(a)||a<=0)return;l.near=a/100,l.far=a*100,l.updateProjectionMatrix();let d=jr(t);o.minDistance=t?.minDistance??a*.05,o.maxDistance=t?.maxDistance??a*10,o.minPolarAngle=d.minPolarAngle,o.maxPolarAngle=d.maxPolarAngle,o.minAzimuthAngle=d.minAzimuthAngle,o.maxAzimuthAngle=d.maxAzimuthAngle,o.boundaryEnclosesCamera=d.boundaryEnclosesCamera,o.boundaryFriction=d.boundaryFriction,o.setBoundary(d.panBoundary?new _e(new V(...d.panBoundary[0]),new V(...d.panBoundary[1])):void 0)}var ke=class extends Gn{constructor(){super(...arguments);this.state={hasError:!1}}static getDerivedStateFromError(){return{hasError:!0}}componentDidCatch(t){this.props.onLoadError?.(t)}render(){return this.state.hasError?null:this.props.children}};function it({url:r,format:o,dracoDecoderPath:t,ktx2TranscoderPath:l,meshopt:a,hiddenKeys:d,selectedKey:x,panelHoveredKey:f,nodeRefsOut:i,onMeshesReady:s,onModelLoaded:z,onLoadProgress:h,onMeshClick:N,highlightOnHover:y}){let{scene:u}=Fr(r,{dracoDecoderPath:t,ktx2TranscoderPath:l,meshopt:a},o,h),G=q(p=>p.invalidate),{setCanvasCursor:A,restoreCanvasCursor:O}=Gr(),[I,F]=b(null),E=H(()=>Qn.clone(u),[u]),P=H(()=>{let p={};return E.traverse(m=>{if(!Ie(m))return;let _=m.name||m.uuid;p[_]={key:_,label:m.name||m.type,ref:m}}),p},[E]),U=H(()=>{let p={};for(let[m,{ref:_}]of Object.entries(P)){let $=(Array.isArray(_.material)?_.material:[_.material]).map(w=>{let L=(Kr(w)??new Jn).clone();return L.userData.baseColor=L.color.clone(),L.userData.baseMap=L.map,L.userData.baseEmissive=L.emissive.clone(),L.userData.baseEmissiveMap=L.emissiveMap,L.userData.baseEmissiveIntensity=L.emissiveIntensity,L});p[m]=Array.isArray(_.material)?$:$[0]}return p},[P]);M(()=>()=>{Object.values(U).forEach(p=>Qr(p,m=>m.dispose()))},[U]);let ie=C(null);M(()=>{ie.current!==r&&(ie.current=r,E.updateWorldMatrix(!0,!0),Hr(E),s(P),z(E))},[r,E,P,s,z]),M(()=>{let p=new AbortController;return yr(E,p.signal),()=>{p.abort(),_r(E)}},[E]);let se=H(()=>!wr(E),[E]);M(()=>{for(let[p,{ref:m}]of Object.entries(P))i.current[p]=m},[P,i]),M(()=>{!y&&I!==null&&(F(null),O())},[y,I,O]),M(()=>{for(let[p,{ref:m}]of Object.entries(P)){m.visible=!d.has(p);let _=U[p];if(!_)continue;m.material=_;let re=y&&I===p,$=y&&f===p;Qr(_,w=>{if(w.color.copy(w.userData.baseColor),w.map=w.userData.baseMap??null,w.emissive.copy(w.userData.baseEmissive),w.emissiveMap=w.userData.baseEmissiveMap??null,w.emissiveIntensity=w.userData.baseEmissiveIntensity,$||re){let ne=!!w.userData.baseEmissiveMap;w.emissive.set(Yr.color),w.emissiveIntensity=ne?w.userData.baseEmissiveIntensity:Yr.intensity}w.needsUpdate=!0})}G()},[P,U,I,x,f,y,d,G]);let W=p=>{if(!Ar(p))return null;let m=p;for(;m;){let _=m.name||m.uuid;if(P[_])return _;m=m.parent}return null},ee=se?{onClick:p=>{let m=W(p.object);m&&(p.stopPropagation(),N(m))},...y?{onPointerOver:p=>{let m=W(p.object);m&&(p.stopPropagation(),A("pointer"),F(m))},onPointerOut:p=>{p.stopPropagation(),O(),F(null)}}:{}}:{};return e("primitive",{object:E,...ee})}function st({scene:r,controlsRef:o,refitOnResize:t,onInitialFitComplete:l,resumeViewRef:a,cameraLimits:d,framing:x}){let f=C(x);f.current=x;let i=C(d);i.current=d;let s=JSON.stringify(d??null);M(()=>{r&&en(r,o.current,i.current)},[r,o,s]);let z=C(!1),h=q(u=>u.invalidate),N=q(u=>u.size),y=C(null);return M(()=>{z.current=!1,h()},[h,r]),on(()=>{if(z.current)return;if(!r||!o.current){h();return}z.current=!0,en(r,o.current,d);let u=a.current;if(u){a.current=null,o.current.setLookAt(...u.position,...u.target,!1).catch(()=>{}).finally(l),h();return}he(o.current,r,f.current,!1).catch(()=>{}).finally(l),h()}),M(()=>{if(!(!t||!z.current||!r||!o.current))return y.current&&clearTimeout(y.current),y.current=setTimeout(()=>{let u=o.current;u&&he(u,r,f.current,!0).catch(()=>{}),h()},150),()=>{y.current&&clearTimeout(y.current)}},[N.width,N.height,t]),null}function lt({scene:r,exposure:o,toneMapping:t,fov:l,wireframe:a}){let d=q(i=>i.gl),x=q(i=>i.camera),f=q(i=>i.invalidate);return M(()=>{d.toneMappingExposure=o,f()},[d,o,f]),M(()=>{x instanceof an&&(x.fov=l,x.updateProjectionMatrix(),f())},[x,l,f]),M(()=>{d.toneMapping=ln[t],r?.traverse(i=>{if(Ie(i))for(let s of[i.material].flat())s.wireframe=a,s.needsUpdate=!0}),f()},[d,r,t,a,f]),null}function dt({enabled:r,speed:o,controlsRef:t}){let l=q(a=>a.invalidate);return on((a,d)=>{!r||!t.current||(t.current.rotate(d*.2*o,0,!1),l())}),null}function xe(r){return Array.from(r.types).includes("Files")}function ae({label:r,checked:o,onChange:t}){return c("div",{className:"ri-env-row",children:[e("span",{className:"ri-env-row__label",title:r,children:r}),e("div",{className:"ri-env-row__value",children:e("button",{type:"button",className:"ri-env-checkbox-btn",role:"checkbox","aria-checked":o,"aria-label":r,onClick:()=>t(!o),children:e("span",{className:`ri-env-checkbox${o?" ri-env-checkbox--checked":""}`,children:o&&e(sn,{size:10,strokeWidth:2.5,"aria-hidden":"true"})})})})]})}function we({label:r,value:o,onChange:t}){return c("div",{className:"ri-env-row",children:[e("span",{className:"ri-env-row__label",title:r,children:r}),e("div",{className:"ri-env-row__value",children:c("label",{className:"ri-env-color-swatch",children:[e("span",{className:"ri-env-color-swatch__chip",style:{background:o}}),e("span",{className:"ri-env-color-swatch__hex",children:o}),e("input",{type:"color",className:"ri-env-color-swatch__input","aria-label":r,value:o,onChange:l=>t(l.target.value)})]})})]})}function B({label:r,value:o,min:t,max:l,step:a,format:d=f=>f.toFixed(2),onChange:x}){return c("div",{className:"ri-env-row",children:[e("span",{className:"ri-env-row__label",title:r,children:r}),c("div",{className:"ri-env-row__value ri-env-row__value--slider",children:[e("input",{type:"range",className:"ri-env-slider","aria-label":r,min:t,max:l,step:a,value:o,onChange:f=>x(Number(f.target.value))}),e("span",{className:"ri-env-slider__value",children:d(o)})]})]})}function rn({label:r,optionLabels:o,value:t,options:l,onChange:a}){return c("div",{className:"ri-env-row",children:[e("span",{className:"ri-env-row__label",title:r,children:r}),e("div",{className:"ri-env-row__value",children:e("select",{className:"ri-env-select","aria-label":r,value:t,onChange:d=>a(d.target.value),children:l.map(d=>e("option",{value:d,children:o?.[d]??d},d))})})]})}function ye({label:r,value:o}){return c("div",{className:"ri-env-row",children:[e("span",{className:"ri-env-row__label",title:r,children:r}),e("span",{className:"ri-env-row__info",children:o})]})}var nn=r=>`${Math.round(r)}\xB0`;function Q({title:r,children:o}){let[t,l]=b(!1);return c("div",{className:"ri-env-section",children:[c("button",{type:"button",className:"ri-env-section__header","aria-expanded":!t,onClick:()=>l(a=>!a),children:[e(rt,{size:12,strokeWidth:2,className:`ri-env-section__chevron${t?" env-section__chevron--collapsed":""}`}),e("span",{children:r})]}),!t&&e("div",{className:"ri-env-section__body",children:o})]})}function ct({isOpen:r,onToggle:o,settings:t,modelInfo:l,onChange:a,onReset:d,environmentEnabled:x,environmentUrl:f}){let i=fe();return c("div",{className:`ri-left-panel-wrapper ${r?"ri-left-panel-wrapper--open":"ri-left-panel-wrapper--closed"}`,children:[!r&&e("button",{className:"ri-side-panel__open-btn ri-side-panel__open-btn--left",onClick:()=>o(!0),children:e(et,{size:20,strokeWidth:1.8})}),c("div",{className:`ri-side-panel ri-side-panel--left ${r?"ri-side-panel--open-left":"ri-side-panel--closed-left"}`,"aria-hidden":!r,children:[e("div",{className:"ri-side-panel__header",children:c("div",{className:"ri-side-panel__header-top",children:[e("span",{className:"ri-side-panel__eyebrow",children:i("sceneSettings")}),e("button",{className:"ri-side-panel__close-btn",onClick:()=>o(!1),title:i("close"),children:e(Oe,{size:12,strokeWidth:1.6})})]})}),c("div",{className:"ri-env-controls",children:[x&&c(Q,{title:i("environment"),children:[!f&&e(rn,{label:i("environmentPreset"),value:t.envPreset,options:Zr,optionLabels:Object.fromEntries(Zr.map(s=>[s,i(`environment${s[0].toUpperCase()}${s.slice(1)}`)])),onChange:s=>a("envPreset",s)}),e(B,{label:i("environmentIntensity"),value:t.envIntensity,min:0,max:3,step:.05,onChange:s=>a("envIntensity",s)}),e(B,{label:i("rotation"),value:t.envRotation,min:0,max:360,step:1,format:nn,onChange:s=>a("envRotation",s)}),e(ae,{label:i("showEnvironmentAsBackground"),checked:t.backgroundEnabled,onChange:s=>a("backgroundEnabled",s)}),t.backgroundEnabled?e(B,{label:i("backgroundBlur"),value:t.backgroundBlur,min:0,max:1,step:.01,onChange:s=>a("backgroundBlur",s)}):e(we,{label:i("backgroundColor"),value:t.backgroundColor,onChange:s=>a("backgroundColor",s)})]}),!x&&e(Q,{title:i("background"),children:e(we,{label:i("backgroundColor"),value:t.backgroundColor,onChange:s=>a("backgroundColor",s)})}),c(Q,{title:i("lighting"),children:[e(B,{label:i("exposure"),value:t.exposure,min:0,max:2,step:.05,onChange:s=>a("exposure",s)}),e(rn,{label:i("toneMapping"),value:t.toneMapping,options:Object.keys(ln),optionLabels:{aces:i("toneMappingAces"),agx:i("toneMappingAgx"),neutral:i("toneMappingNeutral"),none:i("toneMappingNone")},onChange:s=>a("toneMapping",s)}),e(B,{label:i("ambientLightIntensity"),value:t.ambientIntensity,min:0,max:3,step:.05,onChange:s=>a("ambientIntensity",s)}),e(we,{label:i("ambientLightColor"),value:t.ambientColor,onChange:s=>a("ambientColor",s)}),e(B,{label:i("directLightIntensity"),value:t.directionalIntensity,min:0,max:5,step:.05,onChange:s=>a("directionalIntensity",s)}),e(we,{label:i("directLightColor"),value:t.directionalColor,onChange:s=>a("directionalColor",s)})]}),c(Q,{title:i("ground"),children:[e(ae,{label:i("groundShadow"),checked:t.groundShadow,onChange:s=>a("groundShadow",s)}),t.groundShadow&&e(B,{label:i("groundShadowOpacity"),value:t.groundShadowOpacity,min:0,max:1,step:.01,onChange:s=>a("groundShadowOpacity",s)}),e(ae,{label:i("floorGrid"),checked:t.showFloorGrid,onChange:s=>a("showFloorGrid",s)})]}),c(Q,{title:i("display"),children:[e(ae,{label:i("wireframe"),checked:t.wireframe,onChange:s=>a("wireframe",s)}),e(ae,{label:i("autoRotate"),checked:t.autoRotate,onChange:s=>a("autoRotate",s)}),t.autoRotate&&e(B,{label:i("autoRotateSpeed"),value:t.autoRotateSpeed,min:.1,max:5,step:.1,onChange:s=>a("autoRotateSpeed",s)}),e(B,{label:i("fieldOfView"),value:t.fov,min:15,max:90,step:1,format:nn,onChange:s=>a("fov",s)})]}),l&&c(Q,{title:i("modelInfo"),children:[e(ye,{label:i("modelInfoObjects"),value:l.objects.toLocaleString()}),e(ye,{label:i("modelInfoTriangles"),value:l.triangles.toLocaleString()}),e(ye,{label:i("modelInfoMaterials"),value:l.materials.toLocaleString()}),e(ye,{label:i("size"),value:l.size})]}),e("div",{className:"ri-env-footer",children:c("button",{type:"button",className:"ri-env-reset",onClick:d,children:[e(tt,{size:12,"aria-hidden":"true"}),i("resetSettings")]})})]})]})]})}function pt(r){let o=0,t=new Set;r.traverse(a=>{if(Ie(a)){o+=1;for(let d of[a.material].flat())t.add(d.name||d.uuid)}});let l=new _e().setFromObject(r).getSize(new V);return{objects:o,triangles:De(r),materials:t.size,size:[l.x,l.y,l.z].map(a=>Number(a.toPrecision(3))).join(" \xD7 ")}}function ut({meshKeys:r,hiddenKeys:o,selectedKey:t,isOpen:l,onToggle:a,onFocus:d,onHover:x,onToggleVisibility:f}){let i=fe(),[s,z]=b(""),[h,N]=b(null),y=Object.values(r).filter(u=>u.label.toLowerCase().includes(s.toLowerCase()));return c("div",{className:`ri-right-panel-wrapper ${l?"ri-right-panel-wrapper--open":"ri-right-panel-wrapper--closed"}`,children:[!l&&e("button",{className:"ri-side-panel__open-btn",onClick:()=>a(!0),children:e(nt,{size:20,strokeWidth:1.8})}),c("div",{className:`ri-side-panel ${l?"ri-side-panel--open":"ri-side-panel--closed"}`,"aria-hidden":!l,children:[e("div",{className:"ri-side-panel__header",children:c("div",{className:"ri-side-panel__header-top",children:[e("span",{className:"ri-side-panel__eyebrow",children:i("sceneObjects")}),e("span",{className:"ri-side-panel__title","aria-label":i("objectCount",{count:y.length}),children:y.length}),e("button",{className:"ri-side-panel__close-btn",onClick:()=>a(!1),title:i("close"),children:e(Oe,{size:12,strokeWidth:1.6})})]})}),e("div",{className:"ri-side-panel__search-wrap",children:e("input",{className:"ri-side-panel__search",type:"text",placeholder:i("searchObjects"),value:s,onChange:u=>z(u.target.value)})}),e("div",{className:"ri-side-panel__list",children:y.map(({key:u,label:G})=>{let A=!o.has(u),O=t===u,I=h===u;return c("div",{onClick:()=>d(u),onMouseEnter:()=>{N(u),x(u)},onMouseLeave:()=>{N(null),x(null)},className:["ri-side-panel__row",I?"ri-side-panel__row--hovered":"",O?"ri-side-panel__row--selected":""].filter(Boolean).join(" "),children:[e("button",{type:"button",className:`ri-side-panel__label ri-side-panel__labelButton${I||O?" ri-side-panel__label--hovered":""}`,"aria-current":O?"true":void 0,onFocus:()=>{N(u),x(u)},onBlur:()=>{N(null),x(null)},children:G}),e("button",{type:"button",className:"ri-side-panel__vis-btn",title:i(A?"hide":"show"),"aria-label":i(A?"hideObject":"showObject",{name:G}),onClick:F=>{F.stopPropagation(),f(u)},children:e("span",{className:`ri-side-panel__checkbox${A?" ri-side-panel__checkbox--checked":""}`,children:A&&e(sn,{size:9,strokeWidth:5,color:"white"})})})]},u)})})]})]})}function dn(r){return e(gr,{labels:r.labels,children:e(mt,{...r})})}function mt({modelUrl:r,poster:o,loading:t,reveal:l,modelFormat:a,dracoDecoderPath:d,ktx2TranscoderPath:x,meshopt:f=!0,backgroundColor:i="#1a1a1a",showSceneObjectsPanel:s=!0,showSceneSettingsPanel:z=!0,enableModelUpload:h=!1,zoomOnSelected:N=!1,highlightOnHover:y=!1,showLoadingOverlay:u=!0,showLoadError:G=!0,refitOnResize:A=!0,cameraLimits:O,showResetButton:I=!0,fitPadding:F=Jr,zoom:E=!0,pageScroll:P=!1,backgroundEnabled:U=!1,autoRotate:ie=!1,envPreset:se=Dr,environmentUrl:W,environmentEnabled:ee=!0,exposure:p=1,ambientIntensity:m=.6,ambientColor:_="#ffffff",directionalIntensity:re=1.2,directionalColor:$="#ffffff",envIntensity:w=1,envRotation:ne=0,backgroundBlur:L=0,toneMapping:je="aces",groundShadow:Be=!1,groundShadowOpacity:Ae=.5,showFloorGrid:Fe=!1,wireframe:Ke=!1,autoRotateSpeed:He=1,fov:Ge=45,onModelLoaded:Ue,onLoadError:le,labels:cn,reducedMotion:pn="user"}){let D=fe(),de=Wr(pn),We=ie&&!de;Xr("simple-model-viewer","SimpleModelViewer");let j=C(null),ce=C(null),$e=C({}),Xe=C(null),Me=C(null),te=C(0),[R,Se]=b(null),[qe,Je]=b(null),[un,Ce]=b(!1),[mn,Ye]=b({}),[Ze,Qe]=b(new Set),[er,rr]=b(null),[vn,nr]=b(null),[tr,or]=b(null),[gn,ar]=b(null),[ir,pe]=b(!1),[bn,Re]=b(null),[fn,hn]=b(0),[sr,lr]=b(!1),[ue,Ee]=b(!1),[xn,me]=b(null),wn=Pr(xn),[yn,ve]=b(!1),[_n,kn]=b(()=>typeof window>"u"?!0:window.innerWidth>900),[Mn,Sn]=b(()=>typeof window>"u"?!0:window.innerWidth>900),ge=H(()=>({backgroundEnabled:U,backgroundColor:i,autoRotate:We,envPreset:se,exposure:p,ambientIntensity:m,ambientColor:_,directionalIntensity:re,directionalColor:$,envIntensity:w,envRotation:ne,backgroundBlur:L,toneMapping:je,groundShadow:Be,groundShadowOpacity:Ae,showFloorGrid:Fe,wireframe:Ke,autoRotateSpeed:He,fov:Ge}),[U,i,We,se,p,m,_,re,$,w,ne,L,je,Be,Ae,Fe,Ke,He,Ge]),[v,be]=b(ge),dr=H(()=>({fitPadding:F,spinning:v.autoRotate}),[F,v.autoRotate]),S=h?tr:r,cr=C(null),Le=C(null),Ne=C(null),[J,pr]=b(null);M(()=>()=>{J&&URL.revokeObjectURL(J)},[J]);let ur=C(S);ur.current=S;let ze=C(null),K=Er({loading:t,reveal:l,rootRef:cr,onPark:()=>{ze.current=Le.current?.gl??null;let n=j.current;if(n&&ue){Ne.current={position:n.getPosition(new V).toArray(),target:n.getTarget(new V).toArray()};let g=S;Rr(Le.current).then(T=>{T&&(g===ur.current?pr(T):URL.revokeObjectURL(T))})}Se(null),Ee(!1)}});M(()=>{if(K.live)return;let n=ze.current;ze.current=null,n&&Cr(n)},[K.live]);let X=k(()=>{Ne.current=null,ce.current=null,pr(null),Se(null),Je(null),Ce(!1),Ye({}),Qe(new Set),rr(null),nr(null),pe(!1),Re(null),Ee(!1),me(null)},[]),Y=k(()=>{Me.current?.cleanup(),Me.current=null},[]),Cn=k(()=>{Y(),or(null),ar(null),X(),be(ge)},[ge,X,Y]),mr=k(async n=>{lr(!0);try{let g=await hr(n);Y(),Me.current=g,or(g.url),ar(g.name),X()}catch(g){pe(!0),Re(g),le?.(g)}finally{lr(!1)}},[le,X,Y]),Pe=k(n=>{let g=n?.[0];g&&mr(g)},[mr]);M(()=>()=>{Y()},[Y]);let Rn=k(()=>R,[R]),En=!(ee&&v.backgroundEnabled)&&new qn(v.backgroundColor).getHSL({h:0,s:0,l:0}).l>.5?"#000000":"#ffffff",Ln=H(()=>R?pt(R):null,[R]),Z=H(()=>{if(!R)return null;let n=new _e().setFromObject(R);if(n.isEmpty())return null;let g=n.getSize(new V);return{y:n.min.y,center:n.getCenter(new V),size:Math.max(g.x,g.y,g.z)}},[R]),Nn=k((n,g)=>{be(T=>({...T,[n]:g}))},[]);M(()=>{be(n=>({...n,backgroundColor:i}))},[i]),M(()=>{X()},[S,X]);let zn=k(n=>{Ye(n)},[]),Pn=k(n=>{Se(n),pe(!1);let g=De(n);Je(g>xr?g:null),Ce(!1),me(null),Ue?.(Ur(n))},[Ue]),Dn=k(n=>{pe(!0),Re(n),me(null),le?.(n)},[le]),Tn=k(n=>{n.lengthComputable&&n.total>0&&me(n.loaded/n.total*100)},[]),vr=k(n=>{if(rr(n),!N)return;let g=$e.current[n];!g||!j.current||j.current.fitToBox(g,!0,{paddingTop:.5,paddingBottom:.5,paddingLeft:.5,paddingRight:.5}).catch(()=>{})},[N]),Vn=k(n=>{Qe(g=>{let T=new Set(g);return T.has(n)?T.delete(n):T.add(n),T})},[]),On=k(n=>{!h||!xe(n.dataTransfer)||(n.preventDefault(),n.stopPropagation(),te.current+=1,ve(!0))},[h]),In=k(n=>{!h||!xe(n.dataTransfer)||(n.preventDefault(),n.stopPropagation(),n.dataTransfer.dropEffect="copy",ve(!0))},[h]),jn=k(n=>{!h||!xe(n.dataTransfer)||(n.preventDefault(),n.stopPropagation(),te.current=Math.max(0,te.current-1),te.current===0&&ve(!1))},[h]),Bn=k(n=>{!h||!xe(n.dataTransfer)||(n.preventDefault(),n.stopPropagation(),te.current=0,ve(!1),Pe(n.dataTransfer.files))},[h,Pe]),An=u&&(sr||!!(S&&K.live&&!ir&&(!R||!ue)));return c("div",{className:"smv-root",ref:cr,"data-reduced-motion":de?"":void 0,style:{background:v.backgroundColor},onDragEnter:On,onDragOver:In,onDragLeave:jn,onDrop:Bn,children:[z&&S&&e(ct,{isOpen:Mn,onToggle:Sn,environmentUrl:W,environmentEnabled:ee,settings:v,modelInfo:Ln,onReset:()=>be(ge),onChange:Nn}),c("div",{className:"smv-canvasArea",children:[G&&ir&&S&&c("div",{className:"smv-load-error",role:"alert",children:[e("strong",{children:D("loadErrorTitle")}),e("p",{children:zr(bn,S,a,cn).detail}),e("button",{type:"button",onClick:()=>{br(S),X(),hn(n=>n+1)},children:D("retryModelLoad")})]}),I&&R&&ue&&e("button",{type:"button",className:"smv-reset-camera",onClick:()=>{let n=j.current,g=ce.current;!n||!g||n.setLookAt(...g.position,...g.target,!1).then(()=>he(n,R,dr,!de)).catch(()=>{})},children:D("resetCameraView")}),qe!==null&&!un&&c("div",{className:"smv-largeModelBanner",children:[e(at,{size:14,className:"smv-largeModelBanner__icon"}),e("span",{children:D("simpleLargeModelWarning",{millions:Math.round(qe/1e6)})}),e("button",{type:"button",className:"smv-largeModelBanner__dismiss",onClick:()=>Ce(!0),"aria-label":D("dismiss"),children:e(Oe,{size:12})})]}),h?c(tn,{children:[e("input",{ref:Xe,type:"file",accept:fr,className:"smv-upload-input",onChange:n=>{Pe(n.target.files),n.currentTarget.value=""}}),S?e("div",{className:"smv-upload-toolbar",children:c(tn,{children:[e("span",{className:"smv-upload-toolbar__name",children:gn??D("uploadedModel")}),c("button",{type:"button",className:"smv-upload-toolbar__button smv-upload-toolbar__button--ghost",onClick:Cn,children:[e(ot,{size:14}),D("clear")]})]})}):null]}):null,S&&!K.live?e(Nr,{className:"ri-viewerPlaceholder--inset",background:v.backgroundColor,poster:J??o,onReveal:K.awaitingReveal?K.reveal:void 0}):S?c(Wn,{dpr:[1,2],frameloop:K.visible?"demand":"never",resize:{debounce:0,scroll:!1},raycaster:{firstHitOnly:!0},style:{background:v.backgroundColor},camera:{position:[0,0,5],fov:45,near:.1,far:1e3},children:[e(Mr,{captureRef:Le}),e(Sr,{}),c(Te,{fallback:null,children:[e("ambientLight",{intensity:v.ambientIntensity,color:v.ambientColor}),e("directionalLight",{position:[-4,5,7],intensity:v.directionalIntensity,color:v.directionalColor,castShadow:!0}),e("directionalLight",{position:[-5,5,5],intensity:.5}),ee&&e(ke,{children:c(Te,{fallback:null,children:[e(Tr,{...W?{files:W}:{preset:v.envPreset},background:v.backgroundEnabled,environmentIntensity:v.envIntensity,backgroundIntensity:v.envIntensity,backgroundBlurriness:v.backgroundBlur}),e(Or,{})]})},W??v.envPreset),e(Ir,{rotation:v.envRotation}),e(lt,{scene:R,exposure:v.exposure,toneMapping:v.toneMapping,fov:v.fov,wireframe:v.wireframe}),e(dt,{enabled:v.autoRotate,speed:v.autoRotateSpeed,controlsRef:j}),v.groundShadow&&Z&&e(Vr,{position:[Z.center.x,Z.y,Z.center.z],scale:Z.size*2,opacity:v.groundShadowOpacity,blur:2,far:Z.size,resolution:1024,color:"#000000"}),v.showFloorGrid&&e(kr,{getTarget:Rn,revision:R,lineColor:En}),e(ke,{onLoadError:Dn,children:e(Te,{fallback:null,children:e(it,{url:S,format:tr?void 0:a,dracoDecoderPath:d,ktx2TranscoderPath:x,meshopt:f,hiddenKeys:Ze,selectedKey:er,panelHoveredKey:vn,nodeRefsOut:$e,onMeshesReady:zn,onModelLoaded:Pn,onLoadProgress:Tn,onMeshClick:vr,highlightOnHover:y})})},`${S}:${fn}`),e(st,{scene:R,controlsRef:j,refitOnResize:A,onInitialFitComplete:()=>{let n=j.current;n&&!ce.current&&(ce.current={position:n.getPosition(new V).toArray(),target:n.getTarget(new V).toArray()}),Ee(!0)},cameraLimits:O,resumeViewRef:Ne,framing:dr}),e(Un,{ref:j,makeDefault:!0,smoothTime:de?0:.3}),e(Br,{controlsRef:j,zoom:E,pageScroll:P})]})]}):e("div",{className:"smv-upload-empty-state",style:{background:v.backgroundColor},children:c("div",{className:"smv-upload-empty-state__card",children:[e("div",{className:"smv-upload-empty-state__icon",children:e(Ve,{size:24})}),e("p",{className:"smv-upload-empty-state__body",children:D("dropModelHint",{formats:".glb, .gltf, .obj, .fbx, .usdz, .stl, .ply, .zip"})}),c("button",{type:"button",className:"smv-upload-empty-state__button",onClick:()=>Xe.current?.click(),children:[e(Ve,{size:15}),D("chooseModel")]})]})}),S&&K.live?e(Lr,{src:J??o,hidden:!!(R&&ue)}):null,e($r,{visible:An,message:D("loadingModel"),progress:sr?void 0:wn??void 0,background:v.backgroundColor,seeThrough:!!(J??o)}),h&&yn?e("div",{className:"smv-upload-drop-overlay",children:c("div",{className:"smv-upload-drop-overlay__card",children:[e(Ve,{size:20}),e("span",{children:D("releaseToLoadYourModel")})]})}):null]}),s&&S&&e(ut,{meshKeys:mn,hiddenKeys:Ze,selectedKey:er,isOpen:_n,onToggle:kn,onFocus:vr,onHover:nr,onToggleVisibility:Vn})]})}export{Fn as DEFAULT_MODEL_VIEWER_LABELS,dn as SimpleModelViewer};
package/dist/utils.d.mts CHANGED
@@ -1,7 +1,7 @@
1
- import { bm as SceneLight, ap as ObjectBinding, aE as ObjectBindingType, aa as MeasurementUnit, a7 as MeasurementSettings, b5 as SavedMeasurement, a4 as MeasurementPoint, a6 as MeasurementResult, a9 as MeasurementTool, a3 as MeasurementCollection, az as ObjectBindingStyle, aA as ObjectBindingTarget, bt as SceneProductConfig, aT as ProductDefinition, b1 as ProductSelections, aR as ProductConfiguration, b2 as ProductSku, aU as ProductDefinitionWarning, aL as ProductAvailability, a_ as ProductOptionState, a$ as ProductPrice, U as InspectAssetOptions, q as AssetDiagnosticsReport, e as ARSnapshotSource, A as ARExportOptions, d as ARSnapshot, bS as ShareableViewerState, c8 as ViewerStateStorage, bK as SequenceEasing, bA as SceneSequence, bP as SequenceTrack, bQ as SequenceValue, bL as SequenceKeyframe, bv as SceneSectionConfig, by as SceneSectionSettings } from './modelViewerProps-HazR2IE_.mjs';
2
- export { a as ARHandoffOptions, b as ARHandoffRequest, c as ARHandoffStatus, l as AnimationLoopMode, p as AssetDiagnosticIssue, r as AssetDiagnosticsSource, s as AssetTextureDiagnostic, t as AssetTransform, B as BindingEdit, D as ComparisonCategory, E as ComparisonChange, F as ComparisonHighlight, G as ComparisonObject, H as ComparisonStatus, I as ConfigurationComparisonInput, J as ConfigurationComparisonReport, M as DEFAULT_SCENE_CONFIG, N as DEFAULT_SECTION_CONFIG, P as DeepPartial, Q as EnvironmentPreset, R as GlitchModeName, V as IsolatedObjectBindings, X as KernelSizeName, _ as MATERIAL_BLENDING_MODES, $ as MATERIAL_SIDES, a0 as MAX_VIEWER_STATE_BYTES, a2 as MeasurementAnchor, a5 as MeasurementPosition, a8 as MeasurementStatus, ao as ObjectActionEvent, aq as ObjectBindingAction, ar as ObjectBindingCameraState, as as ObjectBindingDecal, at as ObjectBindingMaterial, au as ObjectBindingMaterialBlendingMode, av as ObjectBindingMaterialSide, aw as ObjectBindingPatch, ax as ObjectBindingSelector, ay as ObjectBindingStatus, aB as ObjectBindingTextureChannel, aC as ObjectBindingTextureSlot, aD as ObjectBindingTransform, aG as ObjectPointerEvent, aH as ObjectSurfacePoint, aK as ProductAppearance, aM as ProductCheckoutContext, aN as ProductCheckoutLink, aO as ProductCommerceAdapter, aP as ProductCommerceContext, aQ as ProductCommerceResult, aS as ProductConfigurationIssue, aV as ProductGroupDisplay, aW as ProductOption, aX as ProductOptionGroup, aY as ProductOptionRef, aZ as ProductOptionRule, b0 as ProductPricing, b3 as RampTypeName, b4 as RendererBackend, b6 as SceneAnimationClipConfig, b7 as SceneAnimationConfig, b8 as SceneAnnotationCameraView, b9 as SceneAnnotationImage, ba as SceneAnnotationLink, bb as SceneAnnotationMarker, bc as SceneBackgroundConfig, bd as SceneCameraConfig, be as SceneCinematicConfig, bf as SceneCinematicWaypoint, bh as SceneConfig, bj as SceneConfigPatch, bk as SceneEnvironmentConfig, bl as SceneGroundShadowConfig, bn as SceneLightAttachment, bo as SceneLightType, bp as SceneLightingConfig, bq as SceneModelConfig, br as SceneModelRenderer, bs as ScenePostProcessingConfig, bu as SceneSectionAxis, bz as SceneSelectionSet, bB as SceneShadowConfig, bC as SceneStyleColorScale, bD as SceneStyleCondition, bE as SceneStylePulse, bF as SceneStyleRule, bG as SceneWireframeConfig, bH as SemanticComparisonOptions, bI as SequenceCameraView, bJ as SequenceControls, bM as SequenceObjectProperty, bN as SequencePlaybackState, bO as SequenceTarget, bR as SequenceVector3, bT as StreamingDiagnostics, bU as StyledObjectBindings, bV as StyledObjectPulse, c1 as ViewerConfiguration, c3 as ViewerIsolation, c4 as ViewerObjectInfo, c7 as ViewerRuntimeStats, cb as applyIsolation, cc as applyStyleRules, cd as colorScaleValue, ce as compareViewerConfigurations, cf as groundAsset, cg as isolatedBindingKeys, ch as material, ci as parseAssetTransform, cj as parseSelectionSets, ck as parseViewerState, cl as patchBindings, cm as patchSceneConfig, cn as prepareViewerState, co as selectBindingKeys, cp as selectBindings, cq as serializeViewerState, cr as snapAssetToGrid } from './modelViewerProps-HazR2IE_.mjs';
3
- import { M as MaterialVariantGroup } from './modelFileResolver-ChKYsF21.mjs';
4
- export { D as DEFAULT_MODEL_VIEWER_LABELS, a as MaterialVariantOption, c as ModelViewerLabelKey, d as ModelViewerLabels, R as ReducedMotionSetting, h as chooseMaterialVariant } from './modelFileResolver-ChKYsF21.mjs';
1
+ import { aI as SceneLight, N as ObjectBinding, a1 as ObjectBindingType, z as MeasurementUnit, w as MeasurementSettings, as as SavedMeasurement, t as MeasurementPoint, v as MeasurementResult, y as MeasurementTool, s as MeasurementCollection, Y as ObjectBindingStyle, Z as ObjectBindingTarget, aP as SceneProductConfig, p as MaterialVariantGroup, ae as ProductDefinition, ao as ProductSelections, ac as ProductConfiguration, ap as ProductSku, af as ProductDefinitionWarning, a6 as ProductAvailability, al as ProductOptionState, am as ProductPrice, b3 as SequenceEasing, aW as SceneSequence, b8 as SequenceTrack, b9 as SequenceValue, b4 as SequenceKeyframe, aR as SceneSectionConfig, aU as SceneSectionSettings } from './modelFileResolver-CVmON8hg.mjs';
2
+ export { f as AnimationLoopMode, B as BindingEdit, D as DEFAULT_MODEL_VIEWER_LABELS, k as DEFAULT_SCENE_CONFIG, l as DEFAULT_SECTION_CONFIG, m as DeepPartial, E as EnvironmentPreset, G as GlitchModeName, I as IsolatedObjectBindings, K as KernelSizeName, M as MATERIAL_BLENDING_MODES, o as MATERIAL_SIDES, q as MaterialVariantOption, r as MeasurementAnchor, u as MeasurementPosition, x as MeasurementStatus, H as ModelViewerLabelKey, J as ModelViewerLabels, L as ObjectActionEvent, P as ObjectBindingAction, Q as ObjectBindingCameraState, R as ObjectBindingDecal, S as ObjectBindingMaterial, T as ObjectBindingMaterialBlendingMode, U as ObjectBindingMaterialSide, V as ObjectBindingPatch, W as ObjectBindingSelector, X as ObjectBindingStatus, _ as ObjectBindingTextureChannel, $ as ObjectBindingTextureSlot, a0 as ObjectBindingTransform, a3 as ObjectPointerEvent, a4 as ObjectSurfacePoint, a5 as ProductAppearance, a7 as ProductCheckoutContext, a8 as ProductCheckoutLink, a9 as ProductCommerceAdapter, aa as ProductCommerceContext, ab as ProductCommerceResult, ad as ProductConfigurationIssue, ag as ProductGroupDisplay, ah as ProductOption, ai as ProductOptionGroup, aj as ProductOptionRef, ak as ProductOptionRule, an as ProductPricing, aq as RampTypeName, ar as ReducedMotionSetting, at as SceneAnimationClipConfig, au as SceneAnimationConfig, av as SceneAnnotationCameraView, aw as SceneAnnotationImage, ax as SceneAnnotationLink, ay as SceneAnnotationMarker, az as SceneBackgroundConfig, aA as SceneCameraConfig, aB as SceneCinematicConfig, aC as SceneCinematicWaypoint, aD as SceneConfig, aF as SceneConfigPatch, aG as SceneEnvironmentConfig, aH as SceneGroundShadowConfig, aJ as SceneLightAttachment, aK as SceneLightType, aL as SceneLightingConfig, aM as SceneModelConfig, aN as SceneModelRenderer, aO as ScenePostProcessingConfig, aQ as SceneSectionAxis, aV as SceneSelectionSet, aX as SceneShadowConfig, aY as SceneStyleColorScale, aZ as SceneStyleCondition, a_ as SceneStylePulse, a$ as SceneStyleRule, b0 as SceneWireframeConfig, b1 as SequenceCameraView, b2 as SequenceControls, b5 as SequenceObjectProperty, b6 as SequencePlaybackState, b7 as SequenceTarget, ba as SequenceVector3, bb as StyledObjectBindings, bc as StyledObjectPulse, bg as ViewerIsolation, bm as applyIsolation, bn as applyStyleRules, bo as chooseMaterialVariant, bp as colorScaleValue, bq as isolatedBindingKeys, br as material, bs as parseSelectionSets, bt as patchBindings, bu as patchSceneConfig, bv as selectBindingKeys, bw as selectBindings } from './modelFileResolver-CVmON8hg.mjs';
3
+ import { I as InspectAssetOptions, h as AssetDiagnosticsReport, e as ARSnapshotSource, A as ARExportOptions, d as ARSnapshot, Z as ShareableViewerState, a9 as ViewerStateStorage } from './modelViewerProps-CIY4nsNY.mjs';
4
+ export { a as ARHandoffOptions, b as ARHandoffRequest, c as ARHandoffStatus, g as AssetDiagnosticIssue, i as AssetDiagnosticsSource, j as AssetTextureDiagnostic, k as AssetTransform, p as ComparisonCategory, q as ComparisonChange, r as ComparisonHighlight, s as ComparisonObject, t as ComparisonStatus, u as ConfigurationComparisonInput, v as ConfigurationComparisonReport, M as MAX_VIEWER_STATE_BYTES, W as RendererBackend, Y as SemanticComparisonOptions, _ as StreamingDiagnostics, a3 as ViewerConfiguration, a5 as ViewerObjectInfo, a8 as ViewerRuntimeStats, ab as compareViewerConfigurations, ac as groundAsset, ad as parseAssetTransform, ae as parseViewerState, af as prepareViewerState, ag as serializeViewerState, ah as snapAssetToGrid } from './modelViewerProps-CIY4nsNY.mjs';
5
5
  import { Object3D } from 'three';
6
6
  import 'react';
7
7
  import '@react-three/drei';
package/dist/utils.d.ts CHANGED
@@ -1,7 +1,7 @@
1
- import { bm as SceneLight, ap as ObjectBinding, aE as ObjectBindingType, aa as MeasurementUnit, a7 as MeasurementSettings, b5 as SavedMeasurement, a4 as MeasurementPoint, a6 as MeasurementResult, a9 as MeasurementTool, a3 as MeasurementCollection, az as ObjectBindingStyle, aA as ObjectBindingTarget, bt as SceneProductConfig, aT as ProductDefinition, b1 as ProductSelections, aR as ProductConfiguration, b2 as ProductSku, aU as ProductDefinitionWarning, aL as ProductAvailability, a_ as ProductOptionState, a$ as ProductPrice, U as InspectAssetOptions, q as AssetDiagnosticsReport, e as ARSnapshotSource, A as ARExportOptions, d as ARSnapshot, bS as ShareableViewerState, c8 as ViewerStateStorage, bK as SequenceEasing, bA as SceneSequence, bP as SequenceTrack, bQ as SequenceValue, bL as SequenceKeyframe, bv as SceneSectionConfig, by as SceneSectionSettings } from './modelViewerProps-Ch6pIZIE.js';
2
- export { a as ARHandoffOptions, b as ARHandoffRequest, c as ARHandoffStatus, l as AnimationLoopMode, p as AssetDiagnosticIssue, r as AssetDiagnosticsSource, s as AssetTextureDiagnostic, t as AssetTransform, B as BindingEdit, D as ComparisonCategory, E as ComparisonChange, F as ComparisonHighlight, G as ComparisonObject, H as ComparisonStatus, I as ConfigurationComparisonInput, J as ConfigurationComparisonReport, M as DEFAULT_SCENE_CONFIG, N as DEFAULT_SECTION_CONFIG, P as DeepPartial, Q as EnvironmentPreset, R as GlitchModeName, V as IsolatedObjectBindings, X as KernelSizeName, _ as MATERIAL_BLENDING_MODES, $ as MATERIAL_SIDES, a0 as MAX_VIEWER_STATE_BYTES, a2 as MeasurementAnchor, a5 as MeasurementPosition, a8 as MeasurementStatus, ao as ObjectActionEvent, aq as ObjectBindingAction, ar as ObjectBindingCameraState, as as ObjectBindingDecal, at as ObjectBindingMaterial, au as ObjectBindingMaterialBlendingMode, av as ObjectBindingMaterialSide, aw as ObjectBindingPatch, ax as ObjectBindingSelector, ay as ObjectBindingStatus, aB as ObjectBindingTextureChannel, aC as ObjectBindingTextureSlot, aD as ObjectBindingTransform, aG as ObjectPointerEvent, aH as ObjectSurfacePoint, aK as ProductAppearance, aM as ProductCheckoutContext, aN as ProductCheckoutLink, aO as ProductCommerceAdapter, aP as ProductCommerceContext, aQ as ProductCommerceResult, aS as ProductConfigurationIssue, aV as ProductGroupDisplay, aW as ProductOption, aX as ProductOptionGroup, aY as ProductOptionRef, aZ as ProductOptionRule, b0 as ProductPricing, b3 as RampTypeName, b4 as RendererBackend, b6 as SceneAnimationClipConfig, b7 as SceneAnimationConfig, b8 as SceneAnnotationCameraView, b9 as SceneAnnotationImage, ba as SceneAnnotationLink, bb as SceneAnnotationMarker, bc as SceneBackgroundConfig, bd as SceneCameraConfig, be as SceneCinematicConfig, bf as SceneCinematicWaypoint, bh as SceneConfig, bj as SceneConfigPatch, bk as SceneEnvironmentConfig, bl as SceneGroundShadowConfig, bn as SceneLightAttachment, bo as SceneLightType, bp as SceneLightingConfig, bq as SceneModelConfig, br as SceneModelRenderer, bs as ScenePostProcessingConfig, bu as SceneSectionAxis, bz as SceneSelectionSet, bB as SceneShadowConfig, bC as SceneStyleColorScale, bD as SceneStyleCondition, bE as SceneStylePulse, bF as SceneStyleRule, bG as SceneWireframeConfig, bH as SemanticComparisonOptions, bI as SequenceCameraView, bJ as SequenceControls, bM as SequenceObjectProperty, bN as SequencePlaybackState, bO as SequenceTarget, bR as SequenceVector3, bT as StreamingDiagnostics, bU as StyledObjectBindings, bV as StyledObjectPulse, c1 as ViewerConfiguration, c3 as ViewerIsolation, c4 as ViewerObjectInfo, c7 as ViewerRuntimeStats, cb as applyIsolation, cc as applyStyleRules, cd as colorScaleValue, ce as compareViewerConfigurations, cf as groundAsset, cg as isolatedBindingKeys, ch as material, ci as parseAssetTransform, cj as parseSelectionSets, ck as parseViewerState, cl as patchBindings, cm as patchSceneConfig, cn as prepareViewerState, co as selectBindingKeys, cp as selectBindings, cq as serializeViewerState, cr as snapAssetToGrid } from './modelViewerProps-Ch6pIZIE.js';
3
- import { M as MaterialVariantGroup } from './modelFileResolver-ChKYsF21.js';
4
- export { D as DEFAULT_MODEL_VIEWER_LABELS, a as MaterialVariantOption, c as ModelViewerLabelKey, d as ModelViewerLabels, R as ReducedMotionSetting, h as chooseMaterialVariant } from './modelFileResolver-ChKYsF21.js';
1
+ import { aI as SceneLight, N as ObjectBinding, a1 as ObjectBindingType, z as MeasurementUnit, w as MeasurementSettings, as as SavedMeasurement, t as MeasurementPoint, v as MeasurementResult, y as MeasurementTool, s as MeasurementCollection, Y as ObjectBindingStyle, Z as ObjectBindingTarget, aP as SceneProductConfig, p as MaterialVariantGroup, ae as ProductDefinition, ao as ProductSelections, ac as ProductConfiguration, ap as ProductSku, af as ProductDefinitionWarning, a6 as ProductAvailability, al as ProductOptionState, am as ProductPrice, b3 as SequenceEasing, aW as SceneSequence, b8 as SequenceTrack, b9 as SequenceValue, b4 as SequenceKeyframe, aR as SceneSectionConfig, aU as SceneSectionSettings } from './modelFileResolver-CVmON8hg.js';
2
+ export { f as AnimationLoopMode, B as BindingEdit, D as DEFAULT_MODEL_VIEWER_LABELS, k as DEFAULT_SCENE_CONFIG, l as DEFAULT_SECTION_CONFIG, m as DeepPartial, E as EnvironmentPreset, G as GlitchModeName, I as IsolatedObjectBindings, K as KernelSizeName, M as MATERIAL_BLENDING_MODES, o as MATERIAL_SIDES, q as MaterialVariantOption, r as MeasurementAnchor, u as MeasurementPosition, x as MeasurementStatus, H as ModelViewerLabelKey, J as ModelViewerLabels, L as ObjectActionEvent, P as ObjectBindingAction, Q as ObjectBindingCameraState, R as ObjectBindingDecal, S as ObjectBindingMaterial, T as ObjectBindingMaterialBlendingMode, U as ObjectBindingMaterialSide, V as ObjectBindingPatch, W as ObjectBindingSelector, X as ObjectBindingStatus, _ as ObjectBindingTextureChannel, $ as ObjectBindingTextureSlot, a0 as ObjectBindingTransform, a3 as ObjectPointerEvent, a4 as ObjectSurfacePoint, a5 as ProductAppearance, a7 as ProductCheckoutContext, a8 as ProductCheckoutLink, a9 as ProductCommerceAdapter, aa as ProductCommerceContext, ab as ProductCommerceResult, ad as ProductConfigurationIssue, ag as ProductGroupDisplay, ah as ProductOption, ai as ProductOptionGroup, aj as ProductOptionRef, ak as ProductOptionRule, an as ProductPricing, aq as RampTypeName, ar as ReducedMotionSetting, at as SceneAnimationClipConfig, au as SceneAnimationConfig, av as SceneAnnotationCameraView, aw as SceneAnnotationImage, ax as SceneAnnotationLink, ay as SceneAnnotationMarker, az as SceneBackgroundConfig, aA as SceneCameraConfig, aB as SceneCinematicConfig, aC as SceneCinematicWaypoint, aD as SceneConfig, aF as SceneConfigPatch, aG as SceneEnvironmentConfig, aH as SceneGroundShadowConfig, aJ as SceneLightAttachment, aK as SceneLightType, aL as SceneLightingConfig, aM as SceneModelConfig, aN as SceneModelRenderer, aO as ScenePostProcessingConfig, aQ as SceneSectionAxis, aV as SceneSelectionSet, aX as SceneShadowConfig, aY as SceneStyleColorScale, aZ as SceneStyleCondition, a_ as SceneStylePulse, a$ as SceneStyleRule, b0 as SceneWireframeConfig, b1 as SequenceCameraView, b2 as SequenceControls, b5 as SequenceObjectProperty, b6 as SequencePlaybackState, b7 as SequenceTarget, ba as SequenceVector3, bb as StyledObjectBindings, bc as StyledObjectPulse, bg as ViewerIsolation, bm as applyIsolation, bn as applyStyleRules, bo as chooseMaterialVariant, bp as colorScaleValue, bq as isolatedBindingKeys, br as material, bs as parseSelectionSets, bt as patchBindings, bu as patchSceneConfig, bv as selectBindingKeys, bw as selectBindings } from './modelFileResolver-CVmON8hg.js';
3
+ import { I as InspectAssetOptions, h as AssetDiagnosticsReport, e as ARSnapshotSource, A as ARExportOptions, d as ARSnapshot, Z as ShareableViewerState, a9 as ViewerStateStorage } from './modelViewerProps-BBnZTFO-.js';
4
+ export { a as ARHandoffOptions, b as ARHandoffRequest, c as ARHandoffStatus, g as AssetDiagnosticIssue, i as AssetDiagnosticsSource, j as AssetTextureDiagnostic, k as AssetTransform, p as ComparisonCategory, q as ComparisonChange, r as ComparisonHighlight, s as ComparisonObject, t as ComparisonStatus, u as ConfigurationComparisonInput, v as ConfigurationComparisonReport, M as MAX_VIEWER_STATE_BYTES, W as RendererBackend, Y as SemanticComparisonOptions, _ as StreamingDiagnostics, a3 as ViewerConfiguration, a5 as ViewerObjectInfo, a8 as ViewerRuntimeStats, ab as compareViewerConfigurations, ac as groundAsset, ad as parseAssetTransform, ae as parseViewerState, af as prepareViewerState, ag as serializeViewerState, ah as snapAssetToGrid } from './modelViewerProps-BBnZTFO-.js';
5
5
  import { Object3D } from 'three';
6
6
  import 'react';
7
7
  import '@react-three/drei';