build-dxf 0.0.20-1 → 0.0.20-11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (26) hide show
  1. package/package.json +1 -1
  2. package/src/build.js +1194 -1915
  3. package/src/index.css +1 -625
  4. package/src/index.js +7 -7
  5. package/src/index2.js +327 -528
  6. package/src/index3.js +1627 -1715
  7. package/src/selectLocalFile.js +1955 -3145
  8. package/src/utils/CommandManager/CommandFlow.d.ts +16 -0
  9. package/src/utils/CommandManager/CommandManager.d.ts +23 -0
  10. package/src/utils/DxfSystem/components/Dxf.d.ts +1 -0
  11. package/src/utils/DxfSystem/plugin/Editor/components/CommandFlow/CommandFlowComponent.d.ts +4 -1
  12. package/src/utils/DxfSystem/plugin/Editor/components/CommandFlow/ConnectionLine.d.ts +33 -0
  13. package/src/utils/DxfSystem/plugin/Editor/components/CommandFlow/Default.d.ts +0 -20
  14. package/src/utils/DxfSystem/plugin/Editor/components/CommandFlow/DeleteSelectLine.d.ts +28 -0
  15. package/src/utils/DxfSystem/plugin/Editor/components/CommandFlow/DeleteSelectWindow.d.ts +33 -0
  16. package/src/utils/DxfSystem/plugin/Editor/components/CommandFlow/DrawDoorLine.d.ts +19 -3
  17. package/src/utils/DxfSystem/plugin/Editor/components/CommandFlow/DrawLine.d.ts +20 -4
  18. package/src/utils/DxfSystem/plugin/Editor/components/CommandFlow/DrawWindow.d.ts +20 -1
  19. package/src/utils/DxfSystem/plugin/Editor/components/CommandFlow/IntersectionConnectionLine.d.ts +33 -0
  20. package/src/utils/DxfSystem/plugin/Editor/components/CommandFlow/MergeLine.d.ts +33 -0
  21. package/src/utils/DxfSystem/plugin/Editor/components/CommandFlow/PointDrag.d.ts +14 -1
  22. package/src/utils/DxfSystem/plugin/Editor/components/CommandFlow/SelectAll.d.ts +30 -0
  23. package/src/utils/DxfSystem/plugin/Editor/components/CommandFlow/VerticalCorrection.d.ts +65 -0
  24. package/src/utils/DxfSystem/plugin/Editor/components/index.d.ts +1 -0
  25. package/src/utils/Quadtree/LineSegment.d.ts +1 -0
  26. package/src/utils/Quadtree/Point.d.ts +2 -1
package/src/index3.js CHANGED
@@ -1,134 +1,73 @@
1
- import * as THREE from "three";
2
- import { i as isString, n as noop, r as resolveUnref, t as tryOnScopeDispose, c as isClient, d as tryOnMounted, e as identity, f as buildProps, g as definePropType, _ as _export_sfc$1, u as useNamespace, h as isNumber, j as addUnit, w as withInstall, k as useEmptyValuesProps, l as useSizeProp, p as provideGlobalConfig, m as iconPropType, o as useGlobalComponentSettings, T as TypeComponentsMap, q as ElIcon, s as TypeComponents, v as useTimeoutFn, x as isString$1, y as isFunction, z as isBoolean, A as isElement, B as withInstallFunction, L as Lines, D as DomEventRegister, b as ElCheckbox, E as ElButton, S as SelectLocalFile } from "./selectLocalFile.js";
3
- import { C as Component, L as LineSegment, P as Point, B as Box2, E as EventDispatcher, b as PointVirtualGrid, Q as Quadtree, W as WhiteModel } from "./build.js";
4
- import { watch, ref, defineComponent, computed, createElementBlock, openBlock, normalizeClass, unref, renderSlot, createVNode, Transition, withCtx, withDirectives, createElementVNode, normalizeStyle, createTextVNode, toDisplayString, vShow, shallowReactive, onMounted, createBlock, createCommentVNode, resolveDynamicComponent, Fragment, withModifiers, nextTick, isVNode, render, toRaw, onUnmounted, renderList, createStaticVNode, createApp } from "vue";
1
+ import * as m from "three";
2
+ import { i as dt, n as lt, r as $e, t as He, c as Le, d as ct, e as mt, f as _e, g as B, _ as qe, u as ht, h as me, j as Pe, w as ut, k as pt, l as vt, p as gt, m as ft, o as yt, T as Ie, q as Se, s as wt, v as bt, x as Ne, y as Ee, z as Ce, A as xt, B as Ct, L as he, D as Mt, b as Re, E as pe, S as Et } from "./selectLocalFile.js";
3
+ import { C as ye, L as ne, P as A, B as We, E as Ue, b as Oe, Q as ze, W as Lt } from "./build.js";
5
4
  import "clipper-lib";
6
5
  import "dxf-writer";
7
6
  import "three/addons/controls/OrbitControls.js";
8
- function unrefElement(elRef) {
9
- var _a;
10
- const plain = resolveUnref(elRef);
11
- return (_a = plain == null ? void 0 : plain.$el) != null ? _a : plain;
7
+ import { watch as V, ref as M, defineComponent as oe, computed as L, createElementBlock as S, openBlock as C, normalizeClass as R, unref as p, renderSlot as ge, createVNode as z, Transition as fe, withCtx as F, withDirectives as Qe, createElementVNode as x, normalizeStyle as De, createTextVNode as le, toDisplayString as J, vShow as Ye, shallowReactive as _t, onMounted as Ze, createBlock as de, createCommentVNode as $, resolveDynamicComponent as Dt, Fragment as ce, withModifiers as kt, nextTick as ve, isVNode as Xe, render as Be, toRaw as Pt, onUnmounted as It, renderList as Me, createStaticVNode as St, TransitionGroup as Nt, createApp as Rt } from "vue";
8
+ function Je(r) {
9
+ var e;
10
+ const t = $e(r);
11
+ return (e = t?.$el) != null ? e : t;
12
12
  }
13
- const defaultWindow = isClient ? window : void 0;
14
- function useEventListener(...args) {
15
- let target;
16
- let events;
17
- let listeners;
18
- let options;
19
- if (isString(args[0]) || Array.isArray(args[0])) {
20
- [events, listeners, options] = args;
21
- target = defaultWindow;
22
- } else {
23
- [target, events, listeners, options] = args;
24
- }
25
- if (!target)
26
- return noop;
27
- if (!Array.isArray(events))
28
- events = [events];
29
- if (!Array.isArray(listeners))
30
- listeners = [listeners];
31
- const cleanups = [];
32
- const cleanup = () => {
33
- cleanups.forEach((fn) => fn());
34
- cleanups.length = 0;
13
+ const et = Le ? window : void 0;
14
+ function Ot(...r) {
15
+ let e, t, n, o;
16
+ if (dt(r[0]) || Array.isArray(r[0]) ? ([t, n, o] = r, e = et) : [e, t, n, o] = r, !e)
17
+ return lt;
18
+ Array.isArray(t) || (t = [t]), Array.isArray(n) || (n = [n]);
19
+ const s = [], a = () => {
20
+ s.forEach((c) => c()), s.length = 0;
21
+ }, i = (c, h, w, g) => (c.addEventListener(h, w, g), () => c.removeEventListener(h, w, g)), d = V(() => [Je(e), $e(o)], ([c, h]) => {
22
+ a(), c && s.push(...t.flatMap((w) => n.map((g) => i(c, w, g, h))));
23
+ }, { immediate: !0, flush: "post" }), l = () => {
24
+ d(), a();
35
25
  };
36
- const register = (el, event, listener, options2) => {
37
- el.addEventListener(event, listener, options2);
38
- return () => el.removeEventListener(event, listener, options2);
39
- };
40
- const stopWatch = watch(() => [unrefElement(target), resolveUnref(options)], ([el, options2]) => {
41
- cleanup();
42
- if (!el)
43
- return;
44
- cleanups.push(...events.flatMap((event) => {
45
- return listeners.map((listener) => register(el, event, listener, options2));
46
- }));
47
- }, { immediate: true, flush: "post" });
48
- const stop = () => {
49
- stopWatch();
50
- cleanup();
51
- };
52
- tryOnScopeDispose(stop);
53
- return stop;
26
+ return He(l), l;
54
27
  }
55
- function useSupported(callback, sync = false) {
56
- const isSupported = ref();
57
- const update = () => isSupported.value = Boolean(callback());
58
- update();
59
- tryOnMounted(update, sync);
60
- return isSupported;
28
+ function zt(r, e = !1) {
29
+ const t = M(), n = () => t.value = !!r();
30
+ return n(), ct(n, e), t;
61
31
  }
62
- const _global = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {};
63
- const globalKey = "__vueuse_ssr_handlers__";
64
- _global[globalKey] = _global[globalKey] || {};
65
- var __getOwnPropSymbols$g = Object.getOwnPropertySymbols;
66
- var __hasOwnProp$g = Object.prototype.hasOwnProperty;
67
- var __propIsEnum$g = Object.prototype.propertyIsEnumerable;
68
- var __objRest$2 = (source, exclude) => {
69
- var target = {};
70
- for (var prop in source)
71
- if (__hasOwnProp$g.call(source, prop) && exclude.indexOf(prop) < 0)
72
- target[prop] = source[prop];
73
- if (source != null && __getOwnPropSymbols$g)
74
- for (var prop of __getOwnPropSymbols$g(source)) {
75
- if (exclude.indexOf(prop) < 0 && __propIsEnum$g.call(source, prop))
76
- target[prop] = source[prop];
77
- }
78
- return target;
32
+ const Fe = typeof globalThis < "u" ? globalThis : typeof window < "u" ? window : typeof global < "u" ? global : typeof self < "u" ? self : {}, Ke = "__vueuse_ssr_handlers__";
33
+ Fe[Ke] = Fe[Ke] || {};
34
+ var Te = Object.getOwnPropertySymbols, Bt = Object.prototype.hasOwnProperty, Ft = Object.prototype.propertyIsEnumerable, Kt = (r, e) => {
35
+ var t = {};
36
+ for (var n in r)
37
+ Bt.call(r, n) && e.indexOf(n) < 0 && (t[n] = r[n]);
38
+ if (r != null && Te)
39
+ for (var n of Te(r))
40
+ e.indexOf(n) < 0 && Ft.call(r, n) && (t[n] = r[n]);
41
+ return t;
79
42
  };
80
- function useResizeObserver(target, callback, options = {}) {
81
- const _a = options, { window: window2 = defaultWindow } = _a, observerOptions = __objRest$2(_a, ["window"]);
82
- let observer;
83
- const isSupported = useSupported(() => window2 && "ResizeObserver" in window2);
84
- const cleanup = () => {
85
- if (observer) {
86
- observer.disconnect();
87
- observer = void 0;
88
- }
89
- };
90
- const stopWatch = watch(() => unrefElement(target), (el) => {
91
- cleanup();
92
- if (isSupported.value && window2 && el) {
93
- observer = new ResizeObserver(callback);
94
- observer.observe(el, observerOptions);
95
- }
96
- }, { immediate: true, flush: "post" });
97
- const stop = () => {
98
- cleanup();
99
- stopWatch();
43
+ function Tt(r, e, t = {}) {
44
+ const n = t, { window: o = et } = n, s = Kt(n, ["window"]);
45
+ let a;
46
+ const i = zt(() => o && "ResizeObserver" in o), d = () => {
47
+ a && (a.disconnect(), a = void 0);
48
+ }, l = V(() => Je(r), (h) => {
49
+ d(), i.value && o && h && (a = new ResizeObserver(e), a.observe(h, s));
50
+ }, { immediate: !0, flush: "post" }), c = () => {
51
+ d(), l();
100
52
  };
101
- tryOnScopeDispose(stop);
102
- return {
103
- isSupported,
104
- stop
53
+ return He(c), {
54
+ isSupported: i,
55
+ stop: c
105
56
  };
106
57
  }
107
- var SwipeDirection;
108
- (function(SwipeDirection2) {
109
- SwipeDirection2["UP"] = "UP";
110
- SwipeDirection2["RIGHT"] = "RIGHT";
111
- SwipeDirection2["DOWN"] = "DOWN";
112
- SwipeDirection2["LEFT"] = "LEFT";
113
- SwipeDirection2["NONE"] = "NONE";
114
- })(SwipeDirection || (SwipeDirection = {}));
115
- var __defProp = Object.defineProperty;
116
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
117
- var __hasOwnProp = Object.prototype.hasOwnProperty;
118
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
119
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
120
- var __spreadValues = (a, b) => {
121
- for (var prop in b || (b = {}))
122
- if (__hasOwnProp.call(b, prop))
123
- __defNormalProp(a, prop, b[prop]);
124
- if (__getOwnPropSymbols)
125
- for (var prop of __getOwnPropSymbols(b)) {
126
- if (__propIsEnum.call(b, prop))
127
- __defNormalProp(a, prop, b[prop]);
128
- }
129
- return a;
58
+ var Ve;
59
+ (function(r) {
60
+ r.UP = "UP", r.RIGHT = "RIGHT", r.DOWN = "DOWN", r.LEFT = "LEFT", r.NONE = "NONE";
61
+ })(Ve || (Ve = {}));
62
+ var Vt = Object.defineProperty, Ae = Object.getOwnPropertySymbols, At = Object.prototype.hasOwnProperty, jt = Object.prototype.propertyIsEnumerable, je = (r, e, t) => e in r ? Vt(r, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : r[e] = t, Gt = (r, e) => {
63
+ for (var t in e || (e = {}))
64
+ At.call(e, t) && je(r, t, e[t]);
65
+ if (Ae)
66
+ for (var t of Ae(e))
67
+ jt.call(e, t) && je(r, t, e[t]);
68
+ return r;
130
69
  };
131
- const _TransitionPresets = {
70
+ const $t = {
132
71
  easeInSine: [0.12, 0, 0.39, 0],
133
72
  easeOutSine: [0.61, 1, 0.88, 1],
134
73
  easeInOutSine: [0.37, 0, 0.63, 1],
@@ -154,14 +93,12 @@ const _TransitionPresets = {
154
93
  easeOutBack: [0.34, 1.56, 0.64, 1],
155
94
  easeInOutBack: [0.68, -0.6, 0.32, 1.6]
156
95
  };
157
- __spreadValues({
158
- linear: identity
159
- }, _TransitionPresets);
160
- const mutable = (val) => val;
161
- const EVENT_CODE = {
96
+ Gt({
97
+ linear: mt
98
+ }, $t);
99
+ const Ht = (r) => r, qt = {
162
100
  esc: "Escape"
163
- };
164
- const badgeProps = buildProps({
101
+ }, Wt = _e({
165
102
  value: {
166
103
  type: [String, Number],
167
104
  default: ""
@@ -179,546 +116,440 @@ const badgeProps = buildProps({
179
116
  },
180
117
  showZero: {
181
118
  type: Boolean,
182
- default: true
119
+ default: !0
183
120
  },
184
121
  color: String,
185
122
  badgeStyle: {
186
- type: definePropType([String, Object, Array])
123
+ type: B([String, Object, Array])
187
124
  },
188
125
  offset: {
189
- type: definePropType(Array),
126
+ type: B(Array),
190
127
  default: [0, 0]
191
128
  },
192
129
  badgeClass: {
193
130
  type: String
194
131
  }
195
- });
196
- const __default__$1 = defineComponent({
132
+ }), Ut = oe({
197
133
  name: "ElBadge"
198
- });
199
- const _sfc_main$2 = /* @__PURE__ */ defineComponent({
200
- ...__default__$1,
201
- props: badgeProps,
202
- setup(__props, { expose }) {
203
- const props = __props;
204
- const ns = useNamespace("badge");
205
- const content = computed(() => {
206
- if (props.isDot)
207
- return "";
208
- if (isNumber(props.value) && isNumber(props.max)) {
209
- return props.max < props.value ? `${props.max}+` : `${props.value}`;
210
- }
211
- return `${props.value}`;
212
- });
213
- const style = computed(() => {
214
- var _a, _b, _c, _d, _e;
134
+ }), Qt = /* @__PURE__ */ oe({
135
+ ...Ut,
136
+ props: Wt,
137
+ setup(r, { expose: e }) {
138
+ const t = r, n = ht("badge"), o = L(() => t.isDot ? "" : me(t.value) && me(t.max) ? t.max < t.value ? `${t.max}+` : `${t.value}` : `${t.value}`), s = L(() => {
139
+ var a, i, d, l, c;
215
140
  return [
216
141
  {
217
- backgroundColor: props.color,
218
- marginRight: addUnit(-((_b = (_a = props.offset) == null ? void 0 : _a[0]) != null ? _b : 0)),
219
- marginTop: addUnit((_d = (_c = props.offset) == null ? void 0 : _c[1]) != null ? _d : 0)
142
+ backgroundColor: t.color,
143
+ marginRight: Pe(-((i = (a = t.offset) == null ? void 0 : a[0]) != null ? i : 0)),
144
+ marginTop: Pe((l = (d = t.offset) == null ? void 0 : d[1]) != null ? l : 0)
220
145
  },
221
- (_e = props.badgeStyle) != null ? _e : {}
146
+ (c = t.badgeStyle) != null ? c : {}
222
147
  ];
223
148
  });
224
- expose({
225
- content
226
- });
227
- return (_ctx, _cache) => {
228
- return openBlock(), createElementBlock("div", {
229
- class: normalizeClass(unref(ns).b())
230
- }, [
231
- renderSlot(_ctx.$slots, "default"),
232
- createVNode(Transition, {
233
- name: `${unref(ns).namespace.value}-zoom-in-center`,
234
- persisted: ""
235
- }, {
236
- default: withCtx(() => [
237
- withDirectives(createElementVNode("sup", {
238
- class: normalizeClass([
239
- unref(ns).e("content"),
240
- unref(ns).em("content", _ctx.type),
241
- unref(ns).is("fixed", !!_ctx.$slots.default),
242
- unref(ns).is("dot", _ctx.isDot),
243
- unref(ns).is("hide-zero", !_ctx.showZero && props.value === 0),
244
- _ctx.badgeClass
245
- ]),
246
- style: normalizeStyle(unref(style))
247
- }, [
248
- renderSlot(_ctx.$slots, "content", { value: unref(content) }, () => [
249
- createTextVNode(toDisplayString(unref(content)), 1)
250
- ])
251
- ], 6), [
252
- [vShow, !_ctx.hidden && (unref(content) || _ctx.isDot || _ctx.$slots.content)]
149
+ return e({
150
+ content: o
151
+ }), (a, i) => (C(), S("div", {
152
+ class: R(p(n).b())
153
+ }, [
154
+ ge(a.$slots, "default"),
155
+ z(fe, {
156
+ name: `${p(n).namespace.value}-zoom-in-center`,
157
+ persisted: ""
158
+ }, {
159
+ default: F(() => [
160
+ Qe(x("sup", {
161
+ class: R([
162
+ p(n).e("content"),
163
+ p(n).em("content", a.type),
164
+ p(n).is("fixed", !!a.$slots.default),
165
+ p(n).is("dot", a.isDot),
166
+ p(n).is("hide-zero", !a.showZero && t.value === 0),
167
+ a.badgeClass
168
+ ]),
169
+ style: De(p(s))
170
+ }, [
171
+ ge(a.$slots, "content", { value: p(o) }, () => [
172
+ le(J(p(o)), 1)
253
173
  ])
254
- ]),
255
- _: 3
256
- }, 8, ["name"])
257
- ], 2);
258
- };
174
+ ], 6), [
175
+ [Ye, !a.hidden && (p(o) || a.isDot || a.$slots.content)]
176
+ ])
177
+ ]),
178
+ _: 3
179
+ }, 8, ["name"])
180
+ ], 2));
259
181
  }
260
182
  });
261
- var Badge = /* @__PURE__ */ _export_sfc$1(_sfc_main$2, [["__file", "badge.vue"]]);
262
- const ElBadge = withInstall(Badge);
263
- const configProviderProps = buildProps({
183
+ var Yt = /* @__PURE__ */ qe(Qt, [["__file", "badge.vue"]]);
184
+ const Zt = ut(Yt), Xt = _e({
264
185
  a11y: {
265
186
  type: Boolean,
266
- default: true
187
+ default: !0
267
188
  },
268
189
  locale: {
269
- type: definePropType(Object)
190
+ type: B(Object)
270
191
  },
271
- size: useSizeProp,
192
+ size: vt,
272
193
  button: {
273
- type: definePropType(Object)
194
+ type: B(Object)
274
195
  },
275
196
  card: {
276
- type: definePropType(Object)
197
+ type: B(Object)
277
198
  },
278
199
  dialog: {
279
- type: definePropType(Object)
200
+ type: B(Object)
280
201
  },
281
202
  link: {
282
- type: definePropType(Object)
203
+ type: B(Object)
283
204
  },
284
205
  experimentalFeatures: {
285
- type: definePropType(Object)
206
+ type: B(Object)
286
207
  },
287
208
  keyboardNavigation: {
288
209
  type: Boolean,
289
- default: true
210
+ default: !0
290
211
  },
291
212
  message: {
292
- type: definePropType(Object)
213
+ type: B(Object)
293
214
  },
294
215
  zIndex: Number,
295
216
  namespace: {
296
217
  type: String,
297
218
  default: "el"
298
219
  },
299
- ...useEmptyValuesProps
300
- });
301
- const messageConfig = {};
302
- defineComponent({
220
+ ...pt
221
+ }), N = {};
222
+ oe({
303
223
  name: "ElConfigProvider",
304
- props: configProviderProps,
305
- setup(props, { slots }) {
306
- const config = provideGlobalConfig(props);
307
- watch(() => props.message, (val) => {
308
- var _a, _b;
309
- Object.assign(messageConfig, (_b = (_a = config == null ? void 0 : config.value) == null ? void 0 : _a.message) != null ? _b : {}, val != null ? val : {});
310
- }, { immediate: true, deep: true });
311
- return () => renderSlot(slots, "default", { config: config == null ? void 0 : config.value });
224
+ props: Xt,
225
+ setup(r, { slots: e }) {
226
+ const t = gt(r);
227
+ return V(() => r.message, (n) => {
228
+ var o, s;
229
+ Object.assign(N, (s = (o = t?.value) == null ? void 0 : o.message) != null ? s : {}, n ?? {});
230
+ }, { immediate: !0, deep: !0 }), () => ge(e, "default", { config: t?.value });
312
231
  }
313
232
  });
314
- const messageTypes = [
233
+ const tt = [
315
234
  "primary",
316
235
  "success",
317
236
  "info",
318
237
  "warning",
319
238
  "error"
320
- ];
321
- const messageDefaults = mutable({
239
+ ], I = Ht({
322
240
  customClass: "",
323
- dangerouslyUseHTMLString: false,
241
+ dangerouslyUseHTMLString: !1,
324
242
  duration: 3e3,
325
243
  icon: void 0,
326
244
  id: "",
327
245
  message: "",
328
246
  onClose: void 0,
329
- showClose: false,
247
+ showClose: !1,
330
248
  type: "info",
331
- plain: false,
249
+ plain: !1,
332
250
  offset: 16,
333
251
  zIndex: 0,
334
- grouping: false,
252
+ grouping: !1,
335
253
  repeatNum: 1,
336
- appendTo: isClient ? document.body : void 0
337
- });
338
- const messageProps = buildProps({
254
+ appendTo: Le ? document.body : void 0
255
+ }), Jt = _e({
339
256
  customClass: {
340
257
  type: String,
341
- default: messageDefaults.customClass
258
+ default: I.customClass
342
259
  },
343
260
  dangerouslyUseHTMLString: {
344
261
  type: Boolean,
345
- default: messageDefaults.dangerouslyUseHTMLString
262
+ default: I.dangerouslyUseHTMLString
346
263
  },
347
264
  duration: {
348
265
  type: Number,
349
- default: messageDefaults.duration
266
+ default: I.duration
350
267
  },
351
268
  icon: {
352
- type: iconPropType,
353
- default: messageDefaults.icon
269
+ type: ft,
270
+ default: I.icon
354
271
  },
355
272
  id: {
356
273
  type: String,
357
- default: messageDefaults.id
274
+ default: I.id
358
275
  },
359
276
  message: {
360
- type: definePropType([
277
+ type: B([
361
278
  String,
362
279
  Object,
363
280
  Function
364
281
  ]),
365
- default: messageDefaults.message
282
+ default: I.message
366
283
  },
367
284
  onClose: {
368
- type: definePropType(Function),
369
- default: messageDefaults.onClose
285
+ type: B(Function),
286
+ default: I.onClose
370
287
  },
371
288
  showClose: {
372
289
  type: Boolean,
373
- default: messageDefaults.showClose
290
+ default: I.showClose
374
291
  },
375
292
  type: {
376
293
  type: String,
377
- values: messageTypes,
378
- default: messageDefaults.type
294
+ values: tt,
295
+ default: I.type
379
296
  },
380
297
  plain: {
381
298
  type: Boolean,
382
- default: messageDefaults.plain
299
+ default: I.plain
383
300
  },
384
301
  offset: {
385
302
  type: Number,
386
- default: messageDefaults.offset
303
+ default: I.offset
387
304
  },
388
305
  zIndex: {
389
306
  type: Number,
390
- default: messageDefaults.zIndex
307
+ default: I.zIndex
391
308
  },
392
309
  grouping: {
393
310
  type: Boolean,
394
- default: messageDefaults.grouping
311
+ default: I.grouping
395
312
  },
396
313
  repeatNum: {
397
314
  type: Number,
398
- default: messageDefaults.repeatNum
399
- }
400
- });
401
- const messageEmits = {
402
- destroy: () => true
403
- };
404
- const instances = shallowReactive([]);
405
- const getInstance = (id) => {
406
- const idx = instances.findIndex((instance) => instance.id === id);
407
- const current = instances[idx];
408
- let prev;
409
- if (idx > 0) {
410
- prev = instances[idx - 1];
411
- }
412
- return { current, prev };
413
- };
414
- const getLastOffset = (id) => {
415
- const { prev } = getInstance(id);
416
- if (!prev)
417
- return 0;
418
- return prev.vm.exposed.bottom.value;
419
- };
420
- const getOffsetOrSpace = (id, offset) => {
421
- const idx = instances.findIndex((instance) => instance.id === id);
422
- return idx > 0 ? 16 : offset;
423
- };
424
- const __default__ = defineComponent({
315
+ default: I.repeatNum
316
+ }
317
+ }), en = {
318
+ destroy: () => !0
319
+ }, K = _t([]), tn = (r) => {
320
+ const e = K.findIndex((o) => o.id === r), t = K[e];
321
+ let n;
322
+ return e > 0 && (n = K[e - 1]), { current: t, prev: n };
323
+ }, nn = (r) => {
324
+ const { prev: e } = tn(r);
325
+ return e ? e.vm.exposed.bottom.value : 0;
326
+ }, on = (r, e) => K.findIndex((n) => n.id === r) > 0 ? 16 : e, sn = oe({
425
327
  name: "ElMessage"
426
- });
427
- const _sfc_main$1 = /* @__PURE__ */ defineComponent({
428
- ...__default__,
429
- props: messageProps,
430
- emits: messageEmits,
431
- setup(__props, { expose, emit }) {
432
- const props = __props;
433
- const { Close } = TypeComponents;
434
- const isStartTransition = ref(false);
435
- const { ns, zIndex } = useGlobalComponentSettings("message");
436
- const { currentZIndex, nextZIndex } = zIndex;
437
- const messageRef = ref();
438
- const visible = ref(false);
439
- const height = ref(0);
440
- let stopTimer = void 0;
441
- const badgeType = computed(() => props.type ? props.type === "error" ? "danger" : props.type : "info");
442
- const typeClass = computed(() => {
443
- const type = props.type;
444
- return { [ns.bm("icon", type)]: type && TypeComponentsMap[type] };
445
- });
446
- const iconComponent = computed(() => props.icon || TypeComponentsMap[props.type] || "");
447
- const lastOffset = computed(() => getLastOffset(props.id));
448
- const offset = computed(() => getOffsetOrSpace(props.id, props.offset) + lastOffset.value);
449
- const bottom = computed(() => height.value + offset.value);
450
- const customStyle = computed(() => ({
451
- top: `${offset.value}px`,
452
- zIndex: currentZIndex.value
328
+ }), an = /* @__PURE__ */ oe({
329
+ ...sn,
330
+ props: Jt,
331
+ emits: en,
332
+ setup(r, { expose: e, emit: t }) {
333
+ const n = r, { Close: o } = wt, s = M(!1), { ns: a, zIndex: i } = yt("message"), { currentZIndex: d, nextZIndex: l } = i, c = M(), h = M(!1), w = M(0);
334
+ let g;
335
+ const k = L(() => n.type ? n.type === "error" ? "danger" : n.type : "info"), b = L(() => {
336
+ const y = n.type;
337
+ return { [a.bm("icon", y)]: y && Ie[y] };
338
+ }), P = L(() => n.icon || Ie[n.type] || ""), _ = L(() => nn(n.id)), j = L(() => on(n.id, n.offset) + _.value), se = L(() => w.value + j.value), ue = L(() => ({
339
+ top: `${j.value}px`,
340
+ zIndex: d.value
453
341
  }));
454
- function startTimer() {
455
- if (props.duration === 0)
456
- return;
457
- ({ stop: stopTimer } = useTimeoutFn(() => {
458
- close();
459
- }, props.duration));
342
+ function X() {
343
+ n.duration !== 0 && ({ stop: g } = bt(() => {
344
+ E();
345
+ }, n.duration));
460
346
  }
461
- function clearTimer() {
462
- stopTimer == null ? void 0 : stopTimer();
347
+ function O() {
348
+ g?.();
463
349
  }
464
- function close() {
465
- visible.value = false;
466
- nextTick(() => {
467
- var _a;
468
- if (!isStartTransition.value) {
469
- (_a = props.onClose) == null ? void 0 : _a.call(props);
470
- emit("destroy");
471
- }
350
+ function E() {
351
+ h.value = !1, ve(() => {
352
+ var y;
353
+ s.value || ((y = n.onClose) == null || y.call(n), t("destroy"));
472
354
  });
473
355
  }
474
- function keydown({ code }) {
475
- if (code === EVENT_CODE.esc) {
476
- close();
477
- }
356
+ function H({ code: y }) {
357
+ y === qt.esc && E();
478
358
  }
479
- onMounted(() => {
480
- startTimer();
481
- nextZIndex();
482
- visible.value = true;
483
- });
484
- watch(() => props.repeatNum, () => {
485
- clearTimer();
486
- startTimer();
487
- });
488
- useEventListener(document, "keydown", keydown);
489
- useResizeObserver(messageRef, () => {
490
- height.value = messageRef.value.getBoundingClientRect().height;
491
- });
492
- expose({
493
- visible,
494
- bottom,
495
- close
496
- });
497
- return (_ctx, _cache) => {
498
- return openBlock(), createBlock(Transition, {
499
- name: unref(ns).b("fade"),
500
- onBeforeEnter: ($event) => isStartTransition.value = true,
501
- onBeforeLeave: _ctx.onClose,
502
- onAfterLeave: ($event) => _ctx.$emit("destroy"),
503
- persisted: ""
504
- }, {
505
- default: withCtx(() => [
506
- withDirectives(createElementVNode("div", {
507
- id: _ctx.id,
508
- ref_key: "messageRef",
509
- ref: messageRef,
510
- class: normalizeClass([
511
- unref(ns).b(),
512
- { [unref(ns).m(_ctx.type)]: _ctx.type },
513
- unref(ns).is("closable", _ctx.showClose),
514
- unref(ns).is("plain", _ctx.plain),
515
- _ctx.customClass
359
+ return Ze(() => {
360
+ X(), l(), h.value = !0;
361
+ }), V(() => n.repeatNum, () => {
362
+ O(), X();
363
+ }), Ot(document, "keydown", H), Tt(c, () => {
364
+ w.value = c.value.getBoundingClientRect().height;
365
+ }), e({
366
+ visible: h,
367
+ bottom: se,
368
+ close: E
369
+ }), (y, we) => (C(), de(fe, {
370
+ name: p(a).b("fade"),
371
+ onBeforeEnter: (ae) => s.value = !0,
372
+ onBeforeLeave: y.onClose,
373
+ onAfterLeave: (ae) => y.$emit("destroy"),
374
+ persisted: ""
375
+ }, {
376
+ default: F(() => [
377
+ Qe(x("div", {
378
+ id: y.id,
379
+ ref_key: "messageRef",
380
+ ref: c,
381
+ class: R([
382
+ p(a).b(),
383
+ { [p(a).m(y.type)]: y.type },
384
+ p(a).is("closable", y.showClose),
385
+ p(a).is("plain", y.plain),
386
+ y.customClass
387
+ ]),
388
+ style: De(p(ue)),
389
+ role: "alert",
390
+ onMouseenter: O,
391
+ onMouseleave: X
392
+ }, [
393
+ y.repeatNum > 1 ? (C(), de(p(Zt), {
394
+ key: 0,
395
+ value: y.repeatNum,
396
+ type: p(k),
397
+ class: R(p(a).e("badge"))
398
+ }, null, 8, ["value", "type", "class"])) : $("v-if", !0),
399
+ p(P) ? (C(), de(p(Se), {
400
+ key: 1,
401
+ class: R([p(a).e("icon"), p(b)])
402
+ }, {
403
+ default: F(() => [
404
+ (C(), de(Dt(p(P))))
516
405
  ]),
517
- style: normalizeStyle(unref(customStyle)),
518
- role: "alert",
519
- onMouseenter: clearTimer,
520
- onMouseleave: startTimer
521
- }, [
522
- _ctx.repeatNum > 1 ? (openBlock(), createBlock(unref(ElBadge), {
406
+ _: 1
407
+ }, 8, ["class"])) : $("v-if", !0),
408
+ ge(y.$slots, "default", {}, () => [
409
+ y.dangerouslyUseHTMLString ? (C(), S(ce, { key: 1 }, [
410
+ $(" Caution here, message could've been compromised, never use user's input as message "),
411
+ x("p", {
412
+ class: R(p(a).e("content")),
413
+ innerHTML: y.message
414
+ }, null, 10, ["innerHTML"])
415
+ ], 2112)) : (C(), S("p", {
523
416
  key: 0,
524
- value: _ctx.repeatNum,
525
- type: unref(badgeType),
526
- class: normalizeClass(unref(ns).e("badge"))
527
- }, null, 8, ["value", "type", "class"])) : createCommentVNode("v-if", true),
528
- unref(iconComponent) ? (openBlock(), createBlock(unref(ElIcon), {
529
- key: 1,
530
- class: normalizeClass([unref(ns).e("icon"), unref(typeClass)])
531
- }, {
532
- default: withCtx(() => [
533
- (openBlock(), createBlock(resolveDynamicComponent(unref(iconComponent))))
534
- ]),
535
- _: 1
536
- }, 8, ["class"])) : createCommentVNode("v-if", true),
537
- renderSlot(_ctx.$slots, "default", {}, () => [
538
- !_ctx.dangerouslyUseHTMLString ? (openBlock(), createElementBlock("p", {
539
- key: 0,
540
- class: normalizeClass(unref(ns).e("content"))
541
- }, toDisplayString(_ctx.message), 3)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
542
- createCommentVNode(" Caution here, message could've been compromised, never use user's input as message "),
543
- createElementVNode("p", {
544
- class: normalizeClass(unref(ns).e("content")),
545
- innerHTML: _ctx.message
546
- }, null, 10, ["innerHTML"])
547
- ], 2112))
417
+ class: R(p(a).e("content"))
418
+ }, J(y.message), 3))
419
+ ]),
420
+ y.showClose ? (C(), de(p(Se), {
421
+ key: 2,
422
+ class: R(p(a).e("closeBtn")),
423
+ onClick: kt(E, ["stop"])
424
+ }, {
425
+ default: F(() => [
426
+ z(p(o))
548
427
  ]),
549
- _ctx.showClose ? (openBlock(), createBlock(unref(ElIcon), {
550
- key: 2,
551
- class: normalizeClass(unref(ns).e("closeBtn")),
552
- onClick: withModifiers(close, ["stop"])
553
- }, {
554
- default: withCtx(() => [
555
- createVNode(unref(Close))
556
- ]),
557
- _: 1
558
- }, 8, ["class", "onClick"])) : createCommentVNode("v-if", true)
559
- ], 46, ["id"]), [
560
- [vShow, visible.value]
561
- ])
562
- ]),
563
- _: 3
564
- }, 8, ["name", "onBeforeEnter", "onBeforeLeave", "onAfterLeave"]);
565
- };
428
+ _: 1
429
+ }, 8, ["class", "onClick"])) : $("v-if", !0)
430
+ ], 46, ["id"]), [
431
+ [Ye, h.value]
432
+ ])
433
+ ]),
434
+ _: 3
435
+ }, 8, ["name", "onBeforeEnter", "onBeforeLeave", "onAfterLeave"]));
566
436
  }
567
437
  });
568
- var MessageConstructor = /* @__PURE__ */ _export_sfc$1(_sfc_main$1, [["__file", "message.vue"]]);
569
- let seed = 1;
570
- const normalizeOptions = (params) => {
571
- const options = !params || isString$1(params) || isVNode(params) || isFunction(params) ? { message: params } : params;
572
- const normalized = {
573
- ...messageDefaults,
574
- ...options
438
+ var rn = /* @__PURE__ */ qe(an, [["__file", "message.vue"]]);
439
+ let dn = 1;
440
+ const nt = (r) => {
441
+ const e = !r || Ne(r) || Xe(r) || Ee(r) ? { message: r } : r, t = {
442
+ ...I,
443
+ ...e
575
444
  };
576
- if (!normalized.appendTo) {
577
- normalized.appendTo = document.body;
578
- } else if (isString$1(normalized.appendTo)) {
579
- let appendTo = document.querySelector(normalized.appendTo);
580
- if (!isElement(appendTo)) {
581
- appendTo = document.body;
582
- }
583
- normalized.appendTo = appendTo;
584
- }
585
- if (isBoolean(messageConfig.grouping) && !normalized.grouping) {
586
- normalized.grouping = messageConfig.grouping;
587
- }
588
- if (isNumber(messageConfig.duration) && normalized.duration === 3e3) {
589
- normalized.duration = messageConfig.duration;
590
- }
591
- if (isNumber(messageConfig.offset) && normalized.offset === 16) {
592
- normalized.offset = messageConfig.offset;
593
- }
594
- if (isBoolean(messageConfig.showClose) && !normalized.showClose) {
595
- normalized.showClose = messageConfig.showClose;
596
- }
597
- if (isBoolean(messageConfig.plain) && !normalized.plain) {
598
- normalized.plain = messageConfig.plain;
599
- }
600
- return normalized;
601
- };
602
- const closeMessage = (instance) => {
603
- const idx = instances.indexOf(instance);
604
- if (idx === -1)
445
+ if (!t.appendTo)
446
+ t.appendTo = document.body;
447
+ else if (Ne(t.appendTo)) {
448
+ let n = document.querySelector(t.appendTo);
449
+ xt(n) || (n = document.body), t.appendTo = n;
450
+ }
451
+ return Ce(N.grouping) && !t.grouping && (t.grouping = N.grouping), me(N.duration) && t.duration === 3e3 && (t.duration = N.duration), me(N.offset) && t.offset === 16 && (t.offset = N.offset), Ce(N.showClose) && !t.showClose && (t.showClose = N.showClose), Ce(N.plain) && !t.plain && (t.plain = N.plain), t;
452
+ }, ln = (r) => {
453
+ const e = K.indexOf(r);
454
+ if (e === -1)
605
455
  return;
606
- instances.splice(idx, 1);
607
- const { handler } = instance;
608
- handler.close();
609
- };
610
- const createMessage = ({ appendTo, ...options }, context) => {
611
- const id = `message_${seed++}`;
612
- const userOnClose = options.onClose;
613
- const container = document.createElement("div");
614
- const props = {
615
- ...options,
616
- id,
456
+ K.splice(e, 1);
457
+ const { handler: t } = r;
458
+ t.close();
459
+ }, cn = ({ appendTo: r, ...e }, t) => {
460
+ const n = `message_${dn++}`, o = e.onClose, s = document.createElement("div"), a = {
461
+ ...e,
462
+ id: n,
617
463
  onClose: () => {
618
- userOnClose == null ? void 0 : userOnClose();
619
- closeMessage(instance);
464
+ o?.(), ln(c);
620
465
  },
621
466
  onDestroy: () => {
622
- render(null, container);
467
+ Be(null, s);
623
468
  }
624
- };
625
- const vnode = createVNode(MessageConstructor, props, isFunction(props.message) || isVNode(props.message) ? {
626
- default: isFunction(props.message) ? props.message : () => props.message
469
+ }, i = z(rn, a, Ee(a.message) || Xe(a.message) ? {
470
+ default: Ee(a.message) ? a.message : () => a.message
627
471
  } : null);
628
- vnode.appContext = context || message._context;
629
- render(vnode, container);
630
- appendTo.appendChild(container.firstElementChild);
631
- const vm = vnode.component;
632
- const handler = {
633
- close: () => {
634
- vm.exposed.close();
635
- }
636
- };
637
- const instance = {
638
- id,
639
- vnode,
640
- vm,
641
- handler,
642
- props: vnode.component.props
472
+ i.appContext = t || te._context, Be(i, s), r.appendChild(s.firstElementChild);
473
+ const d = i.component, c = {
474
+ id: n,
475
+ vnode: i,
476
+ vm: d,
477
+ handler: {
478
+ close: () => {
479
+ d.exposed.close();
480
+ }
481
+ },
482
+ props: i.component.props
643
483
  };
644
- return instance;
645
- };
646
- const message = (options = {}, context) => {
647
- if (!isClient)
648
- return { close: () => void 0 };
649
- const normalized = normalizeOptions(options);
650
- if (normalized.grouping && instances.length) {
651
- const instance2 = instances.find(({ vnode: vm }) => {
652
- var _a;
653
- return ((_a = vm.props) == null ? void 0 : _a.message) === normalized.message;
484
+ return c;
485
+ }, te = (r = {}, e) => {
486
+ if (!Le)
487
+ return { close: () => {
488
+ } };
489
+ const t = nt(r);
490
+ if (t.grouping && K.length) {
491
+ const o = K.find(({ vnode: s }) => {
492
+ var a;
493
+ return ((a = s.props) == null ? void 0 : a.message) === t.message;
654
494
  });
655
- if (instance2) {
656
- instance2.props.repeatNum += 1;
657
- instance2.props.type = normalized.type;
658
- return instance2.handler;
659
- }
660
- }
661
- if (isNumber(messageConfig.max) && instances.length >= messageConfig.max) {
662
- return { close: () => void 0 };
663
- }
664
- const instance = createMessage(normalized, context);
665
- instances.push(instance);
666
- return instance.handler;
495
+ if (o)
496
+ return o.props.repeatNum += 1, o.props.type = t.type, o.handler;
497
+ }
498
+ if (me(N.max) && K.length >= N.max)
499
+ return { close: () => {
500
+ } };
501
+ const n = cn(t, e);
502
+ return K.push(n), n.handler;
667
503
  };
668
- messageTypes.forEach((type) => {
669
- message[type] = (options = {}, appContext) => {
670
- const normalized = normalizeOptions(options);
671
- return message({ ...normalized, type }, appContext);
504
+ tt.forEach((r) => {
505
+ te[r] = (e = {}, t) => {
506
+ const n = nt(e);
507
+ return te({ ...n, type: r }, t);
672
508
  };
673
509
  });
674
- function closeAll(type) {
675
- const instancesToClose = [...instances];
676
- for (const instance of instancesToClose) {
677
- if (!type || type === instance.props.type) {
678
- instance.handler.close();
679
- }
680
- }
510
+ function mn(r) {
511
+ const e = [...K];
512
+ for (const t of e)
513
+ (!r || r === t.props.type) && t.handler.close();
681
514
  }
682
- message.closeAll = closeAll;
683
- message._context = null;
684
- const ElMessage = withInstallFunction(message, "$message");
685
- class CommandFlowComponent extends Component {
515
+ te.closeAll = mn;
516
+ te._context = null;
517
+ const D = Ct(te, "$message");
518
+ class T extends ye {
686
519
  _renderer;
687
520
  get renderer() {
688
- if (!this._renderer) this._renderer = this.parent?.findComponentByName("Renderer");
689
- return this._renderer;
521
+ return this._renderer || (this._renderer = this.parent?.findComponentByName("Renderer")), this._renderer;
690
522
  }
691
523
  _domElement;
692
524
  get domElement() {
693
- if (!this._domElement) this._domElement = this.editor?.domContainer?.domElement;
694
- return this._domElement;
525
+ return this._domElement || (this._domElement = this.editor?.domContainer?.domElement), this._domElement;
695
526
  }
696
527
  _editor;
697
528
  get editor() {
698
- if (!this._editor) this._editor = this.parent?.findComponentByName("Editor");
699
- return this._editor;
529
+ return this._editor || (this._editor = this.parent?.findComponentByName("Editor")), this._editor;
700
530
  }
701
531
  _eventInput;
702
532
  get eventInput() {
703
- if (!this._eventInput) this._eventInput = this.parent?.findComponentByName("EventInput");
704
- return this._eventInput;
533
+ return this._eventInput || (this._eventInput = this.parent?.findComponentByName("EventInput")), this._eventInput;
705
534
  }
706
535
  _renderManager;
707
536
  get renderManager() {
708
- if (!this._renderManager) this._renderManager = this.parent?.findComponentByName("RenderManager");
709
- return this._renderManager;
537
+ return this._renderManager || (this._renderManager = this.parent?.findComponentByName("RenderManager")), this._renderManager;
710
538
  }
711
539
  _commandManager;
712
540
  get commandManager() {
713
- if (!this._commandManager) this._commandManager = this.editor?.commandManager;
714
- return this._commandManager;
541
+ return this._commandManager || (this._commandManager = this.editor?.commandManager), this._commandManager;
542
+ }
543
+ _default;
544
+ get default() {
545
+ return this._default || (this._default = this.parent?.findComponentByName("Default")), this._default;
715
546
  }
716
547
  interruptKeys = ["escape"];
717
548
  commandName = "";
718
549
  constructor() {
719
550
  super();
720
551
  }
721
- onAddFromParent(parent) {
552
+ onAddFromParent(e) {
722
553
  this.editor.addEventListener("cancelCommand", () => {
723
554
  this.cancel();
724
555
  });
@@ -727,22 +558,21 @@ class CommandFlowComponent extends Component {
727
558
  * 取消
728
559
  */
729
560
  cancel() {
730
- if (this.editor.commandManager.currentName !== this.commandName) return;
731
- this.editor.commandManager.cancel();
561
+ const e = this.commandName || this.constructor.commandName;
562
+ this.commandManager.currentName === e && this.commandManager.cancel();
732
563
  }
733
564
  /**
734
- * 创建中断
565
+ * 创建中断处理命令节点
735
566
  * @returns
736
567
  */
737
568
  createInterrupt() {
738
- return (next, data) => {
569
+ return (e, t) => {
739
570
  this.addEventRecord(
740
571
  "clear",
741
- this.editor?.eventInput.addEventListener("codeChange", async () => {
742
- if (this.editor.eventInput.isKeyDowns(this.interruptKeys)) this.cancel();
572
+ this.eventInput.addEventListener("codeChange", async () => {
573
+ this.eventInput.isKeyDowns(this.interruptKeys) && this.cancel();
743
574
  })
744
- );
745
- next(data);
575
+ ), e(t);
746
576
  };
747
577
  }
748
578
  /**
@@ -750,305 +580,166 @@ class CommandFlowComponent extends Component {
750
580
  * @param cursor
751
581
  * @returns
752
582
  */
753
- createCursor(cursor) {
754
- return (next, data) => {
755
- const defaultCursor = this.domElement.style.cursor;
756
- this.domElement.style.cursor = cursor;
757
- this.addEventRecord("clear", () => {
758
- this.domElement.style.cursor = defaultCursor ?? "default";
759
- });
760
- next(data);
583
+ createCursor(e) {
584
+ return (t, n) => {
585
+ const o = this.domElement.style.cursor;
586
+ this.domElement.style.cursor = e, this.addEventRecord("clear", () => {
587
+ this.domElement.style.cursor = o ?? "default";
588
+ }), t(n);
761
589
  };
762
590
  }
763
591
  /**
764
592
  * 创建清理
765
593
  * @returns
766
594
  */
767
- createFinally(keys = []) {
595
+ createFinally(e = []) {
768
596
  return () => {
769
- this.canceEventRecord("clear");
770
- keys.forEach((k) => this.canceEventRecord(k));
597
+ this.canceEventRecord("clear"), e.forEach((t) => this.canceEventRecord(t));
771
598
  };
772
599
  }
773
600
  }
774
- class DrawLine extends CommandFlowComponent {
601
+ class hn extends T {
775
602
  static name = "DrawLine";
776
- container = new THREE.Group();
603
+ container = new m.Group();
777
604
  interruptKeys = ["escape"];
778
605
  withdrawalKeys = ["control", "z"];
779
606
  shortcutKeys = ["control", "l"];
780
607
  confirmKeys = ["enter"];
781
608
  commandName = "draw-line";
782
- onAddFromParent(parent) {
783
- super.onAddFromParent(parent);
784
- this.editor.container.add(this.container);
785
- const commandFlow = this.commandManager.addCommandFlow(this.commandName).add(this.createInterrupt()).add(this.createCursor("crosshair")).add(this.selectPoint.bind(this));
786
- commandFlow.addEventListener("finally", this.createFinally());
787
- commandFlow.addEventListener("completed", (e) => this.completed(e.data));
788
- this.eventInput.addKeyCombination(this.commandName, this.shortcutKeys);
789
- this.eventInput.addEventListener("codeChange", async () => this.eventInput.isKeyCombination(this.commandName) && await this.commandManager.start(this.commandName));
790
- this.eventInput.addCancelDefaultBehavior(() => this.eventInput.isOnlyKeyDowns(this.shortcutKeys));
609
+ onAddFromParent(e) {
610
+ super.onAddFromParent(e), this.editor.container.add(this.container);
611
+ const t = this.commandManager.addCommandFlow(this.commandName).add(this.createInterrupt()).add(this.createCursor("crosshair")).add(this.selectPoint.bind(this)).add(this.end.bind(this)).addRollback(this.rollback.bind(this)).addRevokeRollback(this.revokeRollback.bind(this));
612
+ t.addEventListener("finally", this.createFinally()), t.addEventListener("completed", (n) => this.completed(n.data)), this.eventInput.addKeyCombination(this.commandName, this.shortcutKeys), this.eventInput.addEventListener("codeChange", async () => this.eventInput.isKeyCombination(this.commandName) && await this.commandManager.start(this.commandName)), this.eventInput.addCancelDefaultBehavior(() => this.eventInput.isOnlyKeyDowns(this.shortcutKeys));
791
613
  }
792
614
  /** 选择点
793
615
  * @param next
794
616
  */
795
- selectPoint(next) {
796
- let editor = this.parent?.findComponentByName("Editor"), start = null, end = null, points = [], circle = new THREE.Mesh(new THREE.SphereGeometry(0.05), new THREE.MeshBasicMaterial({ color: 65280 })), dom = editor.domContainer.domElement, line2 = new Lines([], 16711935), auxiliaryLine = new Lines([
797
- new THREE.Vector3(-1e4, 0, 0),
798
- new THREE.Vector3(1e4, 0, 0),
799
- new THREE.Vector3(0, -1e4, 0),
800
- new THREE.Vector3(0, 1e4, 0)
617
+ selectPoint(e) {
618
+ let t = this.parent?.findComponentByName("Editor"), n = null, o = null, s = [], a = new m.Mesh(new m.SphereGeometry(0.05), new m.MeshBasicMaterial({ color: 65280 })), i = t.domContainer.domElement, d = new he([], 16711935), l = new he([
619
+ new m.Vector3(-1e4, 0, 0),
620
+ new m.Vector3(1e4, 0, 0),
621
+ new m.Vector3(0, -1e4, 0),
622
+ new m.Vector3(0, 1e4, 0)
801
623
  ], 16711935);
802
- auxiliaryLine.material = new THREE.LineDashedMaterial({
624
+ l.material = new m.LineDashedMaterial({
803
625
  color: 4235007,
804
626
  dashSize: 0.1,
805
627
  gapSize: 0.1,
806
628
  linewidth: 0.1
807
- });
808
- this.container.add(line2);
809
- const updateLine = () => {
810
- line2.setPoint(...points, start, end);
811
- auxiliaryLine.position.copy(end);
812
- this.container.add(auxiliaryLine);
813
- auxiliaryLine.computeLineDistances();
814
- };
815
- const currentPoint = new THREE.Vector3();
629
+ }), this.container.add(d);
630
+ const c = () => {
631
+ d.setPoint(...s, n, o), l.position.copy(o), this.container.add(l), l.computeLineDistances();
632
+ }, h = new m.Vector3();
816
633
  this.addEventRecord(
817
634
  "clear",
818
- editor.addEventListener("pointerPositionChange", () => {
819
- const { point, find } = editor.renderManager.adsorption();
820
- if (find) {
821
- circle.position.set(point.x, point.y, 0);
822
- this.container.add(circle);
823
- dom.style.cursor = "none";
824
- } else {
825
- circle.removeFromParent();
826
- dom.style.cursor = "crosshair";
827
- }
828
- currentPoint.copy(point);
829
- if (!(start && end)) return;
830
- if (editor.eventInput.isKeyDown("shift")) {
831
- const x = Math.abs(editor.pointerPosition.x - start.x), y = Math.abs(editor.pointerPosition.y - start.y);
832
- if (x > y) end.set(editor.pointerPosition.x, start.y, 0);
833
- else end.set(start.x, editor.pointerPosition.y, 0);
834
- updateLine();
835
- currentPoint.copy(end);
836
- return;
635
+ t.addEventListener("pointerPositionChange", () => {
636
+ const { point: w, find: g } = t.renderManager.adsorption();
637
+ if (this.dispatchEvent({ type: "pointerMove", point: w }), g ? (a.position.set(w.x, w.y, 0), this.container.add(a), i.style.cursor = "none") : (a.removeFromParent(), i.style.cursor = "crosshair"), h.copy(w), !!(n && o)) {
638
+ if (t.eventInput.isKeyDown("shift")) {
639
+ const k = Math.abs(t.pointerPosition.x - n.x), b = Math.abs(t.pointerPosition.y - n.y);
640
+ k > b ? o.set(t.pointerPosition.x, n.y, 0) : o.set(n.x, t.pointerPosition.y, 0), c(), h.copy(o);
641
+ return;
642
+ }
643
+ o.set(t.pointerPosition.x, t.pointerPosition.y, 0), c();
837
644
  }
838
- end.set(editor.pointerPosition.x, editor.pointerPosition.y, 0);
839
- updateLine();
840
645
  }),
841
- editor.eventInput.addEventListener("codeChange", async () => {
842
- if (editor.eventInput.isKeyDown("mouse_0")) {
843
- if (!start) {
844
- start = currentPoint.clone();
845
- end = currentPoint.clone();
846
- updateLine();
646
+ t.eventInput.addEventListener("codeChange", async () => {
647
+ if (t.eventInput.isKeyDown("mouse_0")) {
648
+ if (!n) {
649
+ n = h.clone(), o = h.clone(), c();
847
650
  return;
848
651
  }
849
- end = currentPoint.clone();
850
- points.push(start.clone(), end.clone());
851
- start.copy(end);
852
- updateLine();
853
- } else if (editor.eventInput.isOnlyKeyDowns(this.withdrawalKeys)) {
854
- if (points.length) {
855
- const { point } = editor.renderManager.adsorption();
856
- points.pop();
857
- end?.copy(point);
858
- start?.copy(points.pop());
859
- updateLine();
652
+ o = h.clone(), s.push(n.clone(), o.clone()), n.copy(o), c();
653
+ } else if (t.eventInput.isOnlyKeyDowns(this.withdrawalKeys)) {
654
+ if (s.length) {
655
+ const { point: w } = t.renderManager.adsorption();
656
+ s.pop(), o?.copy(w), n?.copy(s.pop()), c();
860
657
  }
861
- } else if (editor.eventInput.isKeyDowns(this.confirmKeys)) next(points);
658
+ } else t.eventInput.isKeyDowns(this.confirmKeys) && e(s);
862
659
  }),
863
660
  function() {
864
- line2.removeFromParent();
865
- circle.removeFromParent();
866
- auxiliaryLine.removeFromParent();
661
+ d.removeFromParent(), a.removeFromParent(), l.removeFromParent();
867
662
  }
868
663
  );
869
664
  }
665
+ /** 结束, 汇总结果
666
+ * @param points
667
+ */
668
+ end(e, t) {
669
+ const n = [];
670
+ for (let o = 0; o < t.length; o += 2)
671
+ n.push(new ne(A.from(t[o]), A.from(t[o + 1])));
672
+ e(n);
673
+ }
870
674
  /** 执行完成
871
675
  */
872
- completed(points) {
873
- const editor = this.editor, lines = [];
874
- for (let i = 0; i < points.length; i += 2) {
875
- lines.push(new LineSegment(Point.from(points[i]), Point.from(points[i + 1])));
876
- }
877
- editor.renderManager.addLines(lines);
878
- editor.renderManager.draw();
676
+ completed(e) {
677
+ this.renderManager.addLines(e), this.renderManager.draw();
678
+ }
679
+ /** 回滚操作
680
+ * @param data
681
+ */
682
+ rollback(e) {
683
+ return e.forEach((t) => this.renderManager.removeLine(t)), this.renderManager.draw(), e;
684
+ }
685
+ /** 撤回回滚
686
+ * @param lines
687
+ * @returns
688
+ */
689
+ revokeRollback(e) {
690
+ return this.completed(e), e;
879
691
  }
880
692
  }
881
- class Default extends Component {
693
+ class ke extends ye {
882
694
  static name = "Default";
883
695
  get editor() {
884
696
  return this.parent?.findComponentByName("Editor");
885
697
  }
886
698
  renderer;
887
- container = new THREE.Group();
699
+ container = new m.Group();
888
700
  onAddFromParent() {
889
- const editor = this.editor, commandManager = editor.commandManager;
890
- this.renderer = this.parent?.findComponentByName("Renderer");
891
- editor.container.add(this.container);
892
- commandManager.addCommandFlow("default").add(this.start.bind(this)).addEventListener("finally", this.finally.bind(this));
893
- commandManager.addEventListener("startedBefore", (e) => {
894
- if (e.currentName === "default" && e.name !== "default") commandManager.cancel();
895
- });
896
- commandManager.addEventListener("finally", (e) => e.name !== "default" && commandManager.start("default"));
897
- editor.eventInput.addCancelDefaultBehavior(() => editor.eventInput.isOnlyKeyDowns(["control", "g"]));
701
+ const e = this.editor, t = e.commandManager;
702
+ this.renderer = this.parent?.findComponentByName("Renderer"), e.container.add(this.container), t.addCommandFlow("default").add(this.start.bind(this)).addEventListener("finally", this.finally.bind(this)), t.addEventListener("startedBefore", (n) => {
703
+ n.currentName === "default" && n.name !== "default" && t.cancel();
704
+ }), t.addEventListener("finally", (n) => n.name !== "default" && t.start("default")), e.eventInput.addCancelDefaultBehavior(() => e.eventInput.isOnlyKeyDowns(["control", "g"]));
898
705
  }
899
706
  selectLines = [];
900
- selectLineObject3D = new THREE.Mesh();
707
+ selectLineObject3D = new m.Mesh();
901
708
  /** 添加选择的线段
902
709
  * @param lineSegment
903
710
  */
904
- addSelectLine(lineSegment) {
905
- if (this.selectLines.indexOf(lineSegment) > -1) return;
906
- this.selectLines.push(lineSegment);
907
- this.updateSelectLinesGeometry();
908
- this.dispatchEvent({
711
+ addSelectLine(e) {
712
+ this.selectLines.indexOf(e) > -1 || (this.selectLines.push(e), this.updateSelectLinesGeometry(), this.dispatchEvent({
909
713
  type: "selectLineChange"
910
- });
714
+ }));
911
715
  }
912
716
  /** 移除选择的线段
913
717
  * @param lineSegment
914
718
  */
915
- removeSelectLine(lineSegment) {
916
- const i = this.selectLines.indexOf(lineSegment);
917
- if (i > -1) {
918
- this.selectLines.splice(i, 1);
919
- this.updateSelectLinesGeometry();
920
- this.dispatchEvent({
921
- type: "selectLineChange"
922
- });
923
- }
719
+ removeSelectLine(e) {
720
+ const t = this.selectLines.indexOf(e);
721
+ t > -1 && (this.selectLines.splice(t, 1), this.updateSelectLinesGeometry(), this.dispatchEvent({
722
+ type: "selectLineChange"
723
+ }));
924
724
  }
925
725
  /**
926
726
  * 移除所有选中线段
927
727
  */
928
728
  removeSelectLineAll() {
929
- this.selectLines.length = 0;
930
- this.dispatchEvent({
729
+ this.selectLines.length = 0, this.dispatchEvent({
931
730
  type: "selectLineChange"
932
731
  });
933
732
  }
934
- /**
935
- * 删除选择的线段
936
- */
937
- deleteSelectLine() {
938
- const editor = this.editor;
939
- this.selectLines.forEach((line2) => editor.renderManager.removeLine(line2));
940
- this.removeSelectLineAll();
941
- this.updateSelectLinesGeometry();
942
- ElMessage({ message: "删除成功", type: "success" });
943
- }
944
- /**
945
- * 删除选择线段上的窗户
946
- */
947
- deleteSelectWindow() {
948
- let is = false;
949
- this.selectLines.forEach((line2) => {
950
- if (!line2.userData.isWindow) return;
951
- line2.userData = {};
952
- is = true;
953
- });
954
- this.editor.renderManager.draw();
955
- is && ElMessage({ message: "删除窗户成功", type: "success" });
956
- }
957
- /**
958
- * 如果只选择两个线段,可为两个未链接的点创建连接
959
- */
960
- connection() {
961
- if (this.selectLines.length !== 2) {
962
- ElMessage({ message: "连接失败,请选择两个线段", type: "warning" });
963
- return;
964
- }
965
- const editor = this.editor;
966
- let start, end, diatance = Infinity;
967
- for (let i = 0; i < 2; i++)
968
- for (let j = 0; j < 2; j++) {
969
- const point1 = this.selectLines[0].points[i];
970
- const point2 = this.selectLines[1].points[j];
971
- const d = point1.distance(point2);
972
- if (d < diatance) {
973
- start = point1;
974
- end = point2;
975
- diatance = d;
976
- }
977
- }
978
- if (start && end) {
979
- const line2 = new LineSegment(start.clone(), end.clone());
980
- editor.renderManager.addLine(line2);
981
- editor.renderManager.draw();
982
- ElMessage({ message: "连接成功", type: "success" });
983
- }
984
- }
985
- /**
986
- * 如果只选择两个线段,可为两个未链接的点创建连接, 通过计算交点,线段延长到交点
987
- */
988
- intersectionConnection() {
989
- if (this.selectLines.length !== 2) {
990
- ElMessage({ message: "连接失败,请选择两个线段", type: "warning" });
991
- return;
992
- }
993
- const editor = this.editor, line1 = this.selectLines[0], line2 = this.selectLines[1], point = this.selectLines[0].getIntersection(this.selectLines[1]);
994
- if (!point) return;
995
- editor.renderManager.removeLine(line1);
996
- editor.renderManager.removeLine(line2);
997
- if (line1.start.distance(point) < line1.end.distance(point)) {
998
- line1.start.copy(point);
999
- } else {
1000
- line1.end.copy(point);
1001
- }
1002
- if (line2.start.distance(point) < line2.end.distance(point)) {
1003
- line2.start.copy(point);
1004
- } else {
1005
- line2.end.copy(point);
1006
- }
1007
- editor.renderManager.addLines([line1, line2]);
1008
- editor.renderManager.draw();
1009
- ElMessage({ message: "连接成功", type: "success" });
1010
- }
1011
- /**
1012
- * 如果只选择两个线段, 且两个线段在一条路径上,合并线段
1013
- */
1014
- mergeLine() {
1015
- if (this.selectLines.length !== 2) {
1016
- ElMessage({ message: "未执行线段合并,请选择两条线段", type: "warning" });
1017
- return;
1018
- }
1019
- const editor = this.editor, line1 = this.selectLines[0], line2 = this.selectLines[1];
1020
- for (let i = 0; i < line1.points.length; i++) {
1021
- const p1 = line1.points[i];
1022
- for (let j = 0; j < line2.points.length; j++) {
1023
- const p2 = line2.points[j];
1024
- if (p1.equal(p2)) {
1025
- const p1Next = line1.points[(i + 1) % 2];
1026
- const p2Next = line2.points[(j + 1) % 2];
1027
- editor.renderManager.removeLine(line1);
1028
- editor.renderManager.removeLine(line2);
1029
- const line3 = new LineSegment(p1Next, p2Next);
1030
- editor.renderManager.addLine(line3);
1031
- editor.renderManager.draw();
1032
- ElMessage({ message: "已合并", type: "success" });
1033
- return;
1034
- }
1035
- }
1036
- }
1037
- ElMessage({ message: "合并失败,两条线未找到共用点", type: "warning" });
1038
- }
1039
733
  _timer = null;
1040
734
  /**
1041
735
  * 更新选择的线段
1042
736
  */
1043
737
  updateSelectLinesGeometry() {
1044
- if (this._timer) clearTimeout(this._timer);
1045
- this._timer = setTimeout(() => {
738
+ this._timer && clearTimeout(this._timer), this._timer = setTimeout(() => {
1046
739
  if (this.destroyed) return;
1047
- if (this.selectLines.length) this.container.add(this.selectLineObject3D);
1048
- else this.selectLineObject3D.removeFromParent();
1049
- const editor = this.editor;
1050
- const position = this.selectLines.flatMap((line2) => line2.expandToRectangle(0.04, "bothSides").createGeometry());
1051
- this.selectLineObject3D.geometry = editor.renderManager.createGeometry({ position }, position.length / 3);
740
+ this.selectLines.length ? this.container.add(this.selectLineObject3D) : this.selectLineObject3D.removeFromParent();
741
+ const e = this.editor, t = this.selectLines.flatMap((n) => n.expandToRectangle(0.04, "bothSides").createGeometry());
742
+ this.selectLineObject3D.geometry = e.renderManager.createGeometry({ position: t }, t.length / 3);
1052
743
  }, 10);
1053
744
  }
1054
745
  /**
@@ -1056,109 +747,68 @@ class Default extends Component {
1056
747
  * @param next
1057
748
  */
1058
749
  start() {
1059
- const editor = this.editor, eventInput = editor.eventInput, object3D = new THREE.Mesh(), dom = editor.domContainer.domElement;
1060
- let currentSelectLine = null;
1061
- object3D.position.z = 0.01;
1062
- this.selectLineObject3D.position.z = object3D.position.z + 0.01;
1063
- object3D.material = new THREE.MeshBasicMaterial({ color: 55561 });
1064
- eventInput.addKeyCombination("intersectionConnection", ["control", "shift", "l"]);
1065
- eventInput.addKeyCombination("connection", ["shift", "l"]);
1066
- eventInput.addKeyCombination("mergeLine", ["control", "g"]);
1067
- this.addEventRecord("clear", () => {
1068
- eventInput.removeKeyCombination("intersectionConnection");
1069
- eventInput.removeKeyCombination("connection");
1070
- eventInput.removeKeyCombination("mergeLine");
1071
- });
1072
- const showSelectBox = () => {
1073
- const startPoint = editor.pointerPosition.clone(), endPoint = editor.pointerPosition.clone(), mesh = new THREE.Mesh();
1074
- this.container.add(mesh);
1075
- mesh.position.z = 0.05;
1076
- mesh.material = new THREE.MeshBasicMaterial({
750
+ const e = this.editor, t = e.eventInput, n = new m.Mesh(), o = e.domContainer.domElement;
751
+ let s = null;
752
+ n.position.z = 0.01, this.selectLineObject3D.position.z = n.position.z + 0.01, n.material = new m.MeshBasicMaterial({ color: 55561 });
753
+ const a = () => {
754
+ const i = e.pointerPosition.clone(), d = e.pointerPosition.clone(), l = new m.Mesh();
755
+ this.container.add(l), l.position.z = 0.05, l.material = new m.MeshBasicMaterial({
1077
756
  color: 16777215,
1078
- transparent: true,
757
+ transparent: !0,
1079
758
  opacity: 0.5
1080
759
  });
1081
- const update = () => {
1082
- const minX = Math.min(startPoint.x, endPoint.x), maxX = Math.max(startPoint.x, endPoint.x), minY = Math.min(startPoint.y, endPoint.y), maxY = Math.max(startPoint.y, endPoint.y);
1083
- const position = [
1084
- minX,
1085
- maxY,
760
+ const c = () => {
761
+ const g = Math.min(i.x, d.x), k = Math.max(i.x, d.x), b = Math.min(i.y, d.y), P = Math.max(i.y, d.y), _ = [
762
+ g,
763
+ P,
1086
764
  0,
1087
- maxX,
1088
- minY,
765
+ k,
766
+ b,
1089
767
  0,
1090
- maxX,
1091
- maxY,
768
+ k,
769
+ P,
1092
770
  0,
1093
- minX,
1094
- maxY,
771
+ g,
772
+ P,
1095
773
  0,
1096
- minX,
1097
- minY,
774
+ g,
775
+ b,
1098
776
  0,
1099
- maxX,
1100
- minY,
777
+ k,
778
+ b,
1101
779
  0
1102
780
  ];
1103
- mesh.geometry = editor.renderManager.createGeometry({ position }, position.length / 3);
781
+ l.geometry = e.renderManager.createGeometry({ position: _ }, _.length / 3);
782
+ }, h = () => {
783
+ d.copy(e.pointerPosition), c();
784
+ }, w = () => {
785
+ document.removeEventListener("mousemove", h), document.removeEventListener("mouseup", w), l.removeFromParent();
786
+ const g = Math.min(i.x, d.x), k = Math.max(i.x, d.x), b = Math.min(i.y, d.y), P = Math.max(i.y, d.y), _ = new We(g, k, b, P), j = e.renderManager.quadtree.queryBox(_);
787
+ this.removeSelectLineAll(), j.forEach((se) => this.addSelectLine(se.line)), this.updateSelectLinesGeometry();
1104
788
  };
1105
- const move = () => {
1106
- endPoint.copy(editor.pointerPosition);
1107
- update();
1108
- };
1109
- const end = () => {
1110
- document.removeEventListener("mousemove", move);
1111
- document.removeEventListener("mouseup", end);
1112
- mesh.removeFromParent();
1113
- const minX = Math.min(startPoint.x, endPoint.x), maxX = Math.max(startPoint.x, endPoint.x), minY = Math.min(startPoint.y, endPoint.y), maxY = Math.max(startPoint.y, endPoint.y);
1114
- const box = new Box2(minX, maxX, minY, maxY);
1115
- const resultList = editor.renderManager.quadtree.queryBox(box);
1116
- this.removeSelectLineAll();
1117
- resultList.forEach((result) => this.addSelectLine(result.line));
1118
- this.updateSelectLinesGeometry();
1119
- };
1120
- document.addEventListener("mousemove", move);
1121
- document.addEventListener("mouseup", end);
789
+ document.addEventListener("mousemove", h), document.addEventListener("mouseup", w);
1122
790
  };
1123
791
  this.addEventRecord(
1124
792
  "clear",
1125
793
  // 注册鼠标指针位置变化事件
1126
- editor.addEventListener("pointerPositionChange", () => {
1127
- const { line: line2 } = editor.renderManager.adsorption(0.05);
1128
- if (line2) {
1129
- const rectangle = line2.expandToRectangle(0.02, "bothSides");
1130
- object3D.geometry = editor.renderManager.createGeometry({ position: rectangle.createGeometry() }, 6);
1131
- this.container.add(object3D);
1132
- dom.style.cursor = "pointer";
1133
- currentSelectLine = line2;
1134
- } else {
1135
- object3D.removeFromParent();
1136
- dom.style.cursor = "default";
1137
- currentSelectLine = null;
1138
- }
794
+ e.addEventListener("pointerPositionChange", () => {
795
+ const { line: i } = e.renderManager.adsorption(0.05);
796
+ if (i) {
797
+ const d = i.expandToRectangle(0.02, "bothSides");
798
+ n.geometry = e.renderManager.createGeometry({ position: d.createGeometry() }, 6), this.container.add(n), o.style.cursor = "pointer", s = i;
799
+ } else
800
+ n.removeFromParent(), o.style.cursor = "default", s = null;
1139
801
  }),
1140
- eventInput.addEventListener("codeChange", () => {
1141
- if (eventInput.isKeyDown("mouse_0")) {
1142
- if (!currentSelectLine) return showSelectBox();
1143
- if (eventInput.isKeyDown("alt")) {
1144
- return this.removeSelectLine(currentSelectLine);
1145
- }
1146
- if (!eventInput.isKeyDown("control")) this.removeSelectLineAll();
1147
- this.addSelectLine(currentSelectLine);
1148
- } else if (eventInput.isOnlyKeyDown("delete")) {
1149
- this.deleteSelectLine();
1150
- } else if (eventInput.isKeyDowns(["q", "delete"])) {
1151
- this.deleteSelectWindow();
1152
- } else if (eventInput.isKeyCombination("connection")) {
1153
- this.connection();
1154
- } else if (eventInput.isKeyCombination("intersectionConnection")) {
1155
- this.intersectionConnection();
1156
- } else if (eventInput.isKeyCombination("mergeLine")) {
1157
- this.mergeLine();
1158
- }
802
+ t.addEventListener("codeChange", () => {
803
+ if (t.isKeyDown("mouse_0")) {
804
+ if (!s) return a();
805
+ if (t.isKeyDown("alt"))
806
+ return this.removeSelectLine(s);
807
+ t.isKeyDown("control") || this.removeSelectLineAll(), this.addSelectLine(s);
808
+ } else t.isKeyDowns(["control", "z"]) ? e.commandManager.rollback() : t.isKeyDowns(["control", "y"]) && e.commandManager.revokeRollback();
1159
809
  }),
1160
810
  function() {
1161
- object3D.removeFromParent();
811
+ n.removeFromParent();
1162
812
  }
1163
813
  );
1164
814
  }
@@ -1166,32 +816,53 @@ class Default extends Component {
1166
816
  * 清理
1167
817
  */
1168
818
  finally() {
1169
- this.canceEventRecord("clear");
1170
- this.removeSelectLineAll();
1171
- this.updateSelectLinesGeometry();
819
+ this.canceEventRecord("clear"), this.removeSelectLineAll(), this.updateSelectLinesGeometry();
1172
820
  }
1173
821
  }
1174
- class CommandFlow extends EventDispatcher {
822
+ class un extends Ue {
1175
823
  list = [];
1176
- add(operation) {
1177
- this.list.push(operation);
1178
- return this;
824
+ rollbacklist = [];
825
+ revokeRollbacklist = [];
826
+ /**
827
+ *
828
+ * @param operation
829
+ * @returns
830
+ */
831
+ add(e) {
832
+ return this.list.push(e), this;
833
+ }
834
+ /** 添加回滚回调列表
835
+ * @param callBack
836
+ */
837
+ addRollback(e) {
838
+ return this.rollbacklist.push(e), this;
839
+ }
840
+ /** 添加撤回回滚回调列表
841
+ * @param callBack
842
+ * @returns
843
+ */
844
+ addRevokeRollback(e) {
845
+ return this.revokeRollbacklist.push(e), this;
1179
846
  }
1180
847
  }
1181
- class CommandManager extends EventDispatcher {
848
+ class pn extends Ue {
1182
849
  commandFlowMap = /* @__PURE__ */ new Map();
1183
- lock = false;
850
+ lock = !1;
1184
851
  abortController = null;
1185
852
  resolve = null;
1186
853
  currentName = null;
1187
- _disabled = false;
1188
- set disabled(disabled) {
1189
- this._disabled = disabled;
1190
- if (this._disabled) this.cancel();
854
+ _disabled = !1;
855
+ set disabled(e) {
856
+ this._disabled = e, this._disabled && this.cancel();
1191
857
  }
1192
858
  get disabled() {
1193
859
  return this._disabled;
1194
860
  }
861
+ /**
862
+ * 操作记录
863
+ */
864
+ operationList = [];
865
+ rollbackList = [];
1195
866
  constructor() {
1196
867
  super();
1197
868
  }
@@ -1199,11 +870,10 @@ class CommandManager extends EventDispatcher {
1199
870
  * @param name
1200
871
  * @returns
1201
872
  */
1202
- addCommandFlow(name) {
1203
- if (this.commandFlowMap.has(name)) throw new Error(`${name} 命令已经存在`);
1204
- const commandFlow = new CommandFlow();
1205
- this.commandFlowMap.set(name, commandFlow);
1206
- return commandFlow;
873
+ addCommandFlow(e) {
874
+ if (this.commandFlowMap.has(e)) throw new Error(`${e} 命令已经存在`);
875
+ const t = new un();
876
+ return this.commandFlowMap.set(e, t), t;
1207
877
  }
1208
878
  executionPromise = null;
1209
879
  executionResolve = null;
@@ -1211,118 +881,131 @@ class CommandManager extends EventDispatcher {
1211
881
  * @param name
1212
882
  * @returns
1213
883
  */
1214
- async start(name, data = null, step = 0) {
884
+ async start(e, t = null, n = 0) {
1215
885
  if (this.disabled) throw new Error("命令管理器已禁用,无法启动新的命令流");
1216
- this.dispatchEvent({
886
+ if (this.dispatchEvent({
1217
887
  type: "startedBefore",
1218
- name,
888
+ name: e,
1219
889
  currentName: this.currentName
1220
- });
1221
- this.executionPromise && await this.executionPromise;
1222
- this.executionPromise = null;
1223
- if (this.lock) {
1224
- throw new Error("命令管理器已被锁定,无法启动新的命令流");
1225
- }
1226
- const commandFlow = this.commandFlowMap.get(name);
1227
- if (!commandFlow) {
1228
- throw new Error(`命令流 ${name} 不存在`);
1229
- }
1230
- this.lock = true;
1231
- this.abortController = new AbortController();
1232
- this.currentName = name;
1233
- commandFlow.dispatchEvent({ type: "started" });
1234
- this.dispatchEvent({ type: "started", name });
890
+ }), this.executionPromise && await this.executionPromise, this.executionPromise = null, this.lock)
891
+ throw new Error("命令管理器已被 " + this.currentName + " 命令锁定,无法启动新的命令流,请退出或等待命令执行结束");
892
+ const o = this.commandFlowMap.get(e);
893
+ if (!o)
894
+ throw new Error(`命令流 ${e} 不存在`);
895
+ this.lock = !0, this.abortController = new AbortController(), this.currentName = e, o.dispatchEvent({ type: "started" }), this.dispatchEvent({ type: "started", name: e });
1235
896
  try {
1236
- for (let i = step; i < commandFlow.list.length; i++) {
1237
- const operation = commandFlow.list[i];
1238
- commandFlow.dispatchEvent({ type: "executing", index: i });
1239
- this.dispatchEvent({ type: "executing", name, index: i });
1240
- data = await new Promise((resolve) => {
1241
- this.resolve = resolve;
1242
- operation(resolve, data);
1243
- });
1244
- if (this.abortController.signal.aborted) {
1245
- commandFlow.dispatchEvent({ type: "executionInterrupt", index: i });
1246
- this.dispatchEvent({ type: "executionInterrupt", name, index: i });
1247
- this.dispatchEvent({ type: "cancel", name });
897
+ for (let s = n; s < o.list.length; s++) {
898
+ const a = o.list[s];
899
+ if (o.dispatchEvent({ type: "executing", index: s }), this.dispatchEvent({ type: "executing", name: e, index: s }), t = await new Promise((i) => {
900
+ this.resolve = i, a(i, t);
901
+ }), this.abortController.signal.aborted) {
902
+ o.dispatchEvent({ type: "executionInterrupt", index: s }), this.dispatchEvent({ type: "executionInterrupt", name: e, index: s }), this.dispatchEvent({ type: "cancel", name: e });
1248
903
  break;
1249
- } else {
1250
- commandFlow.dispatchEvent({ type: "executionCompleted", index: i, data });
1251
- this.dispatchEvent({ type: "executionCompleted", name, index: i, data });
1252
- }
904
+ } else
905
+ o.dispatchEvent({ type: "executionCompleted", index: s, data: t }), this.dispatchEvent({ type: "executionCompleted", name: e, index: s, data: t });
1253
906
  }
1254
- } catch (error) {
1255
- console.error(error);
907
+ } catch (s) {
908
+ console.error(s);
1256
909
  } finally {
1257
- if (this.abortController && !this.abortController.signal.aborted) {
1258
- commandFlow.dispatchEvent({ type: "completed", data });
1259
- this.dispatchEvent({ type: "completed", name, data });
1260
- }
1261
- this.lock = false;
1262
- this.abortController = null;
1263
- this.currentName = null;
1264
- commandFlow.dispatchEvent({ type: "finally" });
1265
- this.dispatchEvent({ type: "finally", name });
1266
- if (this.executionResolve) {
1267
- this.executionResolve(null);
1268
- this.executionResolve = null;
1269
- }
910
+ this.abortController && !this.abortController.signal.aborted && (o.dispatchEvent({ type: "completed", data: t }), this.dispatchEvent({ type: "completed", name: e, data: t }), this.operationList.push({ name: e, data: t }), this.rollbackList.length = 0), this.lock = !1, this.abortController = null, this.currentName = null, o.dispatchEvent({ type: "finally" }), this.dispatchEvent({ type: "finally", name: e }), this.executionResolve && (this.executionResolve(null), this.executionResolve = null);
1270
911
  }
1271
- return data;
912
+ return t;
1272
913
  }
1273
914
  /** 取消当前命令
1274
915
  */
1275
916
  cancel() {
1276
- if (this.abortController) {
1277
- this.abortController.abort();
1278
- if (this.resolve) this.resolve();
1279
- this.executionPromise = new Promise((resolve) => this.executionResolve = resolve);
917
+ this.abortController && (this.abortController.abort(), this.resolve && this.resolve(), this.executionPromise = new Promise((e) => this.executionResolve = e));
918
+ }
919
+ /**
920
+ * 回滚
921
+ */
922
+ rollback() {
923
+ try {
924
+ const e = this.operationList.pop();
925
+ if (!e) return !1;
926
+ const t = this.commandFlowMap.get(e.name);
927
+ if (!t) return !1;
928
+ const n = t.rollbacklist.reduce((o, s) => s(o), e.data);
929
+ return this.dispatchEvent({ type: "rollback", name: e.name }), this.rollbackList.push({
930
+ data: n,
931
+ name: e.name
932
+ }), !0;
933
+ } catch (e) {
934
+ throw new Error(`回滚失败:${e}`);
935
+ }
936
+ }
937
+ /**
938
+ * 撤销回滚
939
+ */
940
+ revokeRollback() {
941
+ try {
942
+ const e = this.rollbackList.pop();
943
+ if (!e) return !1;
944
+ const t = this.commandFlowMap.get(e.name);
945
+ if (!t) return !1;
946
+ const n = t.revokeRollbacklist.reduce((o, s) => s(o), e.data);
947
+ return this.dispatchEvent({ type: "revokeRollback", name: e.name }), this.operationList.push({ name: e.name, data: n }), !0;
948
+ } catch (e) {
949
+ throw new Error(`撤回回滚失败:${e}`);
1280
950
  }
1281
951
  }
1282
952
  }
1283
- const door = "data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1757902601497'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='9801'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='200'%20height='200'%3e%3cpath%20d='M761.344%20119.296H226.816c-18.944%200-39.424%2011.776-39.424%2030.72V921.6h614.4V148.48c0.512-18.944-22.016-29.184-40.448-29.184z%20m-537.6%20768c-2.048%200-2.048%200%200%200L221.696%20163.84c0-5.12%205.12-10.24%2010.24-10.24h522.24c8.704%200%2013.824%205.12%2013.824%2013.824v720.384s0%201.536-1.536%201.536h-15.36V194.56c0-16.896-8.704-24.064-29.184-24.064H266.24c-18.944%200-27.136%208.704-27.136%2024.064v692.736h-15.36z%20m49.152%200V204.8H716.8v682.496H272.896z'%20p-id='9802'%3e%3c/path%3e%3cpath%20d='M648.704%20508.416c-16.896%200-32.256%2013.824-32.256%2032.256%200%2016.896%2013.824%2032.256%2032.256%2032.256s32.256-13.824%2032.256-32.256c0-16.896-13.824-32.256-32.256-32.256z'%20p-id='9803'%3e%3c/path%3e%3c/svg%3e";
1284
- const __vite_glob_0_0 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
953
+ const vn = "data:image/svg+xml,%3csvg%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20fill='%23555'%20width='16'%20height='16'%3e%3cpath%20d='M639.999191%20893.597594c-0.999994-54.699654-36.39977-101.099361-85.39946-118.399252-6.39996-2.199986-10.599933-8.299948-10.599933-14.999905V263.801573c0-6.699958%204.199973-12.799919%2010.599933-14.999905%2049.09969-17.299891%2084.399467-63.599598%2085.39946-118.399252C641.299183%2059.902862%20583.399549%200.503237%20512.899994%200.00324%20441.800444-0.496757%20384.000809%2057.00288%20384.000809%20128.002431c0%2055.699648%2035.599775%20103.099349%2085.299461%20120.699238%206.39996%202.299985%2010.699932%208.299948%2010.699932%2015.099904v496.396864c0%206.799957-4.299973%2012.799919-10.699932%2015.099904-49.699686%2017.599889-85.299461%2064.999589-85.299461%20120.699238%200%2070.999551%2057.799635%20128.499188%20128.899185%20127.999191%2070.499555-0.499997%20128.399189-59.899622%20127.099197-130.399176zM448.000404%20128.002431c0-35.299777%2028.699819-63.999596%2063.999596-63.999595s63.999596%2028.699819%2063.999596%2063.999595-28.699819%2063.999596-63.999596%2063.999596-63.999596-28.699819-63.999596-63.999596z%20m0%20767.995148c0-35.299777%2028.699819-63.999596%2063.999596-63.999596s63.999596%2028.699819%2063.999596%2063.999596-28.699819%2063.999596-63.999596%2063.999595-63.999596-28.699819-63.999596-63.999595z'%3e%3c/path%3e%3c/svg%3e", gn = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
1285
954
  __proto__: null,
1286
- default: door
1287
- }, Symbol.toStringTag, { value: "Module" }));
1288
- const line = "data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1757902422799'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='1735'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='200'%20height='200'%3e%3cpath%20d='M843.2%20726.4c-20.2%200-39.2%205.2-55.8%2014.3L283.8%20237.2c9-16.5%2014.1-35.4%2014.1-55.5%200-64.2-52.3-116.5-116.5-116.5S65%20117.4%2065%20181.6s52.3%20116.5%20116.5%20116.5c20.2%200%2039.2-5.2%2055.8-14.2l503.5%20503.5c-9%2016.5-14.1%2035.4-14.1%2055.5%200%2064.2%2052.3%20116.5%20116.5%20116.5s116.5-52.3%20116.5-116.5-52.3-116.5-116.5-116.5zM181.4%20232.1c-27.8%200-50.5-22.6-50.5-50.5s22.6-50.5%2050.5-50.5%2050.5%2022.6%2050.5%2050.5-22.6%2050.5-50.5%2050.5z%20m661.8%20661.3c-27.8%200-50.5-22.6-50.5-50.5%200-27.8%2022.6-50.5%2050.5-50.5s50.5%2022.6%2050.5%2050.5c0%2027.8-22.7%2050.5-50.5%2050.5z'%20fill='%23231815'%20p-id='1736'%3e%3c/path%3e%3c/svg%3e";
1289
- const __vite_glob_0_1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
955
+ default: vn
956
+ }, Symbol.toStringTag, { value: "Module" })), fn = "data:image/svg+xml,%3csvg%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20fill='%23555'%20width='16'%20height='16'%3e%3cpath%20d='M909.050991%20169.476903l-217.554898%200%200-31.346939c0-39.5866-32.205493-71.792093-71.793116-71.792093L408.15591%2066.337871c-39.5866%200-71.792093%2032.205493-71.792093%2071.792093l0%2031.346939L113.349581%20169.476903c-11.013845%200-19.942191%208.940626-19.942191%2019.954471s8.928347%2019.954471%2019.942191%2019.954471l84.264149%200%200%20640.687918c0%2060.479443%2049.203632%20109.683075%20109.683075%20109.683075l416.474366%200c60.479443%200%20109.683075-49.203632%20109.683075-109.683075L833.454246%20209.385844l75.595722%200c11.012821%200%2019.942191-8.940626%2019.942191-19.954471S920.063813%20169.476903%20909.050991%20169.476903zM376.2482%20138.130987c0-17.593703%2014.314007-31.907711%2031.907711-31.907711l211.547067%200c17.593703%200%2031.907711%2014.314007%2031.907711%2031.907711l0%2031.346939L376.2482%20169.477926%20376.2482%20138.130987zM793.569864%20850.074785c0%2038.486546-31.312146%2069.798692-69.798692%2069.798692L307.297828%20919.873478c-38.486546%200-69.798692-31.312146-69.798692-69.798692L237.499136%20211.042577l556.070728%200L793.569864%20850.074785zM510.662539%20861.276918c11.012821%200%2019.954471-8.92937%2019.954471-19.942191L530.61701%20294.912753c0-11.013845-8.94165-19.942191-19.954471-19.942191s-19.954471%208.928347-19.954471%2019.942191L490.708068%20841.334727C490.708068%20852.347548%20499.649717%20861.276918%20510.662539%20861.276918zM374.562814%20801.449321c11.012821%200%2019.954471-8.92937%2019.954471-19.942191L394.517285%20354.74035c0-11.013845-8.94165-19.942191-19.954471-19.942191s-19.954471%208.928347-19.954471%2019.942191l0%20426.76678C354.608344%20792.519951%20363.549993%20801.449321%20374.562814%20801.449321zM649.832182%20801.449321c11.012821%200%2019.954471-8.92937%2019.954471-19.942191L669.786653%20354.74035c0-11.013845-8.94165-19.942191-19.954471-19.942191s-19.954471%208.928347-19.954471%2019.942191l0%20426.76678C629.877711%20792.519951%20638.81936%20801.449321%20649.832182%20801.449321z'%20%3e%3c/path%3e%3c/svg%3e", yn = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
1290
957
  __proto__: null,
1291
- default: line
1292
- }, Symbol.toStringTag, { value: "Module" }));
1293
- const selectPoint = "data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1757902488735'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='3957'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='200'%20height='200'%3e%3cpath%20d='M520.416%20179.392c-12.384%200-22.4%204.672-22.4%2010.432l-0.032%20139.136c0%205.76%2010.016%2010.432%2022.368%2010.432%2012.352%200%2022.368-4.672%2022.368-10.432l0.064-139.136c0-5.76-10.016-10.432-22.4-10.432M520.32%20623.04c-12.352%200-22.368%204.64-22.368%2010.4l-0.032%20139.168c0%205.76%2010.016%2010.432%2022.368%2010.432%2012.352%200%2022.368-4.672%2022.368-10.432l0.064-139.168c0-5.76-10.016-10.4-22.4-10.4M800.256%20458.72l-139.168-0.064c-5.76%200-10.432%2010.016-10.432%2022.4%200%2012.352%204.672%2022.368%2010.432%2022.368l139.168%200.032c5.76%200%2010.4-10.016%2010.4-22.368%200-12.352-4.64-22.368-10.4-22.4zM352.256%20458.72l-139.168-0.064c-5.76%200-10.432%2010.016-10.432%2022.4%200%2012.352%204.672%2022.368%2010.432%2022.368l139.168%200.032c5.76%200%2010.4-10.016%2010.4-22.368%200-12.352-4.64-22.368-10.4-22.4M801.568%20748.672l-72.544-72.544%2073.792-23.2a4.416%204.416%200%200%200%200.096-8.384l-183.136-62.4a4.416%204.416%200%200%200-5.6%205.568l62.464%20183.168a4.416%204.416%200%200%200%208.352-0.064l23.36-73.6%2072.32%2072.32a14.752%2014.752%200%200%200%2020.896-20.864M510.688%20382.112c49.952%200%2092.8%2040.832%2092.8%2092.8%200%2051.968-42.848%2092.8-92.8%2092.8-49.984%200-92.8-40.832-92.8-92.8%200-51.968%2042.816-92.8%2092.8-92.8z'%20p-id='3958'%3e%3c/path%3e%3c/svg%3e";
1294
- const __vite_glob_0_2 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
958
+ default: fn
959
+ }, Symbol.toStringTag, { value: "Module" })), wn = "data:image/svg+xml,%3csvg%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20fill='%23555'%20width='16'%20height='16'%3e%3cpath%20d='M220.451548%20913.518482V318.145854c0-27.62038%2022.505495-50.125874%2050.125875-50.125874H865.95005c27.62038%200%2050.125874%2022.505495%2050.125874%2050.125874v218.917083h59.332667V318.145854c0-60.355644-49.102897-109.458541-109.458541-109.458541h-39.896104v-99.228772C826.053946%2049.102897%20776.951049%200%20716.595405%200H121.222777C60.867133%200%2011.764236%2049.102897%2011.764236%20109.458541V705.854146c0%2060.355644%2049.102897%20109.458541%20109.458541%20109.458541h39.896104v99.228772c0%2060.355644%2049.102897%20109.458541%20109.458542%20109.458541h257.790209v-59.332667H269.554446c-26.597403-1.022977-49.102897-23.528472-49.102898-51.148851z%20m-59.332667-595.372628v436.811189h-39.896104c-27.62038%200-50.125874-22.505495-50.125874-50.125874V109.458541c0-27.62038%2022.505495-50.125874%2050.125874-50.125874H716.595405c27.62038%200%2050.125874%2022.505495%2050.125874%2050.125874v99.228772H269.554446c-59.332667%200-108.435564%2049.102897-108.435565%20109.458541z'%20%3e%3c/path%3e%3cpath%20d='M902.777223%20854.185814l98.205794-98.205794c15.344655-15.344655%2015.344655-40.919081%200-56.263736s-40.919081-15.344655-56.263736%200L846.513487%20797.922078%20747.284715%20699.716284c-15.344655-15.344655-40.919081-15.344655-56.263736%200s-15.344655%2040.919081%200%2056.263736l98.205794%2098.205794-98.205794%2098.205794c-15.344655%2015.344655-15.344655%2040.919081%200%2056.263737s40.919081%2015.344655%2056.263736%200l98.205794-98.205795%2098.205795%2098.205795c15.344655%2015.344655%2040.919081%2015.344655%2056.263736%200s15.344655-40.919081%200-56.263737l-97.182817-98.205794z'%20%3e%3c/path%3e%3c/svg%3e", bn = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
1295
960
  __proto__: null,
1296
- default: selectPoint
1297
- }, Symbol.toStringTag, { value: "Module" }));
1298
- const window$1 = "data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1757902547951'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='5129'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='200'%20height='200'%3e%3cpath%20d='M59.355%2091.776v867.881h867.881V91.776H59.356zM897.31%20929.73H89.282V121.703h808.027V929.73z'%20fill=''%20p-id='5130'%3e%3c/path%3e%3cpath%20d='M833.964%20185.048H152.627v681.337h681.337V185.048z%20m-355.632%20651.41H182.554V532.2h295.778v304.257z%20m0-334.184H182.554V214.975h295.778v287.299z%20m325.705%20334.184H508.259V532.2h295.778v304.257z%20m0-334.184H508.259V214.975h295.778v287.299z'%20fill=''%20p-id='5131'%3e%3c/path%3e%3c/svg%3e";
1299
- const __vite_glob_0_3 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
961
+ default: wn
962
+ }, Symbol.toStringTag, { value: "Module" })), xn = "data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1757902601497'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='9801'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='200'%20height='200'%3e%3cpath%20d='M761.344%20119.296H226.816c-18.944%200-39.424%2011.776-39.424%2030.72V921.6h614.4V148.48c0.512-18.944-22.016-29.184-40.448-29.184z%20m-537.6%20768c-2.048%200-2.048%200%200%200L221.696%20163.84c0-5.12%205.12-10.24%2010.24-10.24h522.24c8.704%200%2013.824%205.12%2013.824%2013.824v720.384s0%201.536-1.536%201.536h-15.36V194.56c0-16.896-8.704-24.064-29.184-24.064H266.24c-18.944%200-27.136%208.704-27.136%2024.064v692.736h-15.36z%20m49.152%200V204.8H716.8v682.496H272.896z'%20p-id='9802'%3e%3c/path%3e%3cpath%20d='M648.704%20508.416c-16.896%200-32.256%2013.824-32.256%2032.256%200%2016.896%2013.824%2032.256%2032.256%2032.256s32.256-13.824%2032.256-32.256c0-16.896-13.824-32.256-32.256-32.256z'%20p-id='9803'%3e%3c/path%3e%3c/svg%3e", Cn = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
963
+ __proto__: null,
964
+ default: xn
965
+ }, Symbol.toStringTag, { value: "Module" })), Mn = "data:image/svg+xml,%3csvg%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20fill='%23555'%20width='16'%20height='16'%3e%3cpath%20d='M491.80027198%20557.44938977c-10.0998647-15.14979706-20.19972802-25.24966037-35.34952507-35.34952507-15.14979706-10.0998647-30.29959271-15.14979706-50.49932211-15.14979704-55.54925309%200-100.99864286%2045.44938977-100.99864287%20100.99864285%200%2015.14979706%205.04993234%2035.34952507%2015.14979568%2050.49932212%2010.0998647%2015.14979706%2020.19972802%2030.29959271%2035.34952506%2035.34952508%2015.14979706%2010.0998647%2035.34952507%2015.14979706%2050.49932213%2015.14979567%2055.54925309%200%20100.99864286-45.44938977%20100.99864286-100.99864287%200-15.14979706-5.04993234-35.34952507-15.14979568-50.49932074z%20m-85.84884718%20100.99864286h-15.14979706c-20.19972802-5.04993234-30.29959271-20.19972802-35.34952507-35.34952507V612.99864286c0-30.29959271%2025.24966037-50.49932212%2050.49932213-50.49932074h10.09986469c15.14979706%205.04993234%2030.29959271%2015.14979706%2035.34952507%2035.34952507v15.14979567c5.04993234%2025.24966037-20.19972802%2045.44938977-45.44938976%2045.44938977z'%3e%3c/path%3e%3cpath%20d='M390.80162774%20658.44803263l-40.39945604%2040.39945743-227.24694747%20222.19701373-35.34952506-35.34952508%20227.24694745-227.24694608%2040.39945605-40.39945743c5.04993234%2020.19972802%2020.19972802%2035.34952507%2035.34952507%2040.39945743zM648.34816793%20405.9514248l-40.39945742%2040.3994574-116.14843853%20116.14843992-40.39945742%2035.34952507c-5.04993234-20.19972802-20.19972802-30.29959271-35.34952507-35.34952507l40.39945742-40.39945742%20116.14843853-111.09850756%2035.34952507-35.34952507c10.0998647%2015.14979706%2020.19972802%2025.24966037%2040.39945742%2030.29959273zM926.09443614%20133.25508894L749.34681078%20310.00271428l-40.3994574%2040.39945742c-5.04993234-20.19972802-15.14979706-35.34952507-30.29959272-40.39945742l35.34952506-40.39945742%20176.74762534-176.74762535%2035.34952508%2040.39945743z'%20%3e%3c/path%3e%3cpath%20d='M749.34681078%20310.00271428c-10.0998647-15.14979706-20.19972802-30.29959271-35.34952506-35.34952506-15.14979706-10.0998647-35.34952507-15.14979706-55.54925309-15.14979706-55.54925309%200-100.99864286%2045.44938977-100.99864286%20100.99864286%200%2020.19972802%205.04993234%2040.39945743%2015.14979567%2055.54925447%2010.0998647%2015.14979706%2020.19972802%2025.24966037%2035.34952507%2035.34952507%2015.14979706%2010.0998647%2030.29959271%2015.14979706%2050.49932212%2015.14979567%2055.54925309%200%20100.99864286-45.44938977%20100.99864286-100.99864286%200-25.24966037-5.04993234-40.39945743-10.09986471-55.54925309z%20m-90.89877815%2095.94871052h-10.0998647c-20.19972802-5.04993234-35.34952507-15.14979706-40.39945742-35.34952509%200-5.04993234-5.04993234-10.0998647-5.04993234-15.14979704%200-30.29959271%2025.24966037-50.49932212%2050.49932212-50.49932074%205.04993234%200%2010.0998647%200%2015.14979704%205.04993235%2015.14979706%205.04993234%2030.29959271%2020.19972802%2030.29959273%2040.39945742v10.09986332c10.0998647%2025.24966037-15.14979706%2045.44938977-40.39945743%2045.44938978z'%20%3e%3c/path%3e%3c/svg%3e", En = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
966
+ __proto__: null,
967
+ default: Mn
968
+ }, Symbol.toStringTag, { value: "Module" })), Ln = "data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1757902422799'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='1735'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='200'%20height='200'%3e%3cpath%20d='M843.2%20726.4c-20.2%200-39.2%205.2-55.8%2014.3L283.8%20237.2c9-16.5%2014.1-35.4%2014.1-55.5%200-64.2-52.3-116.5-116.5-116.5S65%20117.4%2065%20181.6s52.3%20116.5%20116.5%20116.5c20.2%200%2039.2-5.2%2055.8-14.2l503.5%20503.5c-9%2016.5-14.1%2035.4-14.1%2055.5%200%2064.2%2052.3%20116.5%20116.5%20116.5s116.5-52.3%20116.5-116.5-52.3-116.5-116.5-116.5zM181.4%20232.1c-27.8%200-50.5-22.6-50.5-50.5s22.6-50.5%2050.5-50.5%2050.5%2022.6%2050.5%2050.5-22.6%2050.5-50.5%2050.5z%20m661.8%20661.3c-27.8%200-50.5-22.6-50.5-50.5%200-27.8%2022.6-50.5%2050.5-50.5s50.5%2022.6%2050.5%2050.5c0%2027.8-22.7%2050.5-50.5%2050.5z'%20fill='%23231815'%20p-id='1736'%3e%3c/path%3e%3c/svg%3e", _n = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
969
+ __proto__: null,
970
+ default: Ln
971
+ }, Symbol.toStringTag, { value: "Module" })), Dn = "data:image/svg+xml,%3csvg%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20fill='%23555'%20width='16'%20height='16'%3e%3cpath%20d='M114.176%2046.528h618.496c37.312%200.064%2067.584%2030.336%2067.648%2067.648v618.56c0%2037.248-30.336%2067.584-67.648%2067.584H114.176A67.776%2067.776%200%200%201%2046.528%20732.8V114.176c0-37.312%2030.336-67.648%2067.648-67.648z%20m2.176%20686.208l616.32-2.24-2.176-616.32-614.144%202.176v616.32zM907.648%20291.2l2.176%20616.32H291.264a34.88%2034.88%200%201%200%200%2069.888h618.56c37.312%200%2067.648-30.336%2067.648-67.648V291.264a34.88%2034.88%200%201%200-69.824%200z'%20%3e%3c/path%3e%3c/svg%3e", kn = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
972
+ __proto__: null,
973
+ default: Dn
974
+ }, Symbol.toStringTag, { value: "Module" })), Pn = "data:image/svg+xml,%3csvg%20viewBox='0%200%201029%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20fill='%23555'%20width='16'%20height='16'%3e%3cpath%20d='M788.17984%2016l-55.424%2060.672%20116.48%20106.56H418.13184a410.816%20410.816%200%201%200%200%20821.632h547.712v-82.176H418.13184a328.64%20328.64%200%200%201%200-657.28l441.792-0.128-124.8%2098.368%2050.752%2064.512%20243.328-191.488L788.17984%2016z'%3e%3c/path%3e%3c/svg%3e", In = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
975
+ __proto__: null,
976
+ default: Pn
977
+ }, Symbol.toStringTag, { value: "Module" })), Sn = "data:image/svg+xml,%3csvg%20viewBox='0%200%201048%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20fill='%23555'%20width='16'%20height='16'%3e%3cpath%20d='M310.04722%20451.334244A49.95122%2049.95122%200%200%201%20239.416195%20521.990244L27.473171%20310.04722a49.95122%2049.95122%200%200%201%200-70.631025L239.416195%2027.473171a49.95122%2049.95122%200%200%201%2070.631025%2070.631024l-126.651318%20126.626342L649.365854%20224.780488c220.709463%200%20399.609756%20178.900293%20399.609756%20399.609756s-178.900293%20399.609756-399.609756%20399.609756H124.878049a49.95122%2049.95122%200%201%201%200-99.902439h524.487805c165.513366%200%20299.707317-134.193951%20299.707317-299.707317s-134.193951-299.707317-299.707317-299.707317H183.395902l126.651318%20126.651317z'%3e%3c/path%3e%3c/svg%3e", Nn = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
978
+ __proto__: null,
979
+ default: Sn
980
+ }, Symbol.toStringTag, { value: "Module" })), Rn = "data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='11576'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20fill='%23555'%20width='16'%20height='16'%3e%3cpath%20d='M102.4%20302.08c5.12%205.12%2015.36%2010.24%2025.6%2010.24s15.36-5.12%2025.6-10.24l174.08-174.08c5.12-5.12%2010.24-15.36%2010.24-25.6s-5.12-15.36-10.24-25.6c-20.48-5.12-40.96-5.12-51.2%2010.24l-148.48%20153.6-71.68-76.8C51.2%20158.72%2040.96%20158.72%2035.84%20158.72c-10.24%200-15.36%205.12-25.6%2010.24-5.12%205.12-10.24%2010.24-10.24%2020.48s5.12%2015.36%2010.24%2025.6L102.4%20302.08zM276.48%20409.6l-148.48%20153.6-71.68-71.68C51.2%20486.4%2040.96%20481.28%2035.84%20481.28c-10.24%200-15.36%205.12-25.6%2010.24-5.12%2010.24-10.24%2015.36-10.24%2025.6s5.12%2015.36%2010.24%2025.6L102.4%20629.76c5.12%205.12%2015.36%2010.24%2025.6%2010.24s15.36-5.12%2025.6-10.24L322.56%20460.8c5.12-5.12%2010.24-15.36%2010.24-25.6s-5.12-15.36-10.24-25.6c-10.24-10.24-30.72-10.24-46.08%200z%20m0%20327.68l-148.48%20153.6L56.32%20819.2c-5.12-5.12-15.36-10.24-25.6-10.24s-15.36%205.12-25.6%2010.24c0%205.12-5.12%2015.36-5.12%2025.6s5.12%2015.36%2010.24%2025.6L102.4%20957.44c5.12%205.12%2015.36%2010.24%2025.6%2010.24h5.12c10.24%200%2015.36-5.12%2025.6-10.24l174.08-174.08c5.12-5.12%2010.24-15.36%2010.24-25.6s-5.12-15.36-10.24-25.6c-25.6-5.12-40.96-5.12-56.32%205.12zM1024%20153.6c0%2030.72-25.6%2056.32-56.32%2056.32h-460.8c-30.72%200-61.44-25.6-61.44-56.32%200-30.72%2025.6-56.32%2056.32-56.32h455.68c35.84-5.12%2066.56%2020.48%2066.56%2056.32z%20m0%20358.4c0%2030.72-25.6%2056.32-56.32%2056.32h-460.8c-30.72%200-56.32-25.6-56.32-56.32s25.6-56.32%2056.32-56.32h455.68c35.84%200%2061.44%2025.6%2061.44%2056.32z%20m-5.12%20358.4c0%2030.72-25.6%2056.32-56.32%2056.32h-460.8c-30.72%200-56.32-25.6-56.32-56.32%200-30.72%2025.6-56.32%2056.32-56.32h455.68c35.84%200%2061.44%2025.6%2061.44%2056.32z%20m0%200'%20%3e%3c/path%3e%3c/svg%3e", On = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
981
+ __proto__: null,
982
+ default: Rn
983
+ }, Symbol.toStringTag, { value: "Module" })), zn = "data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1757902488735'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='3957'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='200'%20height='200'%3e%3cpath%20d='M520.416%20179.392c-12.384%200-22.4%204.672-22.4%2010.432l-0.032%20139.136c0%205.76%2010.016%2010.432%2022.368%2010.432%2012.352%200%2022.368-4.672%2022.368-10.432l0.064-139.136c0-5.76-10.016-10.432-22.4-10.432M520.32%20623.04c-12.352%200-22.368%204.64-22.368%2010.4l-0.032%20139.168c0%205.76%2010.016%2010.432%2022.368%2010.432%2012.352%200%2022.368-4.672%2022.368-10.432l0.064-139.168c0-5.76-10.016-10.4-22.4-10.4M800.256%20458.72l-139.168-0.064c-5.76%200-10.432%2010.016-10.432%2022.4%200%2012.352%204.672%2022.368%2010.432%2022.368l139.168%200.032c5.76%200%2010.4-10.016%2010.4-22.368%200-12.352-4.64-22.368-10.4-22.4zM352.256%20458.72l-139.168-0.064c-5.76%200-10.432%2010.016-10.432%2022.4%200%2012.352%204.672%2022.368%2010.432%2022.368l139.168%200.032c5.76%200%2010.4-10.016%2010.4-22.368%200-12.352-4.64-22.368-10.4-22.4M801.568%20748.672l-72.544-72.544%2073.792-23.2a4.416%204.416%200%200%200%200.096-8.384l-183.136-62.4a4.416%204.416%200%200%200-5.6%205.568l62.464%20183.168a4.416%204.416%200%200%200%208.352-0.064l23.36-73.6%2072.32%2072.32a14.752%2014.752%200%200%200%2020.896-20.864M510.688%20382.112c49.952%200%2092.8%2040.832%2092.8%2092.8%200%2051.968-42.848%2092.8-92.8%2092.8-49.984%200-92.8-40.832-92.8-92.8%200-51.968%2042.816-92.8%2092.8-92.8z'%20p-id='3958'%3e%3c/path%3e%3c/svg%3e", Bn = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
984
+ __proto__: null,
985
+ default: zn
986
+ }, Symbol.toStringTag, { value: "Module" })), Fn = "data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='10587'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20fill='%23555'%20width='16'%20height='16'%3e%3cpath%20d='M64.21%20703.88h888.34M64.21%20667.88h888.34v72H64.21z'%3e%3c/path%3e%3cpath%20d='M509.58%20102.72v566.13M473.58%20102.72h72v566.14h-72z'%3e%3c/path%3e%3c/svg%3e", Kn = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
987
+ __proto__: null,
988
+ default: Fn
989
+ }, Symbol.toStringTag, { value: "Module" })), Tn = "data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1757902547951'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='5129'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='200'%20height='200'%3e%3cpath%20d='M59.355%2091.776v867.881h867.881V91.776H59.356zM897.31%20929.73H89.282V121.703h808.027V929.73z'%20fill=''%20p-id='5130'%3e%3c/path%3e%3cpath%20d='M833.964%20185.048H152.627v681.337h681.337V185.048z%20m-355.632%20651.41H182.554V532.2h295.778v304.257z%20m0-334.184H182.554V214.975h295.778v287.299z%20m325.705%20334.184H508.259V532.2h295.778v304.257z%20m0-334.184H508.259V214.975h295.778v287.299z'%20fill=''%20p-id='5131'%3e%3c/path%3e%3c/svg%3e", Vn = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
1300
990
  __proto__: null,
1301
- default: window$1
991
+ default: Tn
1302
992
  }, Symbol.toStringTag, { value: "Module" }));
1303
- class RenderManager extends Component {
993
+ class An extends ye {
1304
994
  static name = "RenderManager";
1305
- container = new THREE.Group();
995
+ container = new m.Group();
1306
996
  lines = [];
1307
- pointVirtualGrid = new PointVirtualGrid();
1308
- quadtree = new Quadtree(new Box2());
997
+ pointVirtualGrid = new Oe();
998
+ quadtree = new ze(new We());
1309
999
  actionHistory = /* @__PURE__ */ new Set();
1310
1000
  onAddFromParent() {
1311
- const dxfLineModel = this.dxfLineModel;
1312
- this.editor.container.add(this.container);
1313
- this.editor.container.add(dxfLineModel.dxfModelGroup);
1314
- dxfLineModel.dxfLineModel.material = new THREE.LineBasicMaterial({
1315
- transparent: true,
1001
+ const e = this.dxfLineModel;
1002
+ this.editor.container.add(this.container), this.editor.container.add(e.dxfModelGroup), e.dxfLineModel.material = new m.LineBasicMaterial({
1003
+ transparent: !0,
1316
1004
  opacity: 0.5,
1317
1005
  color: 16777215
1318
- });
1319
- dxfLineModel.addEventListener("modelUpdate", (e) => {
1320
- e.model.position.z = 0;
1321
- dxfLineModel.dxfDoorsLineModel.visible = false;
1322
- });
1323
- this.variable.addEventListener("dxfVisible", (e) => dxfLineModel.dxfModelGroup.visible = e.value);
1324
- this.dxf.addEventListener("createGroup", () => this.reset());
1325
- this.reset();
1006
+ }), e.addEventListener("modelUpdate", (t) => {
1007
+ t.model.position.z = 0, e.dxfDoorsLineModel.visible = !1;
1008
+ }), this.variable.addEventListener("dxfVisible", (t) => e.dxfModelGroup.visible = t.value), this.dxf.addEventListener("createGroup", () => this.reset()), this.reset();
1326
1009
  }
1327
1010
  updatedMode = null;
1328
1011
  /** 重新设置数据
@@ -1331,183 +1014,145 @@ class RenderManager extends Component {
1331
1014
  if (this.updatedMode === "self") {
1332
1015
  this.updatedMode = null;
1333
1016
  return;
1334
- } else {
1017
+ } else
1335
1018
  this.updatedMode = "dxf";
1336
- }
1337
- this.pointVirtualGrid = new PointVirtualGrid();
1338
- const box = this.dxf.box.clone().expansion(Math.max(this.dxf.box.width, this.dxf.box.height) * 2);
1339
- if (box.width === 0 || box.height === 0) box.set(-200, -200, 200, 200);
1340
- this.quadtree = new Quadtree(box);
1341
- this.lines.length = 0;
1342
- this.dxf.lineSegments.forEach((line2) => {
1343
- if (line2.userData.isDoor && !line2.userData.doorDirectConnection) return;
1344
- this.addLine(line2.clone());
1345
- });
1346
- this.dxf.doorLineSegment.forEach((line2) => {
1347
- const door2 = line2.clone();
1348
- door2.userData = {
1349
- isDoor: true,
1350
- doorDirectConnection: true
1351
- };
1352
- this.addLine(door2);
1353
- });
1354
- this.draw();
1019
+ this.pointVirtualGrid = new Oe();
1020
+ const e = this.dxf.box.clone().expansion(Math.max(this.dxf.box.width, this.dxf.box.height) * 2);
1021
+ (e.width === 0 || e.height === 0) && e.set(-200, -200, 200, 200), this.quadtree = new ze(e), this.lines.length = 0, this.dxf.lineSegments.forEach((t) => {
1022
+ t.userData.isDoor && !t.userData.doorDirectConnection || this.addLine(t.clone());
1023
+ }), this.dxf.doorLineSegment.forEach((t) => {
1024
+ const n = t.clone();
1025
+ n.userData = {
1026
+ isDoor: !0,
1027
+ doorDirectConnection: !0
1028
+ }, this.addLine(n);
1029
+ }), this.draw();
1355
1030
  }
1356
1031
  /** 添加线段
1357
1032
  * @param line
1358
1033
  */
1359
- addLine(line2) {
1360
- if (!line2.userData) line2.userData = {};
1361
- this.lines.push(line2);
1362
- this.pointVirtualGrid.insert(line2.start, line2);
1363
- this.pointVirtualGrid.insert(line2.end, line2);
1364
- const quadtreeNode = {
1365
- line: line2,
1034
+ addLine(e) {
1035
+ e.userData || (e.userData = {}), this.lines.push(e), this.pointVirtualGrid.insert(e.start, e), this.pointVirtualGrid.insert(e.end, e);
1036
+ const t = {
1037
+ line: e,
1366
1038
  userData: void 0
1367
1039
  };
1368
- line2.userData.quadtreeNode = quadtreeNode;
1369
- this.quadtree.insert(quadtreeNode);
1370
- this.actionHistory.add({
1040
+ e.userData.quadtreeNode = t, this.quadtree.insert(t), this.actionHistory.add({
1371
1041
  type: "addLine",
1372
- data: [line2]
1042
+ data: [e]
1373
1043
  });
1374
1044
  }
1375
1045
  /**
1376
1046
  * 批量添加
1377
1047
  * @param lines
1378
1048
  */
1379
- addLines(lines) {
1380
- for (let i = 0; i < lines.length; i++) {
1381
- const line2 = lines[i];
1382
- this.lines.push(line2);
1383
- this.pointVirtualGrid.insert(line2.start, line2);
1384
- this.pointVirtualGrid.insert(line2.end, line2);
1385
- const quadtreeNode = {
1386
- line: line2,
1049
+ addLines(e) {
1050
+ for (let t = 0; t < e.length; t++) {
1051
+ const n = e[t];
1052
+ this.lines.push(n), this.pointVirtualGrid.insert(n.start, n), this.pointVirtualGrid.insert(n.end, n);
1053
+ const o = {
1054
+ line: n,
1387
1055
  userData: void 0
1388
1056
  };
1389
- line2.userData.quadtreeNode = quadtreeNode;
1390
- this.quadtree.insert(quadtreeNode);
1057
+ n.userData.quadtreeNode = o, this.quadtree.insert(o);
1391
1058
  }
1392
1059
  this.actionHistory.add({
1393
1060
  type: "addLine",
1394
- data: [...lines]
1061
+ data: [...e]
1395
1062
  });
1396
1063
  }
1397
1064
  /** 移除线段
1398
1065
  * @param line
1399
1066
  */
1400
- removeLine(line2) {
1401
- line2.userData.quadtreeNode && this.quadtree.remove(line2.userData.quadtreeNode);
1402
- this.pointVirtualGrid.remove(line2.start);
1403
- this.pointVirtualGrid.remove(line2.end);
1404
- const index = this.lines.indexOf(line2);
1405
- this.lines.splice(index, 1);
1406
- this.draw();
1407
- this.actionHistory.add({
1067
+ removeLine(e) {
1068
+ e.userData.quadtreeNode && this.quadtree.remove(e.userData.quadtreeNode), this.pointVirtualGrid.remove(e.start), this.pointVirtualGrid.remove(e.end);
1069
+ const t = this.lines.indexOf(e);
1070
+ this.lines.splice(t, 1), this.draw(), this.actionHistory.add({
1408
1071
  type: "removeLine",
1409
- data: [line2]
1072
+ data: [e]
1410
1073
  });
1411
1074
  }
1412
1075
  /**
1413
1076
  * 绘制
1414
1077
  */
1415
- draw(synchronize = true) {
1078
+ draw(e = !0) {
1416
1079
  this.container.clear();
1417
- const position = [], doorPosition = [], windowPosition = [];
1418
- this.lines.forEach((line2) => {
1419
- line2.points.forEach((p) => {
1420
- if (line2.userData.isDoor) doorPosition.push(p.x, p.y, 0);
1421
- else position.push(p.x, p.y, 0);
1080
+ const t = [], n = [], o = [];
1081
+ this.lines.forEach((s) => {
1082
+ s.points.forEach((a) => {
1083
+ s.userData.isDoor ? n.push(a.x, a.y, 0) : t.push(a.x, a.y, 0);
1084
+ }), s.userData.isWindow && s.userData.drawDoorData && s.userData.drawDoorData.forEach(({ width: a, p: i }) => {
1085
+ const d = A.from(i), l = s.direction(), c = d.clone().add(l.clone().multiplyScalar(a * 0.5)), h = d.clone().add(l.clone().multiplyScalar(-a * 0.5));
1086
+ o.push(c.x, c.y, 1e-3), o.push(h.x, h.y, 1e-3);
1422
1087
  });
1423
- if (line2.userData.isWindow && line2.userData.drawDoorData) {
1424
- line2.userData.drawDoorData.forEach(({ width, p }) => {
1425
- const center = Point.from(p), direction = line2.direction(), start = center.clone().add(direction.clone().multiplyScalar(width * 0.5)), end = center.clone().add(direction.clone().multiplyScalar(-width * 0.5));
1426
- windowPosition.push(start.x, start.y, 1e-3);
1427
- windowPosition.push(end.x, end.y, 1e-3);
1428
- });
1429
- }
1430
- });
1431
- position.length && this.renderer.createLineSegments({
1432
- position
1433
- }, position.length / 3, {
1088
+ }), t.length && this.renderer.createLineSegments({
1089
+ position: t
1090
+ }, t.length / 3, {
1434
1091
  color: 5745151
1435
- }, this.container);
1436
- doorPosition.length && this.renderer.createLineSegments({
1437
- position: doorPosition
1438
- }, doorPosition.length / 3, {
1092
+ }, this.container), n.length && this.renderer.createLineSegments({
1093
+ position: n
1094
+ }, n.length / 3, {
1439
1095
  color: 16776960
1440
- }, this.container);
1441
- windowPosition.length && this.renderer.createLineSegments({
1442
- position: windowPosition
1443
- }, windowPosition.length / 3, {
1096
+ }, this.container), o.length && this.renderer.createLineSegments({
1097
+ position: o
1098
+ }, o.length / 3, {
1444
1099
  color: 16711935
1445
- }, this.container);
1446
- synchronize && this.synchronizeDxf();
1100
+ }, this.container), e && this.synchronizeDxf();
1447
1101
  }
1448
1102
  /** 获取鼠标当前点, 吸附后的点
1449
1103
  * @param point
1450
1104
  * @returns
1451
1105
  */
1452
- adsorption(radius = 0.1, pointVirtualGrid = this.pointVirtualGrid, quadtree = this.quadtree) {
1453
- const editor = this.parent?.findComponentByName("Editor"), point = Point.from(editor.pointerPosition);
1454
- const p = pointVirtualGrid.queryCircle(point, radius).sort((a, b) => a.point.distance(point) - b.point.distance(point));
1455
- if (p.length) return {
1456
- point: new THREE.Vector3(p[0].point.x, p[0].point.y, 0),
1457
- find: true,
1106
+ adsorption(e = 0.1, t = this.pointVirtualGrid, n = this.quadtree) {
1107
+ const o = this.parent?.findComponentByName("Editor"), s = A.from(o.pointerPosition), a = t.queryCircle(s, e).sort((d, l) => d.point.distance(s) - l.point.distance(s));
1108
+ if (a.length) return {
1109
+ point: new m.Vector3(a[0].point.x, a[0].point.y, 0),
1110
+ find: !0,
1458
1111
  mode: "point",
1459
- line: p[0].userData
1112
+ line: a[0].userData
1460
1113
  };
1461
- let result = quadtree.queryCircle(point, radius);
1462
- if (result.length) {
1463
- let projectPoints = result.map((res) => res.line.projectPoint(point));
1464
- projectPoints.sort((a, b) => {
1465
- if (a && b) return a.distance(point) - b.distance(point);
1466
- return 0;
1467
- });
1468
- result = result.filter((_, i) => !!projectPoints[i]);
1469
- projectPoints = projectPoints.filter((_, i) => !!projectPoints[i]);
1470
- return {
1471
- point: new THREE.Vector3(projectPoints[0].x, projectPoints[0].y, 0),
1472
- find: true,
1114
+ let i = n.queryCircle(s, e);
1115
+ if (i.length) {
1116
+ let d = i.map((l) => l.line.projectPoint(s));
1117
+ return d.sort((l, c) => l && c ? l.distance(s) - c.distance(s) : 0), i = i.filter((l, c) => !!d[c]), d = d.filter((l, c) => !!d[c]), {
1118
+ point: new m.Vector3(d[0].x, d[0].y, 0),
1119
+ find: !0,
1473
1120
  mode: "line",
1474
- line: result[0].line
1121
+ line: i[0].line
1475
1122
  };
1476
1123
  }
1477
1124
  return {
1478
- point: new THREE.Vector3(editor.pointerPosition.x, editor.pointerPosition.y, 0),
1479
- find: false
1125
+ point: new m.Vector3(o.pointerPosition.x, o.pointerPosition.y, 0),
1126
+ find: !1
1480
1127
  };
1481
1128
  }
1482
1129
  /** 创建几何体
1483
1130
  * @param rectangle
1484
1131
  */
1485
- createGeometry(map, count) {
1486
- const geometry = new THREE.BufferGeometry();
1487
- Object.keys(map).forEach((k) => {
1488
- geometry.setAttribute("position", new THREE.BufferAttribute(new Float32Array(map[k]), map[k].length / count));
1489
- });
1490
- return geometry;
1132
+ createGeometry(e, t) {
1133
+ const n = new m.BufferGeometry();
1134
+ return Object.keys(e).forEach((o) => {
1135
+ n.setAttribute("position", new m.BufferAttribute(new Float32Array(e[o]), e[o].length / t));
1136
+ }), n;
1491
1137
  }
1492
1138
  /**
1493
1139
  * 转为json
1494
1140
  */
1495
1141
  toJson() {
1496
- return this.lines.map((line2) => {
1497
- const userData = line2.userData;
1498
- const drawDoorData = userData.drawDoorData;
1499
- const insetionArr = this.quadtree.queryLineSegment(line2).filter((r) => r.line !== line2 && !r.userData?.isDoor).map((r) => ({ index: this.lines.indexOf(r.line) }));
1142
+ return this.lines.map((e) => {
1143
+ const t = e.userData, n = t.drawDoorData, o = this.quadtree.queryLineSegment(e).filter((s) => s.line !== e && !s.userData?.isDoor).map((s) => ({ index: this.lines.indexOf(s.line) }));
1500
1144
  return {
1501
- start: line2.start.toJson(),
1502
- end: line2.end.toJson(),
1503
- insetionArr,
1504
- isDoor: userData.isDoor,
1505
- doorDirectConnection: userData.isDoor,
1506
- isWindow: userData.isWindow,
1507
- drawDoorData: drawDoorData && drawDoorData.map((w) => ({
1508
- p: { x: w.p.x, y: w.p.y, z: w.p.z },
1509
- width: w.width,
1510
- full: w.full
1145
+ start: e.start.toJson(this.dxf.originalZAverage),
1146
+ end: e.end.toJson(this.dxf.originalZAverage),
1147
+ insetionArr: o,
1148
+ isDoor: t.isDoor,
1149
+ doorDirectConnection: t.isDoor,
1150
+ length: e.length(),
1151
+ isWindow: t.isWindow,
1152
+ drawDoorData: n && n.map((s) => ({
1153
+ p: { x: s.p.x, y: s.p.y, z: s.p.z },
1154
+ width: s.width,
1155
+ full: s.full
1511
1156
  }))
1512
1157
  };
1513
1158
  });
@@ -1521,13 +1166,11 @@ class RenderManager extends Component {
1521
1166
  this.updatedMode = null;
1522
1167
  return;
1523
1168
  }
1524
- if (this._timer) clearTimeout(this._timer);
1525
- setTimeout(() => {
1169
+ this._timer && clearTimeout(this._timer), this._timer = setTimeout(() => {
1526
1170
  this.updatedMode = "self";
1527
- const dxf = this.dxf;
1528
- const json = this.toJson();
1529
- dxf.set(json).then(() => {
1530
- dxf.lineOffset();
1171
+ const e = this.dxf, t = this.toJson();
1172
+ e.set(t).then(() => {
1173
+ e.lineOffset();
1531
1174
  });
1532
1175
  }, 10);
1533
1176
  }
@@ -1550,625 +1193,962 @@ class RenderManager extends Component {
1550
1193
  return this.parent?.findComponentByName("DxfLineModel");
1551
1194
  }
1552
1195
  }
1553
- class DrawDoorLine extends CommandFlowComponent {
1196
+ class jn extends T {
1554
1197
  static name = "DrawDoorLine";
1555
- container = new THREE.Group();
1198
+ container = new m.Group();
1556
1199
  interruptKeys = ["escape"];
1557
1200
  shortcutKeys = ["control", "m"];
1558
1201
  commandName = "draw-door-line";
1559
- onAddFromParent(parent) {
1560
- super.onAddFromParent(parent);
1561
- const editor = parent.findComponentByName("Editor"), eventInput = editor.eventInput, commandManager = editor.commandManager;
1202
+ onAddFromParent(e) {
1203
+ super.onAddFromParent(e);
1204
+ const t = e.findComponentByName("Editor"), n = t.eventInput, o = t.commandManager;
1562
1205
  this.editor.container.add(this.container);
1563
- const commandFlow = this.commandManager.addCommandFlow("draw-door-line").add(this.createInterrupt()).add(this.createCursor("no-drop")).add(this.selectPoint.bind(this));
1564
- eventInput.addKeyCombination(this.commandName, this.shortcutKeys);
1565
- commandFlow.addEventListener("finally", this.createFinally());
1566
- commandFlow.addEventListener("completed", (e) => this.completed(e.data));
1567
- eventInput.addCancelDefaultBehavior(() => eventInput.isOnlyKeyDowns(this.shortcutKeys));
1568
- eventInput.addEventListener("codeChange", async () => {
1569
- eventInput.isKeyCombination(this.commandName) && await commandManager.start(this.commandName);
1206
+ const s = this.commandManager.addCommandFlow("draw-door-line").add(this.createInterrupt()).add(this.createCursor("no-drop")).add(this.selectPoint.bind(this)).add(this.end.bind(this)).addRollback(this.rollback.bind(this)).addRevokeRollback(this.revokeRollback.bind(this));
1207
+ n.addKeyCombination(this.commandName, this.shortcutKeys), s.addEventListener("finally", this.createFinally()), s.addEventListener("completed", (a) => this.completed(a.data)), n.addCancelDefaultBehavior(() => n.isOnlyKeyDowns(this.shortcutKeys)), n.addEventListener("codeChange", async () => {
1208
+ n.isKeyCombination(this.commandName) && await o.start(this.commandName);
1570
1209
  });
1571
1210
  }
1572
1211
  /** 选择点
1573
1212
  * @param next
1574
1213
  */
1575
- selectPoint(next) {
1576
- let editor = this.parent?.findComponentByName("Editor"), start = null, circle = new THREE.Mesh(new THREE.SphereGeometry(0.05), new THREE.MeshBasicMaterial({ color: 65280 })), line2 = new Lines([], 16711935), auxiliaryLine = new Lines([
1577
- new THREE.Vector3(-1e4, 0, 0),
1578
- new THREE.Vector3(1e4, 0, 0),
1579
- new THREE.Vector3(0, -1e4, 0),
1580
- new THREE.Vector3(0, 1e4, 0)
1214
+ selectPoint(e) {
1215
+ let t = this.parent?.findComponentByName("Editor"), n = null, o = new m.Mesh(new m.SphereGeometry(0.05), new m.MeshBasicMaterial({ color: 65280 })), s = new he([], 16711935), a = new he([
1216
+ new m.Vector3(-1e4, 0, 0),
1217
+ new m.Vector3(1e4, 0, 0),
1218
+ new m.Vector3(0, -1e4, 0),
1219
+ new m.Vector3(0, 1e4, 0)
1581
1220
  ], 16711935);
1582
- auxiliaryLine.material = new THREE.LineDashedMaterial({
1221
+ a.material = new m.LineDashedMaterial({
1583
1222
  color: 4235007,
1584
1223
  dashSize: 0.1,
1585
1224
  gapSize: 0.1,
1586
1225
  linewidth: 0.1
1587
- });
1588
- this.container.add(line2);
1589
- let currentPoint = null;
1226
+ }), this.container.add(s);
1227
+ let i = null;
1590
1228
  this.addEventRecord(
1591
1229
  "clear",
1592
- editor.addEventListener("pointerPositionChange", () => {
1593
- const { point, find } = editor.renderManager.adsorption(0.05);
1594
- start && line2.setPoint(start, point);
1595
- if (find) {
1596
- circle.position.set(point.x, point.y, 0);
1597
- this.container.add(circle);
1598
- this.domElement.style.cursor = "none";
1599
- currentPoint = point.clone();
1600
- } else {
1601
- currentPoint = null;
1602
- circle.removeFromParent();
1603
- this.domElement.style.cursor = "no-drop";
1604
- }
1230
+ t.addEventListener("pointerPositionChange", () => {
1231
+ const { point: d, find: l } = t.renderManager.adsorption(0.05);
1232
+ n && s.setPoint(n, d), l ? (o.position.set(d.x, d.y, 0), this.container.add(o), this.domElement.style.cursor = "none", i = d.clone()) : (i = null, o.removeFromParent(), this.domElement.style.cursor = "no-drop");
1605
1233
  }),
1606
- editor.eventInput.addEventListener("codeChange", async () => {
1607
- if (editor.eventInput.isKeyDown("mouse_0") && currentPoint) {
1608
- if (!start) {
1609
- start = currentPoint.clone();
1234
+ t.eventInput.addEventListener("codeChange", async () => {
1235
+ if (t.eventInput.isKeyDown("mouse_0") && i) {
1236
+ if (!n) {
1237
+ n = i.clone();
1610
1238
  return;
1611
1239
  }
1612
- next([start.clone(), currentPoint.clone()]);
1240
+ e([n.clone(), i.clone()]);
1613
1241
  }
1614
1242
  }),
1615
1243
  function() {
1616
- line2.removeFromParent();
1617
- circle.removeFromParent();
1618
- auxiliaryLine.removeFromParent();
1244
+ s.removeFromParent(), o.removeFromParent(), a.removeFromParent();
1619
1245
  }
1620
1246
  );
1621
1247
  }
1622
- /** 执行完成
1248
+ /**
1249
+ * 结束处理
1250
+ * @param next
1251
+ * @param points
1623
1252
  */
1624
- completed(points) {
1625
- const editor = this.editor, lines = [];
1626
- for (let i = 0; i < points.length; i += 2) {
1627
- const line2 = new LineSegment(Point.from(points[i]), Point.from(points[i + 1]));
1628
- line2.userData.isDoor = true;
1629
- line2.userData.doorDirectConnection = true;
1630
- lines.push(line2);
1253
+ end(e, t) {
1254
+ const n = [];
1255
+ for (let o = 0; o < t.length; o += 2) {
1256
+ const s = new ne(A.from(t[o]), A.from(t[o + 1]));
1257
+ s.userData.isDoor = !0, s.userData.doorDirectConnection = !0, n.push(s);
1631
1258
  }
1632
- editor.renderManager.addLines(lines);
1633
- editor.renderManager.draw();
1259
+ e(n);
1260
+ }
1261
+ /** 执行完成
1262
+ */
1263
+ completed(e) {
1264
+ this.renderManager.addLines(e), this.renderManager.draw();
1265
+ }
1266
+ /** 回滚操作
1267
+ * @param data
1268
+ */
1269
+ rollback(e) {
1270
+ return e.forEach((t) => this.renderManager.removeLine(t)), this.renderManager.draw(), e;
1271
+ }
1272
+ /** 撤回回滚
1273
+ * @param lines
1274
+ * @returns
1275
+ */
1276
+ revokeRollback(e) {
1277
+ return this.completed(e), e;
1634
1278
  }
1635
1279
  }
1636
- class DrawWindow extends CommandFlowComponent {
1280
+ class Gn extends T {
1637
1281
  static name = "DrawWindow";
1638
- container = new THREE.Group();
1282
+ container = new m.Group();
1639
1283
  interruptKeys = ["escape"];
1640
1284
  shortcutKeys = ["control", "q"];
1641
1285
  commandName = "draw-window-line";
1642
- onAddFromParent(parent) {
1643
- super.onAddFromParent(parent);
1644
- this.editor.container.add(this.container);
1645
- const commandFlow = this.commandManager.addCommandFlow(this.commandName).add(this.createInterrupt()).add(this.createCursor("no-drop")).add(this.selectPointStart.bind(this)).add(this.selectPointEnd.bind(this));
1646
- commandFlow.addEventListener("finally", this.createFinally(["selectPointStart"]));
1647
- commandFlow.addEventListener("completed", (e) => this.completed(e.data));
1648
- this.eventInput.addKeyCombination(this.commandName, this.shortcutKeys);
1649
- this.eventInput.addEventListener("codeChange", async () => this.eventInput.isKeyCombination(this.commandName) && await this.commandManager.start(this.commandName));
1650
- this.eventInput.addCancelDefaultBehavior(() => this.eventInput.isOnlyKeyDowns(this.shortcutKeys));
1286
+ onAddFromParent(e) {
1287
+ super.onAddFromParent(e), this.editor.container.add(this.container);
1288
+ const t = this.commandManager.addCommandFlow(this.commandName).add(this.createInterrupt()).add(this.createCursor("no-drop")).add(this.selectPointStart.bind(this)).add(this.selectPointEnd.bind(this)).add(this.end.bind(this)).addRollback(this.rollback.bind(this)).addRevokeRollback(this.revokeRollback.bind(this));
1289
+ t.addEventListener("finally", this.createFinally(["selectPointStart"])), t.addEventListener("completed", (n) => this.completed(n.data)), this.eventInput.addKeyCombination(this.commandName, this.shortcutKeys), this.eventInput.addEventListener("codeChange", async () => this.eventInput.isKeyCombination(this.commandName) && await this.commandManager.start(this.commandName)), this.eventInput.addCancelDefaultBehavior(() => this.eventInput.isOnlyKeyDowns(this.shortcutKeys));
1651
1290
  }
1652
1291
  /** 选择开始点
1653
1292
  * @param next
1654
1293
  */
1655
- selectPointStart(next) {
1656
- let currentPoint = null, circle = new THREE.Mesh(new THREE.SphereGeometry(0.05), new THREE.MeshBasicMaterial({ color: 16711935 })), currentLine = null;
1294
+ selectPointStart(e) {
1295
+ let t = null, n = new m.Mesh(new m.SphereGeometry(0.05), new m.MeshBasicMaterial({ color: 16711935 })), o = null;
1657
1296
  this.addEventRecord("selectPointStart").add(this.editor.addEventListener("pointerPositionChange", () => {
1658
- const { point, line: line2, find } = this.editor.renderManager.adsorption();
1659
- if (find) {
1660
- this.domElement.style.cursor = "none";
1661
- circle.position.copy(point);
1662
- currentLine = line2;
1663
- currentPoint = point.clone();
1664
- this.container.add(circle);
1665
- } else {
1666
- this.domElement.style.cursor = "no-drop";
1667
- currentPoint = null;
1668
- circle.removeFromParent();
1669
- }
1297
+ const { point: s, line: a, find: i } = this.editor.renderManager.adsorption();
1298
+ i ? (this.domElement.style.cursor = "none", n.position.copy(s), o = a, t = s.clone(), this.container.add(n)) : (this.domElement.style.cursor = "no-drop", t = null, n.removeFromParent());
1670
1299
  })).add(this.eventInput.addEventListener("codeChange", () => {
1671
- if (this.eventInput.isKeyDown("mouse_0") && currentPoint) {
1672
- this.canceEventRecord("selectPointStart");
1673
- next({ point: currentPoint, line: currentLine });
1674
- }
1675
- }));
1676
- this.addEventRecord("clear").add(() => circle.removeFromParent());
1300
+ this.eventInput.isKeyDown("mouse_0") && t && (this.canceEventRecord("selectPointStart"), e({ point: t, line: o }));
1301
+ })), this.addEventRecord("clear").add(() => n.removeFromParent());
1677
1302
  }
1678
1303
  /** 选择结束点
1679
1304
  * @param next
1680
1305
  */
1681
- selectPointEnd(next, { point, line: line2 }) {
1682
- let currentPoint = null, circle = new THREE.Mesh(new THREE.SphereGeometry(0.05), new THREE.MeshBasicMaterial({ color: 16711935 }));
1683
- this.addEventRecord("clear").add(() => circle.removeFromParent()).add(this.editor.addEventListener("pointerPositionChange", () => {
1684
- const { point: point2, find, line: l } = this.editor.renderManager.adsorption();
1685
- if (find && l === line2) {
1686
- this.domElement.style.cursor = "none";
1687
- circle.position.copy(point2);
1688
- currentPoint = point2.clone();
1689
- this.container.add(circle);
1690
- } else {
1691
- this.domElement.style.cursor = "no-drop";
1692
- currentPoint = null;
1693
- circle.removeFromParent();
1694
- }
1306
+ selectPointEnd(e, { point: t, line: n }) {
1307
+ let o = null, s = new m.Mesh(new m.SphereGeometry(0.05), new m.MeshBasicMaterial({ color: 16711935 }));
1308
+ this.addEventRecord("clear").add(() => s.removeFromParent()).add(this.editor.addEventListener("pointerPositionChange", () => {
1309
+ const { point: a, find: i, line: d } = this.editor.renderManager.adsorption();
1310
+ i && d === n ? (this.domElement.style.cursor = "none", s.position.copy(a), o = a.clone(), this.container.add(s)) : (this.domElement.style.cursor = "no-drop", o = null, s.removeFromParent());
1695
1311
  })).add(this.eventInput.addEventListener("codeChange", () => {
1696
- if (this.eventInput.isKeyDown("mouse_0") && currentPoint) next({ line: line2, start: point, end: currentPoint });
1312
+ this.eventInput.isKeyDown("mouse_0") && o && e({ line: n, start: t, end: o });
1697
1313
  }));
1698
1314
  }
1315
+ /**
1316
+ * 结束处理
1317
+ * @param next
1318
+ * @param points
1319
+ */
1320
+ end(e, { start: t, end: n, line: o }) {
1321
+ const s = new ne(A.from(t), A.from(n)), a = s.center, i = s.length(), d = {
1322
+ p: new m.Vector3(a.x, a.y, 0),
1323
+ width: i,
1324
+ full: Math.abs(i - o.length()) < 0.01
1325
+ };
1326
+ e({ line: o, doorDataItem: d });
1327
+ }
1699
1328
  /** 执行完成
1700
1329
  */
1701
- completed(data) {
1702
- const start = data.start, end = data.end, line2 = data.line, win = new LineSegment(Point.from(start), Point.from(end)), center = win.center, len = win.length();
1703
- line2.userData.isWindow = true;
1704
- if (!line2.userData.drawDoorData) line2.userData.drawDoorData = [];
1705
- line2.userData.drawDoorData.push({
1706
- p: new THREE.Vector3(center.x, center.y, 0),
1707
- width: len,
1708
- full: Math.abs(len - line2.length()) < 0.01
1709
- });
1710
- this.renderManager.draw();
1330
+ completed({ doorDataItem: e, line: t }) {
1331
+ t.userData.isWindow = !0, t.userData.drawDoorData || (t.userData.drawDoorData = []), t.userData.drawDoorData.push(e), this.renderManager.draw();
1332
+ }
1333
+ /** 回滚操作
1334
+ * @param data
1335
+ */
1336
+ rollback(e) {
1337
+ const { doorDataItem: t, line: n } = e;
1338
+ if (n.userData.drawDoorData) {
1339
+ const o = n.userData.drawDoorData.indexOf(t);
1340
+ o !== -1 && (n.userData.drawDoorData.splice(o, 1), n.userData.drawDoorData.length === 0 && (delete n.userData.drawDoorData, delete n.userData.isWindow), this.renderManager.draw());
1341
+ }
1342
+ return e;
1343
+ }
1344
+ /** 撤回回滚
1345
+ * @param data
1346
+ * @returns
1347
+ */
1348
+ revokeRollback(e) {
1349
+ return this.completed(e), e;
1350
+ }
1351
+ }
1352
+ class ee extends T {
1353
+ static name = "VerticalCorrection";
1354
+ container = new m.Group();
1355
+ shortcutKeys = ["control", "c"];
1356
+ shortcutKeys2 = ["control", "shift", "c"];
1357
+ static commandName = "verticalCorrection";
1358
+ recursion = !1;
1359
+ onAddFromParent(e) {
1360
+ super.onAddFromParent(e), this.editor.container.add(this.container), this.container.position.z = 1e-3;
1361
+ const t = this.commandManager.addCommandFlow(ee.commandName).add(this.createInterrupt()).add(this.constraint.bind(this)).add(this.verticalCorrection.bind(this)).addRollback(this.rollback.bind(this)).addRevokeRollback(this.revokeRollback.bind(this));
1362
+ t.addEventListener("finally", this.createFinally()), t.addEventListener("completed", (n) => this.completed(n.data)), this.eventInput.addEventListener("codeChange", async () => {
1363
+ this.eventInput.isOnlyKeyDowns(this.shortcutKeys) ? (this.recursion = !1, this.commandManager.start(ee.commandName, [...this.default.selectLines])) : this.eventInput.isOnlyKeyDowns(this.shortcutKeys2) && (this.recursion = !0, this.commandManager.start(ee.commandName, [...this.default.selectLines]));
1364
+ }), this.eventInput.addCancelDefaultBehavior(() => this.eventInput.isOnlyKeyDowns(this.shortcutKeys) || this.eventInput.isOnlyKeyDowns(this.shortcutKeys2));
1365
+ }
1366
+ /**
1367
+ * 进入命令约束
1368
+ */
1369
+ constraint(e, t) {
1370
+ Array.isArray(t) ? t.length !== 1 ? (D({ message: "请选择一条线段", type: "warning" }), this.cancel()) : e(t) : (D({ message: "进入命令失败", type: "warning" }), this.cancel());
1371
+ }
1372
+ /**
1373
+ * 线段是否为结尾线段
1374
+ * @param line
1375
+ */
1376
+ lineIsPathEnd(e) {
1377
+ for (let t = 0; t < e.points.length; t++) {
1378
+ const n = e.points[t];
1379
+ if (this.renderManager.pointVirtualGrid.queryPoint(n).filter((s) => !s.point.equal(n)).length === 0) return !0;
1380
+ }
1381
+ return !1;
1382
+ }
1383
+ /**
1384
+ *
1385
+ * @param line0
1386
+ * @param line1
1387
+ */
1388
+ isTowLineSegmentConnect(e, t) {
1389
+ return !!(e.start.equal(t.start) || e.start.equal(t.end) || e.end.equal(t.start) || e.end.equal(t.end));
1390
+ }
1391
+ /**
1392
+ * 获取所有相同点的位置信息
1393
+ * @param point
1394
+ * @param point2
1395
+ */
1396
+ getSamePointAll(e, t) {
1397
+ return this.renderManager.pointVirtualGrid.queryPoint(e).map((o) => ({
1398
+ point: o.point,
1399
+ oldPoint: o.point.clone(),
1400
+ newPoint: t,
1401
+ line: o.userData
1402
+ }));
1403
+ }
1404
+ /** 修正
1405
+ * @param targettLine
1406
+ * @param vistedList
1407
+ */
1408
+ correction(e, t = [], n = /* @__PURE__ */ new Set()) {
1409
+ if (n.has(e)) return;
1410
+ n.add(e);
1411
+ const o = this.renderManager.quadtree.queryLineSegment(e).filter(({ line: a }) => !(a === e || a.userData.isDoor)).map((a) => a.line), s = e.direction();
1412
+ return o.forEach((a) => {
1413
+ if (n.has(a)) return !1;
1414
+ if (a.length() / e.length() > 1) return;
1415
+ const i = a.direction(), d = s.angleBetween(i, "angle"), l = Math.abs(90 - d);
1416
+ if (!(l > 20 || l < 1))
1417
+ if (this.isTowLineSegmentConnect(e, a)) {
1418
+ const c = e.start.equal(a.start) || e.start.equal(a.end) ? e.start : e.end, h = a.start.equal(e.start) || a.start.equal(e.end) ? a.end : a.start, w = new ne(
1419
+ h.clone().add(s.clone().multiplyScalar(1)),
1420
+ h.clone().add(s.clone().multiplyScalar(-1))
1421
+ ), g = w.projectPoint(c, !1);
1422
+ g && t.push(this.getSamePointAll(h, g));
1423
+ } else
1424
+ console.log("交点");
1425
+ }), this.recursion && o.forEach((a) => this.correction(a, t, n)), t;
1426
+ }
1427
+ /** 开始
1428
+ * @param next
1429
+ */
1430
+ verticalCorrection(e, t) {
1431
+ e(this.correction(t[0]));
1432
+ }
1433
+ /** 执行完成
1434
+ * @param data
1435
+ */
1436
+ completed(e) {
1437
+ e.forEach((t) => {
1438
+ t.forEach((n) => {
1439
+ const { line: o, newPoint: s, point: a } = n;
1440
+ a.copy(s), this.renderManager.removeLine(o), this.renderManager.addLine(o);
1441
+ });
1442
+ }), this.renderManager.draw();
1443
+ }
1444
+ /** 回滚操作
1445
+ * @param data
1446
+ */
1447
+ rollback(e) {
1448
+ return e.forEach((t) => {
1449
+ t.forEach((n) => {
1450
+ const { line: o, oldPoint: s, point: a } = n;
1451
+ a.copy(s), this.renderManager.removeLine(o), this.renderManager.addLine(o);
1452
+ });
1453
+ }), this.renderManager.draw(), e;
1454
+ }
1455
+ /** 撤回回滚
1456
+ * @param lines
1457
+ * @returns
1458
+ */
1459
+ revokeRollback(e) {
1460
+ return this.completed(e), e;
1461
+ }
1462
+ }
1463
+ class q extends T {
1464
+ static name = "MergeLine";
1465
+ shortcutKeys = ["control", "g"];
1466
+ static commandName = "merge-line";
1467
+ onAddFromParent(e) {
1468
+ super.onAddFromParent(e);
1469
+ const t = e.findComponentByType(ke), n = this.commandManager.addCommandFlow(q.commandName).add(this.createInterrupt()).add(this.constraint.bind(this)).add(this.mergeLine.bind(this)).addRollback(this.rollback.bind(this)).addRevokeRollback(this.revokeRollback.bind(this));
1470
+ n.addEventListener("finally", this.createFinally()), n.addEventListener("completed", (o) => this.completed(o.data)), this.eventInput.addKeyCombination(q.commandName, this.shortcutKeys), this.eventInput.addEventListener("codeChange", async () => {
1471
+ t?.selectLines.length === 2 && this.eventInput.isKeyCombination(q.commandName) && await this.commandManager.start(q.commandName, [...this.default.selectLines]);
1472
+ }), this.eventInput.addCancelDefaultBehavior(() => this.eventInput.isOnlyKeyDowns(this.shortcutKeys));
1473
+ }
1474
+ /**
1475
+ * 进入命令约束
1476
+ */
1477
+ constraint(e, t) {
1478
+ Array.isArray(t) ? t.length !== 2 ? (D({ message: "未执行线段合并,请选择两条线段", type: "warning" }), this.cancel()) : e(t) : (D({ message: "进入命令失败", type: "warning" }), this.cancel());
1479
+ }
1480
+ /** 开始
1481
+ * @param next
1482
+ * @todo 合并所有
1483
+ */
1484
+ mergeLine(e, t) {
1485
+ const n = t[0], o = t[1];
1486
+ for (let s = 0; s < n.points.length; s++) {
1487
+ const a = n.points[s];
1488
+ for (let i = 0; i < o.points.length; i++) {
1489
+ const d = o.points[i];
1490
+ if (a.equal(d)) {
1491
+ const l = n.points[(s + 1) % 2], c = o.points[(i + 1) % 2], h = new ne(l, c);
1492
+ return e({ line1: n, line2: o, newLine: h }), D({ message: "已合并", type: "success" });
1493
+ }
1494
+ }
1495
+ }
1496
+ D({ message: "合并失败,两条线未找到共用点", type: "warning" }), e();
1497
+ }
1498
+ /** 执行完成
1499
+ * @param data
1500
+ */
1501
+ completed(e) {
1502
+ this.renderManager.removeLine(e.line1), this.renderManager.removeLine(e.line2), this.renderManager.addLine(e.newLine), this.renderManager.draw();
1503
+ }
1504
+ /** 回滚操作
1505
+ * @param data
1506
+ */
1507
+ rollback(e) {
1508
+ return this.renderManager.addLines([e.line1, e.line2]), this.renderManager.removeLine(e.newLine), this.renderManager.draw(), e;
1509
+ }
1510
+ /** 撤回回滚
1511
+ * @param lines
1512
+ * @returns
1513
+ */
1514
+ revokeRollback(e) {
1515
+ return this.completed(e), e;
1516
+ }
1517
+ }
1518
+ class W extends T {
1519
+ static name = "DeleteSelectLine";
1520
+ shortcutKeys = ["Delete"];
1521
+ static commandName = "deleteSelectLine";
1522
+ onAddFromParent(e) {
1523
+ super.onAddFromParent(e), this.commandManager.addCommandFlow(W.commandName).add(this.createInterrupt()).add(this.constraint.bind(this)).add(this.delete.bind(this)).addRollback(this.rollback.bind(this)).addRevokeRollback(this.revokeRollback.bind(this)).addEventListener("finally", this.createFinally()), this.eventInput.addKeyCombination(W.commandName, this.shortcutKeys), this.eventInput.addEventListener("codeChange", async () => {
1524
+ this.eventInput.isKeyCombination(W.commandName) && await this.commandManager.start(W.commandName, [...this.default.selectLines]);
1525
+ }), this.eventInput.addCancelDefaultBehavior(() => this.eventInput.isOnlyKeyDowns(this.shortcutKeys));
1526
+ }
1527
+ /**
1528
+ * 进入命令约束
1529
+ */
1530
+ constraint(e, t) {
1531
+ Array.isArray(t) ? e(t) : (D({ message: "请选择线段", type: "warning" }), this.cancel());
1532
+ }
1533
+ /** 开始
1534
+ * @param next
1535
+ */
1536
+ delete(e, t) {
1537
+ t.forEach((n) => this.renderManager.removeLine(n)), D({ message: "删除成功", type: "success" }), e(t);
1538
+ }
1539
+ /** 回滚操作
1540
+ * @param data
1541
+ */
1542
+ rollback(e) {
1543
+ return this.renderManager.addLines(e), this.renderManager.draw(), e;
1544
+ }
1545
+ /** 撤回回滚
1546
+ * @param lines
1547
+ * @returns
1548
+ */
1549
+ revokeRollback(e) {
1550
+ return e.forEach((t) => this.renderManager.removeLine(t)), e;
1551
+ }
1552
+ }
1553
+ class U extends T {
1554
+ static name = "ConnectionLine";
1555
+ shortcutKeys = ["Shift", "L"];
1556
+ static commandName = "connectionLine";
1557
+ onAddFromParent(e) {
1558
+ super.onAddFromParent(e);
1559
+ const t = this.commandManager.addCommandFlow(U.commandName).add(this.createInterrupt()).add(this.constraint.bind(this)).add(this.connection.bind(this)).addRollback(this.rollback.bind(this)).addRevokeRollback(this.revokeRollback.bind(this));
1560
+ t.addEventListener("finally", this.createFinally()), t.addEventListener("completed", (n) => this.completed(n.data)), this.eventInput.addKeyCombination(U.commandName, this.shortcutKeys), this.eventInput.addEventListener("codeChange", async () => {
1561
+ this.eventInput.isKeyCombination(U.commandName) && await this.commandManager.start(U.commandName, [...this.default.selectLines]);
1562
+ }), this.eventInput.addCancelDefaultBehavior(() => this.eventInput.isOnlyKeyDowns(this.shortcutKeys));
1563
+ }
1564
+ /**
1565
+ * 进入命令约束
1566
+ */
1567
+ constraint(e, t) {
1568
+ Array.isArray(t) ? t.length !== 2 ? (D({ message: "请选择2条线段", type: "warning" }), this.cancel()) : e(t) : (D({ message: "进入命令失败", type: "warning" }), this.cancel());
1569
+ }
1570
+ /** 连接
1571
+ * @param next
1572
+ */
1573
+ connection(e, t) {
1574
+ let n, o, s = 1 / 0;
1575
+ for (let a = 0; a < 2; a++)
1576
+ for (let i = 0; i < 2; i++) {
1577
+ const d = t[0].points[a], l = t[1].points[i], c = d.distance(l);
1578
+ c < s && (n = d, o = l, s = c);
1579
+ }
1580
+ if (n && o) {
1581
+ const a = new ne(n.clone(), o.clone());
1582
+ e(a), D({ message: "连接成功", type: "success" });
1583
+ } else this.cancel();
1584
+ }
1585
+ /** 成功
1586
+ * @param next
1587
+ * @param selectLines
1588
+ */
1589
+ completed(e) {
1590
+ this.renderManager.addLine(e), this.renderManager.draw();
1591
+ }
1592
+ /** 回滚操作
1593
+ * @param data
1594
+ */
1595
+ rollback(e) {
1596
+ return this.renderManager.removeLine(e), e;
1597
+ }
1598
+ /** 撤回回滚
1599
+ * @param lines
1600
+ * @returns
1601
+ */
1602
+ revokeRollback(e) {
1603
+ return this.completed(e), e;
1604
+ }
1605
+ }
1606
+ class Q extends T {
1607
+ static name = "IntersectionConnectionLine";
1608
+ shortcutKeys = ["control", "Shift", "L"];
1609
+ static commandName = "intersectionConnectionLine";
1610
+ onAddFromParent(e) {
1611
+ super.onAddFromParent(e);
1612
+ const t = this.commandManager.addCommandFlow(Q.commandName).add(this.createInterrupt()).add(this.constraint.bind(this)).add(this.connection.bind(this)).addRollback(this.rollback.bind(this)).addRevokeRollback(this.revokeRollback.bind(this));
1613
+ t.addEventListener("finally", this.createFinally()), t.addEventListener("completed", (n) => this.completed(n.data)), this.eventInput.addKeyCombination(Q.commandName, this.shortcutKeys), this.eventInput.addEventListener("codeChange", async () => {
1614
+ this.eventInput.isKeyCombination(Q.commandName) && await this.commandManager.start(Q.commandName, [...this.default.selectLines]);
1615
+ }), this.eventInput.addCancelDefaultBehavior(() => this.eventInput.isOnlyKeyDowns(this.shortcutKeys));
1616
+ }
1617
+ /**
1618
+ * 进入命令约束
1619
+ */
1620
+ constraint(e, t) {
1621
+ Array.isArray(t) ? t.length !== 2 ? (D({ message: "请选择2条线段", type: "warning" }), this.cancel()) : e(t) : (D({ message: "进入命令失败", type: "warning" }), this.cancel());
1622
+ }
1623
+ /** 开始
1624
+ * @param next
1625
+ */
1626
+ connection(e, t) {
1627
+ const n = t[0], o = t[1], s = t[0].getIntersection(t[1]);
1628
+ if (!s) return;
1629
+ const a = n.points.map((c) => c.clone()), i = o.points.map((c) => c.clone());
1630
+ n.start.distance(s) < n.end.distance(s) ? n.start.copy(s) : n.end.copy(s), o.start.distance(s) < o.end.distance(s) ? o.start.copy(s) : o.end.copy(s);
1631
+ const d = n.points.map((c) => c.clone()), l = o.points.map((c) => c.clone());
1632
+ e({ line1: n, line2: o, oldLine1: a, oldLine2: i, newLine1: d, newLine2: l }), D({ message: "连接成功", type: "success" });
1633
+ }
1634
+ /** 执行完成
1635
+ * @param next
1636
+ * @param selectLines
1637
+ */
1638
+ completed({ line1: e, line2: t, newLine1: n, newLine2: o }) {
1639
+ this.renderManager.removeLine(e), this.renderManager.removeLine(t), e.set(...n), t.set(...o), this.renderManager.addLines([e, t]), this.renderManager.draw();
1640
+ }
1641
+ /** 回滚操作
1642
+ * @param data
1643
+ */
1644
+ rollback(e) {
1645
+ const { line1: t, line2: n, oldLine1: o, oldLine2: s } = e;
1646
+ return this.renderManager.removeLine(t), this.renderManager.removeLine(n), t.set(...o), n.set(...s), this.renderManager.addLines([t, n]), this.renderManager.draw(), e;
1647
+ }
1648
+ /** 撤回回滚
1649
+ * @param lines
1650
+ * @returns
1651
+ */
1652
+ revokeRollback(e) {
1653
+ return this.completed(e), e;
1654
+ }
1655
+ }
1656
+ class Y extends T {
1657
+ static name = "DeleteSelectWindow";
1658
+ shortcutKeys = ["Q", "Delete"];
1659
+ static commandName = "deleteSelectWindow";
1660
+ onAddFromParent(e) {
1661
+ super.onAddFromParent(e);
1662
+ const t = this.commandManager.addCommandFlow(Y.commandName).add(this.createInterrupt()).add(this.constraint.bind(this)).add(this.end.bind(this)).addRollback(this.rollback.bind(this)).addRevokeRollback(this.revokeRollback.bind(this));
1663
+ t.addEventListener("finally", this.createFinally()), t.addEventListener("completed", (n) => this.completed(n.data)), this.eventInput.addKeyCombination(Y.commandName, this.shortcutKeys), this.eventInput.addEventListener("codeChange", async () => {
1664
+ this.eventInput.isKeyCombination(Y.commandName) && await this.commandManager.start(Y.commandName, [...this.default.selectLines]);
1665
+ }), this.eventInput.addCancelDefaultBehavior(() => this.eventInput.isOnlyKeyDowns(this.shortcutKeys));
1666
+ }
1667
+ /**
1668
+ * 进入命令约束
1669
+ */
1670
+ constraint(e, t) {
1671
+ Array.isArray(t) ? t.some((n) => n.userData.isWindow) ? e(t) : (D({ message: "请选择有窗户线段", type: "warning" }), this.cancel()) : (D({ message: "进入命令失败", type: "warning" }), this.cancel());
1672
+ }
1673
+ /** 开始
1674
+ * @param next
1675
+ */
1676
+ end(e, t) {
1677
+ let n = !1, o = [];
1678
+ t.forEach((s) => {
1679
+ s.userData.isWindow && (o.push({
1680
+ line: s,
1681
+ drawDoorData: s.userData.drawDoorData
1682
+ }), n = !0);
1683
+ }), n && D({ message: "删除窗户成功", type: "success" }), e(o);
1684
+ }
1685
+ /**
1686
+ * 完成
1687
+ * @param list
1688
+ */
1689
+ completed(e) {
1690
+ e.forEach((t) => {
1691
+ const n = t.line.userData;
1692
+ n && (delete n.isWindow, delete n.drawDoorData);
1693
+ }), this.renderManager.draw();
1694
+ }
1695
+ /** 回滚操作
1696
+ * @param data
1697
+ */
1698
+ rollback(e) {
1699
+ return e.forEach((t) => {
1700
+ t.line.userData || (t.line.userData = {});
1701
+ const n = t.line.userData;
1702
+ n.isWindow = !0, n.drawDoorData = t.drawDoorData;
1703
+ }), this.renderManager.draw(), e;
1704
+ }
1705
+ /** 撤回回滚
1706
+ * @param lines
1707
+ * @returns
1708
+ */
1709
+ revokeRollback(e) {
1710
+ return this.completed(e), e;
1711
+ }
1712
+ }
1713
+ class Z extends T {
1714
+ static name = "SelectAll";
1715
+ container = new m.Group();
1716
+ shortcutKeys = ["control", "a"];
1717
+ static commandName = "selectAll";
1718
+ onAddFromParent(e) {
1719
+ super.onAddFromParent(e), this.editor.container.add(this.container), this.container.position.z = 1e-3;
1720
+ const t = this.commandManager.addCommandFlow(Z.commandName).add(this.createInterrupt()).add(this.selectAll.bind(this)).addRollback(this.rollback.bind(this)).addRevokeRollback(this.revokeRollback.bind(this));
1721
+ t.addEventListener("finally", this.createFinally()), t.addEventListener("completed", (n) => this.completed(n.data)), this.eventInput.addKeyCombination(Z.commandName, this.shortcutKeys), this.eventInput.addEventListener("codeChange", async () => {
1722
+ this.eventInput.isKeyCombination(Z.commandName) && await this.commandManager.start(Z.commandName);
1723
+ }), this.eventInput.addCancelDefaultBehavior(() => this.eventInput.isOnlyKeyDowns(this.shortcutKeys));
1724
+ }
1725
+ /** 开始
1726
+ * @param next
1727
+ */
1728
+ selectAll(e) {
1729
+ e([...this.renderManager.lines]);
1730
+ }
1731
+ /** 执行完成
1732
+ */
1733
+ completed(e) {
1734
+ e.map((t) => this.default.addSelectLine(t));
1735
+ }
1736
+ /** 回滚操作
1737
+ * @param lines
1738
+ */
1739
+ rollback(e) {
1740
+ return e.map((t) => this.default.removeSelectLine(t)), e;
1741
+ }
1742
+ /** 撤回回滚
1743
+ * @param lines
1744
+ * @returns
1745
+ */
1746
+ revokeRollback(e) {
1747
+ return this.completed(e), e;
1711
1748
  }
1712
1749
  }
1713
- const _hoisted_1 = {
1750
+ const $n = {
1714
1751
  key: 0,
1715
1752
  class: "mt-[5px] text-[#ccc] text-[11px] absolute left-[10px] bottom-[10px] rounded-[8px] min-w-[150px] bg-black/15 p-[10px]"
1716
- };
1717
- const _hoisted_2 = { class: "text-start max-w-[100px]" };
1718
- const _hoisted_3 = { class: "inline-block ml-[10px] text-[var(--color-primary)]" };
1719
- const _hoisted_4 = {
1753
+ }, Hn = { class: "text-start max-w-[150px]" }, qn = { class: "inline-block ml-[10px] text-[var(--color-primary)]" }, Wn = {
1720
1754
  key: 0,
1721
- class: "p-[5px] min-w-[140px]"
1722
- };
1723
- const _hoisted_5 = { class: "text-[14px] flex flex-col" };
1724
- const _hoisted_6 = ["onClick"];
1725
- const _hoisted_7 = { class: "flex flex-row items-center" };
1726
- const _hoisted_8 = { class: "flex justify-center items-center size-[20px] bg-[#f0f0f0] rounded-[2px] mr-[10px]" };
1727
- const _hoisted_9 = ["src"];
1728
- const _hoisted_10 = {
1755
+ class: "p-[5px] max-w-[200px]"
1756
+ }, Un = { class: "text-[14px] flex flex-col" }, Qn = ["onClick"], Yn = { class: "flex flex-row items-center" }, Zn = { class: "flex justify-center items-center size-[20px] bg-[#f0f0f0] rounded-[2px] mr-[10px]" }, Xn = ["src"], Jn = { class: "text-wrap" }, eo = {
1729
1757
  key: 1,
1730
1758
  class: "text-[#999]"
1731
- };
1732
- const _hoisted_11 = {
1759
+ }, to = {
1733
1760
  style: { "--el-color-primary": "var(--primary-color)" },
1734
1761
  class: "flex flex-row items-center justify-between gap-[10px] mt-[10px] text-[10px]"
1735
- };
1736
- const _hoisted_12 = {
1762
+ }, no = {
1737
1763
  key: 0,
1738
1764
  class: "flex flex-row items-center flex-wrap justify-between gap-[10px] mt-[10px] text-[10px]"
1739
- };
1740
- const _hoisted_13 = { class: "border-t-1 border-t-[#eee] mt-[5px] pt-[5px] h-[20px] flex items-center gap-[10px]" };
1741
- const _hoisted_14 = {
1742
- key: 1,
1743
- class: "select-none flex-1 flex justify-center text-[12px] text-[#999]"
1744
- };
1745
- const _sfc_main = /* @__PURE__ */ defineComponent({
1765
+ }, oo = { class: "flex-wrap border-t-1 border-t-[#eee] mt-[5px] pt-[5px] flex items-center gap-[10px]" }, so = ["onClick", "title"], ao = ["src"], ro = /* @__PURE__ */ oe({
1746
1766
  __name: "EditorTool",
1747
1767
  props: {
1748
1768
  dxfSystem: {},
1749
1769
  permission: {}
1750
1770
  },
1751
- setup(__props) {
1752
- function setEditorToolPosition(left, top, rect = elRef.value.getBoundingClientRect(), toolBarRect = toolBarRef.value.getBoundingClientRect()) {
1753
- const minX = 0, maxX = rect.width - toolBarRect.width, minY = 0, maxY = rect.height - toolBarRect.height;
1754
- left = Math.max(minX, Math.min(left, maxX));
1755
- top = Math.max(minY, Math.min(top, maxY));
1756
- toolBarPosition.value = { left, top };
1771
+ setup(r) {
1772
+ function e(f, u, v = h.value.getBoundingClientRect(), G = w.value.getBoundingClientRect()) {
1773
+ const re = v.width - G.width, ie = 0, xe = v.height - G.height;
1774
+ f = Math.max(0, Math.min(f, re)), u = Math.max(ie, Math.min(u, xe)), O.value = { left: f, top: u };
1757
1775
  }
1758
- function startCurrentCommandItem(item) {
1759
- if (currentCommand.value === item.command) return;
1760
- editor.commandManager.start(item.command);
1776
+ function t(f) {
1777
+ k.value !== f.command && _.commandManager.start(f.command);
1761
1778
  }
1762
- function setLines(lines) {
1763
- if (lines) {
1764
- localStorage.setItem("lines", JSON.stringify(lines));
1779
+ function n(f) {
1780
+ if (f) {
1781
+ localStorage.setItem("lines", JSON.stringify(f));
1765
1782
  try {
1766
- dxfSystem.Dxf.set(lines);
1767
- dxfSystem.Dxf.lineOffset();
1768
- } catch (error) {
1769
- console.log(error);
1783
+ b.Dxf.set(f), b.Dxf.lineOffset();
1784
+ } catch (u) {
1785
+ console.log(u);
1770
1786
  }
1771
1787
  }
1772
1788
  }
1773
- async function selectLocalFile() {
1774
- const data = await SelectLocalFile.json();
1775
- if (Array.isArray(data)) {
1776
- localStorage.removeItem("orbitControls");
1777
- setLines(data);
1778
- }
1789
+ async function o() {
1790
+ const f = await Et.json();
1791
+ Array.isArray(f) && (localStorage.removeItem("orbitControls"), n(f));
1779
1792
  }
1780
- function dragMoveHelper({ offsetX, offsetY }) {
1781
- domEventRegister.mouseMoveEventProxylock = true;
1782
- const cusor = document.body.style.cursor;
1793
+ function s({ offsetX: f, offsetY: u }) {
1794
+ P.mouseMoveEventProxylock = !0;
1795
+ const v = document.body.style.cursor;
1783
1796
  document.body.style.cursor = "move";
1784
- const move = (e) => {
1785
- const rect = elRef.value.getBoundingClientRect(), toolBarRect = toolBarRef.value.getBoundingClientRect();
1786
- setEditorToolPosition(
1787
- e.pageX - rect.left - offsetX,
1788
- e.pageY - rect.top - offsetY,
1789
- rect,
1790
- toolBarRect
1791
- );
1792
- e.stopPropagation();
1793
- document.body.style.cursor = "move";
1797
+ const G = (re) => {
1798
+ const ie = h.value.getBoundingClientRect(), xe = w.value.getBoundingClientRect();
1799
+ e(
1800
+ re.pageX - ie.left - f,
1801
+ re.pageY - ie.top - u,
1802
+ ie,
1803
+ xe
1804
+ ), re.stopPropagation(), document.body.style.cursor = "move";
1805
+ }, be = () => {
1806
+ document.body.removeEventListener("mousemove", G), document.removeEventListener("mouseup", be), document.body.style.cursor = v, P.mouseMoveEventProxylock = !1;
1794
1807
  };
1795
- const end = () => {
1796
- document.body.removeEventListener("mousemove", move);
1797
- document.removeEventListener("mouseup", end);
1798
- document.body.style.cursor = cusor;
1799
- domEventRegister.mouseMoveEventProxylock = false;
1800
- };
1801
- document.body.addEventListener("mousemove", move);
1802
- document.addEventListener("mouseup", end);
1808
+ document.body.addEventListener("mousemove", G), document.addEventListener("mouseup", be);
1803
1809
  }
1804
- const props = __props;
1805
- const originalLineVisible = ref(true), dxfVisible = ref(true), whiteModelVisible = ref(true), isLook = ref(false), elRef = ref(), toolBarRef = ref(), toolBarExpand = ref(true), currentCommand = ref(""), dxfSystem = toRaw(props.dxfSystem), domEventRegister = dxfSystem.findComponentByType(DomEventRegister), editor = dxfSystem.findComponentByType(Editor$1), defaultComponent = dxfSystem.findComponentByType(Default), whiteModel = dxfSystem.findComponentByType(WhiteModel), toolBarPosition = ref({ left: 10, top: 10 }), images = /* @__PURE__ */ Object.assign({ "./assets/images/door.svg": __vite_glob_0_0, "./assets/images/line.svg": __vite_glob_0_1, "./assets/images/selectPoint.svg": __vite_glob_0_2, "./assets/images/window.svg": __vite_glob_0_3 }), showShortcutKey = ref(false), selectLineCount = ref(0), hasWindowLine = ref(false), resizeObserver = new ResizeObserver(() => setEditorToolPosition(toolBarPosition.value.left, toolBarPosition.value.top)), shortcutKeys = [
1806
- { "name": "开启绘制线段命令", "shortcut": "Ctrl + L" },
1807
- { "name": "开启绘制门线命令", "shortcut": "Ctrl + M" },
1808
- { "name": "开启绘制窗户线命令", "shortcut": "Ctrl + Q" },
1809
- { "name": "开启点修改命令", "shortcut": "Ctrl + P" },
1810
- { "name": "线段方向移动线段点(点修改命令下)", "shortcut": "Shift + 移动" },
1811
- { "name": "删除线段", "shortcut": "选中 + Delete" },
1812
- { "name": "删除窗户线", "shortcut": "选中 + Q + Delete" },
1813
- { "name": "选中", "shortcut": "鼠标左键" },
1814
- { "name": "多选", "shortcut": "鼠标左键 + Ctrl" },
1815
- { "name": "取消选中", "shortcut": "鼠标左键 + Alt" },
1816
- { "name": "框选", "shortcut": "鼠标左键 + 移动" },
1817
- { "name": "线段同方向合并", "shortcut": "Ctrl + G" },
1818
- { "name": "线段连接", "shortcut": "选中 + Shift + L" },
1819
- { "name": "线段交点连接", "shortcut": "选中 + Ctrl + Shift + L" },
1820
- { "name": "命令确认", "shortcut": "Enter" },
1821
- { "name": "取消命令", "shortcut": "Esc" }
1822
- ], commandList = [
1810
+ const a = r, i = M(!0), d = M(!0), l = M(!0), c = M(!1), h = M(), w = M(), g = M(!0), k = M(""), b = Pt(a.dxfSystem), P = b.findComponentByType(Mt), _ = b.findComponentByType(ot), j = b.findComponentByType(ke), se = b.findComponentByType(Lt), ue = M(0), X = M(0), O = M({ left: 10, top: 10 }), E = /* @__PURE__ */ Object.assign({ "./assets/images/connection.svg": gn, "./assets/images/deleteSelectLine.svg": yn, "./assets/images/deleteSelectWindow.svg": bn, "./assets/images/door.svg": Cn, "./assets/images/intersectionConnection.svg": En, "./assets/images/line.svg": _n, "./assets/images/mergeLine.svg": kn, "./assets/images/revokeRollback.svg": In, "./assets/images/rollback.svg": Nn, "./assets/images/selectAll.svg": On, "./assets/images/selectPoint.svg": Bn, "./assets/images/verticalCorrection.svg": Kn, "./assets/images/window.svg": Vn }), H = M(!1), y = M(0), we = M(!1), ae = new ResizeObserver(() => e(O.value.left, O.value.top)), st = [
1811
+ { name: "开启绘制线段命令", shortcut: "Ctrl + L" },
1812
+ { name: "开启绘制门线命令", shortcut: "Ctrl + M" },
1813
+ { name: "开启绘制窗户线命令", shortcut: "Ctrl + Q" },
1814
+ { name: "开启点修改命令", shortcut: "Ctrl + P" },
1815
+ { name: "线段方向移动线段点(点修改命令下)", shortcut: "Shift + 移动" },
1816
+ { name: "删除线段", shortcut: "选中 + Delete" },
1817
+ { name: "删除窗户线", shortcut: "选中 + Q + Delete" },
1818
+ { name: "选中", shortcut: "鼠标左键" },
1819
+ { name: "多选", shortcut: "鼠标左键 + Ctrl" },
1820
+ { name: "取消选中", shortcut: "鼠标左键 + Alt" },
1821
+ { name: "框选", shortcut: "鼠标左键 + 移动" },
1822
+ { name: "线段同方向合并", shortcut: "Ctrl + G" },
1823
+ { name: "线段连接", shortcut: "选中 + Shift + L" },
1824
+ { name: "线段交点连接", shortcut: "选中 + Ctrl + Shift + L" },
1825
+ { name: "垂直修正", shortcut: "Ctrl + C 或 Ctrl + Shift + C" },
1826
+ { name: "命令确认", shortcut: "Enter" },
1827
+ { name: "取消命令", shortcut: "Esc" },
1828
+ { name: "回滚操作", shortcut: "Ctrl + Z" },
1829
+ { name: "取消回滚操作", shortcut: "Ctrl + Y" }
1830
+ ], at = [
1823
1831
  {
1824
1832
  command: "default",
1825
1833
  name: "默认",
1826
- show: false,
1834
+ show: !1,
1827
1835
  shortcut: ""
1828
1836
  },
1829
1837
  {
1830
1838
  command: "draw-line",
1831
1839
  name: "绘制线段",
1832
- src: images["./assets/images/line.svg"].default,
1833
- show: true,
1840
+ src: E["./assets/images/line.svg"].default,
1841
+ show: !0,
1834
1842
  shortcut: "Ctrl + L"
1835
1843
  },
1836
1844
  {
1837
1845
  command: "draw-door-line",
1838
1846
  name: "绘制门线",
1839
- show: true,
1840
- src: images["./assets/images/door.svg"].default,
1847
+ show: !0,
1848
+ src: E["./assets/images/door.svg"].default,
1841
1849
  shortcut: "Ctrl + M"
1842
1850
  },
1843
1851
  {
1844
1852
  command: "draw-window-line",
1845
1853
  name: "绘制窗户线",
1846
- show: true,
1847
- src: images["./assets/images/window.svg"].default,
1854
+ show: !0,
1855
+ src: E["./assets/images/window.svg"].default,
1848
1856
  shortcut: "Ctrl + Q"
1849
1857
  },
1850
1858
  {
1851
1859
  command: "point",
1852
1860
  name: "点修改",
1853
- show: true,
1854
- src: images["./assets/images/selectPoint.svg"].default,
1861
+ show: !0,
1862
+ src: E["./assets/images/selectPoint.svg"].default,
1855
1863
  shortcut: "Ctrl + P"
1856
1864
  }
1865
+ ], rt = [
1866
+ {
1867
+ command: "",
1868
+ name: "操作回滚",
1869
+ src: E["./assets/images/rollback.svg"].default,
1870
+ show: L(() => ue.value !== 0),
1871
+ shortcut: "Ctrl + Z",
1872
+ action() {
1873
+ _.commandManager.rollback();
1874
+ }
1875
+ },
1876
+ {
1877
+ command: "",
1878
+ name: "撤销操作回滚",
1879
+ src: E["./assets/images/revokeRollback.svg"].default,
1880
+ show: L(() => X.value !== 0),
1881
+ shortcut: "Ctrl + Y",
1882
+ class: "rotateY-[180deg]",
1883
+ action() {
1884
+ _.commandManager.revokeRollback();
1885
+ }
1886
+ },
1887
+ {
1888
+ command: q.commandName,
1889
+ name: "合并",
1890
+ src: E["./assets/images/mergeLine.svg"].default,
1891
+ show: L(() => y.value === 2),
1892
+ shortcut: "Ctrl + G"
1893
+ },
1894
+ {
1895
+ command: U.commandName,
1896
+ name: "两点连接",
1897
+ show: L(() => y.value === 2),
1898
+ src: E["./assets/images/connection.svg"].default,
1899
+ shortcut: "Shift + L"
1900
+ },
1901
+ {
1902
+ command: Q.commandName,
1903
+ name: "延长线交点连接",
1904
+ show: L(() => y.value === 2),
1905
+ src: E["./assets/images/intersectionConnection.svg"].default,
1906
+ shortcut: "Ctrl + Shift + L"
1907
+ },
1908
+ {
1909
+ command: ee.commandName,
1910
+ name: "线段垂直纠正",
1911
+ show: L(() => y.value === 1),
1912
+ src: E["./assets/images/verticalCorrection.svg"].default,
1913
+ shortcut: "Ctrl + C 或 Ctrl + Shift + C"
1914
+ },
1915
+ {
1916
+ command: Z.commandName,
1917
+ name: "全选",
1918
+ show: L(() => y.value !== _.renderManager.lines.length),
1919
+ src: E["./assets/images/selectAll.svg"].default,
1920
+ shortcut: "Ctrl + A"
1921
+ },
1922
+ {
1923
+ command: Y.commandName,
1924
+ name: "清除窗户",
1925
+ show: L(() => we.value),
1926
+ src: E["./assets/images/deleteSelectWindow.svg"].default,
1927
+ shortcut: "Q + Delete"
1928
+ },
1929
+ {
1930
+ command: W.commandName,
1931
+ name: "删除",
1932
+ show: L(() => y.value > 0),
1933
+ src: E["./assets/images/deleteSelectLine.svg"].default,
1934
+ shortcut: "Delete"
1935
+ }
1857
1936
  ];
1858
- watch(toolBarPosition, () => localStorage.setItem("editorToolPosition", JSON.stringify(toolBarPosition.value)));
1859
- watch(showShortcutKey, () => localStorage.setItem("showShortcutKey", showShortcutKey.value + ""));
1860
- watch(toolBarExpand, () => localStorage.setItem("toolBarExpand", toolBarExpand.value + ""));
1861
- watch(originalLineVisible, () => dxfSystem.Variable.set("originalLineVisible", originalLineVisible.value));
1862
- watch(dxfVisible, () => dxfSystem.Variable.set("dxfVisible", dxfVisible.value));
1863
- watch(whiteModelVisible, () => dxfSystem.Variable.set("whiteModelVisible", whiteModelVisible.value));
1864
- dxfSystem.Variable.addEventListener("isLook", (e) => isLook.value = e.value);
1865
- dxfSystem.Variable.addEventListener("originalLineVisible", (e) => originalLineVisible.value = e.value);
1866
- dxfSystem.Variable.addEventListener("dxfVisible", (e) => dxfVisible.value = e.value);
1867
- dxfSystem.Variable.addEventListener("whiteModelVisible", (e) => whiteModelVisible.value = e.value);
1868
- const startedEventCancel = editor.commandManager.addEventListener("started", (e) => {
1869
- currentCommand.value = e.name;
1937
+ V(O, () => localStorage.setItem("editorToolPosition", JSON.stringify(O.value))), V(H, () => localStorage.setItem("showShortcutKey", H.value + "")), V(g, () => {
1938
+ localStorage.setItem("toolBarExpand", g.value + ""), g.value && ve(() => e(O.value.left, O.value.top));
1939
+ }), V(i, () => b.Variable.set("originalLineVisible", i.value)), V(d, () => b.Variable.set("dxfVisible", d.value)), V(l, () => b.Variable.set("whiteModelVisible", l.value)), b.Variable.addEventListener("isLook", (f) => c.value = f.value), b.Variable.addEventListener("originalLineVisible", (f) => i.value = f.value), b.Variable.addEventListener("dxfVisible", (f) => d.value = f.value), b.Variable.addEventListener("whiteModelVisible", (f) => l.value = f.value);
1940
+ const it = _.commandManager.addEventListener("started", (f) => {
1941
+ k.value = f.name;
1870
1942
  });
1871
- if (localStorage.getItem("showShortcutKey")) {
1872
- showShortcutKey.value = localStorage.getItem("showShortcutKey") === "true";
1873
- }
1874
- if (localStorage.getItem("toolBarExpand")) {
1875
- toolBarExpand.value = localStorage.getItem("toolBarExpand") === "true";
1876
- }
1877
- onMounted(() => {
1878
- toolBarRef.value.style.display = "none";
1879
- setTimeout(() => {
1880
- toolBarRef.value.style.display = "block";
1881
- if (localStorage.getItem("editorToolPosition")) {
1882
- const { left, top } = JSON.parse(localStorage.getItem("editorToolPosition") ?? "{}");
1883
- setEditorToolPosition(left, top);
1884
- nextTick(() => resizeObserver.observe(elRef.value));
1885
- } else {
1886
- nextTick(() => resizeObserver.observe(elRef.value));
1887
- }
1888
- }, 20);
1889
- defaultComponent.addEventListener("selectLineChange", () => {
1890
- selectLineCount.value = defaultComponent.selectLines.length;
1891
- hasWindowLine.value = defaultComponent.selectLines.some((l) => l.userData.isWindow);
1943
+ return localStorage.getItem("showShortcutKey") && (H.value = localStorage.getItem("showShortcutKey") === "true"), localStorage.getItem("toolBarExpand") && (g.value = localStorage.getItem("toolBarExpand") === "true"), Ze(() => {
1944
+ w.value.style.display = "none", setTimeout(() => {
1945
+ if (w.value.style.display = "block", localStorage.getItem("editorToolPosition")) {
1946
+ const { left: f, top: u } = JSON.parse(localStorage.getItem("editorToolPosition") ?? "{}");
1947
+ e(f, u), ve(() => ae.observe(h.value));
1948
+ } else
1949
+ ve(() => ae.observe(h.value));
1950
+ }, 100), j.addEventListener("selectLineChange", () => {
1951
+ y.value = j.selectLines.length, we.value = j.selectLines.some((f) => f.userData.isWindow);
1952
+ }), ["rollback", "completed", "revokeRollback"].forEach((f) => {
1953
+ _.commandManager.addEventListener(f, () => {
1954
+ setTimeout(() => {
1955
+ ue.value = _.commandManager.operationList.length, X.value = _.commandManager.rollbackList.length;
1956
+ });
1957
+ });
1892
1958
  });
1893
- });
1894
- onUnmounted(() => {
1895
- domEventRegister.mouseMoveEventProxylock = false;
1896
- startedEventCancel();
1897
- resizeObserver.disconnect();
1898
- });
1899
- return (_ctx, _cache) => {
1900
- return openBlock(), createElementBlock("div", {
1901
- ref_key: "elRef",
1902
- ref: elRef,
1903
- class: "editorTool pointer-events-none overflow-hidden absolute left-0 top-0 w-full h-full z-[10000] flex flex-row justify-between p-[5px] box-border select-none pointer-events-[all]"
1959
+ }), It(() => {
1960
+ P.mouseMoveEventProxylock = !1, it(), ae.disconnect();
1961
+ }), (f, u) => (C(), S("div", {
1962
+ ref_key: "elRef",
1963
+ ref: h,
1964
+ class: "editorTool pointer-events-none overflow-hidden absolute left-0 top-0 w-full h-full z-[20] flex flex-row justify-between p-[5px] box-border select-none pointer-events-[all]"
1965
+ }, [
1966
+ z(fe, null, {
1967
+ default: F(() => [
1968
+ H.value ? (C(), S("div", $n, [
1969
+ (C(), S(ce, null, Me(st, (v) => x("div", {
1970
+ class: "p-[4px_0px] flex justify-between text-right border-b-1 border-b-[rgba(255,255,255,0.1)] last-of-type:border-b-0",
1971
+ key: v.name
1972
+ }, [
1973
+ x("p", Hn, J(v.name), 1),
1974
+ x("span", qn, J(v.shortcut), 1)
1975
+ ])), 64))
1976
+ ])) : $("", !0)
1977
+ ]),
1978
+ _: 1
1979
+ }),
1980
+ x("div", {
1981
+ ref_key: "toolBarRef",
1982
+ ref: w,
1983
+ style: De({ left: O.value.left + "px", top: O.value.top + "px" }),
1984
+ class: R(["overflow-hidden pointer-events-auto w-fit max-w-[260px] transition-[border-radius] text-[#333] absolute z-[11] bg-white select-none", { "rounded-[8px] ": g.value }]),
1985
+ onMousedown: u[8] || (u[8] = (v) => v.stopPropagation())
1904
1986
  }, [
1905
- createVNode(Transition, null, {
1906
- default: withCtx(() => [
1907
- showShortcutKey.value ? (openBlock(), createElementBlock("div", _hoisted_1, [
1908
- (openBlock(), createElementBlock(Fragment, null, renderList(shortcutKeys, (item) => {
1909
- return createElementVNode("p", {
1910
- class: "p-[4px_0px] flex justify-between text-right border-b-1 border-b-[rgba(255,255,255,0.1)] last-of-type:border-b-0",
1911
- key: item.name
1912
- }, [
1913
- createElementVNode("p", _hoisted_2, toDisplayString(item.name), 1),
1914
- createElementVNode("span", _hoisted_3, toDisplayString(item.shortcut), 1)
1915
- ]);
1916
- }), 64))
1917
- ])) : createCommentVNode("", true)
1918
- ]),
1919
- _: 1
1920
- }),
1921
- createElementVNode("div", {
1922
- ref_key: "toolBarRef",
1923
- ref: toolBarRef,
1924
- style: normalizeStyle({ left: toolBarPosition.value.left + "px", top: toolBarPosition.value.top + "px" }),
1925
- class: normalizeClass(["pointer-events-auto max-w-[260px] transition-[border-radius] text-[#333] absolute z-[11] bg-white select-none", { "rounded-[8px] ": toolBarExpand.value }]),
1926
- onMousedown: _cache[13] || (_cache[13] = (e) => e.stopPropagation())
1987
+ x("div", {
1988
+ onMousedown: s,
1989
+ class: R([{ "border-b-[#eee] border-b-1": g.value }, "flex flex-row justify-between header text-[14px] font-bold p-[10px 0px]"])
1927
1990
  }, [
1928
- createElementVNode("div", {
1929
- onMousedown: dragMoveHelper,
1930
- class: normalizeClass([{ "border-b-[#eee]": toolBarExpand.value }, "flex flex-row justify-between header text-[14px] font-bold p-[10px 0px] border-b-1"])
1991
+ u[10] || (u[10] = St('<div class="flex flex-row" data-v-16243417><div class="p-[2px_5px] flex items-center pointer-events-none" data-v-16243417><svg fill="#aaa" width="20" height="20" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" data-v-16243417><path d="M341.333333 298.666667a85.333333 85.333333 0 1 0 0-170.666667 85.333333 85.333333 0 0 0 0 170.666667z m0 298.666666a85.333333 85.333333 0 1 0 0-170.666666 85.333333 85.333333 0 0 0 0 170.666666z m85.333334 213.333334a85.333333 85.333333 0 1 1-170.666667 0 85.333333 85.333333 0 0 1 170.666667 0z m256-512a85.333333 85.333333 0 1 0 0-170.666667 85.333333 85.333333 0 0 0 0 170.666667z m85.333333 213.333333a85.333333 85.333333 0 1 1-170.666667 0 85.333333 85.333333 0 0 1 170.666667 0z m-85.333333 384a85.333333 85.333333 0 1 0 0-170.666667 85.333333 85.333333 0 0 0 0 170.666667z" data-v-16243417></path></svg></div><h5 class="flex text-nowrap text-[12px] items-center pointer-events-none" data-v-16243417>绘制工具</h5></div>', 1)),
1992
+ x("div", {
1993
+ onMousedown: u[0] || (u[0] = (v) => v.stopPropagation()),
1994
+ onClick: u[1] || (u[1] = (v) => g.value = !g.value),
1995
+ class: "cursor-pointer flex items-center p-[0px_5px]"
1931
1996
  }, [
1932
- _cache[15] || (_cache[15] = createStaticVNode('<div class="flex flex-row" data-v-a5aa9d5a><div class="p-[2px_5px] flex items-center pointer-events-none" data-v-a5aa9d5a><svg fill="#aaa" width="20" height="20" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" data-v-a5aa9d5a><path d="M341.333333 298.666667a85.333333 85.333333 0 1 0 0-170.666667 85.333333 85.333333 0 0 0 0 170.666667z m0 298.666666a85.333333 85.333333 0 1 0 0-170.666666 85.333333 85.333333 0 0 0 0 170.666666z m85.333334 213.333334a85.333333 85.333333 0 1 1-170.666667 0 85.333333 85.333333 0 0 1 170.666667 0z m256-512a85.333333 85.333333 0 1 0 0-170.666667 85.333333 85.333333 0 0 0 0 170.666667z m85.333333 213.333333a85.333333 85.333333 0 1 1-170.666667 0 85.333333 85.333333 0 0 1 170.666667 0z m-85.333333 384a85.333333 85.333333 0 1 0 0-170.666667 85.333333 85.333333 0 0 0 0 170.666667z" data-v-a5aa9d5a></path></svg></div><h5 class="flex text-[12px] items-center pointer-events-none" data-v-a5aa9d5a>绘制工具</h5></div>', 1)),
1933
- createElementVNode("div", {
1934
- onMousedown: _cache[0] || (_cache[0] = (e) => e.stopPropagation()),
1935
- onClick: _cache[1] || (_cache[1] = ($event) => toolBarExpand.value = !toolBarExpand.value),
1936
- class: "cursor-pointer flex items-center p-[0px_5px]"
1997
+ (C(), S("svg", {
1998
+ fill: "#666",
1999
+ class: R([{ "rotate-90": g.value }, "transition-all"]),
2000
+ viewBox: "0 0 1024 1024",
2001
+ version: "1.1",
2002
+ xmlns: "http://www.w3.org/2000/svg",
2003
+ width: "12",
2004
+ height: "12"
2005
+ }, u[9] || (u[9] = [
2006
+ x("path", { d: "M315.050667 938.666667a60.757333 60.757333 0 0 0 41.813333-16.298667L750.933333 551.338667a53.418667 53.418667 0 0 0 0-78.677334L356.864 101.632a61.696 61.696 0 0 0-83.541333 0 53.418667 53.418667 0 0 0-0.256 78.677333L625.408 512 273.066667 843.690667a53.418667 53.418667 0 0 0 0 78.677333 60.757333 60.757333 0 0 0 41.984 16.298667z" }, null, -1)
2007
+ ]), 2))
2008
+ ], 32)
2009
+ ], 34),
2010
+ g.value ? (C(), S("div", Wn, [
2011
+ x("ul", Un, [
2012
+ (C(), S(ce, null, Me(at, (v) => (C(), S(ce, {
2013
+ key: v.command
1937
2014
  }, [
1938
- (openBlock(), createElementBlock("svg", {
1939
- fill: "#666",
1940
- class: normalizeClass([{ "rotate-90": toolBarExpand.value }, "transition-all"]),
1941
- viewBox: "0 0 1024 1024",
1942
- version: "1.1",
1943
- xmlns: "http://www.w3.org/2000/svg",
1944
- width: "12",
1945
- height: "12"
1946
- }, _cache[14] || (_cache[14] = [
1947
- createElementVNode("path", { d: "M315.050667 938.666667a60.757333 60.757333 0 0 0 41.813333-16.298667L750.933333 551.338667a53.418667 53.418667 0 0 0 0-78.677334L356.864 101.632a61.696 61.696 0 0 0-83.541333 0 53.418667 53.418667 0 0 0-0.256 78.677333L625.408 512 273.066667 843.690667a53.418667 53.418667 0 0 0 0 78.677333 60.757333 60.757333 0 0 0 41.984 16.298667z" }, null, -1)
1948
- ]), 2))
1949
- ], 32)
1950
- ], 34),
1951
- toolBarExpand.value ? (openBlock(), createElementBlock("div", _hoisted_4, [
1952
- createElementVNode("ul", _hoisted_5, [
1953
- (openBlock(), createElementBlock(Fragment, null, renderList(commandList, (item) => {
1954
- return openBlock(), createElementBlock(Fragment, {
1955
- key: item.command
1956
- }, [
1957
- item.show ? (openBlock(), createElementBlock("li", {
1958
- key: 0,
1959
- onClick: ($event) => startCurrentCommandItem(item),
1960
- class: normalizeClass([{ "!bg-[var(--primary-color)] text-[#fff]": currentCommand.value === item.command }, "gap-[20px] text-[12px] hover:bg-[#ddd] transition-all rounded-[6px] p-[5px] flex flex-row items-center justify-between cursor-pointer"])
2015
+ v.show ? (C(), S("li", {
2016
+ key: 0,
2017
+ onClick: (G) => t(v),
2018
+ class: R([{ "!bg-[var(--primary-color)] text-[#fff]": k.value === v.command }, "gap-[10px] text-[12px] hover:bg-[#ddd] transition-all rounded-[6px] p-[5px] flex flex-row items-center justify-between cursor-pointer"])
2019
+ }, [
2020
+ x("div", Yn, [
2021
+ x("div", Zn, [
2022
+ x("img", {
2023
+ class: "size-[14px]",
2024
+ src: v.src,
2025
+ alt: "",
2026
+ srcset: ""
2027
+ }, null, 8, Xn)
2028
+ ]),
2029
+ x("span", Jn, J(v.name), 1)
2030
+ ]),
2031
+ k.value === v.command ? (C(), S("div", {
2032
+ key: 0,
2033
+ title: "取消命令(Esc)",
2034
+ class: "active:scale-[0.7] transition-all",
2035
+ onClick: u[2] || (u[2] = (G) => (p(_).cancelCommand(), G.stopPropagation()))
2036
+ }, u[11] || (u[11] = [
2037
+ x("svg", {
2038
+ fill: "#fff",
2039
+ width: "16",
2040
+ height: "16",
2041
+ viewBox: "0 0 1024 1024",
2042
+ version: "1.1",
2043
+ xmlns: "http://www.w3.org/2000/svg"
1961
2044
  }, [
1962
- createElementVNode("div", _hoisted_7, [
1963
- createElementVNode("div", _hoisted_8, [
1964
- createElementVNode("img", {
1965
- class: "size-[14px]",
1966
- src: item.src,
1967
- alt: "",
1968
- srcset: ""
1969
- }, null, 8, _hoisted_9)
1970
- ]),
1971
- createElementVNode("span", null, toDisplayString(item.name), 1)
1972
- ]),
1973
- currentCommand.value === item.command ? (openBlock(), createElementBlock("div", {
1974
- key: 0,
1975
- title: "取消命令(Esc)",
1976
- class: "active:scale-[0.7] transition-all",
1977
- onClick: _cache[2] || (_cache[2] = (e) => (unref(editor).cancelCommand(), e.stopPropagation()))
1978
- }, _cache[16] || (_cache[16] = [
1979
- createElementVNode("svg", {
1980
- fill: "#fff",
1981
- width: "16",
1982
- height: "16",
1983
- viewBox: "0 0 1024 1024",
1984
- version: "1.1",
1985
- xmlns: "http://www.w3.org/2000/svg"
1986
- }, [
1987
- createElementVNode("path", { d: "M511.104 0C228.821333 0 0 228.821333 0 511.104c0 282.282667 228.821333 511.104 511.104 511.104 282.282667 0 511.104-228.842667 511.104-511.104C1022.208 228.821333 793.386667 0 511.104 0zM511.104 898.496c-213.973333 0-387.434667-173.44-387.434667-387.413333 0-213.952 173.44-387.413333 387.434667-387.413333 213.952 0 387.392 173.44 387.392 387.413333C898.496 725.056 725.056 898.496 511.104 898.496z" }),
1988
- createElementVNode("path", { d: "M236.437333 463.914667l549.333333 0 0 96.874667-549.333333 0 0-96.874667Z" })
1989
- ], -1)
1990
- ]))) : item.shortcut ? (openBlock(), createElementBlock("div", _hoisted_10, toDisplayString(item.shortcut), 1)) : createCommentVNode("", true)
1991
- ], 10, _hoisted_6)) : createCommentVNode("", true)
1992
- ], 64);
1993
- }), 64))
1994
- ]),
1995
- createElementVNode("div", _hoisted_11, [
1996
- createVNode(unref(ElCheckbox), {
1997
- size: "small",
1998
- modelValue: showShortcutKey.value,
1999
- "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => showShortcutKey.value = $event),
2000
- label: "快捷键提示"
2001
- }, null, 8, ["modelValue"]),
2002
- createVNode(unref(ElCheckbox), {
2003
- size: "small",
2004
- modelValue: dxfVisible.value,
2005
- "onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => dxfVisible.value = $event),
2006
- label: "dxf"
2007
- }, null, 8, ["modelValue"])
2008
- ]),
2009
- _ctx.permission === "admin" ? (openBlock(), createElementBlock("div", _hoisted_12, [
2010
- createVNode(unref(ElButton), {
2011
- style: { "padding": "5px", "font-size": "10px" },
2012
- size: "small",
2013
- type: "success",
2014
- onClick: selectLocalFile
2015
- }, {
2016
- default: withCtx(() => _cache[17] || (_cache[17] = [
2017
- createTextVNode(" 选择文件 ", -1)
2018
- ])),
2019
- _: 1,
2020
- __: [17]
2021
- }),
2022
- createVNode(unref(ElButton), {
2023
- style: { "padding": "5px", "font-size": "10px" },
2024
- size: "small",
2025
- type: "primary",
2026
- onClick: _cache[5] || (_cache[5] = ($event) => unref(dxfSystem).Dxf.download("test.dxf"))
2027
- }, {
2028
- default: withCtx(() => _cache[18] || (_cache[18] = [
2029
- createTextVNode(" 下载 DXF ", -1)
2030
- ])),
2031
- _: 1,
2032
- __: [18]
2033
- }),
2034
- createVNode(unref(ElButton), {
2035
- style: { "padding": "5px", "font-size": "10px" },
2036
- size: "small",
2037
- type: "primary",
2038
- onClick: _cache[6] || (_cache[6] = ($event) => unref(whiteModel).downloadGltf("test.glb", true))
2039
- }, {
2040
- default: withCtx(() => _cache[19] || (_cache[19] = [
2041
- createTextVNode(" 下载 白膜 ", -1)
2042
- ])),
2043
- _: 1,
2044
- __: [19]
2045
- }),
2046
- createVNode(unref(ElButton), {
2047
- style: { "padding": "5px", "font-size": "10px" },
2048
- size: "small",
2049
- type: "primary",
2050
- onClick: _cache[7] || (_cache[7] = ($event) => console.log(unref(dxfSystem).Dxf.originalData))
2051
- }, {
2052
- default: withCtx(() => _cache[20] || (_cache[20] = [
2053
- createTextVNode(" 打印Json ", -1)
2054
- ])),
2055
- _: 1,
2056
- __: [20]
2057
- })
2058
- ])) : createCommentVNode("", true),
2059
- createVNode(Transition, null, {
2060
- default: withCtx(() => [
2061
- createElementVNode("div", _hoisted_13, [
2062
- selectLineCount.value ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
2063
- selectLineCount.value == 2 ? (openBlock(), createElementBlock("div", {
2064
- key: 0,
2065
- onClick: _cache[8] || (_cache[8] = ($event) => unref(defaultComponent).mergeLine()),
2066
- title: "合并(Ctrl + G)",
2067
- class: "active:scale-[0.8] transition-all cursor-pointer"
2068
- }, _cache[21] || (_cache[21] = [
2069
- createElementVNode("svg", {
2070
- viewBox: "0 0 1024 1024",
2071
- version: "1.1",
2072
- xmlns: "http://www.w3.org/2000/svg",
2073
- fill: "#555",
2074
- width: "16",
2075
- height: "16"
2076
- }, [
2077
- createElementVNode("path", { d: "M114.176 46.528h618.496c37.312 0.064 67.584 30.336 67.648 67.648v618.56c0 37.248-30.336 67.584-67.648 67.584H114.176A67.776 67.776 0 0 1 46.528 732.8V114.176c0-37.312 30.336-67.648 67.648-67.648z m2.176 686.208l616.32-2.24-2.176-616.32-614.144 2.176v616.32zM907.648 291.2l2.176 616.32H291.264a34.88 34.88 0 1 0 0 69.888h618.56c37.312 0 67.648-30.336 67.648-67.648V291.264a34.88 34.88 0 1 0-69.824 0z" })
2078
- ], -1)
2079
- ]))) : createCommentVNode("", true),
2080
- selectLineCount.value == 2 ? (openBlock(), createElementBlock("div", {
2081
- key: 1,
2082
- onClick: _cache[9] || (_cache[9] = ($event) => unref(defaultComponent).connection()),
2083
- title: "两点连接(Shift + L)",
2084
- class: "active:scale-[0.8] transition-all cursor-pointer"
2085
- }, _cache[22] || (_cache[22] = [
2086
- createElementVNode("svg", {
2087
- viewBox: "0 0 1024 1024",
2088
- version: "1.1",
2089
- xmlns: "http://www.w3.org/2000/svg",
2090
- fill: "#555",
2091
- width: "16",
2092
- height: "16"
2093
- }, [
2094
- createElementVNode("path", { d: "M639.999191 893.597594c-0.999994-54.699654-36.39977-101.099361-85.39946-118.399252-6.39996-2.199986-10.599933-8.299948-10.599933-14.999905V263.801573c0-6.699958 4.199973-12.799919 10.599933-14.999905 49.09969-17.299891 84.399467-63.599598 85.39946-118.399252C641.299183 59.902862 583.399549 0.503237 512.899994 0.00324 441.800444-0.496757 384.000809 57.00288 384.000809 128.002431c0 55.699648 35.599775 103.099349 85.299461 120.699238 6.39996 2.299985 10.699932 8.299948 10.699932 15.099904v496.396864c0 6.799957-4.299973 12.799919-10.699932 15.099904-49.699686 17.599889-85.299461 64.999589-85.299461 120.699238 0 70.999551 57.799635 128.499188 128.899185 127.999191 70.499555-0.499997 128.399189-59.899622 127.099197-130.399176zM448.000404 128.002431c0-35.299777 28.699819-63.999596 63.999596-63.999595s63.999596 28.699819 63.999596 63.999595-28.699819 63.999596-63.999596 63.999596-63.999596-28.699819-63.999596-63.999596z m0 767.995148c0-35.299777 28.699819-63.999596 63.999596-63.999596s63.999596 28.699819 63.999596 63.999596-28.699819 63.999596-63.999596 63.999595-63.999596-28.699819-63.999596-63.999595z" })
2095
- ], -1)
2096
- ]))) : createCommentVNode("", true),
2097
- selectLineCount.value == 2 ? (openBlock(), createElementBlock("div", {
2098
- key: 2,
2099
- onClick: _cache[10] || (_cache[10] = ($event) => unref(defaultComponent).intersectionConnection()),
2100
- title: "延长线交点连接(Ctrl + Shift + L)",
2101
- class: "active:scale-[0.8] transition-all cursor-pointer"
2102
- }, _cache[23] || (_cache[23] = [
2103
- createElementVNode("svg", {
2104
- viewBox: "0 0 1024 1024",
2105
- version: "1.1",
2106
- xmlns: "http://www.w3.org/2000/svg",
2107
- fill: "#555",
2108
- width: "16",
2109
- height: "16"
2110
- }, [
2111
- createElementVNode("path", { d: "M491.80027198 557.44938977c-10.0998647-15.14979706-20.19972802-25.24966037-35.34952507-35.34952507-15.14979706-10.0998647-30.29959271-15.14979706-50.49932211-15.14979704-55.54925309 0-100.99864286 45.44938977-100.99864287 100.99864285 0 15.14979706 5.04993234 35.34952507 15.14979568 50.49932212 10.0998647 15.14979706 20.19972802 30.29959271 35.34952506 35.34952508 15.14979706 10.0998647 35.34952507 15.14979706 50.49932213 15.14979567 55.54925309 0 100.99864286-45.44938977 100.99864286-100.99864287 0-15.14979706-5.04993234-35.34952507-15.14979568-50.49932074z m-85.84884718 100.99864286h-15.14979706c-20.19972802-5.04993234-30.29959271-20.19972802-35.34952507-35.34952507V612.99864286c0-30.29959271 25.24966037-50.49932212 50.49932213-50.49932074h10.09986469c15.14979706 5.04993234 30.29959271 15.14979706 35.34952507 35.34952507v15.14979567c5.04993234 25.24966037-20.19972802 45.44938977-45.44938976 45.44938977z" }),
2112
- createElementVNode("path", { d: "M390.80162774 658.44803263l-40.39945604 40.39945743-227.24694747 222.19701373-35.34952506-35.34952508 227.24694745-227.24694608 40.39945605-40.39945743c5.04993234 20.19972802 20.19972802 35.34952507 35.34952507 40.39945743zM648.34816793 405.9514248l-40.39945742 40.3994574-116.14843853 116.14843992-40.39945742 35.34952507c-5.04993234-20.19972802-20.19972802-30.29959271-35.34952507-35.34952507l40.39945742-40.39945742 116.14843853-111.09850756 35.34952507-35.34952507c10.0998647 15.14979706 20.19972802 25.24966037 40.39945742 30.29959273zM926.09443614 133.25508894L749.34681078 310.00271428l-40.3994574 40.39945742c-5.04993234-20.19972802-15.14979706-35.34952507-30.29959272-40.39945742l35.34952506-40.39945742 176.74762534-176.74762535 35.34952508 40.39945743z" }),
2113
- createElementVNode("path", { d: "M749.34681078 310.00271428c-10.0998647-15.14979706-20.19972802-30.29959271-35.34952506-35.34952506-15.14979706-10.0998647-35.34952507-15.14979706-55.54925309-15.14979706-55.54925309 0-100.99864286 45.44938977-100.99864286 100.99864286 0 20.19972802 5.04993234 40.39945743 15.14979567 55.54925447 10.0998647 15.14979706 20.19972802 25.24966037 35.34952507 35.34952507 15.14979706 10.0998647 30.29959271 15.14979706 50.49932212 15.14979567 55.54925309 0 100.99864286-45.44938977 100.99864286-100.99864286 0-25.24966037-5.04993234-40.39945743-10.09986471-55.54925309z m-90.89877815 95.94871052h-10.0998647c-20.19972802-5.04993234-35.34952507-15.14979706-40.39945742-35.34952509 0-5.04993234-5.04993234-10.0998647-5.04993234-15.14979704 0-30.29959271 25.24966037-50.49932212 50.49932212-50.49932074 5.04993234 0 10.0998647 0 15.14979704 5.04993235 15.14979706 5.04993234 30.29959271 20.19972802 30.29959273 40.39945742v10.09986332c10.0998647 25.24966037-15.14979706 45.44938977-40.39945743 45.44938978z" })
2114
- ], -1)
2115
- ]))) : createCommentVNode("", true),
2116
- hasWindowLine.value ? (openBlock(), createElementBlock("div", {
2117
- key: 3,
2118
- onClick: _cache[11] || (_cache[11] = ($event) => unref(defaultComponent).deleteSelectWindow()),
2119
- title: "清除窗户(Q + Delete)",
2120
- class: "active:scale-[0.8] transition-all cursor-pointer"
2121
- }, _cache[24] || (_cache[24] = [
2122
- createElementVNode("svg", {
2123
- viewBox: "0 0 1024 1024",
2124
- version: "1.1",
2125
- xmlns: "http://www.w3.org/2000/svg",
2126
- fill: "#555",
2127
- width: "16",
2128
- height: "16"
2129
- }, [
2130
- createElementVNode("path", { d: "M220.451548 913.518482V318.145854c0-27.62038 22.505495-50.125874 50.125875-50.125874H865.95005c27.62038 0 50.125874 22.505495 50.125874 50.125874v218.917083h59.332667V318.145854c0-60.355644-49.102897-109.458541-109.458541-109.458541h-39.896104v-99.228772C826.053946 49.102897 776.951049 0 716.595405 0H121.222777C60.867133 0 11.764236 49.102897 11.764236 109.458541V705.854146c0 60.355644 49.102897 109.458541 109.458541 109.458541h39.896104v99.228772c0 60.355644 49.102897 109.458541 109.458542 109.458541h257.790209v-59.332667H269.554446c-26.597403-1.022977-49.102897-23.528472-49.102898-51.148851z m-59.332667-595.372628v436.811189h-39.896104c-27.62038 0-50.125874-22.505495-50.125874-50.125874V109.458541c0-27.62038 22.505495-50.125874 50.125874-50.125874H716.595405c27.62038 0 50.125874 22.505495 50.125874 50.125874v99.228772H269.554446c-59.332667 0-108.435564 49.102897-108.435565 109.458541z" }),
2131
- createElementVNode("path", { d: "M902.777223 854.185814l98.205794-98.205794c15.344655-15.344655 15.344655-40.919081 0-56.263736s-40.919081-15.344655-56.263736 0L846.513487 797.922078 747.284715 699.716284c-15.344655-15.344655-40.919081-15.344655-56.263736 0s-15.344655 40.919081 0 56.263736l98.205794 98.205794-98.205794 98.205794c-15.344655 15.344655-15.344655 40.919081 0 56.263737s40.919081 15.344655 56.263736 0l98.205794-98.205795 98.205795 98.205795c15.344655 15.344655 40.919081 15.344655 56.263736 0s15.344655-40.919081 0-56.263737l-97.182817-98.205794z" })
2132
- ], -1)
2133
- ]))) : createCommentVNode("", true),
2134
- createElementVNode("div", {
2135
- onClick: _cache[12] || (_cache[12] = ($event) => unref(defaultComponent).deleteSelectLine()),
2136
- title: "删除(Delete)",
2137
- class: "active:scale-[0.8] transition-all cursor-pointer"
2138
- }, _cache[25] || (_cache[25] = [
2139
- createElementVNode("svg", {
2140
- viewBox: "0 0 1024 1024",
2141
- version: "1.1",
2142
- xmlns: "http://www.w3.org/2000/svg",
2143
- fill: "#555",
2144
- width: "16",
2145
- height: "16"
2146
- }, [
2147
- createElementVNode("path", { d: "M909.050991 169.476903l-217.554898 0 0-31.346939c0-39.5866-32.205493-71.792093-71.793116-71.792093L408.15591 66.337871c-39.5866 0-71.792093 32.205493-71.792093 71.792093l0 31.346939L113.349581 169.476903c-11.013845 0-19.942191 8.940626-19.942191 19.954471s8.928347 19.954471 19.942191 19.954471l84.264149 0 0 640.687918c0 60.479443 49.203632 109.683075 109.683075 109.683075l416.474366 0c60.479443 0 109.683075-49.203632 109.683075-109.683075L833.454246 209.385844l75.595722 0c11.012821 0 19.942191-8.940626 19.942191-19.954471S920.063813 169.476903 909.050991 169.476903zM376.2482 138.130987c0-17.593703 14.314007-31.907711 31.907711-31.907711l211.547067 0c17.593703 0 31.907711 14.314007 31.907711 31.907711l0 31.346939L376.2482 169.477926 376.2482 138.130987zM793.569864 850.074785c0 38.486546-31.312146 69.798692-69.798692 69.798692L307.297828 919.873478c-38.486546 0-69.798692-31.312146-69.798692-69.798692L237.499136 211.042577l556.070728 0L793.569864 850.074785zM510.662539 861.276918c11.012821 0 19.954471-8.92937 19.954471-19.942191L530.61701 294.912753c0-11.013845-8.94165-19.942191-19.954471-19.942191s-19.954471 8.928347-19.954471 19.942191L490.708068 841.334727C490.708068 852.347548 499.649717 861.276918 510.662539 861.276918zM374.562814 801.449321c11.012821 0 19.954471-8.92937 19.954471-19.942191L394.517285 354.74035c0-11.013845-8.94165-19.942191-19.954471-19.942191s-19.954471 8.928347-19.954471 19.942191l0 426.76678C354.608344 792.519951 363.549993 801.449321 374.562814 801.449321zM649.832182 801.449321c11.012821 0 19.954471-8.92937 19.954471-19.942191L669.786653 354.74035c0-11.013845-8.94165-19.942191-19.954471-19.942191s-19.954471 8.928347-19.954471 19.942191l0 426.76678C629.877711 792.519951 638.81936 801.449321 649.832182 801.449321z" })
2148
- ], -1)
2149
- ]))
2150
- ], 64)) : (openBlock(), createElementBlock("div", _hoisted_14, " 无可用操作 "))
2151
- ])
2152
- ]),
2153
- _: 1
2045
+ x("path", { d: "M511.104 0C228.821333 0 0 228.821333 0 511.104c0 282.282667 228.821333 511.104 511.104 511.104 282.282667 0 511.104-228.842667 511.104-511.104C1022.208 228.821333 793.386667 0 511.104 0zM511.104 898.496c-213.973333 0-387.434667-173.44-387.434667-387.413333 0-213.952 173.44-387.413333 387.434667-387.413333 213.952 0 387.392 173.44 387.392 387.413333C898.496 725.056 725.056 898.496 511.104 898.496z" }),
2046
+ x("path", { d: "M236.437333 463.914667l549.333333 0 0 96.874667-549.333333 0 0-96.874667Z" })
2047
+ ], -1)
2048
+ ]))) : v.shortcut ? (C(), S("div", eo, J(v.shortcut), 1)) : $("", !0)
2049
+ ], 10, Qn)) : $("", !0)
2050
+ ], 64))), 64))
2051
+ ]),
2052
+ x("div", to, [
2053
+ z(p(Re), {
2054
+ size: "small",
2055
+ modelValue: H.value,
2056
+ "onUpdate:modelValue": u[3] || (u[3] = (v) => H.value = v),
2057
+ label: "快捷键提示"
2058
+ }, null, 8, ["modelValue"]),
2059
+ z(p(Re), {
2060
+ size: "small",
2061
+ modelValue: d.value,
2062
+ "onUpdate:modelValue": u[4] || (u[4] = (v) => d.value = v),
2063
+ label: "dxf"
2064
+ }, null, 8, ["modelValue"])
2065
+ ]),
2066
+ f.permission === "admin" ? (C(), S("div", no, [
2067
+ z(p(pe), {
2068
+ style: { padding: "5px", "font-size": "10px" },
2069
+ size: "small",
2070
+ type: "success",
2071
+ onClick: o
2072
+ }, {
2073
+ default: F(() => u[12] || (u[12] = [
2074
+ le(" 选择文件 ", -1)
2075
+ ])),
2076
+ _: 1,
2077
+ __: [12]
2078
+ }),
2079
+ z(p(pe), {
2080
+ style: { padding: "5px", "font-size": "10px" },
2081
+ size: "small",
2082
+ type: "primary",
2083
+ onClick: u[5] || (u[5] = (v) => console.log(p(b).Dxf.originalData))
2084
+ }, {
2085
+ default: F(() => u[13] || (u[13] = [
2086
+ le(" 打印Json ", -1)
2087
+ ])),
2088
+ _: 1,
2089
+ __: [13]
2090
+ }),
2091
+ z(p(pe), {
2092
+ style: { padding: "5px", "font-size": "10px" },
2093
+ size: "small",
2094
+ type: "primary",
2095
+ onClick: u[6] || (u[6] = (v) => p(b).Dxf.download("test.dxf"))
2096
+ }, {
2097
+ default: F(() => u[14] || (u[14] = [
2098
+ le(" 下载DXF ", -1)
2099
+ ])),
2100
+ _: 1,
2101
+ __: [14]
2102
+ }),
2103
+ z(p(pe), {
2104
+ style: { padding: "5px", "font-size": "10px" },
2105
+ size: "small",
2106
+ type: "primary",
2107
+ onClick: u[7] || (u[7] = (v) => p(se).downloadGltf("test.glb", !0))
2108
+ }, {
2109
+ default: F(() => u[15] || (u[15] = [
2110
+ le(" 下载白膜 ", -1)
2111
+ ])),
2112
+ _: 1,
2113
+ __: [15]
2154
2114
  })
2155
- ])) : createCommentVNode("", true)
2156
- ], 38)
2157
- ], 512);
2158
- };
2159
- }
2160
- });
2161
- const _export_sfc = (sfc, props) => {
2162
- const target = sfc.__vccOpts || sfc;
2163
- for (const [key, val] of props) {
2164
- target[key] = val;
2165
- }
2166
- return target;
2167
- };
2168
- const EditorTool = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-a5aa9d5a"]]);
2169
- let Editor$1 = class Editor extends Component {
2115
+ ])) : $("", !0),
2116
+ z(fe, null, {
2117
+ default: F(() => [
2118
+ x("div", oo, [
2119
+ z(Nt, null, {
2120
+ default: F(() => [
2121
+ (C(), S(ce, null, Me(rt, (v) => x("div", {
2122
+ onClick: (G) => v.show.value && (v.action ? v.action() : p(_).commandManager.start(v.command, [...p(j).selectLines])),
2123
+ title: `${v.name}(${v.shortcut})`,
2124
+ class: R(["size-[20px] flex justify-center items-center relative overflow-hidden active:scale-[0.8] border-1 border-[#ccc] rounded-[4px] transition-all cursor-pointer", { "opacity-30 bg-[#ccc] !cursor-no-drop active:!scale-[1]": !v.show.value, [v.class ?? ""]: !0 }]),
2125
+ key: v.command
2126
+ }, [
2127
+ x("img", {
2128
+ class: "size-[14px]",
2129
+ src: v.src
2130
+ }, null, 8, ao)
2131
+ ], 10, so)), 64))
2132
+ ]),
2133
+ _: 1
2134
+ })
2135
+ ])
2136
+ ]),
2137
+ _: 1
2138
+ })
2139
+ ])) : $("", !0)
2140
+ ], 38)
2141
+ ], 512));
2142
+ }
2143
+ }), io = (r, e) => {
2144
+ const t = r.__vccOpts || r;
2145
+ for (const [n, o] of e)
2146
+ t[n] = o;
2147
+ return t;
2148
+ }, lo = /* @__PURE__ */ io(ro, [["__scopeId", "data-v-16243417"]]);
2149
+ let ot = class extends ye {
2170
2150
  static name = "Editor";
2171
- container = new THREE.Group();
2151
+ container = new m.Group();
2172
2152
  get renderer() {
2173
2153
  return this.parent?.findComponentByName("Renderer");
2174
2154
  }
@@ -2190,32 +2170,23 @@ let Editor$1 = class Editor extends Component {
2190
2170
  get domContainer() {
2191
2171
  return this.parent?.findComponentByName("DomContainer");
2192
2172
  }
2193
- commandManager = new CommandManager();
2194
- plane = new THREE.Mesh(new THREE.PlaneGeometry(2e3, 2e3, 2, 2));
2173
+ commandManager = new pn();
2174
+ plane = new m.Mesh(new m.PlaneGeometry(2e3, 2e3, 2, 2));
2195
2175
  app;
2196
2176
  domElement = document.createElement("div");
2197
2177
  viewPermission;
2198
- constructor(viewPermission) {
2199
- super();
2200
- this.viewPermission = viewPermission;
2178
+ constructor(e) {
2179
+ super(), this.viewPermission = e;
2201
2180
  }
2202
2181
  onAddFromParent() {
2203
2182
  setTimeout(() => this.openEdit(), 10);
2204
- const grid = new THREE.GridHelper(200, 100, 6710886, 4473924);
2205
- grid.rotation.x = Math.PI * 0.5;
2206
- grid.position.z = -0.01;
2207
- this.container.add(grid);
2208
- this.container.add(this.plane);
2209
- this.plane.visible = false;
2210
- const cancelEvent = this.addEventListener("update", () => {
2211
- if (this.domContainer.domElement.parentElement) {
2212
- this.domContainer.domElement.parentElement.appendChild(this.domElement);
2213
- cancelEvent();
2214
- }
2183
+ const e = new m.GridHelper(200, 100, 6710886, 4473924);
2184
+ e.rotation.x = Math.PI * 0.5, e.position.z = -0.01, this.container.add(e), this.container.add(this.plane), this.plane.visible = !1;
2185
+ const t = this.addEventListener("update", () => {
2186
+ this.domContainer.domElement.parentElement && (this.domContainer.domElement.parentElement.appendChild(this.domElement), t());
2215
2187
  });
2216
2188
  setTimeout(() => {
2217
- this.app = createApp(EditorTool, { dxfSystem: this.parent, permission: this.viewPermission });
2218
- this.app.mount(this.domElement);
2189
+ this.app = Rt(lo, { dxfSystem: this.parent, permission: this.viewPermission }), this.app.mount(this.domElement);
2219
2190
  });
2220
2191
  }
2221
2192
  /**
@@ -2226,172 +2197,113 @@ let Editor$1 = class Editor extends Component {
2226
2197
  type: "cancelCommand"
2227
2198
  });
2228
2199
  }
2229
- coords = new THREE.Vector2();
2230
- pointerPosition = new THREE.Vector2();
2200
+ coords = new m.Vector2();
2201
+ pointerPosition = new m.Vector2();
2231
2202
  _exitEditCallBack;
2232
2203
  /**
2233
2204
  * 打开编辑器
2234
2205
  */
2235
2206
  openEdit() {
2236
- const renderer = this.renderer, domEventRegister = this.domEventRegister, dxf = this.dxf, orbitControls = renderer.orbitControls, camera = renderer.camera, center = dxf.box.center, cameraPosition = renderer.camera.position.clone(), target = orbitControls?.target?.clone(), size = new THREE.Vector2(), raycaster = new THREE.Raycaster(), coords = this.coords, pointerPosition = this.pointerPosition;
2237
- this.container.position.z = dxf.originalZAverage;
2238
- renderer.scene.add(this.container);
2239
- camera.position.set(center.x, center.y, 5);
2240
- if (orbitControls) {
2241
- orbitControls.target.set(center.x, center.y, 0);
2242
- orbitControls.enableRotate = false;
2243
- }
2244
- const mousemoveFun = () => {
2245
- renderer.renderer.getSize(size);
2246
- const x = domEventRegister.pointer.x / size.x * 2 - 1;
2247
- const y = -(domEventRegister.pointer.y / size.y * 2 - 1);
2248
- coords.set(x, y);
2249
- raycaster.setFromCamera(coords, renderer.camera);
2250
- const intersections = raycaster.intersectObject(this.plane);
2251
- if (intersections.length) {
2252
- pointerPosition.copy(intersections[0].point);
2253
- this.dispatchEvent({
2254
- type: "pointerPositionChange",
2255
- position: pointerPosition
2256
- });
2257
- }
2207
+ const e = this.renderer, t = this.domEventRegister, n = this.dxf, o = e.orbitControls, s = e.camera, a = n.box.center, i = e.camera.position.clone(), d = o?.target?.clone(), l = new m.Vector2(), c = new m.Raycaster(), h = this.coords, w = this.pointerPosition;
2208
+ this.container.position.z = n.originalZAverage, e.scene.add(this.container), o && (s.position.set(a.x, a.y, 15), o.target.set(a.x, a.y, 0), o.enableRotate = !1);
2209
+ const g = () => {
2210
+ e.renderer.getSize(l);
2211
+ const k = t.pointer.x / l.x * 2 - 1, b = -(t.pointer.y / l.y * 2 - 1);
2212
+ h.set(k, b), c.setFromCamera(h, e.camera.children.length ? e.camera.children[0] : e.camera);
2213
+ const P = c.intersectObject(this.plane);
2214
+ P.length && (w.copy(P[0].point), this.dispatchEvent({
2215
+ type: "pointerPositionChange",
2216
+ position: w
2217
+ }));
2258
2218
  };
2259
- domEventRegister.addEventListener("mousemove", mousemoveFun);
2260
- this.commandManager.disabled = false;
2261
- this.commandManager.start("default");
2262
- this._exitEditCallBack = () => {
2263
- domEventRegister.removeEventListener("mousemove", mousemoveFun);
2264
- camera.position.copy(cameraPosition);
2265
- if (orbitControls) {
2266
- orbitControls.enableRotate = true;
2267
- orbitControls.target.copy(target);
2268
- }
2219
+ t.addEventListener("mousemove", g), this.commandManager.disabled = !1, this.commandManager.start("default"), this._exitEditCallBack = () => {
2220
+ t.removeEventListener("mousemove", g), o && (s.position.copy(i), o.enableRotate = !0, o.target.copy(d));
2269
2221
  };
2270
2222
  }
2271
2223
  /**
2272
2224
  * 退出编辑
2273
2225
  */
2274
2226
  exitEdit() {
2275
- if (typeof this._exitEditCallBack === "function") {
2276
- this._exitEditCallBack();
2277
- this._exitEditCallBack = void 0;
2278
- this.commandManager.disabled = true;
2279
- }
2227
+ typeof this._exitEditCallBack == "function" && (this._exitEditCallBack(), this._exitEditCallBack = void 0, this.commandManager.disabled = !0);
2280
2228
  }
2281
2229
  destroy() {
2282
- super.destroy();
2283
- this.exitEdit();
2284
- this.renderer.scene.remove(this.container);
2285
- this.domElement.remove();
2286
- this.app?.unmount();
2230
+ super.destroy(), this.exitEdit(), this.renderer.scene.remove(this.container), this.domElement.remove(), this.app?.unmount();
2287
2231
  }
2288
2232
  };
2289
- class PointDrag extends CommandFlowComponent {
2233
+ class co extends T {
2290
2234
  static name = "PointDrag";
2291
- container = new THREE.Group();
2235
+ container = new m.Group();
2292
2236
  interruptKeys = ["escape"];
2293
2237
  shortcutKeys = ["control", "p"];
2294
2238
  commandName = "point";
2295
- onAddFromParent(parent) {
2296
- super.onAddFromParent(parent);
2297
- this.editor.container.add(this.container);
2298
- this.container.position.z = 1e-3;
2299
- const commandFlow = this.commandManager.addCommandFlow(this.commandName).add(this.createInterrupt()).add(this.createCursor("crosshair")).add(this.selectPoint.bind(this)).add(this.drag.bind(this));
2300
- commandFlow.addEventListener("finally", this.createFinally());
2301
- commandFlow.addEventListener("completed", (e) => this.completed(e.data));
2302
- this.eventInput.addKeyCombination(this.commandName, this.shortcutKeys);
2303
- this.eventInput.addEventListener("codeChange", async () => this.eventInput.isKeyCombination(this.commandName) && await this.commandManager.start(this.commandName));
2304
- this.eventInput.addCancelDefaultBehavior(() => this.eventInput.isOnlyKeyDowns(this.shortcutKeys));
2239
+ onAddFromParent(e) {
2240
+ super.onAddFromParent(e), this.editor.container.add(this.container), this.container.position.z = 1e-3;
2241
+ const t = this.commandManager.addCommandFlow(this.commandName).add(this.createInterrupt()).add(this.createCursor("crosshair")).add(this.selectPoint.bind(this)).add(this.drag.bind(this)).addRollback(this.rollback.bind(this)).addRevokeRollback(this.revokeRollback.bind(this));
2242
+ t.addEventListener("finally", this.createFinally()), t.addEventListener("completed", (n) => this.completed(n.data)), this.eventInput.addKeyCombination(this.commandName, this.shortcutKeys), this.eventInput.addEventListener("codeChange", async () => this.eventInput.isKeyCombination(this.commandName) && await this.commandManager.start(this.commandName)), this.eventInput.addCancelDefaultBehavior(() => this.eventInput.isOnlyKeyDowns(this.shortcutKeys));
2305
2243
  }
2306
2244
  /** 选择开始点
2307
2245
  * @param next
2308
2246
  */
2309
- selectPoint(next) {
2310
- let currentPoint = null, circle = new THREE.Mesh(new THREE.SphereGeometry(0.05), new THREE.MeshBasicMaterial({ color: 16711935 })), currentLine = null;
2247
+ selectPoint(e) {
2248
+ let t = null, n = new m.Mesh(new m.SphereGeometry(0.05), new m.MeshBasicMaterial({ color: 16711935 })), o = null;
2311
2249
  this.addEventRecord("selectPointStart").add(this.editor.addEventListener("pointerPositionChange", () => {
2312
- const { point, line: line2, find, mode } = this.editor.renderManager.adsorption();
2313
- if (find && mode === "point") {
2314
- this.domElement.style.cursor = "none";
2315
- circle.position.copy(point);
2316
- currentLine = line2;
2317
- currentPoint = point.clone();
2318
- this.container.add(circle);
2319
- } else {
2320
- this.domElement.style.cursor = "no-drop";
2321
- currentPoint = null;
2322
- circle.removeFromParent();
2323
- }
2250
+ const { point: s, line: a, find: i, mode: d } = this.editor.renderManager.adsorption();
2251
+ i && d === "point" ? (this.domElement.style.cursor = "none", n.position.copy(s), o = a, t = s.clone(), this.container.add(n)) : (this.domElement.style.cursor = "no-drop", t = null, n.removeFromParent());
2324
2252
  })).add(this.eventInput.addEventListener("codeChange", () => {
2325
- if (this.eventInput.isKeyDown("mouse_0") && currentPoint) {
2326
- this.canceEventRecord("selectPointStart");
2327
- circle.material.color.set(65280);
2328
- next({ point: currentPoint, line: currentLine });
2329
- }
2330
- }));
2331
- this.addEventRecord("clear").add(() => circle.removeFromParent());
2253
+ this.eventInput.isKeyDown("mouse_0") && t && (this.canceEventRecord("selectPointStart"), n.material.color.set(65280), e({ point: t, line: o }));
2254
+ })), this.addEventRecord("clear").add(() => n.removeFromParent());
2332
2255
  }
2333
2256
  /** 拖拽点
2334
2257
  * @description 拖拽点到指定位置
2335
2258
  * @param next
2336
2259
  * @param param1
2337
2260
  */
2338
- drag(next, { point, line: line2 }) {
2261
+ drag(e, { point: t, line: n }) {
2339
2262
  this.domElement.style.cursor = "crosshair";
2340
- const mode = line2.start.equal(Point.from(point)) ? "start" : "end", start = mode == "start" ? new THREE.Vector3(line2.end.x, line2.end.y, 0) : new THREE.Vector3(line2.start.x, line2.start.y, 0), end = point.clone(), lines = new Lines([start, end], 16711935), circle = new THREE.Mesh(new THREE.SphereGeometry(0.03), new THREE.MeshBasicMaterial({ color: 16711935 }));
2341
- this.container.add(lines);
2342
- this.addEventRecord("clear").add(this.editor.addEventListener("pointerPositionChange", () => {
2343
- let { point: point2, find } = this.editor.renderManager.adsorption(), cursor = "none";
2344
- if (point2) {
2345
- if (this.eventInput.isKeyDown("shift")) {
2346
- const p = line2.projectPoint(Point.from(point2), false);
2347
- point2.set(p?.x ?? point2.x, p?.y ?? point2.y, 0);
2348
- find = true;
2349
- cursor = "crosshair";
2350
- }
2351
- if (find) {
2352
- circle.position.copy(point2);
2353
- this.container.add(circle);
2354
- } else {
2355
- circle.removeFromParent();
2356
- cursor = "crosshair";
2263
+ const o = n.start.equal(A.from(t)) ? "start" : "end", s = o == "start" ? new m.Vector3(n.end.x, n.end.y, 0) : new m.Vector3(n.start.x, n.start.y, 0), a = t.clone(), i = new he([s, a], 16711935), d = new m.Mesh(new m.SphereGeometry(0.03), new m.MeshBasicMaterial({ color: 16711935 }));
2264
+ this.container.add(i), this.addEventRecord("clear").add(this.editor.addEventListener("pointerPositionChange", () => {
2265
+ let { point: l, find: c } = this.editor.renderManager.adsorption(), h = "none";
2266
+ if (l) {
2267
+ if (this.dispatchEvent({ type: "pointerMove", point: l }), this.eventInput.isKeyDown("shift")) {
2268
+ const w = n.projectPoint(A.from(l), !1);
2269
+ l.set(w?.x ?? l.x, w?.y ?? l.y, 0), c = !0, h = "crosshair";
2357
2270
  }
2358
- end.copy(point2);
2359
- lines.setPoint(start, end);
2360
- this.domElement.style.cursor = cursor;
2271
+ c ? (d.position.copy(l), this.container.add(d)) : (d.removeFromParent(), h = "crosshair"), a.copy(l), i.setPoint(s, a), this.domElement.style.cursor = h;
2361
2272
  }
2362
2273
  })).add(this.eventInput.addEventListener("codeChange", () => {
2363
- if (this.eventInput.isKeyDown("mouse_0")) {
2364
- this.canceEventRecord("selectPointStart");
2365
- next({ point: end, line: line2, mode });
2366
- }
2367
- })).add(() => circle.removeFromParent()).add(() => lines.removeFromParent());
2274
+ this.eventInput.isKeyDown("mouse_0") && (this.canceEventRecord("selectPointStart"), e({ point: a, oldPoint: o === "end" ? n.end.clone() : n.start.clone(), line: n, mode: o }));
2275
+ })).add(() => d.removeFromParent()).add(() => i.removeFromParent());
2368
2276
  }
2369
2277
  /** 执行完成
2370
2278
  */
2371
- completed(data) {
2372
- const { line: line2, point, mode } = data;
2373
- this.renderManager.removeLine(line2);
2374
- if (mode === "end") line2.end.set(point.x, point.y);
2375
- else if (mode === "start") line2.start.set(point.x, point.y);
2376
- this.renderManager.addLine(line2);
2377
- this.renderManager.draw();
2279
+ completed(e) {
2280
+ const { line: t, point: n, mode: o } = e;
2281
+ this.renderManager.removeLine(t), o === "end" ? t.end.set(n.x, n.y) : o === "start" && t.start.set(n.x, n.y), this.renderManager.addLine(t), this.renderManager.draw();
2282
+ }
2283
+ /** 回滚操作
2284
+ * @param data
2285
+ */
2286
+ rollback(e) {
2287
+ const { line: t, oldPoint: n, mode: o } = e;
2288
+ return o === "end" ? t.end.set(n.x, n.y) : o === "start" && t.start.set(n.x, n.y), this.renderManager.addLine(t), this.renderManager.draw(), e;
2289
+ }
2290
+ /** 撤回回滚
2291
+ * @param lines
2292
+ * @returns
2293
+ */
2294
+ revokeRollback(e) {
2295
+ return this.completed(e), e;
2378
2296
  }
2379
2297
  }
2380
- function Editor_(dxfSystem, option = {}) {
2381
- dxfSystem.addComponent(new Editor$1(option.viewPermission));
2382
- dxfSystem.addComponent(new RenderManager());
2383
- dxfSystem.addComponent(new Default());
2384
- dxfSystem.addComponent(new DrawLine());
2385
- dxfSystem.addComponent(new DrawDoorLine());
2386
- dxfSystem.addComponent(new DrawWindow());
2387
- dxfSystem.addComponent(new PointDrag());
2298
+ function Ge(r, e = {}) {
2299
+ r.addComponent(new ot(e.viewPermission)), r.addComponent(new An()), r.addComponent(new ke()), r.addComponent(new hn()), r.addComponent(new jn()), r.addComponent(new Gn()), r.addComponent(new co()), r.addComponent(new W()), r.addComponent(new q()), r.addComponent(new ee()), r.addComponent(new U()), r.addComponent(new Q()), r.addComponent(new Y()), r.addComponent(new Z());
2388
2300
  }
2389
- const Editor2 = Object.assign(Editor_, {
2390
- create(option = {}) {
2391
- return (dxfSystem) => Editor_(dxfSystem, option);
2301
+ const yo = Object.assign(Ge, {
2302
+ create(r = {}) {
2303
+ return (e) => Ge(e, r);
2392
2304
  }
2393
2305
  });
2394
2306
  export {
2395
- Editor2 as Editor,
2396
- Editor_
2307
+ yo as Editor,
2308
+ Ge as Editor_
2397
2309
  };