2 lines
54 KiB
Java
2 lines
54 KiB
Java
var vt=Object.defineProperty,Lt=Object.defineProperties;var It=Object.getOwnPropertyDescriptors;var He=Object.getOwnPropertySymbols;var Nt=Object.prototype.hasOwnProperty,Ot=Object.prototype.propertyIsEnumerable;var De=(f,t,e)=>t in f?vt(f,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):f[t]=e,J=(f,t)=>{for(var e in t||(t={}))Nt.call(t,e)&&De(f,e,t[e]);if(He)for(var e of He(t))Ot.call(t,e)&&De(f,e,t[e]);return f},ue=(f,t)=>Lt(f,It(t));var ee=(f,t,e)=>new Promise((s,n)=>{var r=o=>{try{a(e.next(o))}catch(c){n(c)}},i=o=>{try{a(e.throw(o))}catch(c){n(c)}},a=o=>o.done?s(o.value):Promise.resolve(o.value).then(r,i);a((e=e.apply(f,t)).next())});import{f as K,o as Ct,j as Pt,ar as te,as as ne,au as L,ag as Be,aB as Ge,av as G,at as Ft,G as q}from"./vue-vendor-C7Zq48Yl.js";import{BufferAttribute as ge,BufferGeometry as kt,InstancedBufferAttribute as Ht,InterleavedBuffer as Dt,InterleavedBufferAttribute as Bt,TrianglesDrawMode as Gt,TriangleFanDrawMode as Me,TriangleStripDrawMode as tt,Vector3 as U,Float32BufferAttribute as ws,Quaternion as nt,Matrix4 as he,AnimationMixer as Es,VectorKeyframeTrack as Ue,QuaternionKeyframeTrack as ze,AnimationClip as Ut,SkeletonHelper as ys,Loader as zt,LoaderUtils as ie,FileLoader as st,Color as X,LinearSRGBColorSpace as z,SpotLight as Kt,PointLight as jt,DirectionalLight as rt,MeshBasicMaterial as re,SRGBColorSpace as ae,MeshPhysicalMaterial as B,Vector2 as ve,InstancedMesh as Vt,Object3D as it,Interpolant as Xt,LinearMipmapLinearFilter as ot,NearestMipmapLinearFilter as Wt,LinearMipmapNearestFilter as qt,NearestMipmapNearestFilter as Yt,LinearFilter as be,NearestFilter as at,RepeatWrapping as Re,MirroredRepeatWrapping as Zt,ClampToEdgeWrapping as Qt,InterpolateDiscrete as $t,InterpolateLinear as ct,MeshStandardMaterial as oe,FrontSide as Jt,TextureLoader as en,ImageBitmapLoader as tn,Texture as Ke,PointsMaterial as nn,Material as Te,LineBasicMaterial as sn,DoubleSide as rn,PropertyBinding as on,SkinnedMesh as an,Mesh as de,LineSegments as cn,Line as ln,LineLoop as un,Points as fn,Group as xe,PerspectiveCamera as lt,MathUtils as dn,OrthographicCamera as hn,Skeleton as pn,Bone as mn,NumberKeyframeTrack as je,Box3 as gn,Sphere as Tn,ColorManagement as xn,Scene as An,WebGLRenderer as wn,MOUSE as Ae,AmbientLight as En,PlaneGeometry as yn,GridHelper as Mn,BoxGeometry as Ve,Raycaster as bn}from"./three.module-C62V74CF.js";import{O as Rn}from"./OrbitControls-CJGLS2vR.js";import{d as Sn}from"./index-BI6CMai0.js";import"./antd-vue-vendor-BPnV8VqP.js";import"./vxe-table-vendor-B88kchpX.js";function Xe(f,t){if(t===Gt)return f;if(t===Me||t===tt){let e=f.getIndex();if(e===null){const i=[],a=f.getAttribute("position");if(a!==void 0){for(let o=0;o<a.count;o++)i.push(o);f.setIndex(i),e=f.getIndex()}else return f}const s=e.count-2,n=[];if(t===Me)for(let i=1;i<=s;i++)n.push(e.getX(0)),n.push(e.getX(i)),n.push(e.getX(i+1));else for(let i=0;i<s;i++)i%2===0?(n.push(e.getX(i)),n.push(e.getX(i+1)),n.push(e.getX(i+2))):(n.push(e.getX(i+2)),n.push(e.getX(i+1)),n.push(e.getX(i)));n.length/3;const r=f.clone();return r.setIndex(n),r.clearGroups(),r}else return f}function _n(f){const t=new Map,e=new Map,s=f.clone();return ut(f,s,function(n,r){t.set(r,n),e.set(n,r)}),s.traverse(function(n){if(!n.isSkinnedMesh)return;const r=n,i=t.get(n),a=i.skeleton.bones;r.skeleton=i.skeleton.clone(),r.bindMatrix.copy(i.bindMatrix),r.skeleton.bones=a.map(function(o){return e.get(o)}),r.bind(r.skeleton,r.bindMatrix)}),s}function ut(f,t,e){e(f,t);for(let s=0;s<f.children.length;s++)ut(f.children[s],t.children[s],e)}class vn extends zt{constructor(t){super(t),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(e){return new Cn(e)}),this.register(function(e){return new Pn(e)}),this.register(function(e){return new Kn(e)}),this.register(function(e){return new jn(e)}),this.register(function(e){return new Vn(e)}),this.register(function(e){return new kn(e)}),this.register(function(e){return new Hn(e)}),this.register(function(e){return new Dn(e)}),this.register(function(e){return new Bn(e)}),this.register(function(e){return new On(e)}),this.register(function(e){return new Gn(e)}),this.register(function(e){return new Fn(e)}),this.register(function(e){return new zn(e)}),this.register(function(e){return new Un(e)}),this.register(function(e){return new In(e)}),this.register(function(e){return new We(e,y.EXT_MESHOPT_COMPRESSION)}),this.register(function(e){return new We(e,y.KHR_MESHOPT_COMPRESSION)}),this.register(function(e){return new Xn(e)})}load(t,e,s,n){const r=this;let i;if(this.resourcePath!=="")i=this.resourcePath;else if(this.path!==""){const c=ie.extractUrlBase(t);i=ie.resolveURL(c,this.path)}else i=ie.extractUrlBase(t);this.manager.itemStart(t);const a=function(c){n&&n(c),r.manager.itemError(t),r.manager.itemEnd(t)},o=new st(this.manager);o.setPath(this.path),o.setResponseType("arraybuffer"),o.setRequestHeader(this.requestHeader),o.setWithCredentials(this.withCredentials),o.load(t,function(c){try{r.parse(c,i,function(l){e(l),r.manager.itemEnd(t)},a)}catch(l){a(l)}},s,a)}setDRACOLoader(t){return this.dracoLoader=t,this}setKTX2Loader(t){return this.ktx2Loader=t,this}setMeshoptDecoder(t){return this.meshoptDecoder=t,this}register(t){return this.pluginCallbacks.indexOf(t)===-1&&this.pluginCallbacks.push(t),this}unregister(t){return this.pluginCallbacks.indexOf(t)!==-1&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(t),1),this}parse(t,e,s,n){let r;const i={},a={},o=new TextDecoder;if(typeof t=="string")r=JSON.parse(t);else if(t instanceof ArrayBuffer)if(o.decode(new Uint8Array(t,0,4))===ft){try{i[y.KHR_BINARY_GLTF]=new Wn(t)}catch(u){n&&n(u);return}r=JSON.parse(i[y.KHR_BINARY_GLTF].content)}else r=JSON.parse(o.decode(t));else r=t;if(r.asset===void 0||r.asset.version[0]<2){n&&n(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported."));return}const c=new os(r,{path:e||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});c.fileLoader.setRequestHeader(this.requestHeader);for(let l=0;l<this.pluginCallbacks.length;l++){const u=this.pluginCallbacks[l](c);u.name,a[u.name]=u,i[u.name]=!0}if(r.extensionsUsed)for(let l=0;l<r.extensionsUsed.length;++l){const u=r.extensionsUsed[l],d=r.extensionsRequired||[];switch(u){case y.KHR_MATERIALS_UNLIT:i[u]=new Nn;break;case y.KHR_DRACO_MESH_COMPRESSION:i[u]=new qn(r,this.dracoLoader);break;case y.KHR_TEXTURE_TRANSFORM:i[u]=new Yn;break;case y.KHR_MESH_QUANTIZATION:i[u]=new Zn;break;default:d.indexOf(u)>=0&&a[u]}}c.setExtensions(i),c.setPlugins(a),c.parse(s,n)}parseAsync(t,e){const s=this;return new Promise(function(n,r){s.parse(t,e,n,r)})}}function Ln(){let f={};return{get:function(t){return f[t]},add:function(t,e){f[t]=e},remove:function(t){delete f[t]},removeAll:function(){f={}}}}function N(f,t,e){const s=f.json.materials[t];return s.extensions&&s.extensions[e]?s.extensions[e]:null}const y={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"};class In{constructor(t){this.parser=t,this.name=y.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){const t=this.parser,e=this.parser.json.nodes||[];for(let s=0,n=e.length;s<n;s++){const r=e[s];r.extensions&&r.extensions[this.name]&&r.extensions[this.name].light!==void 0&&t._addNodeRef(this.cache,r.extensions[this.name].light)}}_loadLight(t){const e=this.parser,s="light:"+t;let n=e.cache.get(s);if(n)return n;const r=e.json,o=((r.extensions&&r.extensions[this.name]||{}).lights||[])[t];let c;const l=new X(16777215);o.color!==void 0&&l.setRGB(o.color[0],o.color[1],o.color[2],z);const u=o.range!==void 0?o.range:0;switch(o.type){case"directional":c=new rt(l),c.target.position.set(0,0,-1),c.add(c.target);break;case"point":c=new jt(l),c.distance=u;break;case"spot":c=new Kt(l),c.distance=u,o.spot=o.spot||{},o.spot.innerConeAngle=o.spot.innerConeAngle!==void 0?o.spot.innerConeAngle:0,o.spot.outerConeAngle=o.spot.outerConeAngle!==void 0?o.spot.outerConeAngle:Math.PI/4,c.angle=o.spot.outerConeAngle,c.penumbra=1-o.spot.innerConeAngle/o.spot.outerConeAngle,c.target.position.set(0,0,-1),c.add(c.target);break;default:throw new Error("THREE.GLTFLoader: Unexpected light type: "+o.type)}return c.position.set(0,0,0),D(c,o),o.intensity!==void 0&&(c.intensity=o.intensity),c.name=e.createUniqueName(o.name||"light_"+t),n=Promise.resolve(c),e.cache.add(s,n),n}getDependency(t,e){if(t==="light")return this._loadLight(e)}createNodeAttachment(t){const e=this,s=this.parser,r=s.json.nodes[t],a=(r.extensions&&r.extensions[this.name]||{}).light;return a===void 0?null:this._loadLight(a).then(function(o){return s._getNodeRef(e.cache,a,o)})}}class Nn{constructor(){this.name=y.KHR_MATERIALS_UNLIT}getMaterialType(){return re}extendParams(t,e,s){const n=[];t.color=new X(1,1,1),t.opacity=1;const r=e.pbrMetallicRoughness;if(r){if(Array.isArray(r.baseColorFactor)){const i=r.baseColorFactor;t.color.setRGB(i[0],i[1],i[2],z),t.opacity=i[3]}r.baseColorTexture!==void 0&&n.push(s.assignTexture(t,"map",r.baseColorTexture,ae))}return Promise.all(n)}}class On{constructor(t){this.parser=t,this.name=y.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(t,e){const s=N(this.parser,t,this.name);return s===null||s.emissiveStrength!==void 0&&(e.emissiveIntensity=s.emissiveStrength),Promise.resolve()}}class Cn{constructor(t){this.parser=t,this.name=y.KHR_MATERIALS_CLEARCOAT}getMaterialType(t){return N(this.parser,t,this.name)!==null?B:null}extendMaterialParams(t,e){const s=N(this.parser,t,this.name);if(s===null)return Promise.resolve();const n=[];if(s.clearcoatFactor!==void 0&&(e.clearcoat=s.clearcoatFactor),s.clearcoatTexture!==void 0&&n.push(this.parser.assignTexture(e,"clearcoatMap",s.clearcoatTexture)),s.clearcoatRoughnessFactor!==void 0&&(e.clearcoatRoughness=s.clearcoatRoughnessFactor),s.clearcoatRoughnessTexture!==void 0&&n.push(this.parser.assignTexture(e,"clearcoatRoughnessMap",s.clearcoatRoughnessTexture)),s.clearcoatNormalTexture!==void 0&&(n.push(this.parser.assignTexture(e,"clearcoatNormalMap",s.clearcoatNormalTexture)),s.clearcoatNormalTexture.scale!==void 0)){const r=s.clearcoatNormalTexture.scale;e.clearcoatNormalScale=new ve(r,r)}return Promise.all(n)}}class Pn{constructor(t){this.parser=t,this.name=y.KHR_MATERIALS_DISPERSION}getMaterialType(t){return N(this.parser,t,this.name)!==null?B:null}extendMaterialParams(t,e){const s=N(this.parser,t,this.name);return s===null||(e.dispersion=s.dispersion!==void 0?s.dispersion:0),Promise.resolve()}}class Fn{constructor(t){this.parser=t,this.name=y.KHR_MATERIALS_IRIDESCENCE}getMaterialType(t){return N(this.parser,t,this.name)!==null?B:null}extendMaterialParams(t,e){const s=N(this.parser,t,this.name);if(s===null)return Promise.resolve();const n=[];return s.iridescenceFactor!==void 0&&(e.iridescence=s.iridescenceFactor),s.iridescenceTexture!==void 0&&n.push(this.parser.assignTexture(e,"iridescenceMap",s.iridescenceTexture)),s.iridescenceIor!==void 0&&(e.iridescenceIOR=s.iridescenceIor),e.iridescenceThicknessRange===void 0&&(e.iridescenceThicknessRange=[100,400]),s.iridescenceThicknessMinimum!==void 0&&(e.iridescenceThicknessRange[0]=s.iridescenceThicknessMinimum),s.iridescenceThicknessMaximum!==void 0&&(e.iridescenceThicknessRange[1]=s.iridescenceThicknessMaximum),s.iridescenceThicknessTexture!==void 0&&n.push(this.parser.assignTexture(e,"iridescenceThicknessMap",s.iridescenceThicknessTexture)),Promise.all(n)}}class kn{constructor(t){this.parser=t,this.name=y.KHR_MATERIALS_SHEEN}getMaterialType(t){return N(this.parser,t,this.name)!==null?B:null}extendMaterialParams(t,e){const s=N(this.parser,t,this.name);if(s===null)return Promise.resolve();const n=[];if(e.sheenColor=new X(0,0,0),e.sheenRoughness=0,e.sheen=1,s.sheenColorFactor!==void 0){const r=s.sheenColorFactor;e.sheenColor.setRGB(r[0],r[1],r[2],z)}return s.sheenRoughnessFactor!==void 0&&(e.sheenRoughness=s.sheenRoughnessFactor),s.sheenColorTexture!==void 0&&n.push(this.parser.assignTexture(e,"sheenColorMap",s.sheenColorTexture,ae)),s.sheenRoughnessTexture!==void 0&&n.push(this.parser.assignTexture(e,"sheenRoughnessMap",s.sheenRoughnessTexture)),Promise.all(n)}}class Hn{constructor(t){this.parser=t,this.name=y.KHR_MATERIALS_TRANSMISSION}getMaterialType(t){return N(this.parser,t,this.name)!==null?B:null}extendMaterialParams(t,e){const s=N(this.parser,t,this.name);if(s===null)return Promise.resolve();const n=[];return s.transmissionFactor!==void 0&&(e.transmission=s.transmissionFactor),s.transmissionTexture!==void 0&&n.push(this.parser.assignTexture(e,"transmissionMap",s.transmissionTexture)),Promise.all(n)}}class Dn{constructor(t){this.parser=t,this.name=y.KHR_MATERIALS_VOLUME}getMaterialType(t){return N(this.parser,t,this.name)!==null?B:null}extendMaterialParams(t,e){const s=N(this.parser,t,this.name);if(s===null)return Promise.resolve();const n=[];e.thickness=s.thicknessFactor!==void 0?s.thicknessFactor:0,s.thicknessTexture!==void 0&&n.push(this.parser.assignTexture(e,"thicknessMap",s.thicknessTexture)),e.attenuationDistance=s.attenuationDistance||1/0;const r=s.attenuationColor||[1,1,1];return e.attenuationColor=new X().setRGB(r[0],r[1],r[2],z),Promise.all(n)}}class Bn{constructor(t){this.parser=t,this.name=y.KHR_MATERIALS_IOR}getMaterialType(t){return N(this.parser,t,this.name)!==null?B:null}extendMaterialParams(t,e){const s=N(this.parser,t,this.name);return s===null||(e.ior=s.ior!==void 0?s.ior:1.5),Promise.resolve()}}class Gn{constructor(t){this.parser=t,this.name=y.KHR_MATERIALS_SPECULAR}getMaterialType(t){return N(this.parser,t,this.name)!==null?B:null}extendMaterialParams(t,e){const s=N(this.parser,t,this.name);if(s===null)return Promise.resolve();const n=[];e.specularIntensity=s.specularFactor!==void 0?s.specularFactor:1,s.specularTexture!==void 0&&n.push(this.parser.assignTexture(e,"specularIntensityMap",s.specularTexture));const r=s.specularColorFactor||[1,1,1];return e.specularColor=new X().setRGB(r[0],r[1],r[2],z),s.specularColorTexture!==void 0&&n.push(this.parser.assignTexture(e,"specularColorMap",s.specularColorTexture,ae)),Promise.all(n)}}class Un{constructor(t){this.parser=t,this.name=y.EXT_MATERIALS_BUMP}getMaterialType(t){return N(this.parser,t,this.name)!==null?B:null}extendMaterialParams(t,e){const s=N(this.parser,t,this.name);if(s===null)return Promise.resolve();const n=[];return e.bumpScale=s.bumpFactor!==void 0?s.bumpFactor:1,s.bumpTexture!==void 0&&n.push(this.parser.assignTexture(e,"bumpMap",s.bumpTexture)),Promise.all(n)}}class zn{constructor(t){this.parser=t,this.name=y.KHR_MATERIALS_ANISOTROPY}getMaterialType(t){return N(this.parser,t,this.name)!==null?B:null}extendMaterialParams(t,e){const s=N(this.parser,t,this.name);if(s===null)return Promise.resolve();const n=[];return s.anisotropyStrength!==void 0&&(e.anisotropy=s.anisotropyStrength),s.anisotropyRotation!==void 0&&(e.anisotropyRotation=s.anisotropyRotation),s.anisotropyTexture!==void 0&&n.push(this.parser.assignTexture(e,"anisotropyMap",s.anisotropyTexture)),Promise.all(n)}}class Kn{constructor(t){this.parser=t,this.name=y.KHR_TEXTURE_BASISU}loadTexture(t){const e=this.parser,s=e.json,n=s.textures[t];if(!n.extensions||!n.extensions[this.name])return null;const r=n.extensions[this.name],i=e.options.ktx2Loader;if(!i){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 e.loadTextureImage(t,r.source,i)}}class jn{constructor(t){this.parser=t,this.name=y.EXT_TEXTURE_WEBP}loadTexture(t){const e=this.name,s=this.parser,n=s.json,r=n.textures[t];if(!r.extensions||!r.extensions[e])return null;const i=r.extensions[e],a=n.images[i.source];let o=s.textureLoader;if(a.uri){const c=s.options.manager.getHandler(a.uri);c!==null&&(o=c)}return s.loadTextureImage(t,i.source,o)}}class Vn{constructor(t){this.parser=t,this.name=y.EXT_TEXTURE_AVIF}loadTexture(t){const e=this.name,s=this.parser,n=s.json,r=n.textures[t];if(!r.extensions||!r.extensions[e])return null;const i=r.extensions[e],a=n.images[i.source];let o=s.textureLoader;if(a.uri){const c=s.options.manager.getHandler(a.uri);c!==null&&(o=c)}return s.loadTextureImage(t,i.source,o)}}class We{constructor(t,e){this.name=e,this.parser=t}loadBufferView(t){const e=this.parser.json,s=e.bufferViews[t];if(s.extensions&&s.extensions[this.name]){const n=s.extensions[this.name],r=this.parser.getDependency("buffer",n.buffer),i=this.parser.options.meshoptDecoder;if(!i||!i.supported){if(e.extensionsRequired&&e.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return null}return r.then(function(a){const o=n.byteOffset||0,c=n.byteLength||0,l=n.count,u=n.byteStride,d=new Uint8Array(a,o,c);return i.decodeGltfBufferAsync?i.decodeGltfBufferAsync(l,u,d,n.mode,n.filter).then(function(h){return h.buffer}):i.ready.then(function(){const h=new ArrayBuffer(l*u);return i.decodeGltfBuffer(new Uint8Array(h),l,u,d,n.mode,n.filter),h})})}else return null}}class Xn{constructor(t){this.name=y.EXT_MESH_GPU_INSTANCING,this.parser=t}createNodeMesh(t){const e=this.parser.json,s=e.nodes[t];if(!s.extensions||!s.extensions[this.name]||s.mesh===void 0)return null;const n=e.meshes[s.mesh];for(const c of n.primitives)if(c.mode!==k.TRIANGLES&&c.mode!==k.TRIANGLE_STRIP&&c.mode!==k.TRIANGLE_FAN&&c.mode!==void 0)return null;const i=s.extensions[this.name].attributes,a=[],o={};for(const c in i)a.push(this.parser.getDependency("accessor",i[c]).then(l=>(o[c]=l,o[c])));return a.length<1?null:(a.push(this.parser.createNodeMesh(t)),Promise.all(a).then(c=>{const l=c.pop(),u=l.isGroup?l.children:[l],d=c[0].count,h=[];for(const g of u){const M=new he,T=new U,A=new nt,_=new U(1,1,1),v=new Vt(g.geometry,g.material,d);for(let R=0;R<d;R++)o.TRANSLATION&&T.fromBufferAttribute(o.TRANSLATION,R),o.ROTATION&&A.fromBufferAttribute(o.ROTATION,R),o.SCALE&&_.fromBufferAttribute(o.SCALE,R),v.setMatrixAt(R,M.compose(T,A,_));for(const R in o)if(R==="_COLOR_0"){const I=o[R];v.instanceColor=new Ht(I.array,I.itemSize,I.normalized)}else R!=="TRANSLATION"&&R!=="ROTATION"&&R!=="SCALE"&&g.geometry.setAttribute(R,o[R]);it.prototype.copy.call(v,g),this.parser.assignFinalMaterial(v),h.push(v)}return l.isGroup?(l.clear(),l.add(...h),l):h[0]}))}}const ft="glTF",se=12,qe={JSON:1313821514,BIN:5130562};class Wn{constructor(t){this.name=y.KHR_BINARY_GLTF,this.content=null,this.body=null;const e=new DataView(t,0,se),s=new TextDecoder;if(this.header={magic:s.decode(new Uint8Array(t.slice(0,4))),version:e.getUint32(4,!0),length:e.getUint32(8,!0)},this.header.magic!==ft)throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw new Error("THREE.GLTFLoader: Legacy binary file detected.");const n=this.header.length-se,r=new DataView(t,se);let i=0;for(;i<n;){const a=r.getUint32(i,!0);i+=4;const o=r.getUint32(i,!0);if(i+=4,o===qe.JSON){const c=new Uint8Array(t,se+i,a);this.content=s.decode(c)}else if(o===qe.BIN){const c=se+i;this.body=t.slice(c,c+a)}i+=a}if(this.content===null)throw new Error("THREE.GLTFLoader: JSON content not found.")}}class qn{constructor(t,e){if(!e)throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=y.KHR_DRACO_MESH_COMPRESSION,this.json=t,this.dracoLoader=e,this.dracoLoader.preload()}decodePrimitive(t,e){const s=this.json,n=this.dracoLoader,r=t.extensions[this.name].bufferView,i=t.extensions[this.name].attributes,a={},o={},c={};for(const l in i){const u=Se[l]||l.toLowerCase();a[u]=i[l]}for(const l in t.attributes){const u=Se[l]||l.toLowerCase();if(i[l]!==void 0){const d=s.accessors[t.attributes[l]],h=Y[d.componentType];c[u]=h.name,o[u]=d.normalized===!0}}return e.getDependency("bufferView",r).then(function(l){return new Promise(function(u,d){n.decodeDracoFile(l,function(h){for(const g in h.attributes){const M=h.attributes[g],T=o[g];T!==void 0&&(M.normalized=T)}u(h)},a,c,z,d)})})}}class Yn{constructor(){this.name=y.KHR_TEXTURE_TRANSFORM}extendTexture(t,e){return(e.texCoord===void 0||e.texCoord===t.channel)&&e.offset===void 0&&e.rotation===void 0&&e.scale===void 0||(t=t.clone(),e.texCoord!==void 0&&(t.channel=e.texCoord),e.offset!==void 0&&t.offset.fromArray(e.offset),e.rotation!==void 0&&(t.rotation=e.rotation),e.scale!==void 0&&t.repeat.fromArray(e.scale),t.needsUpdate=!0),t}}class Zn{constructor(){this.name=y.KHR_MESH_QUANTIZATION}}class dt extends Xt{constructor(t,e,s,n){super(t,e,s,n)}copySampleValue_(t){const e=this.resultBuffer,s=this.sampleValues,n=this.valueSize,r=t*n*3+n;for(let i=0;i!==n;i++)e[i]=s[r+i];return e}interpolate_(t,e,s,n){const r=this.resultBuffer,i=this.sampleValues,a=this.valueSize,o=a*2,c=a*3,l=n-e,u=(s-e)/l,d=u*u,h=d*u,g=t*c,M=g-c,T=-2*h+3*d,A=h-d,_=1-T,v=A-d+u;for(let R=0;R!==a;R++){const I=i[M+R+a],P=i[M+R+o]*l,O=i[g+R+a],F=i[g+R]*l;r[R]=_*I+v*P+T*O+A*F}return r}}const Qn=new nt;class $n extends dt{interpolate_(t,e,s,n){const r=super.interpolate_(t,e,s,n);return Qn.fromArray(r).normalize().toArray(r),r}}const k={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},Y={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},Ye={9728:at,9729:be,9984:Yt,9985:qt,9986:Wt,9987:ot},Ze={33071:Qt,33648:Zt,10497:Re},we={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},Se={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"},j={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},Jn={CUBICSPLINE:void 0,LINEAR:ct,STEP:$t},Ee={OPAQUE:"OPAQUE",MASK:"MASK",BLEND:"BLEND"};function es(f){return f.DefaultMaterial===void 0&&(f.DefaultMaterial=new oe({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:Jt})),f.DefaultMaterial}function W(f,t,e){for(const s in e.extensions)f[s]===void 0&&(t.userData.gltfExtensions=t.userData.gltfExtensions||{},t.userData.gltfExtensions[s]=e.extensions[s])}function D(f,t){t.extras!==void 0&&typeof t.extras=="object"&&Object.assign(f.userData,t.extras)}function ts(f,t,e){let s=!1,n=!1,r=!1;for(let c=0,l=t.length;c<l;c++){const u=t[c];if(u.POSITION!==void 0&&(s=!0),u.NORMAL!==void 0&&(n=!0),u.COLOR_0!==void 0&&(r=!0),s&&n&&r)break}if(!s&&!n&&!r)return Promise.resolve(f);const i=[],a=[],o=[];for(let c=0,l=t.length;c<l;c++){const u=t[c];if(s){const d=u.POSITION!==void 0?e.getDependency("accessor",u.POSITION):f.attributes.position;i.push(d)}if(n){const d=u.NORMAL!==void 0?e.getDependency("accessor",u.NORMAL):f.attributes.normal;a.push(d)}if(r){const d=u.COLOR_0!==void 0?e.getDependency("accessor",u.COLOR_0):f.attributes.color;o.push(d)}}return Promise.all([Promise.all(i),Promise.all(a),Promise.all(o)]).then(function(c){const l=c[0],u=c[1],d=c[2];return s&&(f.morphAttributes.position=l),n&&(f.morphAttributes.normal=u),r&&(f.morphAttributes.color=d),f.morphTargetsRelative=!0,f})}function ns(f,t){if(f.updateMorphTargets(),t.weights!==void 0)for(let e=0,s=t.weights.length;e<s;e++)f.morphTargetInfluences[e]=t.weights[e];if(t.extras&&Array.isArray(t.extras.targetNames)){const e=t.extras.targetNames;if(f.morphTargetInfluences.length===e.length){f.morphTargetDictionary={};for(let s=0,n=e.length;s<n;s++)f.morphTargetDictionary[e[s]]=s}}}function ss(f){let t;const e=f.extensions&&f.extensions[y.KHR_DRACO_MESH_COMPRESSION];if(e?t="draco:"+e.bufferView+":"+e.indices+":"+ye(e.attributes):t=f.indices+":"+ye(f.attributes)+":"+f.mode,f.targets!==void 0)for(let s=0,n=f.targets.length;s<n;s++)t+=":"+ye(f.targets[s]);return t}function ye(f){let t="";const e=Object.keys(f).sort();for(let s=0,n=e.length;s<n;s++)t+=e[s]+":"+f[e[s]]+";";return t}function _e(f){switch(f){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.")}}function rs(f){return f.search(/\.jpe?g($|\?)/i)>0||f.search(/^data\:image\/jpeg/)===0?"image/jpeg":f.search(/\.webp($|\?)/i)>0||f.search(/^data\:image\/webp/)===0?"image/webp":f.search(/\.ktx2($|\?)/i)>0||f.search(/^data\:image\/ktx2/)===0?"image/ktx2":"image/png"}const is=new he;class os{constructor(t={},e={}){this.json=t,this.extensions={},this.plugins={},this.options=e,this.cache=new Ln,this.associations=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,n=-1,r=!1,i=-1;if(typeof navigator!="undefined"&&typeof navigator.userAgent!="undefined"){const a=navigator.userAgent;s=/^((?!chrome|android).)*safari/i.test(a)===!0;const o=a.match(/Version\/(\d+)/);n=s&&o?parseInt(o[1],10):-1,r=a.indexOf("Firefox")>-1,i=r?a.match(/Firefox\/([0-9]+)\./)[1]:-1}typeof createImageBitmap=="undefined"||s&&n<17||r&&i<98?this.textureLoader=new en(this.options.manager):this.textureLoader=new tn(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new st(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),this.options.crossOrigin==="use-credentials"&&this.fileLoader.setWithCredentials(!0)}setExtensions(t){this.extensions=t}setPlugins(t){this.plugins=t}parse(t,e){const s=this,n=this.json,r=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll(function(i){return i._markDefs&&i._markDefs()}),Promise.all(this._invokeAll(function(i){return i.beforeRoot&&i.beforeRoot()})).then(function(){return Promise.all([s.getDependencies("scene"),s.getDependencies("animation"),s.getDependencies("camera")])}).then(function(i){const a={scene:i[0][n.scene||0],scenes:i[0],animations:i[1],cameras:i[2],asset:n.asset,parser:s,userData:{}};return W(r,a,n),D(a,n),Promise.all(s._invokeAll(function(o){return o.afterRoot&&o.afterRoot(a)})).then(function(){for(const o of a.scenes)o.updateMatrixWorld();t(a)})}).catch(e)}_markDefs(){const t=this.json.nodes||[],e=this.json.skins||[],s=this.json.meshes||[];for(let n=0,r=e.length;n<r;n++){const i=e[n].joints;for(let a=0,o=i.length;a<o;a++)t[i[a]].isBone=!0}for(let n=0,r=t.length;n<r;n++){const i=t[n];i.mesh!==void 0&&(this._addNodeRef(this.meshCache,i.mesh),i.skin!==void 0&&(s[i.mesh].isSkinnedMesh=!0)),i.camera!==void 0&&this._addNodeRef(this.cameraCache,i.camera)}}_addNodeRef(t,e){e!==void 0&&(t.refs[e]===void 0&&(t.refs[e]=t.uses[e]=0),t.refs[e]++)}_getNodeRef(t,e,s){if(t.refs[e]<=1)return s;const n=s.clone(),r=(i,a)=>{const o=this.associations.get(i);o!=null&&this.associations.set(a,o);for(const[c,l]of i.children.entries())r(l,a.children[c])};return r(s,n),n.name+="_instance_"+t.uses[e]++,n}_invokeOne(t){const e=Object.values(this.plugins);e.push(this);for(let s=0;s<e.length;s++){const n=t(e[s]);if(n)return n}return null}_invokeAll(t){const e=Object.values(this.plugins);e.unshift(this);const s=[];for(let n=0;n<e.length;n++){const r=t(e[n]);r&&s.push(r)}return s}getDependency(t,e){const s=t+":"+e;let n=this.cache.get(s);if(!n){switch(t){case"scene":n=this.loadScene(e);break;case"node":n=this._invokeOne(function(r){return r.loadNode&&r.loadNode(e)});break;case"mesh":n=this._invokeOne(function(r){return r.loadMesh&&r.loadMesh(e)});break;case"accessor":n=this.loadAccessor(e);break;case"bufferView":n=this._invokeOne(function(r){return r.loadBufferView&&r.loadBufferView(e)});break;case"buffer":n=this.loadBuffer(e);break;case"material":n=this._invokeOne(function(r){return r.loadMaterial&&r.loadMaterial(e)});break;case"texture":n=this._invokeOne(function(r){return r.loadTexture&&r.loadTexture(e)});break;case"skin":n=this.loadSkin(e);break;case"animation":n=this._invokeOne(function(r){return r.loadAnimation&&r.loadAnimation(e)});break;case"camera":n=this.loadCamera(e);break;default:if(n=this._invokeOne(function(r){return r!=this&&r.getDependency&&r.getDependency(t,e)}),!n)throw new Error("Unknown type: "+t);break}this.cache.add(s,n)}return n}getDependencies(t){let e=this.cache.get(t);if(!e){const s=this,n=this.json[t+(t==="mesh"?"es":"s")]||[];e=Promise.all(n.map(function(r,i){return s.getDependency(t,i)})),this.cache.add(t,e)}return e}loadBuffer(t){const e=this.json.buffers[t],s=this.fileLoader;if(e.type&&e.type!=="arraybuffer")throw new Error("THREE.GLTFLoader: "+e.type+" buffer type is not supported.");if(e.uri===void 0&&t===0)return Promise.resolve(this.extensions[y.KHR_BINARY_GLTF].body);const n=this.options;return new Promise(function(r,i){s.load(ie.resolveURL(e.uri,n.path),r,void 0,function(){i(new Error('THREE.GLTFLoader: Failed to load buffer "'+e.uri+'".'))})})}loadBufferView(t){const e=this.json.bufferViews[t];return this.getDependency("buffer",e.buffer).then(function(s){const n=e.byteLength||0,r=e.byteOffset||0;return s.slice(r,r+n)})}loadAccessor(t){const e=this,s=this.json,n=this.json.accessors[t];if(n.bufferView===void 0&&n.sparse===void 0){const i=we[n.type],a=Y[n.componentType],o=n.normalized===!0,c=new a(n.count*i);return Promise.resolve(new ge(c,i,o))}const r=[];return n.bufferView!==void 0?r.push(this.getDependency("bufferView",n.bufferView)):r.push(null),n.sparse!==void 0&&(r.push(this.getDependency("bufferView",n.sparse.indices.bufferView)),r.push(this.getDependency("bufferView",n.sparse.values.bufferView))),Promise.all(r).then(function(i){const a=i[0],o=we[n.type],c=Y[n.componentType],l=c.BYTES_PER_ELEMENT,u=l*o,d=n.byteOffset||0,h=n.bufferView!==void 0?s.bufferViews[n.bufferView].byteStride:void 0,g=n.normalized===!0;let M,T;if(h&&h!==u){const A=Math.floor(d/h),_="InterleavedBuffer:"+n.bufferView+":"+n.componentType+":"+A+":"+n.count;let v=e.cache.get(_);v||(M=new c(a,A*h,n.count*h/l),v=new Dt(M,h/l),e.cache.add(_,v)),T=new Bt(v,o,d%h/l,g)}else a===null?M=new c(n.count*o):M=new c(a,d,n.count*o),T=new ge(M,o,g);if(n.sparse!==void 0){const A=we.SCALAR,_=Y[n.sparse.indices.componentType],v=n.sparse.indices.byteOffset||0,R=n.sparse.values.byteOffset||0,I=new _(i[1],v,n.sparse.count*A),P=new c(i[2],R,n.sparse.count*o);a!==null&&(T=new ge(T.array.slice(),T.itemSize,T.normalized)),T.normalized=!1;for(let O=0,F=I.length;O<F;O++){const S=I[O];if(T.setX(S,P[O*o]),o>=2&&T.setY(S,P[O*o+1]),o>=3&&T.setZ(S,P[O*o+2]),o>=4&&T.setW(S,P[O*o+3]),o>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}T.normalized=g}return T})}loadTexture(t){const e=this.json,s=this.options,r=e.textures[t].source,i=e.images[r];let a=this.textureLoader;if(i.uri){const o=s.manager.getHandler(i.uri);o!==null&&(a=o)}return this.loadTextureImage(t,r,a)}loadTextureImage(t,e,s){const n=this,r=this.json,i=r.textures[t],a=r.images[e],o=(a.uri||a.bufferView)+":"+i.sampler;if(this.textureCache[o])return this.textureCache[o];const c=this.loadImageSource(e,s).then(function(l){l.flipY=!1,l.name=i.name||a.name||"",l.name===""&&typeof a.uri=="string"&&a.uri.startsWith("data:image/")===!1&&(l.name=a.uri);const d=(r.samplers||{})[i.sampler]||{};return l.magFilter=Ye[d.magFilter]||be,l.minFilter=Ye[d.minFilter]||ot,l.wrapS=Ze[d.wrapS]||Re,l.wrapT=Ze[d.wrapT]||Re,l.generateMipmaps=!l.isCompressedTexture&&l.minFilter!==at&&l.minFilter!==be,n.associations.set(l,{textures:t}),l}).catch(function(){return null});return this.textureCache[o]=c,c}loadImageSource(t,e){const s=this,n=this.json,r=this.options;if(this.sourceCache[t]!==void 0)return this.sourceCache[t].then(u=>u.clone());const i=n.images[t],a=self.URL||self.webkitURL;let o=i.uri||"",c=!1;if(i.bufferView!==void 0)o=s.getDependency("bufferView",i.bufferView).then(function(u){c=!0;const d=new Blob([u],{type:i.mimeType});return o=a.createObjectURL(d),o});else if(i.uri===void 0)throw new Error("THREE.GLTFLoader: Image "+t+" is missing URI and bufferView");const l=Promise.resolve(o).then(function(u){return new Promise(function(d,h){let g=d;e.isImageBitmapLoader===!0&&(g=function(M){const T=new Ke(M);T.needsUpdate=!0,d(T)}),e.load(ie.resolveURL(u,r.path),g,void 0,h)})}).then(function(u){return c===!0&&a.revokeObjectURL(o),D(u,i),u.userData.mimeType=i.mimeType||rs(i.uri),u}).catch(function(u){throw u});return this.sourceCache[t]=l,l}assignTexture(t,e,s,n){const r=this;return this.getDependency("texture",s.index).then(function(i){if(!i)return null;if(s.texCoord!==void 0&&s.texCoord>0&&(i=i.clone(),i.channel=s.texCoord),r.extensions[y.KHR_TEXTURE_TRANSFORM]){const a=s.extensions!==void 0?s.extensions[y.KHR_TEXTURE_TRANSFORM]:void 0;if(a){const o=r.associations.get(i);i=r.extensions[y.KHR_TEXTURE_TRANSFORM].extendTexture(i,a),r.associations.set(i,o)}}return n!==void 0&&(i.colorSpace=n),t[e]=i,i})}assignFinalMaterial(t){const e=t.geometry;let s=t.material;const n=e.attributes.tangent===void 0,r=e.attributes.color!==void 0,i=e.attributes.normal===void 0;if(t.isPoints){const a="PointsMaterial:"+s.uuid;let o=this.cache.get(a);o||(o=new nn,Te.prototype.copy.call(o,s),o.color.copy(s.color),o.map=s.map,o.sizeAttenuation=!1,this.cache.add(a,o)),s=o}else if(t.isLine){const a="LineBasicMaterial:"+s.uuid;let o=this.cache.get(a);o||(o=new sn,Te.prototype.copy.call(o,s),o.color.copy(s.color),o.map=s.map,this.cache.add(a,o)),s=o}if(n||r||i){let a="ClonedMaterial:"+s.uuid+":";n&&(a+="derivative-tangents:"),r&&(a+="vertex-colors:"),i&&(a+="flat-shading:");let o=this.cache.get(a);o||(o=s.clone(),r&&(o.vertexColors=!0),i&&(o.flatShading=!0),n&&(o.normalScale&&(o.normalScale.y*=-1),o.clearcoatNormalScale&&(o.clearcoatNormalScale.y*=-1)),this.cache.add(a,o),this.associations.set(o,this.associations.get(s))),s=o}t.material=s}getMaterialType(){return oe}loadMaterial(t){const e=this,s=this.json,n=this.extensions,r=s.materials[t];let i;const a={},o=r.extensions||{},c=[];if(o[y.KHR_MATERIALS_UNLIT]){const u=n[y.KHR_MATERIALS_UNLIT];i=u.getMaterialType(),c.push(u.extendParams(a,r,e))}else{const u=r.pbrMetallicRoughness||{};if(a.color=new X(1,1,1),a.opacity=1,Array.isArray(u.baseColorFactor)){const d=u.baseColorFactor;a.color.setRGB(d[0],d[1],d[2],z),a.opacity=d[3]}u.baseColorTexture!==void 0&&c.push(e.assignTexture(a,"map",u.baseColorTexture,ae)),a.metalness=u.metallicFactor!==void 0?u.metallicFactor:1,a.roughness=u.roughnessFactor!==void 0?u.roughnessFactor:1,u.metallicRoughnessTexture!==void 0&&(c.push(e.assignTexture(a,"metalnessMap",u.metallicRoughnessTexture)),c.push(e.assignTexture(a,"roughnessMap",u.metallicRoughnessTexture))),i=this._invokeOne(function(d){return d.getMaterialType&&d.getMaterialType(t)}),c.push(Promise.all(this._invokeAll(function(d){return d.extendMaterialParams&&d.extendMaterialParams(t,a)})))}r.doubleSided===!0&&(a.side=rn);const l=r.alphaMode||Ee.OPAQUE;if(l===Ee.BLEND?(a.transparent=!0,a.depthWrite=!1):(a.transparent=!1,l===Ee.MASK&&(a.alphaTest=r.alphaCutoff!==void 0?r.alphaCutoff:.5)),r.normalTexture!==void 0&&i!==re&&(c.push(e.assignTexture(a,"normalMap",r.normalTexture)),a.normalScale=new ve(1,1),r.normalTexture.scale!==void 0)){const u=r.normalTexture.scale;a.normalScale.set(u,u)}if(r.occlusionTexture!==void 0&&i!==re&&(c.push(e.assignTexture(a,"aoMap",r.occlusionTexture)),r.occlusionTexture.strength!==void 0&&(a.aoMapIntensity=r.occlusionTexture.strength)),r.emissiveFactor!==void 0&&i!==re){const u=r.emissiveFactor;a.emissive=new X().setRGB(u[0],u[1],u[2],z)}return r.emissiveTexture!==void 0&&i!==re&&c.push(e.assignTexture(a,"emissiveMap",r.emissiveTexture,ae)),Promise.all(c).then(function(){const u=new i(a);return r.name&&(u.name=r.name),D(u,r),e.associations.set(u,{materials:t}),r.extensions&&W(n,u,r),u})}createUniqueName(t){const e=on.sanitizeNodeName(t||"");return e in this.nodeNamesUsed?e+"_"+ ++this.nodeNamesUsed[e]:(this.nodeNamesUsed[e]=0,e)}loadGeometries(t){const e=this,s=this.extensions,n=this.primitiveCache;function r(a){return s[y.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(a,e).then(function(o){return Qe(o,a,e)})}const i=[];for(let a=0,o=t.length;a<o;a++){const c=t[a],l=ss(c),u=n[l];if(u)i.push(u.promise);else{let d;c.extensions&&c.extensions[y.KHR_DRACO_MESH_COMPRESSION]?d=r(c):d=Qe(new kt,c,e),n[l]={primitive:c,promise:d},i.push(d)}}return Promise.all(i)}loadMesh(t){const e=this,s=this.json,n=this.extensions,r=s.meshes[t],i=r.primitives,a=[];for(let o=0,c=i.length;o<c;o++){const l=i[o].material===void 0?es(this.cache):this.getDependency("material",i[o].material);a.push(l)}return a.push(e.loadGeometries(i)),Promise.all(a).then(function(o){const c=o.slice(0,o.length-1),l=o[o.length-1],u=[];for(let h=0,g=l.length;h<g;h++){const M=l[h],T=i[h];let A;const _=c[h];if(T.mode===k.TRIANGLES||T.mode===k.TRIANGLE_STRIP||T.mode===k.TRIANGLE_FAN||T.mode===void 0)A=r.isSkinnedMesh===!0?new an(M,_):new de(M,_),A.isSkinnedMesh===!0&&A.normalizeSkinWeights(),T.mode===k.TRIANGLE_STRIP?A.geometry=Xe(A.geometry,tt):T.mode===k.TRIANGLE_FAN&&(A.geometry=Xe(A.geometry,Me));else if(T.mode===k.LINES)A=new cn(M,_);else if(T.mode===k.LINE_STRIP)A=new ln(M,_);else if(T.mode===k.LINE_LOOP)A=new un(M,_);else if(T.mode===k.POINTS)A=new fn(M,_);else throw new Error("THREE.GLTFLoader: Primitive mode unsupported: "+T.mode);Object.keys(A.geometry.morphAttributes).length>0&&ns(A,r),A.name=e.createUniqueName(r.name||"mesh_"+t),D(A,r),T.extensions&&W(n,A,T),e.assignFinalMaterial(A),u.push(A)}for(let h=0,g=u.length;h<g;h++)e.associations.set(u[h],{meshes:t,primitives:h});if(u.length===1)return r.extensions&&W(n,u[0],r),u[0];const d=new xe;r.extensions&&W(n,d,r),e.associations.set(d,{meshes:t});for(let h=0,g=u.length;h<g;h++)d.add(u[h]);return d})}loadCamera(t){let e;const s=this.json.cameras[t],n=s[s.type];if(n)return s.type==="perspective"?e=new lt(dn.radToDeg(n.yfov),n.aspectRatio||1,n.znear||1,n.zfar||2e6):s.type==="orthographic"&&(e=new hn(-n.xmag,n.xmag,n.ymag,-n.ymag,n.znear,n.zfar)),s.name&&(e.name=this.createUniqueName(s.name)),D(e,s),Promise.resolve(e)}loadSkin(t){const e=this.json.skins[t],s=[];for(let n=0,r=e.joints.length;n<r;n++)s.push(this._loadNodeShallow(e.joints[n]));return e.inverseBindMatrices!==void 0?s.push(this.getDependency("accessor",e.inverseBindMatrices)):s.push(null),Promise.all(s).then(function(n){const r=n.pop(),i=n,a=[],o=[];for(let c=0,l=i.length;c<l;c++){const u=i[c];if(u){a.push(u);const d=new he;r!==null&&d.fromArray(r.array,c*16),o.push(d)}}return new pn(a,o)})}loadAnimation(t){const e=this.json,s=this,n=e.animations[t],r=n.name?n.name:"animation_"+t,i=[],a=[],o=[],c=[],l=[];for(let u=0,d=n.channels.length;u<d;u++){const h=n.channels[u],g=n.samplers[h.sampler],M=h.target,T=M.node,A=n.parameters!==void 0?n.parameters[g.input]:g.input,_=n.parameters!==void 0?n.parameters[g.output]:g.output;M.node!==void 0&&(i.push(this.getDependency("node",T)),a.push(this.getDependency("accessor",A)),o.push(this.getDependency("accessor",_)),c.push(g),l.push(M))}return Promise.all([Promise.all(i),Promise.all(a),Promise.all(o),Promise.all(c),Promise.all(l)]).then(function(u){const d=u[0],h=u[1],g=u[2],M=u[3],T=u[4],A=[];for(let v=0,R=d.length;v<R;v++){const I=d[v],P=h[v],O=g[v],F=M[v],S=T[v];if(I===void 0)continue;I.updateMatrix&&I.updateMatrix();const Z=s._createAnimationTracks(I,P,O,F,S);if(Z)for(let Q=0;Q<Z.length;Q++)A.push(Z[Q])}const _=new Ut(r,void 0,A);return D(_,n),_})}createNodeMesh(t){const e=this.json,s=this,n=e.nodes[t];return n.mesh===void 0?null:s.getDependency("mesh",n.mesh).then(function(r){const i=s._getNodeRef(s.meshCache,n.mesh,r);return n.weights!==void 0&&i.traverse(function(a){if(a.isMesh)for(let o=0,c=n.weights.length;o<c;o++)a.morphTargetInfluences[o]=n.weights[o]}),i})}loadNode(t){const e=this.json,s=this,n=e.nodes[t],r=s._loadNodeShallow(t),i=[],a=n.children||[];for(let c=0,l=a.length;c<l;c++)i.push(s.getDependency("node",a[c]));const o=n.skin===void 0?Promise.resolve(null):s.getDependency("skin",n.skin);return Promise.all([r,Promise.all(i),o]).then(function(c){const l=c[0],u=c[1],d=c[2];d!==null&&l.traverse(function(h){h.isSkinnedMesh&&h.bind(d,is)});for(let h=0,g=u.length;h<g;h++)l.add(u[h]);if(l.userData.pivot!==void 0&&u.length>0){const h=l.userData.pivot,g=u[0];l.pivot=new U().fromArray(h),l.position.x-=h[0],l.position.y-=h[1],l.position.z-=h[2],g.position.set(0,0,0),delete l.userData.pivot}return l})}_loadNodeShallow(t){const e=this.json,s=this.extensions,n=this;if(this.nodeCache[t]!==void 0)return this.nodeCache[t];const r=e.nodes[t],i=r.name?n.createUniqueName(r.name):"",a=[],o=n._invokeOne(function(c){return c.createNodeMesh&&c.createNodeMesh(t)});return o&&a.push(o),r.camera!==void 0&&a.push(n.getDependency("camera",r.camera).then(function(c){return n._getNodeRef(n.cameraCache,r.camera,c)})),n._invokeAll(function(c){return c.createNodeAttachment&&c.createNodeAttachment(t)}).forEach(function(c){a.push(c)}),this.nodeCache[t]=Promise.all(a).then(function(c){let l;if(r.isBone===!0?l=new mn:c.length>1?l=new xe:c.length===1?l=c[0]:l=new it,l!==c[0])for(let u=0,d=c.length;u<d;u++)l.add(c[u]);if(r.name&&(l.userData.name=r.name,l.name=i),D(l,r),r.extensions&&W(s,l,r),r.matrix!==void 0){const u=new he;u.fromArray(r.matrix),l.applyMatrix4(u)}else r.translation!==void 0&&l.position.fromArray(r.translation),r.rotation!==void 0&&l.quaternion.fromArray(r.rotation),r.scale!==void 0&&l.scale.fromArray(r.scale);if(!n.associations.has(l))n.associations.set(l,{});else if(r.mesh!==void 0&&n.meshCache.refs[r.mesh]>1){const u=n.associations.get(l);n.associations.set(l,J({},u))}return n.associations.get(l).nodes=t,l}),this.nodeCache[t]}loadScene(t){const e=this.extensions,s=this.json.scenes[t],n=this,r=new xe;s.name&&(r.name=n.createUniqueName(s.name)),D(r,s),s.extensions&&W(e,r,s);const i=s.nodes||[],a=[];for(let o=0,c=i.length;o<c;o++)a.push(n.getDependency("node",i[o]));return Promise.all(a).then(function(o){for(let l=0,u=o.length;l<u;l++){const d=o[l];d.parent!==null?r.add(_n(d)):r.add(d)}const c=l=>{const u=new Map;for(const[d,h]of n.associations)(d instanceof Te||d instanceof Ke)&&u.set(d,h);return l.traverse(d=>{const h=n.associations.get(d);h!=null&&u.set(d,h)}),u};return n.associations=c(r),r})}_createAnimationTracks(t,e,s,n,r){const i=[],a=t.name?t.name:t.uuid,o=[];j[r.path]===j.weights?t.traverse(function(d){d.morphTargetInfluences&&o.push(d.name?d.name:d.uuid)}):o.push(a);let c;switch(j[r.path]){case j.weights:c=je;break;case j.rotation:c=ze;break;case j.translation:case j.scale:c=Ue;break;default:switch(s.itemSize){case 1:c=je;break;case 2:case 3:default:c=Ue;break}break}const l=n.interpolation!==void 0?Jn[n.interpolation]:ct,u=this._getArrayFromAccessor(s);for(let d=0,h=o.length;d<h;d++){const g=new c(o[d]+"."+j[r.path],e.array,u,l);n.interpolation==="CUBICSPLINE"&&this._createCubicSplineTrackInterpolant(g),i.push(g)}return i}_getArrayFromAccessor(t){let e=t.array;if(t.normalized){const s=_e(e.constructor),n=new Float32Array(e.length);for(let r=0,i=e.length;r<i;r++)n[r]=e[r]*s;e=n}return e}_createCubicSplineTrackInterpolant(t){t.createInterpolant=function(s){const n=this instanceof ze?$n:dt;return new n(this.times,this.values,this.getValueSize()/3,s)},t.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0}}function as(f,t,e){const s=t.attributes,n=new gn;if(s.POSITION!==void 0){const a=e.json.accessors[s.POSITION],o=a.min,c=a.max;if(o!==void 0&&c!==void 0){if(n.set(new U(o[0],o[1],o[2]),new U(c[0],c[1],c[2])),a.normalized){const l=_e(Y[a.componentType]);n.min.multiplyScalar(l),n.max.multiplyScalar(l)}}else return}else return;const r=t.targets;if(r!==void 0){const a=new U,o=new U;for(let c=0,l=r.length;c<l;c++){const u=r[c];if(u.POSITION!==void 0){const d=e.json.accessors[u.POSITION],h=d.min,g=d.max;if(h!==void 0&&g!==void 0){if(o.setX(Math.max(Math.abs(h[0]),Math.abs(g[0]))),o.setY(Math.max(Math.abs(h[1]),Math.abs(g[1]))),o.setZ(Math.max(Math.abs(h[2]),Math.abs(g[2]))),d.normalized){const M=_e(Y[d.componentType]);o.multiplyScalar(M)}a.max(o)}}}n.expandByVector(a)}f.boundingBox=n;const i=new Tn;n.getCenter(i.center),i.radius=n.min.distanceTo(n.max)/2,f.boundingSphere=i}function Qe(f,t,e){const s=t.attributes,n=[];function r(i,a){return e.getDependency("accessor",i).then(function(o){f.setAttribute(a,o)})}for(const i in s){const a=Se[i]||i.toLowerCase();a in f.attributes||n.push(r(s[i],a))}if(t.indices!==void 0&&!f.index){const i=e.getDependency("accessor",t.indices).then(function(a){f.setIndex(a)});n.push(i)}return xn.workingColorSpace!==z&&"COLOR_0"in s,D(f,t),as(f,t,e),Promise.all(n).then(function(){return t.targets!==void 0?ts(f,t.targets,e):f})}const cs={class:"workshop-container"},ls={class:"gesture-control-wrapper"},us={key:1,class:"gesture-info"},fs={key:1,class:"info-panel"},ds={class:"info-header"},hs={class:"info-content"},ps=50,fe=.002,V=.6,$e=2.5,Je=4,et=1500,ms=120,gs={__name:"index",setup(f){const t=K(null),e=K(null),s=K(null),n=K(null),r=K(!1),i=K("正在加载模型..."),a=K(!1),o=K({x:0,y:0});let c,l,u,d,h,g=[],M,T,A=null,_=null,v=null,R=null,I=null,P=!1,O=!1,F=null,S={x:0,y:0};const Z=[{id:"DEV-001",name:"加工中心A",status:"运行中",statusColor:"#52c41a",temperature:45,runtime:1234,color:1609983},{id:"DEV-002",name:"加工中心B",status:"待机",statusColor:"#faad14",temperature:28,runtime:2456,color:5424154},{id:"DEV-003",name:"装配机器人",status:"运行中",statusColor:"#52c41a",temperature:38,runtime:3678,color:16065069},{id:"DEV-004",name:"质检设备",status:"故障",statusColor:"#f5222d",temperature:65,runtime:890,color:16419862},{id:"DEV-005",name:"包装机",status:"运行中",statusColor:"#52c41a",temperature:42,runtime:5432,color:7483089}];Ct(()=>{Q(),ht(),mt(),Fe(),window.addEventListener("resize",Ie)}),Pt(()=>{cancelAnimationFrame(h),window.removeEventListener("resize",Ie),window.removeEventListener("click",Le),pe(),d.dispose(),u.dispose(),c.clear()});function Q(){c=new An,c.background=new X(15790837),l=new lt(75,t.value.clientWidth/t.value.clientHeight,.1,1e3),l.position.set(8,8,8),l.lookAt(0,0,0),u=new wn({antialias:!0}),u.setSize(t.value.clientWidth,t.value.clientHeight),u.shadowMap.enabled=!0,t.value.appendChild(u.domElement),d=new Rn(l,u.domElement),d.enableDamping=!0,d.dampingFactor=.05,d.mouseButtons={LEFT:Ae.ROTATE,MIDDLE:Ae.PAN,RIGHT:Ae.PAN};const p=new En(16777215,.6);c.add(p);const m=new rt(16777215,.8);m.position.set(10,10,5),m.castShadow=!0,c.add(m);const w=new yn(20,20),x=new oe({color:13421772}),E=new de(w,x);E.rotation.x=-Math.PI/2,E.receiveShadow=!0,c.add(E);const b=new Mn(20,20,8947848,14540253);c.add(b)}function ht(){const p=[{x:-4,y:1,z:-4},{x:4,y:1,z:-4},{x:0,y:1,z:0},{x:-4,y:1,z:4},{x:4,y:1,z:4}];Z.forEach((m,w)=>{if(w===2)pt(p[w],m);else{const x=new Ve(1.5,1.5,1.5),E=new oe({color:m.color,metalness:.3,roughness:.4}),b=new de(x,E);b.position.set(p[w].x,p[w].y,p[w].z),b.castShadow=!0,b.receiveShadow=!0,b.userData=ue(J({},m),{position:p[w],originalColor:m.color}),c.add(b),g.push(b)}})}function pt(p,m){new vn().load("/models/robot.glb",x=>{A=x.scene,A.position.set(p.x,p.y,p.z),A.scale.set(2,2,2),A.traverse(E=>{E.isMesh&&(E.castShadow=!0,E.receiveShadow=!0)}),A.userData=ue(J({},m),{position:p,originalColor:m.color,isModel:!0}),c.add(A),g.push(A)},x=>{},x=>{const E=new Ve(1.5,1.5,1.5),b=new oe({color:m.color,metalness:.3,roughness:.4}),C=new de(E,b);C.position.set(p.x,p.y,p.z),C.castShadow=!0,C.receiveShadow=!0,C.userData=ue(J({},m),{position:p,originalColor:m.color}),c.add(C),g.push(C)})}function mt(){M=new bn,T=new ve,window.addEventListener("click",Le)}function Le(p){const m=t.value.getBoundingClientRect();T.x=(p.clientX-m.left)/m.width*2-1,T.y=-((p.clientY-m.top)/m.height)*2+1,M.setFromCamera(T,l);const w=M.intersectObjects(g,!0);if(g.forEach(x=>{x.material?(x.material.color.setHex(x.userData.originalColor),x.material.emissive.setHex(0)):x.userData.isModel&&x.traverse(E=>{E.isMesh&&E.material&&E.material.emissive.setHex(0)})}),w.length>0){let E=w[0].object;for(;E.parent&&!g.includes(E);)E=E.parent;E.material?E.material.emissive.setHex(5592405):E.userData.isModel&&E.traverse(b=>{b.isMesh&&b.material&&b.material.emissive.setHex(5592405)}),e.value=E.userData}else e.value=null}function Ie(){l.aspect=t.value.clientWidth/t.value.clientHeight,l.updateProjectionMatrix(),u.setSize(t.value.clientWidth,t.value.clientHeight)}function Ne(){return ee(this,null,function*(){r.value?pe():yield Tt()})}function gt(){return ee(this,null,function*(){return new Promise((p,m)=>{if(window.tf&&window.handpose){p();return}const w=document.createElement("script");w.src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@3.11.0/dist/tf.min.js",w.onload=()=>{const x=document.createElement("script");x.src="https://cdn.jsdelivr.net/npm/@tensorflow-models/handpose@0.0.7/dist/handpose.min.js",x.onload=()=>p(),x.onerror=()=>m(new Error("HandPose 加载失败")),document.head.appendChild(x)},w.onerror=()=>m(new Error("TensorFlow.js 加载失败")),document.head.appendChild(w)})})}function Tt(){return ee(this,null,function*(){try{i.value="正在加载 TensorFlow.js...",yield gt(),i.value="正在加载手势识别模型...",R=yield window.handpose.load(),i.value="正在启动摄像头...",_=yield navigator.mediaDevices.getUserMedia({video:{width:640,height:480,facingMode:"user"}}),s.value.srcObject=_,r.value=!0,yield new Promise(p=>{s.value.onloadedmetadata=p}),n.value.width=s.value.videoWidth,n.value.height=s.value.videoHeight,i.value="手势控制已启用",Oe()}catch(p){i.value="启动失败: "+p.message,pe(),alert("手势控制启动失败: "+p.message)}})}function pe(){_&&(_.getTracks().forEach(p=>p.stop()),_=null),v&&(cancelAnimationFrame(v),v=null),r.value=!1,I=null,P=!1,O=!1,F=null,S={x:0,y:0}}function Oe(){return ee(this,null,function*(){if(!(!r.value||!R)){try{const p=yield R.estimateHands(s.value),m=n.value.getContext("2d");m.clearRect(0,0,n.value.width,n.value.height),m.drawImage(s.value,0,0,n.value.width,n.value.height),p.length>0?(p.forEach(w=>Mt(m,w.landmarks)),p.length>=2?At(p):Pe(p[0].landmarks)):(i.value="未检测到手部",Ce())}catch(p){}v=requestAnimationFrame(Oe)}})}function Ce(){I=null,P=!1,O=!1,F=null,S={x:0,y:0}}function me(p){const m=p[4],w=p[8];return Math.sqrt(Math.pow(m[0]-w[0],2)+Math.pow(m[1]-w[1],2))<ps}function xt(p){const m=p[0],w=[p[4],p[8],p[12],p[16],p[20]];let x=0;return w.forEach(b=>{const C=Math.sqrt(Math.pow(b[0]-m[0],2)+Math.pow(b[1]-m[1],2));x+=C}),x/w.length>ms}function Pe(p){const m=me(p),w=xt(p);if(m){const x=p[4],E=p[8],b=[(x[0]+E[0])/2,(x[1]+E[1])/2],C=b[0]/n.value.width*window.innerWidth,H=b[1]/n.value.height*window.innerHeight;if(o.value={x:C,y:H},a.value=!0,P&&I){let ce=(b[0]-I[0])/n.value.width,le=(b[1]-I[1])/n.value.height;S.x=S.x*(1-V)+ce*V,S.y=S.y*(1-V)+le*V,Math.abs(S.x)<fe&&(S.x=0),Math.abs(S.y)<fe&&(S.y=0),wt(S.x,S.y),i.value="捏合旋转"}I=b,P=!0,F=null}else if(w){if(a.value=!1,F===null)F=Date.now();else{const x=Date.now()-F;x>=et?(yt(),i.value="视角已重置",F=null):i.value=`保持手掌张开 ${((et-x)/1e3).toFixed(1)}s 重置视角`}P=!1,I=null}else a.value=!1,Ce(),i.value="等待手势..."}function At(p){const m=p[0].landmarks,w=p[1].landmarks,x=me(m),E=me(w);if(x&&E){const b=m[4],C=m[8],H=w[4],ce=w[8],le=[(b[0]+C[0])/2,(b[1]+C[1])/2],ke=[(H[0]+ce[0])/2,(H[1]+ce[1])/2],$=[(le[0]+ke[0])/2,(le[1]+ke[1])/2],bt=$[0]/n.value.width*window.innerWidth,Rt=$[1]/n.value.height*window.innerHeight;if(o.value={x:bt,y:Rt},a.value=!0,O&&I){let St=($[0]-I[0])/n.value.width,_t=($[1]-I[1])/n.value.height;S.x=S.x*(1-V)+St*V,S.y=S.y*(1-V)+_t*V,Math.abs(S.x)<fe&&(S.x=0),Math.abs(S.y)<fe&&(S.y=0),Et(S.x,S.y),i.value="双手平移"}I=$,O=!0,P=!1}else O=!1,Pe(p[0].landmarks)}function wt(p,m){const w=-p*Math.PI*$e,x=-m*Math.PI*$e,E=l.position.clone().sub(d.target),b=E.length();let C=Math.atan2(E.x,E.z),H=Math.acos(Math.max(-1,Math.min(1,E.y/b)));C+=w,H+=x,H=Math.max(.1,Math.min(Math.PI-.1,H)),l.position.x=d.target.x+b*Math.sin(H)*Math.sin(C),l.position.y=d.target.y+b*Math.cos(H),l.position.z=d.target.z+b*Math.sin(H)*Math.cos(C),l.lookAt(d.target)}function Et(p,m){const w=new U,x=new U;w.setFromMatrixColumn(l.matrix,0),x.setFromMatrixColumn(l.matrix,1),d.target.add(w.multiplyScalar(-p*Je)),d.target.add(x.multiplyScalar(m*Je))}function yt(){l.position.set(8,8,8),d.target.set(0,0,0),l.lookAt(d.target)}function Mt(p,m){p.fillStyle="#00ff00",m.forEach(x=>{p.beginPath(),p.arc(x[0],x[1],5,0,2*Math.PI),p.fill()});const w=[[0,1],[1,2],[2,3],[3,4],[0,5],[5,6],[6,7],[7,8],[0,9],[9,10],[10,11],[11,12],[0,13],[13,14],[14,15],[15,16],[0,17],[17,18],[18,19],[19,20],[5,9],[9,13],[13,17]];p.strokeStyle="#00ff00",p.lineWidth=2,w.forEach(([x,E])=>{p.beginPath(),p.moveTo(m[x][0],m[x][1]),p.lineTo(m[E][0],m[E][1]),p.stroke()})}function Fe(){h=requestAnimationFrame(Fe),g.forEach((p,m)=>{p.userData.isModel||(p.rotation.y+=.005*(m%2===0?1:-1))}),d.update(),u.render(c,l)}return(p,m)=>(ne(),te("div",cs,[L("div",{ref_key:"container",ref:t,class:"three-container"},null,512),a.value?(ne(),te("div",{key:0,class:"virtual-cursor",style:Ge({left:o.value.x+"px",top:o.value.y+"px"})},[...m[1]||(m[1]=[L("div",{class:"cursor-dot"},null,-1),L("div",{class:"cursor-ring"},null,-1)])],4)):Be("",!0),L("div",ls,[r.value?(ne(),te("div",us,[L("span",null,G(i.value),1),L("button",{onClick:Ne,class:"toggle-btn"},"关闭")])):(ne(),te("button",{key:0,onClick:Ne,class:"gesture-toggle-btn"}," 🎥 启用手势控制 "))]),L("div",{class:Ft(["camera-preview",{hidden:!r.value}])},[L("video",{ref_key:"videoElement",ref:s,autoplay:"",playsinline:""},null,512),L("canvas",{ref_key:"canvasElement",ref:n},null,512)],2),e.value?(ne(),te("div",fs,[L("div",ds,[m[2]||(m[2]=L("h3",null,"设备信息",-1)),L("button",{onClick:m[0]||(m[0]=w=>e.value=null),class:"close-btn"},"×")]),L("div",hs,[L("p",null,[m[3]||(m[3]=L("strong",null,"设备名称:",-1)),q(" "+G(e.value.name),1)]),L("p",null,[m[4]||(m[4]=L("strong",null,"设备ID:",-1)),q(" "+G(e.value.id),1)]),L("p",null,[m[5]||(m[5]=L("strong",null,"状态:",-1)),m[6]||(m[6]=q()),L("span",{style:Ge({color:e.value.statusColor})},G(e.value.status),5)]),L("p",null,[m[7]||(m[7]=L("strong",null,"位置:",-1)),q(" X: "+G(e.value.position.x.toFixed(2))+", Y: "+G(e.value.position.y.toFixed(2))+", Z: "+G(e.value.position.z.toFixed(2)),1)]),L("p",null,[m[8]||(m[8]=L("strong",null,"温度:",-1)),q(" "+G(e.value.temperature)+"°C",1)]),L("p",null,[m[9]||(m[9]=L("strong",null,"运行时长:",-1)),q(" "+G(e.value.runtime)+"小时",1)])])])):Be("",!0)]))}},_s=Sn(gs,[["__scopeId","data-v-c59c8626"]]);export{_s as default};
|