@codefluss/plugin-configurator-3d 0.0.2-alpha.1 → 0.0.2-alpha.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.
- package/dist/configurator-store-xTXosVLi.mjs +2 -0
- package/dist/configurator-store-xTXosVLi.mjs.map +1 -0
- package/dist/index.mjs +10 -14
- package/dist/index.mjs.map +1 -1
- package/dist/model-viewer-BgioySt-.mjs +11 -0
- package/dist/model-viewer-BgioySt-.mjs.map +1 -0
- package/package.json +24 -24
- package/dist/components/configurator-3d-component.d.ts +0 -14
- package/dist/components/configurator-3d-component.d.ts.map +0 -1
- package/dist/components/configurator-renderer.d.ts +0 -20
- package/dist/components/configurator-renderer.d.ts.map +0 -1
- package/dist/components/model-viewer.d.ts +0 -3
- package/dist/components/model-viewer.d.ts.map +0 -1
- package/dist/configurator-3d-config.d.ts +0 -13
- package/dist/configurator-3d-config.d.ts.map +0 -1
- package/dist/index.d.ts +0 -16
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -2
- package/dist/index.js.map +0 -1
- package/dist/locales/index.d.ts +0 -329
- package/dist/locales/index.d.ts.map +0 -1
- package/dist/model-viewer-Bh6JoFYA.mjs +0 -24
- package/dist/model-viewer-Bh6JoFYA.mjs.map +0 -1
- package/dist/model-viewer-DQiZ9csY.js +0 -2
- package/dist/model-viewer-DQiZ9csY.js.map +0 -1
- package/dist/renderer.d.ts +0 -7
- package/dist/renderer.d.ts.map +0 -1
- package/dist/store/configurator-store.d.ts +0 -9
- package/dist/store/configurator-store.d.ts.map +0 -1
- package/dist/types/index.d.ts +0 -129
- package/dist/types/index.d.ts.map +0 -1
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{createStore as e}from"zustand/vanilla";import*as t from"three";import{AnimationClip as s,Bone as r,Box3 as n,BufferAttribute as o,BufferGeometry as i,ClampToEdgeWrapping as a,Color as c,ColorManagement as l,DirectionalLight as u,DoubleSide as h,FileLoader as d,FrontSide as p,Group as m,ImageBitmapLoader as f,InstancedBufferAttribute as g,InstancedMesh as T,InterleavedBuffer as R,InterleavedBufferAttribute as _,Interpolant as x,InterpolateDiscrete as v,InterpolateLinear as y,Line as w,LineBasicMaterial as E,LineLoop as A,LineSegments as L,LinearFilter as M,LinearMipmapLinearFilter as b,LinearMipmapNearestFilter as I,LinearSRGBColorSpace as S,Loader as P,LoaderUtils as C,Material as O,MathUtils as N,Matrix4 as k,Mesh as H,MeshBasicMaterial as D,MeshPhysicalMaterial as U,MeshStandardMaterial as F,MirroredRepeatWrapping as G,NearestFilter as K,NearestMipmapLinearFilter as B,NearestMipmapNearestFilter as j,NumberKeyframeTrack as V,Object3D as X,OrthographicCamera as z,PerspectiveCamera as q,PointLight as W,Points as Y,PointsMaterial as J,PropertyBinding as Z,Quaternion as $,QuaternionKeyframeTrack as Q,RepeatWrapping as ee,SRGBColorSpace as te,Skeleton as se,SkinnedMesh as re,Sphere as ne,SpotLight as oe,Texture as ie,TextureLoader as ae,TriangleFanDrawMode as ce,TriangleStripDrawMode as le,TrianglesDrawMode as ue,Vector2 as he,Vector3 as de,VectorKeyframeTrack as pe}from"three";function me(e,t){if(t===ue)return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."),e;if(t===ce||t===le){let s=e.getIndex();if(null===s){const t=[],r=e.getAttribute("position");if(void 0===r)return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),e;for(let e=0;e<r.count;e++)t.push(e);e.setIndex(t),s=e.getIndex()}const r=s.count-2,n=[];if(t===ce)for(let e=1;e<=r;e++)n.push(s.getX(0)),n.push(s.getX(e)),n.push(s.getX(e+1));else for(let e=0;e<r;e++)e%2==0?(n.push(s.getX(e)),n.push(s.getX(e+1)),n.push(s.getX(e+2))):(n.push(s.getX(e+2)),n.push(s.getX(e+1)),n.push(s.getX(e)));n.length/3!==r&&console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");const o=e.clone();return o.setIndex(n),o.clearGroups(),o}return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:",t),e}function fe(e){const t=/* @__PURE__ */new Map,s=/* @__PURE__ */new Map,r=e.clone();return ge(e,r,function(e,r){t.set(r,e),s.set(e,r)}),r.traverse(function(e){if(!e.isSkinnedMesh)return;const r=e,n=t.get(e),o=n.skeleton.bones;r.skeleton=n.skeleton.clone(),r.bindMatrix.copy(n.bindMatrix),r.skeleton.bones=o.map(function(e){return s.get(e)}),r.bind(r.skeleton,r.bindMatrix)}),r}function ge(e,t,s){s(e,t);for(let r=0;r<e.children.length;r++)ge(e.children[r],t.children[r],s)}var Te=class extends P{constructor(e){super(e),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(e){return new Ee(e)}),this.register(function(e){return new Ae(e)}),this.register(function(e){return new Ne(e)}),this.register(function(e){return new ke(e)}),this.register(function(e){return new He(e)}),this.register(function(e){return new Me(e)}),this.register(function(e){return new be(e)}),this.register(function(e){return new Ie(e)}),this.register(function(e){return new Se(e)}),this.register(function(e){return new we(e)}),this.register(function(e){return new Pe(e)}),this.register(function(e){return new Le(e)}),this.register(function(e){return new Oe(e)}),this.register(function(e){return new Ce(e)}),this.register(function(e){return new ve(e)}),this.register(function(e){return new De(e,xe.EXT_MESHOPT_COMPRESSION)}),this.register(function(e){return new De(e,xe.KHR_MESHOPT_COMPRESSION)}),this.register(function(e){return new Ue(e)})}load(e,t,s,r){const n=this;let o;if(""!==this.resourcePath)o=this.resourcePath;else if(""!==this.path){const t=C.extractUrlBase(e);o=C.resolveURL(t,this.path)}else o=C.extractUrlBase(e);this.manager.itemStart(e);const i=function(t){r?r(t):console.error(t),n.manager.itemError(e),n.manager.itemEnd(e)},a=new d(this.manager);a.setPath(this.path),a.setResponseType("arraybuffer"),a.setRequestHeader(this.requestHeader),a.setWithCredentials(this.withCredentials),a.load(e,function(s){try{n.parse(s,o,function(s){t(s),n.manager.itemEnd(e)},i)}catch(r){i(r)}},s,i)}setDRACOLoader(e){return this.dracoLoader=e,this}setKTX2Loader(e){return this.ktx2Loader=e,this}setMeshoptDecoder(e){return this.meshoptDecoder=e,this}register(e){return-1===this.pluginCallbacks.indexOf(e)&&this.pluginCallbacks.push(e),this}unregister(e){return-1!==this.pluginCallbacks.indexOf(e)&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(e),1),this}parse(e,t,s,r){let n;const o={},i={},a=new TextDecoder;if("string"==typeof e)n=JSON.parse(e);else if(e instanceof ArrayBuffer)if(a.decode(new Uint8Array(e,0,4))===Fe){try{o[xe.KHR_BINARY_GLTF]=new Be(e)}catch(l){return void(r&&r(l))}n=JSON.parse(o[xe.KHR_BINARY_GLTF].content)}else n=JSON.parse(a.decode(e));else n=e;if(void 0===n.asset||n.asset.version[0]<2)return void(r&&r(/* @__PURE__ */new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported.")));const c=new mt(n,{path:t||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});c.fileLoader.setRequestHeader(this.requestHeader);for(let u=0;u<this.pluginCallbacks.length;u++){const e=this.pluginCallbacks[u](c);e.name||console.error("THREE.GLTFLoader: Invalid plugin found: missing name"),i[e.name]=e,o[e.name]=!0}if(n.extensionsUsed)for(let u=0;u<n.extensionsUsed.length;++u){const e=n.extensionsUsed[u],t=n.extensionsRequired||[];switch(e){case xe.KHR_MATERIALS_UNLIT:o[e]=new ye;break;case xe.KHR_DRACO_MESH_COMPRESSION:o[e]=new je(n,this.dracoLoader);break;case xe.KHR_TEXTURE_TRANSFORM:o[e]=new Ve;break;case xe.KHR_MESH_QUANTIZATION:o[e]=new Xe;break;default:t.indexOf(e)>=0&&void 0===i[e]&&console.warn('THREE.GLTFLoader: Unknown extension "'+e+'".')}}c.setExtensions(o),c.setPlugins(i),c.parse(s,r)}parseAsync(e,t){const s=this;return new Promise(function(r,n){s.parse(e,t,r,n)})}};function Re(){let e={};return{get:function(t){return e[t]},add:function(t,s){e[t]=s},remove:function(t){delete e[t]},removeAll:function(){e={}}}}function _e(e,t,s){const r=e.json.materials[t];return r.extensions&&r.extensions[s]?r.extensions[s]:null}var xe={KHR_BINARY_GLTF:"KHR_binary_glTF",KHR_DRACO_MESH_COMPRESSION:"KHR_draco_mesh_compression",KHR_LIGHTS_PUNCTUAL:"KHR_lights_punctual",KHR_MATERIALS_CLEARCOAT:"KHR_materials_clearcoat",KHR_MATERIALS_DISPERSION:"KHR_materials_dispersion",KHR_MATERIALS_IOR:"KHR_materials_ior",KHR_MATERIALS_SHEEN:"KHR_materials_sheen",KHR_MATERIALS_SPECULAR:"KHR_materials_specular",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",KHR_MATERIALS_IRIDESCENCE:"KHR_materials_iridescence",KHR_MATERIALS_ANISOTROPY:"KHR_materials_anisotropy",KHR_MATERIALS_UNLIT:"KHR_materials_unlit",KHR_MATERIALS_VOLUME:"KHR_materials_volume",KHR_TEXTURE_BASISU:"KHR_texture_basisu",KHR_TEXTURE_TRANSFORM:"KHR_texture_transform",KHR_MESH_QUANTIZATION:"KHR_mesh_quantization",KHR_MATERIALS_EMISSIVE_STRENGTH:"KHR_materials_emissive_strength",EXT_MATERIALS_BUMP:"EXT_materials_bump",EXT_TEXTURE_WEBP:"EXT_texture_webp",EXT_TEXTURE_AVIF:"EXT_texture_avif",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression",KHR_MESHOPT_COMPRESSION:"KHR_meshopt_compression",EXT_MESH_GPU_INSTANCING:"EXT_mesh_gpu_instancing"},ve=class{constructor(e){this.parser=e,this.name=xe.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){const e=this.parser,t=this.parser.json.nodes||[];for(let s=0,r=t.length;s<r;s++){const r=t[s];r.extensions&&r.extensions[this.name]&&void 0!==r.extensions[this.name].light&&e._addNodeRef(this.cache,r.extensions[this.name].light)}}_loadLight(e){const t=this.parser,s="light:"+e;let r=t.cache.get(s);if(r)return r;const n=t.json,o=((n.extensions&&n.extensions[this.name]||{}).lights||[])[e];let i;const a=new c(16777215);void 0!==o.color&&a.setRGB(o.color[0],o.color[1],o.color[2],S);const l=void 0!==o.range?o.range:0;switch(o.type){case"directional":i=new u(a),i.target.position.set(0,0,-1),i.add(i.target);break;case"point":i=new W(a),i.distance=l;break;case"spot":i=new oe(a),i.distance=l,o.spot=o.spot||{},o.spot.innerConeAngle=void 0!==o.spot.innerConeAngle?o.spot.innerConeAngle:0,o.spot.outerConeAngle=void 0!==o.spot.outerConeAngle?o.spot.outerConeAngle:Math.PI/4,i.angle=o.spot.outerConeAngle,i.penumbra=1-o.spot.innerConeAngle/o.spot.outerConeAngle,i.target.position.set(0,0,-1),i.add(i.target);break;default:throw new Error("THREE.GLTFLoader: Unexpected light type: "+o.type)}return i.position.set(0,0,0),ct(i,o),void 0!==o.intensity&&(i.intensity=o.intensity),i.name=t.createUniqueName(o.name||"light_"+e),r=Promise.resolve(i),t.cache.add(s,r),r}getDependency(e,t){if("light"===e)return this._loadLight(t)}createNodeAttachment(e){const t=this,s=this.parser,r=s.json.nodes[e],n=(r.extensions&&r.extensions[this.name]||{}).light;return void 0===n?null:this._loadLight(n).then(function(e){return s._getNodeRef(t.cache,n,e)})}},ye=class{constructor(){this.name=xe.KHR_MATERIALS_UNLIT}getMaterialType(){return D}extendParams(e,t,s){const r=[];e.color=new c(1,1,1),e.opacity=1;const n=t.pbrMetallicRoughness;if(n){if(Array.isArray(n.baseColorFactor)){const t=n.baseColorFactor;e.color.setRGB(t[0],t[1],t[2],S),e.opacity=t[3]}void 0!==n.baseColorTexture&&r.push(s.assignTexture(e,"map",n.baseColorTexture,te))}return Promise.all(r)}},we=class{constructor(e){this.parser=e,this.name=xe.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(e,t){const s=_e(this.parser,e,this.name);return null===s||void 0!==s.emissiveStrength&&(t.emissiveIntensity=s.emissiveStrength),Promise.resolve()}},Ee=class{constructor(e){this.parser=e,this.name=xe.KHR_MATERIALS_CLEARCOAT}getMaterialType(e){return null!==_e(this.parser,e,this.name)?U:null}extendMaterialParams(e,t){const s=_e(this.parser,e,this.name);if(null===s)return Promise.resolve();const r=[];if(void 0!==s.clearcoatFactor&&(t.clearcoat=s.clearcoatFactor),void 0!==s.clearcoatTexture&&r.push(this.parser.assignTexture(t,"clearcoatMap",s.clearcoatTexture)),void 0!==s.clearcoatRoughnessFactor&&(t.clearcoatRoughness=s.clearcoatRoughnessFactor),void 0!==s.clearcoatRoughnessTexture&&r.push(this.parser.assignTexture(t,"clearcoatRoughnessMap",s.clearcoatRoughnessTexture)),void 0!==s.clearcoatNormalTexture&&(r.push(this.parser.assignTexture(t,"clearcoatNormalMap",s.clearcoatNormalTexture)),void 0!==s.clearcoatNormalTexture.scale)){const e=s.clearcoatNormalTexture.scale;t.clearcoatNormalScale=new he(e,e)}return Promise.all(r)}},Ae=class{constructor(e){this.parser=e,this.name=xe.KHR_MATERIALS_DISPERSION}getMaterialType(e){return null!==_e(this.parser,e,this.name)?U:null}extendMaterialParams(e,t){const s=_e(this.parser,e,this.name);return null===s||(t.dispersion=void 0!==s.dispersion?s.dispersion:0),Promise.resolve()}},Le=class{constructor(e){this.parser=e,this.name=xe.KHR_MATERIALS_IRIDESCENCE}getMaterialType(e){return null!==_e(this.parser,e,this.name)?U:null}extendMaterialParams(e,t){const s=_e(this.parser,e,this.name);if(null===s)return Promise.resolve();const r=[];return void 0!==s.iridescenceFactor&&(t.iridescence=s.iridescenceFactor),void 0!==s.iridescenceTexture&&r.push(this.parser.assignTexture(t,"iridescenceMap",s.iridescenceTexture)),void 0!==s.iridescenceIor&&(t.iridescenceIOR=s.iridescenceIor),void 0===t.iridescenceThicknessRange&&(t.iridescenceThicknessRange=[100,400]),void 0!==s.iridescenceThicknessMinimum&&(t.iridescenceThicknessRange[0]=s.iridescenceThicknessMinimum),void 0!==s.iridescenceThicknessMaximum&&(t.iridescenceThicknessRange[1]=s.iridescenceThicknessMaximum),void 0!==s.iridescenceThicknessTexture&&r.push(this.parser.assignTexture(t,"iridescenceThicknessMap",s.iridescenceThicknessTexture)),Promise.all(r)}},Me=class{constructor(e){this.parser=e,this.name=xe.KHR_MATERIALS_SHEEN}getMaterialType(e){return null!==_e(this.parser,e,this.name)?U:null}extendMaterialParams(e,t){const s=_e(this.parser,e,this.name);if(null===s)return Promise.resolve();const r=[];if(t.sheenColor=new c(0,0,0),t.sheenRoughness=0,t.sheen=1,void 0!==s.sheenColorFactor){const e=s.sheenColorFactor;t.sheenColor.setRGB(e[0],e[1],e[2],S)}return void 0!==s.sheenRoughnessFactor&&(t.sheenRoughness=s.sheenRoughnessFactor),void 0!==s.sheenColorTexture&&r.push(this.parser.assignTexture(t,"sheenColorMap",s.sheenColorTexture,te)),void 0!==s.sheenRoughnessTexture&&r.push(this.parser.assignTexture(t,"sheenRoughnessMap",s.sheenRoughnessTexture)),Promise.all(r)}},be=class{constructor(e){this.parser=e,this.name=xe.KHR_MATERIALS_TRANSMISSION}getMaterialType(e){return null!==_e(this.parser,e,this.name)?U:null}extendMaterialParams(e,t){const s=_e(this.parser,e,this.name);if(null===s)return Promise.resolve();const r=[];return void 0!==s.transmissionFactor&&(t.transmission=s.transmissionFactor),void 0!==s.transmissionTexture&&r.push(this.parser.assignTexture(t,"transmissionMap",s.transmissionTexture)),Promise.all(r)}},Ie=class{constructor(e){this.parser=e,this.name=xe.KHR_MATERIALS_VOLUME}getMaterialType(e){return null!==_e(this.parser,e,this.name)?U:null}extendMaterialParams(e,t){const s=_e(this.parser,e,this.name);if(null===s)return Promise.resolve();const r=[];t.thickness=void 0!==s.thicknessFactor?s.thicknessFactor:0,void 0!==s.thicknessTexture&&r.push(this.parser.assignTexture(t,"thicknessMap",s.thicknessTexture)),t.attenuationDistance=s.attenuationDistance||1/0;const n=s.attenuationColor||[1,1,1];return t.attenuationColor=(new c).setRGB(n[0],n[1],n[2],S),Promise.all(r)}},Se=class{constructor(e){this.parser=e,this.name=xe.KHR_MATERIALS_IOR}getMaterialType(e){return null!==_e(this.parser,e,this.name)?U:null}extendMaterialParams(e,t){const s=_e(this.parser,e,this.name);return null===s||(t.ior=void 0!==s.ior?s.ior:1.5),Promise.resolve()}},Pe=class{constructor(e){this.parser=e,this.name=xe.KHR_MATERIALS_SPECULAR}getMaterialType(e){return null!==_e(this.parser,e,this.name)?U:null}extendMaterialParams(e,t){const s=_e(this.parser,e,this.name);if(null===s)return Promise.resolve();const r=[];t.specularIntensity=void 0!==s.specularFactor?s.specularFactor:1,void 0!==s.specularTexture&&r.push(this.parser.assignTexture(t,"specularIntensityMap",s.specularTexture));const n=s.specularColorFactor||[1,1,1];return t.specularColor=(new c).setRGB(n[0],n[1],n[2],S),void 0!==s.specularColorTexture&&r.push(this.parser.assignTexture(t,"specularColorMap",s.specularColorTexture,te)),Promise.all(r)}},Ce=class{constructor(e){this.parser=e,this.name=xe.EXT_MATERIALS_BUMP}getMaterialType(e){return null!==_e(this.parser,e,this.name)?U:null}extendMaterialParams(e,t){const s=_e(this.parser,e,this.name);if(null===s)return Promise.resolve();const r=[];return t.bumpScale=void 0!==s.bumpFactor?s.bumpFactor:1,void 0!==s.bumpTexture&&r.push(this.parser.assignTexture(t,"bumpMap",s.bumpTexture)),Promise.all(r)}},Oe=class{constructor(e){this.parser=e,this.name=xe.KHR_MATERIALS_ANISOTROPY}getMaterialType(e){return null!==_e(this.parser,e,this.name)?U:null}extendMaterialParams(e,t){const s=_e(this.parser,e,this.name);if(null===s)return Promise.resolve();const r=[];return void 0!==s.anisotropyStrength&&(t.anisotropy=s.anisotropyStrength),void 0!==s.anisotropyRotation&&(t.anisotropyRotation=s.anisotropyRotation),void 0!==s.anisotropyTexture&&r.push(this.parser.assignTexture(t,"anisotropyMap",s.anisotropyTexture)),Promise.all(r)}},Ne=class{constructor(e){this.parser=e,this.name=xe.KHR_TEXTURE_BASISU}loadTexture(e){const t=this.parser,s=t.json,r=s.textures[e];if(!r.extensions||!r.extensions[this.name])return null;const n=r.extensions[this.name],o=t.options.ktx2Loader;if(!o){if(s.extensionsRequired&&s.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return null}return t.loadTextureImage(e,n.source,o)}},ke=class{constructor(e){this.parser=e,this.name=xe.EXT_TEXTURE_WEBP}loadTexture(e){const t=this.name,s=this.parser,r=s.json,n=r.textures[e];if(!n.extensions||!n.extensions[t])return null;const o=n.extensions[t],i=r.images[o.source];let a=s.textureLoader;if(i.uri){const e=s.options.manager.getHandler(i.uri);null!==e&&(a=e)}return s.loadTextureImage(e,o.source,a)}},He=class{constructor(e){this.parser=e,this.name=xe.EXT_TEXTURE_AVIF}loadTexture(e){const t=this.name,s=this.parser,r=s.json,n=r.textures[e];if(!n.extensions||!n.extensions[t])return null;const o=n.extensions[t],i=r.images[o.source];let a=s.textureLoader;if(i.uri){const e=s.options.manager.getHandler(i.uri);null!==e&&(a=e)}return s.loadTextureImage(e,o.source,a)}},De=class{constructor(e,t){this.name=t,this.parser=e}loadBufferView(e){const t=this.parser.json,s=t.bufferViews[e];if(s.extensions&&s.extensions[this.name]){const e=s.extensions[this.name],r=this.parser.getDependency("buffer",e.buffer),n=this.parser.options.meshoptDecoder;if(!n||!n.supported){if(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return null}return r.then(function(t){const s=e.byteOffset||0,r=e.byteLength||0,o=e.count,i=e.byteStride,a=new Uint8Array(t,s,r);return n.decodeGltfBufferAsync?n.decodeGltfBufferAsync(o,i,a,e.mode,e.filter).then(function(e){return e.buffer}):n.ready.then(function(){const t=new ArrayBuffer(o*i);return n.decodeGltfBuffer(new Uint8Array(t),o,i,a,e.mode,e.filter),t})})}return null}},Ue=class{constructor(e){this.name=xe.EXT_MESH_GPU_INSTANCING,this.parser=e}createNodeMesh(e){const t=this.parser.json,s=t.nodes[e];if(!s.extensions||!s.extensions[this.name]||void 0===s.mesh)return null;const r=t.meshes[s.mesh];for(const a of r.primitives)if(a.mode!==Ye.TRIANGLES&&a.mode!==Ye.TRIANGLE_STRIP&&a.mode!==Ye.TRIANGLE_FAN&&void 0!==a.mode)return null;const n=s.extensions[this.name].attributes,o=[],i={};for(const a in n)o.push(this.parser.getDependency("accessor",n[a]).then(e=>(i[a]=e,i[a])));return o.length<1?null:(o.push(this.parser.createNodeMesh(e)),Promise.all(o).then(e=>{const t=e.pop(),s=t.isGroup?t.children:[t],r=e[0].count,n=[];for(const o of s){const e=new k,t=new de,s=new $,a=new de(1,1,1),c=new T(o.geometry,o.material,r);for(let n=0;n<r;n++)i.TRANSLATION&&t.fromBufferAttribute(i.TRANSLATION,n),i.ROTATION&&s.fromBufferAttribute(i.ROTATION,n),i.SCALE&&a.fromBufferAttribute(i.SCALE,n),c.setMatrixAt(n,e.compose(t,s,a));for(const r in i)if("_COLOR_0"===r){const e=i[r];c.instanceColor=new g(e.array,e.itemSize,e.normalized)}else"TRANSLATION"!==r&&"ROTATION"!==r&&"SCALE"!==r&&o.geometry.setAttribute(r,i[r]);X.prototype.copy.call(c,o),this.parser.assignFinalMaterial(c),n.push(c)}return t.isGroup?(t.clear(),t.add(...n),t):n[0]}))}},Fe="glTF",Ge=1313821514,Ke=5130562,Be=class{constructor(e){this.name=xe.KHR_BINARY_GLTF,this.content=null,this.body=null;const t=new DataView(e,0,12),s=new TextDecoder;if(this.header={magic:s.decode(new Uint8Array(e.slice(0,4))),version:t.getUint32(4,!0),length:t.getUint32(8,!0)},this.header.magic!==Fe)throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw new Error("THREE.GLTFLoader: Legacy binary file detected.");const r=this.header.length-12,n=new DataView(e,12);let o=0;for(;o<r;){const t=n.getUint32(o,!0);o+=4;const r=n.getUint32(o,!0);if(o+=4,r===Ge){const r=new Uint8Array(e,12+o,t);this.content=s.decode(r)}else if(r===Ke){const s=12+o;this.body=e.slice(s,s+t)}o+=t}if(null===this.content)throw new Error("THREE.GLTFLoader: JSON content not found.")}},je=class{constructor(e,t){if(!t)throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=xe.KHR_DRACO_MESH_COMPRESSION,this.json=e,this.dracoLoader=t,this.dracoLoader.preload()}decodePrimitive(e,t){const s=this.json,r=this.dracoLoader,n=e.extensions[this.name].bufferView,o=e.extensions[this.name].attributes,i={},a={},c={};for(const l in o){const e=et[l]||l.toLowerCase();i[e]=o[l]}for(const l in e.attributes){const t=et[l]||l.toLowerCase();if(void 0!==o[l]){const r=s.accessors[e.attributes[l]];c[t]=Je[r.componentType].name,a[t]=!0===r.normalized}}return t.getDependency("bufferView",n).then(function(e){return new Promise(function(t,s){r.decodeDracoFile(e,function(e){for(const t in e.attributes){const s=e.attributes[t],r=a[t];void 0!==r&&(s.normalized=r)}t(e)},i,c,S,s)})})}},Ve=class{constructor(){this.name=xe.KHR_TEXTURE_TRANSFORM}extendTexture(e,t){return void 0!==t.texCoord&&t.texCoord!==e.channel||void 0!==t.offset||void 0!==t.rotation||void 0!==t.scale?(e=e.clone(),void 0!==t.texCoord&&(e.channel=t.texCoord),void 0!==t.offset&&e.offset.fromArray(t.offset),void 0!==t.rotation&&(e.rotation=t.rotation),void 0!==t.scale&&e.repeat.fromArray(t.scale),e.needsUpdate=!0,e):e}},Xe=class{constructor(){this.name=xe.KHR_MESH_QUANTIZATION}},ze=class extends x{constructor(e,t,s,r){super(e,t,s,r)}copySampleValue_(e){const t=this.resultBuffer,s=this.sampleValues,r=this.valueSize,n=e*r*3+r;for(let o=0;o!==r;o++)t[o]=s[n+o];return t}interpolate_(e,t,s,r){const n=this.resultBuffer,o=this.sampleValues,i=this.valueSize,a=2*i,c=3*i,l=r-t,u=(s-t)/l,h=u*u,d=h*u,p=e*c,m=p-c,f=-2*d+3*h,g=d-h,T=1-f,R=g-h+u;for(let _=0;_!==i;_++){const e=o[m+_+i],t=o[m+_+a]*l,s=o[p+_+i],r=o[p+_]*l;n[_]=T*e+R*t+f*s+g*r}return n}},qe=new $,We=class extends ze{interpolate_(e,t,s,r){const n=super.interpolate_(e,t,s,r);return qe.fromArray(n).normalize().toArray(n),n}},Ye={FLOAT:5126,FLOAT_MAT3:35675,FLOAT_MAT4:35676,FLOAT_VEC2:35664,FLOAT_VEC3:35665,FLOAT_VEC4:35666,LINEAR:9729,REPEAT:10497,SAMPLER_2D:35678,POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123},Je={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},Ze={9728:K,9729:M,9984:j,9985:I,9986:B,9987:b},$e={33071:a,33648:G,10497:ee},Qe={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},et={POSITION:"position",NORMAL:"normal",TANGENT:"tangent",TEXCOORD_0:"uv",TEXCOORD_1:"uv1",TEXCOORD_2:"uv2",TEXCOORD_3:"uv3",COLOR_0:"color",WEIGHTS_0:"skinWeight",JOINTS_0:"skinIndex"},tt={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},st={CUBICSPLINE:void 0,LINEAR:y,STEP:v},rt="OPAQUE",nt="MASK",ot="BLEND";function it(e){return void 0===e.DefaultMaterial&&(e.DefaultMaterial=new F({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:p})),e.DefaultMaterial}function at(e,t,s){for(const r in s.extensions)void 0===e[r]&&(t.userData.gltfExtensions=t.userData.gltfExtensions||{},t.userData.gltfExtensions[r]=s.extensions[r])}function ct(e,t){void 0!==t.extras&&("object"==typeof t.extras?Object.assign(e.userData,t.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+t.extras))}function lt(e,t){if(e.updateMorphTargets(),void 0!==t.weights)for(let s=0,r=t.weights.length;s<r;s++)e.morphTargetInfluences[s]=t.weights[s];if(t.extras&&Array.isArray(t.extras.targetNames)){const s=t.extras.targetNames;if(e.morphTargetInfluences.length===s.length){e.morphTargetDictionary={};for(let t=0,r=s.length;t<r;t++)e.morphTargetDictionary[s[t]]=t}else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.")}}function ut(e){let t;const s=e.extensions&&e.extensions[xe.KHR_DRACO_MESH_COMPRESSION];if(t=s?"draco:"+s.bufferView+":"+s.indices+":"+ht(s.attributes):e.indices+":"+ht(e.attributes)+":"+e.mode,void 0!==e.targets)for(let r=0,n=e.targets.length;r<n;r++)t+=":"+ht(e.targets[r]);return t}function ht(e){let t="";const s=Object.keys(e).sort();for(let r=0,n=s.length;r<n;r++)t+=s[r]+":"+e[s[r]]+";";return t}function dt(e){switch(e){case Int8Array:return 1/127;case Uint8Array:return 1/255;case Int16Array:return 1/32767;case Uint16Array:return 1/65535;default:throw new Error("THREE.GLTFLoader: Unsupported normalized accessor component type.")}}var pt=new k,mt=class{constructor(e={},t={}){this.json=e,this.extensions={},this.plugins={},this.options=t,this.cache=new Re,this.associations=/* @__PURE__ */new Map,this.primitiveCache={},this.nodeCache={},this.meshCache={refs:{},uses:{}},this.cameraCache={refs:{},uses:{}},this.lightCache={refs:{},uses:{}},this.sourceCache={},this.textureCache={},this.nodeNamesUsed={};let s=!1,r=-1,n=!1,o=-1;if("undefined"!=typeof navigator&&void 0!==navigator.userAgent){const e=navigator.userAgent;s=!0===/^((?!chrome|android).)*safari/i.test(e);const t=e.match(/Version\/(\d+)/);r=s&&t?parseInt(t[1],10):-1,n=e.indexOf("Firefox")>-1,o=n?e.match(/Firefox\/([0-9]+)\./)[1]:-1}"undefined"==typeof createImageBitmap||s&&r<17||n&&o<98?this.textureLoader=new ae(this.options.manager):this.textureLoader=new f(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new d(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),"use-credentials"===this.options.crossOrigin&&this.fileLoader.setWithCredentials(!0)}setExtensions(e){this.extensions=e}setPlugins(e){this.plugins=e}parse(e,t){const s=this,r=this.json,n=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll(function(e){return e._markDefs&&e._markDefs()}),Promise.all(this._invokeAll(function(e){return e.beforeRoot&&e.beforeRoot()})).then(function(){return Promise.all([s.getDependencies("scene"),s.getDependencies("animation"),s.getDependencies("camera")])}).then(function(t){const o={scene:t[0][r.scene||0],scenes:t[0],animations:t[1],cameras:t[2],asset:r.asset,parser:s,userData:{}};return at(n,o,r),ct(o,r),Promise.all(s._invokeAll(function(e){return e.afterRoot&&e.afterRoot(o)})).then(function(){for(const e of o.scenes)e.updateMatrixWorld();e(o)})}).catch(t)}_markDefs(){const e=this.json.nodes||[],t=this.json.skins||[],s=this.json.meshes||[];for(let r=0,n=t.length;r<n;r++){const s=t[r].joints;for(let t=0,r=s.length;t<r;t++)e[s[t]].isBone=!0}for(let r=0,n=e.length;r<n;r++){const t=e[r];void 0!==t.mesh&&(this._addNodeRef(this.meshCache,t.mesh),void 0!==t.skin&&(s[t.mesh].isSkinnedMesh=!0)),void 0!==t.camera&&this._addNodeRef(this.cameraCache,t.camera)}}_addNodeRef(e,t){void 0!==t&&(void 0===e.refs[t]&&(e.refs[t]=e.uses[t]=0),e.refs[t]++)}_getNodeRef(e,t,s){if(e.refs[t]<=1)return s;const r=s.clone(),n=(e,t)=>{const s=this.associations.get(e);null!=s&&this.associations.set(t,s);for(const[r,o]of e.children.entries())n(o,t.children[r])};return n(s,r),r.name+="_instance_"+e.uses[t]++,r}_invokeOne(e){const t=Object.values(this.plugins);t.push(this);for(let s=0;s<t.length;s++){const r=e(t[s]);if(r)return r}return null}_invokeAll(e){const t=Object.values(this.plugins);t.unshift(this);const s=[];for(let r=0;r<t.length;r++){const n=e(t[r]);n&&s.push(n)}return s}getDependency(e,t){const s=e+":"+t;let r=this.cache.get(s);if(!r){switch(e){case"scene":r=this.loadScene(t);break;case"node":r=this._invokeOne(function(e){return e.loadNode&&e.loadNode(t)});break;case"mesh":r=this._invokeOne(function(e){return e.loadMesh&&e.loadMesh(t)});break;case"accessor":r=this.loadAccessor(t);break;case"bufferView":r=this._invokeOne(function(e){return e.loadBufferView&&e.loadBufferView(t)});break;case"buffer":r=this.loadBuffer(t);break;case"material":r=this._invokeOne(function(e){return e.loadMaterial&&e.loadMaterial(t)});break;case"texture":r=this._invokeOne(function(e){return e.loadTexture&&e.loadTexture(t)});break;case"skin":r=this.loadSkin(t);break;case"animation":r=this._invokeOne(function(e){return e.loadAnimation&&e.loadAnimation(t)});break;case"camera":r=this.loadCamera(t);break;default:if(r=this._invokeOne(function(s){return s!=this&&s.getDependency&&s.getDependency(e,t)}),!r)throw new Error("Unknown type: "+e)}this.cache.add(s,r)}return r}getDependencies(e){let t=this.cache.get(e);if(!t){const s=this,r=this.json[e+("mesh"===e?"es":"s")]||[];t=Promise.all(r.map(function(t,r){return s.getDependency(e,r)})),this.cache.add(e,t)}return t}loadBuffer(e){const t=this.json.buffers[e],s=this.fileLoader;if(t.type&&"arraybuffer"!==t.type)throw new Error("THREE.GLTFLoader: "+t.type+" buffer type is not supported.");if(void 0===t.uri&&0===e)return Promise.resolve(this.extensions[xe.KHR_BINARY_GLTF].body);const r=this.options;return new Promise(function(e,n){s.load(C.resolveURL(t.uri,r.path),e,void 0,function(){n(/* @__PURE__ */new Error('THREE.GLTFLoader: Failed to load buffer "'+t.uri+'".'))})})}loadBufferView(e){const t=this.json.bufferViews[e];return this.getDependency("buffer",t.buffer).then(function(e){const s=t.byteLength||0,r=t.byteOffset||0;return e.slice(r,r+s)})}loadAccessor(e){const t=this,s=this.json,r=this.json.accessors[e];if(void 0===r.bufferView&&void 0===r.sparse){const e=Qe[r.type],t=Je[r.componentType],s=!0===r.normalized,n=new t(r.count*e);return Promise.resolve(new o(n,e,s))}const n=[];return void 0!==r.bufferView?n.push(this.getDependency("bufferView",r.bufferView)):n.push(null),void 0!==r.sparse&&(n.push(this.getDependency("bufferView",r.sparse.indices.bufferView)),n.push(this.getDependency("bufferView",r.sparse.values.bufferView))),Promise.all(n).then(function(e){const n=e[0],i=Qe[r.type],a=Je[r.componentType],c=a.BYTES_PER_ELEMENT,l=c*i,u=r.byteOffset||0,h=void 0!==r.bufferView?s.bufferViews[r.bufferView].byteStride:void 0,d=!0===r.normalized;let p,m;if(h&&h!==l){const e=Math.floor(u/h),s="InterleavedBuffer:"+r.bufferView+":"+r.componentType+":"+e+":"+r.count;let o=t.cache.get(s);o||(p=new a(n,e*h,r.count*h/c),o=new R(p,h/c),t.cache.add(s,o)),m=new _(o,i,u%h/c,d)}else p=null===n?new a(r.count*i):new a(n,u,r.count*i),m=new o(p,i,d);if(void 0!==r.sparse){const t=Qe.SCALAR,s=Je[r.sparse.indices.componentType],c=r.sparse.indices.byteOffset||0,l=r.sparse.values.byteOffset||0,u=new s(e[1],c,r.sparse.count*t),h=new a(e[2],l,r.sparse.count*i);null!==n&&(m=new o(m.array.slice(),m.itemSize,m.normalized)),m.normalized=!1;for(let e=0,r=u.length;e<r;e++){const t=u[e];if(m.setX(t,h[e*i]),i>=2&&m.setY(t,h[e*i+1]),i>=3&&m.setZ(t,h[e*i+2]),i>=4&&m.setW(t,h[e*i+3]),i>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}m.normalized=d}return m})}loadTexture(e){const t=this.json,s=this.options,r=t.textures[e].source,n=t.images[r];let o=this.textureLoader;if(n.uri){const e=s.manager.getHandler(n.uri);null!==e&&(o=e)}return this.loadTextureImage(e,r,o)}loadTextureImage(e,t,s){const r=this,n=this.json,o=n.textures[e],i=n.images[t],a=(i.uri||i.bufferView)+":"+o.sampler;if(this.textureCache[a])return this.textureCache[a];const c=this.loadImageSource(t,s).then(function(t){t.flipY=!1,t.name=o.name||i.name||"",""===t.name&&"string"==typeof i.uri&&!1===i.uri.startsWith("data:image/")&&(t.name=i.uri);const s=(n.samplers||{})[o.sampler]||{};return t.magFilter=Ze[s.magFilter]||M,t.minFilter=Ze[s.minFilter]||b,t.wrapS=$e[s.wrapS]||ee,t.wrapT=$e[s.wrapT]||ee,t.generateMipmaps=!t.isCompressedTexture&&t.minFilter!==K&&t.minFilter!==M,r.associations.set(t,{textures:e}),t}).catch(function(){return null});return this.textureCache[a]=c,c}loadImageSource(e,t){const s=this.json,r=this.options;if(void 0!==this.sourceCache[e])return this.sourceCache[e].then(e=>e.clone());const n=s.images[e],o=self.URL||self.webkitURL;let i=n.uri||"",a=!1;if(void 0!==n.bufferView)i=this.getDependency("bufferView",n.bufferView).then(function(e){a=!0;const t=new Blob([e],{type:n.mimeType});return i=o.createObjectURL(t),i});else if(void 0===n.uri)throw new Error("THREE.GLTFLoader: Image "+e+" is missing URI and bufferView");const c=Promise.resolve(i).then(function(e){return new Promise(function(s,n){let o=s;!0===t.isImageBitmapLoader&&(o=function(e){const t=new ie(e);t.needsUpdate=!0,s(t)}),t.load(C.resolveURL(e,r.path),o,void 0,n)})}).then(function(e){var t;return!0===a&&o.revokeObjectURL(i),ct(e,n),e.userData.mimeType=n.mimeType||((t=n.uri).search(/\.jpe?g($|\?)/i)>0||0===t.search(/^data\:image\/jpeg/)?"image/jpeg":t.search(/\.webp($|\?)/i)>0||0===t.search(/^data\:image\/webp/)?"image/webp":t.search(/\.ktx2($|\?)/i)>0||0===t.search(/^data\:image\/ktx2/)?"image/ktx2":"image/png"),e}).catch(function(e){throw console.error("THREE.GLTFLoader: Couldn't load texture",i),e});return this.sourceCache[e]=c,c}assignTexture(e,t,s,r){const n=this;return this.getDependency("texture",s.index).then(function(o){if(!o)return null;if(void 0!==s.texCoord&&s.texCoord>0&&((o=o.clone()).channel=s.texCoord),n.extensions[xe.KHR_TEXTURE_TRANSFORM]){const e=void 0!==s.extensions?s.extensions[xe.KHR_TEXTURE_TRANSFORM]:void 0;if(e){const t=n.associations.get(o);o=n.extensions[xe.KHR_TEXTURE_TRANSFORM].extendTexture(o,e),n.associations.set(o,t)}}return void 0!==r&&(o.colorSpace=r),e[t]=o,o})}assignFinalMaterial(e){const t=e.geometry;let s=e.material;const r=void 0===t.attributes.tangent,n=void 0!==t.attributes.color,o=void 0===t.attributes.normal;if(e.isPoints){const e="PointsMaterial:"+s.uuid;let t=this.cache.get(e);t||(t=new J,O.prototype.copy.call(t,s),t.color.copy(s.color),t.map=s.map,t.sizeAttenuation=!1,this.cache.add(e,t)),s=t}else if(e.isLine){const e="LineBasicMaterial:"+s.uuid;let t=this.cache.get(e);t||(t=new E,O.prototype.copy.call(t,s),t.color.copy(s.color),t.map=s.map,this.cache.add(e,t)),s=t}if(r||n||o){let e="ClonedMaterial:"+s.uuid+":";r&&(e+="derivative-tangents:"),n&&(e+="vertex-colors:"),o&&(e+="flat-shading:");let t=this.cache.get(e);t||(t=s.clone(),n&&(t.vertexColors=!0),o&&(t.flatShading=!0),r&&(t.normalScale&&(t.normalScale.y*=-1),t.clearcoatNormalScale&&(t.clearcoatNormalScale.y*=-1)),this.cache.add(e,t),this.associations.set(t,this.associations.get(s))),s=t}e.material=s}getMaterialType(){return F}loadMaterial(e){const t=this,s=this.json,r=this.extensions,n=s.materials[e];let o;const i={},a=[];if((n.extensions||{})[xe.KHR_MATERIALS_UNLIT]){const e=r[xe.KHR_MATERIALS_UNLIT];o=e.getMaterialType(),a.push(e.extendParams(i,n,t))}else{const s=n.pbrMetallicRoughness||{};if(i.color=new c(1,1,1),i.opacity=1,Array.isArray(s.baseColorFactor)){const e=s.baseColorFactor;i.color.setRGB(e[0],e[1],e[2],S),i.opacity=e[3]}void 0!==s.baseColorTexture&&a.push(t.assignTexture(i,"map",s.baseColorTexture,te)),i.metalness=void 0!==s.metallicFactor?s.metallicFactor:1,i.roughness=void 0!==s.roughnessFactor?s.roughnessFactor:1,void 0!==s.metallicRoughnessTexture&&(a.push(t.assignTexture(i,"metalnessMap",s.metallicRoughnessTexture)),a.push(t.assignTexture(i,"roughnessMap",s.metallicRoughnessTexture))),o=this._invokeOne(function(t){return t.getMaterialType&&t.getMaterialType(e)}),a.push(Promise.all(this._invokeAll(function(t){return t.extendMaterialParams&&t.extendMaterialParams(e,i)})))}!0===n.doubleSided&&(i.side=h);const l=n.alphaMode||rt;if(l===ot?(i.transparent=!0,i.depthWrite=!1):(i.transparent=!1,l===nt&&(i.alphaTest=void 0!==n.alphaCutoff?n.alphaCutoff:.5)),void 0!==n.normalTexture&&o!==D&&(a.push(t.assignTexture(i,"normalMap",n.normalTexture)),i.normalScale=new he(1,1),void 0!==n.normalTexture.scale)){const e=n.normalTexture.scale;i.normalScale.set(e,e)}if(void 0!==n.occlusionTexture&&o!==D&&(a.push(t.assignTexture(i,"aoMap",n.occlusionTexture)),void 0!==n.occlusionTexture.strength&&(i.aoMapIntensity=n.occlusionTexture.strength)),void 0!==n.emissiveFactor&&o!==D){const e=n.emissiveFactor;i.emissive=(new c).setRGB(e[0],e[1],e[2],S)}return void 0!==n.emissiveTexture&&o!==D&&a.push(t.assignTexture(i,"emissiveMap",n.emissiveTexture,te)),Promise.all(a).then(function(){const s=new o(i);return n.name&&(s.name=n.name),ct(s,n),t.associations.set(s,{materials:e}),n.extensions&&at(r,s,n),s})}createUniqueName(e){const t=Z.sanitizeNodeName(e||"");return t in this.nodeNamesUsed?t+"_"+ ++this.nodeNamesUsed[t]:(this.nodeNamesUsed[t]=0,t)}loadGeometries(e){const t=this,s=this.extensions,r=this.primitiveCache;function n(e){return s[xe.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(e,t).then(function(s){return ft(s,e,t)})}const o=[];for(let a=0,c=e.length;a<c;a++){const s=e[a],c=ut(s),l=r[c];if(l)o.push(l.promise);else{let e;e=s.extensions&&s.extensions[xe.KHR_DRACO_MESH_COMPRESSION]?n(s):ft(new i,s,t),r[c]={primitive:s,promise:e},o.push(e)}}return Promise.all(o)}loadMesh(e){const t=this,s=this.json,r=this.extensions,n=s.meshes[e],o=n.primitives,i=[];for(let a=0,c=o.length;a<c;a++){const e=void 0===o[a].material?it(this.cache):this.getDependency("material",o[a].material);i.push(e)}return i.push(t.loadGeometries(o)),Promise.all(i).then(function(s){const i=s.slice(0,s.length-1),a=s[s.length-1],c=[];for(let u=0,h=a.length;u<h;u++){const s=a[u],l=o[u];let h;const d=i[u];if(l.mode===Ye.TRIANGLES||l.mode===Ye.TRIANGLE_STRIP||l.mode===Ye.TRIANGLE_FAN||void 0===l.mode)h=!0===n.isSkinnedMesh?new re(s,d):new H(s,d),!0===h.isSkinnedMesh&&h.normalizeSkinWeights(),l.mode===Ye.TRIANGLE_STRIP?h.geometry=me(h.geometry,le):l.mode===Ye.TRIANGLE_FAN&&(h.geometry=me(h.geometry,ce));else if(l.mode===Ye.LINES)h=new L(s,d);else if(l.mode===Ye.LINE_STRIP)h=new w(s,d);else if(l.mode===Ye.LINE_LOOP)h=new A(s,d);else{if(l.mode!==Ye.POINTS)throw new Error("THREE.GLTFLoader: Primitive mode unsupported: "+l.mode);h=new Y(s,d)}Object.keys(h.geometry.morphAttributes).length>0&<(h,n),h.name=t.createUniqueName(n.name||"mesh_"+e),ct(h,n),l.extensions&&at(r,h,l),t.assignFinalMaterial(h),c.push(h)}for(let r=0,n=c.length;r<n;r++)t.associations.set(c[r],{meshes:e,primitives:r});if(1===c.length)return n.extensions&&at(r,c[0],n),c[0];const l=new m;n.extensions&&at(r,l,n),t.associations.set(l,{meshes:e});for(let e=0,t=c.length;e<t;e++)l.add(c[e]);return l})}loadCamera(e){let t;const s=this.json.cameras[e],r=s[s.type];if(r)return"perspective"===s.type?t=new q(N.radToDeg(r.yfov),r.aspectRatio||1,r.znear||1,r.zfar||2e6):"orthographic"===s.type&&(t=new z(-r.xmag,r.xmag,r.ymag,-r.ymag,r.znear,r.zfar)),s.name&&(t.name=this.createUniqueName(s.name)),ct(t,s),Promise.resolve(t);console.warn("THREE.GLTFLoader: Missing camera parameters.")}loadSkin(e){const t=this.json.skins[e],s=[];for(let r=0,n=t.joints.length;r<n;r++)s.push(this._loadNodeShallow(t.joints[r]));return void 0!==t.inverseBindMatrices?s.push(this.getDependency("accessor",t.inverseBindMatrices)):s.push(null),Promise.all(s).then(function(e){const s=e.pop(),r=e,n=[],o=[];for(let i=0,a=r.length;i<a;i++){const e=r[i];if(e){n.push(e);const t=new k;null!==s&&t.fromArray(s.array,16*i),o.push(t)}else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.',t.joints[i])}return new se(n,o)})}loadAnimation(e){const t=this.json,r=this,n=t.animations[e],o=n.name?n.name:"animation_"+e,i=[],a=[],c=[],l=[],u=[];for(let s=0,h=n.channels.length;s<h;s++){const e=n.channels[s],t=n.samplers[e.sampler],r=e.target,o=r.node,h=void 0!==n.parameters?n.parameters[t.input]:t.input,d=void 0!==n.parameters?n.parameters[t.output]:t.output;void 0!==r.node&&(i.push(this.getDependency("node",o)),a.push(this.getDependency("accessor",h)),c.push(this.getDependency("accessor",d)),l.push(t),u.push(r))}return Promise.all([Promise.all(i),Promise.all(a),Promise.all(c),Promise.all(l),Promise.all(u)]).then(function(e){const t=e[0],i=e[1],a=e[2],c=e[3],l=e[4],u=[];for(let s=0,n=t.length;s<n;s++){const e=t[s],n=i[s],o=a[s],h=c[s],d=l[s];if(void 0===e)continue;e.updateMatrix&&e.updateMatrix();const p=r._createAnimationTracks(e,n,o,h,d);if(p)for(let t=0;t<p.length;t++)u.push(p[t])}const h=new s(o,void 0,u);return ct(h,n),h})}createNodeMesh(e){const t=this.json,s=this,r=t.nodes[e];return void 0===r.mesh?null:s.getDependency("mesh",r.mesh).then(function(e){const t=s._getNodeRef(s.meshCache,r.mesh,e);return void 0!==r.weights&&t.traverse(function(e){if(e.isMesh)for(let t=0,s=r.weights.length;t<s;t++)e.morphTargetInfluences[t]=r.weights[t]}),t})}loadNode(e){const t=this,s=this.json.nodes[e],r=t._loadNodeShallow(e),n=[],o=s.children||[];for(let a=0,c=o.length;a<c;a++)n.push(t.getDependency("node",o[a]));const i=void 0===s.skin?Promise.resolve(null):t.getDependency("skin",s.skin);return Promise.all([r,Promise.all(n),i]).then(function(e){const t=e[0],s=e[1],r=e[2];null!==r&&t.traverse(function(e){e.isSkinnedMesh&&e.bind(r,pt)});for(let n=0,o=s.length;n<o;n++)t.add(s[n]);if(void 0!==t.userData.pivot&&s.length>0){const e=t.userData.pivot,r=s[0];t.pivot=(new de).fromArray(e),t.position.x-=e[0],t.position.y-=e[1],t.position.z-=e[2],r.position.set(0,0,0),delete t.userData.pivot}return t})}_loadNodeShallow(e){const t=this.json,s=this.extensions,n=this;if(void 0!==this.nodeCache[e])return this.nodeCache[e];const o=t.nodes[e],i=o.name?n.createUniqueName(o.name):"",a=[],c=n._invokeOne(function(t){return t.createNodeMesh&&t.createNodeMesh(e)});return c&&a.push(c),void 0!==o.camera&&a.push(n.getDependency("camera",o.camera).then(function(e){return n._getNodeRef(n.cameraCache,o.camera,e)})),n._invokeAll(function(t){return t.createNodeAttachment&&t.createNodeAttachment(e)}).forEach(function(e){a.push(e)}),this.nodeCache[e]=Promise.all(a).then(function(t){let a;if(a=!0===o.isBone?new r:t.length>1?new m:1===t.length?t[0]:new X,a!==t[0])for(let e=0,s=t.length;e<s;e++)a.add(t[e]);if(o.name&&(a.userData.name=o.name,a.name=i),ct(a,o),o.extensions&&at(s,a,o),void 0!==o.matrix){const e=new k;e.fromArray(o.matrix),a.applyMatrix4(e)}else void 0!==o.translation&&a.position.fromArray(o.translation),void 0!==o.rotation&&a.quaternion.fromArray(o.rotation),void 0!==o.scale&&a.scale.fromArray(o.scale);if(n.associations.has(a)){if(void 0!==o.mesh&&n.meshCache.refs[o.mesh]>1){const e=n.associations.get(a);n.associations.set(a,{...e})}}else n.associations.set(a,{});return n.associations.get(a).nodes=e,a}),this.nodeCache[e]}loadScene(e){const t=this.extensions,s=this.json.scenes[e],r=this,n=new m;s.name&&(n.name=r.createUniqueName(s.name)),ct(n,s),s.extensions&&at(t,n,s);const o=s.nodes||[],i=[];for(let a=0,c=o.length;a<c;a++)i.push(r.getDependency("node",o[a]));return Promise.all(i).then(function(e){for(let t=0,s=e.length;t<s;t++){const s=e[t];null!==s.parent?n.add(fe(s)):n.add(s)}return r.associations=(e=>{const t=/* @__PURE__ */new Map;for(const[s,n]of r.associations)(s instanceof O||s instanceof ie)&&t.set(s,n);return e.traverse(e=>{const s=r.associations.get(e);null!=s&&t.set(e,s)}),t})(n),n})}_createAnimationTracks(e,t,s,r,n){const o=[],i=e.name?e.name:e.uuid,a=[];let c;switch(tt[n.path]===tt.weights?e.traverse(function(e){e.morphTargetInfluences&&a.push(e.name?e.name:e.uuid)}):a.push(i),tt[n.path]){case tt.weights:c=V;break;case tt.rotation:c=Q;break;case tt.translation:case tt.scale:c=pe;break;default:if(1===s.itemSize)c=V;else c=pe}const l=void 0!==r.interpolation?st[r.interpolation]:y,u=this._getArrayFromAccessor(s);for(let h=0,d=a.length;h<d;h++){const e=new c(a[h]+"."+tt[n.path],t.array,u,l);"CUBICSPLINE"===r.interpolation&&this._createCubicSplineTrackInterpolant(e),o.push(e)}return o}_getArrayFromAccessor(e){let t=e.array;if(e.normalized){const e=dt(t.constructor),s=new Float32Array(t.length);for(let r=0,n=t.length;r<n;r++)s[r]=t[r]*e;t=s}return t}_createCubicSplineTrackInterpolant(e){e.createInterpolant=function(e){return new(this instanceof Q?We:ze)(this.times,this.values,this.getValueSize()/3,e)},e.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0}};function ft(e,t,s){const r=t.attributes,o=[];function i(t,r){return s.getDependency("accessor",t).then(function(t){e.setAttribute(r,t)})}for(const n in r){const t=et[n]||n.toLowerCase();t in e.attributes||o.push(i(r[n],t))}if(void 0!==t.indices&&!e.index){const r=s.getDependency("accessor",t.indices).then(function(t){e.setIndex(t)});o.push(r)}return l.workingColorSpace!==S&&"COLOR_0"in r&&console.warn(`THREE.GLTFLoader: Converting vertex colors from "srgb-linear" to "${l.workingColorSpace}" not supported.`),ct(e,t),function(e,t,s){const r=t.attributes,o=new n;if(void 0===r.POSITION)return;{const e=s.json.accessors[r.POSITION],t=e.min,n=e.max;if(void 0===t||void 0===n)return void console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");if(o.set(new de(t[0],t[1],t[2]),new de(n[0],n[1],n[2])),e.normalized){const t=dt(Je[e.componentType]);o.min.multiplyScalar(t),o.max.multiplyScalar(t)}}const i=t.targets;if(void 0!==i){const e=new de,t=new de;for(let r=0,n=i.length;r<n;r++){const n=i[r];if(void 0!==n.POSITION){const r=s.json.accessors[n.POSITION],o=r.min,i=r.max;if(void 0!==o&&void 0!==i){if(t.setX(Math.max(Math.abs(o[0]),Math.abs(i[0]))),t.setY(Math.max(Math.abs(o[1]),Math.abs(i[1]))),t.setZ(Math.max(Math.abs(o[2]),Math.abs(i[2]))),r.normalized){const e=dt(Je[r.componentType]);t.multiplyScalar(e)}e.max(t)}else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.")}}o.expandByVector(e)}e.boundingBox=o;const a=new ne;o.getCenter(a.center),a.radius=o.min.distanceTo(o.max)/2,e.boundingSphere=a}(e,t,s),Promise.all(o).then(function(){return void 0!==t.targets?function(e,t,s){let r=!1,n=!1,o=!1;for(let l=0,u=t.length;l<u;l++){const e=t[l];if(void 0!==e.POSITION&&(r=!0),void 0!==e.NORMAL&&(n=!0),void 0!==e.COLOR_0&&(o=!0),r&&n&&o)break}if(!r&&!n&&!o)return Promise.resolve(e);const i=[],a=[],c=[];for(let l=0,u=t.length;l<u;l++){const u=t[l];if(r){const t=void 0!==u.POSITION?s.getDependency("accessor",u.POSITION):e.attributes.position;i.push(t)}if(n){const t=void 0!==u.NORMAL?s.getDependency("accessor",u.NORMAL):e.attributes.normal;a.push(t)}if(o){const t=void 0!==u.COLOR_0?s.getDependency("accessor",u.COLOR_0):e.attributes.color;c.push(t)}}return Promise.all([Promise.all(i),Promise.all(a),Promise.all(c)]).then(function(t){const s=t[0],i=t[1],a=t[2];return r&&(e.morphAttributes.position=s),n&&(e.morphAttributes.normal=i),o&&(e.morphAttributes.color=a),e.morphTargetsRelative=!0,e})}(e,t.targets,s):e})}var gt=/* @__PURE__ */new WeakMap,Tt=class extends P{constructor(e){super(e),this.decoderPath="",this.decoderConfig={},this.decoderBinary=null,this.decoderPending=null,this.workerLimit=4,this.workerPool=[],this.workerNextTaskID=1,this.workerSourceURL="",this.defaultAttributeIDs={position:"POSITION",normal:"NORMAL",color:"COLOR",uv:"TEX_COORD"},this.defaultAttributeTypes={position:"Float32Array",normal:"Float32Array",color:"Float32Array",uv:"Float32Array"}}setDecoderPath(e){return this.decoderPath=e,this}setDecoderConfig(e){return this.decoderConfig=e,this}setWorkerLimit(e){return this.workerLimit=e,this}load(e,t,s,r){const n=new d(this.manager);n.setPath(this.path),n.setResponseType("arraybuffer"),n.setRequestHeader(this.requestHeader),n.setWithCredentials(this.withCredentials),n.load(e,e=>{this.parse(e,t,r)},s,r)}parse(e,t,s=()=>{}){this.decodeDracoFile(e,t,null,null,te,s).catch(s)}decodeDracoFile(e,t,s,r,n=S,o=()=>{}){const i={attributeIDs:s||this.defaultAttributeIDs,attributeTypes:r||this.defaultAttributeTypes,useUniqueIDs:!!s,vertexColorSpace:n};return this.decodeGeometry(e,i).then(t).catch(o)}decodeGeometry(e,t){const s=JSON.stringify(t);if(gt.has(e)){const t=gt.get(e);if(t.key===s)return t.promise;if(0===e.byteLength)throw new Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.")}let r;const n=this.workerNextTaskID++,o=e.byteLength,i=this._getWorker(n,o).then(s=>(r=s,new Promise((s,o)=>{r._callbacks[n]={resolve:s,reject:o},r.postMessage({type:"decode",id:n,taskConfig:t,buffer:e},[e])}))).then(e=>this._createGeometry(e.geometry));return i.catch(()=>!0).then(()=>{r&&n&&this._releaseTask(r,n)}),gt.set(e,{key:s,promise:i}),i}_createGeometry(e){const t=new i;e.index&&t.setIndex(new o(e.index.array,1));for(let s=0;s<e.attributes.length;s++){const{name:r,array:n,itemSize:i,stride:a,vertexColorSpace:c}=e.attributes[s];let l;l=i===a?new o(n,i):new _(new R(n,a),i,0),"color"===r&&(this._assignVertexColorSpace(l,c),l.normalized=n instanceof Float32Array==!1),t.setAttribute(r,l)}return t}_assignVertexColorSpace(e,t){if(t!==te)return;const s=new c;for(let r=0,n=e.count;r<n;r++)s.fromBufferAttribute(e,r),l.colorSpaceToWorking(s,te),e.setXYZ(r,s.r,s.g,s.b)}_loadLibrary(e,t){const s=new d(this.manager);return s.setPath(this.decoderPath),s.setResponseType(t),s.setWithCredentials(this.withCredentials),new Promise((t,r)=>{s.load(e,t,void 0,r)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;const e="object"!=typeof WebAssembly||"js"===this.decoderConfig.type,t=[];return e?t.push(this._loadLibrary("draco_decoder.js","text")):(t.push(this._loadLibrary("draco_wasm_wrapper.js","text")),t.push(this._loadLibrary("draco_decoder.wasm","arraybuffer"))),this.decoderPending=Promise.all(t).then(t=>{const s=t[0];e||(this.decoderConfig.wasmBinary=t[1]);const r=Rt.toString(),n=["/* draco decoder */",s,"","/* worker */",r.substring(r.indexOf("{")+1,r.lastIndexOf("}"))].join("\n");this.workerSourceURL=URL.createObjectURL(new Blob([n]))}),this.decoderPending}_getWorker(e,t){return this._initDecoder().then(()=>{if(this.workerPool.length<this.workerLimit){const e=new Worker(this.workerSourceURL);e._callbacks={},e._taskCosts={},e._taskLoad=0,e.postMessage({type:"init",decoderConfig:this.decoderConfig}),e.onmessage=function(t){const s=t.data;switch(s.type){case"decode":e._callbacks[s.id].resolve(s);break;case"error":e._callbacks[s.id].reject(s);break;default:console.error('THREE.DRACOLoader: Unexpected message, "'+s.type+'"')}},this.workerPool.push(e)}else this.workerPool.sort(function(e,t){return e._taskLoad>t._taskLoad?-1:1});const s=this.workerPool[this.workerPool.length-1];return s._taskCosts[e]=t,s._taskLoad+=t,s})}_releaseTask(e,t){e._taskLoad-=e._taskCosts[t],delete e._callbacks[t],delete e._taskCosts[t]}debug(){console.log("Task load: ",this.workerPool.map(e=>e._taskLoad))}dispose(){for(let e=0;e<this.workerPool.length;++e)this.workerPool[e].terminate();return this.workerPool.length=0,""!==this.workerSourceURL&&URL.revokeObjectURL(this.workerSourceURL),this}};function Rt(){let e,t;function s(e,t,s,r,n,o){const i=s.num_points(),a=o.num_components(),c=function(e,t){switch(t){case Float32Array:return e.DT_FLOAT32;case Int8Array:return e.DT_INT8;case Int16Array:return e.DT_INT16;case Int32Array:return e.DT_INT32;case Uint8Array:return e.DT_UINT8;case Uint16Array:return e.DT_UINT16;case Uint32Array:return e.DT_UINT32}}(e,n),l=a*n.BYTES_PER_ELEMENT,u=4*Math.ceil(l/4),h=u/n.BYTES_PER_ELEMENT,d=i*l,p=i*u,m=e._malloc(d);t.GetAttributeDataArrayForAllPoints(s,o,c,d,m);const f=new n(e.HEAPF32.buffer,m,d/n.BYTES_PER_ELEMENT);let g;if(l===u)g=f.slice();else{g=new n(p/n.BYTES_PER_ELEMENT);let e=0;for(let t=0,s=f.length;t<s;t++){for(let s=0;s<a;s++)g[e+s]=f[t*a+s];e+=h}}return e._free(m),{name:r,count:i,itemSize:a,array:g,stride:h}}onmessage=function(r){const n=r.data;switch(n.type){case"init":e=n.decoderConfig,t=new Promise(function(t){e.onModuleLoaded=function(e){t({draco:e})},DracoDecoderModule(e)});break;case"decode":const r=n.buffer,o=n.taskConfig;t.then(e=>{const t=e.draco,i=new t.Decoder;try{const e=function(e,t,r,n){const o=n.attributeIDs,i=n.attributeTypes;let a,c;const l=t.GetEncodedGeometryType(r);if(l===e.TRIANGULAR_MESH)a=new e.Mesh,c=t.DecodeArrayToMesh(r,r.byteLength,a);else{if(l!==e.POINT_CLOUD)throw new Error("THREE.DRACOLoader: Unexpected geometry type.");a=new e.PointCloud,c=t.DecodeArrayToPointCloud(r,r.byteLength,a)}if(!c.ok()||0===a.ptr)throw new Error("THREE.DRACOLoader: Decoding failed: "+c.error_msg());const u={index:null,attributes:[]};for(const h in o){const r=self[i[h]];let c,l;if(n.useUniqueIDs)l=o[h],c=t.GetAttributeByUniqueId(a,l);else{if(l=t.GetAttributeId(a,e[o[h]]),-1===l)continue;c=t.GetAttribute(a,l)}const d=s(e,t,a,h,r,c);"color"===h&&(d.vertexColorSpace=n.vertexColorSpace),u.attributes.push(d)}l===e.TRIANGULAR_MESH&&(u.index=function(e,t,s){const r=3*s.num_faces(),n=4*r,o=e._malloc(n);t.GetTrianglesUInt32Array(s,n,o);const i=new Uint32Array(e.HEAPF32.buffer,o,r).slice();return e._free(o),{array:i,itemSize:1}}(e,t,a));return e.destroy(a),u}(t,i,new Int8Array(r),o),a=e.attributes.map(e=>e.array.buffer);e.index&&a.push(e.index.array.buffer),self.postMessage({type:"decode",id:n.id,geometry:e},a)}catch(a){console.error(a),self.postMessage({type:"error",id:n.id,error:a.message})}finally{t.destroy(i)}})}}}function _t(s){return e()((e,r)=>({instanceId:s,gltf:null,fallbackGeometry:"box",isLoading:!1,loadingProgress:0,error:null,isReady:!0,pois:[],activePOI:null,materialVariants:[],activeMaterialVariant:null,cameraPresets:[],activeCameraPreset:null,cameraTarget:void 0,cameraDistance:void 0,setFallbackGeometry:t=>{e({fallbackGeometry:t})},loadModel:async(s,r)=>{e({isLoading:!0,error:null,loadingProgress:0});try{const n=new Te,o=new Tt;o.setDecoderPath("/draco/"),n.setDRACOLoader(o);const i=await new Promise((t,o)=>{n.load(s,e=>t(e),t=>{if(t.lengthComputable){const s=t.loaded/t.total*100;e({loadingProgress:s}),r?.(s)}},e=>o(e))});return i.scene.traverse(e=>{e instanceof t.Mesh&&(e.castShadow=!0,e.receiveShadow=!0)}),e({gltf:i,isLoading:!1,isReady:!0,loadingProgress:100}),i}catch(n){throw e({error:n instanceof Error?n.message:"Failed to load model",isLoading:!1,isReady:!1}),n}},addPOI:t=>{const s=`poi-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,r={...t,id:s};return e(e=>({pois:[...e.pois,r]})),s},updatePOI:(t,s)=>{e(e=>({pois:e.pois.map(e=>e.id===t?{...e,...s}:e)}))},removePOI:t=>{e(e=>({pois:e.pois.filter(e=>e.id!==t),activePOI:e.activePOI===t?null:e.activePOI}))},setActivePOI:t=>{e({activePOI:t})},setMaterialVariant:s=>{const{gltf:n,materialVariants:o}=r();if(!n)return;const i=o.find(e=>e.id===s);i&&(n.scene.traverse(e=>{if(e instanceof t.Mesh&&e.material){const s=e.material;s.name!==i.materialName&&i.materialName||(i.properties.color&&(s.color=new t.Color(i.properties.color)),void 0!==i.properties.metalness&&(s.metalness=i.properties.metalness),void 0!==i.properties.roughness&&(s.roughness=i.properties.roughness),i.properties.emissive&&(s.emissive=new t.Color(i.properties.emissive)),void 0!==i.properties.emissiveIntensity&&(s.emissiveIntensity=i.properties.emissiveIntensity),i.properties.map&&(new t.TextureLoader).load(i.properties.map,e=>{s.map=e,s.needsUpdate=!0}),s.needsUpdate=!0)}}),e({activeMaterialVariant:s}))},addMaterialVariant:t=>{e(e=>({materialVariants:[...e.materialVariants,t]}))},setCameraPreset:t=>{e({activeCameraPreset:t})},addCameraPreset:t=>{e(e=>({cameraPresets:[...e.cameraPresets,t]}))},dispose:()=>{const{gltf:s}=r();s&&s.scene.traverse(e=>{e instanceof t.Mesh&&(e.geometry?.dispose(),(Array.isArray(e.material)?e.material:[e.material]).forEach(e=>{e&&(e.map&&e.map.dispose(),e.lightMap&&e.lightMap.dispose(),e.bumpMap&&e.bumpMap.dispose(),e.normalMap&&e.normalMap.dispose(),e.specularMap&&e.specularMap.dispose(),e.envMap&&e.envMap.dispose(),e.aoMap&&e.aoMap.dispose(),e.emissiveMap&&e.emissiveMap.dispose(),e.metalnessMap&&e.metalnessMap.dispose(),e.roughnessMap&&e.roughnessMap.dispose(),e.dispose())}))}),e({gltf:null,isReady:!1,isLoading:!1,loadingProgress:0,error:null,pois:[],activePOI:null,materialVariants:[],activeMaterialVariant:null,cameraPresets:[],activeCameraPreset:null,cameraTarget:void 0,cameraDistance:void 0})}}))}export{_t as t};
|
|
2
|
+
//# sourceMappingURL=configurator-store-xTXosVLi.mjs.map
|