@planara/core 3.2.0 → 3.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.es.js CHANGED
@@ -1,13 +1,13 @@
1
1
  import "reflect-metadata";
2
2
  import * as a from "three";
3
- import { Loader as wr, FileLoader as Sr, Color as Kt, SRGBColorSpace as qt, Group as xr, BufferGeometry as Ct, Float32BufferAttribute as U, LineBasicMaterial as we, Material as Ot, PointsMaterial as te, MeshPhongMaterial as Ar, LineSegments as Et, Points as Se, Mesh as Pt, Vector3 as z, Vector2 as Ir, Matrix3 as Cr, ColorManagement as Or } from "three";
4
- import { injectable as v, inject as c, injectAll as H, container as Er } from "tsyringe";
5
- import { FigureType as E, Figure as Pr, SelectMode as O, DisplayMode as J, SceneMode as T, ToolType as W, BenchmarkTestType as X, BenchmarkTestStatus as Pe, DEFAULT_TOOL_RULES as Lr, ResponseType as G } from "@planara/types";
6
- import { OrbitWithState as Tr, ModelingTransformControls as Dr, CameraAxesGizmo as jr, SymmetricAxesHelper as Vr } from "@planara/three";
7
- import { EventEmitter as Hr } from "events";
8
- import { makeAutoObservable as bt, observable as $r } from "mobx";
9
- const Rr = /^[og]\s*(.+)?/, Br = /^mtllib /, Fr = /^usemtl /, kr = /^usemap /, Lt = /\s+/, Tt = new z(), xe = new z(), Dt = new z(), jt = new z(), V = new z(), re = new Kt();
10
- function Gr() {
3
+ import { Loader as ws, FileLoader as Ss, Color as Kt, SRGBColorSpace as qt, Group as xs, BufferGeometry as Ct, Float32BufferAttribute as U, LineBasicMaterial as we, Material as Ot, PointsMaterial as te, MeshPhongMaterial as As, LineSegments as Et, Points as Se, Mesh as Pt, Vector3 as z, Vector2 as Is, Matrix3 as Cs, ColorManagement as Os } from "three";
4
+ import { injectable as v, inject as c, injectAll as H, container as Es } from "tsyringe";
5
+ import { FigureType as E, Figure as Ps, SelectMode as O, DisplayMode as J, SceneMode as T, ToolType as W, BenchmarkTestType as X, BenchmarkTestStatus as Pe, DEFAULT_TOOL_RULES as Ls, ResponseType as G } from "@planara/types";
6
+ import { OrbitWithState as Ts, ModelingTransformControls as Ds, CameraAxesGizmo as js, SymmetricAxesHelper as Vs } from "@planara/three";
7
+ import { EventEmitter as Hs } from "events";
8
+ import { makeAutoObservable as bt, observable as $s } from "mobx";
9
+ const Rs = /^[og]\s*(.+)?/, Bs = /^mtllib /, Fs = /^usemtl /, ks = /^usemap /, Lt = /\s+/, Tt = new z(), xe = new z(), Dt = new z(), jt = new z(), V = new z(), se = new Kt();
10
+ function Gs() {
11
11
  const e = {
12
12
  objects: [],
13
13
  object: {},
@@ -17,15 +17,15 @@ function Gr() {
17
17
  uvs: [],
18
18
  materials: {},
19
19
  materialLibraries: [],
20
- startObject: function(t, r) {
20
+ startObject: function(t, s) {
21
21
  if (this.object && this.object.fromDeclaration === !1) {
22
- this.object.name = t, this.object.fromDeclaration = r !== !1;
22
+ this.object.name = t, this.object.fromDeclaration = s !== !1;
23
23
  return;
24
24
  }
25
- const s = this.object && typeof this.object.currentMaterial == "function" ? this.object.currentMaterial() : void 0;
25
+ const r = this.object && typeof this.object.currentMaterial == "function" ? this.object.currentMaterial() : void 0;
26
26
  if (this.object && typeof this.object._finalize == "function" && this.object._finalize(!0), this.object = {
27
27
  name: t || "",
28
- fromDeclaration: r !== !1,
28
+ fromDeclaration: s !== !1,
29
29
  geometry: {
30
30
  vertices: [],
31
31
  normals: [],
@@ -77,8 +77,8 @@ function Gr() {
77
77
  smooth: this.smooth
78
78
  }), n;
79
79
  }
80
- }, s && s.name && typeof s.clone == "function") {
81
- const i = s.clone(0);
80
+ }, r && r.name && typeof r.clone == "function") {
81
+ const i = r.clone(0);
82
82
  i.inherited = !0, this.object.materials.push(i);
83
83
  }
84
84
  this.objects.push(this.object);
@@ -86,57 +86,57 @@ function Gr() {
86
86
  finalize: function() {
87
87
  this.object && typeof this.object._finalize == "function" && this.object._finalize(!0);
88
88
  },
89
- parseVertexIndex: function(t, r) {
90
- const s = parseInt(t, 10);
91
- return (s >= 0 ? s - 1 : s + r / 3) * 3;
89
+ parseVertexIndex: function(t, s) {
90
+ const r = parseInt(t, 10);
91
+ return (r >= 0 ? r - 1 : r + s / 3) * 3;
92
92
  },
93
- parseNormalIndex: function(t, r) {
94
- const s = parseInt(t, 10);
95
- return (s >= 0 ? s - 1 : s + r / 3) * 3;
93
+ parseNormalIndex: function(t, s) {
94
+ const r = parseInt(t, 10);
95
+ return (r >= 0 ? r - 1 : r + s / 3) * 3;
96
96
  },
97
- parseUVIndex: function(t, r) {
98
- const s = parseInt(t, 10);
99
- return (s >= 0 ? s - 1 : s + r / 2) * 2;
97
+ parseUVIndex: function(t, s) {
98
+ const r = parseInt(t, 10);
99
+ return (r >= 0 ? r - 1 : r + s / 2) * 2;
100
100
  },
101
- addVertex: function(t, r, s) {
101
+ addVertex: function(t, s, r) {
102
102
  const i = this.vertices, n = this.object.geometry.vertices;
103
- n.push(i[t + 0], i[t + 1], i[t + 2]), n.push(i[r + 0], i[r + 1], i[r + 2]), n.push(i[s + 0], i[s + 1], i[s + 2]);
103
+ n.push(i[t + 0], i[t + 1], i[t + 2]), n.push(i[s + 0], i[s + 1], i[s + 2]), n.push(i[r + 0], i[r + 1], i[r + 2]);
104
104
  },
105
105
  addVertexPoint: function(t) {
106
- const r = this.vertices;
107
- this.object.geometry.vertices.push(r[t + 0], r[t + 1], r[t + 2]);
106
+ const s = this.vertices;
107
+ this.object.geometry.vertices.push(s[t + 0], s[t + 1], s[t + 2]);
108
108
  },
109
109
  addVertexLine: function(t) {
110
- const r = this.vertices;
111
- this.object.geometry.vertices.push(r[t + 0], r[t + 1], r[t + 2]);
110
+ const s = this.vertices;
111
+ this.object.geometry.vertices.push(s[t + 0], s[t + 1], s[t + 2]);
112
112
  },
113
- addNormal: function(t, r, s) {
113
+ addNormal: function(t, s, r) {
114
114
  const i = this.normals, n = this.object.geometry.normals;
115
- n.push(i[t + 0], i[t + 1], i[t + 2]), n.push(i[r + 0], i[r + 1], i[r + 2]), n.push(i[s + 0], i[s + 1], i[s + 2]);
115
+ n.push(i[t + 0], i[t + 1], i[t + 2]), n.push(i[s + 0], i[s + 1], i[s + 2]), n.push(i[r + 0], i[r + 1], i[r + 2]);
116
116
  },
117
- addFaceNormal: function(t, r, s) {
117
+ addFaceNormal: function(t, s, r) {
118
118
  const i = this.vertices, n = this.object.geometry.normals;
119
- Tt.fromArray(i, t), xe.fromArray(i, r), Dt.fromArray(i, s), V.subVectors(Dt, xe), jt.subVectors(Tt, xe), V.cross(jt), V.normalize(), n.push(V.x, V.y, V.z), n.push(V.x, V.y, V.z), n.push(V.x, V.y, V.z);
119
+ Tt.fromArray(i, t), xe.fromArray(i, s), Dt.fromArray(i, r), V.subVectors(Dt, xe), jt.subVectors(Tt, xe), V.cross(jt), V.normalize(), n.push(V.x, V.y, V.z), n.push(V.x, V.y, V.z), n.push(V.x, V.y, V.z);
120
120
  },
121
- addColor: function(t, r, s) {
121
+ addColor: function(t, s, r) {
122
122
  const i = this.colors, n = this.object.geometry.colors;
123
- i[t] !== void 0 && n.push(i[t + 0], i[t + 1], i[t + 2]), i[r] !== void 0 && n.push(i[r + 0], i[r + 1], i[r + 2]), i[s] !== void 0 && n.push(i[s + 0], i[s + 1], i[s + 2]);
123
+ i[t] !== void 0 && n.push(i[t + 0], i[t + 1], i[t + 2]), i[s] !== void 0 && n.push(i[s + 0], i[s + 1], i[s + 2]), i[r] !== void 0 && n.push(i[r + 0], i[r + 1], i[r + 2]);
124
124
  },
125
- addUV: function(t, r, s) {
125
+ addUV: function(t, s, r) {
126
126
  const i = this.uvs, n = this.object.geometry.uvs;
127
- n.push(i[t + 0], i[t + 1]), n.push(i[r + 0], i[r + 1]), n.push(i[s + 0], i[s + 1]);
127
+ n.push(i[t + 0], i[t + 1]), n.push(i[s + 0], i[s + 1]), n.push(i[r + 0], i[r + 1]);
128
128
  },
129
129
  addDefaultUV: function() {
130
130
  const t = this.object.geometry.uvs;
131
131
  t.push(0, 0), t.push(0, 0), t.push(0, 0);
132
132
  },
133
133
  addUVLine: function(t) {
134
- const r = this.uvs;
135
- this.object.geometry.uvs.push(r[t + 0], r[t + 1]);
134
+ const s = this.uvs;
135
+ this.object.geometry.uvs.push(s[t + 0], s[t + 1]);
136
136
  },
137
- addFace: function(t, r, s, i, n, o, l, h, d) {
137
+ addFace: function(t, s, r, i, n, o, l, h, d) {
138
138
  const p = this.vertices.length;
139
- let u = this.parseVertexIndex(t, p), m = this.parseVertexIndex(r, p), f = this.parseVertexIndex(s, p);
139
+ let u = this.parseVertexIndex(t, p), m = this.parseVertexIndex(s, p), f = this.parseVertexIndex(r, p);
140
140
  if (this.addVertex(u, m, f), this.addColor(u, m, f), l !== void 0 && l !== "") {
141
141
  const _ = this.normals.length;
142
142
  u = this.parseNormalIndex(l, _), m = this.parseNormalIndex(h, _), f = this.parseNormalIndex(d, _), this.addNormal(u, m, f);
@@ -150,24 +150,24 @@ function Gr() {
150
150
  },
151
151
  addPointGeometry: function(t) {
152
152
  this.object.geometry.type = "Points";
153
- const r = this.vertices.length;
154
- for (let s = 0, i = t.length; s < i; s++) {
155
- const n = this.parseVertexIndex(t[s], r);
153
+ const s = this.vertices.length;
154
+ for (let r = 0, i = t.length; r < i; r++) {
155
+ const n = this.parseVertexIndex(t[r], s);
156
156
  this.addVertexPoint(n), this.addColor(n);
157
157
  }
158
158
  },
159
- addLineGeometry: function(t, r) {
159
+ addLineGeometry: function(t, s) {
160
160
  this.object.geometry.type = "Line";
161
- const s = this.vertices.length, i = this.uvs.length;
161
+ const r = this.vertices.length, i = this.uvs.length;
162
162
  for (let n = 0, o = t.length; n < o; n++)
163
- this.addVertexLine(this.parseVertexIndex(t[n], s));
164
- for (let n = 0, o = r.length; n < o; n++)
165
- this.addUVLine(this.parseUVIndex(r[n], i));
163
+ this.addVertexLine(this.parseVertexIndex(t[n], r));
164
+ for (let n = 0, o = s.length; n < o; n++)
165
+ this.addUVLine(this.parseUVIndex(s[n], i));
166
166
  }
167
167
  };
168
168
  return e.startObject("", !1), e;
169
169
  }
170
- class zr extends wr {
170
+ class zs extends ws {
171
171
  /**
172
172
  * Constructs a new OBJ loader.
173
173
  *
@@ -185,15 +185,15 @@ class zr extends wr {
185
185
  * @param {onProgressCallback} onProgress - Executed while the loading is in progress.
186
186
  * @param {onErrorCallback} onError - Executed when errors occur.
187
187
  */
188
- load(t, r, s, i) {
189
- const n = this, o = new Sr(this.manager);
188
+ load(t, s, r, i) {
189
+ const n = this, o = new Ss(this.manager);
190
190
  o.setPath(this.path), o.setRequestHeader(this.requestHeader), o.setWithCredentials(this.withCredentials), o.load(t, function(l) {
191
191
  try {
192
- r(n.parse(l));
192
+ s(n.parse(l));
193
193
  } catch (h) {
194
194
  i ? i(h) : console.error(h), n.manager.itemError(t);
195
195
  }
196
- }, s, i);
196
+ }, r, i);
197
197
  }
198
198
  /**
199
199
  * Sets the material creator for this OBJ. This object is loaded via {@link MTLLoader}.
@@ -211,16 +211,16 @@ class zr extends wr {
211
211
  * @return {Group} The parsed OBJ.
212
212
  */
213
213
  parse(t) {
214
- const r = new Gr();
214
+ const s = new Gs();
215
215
  t.indexOf(`\r
216
216
  `) !== -1 && (t = t.replace(/\r\n/g, `
217
217
  `)), t.indexOf(`\\
218
218
  `) !== -1 && (t = t.replace(/\\\n/g, ""));
219
- const s = t.split(`
219
+ const r = t.split(`
220
220
  `);
221
221
  let i = [];
222
- for (let l = 0, h = s.length; l < h; l++) {
223
- const d = s[l].trimStart();
222
+ for (let l = 0, h = r.length; l < h; l++) {
223
+ const d = r[l].trimStart();
224
224
  if (d.length === 0) continue;
225
225
  const p = d.charAt(0);
226
226
  if (p !== "#")
@@ -228,26 +228,26 @@ class zr extends wr {
228
228
  const u = d.split(Lt);
229
229
  switch (u[0]) {
230
230
  case "v":
231
- r.vertices.push(
231
+ s.vertices.push(
232
232
  parseFloat(u[1]),
233
233
  parseFloat(u[2]),
234
234
  parseFloat(u[3])
235
- ), u.length >= 7 ? (re.setRGB(
235
+ ), u.length >= 7 ? (se.setRGB(
236
236
  parseFloat(u[4]),
237
237
  parseFloat(u[5]),
238
238
  parseFloat(u[6]),
239
239
  qt
240
- ), r.colors.push(re.r, re.g, re.b)) : r.colors.push(void 0, void 0, void 0);
240
+ ), s.colors.push(se.r, se.g, se.b)) : s.colors.push(void 0, void 0, void 0);
241
241
  break;
242
242
  case "vn":
243
- r.normals.push(
243
+ s.normals.push(
244
244
  parseFloat(u[1]),
245
245
  parseFloat(u[2]),
246
246
  parseFloat(u[3])
247
247
  );
248
248
  break;
249
249
  case "vt":
250
- r.uvs.push(
250
+ s.uvs.push(
251
251
  parseFloat(u[1]),
252
252
  parseFloat(u[2])
253
253
  );
@@ -265,7 +265,7 @@ class zr extends wr {
265
265
  const _ = f[0];
266
266
  for (let g = 1, b = f.length - 1; g < b; g++) {
267
267
  const x = f[g], S = f[g + 1];
268
- r.addFace(
268
+ s.addFace(
269
269
  _[0],
270
270
  x[0],
271
271
  S[0],
@@ -288,37 +288,37 @@ class zr extends wr {
288
288
  const b = u[_].split("/");
289
289
  b[0] !== "" && m.push(b[0]), b[1] !== "" && f.push(b[1]);
290
290
  }
291
- r.addLineGeometry(m, f);
291
+ s.addLineGeometry(m, f);
292
292
  } else if (p === "p") {
293
293
  const m = d.slice(1).trim().split(" ");
294
- r.addPointGeometry(m);
295
- } else if ((i = Rr.exec(d)) !== null) {
294
+ s.addPointGeometry(m);
295
+ } else if ((i = Rs.exec(d)) !== null) {
296
296
  const u = (" " + i[0].slice(1).trim()).slice(1);
297
- r.startObject(u);
298
- } else if (Fr.test(d))
299
- r.object.startMaterial(d.substring(7).trim(), r.materialLibraries);
300
- else if (Br.test(d))
301
- r.materialLibraries.push(d.substring(7).trim());
302
- else if (kr.test(d))
297
+ s.startObject(u);
298
+ } else if (Fs.test(d))
299
+ s.object.startMaterial(d.substring(7).trim(), s.materialLibraries);
300
+ else if (Bs.test(d))
301
+ s.materialLibraries.push(d.substring(7).trim());
302
+ else if (ks.test(d))
303
303
  console.warn('THREE.OBJLoader: Rendering identifier "usemap" not supported. Textures must be defined in MTL files.');
304
304
  else if (p === "s") {
305
305
  if (i = d.split(" "), i.length > 1) {
306
306
  const m = i[1].trim().toLowerCase();
307
- r.object.smooth = m !== "0" && m !== "off";
307
+ s.object.smooth = m !== "0" && m !== "off";
308
308
  } else
309
- r.object.smooth = !0;
310
- const u = r.object.currentMaterial();
311
- u && (u.smooth = r.object.smooth);
309
+ s.object.smooth = !0;
310
+ const u = s.object.currentMaterial();
311
+ u && (u.smooth = s.object.smooth);
312
312
  } else {
313
313
  if (d === "\0") continue;
314
314
  console.warn('THREE.OBJLoader: Unexpected line: "' + d + '"');
315
315
  }
316
316
  }
317
- r.finalize();
318
- const n = new xr();
319
- if (n.materialLibraries = [].concat(r.materialLibraries), !(r.objects.length === 1 && r.objects[0].geometry.vertices.length === 0) === !0)
320
- for (let l = 0, h = r.objects.length; l < h; l++) {
321
- const d = r.objects[l], p = d.geometry, u = d.materials, m = p.type === "Line", f = p.type === "Points";
317
+ s.finalize();
318
+ const n = new xs();
319
+ if (n.materialLibraries = [].concat(s.materialLibraries), !(s.objects.length === 1 && s.objects[0].geometry.vertices.length === 0) === !0)
320
+ for (let l = 0, h = s.objects.length; l < h; l++) {
321
+ const d = s.objects[l], p = d.geometry, u = d.materials, m = p.type === "Line", f = p.type === "Points";
322
322
  let _ = !1;
323
323
  if (p.vertices.length === 0) continue;
324
324
  const g = new Ct();
@@ -326,7 +326,7 @@ class zr extends wr {
326
326
  const b = [];
327
327
  for (let S = 0, w = u.length; S < w; S++) {
328
328
  const M = u[S], I = M.name + "_" + M.smooth + "_" + _;
329
- let y = r.materials[I];
329
+ let y = s.materials[I];
330
330
  if (this.materials !== null) {
331
331
  if (y = this.materials.create(M.name), m && y && !(y instanceof we)) {
332
332
  const C = new we();
@@ -336,7 +336,7 @@ class zr extends wr {
336
336
  Ot.prototype.copy.call(C, y), C.color.copy(y.color), C.map = y.map, y = C;
337
337
  }
338
338
  }
339
- y === void 0 && (m ? y = new we() : f ? y = new te({ size: 1, sizeAttenuation: !1 }) : y = new Ar(), y.name = M.name, y.flatShading = !M.smooth, y.vertexColors = _, r.materials[I] = y), b.push(y);
339
+ y === void 0 && (m ? y = new we() : f ? y = new te({ size: 1, sizeAttenuation: !1 }) : y = new As(), y.name = M.name, y.flatShading = !M.smooth, y.vertexColors = _, s.materials[I] = y), b.push(y);
340
340
  }
341
341
  let x;
342
342
  if (b.length > 1) {
@@ -349,16 +349,16 @@ class zr extends wr {
349
349
  m ? x = new Et(g, b[0]) : f ? x = new Se(g, b[0]) : x = new Pt(g, b[0]);
350
350
  x.name = d.name, n.add(x);
351
351
  }
352
- else if (r.vertices.length > 0) {
352
+ else if (s.vertices.length > 0) {
353
353
  const l = new te({ size: 1, sizeAttenuation: !1 }), h = new Ct();
354
- h.setAttribute("position", new U(r.vertices, 3)), r.colors.length > 0 && r.colors[0] !== void 0 && (h.setAttribute("color", new U(r.colors, 3)), l.vertexColors = !0);
354
+ h.setAttribute("position", new U(s.vertices, 3)), s.colors.length > 0 && s.colors[0] !== void 0 && (h.setAttribute("color", new U(s.colors, 3)), l.vertexColors = !0);
355
355
  const d = new Se(h, l);
356
356
  n.add(d);
357
357
  }
358
358
  return n;
359
359
  }
360
360
  }
361
- const be = 16776960, Me = 16755200, Wr = 2236962, Nr = 2236962, Ur = {
361
+ const be = 16776960, Me = 16755200, Ws = 2236962, Ns = 2236962, Us = {
362
362
  /**
363
363
  * Плоскость (PlaneGeometry)
364
364
  * @returns Плоскость размером 1x1 с одной сегментацией
@@ -450,38 +450,38 @@ const be = 16776960, Me = 16755200, Wr = 2236962, Nr = 2236962, Ur = {
450
450
  color: 12566463,
451
451
  metalness: 0,
452
452
  roughness: 0.6
453
- }), Xr = 8, k = 0, Jt = 1, Qt = 2, $ = 31, Yr = 0.03, Kr = 0.05, Mt = 900, Vt = 300, Ht = 300, $t = 300, yt = (e) => !!e && e.isMesh, er = (e) => {
453
+ }), Xs = 8, k = 0, Jt = 1, Qt = 2, $ = 31, Ys = 0.03, Ks = 0.05, Mt = 900, Vt = 300, Ht = 300, $t = 300, yt = (e) => !!e && e.isMesh, es = (e) => {
454
454
  let t = e;
455
455
  for (; t; ) {
456
456
  if (t.isMesh) return t;
457
457
  t = t.parent;
458
458
  }
459
459
  return null;
460
- }, tr = (e) => {
460
+ }, ts = (e) => {
461
461
  const t = new a.BufferGeometry();
462
462
  t.setAttribute("position", e.getAttribute("position")), t.computeBoundingSphere(), t.computeBoundingBox();
463
- const r = new a.PointsMaterial({
464
- color: Nr,
463
+ const s = new a.PointsMaterial({
464
+ color: Ns,
465
465
  size: 6,
466
466
  sizeAttenuation: !1,
467
467
  depthTest: !1,
468
468
  depthWrite: !1,
469
469
  transparent: !0,
470
470
  opacity: 0.9
471
- }), s = new a.Points(t, r);
472
- return s.layers.set(Qt), s.renderOrder = 1e3, s.visible = !1, s;
473
- }, rr = (e) => {
474
- const t = new a.EdgesGeometry(e), r = new a.LineSegments(
471
+ }), r = new a.Points(t, s);
472
+ return r.layers.set(Qt), r.renderOrder = 1e3, r.visible = !1, r;
473
+ }, ss = (e) => {
474
+ const t = new a.EdgesGeometry(e), s = new a.LineSegments(
475
475
  t,
476
- new a.LineBasicMaterial({ color: Wr, linewidth: 1 })
476
+ new a.LineBasicMaterial({ color: Ws, linewidth: 1 })
477
477
  );
478
- return r.layers.set(Jt), r;
479
- }, qr = (e) => {
480
- const t = { x: e.position.x, y: e.position.y, z: e.position.z }, r = { x: e.rotation.x, y: e.rotation.y, z: e.rotation.z }, s = { x: e.scale.x, y: e.scale.y, z: e.scale.z }, i = new a.Box3().setFromObject(e), n = new a.Vector3();
478
+ return s.layers.set(Jt), s;
479
+ }, qs = (e) => {
480
+ const t = { x: e.position.x, y: e.position.y, z: e.position.z }, s = { x: e.rotation.x, y: e.rotation.y, z: e.rotation.z }, r = { x: e.scale.x, y: e.scale.y, z: e.scale.z }, i = new a.Box3().setFromObject(e), n = new a.Vector3();
481
481
  i.getSize(n);
482
482
  const o = { x: n.x, y: n.y, z: n.z };
483
- return { position: t, rotation: r, scale: s, size: o };
484
- }, Zr = (e, t) => t ? {
483
+ return { position: t, rotation: s, scale: r, size: o };
484
+ }, Zs = (e, t) => t ? {
485
485
  background: {
486
486
  ...e.background,
487
487
  ...t.background
@@ -512,7 +512,7 @@ const be = 16776960, Me = 16755200, Wr = 2236962, Nr = 2236962, Ur = {
512
512
  }
513
513
  }
514
514
  }
515
- } : e, Y = (e) => (e.userData.isProxy = !0, e.userData.isExportable = !1, e), N = (e) => (e.userData.isExportable = !1, e), sr = (e) => e.userData.isProxy === !0, Jr = (e) => {
515
+ } : e, Y = (e) => (e.userData.isProxy = !0, e.userData.isExportable = !1, e), N = (e) => (e.userData.isExportable = !1, e), rs = (e) => e.userData.isProxy === !0, Js = (e) => {
516
516
  let t = e;
517
517
  for (; t; ) {
518
518
  if (t.userData.isExportable === !1)
@@ -520,19 +520,19 @@ const be = 16776960, Me = 16755200, Wr = 2236962, Nr = 2236962, Ur = {
520
520
  t = t.parent;
521
521
  }
522
522
  return !1;
523
- }, Qr = (e) => !yt(e) || !e.visible || sr(e) || Jr(e) ? !1 : e.userData.isExportable !== !1, es = (e) => {
523
+ }, Qs = (e) => !yt(e) || !e.visible || rs(e) || Js(e) ? !1 : e.userData.isExportable !== !1, er = (e) => {
524
524
  const t = new a.Group();
525
- return t.name = "Planara_OBJ_Export", e.updateMatrixWorld(!0), e.traverse((r) => {
526
- if (!Qr(r))
525
+ return t.name = "Planara_OBJ_Export", e.updateMatrixWorld(!0), e.traverse((s) => {
526
+ if (!Qs(s))
527
527
  return;
528
- const s = r.clone(!1);
529
- s.geometry = r.geometry.clone(), Array.isArray(r.material) ? s.material = r.material.map((i) => i.clone()) : s.material = r.material.clone(), s.matrix.copy(r.matrixWorld), s.matrixAutoUpdate = !1, t.add(s);
528
+ const r = s.clone(!1);
529
+ r.geometry = s.geometry.clone(), Array.isArray(s.material) ? r.material = s.material.map((i) => i.clone()) : r.material = s.material.clone(), r.matrix.copy(s.matrixWorld), r.matrixAutoUpdate = !1, t.add(r);
530
530
  }), t;
531
- }, ir = (e) => {
532
- const r = new zr().parse(e);
533
- r.updateMatrixWorld(!0);
534
- const s = [];
535
- return r.traverse((i) => {
531
+ }, is = (e) => {
532
+ const s = new zs().parse(e);
533
+ s.updateMatrixWorld(!0);
534
+ const r = [];
535
+ return s.traverse((i) => {
536
536
  if (!yt(i))
537
537
  return;
538
538
  const n = i.geometry.clone();
@@ -546,12 +546,12 @@ const be = 16776960, Me = 16755200, Wr = 2236962, Nr = 2236962, Ur = {
546
546
  h && h.setUsage && h.setUsage(a.DynamicDrawUsage);
547
547
  const d = new a.Mesh(n, Zt.clone());
548
548
  d.position.copy(l), d.layers.enable(k);
549
- const p = n.index ? n.toNonIndexed() : n, u = N(rr(p));
549
+ const p = n.index ? n.toNonIndexed() : n, u = N(ss(p));
550
550
  u.layers.enable(k), d.add(u);
551
- const m = N(tr(p));
552
- m.layers.enable(k), d.add(m), s.push(d);
553
- }), s;
554
- }, ts = {
551
+ const m = N(ts(p));
552
+ m.layers.enable(k), d.add(m), r.push(d);
553
+ }), r;
554
+ }, tr = {
555
555
  background: {
556
556
  color: 1710618,
557
557
  transparent: !1
@@ -588,11 +588,11 @@ const be = 16776960, Me = 16755200, Wr = 2236962, Nr = 2236962, Ur = {
588
588
  }
589
589
  }
590
590
  };
591
- var rs = Object.getOwnPropertyDescriptor, ss = (e, t, r, s) => {
592
- for (var i = s > 1 ? void 0 : s ? rs(t, r) : t, n = e.length - 1, o; n >= 0; n--)
591
+ var sr = Object.getOwnPropertyDescriptor, rr = (e, t, s, r) => {
592
+ for (var i = r > 1 ? void 0 : r ? sr(t, s) : t, n = e.length - 1, o; n >= 0; n--)
593
593
  (o = e[n]) && (i = o(i) || i);
594
594
  return i;
595
- }, Rt = (e, t) => (r, s) => t(r, s, e);
595
+ }, Rt = (e, t) => (s, r) => t(s, r, e);
596
596
  let Le = class {
597
597
  /**
598
598
  * Конструктор рендерера.
@@ -625,22 +625,22 @@ let Le = class {
625
625
  antialias: this._config.renderer.antialias,
626
626
  alpha: this._config.background.transparent || this._config.renderer.alpha
627
627
  }), this.renderer.setSize(this.canvas.clientWidth, this.canvas.clientHeight), this._config.background.transparent ? this.renderer.setClearAlpha(0) : this.renderer.setClearColor(this._config.background.color, 1), this._config.lights.ambient.enabled) {
628
- const r = new a.AmbientLight(
628
+ const s = new a.AmbientLight(
629
629
  this._config.lights.ambient.color,
630
630
  this._config.lights.ambient.intensity
631
631
  );
632
- this.scene.add(N(r));
632
+ this.scene.add(N(s));
633
633
  }
634
634
  if (this._config.lights.directional.enabled) {
635
- const r = new a.DirectionalLight(
635
+ const s = new a.DirectionalLight(
636
636
  this._config.lights.directional.color,
637
637
  this._config.lights.directional.intensity
638
638
  );
639
- r.position.set(
639
+ s.position.set(
640
640
  this._config.lights.directional.position.x,
641
641
  this._config.lights.directional.position.y,
642
642
  this._config.lights.directional.position.z
643
- ), this.scene.add(N(r));
643
+ ), this.scene.add(N(s));
644
644
  }
645
645
  }
646
646
  /**
@@ -770,7 +770,7 @@ let Le = class {
770
770
  this.scene = null, this.camera = null, this.renderer?.dispose(), this.canvas = null;
771
771
  }
772
772
  };
773
- Le = ss([
773
+ Le = rr([
774
774
  v(),
775
775
  Rt(0, c("Canvas")),
776
776
  Rt(1, c("RendererConfig"))
@@ -791,9 +791,9 @@ class Yn {
791
791
  * @param objContent - Строка содержимого .obj файла
792
792
  */
793
793
  load(t) {
794
- const r = t.split(`
794
+ const s = t.split(`
795
795
  `);
796
- for (const i of r) {
796
+ for (const i of s) {
797
797
  if (!i.trim() || i.startsWith("#")) continue;
798
798
  const n = i.trim().split(/\s+/);
799
799
  switch (n[0]) {
@@ -811,22 +811,22 @@ class Yn {
811
811
  break;
812
812
  }
813
813
  }
814
- const s = {
814
+ const r = {
815
815
  type: E.Custom,
816
816
  position: this._positions,
817
817
  ...this._normals.length > 0 && { normal: this._normals },
818
818
  ...this._uvs.length > 0 && { uv: this._uvs }
819
819
  };
820
- return new Pr(s);
820
+ return new Ps(r);
821
821
  }
822
822
  /**
823
823
  * Обрабатывает строку face (f) и разворачивает индексы в массивы для рендеринга
824
824
  */
825
825
  processFaceLine(t) {
826
- for (let r = 1; r < t.length; r++) {
827
- const s = t[r];
828
- if (!s) continue;
829
- const [i, n, o] = s.split("/"), l = i ? parseInt(i, 10) : void 0, h = n ? parseInt(n, 10) : void 0, d = o ? parseInt(o, 10) : void 0;
826
+ for (let s = 1; s < t.length; s++) {
827
+ const r = t[s];
828
+ if (!r) continue;
829
+ const [i, n, o] = r.split("/"), l = i ? parseInt(i, 10) : void 0, h = n ? parseInt(n, 10) : void 0, d = o ? parseInt(o, 10) : void 0;
830
830
  if (l !== void 0) {
831
831
  const p = this._tmpPositions[l - 1];
832
832
  p && this._positions.push(...p);
@@ -842,11 +842,11 @@ class Yn {
842
842
  }
843
843
  }
844
844
  }
845
- var is = Object.getOwnPropertyDescriptor, ns = (e, t, r, s) => {
846
- for (var i = s > 1 ? void 0 : s ? is(t, r) : t, n = e.length - 1, o; n >= 0; n--)
845
+ var ir = Object.getOwnPropertyDescriptor, nr = (e, t, s, r) => {
846
+ for (var i = r > 1 ? void 0 : r ? ir(t, s) : t, n = e.length - 1, o; n >= 0; n--)
847
847
  (o = e[n]) && (i = o(i) || i);
848
848
  return i;
849
- }, K = (e, t) => (r, s) => t(r, s, e);
849
+ }, K = (e, t) => (s, r) => t(s, r, e);
850
850
  let Te = class {
851
851
  /**
852
852
  * Конструктор контроллера.
@@ -860,8 +860,8 @@ let Te = class {
860
860
  * @internal
861
861
  * @constructor
862
862
  */
863
- constructor(e, t, r, s, i) {
864
- this._updatable = e, this._renderable = t, this._observers = r, this._runtime = s, this._renderer = i;
863
+ constructor(e, t, s, r, i) {
864
+ this._updatable = e, this._renderable = t, this._observers = s, this._runtime = r, this._renderer = i;
865
865
  }
866
866
  /**
867
867
  * ID анимационного цикла (для остановки)
@@ -903,7 +903,7 @@ let Te = class {
903
903
  this._animationId = null;
904
904
  }
905
905
  };
906
- Te = ns([
906
+ Te = nr([
907
907
  v(),
908
908
  K(0, H("IUpdatableModule", { isOptional: !0 })),
909
909
  K(1, H("IRenderableModule", { isOptional: !0 })),
@@ -911,11 +911,11 @@ Te = ns([
911
911
  K(3, H("IRuntimeModule", { isOptional: !0 })),
912
912
  K(4, c("IRenderable"))
913
913
  ], Te);
914
- var os = Object.getOwnPropertyDescriptor, as = (e, t, r, s) => {
915
- for (var i = s > 1 ? void 0 : s ? os(t, r) : t, n = e.length - 1, o; n >= 0; n--)
914
+ var or = Object.getOwnPropertyDescriptor, ar = (e, t, s, r) => {
915
+ for (var i = r > 1 ? void 0 : r ? or(t, s) : t, n = e.length - 1, o; n >= 0; n--)
916
916
  (o = e[n]) && (i = o(i) || i);
917
917
  return i;
918
- }, ls = (e, t) => (r, s) => t(r, s, e);
918
+ }, lr = (e, t) => (s, r) => t(s, r, e);
919
919
  let De = class {
920
920
  /** @constructor */
921
921
  constructor(e) {
@@ -928,15 +928,15 @@ let De = class {
928
928
  return this._controlsModule.isTransformDragging();
929
929
  }
930
930
  };
931
- De = as([
931
+ De = ar([
932
932
  v(),
933
- ls(0, c("ControlsModule"))
933
+ lr(0, c("ControlsModule"))
934
934
  ], De);
935
- var cs = Object.getOwnPropertyDescriptor, hs = (e, t, r, s) => {
936
- for (var i = s > 1 ? void 0 : s ? cs(t, r) : t, n = e.length - 1, o; n >= 0; n--)
935
+ var cr = Object.getOwnPropertyDescriptor, hr = (e, t, s, r) => {
936
+ for (var i = r > 1 ? void 0 : r ? cr(t, s) : t, n = e.length - 1, o; n >= 0; n--)
937
937
  (o = e[n]) && (i = o(i) || i);
938
938
  return i;
939
- }, ds = (e, t) => (r, s) => t(r, s, e);
939
+ }, dr = (e, t) => (s, r) => t(s, r, e);
940
940
  let je = class {
941
941
  /** @constructor */
942
942
  constructor(e) {
@@ -958,15 +958,15 @@ let je = class {
958
958
  return this._sceneModule.getMeshes();
959
959
  }
960
960
  };
961
- je = hs([
961
+ je = hr([
962
962
  v(),
963
- ds(0, c("SceneModule"))
963
+ dr(0, c("SceneModule"))
964
964
  ], je);
965
- var _s = Object.getOwnPropertyDescriptor, us = (e, t, r, s) => {
966
- for (var i = s > 1 ? void 0 : s ? _s(t, r) : t, n = e.length - 1, o; n >= 0; n--)
965
+ var _r = Object.getOwnPropertyDescriptor, ur = (e, t, s, r) => {
966
+ for (var i = r > 1 ? void 0 : r ? _r(t, s) : t, n = e.length - 1, o; n >= 0; n--)
967
967
  (o = e[n]) && (i = o(i) || i);
968
968
  return i;
969
- }, ps = (e, t) => (r, s) => t(r, s, e);
969
+ }, pr = (e, t) => (s, r) => t(s, r, e);
970
970
  let Ve = class {
971
971
  /** @constructor */
972
972
  constructor(e) {
@@ -976,15 +976,15 @@ let Ve = class {
976
976
  this._raycastModule.setRaycastMode(e);
977
977
  }
978
978
  };
979
- Ve = us([
979
+ Ve = ur([
980
980
  v(),
981
- ps(0, c("RaycastModule"))
981
+ pr(0, c("RaycastModule"))
982
982
  ], Ve);
983
- var ms = Object.getOwnPropertyDescriptor, fs = (e, t, r, s) => {
984
- for (var i = s > 1 ? void 0 : s ? ms(t, r) : t, n = e.length - 1, o; n >= 0; n--)
983
+ var mr = Object.getOwnPropertyDescriptor, fr = (e, t, s, r) => {
984
+ for (var i = r > 1 ? void 0 : r ? mr(t, s) : t, n = e.length - 1, o; n >= 0; n--)
985
985
  (o = e[n]) && (i = o(i) || i);
986
986
  return i;
987
- }, gs = (e, t) => (r, s) => t(r, s, e);
987
+ }, gr = (e, t) => (s, r) => t(s, r, e);
988
988
  let He = class {
989
989
  /** @constructor */
990
990
  constructor(e) {
@@ -1003,15 +1003,15 @@ let He = class {
1003
1003
  return this._controlsModule.onTransformChange(e);
1004
1004
  }
1005
1005
  };
1006
- He = fs([
1006
+ He = fr([
1007
1007
  v(),
1008
- gs(0, c("ControlsModule"))
1008
+ gr(0, c("ControlsModule"))
1009
1009
  ], He);
1010
- var vs = Object.getOwnPropertyDescriptor, bs = (e, t, r, s) => {
1011
- for (var i = s > 1 ? void 0 : s ? vs(t, r) : t, n = e.length - 1, o; n >= 0; n--)
1010
+ var vr = Object.getOwnPropertyDescriptor, br = (e, t, s, r) => {
1011
+ for (var i = r > 1 ? void 0 : r ? vr(t, s) : t, n = e.length - 1, o; n >= 0; n--)
1012
1012
  (o = e[n]) && (i = o(i) || i);
1013
1013
  return i;
1014
- }, Ms = (e, t) => (r, s) => t(r, s, e);
1014
+ }, Mr = (e, t) => (s, r) => t(s, r, e);
1015
1015
  let $e = class {
1016
1016
  constructor(e) {
1017
1017
  this._interactive = e;
@@ -1023,15 +1023,15 @@ let $e = class {
1023
1023
  this._interactive.forEach((t) => t.setInteractionEnabled(e));
1024
1024
  }
1025
1025
  };
1026
- $e = bs([
1026
+ $e = br([
1027
1027
  v(),
1028
- Ms(0, H("IInteractiveModule"))
1028
+ Mr(0, H("IInteractiveModule"))
1029
1029
  ], $e);
1030
- var ys = Object.getOwnPropertyDescriptor, ws = (e, t, r, s) => {
1031
- for (var i = s > 1 ? void 0 : s ? ys(t, r) : t, n = e.length - 1, o; n >= 0; n--)
1030
+ var yr = Object.getOwnPropertyDescriptor, wr = (e, t, s, r) => {
1031
+ for (var i = r > 1 ? void 0 : r ? yr(t, s) : t, n = e.length - 1, o; n >= 0; n--)
1032
1032
  (o = e[n]) && (i = o(i) || i);
1033
1033
  return i;
1034
- }, Ss = (e, t) => (r, s) => t(r, s, e);
1034
+ }, Sr = (e, t) => (s, r) => t(s, r, e);
1035
1035
  let Re = class {
1036
1036
  constructor(e) {
1037
1037
  this._cameraAccessApi = e;
@@ -1046,15 +1046,15 @@ let Re = class {
1046
1046
  this._cameraAccessApi.getCamera().layers.disable(e);
1047
1047
  }
1048
1048
  };
1049
- Re = ws([
1049
+ Re = wr([
1050
1050
  v(),
1051
- Ss(0, c("IRendererCameraAccess"))
1051
+ Sr(0, c("IRendererCameraAccess"))
1052
1052
  ], Re);
1053
- var xs = Object.getOwnPropertyDescriptor, As = (e, t, r, s) => {
1054
- for (var i = s > 1 ? void 0 : s ? xs(t, r) : t, n = e.length - 1, o; n >= 0; n--)
1053
+ var xr = Object.getOwnPropertyDescriptor, Ar = (e, t, s, r) => {
1054
+ for (var i = r > 1 ? void 0 : r ? xr(t, s) : t, n = e.length - 1, o; n >= 0; n--)
1055
1055
  (o = e[n]) && (i = o(i) || i);
1056
1056
  return i;
1057
- }, Is = (e, t) => (r, s) => t(r, s, e);
1057
+ }, Ir = (e, t) => (s, r) => t(s, r, e);
1058
1058
  let Be = class {
1059
1059
  constructor(e) {
1060
1060
  this._domAccessApi = e;
@@ -1066,15 +1066,15 @@ let Be = class {
1066
1066
  return this._domAccessApi.getDomElement();
1067
1067
  }
1068
1068
  };
1069
- Be = As([
1069
+ Be = Ar([
1070
1070
  v(),
1071
- Is(0, c("IRendererDomAccess"))
1071
+ Ir(0, c("IRendererDomAccess"))
1072
1072
  ], Be);
1073
- var Cs = Object.getOwnPropertyDescriptor, Os = (e, t, r, s) => {
1074
- for (var i = s > 1 ? void 0 : s ? Cs(t, r) : t, n = e.length - 1, o; n >= 0; n--)
1073
+ var Cr = Object.getOwnPropertyDescriptor, Or = (e, t, s, r) => {
1074
+ for (var i = r > 1 ? void 0 : r ? Cr(t, s) : t, n = e.length - 1, o; n >= 0; n--)
1075
1075
  (o = e[n]) && (i = o(i) || i);
1076
1076
  return i;
1077
- }, Es = (e, t) => (r, s) => t(r, s, e);
1077
+ }, Er = (e, t) => (s, r) => t(s, r, e);
1078
1078
  let Fe = class {
1079
1079
  constructor(e) {
1080
1080
  this._sceneAccessApi = e;
@@ -1089,8 +1089,8 @@ let Fe = class {
1089
1089
  this._sceneAccessApi.getScene().remove(e), t && this._disposeObject(e);
1090
1090
  }
1091
1091
  addObject(e, t) {
1092
- const r = this._sceneAccessApi.getScene();
1093
- r && (typeof t == "number" && e.layers.set(t), r.add(e));
1092
+ const s = this._sceneAccessApi.getScene();
1093
+ s && (typeof t == "number" && e.layers.set(t), s.add(e));
1094
1094
  }
1095
1095
  /**
1096
1096
  * Освобождает ресурсы объекта и его дочерних элементов.
@@ -1104,7 +1104,7 @@ let Fe = class {
1104
1104
  e.traverse((t) => {
1105
1105
  if (t instanceof a.Mesh) {
1106
1106
  if (t.geometry.dispose(), Array.isArray(t.material)) {
1107
- t.material.forEach((r) => this._disposeMaterial(r));
1107
+ t.material.forEach((s) => this._disposeMaterial(s));
1108
1108
  return;
1109
1109
  }
1110
1110
  this._disposeMaterial(t.material);
@@ -1125,15 +1125,15 @@ let Fe = class {
1125
1125
  }), e.dispose();
1126
1126
  }
1127
1127
  };
1128
- Fe = Os([
1128
+ Fe = Or([
1129
1129
  v(),
1130
- Es(0, c("IRendererSceneAccess"))
1130
+ Er(0, c("IRendererSceneAccess"))
1131
1131
  ], Fe);
1132
- var Ps = Object.getOwnPropertyDescriptor, Ls = (e, t, r, s) => {
1133
- for (var i = s > 1 ? void 0 : s ? Ps(t, r) : t, n = e.length - 1, o; n >= 0; n--)
1132
+ var Pr = Object.getOwnPropertyDescriptor, Lr = (e, t, s, r) => {
1133
+ for (var i = r > 1 ? void 0 : r ? Pr(t, s) : t, n = e.length - 1, o; n >= 0; n--)
1134
1134
  (o = e[n]) && (i = o(i) || i);
1135
1135
  return i;
1136
- }, Ts = (e, t) => (r, s) => t(r, s, e);
1136
+ }, Tr = (e, t) => (s, r) => t(s, r, e);
1137
1137
  let ke = class {
1138
1138
  /**
1139
1139
  * Конструктор API статистики рендерера.
@@ -1152,18 +1152,18 @@ let ke = class {
1152
1152
  return this._rendererInfoAccess.getRendererInfo();
1153
1153
  }
1154
1154
  };
1155
- ke = Ls([
1155
+ ke = Lr([
1156
1156
  v(),
1157
- Ts(0, c("IRendererInfoAccess"))
1157
+ Tr(0, c("IRendererInfoAccess"))
1158
1158
  ], ke);
1159
- var Ds = Object.getOwnPropertyDescriptor, js = (e, t, r, s) => {
1160
- for (var i = s > 1 ? void 0 : s ? Ds(t, r) : t, n = e.length - 1, o; n >= 0; n--)
1159
+ var Dr = Object.getOwnPropertyDescriptor, jr = (e, t, s, r) => {
1160
+ for (var i = r > 1 ? void 0 : r ? Dr(t, s) : t, n = e.length - 1, o; n >= 0; n--)
1161
1161
  (o = e[n]) && (i = o(i) || i);
1162
1162
  return i;
1163
- }, Ae = (e, t) => (r, s) => t(r, s, e);
1163
+ }, Ae = (e, t) => (s, r) => t(s, r, e);
1164
1164
  let me = class {
1165
- constructor(e, t, r) {
1166
- this._cameraApi = e, this._domApi = t, this._sceneApi = r;
1165
+ constructor(e, t, s) {
1166
+ this._cameraApi = e, this._domApi = t, this._sceneApi = s;
1167
1167
  }
1168
1168
  /**
1169
1169
  * Orbit-контроллер для управления камерой
@@ -1196,7 +1196,7 @@ let me = class {
1196
1196
  */
1197
1197
  _isInteractionEnabled = !0;
1198
1198
  init() {
1199
- this._orbit = new Tr(this._cameraApi.getCamera(), this._domApi.getDomElement()), this._orbit.enableDamping = !0, this._orbit.dampingFactor = 0.05, this._transform = new Dr(
1199
+ this._orbit = new Ts(this._cameraApi.getCamera(), this._domApi.getDomElement()), this._orbit.enableDamping = !0, this._orbit.dampingFactor = 0.05, this._transform = new Ds(
1200
1200
  this._cameraApi.getCamera(),
1201
1201
  this._domApi.getDomElement()
1202
1202
  ), this._transformHelper = this._transform.getHelper(), this._sceneApi.addToScene(N(this._transformHelper)), this._initMouseListeners();
@@ -1261,20 +1261,20 @@ let me = class {
1261
1261
  this._orbit?.dispose(), this._orbit = null, this._transform?.dispose(), this._transform = null, this._transformHelper?.parent && this._transformHelper.parent.remove(this._transformHelper);
1262
1262
  }
1263
1263
  };
1264
- me = js([
1264
+ me = jr([
1265
1265
  v(),
1266
1266
  Ae(0, c("ICameraApi")),
1267
1267
  Ae(1, c("IDomApi")),
1268
1268
  Ae(2, c("ISceneApi"))
1269
1269
  ], me);
1270
- var Vs = Object.getOwnPropertyDescriptor, Hs = (e, t, r, s) => {
1271
- for (var i = s > 1 ? void 0 : s ? Vs(t, r) : t, n = e.length - 1, o; n >= 0; n--)
1270
+ var Vr = Object.getOwnPropertyDescriptor, Hr = (e, t, s, r) => {
1271
+ for (var i = r > 1 ? void 0 : r ? Vr(t, s) : t, n = e.length - 1, o; n >= 0; n--)
1272
1272
  (o = e[n]) && (i = o(i) || i);
1273
1273
  return i;
1274
- }, Ie = (e, t) => (r, s) => t(r, s, e);
1274
+ }, Ie = (e, t) => (s, r) => t(s, r, e);
1275
1275
  let Ge = class {
1276
- constructor(e, t, r) {
1277
- this._cameraApi = e, this._domApi = t, this._rendererApi = r;
1276
+ constructor(e, t, s) {
1277
+ this._cameraApi = e, this._domApi = t, this._rendererApi = s;
1278
1278
  }
1279
1279
  /**
1280
1280
  * Gizmo для управления отображением perspective camera
@@ -1298,7 +1298,7 @@ let Ge = class {
1298
1298
  }
1299
1299
  init() {
1300
1300
  const e = this._cameraApi.getCamera(), t = this._rendererApi.getRenderer();
1301
- this._cameraGizmo = new jr(t, e, {
1301
+ this._cameraGizmo = new js(t, e, {
1302
1302
  size: 96,
1303
1303
  // Размер квадрата
1304
1304
  margin: 36
@@ -1315,14 +1315,14 @@ let Ge = class {
1315
1315
  this._cameraGizmo?.dispose(), this._cameraGizmo = null;
1316
1316
  }
1317
1317
  };
1318
- Ge = Hs([
1318
+ Ge = Hr([
1319
1319
  v(),
1320
1320
  Ie(0, c("ICameraApi")),
1321
1321
  Ie(1, c("IDomApi")),
1322
1322
  Ie(2, c("IRendererAccess"))
1323
1323
  ], Ge);
1324
- var $s = Object.getOwnPropertyDescriptor, Rs = (e, t, r, s) => {
1325
- for (var i = s > 1 ? void 0 : s ? $s(t, r) : t, n = e.length - 1, o; n >= 0; n--)
1324
+ var $r = Object.getOwnPropertyDescriptor, Rr = (e, t, s, r) => {
1325
+ for (var i = r > 1 ? void 0 : r ? $r(t, s) : t, n = e.length - 1, o; n >= 0; n--)
1326
1326
  (o = e[n]) && (i = o(i) || i);
1327
1327
  return i;
1328
1328
  };
@@ -1336,7 +1336,7 @@ let ze = class {
1336
1336
  _emitter;
1337
1337
  /** @constructor */
1338
1338
  constructor() {
1339
- this._emitter = new Hr();
1339
+ this._emitter = new Hs();
1340
1340
  }
1341
1341
  /**
1342
1342
  * Публикует событие в шину.
@@ -1425,17 +1425,17 @@ let ze = class {
1425
1425
  this._emitter.off(e, t);
1426
1426
  }
1427
1427
  };
1428
- ze = Rs([
1428
+ ze = Rr([
1429
1429
  v()
1430
1430
  ], ze);
1431
- var B = /* @__PURE__ */ ((e) => (e.SelectHover = "select.hover", e.SelectClick = "select.click", e))(B || {}), Bs = Object.getOwnPropertyDescriptor, Fs = (e, t, r, s) => {
1432
- for (var i = s > 1 ? void 0 : s ? Bs(t, r) : t, n = e.length - 1, o; n >= 0; n--)
1431
+ var B = /* @__PURE__ */ ((e) => (e.SelectHover = "select.hover", e.SelectClick = "select.click", e))(B || {}), Br = Object.getOwnPropertyDescriptor, Fr = (e, t, s, r) => {
1432
+ for (var i = r > 1 ? void 0 : r ? Br(t, s) : t, n = e.length - 1, o; n >= 0; n--)
1433
1433
  (o = e[n]) && (i = o(i) || i);
1434
1434
  return i;
1435
- }, q = (e, t) => (r, s) => t(r, s, e);
1435
+ }, q = (e, t) => (s, r) => t(s, r, e);
1436
1436
  let We = class {
1437
- constructor(e, t, r, s, i) {
1438
- this._domApi = e, this._cameraApi = t, this._meshApi = r, this._controlsState = s, this._bus = i;
1437
+ constructor(e, t, s, r, i) {
1438
+ this._domApi = e, this._cameraApi = t, this._meshApi = s, this._controlsState = r, this._bus = i;
1439
1439
  }
1440
1440
  /**
1441
1441
  * Raycast для получения событий наведения/клика по модели
@@ -1514,19 +1514,19 @@ let We = class {
1514
1514
  e.layers.set(k);
1515
1515
  break;
1516
1516
  case O.Edge:
1517
- e.layers.set(Jt), e.params.Line.threshold = Yr;
1517
+ e.layers.set(Jt), e.params.Line.threshold = Ys;
1518
1518
  break;
1519
1519
  case O.Vertex:
1520
- e.layers.set(Qt), e.params.Points.threshold = Kr;
1520
+ e.layers.set(Qt), e.params.Points.threshold = Ks;
1521
1521
  break;
1522
1522
  }
1523
1523
  }
1524
1524
  /** Возвращает ближайшее пересечение по текущему положению курсора */
1525
1525
  _getHitIntersection(e) {
1526
- const t = this._controlsState.isOrbitInteracting() || this._controlsState.isTransformDragging(), r = this._domApi.getCanvas(), s = this._cameraApi.getCamera(), i = this._meshApi.getMeshes();
1526
+ const t = this._controlsState.isOrbitInteracting() || this._controlsState.isTransformDragging(), s = this._domApi.getCanvas(), r = this._cameraApi.getCamera(), i = this._meshApi.getMeshes();
1527
1527
  if (t) return;
1528
- const n = r.getBoundingClientRect();
1529
- this._mouse.x = (e.clientX - n.left) / n.width * 2 - 1, this._mouse.y = -((e.clientY - n.top) / n.height) * 2 + 1, this._raycaster.setFromCamera(this._mouse, s);
1528
+ const n = s.getBoundingClientRect();
1529
+ this._mouse.x = (e.clientX - n.left) / n.width * 2 - 1, this._mouse.y = -((e.clientY - n.top) / n.height) * 2 + 1, this._raycaster.setFromCamera(this._mouse, r);
1530
1530
  const o = this._raycaster.intersectObjects(i, !0)[0] ?? null;
1531
1531
  if (this._currentRaycastMode === O.Mesh || this._currentRaycastMode === O.Face)
1532
1532
  return o;
@@ -1538,27 +1538,27 @@ let We = class {
1538
1538
  // Hover сравнивается не только по object, но и по режимному ключу попадания.
1539
1539
  // Это нужно для Face/Edge/Vertex режимов, где разные элементы могут принадлежать одному и тому же Object3D.
1540
1540
  /** Вспомогательный метод для получения модели, которую выбрали и отправки события в event bus */
1541
- _processRaycastEvent(e, t, r) {
1542
- const s = this._getHitIntersection(e), i = this._meshApi.getMeshes();
1543
- if (s === void 0) return;
1544
- const n = s?.object ?? null;
1545
- if (r) {
1546
- if (!s) {
1541
+ _processRaycastEvent(e, t, s) {
1542
+ const r = this._getHitIntersection(e), i = this._meshApi.getMeshes();
1543
+ if (r === void 0) return;
1544
+ const n = r?.object ?? null;
1545
+ if (s) {
1546
+ if (!r) {
1547
1547
  i.forEach((l) => l.userData.isHit = !1), this._lastHoverKey = null, this._bus.emit(t, null);
1548
1548
  return;
1549
1549
  }
1550
- const o = this._makeHoverKey(s);
1551
- o !== this._lastHoverKey && (i.forEach((l) => l.userData.isHit = !1), n && (n.userData.isHit = !0), this._lastHoverKey = o, this._bus.emit(t, { intersection: s }));
1550
+ const o = this._makeHoverKey(r);
1551
+ o !== this._lastHoverKey && (i.forEach((l) => l.userData.isHit = !1), n && (n.userData.isHit = !0), this._lastHoverKey = o, this._bus.emit(t, { intersection: r }));
1552
1552
  return;
1553
1553
  }
1554
- s && this._bus.emit(t, { intersection: s });
1554
+ r && this._bus.emit(t, { intersection: r });
1555
1555
  }
1556
1556
  /**
1557
1557
  * Поиск видимой части меша
1558
1558
  * необходимо это для того, чтобы отправлять только видимые элементы модели, а не все попадания
1559
1559
  */
1560
- _getVisibleHit(e, t, r = 1e-4) {
1561
- return e ? t ? e.distance <= t.distance + r ? e : null : e : null;
1560
+ _getVisibleHit(e, t, s = 1e-4) {
1561
+ return e ? t ? e.distance <= t.distance + s ? e : null : e : null;
1562
1562
  }
1563
1563
  /** Строит ключ hover-пересечения с учетом текущего режима выборки */
1564
1564
  _makeHoverKey(e) {
@@ -1607,7 +1607,7 @@ let We = class {
1607
1607
  this._removeMouseListeners(), this._isEventListenersAdded = !1, this._isInteractionEnabled = !0, this._lastHoverKey = null;
1608
1608
  }
1609
1609
  };
1610
- We = Fs([
1610
+ We = Fr([
1611
1611
  v(),
1612
1612
  q(0, c("IDomApi")),
1613
1613
  q(1, c("ICameraApi")),
@@ -1615,11 +1615,11 @@ We = Fs([
1615
1615
  q(3, c("IControlsStateApi")),
1616
1616
  q(4, c("EventBus"))
1617
1617
  ], We);
1618
- var ks = Object.getOwnPropertyDescriptor, Gs = (e, t, r, s) => {
1619
- for (var i = s > 1 ? void 0 : s ? ks(t, r) : t, n = e.length - 1, o; n >= 0; n--)
1618
+ var kr = Object.getOwnPropertyDescriptor, Gr = (e, t, s, r) => {
1619
+ for (var i = r > 1 ? void 0 : r ? kr(t, s) : t, n = e.length - 1, o; n >= 0; n--)
1620
1620
  (o = e[n]) && (i = o(i) || i);
1621
1621
  return i;
1622
- }, zs = (e, t) => (r, s) => t(r, s, e);
1622
+ }, zr = (e, t) => (s, r) => t(s, r, e);
1623
1623
  let Ne = class {
1624
1624
  constructor(e) {
1625
1625
  this._api = e;
@@ -1633,7 +1633,7 @@ let Ne = class {
1633
1633
  /** Базовый свет сцены */
1634
1634
  _light = null;
1635
1635
  init() {
1636
- this._grid = new a.GridHelper(10, 10), this._grid.position.y = -1e-3, this._api.addToScene(this._grid), this._axes = new Vr(6), this._api.addToScene(this._axes), this._light = new a.HemisphereLight(16777215, 4473924, 0.6), this._api.addToScene(this._light);
1636
+ this._grid = new a.GridHelper(10, 10), this._grid.position.y = -1e-3, this._api.addToScene(this._grid), this._axes = new Vs(6), this._api.addToScene(this._axes), this._light = new a.HemisphereLight(16777215, 4473924, 0.6), this._api.addToScene(this._light);
1637
1637
  }
1638
1638
  getMeshes() {
1639
1639
  return this._meshes;
@@ -1660,15 +1660,15 @@ let Ne = class {
1660
1660
  this._meshes.length = 0, this._grid && (this._api.removeFromScene(this._grid), this._grid.geometry.dispose(), this._grid.material.dispose(), this._grid = null), this._axes && (this._api.removeFromScene(this._axes), this._axes = null), this._light && (this._api.removeFromScene(this._light), this._light = null);
1661
1661
  }
1662
1662
  };
1663
- Ne = Gs([
1663
+ Ne = Gr([
1664
1664
  v(),
1665
- zs(0, c("ISceneApi"))
1665
+ zr(0, c("ISceneApi"))
1666
1666
  ], Ne);
1667
- var Ws = Object.getOwnPropertyDescriptor, Ns = (e, t, r, s) => {
1668
- for (var i = s > 1 ? void 0 : s ? Ws(t, r) : t, n = e.length - 1, o; n >= 0; n--)
1667
+ var Wr = Object.getOwnPropertyDescriptor, Nr = (e, t, s, r) => {
1668
+ for (var i = r > 1 ? void 0 : r ? Wr(t, s) : t, n = e.length - 1, o; n >= 0; n--)
1669
1669
  (o = e[n]) && (i = o(i) || i);
1670
1670
  return i;
1671
- }, Us = (e, t) => (r, s) => t(r, s, e);
1671
+ }, Ur = (e, t) => (s, r) => t(s, r, e);
1672
1672
  let Ue = class {
1673
1673
  constructor(e) {
1674
1674
  this._api = e;
@@ -1705,15 +1705,15 @@ let Ue = class {
1705
1705
  this._meshes.length = 0, this._light && (this._api.removeFromScene(this._light), this._light = null);
1706
1706
  }
1707
1707
  };
1708
- Ue = Ns([
1708
+ Ue = Nr([
1709
1709
  v(),
1710
- Us(0, c("ISceneApi"))
1710
+ Ur(0, c("ISceneApi"))
1711
1711
  ], Ue);
1712
- var Xs = Object.getOwnPropertyDescriptor, Ys = (e, t, r, s) => {
1713
- for (var i = s > 1 ? void 0 : s ? Xs(t, r) : t, n = e.length - 1, o; n >= 0; n--)
1712
+ var Xr = Object.getOwnPropertyDescriptor, Yr = (e, t, s, r) => {
1713
+ for (var i = r > 1 ? void 0 : r ? Xr(t, s) : t, n = e.length - 1, o; n >= 0; n--)
1714
1714
  (o = e[n]) && (i = o(i) || i);
1715
1715
  return i;
1716
- }, Ks = (e, t) => (r, s) => t(r, s, e);
1716
+ }, Kr = (e, t) => (s, r) => t(s, r, e);
1717
1717
  let Xe = class {
1718
1718
  /**
1719
1719
  * Конструктор модуля метрик.
@@ -1821,7 +1821,7 @@ let Xe = class {
1821
1821
  * @method
1822
1822
  */
1823
1823
  getMetrics() {
1824
- const e = this._getDurationMs(), t = this._frames > 0 ? this._frameTimeSum / this._frames : 0, r = {
1824
+ const e = this._getDurationMs(), t = this._frames > 0 ? this._frameTimeSum / this._frames : 0, s = {
1825
1825
  durationMs: e,
1826
1826
  frames: this._frames,
1827
1827
  averageFps: t > 0 ? 1e3 / t : 0,
@@ -1834,7 +1834,7 @@ let Xe = class {
1834
1834
  geometries: this._geometries,
1835
1835
  textures: this._textures
1836
1836
  };
1837
- return this._memoryUsedMb !== void 0 && (r.memoryUsedMb = this._memoryUsedMb), r;
1837
+ return this._memoryUsedMb !== void 0 && (s.memoryUsedMb = this._memoryUsedMb), s;
1838
1838
  }
1839
1839
  /**
1840
1840
  * Регистрирует слушатель изменения метрик.
@@ -1904,21 +1904,21 @@ let Xe = class {
1904
1904
  if (e - this._lastNotifyAt < this._notifyIntervalMs) return;
1905
1905
  this._lastNotifyAt = e;
1906
1906
  const t = this.getMetrics();
1907
- this._listeners.forEach((r) => r(t));
1907
+ this._listeners.forEach((s) => s(t));
1908
1908
  }
1909
1909
  };
1910
- Xe = Ys([
1910
+ Xe = Yr([
1911
1911
  v(),
1912
- Ks(0, c("IRendererInfoApi"))
1912
+ Kr(0, c("IRendererInfoApi"))
1913
1913
  ], Xe);
1914
- var P = /* @__PURE__ */ ((e) => (e[e.Display = 0] = "Display", e[e.Scene = 1] = "Scene", e[e.Select = 2] = "Select", e[e.Tool = 3] = "Tool", e[e.Benchmark = 4] = "Benchmark", e))(P || {}), qs = Object.getOwnPropertyDescriptor, Zs = (e, t, r, s) => {
1915
- for (var i = s > 1 ? void 0 : s ? qs(t, r) : t, n = e.length - 1, o; n >= 0; n--)
1914
+ var P = /* @__PURE__ */ ((e) => (e[e.Display = 0] = "Display", e[e.Scene = 1] = "Scene", e[e.Select = 2] = "Select", e[e.Tool = 3] = "Tool", e[e.Benchmark = 4] = "Benchmark", e))(P || {}), qr = Object.getOwnPropertyDescriptor, Zr = (e, t, s, r) => {
1915
+ for (var i = r > 1 ? void 0 : r ? qr(t, s) : t, n = e.length - 1, o; n >= 0; n--)
1916
1916
  (o = e[n]) && (i = o(i) || i);
1917
1917
  return i;
1918
- }, Bt = (e, t) => (r, s) => t(r, s, e);
1918
+ }, Bt = (e, t) => (s, r) => t(s, r, e);
1919
1919
  let Ye = class {
1920
1920
  constructor(e, t) {
1921
- this._store = t, this._handlers = new Map(e.map((r) => [r.mode, r]));
1921
+ this._store = t, this._handlers = new Map(e.map((s) => [s.mode, s]));
1922
1922
  }
1923
1923
  /** Текущий режим отображения */
1924
1924
  _currentMode = J.Plane;
@@ -1935,16 +1935,16 @@ let Ye = class {
1935
1935
  this._handlers && this._handlers.clear(), this._currentMode = J.Plane, this._store.setDisplayMode(this._currentMode);
1936
1936
  }
1937
1937
  };
1938
- Ye = Zs([
1938
+ Ye = Zr([
1939
1939
  v(),
1940
1940
  Bt(0, H("IDisplayHandler")),
1941
1941
  Bt(1, c("EditorStore"))
1942
1942
  ], Ye);
1943
- var Js = Object.getOwnPropertyDescriptor, Qs = (e, t, r, s) => {
1944
- for (var i = s > 1 ? void 0 : s ? Js(t, r) : t, n = e.length - 1, o; n >= 0; n--)
1943
+ var Jr = Object.getOwnPropertyDescriptor, Qr = (e, t, s, r) => {
1944
+ for (var i = r > 1 ? void 0 : r ? Jr(t, s) : t, n = e.length - 1, o; n >= 0; n--)
1945
1945
  (o = e[n]) && (i = o(i) || i);
1946
1946
  return i;
1947
- }, ei = (e, t) => (r, s) => t(r, s, e);
1947
+ }, ei = (e, t) => (s, r) => t(s, r, e);
1948
1948
  let Ke = class {
1949
1949
  /** Текущий режим редактирования сцены */
1950
1950
  _currentMode = T.AddFigure;
@@ -1964,18 +1964,18 @@ let Ke = class {
1964
1964
  this._handlers && this._handlers.clear(), this._currentMode = T.AddFigure;
1965
1965
  }
1966
1966
  };
1967
- Ke = Qs([
1967
+ Ke = Qr([
1968
1968
  v(),
1969
1969
  ei(0, H("ISceneHandler"))
1970
1970
  ], Ke);
1971
- var R = /* @__PURE__ */ ((e) => (e.Hover = "hover", e.Click = "click", e))(R || {}), ti = Object.getOwnPropertyDescriptor, ri = (e, t, r, s) => {
1972
- for (var i = s > 1 ? void 0 : s ? ti(t, r) : t, n = e.length - 1, o; n >= 0; n--)
1971
+ var R = /* @__PURE__ */ ((e) => (e.Hover = "hover", e.Click = "click", e))(R || {}), ti = Object.getOwnPropertyDescriptor, si = (e, t, s, r) => {
1972
+ for (var i = r > 1 ? void 0 : r ? ti(t, s) : t, n = e.length - 1, o; n >= 0; n--)
1973
1973
  (o = e[n]) && (i = o(i) || i);
1974
1974
  return i;
1975
- }, Ce = (e, t) => (r, s) => t(r, s, e);
1975
+ }, Ce = (e, t) => (s, r) => t(s, r, e);
1976
1976
  let qe = class {
1977
- constructor(e, t, r) {
1978
- this._eventBus = e, this._store = r, this._handlers = new Map(t.map((s) => [s.mode, s])), this._eventBus.on(B.SelectHover, this._onHover), this._eventBus.on(B.SelectClick, this._onClick);
1977
+ constructor(e, t, s) {
1978
+ this._eventBus = e, this._store = s, this._handlers = new Map(t.map((r) => [r.mode, r])), this._eventBus.on(B.SelectHover, this._onHover), this._eventBus.on(B.SelectClick, this._onClick);
1979
1979
  }
1980
1980
  /** Текущий режим выборки */
1981
1981
  _currentMode = O.Mesh;
@@ -2000,35 +2000,35 @@ let qe = class {
2000
2000
  this._handlers && this._handlers.clear(), this._eventBus.off(B.SelectHover, this._onHover), this._currentMode = O.Mesh, this._store.setSelectMode(this._currentMode);
2001
2001
  }
2002
2002
  };
2003
- qe = ri([
2003
+ qe = si([
2004
2004
  v(),
2005
2005
  Ce(0, c("EventBus")),
2006
2006
  Ce(1, H("ISelectHandler")),
2007
2007
  Ce(2, c("EditorStore"))
2008
2008
  ], qe);
2009
- const si = (e) => (t, r, s) => {
2010
- const i = s.value;
2009
+ const ri = (e) => (t, s, r) => {
2010
+ const i = r.value;
2011
2011
  if (!i)
2012
2012
  throw new Error("usePolicy can only be applied to method");
2013
- return s.value = function(...n) {
2013
+ return r.value = function(...n) {
2014
2014
  return e(this).check(...n), i.apply(this, n);
2015
- }, s;
2016
- }, nr = (e) => (t, r, s) => {
2017
- const i = s.value;
2015
+ }, r;
2016
+ }, ns = (e) => (t, s, r) => {
2017
+ const i = r.value;
2018
2018
  if (!i)
2019
2019
  throw new Error("useValidator can only be applied to method");
2020
- return s.value = function(...n) {
2020
+ return r.value = function(...n) {
2021
2021
  return e(this).validate(...n), i.apply(this, n);
2022
- }, s;
2022
+ }, r;
2023
2023
  };
2024
- var ii = Object.defineProperty, ni = Object.getOwnPropertyDescriptor, or = (e, t, r, s) => {
2025
- for (var i = s > 1 ? void 0 : s ? ni(t, r) : t, n = e.length - 1, o; n >= 0; n--)
2026
- (o = e[n]) && (i = (s ? o(t, r, i) : o(i)) || i);
2027
- return s && i && ii(t, r, i), i;
2028
- }, Oe = (e, t) => (r, s) => t(r, s, e);
2024
+ var ii = Object.defineProperty, ni = Object.getOwnPropertyDescriptor, os = (e, t, s, r) => {
2025
+ for (var i = r > 1 ? void 0 : r ? ni(t, s) : t, n = e.length - 1, o; n >= 0; n--)
2026
+ (o = e[n]) && (i = (r ? o(t, s, i) : o(i)) || i);
2027
+ return r && i && ii(t, s, i), i;
2028
+ }, Oe = (e, t) => (s, r) => t(s, r, e);
2029
2029
  let fe = class {
2030
- constructor(e, t, r) {
2031
- this._store = t, this._policy = r, this._handlers = new Map(e.map((s) => [s.mode, s])), this._unsubSelected = this._store.onSelectedObjectChange(() => {
2030
+ constructor(e, t, s) {
2031
+ this._store = t, this._policy = s, this._handlers = new Map(e.map((r) => [r.mode, r])), this._unsubSelected = this._store.onSelectedObjectChange(() => {
2032
2032
  this._handlers.get(this._currentTool)?.handle();
2033
2033
  });
2034
2034
  }
@@ -2048,20 +2048,20 @@ let fe = class {
2048
2048
  this._unsubSelected?.(), this._handlers && this._handlers.clear(), this._currentTool = W.Translate, this._store.setToolType(this._currentTool);
2049
2049
  }
2050
2050
  };
2051
- or([
2052
- si((e) => e._policy)
2051
+ os([
2052
+ ri((e) => e._policy)
2053
2053
  ], fe.prototype, "manage", 1);
2054
- fe = or([
2054
+ fe = os([
2055
2055
  v(),
2056
2056
  Oe(0, H("IToolHandler")),
2057
2057
  Oe(1, c("EditorStore")),
2058
2058
  Oe(2, c("ToolPolicy"))
2059
2059
  ], fe);
2060
- var oi = Object.getOwnPropertyDescriptor, ai = (e, t, r, s) => {
2061
- for (var i = s > 1 ? void 0 : s ? oi(t, r) : t, n = e.length - 1, o; n >= 0; n--)
2060
+ var oi = Object.getOwnPropertyDescriptor, ai = (e, t, s, r) => {
2061
+ for (var i = r > 1 ? void 0 : r ? oi(t, s) : t, n = e.length - 1, o; n >= 0; n--)
2062
2062
  (o = e[n]) && (i = o(i) || i);
2063
2063
  return i;
2064
- }, li = (e, t) => (r, s) => t(r, s, e);
2064
+ }, li = (e, t) => (s, r) => t(s, r, e);
2065
2065
  let Ze = class {
2066
2066
  /** Тип фичи, за которую отвечает менеджер. */
2067
2067
  type = P.Benchmark;
@@ -2083,11 +2083,11 @@ Ze = ai([
2083
2083
  v(),
2084
2084
  li(0, H("IBenchmarkHandler"))
2085
2085
  ], Ze);
2086
- var ci = Object.getOwnPropertyDescriptor, hi = (e, t, r, s) => {
2087
- for (var i = s > 1 ? void 0 : s ? ci(t, r) : t, n = e.length - 1, o; n >= 0; n--)
2086
+ var ci = Object.getOwnPropertyDescriptor, hi = (e, t, s, r) => {
2087
+ for (var i = r > 1 ? void 0 : r ? ci(t, s) : t, n = e.length - 1, o; n >= 0; n--)
2088
2088
  (o = e[n]) && (i = o(i) || i);
2089
2089
  return i;
2090
- }, di = (e, t) => (r, s) => t(r, s, e);
2090
+ }, di = (e, t) => (s, r) => t(s, r, e);
2091
2091
  let Je = class {
2092
2092
  constructor(e) {
2093
2093
  this._api = e;
@@ -2105,11 +2105,11 @@ let Je = class {
2105
2105
  handle() {
2106
2106
  const e = this._api.getMeshes();
2107
2107
  for (const t of e) {
2108
- const r = Array.isArray(t.material) ? t.material : [t.material];
2109
- for (const s of r) this._enableWireframeOnMaterial(s);
2110
- t.traverse((s) => {
2111
- if (s.isLineSegments) {
2112
- const i = s;
2108
+ const s = Array.isArray(t.material) ? t.material : [t.material];
2109
+ for (const r of s) this._enableWireframeOnMaterial(r);
2110
+ t.traverse((r) => {
2111
+ if (r.isLineSegments) {
2112
+ const i = r;
2113
2113
  if (!this._prevColorLines.has(i.material)) {
2114
2114
  const o = i.material;
2115
2115
  this._prevColorLines.set(o, o.color.clone());
@@ -2126,8 +2126,8 @@ let Je = class {
2126
2126
  "wireframe" in e && (e.wireframe = t), e.needsUpdate = !0;
2127
2127
  this._prevWireframe.clear();
2128
2128
  for (const [e, t] of this._prevColorMesh) {
2129
- const r = e;
2130
- r.color?.isColor && r.color.copy(t);
2129
+ const s = e;
2130
+ s.color?.isColor && s.color.copy(t);
2131
2131
  }
2132
2132
  this._prevColorMesh.clear();
2133
2133
  for (const [e, t] of this._prevColorLines)
@@ -2148,14 +2148,14 @@ Je = hi([
2148
2148
  v(),
2149
2149
  di(0, c("IMeshApi"))
2150
2150
  ], Je);
2151
- var _i = Object.getOwnPropertyDescriptor, ui = (e, t, r, s) => {
2152
- for (var i = s > 1 ? void 0 : s ? _i(t, r) : t, n = e.length - 1, o; n >= 0; n--)
2151
+ var _i = Object.getOwnPropertyDescriptor, ui = (e, t, s, r) => {
2152
+ for (var i = r > 1 ? void 0 : r ? _i(t, s) : t, n = e.length - 1, o; n >= 0; n--)
2153
2153
  (o = e[n]) && (i = o(i) || i);
2154
2154
  return i;
2155
- }, se = (e, t) => (r, s) => t(r, s, e);
2155
+ }, re = (e, t) => (s, r) => t(s, r, e);
2156
2156
  let Qe = class {
2157
- constructor(e, t, r, s) {
2158
- this._sceneApi = e, this._cameraApi = t, this._raycastApi = r, this._store = s, this._cameraApi.enableCameraLayer($), this._hoverLine = Y(this._makeOverlayLine(this._hoverColor)), this._selectLine = Y(this._makeOverlayLine(this._selectColor)), this._sceneApi.addObject(this._hoverLine, $), this._sceneApi.addObject(this._selectLine, $);
2157
+ constructor(e, t, s, r) {
2158
+ this._sceneApi = e, this._cameraApi = t, this._raycastApi = s, this._store = r, this._cameraApi.enableCameraLayer($), this._hoverLine = Y(this._makeOverlayLine(this._hoverColor)), this._selectLine = Y(this._makeOverlayLine(this._selectColor)), this._sceneApi.addObject(this._hoverLine, $), this._sceneApi.addObject(this._selectLine, $);
2159
2159
  }
2160
2160
  /** Режим, которым управляет хендлер, нужен только менеджеру */
2161
2161
  mode = O.Edge;
@@ -2179,11 +2179,11 @@ let Qe = class {
2179
2179
  this._hoverLine.visible = !1, this._hovered = null;
2180
2180
  return;
2181
2181
  }
2182
- const r = e.intersection.object;
2183
- if (!r?.isLineSegments) return;
2184
- const s = r, i = Math.floor((e.intersection.index ?? -1) / 2);
2182
+ const s = e.intersection.object;
2183
+ if (!s?.isLineSegments) return;
2184
+ const r = s, i = Math.floor((e.intersection.index ?? -1) / 2);
2185
2185
  if (i < 0) return;
2186
- this._selected && this._same({ lines: s, seg: i }, this._selected) ? this._hoverLine.visible = !1 : (this._writeWorldSegment(this._hoverLine, s, i), this._hoverLine.visible = !0), this._hovered = { lines: s, seg: i };
2186
+ this._selected && this._same({ lines: r, seg: i }, this._selected) ? this._hoverLine.visible = !1 : (this._writeWorldSegment(this._hoverLine, r, i), this._hoverLine.visible = !0), this._hovered = { lines: r, seg: i };
2187
2187
  return;
2188
2188
  }
2189
2189
  if (t === R.Click) {
@@ -2191,11 +2191,11 @@ let Qe = class {
2191
2191
  this._selectLine.visible = !1, this._selected = null, this._store.setSelectedObject(null);
2192
2192
  return;
2193
2193
  }
2194
- const r = e.intersection.object;
2195
- if (!r?.isLineSegments) return;
2196
- const s = r, i = Math.floor((e.intersection.index ?? -1) / 2);
2194
+ const s = e.intersection.object;
2195
+ if (!s?.isLineSegments) return;
2196
+ const r = s, i = Math.floor((e.intersection.index ?? -1) / 2);
2197
2197
  if (i < 0) return;
2198
- this._writeWorldSegment(this._selectLine, s, i), this._centerAndOrientLineOnSegment(this._selectLine, s, i), this._selectLine.visible = !0, this._prepareEdgeMetadata(s, i), this._store.setSelectedObject(this._selectLine), this._selected = { lines: s, seg: i }, this._hovered && this._same(this._hovered, this._selected) && (this._hoverLine.visible = !1);
2198
+ this._writeWorldSegment(this._selectLine, r, i), this._centerAndOrientLineOnSegment(this._selectLine, r, i), this._selectLine.visible = !0, this._prepareEdgeMetadata(r, i), this._store.setSelectedObject(this._selectLine), this._selected = { lines: r, seg: i }, this._hovered && this._same(this._hovered, this._selected) && (this._hoverLine.visible = !1);
2199
2199
  }
2200
2200
  }
2201
2201
  /** Откат текущего режима выборки */
@@ -2213,21 +2213,21 @@ let Qe = class {
2213
2213
  _makeOverlayLine(e) {
2214
2214
  const t = new a.BufferGeometry();
2215
2215
  t.setAttribute("position", new a.Float32BufferAttribute(6, 3));
2216
- const r = new a.LineBasicMaterial({
2216
+ const s = new a.LineBasicMaterial({
2217
2217
  color: e,
2218
2218
  depthTest: !1,
2219
2219
  depthWrite: !1,
2220
2220
  transparent: !0,
2221
2221
  opacity: 1
2222
- }), s = new a.Line(t, r);
2223
- return s.renderOrder = 1e3, s.raycast = () => {
2224
- }, s.layers.set($), s.visible = !1, s;
2222
+ }), r = new a.Line(t, s);
2223
+ return r.renderOrder = 1e3, r.raycast = () => {
2224
+ }, r.layers.set($), r.visible = !1, r;
2225
2225
  }
2226
2226
  /** Локальные точки сегмента переводим в target (который висит на сцене) */
2227
- _writeWorldSegment(e, t, r) {
2228
- const s = t.geometry.getAttribute("position"), i = r * 2, n = i + 1, o = new a.Vector3(s.getX(i), s.getY(i), s.getZ(i)).applyMatrix4(
2227
+ _writeWorldSegment(e, t, s) {
2228
+ const r = t.geometry.getAttribute("position"), i = s * 2, n = i + 1, o = new a.Vector3(r.getX(i), r.getY(i), r.getZ(i)).applyMatrix4(
2229
2229
  t.matrixWorld
2230
- ), l = new a.Vector3(s.getX(n), s.getY(n), s.getZ(n)).applyMatrix4(
2230
+ ), l = new a.Vector3(r.getX(n), r.getY(n), r.getZ(n)).applyMatrix4(
2231
2231
  t.matrixWorld
2232
2232
  ), h = e.geometry.getAttribute("position");
2233
2233
  h.setXYZ(0, o.x, o.y, o.z), h.setXYZ(1, l.x, l.y, l.z), h.needsUpdate = !0;
@@ -2236,10 +2236,10 @@ let Qe = class {
2236
2236
  return !!e && !!t && e.lines === t.lines && e.seg === t.seg;
2237
2237
  }
2238
2238
  /** Центрует `THREE.Line` на сегменте и ориентирует её вдоль ребра */
2239
- _centerAndOrientLineOnSegment(e, t, r) {
2240
- const s = t.geometry.getAttribute("position"), i = r * 2, n = i + 1, o = new a.Vector3(s.getX(i), s.getY(i), s.getZ(i)).applyMatrix4(
2239
+ _centerAndOrientLineOnSegment(e, t, s) {
2240
+ const r = t.geometry.getAttribute("position"), i = s * 2, n = i + 1, o = new a.Vector3(r.getX(i), r.getY(i), r.getZ(i)).applyMatrix4(
2241
2241
  t.matrixWorld
2242
- ), l = new a.Vector3(s.getX(n), s.getY(n), s.getZ(n)).applyMatrix4(
2242
+ ), l = new a.Vector3(r.getX(n), r.getY(n), r.getZ(n)).applyMatrix4(
2243
2243
  t.matrixWorld
2244
2244
  ), h = new a.Vector3().subVectors(l, o), d = h.length();
2245
2245
  if (!isFinite(d) || d === 0) return;
@@ -2253,13 +2253,13 @@ let Qe = class {
2253
2253
  }
2254
2254
  /** Запись метаданных выбранного ребра для использования инструментов */
2255
2255
  _prepareEdgeMetadata(e, t) {
2256
- const r = er(e);
2257
- if (!r) return;
2258
- const s = e.geometry.getAttribute("position"), i = t * 2, n = i + 1, o = new a.Vector3(s.getX(i), s.getY(i), s.getZ(i)).applyMatrix4(
2256
+ const s = es(e);
2257
+ if (!s) return;
2258
+ const r = e.geometry.getAttribute("position"), i = t * 2, n = i + 1, o = new a.Vector3(r.getX(i), r.getY(i), r.getZ(i)).applyMatrix4(
2259
2259
  e.matrixWorld
2260
- ), l = new a.Vector3(s.getX(n), s.getY(n), s.getZ(n)).applyMatrix4(
2260
+ ), l = new a.Vector3(r.getX(n), r.getY(n), r.getZ(n)).applyMatrix4(
2261
2261
  e.matrixWorld
2262
- ), h = new a.Matrix4().copy(r.matrixWorld).invert(), d = o.clone().applyMatrix4(h), p = l.clone().applyMatrix4(h), m = r.geometry.getAttribute("position"), f = new a.Vector3(), _ = 1e-6, g = [], b = [];
2262
+ ), h = new a.Matrix4().copy(s.matrixWorld).invert(), d = o.clone().applyMatrix4(h), p = l.clone().applyMatrix4(h), m = s.geometry.getAttribute("position"), f = new a.Vector3(), _ = 1e-6, g = [], b = [];
2263
2263
  for (let A = 0; A < m.count; A++)
2264
2264
  f.fromBufferAttribute(m, A), f.distanceToSquared(d) < _ * _ ? g.push(A) : f.distanceToSquared(p) < _ * _ && b.push(A);
2265
2265
  const x = new a.Matrix4().copy(e.matrixWorld).invert(), S = o.clone().applyMatrix4(x), w = l.clone().applyMatrix4(x), M = e.geometry.getAttribute("position"), I = new a.Vector3(), y = [], C = [];
@@ -2268,7 +2268,7 @@ let Qe = class {
2268
2268
  this._selectLine.userData.edgeInfo = {
2269
2269
  lines: e,
2270
2270
  seg: t,
2271
- mesh: r,
2271
+ mesh: s,
2272
2272
  aIndices: g,
2273
2273
  bIndices: b,
2274
2274
  aEdgeIndices: y,
@@ -2278,19 +2278,19 @@ let Qe = class {
2278
2278
  };
2279
2279
  Qe = ui([
2280
2280
  v(),
2281
- se(0, c("ISceneApi")),
2282
- se(1, c("ICameraApi")),
2283
- se(2, c("IRaycastApi")),
2284
- se(3, c("EditorStore"))
2281
+ re(0, c("ISceneApi")),
2282
+ re(1, c("ICameraApi")),
2283
+ re(2, c("IRaycastApi")),
2284
+ re(3, c("EditorStore"))
2285
2285
  ], Qe);
2286
- var pi = Object.getOwnPropertyDescriptor, mi = (e, t, r, s) => {
2287
- for (var i = s > 1 ? void 0 : s ? pi(t, r) : t, n = e.length - 1, o; n >= 0; n--)
2286
+ var pi = Object.getOwnPropertyDescriptor, mi = (e, t, s, r) => {
2287
+ for (var i = r > 1 ? void 0 : r ? pi(t, s) : t, n = e.length - 1, o; n >= 0; n--)
2288
2288
  (o = e[n]) && (i = o(i) || i);
2289
2289
  return i;
2290
- }, ie = (e, t) => (r, s) => t(r, s, e);
2290
+ }, ie = (e, t) => (s, r) => t(s, r, e);
2291
2291
  let et = class {
2292
- constructor(e, t, r, s) {
2293
- this._cameraApi = e, this._sceneApi = t, this._raycastApi = r, this._store = s, this._cameraApi.enableCameraLayer($), this._hoverFace = Y(this._makeOverlayFace(this._hoverColor)), this._selectFace = Y(this._makeOverlayFace(this._selectColor)), this._sceneApi.addObject(this._hoverFace, $), this._sceneApi.addObject(this._selectFace, $);
2292
+ constructor(e, t, s, r) {
2293
+ this._cameraApi = e, this._sceneApi = t, this._raycastApi = s, this._store = r, this._cameraApi.enableCameraLayer($), this._hoverFace = Y(this._makeOverlayFace(this._hoverColor)), this._selectFace = Y(this._makeOverlayFace(this._selectColor)), this._sceneApi.addObject(this._hoverFace, $), this._sceneApi.addObject(this._selectFace, $);
2294
2294
  }
2295
2295
  /** Режим, которым управляет хендлер, нужен только менеджеру */
2296
2296
  mode = O.Face;
@@ -2323,11 +2323,11 @@ let et = class {
2323
2323
  this._hoverFace.visible = !1, this._hovered = null;
2324
2324
  return;
2325
2325
  }
2326
- const r = e.intersection.object;
2327
- if (!r?.isMesh) return;
2328
- const s = r, i = e.intersection.faceIndex ?? -1;
2326
+ const s = e.intersection.object;
2327
+ if (!s?.isMesh) return;
2328
+ const r = s, i = e.intersection.faceIndex ?? -1;
2329
2329
  if (i < 0) return;
2330
- const n = this._collectFaceGroup(s, i);
2330
+ const n = this._collectFaceGroup(r, i);
2331
2331
  if (!n) return;
2332
2332
  this._selected && this._same(n, this._selected) ? this._hoverFace.visible = !1 : (this._writeWorldFaceGroup(this._hoverFace, n), this._hoverFace.visible = !0), this._hovered = n;
2333
2333
  return;
@@ -2337,11 +2337,11 @@ let et = class {
2337
2337
  this._selectFace.visible = !1, this._selected = null, this._store.setSelectedObject(null);
2338
2338
  return;
2339
2339
  }
2340
- const r = e.intersection.object;
2341
- if (!r?.isMesh) return;
2342
- const s = r, i = e.intersection.faceIndex ?? -1;
2340
+ const s = e.intersection.object;
2341
+ if (!s?.isMesh) return;
2342
+ const r = s, i = e.intersection.faceIndex ?? -1;
2343
2343
  if (i < 0) return;
2344
- const n = this._collectFaceGroup(s, i);
2344
+ const n = this._collectFaceGroup(r, i);
2345
2345
  if (!n) return;
2346
2346
  this._writeWorldFaceGroup(this._selectFace, n), this._centerFaceProxy(this._selectFace), this._selectFace.visible = !0, this._prepareFaceMetadata(n), this._store.setSelectedObject(this._selectFace), this._selected = n, this._hovered && this._same(this._hovered, this._selected) && (this._hoverFace.visible = !1);
2347
2347
  }
@@ -2360,7 +2360,7 @@ let et = class {
2360
2360
  * геометрия которых переписывается под текущую грань.
2361
2361
  */
2362
2362
  _makeOverlayFace(e) {
2363
- const t = new a.BufferGeometry(), r = new a.MeshBasicMaterial({
2363
+ const t = new a.BufferGeometry(), s = new a.MeshBasicMaterial({
2364
2364
  color: e,
2365
2365
  transparent: !0,
2366
2366
  opacity: 0.35,
@@ -2370,18 +2370,18 @@ let et = class {
2370
2370
  polygonOffset: !0,
2371
2371
  polygonOffsetFactor: -1,
2372
2372
  polygonOffsetUnits: -1
2373
- }), s = new a.Mesh(t, r);
2374
- return s.renderOrder = 1e3, s.layers.set($), s.visible = !1, s.raycast = () => {
2375
- }, s;
2373
+ }), r = new a.Mesh(t, s);
2374
+ return r.renderOrder = 1e3, r.layers.set($), r.visible = !1, r.raycast = () => {
2375
+ }, r;
2376
2376
  }
2377
2377
  /**
2378
2378
  * Сбор логической грани как связной группы компланарных треугольников.
2379
2379
  * Если geometry неиндексированная — пока возвращаем только стартовый triangle.
2380
2380
  */
2381
2381
  _collectFaceGroup(e, t) {
2382
- const r = e.geometry, s = r.getAttribute("position");
2383
- if (!s) return null;
2384
- const i = r.index;
2382
+ const s = e.geometry, r = s.getAttribute("position");
2383
+ if (!r) return null;
2384
+ const i = s.index;
2385
2385
  if (!i) {
2386
2386
  const M = t * 3, I = t * 3 + 1, y = t * 3 + 2;
2387
2387
  return {
@@ -2394,13 +2394,13 @@ let et = class {
2394
2394
  }
2395
2395
  const n = Math.floor(i.count / 3);
2396
2396
  if (t < 0 || t >= n) return null;
2397
- const o = this._buildTriangleAdjacency(i, s), [l, h, d] = this._getTriangleIndices(i, t), p = this._readVertex(s, l), u = this._readVertex(s, h), m = this._readVertex(s, d), f = new a.Vector3().subVectors(u, p).cross(new a.Vector3().subVectors(m, p)).normalize(), _ = new a.Plane().setFromNormalAndCoplanarPoint(f, p), g = /* @__PURE__ */ new Set(), b = [], x = [t];
2397
+ const o = this._buildTriangleAdjacency(i, r), [l, h, d] = this._getTriangleIndices(i, t), p = this._readVertex(r, l), u = this._readVertex(r, h), m = this._readVertex(r, d), f = new a.Vector3().subVectors(u, p).cross(new a.Vector3().subVectors(m, p)).normalize(), _ = new a.Plane().setFromNormalAndCoplanarPoint(f, p), g = /* @__PURE__ */ new Set(), b = [], x = [t];
2398
2398
  for (; x.length > 0; ) {
2399
2399
  const M = x.pop();
2400
2400
  if (g.has(M)) continue;
2401
2401
  g.add(M);
2402
- const [I, y, C] = this._getTriangleIndices(i, M), A = this._readVertex(s, I), D = this._readVertex(s, y), j = this._readVertex(s, C), F = new a.Vector3().subVectors(D, A).cross(new a.Vector3().subVectors(j, A)).normalize(), Mr = Math.abs(F.dot(f)) >= 1 - this._normalEps, yr = Math.abs(_.distanceToPoint(A)) < this._planeEps && Math.abs(_.distanceToPoint(D)) < this._planeEps && Math.abs(_.distanceToPoint(j)) < this._planeEps;
2403
- if (!Mr || !yr) continue;
2402
+ const [I, y, C] = this._getTriangleIndices(i, M), A = this._readVertex(r, I), D = this._readVertex(r, y), j = this._readVertex(r, C), F = new a.Vector3().subVectors(D, A).cross(new a.Vector3().subVectors(j, A)).normalize(), Ms = Math.abs(F.dot(f)) >= 1 - this._normalEps, ys = Math.abs(_.distanceToPoint(A)) < this._planeEps && Math.abs(_.distanceToPoint(D)) < this._planeEps && Math.abs(_.distanceToPoint(j)) < this._planeEps;
2403
+ if (!Ms || !ys) continue;
2404
2404
  b.push(M);
2405
2405
  const At = o.get(M);
2406
2406
  if (At)
@@ -2423,12 +2423,12 @@ let et = class {
2423
2423
  }
2424
2424
  /** Перезаписывает overlay mesh world-space треугольниками выбранной грани */
2425
2425
  _writeWorldFaceGroup(e, t) {
2426
- const r = t.mesh.geometry, s = r.getAttribute("position"), i = r.index, n = new Float32Array(t.triangleIndices.length * 9);
2426
+ const s = t.mesh.geometry, r = s.getAttribute("position"), i = s.index, n = new Float32Array(t.triangleIndices.length * 9);
2427
2427
  let o = 0;
2428
2428
  for (const h of t.triangleIndices) {
2429
2429
  let d, p, u;
2430
2430
  i ? [d, p, u] = this._getTriangleIndices(i, h) : (d = h * 3, p = h * 3 + 1, u = h * 3 + 2);
2431
- const m = this._readVertex(s, d).applyMatrix4(t.mesh.matrixWorld), f = this._readVertex(s, p).applyMatrix4(t.mesh.matrixWorld), _ = this._readVertex(s, u).applyMatrix4(t.mesh.matrixWorld);
2431
+ const m = this._readVertex(r, d).applyMatrix4(t.mesh.matrixWorld), f = this._readVertex(r, p).applyMatrix4(t.mesh.matrixWorld), _ = this._readVertex(r, u).applyMatrix4(t.mesh.matrixWorld);
2432
2432
  n[o++] = m.x, n[o++] = m.y, n[o++] = m.z, n[o++] = f.x, n[o++] = f.y, n[o++] = f.z, n[o++] = _.x, n[o++] = _.y, n[o++] = _.z;
2433
2433
  }
2434
2434
  const l = e.geometry;
@@ -2436,19 +2436,19 @@ let et = class {
2436
2436
  }
2437
2437
  /** Сравнение двух логических граней */
2438
2438
  _same(e, t) {
2439
- return !!e && !!t && e.mesh === t.mesh && e.triangleIndices.length === t.triangleIndices.length && e.triangleIndices.every((r, s) => r === t.triangleIndices[s]);
2439
+ return !!e && !!t && e.mesh === t.mesh && e.triangleIndices.length === t.triangleIndices.length && e.triangleIndices.every((s, r) => s === t.triangleIndices[r]);
2440
2440
  }
2441
2441
  /** Подготовка метаданных выбранной грани для инструментов */
2442
2442
  _prepareFaceMetadata(e) {
2443
- const { vertexIndexGroups: t, proxyVertexMap: r, lines: s, lineVertexIndexGroups: i } = this._buildFaceVertexGroups(e);
2443
+ const { vertexIndexGroups: t, proxyVertexMap: s, lines: r, lineVertexIndexGroups: i } = this._buildFaceVertexGroups(e);
2444
2444
  this._selectFace.userData.faceInfo = {
2445
2445
  mesh: e.mesh,
2446
2446
  faceIndex: e.faceIndex,
2447
2447
  triangleIndices: e.triangleIndices,
2448
2448
  vertexIndices: e.vertexIndices,
2449
2449
  vertexIndexGroups: t,
2450
- proxyVertexMap: r,
2451
- lines: s,
2450
+ proxyVertexMap: s,
2451
+ lines: r,
2452
2452
  lineVertexIndexGroups: i
2453
2453
  };
2454
2454
  }
@@ -2457,32 +2457,32 @@ let et = class {
2457
2457
  * После записи world-space вершин переносит геометрию в локальные координаты proxy mesh.
2458
2458
  */
2459
2459
  _centerFaceProxy(e) {
2460
- const t = e.geometry, r = t.getAttribute("position");
2461
- if (!r || r.count === 0) return;
2462
- const s = new a.Vector3();
2463
- for (let i = 0; i < r.count; i++)
2464
- s.x += r.getX(i), s.y += r.getY(i), s.z += r.getZ(i);
2465
- s.multiplyScalar(1 / r.count);
2466
- for (let i = 0; i < r.count; i++)
2467
- r.setXYZ(i, r.getX(i) - s.x, r.getY(i) - s.y, r.getZ(i) - s.z);
2468
- r.needsUpdate = !0, e.position.copy(s), e.quaternion.identity(), e.scale.set(1, 1, 1), e.updateMatrixWorld(!0), t.computeBoundingBox(), t.computeBoundingSphere();
2460
+ const t = e.geometry, s = t.getAttribute("position");
2461
+ if (!s || s.count === 0) return;
2462
+ const r = new a.Vector3();
2463
+ for (let i = 0; i < s.count; i++)
2464
+ r.x += s.getX(i), r.y += s.getY(i), r.z += s.getZ(i);
2465
+ r.multiplyScalar(1 / s.count);
2466
+ for (let i = 0; i < s.count; i++)
2467
+ s.setXYZ(i, s.getX(i) - r.x, s.getY(i) - r.y, s.getZ(i) - r.z);
2468
+ s.needsUpdate = !0, e.position.copy(r), e.quaternion.identity(), e.scale.set(1, 1, 1), e.updateMatrixWorld(!0), t.computeBoundingBox(), t.computeBoundingSphere();
2469
2469
  }
2470
2470
  /** Регистрирует ребро треугольника в edge map */
2471
- _pushEdge(e, t, r, s) {
2472
- const i = t < r ? `${t}_${r}` : `${r}_${t}`, n = e.get(i);
2473
- n ? n.push(s) : e.set(i, [s]);
2471
+ _pushEdge(e, t, s, r) {
2472
+ const i = t < s ? `${t}_${s}` : `${s}_${t}`, n = e.get(i);
2473
+ n ? n.push(r) : e.set(i, [r]);
2474
2474
  }
2475
2475
  /** Строит граф соседства треугольников по общим ребрам */
2476
2476
  _buildTriangleAdjacency(e, t) {
2477
- const r = Math.floor(e.count / 3), s = /* @__PURE__ */ new Map(), i = this._buildWeldMap(e, t);
2478
- for (let l = 0; l < r; l++) {
2477
+ const s = Math.floor(e.count / 3), r = /* @__PURE__ */ new Map(), i = this._buildWeldMap(e, t);
2478
+ for (let l = 0; l < s; l++) {
2479
2479
  const [h, d, p] = this._getTriangleIndices(e, l), u = i.get(h), m = i.get(d), f = i.get(p);
2480
- this._pushEdge(s, u, m, l), this._pushEdge(s, m, f, l), this._pushEdge(s, f, u, l);
2480
+ this._pushEdge(r, u, m, l), this._pushEdge(r, m, f, l), this._pushEdge(r, f, u, l);
2481
2481
  }
2482
2482
  const n = /* @__PURE__ */ new Map();
2483
- for (let l = 0; l < r; l++)
2483
+ for (let l = 0; l < s; l++)
2484
2484
  n.set(l, /* @__PURE__ */ new Set());
2485
- for (const l of s.values())
2485
+ for (const l of r.values())
2486
2486
  if (!(l.length < 2))
2487
2487
  for (let h = 0; h < l.length; h++)
2488
2488
  for (let d = 0; d < l.length; d++)
@@ -2501,9 +2501,9 @@ let et = class {
2501
2501
  return new a.Vector3(e.getX(t), e.getY(t), e.getZ(t));
2502
2502
  }
2503
2503
  /** Построение ключа вершины по позиции */
2504
- _vertexKey(e, t, r = 1e-6) {
2505
- const s = Math.round(e.getX(t) / r), i = Math.round(e.getY(t) / r), n = Math.round(e.getZ(t) / r);
2506
- return `${s}_${i}_${n}`;
2504
+ _vertexKey(e, t, s = 1e-6) {
2505
+ const r = Math.round(e.getX(t) / s), i = Math.round(e.getY(t) / s), n = Math.round(e.getZ(t) / s);
2506
+ return `${r}_${i}_${n}`;
2507
2507
  }
2508
2508
  /**
2509
2509
  * Строит отображение исходных индексов вершин в "сваренные" ids по координате.
@@ -2511,27 +2511,27 @@ let et = class {
2511
2511
  * но используют разные индексы вершин (например, цилиндрические крышки, UV seams и т.п.).
2512
2512
  */
2513
2513
  _buildWeldMap(e, t) {
2514
- const r = /* @__PURE__ */ new Map(), s = /* @__PURE__ */ new Map();
2514
+ const s = /* @__PURE__ */ new Map(), r = /* @__PURE__ */ new Map();
2515
2515
  let i = 0;
2516
2516
  for (let n = 0; n < e.count; n++) {
2517
2517
  const o = e.getX(n);
2518
- if (s.has(o)) continue;
2518
+ if (r.has(o)) continue;
2519
2519
  const l = this._vertexKey(t, o);
2520
- let h = r.get(l);
2521
- h == null && (h = i++, r.set(l, h)), s.set(o, h);
2520
+ let h = s.get(l);
2521
+ h == null && (h = i++, s.set(l, h)), r.set(o, h);
2522
2522
  }
2523
- return s;
2523
+ return r;
2524
2524
  }
2525
2525
  /** Сбрасывает transform proxy-граням */
2526
2526
  _resetFaceProxyTransform(e) {
2527
2527
  e.position.set(0, 0, 0), e.quaternion.identity(), e.scale.set(1, 1, 1), e.updateMatrixWorld(!0);
2528
2528
  }
2529
2529
  _buildFaceVertexGroups(e) {
2530
- const r = e.mesh.geometry.getAttribute("position"), s = 1e-6, i = new a.Vector3(), n = e.vertexIndices, o = [], l = /* @__PURE__ */ new Map();
2530
+ const s = e.mesh.geometry.getAttribute("position"), r = 1e-6, i = new a.Vector3(), n = e.vertexIndices, o = [], l = /* @__PURE__ */ new Map();
2531
2531
  for (const m of n) {
2532
- const f = this._readVertex(r, m), _ = [];
2533
- for (let b = 0; b < r.count; b++)
2534
- i.fromBufferAttribute(r, b), i.distanceToSquared(f) < s * s && _.push(b);
2532
+ const f = this._readVertex(s, m), _ = [];
2533
+ for (let b = 0; b < s.count; b++)
2534
+ i.fromBufferAttribute(s, b), i.distanceToSquared(f) < r * r && _.push(b);
2535
2535
  const g = o.length;
2536
2536
  o.push(_);
2537
2537
  for (const b of _)
@@ -2555,11 +2555,11 @@ let et = class {
2555
2555
  return null;
2556
2556
  }
2557
2557
  _buildLineVertexGroups(e, t) {
2558
- const s = t.geometry.getAttribute("position"), n = e.mesh.geometry.getAttribute("position"), o = 1e-6, l = new a.Vector3(), h = t.matrixWorld, d = e.mesh.matrixWorld, p = [];
2558
+ const r = t.geometry.getAttribute("position"), n = e.mesh.geometry.getAttribute("position"), o = 1e-6, l = new a.Vector3(), h = t.matrixWorld, d = e.mesh.matrixWorld, p = [];
2559
2559
  for (const u of e.vertexIndices) {
2560
2560
  const m = this._readVertex(n, u).applyMatrix4(d), f = [];
2561
- for (let _ = 0; _ < s.count; _++)
2562
- l.fromBufferAttribute(s, _).applyMatrix4(h), l.distanceToSquared(m) < o * o && f.push(_);
2561
+ for (let _ = 0; _ < r.count; _++)
2562
+ l.fromBufferAttribute(r, _).applyMatrix4(h), l.distanceToSquared(m) < o * o && f.push(_);
2563
2563
  p.push(f);
2564
2564
  }
2565
2565
  return p;
@@ -2572,11 +2572,11 @@ et = mi([
2572
2572
  ie(2, c("IRaycastApi")),
2573
2573
  ie(3, c("EditorStore"))
2574
2574
  ], et);
2575
- var fi = Object.getOwnPropertyDescriptor, gi = (e, t, r, s) => {
2576
- for (var i = s > 1 ? void 0 : s ? fi(t, r) : t, n = e.length - 1, o; n >= 0; n--)
2575
+ var fi = Object.getOwnPropertyDescriptor, gi = (e, t, s, r) => {
2576
+ for (var i = r > 1 ? void 0 : r ? fi(t, s) : t, n = e.length - 1, o; n >= 0; n--)
2577
2577
  (o = e[n]) && (i = o(i) || i);
2578
2578
  return i;
2579
- }, Ft = (e, t) => (r, s) => t(r, s, e);
2579
+ }, Ft = (e, t) => (s, r) => t(s, r, e);
2580
2580
  let tt = class {
2581
2581
  constructor(e, t) {
2582
2582
  this._api = e, this._store = t;
@@ -2600,16 +2600,16 @@ let tt = class {
2600
2600
  this._hoveredMesh && this._hoveredMesh !== this._selectedMesh && this._restoreEdgesColor(this._hoveredMesh), this._hoveredMesh = null;
2601
2601
  return;
2602
2602
  }
2603
- const r = e.intersection.object;
2604
- this._hoveredMesh !== r && (this._hoveredMesh && this._hoveredMesh !== this._selectedMesh && this._restoreEdgesColor(this._hoveredMesh), r !== this._selectedMesh && this._paintEdges(r, this._hoverColor), this._hoveredMesh = r);
2603
+ const s = e.intersection.object;
2604
+ this._hoveredMesh !== s && (this._hoveredMesh && this._hoveredMesh !== this._selectedMesh && this._restoreEdgesColor(this._hoveredMesh), s !== this._selectedMesh && this._paintEdges(s, this._hoverColor), this._hoveredMesh = s);
2605
2605
  }
2606
2606
  if (t === R.Click) {
2607
2607
  if (!e) {
2608
2608
  this._selectedMesh && (this._restoreEdgesColor(this._selectedMesh), this._selectedMesh = null, this._store.setSelectedObject(null));
2609
2609
  return;
2610
2610
  }
2611
- const r = e.intersection.object;
2612
- this._selectedMesh && this._selectedMesh !== r && this._restoreEdgesColor(this._selectedMesh), this._paintEdges(r, this._selectColor), this._selectedMesh = r, this._store.setSelectedObject(r);
2611
+ const s = e.intersection.object;
2612
+ this._selectedMesh && this._selectedMesh !== s && this._restoreEdgesColor(this._selectedMesh), this._paintEdges(s, this._selectColor), this._selectedMesh = s, this._store.setSelectedObject(s);
2613
2613
  }
2614
2614
  }
2615
2615
  rollback() {
@@ -2623,11 +2623,11 @@ let tt = class {
2623
2623
  * Перекрасить рёбра меша и запомнить оригинальный цвет (один раз на LineSegments).
2624
2624
  */
2625
2625
  _paintEdges(e, t) {
2626
- e.children.forEach((r) => {
2627
- const s = r;
2628
- if (s.isLineSegments && s.material) {
2629
- const i = s.material;
2630
- this._origLineColors.has(s) || this._origLineColors.set(s, i.color.clone()), i.color.setHex(t), i.needsUpdate = !0;
2626
+ e.children.forEach((s) => {
2627
+ const r = s;
2628
+ if (r.isLineSegments && r.material) {
2629
+ const i = r.material;
2630
+ this._origLineColors.has(r) || this._origLineColors.set(r, i.color.clone()), i.color.setHex(t), i.needsUpdate = !0;
2631
2631
  }
2632
2632
  });
2633
2633
  }
@@ -2637,12 +2637,12 @@ let tt = class {
2637
2637
  */
2638
2638
  _restoreEdgesColor(e) {
2639
2639
  e.children.forEach((t) => {
2640
- const r = t;
2641
- if (r.isLineSegments && r.material) {
2642
- const s = this._origLineColors.get(r);
2643
- if (s) {
2644
- const i = r.material;
2645
- i.color.copy(s), i.needsUpdate = !0;
2640
+ const s = t;
2641
+ if (s.isLineSegments && s.material) {
2642
+ const r = this._origLineColors.get(s);
2643
+ if (r) {
2644
+ const i = s.material;
2645
+ i.color.copy(r), i.needsUpdate = !0;
2646
2646
  }
2647
2647
  }
2648
2648
  });
@@ -2653,14 +2653,14 @@ tt = gi([
2653
2653
  Ft(0, c("IRaycastApi")),
2654
2654
  Ft(1, c("EditorStore"))
2655
2655
  ], tt);
2656
- var vi = Object.getOwnPropertyDescriptor, bi = (e, t, r, s) => {
2657
- for (var i = s > 1 ? void 0 : s ? vi(t, r) : t, n = e.length - 1, o; n >= 0; n--)
2656
+ var vi = Object.getOwnPropertyDescriptor, bi = (e, t, s, r) => {
2657
+ for (var i = r > 1 ? void 0 : r ? vi(t, s) : t, n = e.length - 1, o; n >= 0; n--)
2658
2658
  (o = e[n]) && (i = o(i) || i);
2659
2659
  return i;
2660
- }, ne = (e, t) => (r, s) => t(r, s, e);
2661
- let rt = class {
2662
- constructor(e, t, r, s) {
2663
- this._cameraApi = e, this._sceneApi = t, this._raycastApi = r, this._store = s, this._cameraApi.enableCameraLayer($), this._hoverVertex = Y(this._makeOverlayVertex(this._hoverColor)), this._selectVertex = Y(this._makeOverlayVertex(this._selectColor)), this._sceneApi.addObject(this._hoverVertex, $), this._sceneApi.addObject(this._selectVertex, $);
2660
+ }, ne = (e, t) => (s, r) => t(s, r, e);
2661
+ let st = class {
2662
+ constructor(e, t, s, r) {
2663
+ this._cameraApi = e, this._sceneApi = t, this._raycastApi = s, this._store = r, this._cameraApi.enableCameraLayer($), this._hoverVertex = Y(this._makeOverlayVertex(this._hoverColor)), this._selectVertex = Y(this._makeOverlayVertex(this._selectColor)), this._sceneApi.addObject(this._hoverVertex, $), this._sceneApi.addObject(this._selectVertex, $);
2664
2664
  }
2665
2665
  /** Режим, которым управляет хендлер, нужен только менеджеру */
2666
2666
  mode = O.Vertex;
@@ -2681,11 +2681,11 @@ let rt = class {
2681
2681
  this._hoverVertex.visible = !1, this._hovered = null;
2682
2682
  return;
2683
2683
  }
2684
- const r = e.intersection.object;
2685
- if (!r?.isPoints) return;
2686
- const s = r, i = e.intersection.index ?? -1;
2684
+ const s = e.intersection.object;
2685
+ if (!s?.isPoints) return;
2686
+ const r = s, i = e.intersection.index ?? -1;
2687
2687
  if (i < 0) return;
2688
- this._selected && this._same({ points: s, index: i }, this._selected) ? this._hoverVertex.visible = !1 : (this._writeWorldVertex(this._hoverVertex, s, i), this._hoverVertex.visible = !0);
2688
+ this._selected && this._same({ points: r, index: i }, this._selected) ? this._hoverVertex.visible = !1 : (this._writeWorldVertex(this._hoverVertex, r, i), this._hoverVertex.visible = !0);
2689
2689
  return;
2690
2690
  }
2691
2691
  if (t === R.Click) {
@@ -2693,11 +2693,11 @@ let rt = class {
2693
2693
  this._selectVertex.visible = !1, this._selected = null, this._store.setSelectedObject(null);
2694
2694
  return;
2695
2695
  }
2696
- const r = e.intersection.object;
2697
- if (!r?.isPoints) return;
2698
- const s = r, i = e.intersection.index ?? -1;
2696
+ const s = e.intersection.object;
2697
+ if (!s?.isPoints) return;
2698
+ const r = s, i = e.intersection.index ?? -1;
2699
2699
  if (i < 0) return;
2700
- this._writeWorldVertex(this._selectVertex, s, i), this._centerVertexOnPoint(this._selectVertex, s, i), this._selectVertex.visible = !0, this._prepareVertexMetadata(s, i), this._store.setSelectedObject(this._selectVertex), this._selected = { points: s, index: i }, this._hovered && this._same(this._hovered, this._selected) && (this._hoverVertex.visible = !1);
2700
+ this._writeWorldVertex(this._selectVertex, r, i), this._centerVertexOnPoint(this._selectVertex, r, i), this._selectVertex.visible = !0, this._prepareVertexMetadata(r, i), this._store.setSelectedObject(this._selectVertex), this._selected = { points: r, index: i }, this._hovered && this._same(this._hovered, this._selected) && (this._hoverVertex.visible = !1);
2701
2701
  return;
2702
2702
  }
2703
2703
  }
@@ -2707,10 +2707,10 @@ let rt = class {
2707
2707
  dispose() {
2708
2708
  this.rollback(), this._sceneApi.removeFromScene(this._hoverVertex), this._sceneApi.removeFromScene(this._selectVertex), this._hoverVertex.geometry.dispose(), this._hoverVertex.material.dispose(), this._selectVertex.geometry.dispose(), this._selectVertex.material.dispose();
2709
2709
  }
2710
- _makeOverlayVertex(e, t = Xr) {
2711
- const r = new a.BufferGeometry();
2712
- r.setAttribute("position", new a.Float32BufferAttribute([0, 0, 0], 3));
2713
- const s = new a.PointsMaterial({
2710
+ _makeOverlayVertex(e, t = Xs) {
2711
+ const s = new a.BufferGeometry();
2712
+ s.setAttribute("position", new a.Float32BufferAttribute([0, 0, 0], 3));
2713
+ const r = new a.PointsMaterial({
2714
2714
  color: e,
2715
2715
  size: t,
2716
2716
  sizeAttenuation: !1,
@@ -2718,16 +2718,16 @@ let rt = class {
2718
2718
  depthWrite: !1,
2719
2719
  transparent: !0,
2720
2720
  opacity: 1
2721
- }), i = new a.Points(r, s);
2721
+ }), i = new a.Points(s, r);
2722
2722
  return i.renderOrder = 1e3, i.raycast = () => {
2723
2723
  }, i.layers.set($), i.visible = !1, i;
2724
2724
  }
2725
2725
  /** Локальную вершину points переводим в world и пишем в target (прокси-точку) */
2726
- _writeWorldVertex(e, t, r) {
2727
- const s = t.geometry.getAttribute("position"), i = new a.Vector3(
2728
- s.getX(r),
2729
- s.getY(r),
2730
- s.getZ(r)
2726
+ _writeWorldVertex(e, t, s) {
2727
+ const r = t.geometry.getAttribute("position"), i = new a.Vector3(
2728
+ r.getX(s),
2729
+ r.getY(s),
2730
+ r.getZ(s)
2731
2731
  ).applyMatrix4(t.matrixWorld), n = e.geometry.getAttribute("position");
2732
2732
  n.setXYZ(0, i.x, i.y, i.z), n.needsUpdate = !0;
2733
2733
  }
@@ -2736,16 +2736,16 @@ let rt = class {
2736
2736
  }
2737
2737
  /** Готовит метаданные для выбранной вершины и пишет их в _selectVertex.userData */
2738
2738
  _prepareVertexMetadata(e, t) {
2739
- const r = er(e);
2740
- if (!r) return;
2741
- const s = e.geometry.getAttribute("position"), i = new a.Vector3(
2742
- s.getX(t),
2743
- s.getY(t),
2744
- s.getZ(t)
2745
- ).applyMatrix4(e.matrixWorld), n = new a.Matrix4().copy(r.matrixWorld).invert(), o = i.clone().applyMatrix4(n), h = r.geometry.getAttribute("position"), d = 1e-6, p = d * d, u = new a.Vector3(), m = [];
2739
+ const s = es(e);
2740
+ if (!s) return;
2741
+ const r = e.geometry.getAttribute("position"), i = new a.Vector3(
2742
+ r.getX(t),
2743
+ r.getY(t),
2744
+ r.getZ(t)
2745
+ ).applyMatrix4(e.matrixWorld), n = new a.Matrix4().copy(s.matrixWorld).invert(), o = i.clone().applyMatrix4(n), h = s.geometry.getAttribute("position"), d = 1e-6, p = d * d, u = new a.Vector3(), m = [];
2746
2746
  for (let g = 0; g < h.count; g++)
2747
2747
  u.fromBufferAttribute(h, g), u.distanceToSquared(o) < p && m.push(g);
2748
- const f = r.children.find((g) => g?.isLineSegments);
2748
+ const f = s.children.find((g) => g?.isLineSegments);
2749
2749
  let _ = [];
2750
2750
  if (f) {
2751
2751
  const g = new a.Matrix4().copy(f.matrixWorld).invert(), b = i.clone().applyMatrix4(g), x = f.geometry.getAttribute("position"), S = new a.Vector3();
@@ -2755,18 +2755,18 @@ let rt = class {
2755
2755
  this._selectVertex.userData.vertexInfo = {
2756
2756
  points: e,
2757
2757
  index: t,
2758
- mesh: r,
2758
+ mesh: s,
2759
2759
  vertexIndices: m,
2760
2760
  lines: f ?? null,
2761
2761
  edgeVertexIndices: _
2762
2762
  };
2763
2763
  }
2764
2764
  /** Центрует прокси-вершину на выбранной точке */
2765
- _centerVertexOnPoint(e, t, r) {
2766
- const s = t.geometry.getAttribute("position"), i = new a.Vector3(
2767
- s.getX(r),
2768
- s.getY(r),
2769
- s.getZ(r)
2765
+ _centerVertexOnPoint(e, t, s) {
2766
+ const r = t.geometry.getAttribute("position"), i = new a.Vector3(
2767
+ r.getX(s),
2768
+ r.getY(s),
2769
+ r.getZ(s)
2770
2770
  ).applyMatrix4(t.matrixWorld);
2771
2771
  e.position.copy(i);
2772
2772
  const n = e.geometry;
@@ -2774,16 +2774,16 @@ let rt = class {
2774
2774
  (!o || o.count < 1) && (n.setAttribute("position", new a.BufferAttribute(new Float32Array(3), 3)), o = n.getAttribute("position")), o.setXYZ(0, 0, 0, 0), o.needsUpdate = !0, e.quaternion.identity(), e.scale.set(1, 1, 1), e.updateMatrixWorld(!0);
2775
2775
  }
2776
2776
  };
2777
- rt = bi([
2777
+ st = bi([
2778
2778
  v(),
2779
2779
  ne(0, c("ICameraApi")),
2780
2780
  ne(1, c("ISceneApi")),
2781
2781
  ne(2, c("IRaycastApi")),
2782
2782
  ne(3, c("EditorStore"))
2783
- ], rt);
2783
+ ], st);
2784
2784
  class wt {
2785
- constructor(t, r) {
2786
- this.api = t, this.store = r, this._unsubscribeTransform = this.api.onTransformChange(() => {
2785
+ constructor(t, s) {
2786
+ this.api = t, this.store = s, this._unsubscribeTransform = this.api.onTransformChange(() => {
2787
2787
  this.store.getSelectedObject() && this.store.notifySelectedTransformChange?.();
2788
2788
  });
2789
2789
  }
@@ -2808,28 +2808,28 @@ class wt {
2808
2808
  this.rollback(), this._unsubscribeTransform && this._unsubscribeTransform();
2809
2809
  }
2810
2810
  }
2811
- var Mi = Object.getOwnPropertyDescriptor, yi = (e, t, r, s) => {
2812
- for (var i = s > 1 ? void 0 : s ? Mi(t, r) : t, n = e.length - 1, o; n >= 0; n--)
2811
+ var Mi = Object.getOwnPropertyDescriptor, yi = (e, t, s, r) => {
2812
+ for (var i = r > 1 ? void 0 : r ? Mi(t, s) : t, n = e.length - 1, o; n >= 0; n--)
2813
2813
  (o = e[n]) && (i = o(i) || i);
2814
2814
  return i;
2815
- }, kt = (e, t) => (r, s) => t(r, s, e);
2816
- let st = class extends wt {
2815
+ }, kt = (e, t) => (s, r) => t(s, r, e);
2816
+ let rt = class extends wt {
2817
2817
  /** Инструмент, которым управляет хендлер, нужен только менеджеру */
2818
2818
  mode = W.Rotate;
2819
2819
  constructor(e, t) {
2820
2820
  super(e, t);
2821
2821
  }
2822
2822
  };
2823
- st = yi([
2823
+ rt = yi([
2824
2824
  v(),
2825
2825
  kt(0, c("ITransformApi")),
2826
2826
  kt(1, c("EditorStore"))
2827
- ], st);
2828
- var wi = Object.getOwnPropertyDescriptor, Si = (e, t, r, s) => {
2829
- for (var i = s > 1 ? void 0 : s ? wi(t, r) : t, n = e.length - 1, o; n >= 0; n--)
2827
+ ], rt);
2828
+ var wi = Object.getOwnPropertyDescriptor, Si = (e, t, s, r) => {
2829
+ for (var i = r > 1 ? void 0 : r ? wi(t, s) : t, n = e.length - 1, o; n >= 0; n--)
2830
2830
  (o = e[n]) && (i = o(i) || i);
2831
2831
  return i;
2832
- }, Gt = (e, t) => (r, s) => t(r, s, e);
2832
+ }, Gt = (e, t) => (s, r) => t(s, r, e);
2833
2833
  let it = class extends wt {
2834
2834
  /** Инструмент, которым управляет хендлер, нужен только менеджеру */
2835
2835
  mode = W.Scale;
@@ -2842,11 +2842,11 @@ it = Si([
2842
2842
  Gt(0, c("ITransformApi")),
2843
2843
  Gt(1, c("EditorStore"))
2844
2844
  ], it);
2845
- var xi = Object.getOwnPropertyDescriptor, Ai = (e, t, r, s) => {
2846
- for (var i = s > 1 ? void 0 : s ? xi(t, r) : t, n = e.length - 1, o; n >= 0; n--)
2845
+ var xi = Object.getOwnPropertyDescriptor, Ai = (e, t, s, r) => {
2846
+ for (var i = r > 1 ? void 0 : r ? xi(t, s) : t, n = e.length - 1, o; n >= 0; n--)
2847
2847
  (o = e[n]) && (i = o(i) || i);
2848
2848
  return i;
2849
- }, zt = (e, t) => (r, s) => t(r, s, e);
2849
+ }, zt = (e, t) => (s, r) => t(s, r, e);
2850
2850
  let nt = class extends wt {
2851
2851
  /** Инструмент, которым управляет хендлер, нужен только менеджеру */
2852
2852
  mode = W.Translate;
@@ -2859,11 +2859,11 @@ nt = Ai([
2859
2859
  zt(0, c("ITransformApi")),
2860
2860
  zt(1, c("EditorStore"))
2861
2861
  ], nt);
2862
- var Ii = Object.getOwnPropertyDescriptor, Ci = (e, t, r, s) => {
2863
- for (var i = s > 1 ? void 0 : s ? Ii(t, r) : t, n = e.length - 1, o; n >= 0; n--)
2862
+ var Ii = Object.getOwnPropertyDescriptor, Ci = (e, t, s, r) => {
2863
+ for (var i = r > 1 ? void 0 : r ? Ii(t, s) : t, n = e.length - 1, o; n >= 0; n--)
2864
2864
  (o = e[n]) && (i = o(i) || i);
2865
2865
  return i;
2866
- }, Oi = (e, t) => (r, s) => t(r, s, e);
2866
+ }, Oi = (e, t) => (s, r) => t(s, r, e);
2867
2867
  let ge = class {
2868
2868
  constructor(e) {
2869
2869
  this._api = e;
@@ -2874,14 +2874,14 @@ let ge = class {
2874
2874
  _lastAddedMesh = null;
2875
2875
  /** Добавление базовых фигур на сцену, которые приписаны в `FigureType`. */
2876
2876
  handle(e) {
2877
- const t = Ur[e](), r = t.getAttribute("position");
2878
- r && r.setUsage && r.setUsage(a.DynamicDrawUsage);
2879
- const s = new a.Mesh(t, Zt.clone());
2880
- s.layers.enable(k);
2881
- const i = t.index ? t.toNonIndexed() : t, n = N(rr(i));
2882
- n.layers.enable(k), s.add(n);
2883
- const o = N(tr(i));
2884
- o.layers.enable(k), s.add(o), this._api.addMesh(s), this._lastAddedMesh = s;
2877
+ const t = Us[e](), s = t.getAttribute("position");
2878
+ s && s.setUsage && s.setUsage(a.DynamicDrawUsage);
2879
+ const r = new a.Mesh(t, Zt.clone());
2880
+ r.layers.enable(k);
2881
+ const i = t.index ? t.toNonIndexed() : t, n = N(ss(i));
2882
+ n.layers.enable(k), r.add(n);
2883
+ const o = N(ts(i));
2884
+ o.layers.enable(k), r.add(o), this._api.addMesh(r), this._lastAddedMesh = r;
2885
2885
  }
2886
2886
  /** Срабатывает только на `ctrl + z`. */
2887
2887
  rollback() {
@@ -2896,11 +2896,11 @@ ge = Ci([
2896
2896
  v(),
2897
2897
  Oi(0, c("IMeshApi"))
2898
2898
  ], ge);
2899
- var Ei = Object.getOwnPropertyDescriptor, Pi = (e, t, r, s) => {
2900
- for (var i = s > 1 ? void 0 : s ? Ei(t, r) : t, n = e.length - 1, o; n >= 0; n--)
2899
+ var Ei = Object.getOwnPropertyDescriptor, Pi = (e, t, s, r) => {
2900
+ for (var i = r > 1 ? void 0 : r ? Ei(t, s) : t, n = e.length - 1, o; n >= 0; n--)
2901
2901
  (o = e[n]) && (i = o(i) || i);
2902
2902
  return i;
2903
- }, Wt = (e, t) => (r, s) => t(r, s, e);
2903
+ }, Wt = (e, t) => (s, r) => t(s, r, e);
2904
2904
  let ot = class {
2905
2905
  constructor(e, t) {
2906
2906
  this._api = e, this._store = t;
@@ -2911,7 +2911,7 @@ let ot = class {
2911
2911
  _lastDeletedMesh = null;
2912
2912
  handle() {
2913
2913
  const e = this._store.getSelectedObject();
2914
- yt(e) && !sr(e) && (this._api.removeMesh(e), this._store.setSelectedObject(null), this._lastDeletedMesh = e);
2914
+ yt(e) && !rs(e) && (this._api.removeMesh(e), this._store.setSelectedObject(null), this._lastDeletedMesh = e);
2915
2915
  }
2916
2916
  /** Срабатывает только на `ctrl + z`. */
2917
2917
  rollback() {
@@ -2937,94 +2937,94 @@ class Li {
2937
2937
  * @return {string} The exported OBJ.
2938
2938
  */
2939
2939
  parse(t) {
2940
- let r = "", s = 0, i = 0, n = 0;
2941
- const o = new z(), l = new Kt(), h = new z(), d = new Ir(), p = [];
2940
+ let s = "", r = 0, i = 0, n = 0;
2941
+ const o = new z(), l = new Kt(), h = new z(), d = new Is(), p = [];
2942
2942
  function u(_) {
2943
2943
  let g = 0, b = 0, x = 0;
2944
- const S = _.geometry, w = new Cr(), M = S.getAttribute("position"), I = S.getAttribute("normal"), y = S.getAttribute("uv"), C = S.getIndex();
2945
- if (r += "o " + _.name + `
2946
- `, _.material && _.material.name && (r += "usemtl " + _.material.name + `
2944
+ const S = _.geometry, w = new Cs(), M = S.getAttribute("position"), I = S.getAttribute("normal"), y = S.getAttribute("uv"), C = S.getIndex();
2945
+ if (s += "o " + _.name + `
2946
+ `, _.material && _.material.name && (s += "usemtl " + _.material.name + `
2947
2947
  `), M !== void 0)
2948
2948
  for (let A = 0, D = M.count; A < D; A++, g++)
2949
- o.fromBufferAttribute(M, A), o.applyMatrix4(_.matrixWorld), r += "v " + o.x + " " + o.y + " " + o.z + `
2949
+ o.fromBufferAttribute(M, A), o.applyMatrix4(_.matrixWorld), s += "v " + o.x + " " + o.y + " " + o.z + `
2950
2950
  `;
2951
2951
  if (y !== void 0)
2952
2952
  for (let A = 0, D = y.count; A < D; A++, x++)
2953
- d.fromBufferAttribute(y, A), r += "vt " + d.x + " " + d.y + `
2953
+ d.fromBufferAttribute(y, A), s += "vt " + d.x + " " + d.y + `
2954
2954
  `;
2955
2955
  if (I !== void 0) {
2956
2956
  w.getNormalMatrix(_.matrixWorld);
2957
2957
  for (let A = 0, D = I.count; A < D; A++, b++)
2958
- h.fromBufferAttribute(I, A), h.applyMatrix3(w).normalize(), r += "vn " + h.x + " " + h.y + " " + h.z + `
2958
+ h.fromBufferAttribute(I, A), h.applyMatrix3(w).normalize(), s += "vn " + h.x + " " + h.y + " " + h.z + `
2959
2959
  `;
2960
2960
  }
2961
2961
  if (C !== null)
2962
2962
  for (let A = 0, D = C.count; A < D; A += 3) {
2963
2963
  for (let j = 0; j < 3; j++) {
2964
2964
  const F = C.getX(A + j) + 1;
2965
- p[j] = s + F + (I || y ? "/" + (y ? i + F : "") + (I ? "/" + (n + F) : "") : "");
2965
+ p[j] = r + F + (I || y ? "/" + (y ? i + F : "") + (I ? "/" + (n + F) : "") : "");
2966
2966
  }
2967
- r += "f " + p.join(" ") + `
2967
+ s += "f " + p.join(" ") + `
2968
2968
  `;
2969
2969
  }
2970
2970
  else
2971
2971
  for (let A = 0, D = M.count; A < D; A += 3) {
2972
2972
  for (let j = 0; j < 3; j++) {
2973
2973
  const F = A + j + 1;
2974
- p[j] = s + F + (I || y ? "/" + (y ? i + F : "") + (I ? "/" + (n + F) : "") : "");
2974
+ p[j] = r + F + (I || y ? "/" + (y ? i + F : "") + (I ? "/" + (n + F) : "") : "");
2975
2975
  }
2976
- r += "f " + p.join(" ") + `
2976
+ s += "f " + p.join(" ") + `
2977
2977
  `;
2978
2978
  }
2979
- s += g, i += x, n += b;
2979
+ r += g, i += x, n += b;
2980
2980
  }
2981
2981
  function m(_) {
2982
2982
  let g = 0;
2983
2983
  const b = _.geometry, x = _.type, S = b.getAttribute("position");
2984
- if (r += "o " + _.name + `
2984
+ if (s += "o " + _.name + `
2985
2985
  `, S !== void 0)
2986
2986
  for (let w = 0, M = S.count; w < M; w++, g++)
2987
- o.fromBufferAttribute(S, w), o.applyMatrix4(_.matrixWorld), r += "v " + o.x + " " + o.y + " " + o.z + `
2987
+ o.fromBufferAttribute(S, w), o.applyMatrix4(_.matrixWorld), s += "v " + o.x + " " + o.y + " " + o.z + `
2988
2988
  `;
2989
2989
  if (x === "Line") {
2990
- r += "l ";
2990
+ s += "l ";
2991
2991
  for (let w = 1, M = S.count; w <= M; w++)
2992
- r += s + w + " ";
2993
- r += `
2992
+ s += r + w + " ";
2993
+ s += `
2994
2994
  `;
2995
2995
  }
2996
2996
  if (x === "LineSegments")
2997
2997
  for (let w = 1, M = w + 1, I = S.count; w < I; w += 2, M = w + 1)
2998
- r += "l " + (s + w) + " " + (s + M) + `
2998
+ s += "l " + (r + w) + " " + (r + M) + `
2999
2999
  `;
3000
- s += g;
3000
+ r += g;
3001
3001
  }
3002
3002
  function f(_) {
3003
3003
  let g = 0;
3004
3004
  const b = _.geometry, x = b.getAttribute("position"), S = b.getAttribute("color");
3005
- if (r += "o " + _.name + `
3005
+ if (s += "o " + _.name + `
3006
3006
  `, x !== void 0) {
3007
3007
  for (let w = 0, M = x.count; w < M; w++, g++)
3008
- o.fromBufferAttribute(x, w), o.applyMatrix4(_.matrixWorld), r += "v " + o.x + " " + o.y + " " + o.z, S !== void 0 && (l.fromBufferAttribute(S, w), Or.workingToColorSpace(l, qt), r += " " + l.r + " " + l.g + " " + l.b), r += `
3008
+ o.fromBufferAttribute(x, w), o.applyMatrix4(_.matrixWorld), s += "v " + o.x + " " + o.y + " " + o.z, S !== void 0 && (l.fromBufferAttribute(S, w), Os.workingToColorSpace(l, qt), s += " " + l.r + " " + l.g + " " + l.b), s += `
3009
3009
  `;
3010
- r += "p ";
3010
+ s += "p ";
3011
3011
  for (let w = 1, M = x.count; w <= M; w++)
3012
- r += s + w + " ";
3013
- r += `
3012
+ s += r + w + " ";
3013
+ s += `
3014
3014
  `;
3015
3015
  }
3016
- s += g;
3016
+ r += g;
3017
3017
  }
3018
3018
  return t.traverse(function(_) {
3019
3019
  _.isMesh === !0 && u(_), _.isLine === !0 && m(_), _.isPoints === !0 && f(_);
3020
- }), r;
3020
+ }), s;
3021
3021
  }
3022
3022
  }
3023
- var Ti = Object.getOwnPropertyDescriptor, Di = (e, t, r, s) => {
3024
- for (var i = s > 1 ? void 0 : s ? Ti(t, r) : t, n = e.length - 1, o; n >= 0; n--)
3023
+ var Ti = Object.getOwnPropertyDescriptor, Di = (e, t, s, r) => {
3024
+ for (var i = r > 1 ? void 0 : r ? Ti(t, s) : t, n = e.length - 1, o; n >= 0; n--)
3025
3025
  (o = e[n]) && (i = o(i) || i);
3026
3026
  return i;
3027
- }, Nt = (e, t) => (r, s) => t(r, s, e);
3027
+ }, Nt = (e, t) => (s, r) => t(s, r, e);
3028
3028
  let ve = class {
3029
3029
  constructor(e, t) {
3030
3030
  this._api = e, this._exportStore = t;
@@ -3033,12 +3033,12 @@ let ve = class {
3033
3033
  mode = T.Export;
3034
3034
  /** Экспорт всей сцены в ExportStore для последующей загрузки в виде файла. */
3035
3035
  handle() {
3036
- const e = this._api.getScene(), t = es(e), s = new Li().parse(t), i = Date.now();
3036
+ const e = this._api.getScene(), t = er(e), r = new Li().parse(t), i = Date.now();
3037
3037
  this._exportStore.setResult({
3038
3038
  format: "obj",
3039
3039
  filename: `scene-${i}.obj`,
3040
3040
  mimeType: "text/plain;charset=utf-8",
3041
- content: s,
3041
+ content: r,
3042
3042
  createdAt: i
3043
3043
  });
3044
3044
  }
@@ -3054,11 +3054,11 @@ ve = Di([
3054
3054
  Nt(0, c("ISceneApi")),
3055
3055
  Nt(1, c("ExportStore"))
3056
3056
  ], ve);
3057
- var ji = Object.defineProperty, Vi = Object.getOwnPropertyDescriptor, ar = (e, t, r, s) => {
3058
- for (var i = s > 1 ? void 0 : s ? Vi(t, r) : t, n = e.length - 1, o; n >= 0; n--)
3059
- (o = e[n]) && (i = (s ? o(t, r, i) : o(i)) || i);
3060
- return s && i && ji(t, r, i), i;
3061
- }, Ut = (e, t) => (r, s) => t(r, s, e);
3057
+ var ji = Object.defineProperty, Vi = Object.getOwnPropertyDescriptor, as = (e, t, s, r) => {
3058
+ for (var i = r > 1 ? void 0 : r ? Vi(t, s) : t, n = e.length - 1, o; n >= 0; n--)
3059
+ (o = e[n]) && (i = (r ? o(t, s, i) : o(i)) || i);
3060
+ return r && i && ji(t, s, i), i;
3061
+ }, Ut = (e, t) => (s, r) => t(s, r, e);
3062
3062
  let Q = class {
3063
3063
  constructor(e, t) {
3064
3064
  this._api = e, this._validator = t;
@@ -3068,8 +3068,8 @@ let Q = class {
3068
3068
  handle(e) {
3069
3069
  const t = [...this._api.getMeshes()];
3070
3070
  this._api.removeMeshes(t);
3071
- const r = ir(e);
3072
- this._api.addMeshes(r);
3071
+ const s = is(e);
3072
+ this._api.addMeshes(s);
3073
3073
  }
3074
3074
  rollback() {
3075
3075
  }
@@ -3077,19 +3077,19 @@ let Q = class {
3077
3077
  dispose() {
3078
3078
  }
3079
3079
  };
3080
- ar([
3081
- nr((e) => e._validator)
3080
+ as([
3081
+ ns((e) => e._validator)
3082
3082
  ], Q.prototype, "handle", 1);
3083
- Q = ar([
3083
+ Q = as([
3084
3084
  v(),
3085
3085
  Ut(0, c("IMeshApi")),
3086
3086
  Ut(1, c("ObjValidator"))
3087
3087
  ], Q);
3088
- var Hi = Object.defineProperty, $i = Object.getOwnPropertyDescriptor, lr = (e, t, r, s) => {
3089
- for (var i = s > 1 ? void 0 : s ? $i(t, r) : t, n = e.length - 1, o; n >= 0; n--)
3090
- (o = e[n]) && (i = (s ? o(t, r, i) : o(i)) || i);
3091
- return s && i && Hi(t, r, i), i;
3092
- }, Xt = (e, t) => (r, s) => t(r, s, e);
3088
+ var Hi = Object.defineProperty, $i = Object.getOwnPropertyDescriptor, ls = (e, t, s, r) => {
3089
+ for (var i = r > 1 ? void 0 : r ? $i(t, s) : t, n = e.length - 1, o; n >= 0; n--)
3090
+ (o = e[n]) && (i = (r ? o(t, s, i) : o(i)) || i);
3091
+ return r && i && Hi(t, s, i), i;
3092
+ }, Xt = (e, t) => (s, r) => t(s, r, e);
3093
3093
  let ee = class {
3094
3094
  constructor(e, t) {
3095
3095
  this._api = e, this._validator = t;
@@ -3097,7 +3097,7 @@ let ee = class {
3097
3097
  /** Режим редактирования сцены */
3098
3098
  mode = T.LoadFigure;
3099
3099
  handle(e) {
3100
- const t = ir(e);
3100
+ const t = is(e);
3101
3101
  this._api.addMeshes(t);
3102
3102
  }
3103
3103
  rollback() {
@@ -3106,17 +3106,17 @@ let ee = class {
3106
3106
  dispose() {
3107
3107
  }
3108
3108
  };
3109
- lr([
3110
- nr((e) => e._validator)
3109
+ ls([
3110
+ ns((e) => e._validator)
3111
3111
  ], ee.prototype, "handle", 1);
3112
- ee = lr([
3112
+ ee = ls([
3113
3113
  v(),
3114
3114
  Xt(0, c("IMeshApi")),
3115
3115
  Xt(1, c("ObjValidator"))
3116
3116
  ], ee);
3117
3117
  class ye {
3118
- constructor(t, r, s, i) {
3119
- this._sceneApi = t, this._interactionApi = r, this._metricsApi = s, this._store = i;
3118
+ constructor(t, s, r, i) {
3119
+ this._sceneApi = t, this._interactionApi = s, this._metricsApi = r, this._store = i;
3120
3120
  }
3121
3121
  /** Группа объектов текущего benchmark-теста. */
3122
3122
  _group = null;
@@ -3131,8 +3131,8 @@ class ye {
3131
3131
  */
3132
3132
  async handle(t) {
3133
3133
  this._interactionApi.setInteractionEnabled(!1), this._prepareScene(), this._metricsApi.start(this.objectsCount), this._startLiveMetrics(), await this._wait(t), this._stopLiveMetrics(), this._metricsApi.stop();
3134
- const r = this._metricsApi.getMetrics();
3135
- this._store.setCurrentMetrics(r), this._store.addMetrics(this.mode, r), this._interactionApi.setInteractionEnabled(!0);
3134
+ const s = this._metricsApi.getMetrics();
3135
+ this._store.setCurrentMetrics(s), this._store.addMetrics(this.mode, s), this._interactionApi.setInteractionEnabled(!0);
3136
3136
  }
3137
3137
  /**
3138
3138
  * Выполняет откат действий хендлера.
@@ -3168,8 +3168,8 @@ class ye {
3168
3168
  * @method
3169
3169
  */
3170
3170
  _wait(t) {
3171
- return new Promise((r) => {
3172
- window.setTimeout(r, t);
3171
+ return new Promise((s) => {
3172
+ window.setTimeout(s, t);
3173
3173
  });
3174
3174
  }
3175
3175
  _startLiveMetrics() {
@@ -3181,11 +3181,11 @@ class ye {
3181
3181
  this._liveTimerId !== null && (window.clearInterval(this._liveTimerId), this._liveTimerId = null);
3182
3182
  }
3183
3183
  }
3184
- var Ri = Object.getOwnPropertyDescriptor, Bi = (e, t, r, s) => {
3185
- for (var i = s > 1 ? void 0 : s ? Ri(t, r) : t, n = e.length - 1, o; n >= 0; n--)
3184
+ var Ri = Object.getOwnPropertyDescriptor, Bi = (e, t, s, r) => {
3185
+ for (var i = r > 1 ? void 0 : r ? Ri(t, s) : t, n = e.length - 1, o; n >= 0; n--)
3186
3186
  (o = e[n]) && (i = o(i) || i);
3187
3187
  return i;
3188
- }, oe = (e, t) => (r, s) => t(r, s, e);
3188
+ }, oe = (e, t) => (s, r) => t(s, r, e);
3189
3189
  let at = class extends ye {
3190
3190
  /** Тип benchmark-теста. */
3191
3191
  mode = X.Light;
@@ -3193,8 +3193,8 @@ let at = class extends ye {
3193
3193
  groupName = "__LIGHT_BENCHMARK__";
3194
3194
  /** Количество объектов в тестовой сцене. */
3195
3195
  objectsCount = Mt;
3196
- constructor(e, t, r, s) {
3197
- super(e, t, r, s);
3196
+ constructor(e, t, s, r) {
3197
+ super(e, t, s, r);
3198
3198
  }
3199
3199
  /**
3200
3200
  * Заполняет группу объектами легкого benchmark-теста.
@@ -3205,10 +3205,10 @@ let at = class extends ye {
3205
3205
  * @method
3206
3206
  */
3207
3207
  fillGroup(e) {
3208
- const t = Math.ceil(Math.sqrt(this.objectsCount)), r = t / 2;
3209
- for (let s = 0; s < this.objectsCount; s += 1) {
3210
- const i = s % t, n = Math.floor(s / t), o = new a.BoxGeometry(0.4, 0.4, 0.4), l = new a.MeshStandardMaterial(), h = new a.Mesh(o, l);
3211
- h.position.set(i - r, 0.2, n - r), e.add(h);
3208
+ const t = Math.ceil(Math.sqrt(this.objectsCount)), s = t / 2;
3209
+ for (let r = 0; r < this.objectsCount; r += 1) {
3210
+ const i = r % t, n = Math.floor(r / t), o = new a.BoxGeometry(0.4, 0.4, 0.4), l = new a.MeshStandardMaterial(), h = new a.Mesh(o, l);
3211
+ h.position.set(i - s, 0.2, n - s), e.add(h);
3212
3212
  }
3213
3213
  }
3214
3214
  };
@@ -3219,11 +3219,11 @@ at = Bi([
3219
3219
  oe(2, c("IMetricsApi")),
3220
3220
  oe(3, c("MetricsStore"))
3221
3221
  ], at);
3222
- var Fi = Object.getOwnPropertyDescriptor, ki = (e, t, r, s) => {
3223
- for (var i = s > 1 ? void 0 : s ? Fi(t, r) : t, n = e.length - 1, o; n >= 0; n--)
3222
+ var Fi = Object.getOwnPropertyDescriptor, ki = (e, t, s, r) => {
3223
+ for (var i = r > 1 ? void 0 : r ? Fi(t, s) : t, n = e.length - 1, o; n >= 0; n--)
3224
3224
  (o = e[n]) && (i = o(i) || i);
3225
3225
  return i;
3226
- }, ae = (e, t) => (r, s) => t(r, s, e);
3226
+ }, ae = (e, t) => (s, r) => t(s, r, e);
3227
3227
  let lt = class extends ye {
3228
3228
  /** Тип benchmark-теста. */
3229
3229
  mode = X.Medium;
@@ -3231,8 +3231,8 @@ let lt = class extends ye {
3231
3231
  groupName = "__MEDIUM_BENCHMARK__";
3232
3232
  /** Количество объектов в тестовой сцене. */
3233
3233
  objectsCount = Mt;
3234
- constructor(e, t, r, s) {
3235
- super(e, t, r, s);
3234
+ constructor(e, t, s, r) {
3235
+ super(e, t, s, r);
3236
3236
  }
3237
3237
  /**
3238
3238
  * Заполняет группу объектами среднего benchmark-теста.
@@ -3243,10 +3243,10 @@ let lt = class extends ye {
3243
3243
  * @method
3244
3244
  */
3245
3245
  fillGroup(e) {
3246
- const t = Math.ceil(Math.sqrt(this.objectsCount)), r = t / 2;
3247
- for (let s = 0; s < this.objectsCount; s += 1) {
3248
- const i = s % t, n = Math.floor(s / t), o = new a.CylinderGeometry(0.18, 0.18, 0.45, 24), l = new a.MeshStandardMaterial(), h = new a.Mesh(o, l);
3249
- h.position.set((i - r) * 0.6, 0.225, (n - r) * 0.6), e.add(h);
3246
+ const t = Math.ceil(Math.sqrt(this.objectsCount)), s = t / 2;
3247
+ for (let r = 0; r < this.objectsCount; r += 1) {
3248
+ const i = r % t, n = Math.floor(r / t), o = new a.CylinderGeometry(0.18, 0.18, 0.45, 24), l = new a.MeshStandardMaterial(), h = new a.Mesh(o, l);
3249
+ h.position.set((i - s) * 0.6, 0.225, (n - s) * 0.6), e.add(h);
3250
3250
  }
3251
3251
  }
3252
3252
  };
@@ -3257,11 +3257,11 @@ lt = ki([
3257
3257
  ae(2, c("IMetricsApi")),
3258
3258
  ae(3, c("MetricsStore"))
3259
3259
  ], lt);
3260
- var Gi = Object.getOwnPropertyDescriptor, zi = (e, t, r, s) => {
3261
- for (var i = s > 1 ? void 0 : s ? Gi(t, r) : t, n = e.length - 1, o; n >= 0; n--)
3260
+ var Gi = Object.getOwnPropertyDescriptor, zi = (e, t, s, r) => {
3261
+ for (var i = r > 1 ? void 0 : r ? Gi(t, s) : t, n = e.length - 1, o; n >= 0; n--)
3262
3262
  (o = e[n]) && (i = o(i) || i);
3263
3263
  return i;
3264
- }, le = (e, t) => (r, s) => t(r, s, e);
3264
+ }, le = (e, t) => (s, r) => t(s, r, e);
3265
3265
  let ct = class extends ye {
3266
3266
  /** Тип benchmark-теста. */
3267
3267
  mode = X.Heavy;
@@ -3269,8 +3269,8 @@ let ct = class extends ye {
3269
3269
  groupName = "__HEAVY_BENCHMARK__";
3270
3270
  /** Количество объектов в тестовой сцене. */
3271
3271
  objectsCount = Mt;
3272
- constructor(e, t, r, s) {
3273
- super(e, t, r, s);
3272
+ constructor(e, t, s, r) {
3273
+ super(e, t, s, r);
3274
3274
  }
3275
3275
  /**
3276
3276
  * Заполняет группу объектами тяжелого benchmark-теста.
@@ -3281,10 +3281,10 @@ let ct = class extends ye {
3281
3281
  * @method
3282
3282
  */
3283
3283
  fillGroup(e) {
3284
- const t = Math.ceil(Math.sqrt(this.objectsCount)), r = t / 2;
3285
- for (let s = 0; s < this.objectsCount; s += 1) {
3286
- const i = s % t, n = Math.floor(s / t), o = new a.TorusKnotGeometry(0.16, 0.05, 64, 12), l = new a.MeshStandardMaterial(), h = new a.Mesh(o, l);
3287
- h.position.set((i - r) * 0.7, 0.25, (n - r) * 0.7), e.add(h);
3284
+ const t = Math.ceil(Math.sqrt(this.objectsCount)), s = t / 2;
3285
+ for (let r = 0; r < this.objectsCount; r += 1) {
3286
+ const i = r % t, n = Math.floor(r / t), o = new a.TorusKnotGeometry(0.16, 0.05, 64, 12), l = new a.MeshStandardMaterial(), h = new a.Mesh(o, l);
3287
+ h.position.set((i - s) * 0.7, 0.25, (n - s) * 0.7), e.add(h);
3288
3288
  }
3289
3289
  }
3290
3290
  };
@@ -3295,11 +3295,11 @@ ct = zi([
3295
3295
  le(2, c("IMetricsApi")),
3296
3296
  le(3, c("MetricsStore"))
3297
3297
  ], ct);
3298
- var Wi = Object.getOwnPropertyDescriptor, Ni = (e, t, r, s) => {
3299
- for (var i = s > 1 ? void 0 : s ? Wi(t, r) : t, n = e.length - 1, o; n >= 0; n--)
3298
+ var Wi = Object.getOwnPropertyDescriptor, Ni = (e, t, s, r) => {
3299
+ for (var i = r > 1 ? void 0 : r ? Wi(t, s) : t, n = e.length - 1, o; n >= 0; n--)
3300
3300
  (o = e[n]) && (i = o(i) || i);
3301
3301
  return i;
3302
- }, ce = (e, t) => (r, s) => t(r, s, e);
3302
+ }, ce = (e, t) => (s, r) => t(s, r, e);
3303
3303
  let ht = class extends ye {
3304
3304
  /** Тип benchmark-теста. */
3305
3305
  mode = X.Mixed;
@@ -3307,8 +3307,8 @@ let ht = class extends ye {
3307
3307
  groupName = "__MIXED_BENCHMARK__";
3308
3308
  /** Количество объектов в тестовой сцене. */
3309
3309
  objectsCount = Vt + Ht + $t;
3310
- constructor(e, t, r, s) {
3311
- super(e, t, r, s);
3310
+ constructor(e, t, s, r) {
3311
+ super(e, t, s, r);
3312
3312
  }
3313
3313
  /**
3314
3314
  * Заполняет группу объектами смешанного benchmark-теста.
@@ -3336,11 +3336,11 @@ let ht = class extends ye {
3336
3336
  new a.MeshStandardMaterial()
3337
3337
  ));
3338
3338
  }
3339
- _addGrid(e, t, r, s) {
3339
+ _addGrid(e, t, s, r) {
3340
3340
  const i = Math.ceil(Math.sqrt(t)), n = i / 2;
3341
3341
  for (let o = 0; o < t; o += 1) {
3342
- const l = o % i, h = Math.floor(o / i), d = s(o);
3343
- d.position.set(r + (l - n) * 0.65, 0.25, (h - n) * 0.65), e.add(d);
3342
+ const l = o % i, h = Math.floor(o / i), d = r(o);
3343
+ d.position.set(s + (l - n) * 0.65, 0.25, (h - n) * 0.65), e.add(d);
3344
3344
  }
3345
3345
  }
3346
3346
  };
@@ -3351,14 +3351,14 @@ ht = Ni([
3351
3351
  ce(2, c("IMetricsApi")),
3352
3352
  ce(3, c("MetricsStore"))
3353
3353
  ], ht);
3354
- var Ui = Object.getOwnPropertyDescriptor, Xi = (e, t, r, s) => {
3355
- for (var i = s > 1 ? void 0 : s ? Ui(t, r) : t, n = e.length - 1, o; n >= 0; n--)
3354
+ var Ui = Object.getOwnPropertyDescriptor, Xi = (e, t, s, r) => {
3355
+ for (var i = r > 1 ? void 0 : r ? Ui(t, s) : t, n = e.length - 1, o; n >= 0; n--)
3356
3356
  (o = e[n]) && (i = o(i) || i);
3357
3357
  return i;
3358
- }, Z = (e, t) => (r, s) => t(r, s, e);
3358
+ }, Z = (e, t) => (s, r) => t(s, r, e);
3359
3359
  let dt = class {
3360
- constructor(e, t, r, s, i) {
3361
- this._renderer = e, this._mediator = t, this._store = r, this._exportStore = s, this._worker = i, this.setSelectMode(O.Mesh), this.setToolMode(W.Translate);
3360
+ constructor(e, t, s, r, i) {
3361
+ this._renderer = e, this._mediator = t, this._store = s, this._exportStore = r, this._worker = i, this.setSelectMode(O.Mesh), this.setToolMode(W.Translate);
3362
3362
  }
3363
3363
  setDisplayMode(e) {
3364
3364
  return this._mediator.send({
@@ -3433,15 +3433,15 @@ let dt = class {
3433
3433
  onSelectionStatsChange(e) {
3434
3434
  const t = this._store.onSelectedObjectChange(() => {
3435
3435
  e();
3436
- }), r = this._store.onSelectedTransformChange(() => {
3436
+ }), s = this._store.onSelectedTransformChange(() => {
3437
3437
  e();
3438
3438
  });
3439
3439
  return () => {
3440
- t(), r();
3440
+ t(), s();
3441
3441
  };
3442
3442
  }
3443
3443
  dispose() {
3444
- this._mediator.dispose();
3444
+ this._mediator.dispose(), this._worker.dispose();
3445
3445
  }
3446
3446
  };
3447
3447
  dt = Xi([
@@ -3452,14 +3452,14 @@ dt = Xi([
3452
3452
  Z(3, c("ExportStore")),
3453
3453
  Z(4, c("IWorker"))
3454
3454
  ], dt);
3455
- var Yi = Object.getOwnPropertyDescriptor, Ki = (e, t, r, s) => {
3456
- for (var i = s > 1 ? void 0 : s ? Yi(t, r) : t, n = e.length - 1, o; n >= 0; n--)
3455
+ var Yi = Object.getOwnPropertyDescriptor, Ki = (e, t, s, r) => {
3456
+ for (var i = r > 1 ? void 0 : r ? Yi(t, s) : t, n = e.length - 1, o; n >= 0; n--)
3457
3457
  (o = e[n]) && (i = o(i) || i);
3458
3458
  return i;
3459
- }, Ee = (e, t) => (r, s) => t(r, s, e);
3459
+ }, Ee = (e, t) => (s, r) => t(s, r, e);
3460
3460
  let _t = class {
3461
- constructor(e, t, r) {
3462
- this._renderer = e, this._mediator = t, this._worker = r;
3461
+ constructor(e, t, s) {
3462
+ this._renderer = e, this._mediator = t, this._worker = s;
3463
3463
  }
3464
3464
  addFigure(e) {
3465
3465
  return this._mediator.send({
@@ -3496,7 +3496,7 @@ let _t = class {
3496
3496
  this._worker.stop();
3497
3497
  }
3498
3498
  dispose() {
3499
- this._mediator.dispose();
3499
+ this._mediator.dispose(), this._worker.dispose();
3500
3500
  }
3501
3501
  };
3502
3502
  _t = Ki([
@@ -3505,14 +3505,14 @@ _t = Ki([
3505
3505
  Ee(1, c("IMediator")),
3506
3506
  Ee(2, c("IWorker"))
3507
3507
  ], _t);
3508
- var qi = Object.getOwnPropertyDescriptor, Zi = (e, t, r, s) => {
3509
- for (var i = s > 1 ? void 0 : s ? qi(t, r) : t, n = e.length - 1, o; n >= 0; n--)
3508
+ var qi = Object.getOwnPropertyDescriptor, Zi = (e, t, s, r) => {
3509
+ for (var i = r > 1 ? void 0 : r ? qi(t, s) : t, n = e.length - 1, o; n >= 0; n--)
3510
3510
  (o = e[n]) && (i = o(i) || i);
3511
3511
  return i;
3512
- }, he = (e, t) => (r, s) => t(r, s, e);
3512
+ }, he = (e, t) => (s, r) => t(s, r, e);
3513
3513
  let ut = class {
3514
- constructor(e, t, r, s) {
3515
- this._renderer = e, this._mediator = t, this._store = r, this._worker = s;
3514
+ constructor(e, t, s, r) {
3515
+ this._renderer = e, this._mediator = t, this._store = s, this._worker = r;
3516
3516
  }
3517
3517
  /**
3518
3518
  * Запускает benchmark-тестирование.
@@ -3527,14 +3527,14 @@ let ut = class {
3527
3527
  run(e) {
3528
3528
  this._store.clear();
3529
3529
  const t = [];
3530
- for (const r of e.tests) {
3531
- const s = this._mediator.send({
3530
+ for (const s of e.tests) {
3531
+ const r = this._mediator.send({
3532
3532
  type: P.Benchmark,
3533
- payload: [r, e.durationMs]
3533
+ payload: [s, e.durationMs]
3534
3534
  });
3535
3535
  t.push({
3536
- type: r,
3537
- status: s === null ? Pe.Success : Pe.Failed
3536
+ type: s,
3537
+ status: r === null ? Pe.Success : Pe.Failed
3538
3538
  });
3539
3539
  }
3540
3540
  return { tests: t };
@@ -3579,6 +3579,9 @@ let ut = class {
3579
3579
  stop() {
3580
3580
  this._worker.stop();
3581
3581
  }
3582
+ dispose() {
3583
+ this._mediator.dispose(), this._worker.dispose(), this._store.clear();
3584
+ }
3582
3585
  };
3583
3586
  ut = Zi([
3584
3587
  v(),
@@ -3587,8 +3590,8 @@ ut = Zi([
3587
3590
  he(2, c("MetricsStore")),
3588
3591
  he(3, c("IWorker"))
3589
3592
  ], ut);
3590
- var Ji = Object.getOwnPropertyDescriptor, Qi = (e, t, r, s) => {
3591
- for (var i = s > 1 ? void 0 : s ? Ji(t, r) : t, n = e.length - 1, o; n >= 0; n--)
3593
+ var Ji = Object.getOwnPropertyDescriptor, Qi = (e, t, s, r) => {
3594
+ for (var i = r > 1 ? void 0 : r ? Ji(t, s) : t, n = e.length - 1, o; n >= 0; n--)
3592
3595
  (o = e[n]) && (i = o(i) || i);
3593
3596
  return i;
3594
3597
  };
@@ -3631,7 +3634,7 @@ let pt = class {
3631
3634
  }
3632
3635
  getSelectionStats() {
3633
3636
  const e = this._selectedObject;
3634
- return e ? qr(e) : null;
3637
+ return e ? qs(e) : null;
3635
3638
  }
3636
3639
  setSelectedObject(e) {
3637
3640
  if (this._selectedObject !== e) {
@@ -3652,13 +3655,13 @@ let pt = class {
3652
3655
  pt = Qi([
3653
3656
  v()
3654
3657
  ], pt);
3655
- class cr {
3658
+ class cs {
3656
3659
  _result = null;
3657
3660
  constructor() {
3658
3661
  bt(
3659
3662
  this,
3660
3663
  {
3661
- _result: $r.ref
3664
+ _result: $s.ref
3662
3665
  },
3663
3666
  {
3664
3667
  autoBind: !0
@@ -3681,16 +3684,16 @@ class cr {
3681
3684
  this._result = null;
3682
3685
  }
3683
3686
  }
3684
- var en = Object.getOwnPropertyDescriptor, tn = (e, t, r, s) => {
3685
- for (var i = s > 1 ? void 0 : s ? en(t, r) : t, n = e.length - 1, o; n >= 0; n--)
3687
+ var en = Object.getOwnPropertyDescriptor, tn = (e, t, s, r) => {
3688
+ for (var i = r > 1 ? void 0 : r ? en(t, s) : t, n = e.length - 1, o; n >= 0; n--)
3686
3689
  (o = e[n]) && (i = o(i) || i);
3687
3690
  return i;
3688
3691
  };
3689
3692
  let mt = class {
3690
3693
  /** Дата создания текущего отчета. */
3691
3694
  _createdAt = (/* @__PURE__ */ new Date()).toISOString();
3692
- /** Метрики успешно выполненных тестов. */
3693
- _metrics = /* @__PURE__ */ new Map();
3695
+ /** Отчеты успешно выполненных тестов. */
3696
+ _tests = [];
3694
3697
  /** Текущие live-метрики. */
3695
3698
  _currentMetrics = null;
3696
3699
  /** Слушатели обновления live-метрик. */
@@ -3699,10 +3702,14 @@ let mt = class {
3699
3702
  bt(this, {}, { autoBind: !0 });
3700
3703
  }
3701
3704
  clear() {
3702
- this._createdAt = (/* @__PURE__ */ new Date()).toISOString(), this._metrics.clear(), this.setCurrentMetrics(null);
3705
+ this._createdAt = (/* @__PURE__ */ new Date()).toISOString(), this._tests = [], this.setCurrentMetrics(null);
3703
3706
  }
3704
3707
  addMetrics(e, t) {
3705
- this._metrics.set(e, t);
3708
+ this._tests.push({
3709
+ type: e,
3710
+ status: Pe.Success,
3711
+ metrics: t
3712
+ });
3706
3713
  }
3707
3714
  setCurrentMetrics(e) {
3708
3715
  this._currentMetrics = e;
@@ -3718,52 +3725,47 @@ let mt = class {
3718
3725
  };
3719
3726
  }
3720
3727
  getReport() {
3721
- const e = [...this._metrics.entries()].map(([t, r]) => ({
3722
- type: t,
3723
- status: Pe.Success,
3724
- metrics: r
3725
- }));
3726
3728
  return {
3727
3729
  createdAt: this._createdAt,
3728
- tests: e
3730
+ tests: [...this._tests]
3729
3731
  };
3730
3732
  }
3731
3733
  };
3732
3734
  mt = tn([
3733
3735
  v()
3734
3736
  ], mt);
3735
- class hr extends Error {
3736
- constructor(t, r, s, i) {
3737
- super(r), this.type = t, this.code = s, this.meta = i, this.name = this._name;
3737
+ class hs extends Error {
3738
+ constructor(t, s, r, i) {
3739
+ super(s), this.type = t, this.code = r, this.meta = i, this.name = this._name;
3738
3740
  }
3739
3741
  _name = "PolicyException";
3740
3742
  }
3741
3743
  class pe extends Error {
3742
- constructor(t, r, s, i) {
3743
- super(r), this.type = t, this.code = s, this.meta = i, this.name = this._name;
3744
+ constructor(t, s, r, i) {
3745
+ super(s), this.type = t, this.code = r, this.meta = i, this.name = this._name;
3744
3746
  }
3745
3747
  _name = "ValidationException";
3746
3748
  }
3747
- var rn = Object.getOwnPropertyDescriptor, sn = (e, t, r, s) => {
3748
- for (var i = s > 1 ? void 0 : s ? rn(t, r) : t, n = e.length - 1, o; n >= 0; n--)
3749
+ var sn = Object.getOwnPropertyDescriptor, rn = (e, t, s, r) => {
3750
+ for (var i = r > 1 ? void 0 : r ? sn(t, s) : t, n = e.length - 1, o; n >= 0; n--)
3749
3751
  (o = e[n]) && (i = o(i) || i);
3750
3752
  return i;
3751
- }, nn = (e, t) => (r, s) => t(r, s, e);
3753
+ }, nn = (e, t) => (s, r) => t(s, r, e);
3752
3754
  let ft = class {
3753
3755
  constructor(e) {
3754
3756
  this._store = e;
3755
3757
  }
3756
3758
  check(e) {
3757
3759
  const t = this._store.getSelectMode();
3758
- if (!Lr[t].includes(e))
3759
- throw new hr(
3760
+ if (!Ls[t].includes(e))
3761
+ throw new hs(
3760
3762
  G.NotAllowed,
3761
3763
  `Tool ${e} is not allowed`,
3762
3764
  "TOOL_NOT_ALLOWED"
3763
3765
  );
3764
3766
  }
3765
3767
  };
3766
- ft = sn([
3768
+ ft = rn([
3767
3769
  v(),
3768
3770
  nn(0, c("EditorStore"))
3769
3771
  ], ft);
@@ -3771,20 +3773,20 @@ class on {
3771
3773
  constructor() {
3772
3774
  }
3773
3775
  validate(t) {
3774
- const r = t.trim();
3775
- if (!r)
3776
+ const s = t.trim();
3777
+ if (!s)
3776
3778
  throw new pe(
3777
3779
  G.ValidationError,
3778
3780
  "File content is empty.",
3779
3781
  "FILE_CONTENT_EMPTY"
3780
3782
  );
3781
- if (!/^v\s+[-+.\deE]+\s+[-+.\deE]+\s+[-+.\deE]+/m.test(r))
3783
+ if (!/^v\s+[-+.\deE]+\s+[-+.\deE]+\s+[-+.\deE]+/m.test(s))
3782
3784
  throw new pe(
3783
3785
  G.ValidationError,
3784
3786
  "OBJ content does not contain vertices.",
3785
3787
  "WRONG_FILE_CONTENT"
3786
3788
  );
3787
- if (!/^f\s+/m.test(r))
3789
+ if (!/^f\s+/m.test(s))
3788
3790
  throw new pe(
3789
3791
  G.ValidationError,
3790
3792
  "OBJ content does not contain faces.",
@@ -3792,8 +3794,8 @@ class on {
3792
3794
  );
3793
3795
  }
3794
3796
  }
3795
- var an = Object.getOwnPropertyDescriptor, ln = (e, t, r, s) => {
3796
- for (var i = s > 1 ? void 0 : s ? an(t, r) : t, n = e.length - 1, o; n >= 0; n--)
3797
+ var an = Object.getOwnPropertyDescriptor, ln = (e, t, s, r) => {
3798
+ for (var i = r > 1 ? void 0 : r ? an(t, s) : t, n = e.length - 1, o; n >= 0; n--)
3797
3799
  (o = e[n]) && (i = o(i) || i);
3798
3800
  return i;
3799
3801
  };
@@ -3802,7 +3804,7 @@ let gt = class {
3802
3804
  try {
3803
3805
  return e();
3804
3806
  } catch (t) {
3805
- return t instanceof hr ? {
3807
+ return t instanceof hs ? {
3806
3808
  type: t.type,
3807
3809
  message: t.message,
3808
3810
  code: t.code,
@@ -3829,14 +3831,14 @@ let gt = class {
3829
3831
  gt = ln([
3830
3832
  v()
3831
3833
  ], gt);
3832
- var cn = Object.getOwnPropertyDescriptor, hn = (e, t, r, s) => {
3833
- for (var i = s > 1 ? void 0 : s ? cn(t, r) : t, n = e.length - 1, o; n >= 0; n--)
3834
+ var cn = Object.getOwnPropertyDescriptor, hn = (e, t, s, r) => {
3835
+ for (var i = r > 1 ? void 0 : r ? cn(t, s) : t, n = e.length - 1, o; n >= 0; n--)
3834
3836
  (o = e[n]) && (i = o(i) || i);
3835
3837
  return i;
3836
- }, Yt = (e, t) => (r, s) => t(r, s, e);
3838
+ }, Yt = (e, t) => (s, r) => t(s, r, e);
3837
3839
  let vt = class {
3838
3840
  constructor(e, t) {
3839
- this._middlewares = t, this._managers = new Map(e.map((r) => [r.type, r]));
3841
+ this._middlewares = t, this._managers = new Map(e.map((s) => [s.type, s]));
3840
3842
  }
3841
3843
  _managers;
3842
3844
  send(e) {
@@ -3848,8 +3850,8 @@ let vt = class {
3848
3850
  code: "MANAGER_NOT_FOUND",
3849
3851
  blocked: !0
3850
3852
  };
3851
- const r = () => (t.manage(...e.payload), null);
3852
- return this._middlewares.reduceRight((i, n) => () => n.handle(i), r)();
3853
+ const s = () => (t.manage(...e.payload), null);
3854
+ return this._middlewares.reduceRight((i, n) => () => n.handle(i), s)();
3853
3855
  }
3854
3856
  dispose() {
3855
3857
  this._managers && this._managers.clear();
@@ -3862,15 +3864,15 @@ vt = hn([
3862
3864
  ], vt);
3863
3865
  let de = null, _e = null, ue = null;
3864
3866
  function St() {
3865
- return Er.createChildContainer();
3867
+ return Es.createChildContainer();
3866
3868
  }
3867
- function dr(e, t) {
3869
+ function ds(e, t) {
3868
3870
  e.registerInstance("Canvas", t);
3869
3871
  }
3870
- function _r(e, t) {
3872
+ function _s(e, t) {
3871
3873
  e.registerInstance(
3872
3874
  "RendererConfig",
3873
- Zr(ts, t)
3875
+ Zs(tr, t)
3874
3876
  );
3875
3877
  }
3876
3878
  function xt(e) {
@@ -3885,38 +3887,38 @@ function _n(e) {
3885
3887
  function un(e) {
3886
3888
  e.registerSingleton("ToolPolicy", ft);
3887
3889
  }
3888
- function ur(e) {
3890
+ function us(e) {
3889
3891
  e.registerSingleton("ObjValidator", on);
3890
3892
  }
3891
- function pr(e) {
3893
+ function ps(e) {
3892
3894
  e.registerSingleton("IMeshApi", je), e.registerSingleton("ICameraApi", Re), e.registerSingleton("IDomApi", Be), e.registerSingleton("ISceneApi", Fe);
3893
3895
  }
3894
- function mr(e) {
3895
- pr(e), e.registerSingleton("IControlsStateApi", De), e.registerSingleton("IRaycastApi", Ve), e.registerSingleton("ITransformApi", He), e.registerSingleton("IInteractionApi", $e);
3896
+ function ms(e) {
3897
+ ps(e), e.registerSingleton("IControlsStateApi", De), e.registerSingleton("IRaycastApi", Ve), e.registerSingleton("ITransformApi", He), e.registerSingleton("IInteractionApi", $e);
3896
3898
  }
3897
3899
  function pn(e) {
3898
- pr(e);
3900
+ ps(e);
3899
3901
  }
3900
3902
  function mn(e) {
3901
- mr(e), e.registerSingleton("IRendererInfoApi", ke);
3903
+ ms(e), e.registerSingleton("IRendererInfoApi", ke);
3902
3904
  }
3903
- function fr(e) {
3905
+ function fs(e) {
3904
3906
  e.registerSingleton("ControlsModule", me), e.registerSingleton("GizmoModule", Ge), e.registerSingleton("RaycastModule", We), e.registerSingleton("SceneModule", Ne), e.register("IUpdatableModule", { useToken: "ControlsModule" }), e.register("IRenderableModule", { useToken: "GizmoModule" }), e.register("IRuntimeModule", { useToken: "RaycastModule" }), e.register("IRuntimeModule", { useToken: "SceneModule" }), e.register("IInteractiveModule", { useToken: "ControlsModule" }), e.register("IInteractiveModule", { useToken: "RaycastModule" }), e.register("IInteractiveModule", { useToken: "GizmoModule" });
3905
3907
  }
3906
3908
  function fn(e) {
3907
3909
  e.registerSingleton("ControlsModule", me), e.registerSingleton("SceneModule", Ue), e.register("IUpdatableModule", { useToken: "ControlsModule" }), e.register("IRuntimeModule", { useToken: "SceneModule" }), e.register("IInteractiveModule", { useToken: "ControlsModule" });
3908
3910
  }
3909
3911
  function gn(e) {
3910
- fr(e), e.registerSingleton("MetricsModule", Xe), e.register("IObserverModule", { useToken: "MetricsModule" }), e.register("IMetricsApi", { useToken: "MetricsModule" });
3912
+ fs(e), e.registerSingleton("MetricsModule", Xe), e.register("IObserverModule", { useToken: "MetricsModule" }), e.register("IMetricsApi", { useToken: "MetricsModule" });
3911
3913
  }
3912
3914
  function vn(e) {
3913
3915
  e.registerSingleton("IDisplayHandler", Je);
3914
3916
  }
3915
3917
  function bn(e) {
3916
- e.registerSingleton("ISelectHandler", tt), e.registerSingleton("ISelectHandler", et), e.registerSingleton("ISelectHandler", Qe), e.registerSingleton("ISelectHandler", rt);
3918
+ e.registerSingleton("ISelectHandler", tt), e.registerSingleton("ISelectHandler", et), e.registerSingleton("ISelectHandler", Qe), e.registerSingleton("ISelectHandler", st);
3917
3919
  }
3918
3920
  function Mn(e) {
3919
- e.registerSingleton("IToolHandler", nt), e.registerSingleton("IToolHandler", it), e.registerSingleton("IToolHandler", st);
3921
+ e.registerSingleton("IToolHandler", nt), e.registerSingleton("IToolHandler", it), e.registerSingleton("IToolHandler", rt);
3920
3922
  }
3921
3923
  function yn(e) {
3922
3924
  e.registerSingleton("ISceneHandler", ge), e.registerSingleton("ISceneHandler", ot), e.registerSingleton("ISceneHandler", ve), e.registerSingleton("ISceneHandler", ee), e.registerSingleton("ISceneHandler", Q);
@@ -3936,26 +3938,26 @@ function An(e) {
3936
3938
  function In(e) {
3937
3939
  e.registerSingleton("ToolManager", fe), e.register("IToolManager", { useToken: "ToolManager" }), e.register("IManager", { useToken: "ToolManager" });
3938
3940
  }
3939
- function gr(e) {
3941
+ function gs(e) {
3940
3942
  e.registerSingleton("SceneManager", Ke), e.register("ISceneManager", { useToken: "SceneManager" }), e.register("IManager", { useToken: "SceneManager" });
3941
3943
  }
3942
3944
  function Cn(e) {
3943
3945
  e.registerSingleton("BenchmarkManager", Ze), e.register("IBenchmarkManager", { useToken: "BenchmarkManager" }), e.register("IManager", { useToken: "BenchmarkManager" });
3944
3946
  }
3945
3947
  function On(e) {
3946
- xn(e), An(e), In(e), gr(e);
3948
+ xn(e), An(e), In(e), gs(e);
3947
3949
  }
3948
3950
  function En(e) {
3949
- gr(e);
3951
+ gs(e);
3950
3952
  }
3951
- function vr(e) {
3953
+ function vs(e) {
3952
3954
  e.registerSingleton("IMiddleware", gt), e.registerSingleton("IMediator", vt);
3953
3955
  }
3954
3956
  function Pn(e) {
3955
- e.registerSingleton("EditorStore", pt), e.registerSingleton("ExportStore", cr);
3957
+ e.registerSingleton("EditorStore", pt), e.registerSingleton("ExportStore", cs);
3956
3958
  }
3957
3959
  function Ln(e) {
3958
- e.registerSingleton("ExportStore", cr);
3960
+ e.registerSingleton("ExportStore", cs);
3959
3961
  }
3960
3962
  function Tn(e) {
3961
3963
  e.registerSingleton("MetricsStore", mt);
@@ -3969,17 +3971,17 @@ function jn(e) {
3969
3971
  function Vn(e) {
3970
3972
  e.registerSingleton("BenchmarkHub", ut);
3971
3973
  }
3972
- function br(e, t, r) {
3973
- return dr(e, t), _r(e, r), _n(e), xt(e), un(e), ur(e), mr(e), fr(e), vn(e), bn(e), Mn(e), yn(e), On(e), vr(e), Dn(e), Pn(e), e;
3974
+ function bs(e, t, s) {
3975
+ return ds(e, t), _s(e, s), _n(e), xt(e), un(e), us(e), ms(e), fs(e), vn(e), bn(e), Mn(e), yn(e), On(e), vs(e), Dn(e), Pn(e), e;
3974
3976
  }
3975
- function Hn(e, t, r) {
3976
- return br(e, t, r), dn(e), gn(e), mn(e), Sn(e), Cn(e), Tn(e), Vn(e), e;
3977
+ function Hn(e, t, s) {
3978
+ return bs(e, t, s), dn(e), gn(e), mn(e), Sn(e), Cn(e), Tn(e), Vn(e), e;
3977
3979
  }
3978
- function $n(e, t, r) {
3979
- return dr(e, t), _r(e, r), xt(e), ur(e), pn(e), fn(e), wn(e), En(e), vr(e), jn(e), Ln(e), e;
3980
+ function $n(e, t, s) {
3981
+ return ds(e, t), _s(e, s), xt(e), us(e), pn(e), fn(e), wn(e), En(e), vs(e), jn(e), Ln(e), e;
3980
3982
  }
3981
3983
  function Rn(e, t) {
3982
- return de || (de = br(St(), e, t), de);
3984
+ return de || (de = bs(St(), e, t), de);
3983
3985
  }
3984
3986
  function Bn(e, t) {
3985
3987
  return _e || (_e = $n(St(), e, t), _e);