@mappedin/mappedin-js 6.0.1-alpha.13 → 6.0.1-alpha.15
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/lib/esm/GLTFExporter-BPM3MFHO.js +1 -0
- package/lib/esm/GLTFLoader-7ZJVSSMQ.js +1 -0
- package/lib/esm/{PerformanceController-ZYCWEZK7.js → PerformanceController-CVWDM3S3.js} +1 -1
- package/lib/esm/{browser-IIZGUZ6O.js → browser-BUVKEDCH.js} +1 -1
- package/lib/esm/chunk-6VJ6KEGP.js +1 -0
- package/lib/esm/{chunk-H3B4NMBS.js → chunk-HO3E67HR.js} +1 -1
- package/lib/esm/chunk-RRP7UVN7.js +1 -0
- package/lib/esm/index.css +1 -1
- package/lib/esm/index.d.ts +180 -10
- package/lib/esm/index.js +1 -1
- package/lib/esm/{outdoor-context-3XQ5IGQ4.js → outdoor-context-RRODTTVE.js} +1 -1
- package/lib/index.css +1 -1
- package/package.json +12 -5
- package/lib/esm/GLTFExporter-RKHTBBIT.js +0 -1
- package/lib/esm/chunk-GFCRGEQJ.js +0 -1
package/lib/index.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.mMapviewHoverLabel{background:rgba(255,255,255,.9);color:#333;padding:10px;font-size:14px;font-weight:700;transition:opacity .3s;font-family:sans-serif}.mappedin-map{position:relative;overflow:hidden}.mappedin__floating-label{position:absolute;top:0;left:0;opacity:0;width:200px;height:200px;will-change:transform;transition:opacity .3s linear}.mappedin__floating-label__icon{position:absolute;top:0;left:0;width:16px;height:16px}.mappedin__floating-label__icon>svg{position:absolute;top:-50%;left:-50%}.mappedin__floating-label__text_holder{font-family:InterUI-Regular,Helvetica,Arial,sans-serif;font-weight:400;font-weight:500;position:absolute;pointer-events:none;word-break:keep-all}.mappedin__floating-label__text_legacy{text-shadow:1px 1px 0px #ffffff,-1px -1px 0px #ffffff,1px -1px 0px #ffffff,-1px 1px 0px #ffffff}.mappedin__floating-label__text_back{-webkit-text-stroke:4px white;color:#fff}.mappedin__floating-label__text_front{color:#000;position:absolute;display:block;width:100%;height:100%;top:0;left:0}.mappedin-tooltip__wrapper{display:flex;width:1px;height:1px;align-items:center;justify-content:center;z-index:1}.mappedin-tooltip{font-family:InterUI-Regular,Helvetica,Arial,sans-serif;font-weight:400;top:0;transition:transform .3s linear;font-weight:700;color:#000;position:absolute;z-index:1;transition:opacity .3s;display:flex;flex-direction:row;will-change:transform,opacity;justify-content:center}.mappedin-tooltip>div{z-index:2;flex-shrink:0;max-width:500px;background:white;border-radius:20px;box-shadow:0 2px 11px #0003}.mappedin-tooltip:before{content:"";width:0;height:0;top:calc(50% - 10px);left:-10px;z-index:1;position:absolute;border-bottom:10px solid transparent;border-top:10px solid transparent}.mappedin-tooltip.tooltip--anchor-top{left:0;top:0}.mappedin-tooltip.tooltip--anchor-top:before{left:calc(50% - 10px);top:calc(100% - 5px);right:auto;border-bottom:10px solid transparent;border-top:10px solid white;border-left:10px solid transparent;border-right:10px solid transparent}.mappedin-tooltip.tooltip--anchor-bottom{left:0;top:0}.mappedin-tooltip.tooltip--anchor-bottom:before{left:calc(50% - 10px);top:-15px;right:auto;border-bottom:10px solid white;border-top:10px solid transparent;border-left:10px solid transparent;border-right:10px solid transparent}.mappedin-tooltip.tooltip--anchor-right{justify-content:flex-start;left:0;top:0}.mappedin-tooltip.tooltip--anchor-right:before{left:-5px;right:auto;border-right:10px solid white}.mappedin-tooltip.tooltip--anchor-left{left:0;top:0}.mappedin-tooltip.tooltip--anchor-left:before{left:auto;right:-5px;border-left:10px solid white}.mappedin-tooltip.tooltip--anchor-top-left{left:7px;top:7px}.mappedin-tooltip.tooltip--anchor-top-left:before{left:auto;right:-7px;top:calc(100% - 13px);border-bottom:10px solid transparent;border-top:10px solid white;border-left:10px solid transparent;border-right:10px solid transparent;transform:rotate(-45deg)}.mappedin-tooltip.tooltip--anchor-top-right{left:-6px;top:7px}.mappedin-tooltip.tooltip--anchor-top-right:before{left:-7px;right:auto;top:calc(100% - 13px);border-bottom:10px solid transparent;border-top:10px solid white;border-left:10px solid transparent;border-right:10px solid transparent;transform:rotate(45deg)}.mappedin-tooltip.tooltip--anchor-bottom-left{left:7px;top:-6px}.mappedin-tooltip.tooltip--anchor-bottom-left:before{left:auto;right:-7px;top:-7px;border-bottom:10px solid white;border-top:10px solid transparent;border-left:10px solid transparent;border-right:10px solid transparent;transform:rotate(45deg)}.mappedin-tooltip.tooltip--anchor-bottom-right{left:-6px;top:-6px}.mappedin-tooltip.tooltip--anchor-bottom-right:before{left:-7px;right:auto;top:-7px;border-bottom:10px solid white;border-top:10px solid transparent;border-left:10px solid transparent;border-right:10px solid transparent;transform:rotate(-45deg)}.mappedin-tooltip.tooltip--visible{opacity:1}.mappedin-tooltip.pointer-events-none{pointer-events:none}.mappedin-tooltip.pointer-events-auto{pointer-events:auto}.mappedin-marker{font-family:InterUI-Regular,Helvetica,Arial,sans-serif;font-weight:400;pointer-events:none;top:0;transition:transform .3s linear;position:absolute;font-weight:700;color:#000;z-index:1;transition:opacity .3s;display:flex;flex-direction:row;will-change:opacity;justify-content:center}.mappedin__smart-collision-engine__container{position:absolute;left:0;top:0;bottom:0;right:0;pointer-events:none;transform-style:preserve-3d;z-index:1;font-family:InterUI-Regular,Helvetica,Arial,sans-serif}.mappedin__smart-collision-engine-debug__container{position:absolute;left:0;top:0;bottom:0;right:0;transition:opacity .3s ease-in-out;pointer-events:none;will-change:opacity}.mappedin__smart-collision-engine-debug__container.interacting{opacity:.2}.outdoor-ctrl-attrib{display:block;position:absolute;visibility:visible;pointer-events:auto;font:9px/11px InterUI-Regular,Helvetica,Arial,sans-serif;transform:translate(0);padding:3px 20px 1px 5px;background-color:#ffffff80;margin:0;min-width:11px;min-height:11px}.outdoor-ctrl-attrib.outdoor-ctrl-attrib-hide{display:none}.outdoor-ctrl-attrib-top-left{top:0;left:1px;float:left;border-bottom-right-radius:4px}.outdoor-ctrl-attrib-top-right{top:0;right:1px;float:right;border-bottom-left-radius:4px}.outdoor-ctrl-attrib-bottom-left{bottom:0;left:1px;float:left;border-top-right-radius:4px}.outdoor-ctrl-attrib-bottom-right{right:0;bottom:1px;float:right;border-top-left-radius:4px}.outdoor-ctrl-attrib-bottom-left,.outdoor-ctrl-attrib-top-left{padding:3px 5px 1px 20px}.outdoor-ctrl-attrib.outdoor-compact{background-color:transparent}.outdoor-ctrl-attrib.outdoor-compact-show{min-width:15px;min-height:15px;box-sizing:border-box;background-color:#ffffff80}.outdoor-ctrl-attrib-inner,.outdoor-ctrl-attrib-inner a{color:#000000bf;text-decoration:none}.outdoor-ctrl-attrib-inner a:hover{color:#017ef1;text-decoration:underline;cursor:pointer}.outdoor-ctrl-attrib.outdoor-compact .outdoor-ctrl-attrib-inner{display:none}.outdoor-ctrl-attrib-button{display:none;cursor:pointer;position:absolute;background-image:url("data:image/svg+xml;charset=utf-8,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill-rule='evenodd' viewBox='0 0 20 20'><circle cx='10' cy='10' r='5.9' style='fill:rgba(255,255,255,1);'/><path style='fill:rgba(0,0,0,0.7);' d='M4 10a6 6 0 1 0 12 0 6 6 0 1 0-12 0m5-3a1 1 0 1 0 2 0 1 1 0 1 0-2 0m0 3a1 1 0 1 1 2 0v3a1 1 0 1 1-2 0'/></svg>");background-size:15px;width:15px;height:15px;box-sizing:border-box;border-radius:50%;outline:none;top:0;right:2px;border:1px}.outdoor-ctrl-attrib summary.outdoor-ctrl-attrib-button{-webkit-appearance:none;appearance:none;list-style:none}.outdoor-ctrl-attrib summary.outdoor-ctrl-attrib-button::-webkit-details-marker{display:none}.outdoor-ctrl-attrib-top-left .outdoor-ctrl-attrib-button,.outdoor-ctrl-attrib-bottom-left .outdoor-ctrl-attrib-button{left:2px}.outdoor-ctrl-attrib.outdoor-compact .outdoor-ctrl-attrib-button,.outdoor-ctrl-attrib.outdoor-compact-show .outdoor-ctrl-attrib-inner{display:block}
|
|
1
|
+
.mMapviewHoverLabel{background:rgba(255,255,255,.9);color:#333;padding:10px;font-size:14px;font-weight:700;transition:opacity .3s;font-family:sans-serif}.mappedin-map{position:relative;overflow:hidden}.mappedin__floating-label{position:absolute;top:0;left:0;opacity:0;width:200px;height:200px;will-change:transform;transition:opacity .3s linear}.mappedin__floating-label__icon{position:absolute;top:0;left:0;width:16px;height:16px}.mappedin__floating-label__icon>svg{position:absolute;top:-50%;left:-50%}.mappedin__floating-label__text_holder{font-family:InterUI-Regular,Helvetica,Arial,sans-serif;font-weight:400;font-weight:500;position:absolute;pointer-events:none;word-break:keep-all}.mappedin__floating-label__text_legacy{text-shadow:1px 1px 0px #ffffff,-1px -1px 0px #ffffff,1px -1px 0px #ffffff,-1px 1px 0px #ffffff}.mappedin__floating-label__text_back{-webkit-text-stroke:4px white;color:#fff}.mappedin__floating-label__text_front{color:#000;position:absolute;display:block;width:100%;height:100%;top:0;left:0}.mappedin-tooltip__wrapper{display:flex;width:1px;height:1px;align-items:center;justify-content:center;z-index:1}.mappedin-tooltip{font-family:InterUI-Regular,Helvetica,Arial,sans-serif;font-weight:400;top:0;transition:transform .3s linear;font-weight:700;color:#000;position:absolute;z-index:1;transition:opacity .3s;display:flex;flex-direction:row;will-change:transform,opacity;justify-content:center}.mappedin-tooltip>div{z-index:2;flex-shrink:0;max-width:500px;background:white;border-radius:20px;box-shadow:0 2px 11px #0003}.mappedin-tooltip:before{content:"";width:0;height:0;top:calc(50% - 10px);left:-10px;z-index:1;position:absolute;border-bottom:10px solid transparent;border-top:10px solid transparent}.mappedin-tooltip.tooltip--anchor-top{left:0;top:0}.mappedin-tooltip.tooltip--anchor-top:before{left:calc(50% - 10px);top:calc(100% - 5px);right:auto;border-bottom:10px solid transparent;border-top:10px solid white;border-left:10px solid transparent;border-right:10px solid transparent}.mappedin-tooltip.tooltip--anchor-bottom{left:0;top:0}.mappedin-tooltip.tooltip--anchor-bottom:before{left:calc(50% - 10px);top:-15px;right:auto;border-bottom:10px solid white;border-top:10px solid transparent;border-left:10px solid transparent;border-right:10px solid transparent}.mappedin-tooltip.tooltip--anchor-right{justify-content:flex-start;left:0;top:0}.mappedin-tooltip.tooltip--anchor-right:before{left:-5px;right:auto;border-right:10px solid white}.mappedin-tooltip.tooltip--anchor-left{left:0;top:0}.mappedin-tooltip.tooltip--anchor-left:before{left:auto;right:-5px;border-left:10px solid white}.mappedin-tooltip.tooltip--anchor-top-left{left:7px;top:7px}.mappedin-tooltip.tooltip--anchor-top-left:before{left:auto;right:-7px;top:calc(100% - 13px);border-bottom:10px solid transparent;border-top:10px solid white;border-left:10px solid transparent;border-right:10px solid transparent;transform:rotate(-45deg)}.mappedin-tooltip.tooltip--anchor-top-right{left:-6px;top:7px}.mappedin-tooltip.tooltip--anchor-top-right:before{left:-7px;right:auto;top:calc(100% - 13px);border-bottom:10px solid transparent;border-top:10px solid white;border-left:10px solid transparent;border-right:10px solid transparent;transform:rotate(45deg)}.mappedin-tooltip.tooltip--anchor-bottom-left{left:7px;top:-6px}.mappedin-tooltip.tooltip--anchor-bottom-left:before{left:auto;right:-7px;top:-7px;border-bottom:10px solid white;border-top:10px solid transparent;border-left:10px solid transparent;border-right:10px solid transparent;transform:rotate(45deg)}.mappedin-tooltip.tooltip--anchor-bottom-right{left:-6px;top:-6px}.mappedin-tooltip.tooltip--anchor-bottom-right:before{left:-7px;right:auto;top:-7px;border-bottom:10px solid white;border-top:10px solid transparent;border-left:10px solid transparent;border-right:10px solid transparent;transform:rotate(-45deg)}.mappedin-tooltip.tooltip--visible{opacity:1}.mappedin-tooltip.pointer-events-none{pointer-events:none}.mappedin-tooltip.pointer-events-auto{pointer-events:auto}.mappedin-marker{font-family:InterUI-Regular,Helvetica,Arial,sans-serif;font-weight:400;pointer-events:none;top:0;transition:transform .3s linear;position:absolute;font-weight:700;color:#000;z-index:1;transition:opacity .3s;display:flex;flex-direction:row;will-change:opacity;justify-content:center}:root{--pin-shadow-hover-scale: .9;--pin-shadow-width: 12px;--pin-shadow-height: 5px;--pin-shadow-opacity: .35;--pin-drop-animation-duration-ms: .25s}@keyframes drop-pin{0%{transform:translateY(-200%)}to{transform:translateY(0)}}@keyframes pin-shadow{0%{transform:scale(var(--pin-shadow-hover-scale))}to{transform:scale(1)}}.mappedin-dropped-pin-wrapper{position:relative;width:fit-content;height:fit-content;width:36px;height:42px}.mappedin-dropped-pin-wrapper svg{position:absolute;left:calc(50% - var(--pin-shadow-width));animation:drop-pin var(--pin-drop-animation-duration-ms) ease-in}.mappedin-dropped-pin-wrapper>.pin-shadow{position:absolute;left:calc(50% - (var(--pin-shadow-width) / 2));bottom:0;height:var(--pin-shadow-height);width:var(--pin-shadow-width);border-radius:100%;opacity:var(--pin-shadow-opacity);animation:pin-shadow .25s ease-in}@keyframes bounce{0%{transform:translateY(-10px);opacity:0}12.5%{transform:translateY(0);opacity:1}25%{transform:translateY(0)}37.5%{transform:translateY(-10px)}50%{transform:translateY(0)}62.5%{transform:translateY(-10px)}75%{transform:translateY(0)}87.5%{transform:translateY(-10px)}to{transform:translateY(0)}}.mappedin-connection-marker .bouncey{animation:bounce 2.5s linear}.mappedin-connection-marker .arrow--down{transform:rotate(180deg)}.mappedin-connection-marker .connection-circle{display:flex;justify-content:center;align-items:center;border-radius:50%;border:2px solid white;box-shadow:0 2px 8px #00000026}.mappedin__smart-collision-engine__container{position:absolute;left:0;top:0;bottom:0;right:0;pointer-events:none;transform-style:preserve-3d;z-index:1;font-family:InterUI-Regular,Helvetica,Arial,sans-serif}.mappedin__smart-collision-engine-debug__container{position:absolute;left:0;top:0;bottom:0;right:0;transition:opacity .3s ease-in-out;pointer-events:none;will-change:opacity}.mappedin__smart-collision-engine-debug__container.interacting{opacity:.2}.outdoor-ctrl-attrib{display:block;position:absolute;visibility:visible;pointer-events:auto;font:9px/11px InterUI-Regular,Helvetica,Arial,sans-serif;transform:translate(0);padding:3px 20px 1px 5px;background-color:#ffffff80;margin:0;min-width:11px;min-height:11px}.outdoor-ctrl-attrib.outdoor-ctrl-attrib-hide{display:none}.outdoor-ctrl-attrib-top-left{top:0;left:1px;float:left;border-bottom-right-radius:4px}.outdoor-ctrl-attrib-top-right{top:0;right:1px;float:right;border-bottom-left-radius:4px}.outdoor-ctrl-attrib-bottom-left{bottom:0;left:1px;float:left;border-top-right-radius:4px}.outdoor-ctrl-attrib-bottom-right{right:0;bottom:1px;float:right;border-top-left-radius:4px}.outdoor-ctrl-attrib-bottom-left,.outdoor-ctrl-attrib-top-left{padding:3px 5px 1px 20px}.outdoor-ctrl-attrib.outdoor-compact{background-color:transparent}.outdoor-ctrl-attrib.outdoor-compact-show{min-width:15px;min-height:15px;box-sizing:border-box;background-color:#ffffff80}.outdoor-ctrl-attrib-inner,.outdoor-ctrl-attrib-inner a{color:#000000bf;text-decoration:none}.outdoor-ctrl-attrib-inner a:hover{color:#017ef1;text-decoration:underline;cursor:pointer}.outdoor-ctrl-attrib.outdoor-compact .outdoor-ctrl-attrib-inner{display:none}.outdoor-ctrl-attrib-button{display:none;cursor:pointer;position:absolute;background-image:url("data:image/svg+xml;charset=utf-8,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill-rule='evenodd' viewBox='0 0 20 20'><circle cx='10' cy='10' r='5.9' style='fill:rgba(255,255,255,1);'/><path style='fill:rgba(0,0,0,0.7);' d='M4 10a6 6 0 1 0 12 0 6 6 0 1 0-12 0m5-3a1 1 0 1 0 2 0 1 1 0 1 0-2 0m0 3a1 1 0 1 1 2 0v3a1 1 0 1 1-2 0'/></svg>");background-size:15px;width:15px;height:15px;box-sizing:border-box;border-radius:50%;outline:none;top:0;right:2px;border:1px}.outdoor-ctrl-attrib summary.outdoor-ctrl-attrib-button{-webkit-appearance:none;appearance:none;list-style:none}.outdoor-ctrl-attrib summary.outdoor-ctrl-attrib-button::-webkit-details-marker{display:none}.outdoor-ctrl-attrib-top-left .outdoor-ctrl-attrib-button,.outdoor-ctrl-attrib-bottom-left .outdoor-ctrl-attrib-button{left:2px}.outdoor-ctrl-attrib.outdoor-compact .outdoor-ctrl-attrib-button,.outdoor-ctrl-attrib.outdoor-compact-show .outdoor-ctrl-attrib-inner{display:block}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mappedin/mappedin-js",
|
|
3
|
-
"version": "6.0.1-alpha.
|
|
3
|
+
"version": "6.0.1-alpha.15",
|
|
4
4
|
"private": false,
|
|
5
5
|
"main": "lib/esm/index.js",
|
|
6
6
|
"module": "lib/esm/index.js",
|
|
@@ -18,20 +18,27 @@
|
|
|
18
18
|
"scripts": {
|
|
19
19
|
"rel:patch": "node scripts/release.mjs patch",
|
|
20
20
|
"start": "yarn build && concurrently \"node scripts/build.mjs --watchChanges\" \"node scripts/start.mjs\"",
|
|
21
|
-
"
|
|
21
|
+
"start:ngaf": "yarn clean && node scripts/build.mjs && yarn copy-styles && concurrently \"node scripts/build.mjs --watchChanges\" \"node scripts/start.mjs\"",
|
|
22
|
+
"build": "yarn clean && yarn types && node scripts/build.mjs && yarn copy-styles",
|
|
22
23
|
"build:prod": "cross-env NODE_ENV=production yarn build",
|
|
23
24
|
"build:examples": "cross-env NODE_ENV=production yarn build && node scripts/build-examples.mjs",
|
|
24
|
-
"types": "tsc -b
|
|
25
|
+
"types": "tsc -b ./tsconfig.build.json",
|
|
26
|
+
"test": "jest",
|
|
27
|
+
"test:cov": "jest --coverage",
|
|
25
28
|
"typecheck": "tsc --noEmit",
|
|
26
29
|
"copy-styles": "cp lib/esm/index.css lib/index.css",
|
|
27
30
|
"clean": "rm -rf lib/** && rm -rf examples/dist/**",
|
|
28
31
|
"docs": "yarn build && typedoc"
|
|
29
32
|
},
|
|
33
|
+
"dependencies": {
|
|
34
|
+
"@mappedin/core-sdk": "^6.1.2-alpha.0"
|
|
35
|
+
},
|
|
30
36
|
"devDependencies": {
|
|
37
|
+
"@swc/jest": "^0.2.36",
|
|
31
38
|
"@types/offscreencanvas": "^2019.6.3",
|
|
32
39
|
"archiver": "^5.3.1",
|
|
33
|
-
"jest
|
|
34
|
-
"jest-
|
|
40
|
+
"jest": "29.7.0",
|
|
41
|
+
"jest-environment-jsdom": "29.7.0"
|
|
35
42
|
},
|
|
36
43
|
"volta": {
|
|
37
44
|
"extends": "../../package.json"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$ as _,A as He,D as Ve,E as V,L as G,N as Ge,Oa as z,Pa as Ze,R as Ye,S as D,V as W,Y as Ke,ba as je,da as qe,e as _e,fa as Xe,ha as We,i as Ce,j as Ue,k as ve,l as Le,m as Oe,ma as Je,n as De,o as Pe,oa as P,p as ze,q as Be,va as Y,w as Fe,wa as Qe,z as ke}from"./chunk-GFCRGEQJ.js";import{a as H}from"./chunk-H3B4NMBS.js";import{a as T}from"./chunk-J5IUISYU.js";H();H();var B,J,U,K;function j(c,e=1/0,s=null){J||(J=new We(2,2,1,1)),U||(U=new qe({uniforms:{blitTexture:new Ze(c)},vertexShader:"\n varying vec2 vUv;\n void main(){\n vUv = uv;\n gl_Position = vec4(position.xy * 1.0,0.,.999999);\n }",fragmentShader:"\n uniform sampler2D blitTexture; \n varying vec2 vUv;\n\n void main(){ \n gl_FragColor = vec4(vUv.xy, 0, 1);\n \n #ifdef IS_SRGB\n gl_FragColor = LinearTosRGB( texture2D( blitTexture, vUv) );\n #else\n gl_FragColor = texture2D( blitTexture, vUv);\n #endif\n }"})),U.uniforms.blitTexture.value=c,U.defines.IS_SRGB=c.colorSpace==V,U.needsUpdate=!0,K||(K=new je(J,U),K.frustrumCulled=!1);let r=new Xe,t=new P;t.add(K),s===null&&(s=B=new Je({antialias:!1}));let i=Math.min(c.image.width,e),n=Math.min(c.image.height,e);s.setSize(i,n),s.clear(),s.render(t,r);let o=document.createElement("canvas"),a=o.getContext("2d");o.width=i,o.height=n,a.drawImage(s.domElement,0,0,i,n);let u=new Qe(o);return u.minFilter=c.minFilter,u.magFilter=c.magFilter,u.wrapS=c.wrapS,u.wrapT=c.wrapT,u.name=c.name,B&&(B.forceContextLoss(),B.dispose(),B=null),u}T(j,"decompress");var $e={POSITION:["byte","byte normalized","unsigned byte","unsigned byte normalized","short","short normalized","unsigned short","unsigned short normalized"],NORMAL:["byte normalized","short normalized"],TANGENT:["byte normalized","short normalized"],TEXCOORD:["byte","byte normalized","unsigned byte","short","short normalized","unsigned short"]},pe=class pe{constructor(){this.pluginCallbacks=[],this.register(function(e){return new ee(e)}),this.register(function(e){return new se(e)}),this.register(function(e){return new re(e)}),this.register(function(e){return new ie(e)}),this.register(function(e){return new oe(e)}),this.register(function(e){return new ae(e)}),this.register(function(e){return new te(e)}),this.register(function(e){return new ne(e)}),this.register(function(e){return new ce(e)}),this.register(function(e){return new ue(e)}),this.register(function(e){return new le(e)}),this.register(function(e){return new fe(e)}),this.register(function(e){return new he(e)})}register(e){return this.pluginCallbacks.indexOf(e)===-1&&this.pluginCallbacks.push(e),this}unregister(e){return this.pluginCallbacks.indexOf(e)!==-1&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(e),1),this}parse(e,s,r,t){let i=new $,n=[];for(let o=0,a=this.pluginCallbacks.length;o<a;o++)n.push(this.pluginCallbacks[o](i));i.setPlugins(n),i.write(e,s,t).catch(r)}parseAsync(e,s){let r=this;return new Promise(function(t,i){r.parse(e,t,i,s)})}};T(pe,"GLTFExporter");var q=pe,x={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,BYTE:5120,UNSIGNED_BYTE:5121,SHORT:5122,UNSIGNED_SHORT:5123,INT:5124,UNSIGNED_INT:5125,FLOAT:5126,ARRAY_BUFFER:34962,ELEMENT_ARRAY_BUFFER:34963,NEAREST:9728,LINEAR:9729,NEAREST_MIPMAP_NEAREST:9984,LINEAR_MIPMAP_NEAREST:9985,NEAREST_MIPMAP_LINEAR:9986,LINEAR_MIPMAP_LINEAR:9987,CLAMP_TO_EDGE:33071,MIRRORED_REPEAT:33648,REPEAT:10497},Q="KHR_mesh_quantization",b={};b[Le]=x.NEAREST;b[Oe]=x.NEAREST_MIPMAP_NEAREST;b[De]=x.NEAREST_MIPMAP_LINEAR;b[Pe]=x.LINEAR;b[ze]=x.LINEAR_MIPMAP_NEAREST;b[Be]=x.LINEAR_MIPMAP_LINEAR;b[Ue]=x.CLAMP_TO_EDGE;b[Ce]=x.REPEAT;b[ve]=x.MIRRORED_REPEAT;var es={scale:"scale",position:"translation",quaternion:"rotation",morphTargetInfluences:"weights"},cs=new Ke,ss=12,us=1179937895,ls=2,ts=8,fs=1313821514,hs=5130562;function F(c,e){return c.length===e.length&&c.every(function(s,r){return s===e[r]})}T(F,"equalArray");function ps(c){return new TextEncoder().encode(c).buffer}T(ps,"stringToArrayBuffer");function ds(c){return F(c.elements,[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1])}T(ds,"isIdentityMatrix");function gs(c,e,s){let r={min:new Array(c.itemSize).fill(Number.POSITIVE_INFINITY),max:new Array(c.itemSize).fill(Number.NEGATIVE_INFINITY)};for(let t=e;t<e+s;t++)for(let i=0;i<c.itemSize;i++){let n;c.itemSize>4?n=c.array[t*c.itemSize+i]:(i===0?n=c.getX(t):i===1?n=c.getY(t):i===2?n=c.getZ(t):i===3&&(n=c.getW(t)),c.normalized===!0&&(n=G.normalize(n,c.array))),r.min[i]=Math.min(r.min[i],n),r.max[i]=Math.max(r.max[i],n)}return r}T(gs,"getMinMax");function is(c){return Math.ceil(c/4)*4}T(is,"getPaddedBufferSize");function Z(c,e=0){let s=is(c.byteLength);if(s!==c.byteLength){let r=new Uint8Array(s);if(r.set(new Uint8Array(c)),e!==0)for(let t=c.byteLength;t<s;t++)r[t]=e;return r.buffer}return c}T(Z,"getPaddedArrayBuffer");function ns(){return typeof document>"u"&&typeof OffscreenCanvas<"u"?new OffscreenCanvas(1,1):document.createElement("canvas")}T(ns,"getCanvas");function rs(c,e){if(c.toBlob!==void 0)return new Promise(r=>c.toBlob(r,e));let s;return e==="image/jpeg"?s=.92:e==="image/webp"&&(s=.8),c.convertToBlob({type:e,quality:s})}T(rs,"getToBlobPromise");var de=class de{constructor(){this.plugins=[],this.options={},this.pending=[],this.buffers=[],this.byteOffset=0,this.buffers=[],this.nodeMap=new Map,this.skins=[],this.extensionsUsed={},this.extensionsRequired={},this.uids=new Map,this.uid=0,this.json={asset:{version:"2.0",generator:"THREE.GLTFExporter"}},this.cache={meshes:new Map,attributes:new Map,attributesNormalized:new Map,materials:new Map,textures:new Map,images:new Map}}setPlugins(e){this.plugins=e}async write(e,s,r={}){this.options=Object.assign({binary:!1,trs:!1,onlyVisible:!0,maxTextureSize:1/0,animations:[],includeCustomExtensions:!1},r),this.options.animations.length>0&&(this.options.trs=!0),this.processInput(e),await Promise.all(this.pending);let t=this,i=t.buffers,n=t.json;r=t.options;let o=t.extensionsUsed,a=t.extensionsRequired,u=new Blob(i,{type:"application/octet-stream"}),p=Object.keys(o),f=Object.keys(a);if(p.length>0&&(n.extensionsUsed=p),f.length>0&&(n.extensionsRequired=f),n.buffers&&n.buffers.length>0&&(n.buffers[0].byteLength=u.size),r.binary===!0){let m=new FileReader;m.readAsArrayBuffer(u),m.onloadend=function(){let l=Z(m.result),d=new DataView(new ArrayBuffer(ts));d.setUint32(0,l.byteLength,!0),d.setUint32(4,hs,!0);let h=Z(ps(JSON.stringify(n)),32),w=new DataView(new ArrayBuffer(ts));w.setUint32(0,h.byteLength,!0),w.setUint32(4,fs,!0);let M=new ArrayBuffer(ss),N=new DataView(M);N.setUint32(0,us,!0),N.setUint32(4,ls,!0);let k=ss+w.byteLength+h.byteLength+d.byteLength+l.byteLength;N.setUint32(8,k,!0);let g=new Blob([M,w,h,d,l],{type:"application/octet-stream"}),y=new FileReader;y.readAsArrayBuffer(g),y.onloadend=function(){s(y.result)}}}else if(n.buffers&&n.buffers.length>0){let m=new FileReader;m.readAsDataURL(u),m.onloadend=function(){let l=m.result;n.buffers[0].uri=l,s(n)}}else s(n)}serializeUserData(e,s){if(Object.keys(e.userData).length===0)return;let r=this.options,t=this.extensionsUsed;try{let i=JSON.parse(JSON.stringify(e.userData));if(r.includeCustomExtensions&&i.gltfExtensions){s.extensions===void 0&&(s.extensions={});for(let n in i.gltfExtensions)s.extensions[n]=i.gltfExtensions[n],t[n]=!0;delete i.gltfExtensions}Object.keys(i).length>0&&(s.extras=i)}catch(i){console.warn("THREE.GLTFExporter: userData of '"+e.name+"' won't be serialized because of JSON.stringify error - "+i.message)}}getUID(e,s=!1){if(this.uids.has(e)===!1){let t=new Map;t.set(!0,this.uid++),t.set(!1,this.uid++),this.uids.set(e,t)}return this.uids.get(e).get(s)}isNormalizedNormalAttribute(e){if(this.cache.attributesNormalized.has(e))return!1;let r=new D;for(let t=0,i=e.count;t<i;t++)if(Math.abs(r.fromBufferAttribute(e,t).length()-1)>5e-4)return!1;return!0}createNormalizedNormalAttribute(e){let s=this.cache;if(s.attributesNormalized.has(e))return s.attributesNormalized.get(e);let r=e.clone(),t=new D;for(let i=0,n=r.count;i<n;i++)t.fromBufferAttribute(r,i),t.x===0&&t.y===0&&t.z===0?t.setX(1):t.normalize(),r.setXYZ(i,t.x,t.y,t.z);return s.attributesNormalized.set(e,r),r}applyTextureTransform(e,s){let r=!1,t={};(s.offset.x!==0||s.offset.y!==0)&&(t.offset=s.offset.toArray(),r=!0),s.rotation!==0&&(t.rotation=s.rotation,r=!0),(s.repeat.x!==1||s.repeat.y!==1)&&(t.scale=s.repeat.toArray(),r=!0),r&&(e.extensions=e.extensions||{},e.extensions.KHR_texture_transform=t,this.extensionsUsed.KHR_texture_transform=!0)}buildMetalRoughTexture(e,s){if(e===s)return e;function r(l){return l.colorSpace===V?T(function(h){return h<.04045?h*.0773993808:Math.pow(h*.9478672986+.0521327014,2.4)},"SRGBToLinear"):T(function(h){return h},"LinearToLinear")}T(r,"getEncodingConversion"),console.warn("THREE.GLTFExporter: Merged metalnessMap and roughnessMap textures."),e instanceof Y&&(e=j(e)),s instanceof Y&&(s=j(s));let t=e?e.image:null,i=s?s.image:null,n=Math.max(t?t.width:0,i?i.width:0),o=Math.max(t?t.height:0,i?i.height:0),a=ns();a.width=n,a.height=o;let u=a.getContext("2d");u.fillStyle="#00ffff",u.fillRect(0,0,n,o);let p=u.getImageData(0,0,n,o);if(t){u.drawImage(t,0,0,n,o);let l=r(e),d=u.getImageData(0,0,n,o).data;for(let h=2;h<d.length;h+=4)p.data[h]=l(d[h]/256)*256}if(i){u.drawImage(i,0,0,n,o);let l=r(s),d=u.getImageData(0,0,n,o).data;for(let h=1;h<d.length;h+=4)p.data[h]=l(d[h]/256)*256}u.putImageData(p,0,0);let m=(e||s).clone();return m.source=new Ge(a),m.colorSpace=Ve,m.channel=(e||s).channel,e&&s&&e.channel!==s.channel&&console.warn("THREE.GLTFExporter: UV channels for metalnessMap and roughnessMap textures must match."),m}processBuffer(e){let s=this.json,r=this.buffers;return s.buffers||(s.buffers=[{byteLength:0}]),r.push(e),0}processBufferView(e,s,r,t,i){let n=this.json;n.bufferViews||(n.bufferViews=[]);let o;switch(s){case x.BYTE:case x.UNSIGNED_BYTE:o=1;break;case x.SHORT:case x.UNSIGNED_SHORT:o=2;break;default:o=4}let a=is(t*e.itemSize*o),u=new DataView(new ArrayBuffer(a)),p=0;for(let l=r;l<r+t;l++)for(let d=0;d<e.itemSize;d++){let h;e.itemSize>4?h=e.array[l*e.itemSize+d]:(d===0?h=e.getX(l):d===1?h=e.getY(l):d===2?h=e.getZ(l):d===3&&(h=e.getW(l)),e.normalized===!0&&(h=G.normalize(h,e.array))),s===x.FLOAT?u.setFloat32(p,h,!0):s===x.INT?u.setInt32(p,h,!0):s===x.UNSIGNED_INT?u.setUint32(p,h,!0):s===x.SHORT?u.setInt16(p,h,!0):s===x.UNSIGNED_SHORT?u.setUint16(p,h,!0):s===x.BYTE?u.setInt8(p,h):s===x.UNSIGNED_BYTE&&u.setUint8(p,h),p+=o}let f={buffer:this.processBuffer(u.buffer),byteOffset:this.byteOffset,byteLength:a};return i!==void 0&&(f.target=i),i===x.ARRAY_BUFFER&&(f.byteStride=e.itemSize*o),this.byteOffset+=a,n.bufferViews.push(f),{id:n.bufferViews.length-1,byteLength:0}}processBufferViewImage(e){let s=this,r=s.json;return r.bufferViews||(r.bufferViews=[]),new Promise(function(t){let i=new FileReader;i.readAsArrayBuffer(e),i.onloadend=function(){let n=Z(i.result),o={buffer:s.processBuffer(n),byteOffset:s.byteOffset,byteLength:n.byteLength};s.byteOffset+=n.byteLength,t(r.bufferViews.push(o)-1)}})}processAccessor(e,s,r,t){let i=this.json,n={1:"SCALAR",2:"VEC2",3:"VEC3",4:"VEC4",9:"MAT3",16:"MAT4"},o;if(e.array.constructor===Float32Array)o=x.FLOAT;else if(e.array.constructor===Int32Array)o=x.INT;else if(e.array.constructor===Uint32Array)o=x.UNSIGNED_INT;else if(e.array.constructor===Int16Array)o=x.SHORT;else if(e.array.constructor===Uint16Array)o=x.UNSIGNED_SHORT;else if(e.array.constructor===Int8Array)o=x.BYTE;else if(e.array.constructor===Uint8Array)o=x.UNSIGNED_BYTE;else throw new Error("THREE.GLTFExporter: Unsupported bufferAttribute component type: "+e.array.constructor.name);if(r===void 0&&(r=0),(t===void 0||t===1/0)&&(t=e.count),t===0)return null;let a=gs(e,r,t),u;s!==void 0&&(u=e===s.index?x.ELEMENT_ARRAY_BUFFER:x.ARRAY_BUFFER);let p=this.processBufferView(e,o,r,t,u),f={bufferView:p.id,byteOffset:p.byteOffset,componentType:o,count:t,max:a.max,min:a.min,type:n[e.itemSize]};return e.normalized===!0&&(f.normalized=!0),i.accessors||(i.accessors=[]),i.accessors.push(f)-1}processImage(e,s,r,t="image/png"){if(e!==null){let i=this,n=i.cache,o=i.json,a=i.options,u=i.pending;n.images.has(e)||n.images.set(e,{});let p=n.images.get(e),f=t+":flipY/"+r.toString();if(p[f]!==void 0)return p[f];o.images||(o.images=[]);let m={mimeType:t},l=ns();l.width=Math.min(e.width,a.maxTextureSize),l.height=Math.min(e.height,a.maxTextureSize);let d=l.getContext("2d");if(r===!0&&(d.translate(0,l.height),d.scale(1,-1)),e.data!==void 0){s!==Fe&&console.error("GLTFExporter: Only RGBAFormat is supported.",s),(e.width>a.maxTextureSize||e.height>a.maxTextureSize)&&console.warn("GLTFExporter: Image size is bigger than maxTextureSize",e);let w=new Uint8ClampedArray(e.height*e.width*4);for(let M=0;M<w.length;M+=4)w[M+0]=e.data[M+0],w[M+1]=e.data[M+1],w[M+2]=e.data[M+2],w[M+3]=e.data[M+3];d.putImageData(new ImageData(w,e.width,e.height),0,0)}else if(typeof HTMLImageElement<"u"&&e instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&e instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&e instanceof ImageBitmap)d.drawImage(e,0,0,l.width,l.height);else throw new Error("THREE.GLTFExporter: Invalid image type. Use HTMLImageElement, HTMLCanvasElement or ImageBitmap.");a.binary===!0?u.push(rs(l,t).then(w=>i.processBufferViewImage(w)).then(w=>{m.bufferView=w})):l.toDataURL!==void 0?m.uri=l.toDataURL(t):u.push(rs(l,t).then(w=>new FileReader().readAsDataURL(w)).then(w=>{m.uri=w}));let h=o.images.push(m)-1;return p[f]=h,h}else throw new Error("THREE.GLTFExporter: No valid image data found. Unable to process texture.")}processSampler(e){let s=this.json;s.samplers||(s.samplers=[]);let r={magFilter:b[e.magFilter],minFilter:b[e.minFilter],wrapS:b[e.wrapS],wrapT:b[e.wrapT]};return s.samplers.push(r)-1}processTexture(e){let r=this.options,t=this.cache,i=this.json;if(t.textures.has(e))return t.textures.get(e);i.textures||(i.textures=[]),e instanceof Y&&(e=j(e,r.maxTextureSize));let n=e.userData.mimeType;n==="image/webp"&&(n="image/png");let o={sampler:this.processSampler(e),source:this.processImage(e.image,e.format,e.flipY,n)};e.name&&(o.name=e.name),this._invokeAll(function(u){u.writeTexture&&u.writeTexture(e,o)});let a=i.textures.push(o)-1;return t.textures.set(e,a),a}processMaterial(e){let s=this.cache,r=this.json;if(s.materials.has(e))return s.materials.get(e);if(e.isShaderMaterial)return console.warn("GLTFExporter: THREE.ShaderMaterial not supported."),null;r.materials||(r.materials=[]);let t={pbrMetallicRoughness:{}};e.isMeshStandardMaterial!==!0&&e.isMeshBasicMaterial!==!0&&console.warn("GLTFExporter: Use MeshStandardMaterial or MeshBasicMaterial for best results.");let i=e.color.toArray().concat([e.opacity]);if(F(i,[1,1,1,1])||(t.pbrMetallicRoughness.baseColorFactor=i),e.isMeshStandardMaterial?(t.pbrMetallicRoughness.metallicFactor=e.metalness,t.pbrMetallicRoughness.roughnessFactor=e.roughness):(t.pbrMetallicRoughness.metallicFactor=.5,t.pbrMetallicRoughness.roughnessFactor=.5),e.metalnessMap||e.roughnessMap){let o=this.buildMetalRoughTexture(e.metalnessMap,e.roughnessMap),a={index:this.processTexture(o),channel:o.channel};this.applyTextureTransform(a,o),t.pbrMetallicRoughness.metallicRoughnessTexture=a}if(e.map){let o={index:this.processTexture(e.map),texCoord:e.map.channel};this.applyTextureTransform(o,e.map),t.pbrMetallicRoughness.baseColorTexture=o}if(e.emissive){let o=e.emissive;if(Math.max(o.r,o.g,o.b)>0&&(t.emissiveFactor=e.emissive.toArray()),e.emissiveMap){let u={index:this.processTexture(e.emissiveMap),texCoord:e.emissiveMap.channel};this.applyTextureTransform(u,e.emissiveMap),t.emissiveTexture=u}}if(e.normalMap){let o={index:this.processTexture(e.normalMap),texCoord:e.normalMap.channel};e.normalScale&&e.normalScale.x!==1&&(o.scale=e.normalScale.x),this.applyTextureTransform(o,e.normalMap),t.normalTexture=o}if(e.aoMap){let o={index:this.processTexture(e.aoMap),texCoord:e.aoMap.channel};e.aoMapIntensity!==1&&(o.strength=e.aoMapIntensity),this.applyTextureTransform(o,e.aoMap),t.occlusionTexture=o}e.transparent?t.alphaMode="BLEND":e.alphaTest>0&&(t.alphaMode="MASK",t.alphaCutoff=e.alphaTest),e.side===_e&&(t.doubleSided=!0),e.name!==""&&(t.name=e.name),this.serializeUserData(e,t),this._invokeAll(function(o){o.writeMaterial&&o.writeMaterial(e,t)});let n=r.materials.push(t)-1;return s.materials.set(e,n),n}processMesh(e){let s=this.cache,r=this.json,t=[e.geometry.uuid];if(Array.isArray(e.material))for(let g=0,y=e.material.length;g<y;g++)t.push(e.material[g].uuid);else t.push(e.material.uuid);let i=t.join(":");if(s.meshes.has(i))return s.meshes.get(i);let n=e.geometry,o;e.isLineSegments?o=x.LINES:e.isLineLoop?o=x.LINE_LOOP:e.isLine?o=x.LINE_STRIP:e.isPoints?o=x.POINTS:o=e.material.wireframe?x.LINES:x.TRIANGLES;let a={},u={},p=[],f=[],m={uv:"TEXCOORD_0",uv1:"TEXCOORD_1",uv2:"TEXCOORD_2",uv3:"TEXCOORD_3",color:"COLOR_0",skinWeight:"WEIGHTS_0",skinIndex:"JOINTS_0"},l=n.getAttribute("normal");l!==void 0&&!this.isNormalizedNormalAttribute(l)&&(console.warn("THREE.GLTFExporter: Creating normalized normal attribute from the non-normalized one."),n.setAttribute("normal",this.createNormalizedNormalAttribute(l)));let d=null;for(let g in n.attributes){if(g.slice(0,5)==="morph")continue;let y=n.attributes[g];if(g=m[g]||g.toUpperCase(),/^(POSITION|NORMAL|TANGENT|TEXCOORD_\d+|COLOR_\d+|JOINTS_\d+|WEIGHTS_\d+)$/.test(g)||(g="_"+g),s.attributes.has(this.getUID(y))){u[g]=s.attributes.get(this.getUID(y));continue}d=null;let A=y.array;g==="JOINTS_0"&&!(A instanceof Uint16Array)&&!(A instanceof Uint8Array)&&(console.warn('GLTFExporter: Attribute "skinIndex" converted to type UNSIGNED_SHORT.'),d=new _(new Uint16Array(A),y.itemSize,y.normalized));let E=this.processAccessor(d||y,n);E!==null&&(g.startsWith("_")||this.detectMeshQuantization(g,y),u[g]=E,s.attributes.set(this.getUID(y),E))}if(l!==void 0&&n.setAttribute("normal",l),Object.keys(u).length===0)return null;if(e.morphTargetInfluences!==void 0&&e.morphTargetInfluences.length>0){let g=[],y=[],I={};if(e.morphTargetDictionary!==void 0)for(let A in e.morphTargetDictionary)I[e.morphTargetDictionary[A]]=A;for(let A=0;A<e.morphTargetInfluences.length;++A){let E={},Se=!1;for(let v in n.morphAttributes){if(v!=="position"&&v!=="normal"){Se||(console.warn("GLTFExporter: Only POSITION and NORMAL morph are supported."),Se=!0);continue}let S=n.morphAttributes[v][A],X=v.toUpperCase(),L=n.attributes[v];if(s.attributes.has(this.getUID(S,!0))){E[X]=s.attributes.get(this.getUID(S,!0));continue}let O=S.clone();if(!n.morphTargetsRelative)for(let R=0,os=S.count;R<os;R++)for(let C=0;C<S.itemSize;C++)C===0&&O.setX(R,S.getX(R)-L.getX(R)),C===1&&O.setY(R,S.getY(R)-L.getY(R)),C===2&&O.setZ(R,S.getZ(R)-L.getZ(R)),C===3&&O.setW(R,S.getW(R)-L.getW(R));E[X]=this.processAccessor(O,n),s.attributes.set(this.getUID(L,!0),E[X])}f.push(E),g.push(e.morphTargetInfluences[A]),e.morphTargetDictionary!==void 0&&y.push(I[A])}a.weights=g,y.length>0&&(a.extras={},a.extras.targetNames=y)}let h=Array.isArray(e.material);if(h&&n.groups.length===0)return null;let w=!1;if(h&&n.index===null){let g=[];for(let y=0,I=n.attributes.position.count;y<I;y++)g[y]=y;n.setIndex(g),w=!0}let M=h?e.material:[e.material],N=h?n.groups:[{materialIndex:0,start:void 0,count:void 0}];for(let g=0,y=N.length;g<y;g++){let I={mode:o,attributes:u};if(this.serializeUserData(n,I),f.length>0&&(I.targets=f),n.index!==null){let E=this.getUID(n.index);(N[g].start!==void 0||N[g].count!==void 0)&&(E+=":"+N[g].start+":"+N[g].count),s.attributes.has(E)?I.indices=s.attributes.get(E):(I.indices=this.processAccessor(n.index,n,N[g].start,N[g].count),s.attributes.set(E,I.indices)),I.indices===null&&delete I.indices}let A=this.processMaterial(M[N[g].materialIndex]);A!==null&&(I.material=A),p.push(I)}w===!0&&n.setIndex(null),a.primitives=p,r.meshes||(r.meshes=[]),this._invokeAll(function(g){g.writeMesh&&g.writeMesh(e,a)});let k=r.meshes.push(a)-1;return s.meshes.set(i,k),k}detectMeshQuantization(e,s){if(this.extensionsUsed[Q])return;let r;switch(s.array.constructor){case Int8Array:r="byte";break;case Uint8Array:r="unsigned byte";break;case Int16Array:r="short";break;case Uint16Array:r="unsigned short";break;default:return}s.normalized&&(r+=" normalized");let t=e.split("_",1)[0];$e[t]&&$e[t].includes(r)&&(this.extensionsUsed[Q]=!0,this.extensionsRequired[Q]=!0)}processCamera(e){let s=this.json;s.cameras||(s.cameras=[]);let r=e.isOrthographicCamera,t={type:r?"orthographic":"perspective"};return r?t.orthographic={xmag:e.right*2,ymag:e.top*2,zfar:e.far<=0?.001:e.far,znear:e.near<0?0:e.near}:t.perspective={aspectRatio:e.aspect,yfov:G.degToRad(e.fov),zfar:e.far<=0?.001:e.far,znear:e.near<0?0:e.near},e.name!==""&&(t.name=e.type),s.cameras.push(t)-1}processAnimation(e,s){let r=this.json,t=this.nodeMap;r.animations||(r.animations=[]),e=q.Utils.mergeMorphTargetTracks(e.clone(),s);let i=e.tracks,n=[],o=[];for(let a=0;a<i.length;++a){let u=i[a],p=z.parseTrackName(u.name),f=z.findNode(s,p.nodeName),m=es[p.propertyName];if(p.objectName==="bones"&&(f.isSkinnedMesh===!0?f=f.skeleton.getBoneByName(p.objectIndex):f=void 0),!f||!m)return console.warn('THREE.GLTFExporter: Could not export animation track "%s".',u.name),null;let l=1,d=u.values.length/u.times.length;m===es.morphTargetInfluences&&(d/=f.morphTargetInfluences.length);let h;u.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline===!0?(h="CUBICSPLINE",d/=3):u.getInterpolation()===ke?h="STEP":h="LINEAR",o.push({input:this.processAccessor(new _(u.times,l)),output:this.processAccessor(new _(u.values,d)),interpolation:h}),n.push({sampler:o.length-1,target:{node:t.get(f),path:m}})}return r.animations.push({name:e.name||"clip_"+r.animations.length,samplers:o,channels:n}),r.animations.length-1}processSkin(e){let s=this.json,r=this.nodeMap,t=s.nodes[r.get(e)],i=e.skeleton;if(i===void 0)return null;let n=e.skeleton.bones[0];if(n===void 0)return null;let o=[],a=new Float32Array(i.bones.length*16),u=new W;for(let f=0;f<i.bones.length;++f)o.push(r.get(i.bones[f])),u.copy(i.boneInverses[f]),u.multiply(e.bindMatrix).toArray(a,f*16);return s.skins===void 0&&(s.skins=[]),s.skins.push({inverseBindMatrices:this.processAccessor(new _(a,16)),joints:o,skeleton:r.get(n)}),t.skin=s.skins.length-1}processNode(e){let s=this.json,r=this.options,t=this.nodeMap;s.nodes||(s.nodes=[]);let i={};if(r.trs){let o=e.quaternion.toArray(),a=e.position.toArray(),u=e.scale.toArray();F(o,[0,0,0,1])||(i.rotation=o),F(a,[0,0,0])||(i.translation=a),F(u,[1,1,1])||(i.scale=u)}else e.matrixAutoUpdate&&e.updateMatrix(),ds(e.matrix)===!1&&(i.matrix=e.matrix.elements);if(e.name!==""&&(i.name=String(e.name)),this.serializeUserData(e,i),e.isMesh||e.isLine||e.isPoints){let o=this.processMesh(e);o!==null&&(i.mesh=o)}else e.isCamera&&(i.camera=this.processCamera(e));if(e.isSkinnedMesh&&this.skins.push(e),e.children.length>0){let o=[];for(let a=0,u=e.children.length;a<u;a++){let p=e.children[a];if(p.visible||r.onlyVisible===!1){let f=this.processNode(p);f!==null&&o.push(f)}}o.length>0&&(i.children=o)}this._invokeAll(function(o){o.writeNode&&o.writeNode(e,i)});let n=s.nodes.push(i)-1;return t.set(e,n),n}processScene(e){let s=this.json,r=this.options;s.scenes||(s.scenes=[],s.scene=0);let t={};e.name!==""&&(t.name=e.name),s.scenes.push(t);let i=[];for(let n=0,o=e.children.length;n<o;n++){let a=e.children[n];if(a.visible||r.onlyVisible===!1){let u=this.processNode(a);u!==null&&i.push(u)}}i.length>0&&(t.nodes=i),this.serializeUserData(e,t)}processObjects(e){let s=new P;s.name="AuxScene";for(let r=0;r<e.length;r++)s.children.push(e[r]);this.processScene(s)}processInput(e){let s=this.options;e=e instanceof Array?e:[e],this._invokeAll(function(t){t.beforeParse&&t.beforeParse(e)});let r=[];for(let t=0;t<e.length;t++)e[t]instanceof P?this.processScene(e[t]):r.push(e[t]);r.length>0&&this.processObjects(r);for(let t=0;t<this.skins.length;++t)this.processSkin(this.skins[t]);for(let t=0;t<s.animations.length;++t)this.processAnimation(s.animations[t],e[0]);this._invokeAll(function(t){t.afterParse&&t.afterParse(e)})}_invokeAll(e){for(let s=0,r=this.plugins.length;s<r;s++)e(this.plugins[s])}};T(de,"GLTFWriter");var $=de,ge=class ge{constructor(e){this.writer=e,this.name="KHR_lights_punctual"}writeNode(e,s){if(!e.isLight)return;if(!e.isDirectionalLight&&!e.isPointLight&&!e.isSpotLight){console.warn("THREE.GLTFExporter: Only directional, point, and spot lights are supported.",e);return}let r=this.writer,t=r.json,i=r.extensionsUsed,n={};e.name&&(n.name=e.name),n.color=e.color.toArray(),n.intensity=e.intensity,e.isDirectionalLight?n.type="directional":e.isPointLight?(n.type="point",e.distance>0&&(n.range=e.distance)):e.isSpotLight&&(n.type="spot",e.distance>0&&(n.range=e.distance),n.spot={},n.spot.innerConeAngle=(1-e.penumbra)*e.angle,n.spot.outerConeAngle=e.angle),e.decay!==void 0&&e.decay!==2&&console.warn("THREE.GLTFExporter: Light decay may be lost. glTF is physically-based, and expects light.decay=2."),e.target&&(e.target.parent!==e||e.target.position.x!==0||e.target.position.y!==0||e.target.position.z!==-1)&&console.warn("THREE.GLTFExporter: Light direction may be lost. For best results, make light.target a child of the light with position 0,0,-1."),i[this.name]||(t.extensions=t.extensions||{},t.extensions[this.name]={lights:[]},i[this.name]=!0);let o=t.extensions[this.name].lights;o.push(n),s.extensions=s.extensions||{},s.extensions[this.name]={light:o.length-1}}};T(ge,"GLTFLightExtension");var ee=ge,xe=class xe{constructor(e){this.writer=e,this.name="KHR_materials_unlit"}writeMaterial(e,s){if(!e.isMeshBasicMaterial)return;let t=this.writer.extensionsUsed;s.extensions=s.extensions||{},s.extensions[this.name]={},t[this.name]=!0,s.pbrMetallicRoughness.metallicFactor=0,s.pbrMetallicRoughness.roughnessFactor=.9}};T(xe,"GLTFMaterialsUnlitExtension");var se=xe,me=class me{constructor(e){this.writer=e,this.name="KHR_materials_clearcoat"}writeMaterial(e,s){if(!e.isMeshPhysicalMaterial||e.clearcoat===0)return;let r=this.writer,t=r.extensionsUsed,i={};if(i.clearcoatFactor=e.clearcoat,e.clearcoatMap){let n={index:r.processTexture(e.clearcoatMap),texCoord:e.clearcoatMap.channel};r.applyTextureTransform(n,e.clearcoatMap),i.clearcoatTexture=n}if(i.clearcoatRoughnessFactor=e.clearcoatRoughness,e.clearcoatRoughnessMap){let n={index:r.processTexture(e.clearcoatRoughnessMap),texCoord:e.clearcoatRoughnessMap.channel};r.applyTextureTransform(n,e.clearcoatRoughnessMap),i.clearcoatRoughnessTexture=n}if(e.clearcoatNormalMap){let n={index:r.processTexture(e.clearcoatNormalMap),texCoord:e.clearcoatNormalMap.channel};r.applyTextureTransform(n,e.clearcoatNormalMap),i.clearcoatNormalTexture=n}s.extensions=s.extensions||{},s.extensions[this.name]=i,t[this.name]=!0}};T(me,"GLTFMaterialsClearcoatExtension");var te=me,Te=class Te{constructor(e){this.writer=e,this.name="KHR_materials_iridescence"}writeMaterial(e,s){if(!e.isMeshPhysicalMaterial||e.iridescence===0)return;let r=this.writer,t=r.extensionsUsed,i={};if(i.iridescenceFactor=e.iridescence,e.iridescenceMap){let n={index:r.processTexture(e.iridescenceMap),texCoord:e.iridescenceMap.channel};r.applyTextureTransform(n,e.iridescenceMap),i.iridescenceTexture=n}if(i.iridescenceIor=e.iridescenceIOR,i.iridescenceThicknessMinimum=e.iridescenceThicknessRange[0],i.iridescenceThicknessMaximum=e.iridescenceThicknessRange[1],e.iridescenceThicknessMap){let n={index:r.processTexture(e.iridescenceThicknessMap),texCoord:e.iridescenceThicknessMap.channel};r.applyTextureTransform(n,e.iridescenceThicknessMap),i.iridescenceThicknessTexture=n}s.extensions=s.extensions||{},s.extensions[this.name]=i,t[this.name]=!0}};T(Te,"GLTFMaterialsIridescenceExtension");var ne=Te,ye=class ye{constructor(e){this.writer=e,this.name="KHR_materials_transmission"}writeMaterial(e,s){if(!e.isMeshPhysicalMaterial||e.transmission===0)return;let r=this.writer,t=r.extensionsUsed,i={};if(i.transmissionFactor=e.transmission,e.transmissionMap){let n={index:r.processTexture(e.transmissionMap),texCoord:e.transmissionMap.channel};r.applyTextureTransform(n,e.transmissionMap),i.transmissionTexture=n}s.extensions=s.extensions||{},s.extensions[this.name]=i,t[this.name]=!0}};T(ye,"GLTFMaterialsTransmissionExtension");var re=ye,we=class we{constructor(e){this.writer=e,this.name="KHR_materials_volume"}writeMaterial(e,s){if(!e.isMeshPhysicalMaterial||e.transmission===0)return;let r=this.writer,t=r.extensionsUsed,i={};if(i.thicknessFactor=e.thickness,e.thicknessMap){let n={index:r.processTexture(e.thicknessMap),texCoord:e.thicknessMap.channel};r.applyTextureTransform(n,e.thicknessMap),i.thicknessTexture=n}i.attenuationDistance=e.attenuationDistance,i.attenuationColor=e.attenuationColor.toArray(),s.extensions=s.extensions||{},s.extensions[this.name]=i,t[this.name]=!0}};T(we,"GLTFMaterialsVolumeExtension");var ie=we,Me=class Me{constructor(e){this.writer=e,this.name="KHR_materials_ior"}writeMaterial(e,s){if(!e.isMeshPhysicalMaterial||e.ior===1.5)return;let t=this.writer.extensionsUsed,i={};i.ior=e.ior,s.extensions=s.extensions||{},s.extensions[this.name]=i,t[this.name]=!0}};T(Me,"GLTFMaterialsIorExtension");var oe=Me,Ie=class Ie{constructor(e){this.writer=e,this.name="KHR_materials_specular"}writeMaterial(e,s){if(!e.isMeshPhysicalMaterial||e.specularIntensity===1&&e.specularColor.equals(cs)&&!e.specularIntensityMap&&!e.specularColorMap)return;let r=this.writer,t=r.extensionsUsed,i={};if(e.specularIntensityMap){let n={index:r.processTexture(e.specularIntensityMap),texCoord:e.specularIntensityMap.channel};r.applyTextureTransform(n,e.specularIntensityMap),i.specularTexture=n}if(e.specularColorMap){let n={index:r.processTexture(e.specularColorMap),texCoord:e.specularColorMap.channel};r.applyTextureTransform(n,e.specularColorMap),i.specularColorTexture=n}i.specularFactor=e.specularIntensity,i.specularColorFactor=e.specularColor.toArray(),s.extensions=s.extensions||{},s.extensions[this.name]=i,t[this.name]=!0}};T(Ie,"GLTFMaterialsSpecularExtension");var ae=Ie,Ae=class Ae{constructor(e){this.writer=e,this.name="KHR_materials_sheen"}writeMaterial(e,s){if(!e.isMeshPhysicalMaterial||e.sheen==0)return;let r=this.writer,t=r.extensionsUsed,i={};if(e.sheenRoughnessMap){let n={index:r.processTexture(e.sheenRoughnessMap),texCoord:e.sheenRoughnessMap.channel};r.applyTextureTransform(n,e.sheenRoughnessMap),i.sheenRoughnessTexture=n}if(e.sheenColorMap){let n={index:r.processTexture(e.sheenColorMap),texCoord:e.sheenColorMap.channel};r.applyTextureTransform(n,e.sheenColorMap),i.sheenColorTexture=n}i.sheenRoughnessFactor=e.sheenRoughness,i.sheenColorFactor=e.sheenColor.toArray(),s.extensions=s.extensions||{},s.extensions[this.name]=i,t[this.name]=!0}};T(Ae,"GLTFMaterialsSheenExtension");var ce=Ae,Re=class Re{constructor(e){this.writer=e,this.name="KHR_materials_anisotropy"}writeMaterial(e,s){if(!e.isMeshPhysicalMaterial||e.anisotropy==0)return;let r=this.writer,t=r.extensionsUsed,i={};if(e.anisotropyMap){let n={index:r.processTexture(e.anisotropyMap)};r.applyTextureTransform(n,e.anisotropyMap),i.anisotropyTexture=n}i.anisotropyStrength=e.anisotropy,i.anisotropyRotation=e.anisotropyRotation,s.extensions=s.extensions||{},s.extensions[this.name]=i,t[this.name]=!0}};T(Re,"GLTFMaterialsAnisotropyExtension");var ue=Re,Ee=class Ee{constructor(e){this.writer=e,this.name="KHR_materials_emissive_strength"}writeMaterial(e,s){if(!e.isMeshStandardMaterial||e.emissiveIntensity===1)return;let t=this.writer.extensionsUsed,i={};i.emissiveStrength=e.emissiveIntensity,s.extensions=s.extensions||{},s.extensions[this.name]=i,t[this.name]=!0}};T(Ee,"GLTFMaterialsEmissiveStrengthExtension");var le=Ee,be=class be{constructor(e){this.writer=e,this.name="EXT_materials_bump"}writeMaterial(e,s){if(!e.isMeshStandardMaterial||e.bumpScale===1&&!e.bumpMap)return;let r=this.writer,t=r.extensionsUsed,i={};if(e.bumpMap){let n={index:r.processTexture(e.bumpMap),texCoord:e.bumpMap.channel};r.applyTextureTransform(n,e.bumpMap),i.bumpTexture=n}i.bumpFactor=e.bumpScale,s.extensions=s.extensions||{},s.extensions[this.name]=i,t[this.name]=!0}};T(be,"GLTFMaterialsBumpExtension");var fe=be,Ne=class Ne{constructor(e){this.writer=e,this.name="EXT_mesh_gpu_instancing"}writeNode(e,s){if(!e.isInstancedMesh)return;let r=this.writer,t=e,i=new Float32Array(t.count*3),n=new Float32Array(t.count*4),o=new Float32Array(t.count*3),a=new W,u=new D,p=new Ye,f=new D;for(let l=0;l<t.count;l++)t.getMatrixAt(l,a),a.decompose(u,p,f),u.toArray(i,l*3),p.toArray(n,l*4),f.toArray(o,l*3);let m={TRANSLATION:r.processAccessor(new _(i,3)),ROTATION:r.processAccessor(new _(n,4)),SCALE:r.processAccessor(new _(o,3))};t.instanceColor&&(m._COLOR_0=r.processAccessor(t.instanceColor)),s.extensions=s.extensions||{},s.extensions[this.name]={attributes:m},r.extensionsUsed[this.name]=!0,r.extensionsRequired[this.name]=!0}};T(Ne,"GLTFMeshGpuInstancing");var he=Ne;q.Utils={insertKeyframe:function(c,e){let r=c.getValueSize(),t=new c.TimeBufferType(c.times.length+1),i=new c.ValueBufferType(c.values.length+r),n=c.createInterpolant(new c.ValueBufferType(r)),o;if(c.times.length===0){t[0]=e;for(let a=0;a<r;a++)i[a]=0;o=0}else if(e<c.times[0]){if(Math.abs(c.times[0]-e)<.001)return 0;t[0]=e,t.set(c.times,1),i.set(n.evaluate(e),0),i.set(c.values,r),o=0}else if(e>c.times[c.times.length-1]){if(Math.abs(c.times[c.times.length-1]-e)<.001)return c.times.length-1;t[t.length-1]=e,t.set(c.times,0),i.set(c.values,0),i.set(n.evaluate(e),c.values.length),o=t.length-1}else for(let a=0;a<c.times.length;a++){if(Math.abs(c.times[a]-e)<.001)return a;if(c.times[a]<e&&c.times[a+1]>e){t.set(c.times.slice(0,a+1),0),t[a+1]=e,t.set(c.times.slice(a+1),a+2),i.set(c.values.slice(0,(a+1)*r),0),i.set(n.evaluate(e),(a+1)*r),i.set(c.values.slice((a+1)*r),(a+2)*r),o=a+1;break}}return c.times=t,c.values=i,o},mergeMorphTargetTracks:function(c,e){let s=[],r={},t=c.tracks;for(let i=0;i<t.length;++i){let n=t[i],o=z.parseTrackName(n.name),a=z.findNode(e,o.nodeName);if(o.propertyName!=="morphTargetInfluences"||o.propertyIndex===void 0){s.push(n);continue}if(n.createInterpolant!==n.InterpolantFactoryMethodDiscrete&&n.createInterpolant!==n.InterpolantFactoryMethodLinear){if(n.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline)throw new Error("THREE.GLTFExporter: Cannot merge tracks with glTF CUBICSPLINE interpolation.");console.warn("THREE.GLTFExporter: Morph target interpolation mode not yet supported. Using LINEAR instead."),n=n.clone(),n.setInterpolation(He)}let u=a.morphTargetInfluences.length,p=a.morphTargetDictionary[o.propertyIndex];if(p===void 0)throw new Error("THREE.GLTFExporter: Morph target name not found: "+o.propertyIndex);let f;if(r[a.uuid]===void 0){f=n.clone();let l=new f.ValueBufferType(u*f.times.length);for(let d=0;d<f.times.length;d++)l[d*u+p]=f.values[d];f.name=(o.nodeName||"")+".morphTargetInfluences",f.values=l,r[a.uuid]=f,s.push(f);continue}let m=n.createInterpolant(new n.ValueBufferType(1));f=r[a.uuid];for(let l=0;l<f.times.length;l++)f.values[l*u+p]=m.evaluate(f.times[l]);for(let l=0;l<n.times.length;l++){let d=this.insertKeyframe(f,n.times[l]);f.values[d*u+p]=n.values[l]}}return c.tracks=s,c}};export{q as GLTFExporter};
|