endset_three_editor 0.5.5 → 0.5.6

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.
@@ -1,11 +1,11 @@
1
1
  var pn = Object.defineProperty;
2
2
  var mn = (r, e, t) => e in r ? pn(r, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : r[e] = t;
3
3
  var Ue = (r, e, t) => mn(r, typeof e != "symbol" ? e + "" : e, t);
4
- import { toRaw as Ot, defineComponent as xe, ref as W, inject as gn, computed as $e, watchEffect as bn, resolveComponent as Cn, openBlock as R, createElementBlock as P, createElementVNode as C, normalizeClass as ie, withModifiers as Vt, unref as In, toDisplayString as oe, Fragment as ke, renderList as Dt, createBlock as nt, createCommentVNode as B, reactive as Jt, watch as Pe, withDirectives as k, vModelText as D, withKeys as ze, vModelCheckbox as yn, toRef as xn, provide as vn, createVNode as Ft, vShow as Le, shallowRef as ps, onMounted as Sn, onBeforeUnmount as Tn } from "vue";
4
+ import { toRaw as Ot, defineComponent as ve, ref as W, inject as gn, computed as $e, watchEffect as bn, resolveComponent as Cn, openBlock as R, createElementBlock as P, createElementVNode as C, normalizeClass as oe, withModifiers as Jt, unref as In, toDisplayString as ne, Fragment as Pe, renderList as Dt, createBlock as nt, createCommentVNode as Z, reactive as Qt, watch as be, withDirectives as k, vModelText as D, withKeys as ze, vModelCheckbox as yn, toRef as xn, provide as vn, createVNode as Ut, vShow as Le, shallowRef as ps, onMounted as Sn, onBeforeUnmount as Tn } from "vue";
5
5
  import * as w from "three";
6
- import { Controls as Bs, Vector3 as T, MOUSE as Ke, TOUCH as Ge, Quaternion as J, Spherical as ms, Vector2 as F, Ray as Mn, Plane as wn, MathUtils as Xs, Raycaster as Rn, Object3D as Be, MeshBasicMaterial as Ne, LineBasicMaterial as it, CylinderGeometry as q, BoxGeometry as K, BufferGeometry as De, Float32BufferAttribute as le, Mesh as v, OctahedronGeometry as gt, Line as de, TorusGeometry as Ve, SphereGeometry as En, Euler as kn, Matrix4 as fe, PlaneGeometry as Pn, DoubleSide as kt, OrthographicCamera as qs, ShaderMaterial as Ee, UniformsUtils as rs, WebGLRenderTarget as ge, HalfFloatType as we, NoBlending as Qt, Timer as Ln, Color as Z, RawShaderMaterial as Nn, ColorManagement as Pt, SRGBTransfer as On, LinearToneMapping as Dn, ReinhardToneMapping as Wn, CineonToneMapping as jn, ACESFilmicToneMapping as Fn, AgXToneMapping as Un, NeutralToneMapping as Hn, CustomToneMapping as zn, MeshDepthMaterial as Gn, RGBADepthPacking as Kn, AdditiveBlending as Zn, Loader as as, FileLoader as ct, SRGBColorSpace as he, Group as St, Material as ot, PointsMaterial as et, MeshPhongMaterial as Bn, LineSegments as Yt, Points as Tt, TrianglesDrawMode as Xn, TriangleFanDrawMode as _t, TriangleStripDrawMode as Vs, LoaderUtils as rt, MeshPhysicalMaterial as ce, LinearSRGBColorSpace as Ae, SpotLight as qn, PointLight as Vn, DirectionalLight as Jn, InstancedMesh as Qn, InstancedBufferAttribute as Yn, TextureLoader as _n, ImageBitmapLoader as $n, BufferAttribute as at, InterleavedBuffer as Js, InterleavedBufferAttribute as Qs, LinearMipmapLinearFilter as Ys, NearestMipmapLinearFilter as ei, LinearMipmapNearestFilter as ti, NearestMipmapNearestFilter as si, LinearFilter as $t, NearestFilter as _s, RepeatWrapping as es, MirroredRepeatWrapping as ni, ClampToEdgeWrapping as ii, MeshStandardMaterial as $s, PropertyBinding as oi, SkinnedMesh as ri, LineLoop as ai, PerspectiveCamera as li, Skeleton as Ai, AnimationClip as ci, Bone as ui, InterpolateDiscrete as di, InterpolateLinear as en, Texture as gs, VectorKeyframeTrack as bs, NumberKeyframeTrack as Cs, QuaternionKeyframeTrack as Is, FrontSide as hi, Interpolant as fi, Box3 as pi, Sphere as mi } from "three";
6
+ import { Controls as Zs, Vector3 as T, MOUSE as Ke, TOUCH as Ge, Quaternion as J, Spherical as ms, Vector2 as F, Ray as Mn, Plane as wn, MathUtils as Xs, Raycaster as Rn, Object3D as Ze, MeshBasicMaterial as Ne, LineBasicMaterial as it, CylinderGeometry as q, BoxGeometry as K, BufferGeometry as De, Float32BufferAttribute as le, Mesh as S, OctahedronGeometry as gt, Line as de, TorusGeometry as Ve, SphereGeometry as En, Euler as kn, Matrix4 as fe, PlaneGeometry as Pn, DoubleSide as kt, OrthographicCamera as qs, ShaderMaterial as ke, UniformsUtils as as, WebGLRenderTarget as ge, HalfFloatType as Re, NoBlending as Yt, Timer as Ln, Color as B, RawShaderMaterial as Nn, ColorManagement as Pt, SRGBTransfer as On, LinearToneMapping as Dn, ReinhardToneMapping as Wn, CineonToneMapping as jn, ACESFilmicToneMapping as Fn, AgXToneMapping as Un, NeutralToneMapping as Hn, CustomToneMapping as zn, MeshDepthMaterial as Gn, RGBADepthPacking as Kn, AdditiveBlending as Bn, Loader as ls, FileLoader as ct, SRGBColorSpace as he, Group as St, Material as ot, PointsMaterial as et, MeshPhongMaterial as Zn, LineSegments as _t, Points as Tt, TrianglesDrawMode as Xn, TriangleFanDrawMode as $t, TriangleStripDrawMode as Vs, LoaderUtils as rt, MeshPhysicalMaterial as ce, LinearSRGBColorSpace as Ae, SpotLight as qn, PointLight as Vn, DirectionalLight as Jn, InstancedMesh as Qn, InstancedBufferAttribute as Yn, TextureLoader as _n, ImageBitmapLoader as $n, BufferAttribute as at, InterleavedBuffer as Js, InterleavedBufferAttribute as Qs, LinearMipmapLinearFilter as Ys, NearestMipmapLinearFilter as ei, LinearMipmapNearestFilter as ti, NearestMipmapNearestFilter as si, LinearFilter as es, NearestFilter as _s, RepeatWrapping as ts, MirroredRepeatWrapping as ni, ClampToEdgeWrapping as ii, MeshStandardMaterial as $s, PropertyBinding as oi, SkinnedMesh as ri, LineLoop as ai, PerspectiveCamera as li, Skeleton as Ai, AnimationClip as ci, Bone as ui, InterpolateDiscrete as di, InterpolateLinear as en, Texture as gs, VectorKeyframeTrack as bs, NumberKeyframeTrack as Cs, QuaternionKeyframeTrack as Is, FrontSide as hi, Interpolant as fi, Box3 as pi, Sphere as mi } from "three";
7
7
  import ut from "@tweenjs/tween.js";
8
- const ys = { type: "change" }, ls = { type: "start" }, tn = { type: "end" }, bt = new Mn(), xs = new wn(), gi = Math.cos(70 * Xs.DEG2RAD), z = new T(), V = 2 * Math.PI, N = {
8
+ const ys = { type: "change" }, As = { type: "start" }, tn = { type: "end" }, bt = new Mn(), xs = new wn(), gi = Math.cos(70 * Xs.DEG2RAD), z = new T(), V = 2 * Math.PI, N = {
9
9
  NONE: -1,
10
10
  ROTATE: 0,
11
11
  DOLLY: 1,
@@ -14,8 +14,8 @@ const ys = { type: "change" }, ls = { type: "start" }, tn = { type: "end" }, bt
14
14
  TOUCH_PAN: 4,
15
15
  TOUCH_DOLLY_PAN: 5,
16
16
  TOUCH_DOLLY_ROTATE: 6
17
- }, Ut = 1e-6;
18
- class bi extends Bs {
17
+ }, Ht = 1e-6;
18
+ class bi extends Zs {
19
19
  /**
20
20
  * Constructs a new controls instance.
21
21
  *
@@ -172,7 +172,7 @@ class bi extends Bs {
172
172
  const o = this.object.zoom;
173
173
  this.object.zoom = Math.max(this.minZoom, Math.min(this.maxZoom, this.object.zoom / this._scale)), o !== this.object.zoom && (this.object.updateProjectionMatrix(), i = !0);
174
174
  }
175
- return this._scale = 1, this._performCursorZoom = !1, i || this._lastPosition.distanceToSquared(this.object.position) > Ut || 8 * (1 - this._lastQuaternion.dot(this.object.quaternion)) > Ut || this._lastTargetPosition.distanceToSquared(this.target) > Ut ? (this.dispatchEvent(ys), this._lastPosition.copy(this.object.position), this._lastQuaternion.copy(this.object.quaternion), this._lastTargetPosition.copy(this.target), !0) : !1;
175
+ return this._scale = 1, this._performCursorZoom = !1, i || this._lastPosition.distanceToSquared(this.object.position) > Ht || 8 * (1 - this._lastQuaternion.dot(this.object.quaternion)) > Ht || this._lastTargetPosition.distanceToSquared(this.target) > Ht ? (this.dispatchEvent(ys), this._lastPosition.copy(this.object.position), this._lastQuaternion.copy(this.object.quaternion), this._lastTargetPosition.copy(this.target), !0) : !1;
176
176
  }
177
177
  _getAutoRotationAngle(e) {
178
178
  return e !== null ? V / 60 * this.autoRotateSpeed * e : V / 60 / 60 * this.autoRotateSpeed;
@@ -422,7 +422,7 @@ function xi(r) {
422
422
  default:
423
423
  this.state = N.NONE;
424
424
  }
425
- this.state !== N.NONE && this.dispatchEvent(ls);
425
+ this.state !== N.NONE && this.dispatchEvent(As);
426
426
  }
427
427
  function vi(r) {
428
428
  switch (this.state) {
@@ -441,7 +441,7 @@ function vi(r) {
441
441
  }
442
442
  }
443
443
  function Si(r) {
444
- this.enabled === !1 || this.enableZoom === !1 || this.state !== N.NONE || (r.preventDefault(), this.dispatchEvent(ls), this._handleMouseWheel(this._customWheelEvent(r)), this.dispatchEvent(tn));
444
+ this.enabled === !1 || this.enableZoom === !1 || this.state !== N.NONE || (r.preventDefault(), this.dispatchEvent(As), this._handleMouseWheel(this._customWheelEvent(r)), this.dispatchEvent(tn));
445
445
  }
446
446
  function Ti(r) {
447
447
  this.enabled !== !1 && this._handleKeyDown(r);
@@ -479,7 +479,7 @@ function Mi(r) {
479
479
  default:
480
480
  this.state = N.NONE;
481
481
  }
482
- this.state !== N.NONE && this.dispatchEvent(ls);
482
+ this.state !== N.NONE && this.dispatchEvent(As);
483
483
  }
484
484
  function wi(r) {
485
485
  switch (this._trackPointer(r), this.state) {
@@ -512,12 +512,12 @@ function Ei(r) {
512
512
  function ki(r) {
513
513
  r.key === "Control" && (this._controlActive = !1, this.domElement.getRootNode().removeEventListener("keyup", this._interceptControlUp, { passive: !0, capture: !0 }));
514
514
  }
515
- const Te = new Rn(), G = new T(), pe = new T(), j = new J(), vs = {
515
+ const Me = new Rn(), G = new T(), pe = new T(), j = new J(), vs = {
516
516
  X: new T(1, 0, 0),
517
517
  Y: new T(0, 1, 0),
518
518
  Z: new T(0, 0, 1)
519
- }, Ht = { type: "change" }, Ss = { type: "mouseDown", mode: null }, Ts = { type: "mouseUp", mode: null }, Ms = { type: "objectChange" };
520
- class Pi extends Bs {
519
+ }, zt = { type: "change" }, Ss = { type: "mouseDown", mode: null }, Ts = { type: "mouseUp", mode: null }, Ms = { type: "objectChange" };
520
+ class Pi extends Zs {
521
521
  /**
522
522
  * Constructs a new controls instance.
523
523
  *
@@ -533,20 +533,20 @@ class Pi extends Bs {
533
533
  const i = new Ui();
534
534
  this._plane = i, n.add(i);
535
535
  const o = this;
536
- function a(I, y) {
537
- let S = y;
538
- Object.defineProperty(o, I, {
536
+ function a(x, y) {
537
+ let v = y;
538
+ Object.defineProperty(o, x, {
539
539
  get: function() {
540
- return S !== void 0 ? S : y;
540
+ return v !== void 0 ? v : y;
541
541
  },
542
542
  set: function(M) {
543
- S !== M && (S = M, i[I] = M, s[I] = M, o.dispatchEvent({ type: I + "-changed", value: M }), o.dispatchEvent(Ht));
543
+ v !== M && (v = M, i[x] = M, s[x] = M, o.dispatchEvent({ type: x + "-changed", value: M }), o.dispatchEvent(zt));
544
544
  }
545
- }), o[I] = y, i[I] = y, s[I] = y;
545
+ }), o[x] = y, i[x] = y, s[x] = y;
546
546
  }
547
547
  a("camera", e), a("object", void 0), a("enabled", !0), a("axis", null), a("mode", "translate"), a("translationSnap", null), a("rotationSnap", null), a("scaleSnap", null), a("space", "world"), a("size", 1), a("dragging", !1), a("showX", !0), a("showY", !0), a("showZ", !0), a("showXY", !0), a("showYZ", !0), a("showXZ", !0), a("minX", -1 / 0), a("maxX", 1 / 0), a("minY", -1 / 0), a("maxY", 1 / 0), a("minZ", -1 / 0), a("maxZ", 1 / 0);
548
- const l = new T(), A = new T(), u = new J(), c = new J(), d = new T(), h = new J(), m = new T(), p = new T(), f = new T(), g = 0, x = new T();
549
- a("worldPosition", l), a("worldPositionStart", A), a("worldQuaternion", u), a("worldQuaternionStart", c), a("cameraPosition", d), a("cameraQuaternion", h), a("pointStart", m), a("pointEnd", p), a("rotationAxis", f), a("rotationAngle", g), a("eye", x), this._offset = new T(), this._startNorm = new T(), this._endNorm = new T(), this._cameraScale = new T(), this._parentPosition = new T(), this._parentQuaternion = new J(), this._parentQuaternionInv = new J(), this._parentScale = new T(), this._worldScaleStart = new T(), this._worldQuaternionInv = new J(), this._worldScale = new T(), this._positionStart = new T(), this._quaternionStart = new J(), this._scaleStart = new T(), this._getPointer = Li.bind(this), this._onPointerDown = Oi.bind(this), this._onPointerHover = Ni.bind(this), this._onPointerMove = Di.bind(this), this._onPointerUp = Wi.bind(this), t !== null && this.connect(t);
548
+ const l = new T(), A = new T(), u = new J(), c = new J(), h = new T(), d = new J(), g = new T(), f = new T(), m = new T(), p = 0, I = new T();
549
+ a("worldPosition", l), a("worldPositionStart", A), a("worldQuaternion", u), a("worldQuaternionStart", c), a("cameraPosition", h), a("cameraQuaternion", d), a("pointStart", g), a("pointEnd", f), a("rotationAxis", m), a("rotationAngle", p), a("eye", I), this._offset = new T(), this._startNorm = new T(), this._endNorm = new T(), this._cameraScale = new T(), this._parentPosition = new T(), this._parentQuaternion = new J(), this._parentQuaternionInv = new J(), this._parentScale = new T(), this._worldScaleStart = new T(), this._worldQuaternionInv = new J(), this._worldScale = new T(), this._positionStart = new T(), this._quaternionStart = new J(), this._scaleStart = new T(), this._getPointer = Li.bind(this), this._onPointerDown = Oi.bind(this), this._onPointerHover = Ni.bind(this), this._onPointerMove = Di.bind(this), this._onPointerUp = Wi.bind(this), t !== null && this.connect(t);
550
550
  }
551
551
  connect(e) {
552
552
  super.connect(e), this.domElement.addEventListener("pointerdown", this._onPointerDown), this.domElement.addEventListener("pointermove", this._onPointerHover), this.domElement.addEventListener("pointerup", this._onPointerUp), this.domElement.style.touchAction = "none";
@@ -565,14 +565,14 @@ class Pi extends Bs {
565
565
  }
566
566
  pointerHover(e) {
567
567
  if (this.object === void 0 || this.dragging === !0) return;
568
- e !== null && Te.setFromCamera(e, this.camera);
569
- const t = zt(this._gizmo.picker[this.mode], Te);
568
+ e !== null && Me.setFromCamera(e, this.camera);
569
+ const t = Gt(this._gizmo.picker[this.mode], Me);
570
570
  t ? this.axis = t.object.name : this.axis = null;
571
571
  }
572
572
  pointerDown(e) {
573
573
  if (!(this.object === void 0 || this.dragging === !0 || e != null && e.button !== 0) && this.axis !== null) {
574
- e !== null && Te.setFromCamera(e, this.camera);
575
- const t = zt(this._plane, Te, !0);
574
+ e !== null && Me.setFromCamera(e, this.camera);
575
+ const t = Gt(this._plane, Me, !0);
576
576
  t && (this.object.updateMatrixWorld(), this.object.parent.updateMatrixWorld(), this._positionStart.copy(this.object.position), this._quaternionStart.copy(this.object.quaternion), this._scaleStart.copy(this.object.scale), this.object.matrixWorld.decompose(this.worldPositionStart, this.worldQuaternionStart, this._worldScaleStart), this.pointStart.copy(t.point).sub(this.worldPositionStart)), this.dragging = !0, Ss.mode = this.mode, this.dispatchEvent(Ss);
577
577
  }
578
578
  }
@@ -580,8 +580,8 @@ class Pi extends Bs {
580
580
  const t = this.axis, n = this.mode, s = this.object;
581
581
  let i = this.space;
582
582
  if (n === "scale" ? i = "local" : (t === "E" || t === "XYZE" || t === "XYZ") && (i = "world"), s === void 0 || t === null || this.dragging === !1 || e !== null && e.button !== -1) return;
583
- e !== null && Te.setFromCamera(e, this.camera);
584
- const o = zt(this._plane, Te, !0);
583
+ e !== null && Me.setFromCamera(e, this.camera);
584
+ const o = Gt(this._plane, Me, !0);
585
585
  if (o) {
586
586
  if (this.pointEnd.copy(o.point).sub(this.worldPositionStart), n === "translate")
587
587
  this._offset.copy(this.pointEnd).sub(this.pointStart), i === "local" && t !== "XYZ" && this._offset.applyQuaternion(this._worldQuaternionInv), t.indexOf("X") === -1 && (this._offset.x = 0), t.indexOf("Y") === -1 && (this._offset.y = 0), t.indexOf("Z") === -1 && (this._offset.z = 0), i === "local" && t !== "XYZ" ? this._offset.applyQuaternion(this._quaternionStart).divide(this._parentScale) : this._offset.applyQuaternion(this._parentQuaternionInv).divide(this._parentScale), s.position.copy(this._offset).add(this._positionStart), this.translationSnap && (i === "local" && (s.position.applyQuaternion(j.copy(this._quaternionStart).invert()), t.search("X") !== -1 && (s.position.x = Math.round(s.position.x / this.translationSnap) * this.translationSnap), t.search("Y") !== -1 && (s.position.y = Math.round(s.position.y / this.translationSnap) * this.translationSnap), t.search("Z") !== -1 && (s.position.z = Math.round(s.position.z / this.translationSnap) * this.translationSnap), s.position.applyQuaternion(this._quaternionStart)), i === "world" && (s.parent && s.position.add(G.setFromMatrixPosition(s.parent.matrixWorld)), t.search("X") !== -1 && (s.position.x = Math.round(s.position.x / this.translationSnap) * this.translationSnap), t.search("Y") !== -1 && (s.position.y = Math.round(s.position.y / this.translationSnap) * this.translationSnap), t.search("Z") !== -1 && (s.position.z = Math.round(s.position.z / this.translationSnap) * this.translationSnap), s.parent && s.position.sub(G.setFromMatrixPosition(s.parent.matrixWorld)))), s.position.x = Math.max(this.minX, Math.min(this.maxX, s.position.x)), s.position.y = Math.max(this.minY, Math.min(this.maxY, s.position.y)), s.position.z = Math.max(this.minZ, Math.min(this.maxZ, s.position.z));
@@ -598,7 +598,7 @@ class Pi extends Bs {
598
598
  let l = !1;
599
599
  t === "XYZE" ? (this.rotationAxis.copy(this._offset).cross(this.eye).normalize(), this.rotationAngle = this._offset.dot(G.copy(this.rotationAxis).cross(this.eye)) * a) : (t === "X" || t === "Y" || t === "Z") && (this.rotationAxis.copy(vs[t]), G.copy(vs[t]), i === "local" && G.applyQuaternion(this.worldQuaternion), G.cross(this.eye), G.length() === 0 ? l = !0 : this.rotationAngle = this._offset.dot(G.normalize()) * a), (t === "E" || l) && (this.rotationAxis.copy(this.eye), this.rotationAngle = this.pointEnd.angleTo(this.pointStart), this._startNorm.copy(this.pointStart).normalize(), this._endNorm.copy(this.pointEnd).normalize(), this.rotationAngle *= this._endNorm.cross(this._startNorm).dot(this.eye) < 0 ? 1 : -1), this.rotationSnap && (this.rotationAngle = Math.round(this.rotationAngle / this.rotationSnap) * this.rotationSnap), i === "local" && t !== "E" && t !== "XYZE" ? (s.quaternion.copy(this._quaternionStart), s.quaternion.multiply(j.setFromAxisAngle(this.rotationAxis, this.rotationAngle)).normalize()) : (this.rotationAxis.applyQuaternion(this._parentQuaternionInv), s.quaternion.copy(j.setFromAxisAngle(this.rotationAxis, this.rotationAngle)), s.quaternion.multiply(this._quaternionStart).normalize());
600
600
  }
601
- this.dispatchEvent(Ht), this.dispatchEvent(Ms);
601
+ this.dispatchEvent(zt), this.dispatchEvent(Ms);
602
602
  }
603
603
  }
604
604
  pointerUp(e) {
@@ -628,7 +628,7 @@ class Pi extends Bs {
628
628
  * Resets the object's position, rotation and scale to when the current transform began.
629
629
  */
630
630
  reset() {
631
- this.enabled && this.dragging && (this.object.position.copy(this._positionStart), this.object.quaternion.copy(this._quaternionStart), this.object.scale.copy(this._scaleStart), this.dispatchEvent(Ht), this.dispatchEvent(Ms), this.pointStart.copy(this.pointEnd));
631
+ this.enabled && this.dragging && (this.object.position.copy(this._positionStart), this.object.quaternion.copy(this._quaternionStart), this.object.scale.copy(this._scaleStart), this.dispatchEvent(zt), this.dispatchEvent(Ms), this.pointStart.copy(this.pointEnd));
632
632
  }
633
633
  /**
634
634
  * Returns the raycaster that is used for user interaction. This object is shared between all
@@ -637,7 +637,7 @@ class Pi extends Bs {
637
637
  * @returns {Raycaster} The internal raycaster.
638
638
  */
639
639
  getRaycaster() {
640
- return Te;
640
+ return Me;
641
641
  }
642
642
  /**
643
643
  * Returns the transformation mode.
@@ -742,15 +742,15 @@ function Di(r) {
742
742
  function Wi(r) {
743
743
  this.enabled && (this.domElement.releasePointerCapture(r.pointerId), this.domElement.removeEventListener("pointermove", this._onPointerMove), this.pointerUp(this._getPointer(r)));
744
744
  }
745
- function zt(r, e, t) {
745
+ function Gt(r, e, t) {
746
746
  const n = e.intersectObject(r, !0);
747
747
  for (let s = 0; s < n.length; s++)
748
748
  if (n[s].object.visible || t)
749
749
  return n[s];
750
750
  return !1;
751
751
  }
752
- const Ct = new kn(), O = new T(0, 1, 0), ws = new T(0, 0, 0), Rs = new fe(), It = new J(), Mt = new J(), re = new T(), Es = new fe(), tt = new T(1, 0, 0), Re = new T(0, 1, 0), st = new T(0, 0, 1), yt = new T(), Je = new T(), Qe = new T();
753
- class ji extends Be {
752
+ const Ct = new kn(), O = new T(0, 1, 0), ws = new T(0, 0, 0), Rs = new fe(), It = new J(), Mt = new J(), re = new T(), Es = new fe(), tt = new T(1, 0, 0), Ee = new T(0, 1, 0), st = new T(0, 0, 1), yt = new T(), Je = new T(), Qe = new T();
753
+ class ji extends Ze {
754
754
  constructor(e) {
755
755
  super(), this.isTransformControlsRoot = !0, this.controls = e, this.visible = !1;
756
756
  }
@@ -765,7 +765,7 @@ class ji extends Be {
765
765
  });
766
766
  }
767
767
  }
768
- class Fi extends Be {
768
+ class Fi extends Ze {
769
769
  constructor() {
770
770
  super(), this.isTransformControlsGizmo = !0, this.type = "TransformControlsGizmo";
771
771
  const e = new Ne({
@@ -798,221 +798,221 @@ class Fi extends Be {
798
798
  u.color.setHex(255), u.opacity = 0.5;
799
799
  const c = e.clone();
800
800
  c.opacity = 0.25;
801
- const d = e.clone();
802
- d.color.setHex(16776960), d.opacity = 0.25;
803
801
  const h = e.clone();
804
- h.color.setHex(16776960);
805
- const m = e.clone();
806
- m.color.setHex(7895160), this.materialLib = {
802
+ h.color.setHex(16776960), h.opacity = 0.25;
803
+ const d = e.clone();
804
+ d.color.setHex(16776960);
805
+ const g = e.clone();
806
+ g.color.setHex(7895160), this.materialLib = {
807
807
  xAxis: i,
808
808
  yAxis: o,
809
809
  zAxis: a,
810
- active: h,
810
+ active: d,
811
811
  xAxisTransparent: l,
812
812
  yAxisTransparent: A,
813
813
  zAxisTransparent: u,
814
- activeTransparent: d
814
+ activeTransparent: h
815
815
  };
816
- const p = new q(0, 0.04, 0.1, 12);
817
- p.translate(0, 0.05, 0);
818
- const f = new K(0.08, 0.08, 0.08);
819
- f.translate(0, 0.04, 0);
820
- const g = new De();
821
- g.setAttribute("position", new le([0, 0, 0, 1, 0, 0], 3));
822
- const x = new q(75e-4, 75e-4, 0.5, 3);
823
- x.translate(0, 0.25, 0);
824
- function I(ee, ht) {
825
- const ne = new Ve(ee, 75e-4, 3, 64, ht * Math.PI * 2);
826
- return ne.rotateY(Math.PI / 2), ne.rotateX(Math.PI / 2), ne;
816
+ const f = new q(0, 0.04, 0.1, 12);
817
+ f.translate(0, 0.05, 0);
818
+ const m = new K(0.08, 0.08, 0.08);
819
+ m.translate(0, 0.04, 0);
820
+ const p = new De();
821
+ p.setAttribute("position", new le([0, 0, 0, 1, 0, 0], 3));
822
+ const I = new q(75e-4, 75e-4, 0.5, 3);
823
+ I.translate(0, 0.25, 0);
824
+ function x(ee, ht) {
825
+ const ie = new Ve(ee, 75e-4, 3, 64, ht * Math.PI * 2);
826
+ return ie.rotateY(Math.PI / 2), ie.rotateX(Math.PI / 2), ie;
827
827
  }
828
828
  function y() {
829
829
  const ee = new De();
830
830
  return ee.setAttribute("position", new le([0, 0, 0, 1, 1, 1], 3)), ee;
831
831
  }
832
- const S = {
832
+ const v = {
833
833
  X: [
834
- [new v(p, i), [0.5, 0, 0], [0, 0, -Math.PI / 2]],
835
- [new v(p, i), [-0.5, 0, 0], [0, 0, Math.PI / 2]],
836
- [new v(x, i), [0, 0, 0], [0, 0, -Math.PI / 2]]
834
+ [new S(f, i), [0.5, 0, 0], [0, 0, -Math.PI / 2]],
835
+ [new S(f, i), [-0.5, 0, 0], [0, 0, Math.PI / 2]],
836
+ [new S(I, i), [0, 0, 0], [0, 0, -Math.PI / 2]]
837
837
  ],
838
838
  Y: [
839
- [new v(p, o), [0, 0.5, 0]],
840
- [new v(p, o), [0, -0.5, 0], [Math.PI, 0, 0]],
841
- [new v(x, o)]
839
+ [new S(f, o), [0, 0.5, 0]],
840
+ [new S(f, o), [0, -0.5, 0], [Math.PI, 0, 0]],
841
+ [new S(I, o)]
842
842
  ],
843
843
  Z: [
844
- [new v(p, a), [0, 0, 0.5], [Math.PI / 2, 0, 0]],
845
- [new v(p, a), [0, 0, -0.5], [-Math.PI / 2, 0, 0]],
846
- [new v(x, a), null, [Math.PI / 2, 0, 0]]
844
+ [new S(f, a), [0, 0, 0.5], [Math.PI / 2, 0, 0]],
845
+ [new S(f, a), [0, 0, -0.5], [-Math.PI / 2, 0, 0]],
846
+ [new S(I, a), null, [Math.PI / 2, 0, 0]]
847
847
  ],
848
848
  XYZ: [
849
- [new v(new gt(0.1, 0), c), [0, 0, 0]]
849
+ [new S(new gt(0.1, 0), c), [0, 0, 0]]
850
850
  ],
851
851
  XY: [
852
- [new v(new K(0.15, 0.15, 0.01), u), [0.15, 0.15, 0]]
852
+ [new S(new K(0.15, 0.15, 0.01), u), [0.15, 0.15, 0]]
853
853
  ],
854
854
  YZ: [
855
- [new v(new K(0.15, 0.15, 0.01), l), [0, 0.15, 0.15], [0, Math.PI / 2, 0]]
855
+ [new S(new K(0.15, 0.15, 0.01), l), [0, 0.15, 0.15], [0, Math.PI / 2, 0]]
856
856
  ],
857
857
  XZ: [
858
- [new v(new K(0.15, 0.15, 0.01), A), [0.15, 0, 0.15], [-Math.PI / 2, 0, 0]]
858
+ [new S(new K(0.15, 0.15, 0.01), A), [0.15, 0, 0.15], [-Math.PI / 2, 0, 0]]
859
859
  ]
860
860
  }, M = {
861
861
  X: [
862
- [new v(new q(0.2, 0, 0.6, 4), n), [0.3, 0, 0], [0, 0, -Math.PI / 2]],
863
- [new v(new q(0.2, 0, 0.6, 4), n), [-0.3, 0, 0], [0, 0, Math.PI / 2]]
862
+ [new S(new q(0.2, 0, 0.6, 4), n), [0.3, 0, 0], [0, 0, -Math.PI / 2]],
863
+ [new S(new q(0.2, 0, 0.6, 4), n), [-0.3, 0, 0], [0, 0, Math.PI / 2]]
864
864
  ],
865
865
  Y: [
866
- [new v(new q(0.2, 0, 0.6, 4), n), [0, 0.3, 0]],
867
- [new v(new q(0.2, 0, 0.6, 4), n), [0, -0.3, 0], [0, 0, Math.PI]]
866
+ [new S(new q(0.2, 0, 0.6, 4), n), [0, 0.3, 0]],
867
+ [new S(new q(0.2, 0, 0.6, 4), n), [0, -0.3, 0], [0, 0, Math.PI]]
868
868
  ],
869
869
  Z: [
870
- [new v(new q(0.2, 0, 0.6, 4), n), [0, 0, 0.3], [Math.PI / 2, 0, 0]],
871
- [new v(new q(0.2, 0, 0.6, 4), n), [0, 0, -0.3], [-Math.PI / 2, 0, 0]]
870
+ [new S(new q(0.2, 0, 0.6, 4), n), [0, 0, 0.3], [Math.PI / 2, 0, 0]],
871
+ [new S(new q(0.2, 0, 0.6, 4), n), [0, 0, -0.3], [-Math.PI / 2, 0, 0]]
872
872
  ],
873
873
  XYZ: [
874
- [new v(new gt(0.2, 0), n)]
874
+ [new S(new gt(0.2, 0), n)]
875
875
  ],
876
876
  XY: [
877
- [new v(new K(0.2, 0.2, 0.01), n), [0.15, 0.15, 0]]
877
+ [new S(new K(0.2, 0.2, 0.01), n), [0.15, 0.15, 0]]
878
878
  ],
879
879
  YZ: [
880
- [new v(new K(0.2, 0.2, 0.01), n), [0, 0.15, 0.15], [0, Math.PI / 2, 0]]
880
+ [new S(new K(0.2, 0.2, 0.01), n), [0, 0.15, 0.15], [0, Math.PI / 2, 0]]
881
881
  ],
882
882
  XZ: [
883
- [new v(new K(0.2, 0.2, 0.01), n), [0.15, 0, 0.15], [-Math.PI / 2, 0, 0]]
883
+ [new S(new K(0.2, 0.2, 0.01), n), [0.15, 0, 0.15], [-Math.PI / 2, 0, 0]]
884
884
  ]
885
885
  }, L = {
886
886
  START: [
887
- [new v(new gt(0.01, 2), s), null, null, null, "helper"]
887
+ [new S(new gt(0.01, 2), s), null, null, null, "helper"]
888
888
  ],
889
889
  END: [
890
- [new v(new gt(0.01, 2), s), null, null, null, "helper"]
890
+ [new S(new gt(0.01, 2), s), null, null, null, "helper"]
891
891
  ],
892
892
  DELTA: [
893
893
  [new de(y(), s), null, null, null, "helper"]
894
894
  ],
895
895
  X: [
896
- [new de(g, s), [-1e3, 0, 0], null, [1e6, 1, 1], "helper"]
896
+ [new de(p, s), [-1e3, 0, 0], null, [1e6, 1, 1], "helper"]
897
897
  ],
898
898
  Y: [
899
- [new de(g, s), [0, -1e3, 0], [0, 0, Math.PI / 2], [1e6, 1, 1], "helper"]
899
+ [new de(p, s), [0, -1e3, 0], [0, 0, Math.PI / 2], [1e6, 1, 1], "helper"]
900
900
  ],
901
901
  Z: [
902
- [new de(g, s), [0, 0, -1e3], [0, -Math.PI / 2, 0], [1e6, 1, 1], "helper"]
902
+ [new de(p, s), [0, 0, -1e3], [0, -Math.PI / 2, 0], [1e6, 1, 1], "helper"]
903
903
  ]
904
904
  }, Q = {
905
905
  XYZE: [
906
- [new v(I(0.5, 1), m), null, [0, Math.PI / 2, 0]]
906
+ [new S(x(0.5, 1), g), null, [0, Math.PI / 2, 0]]
907
907
  ],
908
908
  X: [
909
- [new v(I(0.5, 0.5), i)]
909
+ [new S(x(0.5, 0.5), i)]
910
910
  ],
911
911
  Y: [
912
- [new v(I(0.5, 0.5), o), null, [0, 0, -Math.PI / 2]]
912
+ [new S(x(0.5, 0.5), o), null, [0, 0, -Math.PI / 2]]
913
913
  ],
914
914
  Z: [
915
- [new v(I(0.5, 0.5), a), null, [0, Math.PI / 2, 0]]
915
+ [new S(x(0.5, 0.5), a), null, [0, Math.PI / 2, 0]]
916
916
  ],
917
917
  E: [
918
- [new v(I(0.75, 1), d), null, [0, Math.PI / 2, 0]]
918
+ [new S(x(0.75, 1), h), null, [0, Math.PI / 2, 0]]
919
919
  ]
920
920
  }, $ = {
921
921
  AXIS: [
922
- [new de(g, s), [-1e3, 0, 0], null, [1e6, 1, 1], "helper"]
922
+ [new de(p, s), [-1e3, 0, 0], null, [1e6, 1, 1], "helper"]
923
923
  ]
924
924
  }, Y = {
925
925
  XYZE: [
926
- [new v(new En(0.25, 10, 8), n)]
926
+ [new S(new En(0.25, 10, 8), n)]
927
927
  ],
928
928
  X: [
929
- [new v(new Ve(0.5, 0.1, 4, 24), n), [0, 0, 0], [0, -Math.PI / 2, -Math.PI / 2]]
929
+ [new S(new Ve(0.5, 0.1, 4, 24), n), [0, 0, 0], [0, -Math.PI / 2, -Math.PI / 2]]
930
930
  ],
931
931
  Y: [
932
- [new v(new Ve(0.5, 0.1, 4, 24), n), [0, 0, 0], [Math.PI / 2, 0, 0]]
932
+ [new S(new Ve(0.5, 0.1, 4, 24), n), [0, 0, 0], [Math.PI / 2, 0, 0]]
933
933
  ],
934
934
  Z: [
935
- [new v(new Ve(0.5, 0.1, 4, 24), n), [0, 0, 0], [0, 0, -Math.PI / 2]]
935
+ [new S(new Ve(0.5, 0.1, 4, 24), n), [0, 0, 0], [0, 0, -Math.PI / 2]]
936
936
  ],
937
937
  E: [
938
- [new v(new Ve(0.75, 0.1, 2, 24), n)]
938
+ [new S(new Ve(0.75, 0.1, 2, 24), n)]
939
939
  ]
940
- }, Se = {
940
+ }, Te = {
941
941
  X: [
942
- [new v(f, i), [0.5, 0, 0], [0, 0, -Math.PI / 2]],
943
- [new v(x, i), [0, 0, 0], [0, 0, -Math.PI / 2]],
944
- [new v(f, i), [-0.5, 0, 0], [0, 0, Math.PI / 2]]
942
+ [new S(m, i), [0.5, 0, 0], [0, 0, -Math.PI / 2]],
943
+ [new S(I, i), [0, 0, 0], [0, 0, -Math.PI / 2]],
944
+ [new S(m, i), [-0.5, 0, 0], [0, 0, Math.PI / 2]]
945
945
  ],
946
946
  Y: [
947
- [new v(f, o), [0, 0.5, 0]],
948
- [new v(x, o)],
949
- [new v(f, o), [0, -0.5, 0], [0, 0, Math.PI]]
947
+ [new S(m, o), [0, 0.5, 0]],
948
+ [new S(I, o)],
949
+ [new S(m, o), [0, -0.5, 0], [0, 0, Math.PI]]
950
950
  ],
951
951
  Z: [
952
- [new v(f, a), [0, 0, 0.5], [Math.PI / 2, 0, 0]],
953
- [new v(x, a), [0, 0, 0], [Math.PI / 2, 0, 0]],
954
- [new v(f, a), [0, 0, -0.5], [-Math.PI / 2, 0, 0]]
952
+ [new S(m, a), [0, 0, 0.5], [Math.PI / 2, 0, 0]],
953
+ [new S(I, a), [0, 0, 0], [Math.PI / 2, 0, 0]],
954
+ [new S(m, a), [0, 0, -0.5], [-Math.PI / 2, 0, 0]]
955
955
  ],
956
956
  XY: [
957
- [new v(new K(0.15, 0.15, 0.01), u), [0.15, 0.15, 0]]
957
+ [new S(new K(0.15, 0.15, 0.01), u), [0.15, 0.15, 0]]
958
958
  ],
959
959
  YZ: [
960
- [new v(new K(0.15, 0.15, 0.01), l), [0, 0.15, 0.15], [0, Math.PI / 2, 0]]
960
+ [new S(new K(0.15, 0.15, 0.01), l), [0, 0.15, 0.15], [0, Math.PI / 2, 0]]
961
961
  ],
962
962
  XZ: [
963
- [new v(new K(0.15, 0.15, 0.01), A), [0.15, 0, 0.15], [-Math.PI / 2, 0, 0]]
963
+ [new S(new K(0.15, 0.15, 0.01), A), [0.15, 0, 0.15], [-Math.PI / 2, 0, 0]]
964
964
  ],
965
965
  XYZ: [
966
- [new v(new K(0.1, 0.1, 0.1), c)]
966
+ [new S(new K(0.1, 0.1, 0.1), c)]
967
967
  ]
968
- }, jt = {
968
+ }, Ft = {
969
969
  X: [
970
- [new v(new q(0.2, 0, 0.6, 4), n), [0.3, 0, 0], [0, 0, -Math.PI / 2]],
971
- [new v(new q(0.2, 0, 0.6, 4), n), [-0.3, 0, 0], [0, 0, Math.PI / 2]]
970
+ [new S(new q(0.2, 0, 0.6, 4), n), [0.3, 0, 0], [0, 0, -Math.PI / 2]],
971
+ [new S(new q(0.2, 0, 0.6, 4), n), [-0.3, 0, 0], [0, 0, Math.PI / 2]]
972
972
  ],
973
973
  Y: [
974
- [new v(new q(0.2, 0, 0.6, 4), n), [0, 0.3, 0]],
975
- [new v(new q(0.2, 0, 0.6, 4), n), [0, -0.3, 0], [0, 0, Math.PI]]
974
+ [new S(new q(0.2, 0, 0.6, 4), n), [0, 0.3, 0]],
975
+ [new S(new q(0.2, 0, 0.6, 4), n), [0, -0.3, 0], [0, 0, Math.PI]]
976
976
  ],
977
977
  Z: [
978
- [new v(new q(0.2, 0, 0.6, 4), n), [0, 0, 0.3], [Math.PI / 2, 0, 0]],
979
- [new v(new q(0.2, 0, 0.6, 4), n), [0, 0, -0.3], [-Math.PI / 2, 0, 0]]
978
+ [new S(new q(0.2, 0, 0.6, 4), n), [0, 0, 0.3], [Math.PI / 2, 0, 0]],
979
+ [new S(new q(0.2, 0, 0.6, 4), n), [0, 0, -0.3], [-Math.PI / 2, 0, 0]]
980
980
  ],
981
981
  XY: [
982
- [new v(new K(0.2, 0.2, 0.01), n), [0.15, 0.15, 0]]
982
+ [new S(new K(0.2, 0.2, 0.01), n), [0.15, 0.15, 0]]
983
983
  ],
984
984
  YZ: [
985
- [new v(new K(0.2, 0.2, 0.01), n), [0, 0.15, 0.15], [0, Math.PI / 2, 0]]
985
+ [new S(new K(0.2, 0.2, 0.01), n), [0, 0.15, 0.15], [0, Math.PI / 2, 0]]
986
986
  ],
987
987
  XZ: [
988
- [new v(new K(0.2, 0.2, 0.01), n), [0.15, 0, 0.15], [-Math.PI / 2, 0, 0]]
988
+ [new S(new K(0.2, 0.2, 0.01), n), [0.15, 0, 0.15], [-Math.PI / 2, 0, 0]]
989
989
  ],
990
990
  XYZ: [
991
- [new v(new K(0.2, 0.2, 0.2), n), [0, 0, 0]]
991
+ [new S(new K(0.2, 0.2, 0.2), n), [0, 0, 0]]
992
992
  ]
993
993
  }, hn = {
994
994
  X: [
995
- [new de(g, s), [-1e3, 0, 0], null, [1e6, 1, 1], "helper"]
995
+ [new de(p, s), [-1e3, 0, 0], null, [1e6, 1, 1], "helper"]
996
996
  ],
997
997
  Y: [
998
- [new de(g, s), [0, -1e3, 0], [0, 0, Math.PI / 2], [1e6, 1, 1], "helper"]
998
+ [new de(p, s), [0, -1e3, 0], [0, 0, Math.PI / 2], [1e6, 1, 1], "helper"]
999
999
  ],
1000
1000
  Z: [
1001
- [new de(g, s), [0, 0, -1e3], [0, -Math.PI / 2, 0], [1e6, 1, 1], "helper"]
1001
+ [new de(p, s), [0, 0, -1e3], [0, -Math.PI / 2, 0], [1e6, 1, 1], "helper"]
1002
1002
  ]
1003
1003
  };
1004
1004
  function ue(ee) {
1005
- const ht = new Be();
1006
- for (const ne in ee)
1007
- for (let Fe = ee[ne].length; Fe--; ) {
1008
- const X = ee[ne][Fe][0].clone(), ft = ee[ne][Fe][1], pt = ee[ne][Fe][2], mt = ee[ne][Fe][3], fn = ee[ne][Fe][4];
1009
- X.name = ne, X.tag = fn, ft && X.position.set(ft[0], ft[1], ft[2]), pt && X.rotation.set(pt[0], pt[1], pt[2]), mt && X.scale.set(mt[0], mt[1], mt[2]), X.updateMatrix();
1005
+ const ht = new Ze();
1006
+ for (const ie in ee)
1007
+ for (let Fe = ee[ie].length; Fe--; ) {
1008
+ const X = ee[ie][Fe][0].clone(), ft = ee[ie][Fe][1], pt = ee[ie][Fe][2], mt = ee[ie][Fe][3], fn = ee[ie][Fe][4];
1009
+ X.name = ie, X.tag = fn, ft && X.position.set(ft[0], ft[1], ft[2]), pt && X.rotation.set(pt[0], pt[1], pt[2]), mt && X.scale.set(mt[0], mt[1], mt[2]), X.updateMatrix();
1010
1010
  const fs = X.geometry.clone();
1011
1011
  fs.applyMatrix4(X.matrix), X.geometry = fs, X.renderOrder = 1 / 0, X.position.set(0, 0, 0), X.rotation.set(0, 0, 0), X.scale.set(1, 1, 1), ht.add(X);
1012
1012
  }
1013
1013
  return ht;
1014
1014
  }
1015
- this.gizmo = {}, this.picker = {}, this.helper = {}, this.add(this.gizmo.translate = ue(S)), this.add(this.gizmo.rotate = ue(Q)), this.add(this.gizmo.scale = ue(Se)), this.add(this.picker.translate = ue(M)), this.add(this.picker.rotate = ue(Y)), this.add(this.picker.scale = ue(jt)), this.add(this.helper.translate = ue(L)), this.add(this.helper.rotate = ue($)), this.add(this.helper.scale = ue(hn)), this.picker.translate.visible = !1, this.picker.rotate.visible = !1, this.picker.scale.visible = !1;
1015
+ this.gizmo = {}, this.picker = {}, this.helper = {}, this.add(this.gizmo.translate = ue(v)), this.add(this.gizmo.rotate = ue(Q)), this.add(this.gizmo.scale = ue(Te)), this.add(this.picker.translate = ue(M)), this.add(this.picker.rotate = ue(Y)), this.add(this.picker.scale = ue(Ft)), this.add(this.helper.translate = ue(L)), this.add(this.helper.rotate = ue($)), this.add(this.helper.scale = ue(hn)), this.picker.translate.visible = !1, this.picker.rotate.visible = !1, this.picker.scale.visible = !1;
1016
1016
  }
1017
1017
  // updateMatrixWorld will update transformations and appearance of individual handles
1018
1018
  updateMatrixWorld(e) {
@@ -1025,17 +1025,17 @@ class Fi extends Be {
1025
1025
  o.visible = !0, o.rotation.set(0, 0, 0), o.position.copy(this.worldPosition);
1026
1026
  let a;
1027
1027
  if (this.camera.isOrthographicCamera ? a = (this.camera.top - this.camera.bottom) / this.camera.zoom : a = this.worldPosition.distanceTo(this.cameraPosition) * Math.min(1.9 * Math.tan(Math.PI * this.camera.fov / 360) / this.camera.zoom, 7), o.scale.set(1, 1, 1).multiplyScalar(a * this.size / 4), o.tag === "helper") {
1028
- o.visible = !1, o.name === "AXIS" ? (o.visible = !!this.axis, this.axis === "X" && (j.setFromEuler(Ct.set(0, 0, 0)), o.quaternion.copy(n).multiply(j), Math.abs(O.copy(tt).applyQuaternion(n).dot(this.eye)) > 0.9 && (o.visible = !1)), this.axis === "Y" && (j.setFromEuler(Ct.set(0, 0, Math.PI / 2)), o.quaternion.copy(n).multiply(j), Math.abs(O.copy(Re).applyQuaternion(n).dot(this.eye)) > 0.9 && (o.visible = !1)), this.axis === "Z" && (j.setFromEuler(Ct.set(0, Math.PI / 2, 0)), o.quaternion.copy(n).multiply(j), Math.abs(O.copy(st).applyQuaternion(n).dot(this.eye)) > 0.9 && (o.visible = !1)), this.axis === "XYZE" && (j.setFromEuler(Ct.set(0, Math.PI / 2, 0)), O.copy(this.rotationAxis), o.quaternion.setFromRotationMatrix(Rs.lookAt(ws, O, Re)), o.quaternion.multiply(j), o.visible = this.dragging), this.axis === "E" && (o.visible = !1)) : o.name === "START" ? (o.position.copy(this.worldPositionStart), o.visible = this.dragging) : o.name === "END" ? (o.position.copy(this.worldPosition), o.visible = this.dragging) : o.name === "DELTA" ? (o.position.copy(this.worldPositionStart), o.quaternion.copy(this.worldQuaternionStart), G.set(1e-10, 1e-10, 1e-10).add(this.worldPositionStart).sub(this.worldPosition).multiplyScalar(-1), G.applyQuaternion(this.worldQuaternionStart.clone().invert()), o.scale.copy(G), o.visible = this.dragging) : (o.quaternion.copy(n), this.dragging ? o.position.copy(this.worldPositionStart) : o.position.copy(this.worldPosition), this.axis && (o.visible = this.axis.search(o.name) !== -1));
1028
+ o.visible = !1, o.name === "AXIS" ? (o.visible = !!this.axis, this.axis === "X" && (j.setFromEuler(Ct.set(0, 0, 0)), o.quaternion.copy(n).multiply(j), Math.abs(O.copy(tt).applyQuaternion(n).dot(this.eye)) > 0.9 && (o.visible = !1)), this.axis === "Y" && (j.setFromEuler(Ct.set(0, 0, Math.PI / 2)), o.quaternion.copy(n).multiply(j), Math.abs(O.copy(Ee).applyQuaternion(n).dot(this.eye)) > 0.9 && (o.visible = !1)), this.axis === "Z" && (j.setFromEuler(Ct.set(0, Math.PI / 2, 0)), o.quaternion.copy(n).multiply(j), Math.abs(O.copy(st).applyQuaternion(n).dot(this.eye)) > 0.9 && (o.visible = !1)), this.axis === "XYZE" && (j.setFromEuler(Ct.set(0, Math.PI / 2, 0)), O.copy(this.rotationAxis), o.quaternion.setFromRotationMatrix(Rs.lookAt(ws, O, Ee)), o.quaternion.multiply(j), o.visible = this.dragging), this.axis === "E" && (o.visible = !1)) : o.name === "START" ? (o.position.copy(this.worldPositionStart), o.visible = this.dragging) : o.name === "END" ? (o.position.copy(this.worldPosition), o.visible = this.dragging) : o.name === "DELTA" ? (o.position.copy(this.worldPositionStart), o.quaternion.copy(this.worldQuaternionStart), G.set(1e-10, 1e-10, 1e-10).add(this.worldPositionStart).sub(this.worldPosition).multiplyScalar(-1), G.applyQuaternion(this.worldQuaternionStart.clone().invert()), o.scale.copy(G), o.visible = this.dragging) : (o.quaternion.copy(n), this.dragging ? o.position.copy(this.worldPositionStart) : o.position.copy(this.worldPosition), this.axis && (o.visible = this.axis.search(o.name) !== -1));
1029
1029
  continue;
1030
1030
  }
1031
- o.quaternion.copy(n), this.mode === "translate" || this.mode === "scale" ? (o.name === "X" && Math.abs(O.copy(tt).applyQuaternion(n).dot(this.eye)) > 0.99 && (o.scale.set(1e-10, 1e-10, 1e-10), o.visible = !1), o.name === "Y" && Math.abs(O.copy(Re).applyQuaternion(n).dot(this.eye)) > 0.99 && (o.scale.set(1e-10, 1e-10, 1e-10), o.visible = !1), o.name === "Z" && Math.abs(O.copy(st).applyQuaternion(n).dot(this.eye)) > 0.99 && (o.scale.set(1e-10, 1e-10, 1e-10), o.visible = !1), o.name === "XY" && Math.abs(O.copy(st).applyQuaternion(n).dot(this.eye)) < 0.2 && (o.scale.set(1e-10, 1e-10, 1e-10), o.visible = !1), o.name === "YZ" && Math.abs(O.copy(tt).applyQuaternion(n).dot(this.eye)) < 0.2 && (o.scale.set(1e-10, 1e-10, 1e-10), o.visible = !1), o.name === "XZ" && Math.abs(O.copy(Re).applyQuaternion(n).dot(this.eye)) < 0.2 && (o.scale.set(1e-10, 1e-10, 1e-10), o.visible = !1)) : this.mode === "rotate" && (It.copy(n), O.copy(this.eye).applyQuaternion(j.copy(n).invert()), o.name.search("E") !== -1 && o.quaternion.setFromRotationMatrix(Rs.lookAt(this.eye, ws, Re)), o.name === "X" && (j.setFromAxisAngle(tt, Math.atan2(-O.y, O.z)), j.multiplyQuaternions(It, j), o.quaternion.copy(j)), o.name === "Y" && (j.setFromAxisAngle(Re, Math.atan2(O.x, O.z)), j.multiplyQuaternions(It, j), o.quaternion.copy(j)), o.name === "Z" && (j.setFromAxisAngle(st, Math.atan2(O.y, O.x)), j.multiplyQuaternions(It, j), o.quaternion.copy(j))), o.visible = o.visible && (o.name.indexOf("X") === -1 || this.showX), o.visible = o.visible && (o.name.indexOf("Y") === -1 || this.showY), o.visible = o.visible && (o.name.indexOf("Z") === -1 || this.showZ), o.visible = o.visible && (o.name.indexOf("E") === -1 || this.showX && this.showY && this.showZ), o.visible = o.visible && (o.name.indexOf("XY") === -1 || this.showXY), o.visible = o.visible && (o.name.indexOf("YZ") === -1 || this.showYZ), o.visible = o.visible && (o.name.indexOf("XZ") === -1 || this.showXZ), o.material._color = o.material._color || o.material.color.clone(), o.material._opacity = o.material._opacity || o.material.opacity, o.material.color.copy(o.material._color), o.material.opacity = o.material._opacity, this.enabled && this.axis && (o.name === this.axis ? (o.material.color.copy(this.materialLib.active.color), o.material.opacity = 1) : this.axis.split("").some(function(l) {
1031
+ o.quaternion.copy(n), this.mode === "translate" || this.mode === "scale" ? (o.name === "X" && Math.abs(O.copy(tt).applyQuaternion(n).dot(this.eye)) > 0.99 && (o.scale.set(1e-10, 1e-10, 1e-10), o.visible = !1), o.name === "Y" && Math.abs(O.copy(Ee).applyQuaternion(n).dot(this.eye)) > 0.99 && (o.scale.set(1e-10, 1e-10, 1e-10), o.visible = !1), o.name === "Z" && Math.abs(O.copy(st).applyQuaternion(n).dot(this.eye)) > 0.99 && (o.scale.set(1e-10, 1e-10, 1e-10), o.visible = !1), o.name === "XY" && Math.abs(O.copy(st).applyQuaternion(n).dot(this.eye)) < 0.2 && (o.scale.set(1e-10, 1e-10, 1e-10), o.visible = !1), o.name === "YZ" && Math.abs(O.copy(tt).applyQuaternion(n).dot(this.eye)) < 0.2 && (o.scale.set(1e-10, 1e-10, 1e-10), o.visible = !1), o.name === "XZ" && Math.abs(O.copy(Ee).applyQuaternion(n).dot(this.eye)) < 0.2 && (o.scale.set(1e-10, 1e-10, 1e-10), o.visible = !1)) : this.mode === "rotate" && (It.copy(n), O.copy(this.eye).applyQuaternion(j.copy(n).invert()), o.name.search("E") !== -1 && o.quaternion.setFromRotationMatrix(Rs.lookAt(this.eye, ws, Ee)), o.name === "X" && (j.setFromAxisAngle(tt, Math.atan2(-O.y, O.z)), j.multiplyQuaternions(It, j), o.quaternion.copy(j)), o.name === "Y" && (j.setFromAxisAngle(Ee, Math.atan2(O.x, O.z)), j.multiplyQuaternions(It, j), o.quaternion.copy(j)), o.name === "Z" && (j.setFromAxisAngle(st, Math.atan2(O.y, O.x)), j.multiplyQuaternions(It, j), o.quaternion.copy(j))), o.visible = o.visible && (o.name.indexOf("X") === -1 || this.showX), o.visible = o.visible && (o.name.indexOf("Y") === -1 || this.showY), o.visible = o.visible && (o.name.indexOf("Z") === -1 || this.showZ), o.visible = o.visible && (o.name.indexOf("E") === -1 || this.showX && this.showY && this.showZ), o.visible = o.visible && (o.name.indexOf("XY") === -1 || this.showXY), o.visible = o.visible && (o.name.indexOf("YZ") === -1 || this.showYZ), o.visible = o.visible && (o.name.indexOf("XZ") === -1 || this.showXZ), o.material._color = o.material._color || o.material.color.clone(), o.material._opacity = o.material._opacity || o.material.opacity, o.material.color.copy(o.material._color), o.material.opacity = o.material._opacity, this.enabled && this.axis && (o.name === this.axis ? (o.material.color.copy(this.materialLib.active.color), o.material.opacity = 1) : this.axis.split("").some(function(l) {
1032
1032
  return o.name === l;
1033
1033
  }) && (o.material.color.copy(this.materialLib.active.color), o.material.opacity = 1));
1034
1034
  }
1035
1035
  super.updateMatrixWorld(e);
1036
1036
  }
1037
1037
  }
1038
- class Ui extends v {
1038
+ class Ui extends S {
1039
1039
  constructor() {
1040
1040
  super(
1041
1041
  new Pn(1e5, 1e5, 2, 2),
@@ -1044,7 +1044,7 @@ class Ui extends v {
1044
1044
  }
1045
1045
  updateMatrixWorld(e) {
1046
1046
  let t = this.space;
1047
- switch (this.position.copy(this.worldPosition), this.mode === "scale" && (t = "local"), yt.copy(tt).applyQuaternion(t === "local" ? this.worldQuaternion : Mt), Je.copy(Re).applyQuaternion(t === "local" ? this.worldQuaternion : Mt), Qe.copy(st).applyQuaternion(t === "local" ? this.worldQuaternion : Mt), O.copy(Je), this.mode) {
1047
+ switch (this.position.copy(this.worldPosition), this.mode === "scale" && (t = "local"), yt.copy(tt).applyQuaternion(t === "local" ? this.worldQuaternion : Mt), Je.copy(Ee).applyQuaternion(t === "local" ? this.worldQuaternion : Mt), Qe.copy(st).applyQuaternion(t === "local" ? this.worldQuaternion : Mt), O.copy(Je), this.mode) {
1048
1048
  case "translate":
1049
1049
  case "scale":
1050
1050
  switch (this.axis) {
@@ -1164,14 +1164,14 @@ class zi extends De {
1164
1164
  }
1165
1165
  }
1166
1166
  const Gi = new zi();
1167
- class As {
1167
+ class cs {
1168
1168
  /**
1169
1169
  * Constructs a new full screen quad.
1170
1170
  *
1171
1171
  * @param {?Material} material - The material to render te full screen quad with.
1172
1172
  */
1173
1173
  constructor(e) {
1174
- this._mesh = new v(Gi, e);
1174
+ this._mesh = new S(Gi, e);
1175
1175
  }
1176
1176
  /**
1177
1177
  * Frees the GPU-related resources allocated by this instance. Call this
@@ -1210,13 +1210,13 @@ class Ki extends qe {
1210
1210
  * the read buffer.
1211
1211
  */
1212
1212
  constructor(e, t = "tDiffuse") {
1213
- super(), this.textureID = t, this.uniforms = null, this.material = null, e instanceof Ee ? (this.uniforms = e.uniforms, this.material = e) : e && (this.uniforms = rs.clone(e.uniforms), this.material = new Ee({
1213
+ super(), this.textureID = t, this.uniforms = null, this.material = null, e instanceof ke ? (this.uniforms = e.uniforms, this.material = e) : e && (this.uniforms = as.clone(e.uniforms), this.material = new ke({
1214
1214
  name: e.name !== void 0 ? e.name : "unspecified",
1215
1215
  defines: Object.assign({}, e.defines),
1216
1216
  uniforms: this.uniforms,
1217
1217
  vertexShader: e.vertexShader,
1218
1218
  fragmentShader: e.fragmentShader
1219
- })), this._fsQuad = new As(this.material);
1219
+ })), this._fsQuad = new cs(this.material);
1220
1220
  }
1221
1221
  /**
1222
1222
  * Performs the shader pass.
@@ -1268,7 +1268,7 @@ class ks extends qe {
1268
1268
  this.inverse ? (o = 0, a = 1) : (o = 1, a = 0), i.buffers.stencil.setTest(!0), i.buffers.stencil.setOp(s.REPLACE, s.REPLACE, s.REPLACE), i.buffers.stencil.setFunc(s.ALWAYS, o, 4294967295), i.buffers.stencil.setClear(a), i.buffers.stencil.setLocked(!0), e.setRenderTarget(n), this.clear && e.clear(), e.render(this.scene, this.camera), e.setRenderTarget(t), this.clear && e.clear(), e.render(this.scene, this.camera), i.buffers.color.setLocked(!1), i.buffers.depth.setLocked(!1), i.buffers.color.setMask(!0), i.buffers.depth.setMask(!0), i.buffers.stencil.setLocked(!1), i.buffers.stencil.setFunc(s.EQUAL, 1, 4294967295), i.buffers.stencil.setOp(s.KEEP, s.KEEP, s.KEEP), i.buffers.stencil.setLocked(!0);
1269
1269
  }
1270
1270
  }
1271
- class Zi extends qe {
1271
+ class Bi extends qe {
1272
1272
  /**
1273
1273
  * Constructs a new clear mask pass.
1274
1274
  */
@@ -1290,7 +1290,7 @@ class Zi extends qe {
1290
1290
  e.state.buffers.stencil.setLocked(!1), e.state.buffers.stencil.setTest(!1);
1291
1291
  }
1292
1292
  }
1293
- class Bi {
1293
+ class Zi {
1294
1294
  /**
1295
1295
  * Constructs a new effect composer.
1296
1296
  *
@@ -1302,10 +1302,10 @@ class Bi {
1302
1302
  constructor(e, t) {
1303
1303
  if (this.renderer = e, this._pixelRatio = e.getPixelRatio(), t === void 0) {
1304
1304
  const n = e.getSize(new F());
1305
- this._width = n.width, this._height = n.height, t = new ge(this._width * this._pixelRatio, this._height * this._pixelRatio, { type: we }), t.texture.name = "EffectComposer.rt1";
1305
+ this._width = n.width, this._height = n.height, t = new ge(this._width * this._pixelRatio, this._height * this._pixelRatio, { type: Re }), t.texture.name = "EffectComposer.rt1";
1306
1306
  } else
1307
1307
  this._width = t.width, this._height = t.height;
1308
- this.renderTarget1 = t, this.renderTarget2 = t.clone(), this.renderTarget2.texture.name = "EffectComposer.rt2", this.writeBuffer = this.renderTarget1, this.readBuffer = this.renderTarget2, this.renderToScreen = !0, this.passes = [], this.copyPass = new Ki(sn), this.copyPass.material.blending = Qt, this.timer = new Ln();
1308
+ this.renderTarget1 = t, this.renderTarget2 = t.clone(), this.renderTarget2.texture.name = "EffectComposer.rt2", this.writeBuffer = this.renderTarget1, this.readBuffer = this.renderTarget2, this.renderToScreen = !0, this.passes = [], this.copyPass = new Ki(sn), this.copyPass.material.blending = Yt, this.timer = new Ln();
1309
1309
  }
1310
1310
  /**
1311
1311
  * Swaps the internal read/write buffers.
@@ -1372,7 +1372,7 @@ class Bi {
1372
1372
  }
1373
1373
  this.swapBuffers();
1374
1374
  }
1375
- ks !== void 0 && (o instanceof ks ? n = !0 : o instanceof Zi && (n = !1));
1375
+ ks !== void 0 && (o instanceof ks ? n = !0 : o instanceof Bi && (n = !1));
1376
1376
  }
1377
1377
  }
1378
1378
  this.renderer.setRenderTarget(t);
@@ -1433,7 +1433,7 @@ class Xi extends qe {
1433
1433
  * @param {?number} [clearAlpha=null] - The clear alpha of the render pass.
1434
1434
  */
1435
1435
  constructor(e, t, n = null, s = null, i = null) {
1436
- super(), this.scene = e, this.camera = t, this.overrideMaterial = n, this.clearColor = s, this.clearAlpha = i, this.clear = !0, this.clearDepth = !1, this.needsSwap = !1, this.isRenderPass = !0, this._oldClearColor = new Z();
1436
+ super(), this.scene = e, this.camera = t, this.overrideMaterial = n, this.clearColor = s, this.clearAlpha = i, this.clear = !0, this.clearDepth = !1, this.needsSwap = !1, this.isRenderPass = !0, this._oldClearColor = new B();
1437
1437
  }
1438
1438
  /**
1439
1439
  * Performs a beauty pass with the configured scene and camera.
@@ -1544,12 +1544,12 @@ class qi extends qe {
1544
1544
  * Constructs a new output pass.
1545
1545
  */
1546
1546
  constructor() {
1547
- super(), this.isOutputPass = !0, this.uniforms = rs.clone(xt.uniforms), this.material = new Nn({
1547
+ super(), this.isOutputPass = !0, this.uniforms = as.clone(xt.uniforms), this.material = new Nn({
1548
1548
  name: xt.name,
1549
1549
  uniforms: this.uniforms,
1550
1550
  vertexShader: xt.vertexShader,
1551
1551
  fragmentShader: xt.fragmentShader
1552
- }), this._fsQuad = new As(this.material), this._outputColorSpace = null, this._toneMapping = null;
1552
+ }), this._fsQuad = new cs(this.material), this._outputColorSpace = null, this._toneMapping = null;
1553
1553
  }
1554
1554
  /**
1555
1555
  * Performs the output pass.
@@ -1573,7 +1573,7 @@ class qi extends qe {
1573
1573
  this.material.dispose(), this._fsQuad.dispose();
1574
1574
  }
1575
1575
  }
1576
- class be extends qe {
1576
+ class Ce extends qe {
1577
1577
  /**
1578
1578
  * Constructs a new outline pass.
1579
1579
  *
@@ -1584,23 +1584,23 @@ class be extends qe {
1584
1584
  *
1585
1585
  */
1586
1586
  constructor(e, t, n, s) {
1587
- super(), this.renderScene = t, this.renderCamera = n, this.selectedObjects = s !== void 0 ? s : [], this.visibleEdgeColor = new Z(1, 1, 1), this.hiddenEdgeColor = new Z(0.1, 0.04, 0.02), this.edgeGlow = 0, this.usePatternTexture = !1, this.patternTexture = null, this.edgeThickness = 1, this.edgeStrength = 3, this.downSampleRatio = 2, this.pulsePeriod = 0, this._visibilityCache = /* @__PURE__ */ new Map(), this._selectionCache = /* @__PURE__ */ new Set(), this.resolution = e !== void 0 ? new F(e.x, e.y) : new F(256, 256);
1587
+ super(), this.renderScene = t, this.renderCamera = n, this.selectedObjects = s !== void 0 ? s : [], this.visibleEdgeColor = new B(1, 1, 1), this.hiddenEdgeColor = new B(0.1, 0.04, 0.02), this.edgeGlow = 0, this.usePatternTexture = !1, this.patternTexture = null, this.edgeThickness = 1, this.edgeStrength = 3, this.downSampleRatio = 2, this.pulsePeriod = 0, this._visibilityCache = /* @__PURE__ */ new Map(), this._selectionCache = /* @__PURE__ */ new Set(), this.resolution = e !== void 0 ? new F(e.x, e.y) : new F(256, 256);
1588
1588
  const i = Math.round(this.resolution.x / this.downSampleRatio), o = Math.round(this.resolution.y / this.downSampleRatio);
1589
- this.renderTargetMaskBuffer = new ge(this.resolution.x, this.resolution.y), this.renderTargetMaskBuffer.texture.name = "OutlinePass.mask", this.renderTargetMaskBuffer.texture.generateMipmaps = !1, this.depthMaterial = new Gn(), this.depthMaterial.side = kt, this.depthMaterial.depthPacking = Kn, this.depthMaterial.blending = Qt, this.prepareMaskMaterial = this._getPrepareMaskMaterial(), this.prepareMaskMaterial.side = kt, this.prepareMaskMaterial.fragmentShader = u(this.prepareMaskMaterial.fragmentShader, this.renderCamera), this.renderTargetDepthBuffer = new ge(this.resolution.x, this.resolution.y, { type: we }), this.renderTargetDepthBuffer.texture.name = "OutlinePass.depth", this.renderTargetDepthBuffer.texture.generateMipmaps = !1, this.renderTargetMaskDownSampleBuffer = new ge(i, o, { type: we }), this.renderTargetMaskDownSampleBuffer.texture.name = "OutlinePass.depthDownSample", this.renderTargetMaskDownSampleBuffer.texture.generateMipmaps = !1, this.renderTargetBlurBuffer1 = new ge(i, o, { type: we }), this.renderTargetBlurBuffer1.texture.name = "OutlinePass.blur1", this.renderTargetBlurBuffer1.texture.generateMipmaps = !1, this.renderTargetBlurBuffer2 = new ge(Math.round(i / 2), Math.round(o / 2), { type: we }), this.renderTargetBlurBuffer2.texture.name = "OutlinePass.blur2", this.renderTargetBlurBuffer2.texture.generateMipmaps = !1, this.edgeDetectionMaterial = this._getEdgeDetectionMaterial(), this.renderTargetEdgeBuffer1 = new ge(i, o, { type: we }), this.renderTargetEdgeBuffer1.texture.name = "OutlinePass.edge1", this.renderTargetEdgeBuffer1.texture.generateMipmaps = !1, this.renderTargetEdgeBuffer2 = new ge(Math.round(i / 2), Math.round(o / 2), { type: we }), this.renderTargetEdgeBuffer2.texture.name = "OutlinePass.edge2", this.renderTargetEdgeBuffer2.texture.generateMipmaps = !1;
1589
+ this.renderTargetMaskBuffer = new ge(this.resolution.x, this.resolution.y), this.renderTargetMaskBuffer.texture.name = "OutlinePass.mask", this.renderTargetMaskBuffer.texture.generateMipmaps = !1, this.depthMaterial = new Gn(), this.depthMaterial.side = kt, this.depthMaterial.depthPacking = Kn, this.depthMaterial.blending = Yt, this.prepareMaskMaterial = this._getPrepareMaskMaterial(), this.prepareMaskMaterial.side = kt, this.prepareMaskMaterial.fragmentShader = u(this.prepareMaskMaterial.fragmentShader, this.renderCamera), this.renderTargetDepthBuffer = new ge(this.resolution.x, this.resolution.y, { type: Re }), this.renderTargetDepthBuffer.texture.name = "OutlinePass.depth", this.renderTargetDepthBuffer.texture.generateMipmaps = !1, this.renderTargetMaskDownSampleBuffer = new ge(i, o, { type: Re }), this.renderTargetMaskDownSampleBuffer.texture.name = "OutlinePass.depthDownSample", this.renderTargetMaskDownSampleBuffer.texture.generateMipmaps = !1, this.renderTargetBlurBuffer1 = new ge(i, o, { type: Re }), this.renderTargetBlurBuffer1.texture.name = "OutlinePass.blur1", this.renderTargetBlurBuffer1.texture.generateMipmaps = !1, this.renderTargetBlurBuffer2 = new ge(Math.round(i / 2), Math.round(o / 2), { type: Re }), this.renderTargetBlurBuffer2.texture.name = "OutlinePass.blur2", this.renderTargetBlurBuffer2.texture.generateMipmaps = !1, this.edgeDetectionMaterial = this._getEdgeDetectionMaterial(), this.renderTargetEdgeBuffer1 = new ge(i, o, { type: Re }), this.renderTargetEdgeBuffer1.texture.name = "OutlinePass.edge1", this.renderTargetEdgeBuffer1.texture.generateMipmaps = !1, this.renderTargetEdgeBuffer2 = new ge(Math.round(i / 2), Math.round(o / 2), { type: Re }), this.renderTargetEdgeBuffer2.texture.name = "OutlinePass.edge2", this.renderTargetEdgeBuffer2.texture.generateMipmaps = !1;
1590
1590
  const a = 4, l = 4;
1591
1591
  this.separableBlurMaterial1 = this._getSeparableBlurMaterial(a), this.separableBlurMaterial1.uniforms.texSize.value.set(i, o), this.separableBlurMaterial1.uniforms.kernelRadius.value = 1, this.separableBlurMaterial2 = this._getSeparableBlurMaterial(l), this.separableBlurMaterial2.uniforms.texSize.value.set(Math.round(i / 2), Math.round(o / 2)), this.separableBlurMaterial2.uniforms.kernelRadius.value = l, this.overlayMaterial = this._getOverlayMaterial();
1592
1592
  const A = sn;
1593
- this.copyUniforms = rs.clone(A.uniforms), this.materialCopy = new Ee({
1593
+ this.copyUniforms = as.clone(A.uniforms), this.materialCopy = new ke({
1594
1594
  uniforms: this.copyUniforms,
1595
1595
  vertexShader: A.vertexShader,
1596
1596
  fragmentShader: A.fragmentShader,
1597
- blending: Qt,
1597
+ blending: Yt,
1598
1598
  depthTest: !1,
1599
1599
  depthWrite: !1
1600
- }), this.enabled = !0, this.needsSwap = !1, this._oldClearColor = new Z(), this.oldClearAlpha = 1, this._fsQuad = new As(null), this.tempPulseColor1 = new Z(), this.tempPulseColor2 = new Z(), this.textureMatrix = new fe();
1601
- function u(c, d) {
1602
- const h = d.isPerspectiveCamera ? "perspective" : "orthographic";
1603
- return c.replace(/DEPTH_TO_VIEW_Z/g, h + "DepthToViewZ");
1600
+ }), this.enabled = !0, this.needsSwap = !1, this._oldClearColor = new B(), this.oldClearAlpha = 1, this._fsQuad = new cs(null), this.tempPulseColor1 = new B(), this.tempPulseColor2 = new B(), this.textureMatrix = new fe();
1601
+ function u(c, h) {
1602
+ const d = h.isPerspectiveCamera ? "perspective" : "orthographic";
1603
+ return c.replace(/DEPTH_TO_VIEW_Z/g, d + "DepthToViewZ");
1604
1604
  }
1605
1605
  }
1606
1606
  /**
@@ -1642,7 +1642,7 @@ class be extends qe {
1642
1642
  const A = 0.625 + Math.cos(performance.now() * 0.01 / this.pulsePeriod) * 0.75 / 2;
1643
1643
  this.tempPulseColor1.multiplyScalar(A), this.tempPulseColor2.multiplyScalar(A);
1644
1644
  }
1645
- this._fsQuad.material = this.edgeDetectionMaterial, this.edgeDetectionMaterial.uniforms.maskTexture.value = this.renderTargetMaskDownSampleBuffer.texture, this.edgeDetectionMaterial.uniforms.texSize.value.set(this.renderTargetMaskDownSampleBuffer.width, this.renderTargetMaskDownSampleBuffer.height), this.edgeDetectionMaterial.uniforms.visibleEdgeColor.value = this.tempPulseColor1, this.edgeDetectionMaterial.uniforms.hiddenEdgeColor.value = this.tempPulseColor2, e.setRenderTarget(this.renderTargetEdgeBuffer1), e.clear(), this._fsQuad.render(e), this._fsQuad.material = this.separableBlurMaterial1, this.separableBlurMaterial1.uniforms.colorTexture.value = this.renderTargetEdgeBuffer1.texture, this.separableBlurMaterial1.uniforms.direction.value = be.BlurDirectionX, this.separableBlurMaterial1.uniforms.kernelRadius.value = this.edgeThickness, e.setRenderTarget(this.renderTargetBlurBuffer1), e.clear(), this._fsQuad.render(e), this.separableBlurMaterial1.uniforms.colorTexture.value = this.renderTargetBlurBuffer1.texture, this.separableBlurMaterial1.uniforms.direction.value = be.BlurDirectionY, e.setRenderTarget(this.renderTargetEdgeBuffer1), e.clear(), this._fsQuad.render(e), this._fsQuad.material = this.separableBlurMaterial2, this.separableBlurMaterial2.uniforms.colorTexture.value = this.renderTargetEdgeBuffer1.texture, this.separableBlurMaterial2.uniforms.direction.value = be.BlurDirectionX, e.setRenderTarget(this.renderTargetBlurBuffer2), e.clear(), this._fsQuad.render(e), this.separableBlurMaterial2.uniforms.colorTexture.value = this.renderTargetBlurBuffer2.texture, this.separableBlurMaterial2.uniforms.direction.value = be.BlurDirectionY, e.setRenderTarget(this.renderTargetEdgeBuffer2), e.clear(), this._fsQuad.render(e), this._fsQuad.material = this.overlayMaterial, this.overlayMaterial.uniforms.maskTexture.value = this.renderTargetMaskBuffer.texture, this.overlayMaterial.uniforms.edgeTexture1.value = this.renderTargetEdgeBuffer1.texture, this.overlayMaterial.uniforms.edgeTexture2.value = this.renderTargetEdgeBuffer2.texture, this.overlayMaterial.uniforms.patternTexture.value = this.patternTexture, this.overlayMaterial.uniforms.edgeStrength.value = this.edgeStrength, this.overlayMaterial.uniforms.edgeGlow.value = this.edgeGlow, this.overlayMaterial.uniforms.usePatternTexture.value = this.usePatternTexture, i && e.state.buffers.stencil.setTest(!0), e.setRenderTarget(n), this._fsQuad.render(e), e.setClearColor(this._oldClearColor, this.oldClearAlpha), e.autoClear = o;
1645
+ this._fsQuad.material = this.edgeDetectionMaterial, this.edgeDetectionMaterial.uniforms.maskTexture.value = this.renderTargetMaskDownSampleBuffer.texture, this.edgeDetectionMaterial.uniforms.texSize.value.set(this.renderTargetMaskDownSampleBuffer.width, this.renderTargetMaskDownSampleBuffer.height), this.edgeDetectionMaterial.uniforms.visibleEdgeColor.value = this.tempPulseColor1, this.edgeDetectionMaterial.uniforms.hiddenEdgeColor.value = this.tempPulseColor2, e.setRenderTarget(this.renderTargetEdgeBuffer1), e.clear(), this._fsQuad.render(e), this._fsQuad.material = this.separableBlurMaterial1, this.separableBlurMaterial1.uniforms.colorTexture.value = this.renderTargetEdgeBuffer1.texture, this.separableBlurMaterial1.uniforms.direction.value = Ce.BlurDirectionX, this.separableBlurMaterial1.uniforms.kernelRadius.value = this.edgeThickness, e.setRenderTarget(this.renderTargetBlurBuffer1), e.clear(), this._fsQuad.render(e), this.separableBlurMaterial1.uniforms.colorTexture.value = this.renderTargetBlurBuffer1.texture, this.separableBlurMaterial1.uniforms.direction.value = Ce.BlurDirectionY, e.setRenderTarget(this.renderTargetEdgeBuffer1), e.clear(), this._fsQuad.render(e), this._fsQuad.material = this.separableBlurMaterial2, this.separableBlurMaterial2.uniforms.colorTexture.value = this.renderTargetEdgeBuffer1.texture, this.separableBlurMaterial2.uniforms.direction.value = Ce.BlurDirectionX, e.setRenderTarget(this.renderTargetBlurBuffer2), e.clear(), this._fsQuad.render(e), this.separableBlurMaterial2.uniforms.colorTexture.value = this.renderTargetBlurBuffer2.texture, this.separableBlurMaterial2.uniforms.direction.value = Ce.BlurDirectionY, e.setRenderTarget(this.renderTargetEdgeBuffer2), e.clear(), this._fsQuad.render(e), this._fsQuad.material = this.overlayMaterial, this.overlayMaterial.uniforms.maskTexture.value = this.renderTargetMaskBuffer.texture, this.overlayMaterial.uniforms.edgeTexture1.value = this.renderTargetEdgeBuffer1.texture, this.overlayMaterial.uniforms.edgeTexture2.value = this.renderTargetEdgeBuffer2.texture, this.overlayMaterial.uniforms.patternTexture.value = this.patternTexture, this.overlayMaterial.uniforms.edgeStrength.value = this.edgeStrength, this.overlayMaterial.uniforms.edgeGlow.value = this.edgeGlow, this.overlayMaterial.uniforms.usePatternTexture.value = this.usePatternTexture, i && e.state.buffers.stencil.setTest(!0), e.setRenderTarget(n), this._fsQuad.render(e), e.setClearColor(this._oldClearColor, this.oldClearAlpha), e.autoClear = o;
1646
1646
  }
1647
1647
  this.renderToScreen && (this._fsQuad.material = this.materialCopy, this.copyUniforms.tDiffuse.value = n.texture, e.setRenderTarget(null), this._fsQuad.render(e));
1648
1648
  }
@@ -1694,7 +1694,7 @@ class be extends qe {
1694
1694
  ), this.textureMatrix.multiply(this.renderCamera.projectionMatrix), this.textureMatrix.multiply(this.renderCamera.matrixWorldInverse);
1695
1695
  }
1696
1696
  _getPrepareMaskMaterial() {
1697
- return new Ee({
1697
+ return new ke({
1698
1698
  uniforms: {
1699
1699
  depthTexture: { value: null },
1700
1700
  cameraNearFar: { value: new F(0.5, 0.5) },
@@ -1749,7 +1749,7 @@ class be extends qe {
1749
1749
  });
1750
1750
  }
1751
1751
  _getEdgeDetectionMaterial() {
1752
- return new Ee({
1752
+ return new ke({
1753
1753
  uniforms: {
1754
1754
  maskTexture: { value: null },
1755
1755
  texSize: { value: new F(0.5, 0.5) },
@@ -1788,7 +1788,7 @@ class be extends qe {
1788
1788
  });
1789
1789
  }
1790
1790
  _getSeparableBlurMaterial(e) {
1791
- return new Ee({
1791
+ return new ke({
1792
1792
  defines: {
1793
1793
  MAX_RADIUS: e
1794
1794
  },
@@ -1836,7 +1836,7 @@ class be extends qe {
1836
1836
  });
1837
1837
  }
1838
1838
  _getOverlayMaterial() {
1839
- return new Ee({
1839
+ return new ke({
1840
1840
  uniforms: {
1841
1841
  maskTexture: { value: null },
1842
1842
  edgeTexture1: { value: null },
@@ -1874,17 +1874,17 @@ class be extends qe {
1874
1874
  finalColor += + visibilityFactor * (1.0 - maskColor.r) * (1.0 - patternColor.r);
1875
1875
  gl_FragColor = finalColor;
1876
1876
  }`,
1877
- blending: Zn,
1877
+ blending: Bn,
1878
1878
  depthTest: !1,
1879
1879
  depthWrite: !1,
1880
1880
  transparent: !0
1881
1881
  });
1882
1882
  }
1883
1883
  }
1884
- be.BlurDirectionX = new F(1, 0);
1885
- be.BlurDirectionY = new F(0, 1);
1884
+ Ce.BlurDirectionX = new F(1, 0);
1885
+ Ce.BlurDirectionY = new F(0, 1);
1886
1886
  const Vi = "data:image/jpeg;base64,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";
1887
- class Ji extends Be {
1887
+ class Ji extends Ze {
1888
1888
  /**
1889
1889
  * Constructs a new CSS2D object.
1890
1890
  *
@@ -1919,51 +1919,51 @@ class Qi {
1919
1919
  width: n,
1920
1920
  height: s
1921
1921
  };
1922
- }, this.render = function(m, p) {
1923
- m.matrixWorldAutoUpdate === !0 && m.updateMatrixWorld(), p.parent === null && p.matrixWorldAutoUpdate === !0 && p.updateMatrixWorld(), Ps.copy(p.matrixWorldInverse), Ls.multiplyMatrices(p.projectionMatrix, Ps), u(m, m, p), this.sortObjects && h(m);
1924
- }, this.setSize = function(m, p) {
1925
- n = m, s = p, i = n / 2, o = s / 2, l.style.width = m + "px", l.style.height = p + "px";
1922
+ }, this.render = function(g, f) {
1923
+ g.matrixWorldAutoUpdate === !0 && g.updateMatrixWorld(), f.parent === null && f.matrixWorldAutoUpdate === !0 && f.updateMatrixWorld(), Ps.copy(f.matrixWorldInverse), Ls.multiplyMatrices(f.projectionMatrix, Ps), u(g, g, f), this.sortObjects && d(g);
1924
+ }, this.setSize = function(g, f) {
1925
+ n = g, s = f, i = n / 2, o = s / 2, l.style.width = g + "px", l.style.height = f + "px";
1926
1926
  };
1927
- function A(m) {
1928
- m.isCSS2DObject && (m.element.style.display = "none");
1929
- for (let p = 0, f = m.children.length; p < f; p++)
1930
- A(m.children[p]);
1927
+ function A(g) {
1928
+ g.isCSS2DObject && (g.element.style.display = "none");
1929
+ for (let f = 0, m = g.children.length; f < m; f++)
1930
+ A(g.children[f]);
1931
1931
  }
1932
- function u(m, p, f) {
1933
- if (m.visible === !1) {
1934
- A(m);
1932
+ function u(g, f, m) {
1933
+ if (g.visible === !1) {
1934
+ A(g);
1935
1935
  return;
1936
1936
  }
1937
- if (m.isCSS2DObject) {
1938
- He.setFromMatrixPosition(m.matrixWorld), He.applyMatrix4(Ls);
1939
- const g = He.z >= -1 && He.z <= 1 && m.layers.test(f.layers) === !0, x = m.element;
1940
- x.style.display = g === !0 ? "" : "none", g === !0 && (m.onBeforeRender(t, p, f), x.style.transform = "translate(" + -100 * m.center.x + "%," + -100 * m.center.y + "%)translate(" + (He.x * i + i) + "px," + (-He.y * o + o) + "px)", x.parentNode !== l && l.appendChild(x), m.onAfterRender(t, p, f));
1941
- const I = {
1942
- distanceToCameraSquared: c(f, m)
1937
+ if (g.isCSS2DObject) {
1938
+ He.setFromMatrixPosition(g.matrixWorld), He.applyMatrix4(Ls);
1939
+ const p = He.z >= -1 && He.z <= 1 && g.layers.test(m.layers) === !0, I = g.element;
1940
+ I.style.display = p === !0 ? "" : "none", p === !0 && (g.onBeforeRender(t, f, m), I.style.transform = "translate(" + -100 * g.center.x + "%," + -100 * g.center.y + "%)translate(" + (He.x * i + i) + "px," + (-He.y * o + o) + "px)", I.parentNode !== l && l.appendChild(I), g.onAfterRender(t, f, m));
1941
+ const x = {
1942
+ distanceToCameraSquared: c(m, g)
1943
1943
  };
1944
- a.objects.set(m, I);
1944
+ a.objects.set(g, x);
1945
1945
  }
1946
- for (let g = 0, x = m.children.length; g < x; g++)
1947
- u(m.children[g], p, f);
1946
+ for (let p = 0, I = g.children.length; p < I; p++)
1947
+ u(g.children[p], f, m);
1948
1948
  }
1949
- function c(m, p) {
1950
- return Ns.setFromMatrixPosition(m.matrixWorld), Os.setFromMatrixPosition(p.matrixWorld), Ns.distanceToSquared(Os);
1949
+ function c(g, f) {
1950
+ return Ns.setFromMatrixPosition(g.matrixWorld), Os.setFromMatrixPosition(f.matrixWorld), Ns.distanceToSquared(Os);
1951
1951
  }
1952
- function d(m) {
1953
- const p = [];
1954
- return m.traverseVisible(function(f) {
1955
- f.isCSS2DObject && p.push(f);
1956
- }), p;
1952
+ function h(g) {
1953
+ const f = [];
1954
+ return g.traverseVisible(function(m) {
1955
+ m.isCSS2DObject && f.push(m);
1956
+ }), f;
1957
1957
  }
1958
- function h(m) {
1959
- const p = d(m).sort(function(g, x) {
1960
- if (g.renderOrder !== x.renderOrder)
1961
- return x.renderOrder - g.renderOrder;
1962
- const I = a.objects.get(g).distanceToCameraSquared, y = a.objects.get(x).distanceToCameraSquared;
1963
- return I - y;
1964
- }), f = p.length;
1965
- for (let g = 0, x = p.length; g < x; g++)
1966
- p[g].element.style.zIndex = f - g;
1958
+ function d(g) {
1959
+ const f = h(g).sort(function(p, I) {
1960
+ if (p.renderOrder !== I.renderOrder)
1961
+ return I.renderOrder - p.renderOrder;
1962
+ const x = a.objects.get(p).distanceToCameraSquared, y = a.objects.get(I).distanceToCameraSquared;
1963
+ return x - y;
1964
+ }), m = f.length;
1965
+ for (let p = 0, I = f.length; p < I; p++)
1966
+ f[p].element.style.zIndex = m - p;
1967
1967
  }
1968
1968
  }
1969
1969
  }
@@ -2186,11 +2186,17 @@ class dt {
2186
2186
  updateOptions(e) {
2187
2187
  this.options = { ...this.options, ...e }, this.rebuildPanel();
2188
2188
  }
2189
- /** 更新面板 Y 轴偏移 */
2189
+ /** 获取面板 Y 轴偏移 */
2190
+ getOffsetY() {
2191
+ return this.options.offsetY ?? 0.1;
2192
+ }
2193
+ /** 更新面板 Y 轴偏移(使用与 attachTo 相同的位置计算逻辑) */
2190
2194
  setOffsetY(e) {
2191
2195
  if (this.options.offsetY = e, this.css2dObject && this.attachedObject) {
2192
- const t = new w.Box3().setFromObject(this.attachedObject), n = new w.Vector3();
2193
- t.getSize(n), this.css2dObject.position.set(0, n.y / 2 + e, 0);
2196
+ const t = new w.Vector3();
2197
+ this.attachedObject.getWorldPosition(t);
2198
+ const s = new w.Box3().setFromObject(this.attachedObject).max.y - t.y;
2199
+ this.css2dObject.position.set(0, s + e, 0);
2194
2200
  }
2195
2201
  }
2196
2202
  /** 获取面板宽度 */
@@ -2228,7 +2234,7 @@ function nn(r, e) {
2228
2234
  const t = Ot(r);
2229
2235
  Lt.set(t, e), t.userData._hasDataPanel = !0;
2230
2236
  }
2231
- function cs(r) {
2237
+ function Wt(r) {
2232
2238
  return Lt.get(Ot(r)) || null;
2233
2239
  }
2234
2240
  function oo(r) {
@@ -2239,7 +2245,7 @@ let U = null;
2239
2245
  function ro(r) {
2240
2246
  return U ? (U.domElement.parentNode !== r && r.appendChild(U.domElement), U) : (U = new Qi(), U.setSize(r.clientWidth, r.clientHeight), U.domElement.style.position = "absolute", U.domElement.style.top = "0", U.domElement.style.left = "0", U.domElement.style.pointerEvents = "none", r.appendChild(U.domElement), U);
2241
2247
  }
2242
- function Il() {
2248
+ function vl() {
2243
2249
  return U;
2244
2250
  }
2245
2251
  function ao(r, e) {
@@ -2275,9 +2281,9 @@ const b = {
2275
2281
  /** 当前选中的物体 */
2276
2282
  selectedObject: null
2277
2283
  };
2278
- let wt = !1, We = !1, Ce = null, Ie = null;
2279
- const ts = 16755200;
2280
- let ss = [], Oe = null, ns = null, Rt = null, ye = [];
2284
+ let wt = !1, We = !1, Ie = null, ye = null;
2285
+ const ss = 16755200;
2286
+ let ns = [], Oe = null, is = null, Rt = null, xe = [];
2281
2287
  const je = /* @__PURE__ */ new Map();
2282
2288
  let Nt, Et = null, lt = null, At = null;
2283
2289
  function co(r, e = "edit", t) {
@@ -2289,9 +2295,9 @@ function uo() {
2289
2295
  }
2290
2296
  function ho() {
2291
2297
  if (!b.renderer || !b.scene || !b.camera) return;
2292
- const r = new Bi(b.renderer);
2298
+ const r = new Zi(b.renderer);
2293
2299
  r.addPass(new Xi(b.scene, b.camera)), r.addPass(new qi());
2294
- const e = new be(
2300
+ const e = new Ce(
2295
2301
  new w.Vector2(
2296
2302
  b.container.clientWidth,
2297
2303
  b.container.clientHeight
@@ -2299,7 +2305,7 @@ function ho() {
2299
2305
  b.scene,
2300
2306
  b.camera
2301
2307
  );
2302
- e.edgeStrength = 3, e.edgeGlow = 0.5, e.edgeThickness = 1.5, e.visibleEdgeColor.set(ts), e.hiddenEdgeColor.set(ts), e.downSampleRatio = 2, r.addPass(e), Ce = r, Ie = e;
2308
+ e.edgeStrength = 3, e.edgeGlow = 0.5, e.edgeThickness = 1.5, e.visibleEdgeColor.set(ss), e.hiddenEdgeColor.set(ss), e.downSampleRatio = 2, r.addPass(e), Ie = r, ye = e;
2303
2309
  }
2304
2310
  function fo() {
2305
2311
  b.scene = new w.Scene(), b.scene.name = "sl_scene", new w.TextureLoader().load(
@@ -2393,7 +2399,7 @@ function bo() {
2393
2399
  }, 200));
2394
2400
  }), r.addEventListener("objectChange", () => {
2395
2401
  const e = b.selectedObject;
2396
- if (ns && e && ns(e), e && e.type === "DirectionalLight") {
2402
+ if (is && e && is(e), e && e.type === "DirectionalLight") {
2397
2403
  const t = e.userData.helper;
2398
2404
  t && t.update && t.update();
2399
2405
  }
@@ -2405,7 +2411,7 @@ function Co() {
2405
2411
  }
2406
2412
  function rn() {
2407
2413
  var e, t;
2408
- Et = requestAnimationFrame(rn), ut.update(), (e = b.orbitControls) == null || e.update(), b.mode === "run" && Ce && b.scene && b.camera ? Ce.render() : (t = b.renderer) == null || t.render(b.scene, b.camera), b.scene && b.camera && ao(b.scene, b.camera), b.scene && b.scene.traverse((n) => {
2414
+ Et = requestAnimationFrame(rn), ut.update(), (e = b.orbitControls) == null || e.update(), b.mode === "run" && Ie && b.scene && b.camera ? Ie.render() : (t = b.renderer) == null || t.render(b.scene, b.camera), b.scene && b.camera && ao(b.scene, b.camera), b.scene && b.scene.traverse((n) => {
2409
2415
  if (n.userData.isWater && n.type === "Mesh") {
2410
2416
  const s = n, i = s.material;
2411
2417
  if (i.normalMap) {
@@ -2418,7 +2424,7 @@ function rn() {
2418
2424
  function Io() {
2419
2425
  if (!b.container || !b.camera || !b.renderer) return;
2420
2426
  const r = b.container.clientWidth, e = b.container.clientHeight;
2421
- r === 0 || e === 0 || (b.camera.aspect = r / e, b.camera.updateProjectionMatrix(), b.renderer.setSize(r, e), Ce && Ce.setSize(r, e), Ie && Ie.resolution.set(r, e), lo(r, e));
2427
+ r === 0 || e === 0 || (b.camera.aspect = r / e, b.camera.updateProjectionMatrix(), b.renderer.setSize(r, e), Ie && Ie.setSize(r, e), ye && ye.resolution.set(r, e), lo(r, e));
2422
2428
  }
2423
2429
  function us(r) {
2424
2430
  b.selectedObject !== r && (b.selectedObject && b.transformControls.detach(), b.selectedObject = r, b.transformControls.attach(r), b.transformControls.setMode(b.transformControlsMode), b.transformControls.showX = !0, b.transformControls.showY = !0, b.transformControls.showZ = !0, an(r), console.log("选中", b.selectedObject), Oe == null || Oe(r));
@@ -2427,7 +2433,7 @@ let _ = null;
2427
2433
  function yo(r) {
2428
2434
  _ = r;
2429
2435
  }
2430
- function Gt(r) {
2436
+ function Kt(r) {
2431
2437
  _ == null || _(r);
2432
2438
  }
2433
2439
  function xo(r) {
@@ -2438,27 +2444,27 @@ function an(r) {
2438
2444
  ds(), r.traverse((t) => {
2439
2445
  if (t.isMesh) {
2440
2446
  const n = t, s = new w.EdgesGeometry(n.geometry), i = new w.LineBasicMaterial({
2441
- color: ts,
2447
+ color: ss,
2442
2448
  depthTest: !0
2443
2449
  }), o = new w.LineSegments(s, i);
2444
- t.add(o), ss.push(o);
2450
+ t.add(o), ns.push(o);
2445
2451
  }
2446
2452
  });
2447
2453
  else {
2448
- if (!Ie) return;
2454
+ if (!ye) return;
2449
2455
  const t = [];
2450
2456
  r.traverse((n) => {
2451
2457
  n.isMesh && t.push(n);
2452
- }), Ie.selectedObjects = t;
2458
+ }), ye.selectedObjects = t;
2453
2459
  }
2454
2460
  }
2455
2461
  function ds() {
2456
2462
  if (b.mode === "edit") {
2457
- for (const r of ss)
2463
+ for (const r of ns)
2458
2464
  r.parent && r.parent.remove(r), r.geometry.dispose(), r.material.dispose();
2459
- ss = [];
2465
+ ns = [];
2460
2466
  } else
2461
- Ie && (Ie.selectedObjects = []);
2467
+ ye && (ye.selectedObjects = []);
2462
2468
  }
2463
2469
  function hs() {
2464
2470
  b.selectedObject && (ds(), b.transformControls.detach(), b.selectedObject = null, Oe == null || Oe(null));
@@ -2546,13 +2552,13 @@ function To(r, e = 500) {
2546
2552
  tz: n.z
2547
2553
  },
2548
2554
  e
2549
- ).easing(ut.Easing.Quadratic.InOut).onUpdate((d) => {
2550
- b.camera.position.set(d.x, d.y, d.z), b.orbitControls.target.set(d.tx, d.ty, d.tz), b.orbitControls.update();
2555
+ ).easing(ut.Easing.Quadratic.InOut).onUpdate((h) => {
2556
+ b.camera.position.set(h.x, h.y, h.z), b.orbitControls.target.set(h.tx, h.ty, h.tz), b.orbitControls.update();
2551
2557
  }).start();
2552
- } catch (d) {
2558
+ } catch (h) {
2553
2559
  console.error(
2554
2560
  "[focusOnObject] TWEEN 动画创建失败,请检查 @tweenjs/tween.js 是否已正确安装且版本兼容(^23.1.3):",
2555
- d
2561
+ h
2556
2562
  );
2557
2563
  }
2558
2564
  }
@@ -2580,121 +2586,122 @@ function Eo(r) {
2580
2586
  });
2581
2587
  }
2582
2588
  function Xe(r, e = !1) {
2583
- b.scene.add(r), r.userData.isMovable && (Lo(r), Wt()), e && b.mode === "edit" && us(r);
2589
+ b.scene.add(r), r.userData.isMovable && (Lo(r), jt()), e && b.mode === "edit" && us(r);
2584
2590
  }
2585
2591
  function ko(r) {
2586
- b.selectedObject === r && hs(), Eo(r), wo(r), r.userData.helper && b.scene.remove(r.userData.helper), r.parent ? r.parent.remove(r) : b.scene.remove(r), No(r), Wt();
2592
+ b.selectedObject === r && hs(), Eo(r), wo(r), r.userData.helper && b.scene.remove(r.userData.helper), r.parent ? r.parent.remove(r) : b.scene.remove(r), No(r), jt();
2587
2593
  }
2588
2594
  function Po(r) {
2589
2595
  const e = b.scene.getObjectByProperty("uuid", r);
2590
2596
  e && ko(e);
2591
2597
  }
2592
2598
  function Lo(r) {
2593
- r.userData.isMovable && r.parent === b.scene && (ye.includes(r) || ye.push(r));
2599
+ r.userData.isMovable && r.parent === b.scene && (xe.includes(r) || xe.push(r));
2594
2600
  }
2595
2601
  function No(r) {
2596
- const e = ye.indexOf(r);
2597
- e !== -1 && ye.splice(e, 1);
2602
+ const e = xe.indexOf(r);
2603
+ e !== -1 && xe.splice(e, 1);
2598
2604
  }
2599
2605
  function Oo() {
2600
2606
  const r = [];
2601
2607
  b.scene.children.forEach((e) => {
2602
2608
  e.userData.isMovable && r.push(e);
2603
- }), ye = r, Wt();
2609
+ }), xe = r, jt();
2604
2610
  }
2605
- function Wt() {
2606
- Rt == null || Rt([...ye]);
2611
+ function jt() {
2612
+ Rt == null || Rt([...xe]);
2607
2613
  }
2608
2614
  function Do(r) {
2609
2615
  Oe = r;
2610
2616
  }
2611
2617
  function Wo(r) {
2612
- ns = r;
2618
+ is = r;
2613
2619
  }
2614
2620
  function jo(r) {
2615
2621
  Rt = r;
2616
2622
  }
2617
2623
  function Fo() {
2618
- return ye;
2624
+ return xe;
2619
2625
  }
2620
2626
  function Uo() {
2621
2627
  return b.selectedObject;
2622
2628
  }
2623
- function yl(r, e, t) {
2629
+ function Sl(r, e, t) {
2624
2630
  if (!b.scene) return;
2625
2631
  const n = je.get(r);
2626
2632
  if (n) {
2627
- const s = cs(n);
2633
+ const s = Wt(n);
2628
2634
  s && s.updateItemByCode(e, t);
2629
2635
  }
2630
2636
  }
2631
- function xl() {
2637
+ function Tl() {
2632
2638
  return b.scene;
2633
2639
  }
2634
2640
  function Ho() {
2635
2641
  return b.camera;
2636
2642
  }
2637
- function vl() {
2643
+ function Ml() {
2638
2644
  return b.renderer;
2639
2645
  }
2640
2646
  async function zo() {
2641
2647
  var A, u, c;
2642
- _ == null || _(!0), await new Promise((d) => setTimeout(d, 50)), hs();
2648
+ _ == null || _(!0), await new Promise((h) => setTimeout(h, 50)), hs();
2643
2649
  const r = b.scene;
2644
2650
  if (!r)
2645
2651
  return _ == null || _(!1), "{}";
2646
2652
  const e = [], t = /* @__PURE__ */ new Map(), n = /* @__PURE__ */ new Map();
2647
- r.traverse((d) => {
2648
- var h;
2649
- if (d.userData.type === "lightHelper" && e.push(d), d.type === "DirectionalLight" && d.userData.helper && (t.set(d, d.userData.helper), d.userData.helper = void 0), d.name && d.name.startsWith("DataPanel_")) {
2650
- const m = d;
2651
- if (m.element) {
2652
- const p = m.element.querySelector(
2653
+ r.traverse((h) => {
2654
+ var d;
2655
+ if (h.userData.type === "lightHelper" && e.push(h), h.type === "DirectionalLight" && h.userData.helper && (t.set(h, h.userData.helper), h.userData.helper = void 0), h.name && h.name.startsWith("DataPanel_")) {
2656
+ const g = h;
2657
+ if (g.element) {
2658
+ const f = g.element.querySelector(
2653
2659
  "[data-panel-title]"
2654
- ), f = [];
2655
- if (m.element.querySelectorAll(
2660
+ ), m = [];
2661
+ if (g.element.querySelectorAll(
2656
2662
  ".sl-css2d-data-panel-item"
2657
- ).forEach((x) => {
2658
- var S, M, L;
2659
- const I = x.querySelector(".item-label"), y = x.querySelector(".item-value");
2660
- if (I && y) {
2661
- const Q = (I.textContent || "").trim(), $ = ((M = (S = y.childNodes[0]) == null ? void 0 : S.textContent) == null ? void 0 : M.trim()) || "", Y = y.querySelector(
2663
+ ).forEach((I) => {
2664
+ var v, M, L;
2665
+ const x = I.querySelector(".item-label"), y = I.querySelector(".item-value");
2666
+ if (x && y) {
2667
+ const Q = (x.textContent || "").trim(), $ = ((M = (v = y.childNodes[0]) == null ? void 0 : v.textContent) == null ? void 0 : M.trim()) || "", Y = y.querySelector(
2662
2668
  "span"
2663
- ), Se = Y ? (Y.textContent || "").trim() : void 0, jt = ((L = x.getAttribute("data-item-code")) == null ? void 0 : L.trim()) || void 0;
2664
- f.push({ label: Q, value: $, unit: Se, code: jt });
2669
+ ), Te = Y ? (Y.textContent || "").trim() : void 0, Ft = ((L = I.getAttribute("data-item-code")) == null ? void 0 : L.trim()) || void 0;
2670
+ m.push({ label: Q, value: $, unit: Te, code: Ft });
2665
2671
  }
2666
- }), d.parent) {
2667
- const x = m.element.style.width || "", I = m.element.style.fontSize || "";
2672
+ }), h.parent) {
2673
+ const I = g.element.style.width || "", x = g.element.style.fontSize || "", y = Wt(h.parent), v = y ? y.getOffsetY() : 0.1;
2668
2674
  n.set(
2669
- d.parent.userData.id ? d.parent.userData.id : d.parent.uuid,
2675
+ h.parent.userData.id ? h.parent.userData.id : h.parent.uuid,
2670
2676
  {
2671
- title: ((h = p == null ? void 0 : p.textContent) == null ? void 0 : h.trim()) || "",
2672
- items: f,
2673
- width: x,
2674
- fontSize: I
2677
+ title: ((d = f == null ? void 0 : f.textContent) == null ? void 0 : d.trim()) || "",
2678
+ items: m,
2679
+ width: I,
2680
+ fontSize: x,
2681
+ offsetY: v
2675
2682
  }
2676
2683
  );
2677
2684
  }
2678
2685
  }
2679
2686
  }
2680
- }), e.forEach((d) => r.remove(d));
2687
+ }), e.forEach((h) => r.remove(h));
2681
2688
  const s = r.clone();
2682
2689
  s.children = s.children.filter(
2683
- (d) => d.userData.type !== "initFloor"
2684
- ), s.traverse((d) => {
2685
- d.name && d.name.startsWith("DataPanel_") && d.parent && d.parent.remove(d);
2690
+ (h) => h.userData.type !== "initFloor"
2691
+ ), s.traverse((h) => {
2692
+ h.name && h.name.startsWith("DataPanel_") && h.parent && h.parent.remove(h);
2686
2693
  });
2687
2694
  const i = s.toJSON();
2688
- e.forEach((d) => r.add(d)), t.forEach((d, h) => {
2689
- h.userData.helper = d;
2695
+ e.forEach((h) => r.add(h)), t.forEach((h, d) => {
2696
+ d.userData.helper = h;
2690
2697
  });
2691
2698
  const o = {
2692
2699
  position: (A = b.camera) == null ? void 0 : A.position.toArray(),
2693
2700
  rotation: (u = b.camera) == null ? void 0 : u.rotation.toArray(),
2694
2701
  target: ((c = b.orbitControls) == null ? void 0 : c.target.toArray()) || [0, 0, 0]
2695
2702
  }, a = {};
2696
- n.forEach((d, h) => {
2697
- a[h] = d;
2703
+ n.forEach((h, d) => {
2704
+ a[d] = h;
2698
2705
  });
2699
2706
  const l = JSON.stringify({
2700
2707
  scene: i,
@@ -2711,19 +2718,19 @@ function Go(r, e = "edit", t) {
2711
2718
  const u = A.userData.id || A.uuid, c = t[u];
2712
2719
  if (c && A.userData.isMovable) {
2713
2720
  Mo(A);
2714
- const d = new dt({
2721
+ const h = new dt({
2715
2722
  title: c.title,
2716
2723
  items: c.items
2717
2724
  });
2718
- d.attachTo(A), d.visible = !1, c.width && d.setWidth(c.width), c.fontSize && d.setFontSize(c.fontSize), nn(A, d);
2725
+ h.attachTo(A), h.visible = !1, c.width && h.setWidth(c.width), c.fontSize && h.setFontSize(c.fontSize), c.offsetY !== void 0 && h.setOffsetY(c.offsetY), nn(A, h);
2719
2726
  }
2720
2727
  })), e === "edit" && ((l = b.scene) == null || l.traverse((A) => {
2721
2728
  var u;
2722
2729
  if (A.type === "DirectionalLight") {
2723
2730
  const c = A;
2724
2731
  if (!c.userData.helper) {
2725
- const d = new w.DirectionalLightHelper(c, 1);
2726
- d.userData.type = "lightHelper", c.userData.helper = d, (u = b.scene) == null || u.add(d);
2732
+ const h = new w.DirectionalLightHelper(c, 1);
2733
+ h.userData.type = "lightHelper", c.userData.helper = h, (u = b.scene) == null || u.add(h);
2727
2734
  }
2728
2735
  }
2729
2736
  }));
@@ -2741,9 +2748,9 @@ function An(r) {
2741
2748
  An(t);
2742
2749
  }
2743
2750
  function Ko() {
2744
- Et !== null && (cancelAnimationFrame(Et), Et = null), lt && b.container && (b.container.removeEventListener("click", lt), lt = null), At && (window.removeEventListener("resize", At), At = null), b.orbitControls && (b.orbitControls.dispose(), b.orbitControls = null), b.transformControls && (b.transformControls.dispose(), b.transformControls = null), Ce && (Ce.dispose(), Ce = null, Ie = null), b.scene && (An(b.scene), b.scene = null), b.renderer && (b.renderer.dispose(), b.renderer.domElement && b.container && b.container.removeChild(b.renderer.domElement), b.renderer = null), Ao(), b.camera = null, b.gridHelper = null, b.selectedObject = null, b.container = null, b.mode = "", ye = [], je.clear(), Wt(), wt = !1, We = !1;
2751
+ Et !== null && (cancelAnimationFrame(Et), Et = null), lt && b.container && (b.container.removeEventListener("click", lt), lt = null), At && (window.removeEventListener("resize", At), At = null), b.orbitControls && (b.orbitControls.dispose(), b.orbitControls = null), b.transformControls && (b.transformControls.dispose(), b.transformControls = null), Ie && (Ie.dispose(), Ie = null, ye = null), b.scene && (An(b.scene), b.scene = null), b.renderer && (b.renderer.dispose(), b.renderer.domElement && b.container && b.container.removeChild(b.renderer.domElement), b.renderer = null), Ao(), b.camera = null, b.gridHelper = null, b.selectedObject = null, b.container = null, b.mode = "", xe = [], je.clear(), jt(), wt = !1, We = !1;
2745
2752
  }
2746
- const Zo = /^[og]\s*(.+)?/, Bo = /^mtllib /, Xo = /^usemtl /, qo = /^usemap /, Ds = /\s+/, Ws = new T(), Kt = new T(), js = new T(), Fs = new T(), te = new T(), vt = new Z();
2753
+ const Bo = /^[og]\s*(.+)?/, Zo = /^mtllib /, Xo = /^usemtl /, qo = /^usemap /, Ds = /\s+/, Ws = new T(), Bt = new T(), js = new T(), Fs = new T(), te = new T(), vt = new B();
2747
2754
  function Vo() {
2748
2755
  const r = {
2749
2756
  objects: [],
@@ -2853,7 +2860,7 @@ function Vo() {
2853
2860
  },
2854
2861
  addFaceNormal: function(e, t, n) {
2855
2862
  const s = this.vertices, i = this.object.geometry.normals;
2856
- Ws.fromArray(s, e), Kt.fromArray(s, t), js.fromArray(s, n), te.subVectors(js, Kt), Fs.subVectors(Ws, Kt), te.cross(Fs), te.normalize(), i.push(te.x, te.y, te.z), i.push(te.x, te.y, te.z), i.push(te.x, te.y, te.z);
2863
+ Ws.fromArray(s, e), Bt.fromArray(s, t), js.fromArray(s, n), te.subVectors(js, Bt), Fs.subVectors(Ws, Bt), te.cross(Fs), te.normalize(), i.push(te.x, te.y, te.z), i.push(te.x, te.y, te.z), i.push(te.x, te.y, te.z);
2857
2864
  },
2858
2865
  addColor: function(e, t, n) {
2859
2866
  const s = this.colors, i = this.object.geometry.colors;
@@ -2873,15 +2880,15 @@ function Vo() {
2873
2880
  },
2874
2881
  addFace: function(e, t, n, s, i, o, a, l, A) {
2875
2882
  const u = this.vertices.length;
2876
- let c = this.parseVertexIndex(e, u), d = this.parseVertexIndex(t, u), h = this.parseVertexIndex(n, u);
2877
- if (this.addVertex(c, d, h), this.addColor(c, d, h), a !== void 0 && a !== "") {
2878
- const m = this.normals.length;
2879
- c = this.parseNormalIndex(a, m), d = this.parseNormalIndex(l, m), h = this.parseNormalIndex(A, m), this.addNormal(c, d, h);
2883
+ let c = this.parseVertexIndex(e, u), h = this.parseVertexIndex(t, u), d = this.parseVertexIndex(n, u);
2884
+ if (this.addVertex(c, h, d), this.addColor(c, h, d), a !== void 0 && a !== "") {
2885
+ const g = this.normals.length;
2886
+ c = this.parseNormalIndex(a, g), h = this.parseNormalIndex(l, g), d = this.parseNormalIndex(A, g), this.addNormal(c, h, d);
2880
2887
  } else
2881
- this.addFaceNormal(c, d, h);
2888
+ this.addFaceNormal(c, h, d);
2882
2889
  if (s !== void 0 && s !== "") {
2883
- const m = this.uvs.length;
2884
- c = this.parseUVIndex(s, m), d = this.parseUVIndex(i, m), h = this.parseUVIndex(o, m), this.addUV(c, d, h), this.object.geometry.hasUVIndices = !0;
2890
+ const g = this.uvs.length;
2891
+ c = this.parseUVIndex(s, g), h = this.parseUVIndex(i, g), d = this.parseUVIndex(o, g), this.addUV(c, h, d), this.object.geometry.hasUVIndices = !0;
2885
2892
  } else
2886
2893
  this.addDefaultUV();
2887
2894
  },
@@ -2904,7 +2911,7 @@ function Vo() {
2904
2911
  };
2905
2912
  return r.startObject("", !1), r;
2906
2913
  }
2907
- class Jo extends as {
2914
+ class Jo extends ls {
2908
2915
  /**
2909
2916
  * Constructs a new OBJ loader.
2910
2917
  *
@@ -2991,57 +2998,57 @@ class Jo extends as {
2991
2998
  break;
2992
2999
  }
2993
3000
  } else if (u === "f") {
2994
- const d = A.slice(1).trim().split(Ds), h = [];
2995
- for (let p = 0, f = d.length; p < f; p++) {
2996
- const g = d[p];
2997
- if (g.length > 0) {
2998
- const x = g.split("/");
2999
- h.push(x);
3001
+ const h = A.slice(1).trim().split(Ds), d = [];
3002
+ for (let f = 0, m = h.length; f < m; f++) {
3003
+ const p = h[f];
3004
+ if (p.length > 0) {
3005
+ const I = p.split("/");
3006
+ d.push(I);
3000
3007
  }
3001
3008
  }
3002
- const m = h[0];
3003
- for (let p = 1, f = h.length - 1; p < f; p++) {
3004
- const g = h[p], x = h[p + 1];
3009
+ const g = d[0];
3010
+ for (let f = 1, m = d.length - 1; f < m; f++) {
3011
+ const p = d[f], I = d[f + 1];
3005
3012
  t.addFace(
3006
- m[0],
3007
3013
  g[0],
3008
- x[0],
3009
- m[1],
3014
+ p[0],
3015
+ I[0],
3010
3016
  g[1],
3011
- x[1],
3012
- m[2],
3017
+ p[1],
3018
+ I[1],
3013
3019
  g[2],
3014
- x[2]
3020
+ p[2],
3021
+ I[2]
3015
3022
  );
3016
3023
  }
3017
3024
  } else if (u === "l") {
3018
3025
  const c = A.substring(1).trim().split(" ");
3019
- let d = [];
3020
- const h = [];
3026
+ let h = [];
3027
+ const d = [];
3021
3028
  if (A.indexOf("/") === -1)
3022
- d = c;
3029
+ h = c;
3023
3030
  else
3024
- for (let m = 0, p = c.length; m < p; m++) {
3025
- const f = c[m].split("/");
3026
- f[0] !== "" && d.push(f[0]), f[1] !== "" && h.push(f[1]);
3031
+ for (let g = 0, f = c.length; g < f; g++) {
3032
+ const m = c[g].split("/");
3033
+ m[0] !== "" && h.push(m[0]), m[1] !== "" && d.push(m[1]);
3027
3034
  }
3028
- t.addLineGeometry(d, h);
3035
+ t.addLineGeometry(h, d);
3029
3036
  } else if (u === "p") {
3030
- const d = A.slice(1).trim().split(" ");
3031
- t.addPointGeometry(d);
3032
- } else if ((s = Zo.exec(A)) !== null) {
3037
+ const h = A.slice(1).trim().split(" ");
3038
+ t.addPointGeometry(h);
3039
+ } else if ((s = Bo.exec(A)) !== null) {
3033
3040
  const c = (" " + s[0].slice(1).trim()).slice(1);
3034
3041
  t.startObject(c);
3035
3042
  } else if (Xo.test(A))
3036
3043
  t.object.startMaterial(A.substring(7).trim(), t.materialLibraries);
3037
- else if (Bo.test(A))
3044
+ else if (Zo.test(A))
3038
3045
  t.materialLibraries.push(A.substring(7).trim());
3039
3046
  else if (qo.test(A))
3040
3047
  console.warn('THREE.OBJLoader: Rendering identifier "usemap" not supported. Textures must be defined in MTL files.');
3041
3048
  else if (u === "s") {
3042
3049
  if (s = A.split(" "), s.length > 1) {
3043
- const d = s[1].trim().toLowerCase();
3044
- t.object.smooth = d !== "0" && d !== "off";
3050
+ const h = s[1].trim().toLowerCase();
3051
+ t.object.smooth = h !== "0" && h !== "off";
3045
3052
  } else
3046
3053
  t.object.smooth = !0;
3047
3054
  const c = t.object.currentMaterial();
@@ -3055,36 +3062,36 @@ class Jo extends as {
3055
3062
  const i = new St();
3056
3063
  if (i.materialLibraries = [].concat(t.materialLibraries), !(t.objects.length === 1 && t.objects[0].geometry.vertices.length === 0) === !0)
3057
3064
  for (let a = 0, l = t.objects.length; a < l; a++) {
3058
- const A = t.objects[a], u = A.geometry, c = A.materials, d = u.type === "Line", h = u.type === "Points";
3059
- let m = !1;
3065
+ const A = t.objects[a], u = A.geometry, c = A.materials, h = u.type === "Line", d = u.type === "Points";
3066
+ let g = !1;
3060
3067
  if (u.vertices.length === 0) continue;
3061
- const p = new De();
3062
- p.setAttribute("position", new le(u.vertices, 3)), u.normals.length > 0 && p.setAttribute("normal", new le(u.normals, 3)), u.colors.length > 0 && (m = !0, p.setAttribute("color", new le(u.colors, 3))), u.hasUVIndices === !0 && p.setAttribute("uv", new le(u.uvs, 2));
3063
- const f = [];
3064
- for (let x = 0, I = c.length; x < I; x++) {
3065
- const y = c[x], S = y.name + "_" + y.smooth + "_" + m;
3066
- let M = t.materials[S];
3068
+ const f = new De();
3069
+ f.setAttribute("position", new le(u.vertices, 3)), u.normals.length > 0 && f.setAttribute("normal", new le(u.normals, 3)), u.colors.length > 0 && (g = !0, f.setAttribute("color", new le(u.colors, 3))), u.hasUVIndices === !0 && f.setAttribute("uv", new le(u.uvs, 2));
3070
+ const m = [];
3071
+ for (let I = 0, x = c.length; I < x; I++) {
3072
+ const y = c[I], v = y.name + "_" + y.smooth + "_" + g;
3073
+ let M = t.materials[v];
3067
3074
  if (this.materials !== null) {
3068
- if (M = this.materials.create(y.name), d && M && !(M instanceof it)) {
3075
+ if (M = this.materials.create(y.name), h && M && !(M instanceof it)) {
3069
3076
  const L = new it();
3070
3077
  ot.prototype.copy.call(L, M), L.color.copy(M.color), M = L;
3071
- } else if (h && M && !(M instanceof et)) {
3078
+ } else if (d && M && !(M instanceof et)) {
3072
3079
  const L = new et({ size: 10, sizeAttenuation: !1 });
3073
3080
  ot.prototype.copy.call(L, M), L.color.copy(M.color), L.map = M.map, M = L;
3074
3081
  }
3075
3082
  }
3076
- M === void 0 && (d ? M = new it() : h ? M = new et({ size: 1, sizeAttenuation: !1 }) : M = new Bn(), M.name = y.name, M.flatShading = !y.smooth, M.vertexColors = m, t.materials[S] = M), f.push(M);
3083
+ M === void 0 && (h ? M = new it() : d ? M = new et({ size: 1, sizeAttenuation: !1 }) : M = new Zn(), M.name = y.name, M.flatShading = !y.smooth, M.vertexColors = g, t.materials[v] = M), m.push(M);
3077
3084
  }
3078
- let g;
3079
- if (f.length > 1) {
3080
- for (let x = 0, I = c.length; x < I; x++) {
3081
- const y = c[x];
3082
- p.addGroup(y.groupStart, y.groupCount, x);
3085
+ let p;
3086
+ if (m.length > 1) {
3087
+ for (let I = 0, x = c.length; I < x; I++) {
3088
+ const y = c[I];
3089
+ f.addGroup(y.groupStart, y.groupCount, I);
3083
3090
  }
3084
- d ? g = new Yt(p, f) : h ? g = new Tt(p, f) : g = new v(p, f);
3091
+ h ? p = new _t(f, m) : d ? p = new Tt(f, m) : p = new S(f, m);
3085
3092
  } else
3086
- d ? g = new Yt(p, f[0]) : h ? g = new Tt(p, f[0]) : g = new v(p, f[0]);
3087
- g.name = A.name, i.add(g);
3093
+ h ? p = new _t(f, m[0]) : d ? p = new Tt(f, m[0]) : p = new S(f, m[0]);
3094
+ p.name = A.name, i.add(p);
3088
3095
  }
3089
3096
  else if (t.vertices.length > 0) {
3090
3097
  const a = new et({ size: 1, sizeAttenuation: !1 }), l = new De();
@@ -3098,7 +3105,7 @@ class Jo extends as {
3098
3105
  function Us(r, e) {
3099
3106
  if (e === Xn)
3100
3107
  return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."), r;
3101
- if (e === _t || e === Vs) {
3108
+ if (e === $t || e === Vs) {
3102
3109
  let t = r.getIndex();
3103
3110
  if (t === null) {
3104
3111
  const o = [], a = r.getAttribute("position");
@@ -3110,7 +3117,7 @@ function Us(r, e) {
3110
3117
  return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."), r;
3111
3118
  }
3112
3119
  const n = t.count - 2, s = [];
3113
- if (e === _t)
3120
+ if (e === $t)
3114
3121
  for (let o = 1; o <= n; o++)
3115
3122
  s.push(t.getX(0)), s.push(t.getX(o)), s.push(t.getX(o + 1));
3116
3123
  else
@@ -3139,7 +3146,7 @@ function cn(r, e, t) {
3139
3146
  for (let n = 0; n < r.children.length; n++)
3140
3147
  cn(r.children[n], e.children[n], t);
3141
3148
  }
3142
- class Yo extends as {
3149
+ class Yo extends ls {
3143
3150
  /**
3144
3151
  * Constructs a new glTF loader.
3145
3152
  *
@@ -3312,7 +3319,7 @@ class Yo extends as {
3312
3319
  }
3313
3320
  if (i.extensionsUsed)
3314
3321
  for (let u = 0; u < i.extensionsUsed.length; ++u) {
3315
- const c = i.extensionsUsed[u], d = i.extensionsRequired || [];
3322
+ const c = i.extensionsUsed[u], h = i.extensionsRequired || [];
3316
3323
  switch (c) {
3317
3324
  case E.KHR_MATERIALS_UNLIT:
3318
3325
  o[c] = new er();
@@ -3327,7 +3334,7 @@ class Yo extends as {
3327
3334
  o[c] = new Cr();
3328
3335
  break;
3329
3336
  default:
3330
- d.indexOf(c) >= 0 && a[c] === void 0 && console.warn('THREE.GLTFLoader: Unknown extension "' + c + '".');
3337
+ h.indexOf(c) >= 0 && a[c] === void 0 && console.warn('THREE.GLTFLoader: Unknown extension "' + c + '".');
3331
3338
  }
3332
3339
  }
3333
3340
  A.setExtensions(o), A.setPlugins(a), A.parse(n, s);
@@ -3410,7 +3417,7 @@ class $o {
3410
3417
  if (s) return s;
3411
3418
  const i = t.json, l = ((i.extensions && i.extensions[this.name] || {}).lights || [])[e];
3412
3419
  let A;
3413
- const u = new Z(16777215);
3420
+ const u = new B(16777215);
3414
3421
  l.color !== void 0 && u.setRGB(l.color[0], l.color[1], l.color[2], Ae);
3415
3422
  const c = l.range !== void 0 ? l.range : 0;
3416
3423
  switch (l.type) {
@@ -3448,7 +3455,7 @@ class er {
3448
3455
  }
3449
3456
  extendParams(e, t, n) {
3450
3457
  const s = [];
3451
- e.color = new Z(1, 1, 1), e.opacity = 1;
3458
+ e.color = new B(1, 1, 1), e.opacity = 1;
3452
3459
  const i = t.pbrMetallicRoughness;
3453
3460
  if (i) {
3454
3461
  if (Array.isArray(i.baseColorFactor)) {
@@ -3524,7 +3531,7 @@ class or {
3524
3531
  const n = H(this.parser, e, this.name);
3525
3532
  if (n === null) return Promise.resolve();
3526
3533
  const s = [];
3527
- if (t.sheenColor = new Z(0, 0, 0), t.sheenRoughness = 0, t.sheen = 1, n.sheenColorFactor !== void 0) {
3534
+ if (t.sheenColor = new B(0, 0, 0), t.sheenRoughness = 0, t.sheen = 1, n.sheenColorFactor !== void 0) {
3528
3535
  const i = n.sheenColorFactor;
3529
3536
  t.sheenColor.setRGB(i[0], i[1], i[2], Ae);
3530
3537
  }
@@ -3558,7 +3565,7 @@ class ar {
3558
3565
  const s = [];
3559
3566
  t.thickness = n.thicknessFactor !== void 0 ? n.thicknessFactor : 0, n.thicknessTexture !== void 0 && s.push(this.parser.assignTexture(t, "thicknessMap", n.thicknessTexture)), t.attenuationDistance = n.attenuationDistance || 1 / 0;
3560
3567
  const i = n.attenuationColor || [1, 1, 1];
3561
- return t.attenuationColor = new Z().setRGB(i[0], i[1], i[2], Ae), Promise.all(s);
3568
+ return t.attenuationColor = new B().setRGB(i[0], i[1], i[2], Ae), Promise.all(s);
3562
3569
  }
3563
3570
  }
3564
3571
  class lr {
@@ -3586,7 +3593,7 @@ class Ar {
3586
3593
  const s = [];
3587
3594
  t.specularIntensity = n.specularFactor !== void 0 ? n.specularFactor : 1, n.specularTexture !== void 0 && s.push(this.parser.assignTexture(t, "specularIntensityMap", n.specularTexture));
3588
3595
  const i = n.specularColorFactor || [1, 1, 1];
3589
- return t.specularColor = new Z().setRGB(i[0], i[1], i[2], Ae), n.specularColorTexture !== void 0 && s.push(this.parser.assignTexture(t, "specularColorMap", n.specularColorTexture, he)), Promise.all(s);
3596
+ return t.specularColor = new B().setRGB(i[0], i[1], i[2], Ae), n.specularColorTexture !== void 0 && s.push(this.parser.assignTexture(t, "specularColorMap", n.specularColorTexture, he)), Promise.all(s);
3590
3597
  }
3591
3598
  }
3592
3599
  class cr {
@@ -3682,12 +3689,12 @@ class Hs {
3682
3689
  return null;
3683
3690
  }
3684
3691
  return i.then(function(a) {
3685
- const l = s.byteOffset || 0, A = s.byteLength || 0, u = s.count, c = s.byteStride, d = new Uint8Array(a, l, A);
3686
- return o.decodeGltfBufferAsync ? o.decodeGltfBufferAsync(u, c, d, s.mode, s.filter).then(function(h) {
3687
- return h.buffer;
3692
+ const l = s.byteOffset || 0, A = s.byteLength || 0, u = s.count, c = s.byteStride, h = new Uint8Array(a, l, A);
3693
+ return o.decodeGltfBufferAsync ? o.decodeGltfBufferAsync(u, c, h, s.mode, s.filter).then(function(d) {
3694
+ return d.buffer;
3688
3695
  }) : o.ready.then(function() {
3689
- const h = new ArrayBuffer(u * c);
3690
- return o.decodeGltfBuffer(new Uint8Array(h), u, c, d, s.mode, s.filter), h;
3696
+ const d = new ArrayBuffer(u * c);
3697
+ return o.decodeGltfBuffer(new Uint8Array(d), u, c, h, s.mode, s.filter), d;
3691
3698
  });
3692
3699
  });
3693
3700
  } else
@@ -3710,19 +3717,19 @@ class pr {
3710
3717
  for (const A in o)
3711
3718
  a.push(this.parser.getDependency("accessor", o[A]).then((u) => (l[A] = u, l[A])));
3712
3719
  return a.length < 1 ? null : (a.push(this.parser.createNodeMesh(e)), Promise.all(a).then((A) => {
3713
- const u = A.pop(), c = u.isGroup ? u.children : [u], d = A[0].count, h = [];
3714
- for (const m of c) {
3715
- const p = new fe(), f = new T(), g = new J(), x = new T(1, 1, 1), I = new Qn(m.geometry, m.material, d);
3716
- for (let y = 0; y < d; y++)
3717
- l.TRANSLATION && f.fromBufferAttribute(l.TRANSLATION, y), l.ROTATION && g.fromBufferAttribute(l.ROTATION, y), l.SCALE && x.fromBufferAttribute(l.SCALE, y), I.setMatrixAt(y, p.compose(f, g, x));
3720
+ const u = A.pop(), c = u.isGroup ? u.children : [u], h = A[0].count, d = [];
3721
+ for (const g of c) {
3722
+ const f = new fe(), m = new T(), p = new J(), I = new T(1, 1, 1), x = new Qn(g.geometry, g.material, h);
3723
+ for (let y = 0; y < h; y++)
3724
+ l.TRANSLATION && m.fromBufferAttribute(l.TRANSLATION, y), l.ROTATION && p.fromBufferAttribute(l.ROTATION, y), l.SCALE && I.fromBufferAttribute(l.SCALE, y), x.setMatrixAt(y, f.compose(m, p, I));
3718
3725
  for (const y in l)
3719
3726
  if (y === "_COLOR_0") {
3720
- const S = l[y];
3721
- I.instanceColor = new Yn(S.array, S.itemSize, S.normalized);
3722
- } else y !== "TRANSLATION" && y !== "ROTATION" && y !== "SCALE" && m.geometry.setAttribute(y, l[y]);
3723
- Be.prototype.copy.call(I, m), this.parser.assignFinalMaterial(I), h.push(I);
3727
+ const v = l[y];
3728
+ x.instanceColor = new Yn(v.array, v.itemSize, v.normalized);
3729
+ } else y !== "TRANSLATION" && y !== "ROTATION" && y !== "SCALE" && g.geometry.setAttribute(y, l[y]);
3730
+ Ze.prototype.copy.call(x, g), this.parser.assignFinalMaterial(x), d.push(x);
3724
3731
  }
3725
- return u.isGroup ? (u.clear(), u.add(...h), u) : h[0];
3732
+ return u.isGroup ? (u.clear(), u.add(...d), u) : d[0];
3726
3733
  }));
3727
3734
  }
3728
3735
  }
@@ -3767,25 +3774,25 @@ class gr {
3767
3774
  decodePrimitive(e, t) {
3768
3775
  const n = this.json, s = this.dracoLoader, i = e.extensions[this.name].bufferView, o = e.extensions[this.name].attributes, a = {}, l = {}, A = {};
3769
3776
  for (const u in o) {
3770
- const c = is[u] || u.toLowerCase();
3777
+ const c = os[u] || u.toLowerCase();
3771
3778
  a[c] = o[u];
3772
3779
  }
3773
3780
  for (const u in e.attributes) {
3774
- const c = is[u] || u.toLowerCase();
3781
+ const c = os[u] || u.toLowerCase();
3775
3782
  if (o[u] !== void 0) {
3776
- const d = n.accessors[e.attributes[u]], h = Ze[d.componentType];
3777
- A[c] = h.name, l[c] = d.normalized === !0;
3783
+ const h = n.accessors[e.attributes[u]], d = Be[h.componentType];
3784
+ A[c] = d.name, l[c] = h.normalized === !0;
3778
3785
  }
3779
3786
  }
3780
3787
  return t.getDependency("bufferView", i).then(function(u) {
3781
- return new Promise(function(c, d) {
3782
- s.decodeDracoFile(u, function(h) {
3783
- for (const m in h.attributes) {
3784
- const p = h.attributes[m], f = l[m];
3785
- f !== void 0 && (p.normalized = f);
3788
+ return new Promise(function(c, h) {
3789
+ s.decodeDracoFile(u, function(d) {
3790
+ for (const g in d.attributes) {
3791
+ const f = d.attributes[g], m = l[g];
3792
+ m !== void 0 && (f.normalized = m);
3786
3793
  }
3787
- c(h);
3788
- }, a, A, Ae, d);
3794
+ c(d);
3795
+ }, a, A, Ae, h);
3789
3796
  });
3790
3797
  });
3791
3798
  }
@@ -3814,10 +3821,10 @@ class dn extends fi {
3814
3821
  return t;
3815
3822
  }
3816
3823
  interpolate_(e, t, n, s) {
3817
- const i = this.resultBuffer, o = this.sampleValues, a = this.valueSize, l = a * 2, A = a * 3, u = s - t, c = (n - t) / u, d = c * c, h = d * c, m = e * A, p = m - A, f = -2 * h + 3 * d, g = h - d, x = 1 - f, I = g - d + c;
3824
+ const i = this.resultBuffer, o = this.sampleValues, a = this.valueSize, l = a * 2, A = a * 3, u = s - t, c = (n - t) / u, h = c * c, d = h * c, g = e * A, f = g - A, m = -2 * d + 3 * h, p = d - h, I = 1 - m, x = p - h + c;
3818
3825
  for (let y = 0; y !== a; y++) {
3819
- const S = o[p + y + a], M = o[p + y + l] * u, L = o[m + y + a], Q = o[m + y] * u;
3820
- i[y] = x * S + I * M + f * L + g * Q;
3826
+ const v = o[f + y + a], M = o[f + y + l] * u, L = o[g + y + a], Q = o[g + y] * u;
3827
+ i[y] = I * v + x * M + m * L + p * Q;
3821
3828
  }
3822
3829
  return i;
3823
3830
  }
@@ -3837,7 +3844,7 @@ const se = {
3837
3844
  TRIANGLES: 4,
3838
3845
  TRIANGLE_STRIP: 5,
3839
3846
  TRIANGLE_FAN: 6
3840
- }, Ze = {
3847
+ }, Be = {
3841
3848
  5120: Int8Array,
3842
3849
  5121: Uint8Array,
3843
3850
  5122: Int16Array,
@@ -3846,7 +3853,7 @@ const se = {
3846
3853
  5126: Float32Array
3847
3854
  }, Gs = {
3848
3855
  9728: _s,
3849
- 9729: $t,
3856
+ 9729: es,
3850
3857
  9984: si,
3851
3858
  9985: ti,
3852
3859
  9986: ei,
@@ -3854,7 +3861,7 @@ const se = {
3854
3861
  }, Ks = {
3855
3862
  33071: ii,
3856
3863
  33648: ni,
3857
- 10497: es
3864
+ 10497: ts
3858
3865
  }, Zt = {
3859
3866
  SCALAR: 1,
3860
3867
  VEC2: 2,
@@ -3863,7 +3870,7 @@ const se = {
3863
3870
  MAT2: 4,
3864
3871
  MAT3: 9,
3865
3872
  MAT4: 16
3866
- }, is = {
3873
+ }, os = {
3867
3874
  POSITION: "position",
3868
3875
  NORMAL: "normal",
3869
3876
  TANGENT: "tangent",
@@ -3885,7 +3892,7 @@ const se = {
3885
3892
  // keyframe track will be initialized with a default interpolation type, then modified.
3886
3893
  LINEAR: en,
3887
3894
  STEP: di
3888
- }, Bt = {
3895
+ }, Xt = {
3889
3896
  OPAQUE: "OPAQUE",
3890
3897
  MASK: "MASK",
3891
3898
  BLEND: "BLEND"
@@ -3901,7 +3908,7 @@ function vr(r) {
3901
3908
  side: hi
3902
3909
  })), r.DefaultMaterial;
3903
3910
  }
3904
- function Me(r, e, t) {
3911
+ function we(r, e, t) {
3905
3912
  for (const n in t.extensions)
3906
3913
  r[n] === void 0 && (e.userData.gltfExtensions = e.userData.gltfExtensions || {}, e.userData.gltfExtensions[n] = t.extensions[n]);
3907
3914
  }
@@ -3919,16 +3926,16 @@ function Sr(r, e, t) {
3919
3926
  for (let A = 0, u = e.length; A < u; A++) {
3920
3927
  const c = e[A];
3921
3928
  if (n) {
3922
- const d = c.POSITION !== void 0 ? t.getDependency("accessor", c.POSITION) : r.attributes.position;
3923
- o.push(d);
3929
+ const h = c.POSITION !== void 0 ? t.getDependency("accessor", c.POSITION) : r.attributes.position;
3930
+ o.push(h);
3924
3931
  }
3925
3932
  if (s) {
3926
- const d = c.NORMAL !== void 0 ? t.getDependency("accessor", c.NORMAL) : r.attributes.normal;
3927
- a.push(d);
3933
+ const h = c.NORMAL !== void 0 ? t.getDependency("accessor", c.NORMAL) : r.attributes.normal;
3934
+ a.push(h);
3928
3935
  }
3929
3936
  if (i) {
3930
- const d = c.COLOR_0 !== void 0 ? t.getDependency("accessor", c.COLOR_0) : r.attributes.color;
3931
- l.push(d);
3937
+ const h = c.COLOR_0 !== void 0 ? t.getDependency("accessor", c.COLOR_0) : r.attributes.color;
3938
+ l.push(h);
3932
3939
  }
3933
3940
  }
3934
3941
  return Promise.all([
@@ -3936,8 +3943,8 @@ function Sr(r, e, t) {
3936
3943
  Promise.all(a),
3937
3944
  Promise.all(l)
3938
3945
  ]).then(function(A) {
3939
- const u = A[0], c = A[1], d = A[2];
3940
- return n && (r.morphAttributes.position = u), s && (r.morphAttributes.normal = c), i && (r.morphAttributes.color = d), r.morphTargetsRelative = !0, r;
3946
+ const u = A[0], c = A[1], h = A[2];
3947
+ return n && (r.morphAttributes.position = u), s && (r.morphAttributes.normal = c), i && (r.morphAttributes.color = h), r.morphTargetsRelative = !0, r;
3941
3948
  });
3942
3949
  }
3943
3950
  function Tr(r, e) {
@@ -3957,19 +3964,19 @@ function Tr(r, e) {
3957
3964
  function Mr(r) {
3958
3965
  let e;
3959
3966
  const t = r.extensions && r.extensions[E.KHR_DRACO_MESH_COMPRESSION];
3960
- if (t ? e = "draco:" + t.bufferView + ":" + t.indices + ":" + Xt(t.attributes) : e = r.indices + ":" + Xt(r.attributes) + ":" + r.mode, r.targets !== void 0)
3967
+ if (t ? e = "draco:" + t.bufferView + ":" + t.indices + ":" + qt(t.attributes) : e = r.indices + ":" + qt(r.attributes) + ":" + r.mode, r.targets !== void 0)
3961
3968
  for (let n = 0, s = r.targets.length; n < s; n++)
3962
- e += ":" + Xt(r.targets[n]);
3969
+ e += ":" + qt(r.targets[n]);
3963
3970
  return e;
3964
3971
  }
3965
- function Xt(r) {
3972
+ function qt(r) {
3966
3973
  let e = "";
3967
3974
  const t = Object.keys(r).sort();
3968
3975
  for (let n = 0, s = t.length; n < s; n++)
3969
3976
  e += t[n] + ":" + r[t[n]] + ";";
3970
3977
  return e;
3971
3978
  }
3972
- function os(r) {
3979
+ function rs(r) {
3973
3980
  switch (r) {
3974
3981
  case Int8Array:
3975
3982
  return 1 / 127;
@@ -4027,7 +4034,7 @@ class Er {
4027
4034
  parser: n,
4028
4035
  userData: {}
4029
4036
  };
4030
- return Me(i, a, s), ae(a, s), Promise.all(n._invokeAll(function(l) {
4037
+ return we(i, a, s), ae(a, s), Promise.all(n._invokeAll(function(l) {
4031
4038
  return l.afterRoot && l.afterRoot(a);
4032
4039
  })).then(function() {
4033
4040
  for (const l of a.scenes)
@@ -4237,29 +4244,29 @@ class Er {
4237
4244
  loadAccessor(e) {
4238
4245
  const t = this, n = this.json, s = this.json.accessors[e];
4239
4246
  if (s.bufferView === void 0 && s.sparse === void 0) {
4240
- const o = Zt[s.type], a = Ze[s.componentType], l = s.normalized === !0, A = new a(s.count * o);
4247
+ const o = Zt[s.type], a = Be[s.componentType], l = s.normalized === !0, A = new a(s.count * o);
4241
4248
  return Promise.resolve(new at(A, o, l));
4242
4249
  }
4243
4250
  const i = [];
4244
4251
  return s.bufferView !== void 0 ? i.push(this.getDependency("bufferView", s.bufferView)) : i.push(null), s.sparse !== void 0 && (i.push(this.getDependency("bufferView", s.sparse.indices.bufferView)), i.push(this.getDependency("bufferView", s.sparse.values.bufferView))), Promise.all(i).then(function(o) {
4245
- const a = o[0], l = Zt[s.type], A = Ze[s.componentType], u = A.BYTES_PER_ELEMENT, c = u * l, d = s.byteOffset || 0, h = s.bufferView !== void 0 ? n.bufferViews[s.bufferView].byteStride : void 0, m = s.normalized === !0;
4246
- let p, f;
4247
- if (h && h !== c) {
4248
- const g = Math.floor(d / h), x = "InterleavedBuffer:" + s.bufferView + ":" + s.componentType + ":" + g + ":" + s.count;
4249
- let I = t.cache.get(x);
4250
- I || (p = new A(a, g * h, s.count * h / u), I = new Js(p, h / u), t.cache.add(x, I)), f = new Qs(I, l, d % h / u, m);
4252
+ const a = o[0], l = Zt[s.type], A = Be[s.componentType], u = A.BYTES_PER_ELEMENT, c = u * l, h = s.byteOffset || 0, d = s.bufferView !== void 0 ? n.bufferViews[s.bufferView].byteStride : void 0, g = s.normalized === !0;
4253
+ let f, m;
4254
+ if (d && d !== c) {
4255
+ const p = Math.floor(h / d), I = "InterleavedBuffer:" + s.bufferView + ":" + s.componentType + ":" + p + ":" + s.count;
4256
+ let x = t.cache.get(I);
4257
+ x || (f = new A(a, p * d, s.count * d / u), x = new Js(f, d / u), t.cache.add(I, x)), m = new Qs(x, l, h % d / u, g);
4251
4258
  } else
4252
- a === null ? p = new A(s.count * l) : p = new A(a, d, s.count * l), f = new at(p, l, m);
4259
+ a === null ? f = new A(s.count * l) : f = new A(a, h, s.count * l), m = new at(f, l, g);
4253
4260
  if (s.sparse !== void 0) {
4254
- const g = Zt.SCALAR, x = Ze[s.sparse.indices.componentType], I = s.sparse.indices.byteOffset || 0, y = s.sparse.values.byteOffset || 0, S = new x(o[1], I, s.sparse.count * g), M = new A(o[2], y, s.sparse.count * l);
4255
- a !== null && (f = new at(f.array.slice(), f.itemSize, f.normalized)), f.normalized = !1;
4256
- for (let L = 0, Q = S.length; L < Q; L++) {
4257
- const $ = S[L];
4258
- if (f.setX($, M[L * l]), l >= 2 && f.setY($, M[L * l + 1]), l >= 3 && f.setZ($, M[L * l + 2]), l >= 4 && f.setW($, M[L * l + 3]), l >= 5) throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.");
4261
+ const p = Zt.SCALAR, I = Be[s.sparse.indices.componentType], x = s.sparse.indices.byteOffset || 0, y = s.sparse.values.byteOffset || 0, v = new I(o[1], x, s.sparse.count * p), M = new A(o[2], y, s.sparse.count * l);
4262
+ a !== null && (m = new at(m.array.slice(), m.itemSize, m.normalized)), m.normalized = !1;
4263
+ for (let L = 0, Q = v.length; L < Q; L++) {
4264
+ const $ = v[L];
4265
+ if (m.setX($, M[L * l]), l >= 2 && m.setY($, M[L * l + 1]), l >= 3 && m.setZ($, M[L * l + 2]), l >= 4 && m.setW($, M[L * l + 3]), l >= 5) throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.");
4259
4266
  }
4260
- f.normalized = m;
4267
+ m.normalized = g;
4261
4268
  }
4262
- return f;
4269
+ return m;
4263
4270
  });
4264
4271
  }
4265
4272
  /**
@@ -4284,8 +4291,8 @@ class Er {
4284
4291
  return this.textureCache[l];
4285
4292
  const A = this.loadImageSource(t, n).then(function(u) {
4286
4293
  u.flipY = !1, u.name = o.name || a.name || "", u.name === "" && typeof a.uri == "string" && a.uri.startsWith("data:image/") === !1 && (u.name = a.uri);
4287
- const d = (i.samplers || {})[o.sampler] || {};
4288
- return u.magFilter = Gs[d.magFilter] || $t, u.minFilter = Gs[d.minFilter] || Ys, u.wrapS = Ks[d.wrapS] || es, u.wrapT = Ks[d.wrapT] || es, u.generateMipmaps = !u.isCompressedTexture && u.minFilter !== _s && u.minFilter !== $t, s.associations.set(u, { textures: e }), u;
4294
+ const h = (i.samplers || {})[o.sampler] || {};
4295
+ return u.magFilter = Gs[h.magFilter] || es, u.minFilter = Gs[h.minFilter] || Ys, u.wrapS = Ks[h.wrapS] || ts, u.wrapT = Ks[h.wrapT] || ts, u.generateMipmaps = !u.isCompressedTexture && u.minFilter !== _s && u.minFilter !== es, s.associations.set(u, { textures: e }), u;
4289
4296
  }).catch(function() {
4290
4297
  return null;
4291
4298
  });
@@ -4300,18 +4307,18 @@ class Er {
4300
4307
  if (o.bufferView !== void 0)
4301
4308
  l = n.getDependency("bufferView", o.bufferView).then(function(c) {
4302
4309
  A = !0;
4303
- const d = new Blob([c], { type: o.mimeType });
4304
- return l = a.createObjectURL(d), l;
4310
+ const h = new Blob([c], { type: o.mimeType });
4311
+ return l = a.createObjectURL(h), l;
4305
4312
  });
4306
4313
  else if (o.uri === void 0)
4307
4314
  throw new Error("THREE.GLTFLoader: Image " + e + " is missing URI and bufferView");
4308
4315
  const u = Promise.resolve(l).then(function(c) {
4309
- return new Promise(function(d, h) {
4310
- let m = d;
4311
- t.isImageBitmapLoader === !0 && (m = function(p) {
4312
- const f = new gs(p);
4313
- f.needsUpdate = !0, d(f);
4314
- }), t.load(rt.resolveURL(c, i.path), m, void 0, h);
4316
+ return new Promise(function(h, d) {
4317
+ let g = h;
4318
+ t.isImageBitmapLoader === !0 && (g = function(f) {
4319
+ const m = new gs(f);
4320
+ m.needsUpdate = !0, h(m);
4321
+ }), t.load(rt.resolveURL(c, i.path), g, void 0, d);
4315
4322
  });
4316
4323
  }).then(function(c) {
4317
4324
  return A === !0 && a.revokeObjectURL(l), ae(c, o), c.userData.mimeType = o.mimeType || wr(o.uri), c;
@@ -4394,29 +4401,29 @@ class Er {
4394
4401
  o = c.getMaterialType(), A.push(c.extendParams(a, i, t));
4395
4402
  } else {
4396
4403
  const c = i.pbrMetallicRoughness || {};
4397
- if (a.color = new Z(1, 1, 1), a.opacity = 1, Array.isArray(c.baseColorFactor)) {
4398
- const d = c.baseColorFactor;
4399
- a.color.setRGB(d[0], d[1], d[2], Ae), a.opacity = d[3];
4404
+ if (a.color = new B(1, 1, 1), a.opacity = 1, Array.isArray(c.baseColorFactor)) {
4405
+ const h = c.baseColorFactor;
4406
+ a.color.setRGB(h[0], h[1], h[2], Ae), a.opacity = h[3];
4400
4407
  }
4401
- c.baseColorTexture !== void 0 && A.push(t.assignTexture(a, "map", c.baseColorTexture, he)), a.metalness = c.metallicFactor !== void 0 ? c.metallicFactor : 1, a.roughness = c.roughnessFactor !== void 0 ? c.roughnessFactor : 1, c.metallicRoughnessTexture !== void 0 && (A.push(t.assignTexture(a, "metalnessMap", c.metallicRoughnessTexture)), A.push(t.assignTexture(a, "roughnessMap", c.metallicRoughnessTexture))), o = this._invokeOne(function(d) {
4402
- return d.getMaterialType && d.getMaterialType(e);
4403
- }), A.push(Promise.all(this._invokeAll(function(d) {
4404
- return d.extendMaterialParams && d.extendMaterialParams(e, a);
4408
+ c.baseColorTexture !== void 0 && A.push(t.assignTexture(a, "map", c.baseColorTexture, he)), a.metalness = c.metallicFactor !== void 0 ? c.metallicFactor : 1, a.roughness = c.roughnessFactor !== void 0 ? c.roughnessFactor : 1, c.metallicRoughnessTexture !== void 0 && (A.push(t.assignTexture(a, "metalnessMap", c.metallicRoughnessTexture)), A.push(t.assignTexture(a, "roughnessMap", c.metallicRoughnessTexture))), o = this._invokeOne(function(h) {
4409
+ return h.getMaterialType && h.getMaterialType(e);
4410
+ }), A.push(Promise.all(this._invokeAll(function(h) {
4411
+ return h.extendMaterialParams && h.extendMaterialParams(e, a);
4405
4412
  })));
4406
4413
  }
4407
4414
  i.doubleSided === !0 && (a.side = kt);
4408
- const u = i.alphaMode || Bt.OPAQUE;
4409
- if (u === Bt.BLEND ? (a.transparent = !0, a.depthWrite = !1) : (a.transparent = !1, u === Bt.MASK && (a.alphaTest = i.alphaCutoff !== void 0 ? i.alphaCutoff : 0.5)), i.normalTexture !== void 0 && o !== Ne && (A.push(t.assignTexture(a, "normalMap", i.normalTexture)), a.normalScale = new F(1, 1), i.normalTexture.scale !== void 0)) {
4415
+ const u = i.alphaMode || Xt.OPAQUE;
4416
+ if (u === Xt.BLEND ? (a.transparent = !0, a.depthWrite = !1) : (a.transparent = !1, u === Xt.MASK && (a.alphaTest = i.alphaCutoff !== void 0 ? i.alphaCutoff : 0.5)), i.normalTexture !== void 0 && o !== Ne && (A.push(t.assignTexture(a, "normalMap", i.normalTexture)), a.normalScale = new F(1, 1), i.normalTexture.scale !== void 0)) {
4410
4417
  const c = i.normalTexture.scale;
4411
4418
  a.normalScale.set(c, c);
4412
4419
  }
4413
4420
  if (i.occlusionTexture !== void 0 && o !== Ne && (A.push(t.assignTexture(a, "aoMap", i.occlusionTexture)), i.occlusionTexture.strength !== void 0 && (a.aoMapIntensity = i.occlusionTexture.strength)), i.emissiveFactor !== void 0 && o !== Ne) {
4414
4421
  const c = i.emissiveFactor;
4415
- a.emissive = new Z().setRGB(c[0], c[1], c[2], Ae);
4422
+ a.emissive = new B().setRGB(c[0], c[1], c[2], Ae);
4416
4423
  }
4417
4424
  return i.emissiveTexture !== void 0 && o !== Ne && A.push(t.assignTexture(a, "emissiveMap", i.emissiveTexture, he)), Promise.all(A).then(function() {
4418
4425
  const c = new o(a);
4419
- return i.name && (c.name = i.name), ae(c, i), t.associations.set(c, { materials: e }), i.extensions && Me(s, c, i), c;
4426
+ return i.name && (c.name = i.name), ae(c, i), t.associations.set(c, { materials: e }), i.extensions && we(s, c, i), c;
4420
4427
  });
4421
4428
  }
4422
4429
  /**
@@ -4443,7 +4450,7 @@ class Er {
4443
4450
  const t = this, n = this.extensions, s = this.primitiveCache;
4444
4451
  function i(a) {
4445
4452
  return n[E.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(a, t).then(function(l) {
4446
- return Zs(l, a, t);
4453
+ return Bs(l, a, t);
4447
4454
  });
4448
4455
  }
4449
4456
  const o = [];
@@ -4452,8 +4459,8 @@ class Er {
4452
4459
  if (c)
4453
4460
  o.push(c.promise);
4454
4461
  else {
4455
- let d;
4456
- A.extensions && A.extensions[E.KHR_DRACO_MESH_COMPRESSION] ? d = i(A) : d = Zs(new De(), A, t), s[u] = { primitive: A, promise: d }, o.push(d);
4462
+ let h;
4463
+ A.extensions && A.extensions[E.KHR_DRACO_MESH_COMPRESSION] ? h = i(A) : h = Bs(new De(), A, t), s[u] = { primitive: A, promise: h }, o.push(h);
4457
4464
  }
4458
4465
  }
4459
4466
  return Promise.all(o);
@@ -4473,36 +4480,36 @@ class Er {
4473
4480
  }
4474
4481
  return a.push(t.loadGeometries(o)), Promise.all(a).then(function(l) {
4475
4482
  const A = l.slice(0, l.length - 1), u = l[l.length - 1], c = [];
4476
- for (let h = 0, m = u.length; h < m; h++) {
4477
- const p = u[h], f = o[h];
4478
- let g;
4479
- const x = A[h];
4480
- if (f.mode === se.TRIANGLES || f.mode === se.TRIANGLE_STRIP || f.mode === se.TRIANGLE_FAN || f.mode === void 0)
4481
- g = i.isSkinnedMesh === !0 ? new ri(p, x) : new v(p, x), g.isSkinnedMesh === !0 && g.normalizeSkinWeights(), f.mode === se.TRIANGLE_STRIP ? g.geometry = Us(g.geometry, Vs) : f.mode === se.TRIANGLE_FAN && (g.geometry = Us(g.geometry, _t));
4482
- else if (f.mode === se.LINES)
4483
- g = new Yt(p, x);
4484
- else if (f.mode === se.LINE_STRIP)
4485
- g = new de(p, x);
4486
- else if (f.mode === se.LINE_LOOP)
4487
- g = new ai(p, x);
4488
- else if (f.mode === se.POINTS)
4489
- g = new Tt(p, x);
4483
+ for (let d = 0, g = u.length; d < g; d++) {
4484
+ const f = u[d], m = o[d];
4485
+ let p;
4486
+ const I = A[d];
4487
+ if (m.mode === se.TRIANGLES || m.mode === se.TRIANGLE_STRIP || m.mode === se.TRIANGLE_FAN || m.mode === void 0)
4488
+ p = i.isSkinnedMesh === !0 ? new ri(f, I) : new S(f, I), p.isSkinnedMesh === !0 && p.normalizeSkinWeights(), m.mode === se.TRIANGLE_STRIP ? p.geometry = Us(p.geometry, Vs) : m.mode === se.TRIANGLE_FAN && (p.geometry = Us(p.geometry, $t));
4489
+ else if (m.mode === se.LINES)
4490
+ p = new _t(f, I);
4491
+ else if (m.mode === se.LINE_STRIP)
4492
+ p = new de(f, I);
4493
+ else if (m.mode === se.LINE_LOOP)
4494
+ p = new ai(f, I);
4495
+ else if (m.mode === se.POINTS)
4496
+ p = new Tt(f, I);
4490
4497
  else
4491
- throw new Error("THREE.GLTFLoader: Primitive mode unsupported: " + f.mode);
4492
- Object.keys(g.geometry.morphAttributes).length > 0 && Tr(g, i), g.name = t.createUniqueName(i.name || "mesh_" + e), ae(g, i), f.extensions && Me(s, g, f), t.assignFinalMaterial(g), c.push(g);
4498
+ throw new Error("THREE.GLTFLoader: Primitive mode unsupported: " + m.mode);
4499
+ Object.keys(p.geometry.morphAttributes).length > 0 && Tr(p, i), p.name = t.createUniqueName(i.name || "mesh_" + e), ae(p, i), m.extensions && we(s, p, m), t.assignFinalMaterial(p), c.push(p);
4493
4500
  }
4494
- for (let h = 0, m = c.length; h < m; h++)
4495
- t.associations.set(c[h], {
4501
+ for (let d = 0, g = c.length; d < g; d++)
4502
+ t.associations.set(c[d], {
4496
4503
  meshes: e,
4497
- primitives: h
4504
+ primitives: d
4498
4505
  });
4499
4506
  if (c.length === 1)
4500
- return i.extensions && Me(s, c[0], i), c[0];
4501
- const d = new St();
4502
- i.extensions && Me(s, d, i), t.associations.set(d, { meshes: e });
4503
- for (let h = 0, m = c.length; h < m; h++)
4504
- d.add(c[h]);
4505
- return d;
4507
+ return i.extensions && we(s, c[0], i), c[0];
4508
+ const h = new St();
4509
+ i.extensions && we(s, h, i), t.associations.set(h, { meshes: e });
4510
+ for (let d = 0, g = c.length; d < g; d++)
4511
+ h.add(c[d]);
4512
+ return h;
4506
4513
  });
4507
4514
  }
4508
4515
  /**
@@ -4538,8 +4545,8 @@ class Er {
4538
4545
  const c = o[A];
4539
4546
  if (c) {
4540
4547
  a.push(c);
4541
- const d = new fe();
4542
- i !== null && d.fromArray(i.array, A * 16), l.push(d);
4548
+ const h = new fe();
4549
+ i !== null && h.fromArray(i.array, A * 16), l.push(h);
4543
4550
  } else
4544
4551
  console.warn('THREE.GLTFLoader: Joint "%s" could not be found.', t.joints[A]);
4545
4552
  }
@@ -4555,9 +4562,9 @@ class Er {
4555
4562
  */
4556
4563
  loadAnimation(e) {
4557
4564
  const t = this.json, n = this, s = t.animations[e], i = s.name ? s.name : "animation_" + e, o = [], a = [], l = [], A = [], u = [];
4558
- for (let c = 0, d = s.channels.length; c < d; c++) {
4559
- const h = s.channels[c], m = s.samplers[h.sampler], p = h.target, f = p.node, g = s.parameters !== void 0 ? s.parameters[m.input] : m.input, x = s.parameters !== void 0 ? s.parameters[m.output] : m.output;
4560
- p.node !== void 0 && (o.push(this.getDependency("node", f)), a.push(this.getDependency("accessor", g)), l.push(this.getDependency("accessor", x)), A.push(m), u.push(p));
4565
+ for (let c = 0, h = s.channels.length; c < h; c++) {
4566
+ const d = s.channels[c], g = s.samplers[d.sampler], f = d.target, m = f.node, p = s.parameters !== void 0 ? s.parameters[g.input] : g.input, I = s.parameters !== void 0 ? s.parameters[g.output] : g.output;
4567
+ f.node !== void 0 && (o.push(this.getDependency("node", m)), a.push(this.getDependency("accessor", p)), l.push(this.getDependency("accessor", I)), A.push(g), u.push(f));
4561
4568
  }
4562
4569
  return Promise.all([
4563
4570
  Promise.all(o),
@@ -4566,18 +4573,18 @@ class Er {
4566
4573
  Promise.all(A),
4567
4574
  Promise.all(u)
4568
4575
  ]).then(function(c) {
4569
- const d = c[0], h = c[1], m = c[2], p = c[3], f = c[4], g = [];
4570
- for (let I = 0, y = d.length; I < y; I++) {
4571
- const S = d[I], M = h[I], L = m[I], Q = p[I], $ = f[I];
4572
- if (S === void 0) continue;
4573
- S.updateMatrix && S.updateMatrix();
4574
- const Y = n._createAnimationTracks(S, M, L, Q, $);
4576
+ const h = c[0], d = c[1], g = c[2], f = c[3], m = c[4], p = [];
4577
+ for (let x = 0, y = h.length; x < y; x++) {
4578
+ const v = h[x], M = d[x], L = g[x], Q = f[x], $ = m[x];
4579
+ if (v === void 0) continue;
4580
+ v.updateMatrix && v.updateMatrix();
4581
+ const Y = n._createAnimationTracks(v, M, L, Q, $);
4575
4582
  if (Y)
4576
- for (let Se = 0; Se < Y.length; Se++)
4577
- g.push(Y[Se]);
4583
+ for (let Te = 0; Te < Y.length; Te++)
4584
+ p.push(Y[Te]);
4578
4585
  }
4579
- const x = new ci(i, void 0, g);
4580
- return ae(x, s), x;
4586
+ const I = new ci(i, void 0, p);
4587
+ return ae(I, s), I;
4581
4588
  });
4582
4589
  }
4583
4590
  createNodeMesh(e) {
@@ -4608,15 +4615,15 @@ class Er {
4608
4615
  Promise.all(o),
4609
4616
  l
4610
4617
  ]).then(function(A) {
4611
- const u = A[0], c = A[1], d = A[2];
4612
- d !== null && u.traverse(function(h) {
4613
- h.isSkinnedMesh && h.bind(d, Rr);
4618
+ const u = A[0], c = A[1], h = A[2];
4619
+ h !== null && u.traverse(function(d) {
4620
+ d.isSkinnedMesh && d.bind(h, Rr);
4614
4621
  });
4615
- for (let h = 0, m = c.length; h < m; h++)
4616
- u.add(c[h]);
4622
+ for (let d = 0, g = c.length; d < g; d++)
4623
+ u.add(c[d]);
4617
4624
  if (u.userData.pivot !== void 0 && c.length > 0) {
4618
- const h = u.userData.pivot, m = c[0];
4619
- u.pivot = new T().fromArray(h), u.position.x -= h[0], u.position.y -= h[1], u.position.z -= h[2], m.position.set(0, 0, 0), delete u.userData.pivot;
4625
+ const d = u.userData.pivot, g = c[0];
4626
+ u.pivot = new T().fromArray(d), u.position.x -= d[0], u.position.y -= d[1], u.position.z -= d[2], g.position.set(0, 0, 0), delete u.userData.pivot;
4620
4627
  }
4621
4628
  return u;
4622
4629
  });
@@ -4638,10 +4645,10 @@ class Er {
4638
4645
  a.push(A);
4639
4646
  }), this.nodeCache[e] = Promise.all(a).then(function(A) {
4640
4647
  let u;
4641
- if (i.isBone === !0 ? u = new ui() : A.length > 1 ? u = new St() : A.length === 1 ? u = A[0] : u = new Be(), u !== A[0])
4642
- for (let c = 0, d = A.length; c < d; c++)
4648
+ if (i.isBone === !0 ? u = new ui() : A.length > 1 ? u = new St() : A.length === 1 ? u = A[0] : u = new Ze(), u !== A[0])
4649
+ for (let c = 0, h = A.length; c < h; c++)
4643
4650
  u.add(A[c]);
4644
- if (i.name && (u.userData.name = i.name, u.name = o), ae(u, i), i.extensions && Me(n, u, i), i.matrix !== void 0) {
4651
+ if (i.name && (u.userData.name = i.name, u.name = o), ae(u, i), i.extensions && we(n, u, i), i.matrix !== void 0) {
4645
4652
  const c = new fe();
4646
4653
  c.fromArray(i.matrix), u.applyMatrix4(c);
4647
4654
  } else
@@ -4664,22 +4671,22 @@ class Er {
4664
4671
  */
4665
4672
  loadScene(e) {
4666
4673
  const t = this.extensions, n = this.json.scenes[e], s = this, i = new St();
4667
- n.name && (i.name = s.createUniqueName(n.name)), ae(i, n), n.extensions && Me(t, i, n);
4674
+ n.name && (i.name = s.createUniqueName(n.name)), ae(i, n), n.extensions && we(t, i, n);
4668
4675
  const o = n.nodes || [], a = [];
4669
4676
  for (let l = 0, A = o.length; l < A; l++)
4670
4677
  a.push(s.getDependency("node", o[l]));
4671
4678
  return Promise.all(a).then(function(l) {
4672
4679
  for (let u = 0, c = l.length; u < c; u++) {
4673
- const d = l[u];
4674
- d.parent !== null ? i.add(Qo(d)) : i.add(d);
4680
+ const h = l[u];
4681
+ h.parent !== null ? i.add(Qo(h)) : i.add(h);
4675
4682
  }
4676
4683
  const A = (u) => {
4677
4684
  const c = /* @__PURE__ */ new Map();
4678
- for (const [d, h] of s.associations)
4679
- (d instanceof ot || d instanceof gs) && c.set(d, h);
4680
- return u.traverse((d) => {
4681
- const h = s.associations.get(d);
4682
- h != null && c.set(d, h);
4685
+ for (const [h, d] of s.associations)
4686
+ (h instanceof ot || h instanceof gs) && c.set(h, d);
4687
+ return u.traverse((h) => {
4688
+ const d = s.associations.get(h);
4689
+ d != null && c.set(h, d);
4683
4690
  }), c;
4684
4691
  };
4685
4692
  return s.associations = A(i), i;
@@ -4687,8 +4694,8 @@ class Er {
4687
4694
  }
4688
4695
  _createAnimationTracks(e, t, n, s, i) {
4689
4696
  const o = [], a = e.name ? e.name : e.uuid, l = [];
4690
- function A(h) {
4691
- h.morphTargetInfluences && l.push(h.name ? h.name : h.uuid);
4697
+ function A(d) {
4698
+ d.morphTargetInfluences && l.push(d.name ? d.name : d.uuid);
4692
4699
  }
4693
4700
  me[i.path] === me.weights ? (A(e), e.isGroup && e.children.forEach(A)) : l.push(a);
4694
4701
  let u;
@@ -4716,22 +4723,22 @@ class Er {
4716
4723
  }
4717
4724
  break;
4718
4725
  }
4719
- const c = s.interpolation !== void 0 ? xr[s.interpolation] : en, d = this._getArrayFromAccessor(n);
4720
- for (let h = 0, m = l.length; h < m; h++) {
4721
- const p = new u(
4722
- l[h] + "." + me[i.path],
4726
+ const c = s.interpolation !== void 0 ? xr[s.interpolation] : en, h = this._getArrayFromAccessor(n);
4727
+ for (let d = 0, g = l.length; d < g; d++) {
4728
+ const f = new u(
4729
+ l[d] + "." + me[i.path],
4723
4730
  t.array,
4724
- d,
4731
+ h,
4725
4732
  c
4726
4733
  );
4727
- s.interpolation === "CUBICSPLINE" && this._createCubicSplineTrackInterpolant(p), o.push(p);
4734
+ s.interpolation === "CUBICSPLINE" && this._createCubicSplineTrackInterpolant(f), o.push(f);
4728
4735
  }
4729
4736
  return o;
4730
4737
  }
4731
4738
  _getArrayFromAccessor(e) {
4732
4739
  let t = e.array;
4733
4740
  if (e.normalized) {
4734
- const n = os(t.constructor), s = new Float32Array(t.length);
4741
+ const n = rs(t.constructor), s = new Float32Array(t.length);
4735
4742
  for (let i = 0, o = t.length; i < o; i++)
4736
4743
  s[i] = t[i] * n;
4737
4744
  t = s;
@@ -4754,7 +4761,7 @@ function kr(r, e, t) {
4754
4761
  new T(l[0], l[1], l[2]),
4755
4762
  new T(A[0], A[1], A[2])
4756
4763
  ), a.normalized) {
4757
- const u = os(Ze[a.componentType]);
4764
+ const u = rs(Be[a.componentType]);
4758
4765
  s.min.multiplyScalar(u), s.max.multiplyScalar(u);
4759
4766
  }
4760
4767
  } else {
@@ -4769,11 +4776,11 @@ function kr(r, e, t) {
4769
4776
  for (let A = 0, u = i.length; A < u; A++) {
4770
4777
  const c = i[A];
4771
4778
  if (c.POSITION !== void 0) {
4772
- const d = t.json.accessors[c.POSITION], h = d.min, m = d.max;
4773
- if (h !== void 0 && m !== void 0) {
4774
- if (l.setX(Math.max(Math.abs(h[0]), Math.abs(m[0]))), l.setY(Math.max(Math.abs(h[1]), Math.abs(m[1]))), l.setZ(Math.max(Math.abs(h[2]), Math.abs(m[2]))), d.normalized) {
4775
- const p = os(Ze[d.componentType]);
4776
- l.multiplyScalar(p);
4779
+ const h = t.json.accessors[c.POSITION], d = h.min, g = h.max;
4780
+ if (d !== void 0 && g !== void 0) {
4781
+ if (l.setX(Math.max(Math.abs(d[0]), Math.abs(g[0]))), l.setY(Math.max(Math.abs(d[1]), Math.abs(g[1]))), l.setZ(Math.max(Math.abs(d[2]), Math.abs(g[2]))), h.normalized) {
4782
+ const f = rs(Be[h.componentType]);
4783
+ l.multiplyScalar(f);
4777
4784
  }
4778
4785
  a.max(l);
4779
4786
  } else
@@ -4786,7 +4793,7 @@ function kr(r, e, t) {
4786
4793
  const o = new mi();
4787
4794
  s.getCenter(o.center), o.radius = s.min.distanceTo(s.max) / 2, r.boundingSphere = o;
4788
4795
  }
4789
- function Zs(r, e, t) {
4796
+ function Bs(r, e, t) {
4790
4797
  const n = e.attributes, s = [];
4791
4798
  function i(o, a) {
4792
4799
  return t.getDependency("accessor", o).then(function(l) {
@@ -4794,7 +4801,7 @@ function Zs(r, e, t) {
4794
4801
  });
4795
4802
  }
4796
4803
  for (const o in n) {
4797
- const a = is[o] || o.toLowerCase();
4804
+ const a = os[o] || o.toLowerCase();
4798
4805
  a in r.attributes || s.push(i(n[o], a));
4799
4806
  }
4800
4807
  if (e.indices !== void 0 && !r.index) {
@@ -4807,8 +4814,8 @@ function Zs(r, e, t) {
4807
4814
  return e.targets !== void 0 ? Sr(r, e.targets, t) : r;
4808
4815
  });
4809
4816
  }
4810
- const qt = /* @__PURE__ */ new WeakMap();
4811
- class Pr extends as {
4817
+ const Vt = /* @__PURE__ */ new WeakMap();
4818
+ class Pr extends ls {
4812
4819
  /**
4813
4820
  * Constructs a new Draco loader.
4814
4821
  *
@@ -4894,8 +4901,8 @@ class Pr extends as {
4894
4901
  }
4895
4902
  decodeGeometry(e, t) {
4896
4903
  const n = JSON.stringify(t);
4897
- if (qt.has(e)) {
4898
- const l = qt.get(e);
4904
+ if (Vt.has(e)) {
4905
+ const l = Vt.get(e);
4899
4906
  if (l.key === n)
4900
4907
  return l.promise;
4901
4908
  if (e.byteLength === 0)
@@ -4909,7 +4916,7 @@ class Pr extends as {
4909
4916
  }))).then((l) => this._createGeometry(l.geometry));
4910
4917
  return a.catch(() => !0).then(() => {
4911
4918
  s && i && this._releaseTask(s, i);
4912
- }), qt.set(e, {
4919
+ }), Vt.set(e, {
4913
4920
  key: n,
4914
4921
  promise: a
4915
4922
  }), a;
@@ -4932,7 +4939,7 @@ class Pr extends as {
4932
4939
  }
4933
4940
  _assignVertexColorSpace(e, t) {
4934
4941
  if (t !== he) return;
4935
- const n = new Z();
4942
+ const n = new B();
4936
4943
  for (let s = 0, i = e.count; s < i; s++)
4937
4944
  n.fromBufferAttribute(e, s), Pt.colorSpaceToWorking(n, he), e.setXYZ(s, n.r, n.g, n.b);
4938
4945
  }
@@ -5014,14 +5021,14 @@ function Lr() {
5014
5021
  case "decode":
5015
5022
  const l = a.buffer, A = a.taskConfig;
5016
5023
  e.then((u) => {
5017
- const c = u.draco, d = new c.Decoder();
5024
+ const c = u.draco, h = new c.Decoder();
5018
5025
  try {
5019
- const h = t(c, d, new Int8Array(l), A), m = h.attributes.map((p) => p.array.buffer);
5020
- h.index && m.push(h.index.array.buffer), self.postMessage({ type: "decode", id: a.id, geometry: h }, m);
5021
- } catch (h) {
5022
- console.error(h), self.postMessage({ type: "error", id: a.id, error: h.message });
5026
+ const d = t(c, h, new Int8Array(l), A), g = d.attributes.map((f) => f.array.buffer);
5027
+ d.index && g.push(d.index.array.buffer), self.postMessage({ type: "decode", id: a.id, geometry: d }, g);
5028
+ } catch (d) {
5029
+ console.error(d), self.postMessage({ type: "error", id: a.id, error: d.message });
5023
5030
  } finally {
5024
- c.destroy(d);
5031
+ c.destroy(h);
5025
5032
  }
5026
5033
  });
5027
5034
  break;
@@ -5029,59 +5036,59 @@ function Lr() {
5029
5036
  };
5030
5037
  function t(o, a, l, A) {
5031
5038
  const u = A.attributeIDs, c = A.attributeTypes;
5032
- let d, h;
5033
- const m = a.GetEncodedGeometryType(l);
5034
- if (m === o.TRIANGULAR_MESH)
5035
- d = new o.Mesh(), h = a.DecodeArrayToMesh(l, l.byteLength, d);
5036
- else if (m === o.POINT_CLOUD)
5037
- d = new o.PointCloud(), h = a.DecodeArrayToPointCloud(l, l.byteLength, d);
5039
+ let h, d;
5040
+ const g = a.GetEncodedGeometryType(l);
5041
+ if (g === o.TRIANGULAR_MESH)
5042
+ h = new o.Mesh(), d = a.DecodeArrayToMesh(l, l.byteLength, h);
5043
+ else if (g === o.POINT_CLOUD)
5044
+ h = new o.PointCloud(), d = a.DecodeArrayToPointCloud(l, l.byteLength, h);
5038
5045
  else
5039
5046
  throw new Error("THREE.DRACOLoader: Unexpected geometry type.");
5040
- if (!h.ok() || d.ptr === 0)
5041
- throw new Error("THREE.DRACOLoader: Decoding failed: " + h.error_msg());
5042
- const p = { index: null, attributes: [] };
5043
- for (const f in u) {
5044
- const g = self[c[f]];
5045
- let x, I;
5047
+ if (!d.ok() || h.ptr === 0)
5048
+ throw new Error("THREE.DRACOLoader: Decoding failed: " + d.error_msg());
5049
+ const f = { index: null, attributes: [] };
5050
+ for (const m in u) {
5051
+ const p = self[c[m]];
5052
+ let I, x;
5046
5053
  if (A.useUniqueIDs)
5047
- I = u[f], x = a.GetAttributeByUniqueId(d, I);
5054
+ x = u[m], I = a.GetAttributeByUniqueId(h, x);
5048
5055
  else {
5049
- if (I = a.GetAttributeId(d, o[u[f]]), I === -1) continue;
5050
- x = a.GetAttribute(d, I);
5056
+ if (x = a.GetAttributeId(h, o[u[m]]), x === -1) continue;
5057
+ I = a.GetAttribute(h, x);
5051
5058
  }
5052
- const y = s(o, a, d, f, g, x);
5053
- f === "color" && (y.vertexColorSpace = A.vertexColorSpace), p.attributes.push(y);
5059
+ const y = s(o, a, h, m, p, I);
5060
+ m === "color" && (y.vertexColorSpace = A.vertexColorSpace), f.attributes.push(y);
5054
5061
  }
5055
- return m === o.TRIANGULAR_MESH && (p.index = n(o, a, d)), o.destroy(d), p;
5062
+ return g === o.TRIANGULAR_MESH && (f.index = n(o, a, h)), o.destroy(h), f;
5056
5063
  }
5057
5064
  function n(o, a, l) {
5058
- const u = l.num_faces() * 3, c = u * 4, d = o._malloc(c);
5059
- a.GetTrianglesUInt32Array(l, c, d);
5060
- const h = new Uint32Array(o.HEAPF32.buffer, d, u).slice();
5061
- return o._free(d), { array: h, itemSize: 1 };
5065
+ const u = l.num_faces() * 3, c = u * 4, h = o._malloc(c);
5066
+ a.GetTrianglesUInt32Array(l, c, h);
5067
+ const d = new Uint32Array(o.HEAPF32.buffer, h, u).slice();
5068
+ return o._free(h), { array: d, itemSize: 1 };
5062
5069
  }
5063
5070
  function s(o, a, l, A, u, c) {
5064
- const d = l.num_points(), h = c.num_components(), m = i(o, u), p = h * u.BYTES_PER_ELEMENT, f = Math.ceil(p / 4) * 4, g = f / u.BYTES_PER_ELEMENT, x = d * p, I = d * f, y = o._malloc(x);
5065
- a.GetAttributeDataArrayForAllPoints(l, c, m, x, y);
5066
- const S = new u(o.HEAPF32.buffer, y, x / u.BYTES_PER_ELEMENT);
5071
+ const h = l.num_points(), d = c.num_components(), g = i(o, u), f = d * u.BYTES_PER_ELEMENT, m = Math.ceil(f / 4) * 4, p = m / u.BYTES_PER_ELEMENT, I = h * f, x = h * m, y = o._malloc(I);
5072
+ a.GetAttributeDataArrayForAllPoints(l, c, g, I, y);
5073
+ const v = new u(o.HEAPF32.buffer, y, I / u.BYTES_PER_ELEMENT);
5067
5074
  let M;
5068
- if (p === f)
5069
- M = S.slice();
5075
+ if (f === m)
5076
+ M = v.slice();
5070
5077
  else {
5071
- M = new u(I / u.BYTES_PER_ELEMENT);
5078
+ M = new u(x / u.BYTES_PER_ELEMENT);
5072
5079
  let L = 0;
5073
- for (let Q = 0, $ = S.length; Q < $; Q++) {
5074
- for (let Y = 0; Y < h; Y++)
5075
- M[L + Y] = S[Q * h + Y];
5076
- L += g;
5080
+ for (let Q = 0, $ = v.length; Q < $; Q++) {
5081
+ for (let Y = 0; Y < d; Y++)
5082
+ M[L + Y] = v[Q * d + Y];
5083
+ L += p;
5077
5084
  }
5078
5085
  }
5079
5086
  return o._free(y), {
5080
5087
  name: A,
5081
- count: d,
5082
- itemSize: h,
5088
+ count: h,
5089
+ itemSize: d,
5083
5090
  array: M,
5084
- stride: g
5091
+ stride: p
5085
5092
  };
5086
5093
  }
5087
5094
  function i(o, a) {
@@ -5132,26 +5139,26 @@ function jr(r) {
5132
5139
  repeatY: l = 4,
5133
5140
  speedX: A = 5e-4,
5134
5141
  speedY: u = 5e-4
5135
- } = r || {}, c = new w.PlaneGeometry(e, t), h = new w.TextureLoader().load(Nr, (f) => {
5136
- f.wrapS = f.wrapT = w.RepeatWrapping, f.repeat.set(a, l), f.generateMipmaps = !1, f.minFilter = w.LinearFilter, f.magFilter = w.LinearFilter;
5137
- }), m = new w.MeshStandardMaterial({
5142
+ } = r || {}, c = new w.PlaneGeometry(e, t), d = new w.TextureLoader().load(Nr, (m) => {
5143
+ m.wrapS = m.wrapT = w.RepeatWrapping, m.repeat.set(a, l), m.generateMipmaps = !1, m.minFilter = w.LinearFilter, m.magFilter = w.LinearFilter;
5144
+ }), g = new w.MeshStandardMaterial({
5138
5145
  color: n,
5139
5146
  roughness: s,
5140
5147
  metalness: i,
5141
- normalMap: h,
5148
+ normalMap: d,
5142
5149
  normalScale: new w.Vector2(o, o),
5143
5150
  side: w.DoubleSide,
5144
5151
  // 双面渲染,避免从侧面或底部看到黑色
5145
5152
  transparent: !0,
5146
5153
  opacity: 0.6
5147
- }), p = new w.Mesh(c, m);
5148
- p.rotation.x = -Math.PI / 2, p.position.y = 0, p.name = "水面(标准材质)", p.userData.isWater = !0, p.userData.isMovable = !0, p.userData.waterSpeed = { x: A, y: u }, Xe(p);
5154
+ }), f = new w.Mesh(c, g);
5155
+ f.rotation.x = -Math.PI / 2, f.position.y = 0, f.name = "水面(标准材质)", f.userData.isWater = !0, f.userData.isMovable = !0, f.userData.waterSpeed = { x: A, y: u }, Xe(f);
5149
5156
  }
5150
5157
  function Fr(r) {
5151
5158
  const e = Uo();
5152
5159
  if (!e)
5153
5160
  return console.warn("请先选中一个模型,再添加数据面板"), null;
5154
- const t = cs(e);
5161
+ const t = Wt(e);
5155
5162
  t && (t.dispose(), oo(e));
5156
5163
  const n = [
5157
5164
  { label: "温度", value: "30", unit: "℃" },
@@ -5165,7 +5172,7 @@ function Fr(r) {
5165
5172
  return s.attachTo(e), nn(e, s), Ro(e), s;
5166
5173
  }
5167
5174
  function Ur(r) {
5168
- return Gt(!0), new Promise((e, t) => {
5175
+ return Kt(!0), new Promise((e, t) => {
5169
5176
  var o;
5170
5177
  const n = (o = r.name.split(".").pop()) == null ? void 0 : o.toLowerCase(), s = URL.createObjectURL(r);
5171
5178
  let i;
@@ -5187,15 +5194,15 @@ function Ur(r) {
5187
5194
  (a) => {
5188
5195
  const l = n === "gltf" || n === "glb" ? a.scene : a;
5189
5196
  l.traverse((c) => {
5190
- var d;
5191
- c.userData.isMovable = !0, c.name || (c.name = c.type), c.type === "Mesh" && (c.frustumCulled = !0, (d = c.geometry) == null || d.computeVertexNormals(), c.castShadow = !0, c.receiveShadow = !0);
5197
+ var h;
5198
+ c.userData.isMovable = !0, c.name || (c.name = c.type), c.type === "Mesh" && (c.frustumCulled = !0, (h = c.geometry) == null || h.computeVertexNormals(), c.castShadow = !0, c.receiveShadow = !0);
5192
5199
  });
5193
5200
  const u = new w.Box3().setFromObject(l).getCenter(new w.Vector3());
5194
- l.position.sub(u), Xe(l, !0), Gt(!1), e(l);
5201
+ l.position.sub(u), Xe(l, !0), Kt(!1), e(l);
5195
5202
  },
5196
5203
  void 0,
5197
5204
  (a) => {
5198
- Gt(!1), t(a);
5205
+ Kt(!1), t(a);
5199
5206
  }
5200
5207
  );
5201
5208
  });
@@ -5222,10 +5229,10 @@ function Hr(r) {
5222
5229
  const zr = {
5223
5230
  key: 1,
5224
5231
  class: "toggle-placeholder"
5225
- }, Gr = { class: "tree-icon" }, Kr = { class: "tree-name" }, Zr = {
5232
+ }, Gr = { class: "tree-icon" }, Kr = { class: "tree-name" }, Br = {
5226
5233
  key: 0,
5227
5234
  class: "tree-children"
5228
- }, Br = /* @__PURE__ */ xe({
5235
+ }, Zr = /* @__PURE__ */ ve({
5229
5236
  __name: "TreeItem",
5230
5237
  props: {
5231
5238
  node: {},
@@ -5234,12 +5241,12 @@ const zr = {
5234
5241
  },
5235
5242
  emits: ["select", "delete"],
5236
5243
  setup(r, { emit: e }) {
5237
- const t = r, n = e, s = W(null), { expandedSet: i, toggleExpand: o } = gn("treeExpand"), a = $e(() => i.value.has(t.node.uuid)), l = $e(() => (t.version, t.node.children.some((p) => p.userData.isMovable === !0))), A = $e(() => (t.version, t.node.children.filter(
5238
- (p) => p.userData.isMovable === !0
5244
+ const t = r, n = e, s = W(null), { expandedSet: i, toggleExpand: o } = gn("treeExpand"), a = $e(() => i.value.has(t.node.uuid)), l = $e(() => (t.version, t.node.children.some((f) => f.userData.isMovable === !0))), A = $e(() => (t.version, t.node.children.filter(
5245
+ (f) => f.userData.isMovable === !0
5239
5246
  ))), u = $e(
5240
5247
  () => {
5241
- var p;
5242
- return ((p = t.selectedObject) == null ? void 0 : p.uuid) === t.node.uuid;
5248
+ var f;
5249
+ return ((f = t.selectedObject) == null ? void 0 : f.uuid) === t.node.uuid;
5243
5250
  }
5244
5251
  );
5245
5252
  bn(
@@ -5253,53 +5260,53 @@ const zr = {
5253
5260
  },
5254
5261
  { flush: "post" }
5255
5262
  );
5256
- const c = (p) => {
5257
- p.stopPropagation(), n("select", t.node);
5258
- }, d = (p) => {
5259
- p.stopPropagation(), n("delete", t.node);
5260
- }, h = (p) => p.type === "Mesh" || p.type === "Sprite" ? "🟦" : p.type === "Light" ? "💡" : "📦", m = (p) => p.name || `${p.type} (${p.id})`;
5261
- return (p, f) => {
5262
- const g = Cn("TreeItem", !0);
5263
+ const c = (f) => {
5264
+ f.stopPropagation(), n("select", t.node);
5265
+ }, h = (f) => {
5266
+ f.stopPropagation(), n("delete", t.node);
5267
+ }, d = (f) => f.type === "Mesh" || f.type === "Sprite" ? "🟦" : f.type === "Light" ? "💡" : "📦", g = (f) => f.name || `${f.type} (${f.id})`;
5268
+ return (f, m) => {
5269
+ const p = Cn("TreeItem", !0);
5263
5270
  return R(), P("div", {
5264
5271
  class: "tree-node",
5265
5272
  ref_key: "nodeRef",
5266
5273
  ref: s
5267
5274
  }, [
5268
5275
  C("div", {
5269
- class: ie(["tree-item", { selected: u.value }]),
5276
+ class: oe(["tree-item", { selected: u.value }]),
5270
5277
  onClick: c
5271
5278
  }, [
5272
5279
  l.value ? (R(), P("span", {
5273
5280
  key: 0,
5274
5281
  class: "toggle-icon",
5275
- onClick: f[0] || (f[0] = Vt((x) => In(o)(r.node.uuid), ["stop"]))
5276
- }, oe(a.value ? "▼" : "▶"), 1)) : (R(), P("span", zr)),
5277
- C("span", Gr, oe(h(r.node)), 1),
5278
- C("span", Kr, oe(m(r.node)), 1),
5282
+ onClick: m[0] || (m[0] = Jt((I) => In(o)(r.node.uuid), ["stop"]))
5283
+ }, ne(a.value ? "▼" : "▶"), 1)) : (R(), P("span", zr)),
5284
+ C("span", Gr, ne(d(r.node)), 1),
5285
+ C("span", Kr, ne(g(r.node)), 1),
5279
5286
  C("button", {
5280
5287
  class: "tree-delete",
5281
- onClick: Vt(d, ["stop"])
5288
+ onClick: Jt(h, ["stop"])
5282
5289
  }, "×")
5283
5290
  ], 2),
5284
- a.value && l.value ? (R(), P("div", Zr, [
5285
- (R(!0), P(ke, null, Dt(A.value, (x) => (R(), nt(g, {
5286
- key: x.uuid,
5287
- node: x,
5291
+ a.value && l.value ? (R(), P("div", Br, [
5292
+ (R(!0), P(Pe, null, Dt(A.value, (I) => (R(), nt(p, {
5293
+ key: I.uuid,
5294
+ node: I,
5288
5295
  "selected-object": r.selectedObject,
5289
5296
  version: r.version,
5290
- onSelect: f[1] || (f[1] = (I) => n("select", I)),
5291
- onDelete: f[2] || (f[2] = (I) => n("delete", I))
5297
+ onSelect: m[1] || (m[1] = (x) => n("select", x)),
5298
+ onDelete: m[2] || (m[2] = (x) => n("delete", x))
5292
5299
  }, null, 8, ["node", "selected-object", "version"]))), 128))
5293
- ])) : B("", !0)
5300
+ ])) : Z("", !0)
5294
5301
  ], 512);
5295
5302
  };
5296
5303
  }
5297
- }), ve = (r, e) => {
5304
+ }), Se = (r, e) => {
5298
5305
  const t = r.__vccOpts || r;
5299
5306
  for (const [n, s] of e)
5300
5307
  t[n] = s;
5301
5308
  return t;
5302
- }, Xr = /* @__PURE__ */ ve(Br, [["__scopeId", "data-v-5ad9c842"]]), qr = { class: "property-group" }, Vr = { class: "row" }, Jr = { class: "property-group" }, Qr = { class: "row" }, Yr = { class: "property-group" }, _r = { class: "row" }, $r = {
5309
+ }, Xr = /* @__PURE__ */ Se(Zr, [["__scopeId", "data-v-5ad9c842"]]), qr = { class: "property-group" }, Vr = { class: "row" }, Jr = { class: "property-group" }, Qr = { class: "row" }, Yr = { class: "property-group" }, _r = { class: "row" }, $r = {
5303
5310
  key: 0,
5304
5311
  class: "property-group light-group"
5305
5312
  }, ea = { class: "slider-row" }, ta = {
@@ -5308,7 +5315,7 @@ const zr = {
5308
5315
  }, sa = { class: "slider-row" }, na = { class: "slider-value" }, ia = { class: "slider-row" }, oa = { class: "slider-value" }, ra = { class: "slider-row" }, aa = { class: "slider-value" }, la = {
5309
5316
  key: 0,
5310
5317
  class: "material-hint"
5311
- }, Aa = /* @__PURE__ */ xe({
5318
+ }, Aa = /* @__PURE__ */ ve({
5312
5319
  __name: "TransformTab",
5313
5320
  props: {
5314
5321
  transform: {},
@@ -5316,72 +5323,72 @@ const zr = {
5316
5323
  },
5317
5324
  emits: ["propertyChange"],
5318
5325
  setup(r, { emit: e }) {
5319
- const t = r, n = e, s = () => n("propertyChange"), i = Jt({
5326
+ const t = r, n = e, s = () => n("propertyChange"), i = Qt({
5320
5327
  metalness: 0,
5321
5328
  roughness: 0.5,
5322
5329
  opacity: 1
5323
- }), o = W(!1), a = Jt({
5330
+ }), o = W(!1), a = Qt({
5324
5331
  intensity: 1
5325
5332
  });
5326
5333
  function l() {
5327
5334
  t.selectedObject && t.selectedObject.type === "DirectionalLight" && (t.selectedObject.intensity = a.intensity);
5328
5335
  }
5329
- function A(d) {
5330
- let h = null;
5331
- return d.traverse((m) => {
5332
- if (m.type === "Mesh" && !h) {
5333
- const p = m, f = Array.isArray(p.material) ? p.material : [p.material];
5334
- for (const g of f)
5335
- if (g && (g.type === "MeshStandardMaterial" || g.type === "MeshPhongMaterial")) {
5336
- const x = g;
5337
- h = {
5338
- metalness: x.metalness ?? 0,
5339
- roughness: x.roughness ?? 0.5,
5340
- opacity: g.opacity ?? 1
5336
+ function A(h) {
5337
+ let d = null;
5338
+ return h.traverse((g) => {
5339
+ if (g.type === "Mesh" && !d) {
5340
+ const f = g, m = Array.isArray(f.material) ? f.material : [f.material];
5341
+ for (const p of m)
5342
+ if (p && (p.type === "MeshStandardMaterial" || p.type === "MeshPhongMaterial")) {
5343
+ const I = p;
5344
+ d = {
5345
+ metalness: I.metalness ?? 0,
5346
+ roughness: I.roughness ?? 0.5,
5347
+ opacity: p.opacity ?? 1
5341
5348
  };
5342
5349
  break;
5343
5350
  }
5344
5351
  }
5345
- }), h;
5352
+ }), d;
5346
5353
  }
5347
- function u(d, h) {
5348
- let m = !1;
5349
- return d.traverse((p) => {
5350
- if (p.type === "Mesh") {
5351
- const f = p, g = Array.isArray(f.material) ? f.material : [f.material];
5352
- for (const x of g)
5353
- x && (x.type === "MeshStandardMaterial" || x.type === "MeshPhongMaterial") && (h.metalness !== void 0 && (x.metalness = h.metalness), h.roughness !== void 0 && (x.roughness = h.roughness), h.opacity !== void 0 && (x.opacity = h.opacity, x.transparent = h.opacity < 1), x.needsUpdate = !0, m = !0);
5354
+ function u(h, d) {
5355
+ let g = !1;
5356
+ return h.traverse((f) => {
5357
+ if (f.type === "Mesh") {
5358
+ const m = f, p = Array.isArray(m.material) ? m.material : [m.material];
5359
+ for (const I of p)
5360
+ I && (I.type === "MeshStandardMaterial" || I.type === "MeshPhongMaterial") && (d.metalness !== void 0 && (I.metalness = d.metalness), d.roughness !== void 0 && (I.roughness = d.roughness), d.opacity !== void 0 && (I.opacity = d.opacity, I.transparent = d.opacity < 1), I.needsUpdate = !0, g = !0);
5354
5361
  }
5355
- }), m;
5362
+ }), g;
5356
5363
  }
5357
5364
  function c() {
5358
5365
  if (t.selectedObject) {
5359
- const d = u(t.selectedObject, {
5366
+ const h = u(t.selectedObject, {
5360
5367
  metalness: i.metalness,
5361
5368
  roughness: i.roughness,
5362
5369
  opacity: i.opacity
5363
5370
  });
5364
- o.value = d;
5371
+ o.value = h;
5365
5372
  }
5366
5373
  }
5367
- return Pe(
5374
+ return be(
5368
5375
  () => t.selectedObject,
5369
- (d) => {
5370
- if (d) {
5371
- const h = A(d);
5372
- h ? (i.metalness = h.metalness, i.roughness = h.roughness, i.opacity = h.opacity, o.value = !0) : (i.metalness = 0, i.roughness = 0.5, i.opacity = 1, o.value = !1), d.type === "DirectionalLight" && (a.intensity = d.intensity ?? 1);
5376
+ (h) => {
5377
+ if (h) {
5378
+ const d = A(h);
5379
+ d ? (i.metalness = d.metalness, i.roughness = d.roughness, i.opacity = d.opacity, o.value = !0) : (i.metalness = 0, i.roughness = 0.5, i.opacity = 1, o.value = !1), h.type === "DirectionalLight" && (a.intensity = h.intensity ?? 1);
5373
5380
  } else
5374
5381
  i.metalness = 0, i.roughness = 0.5, i.opacity = 1, o.value = !1;
5375
5382
  },
5376
5383
  { immediate: !0 }
5377
- ), (d, h) => (R(), P("div", null, [
5384
+ ), (h, d) => (R(), P("div", null, [
5378
5385
  C("div", qr, [
5379
- h[17] || (h[17] = C("label", null, "位置", -1)),
5386
+ d[17] || (d[17] = C("label", null, "位置", -1)),
5380
5387
  C("div", Vr, [
5381
- h[14] || (h[14] = C("span", null, "X:", -1)),
5388
+ d[14] || (d[14] = C("span", null, "X:", -1)),
5382
5389
  k(C("input", {
5383
5390
  type: "number",
5384
- "onUpdate:modelValue": h[0] || (h[0] = (m) => r.transform.position.x = m),
5391
+ "onUpdate:modelValue": d[0] || (d[0] = (g) => r.transform.position.x = g),
5385
5392
  step: "0.01",
5386
5393
  onInput: s
5387
5394
  }, null, 544), [
@@ -5392,10 +5399,10 @@ const zr = {
5392
5399
  { number: !0 }
5393
5400
  ]
5394
5401
  ]),
5395
- h[15] || (h[15] = C("span", null, "Y:", -1)),
5402
+ d[15] || (d[15] = C("span", null, "Y:", -1)),
5396
5403
  k(C("input", {
5397
5404
  type: "number",
5398
- "onUpdate:modelValue": h[1] || (h[1] = (m) => r.transform.position.y = m),
5405
+ "onUpdate:modelValue": d[1] || (d[1] = (g) => r.transform.position.y = g),
5399
5406
  step: "0.01",
5400
5407
  onInput: s
5401
5408
  }, null, 544), [
@@ -5406,10 +5413,10 @@ const zr = {
5406
5413
  { number: !0 }
5407
5414
  ]
5408
5415
  ]),
5409
- h[16] || (h[16] = C("span", null, "Z:", -1)),
5416
+ d[16] || (d[16] = C("span", null, "Z:", -1)),
5410
5417
  k(C("input", {
5411
5418
  type: "number",
5412
- "onUpdate:modelValue": h[2] || (h[2] = (m) => r.transform.position.z = m),
5419
+ "onUpdate:modelValue": d[2] || (d[2] = (g) => r.transform.position.z = g),
5413
5420
  step: "0.01",
5414
5421
  onInput: s
5415
5422
  }, null, 544), [
@@ -5423,12 +5430,12 @@ const zr = {
5423
5430
  ])
5424
5431
  ]),
5425
5432
  C("div", Jr, [
5426
- h[21] || (h[21] = C("label", null, "旋转 (弧度)", -1)),
5433
+ d[21] || (d[21] = C("label", null, "旋转 (弧度)", -1)),
5427
5434
  C("div", Qr, [
5428
- h[18] || (h[18] = C("span", null, "X:", -1)),
5435
+ d[18] || (d[18] = C("span", null, "X:", -1)),
5429
5436
  k(C("input", {
5430
5437
  type: "number",
5431
- "onUpdate:modelValue": h[3] || (h[3] = (m) => r.transform.rotation.x = m),
5438
+ "onUpdate:modelValue": d[3] || (d[3] = (g) => r.transform.rotation.x = g),
5432
5439
  step: "0.01",
5433
5440
  onInput: s
5434
5441
  }, null, 544), [
@@ -5439,10 +5446,10 @@ const zr = {
5439
5446
  { number: !0 }
5440
5447
  ]
5441
5448
  ]),
5442
- h[19] || (h[19] = C("span", null, "Y:", -1)),
5449
+ d[19] || (d[19] = C("span", null, "Y:", -1)),
5443
5450
  k(C("input", {
5444
5451
  type: "number",
5445
- "onUpdate:modelValue": h[4] || (h[4] = (m) => r.transform.rotation.y = m),
5452
+ "onUpdate:modelValue": d[4] || (d[4] = (g) => r.transform.rotation.y = g),
5446
5453
  step: "0.01",
5447
5454
  onInput: s
5448
5455
  }, null, 544), [
@@ -5453,10 +5460,10 @@ const zr = {
5453
5460
  { number: !0 }
5454
5461
  ]
5455
5462
  ]),
5456
- h[20] || (h[20] = C("span", null, "Z:", -1)),
5463
+ d[20] || (d[20] = C("span", null, "Z:", -1)),
5457
5464
  k(C("input", {
5458
5465
  type: "number",
5459
- "onUpdate:modelValue": h[5] || (h[5] = (m) => r.transform.rotation.z = m),
5466
+ "onUpdate:modelValue": d[5] || (d[5] = (g) => r.transform.rotation.z = g),
5460
5467
  step: "0.01",
5461
5468
  onInput: s
5462
5469
  }, null, 544), [
@@ -5470,12 +5477,12 @@ const zr = {
5470
5477
  ])
5471
5478
  ]),
5472
5479
  C("div", Yr, [
5473
- h[25] || (h[25] = C("label", null, "缩放", -1)),
5480
+ d[25] || (d[25] = C("label", null, "缩放", -1)),
5474
5481
  C("div", _r, [
5475
- h[22] || (h[22] = C("span", null, "X:", -1)),
5482
+ d[22] || (d[22] = C("span", null, "X:", -1)),
5476
5483
  k(C("input", {
5477
5484
  type: "number",
5478
- "onUpdate:modelValue": h[6] || (h[6] = (m) => r.transform.scale.x = m),
5485
+ "onUpdate:modelValue": d[6] || (d[6] = (g) => r.transform.scale.x = g),
5479
5486
  step: "0.01",
5480
5487
  onInput: s
5481
5488
  }, null, 544), [
@@ -5486,10 +5493,10 @@ const zr = {
5486
5493
  { number: !0 }
5487
5494
  ]
5488
5495
  ]),
5489
- h[23] || (h[23] = C("span", null, "Y:", -1)),
5496
+ d[23] || (d[23] = C("span", null, "Y:", -1)),
5490
5497
  k(C("input", {
5491
5498
  type: "number",
5492
- "onUpdate:modelValue": h[7] || (h[7] = (m) => r.transform.scale.y = m),
5499
+ "onUpdate:modelValue": d[7] || (d[7] = (g) => r.transform.scale.y = g),
5493
5500
  step: "0.01",
5494
5501
  onInput: s
5495
5502
  }, null, 544), [
@@ -5500,10 +5507,10 @@ const zr = {
5500
5507
  { number: !0 }
5501
5508
  ]
5502
5509
  ]),
5503
- h[24] || (h[24] = C("span", null, "Z:", -1)),
5510
+ d[24] || (d[24] = C("span", null, "Z:", -1)),
5504
5511
  k(C("input", {
5505
5512
  type: "number",
5506
- "onUpdate:modelValue": h[8] || (h[8] = (m) => r.transform.scale.z = m),
5513
+ "onUpdate:modelValue": d[8] || (d[8] = (g) => r.transform.scale.z = g),
5507
5514
  step: "0.01",
5508
5515
  onInput: s
5509
5516
  }, null, 544), [
@@ -5517,15 +5524,15 @@ const zr = {
5517
5524
  ])
5518
5525
  ]),
5519
5526
  r.selectedObject && r.selectedObject.type === "DirectionalLight" ? (R(), P("div", $r, [
5520
- h[27] || (h[27] = C("label", null, "光源属性", -1)),
5527
+ d[27] || (d[27] = C("label", null, "光源属性", -1)),
5521
5528
  C("div", ea, [
5522
- h[26] || (h[26] = C("span", { class: "slider-label" }, "强度", -1)),
5529
+ d[26] || (d[26] = C("span", { class: "slider-label" }, "强度", -1)),
5523
5530
  k(C("input", {
5524
5531
  type: "range",
5525
5532
  min: "0",
5526
5533
  max: "10",
5527
5534
  step: "0.1",
5528
- "onUpdate:modelValue": h[9] || (h[9] = (m) => a.intensity = m),
5535
+ "onUpdate:modelValue": d[9] || (d[9] = (g) => a.intensity = g),
5529
5536
  onInput: l
5530
5537
  }, null, 544), [
5531
5538
  [
@@ -5540,7 +5547,7 @@ const zr = {
5540
5547
  min: "0",
5541
5548
  max: "100",
5542
5549
  step: "0.1",
5543
- "onUpdate:modelValue": h[10] || (h[10] = (m) => a.intensity = m),
5550
+ "onUpdate:modelValue": d[10] || (d[10] = (g) => a.intensity = g),
5544
5551
  class: "intensity-input",
5545
5552
  onInput: l
5546
5553
  }, null, 544), [
@@ -5552,17 +5559,17 @@ const zr = {
5552
5559
  ]
5553
5560
  ])
5554
5561
  ])
5555
- ])) : B("", !0),
5562
+ ])) : Z("", !0),
5556
5563
  r.selectedObject ? (R(), P("div", ta, [
5557
- h[31] || (h[31] = C("label", null, "材质", -1)),
5564
+ d[31] || (d[31] = C("label", null, "材质", -1)),
5558
5565
  C("div", sa, [
5559
- h[28] || (h[28] = C("span", { class: "slider-label" }, "金属度", -1)),
5566
+ d[28] || (d[28] = C("span", { class: "slider-label" }, "金属度", -1)),
5560
5567
  k(C("input", {
5561
5568
  type: "range",
5562
5569
  min: "0",
5563
5570
  max: "1",
5564
5571
  step: "0.01",
5565
- "onUpdate:modelValue": h[11] || (h[11] = (m) => i.metalness = m),
5572
+ "onUpdate:modelValue": d[11] || (d[11] = (g) => i.metalness = g),
5566
5573
  onInput: c
5567
5574
  }, null, 544), [
5568
5575
  [
@@ -5572,16 +5579,16 @@ const zr = {
5572
5579
  { number: !0 }
5573
5580
  ]
5574
5581
  ]),
5575
- C("span", na, oe(i.metalness.toFixed(2)), 1)
5582
+ C("span", na, ne(i.metalness.toFixed(2)), 1)
5576
5583
  ]),
5577
5584
  C("div", ia, [
5578
- h[29] || (h[29] = C("span", { class: "slider-label" }, "粗糙度", -1)),
5585
+ d[29] || (d[29] = C("span", { class: "slider-label" }, "粗糙度", -1)),
5579
5586
  k(C("input", {
5580
5587
  type: "range",
5581
5588
  min: "0",
5582
5589
  max: "1",
5583
5590
  step: "0.01",
5584
- "onUpdate:modelValue": h[12] || (h[12] = (m) => i.roughness = m),
5591
+ "onUpdate:modelValue": d[12] || (d[12] = (g) => i.roughness = g),
5585
5592
  onInput: c
5586
5593
  }, null, 544), [
5587
5594
  [
@@ -5591,16 +5598,16 @@ const zr = {
5591
5598
  { number: !0 }
5592
5599
  ]
5593
5600
  ]),
5594
- C("span", oa, oe(i.roughness.toFixed(2)), 1)
5601
+ C("span", oa, ne(i.roughness.toFixed(2)), 1)
5595
5602
  ]),
5596
5603
  C("div", ra, [
5597
- h[30] || (h[30] = C("span", { class: "slider-label" }, "透明度", -1)),
5604
+ d[30] || (d[30] = C("span", { class: "slider-label" }, "透明度", -1)),
5598
5605
  k(C("input", {
5599
5606
  type: "range",
5600
5607
  min: "0",
5601
5608
  max: "1",
5602
5609
  step: "0.01",
5603
- "onUpdate:modelValue": h[13] || (h[13] = (m) => i.opacity = m),
5610
+ "onUpdate:modelValue": d[13] || (d[13] = (g) => i.opacity = g),
5604
5611
  onInput: c
5605
5612
  }, null, 544), [
5606
5613
  [
@@ -5610,13 +5617,13 @@ const zr = {
5610
5617
  { number: !0 }
5611
5618
  ]
5612
5619
  ]),
5613
- C("span", aa, oe(i.opacity.toFixed(2)), 1)
5620
+ C("span", aa, ne(i.opacity.toFixed(2)), 1)
5614
5621
  ]),
5615
- o.value ? B("", !0) : (R(), P("div", la, " ⚠️ 当前材质不支持金属度/粗糙度(仅支持 Standard/Phong) "))
5616
- ])) : B("", !0)
5622
+ o.value ? Z("", !0) : (R(), P("div", la, " ⚠️ 当前材质不支持金属度/粗糙度(仅支持 Standard/Phong) "))
5623
+ ])) : Z("", !0)
5617
5624
  ]));
5618
5625
  }
5619
- }), ca = /* @__PURE__ */ ve(Aa, [["__scopeId", "data-v-4cecf018"]]), ua = { class: "userdata-tab" }, da = { class: "property-group userdata-group" }, ha = { class: "userdata-add-row" }, fa = ["onKeyup"], pa = {
5626
+ }), ca = /* @__PURE__ */ Se(Aa, [["__scopeId", "data-v-4cecf018"]]), ua = { class: "userdata-tab" }, da = { class: "property-group userdata-group" }, ha = { class: "userdata-add-row" }, fa = ["onKeyup"], pa = {
5620
5627
  key: 0,
5621
5628
  class: "userdata-list"
5622
5629
  }, ma = { class: "ud-key" }, ga = {
@@ -5629,40 +5636,40 @@ const zr = {
5629
5636
  }, ya = { class: "ud-json-actions" }, xa = ["onClick"], va = ["onClick"], Sa = {
5630
5637
  key: 1,
5631
5638
  class: "userdata-empty"
5632
- }, Ta = /* @__PURE__ */ xe({
5639
+ }, Ta = /* @__PURE__ */ ve({
5633
5640
  __name: "UserDataTab",
5634
5641
  props: {
5635
5642
  selectedObject: {}
5636
5643
  },
5637
5644
  setup(r) {
5638
5645
  const e = r, t = W(""), n = W(""), s = W(null), i = W(""), o = W(null), a = W([]);
5639
- function l(I) {
5640
- if (I === null) return "null";
5641
- if (I === void 0) return "undefined";
5642
- if (Array.isArray(I)) return "array";
5643
- const y = typeof I;
5646
+ function l(x) {
5647
+ if (x === null) return "null";
5648
+ if (x === void 0) return "undefined";
5649
+ if (Array.isArray(x)) return "array";
5650
+ const y = typeof x;
5644
5651
  return y === "object" ? "object" : y === "number" ? "number" : y === "boolean" ? "boolean" : "string";
5645
5652
  }
5646
- function A(I) {
5653
+ function A(x) {
5647
5654
  const y = [];
5648
- if (I.userData)
5649
- for (const [S, M] of Object.entries(I.userData))
5650
- typeof S == "string" && !S.startsWith("_") && y.push({
5651
- key: S,
5655
+ if (x.userData)
5656
+ for (const [v, M] of Object.entries(x.userData))
5657
+ typeof v == "string" && !v.startsWith("_") && y.push({
5658
+ key: v,
5652
5659
  value: typeof M == "object" ? JSON.stringify(M) : String(M),
5653
5660
  rawType: l(M)
5654
5661
  });
5655
5662
  a.value = y;
5656
5663
  }
5657
- function u(I) {
5658
- const y = I.trim();
5664
+ function u(x) {
5665
+ const y = x.trim();
5659
5666
  if (y === "true") return !0;
5660
5667
  if (y === "false") return !1;
5661
5668
  if (y === "null") return null;
5662
5669
  if (y === "undefined") return;
5663
- const S = Number(y);
5664
- if (y !== "" && !isNaN(S))
5665
- return String(S) !== y ? y : S;
5670
+ const v = Number(y);
5671
+ if (y !== "" && !isNaN(v))
5672
+ return String(v) !== y ? y : v;
5666
5673
  if (y.startsWith("{") && y.endsWith("}") || y.startsWith("[") && y.endsWith("]"))
5667
5674
  try {
5668
5675
  return JSON.parse(y);
@@ -5672,85 +5679,85 @@ const zr = {
5672
5679
  }
5673
5680
  function c() {
5674
5681
  if (!e.selectedObject || !t.value.trim()) return;
5675
- const I = t.value.trim();
5676
- if (I === "isMovable") {
5682
+ const x = t.value.trim();
5683
+ if (x === "isMovable") {
5677
5684
  t.value = "";
5678
5685
  return;
5679
5686
  }
5680
5687
  const y = u(n.value);
5681
- e.selectedObject.userData[I] = y, A(e.selectedObject), t.value = "", n.value = "";
5688
+ e.selectedObject.userData[x] = y, A(e.selectedObject), t.value = "", n.value = "";
5682
5689
  }
5683
- function d(I, y) {
5684
- e.selectedObject && (delete e.selectedObject.userData[I], A(e.selectedObject));
5690
+ function h(x, y) {
5691
+ e.selectedObject && (delete e.selectedObject.userData[x], A(e.selectedObject));
5685
5692
  }
5686
- function h(I) {
5687
- return I.length <= 28 ? I : I.substring(0, 28) + "…";
5693
+ function d(x) {
5694
+ return x.length <= 28 ? x : x.substring(0, 28) + "…";
5688
5695
  }
5689
- function m(I) {
5690
- s.value = I;
5696
+ function g(x) {
5697
+ s.value = x;
5691
5698
  const y = e.selectedObject;
5692
5699
  if (!y) return;
5693
- const S = y.userData[I];
5700
+ const v = y.userData[x];
5694
5701
  try {
5695
- i.value = JSON.stringify(S, null, 2);
5702
+ i.value = JSON.stringify(v, null, 2);
5696
5703
  } catch {
5697
- i.value = String(S);
5704
+ i.value = String(v);
5698
5705
  }
5699
- p();
5706
+ f();
5700
5707
  }
5701
- function p() {
5702
- const I = i.value.trim();
5703
- if (!I) {
5708
+ function f() {
5709
+ const x = i.value.trim();
5710
+ if (!x) {
5704
5711
  o.value = null;
5705
5712
  return;
5706
5713
  }
5707
- if (!I.startsWith("{") && !I.startsWith("[")) {
5714
+ if (!x.startsWith("{") && !x.startsWith("[")) {
5708
5715
  o.value = "提示:当前输入不是 JSON 格式,将作为普通字符串保存";
5709
5716
  return;
5710
5717
  }
5711
5718
  try {
5712
- JSON.parse(I), o.value = null;
5719
+ JSON.parse(x), o.value = null;
5713
5720
  } catch (y) {
5714
5721
  o.value = "JSON 格式错误:" + y.message;
5715
5722
  }
5716
5723
  }
5717
- function f(I) {
5724
+ function m(x) {
5718
5725
  const y = e.selectedObject;
5719
5726
  if (!y) return;
5720
- const S = i.value.trim();
5727
+ const v = i.value.trim();
5721
5728
  try {
5722
- const M = JSON.parse(S);
5723
- y.userData[I] = M, A(y), s.value = null, i.value = "";
5729
+ const M = JSON.parse(v);
5730
+ y.userData[x] = M, A(y), s.value = null, i.value = "";
5724
5731
  } catch {
5725
- y.userData[I] = S, A(y), s.value = null, i.value = "";
5732
+ y.userData[x] = v, A(y), s.value = null, i.value = "";
5726
5733
  }
5727
5734
  }
5728
- function g() {
5735
+ function p() {
5729
5736
  s.value = null, i.value = "";
5730
5737
  }
5731
- function x() {
5732
- const I = e.selectedObject;
5733
- if (!I) return;
5738
+ function I() {
5739
+ const x = e.selectedObject;
5740
+ if (!x) return;
5734
5741
  const y = Ho();
5735
- y && (I.userData.closeUpView = {
5742
+ y && (x.userData.closeUpView = {
5736
5743
  x: y.position.x,
5737
5744
  y: y.position.y,
5738
5745
  z: y.position.z
5739
- }, A(I));
5746
+ }, A(x));
5740
5747
  }
5741
- return Pe(
5748
+ return be(
5742
5749
  () => e.selectedObject,
5743
- (I) => {
5744
- I ? A(I) : a.value = [], s.value = null, i.value = "";
5750
+ (x) => {
5751
+ x ? A(x) : a.value = [], s.value = null, i.value = "";
5745
5752
  },
5746
5753
  { immediate: !0 }
5747
- ), (I, y) => (R(), P("div", ua, [
5754
+ ), (x, y) => (R(), P("div", ua, [
5748
5755
  C("div", da, [
5749
5756
  y[3] || (y[3] = C("label", null, "userData 属性", -1)),
5750
5757
  C("div", ha, [
5751
5758
  k(C("input", {
5752
5759
  type: "text",
5753
- "onUpdate:modelValue": y[0] || (y[0] = (S) => t.value = S),
5760
+ "onUpdate:modelValue": y[0] || (y[0] = (v) => t.value = v),
5754
5761
  placeholder: "属性名",
5755
5762
  class: "ud-input",
5756
5763
  onKeyup: ze(c, ["enter"])
@@ -5758,10 +5765,10 @@ const zr = {
5758
5765
  [D, t.value]
5759
5766
  ]),
5760
5767
  k(C("textarea", {
5761
- "onUpdate:modelValue": y[1] || (y[1] = (S) => n.value = S),
5768
+ "onUpdate:modelValue": y[1] || (y[1] = (v) => n.value = v),
5762
5769
  placeholder: "值",
5763
5770
  class: "ud-input ud-textarea",
5764
- onKeyup: ze(Vt(c, ["prevent"]), ["enter"])
5771
+ onKeyup: ze(Jt(c, ["prevent"]), ["enter"])
5765
5772
  }, null, 40, fa), [
5766
5773
  [D, n.value]
5767
5774
  ]),
@@ -5772,29 +5779,29 @@ const zr = {
5772
5779
  }, " + ")
5773
5780
  ]),
5774
5781
  a.value.length > 0 ? (R(), P("div", pa, [
5775
- (R(!0), P(ke, null, Dt(a.value, (S, M) => (R(), P("div", {
5776
- key: S.key,
5777
- class: ie(["userdata-item", {
5778
- readonly: S.key === "isMovable",
5779
- "editing-json": s.value === S.key
5782
+ (R(!0), P(Pe, null, Dt(a.value, (v, M) => (R(), P("div", {
5783
+ key: v.key,
5784
+ class: oe(["userdata-item", {
5785
+ readonly: v.key === "isMovable",
5786
+ "editing-json": s.value === v.key
5780
5787
  }])
5781
5788
  }, [
5782
- C("span", ma, oe(S.key), 1),
5783
- S.key === "isMovable" ? (R(), P("span", ga, oe(String(S.value)) + " 🔒 ", 1)) : S.key !== "isMovable" ? (R(), P(ke, { key: 1 }, [
5784
- s.value !== S.key ? (R(), P(ke, { key: 0 }, [
5785
- C("span", ba, oe(h(S.value)), 1),
5789
+ C("span", ma, ne(v.key), 1),
5790
+ v.key === "isMovable" ? (R(), P("span", ga, ne(String(v.value)) + " 🔒 ", 1)) : v.key !== "isMovable" ? (R(), P(Pe, { key: 1 }, [
5791
+ s.value !== v.key ? (R(), P(Pe, { key: 0 }, [
5792
+ C("span", ba, ne(d(v.value)), 1),
5786
5793
  C("button", {
5787
5794
  class: "ud-btn edit-json-btn",
5788
5795
  title: "编辑对象",
5789
- onClick: (L) => m(S.key)
5796
+ onClick: (L) => g(v.key)
5790
5797
  }, " ✎ ", 8, Ca)
5791
- ], 64)) : (R(), P(ke, { key: 1 }, [
5792
- o.value ? (R(), P("div", Ia, " ⚠ " + oe(o.value), 1)) : B("", !0),
5798
+ ], 64)) : (R(), P(Pe, { key: 1 }, [
5799
+ o.value ? (R(), P("div", Ia, " ⚠ " + ne(o.value), 1)) : Z("", !0),
5793
5800
  k(C("textarea", {
5794
5801
  "onUpdate:modelValue": y[2] || (y[2] = (L) => i.value = L),
5795
- class: ie(["ud-json-textarea", { "has-error": o.value }]),
5802
+ class: oe(["ud-json-textarea", { "has-error": o.value }]),
5796
5803
  rows: "3",
5797
- onInput: p
5804
+ onInput: f
5798
5805
  }, null, 34), [
5799
5806
  [D, i.value]
5800
5807
  ]),
@@ -5802,187 +5809,212 @@ const zr = {
5802
5809
  C("button", {
5803
5810
  class: "ud-btn apply-btn",
5804
5811
  title: "应用修改",
5805
- onClick: (L) => f(S.key)
5812
+ onClick: (L) => m(v.key)
5806
5813
  }, " ✓ ", 8, xa),
5807
5814
  C("button", {
5808
5815
  class: "ud-btn cancel-btn",
5809
5816
  title: "取消编辑",
5810
- onClick: g
5817
+ onClick: p
5811
5818
  }, " ✕ ")
5812
5819
  ])
5813
5820
  ], 64)),
5814
- s.value !== S.key ? (R(), P("button", {
5821
+ s.value !== v.key ? (R(), P("button", {
5815
5822
  key: 2,
5816
5823
  class: "ud-btn del-btn",
5817
5824
  title: "删除",
5818
- onClick: (L) => d(S.key)
5819
- }, " ✕ ", 8, va)) : B("", !0)
5820
- ], 64)) : B("", !0)
5825
+ onClick: (L) => h(v.key)
5826
+ }, " ✕ ", 8, va)) : Z("", !0)
5827
+ ], 64)) : Z("", !0)
5821
5828
  ], 2))), 128))
5822
5829
  ])) : (R(), P("div", Sa, "暂无自定义数据")),
5823
5830
  C("button", {
5824
5831
  class: "get-camera-btn",
5825
- onClick: x
5832
+ onClick: I
5826
5833
  }, " 添加当前相机位置 ")
5827
5834
  ])
5828
5835
  ]));
5829
5836
  }
5830
- }), Ma = /* @__PURE__ */ ve(Ta, [["__scopeId", "data-v-4e117415"]]), wa = { class: "datapanel-tab" }, Ra = { class: "property-group" }, Ea = { class: "dp-section" }, ka = { class: "dp-visibility-row" }, Pa = { class: "dp-toggle" }, La = { class: "dp-visibility-text" }, Na = { class: "dp-section" }, Oa = { class: "dp-section" }, Da = { class: "dp-list" }, Wa = ["onUpdate:modelValue"], ja = ["onUpdate:modelValue"], Fa = ["onUpdate:modelValue"], Ua = ["onUpdate:modelValue"], Ha = ["onClick"], za = { class: "dp-add-row" }, Ga = /* @__PURE__ */ xe({
5837
+ }), Ma = /* @__PURE__ */ Se(Ta, [["__scopeId", "data-v-4e117415"]]), wa = { class: "datapanel-tab" }, Ra = { class: "property-group" }, Ea = { class: "dp-section" }, ka = { class: "dp-visibility-row" }, Pa = { class: "dp-toggle" }, La = { class: "dp-visibility-text" }, Na = { class: "dp-section" }, Oa = { class: "dp-section" }, Da = { class: "dp-size-row" }, Wa = { class: "dp-size-value" }, ja = { class: "dp-section" }, Fa = { class: "dp-list" }, Ua = ["onUpdate:modelValue"], Ha = ["onUpdate:modelValue"], za = ["onUpdate:modelValue"], Ga = ["onUpdate:modelValue"], Ka = ["onClick"], Ba = { class: "dp-add-row" }, Za = /* @__PURE__ */ ve({
5831
5838
  __name: "DataPanelTab",
5832
5839
  props: {
5833
5840
  selectedObject: {}
5834
5841
  },
5835
5842
  setup(r) {
5836
- const e = r, t = W(""), n = W([]), s = W(!0), i = W(""), o = W(""), a = W(""), l = W("");
5837
- let A = c(), u = !1;
5838
- function c() {
5839
- const p = e.selectedObject;
5840
- return p ? cs(Ot(p)) : null;
5843
+ const e = r, t = W(""), n = W([]), s = W(!0), i = W(0.1), o = W(""), a = W(""), l = W(""), A = W("");
5844
+ let u = h(), c = !1;
5845
+ function h() {
5846
+ const m = e.selectedObject;
5847
+ return m ? Wt(Ot(m)) : null;
5841
5848
  }
5842
- Pe(s, (p) => {
5843
- u || !A || (A.visible = p);
5849
+ be(s, (m) => {
5850
+ c || !u || (u.visible = m);
5851
+ }), be(i, (m) => {
5852
+ c || !u || u.setOffsetY(m);
5844
5853
  });
5845
5854
  function d() {
5846
- u || !A || (A.setTitle(t.value), A.setItems([...n.value]));
5855
+ c || !u || (u.setTitle(t.value), u.setItems([...n.value]));
5847
5856
  }
5848
- Pe(t, () => d()), Pe(n, () => d(), { deep: !0 });
5849
- function h(p) {
5850
- n.value = n.value.filter((f, g) => g !== p), d();
5857
+ be(t, () => d()), be(n, () => d(), { deep: !0 });
5858
+ function g(m) {
5859
+ n.value = n.value.filter((p, I) => I !== m), d();
5851
5860
  }
5852
- function m() {
5853
- !i.value.trim() || !o.value.trim() || (n.value = [
5861
+ function f() {
5862
+ !o.value.trim() || !a.value.trim() || (n.value = [
5854
5863
  ...n.value,
5855
5864
  {
5856
- label: i.value.trim(),
5857
- value: o.value.trim(),
5858
- unit: a.value.trim() || void 0,
5859
- code: l.value.trim() || void 0
5865
+ label: o.value.trim(),
5866
+ value: a.value.trim(),
5867
+ unit: l.value.trim() || void 0,
5868
+ code: A.value.trim() || void 0
5860
5869
  }
5861
- ], d(), i.value = "", o.value = "", a.value = "", l.value = "");
5870
+ ], d(), o.value = "", a.value = "", l.value = "", A.value = "");
5862
5871
  }
5863
- return Pe(
5872
+ return be(
5864
5873
  () => e.selectedObject,
5865
5874
  () => {
5866
- u = !0, A = c(), A ? (t.value = A.getTitle(), n.value = A.getItems(), s.value = A.visible) : (t.value = "", n.value = [], s.value = !0), i.value = "", o.value = "", a.value = "", setTimeout(() => {
5867
- u = !1;
5875
+ c = !0, u = h(), u ? (t.value = u.getTitle(), n.value = u.getItems(), s.value = u.visible, i.value = u.getOffsetY()) : (t.value = "", n.value = [], s.value = !0, i.value = 0.1), o.value = "", a.value = "", l.value = "", A.value = "", setTimeout(() => {
5876
+ c = !1;
5868
5877
  }, 0);
5869
5878
  },
5870
5879
  { immediate: !0 }
5871
- ), (p, f) => (R(), P("div", wa, [
5880
+ ), (m, p) => (R(), P("div", wa, [
5872
5881
  C("div", Ra, [
5873
- f[10] || (f[10] = C("label", null, "📊 数据面板", -1)),
5882
+ p[14] || (p[14] = C("label", null, "📊 数据面板", -1)),
5874
5883
  C("div", Ea, [
5875
- f[7] || (f[7] = C("span", { class: "dp-label-sm" }, "可见性", -1)),
5884
+ p[8] || (p[8] = C("span", { class: "dp-label-sm" }, "可见性", -1)),
5876
5885
  C("div", ka, [
5877
5886
  C("label", Pa, [
5878
5887
  k(C("input", {
5879
5888
  type: "checkbox",
5880
- "onUpdate:modelValue": f[0] || (f[0] = (g) => s.value = g)
5889
+ "onUpdate:modelValue": p[0] || (p[0] = (I) => s.value = I)
5881
5890
  }, null, 512), [
5882
5891
  [yn, s.value]
5883
5892
  ]),
5884
- f[6] || (f[6] = C("span", { class: "dp-toggle-slider" }, null, -1))
5893
+ p[7] || (p[7] = C("span", { class: "dp-toggle-slider" }, null, -1))
5885
5894
  ]),
5886
- C("span", La, oe(s.value ? "显示中" : "已隐藏"), 1)
5895
+ C("span", La, ne(s.value ? "显示中" : "已隐藏"), 1)
5887
5896
  ])
5888
5897
  ]),
5889
5898
  C("div", Na, [
5890
- f[8] || (f[8] = C("span", { class: "dp-label-sm" }, "标题", -1)),
5899
+ p[9] || (p[9] = C("span", { class: "dp-label-sm" }, "标题", -1)),
5891
5900
  k(C("input", {
5892
5901
  type: "text",
5893
5902
  class: "dp-input",
5894
- "onUpdate:modelValue": f[1] || (f[1] = (g) => t.value = g),
5903
+ "onUpdate:modelValue": p[1] || (p[1] = (I) => t.value = I),
5895
5904
  placeholder: "面板标题"
5896
5905
  }, null, 512), [
5897
5906
  [D, t.value]
5898
5907
  ])
5899
5908
  ]),
5900
5909
  C("div", Oa, [
5901
- f[9] || (f[9] = C("span", { class: "dp-label-sm" }, "数据项", -1)),
5910
+ p[12] || (p[12] = C("span", { class: "dp-label-sm" }, "面板离模型距离", -1)),
5902
5911
  C("div", Da, [
5903
- (R(!0), P(ke, null, Dt(n.value, (g, x) => (R(), P("div", {
5912
+ p[10] || (p[10] = C("span", { class: "dp-range-label" }, "", -1)),
5913
+ k(C("input", {
5914
+ type: "range",
5915
+ class: "dp-range",
5916
+ min: "-0.5",
5917
+ max: "0.5",
5918
+ step: "0.01",
5919
+ "onUpdate:modelValue": p[2] || (p[2] = (I) => i.value = I)
5920
+ }, null, 512), [
5921
+ [
5922
+ D,
5923
+ i.value,
5924
+ void 0,
5925
+ { number: !0 }
5926
+ ]
5927
+ ]),
5928
+ p[11] || (p[11] = C("span", { class: "dp-range-label" }, "远", -1)),
5929
+ C("span", Wa, ne((i.value * 100).toFixed(0)), 1)
5930
+ ])
5931
+ ]),
5932
+ C("div", ja, [
5933
+ p[13] || (p[13] = C("span", { class: "dp-label-sm" }, "数据项", -1)),
5934
+ C("div", Fa, [
5935
+ (R(!0), P(Pe, null, Dt(n.value, (I, x) => (R(), P("div", {
5904
5936
  key: x,
5905
5937
  class: "dp-item"
5906
5938
  }, [
5907
5939
  k(C("input", {
5908
5940
  type: "text",
5909
5941
  class: "dp-input dp-input-sm",
5910
- "onUpdate:modelValue": (I) => g.label = I,
5942
+ "onUpdate:modelValue": (y) => I.label = y,
5911
5943
  placeholder: "标签"
5912
- }, null, 8, Wa), [
5913
- [D, g.label]
5944
+ }, null, 8, Ua), [
5945
+ [D, I.label]
5914
5946
  ]),
5915
5947
  k(C("input", {
5916
5948
  type: "text",
5917
5949
  class: "dp-input dp-input-sm",
5918
- "onUpdate:modelValue": (I) => g.value = I,
5950
+ "onUpdate:modelValue": (y) => I.value = y,
5919
5951
  placeholder: "值"
5920
- }, null, 8, ja), [
5921
- [D, g.value]
5952
+ }, null, 8, Ha), [
5953
+ [D, I.value]
5922
5954
  ]),
5923
5955
  k(C("input", {
5924
5956
  type: "text",
5925
5957
  class: "dp-input dp-input-xs",
5926
- "onUpdate:modelValue": (I) => g.unit = I,
5958
+ "onUpdate:modelValue": (y) => I.unit = y,
5927
5959
  placeholder: "单位"
5928
- }, null, 8, Fa), [
5929
- [D, g.unit]
5960
+ }, null, 8, za), [
5961
+ [D, I.unit]
5930
5962
  ]),
5931
5963
  k(C("input", {
5932
5964
  type: "text",
5933
5965
  class: "dp-input dp-input-xs",
5934
- "onUpdate:modelValue": (I) => g.code = I,
5966
+ "onUpdate:modelValue": (y) => I.code = y,
5935
5967
  placeholder: "编码"
5936
- }, null, 8, Ua), [
5937
- [D, g.code]
5968
+ }, null, 8, Ga), [
5969
+ [D, I.code]
5938
5970
  ]),
5939
5971
  C("button", {
5940
5972
  class: "dp-btn dp-btn-del",
5941
- onClick: (I) => h(x),
5973
+ onClick: (y) => g(x),
5942
5974
  title: "删除此项"
5943
- }, "✕", 8, Ha)
5975
+ }, "✕", 8, Ka)
5944
5976
  ]))), 128))
5945
5977
  ]),
5946
- C("div", za, [
5978
+ C("div", Ba, [
5947
5979
  k(C("input", {
5948
5980
  type: "text",
5949
5981
  class: "dp-input dp-input-sm",
5950
- "onUpdate:modelValue": f[2] || (f[2] = (g) => i.value = g),
5982
+ "onUpdate:modelValue": p[3] || (p[3] = (I) => o.value = I),
5951
5983
  placeholder: "标签",
5952
- onKeyup: ze(m, ["enter"])
5984
+ onKeyup: ze(f, ["enter"])
5953
5985
  }, null, 544), [
5954
- [D, i.value]
5986
+ [D, o.value]
5955
5987
  ]),
5956
5988
  k(C("input", {
5957
5989
  type: "text",
5958
5990
  class: "dp-input dp-input-sm",
5959
- "onUpdate:modelValue": f[3] || (f[3] = (g) => o.value = g),
5991
+ "onUpdate:modelValue": p[4] || (p[4] = (I) => a.value = I),
5960
5992
  placeholder: "值",
5961
- onKeyup: ze(m, ["enter"])
5993
+ onKeyup: ze(f, ["enter"])
5962
5994
  }, null, 544), [
5963
- [D, o.value]
5995
+ [D, a.value]
5964
5996
  ]),
5965
5997
  k(C("input", {
5966
5998
  type: "text",
5967
5999
  class: "dp-input dp-input-xs",
5968
- "onUpdate:modelValue": f[4] || (f[4] = (g) => a.value = g),
6000
+ "onUpdate:modelValue": p[5] || (p[5] = (I) => l.value = I),
5969
6001
  placeholder: "单位",
5970
- onKeyup: ze(m, ["enter"])
6002
+ onKeyup: ze(f, ["enter"])
5971
6003
  }, null, 544), [
5972
- [D, a.value]
6004
+ [D, l.value]
5973
6005
  ]),
5974
6006
  k(C("input", {
5975
6007
  type: "text",
5976
6008
  class: "dp-input dp-input-xs",
5977
- "onUpdate:modelValue": f[5] || (f[5] = (g) => l.value = g),
6009
+ "onUpdate:modelValue": p[6] || (p[6] = (I) => A.value = I),
5978
6010
  placeholder: "编码",
5979
- onKeyup: ze(m, ["enter"])
6011
+ onKeyup: ze(f, ["enter"])
5980
6012
  }, null, 544), [
5981
- [D, l.value]
6013
+ [D, A.value]
5982
6014
  ]),
5983
6015
  C("button", {
5984
6016
  class: "dp-btn dp-btn-add",
5985
- onClick: m,
6017
+ onClick: f,
5986
6018
  title: "添加"
5987
6019
  }, "+")
5988
6020
  ])
@@ -5990,8 +6022,8 @@ const zr = {
5990
6022
  ])
5991
6023
  ]));
5992
6024
  }
5993
- }), Ka = /* @__PURE__ */ ve(Ga, [["__scopeId", "data-v-b5a688e1"]]);
5994
- function Za(r) {
6025
+ }), Xa = /* @__PURE__ */ Se(Za, [["__scopeId", "data-v-0e6261f3"]]);
6026
+ function qa(r) {
5995
6027
  const e = W(/* @__PURE__ */ new Set()), t = (s) => {
5996
6028
  const i = new Set(e.value);
5997
6029
  i.has(s) ? i.delete(s) : i.add(s), e.value = i;
@@ -6003,7 +6035,7 @@ function Za(r) {
6003
6035
  i.add(o.uuid), o = o.parent;
6004
6036
  e.value = i;
6005
6037
  };
6006
- return Pe(
6038
+ return be(
6007
6039
  r,
6008
6040
  (s) => {
6009
6041
  s && n(s);
@@ -6011,22 +6043,22 @@ function Za(r) {
6011
6043
  { immediate: !0 }
6012
6044
  ), { expandedSet: e, toggleExpand: t };
6013
6045
  }
6014
- const Ba = {
6046
+ const Va = {
6015
6047
  key: 0,
6016
6048
  class: "property-panel"
6017
- }, Xa = { class: "property-group tree-group" }, qa = { class: "tree-container" }, Va = {
6049
+ }, Ja = { class: "property-group tree-group" }, Qa = { class: "tree-container" }, Ya = {
6018
6050
  key: 0,
6019
6051
  class: "tree-empty"
6020
- }, Ja = { class: "property-group" }, Qa = { class: "transform-mode-row" }, Ya = {
6052
+ }, _a = { class: "property-group" }, $a = { class: "transform-mode-row" }, el = {
6021
6053
  key: 0,
6022
6054
  class: "tabs"
6023
- }, _a = {
6055
+ }, tl = {
6024
6056
  key: 1,
6025
6057
  class: "tab-content"
6026
- }, $a = {
6058
+ }, sl = {
6027
6059
  key: 1,
6028
6060
  class: "property-panel empty"
6029
- }, el = /* @__PURE__ */ xe({
6061
+ }, nl = /* @__PURE__ */ ve({
6030
6062
  __name: "index",
6031
6063
  props: {
6032
6064
  transform: {},
@@ -6036,134 +6068,134 @@ const Ba = {
6036
6068
  emits: ["propertyChange", "treeSelect", "treeDelete", "transformModeChange"],
6037
6069
  setup(r, { emit: e }) {
6038
6070
  const t = r, n = e, s = W("translate");
6039
- function i(m) {
6040
- s.value = m, n("transformModeChange", m);
6071
+ function i(g) {
6072
+ s.value = g, n("transformModeChange", g);
6041
6073
  }
6042
6074
  const o = () => n("propertyChange"), a = W("transform"), l = $e(() => {
6043
- var m;
6044
- return !!(t.selectedObject && ((m = t.selectedObject.userData) != null && m._hasDataPanel));
6045
- }), A = W(0), u = xn(t, "selectedObject"), { expandedSet: c, toggleExpand: d } = Za(u);
6046
- vn("treeExpand", { expandedSet: c, toggleExpand: d });
6047
- const h = (m) => {
6048
- A.value++, n("treeDelete", m);
6075
+ var g;
6076
+ return !!(t.selectedObject && ((g = t.selectedObject.userData) != null && g._hasDataPanel));
6077
+ }), A = W(0), u = xn(t, "selectedObject"), { expandedSet: c, toggleExpand: h } = qa(u);
6078
+ vn("treeExpand", { expandedSet: c, toggleExpand: h });
6079
+ const d = (g) => {
6080
+ A.value++, n("treeDelete", g);
6049
6081
  };
6050
- return (m, p) => r.transform ? (R(), P("div", Ba, [
6051
- C("div", Xa, [
6052
- p[7] || (p[7] = C("label", null, "场景物体", -1)),
6053
- C("div", qa, [
6054
- (R(!0), P(ke, null, Dt(r.treeData, (f) => (R(), nt(Xr, {
6055
- key: f.uuid,
6056
- node: f,
6082
+ return (g, f) => r.transform ? (R(), P("div", Va, [
6083
+ C("div", Ja, [
6084
+ f[7] || (f[7] = C("label", null, "场景物体", -1)),
6085
+ C("div", Qa, [
6086
+ (R(!0), P(Pe, null, Dt(r.treeData, (m) => (R(), nt(Xr, {
6087
+ key: m.uuid,
6088
+ node: m,
6057
6089
  "selected-object": r.selectedObject,
6058
6090
  version: A.value,
6059
- onSelect: p[0] || (p[0] = (g) => n("treeSelect", g)),
6060
- onDelete: h
6091
+ onSelect: f[0] || (f[0] = (p) => n("treeSelect", p)),
6092
+ onDelete: d
6061
6093
  }, null, 8, ["node", "selected-object", "version"]))), 128)),
6062
- r.treeData.length === 0 ? (R(), P("div", Va, "暂无物体")) : B("", !0)
6094
+ r.treeData.length === 0 ? (R(), P("div", Ya, "暂无物体")) : Z("", !0)
6063
6095
  ])
6064
6096
  ]),
6065
- C("div", Ja, [
6066
- p[8] || (p[8] = C("label", null, "全局属性", -1)),
6067
- C("div", Qa, [
6097
+ C("div", _a, [
6098
+ f[8] || (f[8] = C("label", null, "全局属性", -1)),
6099
+ C("div", $a, [
6068
6100
  C("button", {
6069
- class: ie(["mode-btn", { active: s.value === "translate" }]),
6101
+ class: oe(["mode-btn", { active: s.value === "translate" }]),
6070
6102
  title: "移动 (W)",
6071
- onClick: p[1] || (p[1] = (f) => i("translate"))
6103
+ onClick: f[1] || (f[1] = (m) => i("translate"))
6072
6104
  }, " ↕ 移动 ", 2),
6073
6105
  C("button", {
6074
- class: ie(["mode-btn", { active: s.value === "rotate" }]),
6106
+ class: oe(["mode-btn", { active: s.value === "rotate" }]),
6075
6107
  title: "旋转 (E)",
6076
- onClick: p[2] || (p[2] = (f) => i("rotate"))
6108
+ onClick: f[2] || (f[2] = (m) => i("rotate"))
6077
6109
  }, " ↻ 旋转 ", 2),
6078
6110
  C("button", {
6079
- class: ie(["mode-btn", { active: s.value === "scale" }]),
6111
+ class: oe(["mode-btn", { active: s.value === "scale" }]),
6080
6112
  title: "缩放 (R)",
6081
- onClick: p[3] || (p[3] = (f) => i("scale"))
6113
+ onClick: f[3] || (f[3] = (m) => i("scale"))
6082
6114
  }, " ⤡ 缩放 ", 2)
6083
6115
  ])
6084
6116
  ]),
6085
- r.selectedObject ? (R(), P("div", Ya, [
6117
+ r.selectedObject ? (R(), P("div", el, [
6086
6118
  C("button", {
6087
- class: ie(["tab-btn", { active: a.value === "transform" }]),
6088
- onClick: p[4] || (p[4] = (f) => a.value = "transform")
6119
+ class: oe(["tab-btn", { active: a.value === "transform" }]),
6120
+ onClick: f[4] || (f[4] = (m) => a.value = "transform")
6089
6121
  }, " 🔄 变换 ", 2),
6090
6122
  C("button", {
6091
- class: ie(["tab-btn", { active: a.value === "userdata" }]),
6092
- onClick: p[5] || (p[5] = (f) => a.value = "userdata")
6123
+ class: oe(["tab-btn", { active: a.value === "userdata" }]),
6124
+ onClick: f[5] || (f[5] = (m) => a.value = "userdata")
6093
6125
  }, " 📋 自定义数据 ", 2),
6094
6126
  l.value ? (R(), P("button", {
6095
6127
  key: 0,
6096
- class: ie(["tab-btn", { active: a.value === "datapanel" }]),
6097
- onClick: p[6] || (p[6] = (f) => a.value = "datapanel")
6098
- }, " 📊 数据面板 ", 2)) : B("", !0)
6099
- ])) : B("", !0),
6100
- r.selectedObject ? (R(), P("div", _a, [
6101
- k(Ft(ca, {
6128
+ class: oe(["tab-btn", { active: a.value === "datapanel" }]),
6129
+ onClick: f[6] || (f[6] = (m) => a.value = "datapanel")
6130
+ }, " 📊 数据面板 ", 2)) : Z("", !0)
6131
+ ])) : Z("", !0),
6132
+ r.selectedObject ? (R(), P("div", tl, [
6133
+ k(Ut(ca, {
6102
6134
  transform: r.transform,
6103
6135
  "selected-object": r.selectedObject,
6104
6136
  onPropertyChange: o
6105
6137
  }, null, 8, ["transform", "selected-object"]), [
6106
6138
  [Le, a.value === "transform"]
6107
6139
  ]),
6108
- k(Ft(Ma, { "selected-object": r.selectedObject }, null, 8, ["selected-object"]), [
6140
+ k(Ut(Ma, { "selected-object": r.selectedObject }, null, 8, ["selected-object"]), [
6109
6141
  [Le, a.value === "userdata"]
6110
6142
  ]),
6111
- k(Ft(Ka, { "selected-object": r.selectedObject }, null, 8, ["selected-object"]), [
6143
+ k(Ut(Xa, { "selected-object": r.selectedObject }, null, 8, ["selected-object"]), [
6112
6144
  [Le, a.value === "datapanel"]
6113
6145
  ])
6114
- ])) : B("", !0)
6115
- ])) : (R(), P("div", $a, [...p[9] || (p[9] = [
6146
+ ])) : Z("", !0)
6147
+ ])) : (R(), P("div", sl, [...f[9] || (f[9] = [
6116
6148
  C("p", null, "未选中任何模型", -1)
6117
6149
  ])]));
6118
6150
  }
6119
- }), tl = /* @__PURE__ */ ve(el, [["__scopeId", "data-v-c92c9fa7"]]), sl = { class: "top-bar" }, nl = { class: "left-section" }, il = { class: "dropdown-menu" }, ol = { class: "dropdown-menu sub-menu" }, rl = { class: "dropdown-menu sub-menu" }, al = { class: "dropdown-menu" }, ll = /* @__PURE__ */ xe({
6151
+ }), il = /* @__PURE__ */ Se(nl, [["__scopeId", "data-v-c92c9fa7"]]), ol = { class: "top-bar" }, rl = { class: "left-section" }, al = { class: "dropdown-menu" }, ll = { class: "dropdown-menu sub-menu" }, Al = { class: "dropdown-menu sub-menu" }, cl = { class: "dropdown-menu" }, ul = /* @__PURE__ */ ve({
6120
6152
  __name: "TopBar",
6121
6153
  emits: ["addModel", "importModel"],
6122
6154
  setup(r, { emit: e }) {
6123
6155
  const t = W(!1), n = W(!1), s = W(!1), i = W(!1), o = e, a = W(null), l = () => {
6124
- var p;
6125
- return (p = a.value) == null ? void 0 : p.click();
6126
- }, A = (p) => {
6127
- const f = p.target;
6128
- f.files && f.files.length > 0 && (o("importModel", f.files[0]), f.value = "");
6129
- }, u = () => console.log("撤销"), c = () => console.log("删除物体"), d = async () => {
6130
- const p = zo();
6131
- console.log(JSON.parse(await p));
6132
- }, h = () => {
6156
+ var f;
6157
+ return (f = a.value) == null ? void 0 : f.click();
6158
+ }, A = (f) => {
6159
+ const m = f.target;
6160
+ m.files && m.files.length > 0 && (o("importModel", m.files[0]), m.value = "");
6161
+ }, u = () => console.log("撤销"), c = () => console.log("删除物体"), h = async () => {
6162
+ const f = zo();
6163
+ console.log(JSON.parse(await f));
6164
+ }, d = () => {
6133
6165
  if (!localStorage.getItem("test_id")) return localStorage.setItem("test_id", "123");
6134
6166
  ln(localStorage.getItem("test_id"));
6135
- }, m = () => on();
6136
- return (p, f) => (R(), P("div", sl, [
6137
- C("div", nl, [
6167
+ }, g = () => on();
6168
+ return (f, m) => (R(), P("div", ol, [
6169
+ C("div", rl, [
6138
6170
  C("div", {
6139
6171
  class: "dropdown-wrapper",
6140
- onMouseenter: f[9] || (f[9] = (g) => n.value = !0),
6141
- onMouseleave: f[10] || (f[10] = (g) => n.value = !1)
6172
+ onMouseenter: m[9] || (m[9] = (p) => n.value = !0),
6173
+ onMouseleave: m[10] || (m[10] = (p) => n.value = !1)
6142
6174
  }, [
6143
- f[15] || (f[15] = C("button", { class: "menu-btn" }, "添加", -1)),
6144
- k(C("div", il, [
6175
+ m[15] || (m[15] = C("button", { class: "menu-btn" }, "添加", -1)),
6176
+ k(C("div", al, [
6145
6177
  C("div", {
6146
6178
  class: "menu-item",
6147
6179
  onClick: u
6148
6180
  }, "组"),
6149
6181
  C("div", {
6150
6182
  class: "menu-item dropdown-wrapper sub-trigger",
6151
- onMouseenter: f[3] || (f[3] = (g) => s.value = !0),
6152
- onMouseleave: f[4] || (f[4] = (g) => s.value = !1)
6183
+ onMouseenter: m[3] || (m[3] = (p) => s.value = !0),
6184
+ onMouseleave: m[4] || (m[4] = (p) => s.value = !1)
6153
6185
  }, [
6154
- f[13] || (f[13] = C("span", null, "网格", -1)),
6155
- k(C("div", ol, [
6186
+ m[13] || (m[13] = C("span", null, "网格", -1)),
6187
+ k(C("div", ll, [
6156
6188
  C("div", {
6157
6189
  class: "menu-item",
6158
- onClick: f[0] || (f[0] = (g) => o("addModel", "box"))
6190
+ onClick: m[0] || (m[0] = (p) => o("addModel", "box"))
6159
6191
  }, " 正方体 "),
6160
6192
  C("div", {
6161
6193
  class: "menu-item",
6162
- onClick: f[1] || (f[1] = (g) => o("addModel", "sphere"))
6194
+ onClick: m[1] || (m[1] = (p) => o("addModel", "sphere"))
6163
6195
  }, " 球体 "),
6164
6196
  C("div", {
6165
6197
  class: "menu-item",
6166
- onClick: f[2] || (f[2] = (g) => o("addModel", "waterPlane"))
6198
+ onClick: m[2] || (m[2] = (p) => o("addModel", "waterPlane"))
6167
6199
  }, " 水面 "),
6168
6200
  C("div", {
6169
6201
  class: "menu-item",
@@ -6175,14 +6207,14 @@ const Ba = {
6175
6207
  ], 32),
6176
6208
  C("div", {
6177
6209
  class: "menu-item dropdown-wrapper sub-trigger",
6178
- onMouseenter: f[6] || (f[6] = (g) => i.value = !0),
6179
- onMouseleave: f[7] || (f[7] = (g) => i.value = !1)
6210
+ onMouseenter: m[6] || (m[6] = (p) => i.value = !0),
6211
+ onMouseleave: m[7] || (m[7] = (p) => i.value = !1)
6180
6212
  }, [
6181
- f[14] || (f[14] = C("span", null, "光源", -1)),
6182
- k(C("div", rl, [
6213
+ m[14] || (m[14] = C("span", null, "光源", -1)),
6214
+ k(C("div", Al, [
6183
6215
  C("div", {
6184
6216
  class: "menu-item",
6185
- onClick: f[5] || (f[5] = (g) => o("addModel", "directionalLight"))
6217
+ onClick: m[5] || (m[5] = (p) => o("addModel", "directionalLight"))
6186
6218
  }, " 平行光 ")
6187
6219
  ], 512), [
6188
6220
  [Le, i.value]
@@ -6194,7 +6226,7 @@ const Ba = {
6194
6226
  }, "摄像机"),
6195
6227
  C("div", {
6196
6228
  class: "menu-item",
6197
- onClick: f[8] || (f[8] = (g) => o("addModel", "dataPanel"))
6229
+ onClick: m[8] || (m[8] = (p) => o("addModel", "dataPanel"))
6198
6230
  }, " 数据面板 ")
6199
6231
  ], 512), [
6200
6232
  [Le, n.value]
@@ -6202,29 +6234,29 @@ const Ba = {
6202
6234
  ], 32),
6203
6235
  C("div", {
6204
6236
  class: "dropdown-wrapper",
6205
- onMouseenter: f[11] || (f[11] = (g) => t.value = !0),
6206
- onMouseleave: f[12] || (f[12] = (g) => t.value = !1)
6237
+ onMouseenter: m[11] || (m[11] = (p) => t.value = !0),
6238
+ onMouseleave: m[12] || (m[12] = (p) => t.value = !1)
6207
6239
  }, [
6208
- f[16] || (f[16] = C("button", { class: "menu-btn" }, "帮助", -1)),
6209
- k(C("div", al, [
6240
+ m[16] || (m[16] = C("button", { class: "menu-btn" }, "帮助", -1)),
6241
+ k(C("div", cl, [
6210
6242
  C("div", {
6211
6243
  class: "menu-item",
6212
- onClick: d
6244
+ onClick: h
6213
6245
  }, "获取场景"),
6214
6246
  C("div", {
6215
6247
  class: "menu-item",
6216
- onClick: h
6248
+ onClick: d
6217
6249
  }, "镜头拉近"),
6218
6250
  C("div", {
6219
6251
  class: "menu-item",
6220
- onClick: m
6252
+ onClick: g
6221
6253
  }, " 重置相机位置 ")
6222
6254
  ], 512), [
6223
6255
  [Le, t.value]
6224
6256
  ])
6225
6257
  ], 32)
6226
6258
  ]),
6227
- f[17] || (f[17] = C("div", { class: "right-section" }, [
6259
+ m[17] || (m[17] = C("div", { class: "right-section" }, [
6228
6260
  C("span", { class: "app-title" }, "3D 模型编辑器")
6229
6261
  ], -1)),
6230
6262
  C("input", {
@@ -6237,10 +6269,10 @@ const Ba = {
6237
6269
  }, null, 544)
6238
6270
  ]));
6239
6271
  }
6240
- }), Al = /* @__PURE__ */ ve(ll, [["__scopeId", "data-v-45df3361"]]), cl = { class: "bottom-bar" }, ul = /* @__PURE__ */ xe({
6272
+ }), dl = /* @__PURE__ */ Se(ul, [["__scopeId", "data-v-45df3361"]]), hl = { class: "bottom-bar" }, fl = /* @__PURE__ */ ve({
6241
6273
  __name: "BottomBar",
6242
6274
  setup(r) {
6243
- return (e, t) => (R(), P("div", cl, [...t[0] || (t[0] = [
6275
+ return (e, t) => (R(), P("div", hl, [...t[0] || (t[0] = [
6244
6276
  C("div", { class: "status-left" }, [
6245
6277
  C("span", null, "就绪")
6246
6278
  ], -1),
@@ -6249,10 +6281,10 @@ const Ba = {
6249
6281
  ], -1)
6250
6282
  ])]));
6251
6283
  }
6252
- }), dl = /* @__PURE__ */ ve(ul, [["__scopeId", "data-v-3427bb27"]]), hl = { class: "app-layout" }, fl = {
6284
+ }), pl = /* @__PURE__ */ Se(fl, [["__scopeId", "data-v-3427bb27"]]), ml = { class: "app-layout" }, gl = {
6253
6285
  key: 0,
6254
6286
  class: "loading-overlay"
6255
- }, pl = /* @__PURE__ */ xe({
6287
+ }, bl = /* @__PURE__ */ ve({
6256
6288
  __name: "DrawingBoard",
6257
6289
  props: {
6258
6290
  mode: { default: "edit" },
@@ -6260,97 +6292,97 @@ const Ba = {
6260
6292
  },
6261
6293
  setup(r) {
6262
6294
  const e = r, t = W(!1);
6263
- yo((g) => {
6264
- t.value = g;
6295
+ yo((p) => {
6296
+ t.value = p;
6265
6297
  });
6266
- const n = ps(null), s = Jt({
6298
+ const n = ps(null), s = Qt({
6267
6299
  position: { x: 0, y: 0, z: 0 },
6268
6300
  rotation: { x: 0, y: 0, z: 0 },
6269
6301
  scale: { x: 1, y: 1, z: 1 }
6270
- }), i = (g) => {
6271
- s.position.x = Number(g.position.x.toFixed(3)), s.position.y = Number(g.position.y.toFixed(3)), s.position.z = Number(g.position.z.toFixed(3)), s.rotation.x = Number(g.rotation.x.toFixed(3)), s.rotation.y = Number(g.rotation.y.toFixed(3)), s.rotation.z = Number(g.rotation.z.toFixed(3)), s.scale.x = Number(g.scale.x.toFixed(3)), s.scale.y = Number(g.scale.y.toFixed(3)), s.scale.z = Number(g.scale.z.toFixed(3));
6272
- }, o = (g) => {
6273
- g.position.set(
6302
+ }), i = (p) => {
6303
+ s.position.x = Number(p.position.x.toFixed(3)), s.position.y = Number(p.position.y.toFixed(3)), s.position.z = Number(p.position.z.toFixed(3)), s.rotation.x = Number(p.rotation.x.toFixed(3)), s.rotation.y = Number(p.rotation.y.toFixed(3)), s.rotation.z = Number(p.rotation.z.toFixed(3)), s.scale.x = Number(p.scale.x.toFixed(3)), s.scale.y = Number(p.scale.y.toFixed(3)), s.scale.z = Number(p.scale.z.toFixed(3));
6304
+ }, o = (p) => {
6305
+ p.position.set(
6274
6306
  s.position.x,
6275
6307
  s.position.y,
6276
6308
  s.position.z
6277
- ), g.rotation.set(
6309
+ ), p.rotation.set(
6278
6310
  s.rotation.x,
6279
6311
  s.rotation.y,
6280
6312
  s.rotation.z
6281
- ), g.scale.set(s.scale.x, s.scale.y, s.scale.z);
6313
+ ), p.scale.set(s.scale.x, s.scale.y, s.scale.z);
6282
6314
  };
6283
- Do((g) => {
6284
- n.value = g, g && i(g);
6285
- }), Wo((g) => {
6286
- i(g);
6315
+ Do((p) => {
6316
+ n.value = p, p && i(p);
6317
+ }), Wo((p) => {
6318
+ i(p);
6287
6319
  });
6288
6320
  const a = () => {
6289
6321
  if (n.value && (o(n.value), n.value.type === "DirectionalLight")) {
6290
- const g = n.value.userData.helper;
6291
- g && typeof g.update == "function" && g.update();
6322
+ const p = n.value.userData.helper;
6323
+ p && typeof p.update == "function" && p.update();
6292
6324
  }
6293
- }, l = (g) => Hr(g), A = async (g) => {
6325
+ }, l = (p) => Hr(p), A = async (p) => {
6294
6326
  try {
6295
- await Ur(g);
6296
- } catch (x) {
6297
- console.error("导入失败:", x), alert("导入失败:" + x.message);
6327
+ await Ur(p);
6328
+ } catch (I) {
6329
+ console.error("导入失败:", I), alert("导入失败:" + I.message);
6298
6330
  }
6299
6331
  }, u = ps([]);
6300
- jo((g) => {
6301
- u.value = g;
6332
+ jo((p) => {
6333
+ u.value = p;
6302
6334
  });
6303
6335
  const c = () => {
6304
- const g = Fo();
6305
- g && (u.value = g);
6306
- }, d = (g) => us(g), h = (g) => Po(g.uuid), m = (g) => {
6307
- xo(g);
6308
- }, p = W(null), f = () => {
6309
- p.value && co(p.value, e.mode, e.sceneData), c();
6336
+ const p = Fo();
6337
+ p && (u.value = p);
6338
+ }, h = (p) => us(p), d = (p) => Po(p.uuid), g = (p) => {
6339
+ xo(p);
6340
+ }, f = W(null), m = () => {
6341
+ f.value && co(f.value, e.mode, e.sceneData), c();
6310
6342
  };
6311
6343
  return Sn(() => {
6312
- f(), p.value && ro(p.value);
6344
+ m(), f.value && ro(f.value);
6313
6345
  }), Tn(() => {
6314
6346
  console.log("endset_three_editor destroy"), Ko();
6315
- }), (g, x) => (R(), P("div", hl, [
6316
- t.value ? (R(), P("div", fl, [...x[0] || (x[0] = [
6347
+ }), (p, I) => (R(), P("div", ml, [
6348
+ t.value ? (R(), P("div", gl, [...I[0] || (I[0] = [
6317
6349
  C("div", { class: "loading-spinner" }, null, -1),
6318
6350
  C("div", { class: "loading-text" }, "加载中...", -1)
6319
- ])])) : B("", !0),
6320
- r.mode === "edit" ? (R(), nt(Al, {
6351
+ ])])) : Z("", !0),
6352
+ r.mode === "edit" ? (R(), nt(dl, {
6321
6353
  key: 1,
6322
6354
  onAddModel: l,
6323
6355
  onImportModel: A
6324
- })) : B("", !0),
6356
+ })) : Z("", !0),
6325
6357
  C("div", {
6326
- class: ie(`editor-container editor-container-mode-${r.mode}`)
6358
+ class: oe(`editor-container editor-container-mode-${r.mode}`)
6327
6359
  }, [
6328
6360
  C("div", {
6329
- class: ie(`canvas canvas-mode-${r.mode}`),
6361
+ class: oe(`canvas canvas-mode-${r.mode}`),
6330
6362
  ref_key: "containerRef",
6331
- ref: p
6363
+ ref: f
6332
6364
  }, null, 2),
6333
- r.mode === "edit" ? (R(), nt(tl, {
6365
+ r.mode === "edit" ? (R(), nt(il, {
6334
6366
  key: 0,
6335
6367
  transform: s,
6336
6368
  "tree-data": u.value,
6337
6369
  "selected-object": n.value,
6338
6370
  onPropertyChange: a,
6339
- onTreeSelect: d,
6340
- onTreeDelete: h,
6341
- onTransformModeChange: m
6342
- }, null, 8, ["transform", "tree-data", "selected-object"])) : B("", !0)
6371
+ onTreeSelect: h,
6372
+ onTreeDelete: d,
6373
+ onTransformModeChange: g
6374
+ }, null, 8, ["transform", "tree-data", "selected-object"])) : Z("", !0)
6343
6375
  ], 2),
6344
- r.mode === "edit" ? (R(), nt(dl, { key: 2 })) : B("", !0)
6376
+ r.mode === "edit" ? (R(), nt(pl, { key: 2 })) : Z("", !0)
6345
6377
  ]));
6346
6378
  }
6347
- }), Sl = /* @__PURE__ */ ve(pl, [["__scopeId", "data-v-f80f67f2"]]);
6379
+ }), wl = /* @__PURE__ */ Se(bl, [["__scopeId", "data-v-f80f67f2"]]);
6348
6380
  export {
6349
- dl as BottomBar,
6381
+ pl as BottomBar,
6350
6382
  dt as DataPanel,
6351
- Sl as DrawingBoard,
6352
- tl as PropertyPanel,
6353
- Al as TopBar,
6383
+ wl as DrawingBoard,
6384
+ il as PropertyPanel,
6385
+ dl as TopBar,
6354
6386
  Xr as TreeItem,
6355
6387
  Or as addBox,
6356
6388
  Fr as addDataPanel,
@@ -6364,11 +6396,11 @@ export {
6364
6396
  Ao as disposeCSS2DRenderer,
6365
6397
  zo as exportSceneToJSON,
6366
6398
  To as focusOnObject,
6367
- Il as getCSS2DRenderer,
6399
+ vl as getCSS2DRenderer,
6368
6400
  Ho as getCamera,
6369
- cs as getDataPanel,
6370
- vl as getRenderer,
6371
- xl as getScene,
6401
+ Wt as getDataPanel,
6402
+ Ml as getRenderer,
6403
+ Tl as getScene,
6372
6404
  Fo as getSceneObjects,
6373
6405
  Uo as getSelectedObject,
6374
6406
  Ur as importModelFromFile,
@@ -6384,12 +6416,12 @@ export {
6384
6416
  lo as resizeCSS2DRenderer,
6385
6417
  ln as selectModelHandle,
6386
6418
  us as selectObject,
6387
- Gt as setLoading,
6419
+ Kt as setLoading,
6388
6420
  yo as setLoadingCallback,
6389
6421
  Do as setSelectedObjectCallback,
6390
6422
  Wo as setTransformChangeCallback,
6391
6423
  xo as setTransformMode,
6392
- yl as updateDataPanelValue,
6393
- Za as useTreeExpand
6424
+ Sl as updateDataPanelValue,
6425
+ qa as useTreeExpand
6394
6426
  };
6395
6427
  //# sourceMappingURL=three-editor.es.js.map