u-space 0.0.27 → 0.0.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/dist/index.cjs +3 -3
  2. package/dist/index.js +316 -324
  3. package/dist/plugins/u-manager/index.cjs +56 -56
  4. package/dist/plugins/u-manager/index.d.ts +2 -0
  5. package/dist/plugins/u-manager/index.js +8214 -8304
  6. package/dist/plugins/u-manager/instances/SemanticInstanceObject.d.ts +37 -0
  7. package/dist/plugins/u-manager/instances/SemanticModelInstancedLayer.d.ts +33 -0
  8. package/dist/plugins/u-manager/instances/index.d.ts +2 -0
  9. package/dist/plugins/u-manager/loaders/SceneInstancedLayer.d.ts +6 -22
  10. package/dist/plugins/u-manager/loaders/UManagerLoader.d.ts +24 -0
  11. package/dist/plugins/u-manager/semantics/SemanticLoader.d.ts +2 -2
  12. package/dist/plugins/u-manager/semantics/SemanticParser.d.ts +3 -3
  13. package/dist/plugins/u-manager/semantics/index.d.ts +1 -1
  14. package/dist/plugins/u-manager/semantics/objects/BuildingGroup.d.ts +4 -10
  15. package/dist/plugins/u-manager/semantics/objects/FacilityInstancedLayer.d.ts +5 -39
  16. package/dist/plugins/u-manager/semantics/objects/FloorMesh.d.ts +30 -15
  17. package/dist/plugins/u-manager/semantics/objects/SemanticGroup.d.ts +26 -0
  18. package/dist/plugins/u-manager/semantics/types.d.ts +1 -0
  19. package/dist/src/effects/MaterialEffects.d.ts +1 -0
  20. package/docs/api-effects.md +3 -2
  21. package/docs/api-managers.md +1 -1
  22. package/docs/api-plugin-u-manager.md +145 -90
  23. package/docs/changelog.md +21 -9
  24. package/docs/examples-guide.md +28 -14
  25. package/docs/getting-started.md +1 -1
  26. package/docs/mcp.md +14 -7
  27. package/package.json +1 -1
  28. package/dist/plugins/u-manager/semantics/objects/SemanticSceneGroup.d.ts +0 -31
package/dist/index.js CHANGED
@@ -1,26 +1,26 @@
1
- import { Raycaster as ze, Vector2 as S, EventDispatcher as Ne, Box2 as rt, Matrix4 as De, Vector3 as v, Box3 as X, Scene as ke, Color as M, AmbientLight as ot, DirectionalLight as ye, PointLight as we, SpotLight as ve, HemisphereLight as be, DirectionalLightHelper as at, PointLightHelper as ct, SpotLightHelper as ht, HemisphereLightHelper as lt, RenderPipeline as dt, PerspectiveCamera as te, Sphere as je, Spherical as T, Quaternion as pt, Vector4 as ut, MathUtils as mt, PMREMGenerator as ft, OrthographicCamera as se, TimestampQuery as J, Cache as gt, Timer as yt, WebGPURenderer as wt, PCFShadowMap as vt, AgXToneMapping as bt, Fog as xt, FogExp2 as Ct, MeshStandardNodeMaterial as L, Loader as St, LoaderUtils as B, FileLoader as Ue, TextureLoader as He, Group as R, SRGBColorSpace as Fe, RepeatWrapping as xe, BufferGeometry as K, BufferAttribute as Ce, Mesh as k, FrontSide as Mt, BackSide as Tt, DoubleSide as _t, REVISION as Se, CubeTextureLoader as Et, EquirectangularReflectionMapping as Pt, Sprite as Ot, AnimationMixer as At, LoopRepeat as It, LoopOnce as Bt, SphereGeometry as Rt, TubeGeometry as Lt, LineCurve3 as zt, CatmullRomCurve3 as Nt, SpriteNodeMaterial as Dt, CanvasTexture as kt, ShapeGeometry as jt, Shape as Ge, ExtrudeGeometry as Ut, PlaneGeometry as Ht, CircleGeometry as Ft, ClippingGroup as Gt, Plane as $t, PlaneHelper as Wt, LineBasicMaterial as ne, Line as ie } from "three/webgpu";
2
- import { pass as fe, mrt as Kt, output as Qt, add as Me, blendColor as qt, emissive as Xt, normalView as Yt, velocity as Vt, color as H, uv as Te, time as re, pow as oe, sin as ge, mix as ae, mx_noise_float as _e, Fn as $e, userData as I, materialColor as Ee, select as ce, materialOpacity as Jt, vec3 as Zt } from "three/tsl";
3
- import { bloom as es } from "three/addons/tsl/display/BloomNode.js";
4
- import { ssgi as ts } from "three/addons/tsl/display/SSGINode.js";
5
- import { traa as ss } from "three/addons/tsl/display/TRAANode.js";
6
- import We from "camera-controls";
7
- import { RoomEnvironment as ns } from "three/addons/environments/RoomEnvironment.js";
8
- import { ViewHelper as is } from "three/addons/helpers/ViewHelper.js";
9
- import { CSS2DRenderer as rs, CSS2DObject as os } from "three/addons/renderers/CSS2DRenderer.js";
10
- import { CSS2DObject as Fn } from "three/addons/renderers/CSS2DRenderer.js";
11
- import { CSS3DRenderer as as, CSS3DSprite as cs, CSS3DObject as hs } from "three/addons/renderers/CSS3DRenderer.js";
12
- import { CSS3DObject as $n, CSS3DSprite as Wn } from "three/addons/renderers/CSS3DRenderer.js";
13
- import { GLTFLoader as Ke } from "three/addons/loaders/GLTFLoader.js";
14
- import { FBXLoader as ls } from "three/addons/loaders/FBXLoader.js";
15
- import { OBJLoader as ds } from "three/addons/loaders/OBJLoader.js";
16
- import { STLLoader as ps } from "three/addons/loaders/STLLoader.js";
17
- import { DRACOLoader as us } from "three/addons/loaders/DRACOLoader.js";
18
- import { KTX2Loader as ms } from "three/addons/loaders/KTX2Loader.js";
19
- import { MeshoptDecoder as Pe } from "three/addons/libs/meshopt_decoder.module.js";
20
- import { HDRLoader as fs } from "three/addons/loaders/HDRLoader.js";
21
- import { clone as gs } from "three/addons/utils/SkeletonUtils.js";
22
- import { Easing as f, Tween as ys } from "three/addons/libs/tween.module.js";
23
- class ws {
1
+ import { Raycaster as Ne, Vector2 as C, EventDispatcher as De, Box2 as at, Matrix4 as ke, Vector3 as v, Box3 as V, Scene as je, Color as M, AmbientLight as ct, DirectionalLight as ye, PointLight as we, SpotLight as ve, HemisphereLight as be, DirectionalLightHelper as ht, PointLightHelper as lt, SpotLightHelper as dt, HemisphereLightHelper as pt, RenderPipeline as ut, PerspectiveCamera as se, Sphere as Ue, Spherical as T, Quaternion as mt, Vector4 as ft, MathUtils as gt, PMREMGenerator as yt, OrthographicCamera as ne, TimestampQuery as Z, Cache as wt, Timer as vt, WebGPURenderer as bt, PCFShadowMap as xt, AgXToneMapping as St, Fog as Ct, FogExp2 as Mt, MeshStandardNodeMaterial as L, Loader as Tt, LoaderUtils as I, FileLoader as He, TextureLoader as Fe, Group as R, SRGBColorSpace as Ge, RepeatWrapping as xe, BufferGeometry as Q, BufferAttribute as Se, Mesh as k, FrontSide as _t, BackSide as Et, DoubleSide as Pt, REVISION as Ce, CubeTextureLoader as Ot, EquirectangularReflectionMapping as At, Sprite as Bt, AnimationMixer as It, LoopRepeat as Rt, LoopOnce as Lt, SphereGeometry as zt, TubeGeometry as Nt, LineCurve3 as Dt, CatmullRomCurve3 as kt, SpriteNodeMaterial as jt, CanvasTexture as Ut, ShapeGeometry as Ht, Shape as $e, ExtrudeGeometry as Ft, PlaneGeometry as Gt, CircleGeometry as $t, ClippingGroup as Wt, Plane as Kt, PlaneHelper as Qt, LineBasicMaterial as ie, Line as re } from "three/webgpu";
2
+ import { pass as fe, mrt as qt, output as Xt, add as Me, blendColor as Yt, emissive as Vt, normalView as Jt, velocity as Zt, color as H, uv as Te, time as oe, pow as ae, sin as ge, mix as ce, mx_noise_float as _e, Fn as We, userData as O, materialColor as Ee, select as q, materialOpacity as Pe, vec3 as es } from "three/tsl";
3
+ import { bloom as ts } from "three/addons/tsl/display/BloomNode.js";
4
+ import { ssgi as ss } from "three/addons/tsl/display/SSGINode.js";
5
+ import { traa as ns } from "three/addons/tsl/display/TRAANode.js";
6
+ import Ke from "camera-controls";
7
+ import { RoomEnvironment as is } from "three/addons/environments/RoomEnvironment.js";
8
+ import { ViewHelper as rs } from "three/addons/helpers/ViewHelper.js";
9
+ import { CSS2DRenderer as os, CSS2DObject as as } from "three/addons/renderers/CSS2DRenderer.js";
10
+ import { CSS2DObject as Gn } from "three/addons/renderers/CSS2DRenderer.js";
11
+ import { CSS3DRenderer as cs, CSS3DSprite as hs, CSS3DObject as ls } from "three/addons/renderers/CSS3DRenderer.js";
12
+ import { CSS3DObject as Wn, CSS3DSprite as Kn } from "three/addons/renderers/CSS3DRenderer.js";
13
+ import { GLTFLoader as Qe } from "three/addons/loaders/GLTFLoader.js";
14
+ import { FBXLoader as ds } from "three/addons/loaders/FBXLoader.js";
15
+ import { OBJLoader as ps } from "three/addons/loaders/OBJLoader.js";
16
+ import { STLLoader as us } from "three/addons/loaders/STLLoader.js";
17
+ import { DRACOLoader as ms } from "three/addons/loaders/DRACOLoader.js";
18
+ import { KTX2Loader as fs } from "three/addons/loaders/KTX2Loader.js";
19
+ import { MeshoptDecoder as Oe } from "three/addons/libs/meshopt_decoder.module.js";
20
+ import { HDRLoader as gs } from "three/addons/loaders/HDRLoader.js";
21
+ import { clone as ys } from "three/addons/utils/SkeletonUtils.js";
22
+ import { Easing as f, Tween as ws } from "three/addons/libs/tween.module.js";
23
+ class vs {
24
24
  /** The type of event (e.g., 'click', 'pointerdown'). */
25
25
  type;
26
26
  /** The original 3D object that triggered the event. */
@@ -48,15 +48,15 @@ class ws {
48
48
  return this._propagationStopped;
49
49
  }
50
50
  }
51
- class vs {
51
+ class bs {
52
52
  domElement;
53
53
  scene;
54
54
  camera;
55
- raycaster = new ze();
56
- pointer = new S();
55
+ raycaster = new Ne();
56
+ pointer = new C();
57
57
  hoveredObject = null;
58
58
  pointerDownTime = 0;
59
- pointerDownPos = new S();
59
+ pointerDownPos = new C();
60
60
  clickTimer = null;
61
61
  longPressThreshold = 500;
62
62
  moveThreshold = 0.01;
@@ -143,7 +143,7 @@ class vs {
143
143
  * Dispatches an event to the target object and bubbles up the parent chain.
144
144
  */
145
145
  _dispatchToTarget(e, t, s, n) {
146
- const i = new ws({
146
+ const i = new vs({
147
147
  type: e,
148
148
  target: t,
149
149
  intersect: s,
@@ -205,7 +205,7 @@ class vs {
205
205
  this.domElement.removeEventListener("click", this._onClick), this.domElement.removeEventListener("dblclick", this._onDblClick), this.domElement.removeEventListener("contextmenu", this._onContextMenu), this.domElement.removeEventListener("pointerdown", this._onPointerDown), this.domElement.removeEventListener("pointerup", this._onPointerUp), this.domElement.removeEventListener("pointermove", this._onPointerMove), this.clickTimer && (clearTimeout(this.clickTimer), this.clickTimer = null), this.hoveredObject = null, this._excludeSet.clear();
206
206
  }
207
207
  }
208
- class Tn extends Ne {
208
+ class _n extends De {
209
209
  scene;
210
210
  camera;
211
211
  domElement;
@@ -215,8 +215,8 @@ class Tn extends Ne {
215
215
  // Box selection state
216
216
  _boxSelectionEnabled = !1;
217
217
  _isSelecting = !1;
218
- _startPoint = new S();
219
- _endPoint = new S();
218
+ _startPoint = new C();
219
+ _endPoint = new C();
220
220
  _selectionBox = null;
221
221
  _deep = !0;
222
222
  /**
@@ -315,21 +315,21 @@ class Tn extends Ne {
315
315
  this._selectionBox.style.left = `${e}px`, this._selectionBox.style.top = `${t}px`, this._selectionBox.style.width = `${s}px`, this._selectionBox.style.height = `${n}px`;
316
316
  }
317
317
  _getObjectsInBox() {
318
- const e = this._container.getBoundingClientRect(), t = e.width, s = e.height, n = new S(
318
+ const e = this._container.getBoundingClientRect(), t = e.width, s = e.height, n = new C(
319
319
  this._startPoint.x / t * 2 - 1,
320
320
  -(this._startPoint.y / s) * 2 + 1
321
- ), i = new S(
321
+ ), i = new C(
322
322
  this._endPoint.x / t * 2 - 1,
323
323
  -(this._endPoint.y / s) * 2 + 1
324
- ), r = new rt(
325
- new S(Math.min(n.x, i.x), Math.min(n.y, i.y)),
326
- new S(Math.max(n.x, i.x), Math.max(n.y, i.y))
327
- ), o = this.targetObjects || this.scene.children, a = [], c = new De();
324
+ ), r = new at(
325
+ new C(Math.min(n.x, i.x), Math.min(n.y, i.y)),
326
+ new C(Math.max(n.x, i.x), Math.max(n.y, i.y))
327
+ ), o = this.targetObjects || this.scene.children, a = [], c = new ke();
328
328
  c.multiplyMatrices(this.camera.projectionMatrix, this.camera.matrixWorldInverse);
329
329
  const l = (d) => {
330
330
  if (!d.visible) return;
331
331
  const p = new v();
332
- if (p.setFromMatrixPosition(d.matrixWorld), p.applyMatrix4(c), p.z > -1 && p.z < 1 && r.containsPoint(new S(p.x, p.y)) && a.push(d), this._deep)
332
+ if (p.setFromMatrixPosition(d.matrixWorld), p.applyMatrix4(c), p.z > -1 && p.z < 1 && r.containsPoint(new C(p.x, p.y)) && a.push(d), this._deep)
333
333
  for (const u of d.children)
334
334
  l(u);
335
335
  };
@@ -341,19 +341,15 @@ class Tn extends Ne {
341
341
  this.disableBoxSelection(), this._selected.clear();
342
342
  }
343
343
  }
344
- function Z(h, e) {
344
+ function ee(h, e) {
345
345
  const t = h;
346
- if (t.setSceneInstanceVisible) {
347
- t.setSceneInstanceVisible(e);
346
+ if (t.setSemanticVisible) {
347
+ t.setSemanticVisible(e);
348
348
  return;
349
349
  }
350
- if (t.setFacilityVisible) {
351
- t.setFacilityVisible(e);
352
- return;
353
- }
354
- h.visible = e, t.markSceneInstanceRenderDirty?.(), t.markFacilityRenderDirty?.();
350
+ h.visible = e, t.markSemanticRenderDirty?.();
355
351
  }
356
- class bs {
352
+ class xs {
357
353
  idMap = /* @__PURE__ */ new Map();
358
354
  nameMap = /* @__PURE__ */ new Map();
359
355
  typeMap = /* @__PURE__ */ new Map();
@@ -460,14 +456,14 @@ class bs {
460
456
  */
461
457
  show(e) {
462
458
  const t = this.idMap.get(e);
463
- t && Z(t, !0);
459
+ t && ee(t, !0);
464
460
  }
465
461
  /**
466
462
  * Hide an object by id.
467
463
  */
468
464
  hide(e) {
469
465
  const t = this.idMap.get(e);
470
- t && Z(t, !1);
466
+ t && ee(t, !1);
471
467
  }
472
468
  /**
473
469
  * Show only the specified objects, hide all others.
@@ -476,7 +472,7 @@ class bs {
476
472
  const t = new Set(e);
477
473
  for (const s of this.allObjects) {
478
474
  const n = this.objectIds.get(s) ?? /* @__PURE__ */ new Set();
479
- Z(s, [...n].some((i) => t.has(i)));
475
+ ee(s, [...n].some((i) => t.has(i)));
480
476
  }
481
477
  }
482
478
  /**
@@ -486,12 +482,8 @@ class bs {
486
482
  const s = this.idMap.get(e);
487
483
  if (!s) return;
488
484
  const n = s;
489
- if (n.setSceneInstanceOpacity) {
490
- n.setSceneInstanceOpacity(t);
491
- return;
492
- }
493
- if (n.setFacilityOpacity) {
494
- n.setFacilityOpacity(t);
485
+ if (n.setSemanticOpacity) {
486
+ n.setSemanticOpacity(t);
495
487
  return;
496
488
  }
497
489
  s.traverse((i) => {
@@ -507,7 +499,7 @@ class bs {
507
499
  * Get the bounding box of an object by id, or all objects if no id provided.
508
500
  */
509
501
  getBoundingBox(e) {
510
- const t = new X();
502
+ const t = new V();
511
503
  if (e) {
512
504
  const s = this.idMap.get(e);
513
505
  s && t.setFromObject(s);
@@ -539,10 +531,10 @@ class bs {
539
531
  */
540
532
  showAll() {
541
533
  for (const e of this.allObjects)
542
- Z(e, !0);
534
+ ee(e, !0);
543
535
  }
544
536
  }
545
- class _n {
537
+ class En {
546
538
  scenes = /* @__PURE__ */ new Map();
547
539
  _activeSceneKey = null;
548
540
  /**
@@ -555,7 +547,7 @@ class _n {
555
547
  * Create and register a new scene.
556
548
  */
557
549
  create(e, t = {}) {
558
- const s = new ke();
550
+ const s = new je();
559
551
  return t.background !== void 0 && (s.background = new M(t.background)), this.scenes.set(e, s), s;
560
552
  }
561
553
  /**
@@ -616,7 +608,7 @@ class _n {
616
608
  return this.scenes.size;
617
609
  }
618
610
  }
619
- class En {
611
+ class Pn {
620
612
  scene;
621
613
  lights = /* @__PURE__ */ new Map();
622
614
  helpers = /* @__PURE__ */ new Map();
@@ -624,7 +616,7 @@ class En {
624
616
  this.scene = e;
625
617
  }
626
618
  addAmbient(e, t = {}) {
627
- const { color: s = 16777215, intensity: n = 0.5 } = t, i = new ot(s, n);
619
+ const { color: s = 16777215, intensity: n = 0.5 } = t, i = new ct(s, n);
628
620
  return i.name = e, this._register(e, i), i;
629
621
  }
630
622
  addDirectional(e, t = {}) {
@@ -701,7 +693,7 @@ class En {
701
693
  const t = this.lights.get(e);
702
694
  if (!t) return;
703
695
  let s = null;
704
- t instanceof ye ? s = new at(t, 1) : t instanceof we ? s = new ct(t, 0.5) : t instanceof ve ? s = new ht(t) : t instanceof be && (s = new lt(t, 1)), s && (this.scene.add(s), this.helpers.set(e, s));
696
+ t instanceof ye ? s = new ht(t, 1) : t instanceof we ? s = new lt(t, 0.5) : t instanceof ve ? s = new dt(t) : t instanceof be && (s = new pt(t, 1)), s && (this.scene.add(s), this.helpers.set(e, s));
705
697
  }
706
698
  /**
707
699
  * Hide (remove) the helper for a light.
@@ -732,7 +724,7 @@ class En {
732
724
  this.removeAll(), this.hideAllHelpers();
733
725
  }
734
726
  }
735
- class xs extends dt {
727
+ class Ss extends ut {
736
728
  scene;
737
729
  camera;
738
730
  scenePass;
@@ -832,10 +824,10 @@ class xs extends dt {
832
824
  }
833
825
  #g() {
834
826
  if (this.#s || this.#o || this.#h || this.#c.size > 0) {
835
- const t = { output: Qt };
827
+ const t = { output: Xt };
836
828
  this.#c.forEach((s, n) => {
837
829
  n !== "output" && (t[n] = s);
838
- }), this.#s && (t.emissive = Xt), this.#o && (t.normal = Yt), this.#h && (t.velocity = Vt), this.scenePass.setMRT(Kt(t));
830
+ }), this.#s && (t.emissive = Vt), this.#o && (t.normal = Jt), this.#h && (t.velocity = Zt), this.scenePass.setMRT(qt(t));
839
831
  }
840
832
  }
841
833
  #y() {
@@ -846,15 +838,15 @@ class xs extends dt {
846
838
  #w() {
847
839
  let e = this.scenePass.getTextureNode();
848
840
  if (this.#o)
849
- if (!(this.camera instanceof te))
841
+ if (!(this.camera instanceof se))
850
842
  console.warn("RenderPipeline: SSGI requires a PerspectiveCamera, skipping.");
851
843
  else {
852
- const t = this.scenePass.getTextureNode(), s = this.scenePass.getTextureNode("depth"), n = this.scenePass.getTextureNode("normal"), i = ts(t, s, n, this.camera);
844
+ const t = this.scenePass.getTextureNode(), s = this.scenePass.getTextureNode("depth"), n = this.scenePass.getTextureNode("normal"), i = ss(t, s, n, this.camera);
853
845
  i.sliceCount.value = this.#a.sliceCount, i.stepCount.value = this.#a.stepCount, i.aoIntensity.value = this.#a.aoIntensity, i.giIntensity.value = this.#a.giIntensity, i.radius.value = this.#a.radius, i.thickness.value = this.#a.thickness, this.#p = i, e = Me(e, i), this.#e.push(i);
854
846
  }
855
847
  if (this.#s) {
856
848
  const t = this.scenePass.getTextureNode("emissive");
857
- this.#n = es(
849
+ this.#n = ts(
858
850
  t,
859
851
  this.#r.strength,
860
852
  this.#r.radius,
@@ -874,11 +866,11 @@ class xs extends dt {
874
866
  t ||= i.includesTemporalAntialias === !0, s ||= i.includesOutputTransform === !0, e = i(this.scenePass, e);
875
867
  }), this.#v(s), this.#h && !t) {
876
868
  const i = this.scenePass.getTextureNode("depth"), r = this.scenePass.getTextureNode("velocity");
877
- this.#l = ss(e, i, r, this.camera), this.#e.push(this.#l), e = this.#l;
869
+ this.#l = ns(e, i, r, this.camera), this.#e.push(this.#l), e = this.#l;
878
870
  } else
879
871
  this.#l = null;
880
872
  this.#t.size > 0 && this.#t.forEach((i) => {
881
- const r = qt(e, i);
873
+ const r = Yt(e, i);
882
874
  this.#e.push(r), e = r;
883
875
  }), this.outputNode = e, this.needsUpdate = !0;
884
876
  }
@@ -890,18 +882,18 @@ class xs extends dt {
890
882
  }
891
883
  }
892
884
  const Cs = {
893
- Vector2: S,
885
+ Vector2: C,
894
886
  Vector3: v,
895
- Vector4: ut,
896
- Quaternion: pt,
897
- Matrix4: De,
887
+ Vector4: ft,
888
+ Quaternion: mt,
889
+ Matrix4: ke,
898
890
  Spherical: T,
899
- Box3: X,
900
- Sphere: je,
901
- Raycaster: ze
891
+ Box3: V,
892
+ Sphere: Ue,
893
+ Raycaster: Ne
902
894
  };
903
- We.install({ THREE: Cs });
904
- class Ss extends We {
895
+ Ke.install({ THREE: Cs });
896
+ class Ms extends Ke {
905
897
  constructor(...e) {
906
898
  super(...e), this.minDistance = 0.2, this.smoothTime = 0.2, this.dollySpeed = 0.2;
907
899
  }
@@ -909,7 +901,7 @@ class Ss extends We {
909
901
  * Set absolute angle for azimuth to avoid spinning
910
902
  */
911
903
  absoluteRotations() {
912
- this.azimuthAngle = Ms(this.azimuthAngle, 0);
904
+ this.azimuthAngle = Ts(this.azimuthAngle, 0);
913
905
  }
914
906
  async flyToBox(e, t = {}) {
915
907
  if (e.isEmpty())
@@ -917,7 +909,7 @@ class Ss extends We {
917
909
  this.absoluteRotations();
918
910
  const { viewpoint: s = "frontTop", enableTransition: n = !0, padding: i = 0.1, cover: r = !1 } = t, o = [];
919
911
  if (s !== "current") {
920
- const a = Oe[s.toUpperCase()] ?? Oe.FRONTTOP, c = a.theta, l = a.phi;
912
+ const a = Ae[s.toUpperCase()] ?? Ae.FRONTTOP, c = a.theta, l = a.phi;
921
913
  o.push(
922
914
  this.fitToBox(e, n, {
923
915
  paddingLeft: i,
@@ -928,13 +920,13 @@ class Ss extends We {
928
920
  })
929
921
  ), o.push(this.rotateTo(c, l, n));
930
922
  } else {
931
- const a = new je();
923
+ const a = new Ue();
932
924
  e.getBoundingSphere(a), a.radius += i, o.push(this.fitToSphere(a, n));
933
925
  }
934
926
  return await Promise.all(o), !0;
935
927
  }
936
928
  async flyToObject(e, t = {}) {
937
- const s = new X().setFromObject(e);
929
+ const s = new V().setFromObject(e);
938
930
  return this.flyToBox(s, t);
939
931
  }
940
932
  /**
@@ -985,7 +977,7 @@ class Ss extends We {
985
977
  ]);
986
978
  }
987
979
  }
988
- const Oe = {
980
+ const Ae = {
989
981
  LEFT: new T(0, Math.PI / 2, -Math.PI / 2),
990
982
  RIGHT: new T(0, Math.PI / 2, Math.PI / 2),
991
983
  FRONT: new T(0, Math.PI / 2, 0),
@@ -1001,17 +993,17 @@ const Oe = {
1001
993
  LEFTBACKTOP: new T(0, Math.PI / 4, -Math.PI / 4 * 3),
1002
994
  RIGHTBACKTOP: new T(0, Math.PI / 4, Math.PI / 4 * 3)
1003
995
  };
1004
- function Ms(h, e) {
996
+ function Ts(h, e) {
1005
997
  const t = h - e;
1006
- return mt.euclideanModulo(t + Math.PI, Math.PI * 2) - Math.PI;
998
+ return gt.euclideanModulo(t + Math.PI, Math.PI * 2) - Math.PI;
1007
999
  }
1008
- class Ts {
1009
- environment = new ns();
1000
+ class _s {
1001
+ environment = new is();
1010
1002
  renderer;
1011
1003
  pmremGenerator;
1012
1004
  envMap = null;
1013
1005
  constructor(e) {
1014
- this.renderer = e, this.pmremGenerator = new ft(e);
1006
+ this.renderer = e, this.pmremGenerator = new yt(e);
1015
1007
  }
1016
1008
  update() {
1017
1009
  this.envMap || (this.envMap = this.pmremGenerator.fromScene(this.environment).texture);
@@ -1020,20 +1012,20 @@ class Ts {
1020
1012
  this.pmremGenerator.dispose(), this.envMap?.dispose();
1021
1013
  }
1022
1014
  }
1023
- const ee = 128;
1024
- class _s extends is {
1015
+ const te = 128;
1016
+ class Es extends rs {
1025
1017
  viewer;
1026
1018
  overlayPass;
1027
1019
  constructor(e) {
1028
1020
  super(e.camera, e.el), this.viewer = e;
1029
- const t = new se(-2, 2, 2, -2, 0, 4);
1021
+ const t = new ne(-2, 2, 2, -2, 0, 4);
1030
1022
  t.position.set(0, 0, 2), this.overlayPass = fe(this, t), this.setLabels("x", "y", "z");
1031
1023
  }
1032
1024
  _update = () => {
1033
1025
  this.quaternion.copy(this.viewer.camera.quaternion).invert();
1034
1026
  const e = this.location;
1035
1027
  let t, s;
1036
- e.left !== null ? t = e.left : t = this.viewer.el.offsetWidth - ee - e.right, e.top !== null ? s = e.top : s = this.viewer.el.offsetHeight - ee - e.bottom, this.overlayPass.setViewport(t, s, ee, ee);
1028
+ e.left !== null ? t = e.left : t = this.viewer.el.offsetWidth - te - e.right, e.top !== null ? s = e.top : s = this.viewer.el.offsetHeight - te - e.bottom, this.overlayPass.setViewport(t, s, te, te);
1037
1029
  };
1038
1030
  enable() {
1039
1031
  return this.viewer.renderPipeline.addOverlayPass(this.overlayPass), this.viewer.addEventListener("beforeRender", this._update), this.viewer.render(), this;
@@ -1042,8 +1034,8 @@ class _s extends is {
1042
1034
  return this.viewer.renderPipeline.removeOverlayPass(this.overlayPass), this.viewer.removeEventListener("beforeRender", this._update), this.viewer.render(), this;
1043
1035
  }
1044
1036
  }
1045
- const Qe = "position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;overflow:hidden;", Es = Qe + "z-index:0;", Ps = Qe + "z-index:1;";
1046
- class Os {
1037
+ const qe = "position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;overflow:hidden;", Ps = qe + "z-index:0;", Os = qe + "z-index:1;";
1038
+ class As {
1047
1039
  el;
1048
1040
  css2dRenderer = null;
1049
1041
  css3dRenderer = null;
@@ -1051,21 +1043,21 @@ class Os {
1051
1043
  this.el = e, getComputedStyle(e).position === "static" && (e.style.position = "relative");
1052
1044
  }
1053
1045
  initCSS2DRenderer() {
1054
- const e = new rs();
1055
- return e.setSize(this.el.clientWidth, this.el.clientHeight), e.domElement.style.cssText = Ps, this.el.appendChild(e.domElement), this.css2dRenderer = e, e;
1046
+ const e = new os();
1047
+ return e.setSize(this.el.clientWidth, this.el.clientHeight), e.domElement.style.cssText = Os, this.el.appendChild(e.domElement), this.css2dRenderer = e, e;
1056
1048
  }
1057
1049
  initCSS3DRenderer() {
1058
- const e = new as();
1059
- return e.setSize(this.el.clientWidth, this.el.clientHeight), e.domElement.style.cssText = Es, this.el.appendChild(e.domElement), this.css3dRenderer = e, e;
1050
+ const e = new cs();
1051
+ return e.setSize(this.el.clientWidth, this.el.clientHeight), e.domElement.style.cssText = Ps, this.el.appendChild(e.domElement), this.css3dRenderer = e, e;
1060
1052
  }
1061
1053
  createCSS2DObject(e) {
1062
- return this.css2dRenderer || this.initCSS2DRenderer(), new os(e);
1054
+ return this.css2dRenderer || this.initCSS2DRenderer(), new as(e);
1063
1055
  }
1064
1056
  createCSS25DObject(e) {
1065
- return this.css3dRenderer || this.initCSS3DRenderer(), new cs(e);
1057
+ return this.css3dRenderer || this.initCSS3DRenderer(), new hs(e);
1066
1058
  }
1067
1059
  createCSS3DObject(e) {
1068
- return this.css3dRenderer || this.initCSS3DRenderer(), new hs(e);
1060
+ return this.css3dRenderer || this.initCSS3DRenderer(), new ls(e);
1069
1061
  }
1070
1062
  render(e, t) {
1071
1063
  this.css2dRenderer && this.css2dRenderer.render(e, t), this.css3dRenderer && this.css3dRenderer.render(e, t);
@@ -1077,7 +1069,7 @@ class Os {
1077
1069
  this.css2dRenderer && (this.el.removeChild(this.css2dRenderer.domElement), this.css2dRenderer = null), this.css3dRenderer && (this.el.removeChild(this.css3dRenderer.domElement), this.css3dRenderer = null);
1078
1070
  }
1079
1071
  }
1080
- const As = "timestamp-query";
1072
+ const Bs = "timestamp-query";
1081
1073
  class Is {
1082
1074
  el;
1083
1075
  renderer;
@@ -1110,9 +1102,9 @@ class Is {
1110
1102
  this.timestampText.innerText = "0";
1111
1103
  return;
1112
1104
  }
1113
- this.#n(J.RENDER).then((t) => {
1105
+ this.#n(Z.RENDER).then((t) => {
1114
1106
  this._enabled && (this.timestampText.innerText = t?.toFixed(2) ?? "0");
1115
- }), this.#n(J.COMPUTE);
1107
+ }), this.#n(Z.COMPUTE);
1116
1108
  }
1117
1109
  }
1118
1110
  enable() {
@@ -1129,7 +1121,7 @@ class Is {
1129
1121
  }
1130
1122
  #s() {
1131
1123
  try {
1132
- return this.renderer.hasFeature(As);
1124
+ return this.renderer.hasFeature(Bs);
1133
1125
  } catch {
1134
1126
  return !0;
1135
1127
  }
@@ -1148,11 +1140,11 @@ class Is {
1148
1140
  }) : Promise.resolve(void 0);
1149
1141
  }
1150
1142
  #o() {
1151
- this.#n(J.RENDER), this.#n(J.COMPUTE);
1143
+ this.#n(Z.RENDER), this.#n(Z.COMPUTE);
1152
1144
  }
1153
1145
  }
1154
- gt.enabled = !0;
1155
- class Pn extends Ne {
1146
+ wt.enabled = !0;
1147
+ class On extends De {
1156
1148
  el;
1157
1149
  renderer;
1158
1150
  scene;
@@ -1169,11 +1161,11 @@ class Pn extends Ne {
1169
1161
  frameCount = 1;
1170
1162
  frameloop = "demand";
1171
1163
  constructor({ el: e, rendererOptions: t }) {
1172
- super(), this.el = e, this.renderer = this._initRenderer(t), this.scene = this.createScene(), this.camera = this.createPerspectiveCamera(), this.info = new Is(this.el, this.renderer), this.controls = new Ss(this.camera, this.renderer.domElement), this.renderPipeline = new xs(this.renderer, this.scene, this.camera), this.timer = new yt(), this.roomEnvironment = new Ts(this.renderer), this.interactionManager = new vs(this.renderer.domElement, this.scene, this.camera), this.objectManager = new bs(), this.viewerHelper = new _s(this), this.cssRenderer = new Os(this.el), window.addEventListener("resize", this.onWindowResize);
1164
+ super(), this.el = e, this.renderer = this._initRenderer(t), this.scene = this.createScene(), this.camera = this.createPerspectiveCamera(), this.info = new Is(this.el, this.renderer), this.controls = new Ms(this.camera, this.renderer.domElement), this.renderPipeline = new Ss(this.renderer, this.scene, this.camera), this.timer = new vt(), this.roomEnvironment = new _s(this.renderer), this.interactionManager = new bs(this.renderer.domElement, this.scene, this.camera), this.objectManager = new xs(), this.viewerHelper = new Es(this), this.cssRenderer = new As(this.el), window.addEventListener("resize", this.onWindowResize);
1173
1165
  }
1174
1166
  onWindowResize = () => {
1175
1167
  const e = this.el.clientWidth, t = this.el.clientHeight;
1176
- this.camera instanceof te ? (this.camera.aspect = e / t, this.camera.updateProjectionMatrix()) : this.camera instanceof se && (this.camera.left = -e / 2, this.camera.right = e / 2, this.camera.top = t / 2, this.camera.bottom = -t / 2, this.camera.updateProjectionMatrix()), this.renderer.setSize(e, t), this.cssRenderer.resize(e, t), this.render();
1168
+ this.camera instanceof se ? (this.camera.aspect = e / t, this.camera.updateProjectionMatrix()) : this.camera instanceof ne && (this.camera.left = -e / 2, this.camera.right = e / 2, this.camera.top = t / 2, this.camera.bottom = -t / 2, this.camera.updateProjectionMatrix()), this.renderer.setSize(e, t), this.cssRenderer.resize(e, t), this.render();
1177
1169
  };
1178
1170
  async init() {
1179
1171
  await this.renderer.init(), this.roomEnvironment.update(), this.scene.environment = this.roomEnvironment.envMap;
@@ -1182,7 +1174,7 @@ class Pn extends Ne {
1182
1174
  this.camera = e, this.controls.camera = e, this.interactionManager.setCamera(e), this.renderPipeline.setCamera(e), this.onWindowResize(), this.dispatchEvent({ type: "cameraChange", camera: e });
1183
1175
  }
1184
1176
  setCameraByType(e) {
1185
- e === "perspective" && !(this.camera instanceof te) ? this.setCamera(this.createPerspectiveCamera()) : e === "orthographic" && !(this.camera instanceof se) && this.setCamera(this.createOrthographicCamera());
1177
+ e === "perspective" && !(this.camera instanceof se) ? this.setCamera(this.createPerspectiveCamera()) : e === "orthographic" && !(this.camera instanceof ne) && this.setCamera(this.createOrthographicCamera());
1186
1178
  }
1187
1179
  render(e = 1) {
1188
1180
  return this.frameCount += e, new Promise((t) => {
@@ -1200,25 +1192,25 @@ class Pn extends Ne {
1200
1192
  this.dispatchEvent({ type: "afterControlsUpdate", time: e, delta: t }), this.frameCount > 0 && (this.frameCount--, s = !0), this.frameloop === "always" && (s = !0), s && (this.dispatchEvent({ type: "beforeRender", time: e, delta: t }), this.renderer.info.reset(), this.renderPipeline.render(), this.cssRenderer.render(this.scene, this.camera), this.info.update(), this.dispatchEvent({ type: "afterRender", time: e, delta: t }));
1201
1193
  };
1202
1194
  _initRenderer(e) {
1203
- const t = new wt({
1195
+ const t = new bt({
1204
1196
  reversedDepthBuffer: !0,
1205
1197
  antialias: !1,
1206
1198
  depth: !1,
1207
1199
  trackTimestamp: !1,
1208
1200
  ...e
1209
1201
  });
1210
- return t.setSize(this.el.clientWidth, this.el.clientHeight), t.shadowMap.enabled = !0, t.shadowMap.type = vt, t.toneMapping = bt, t.toneMappingExposure = 1, t.info.autoReset = !1, t.setPixelRatio(Math.min(window.devicePixelRatio, 1.5)), t.setAnimationLoop(this.animate), this.el.appendChild(t.domElement), t;
1202
+ return t.setSize(this.el.clientWidth, this.el.clientHeight), t.shadowMap.enabled = !0, t.shadowMap.type = xt, t.toneMapping = St, t.toneMappingExposure = 1, t.info.autoReset = !1, t.setPixelRatio(Math.min(window.devicePixelRatio, 1.5)), t.setAnimationLoop(this.animate), this.el.appendChild(t.domElement), t;
1211
1203
  }
1212
1204
  createScene() {
1213
- const e = new ke();
1205
+ const e = new je();
1214
1206
  return e.background = new M(0), e;
1215
1207
  }
1216
1208
  createPerspectiveCamera() {
1217
- const e = new te(50, this.el.clientWidth / this.el.clientHeight, 0.1, 1e5);
1209
+ const e = new se(50, this.el.clientWidth / this.el.clientHeight, 0.1, 1e5);
1218
1210
  return e.position.setScalar(5), e;
1219
1211
  }
1220
1212
  createOrthographicCamera() {
1221
- const e = new se(
1213
+ const e = new ne(
1222
1214
  -this.el.clientWidth / 2,
1223
1215
  this.el.clientWidth / 2,
1224
1216
  this.el.clientHeight / 2,
@@ -1272,14 +1264,14 @@ class Pn extends Ne {
1272
1264
  */
1273
1265
  enableFog(e = {}) {
1274
1266
  const { color: t = 13421772, near: s = 10, far: n = 100 } = e;
1275
- this.scene.fog = new xt(t, s, n), this.render();
1267
+ this.scene.fog = new Ct(t, s, n), this.render();
1276
1268
  }
1277
1269
  /**
1278
1270
  * Enable exponential fog.
1279
1271
  */
1280
1272
  enableFogExp2(e = {}) {
1281
1273
  const { color: t = 13421772, density: s = 0.01 } = e;
1282
- this.scene.fog = new Ct(t, s), this.render();
1274
+ this.scene.fog = new Mt(t, s), this.render();
1283
1275
  }
1284
1276
  /**
1285
1277
  * Disable fog.
@@ -1291,22 +1283,22 @@ class Pn extends Ne {
1291
1283
  this.el.removeChild(this.renderer.domElement), window.removeEventListener("resize", this.onWindowResize), this.info.dispose(), this.interactionManager.dispose(), this.roomEnvironment.dispose(), this.cssRenderer.dispose(), this.renderPipeline.dispose(), this.renderer.dispose();
1292
1284
  }
1293
1285
  }
1294
- class Bs extends Ke {
1286
+ class Rs extends Qe {
1295
1287
  constructor(e) {
1296
1288
  super(e);
1297
1289
  }
1298
1290
  parse(e, t, s, n) {
1299
- if (Rs(e.slice(0, 8)) === "SBMG----") {
1300
- const r = Ls(e.slice(8));
1291
+ if (Ls(e.slice(0, 8)) === "SBMG----") {
1292
+ const r = zs(e.slice(8));
1301
1293
  return super.parse(r, t, s, n);
1302
1294
  } else
1303
1295
  return super.parse(e, t, s, n);
1304
1296
  }
1305
1297
  }
1306
- function Rs(h) {
1298
+ function Ls(h) {
1307
1299
  return new TextDecoder().decode(new Uint8Array(h));
1308
1300
  }
1309
- function Ls(h) {
1301
+ function zs(h) {
1310
1302
  const e = new DataView(h);
1311
1303
  for (let t = 0; t < e.byteLength; t++) {
1312
1304
  const s = e.getUint8(t), n = (s >> 4 & 15) + (s << 4 & 240);
@@ -1314,37 +1306,37 @@ function Ls(h) {
1314
1306
  }
1315
1307
  return e.buffer;
1316
1308
  }
1317
- const zs = 8, Ns = 130, Ae = 66, Ds = "SBK-----", ks = "SBM-----", qe = new TextDecoder(), js = new TextEncoder();
1318
- function Us(h) {
1319
- let e = zs;
1309
+ const Ns = 8, Ds = 130, Be = 66, ks = "SBK-----", js = "SBM-----", Xe = new TextDecoder(), Us = new TextEncoder();
1310
+ function Hs(h) {
1311
+ let e = Ns;
1320
1312
  const t = new Uint8Array(h, 0, e);
1321
- if (qe.decode(t) !== Ds)
1313
+ if (Xe.decode(t) !== ks)
1322
1314
  return h;
1323
- e += Ns;
1315
+ e += Ds;
1324
1316
  const n = new Uint8Array(h, 0, e);
1325
1317
  if (n[40] === 1) {
1326
- const r = js.encode(ks), o = new Uint8Array([n[41]]), a = Hs(n), c = Fs(a);
1327
- let l = Ae % c.length;
1328
- const d = e + Ae, p = new Uint8Array(h, d), u = new Uint8Array(p.length);
1318
+ const r = Us.encode(js), o = new Uint8Array([n[41]]), a = Fs(n), c = Gs(a);
1319
+ let l = Be % c.length;
1320
+ const d = e + Be, p = new Uint8Array(h, d), u = new Uint8Array(p.length);
1329
1321
  for (let w = 0; w < p.length; w++)
1330
1322
  u[w] = p[w] ^ c[l], l = (l + 1) % c.length;
1331
1323
  const m = new Uint8Array(r.length + o.length + u.length);
1332
1324
  return m.set(r), m.set(o, r.length), m.set(u, r.length + o.length), m.buffer;
1333
1325
  }
1334
1326
  }
1335
- function Hs(h) {
1327
+ function Fs(h) {
1336
1328
  const e = new Uint8Array(128);
1337
1329
  return e.set(h.slice(42, 74), 0), e.set(h.slice(74, 138), 32), e.set(h.slice(8, 40), 96), e;
1338
1330
  }
1339
- function Fs(h) {
1331
+ function Gs(h) {
1340
1332
  const e = new Uint8Array(64);
1341
1333
  return e.set(h.slice(0, 8), 0), e.set(h.slice(24, 32), 8), e.set(h.slice(40, 56), 16), e.set(h.slice(64, 88), 32), e.set(h.slice(96, 104), 56), e;
1342
1334
  }
1343
- const Gs = (h, e, t) => {
1335
+ const $s = (h, e, t) => {
1344
1336
  const s = h.buffer.slice(t, t + e);
1345
- let n = qe.decode(s);
1337
+ let n = Xe.decode(s);
1346
1338
  return n = n.replace("\\", "/"), n.startsWith("Maps/") || (n = `Maps/${n}`), n;
1347
- }, $s = (h, e, t) => {
1339
+ }, Ws = (h, e, t) => {
1348
1340
  const [s, n, i, r, o] = e, a = t || r < 1;
1349
1341
  return new L({
1350
1342
  name: h,
@@ -1354,19 +1346,19 @@ const Gs = (h, e, t) => {
1354
1346
  alphaTest: 0.01,
1355
1347
  side: o
1356
1348
  });
1357
- }, Ws = (h) => h?.toLowerCase().endsWith(".png") ?? !1;
1358
- class Ks {
1349
+ }, Ks = (h) => h?.toLowerCase().endsWith(".png") ?? !1;
1350
+ class Qs {
1359
1351
  data;
1360
1352
  options;
1361
1353
  textureLoader;
1362
1354
  littleEndian = !0;
1363
1355
  materials = /* @__PURE__ */ new Map();
1364
1356
  constructor(e, t) {
1365
- this.data = e, this.options = t, this.textureLoader = new He(t.manager), this.textureLoader.setCrossOrigin(t.crossOrigin), this.textureLoader.setRequestHeader(t.requestHeader);
1357
+ this.data = e, this.options = t, this.textureLoader = new Fe(t.manager), this.textureLoader.setCrossOrigin(t.crossOrigin), this.textureLoader.setRequestHeader(t.requestHeader);
1366
1358
  }
1367
1359
  parse(e, t) {
1368
1360
  let s = this.data;
1369
- const n = Us(this.data);
1361
+ const n = Hs(this.data);
1370
1362
  n && (s = n);
1371
1363
  const i = new DataView(s);
1372
1364
  let r = 8;
@@ -1390,14 +1382,14 @@ class Ks {
1390
1382
  const p = e.getFloat32(t, this.littleEndian);
1391
1383
  t += 4, t += 4, t += 4, t += 4, t += 4;
1392
1384
  let u = e.getUint8(t);
1393
- t += 1, u === 0 ? u = Mt : u === 1 ? u = Tt : u === 2 && (u = _t);
1385
+ t += 1, u === 0 ? u = _t : u === 1 ? u = Et : u === 2 && (u = Pt);
1394
1386
  const m = e.getUint16(t, this.littleEndian);
1395
1387
  t += 2;
1396
- const w = m > 0 ? Gs(e, m, t) : "";
1388
+ const w = m > 0 ? $s(e, m, t) : "";
1397
1389
  if (t += m, !this.materials.has(a)) {
1398
- const x = $s(a, [c, l, d, p, u], Ws(w));
1399
- this.materials.set(a, x), w && this.options.path && this.textureLoader.load(B.resolveURL(w, this.options.path), (y) => {
1400
- y.colorSpace = Fe, y.wrapS = xe, y.wrapT = xe, y.flipY = !1, y.anisotropy = 16, x.map = y;
1390
+ const x = Ws(a, [c, l, d, p, u], Ks(w));
1391
+ this.materials.set(a, x), w && this.options.path && this.textureLoader.load(I.resolveURL(w, this.options.path), (y) => {
1392
+ y.colorSpace = Ge, y.wrapS = xe, y.wrapT = xe, y.flipY = !1, y.anisotropy = 16, x.map = y;
1401
1393
  });
1402
1394
  }
1403
1395
  }
@@ -1416,10 +1408,10 @@ class Ks {
1416
1408
  if (t += 2, w > 0)
1417
1409
  for (let g = 0; g < w; g++)
1418
1410
  t += 4, t += 4, t += 4;
1419
- const C = e.getUint16(t, this.littleEndian);
1420
- if (t += 2, C > 0)
1421
- for (let g = 0; g < C; g++) {
1422
- const b = new S();
1411
+ const S = e.getUint16(t, this.littleEndian);
1412
+ if (t += 2, S > 0)
1413
+ for (let g = 0; g < S; g++) {
1414
+ const b = new C();
1423
1415
  b.setX(e.getFloat32(t, this.littleEndian)), t += 4, b.setY(e.getFloat32(t, this.littleEndian)), t += 4, d.push(b);
1424
1416
  }
1425
1417
  const x = e.getUint16(t, this.littleEndian);
@@ -1438,12 +1430,12 @@ class Ks {
1438
1430
  for (let g = 0; g < p.length; g++) {
1439
1431
  const b = p[g], z = l[b[0]], N = l[b[1]], P = l[b[2]];
1440
1432
  y.push(...z.toArray(), ...N.toArray(), ...P.toArray());
1441
- let V = new S(), $ = new S(), j = new S();
1433
+ let J = new C(), W = new C(), j = new C();
1442
1434
  const U = u[g];
1443
- U !== void 0 && (V = U[0], $ = U[1], j = U[2]), _.push(...V.toArray(), ...$.toArray(), ...j.toArray());
1435
+ U !== void 0 && (J = U[0], W = U[1], j = U[2]), _.push(...J.toArray(), ...W.toArray(), ...j.toArray());
1444
1436
  }
1445
- const O = new Float32Array(y), A = new Float32Array(_), E = new K();
1446
- if (O.length > 0 && E.setAttribute("position", new Ce(O, 3)), A.length > 0 && E.setAttribute("uv", new Ce(A, 2)), E.computeVertexNormals(), this.materials.has(c)) {
1437
+ const A = new Float32Array(y), B = new Float32Array(_), E = new Q();
1438
+ if (A.length > 0 && E.setAttribute("position", new Se(A, 3)), B.length > 0 && E.setAttribute("uv", new Se(B, 2)), E.computeVertexNormals(), this.materials.has(c)) {
1447
1439
  const g = new k(E, this.materials.get(c));
1448
1440
  g.name = a, g.castShadow = !0, g.receiveShadow = !0, n.add(g);
1449
1441
  }
@@ -1455,20 +1447,20 @@ class Ks {
1455
1447
  console.warn("SBMLoader: SBM version 3 is not supported yet."), s(n);
1456
1448
  }
1457
1449
  }
1458
- class Qs extends St {
1450
+ class qs extends Tt {
1459
1451
  load(e, t, s, n) {
1460
1452
  let i;
1461
1453
  if (this.resourcePath !== "")
1462
1454
  i = this.resourcePath;
1463
1455
  else if (this.path !== "") {
1464
- const a = B.extractUrlBase(e);
1465
- i = B.resolveURL(a, this.path);
1456
+ const a = I.extractUrlBase(e);
1457
+ i = I.resolveURL(a, this.path);
1466
1458
  } else
1467
- i = B.extractUrlBase(e);
1459
+ i = I.extractUrlBase(e);
1468
1460
  this.manager.itemStart(e);
1469
1461
  const r = (a) => {
1470
1462
  n ? n(a) : console.error(a), this.manager.itemError(e), this.manager.itemEnd(e);
1471
- }, o = new Ue(this.manager);
1463
+ }, o = new He(this.manager);
1472
1464
  o.setPath(this.path), o.setResponseType("arraybuffer"), o.setRequestHeader(this.requestHeader), o.setWithCredentials(this.withCredentials), o.load(
1473
1465
  e,
1474
1466
  (a) => {
@@ -1495,7 +1487,7 @@ class Qs extends St {
1495
1487
  n?.(new Error(`SBMLoader: Invalid SBM format: ${i}`));
1496
1488
  return;
1497
1489
  }
1498
- new Ks(e, {
1490
+ new Qs(e, {
1499
1491
  path: t,
1500
1492
  crossOrigin: this.crossOrigin,
1501
1493
  requestHeader: this.requestHeader,
@@ -1517,7 +1509,7 @@ class Qs extends St {
1517
1509
  });
1518
1510
  }
1519
1511
  }
1520
- const qs = [
1512
+ const Xs = [
1521
1513
  "map",
1522
1514
  "alphaMap",
1523
1515
  "aoMap",
@@ -1544,14 +1536,14 @@ const qs = [
1544
1536
  "thicknessMap",
1545
1537
  "transmissionMap"
1546
1538
  ];
1547
- function W(h) {
1539
+ function K(h) {
1548
1540
  return h.traverse((e) => {
1549
1541
  if (!(e instanceof k)) return;
1550
1542
  const t = Array.isArray(e.material) ? e.material : [e.material];
1551
1543
  for (const s of t) {
1552
1544
  if (!s) continue;
1553
1545
  let n = !1;
1554
- for (const i of qs) {
1546
+ for (const i of Xs) {
1555
1547
  const r = s[i];
1556
1548
  r?.isTexture && r.image == null && (r.dispose(), s[i] = null, n = !0);
1557
1549
  }
@@ -1561,19 +1553,19 @@ function W(h) {
1561
1553
  }
1562
1554
  class D {
1563
1555
  static CACHE_NAME = "u-space-model-loader-cache";
1564
- static fileLoader = new Ue().setResponseType("arraybuffer");
1565
- static dracoLoader = new us().setDecoderPath(
1566
- `https://cdn.jsdelivr.net/npm/three@0.${Se}.0/examples/jsm/libs/draco/`
1556
+ static fileLoader = new He().setResponseType("arraybuffer");
1557
+ static dracoLoader = new ms().setDecoderPath(
1558
+ `https://cdn.jsdelivr.net/npm/three@0.${Ce}.0/examples/jsm/libs/draco/`
1567
1559
  );
1568
- static ktx2Loader = new ms().setTranscoderPath(
1569
- `https://cdn.jsdelivr.net/npm/three@0.${Se}.0/examples/jsm/libs/basis/`
1560
+ static ktx2Loader = new fs().setTranscoderPath(
1561
+ `https://cdn.jsdelivr.net/npm/three@0.${Ce}.0/examples/jsm/libs/basis/`
1570
1562
  );
1571
- static gltfLoader = new Ke().setDRACOLoader(D.dracoLoader).setKTX2Loader(D.ktx2Loader).setMeshoptDecoder(Pe);
1572
- static sbmxLoader = new Bs().setDRACOLoader(D.dracoLoader).setKTX2Loader(D.ktx2Loader).setMeshoptDecoder(Pe);
1573
- static sbmLoader = new Qs();
1574
- static fbxLoader = new ls();
1575
- static objLoader = new ds();
1576
- static stlLoader = new ps();
1563
+ static gltfLoader = new Qe().setDRACOLoader(D.dracoLoader).setKTX2Loader(D.ktx2Loader).setMeshoptDecoder(Oe);
1564
+ static sbmxLoader = new Rs().setDRACOLoader(D.dracoLoader).setKTX2Loader(D.ktx2Loader).setMeshoptDecoder(Oe);
1565
+ static sbmLoader = new qs();
1566
+ static fbxLoader = new ds();
1567
+ static objLoader = new ps();
1568
+ static stlLoader = new us();
1577
1569
  static setLoadingManager(e) {
1578
1570
  this.fileLoader.manager = e, this.dracoLoader.manager = e, this.ktx2Loader.manager = e, this.gltfLoader.manager = e, this.sbmxLoader.manager = e, this.sbmLoader.manager = e, this.fbxLoader.manager = e, this.objLoader.manager = e, this.stlLoader.manager = e;
1579
1571
  }
@@ -1601,20 +1593,20 @@ class D {
1601
1593
  switch (t.persistent && typeof caches < "u" ? n = await this.getPersistentData(e) : n = await this.fileLoader.loadAsync(e), s) {
1602
1594
  case "gltf":
1603
1595
  case "glb":
1604
- const i = await this.gltfLoader.parseAsync(n, B.extractUrlBase(e));
1605
- return i.scene.animations = i.animations, W(i.scene);
1596
+ const i = await this.gltfLoader.parseAsync(n, I.extractUrlBase(e));
1597
+ return i.scene.animations = i.animations, K(i.scene);
1606
1598
  case "sbmx":
1607
- const r = await this.sbmxLoader.parseAsync(n, B.extractUrlBase(e));
1608
- return r.scene.animations = r.animations, W(r.scene);
1599
+ const r = await this.sbmxLoader.parseAsync(n, I.extractUrlBase(e));
1600
+ return r.scene.animations = r.animations, K(r.scene);
1609
1601
  case "sbm":
1610
- const o = await this.sbmLoader.parseAsync(n, B.extractUrlBase(e));
1611
- return W(o);
1602
+ const o = await this.sbmLoader.parseAsync(n, I.extractUrlBase(e));
1603
+ return K(o);
1612
1604
  case "fbx":
1613
- const a = this.fbxLoader.parse(n, B.extractUrlBase(e));
1614
- return W(a);
1605
+ const a = this.fbxLoader.parse(n, I.extractUrlBase(e));
1606
+ return K(a);
1615
1607
  case "obj":
1616
1608
  const c = new TextDecoder().decode(n), l = this.objLoader.parse(c);
1617
- return W(l);
1609
+ return K(l);
1618
1610
  case "stl":
1619
1611
  const d = this.stlLoader.parse(n);
1620
1612
  return new k(d, new L());
@@ -1634,10 +1626,10 @@ class D {
1634
1626
  }
1635
1627
  }
1636
1628
  }
1637
- class On {
1638
- static textureLoader = new He();
1639
- static hdrLoader = new fs();
1640
- static cubeTextureLoader = new Et();
1629
+ class An {
1630
+ static textureLoader = new Fe();
1631
+ static hdrLoader = new gs();
1632
+ static cubeTextureLoader = new Ot();
1641
1633
  static setLoadingManager(e) {
1642
1634
  this.textureLoader.manager = e, this.hdrLoader.manager = e, this.cubeTextureLoader.manager = e;
1643
1635
  }
@@ -1646,7 +1638,7 @@ class On {
1646
1638
  }
1647
1639
  static async loadAsyncHDR(e) {
1648
1640
  const t = await this.hdrLoader.loadAsync(e);
1649
- return t.mapping = Pt, t;
1641
+ return t.mapping = At, t;
1650
1642
  }
1651
1643
  static async loadAsyncCubeTexture(e, t) {
1652
1644
  return this.cubeTextureLoader.setPath(e), await this.cubeTextureLoader.loadAsync(t);
@@ -1665,7 +1657,7 @@ class G extends k {
1665
1657
  return this.visible === !1 && this.ignoreInvisibleWhenRaycast === !0 ? !1 : super.raycast(e, t);
1666
1658
  }
1667
1659
  }
1668
- class Xe extends R {
1660
+ class Ye extends R {
1669
1661
  isBaseGroup = !0;
1670
1662
  type = "BaseGroup";
1671
1663
  ignoreInvisibleWhenRaycast = !0;
@@ -1676,7 +1668,7 @@ class Xe extends R {
1676
1668
  return this.visible === !1 && this.ignoreInvisibleWhenRaycast === !0 ? !1 : super.raycast(e, t);
1677
1669
  }
1678
1670
  }
1679
- class Xs extends Ot {
1671
+ class Ys extends Bt {
1680
1672
  isBaseSprite = !0;
1681
1673
  type = "BaseSprite";
1682
1674
  ignoreInvisibleWhenRaycast = !0;
@@ -1687,7 +1679,7 @@ class Xs extends Ot {
1687
1679
  return this.visible === !1 && this.ignoreInvisibleWhenRaycast === !0 ? !1 : super.raycast(e, t);
1688
1680
  }
1689
1681
  }
1690
- class he extends Xe {
1682
+ class he extends Ye {
1691
1683
  isModel = !0;
1692
1684
  type = "Model";
1693
1685
  static memoryCache = /* @__PURE__ */ new Map();
@@ -1702,8 +1694,8 @@ class he extends Xe {
1702
1694
  try {
1703
1695
  let i;
1704
1696
  s ? he.memoryCache.has(t) ? i = he.memoryCache.get(t) : (i = D.loadAsync(t, { persistent: n }), he.memoryCache.set(t, i)) : i = D.loadAsync(t, { persistent: n });
1705
- const r = await i, o = gs(r);
1706
- return this.add(o), o.animations && o.animations.length > 0 && (this.animations = o.animations, this.mixer = new At(o)), o;
1697
+ const r = await i, o = ys(r);
1698
+ return this.add(o), o.animations && o.animations.length > 0 && (this.animations = o.animations, this.mixer = new It(o)), o;
1707
1699
  } catch (i) {
1708
1700
  return console.error(`[Model] Failed to load model from ${t}:`, i), null;
1709
1701
  }
@@ -1715,7 +1707,7 @@ class he extends Xe {
1715
1707
  if (e === void 0 ? o = this.animations[0] : typeof e == "number" ? o = this.animations[e] : o = this.animations.find((c) => c.name === e), !o)
1716
1708
  return console.warn(`[Model] Animation not found: ${e}`), null;
1717
1709
  let a = this.actions.get(o.name);
1718
- return a || (a = this.mixer.clipAction(o), this.actions.set(o.name, a)), a.setLoop(s ? It : Bt, n), a.clampWhenFinished = r, a.timeScale = i, a.reset().play(), a;
1710
+ return a || (a = this.mixer.clipAction(o), this.actions.set(o.name, a)), a.setLoop(s ? Rt : Lt, n), a.clampWhenFinished = r, a.timeScale = i, a.reset().play(), a;
1719
1711
  }
1720
1712
  playAllAnimations(e = {}) {
1721
1713
  return this.animations.map((t, s) => this.playAnimation(s, e)).filter((t) => t !== null);
@@ -1736,7 +1728,7 @@ class he extends Xe {
1736
1728
  * Get the axis-aligned bounding box of this model.
1737
1729
  */
1738
1730
  getBoundingBox() {
1739
- return new X().setFromObject(this);
1731
+ return new V().setFromObject(this);
1740
1732
  }
1741
1733
  /**
1742
1734
  * Get the center point of this model's bounding box.
@@ -1760,11 +1752,11 @@ class he extends Xe {
1760
1752
  typeof caches < "u" && await caches.delete("u-space-loader-cache");
1761
1753
  }
1762
1754
  }
1763
- class Ys extends G {
1755
+ class Vs extends G {
1764
1756
  isSphereMesh = !0;
1765
1757
  type = "SphereMesh";
1766
1758
  constructor({ geometryParameters: e, materialParameters: t } = {}) {
1767
- super(), this.geometry = new Rt(
1759
+ super(), this.geometry = new zt(
1768
1760
  e?.radius,
1769
1761
  e?.widthSegments,
1770
1762
  e?.heightSegments,
@@ -1779,7 +1771,7 @@ class Ie extends G {
1779
1771
  isTubeMesh = !0;
1780
1772
  type = "TubeMesh";
1781
1773
  constructor({ geometryParameters: e, materialParameters: t } = {}) {
1782
- super(), this.geometry = new Lt(
1774
+ super(), this.geometry = new Nt(
1783
1775
  e?.path,
1784
1776
  e?.tubularSegments,
1785
1777
  e?.radius,
@@ -1788,7 +1780,7 @@ class Ie extends G {
1788
1780
  ), this.material = new L(t);
1789
1781
  }
1790
1782
  }
1791
- class An extends Xe {
1783
+ class Bn extends Ye {
1792
1784
  isTopology = !0;
1793
1785
  type = "Topology";
1794
1786
  // Visuals
@@ -1892,7 +1884,7 @@ class An extends Xe {
1892
1884
  */
1893
1885
  renderGraph() {
1894
1886
  this.clearGraph(), this.graphGroup = new R();
1895
- const e = new Ys({
1887
+ const e = new Vs({
1896
1888
  geometryParameters: {
1897
1889
  radius: this.parameters.nodeRadius,
1898
1890
  widthSegments: 16,
@@ -1914,7 +1906,7 @@ class An extends Xe {
1914
1906
  t.add(o);
1915
1907
  const a = this.nodes.get(n), c = this.nodes.get(r);
1916
1908
  if (a && c) {
1917
- const l = new zt(a, c), d = new Ie({
1909
+ const l = new Dt(a, c), d = new Ie({
1918
1910
  geometryParameters: {
1919
1911
  path: l,
1920
1912
  tubularSegments: 1,
@@ -1941,7 +1933,7 @@ class An extends Xe {
1941
1933
  */
1942
1934
  renderPath(e, t = this.parameters.pathColor) {
1943
1935
  if (e.length < 2) return;
1944
- const s = new Nt(e, !1, "catmullrom", 0), n = new Ie({
1936
+ const s = new kt(e, !1, "catmullrom", 0), n = new Ie({
1945
1937
  geometryParameters: {
1946
1938
  path: s,
1947
1939
  tubularSegments: e.length * 10,
@@ -1991,7 +1983,7 @@ class An extends Xe {
1991
1983
  return this.adjacencyMap.get(e);
1992
1984
  }
1993
1985
  }
1994
- class In extends Xs {
1986
+ class In extends Ys {
1995
1987
  isPoi = !0;
1996
1988
  type = "Poi";
1997
1989
  parameters = {
@@ -2010,7 +2002,7 @@ class In extends Xs {
2010
2002
  _canvas = document.createElement("canvas");
2011
2003
  _lastParametersJSON = "";
2012
2004
  constructor(e = {}) {
2013
- super(new Dt()), Object.assign(this.parameters, e), this.updateAsync();
2005
+ super(new jt()), Object.assign(this.parameters, e), this.updateAsync();
2014
2006
  }
2015
2007
  /**
2016
2008
  * Update the POI with new parameters
@@ -2026,33 +2018,33 @@ class In extends Xs {
2026
2018
  n.font = `${this.parameters.fontSize}px ${this.parameters.fontFamily}`;
2027
2019
  let i = null;
2028
2020
  this.parameters.img && (i = await this._loadImage(this.parameters.img));
2029
- const { text: r, fontSize: o, color: a, iconSize: c, padding: l, backgroundColor: d, borderRadius: p, textPosition: u, scaleFactor: m } = this.parameters, w = n.measureText(r), C = r ? w.width : 0, x = r ? o : 0;
2030
- let y = 0, _ = 0, O = 0, A = 0, E = 0, g = 0;
2021
+ const { text: r, fontSize: o, color: a, iconSize: c, padding: l, backgroundColor: d, borderRadius: p, textPosition: u, scaleFactor: m } = this.parameters, w = n.measureText(r), S = r ? w.width : 0, x = r ? o : 0;
2022
+ let y = 0, _ = 0, A = 0, B = 0, E = 0, g = 0;
2031
2023
  const b = !!i, z = !!r;
2032
2024
  if (b && z)
2033
2025
  switch (u) {
2034
2026
  case "top":
2035
- y = Math.max(c, C), _ = c + l + x, E = (y - C) / 2, g = x / 2, O = (y - c) / 2, A = x + l;
2027
+ y = Math.max(c, S), _ = c + l + x, E = (y - S) / 2, g = x / 2, A = (y - c) / 2, B = x + l;
2036
2028
  break;
2037
2029
  case "bottom":
2038
- y = Math.max(c, C), _ = c + l + x, O = (y - c) / 2, A = 0, E = (y - C) / 2, g = c + l + x / 2;
2030
+ y = Math.max(c, S), _ = c + l + x, A = (y - c) / 2, B = 0, E = (y - S) / 2, g = c + l + x / 2;
2039
2031
  break;
2040
2032
  case "left":
2041
- y = c + l + C, _ = Math.max(c, x), E = 0, g = _ / 2, O = C + l, A = (_ - c) / 2;
2033
+ y = c + l + S, _ = Math.max(c, x), E = 0, g = _ / 2, A = S + l, B = (_ - c) / 2;
2042
2034
  break;
2043
2035
  default:
2044
- y = c + l + C, _ = Math.max(c, x), O = 0, A = (_ - c) / 2, E = c + l, g = _ / 2;
2036
+ y = c + l + S, _ = Math.max(c, x), A = 0, B = (_ - c) / 2, E = c + l, g = _ / 2;
2045
2037
  break;
2046
2038
  }
2047
- else b ? (y = c, _ = c, O = 0, A = 0) : z && (y = C, _ = x, E = 0, g = x / 2);
2039
+ else b ? (y = c, _ = c, A = 0, B = 0) : z && (y = S, _ = x, E = 0, g = x / 2);
2048
2040
  const N = y + l * 2, P = _ + l * 2;
2049
- if (s.width = N, s.height = P, n.font = `${o}px ${this.parameters.fontFamily}`, d && (n.fillStyle = d, this._drawRoundedRect(n, 0, 0, N, P, p), n.fill()), b && n.drawImage(i, O + l, A + l, c, c), z) {
2041
+ if (s.width = N, s.height = P, n.font = `${o}px ${this.parameters.fontFamily}`, d && (n.fillStyle = d, this._drawRoundedRect(n, 0, 0, N, P, p), n.fill()), b && n.drawImage(i, A + l, B + l, c, c), z) {
2050
2042
  n.fillStyle = a;
2051
- const j = n.measureText(r), U = j.actualBoundingBoxAscent + j.actualBoundingBoxDescent, it = j.actualBoundingBoxAscent - U / 2;
2052
- n.textBaseline = "alphabetic", n.fillText(r, E + l, g + l + it);
2043
+ const j = n.measureText(r), U = j.actualBoundingBoxAscent + j.actualBoundingBoxDescent, ot = j.actualBoundingBoxAscent - U / 2;
2044
+ n.textBaseline = "alphabetic", n.fillText(r, E + l, g + l + ot);
2053
2045
  }
2054
- const V = this.material.map, $ = new kt(s);
2055
- $.colorSpace = Fe, this.material.map = $, V?.dispose(), this.scale.set(N * m, P * m, 1);
2046
+ const J = this.material.map, W = new Ut(s);
2047
+ W.colorSpace = Ge, this.material.map = W, J?.dispose(), this.scale.set(N * m, P * m, 1);
2056
2048
  }
2057
2049
  _loadImage(e) {
2058
2050
  return new Promise((t, s) => {
@@ -2070,43 +2062,43 @@ class In extends Xs {
2070
2062
  this.material.map?.dispose(), this.material.dispose();
2071
2063
  }
2072
2064
  }
2073
- class Ye extends G {
2065
+ class Ve extends G {
2074
2066
  isShapeMesh = !0;
2075
2067
  type = "ShapeMesh";
2076
2068
  constructor({ geometryParameters: e, materialParameters: t } = {}) {
2077
- super(), this.geometry = new jt(e?.shape, e?.curveSegments), this.material = new L(t), this.geometry.rotateX(-Math.PI / 2);
2069
+ super(), this.geometry = new Ht(e?.shape, e?.curveSegments), this.material = new L(t), this.geometry.rotateX(-Math.PI / 2);
2078
2070
  }
2079
2071
  static createFromPoints(e, t = {}) {
2080
- return new Ye({
2072
+ return new Ve({
2081
2073
  ...t,
2082
2074
  geometryParameters: {
2083
2075
  ...t.geometryParameters,
2084
- shape: new Ge(e.map((s) => new S(s.x, -s.z)))
2076
+ shape: new $e(e.map((s) => new C(s.x, -s.z)))
2085
2077
  }
2086
2078
  });
2087
2079
  }
2088
2080
  }
2089
- class Ve extends G {
2081
+ class Je extends G {
2090
2082
  isExtrudeMesh = !0;
2091
2083
  type = "ExtrudeMesh";
2092
2084
  constructor({ geometryParameters: e, materialParameters: t } = {}) {
2093
- super(), this.geometry = new Ut(e?.shape, e?.options), this.material = new L(t), this.geometry.rotateX(-Math.PI / 2);
2085
+ super(), this.geometry = new Ft(e?.shape, e?.options), this.material = new L(t), this.geometry.rotateX(-Math.PI / 2);
2094
2086
  }
2095
2087
  static createFromPoints(e, t = {}) {
2096
- return e && e.length === 0 && (e = void 0), new Ve({
2088
+ return e && e.length === 0 && (e = void 0), new Je({
2097
2089
  ...t,
2098
2090
  geometryParameters: {
2099
2091
  ...t.geometryParameters,
2100
- shape: new Ge(e?.map((s) => new S(s.x, -s.z)))
2092
+ shape: new $e(e?.map((s) => new C(s.x, -s.z)))
2101
2093
  }
2102
2094
  });
2103
2095
  }
2104
2096
  }
2105
- class Bn extends G {
2097
+ class Rn extends G {
2106
2098
  isPlaneMesh = !0;
2107
2099
  type = "PlaneMesh";
2108
2100
  constructor({ geometryParameters: e, materialParameters: t } = {}) {
2109
- super(), this.geometry = new Ht(
2101
+ super(), this.geometry = new Gt(
2110
2102
  e?.width,
2111
2103
  e?.height,
2112
2104
  e?.widthSegments,
@@ -2114,12 +2106,12 @@ class Bn extends G {
2114
2106
  ), this.material = new L(t);
2115
2107
  }
2116
2108
  }
2117
- class Rn extends G {
2109
+ class Ln extends G {
2118
2110
  isCircleMesh = !0;
2119
2111
  type = "CircleMesh";
2120
2112
  constructor({ geometryParameters: e, materialParameters: t } = {}) {
2121
2113
  super(
2122
- new Ft(
2114
+ new $t(
2123
2115
  e?.radius,
2124
2116
  e?.segments,
2125
2117
  e?.thetaStart,
@@ -2136,14 +2128,14 @@ class F {
2136
2128
  });
2137
2129
  }
2138
2130
  }
2139
- class Ln {
2131
+ class zn {
2140
2132
  static flow(e = {}) {
2141
- const { baseColor: t = 16777215, flowColor: s = 65280, speed: n = 1, scale: i = 3, intensity: r = 4 } = e, o = H(new M(t)), a = H(new M(s)), c = Te().x.mul(i).sub(re.mul(n)), l = oe(ge(c).add(1).mul(0.5), r);
2142
- return ae(o, a, l);
2133
+ const { baseColor: t = 16777215, flowColor: s = 65280, speed: n = 1, scale: i = 3, intensity: r = 4 } = e, o = H(new M(t)), a = H(new M(s)), c = Te().x.mul(i).sub(oe.mul(n)), l = ae(ge(c).add(1).mul(0.5), r);
2134
+ return ce(o, a, l);
2143
2135
  }
2144
2136
  static breathe(e = {}) {
2145
- const { baseColor: t = 16777215, breathColor: s = 65280, speed: n = 1, intensity: i = 2 } = e, r = H(new M(t)), o = H(new M(s)), a = ge(re.mul(n)).add(1).mul(0.5), c = oe(a, i);
2146
- return ae(r, o, c);
2137
+ const { baseColor: t = 16777215, breathColor: s = 65280, speed: n = 1, intensity: i = 2 } = e, r = H(new M(t)), o = H(new M(s)), a = ge(oe.mul(n)).add(1).mul(0.5), c = ae(a, i);
2138
+ return ce(r, o, c);
2147
2139
  }
2148
2140
  static fluid(e = {}) {
2149
2141
  const {
@@ -2153,24 +2145,24 @@ class Ln {
2153
2145
  scale: i = 1,
2154
2146
  intensity: r = 1,
2155
2147
  distortion: o = 0.5
2156
- } = e, a = H(new M(t)), c = H(new M(s)), l = Te().mul(i), d = re.mul(n), p = _e(l.add(d), 1, 0), u = l.add(p.mul(o)), m = _e(u, 1, 0).add(1).mul(0.5), w = oe(m, r);
2157
- return ae(a, c, w);
2148
+ } = e, a = H(new M(t)), c = H(new M(s)), l = Te().mul(i), d = oe.mul(n), p = _e(l.add(d), 1, 0), u = l.add(p.mul(o)), m = _e(u, 1, 0).add(1).mul(0.5), w = ae(m, r);
2149
+ return ce(a, c, w);
2158
2150
  }
2159
2151
  }
2160
- function zn(h) {
2152
+ function Nn(h) {
2161
2153
  }
2162
- const Y = "uSpaceHighlight", q = `${Y}/enabled`, Je = `${Y}/opacity`, Ze = `${Y}/color`, et = `${Y}/overwrite`, de = `${Y}/instancedOriginalOpacity`, me = "uSpaceBreathe", pe = `${me}/enabled`, tt = `${me}/color`, st = `${me}/speed`, nt = `${me}/intensity`, ue = /* @__PURE__ */ new WeakMap(), Vs = $e(() => {
2163
- const h = I(q, "uint"), e = I(Ze, "uint"), t = I(et, "uint"), s = Le(e), n = Ee.mul(s), i = ce(t.greaterThan(0), s, n), r = ce(h.greaterThan(0), i, Ee), o = I(pe, "uint"), a = I(tt, "uint"), c = I(st, "float"), l = I(nt, "float"), d = Le(a), p = ge(re.mul(c)).add(1).mul(0.5), u = oe(p, l), m = ae(r, d, u);
2164
- return ce(o.greaterThan(0), m, r);
2165
- })(), Js = $e(() => {
2166
- const h = I(q, "uint"), e = I(Je, "float");
2167
- return ce(h.greaterThan(0), e, Jt);
2154
+ const $ = "uSpaceHighlight", Y = `${$}/enabled`, Ze = `${$}/opacity`, et = `${$}/color`, tt = `${$}/overwrite`, st = `${$}/multiplyOpacity`, de = `${$}/instancedOriginalOpacity`, me = "uSpaceBreathe", pe = `${me}/enabled`, nt = `${me}/color`, it = `${me}/speed`, rt = `${me}/intensity`, ue = /* @__PURE__ */ new WeakMap(), Js = We(() => {
2155
+ const h = O(Y, "uint"), e = O(et, "uint"), t = O(tt, "uint"), s = ze(e), n = Ee.mul(s), i = q(t.greaterThan(0), s, n), r = q(h.greaterThan(0), i, Ee), o = O(pe, "uint"), a = O(nt, "uint"), c = O(it, "float"), l = O(rt, "float"), d = ze(a), p = ge(oe.mul(c)).add(1).mul(0.5), u = ae(p, l), m = ce(r, d, u);
2156
+ return q(o.greaterThan(0), m, r);
2157
+ })(), Zs = We(() => {
2158
+ const h = O(Y, "uint"), e = O(Ze, "float"), t = O(st, "uint"), s = q(t.greaterThan(0), Pe.mul(e), e);
2159
+ return q(h.greaterThan(0), s, Pe);
2168
2160
  })();
2169
- function Q(h) {
2161
+ function X(h) {
2170
2162
  return Array.isArray(h.material) ? h.material : [h.material];
2171
2163
  }
2172
- function Be(h) {
2173
- Q(h).forEach((t) => {
2164
+ function Re(h) {
2165
+ X(h).forEach((t) => {
2174
2166
  if (!t) return;
2175
2167
  let s = ue.get(t);
2176
2168
  s || (s = {
@@ -2179,53 +2171,53 @@ function Be(h) {
2179
2171
  transparent: t.transparent,
2180
2172
  depthWrite: t.depthWrite,
2181
2173
  activeMeshes: /* @__PURE__ */ new Set()
2182
- }, ue.set(t, s)), s.activeMeshes.add(h), t.transparent = !0, t.colorNode = Vs, t.opacityNode = Js, t.needsUpdate = !0;
2174
+ }, ue.set(t, s)), s.activeMeshes.add(h), t.transparent = !0, t.colorNode = Js, t.opacityNode = Zs, t.needsUpdate = !0;
2183
2175
  });
2184
2176
  }
2185
- function Re(h) {
2186
- const e = h.userData[q], t = h.userData[pe];
2177
+ function Le(h) {
2178
+ const e = h.userData[Y], t = h.userData[pe];
2187
2179
  if (e || t) return;
2188
- Q(h).forEach((n) => {
2180
+ X(h).forEach((n) => {
2189
2181
  if (!n) return;
2190
2182
  const i = ue.get(n);
2191
2183
  i && (i.activeMeshes.delete(h), !(i.activeMeshes.size > 0) && (n.colorNode = i.colorNode, n.opacityNode = i.opacityNode, n.transparent = i.transparent, n.depthWrite = i.depthWrite, n.needsUpdate = !0, ue.delete(n)));
2192
2184
  });
2193
2185
  }
2194
- function Zs(h, e, t, s) {
2195
- const n = h, i = n.setSceneInstanceHighlight ?? n.setFacilityHighlight;
2186
+ function en(h, e, t, s) {
2187
+ const n = h, i = n.setSemanticHighlight;
2196
2188
  if (i)
2197
2189
  return i.call(h, e, t, s), !0;
2198
- const r = n.setSceneInstanceColor ?? n.setFacilityColor, o = n.setSceneInstanceOpacity ?? n.setFacilityOpacity, a = n.getSceneInstanceOpacity ?? n.getFacilityOpacity, c = n.getSceneInstanceColor ?? n.getFacilityColor, l = n.hasSceneInstanceColor ?? n.hasFacilityColor;
2190
+ const r = n.setSemanticColor, o = n.setSemanticOpacity, a = n.getSemanticOpacity, c = n.getSemanticColor, l = n.hasSemanticColor;
2199
2191
  return !r || !o ? !1 : (h.userData[de] === void 0 && (h.userData[de] = {
2200
2192
  hasColor: l?.call(h) ?? !1,
2201
2193
  color: c?.call(h, new M()).getHex() ?? 16777215,
2202
2194
  opacity: a?.call(h) ?? 1
2203
2195
  }), r.call(h, e), o.call(h, t), !0);
2204
2196
  }
2205
- function en(h) {
2206
- const e = h, t = e.clearSceneInstanceHighlight ?? e.clearFacilityHighlight;
2197
+ function tn(h) {
2198
+ const e = h, t = e.clearSemanticHighlight;
2207
2199
  if (t)
2208
2200
  return t.call(h), !0;
2209
- const s = e.resetSceneInstanceColor ?? e.resetFacilityColor, n = e.setSceneInstanceColor ?? e.setFacilityColor, i = e.setSceneInstanceOpacity ?? e.setFacilityOpacity;
2201
+ const s = e.resetSemanticColor, n = e.setSemanticColor, i = e.setSemanticOpacity;
2210
2202
  if (!s || !i) return !1;
2211
2203
  const r = h.userData[de];
2212
2204
  return r && (r.hasColor && n ? n.call(h, r.color) : s.call(h), i.call(h, r.opacity), Reflect.deleteProperty(h.userData, de)), !0;
2213
2205
  }
2214
2206
  class le {
2215
2207
  static highlightColor(e, t = {}) {
2216
- const s = Array.isArray(e) ? e : [e], { opacity: n = 0.5, color: i = 16711680, overwrite: r = !1, depthWrite: o } = t, a = new M(i).getHex();
2217
- for (const c of s)
2218
- Zs(c, i, n, r) || F.traverseMeshes(c, (l) => {
2219
- l.userData[q] = 1, l.userData[Je] = n, l.userData[Ze] = a, l.userData[et] = r ? 1 : 0, Be(l), o !== void 0 && Q(l).forEach((p) => {
2220
- p && (p.depthWrite = o);
2208
+ const s = Array.isArray(e) ? e : [e], { opacity: n = 0.5, color: i = 16711680, overwrite: r = !1, depthWrite: o, multiplyOpacity: a = !1 } = t, c = new M(i).getHex();
2209
+ for (const l of s)
2210
+ en(l, i, n, r) || F.traverseMeshes(l, (d) => {
2211
+ d.userData[Y] = 1, d.userData[Ze] = n, d.userData[et] = c, d.userData[tt] = r ? 1 : 0, d.userData[st] = a ? 1 : 0, Re(d), o !== void 0 && X(d).forEach((u) => {
2212
+ u && (u.depthWrite = o);
2221
2213
  });
2222
2214
  });
2223
2215
  }
2224
2216
  static removeHighlightColor(e) {
2225
2217
  const t = Array.isArray(e) ? e : [e];
2226
2218
  for (const s of t)
2227
- en(s) || F.traverseMeshes(s, (n) => {
2228
- n.userData[q] = 0, Re(n);
2219
+ tn(s) || F.traverseMeshes(s, (n) => {
2220
+ n.userData[Y] = 0, Le(n);
2229
2221
  });
2230
2222
  }
2231
2223
  static breatheColor(e, t = {}) {
@@ -2240,14 +2232,14 @@ class le {
2240
2232
  n.color = new M(n.color).getHex();
2241
2233
  for (const i of s)
2242
2234
  F.traverseMeshes(i, (r) => {
2243
- r.userData[pe] = 1, r.userData[tt] = n.color, r.userData[st] = n.speed, r.userData[nt] = n.intensity, Be(r);
2235
+ r.userData[pe] = 1, r.userData[nt] = n.color, r.userData[it] = n.speed, r.userData[rt] = n.intensity, Re(r);
2244
2236
  });
2245
2237
  }
2246
2238
  static removeBreatheColor(e) {
2247
2239
  const t = Array.isArray(e) ? e : [e];
2248
2240
  for (const s of t)
2249
2241
  F.traverseMeshes(s, (n) => {
2250
- n.userData[pe] = 0, Re(n);
2242
+ n.userData[pe] = 0, Le(n);
2251
2243
  });
2252
2244
  }
2253
2245
  /**
@@ -2257,7 +2249,7 @@ class le {
2257
2249
  const s = Array.isArray(e) ? e : [e];
2258
2250
  for (const n of s)
2259
2251
  F.traverseMeshes(n, (i) => {
2260
- Q(i).forEach((r) => {
2252
+ X(i).forEach((r) => {
2261
2253
  if (!r) return;
2262
2254
  const o = r;
2263
2255
  o.wireframe = t, o.needsUpdate = !0;
@@ -2290,7 +2282,7 @@ class le {
2290
2282
  const i = Array.isArray(e) ? e : [e], r = /* @__PURE__ */ new Map();
2291
2283
  for (const o of i)
2292
2284
  F.traverseMeshes(o, (a) => {
2293
- Q(a).forEach((c) => {
2285
+ X(a).forEach((c) => {
2294
2286
  if (!c || r.has(c)) return;
2295
2287
  const l = c.opacity, d = c.transparent, p = s >= 1 ? l : s;
2296
2288
  r.set(c, {
@@ -2316,8 +2308,8 @@ class le {
2316
2308
  c = requestAnimationFrame(l);
2317
2309
  else {
2318
2310
  if (s >= 1)
2319
- for (const { material: m, originalOpacity: w, originalTransparent: C } of r.values())
2320
- m.opacity = w, m.transparent = C, m.needsUpdate = !0;
2311
+ for (const { material: m, originalOpacity: w, originalTransparent: S } of r.values())
2312
+ m.opacity = w, m.transparent = S, m.needsUpdate = !0;
2321
2313
  o();
2322
2314
  }
2323
2315
  };
@@ -2325,11 +2317,11 @@ class le {
2325
2317
  });
2326
2318
  }
2327
2319
  }
2328
- const Le = (h) => {
2320
+ const ze = (h) => {
2329
2321
  const e = h.shiftRight(16).bitAnd(255).toFloat().div(255), t = h.shiftRight(8).bitAnd(255).toFloat().div(255), s = h.bitAnd(255).toFloat().div(255);
2330
- return Zt(e, t, s);
2322
+ return es(e, t, s);
2331
2323
  };
2332
- class tn extends ys {
2324
+ class sn extends ws {
2333
2325
  viewer;
2334
2326
  constructor(e, t) {
2335
2327
  super(t), this.viewer = e;
@@ -2338,7 +2330,7 @@ class tn extends ys {
2338
2330
  this.update(e) && this.viewer.render();
2339
2331
  };
2340
2332
  easingByMode(e) {
2341
- const t = sn[e];
2333
+ const t = nn[e];
2342
2334
  return super.easing(t);
2343
2335
  }
2344
2336
  start(e, t) {
@@ -2348,9 +2340,9 @@ class tn extends ys {
2348
2340
  return this.viewer.removeEventListener("afterControlsUpdate", this._update), super.stop();
2349
2341
  }
2350
2342
  }
2351
- function Nn(h, e, t, s = {}, n, i) {
2343
+ function Dn(h, e, t, s = {}, n, i) {
2352
2344
  return new Promise((r, o) => {
2353
- const { duration: a = 1e3, delay: c = 0, repeat: l = !1, mode: d = "Linear.None", yoyo: p = !1 } = s, u = new tn(h, e).to(t, a).easingByMode(d).delay(c).onUpdate((m) => {
2345
+ const { duration: a = 1e3, delay: c = 0, repeat: l = !1, mode: d = "Linear.None", yoyo: p = !1 } = s, u = new sn(h, e).to(t, a).easingByMode(d).delay(c).onUpdate((m) => {
2354
2346
  n?.(m, u);
2355
2347
  }).onComplete(() => {
2356
2348
  r();
@@ -2362,7 +2354,7 @@ function Nn(h, e, t, s = {}, n, i) {
2362
2354
  typeof l == "number" ? u.repeat(l) : typeof l == "boolean" && l && u.repeat(1 / 0), p && u.repeatDelay(20), u.yoyo(p), u.start();
2363
2355
  });
2364
2356
  }
2365
- const sn = {
2357
+ const nn = {
2366
2358
  "Linear.None": f.Linear.None,
2367
2359
  "Quadratic.In": f.Quadratic.In,
2368
2360
  "Quadratic.Out": f.Quadratic.Out,
@@ -2395,7 +2387,7 @@ const sn = {
2395
2387
  "Bounce.Out": f.Bounce.Out,
2396
2388
  "Bounce.InOut": f.Bounce.InOut
2397
2389
  };
2398
- class Dn {
2390
+ class kn {
2399
2391
  scene;
2400
2392
  planes = /* @__PURE__ */ new Map();
2401
2393
  helpers = /* @__PURE__ */ new Map();
@@ -2404,7 +2396,7 @@ class Dn {
2404
2396
  */
2405
2397
  group;
2406
2398
  constructor(e) {
2407
- this.scene = e, this.group = new Gt(), this.group.name = "__clippingToolGroup", this.scene.add(this.group);
2399
+ this.scene = e, this.group = new Wt(), this.group.name = "__clippingToolGroup", this.scene.add(this.group);
2408
2400
  }
2409
2401
  /**
2410
2402
  * Move all current scene children (except the clipping group itself) into the ClippingGroup,
@@ -2445,7 +2437,7 @@ class Dn {
2445
2437
  showHelper: i = !1,
2446
2438
  helperSize: r = 5,
2447
2439
  helperColor: o = 16711680
2448
- } = t, a = new $t(new v(s.x, s.y, s.z), n);
2440
+ } = t, a = new Kt(new v(s.x, s.y, s.z), n);
2449
2441
  return this.planes.set(e, a), this._syncPlanes(), i && this.showHelper(e, r, o), a;
2450
2442
  }
2451
2443
  /**
@@ -2471,7 +2463,7 @@ class Dn {
2471
2463
  * Add a clipping box from an object's bounding box with optional padding.
2472
2464
  */
2473
2465
  addBoxFromObject(e, t, s = 0, n = {}) {
2474
- const i = new X().setFromObject(t);
2466
+ const i = new V().setFromObject(t);
2475
2467
  return i.expandByScalar(s), this.addBox(e, i, n);
2476
2468
  }
2477
2469
  /**
@@ -2511,7 +2503,7 @@ class Dn {
2511
2503
  this.hideHelper(e);
2512
2504
  const n = this.planes.get(e);
2513
2505
  if (!n) return;
2514
- const i = new Wt(n, t, new M(s).getHex());
2506
+ const i = new Qt(n, t, new M(s).getHex());
2515
2507
  i.name = e, this.helpers.set(e, i), this.scene.add(i);
2516
2508
  }
2517
2509
  /**
@@ -2537,7 +2529,7 @@ class Dn {
2537
2529
  this.detach(), this.removeAll(), this.scene.remove(this.group);
2538
2530
  }
2539
2531
  }
2540
- class kn {
2532
+ class jn {
2541
2533
  scene;
2542
2534
  measurements = /* @__PURE__ */ new Map();
2543
2535
  _idCounter = 0;
@@ -2550,7 +2542,7 @@ class kn {
2550
2542
  measureDistance(e, t, s = {}) {
2551
2543
  const { lineColor: n = 16776960 } = s, i = new v(e.x, e.y, e.z), r = new v(t.x, t.y, t.z), o = i.distanceTo(r), a = `measure_dist_${this._idCounter++}`, c = new R();
2552
2544
  c.name = a;
2553
- const l = new K().setFromPoints([i, r]), d = new ne({ color: n }), p = new ie(l, d);
2545
+ const l = new Q().setFromPoints([i, r]), d = new ie({ color: n }), p = new re(l, d);
2554
2546
  c.add(p), this.scene.add(c);
2555
2547
  const u = {
2556
2548
  id: a,
@@ -2571,7 +2563,7 @@ class kn {
2571
2563
  throw new Error("MeasureTool.measureArea requires at least 3 points");
2572
2564
  const n = e.map((u) => new v(u.x, u.y, u.z)), i = this._calculatePolygonArea(n), r = `measure_area_${this._idCounter++}`, o = new R();
2573
2565
  o.name = r;
2574
- const a = [...n, n[0]], c = new K().setFromPoints(a), l = new ne({ color: s }), d = new ie(c, l);
2566
+ const a = [...n, n[0]], c = new Q().setFromPoints(a), l = new ie({ color: s }), d = new re(c, l);
2575
2567
  o.add(d), this.scene.add(o);
2576
2568
  const p = {
2577
2569
  id: r,
@@ -2589,7 +2581,7 @@ class kn {
2589
2581
  measureAngle(e, t, s, n = {}) {
2590
2582
  const { lineColor: i = 16746496 } = n, r = new v(e.x, e.y, e.z), o = new v(t.x, t.y, t.z), a = new v(s.x, s.y, s.z), c = r.clone().sub(o).normalize(), l = a.clone().sub(o).normalize(), p = Math.acos(Math.max(-1, Math.min(1, c.dot(l)))) * 180 / Math.PI, u = `measure_angle_${this._idCounter++}`, m = new R();
2591
2583
  m.name = u;
2592
- const w = new K().setFromPoints([r, o, a]), C = new ne({ color: i }), x = new ie(w, C);
2584
+ const w = new Q().setFromPoints([r, o, a]), S = new ie({ color: i }), x = new re(w, S);
2593
2585
  m.add(x), this.scene.add(m);
2594
2586
  const y = {
2595
2587
  id: u,
@@ -2650,7 +2642,7 @@ class kn {
2650
2642
  this.removeAll();
2651
2643
  }
2652
2644
  }
2653
- class jn {
2645
+ class Un {
2654
2646
  scene;
2655
2647
  annotations = /* @__PURE__ */ new Map();
2656
2648
  _idCounter = 0;
@@ -2691,11 +2683,11 @@ class jn {
2691
2683
  let r = null;
2692
2684
  const o = t.labelOffset || { x: 0, y: 2, z: 0 };
2693
2685
  if (t.showLeaderLine !== !1) {
2694
- const { lineColor: c = 16777215 } = t, l = new K().setFromPoints([
2686
+ const { lineColor: c = 16777215 } = t, l = new Q().setFromPoints([
2695
2687
  new v(0, 0, 0),
2696
2688
  new v(o.x, o.y, o.z)
2697
- ]), d = new ne({ color: c });
2698
- r = new ie(l, d), s.add(r);
2689
+ ]), d = new ie({ color: c });
2690
+ r = new re(l, d), s.add(r);
2699
2691
  }
2700
2692
  if (this._createCSSObject) {
2701
2693
  const c = this._createCSSObject(i);
@@ -2803,47 +2795,47 @@ class jn {
2803
2795
  this.removeAll();
2804
2796
  }
2805
2797
  }
2806
- const nn = "0.0.27";
2807
- window.__USPACE__ = { version: nn };
2798
+ const rn = "0.0.28";
2799
+ window.__USPACE__ = { version: rn };
2808
2800
  export {
2809
- jn as AnnotationManager,
2810
- Xe as BaseGroup,
2801
+ Un as AnnotationManager,
2802
+ Ye as BaseGroup,
2811
2803
  G as BaseMesh,
2812
- Xs as BaseSprite,
2813
- Fn as CSS2DObject,
2814
- $n as CSS3DObject,
2815
- Wn as CSS3DSprite,
2816
- Os as CSSRenderer,
2817
- Ss as CameraControls,
2818
- Rn as CircleMesh,
2819
- Dn as ClippingTool,
2820
- Ve as ExtrudeMesh,
2821
- ws as InteractionEvent,
2822
- vs as InteractionManager,
2823
- En as LightManager,
2804
+ Ys as BaseSprite,
2805
+ Gn as CSS2DObject,
2806
+ Wn as CSS3DObject,
2807
+ Kn as CSS3DSprite,
2808
+ As as CSSRenderer,
2809
+ Ms as CameraControls,
2810
+ Ln as CircleMesh,
2811
+ kn as ClippingTool,
2812
+ Je as ExtrudeMesh,
2813
+ vs as InteractionEvent,
2814
+ bs as InteractionManager,
2815
+ Pn as LightManager,
2824
2816
  le as MaterialEffects,
2825
- kn as MeasureTool,
2817
+ jn as MeasureTool,
2826
2818
  he as Model,
2827
2819
  D as ModelLoaderManager,
2828
- bs as ObjectManager,
2820
+ xs as ObjectManager,
2829
2821
  F as ObjectUtils,
2830
- Bn as PlaneMesh,
2822
+ Rn as PlaneMesh,
2831
2823
  In as Poi,
2832
- xs as RenderPipeline,
2833
- Ts as RoomEnvironment,
2834
- Qs as SBMLoader,
2835
- Bs as SBMXLoader,
2836
- _n as SceneManager,
2837
- Tn as Selection,
2838
- Ye as ShapeMesh,
2839
- Ys as SphereMesh,
2840
- Ln as TSLEffects,
2841
- On as TextureLoaderManager,
2842
- An as Topology,
2824
+ Ss as RenderPipeline,
2825
+ _s as RoomEnvironment,
2826
+ qs as SBMLoader,
2827
+ Rs as SBMXLoader,
2828
+ En as SceneManager,
2829
+ _n as Selection,
2830
+ Ve as ShapeMesh,
2831
+ Vs as SphereMesh,
2832
+ zn as TSLEffects,
2833
+ An as TextureLoaderManager,
2834
+ Bn as Topology,
2843
2835
  Ie as TubeMesh,
2844
- tn as Tween,
2845
- Pn as Viewer,
2846
- zn as reinterpretType,
2847
- Nn as tweenAnimation,
2848
- nn as version
2836
+ sn as Tween,
2837
+ On as Viewer,
2838
+ Nn as reinterpretType,
2839
+ Dn as tweenAnimation,
2840
+ rn as version
2849
2841
  };