@realsee/dnalogel 3.72.5-alpha.3 → 3.72.5-alpha.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,11 +1,11 @@
1
- var D = Object.defineProperty;
2
- var A = (m, a, t) => a in m ? D(m, a, { enumerable: !0, configurable: !0, writable: !0, value: t }) : m[a] = t;
3
- var p = (m, a, t) => (A(m, typeof a != "symbol" ? a + "" : a, t), t);
4
- import { BaseTag as w } from "./BaseTag.js";
5
- import * as r from "three";
6
- import { Line as V } from "@realsee/five/line";
7
- import { anyPositionToVector3 as E } from "../../../shared-utils/positionToVector3.js";
8
- import { transformPosition as k } from "../../../shared-utils/five/transformPosition.js";
1
+ var w = Object.defineProperty;
2
+ var E = (m, l, t) => l in m ? w(m, l, { enumerable: !0, configurable: !0, writable: !0, value: t }) : m[l] = t;
3
+ var c = (m, l, t) => (E(m, typeof l != "symbol" ? l + "" : l, t), t);
4
+ import { BaseTag as k } from "./BaseTag.js";
5
+ import * as n from "three";
6
+ import { Line as I } from "@realsee/five/line";
7
+ import { anyPositionToVector3 as M } from "../../../shared-utils/positionToVector3.js";
8
+ import { transformPosition as R } from "../../../shared-utils/five/transformPosition.js";
9
9
  import "../../../shared-utils/Subscribe.js";
10
10
  import "../../utils/tag/calculateTagConfig.js";
11
11
  import "../../../vendor/object-assign-deep/objectAssignDeep.js";
@@ -87,57 +87,57 @@ import "../../../shared-utils/five/getFloorIndex.js";
87
87
  import "../../../shared-utils/safeObj.js";
88
88
  import "../../utils/Cache.js";
89
89
  import "../../../shared-utils/promise/withResolvers.js";
90
- const u = new r.Vector2();
91
- class di extends w {
90
+ const g = new n.Vector2();
91
+ class gi extends k {
92
92
  constructor(t, e) {
93
- var i, o, s, n, l;
93
+ var o, i, r, s, h;
94
94
  super(t, e);
95
- p(this, "__Object__");
96
- p(this, "requestIdleCallbackId");
95
+ c(this, "__Object__");
96
+ c(this, "requestIdleCallbackId");
97
97
  // icon 与线条端点的固定像素间距
98
- p(this, "iconPixelGap", 10);
98
+ c(this, "iconPixelGap", 10);
99
99
  // 优化:重用临时对象,避免频繁创建
100
- p(this, "_temp", {
101
- lineStart: new r.Vector3(),
100
+ c(this, "_temp", {
101
+ lineStart: new n.Vector3(),
102
102
  // 线条起点(project后会变成NDC)
103
- iconPos: new r.Vector3(),
103
+ iconPos: new n.Vector3(),
104
104
  // icon位置(project后会变成NDC)
105
- screenDirPixel: new r.Vector2(),
105
+ screenDirPixel: new n.Vector2(),
106
106
  // 屏幕方向(normalize后会变成单位向量)
107
- targetNDC: new r.Vector2(),
107
+ targetNDC: new n.Vector2(),
108
108
  // 目标NDC坐标
109
- lineDir: new r.Vector3(),
109
+ lineDir: new n.Vector3(),
110
110
  // 线条方向(计算w0时重用)
111
- lineEnd: new r.Vector3(),
111
+ lineEnd: new n.Vector3(),
112
112
  // 线条终点
113
- raycaster: new r.Raycaster()
113
+ raycaster: new n.Raycaster()
114
114
  // 射线投射器
115
115
  });
116
116
  // 用于变化检测的缓存值
117
- p(this, "_lastUpdateCache", {
117
+ c(this, "_lastUpdateCache", {
118
118
  position: [0, 0, 0],
119
119
  screenLeft: 0,
120
120
  screenTop: 0,
121
121
  scale: 1,
122
122
  visible: !1
123
123
  });
124
- if ((o = (i = e.style) == null ? void 0 : i.point) != null && o.width) {
125
- const h = (l = (n = (s = e.style) == null ? void 0 : s.point) == null ? void 0 : n.scale) != null ? l : 1;
126
- this.iconPixelGap = e.style.point.width * h * 1.4 / 2 + 2;
124
+ if ((i = (o = e.style) == null ? void 0 : o.point) != null && i.width) {
125
+ const p = (h = (s = (r = e.style) == null ? void 0 : r.point) == null ? void 0 : s.scale) != null ? h : 1;
126
+ this.iconPixelGap = e.style.point.width * p * 1.4 / 2 + 2;
127
127
  }
128
- this.initialTagLine();
128
+ e.contentType === "Audio" && (this.iconPixelGap = 34 / 2 + 2), this.initialTagLine();
129
129
  }
130
130
  initialTagLine() {
131
- var o, s, n;
131
+ var i, r, s;
132
132
  const t = this.config;
133
- if (!((o = t == null ? void 0 : t.tagNormalLineConfig) != null && o.enabled) || !this.normalLineLength)
133
+ if (!((i = t == null ? void 0 : t.tagNormalLineConfig) != null && i.enabled) || !this.normalLineLength)
134
134
  return;
135
- const e = this.five.renderer.getSize(u), i = this.five.renderer.getPixelRatio();
136
- this.tagNormalLine = new V(new r.Vector3().fromArray(this.position), new r.Vector3().fromArray(this.originPosition)), this.tagNormalLine.points.visible = !1, this.tagNormalLine.setMaterial({
137
- color: new r.Vector3(1, 1, 1),
138
- linewidth: (n = (s = t == null ? void 0 : t.tagNormalLineConfig) == null ? void 0 : s.lineWidth) != null ? n : 1.2,
135
+ const e = this.five.renderer.getSize(g), o = this.five.renderer.getPixelRatio();
136
+ this.tagNormalLine = new I(new n.Vector3().fromArray(this.position), new n.Vector3().fromArray(this.originPosition)), this.tagNormalLine.points.visible = !1, this.tagNormalLine.setMaterial({
137
+ color: new n.Vector3(1, 1, 1),
138
+ linewidth: (s = (r = t == null ? void 0 : t.tagNormalLineConfig) == null ? void 0 : r.lineWidth) != null ? s : 1.2,
139
139
  dashed: !1
140
- }), this.tagNormalLine.line.material.transparent = !0, this.tagNormalLine.line.material.depthWrite = !1, this.tagNormalLine.line.material.depthTest = !1, this.tagNormalLine.line.material.dashed = !1, this.tagNormalLine.line.renderOrder = 2, this.tagNormalLine.setResolution(e.width * i, e.height * i), this.tagNormalLine.visible = !1, this.tagNormalLine.name = `tagNormalLine-${this.id}`, this.plugin.group.add(this.tagNormalLine);
140
+ }), this.tagNormalLine.line.material.transparent = !0, this.tagNormalLine.line.material.depthWrite = !1, this.tagNormalLine.line.material.depthTest = !0, this.tagNormalLine.line.material.dashed = !1, this.tagNormalLine.line.renderOrder = 2, this.tagNormalLine.setResolution(e.width * o, e.height * o), this.tagNormalLine.visible = !1, this.tagNormalLine.name = `tagNormalLine-${this.id}`, this.plugin.group.add(this.tagNormalLine);
141
141
  }
142
142
  /**
143
143
  * @description 展开自己,收起其他标签
@@ -146,8 +146,8 @@ class di extends w {
146
146
  if (this.isPopoverConfigEnabled())
147
147
  return;
148
148
  const t = this.can("fold"), e = this.can("unfold");
149
- t && e && (this.state.unfolded = !this.state.unfolded, this.manuallyOperated = !0, this.plugin.addRenderQueue({ type: "TagContainerSvelte", keys: ["tags"] }), this.state.unfolded && this.plugin.tags.forEach((i) => {
150
- i.id !== this.id && i.fold();
149
+ t && e && (this.state.unfolded = !this.state.unfolded, this.manuallyOperated = !0, this.plugin.addRenderQueue({ type: "TagContainerSvelte", keys: ["tags"] }), this.state.unfolded && this.plugin.tags.forEach((o) => {
150
+ o.id !== this.id && o.fold();
151
151
  }));
152
152
  }
153
153
  onClick(t) {
@@ -173,97 +173,98 @@ class di extends w {
173
173
  setUnfold(t) {
174
174
  if (this.isPopoverConfigEnabled())
175
175
  return;
176
- const e = this.can("fold"), i = this.can("unfold");
177
- e && i && (this.state.unfolded = t, this.hooks.emit(t ? "unfolded" : "folded"), this.plugin.addRenderQueue({ type: "TagContainerSvelte", keys: ["tags"] }));
176
+ const e = this.can("fold"), o = this.can("unfold");
177
+ e && o && (this.state.unfolded = t, this.hooks.emit(t ? "unfolded" : "folded"), this.plugin.addRenderQueue({ type: "TagContainerSvelte", keys: ["tags"] }));
178
178
  }
179
179
  setPosition(t) {
180
180
  this.originPosition = t, this.position = (() => {
181
181
  const e = this.plugin.workUtil.transform;
182
- let i = k(E(t), e).toArray();
182
+ let o = R(M(t), e).toArray();
183
183
  if (this.normal && this.normalLineLength) {
184
- const o = this.computeNormal();
185
- i = new r.Vector3().fromArray(i).clone().add(o.clone().setLength(this.normalLineLength)).toArray();
184
+ const i = this.computeNormal();
185
+ o = new n.Vector3().fromArray(o).clone().add(i.clone().setLength(this.normalLineLength)).toArray();
186
186
  }
187
- return i;
187
+ return o;
188
188
  })(), this.cache.clear(), this._lastUpdateCache.position = [0, 0, 0], this.updateVisible(), this.updateScreenPosition(), this.updateZIndex(), this.plugin.addRenderQueue({ type: "TagContainerSvelte", keys: ["tags"] });
189
189
  }
190
190
  /**
191
191
  * 更新标签连线的位置,使其端点与icon保持固定像素距离
192
192
  * 使用屏幕空间反投影方法,确保任意视角下都保持固定像素距离
193
193
  */
194
- updateTagNormalLinePosition() {
195
- var _, y, v, L, b, x, C;
194
+ updateTagNormalLinePosition(t) {
195
+ var v, b, L, x, C, N, S;
196
196
  if (!this.screenPosition || !this.tagNormalLine)
197
197
  return;
198
- if (!this.visible) {
198
+ const { force: e = !1 } = t != null ? t : {};
199
+ if (!(e ? this.state.visible : this.currentVisible)) {
199
200
  this.tagNormalLine.visible = !1;
200
201
  return;
201
202
  }
202
- const t = this._lastUpdateCache;
203
- if (!(this.visible !== t.visible)) {
204
- const f = Math.abs(this.position[0] - t.position[0]) > 1e-3 || Math.abs(this.position[1] - t.position[1]) > 1e-3 || Math.abs(this.position[2] - t.position[2]) > 1e-3, T = Math.abs(((_ = this.screenPosition.leftPx) != null ? _ : 0) - t.screenLeft) > 0.5 || Math.abs(((y = this.screenPosition.topPx) != null ? y : 0) - t.screenTop) > 0.5 || Math.abs(((v = this.screenPosition.scale) != null ? v : 1) - t.scale) > 2e-3;
205
- if (!f && !T)
203
+ const i = this._lastUpdateCache;
204
+ if (!(this.visible !== i.visible)) {
205
+ const u = Math.abs(this.position[0] - i.position[0]) > 1e-3 || Math.abs(this.position[1] - i.position[1]) > 1e-3 || Math.abs(this.position[2] - i.position[2]) > 1e-3, V = Math.abs(((v = this.screenPosition.leftPx) != null ? v : 0) - i.screenLeft) > 0.5 || Math.abs(((b = this.screenPosition.topPx) != null ? b : 0) - i.screenTop) > 0.5 || Math.abs(((L = this.screenPosition.scale) != null ? L : 1) - i.scale) > 2e-3;
206
+ if (!u && !V)
206
207
  return;
207
208
  }
208
- t.position = new r.Vector3().fromArray(this.position).toArray(), t.screenLeft = (L = this.screenPosition.leftPx) != null ? L : 0, t.screenTop = (b = this.screenPosition.topPx) != null ? b : 0, t.scale = (x = this.screenPosition.scale) != null ? x : 1, t.visible = this.visible;
209
- const i = this.five.renderer.getSize(u);
209
+ i.position = new n.Vector3().fromArray(this.position).toArray(), i.screenLeft = (x = this.screenPosition.leftPx) != null ? x : 0, i.screenTop = (C = this.screenPosition.topPx) != null ? C : 0, i.scale = (N = this.screenPosition.scale) != null ? N : 1, i.visible = this.visible;
210
+ const s = this.five.renderer.getSize(g);
210
211
  this._temp.lineStart.fromArray(this.originPosition), this._temp.iconPos.fromArray(this.position), this._temp.lineStart.project(this.five.camera), this._temp.iconPos.project(this.five.camera), this._temp.screenDirPixel.set(
211
- (this._temp.iconPos.x - this._temp.lineStart.x) * i.x / 2,
212
- (this._temp.iconPos.y - this._temp.lineStart.y) * i.y / 2
212
+ (this._temp.iconPos.x - this._temp.lineStart.x) * s.x / 2,
213
+ (this._temp.iconPos.y - this._temp.lineStart.y) * s.y / 2
213
214
  );
214
- const o = this._temp.screenDirPixel.length();
215
+ const h = this._temp.screenDirPixel.length();
215
216
  this._temp.screenDirPixel.normalize();
216
- const s = this.iconPixelGap * ((C = this.screenPosition.scale) != null ? C : 1);
217
+ const p = this.iconPixelGap * ((S = this.screenPosition.scale) != null ? S : 1);
217
218
  this._temp.targetNDC.set(
218
- (this._temp.iconPos.x * i.x / 2 - this._temp.screenDirPixel.x * s) / (i.x / 2),
219
- (this._temp.iconPos.y * i.y / 2 - this._temp.screenDirPixel.y * s) / (i.y / 2)
219
+ (this._temp.iconPos.x * s.x / 2 - this._temp.screenDirPixel.x * p) / (s.x / 2),
220
+ (this._temp.iconPos.y * s.y / 2 - this._temp.screenDirPixel.y * p) / (s.y / 2)
220
221
  ), this._temp.raycaster.setFromCamera(this._temp.targetNDC, this.five.camera);
221
- const n = this._temp.raycaster.ray;
222
- this._temp.lineStart.fromArray(this.originPosition), this._temp.iconPos.fromArray(this.position), this._temp.lineDir.copy(this._temp.iconPos).sub(this._temp.lineStart).normalize(), this._temp.lineEnd.copy(n.origin).sub(this._temp.lineStart);
223
- const l = n.direction.dot(n.direction), h = n.direction.dot(this._temp.lineDir), c = this._temp.lineDir.dot(this._temp.lineDir), d = n.direction.dot(this._temp.lineEnd), N = this._temp.lineDir.dot(this._temp.lineEnd), g = l * c - h * h;
224
- let P = 0;
225
- Math.abs(g) > 1e-4 && (P = (h * N - c * d) / g), this._temp.lineEnd.copy(n.origin).add(n.direction.multiplyScalar(Math.max(0, P)));
226
- const S = this._temp.lineStart.distanceTo(this._temp.iconPos);
227
- if (this._temp.lineStart.distanceTo(this._temp.lineEnd) > S) {
228
- const f = Math.max(0, 1 - s / o);
229
- this._temp.lineEnd.copy(this._temp.lineStart).lerp(this._temp.iconPos, f);
222
+ const a = this._temp.raycaster.ray;
223
+ this._temp.lineStart.fromArray(this.originPosition), this._temp.iconPos.fromArray(this.position), this._temp.lineDir.copy(this._temp.iconPos).sub(this._temp.lineStart).normalize(), this._temp.lineEnd.copy(a.origin).sub(this._temp.lineStart);
224
+ const d = a.direction.dot(a.direction), f = a.direction.dot(this._temp.lineDir), P = this._temp.lineDir.dot(this._temp.lineDir), T = a.direction.dot(this._temp.lineEnd), D = this._temp.lineDir.dot(this._temp.lineEnd), _ = d * P - f * f;
225
+ let y = 0;
226
+ Math.abs(_) > 1e-4 && (y = (f * D - P * T) / _), this._temp.lineEnd.copy(a.origin).add(a.direction.multiplyScalar(Math.max(0, y)));
227
+ const A = this._temp.lineStart.distanceTo(this._temp.iconPos);
228
+ if (this._temp.lineStart.distanceTo(this._temp.lineEnd) > A) {
229
+ const u = Math.max(0, 1 - p / h);
230
+ this._temp.lineEnd.copy(this._temp.lineStart).lerp(this._temp.iconPos, u);
230
231
  }
231
232
  this.tagNormalLine.setPoints(this._temp.lineStart, this._temp.lineEnd), this.tagNormalLine.visible = !0;
232
233
  }
233
234
  updateScreenPosition(t) {
234
- var n;
235
+ var s;
235
236
  if (this.stickType !== "2DPoint" && this.stickType !== "3DPoint")
236
237
  return;
237
- const { force: e = !1 } = t != null ? t : {}, i = e ? this.state.visible : this.currentVisible, o = (n = this.__Object__) != null ? n : {
238
+ const { force: e = !1 } = t != null ? t : {}, o = e ? this.state.visible : this.currentVisible, i = (s = this.__Object__) != null ? s : {
238
239
  timeoutId: void 0,
239
240
  inAnimation: !1
240
241
  };
241
- if (this.__Object__ = o, !i && this.screenPosition ? (o.inAnimation = !0, o.timeoutId = setTimeout(() => {
242
+ if (this.__Object__ = i, !o && this.screenPosition ? (i.inAnimation = !0, i.timeoutId = setTimeout(() => {
242
243
  requestAnimationFrame(() => {
243
- this.currentVisible || (o.inAnimation = !1, this.screenPosition = null, this.plugin.addRenderQueue({ type: "TagContainerSvelte", keys: ["tags"] }));
244
+ this.currentVisible || (i.inAnimation = !1, this.screenPosition = null, this.plugin.addRenderQueue({ type: "TagContainerSvelte", keys: ["tags"] }));
244
245
  });
245
- }, 1e3)) : o.timeoutId && (clearTimeout(o.timeoutId), o.inAnimation = !1, o.timeoutId = void 0), !i && !o.inAnimation)
246
+ }, 1e3)) : i.timeoutId && (clearTimeout(i.timeoutId), i.inAnimation = !1, i.timeoutId = void 0), !o && !i.inAnimation)
246
247
  return;
247
- const s = this.computeTagProject();
248
- if (s && this.five.renderer) {
249
- const l = this.getDistance(void 0, 1), h = (() => {
248
+ const r = this.computeTagProject();
249
+ if (r && this.five.renderer) {
250
+ const h = this.getDistance(void 0, 1), p = (() => {
250
251
  if (!this.currentConfig.simulate3D)
251
252
  return 1;
252
253
  const d = 2 * Math.tan(0.5 * this.five.camera.fov / 180 * Math.PI);
253
- return Math.max(Math.min(1 - d * l / 40, 1), 0.7);
254
- })(), c = this.five.renderer.getSize(u);
254
+ return Math.max(Math.min(1 - d * h / 40, 1), 0.7);
255
+ })(), a = this.five.renderer.getSize(g);
255
256
  this.screenPosition = {
256
- leftPx: (s.x + 1) / 2 * c.x,
257
- topPx: (-s.y + 1) / 2 * c.y,
258
- scale: h
259
- }, this.updateTagNormalLinePosition();
257
+ leftPx: (r.x + 1) / 2 * a.x,
258
+ topPx: (-r.y + 1) / 2 * a.y,
259
+ scale: p
260
+ }, this.updateTagNormalLinePosition({ force: t == null ? void 0 : t.force });
260
261
  } else
261
262
  this.screenPosition = null;
262
263
  this.plugin.addRenderQueue({ type: "TagContainerSvelte", keys: ["tags"] });
263
264
  }
264
265
  set(t, e = !0) {
265
- var i, o, s;
266
- super.set(t, e), this.normalLineLength = (s = (o = (i = t.style) == null ? void 0 : i.point) == null ? void 0 : o.normalLen) != null ? s : 0, this._lastUpdateCache.position = [0, 0, 0], this.plugin.addRenderQueue({ type: "TagContainerSvelte", keys: ["tags"] }), t.position && this.setPosition(this.position);
266
+ var o, i, r;
267
+ super.set(t, e), this.normalLineLength = (r = (i = (o = t.style) == null ? void 0 : o.point) == null ? void 0 : i.normalLen) != null ? r : 0, this._lastUpdateCache.position = [0, 0, 0], this.plugin.addRenderQueue({ type: "TagContainerSvelte", keys: ["tags"] }), t.position && this.setPosition(this.position);
267
268
  }
268
269
  setData(...t) {
269
270
  super.setData(...t), this.plugin.addRenderQueue({ type: "TagContainerSvelte", keys: ["tags"] });
@@ -278,7 +279,7 @@ class di extends w {
278
279
  }
279
280
  }
280
281
  computeNormal() {
281
- return new r.Vector3().fromArray(this.normal);
282
+ return new n.Vector3().fromArray(this.normal);
282
283
  }
283
284
  removeTagNormalLine() {
284
285
  this.tagNormalLine && (this.plugin.group.remove(this.tagNormalLine), this.tagNormalLine = null);
@@ -292,5 +293,5 @@ class di extends w {
292
293
  }
293
294
  }
294
295
  export {
295
- di as PointTag
296
+ gi as PointTag
296
297
  };
@@ -678,7 +678,7 @@ class _s extends R {
678
678
  var e;
679
679
  this.tags.length && (this.tags.forEach((t) => {
680
680
  var i, o, n, s, r, a;
681
- (i = t.tag3DContentSvelte) == null || i.dispose(), (n = (o = t.mediaPlane) == null ? void 0 : o.parent) == null || n.remove(t.mediaPlane), (a = (r = (s = t.model) == null ? void 0 : s.object) == null ? void 0 : r.parent) == null || a.remove(t.model.object);
681
+ (i = t.tag3DContentSvelte) == null || i.dispose(), (n = (o = t.mediaPlane) == null ? void 0 : o.parent) == null || n.remove(t.mediaPlane), (a = (r = (s = t.model) == null ? void 0 : s.object) == null ? void 0 : r.parent) == null || a.remove(t.model.object), this.group.remove(t.tagNormalLine);
682
682
  }), this.tags = [], this.tagsLengthWillUpdate = !0, this.hooks.emit("tagsLengthChange"), (e = this.TagContainerSvelte) == null || e.$destroy(), this.TagContainerSvelte = void 0, this.disposeAllCSS3DContainer()), this.enabledModelTagSet.clear(), this.cache.clear();
683
683
  }
684
684
  /**
@@ -14,6 +14,11 @@ export type PolygonCreateConfig = Partial<PolygonStyle & CreateLimitConfig & Pol
14
14
  onPointPlaced?: (points: THREE.Vector3[]) => void;
15
15
  onUndo?: () => void;
16
16
  onRedo?: () => void;
17
+ /**
18
+ * @description 检测是否自相交,如果自交,禁止添加下一个点
19
+ * @default false
20
+ */
21
+ experimental_self_intersect_check?: boolean;
17
22
  };
18
23
  export declare class Polygon extends BaseObject<PolygonImportData> {
19
24
  readonly type = "Polygon";
@@ -2,39 +2,39 @@ var pt = Object.defineProperty, Pt = Object.defineProperties;
2
2
  var yt = Object.getOwnPropertyDescriptors;
3
3
  var it = Object.getOwnPropertySymbols;
4
4
  var mt = Object.prototype.hasOwnProperty, ft = Object.prototype.propertyIsEnumerable;
5
- var M = Math.pow, A = (s, e, t) => e in s ? pt(s, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : s[e] = t, w = (s, e) => {
6
- for (var t in e || (e = {}))
7
- mt.call(e, t) && A(s, t, e[t]);
5
+ var M = Math.pow, A = (e, s, t) => s in e ? pt(e, s, { enumerable: !0, configurable: !0, writable: !0, value: t }) : e[s] = t, H = (e, s) => {
6
+ for (var t in s || (s = {}))
7
+ mt.call(s, t) && A(e, t, s[t]);
8
8
  if (it)
9
- for (var t of it(e))
10
- ft.call(e, t) && A(s, t, e[t]);
11
- return s;
12
- }, _ = (s, e) => Pt(s, yt(e));
13
- var C = (s, e, t) => (A(s, typeof e != "symbol" ? e + "" : e, t), t);
14
- var ot = (s, e, t) => new Promise((o, r) => {
9
+ for (var t of it(s))
10
+ ft.call(s, t) && A(e, t, s[t]);
11
+ return e;
12
+ }, I = (e, s) => Pt(e, yt(s));
13
+ var C = (e, s, t) => (A(e, typeof s != "symbol" ? s + "" : s, t), t);
14
+ var ot = (e, s, t) => new Promise((o, r) => {
15
15
  var f = (u) => {
16
16
  try {
17
- D(t.next(u));
17
+ w(t.next(u));
18
18
  } catch (h) {
19
19
  r(h);
20
20
  }
21
21
  }, a = (u) => {
22
22
  try {
23
- D(t.throw(u));
23
+ w(t.throw(u));
24
24
  } catch (h) {
25
25
  r(h);
26
26
  }
27
- }, D = (u) => u.done ? o(u.value) : Promise.resolve(u.value).then(f, a);
28
- D((t = t.apply(s, e)).next());
27
+ }, w = (u) => u.done ? o(u.value) : Promise.resolve(u.value).then(f, a);
28
+ w((t = t.apply(e, s)).next());
29
29
  });
30
30
  import { BaseObject as xt } from "../Base/index.js";
31
- import * as H from "three";
31
+ import * as v from "three";
32
32
  import { PolylineMesh as nt } from "../../Meshes/Polyline.js";
33
33
  import { AreaMesh as rt } from "../../Meshes/Area.js";
34
34
  import { PolygonEditor as bt } from "./Editor.js";
35
35
  import { vector3ToArray as Ct } from "../../../shared-utils/three/vector3ToArray.js";
36
- import { withResolvers as Dt } from "../../../shared-utils/promise/withResolvers.js";
37
- import { anyPositionToVector3 as wt } from "../../../shared-utils/positionToVector3.js";
36
+ import { withResolvers as wt } from "../../../shared-utils/promise/withResolvers.js";
37
+ import { anyPositionToVector3 as Dt } from "../../../shared-utils/positionToVector3.js";
38
38
  import { PointMesh as Ht } from "../../Meshes/Point.js";
39
39
  class Rt extends xt {
40
40
  constructor(t, o) {
@@ -48,7 +48,7 @@ class Rt extends xt {
48
48
  C(this, "maxHistorySize", 50);
49
49
  C(this, "_editor");
50
50
  C(this, "creatingObject");
51
- t && (this.areaMesh = new rt(w(w({}, t.style), t)), this.areaMesh.userData = (r = this.areaMesh.userData) != null ? r : {}, typeof this.areaMesh.userData.dragSelectPixelDistance != "number" && (this.areaMesh.userData.dragSelectPixelDistance = 10), this.add(this.areaMesh));
51
+ t && (this.areaMesh = new rt(H(H({}, t.style), t)), this.areaMesh.userData = (r = this.areaMesh.userData) != null ? r : {}, typeof this.areaMesh.userData.dragSelectPixelDistance != "number" && (this.areaMesh.userData.dragSelectPixelDistance = 10), this.add(this.areaMesh));
52
52
  }
53
53
  get editor() {
54
54
  return this._editor || (this._editor = new bt(this)), this._editor;
@@ -59,7 +59,7 @@ class Rt extends xt {
59
59
  typeof t == "function" && t(), this._editor && this._editor.updatePointMeshes();
60
60
  }
61
61
  get data() {
62
- return this.updateMatrixWorld(), _(w({}, this.baseData), {
62
+ return this.updateMatrixWorld(), I(H({}, this.baseData), {
63
63
  points: Ct(this.applyObjectMatrixWorld(this.areaMesh.points)),
64
64
  style: {
65
65
  color: this.areaMesh.color.getHex(),
@@ -69,7 +69,7 @@ class Rt extends xt {
69
69
  });
70
70
  }
71
71
  setData(t) {
72
- t.points && this.areaMesh.setPoints(this.applyObjectReversalMatrixWorld(t.points.map(wt))), this.areaMesh.setStyle(t.style), this.updateCreationPointMeshes();
72
+ t.points && this.areaMesh.setPoints(this.applyObjectReversalMatrixWorld(t.points.map(Dt))), this.areaMesh.setStyle(t.style), this.updateCreationPointMeshes();
73
73
  }
74
74
  highlight() {
75
75
  var t;
@@ -137,38 +137,38 @@ class Rt extends xt {
137
137
  });
138
138
  }
139
139
  }
140
- function vt(s, e, t) {
140
+ function vt(e, s, t) {
141
141
  var L, N, $, G, J, K, Q, X, Z;
142
- const { promise: o, resolve: r, reject: f } = Dt(), a = s.parent;
142
+ const { promise: o, resolve: r, reject: f } = wt(), a = e.parent;
143
143
  if (!a) {
144
144
  f(new Error("No container"));
145
145
  return;
146
146
  }
147
- const D = (L = t == null ? void 0 : t.limit) != null ? L : "none", u = t == null ? void 0 : t.simpleMode, h = (K = (J = ($ = s.five) != null ? $ : (N = s.get) == null ? void 0 : N.call(s, "five")) != null ? J : (G = window.globalModules) == null ? void 0 : G.five) != null ? K : window.$five, T = (Q = t == null ? void 0 : t.autoClosePixelDistance) != null ? Q : 10;
148
- s.userData = (X = s.userData) != null ? X : {}, s.userData.dragSelectPixelDistance = T;
149
- let g = 0;
150
- u && h && h.model && h.model.bounding && typeof ((Z = h.model.bounding.max) == null ? void 0 : Z.y) == "number" && (g = h.model.bounding.max.y + 1);
151
- const P = new nt(s.style);
147
+ const w = (L = t == null ? void 0 : t.limit) != null ? L : "none", u = t == null ? void 0 : t.simpleMode, h = (K = (J = ($ = e.five) != null ? $ : (N = e.get) == null ? void 0 : N.call(e, "five")) != null ? J : (G = window.globalModules) == null ? void 0 : G.five) != null ? K : window.$five, T = (Q = t == null ? void 0 : t.autoClosePixelDistance) != null ? Q : 10;
148
+ e.userData = (X = e.userData) != null ? X : {}, e.userData.dragSelectPixelDistance = T;
149
+ let E = 0;
150
+ u && h && h.model && h.model.bounding && typeof ((Z = h.model.bounding.max) == null ? void 0 : Z.y) == "number" && (E = h.model.bounding.max.y + 1);
151
+ const P = new nt(e.style);
152
152
  a == null || a.add(P);
153
- const y = new nt(_(w({}, s.style), { dashed: !0, lengthEnable: !1 }));
153
+ const y = new nt(I(H({}, e.style), { dashed: !0, lengthEnable: !1 }));
154
154
  a == null || a.add(y);
155
- let v = [];
155
+ let j = [];
156
156
  const lt = (i = n) => {
157
- v.forEach((d, c) => {
157
+ j.forEach((d, c) => {
158
158
  const p = i[c];
159
159
  p && d.position.copy(p);
160
160
  });
161
161
  };
162
- function j() {
162
+ function D() {
163
163
  var d, c;
164
- v.forEach((p) => {
164
+ j.forEach((p) => {
165
165
  var b;
166
166
  return (b = p.parent) == null ? void 0 : b.remove(p);
167
167
  });
168
- const i = (c = (d = s.line) == null ? void 0 : d.style) != null ? c : s.style;
169
- v = n.map((p, b) => {
168
+ const i = (c = (d = e.line) == null ? void 0 : d.style) != null ? c : e.style;
169
+ j = n.map((p, b) => {
170
170
  var S, k;
171
- const x = new Ht(_(w({}, i), {
171
+ const x = new Ht(I(H({}, i), {
172
172
  color: (S = i.pointColor) != null ? S : i.lineColor,
173
173
  tip: void 0,
174
174
  point: p
@@ -177,38 +177,42 @@ function vt(s, e, t) {
177
177
  }), lt();
178
178
  }
179
179
  function V() {
180
- v.forEach((i) => {
180
+ j.forEach((i) => {
181
181
  var d;
182
182
  return (d = i.parent) == null ? void 0 : d.remove(i);
183
- }), v = [], s.userData && (delete s.userData.creationPointMeshes, delete s.userData.syncCreationPointMeshes, delete s.userData.disposeCreationPointMeshes);
183
+ }), j = [], e.userData && (delete e.userData.creationPointMeshes, delete e.userData.syncCreationPointMeshes, delete e.userData.disposeCreationPointMeshes);
184
184
  }
185
- e.enable(), u && e.setAdherePoints([]);
185
+ s.enable(), u && s.setAdherePoints([]);
186
186
  const n = [];
187
187
  let l, m, R = !1, U;
188
- const E = [], Y = () => n.length > 0, z = () => E.length > 0, at = () => {
188
+ const O = [], Y = () => n.length > 0, z = () => O.length > 0, at = () => {
189
189
  var i;
190
- Y() && (E.push(n.pop()), O(U), j(), (i = t == null ? void 0 : t.onUndo) == null || i.call(t), e.pointSelectorHelper && e.pointSelectorHelper.magnifier && e.pointSelectorHelper.magnifier.render());
190
+ Y() && (O.push(n.pop()), g(U), D(), (i = t == null ? void 0 : t.onUndo) == null || i.call(t), s.pointSelectorHelper && s.pointSelectorHelper.magnifier && s.pointSelectorHelper.magnifier.render());
191
191
  }, ht = () => {
192
192
  var i;
193
- z() && (n.push(E.pop()), O(U), j(), (i = t == null ? void 0 : t.onRedo) == null || i.call(t), e.pointSelectorHelper && e.pointSelectorHelper.magnifier && e.pointSelectorHelper.magnifier.render());
194
- }, q = (i) => {
193
+ z() && (n.push(O.pop()), g(U), D(), (i = t == null ? void 0 : t.onRedo) == null || i.call(t), s.pointSelectorHelper && s.pointSelectorHelper.magnifier && s.pointSelectorHelper.magnifier.render());
194
+ }, B = (i) => {
195
195
  var c;
196
- E.length = 0;
196
+ O.length = 0;
197
197
  let d = n.length === 0 ? i.point : l.clone();
198
- u && (d = d.clone().setY(g)), n.push(d), s.setPoints(n, { closed: !1 }), j(), (c = t == null ? void 0 : t.onPointPlaced) == null || c.call(t, n), R && (B(), r());
199
- }, O = (i) => {
198
+ if (u && (d = d.clone().setY(E)), n.push(d), e.setPoints(n, { closed: !1 }), t != null && t.experimental_self_intersect_check && n.length > 2 && e.isBlank) {
199
+ n.pop(), e.setPoints(n, { closed: !1 }), D(), console.warn("[Polygon] 检测到自相交,无法添加该点");
200
+ return;
201
+ }
202
+ D(), (c = t == null ? void 0 : t.onPointPlaced) == null || c.call(t, n), R && (q(), r());
203
+ }, g = (i) => {
200
204
  const d = () => {
201
- P.setPoints([]), y.setPoints([]), s.setPoints(n), e.pointSelectorHelper && e.pointSelectorHelper.magnifier && e.pointSelectorHelper.magnifier.render();
205
+ P.setPoints([]), y.setPoints([]), e.setPoints(n), s.pointSelectorHelper && s.pointSelectorHelper.magnifier && s.pointSelectorHelper.magnifier.render();
202
206
  };
203
207
  if (!i) {
204
- d(), j();
208
+ d(), D();
205
209
  return;
206
210
  }
207
211
  if (U = i, !(n != null && n.length))
208
212
  return d();
209
213
  const c = n.at(-1).clone();
210
- if (n.length < 3 && (u ? (l = i.point.clone().setY(g), P.setPoints([c, l]), y.setPoints([])) : D === "none" ? (l = i.point, P.setPoints([c, l]), y.setPoints([])) : D === "xoz" ? (m = m != null ? m : new H.Plane().setFromNormalAndCoplanarPoint(new H.Vector3(0, 1, 0), n[0]), e.plane = m, l = m.projectPoint(i.point, new H.Vector3()), P.setPoints([c, l]), y.setPoints([l, i.point])) : D === "y" && (n.length === 1 ? (l = i.point, P.setPoints([c, l]), y.setPoints([])) : (m = m != null ? m : new H.Plane().setFromCoplanarPoints(n[0], n[1], new H.Vector3(0, 1, 0).add(n[0])), e.plane = m, l = m.projectPoint(i.point, new H.Vector3()), P.setPoints([c, l]), y.setPoints([l, i.point])))), n.length >= 3) {
211
- u ? l = i.point.clone().setY(g) : l = s.projectPoint(i.point);
214
+ if (n.length < 3 && (u ? (l = i.point.clone().setY(E), P.setPoints([c, l]), y.setPoints([])) : w === "none" ? (l = i.point, P.setPoints([c, l]), y.setPoints([])) : w === "xoz" ? (m = m != null ? m : new v.Plane().setFromNormalAndCoplanarPoint(new v.Vector3(0, 1, 0), n[0]), s.plane = m, l = m.projectPoint(i.point, new v.Vector3()), P.setPoints([c, l]), y.setPoints([l, i.point])) : w === "y" && (n.length === 1 ? (l = i.point, P.setPoints([c, l]), y.setPoints([])) : (m = m != null ? m : new v.Plane().setFromCoplanarPoints(n[0], n[1], new v.Vector3(0, 1, 0).add(n[0])), s.plane = m, l = m.projectPoint(i.point, new v.Vector3()), P.setPoints([c, l]), y.setPoints([l, i.point])))), n.length >= 3) {
215
+ u ? l = i.point.clone().setY(E) : l = e.projectPoint(i.point);
212
216
  const p = n[0];
213
217
  let b = !1;
214
218
  if (typeof (t == null ? void 0 : t.autoClosePixelDistance) == "number") {
@@ -219,20 +223,20 @@ function vt(s, e, t) {
219
223
  x: (st.x * 0.5 + 0.5) * S,
220
224
  y: (1 - (st.y * 0.5 + 0.5)) * k
221
225
  };
222
- }, I = W(p), tt = W(l), et = W(i.point), dt = Math.sqrt(M(I.x - tt.x, 2) + M(I.y - tt.y, 2)), ct = Math.sqrt(M(I.x - et.x, 2) + M(I.y - et.y, 2));
226
+ }, _ = W(p), tt = W(l), et = W(i.point), dt = Math.sqrt(M(_.x - tt.x, 2) + M(_.y - tt.y, 2)), ct = Math.sqrt(M(_.x - et.x, 2) + M(_.y - et.y, 2));
223
227
  (dt < t.autoClosePixelDistance || ct < t.autoClosePixelDistance) && (b = !0);
224
228
  }
225
229
  } else
226
230
  (p.distanceTo(l) < 0.2 || p.distanceTo(i.point) < 0.2) && (b = !0);
227
- b ? (l = p, i.point.copy(p), e.pointSelectorHelper.updateWithIntersect(i, { emitEvent: !1 }), R = !0) : R = !1, P.setPoints([c, l]), y.setPoints([l, i.point]);
231
+ b ? (l = p, i.point.copy(p), s.pointSelectorHelper.updateWithIntersect(i, { emitEvent: !1 }), R = !0) : R = !1, P.setPoints([c, l]), y.setPoints([l, i.point]);
228
232
  }
229
- n.length >= 2 ? (s.setPoints([...n, l], { closed: !1 }), s.line.setPoints(s.points.slice(0, -1)), s.isBlank ? (e.cursorError = !0, P.setStyle({ lineColor: 16734553 }), y.setStyle({ lineColor: 16734553 })) : (e.cursorError = !1, P.setStyle({ lineColor: s.lineColor }), y.setStyle({ lineColor: s.lineColor }))) : s.setPoints([]), j();
230
- }, B = () => {
231
- e.off("select", q), e.off("intersectionUpdate", O), e.off("disable", F), e.plane = null, e.disable(), a == null || a.remove(P, y), V();
233
+ n.length >= 2 ? (e.setPoints([...n, l], { closed: !1 }), e.line.setPoints(e.points.slice(0, -1)), e.isBlank ? (s.cursorError = !0, P.setStyle({ lineColor: 16734553 }), y.setStyle({ lineColor: 16734553 })) : (s.cursorError = !1, P.setStyle({ lineColor: e.lineColor }), y.setStyle({ lineColor: e.lineColor }))) : e.setPoints([]), D();
234
+ }, q = () => {
235
+ s.off("select", B), s.off("intersectionUpdate", g), s.off("disable", F), s.plane = null, s.disable(), a == null || a.remove(P, y), V();
232
236
  }, F = () => {
233
- B(), a == null || a.remove(s, y, P), V(), f(new Error("Cancelled"));
237
+ q(), a == null || a.remove(e, y, P), V(), f(new Error("Cancelled"));
234
238
  };
235
- return e.on("select", q), e.on("intersectionUpdate", O), e.on("disable", F), {
239
+ return s.on("select", B), s.on("intersectionUpdate", g), s.on("disable", F), {
236
240
  finished: o,
237
241
  canUndo: Y,
238
242
  canRedo: z,
@@ -22,7 +22,7 @@ let A = class {
22
22
  /**
23
23
  * @realsee/dnalogel 版本号
24
24
  */
25
- r(this, "VERSION", "3.72.5-alpha.3");
25
+ r(this, "VERSION", "3.72.5-alpha.4");
26
26
  r(this, "NAME");
27
27
  r(this, "five");
28
28
  r(this, "workUtil");
@@ -1,6 +1,6 @@
1
1
  function A() {
2
2
  console.debug(
3
- "%c %c@realsee/dnalogel %cv3.72.5-alpha.3",
3
+ "%c %c@realsee/dnalogel %cv3.72.5-alpha.4",
4
4
  [
5
5
  "background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAMCAMAAACHgmeRAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAABLFBMVEUAAAAapPoap/oaqvkbrfkbr/gZnfwZoPsaqfnD4v/E4/8Ylv0clPm93/+/4P/B4f8Yj/683/8Wif+33P8Uhv+x2f8ShP+s1v8Pgf+n0/8Nf/+h0f8Lff8Lff8Nf/9dl/+czv8KfP8KfP+Lxf+Uyv+Xy/+Hwv+Jw/+Mxf+Oxv+RyP8aovsapfoap/oZmfwZm/wZnvsYnPsYkf4YlP0NePsDYfgYcfi43f+63v8Xiv8Xjf4EWfwCV/sWZ/qz2v+02/8Vh/8WiP8EUf8CTf4WXv2u1/+v2P8Thf8Thv8ETf8CR/8VV/+o1f+q1f8Qgv8Rg/8DSv8BRf8UVP+j0v+k0v8OgP8Pgf8DR/8DQv9Nhf+dzv+fz/+Kv/+Vyv+Xy/+azf+Oxv+Qx/+SyP////8MUhLdAAAAK3RSTlMACEWQ2bd98uQECPXxqO7c+Pb49vj2+Pb49vj23Oul8fMHA+TwerXXjEIG2P+bHgAAAAFiS0dEY1y+LaoAAAB+SURBVAjXY2BgZGJmYWVgYGBgY9fW0eVg4ORi4NbTNzDk4eXjZxAwMjYxNTO3EGQQsrSytrG1sxdmEHFwdHJ2cXUTZRBz9/D08vbxFWeQ8PMPCAwKDpFkkAoNC4+IjIqWZpCRlZOPiY2LV2BQVGJQTkhMUlEFWaOmrqGpxQAAyg0S9Dq+VPYAAAAASUVORK5CYII=')",
6
6
  "background-repeat: no-repeat",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@realsee/dnalogel",
3
- "version": "3.72.5-alpha.3",
3
+ "version": "3.72.5-alpha.4",
4
4
  "main": "./dist/index.js",
5
5
  "module": "./libs/index.js",
6
6
  "types": "./libs/index.d.ts",