@glodon-aiot/dataset-annotation 3.10.0-alpha.22 → 3.10.0-alpha.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,25 +1,25 @@
1
1
  var Pe = Object.defineProperty, Ue = Object.defineProperties;
2
- var be = Object.getOwnPropertyDescriptors;
2
+ var Xe = Object.getOwnPropertyDescriptors;
3
3
  var le = Object.getOwnPropertySymbols;
4
- var Xe = Object.prototype.hasOwnProperty, We = Object.prototype.propertyIsEnumerable;
5
- var ge = (s, f, a) => f in s ? Pe(s, f, { enumerable: !0, configurable: !0, writable: !0, value: a }) : s[f] = a, q = (s, f) => {
6
- for (var a in f || (f = {}))
7
- Xe.call(f, a) && ge(s, a, f[a]);
4
+ var Fe = Object.prototype.hasOwnProperty, We = Object.prototype.propertyIsEnumerable;
5
+ var ge = (s, l, u) => l in s ? Pe(s, l, { enumerable: !0, configurable: !0, writable: !0, value: u }) : s[l] = u, q = (s, l) => {
6
+ for (var u in l || (l = {}))
7
+ Fe.call(l, u) && ge(s, u, l[u]);
8
8
  if (le)
9
- for (var a of le(f))
10
- We.call(f, a) && ge(s, a, f[a]);
9
+ for (var u of le(l))
10
+ We.call(l, u) && ge(s, u, l[u]);
11
11
  return s;
12
- }, he = (s, f) => Ue(s, be(f));
12
+ }, he = (s, l) => Ue(s, Xe(l));
13
13
  import { jsxs as Re, jsx as S } from "react/jsx-runtime";
14
- import { useRef as h, useState as A, useCallback as P, useEffect as l } from "react";
14
+ import { useRef as R, useState as A, useCallback as P, useEffect as h } from "react";
15
15
  import { fabric as U } from "fabric";
16
- import { useKeyPress as b } from "ahooks";
16
+ import { useKeyPress as X } from "ahooks";
17
17
  import Oe from "classnames";
18
18
  import "./style.less.mjs";
19
- import Fe from "../components/Toolbar.mjs";
20
- import { useOCRLoadingIcon as Ye } from "./hooks/useOCRLoadingIcon.mjs";
21
- import { useRegionNameText as je } from "./hooks/useRegionNameText.mjs";
22
- import { useCropRegionImage as ye } from "./hooks/useCropRegionImage.mjs";
19
+ import ye from "../components/Toolbar.mjs";
20
+ import { useOCRLoadingIcon as be } from "./hooks/useOCRLoadingIcon.mjs";
21
+ import { useRegionNameText as Ye } from "./hooks/useRegionNameText.mjs";
22
+ import { useCropRegionImage as je } from "./hooks/useCropRegionImage.mjs";
23
23
  import { useDrawingMode as ze } from "./hooks/useDrawingMode.mjs";
24
24
  import { useRegionLoader as He } from "./hooks/useRegionLoader.mjs";
25
25
  import { useCanvasSetup as Ze } from "./hooks/useCanvasSetup.mjs";
@@ -36,42 +36,42 @@ import { canvasToImageCoords as tt, imageToCanvasCoords as ot } from "./utils/co
36
36
  import { REGION_NAME_PREFIX as rt, DEFAULT_REGION_NAME as nt, ZOOM_PRECISION_ERROR as st, TEXT_LAYOUT_RECT_FILL_COLOR as it, TEXT_LAYOUT_RECT_STROKE_COLOR as ct, TRANSPARENT_FILL as at, BASE_STROKE_WIDTH as ft } from "../constants.mjs";
37
37
  const Wt = ({
38
38
  sample: s,
39
- labelDefinitions: f,
40
- labels: a,
39
+ labelDefinitions: l,
40
+ labels: u,
41
41
  onImageLoad: pe,
42
- onChange: k,
42
+ onChange: x,
43
43
  onRegionSelect: J,
44
44
  onRegionChange: H,
45
- ocrRecognize: ve,
46
- activeLabelValue: R,
45
+ ocrRecognize: Te,
46
+ activeLabelValue: g,
47
47
  onClearActive: Z,
48
48
  selectedRegion: Q,
49
49
  onAppendTextToActive: Ee,
50
50
  readOnly: c
51
51
  }) => {
52
52
  var ue, me;
53
- const V = h(null), v = h(null), [Te, Ce] = A(!0), [e, Ne] = A(), [D, Ie] = A(), [p, ee] = A(1), [E, _] = A(c || !1), [T, I] = A(!1), [K, Ae] = A({
53
+ const V = R(null), T = R(null), [ve, Ce] = A(!0), [t, Ne] = A(), [D, Ie] = A(), [p, ee] = A(1), [E, _] = A(c || !1), [v, I] = A(!1), [K, Ae] = A({
54
54
  left: 0,
55
55
  top: 0
56
- }), X = h({
56
+ }), F = R({
57
57
  left: 0,
58
58
  top: 0
59
- }), ke = h({
59
+ }), xe = R({
60
60
  width: 0,
61
61
  height: 0
62
- }), u = h(/* @__PURE__ */ new Map()), te = h(null), oe = h(void 0), re = h(!1), ne = h(!1), W = h({
62
+ }), a = R(/* @__PURE__ */ new Map()), te = R(null), oe = R(void 0), re = R(!1), ne = R(!1), W = R({
63
63
  width: 0,
64
64
  height: 0
65
- }), se = h(!1), {
66
- updateOCRLoadingIcon: we,
67
- ocrLoadingIconMapRef: w
68
- } = Ye(e), {
65
+ }), se = R(!1), {
66
+ updateOCRLoadingIcon: ke,
67
+ ocrLoadingIconMapRef: k
68
+ } = be(t), {
69
69
  updateRegionNameText: O,
70
70
  regionNameTextMapRef: C
71
- } = je(e), ie = ye(s == null ? void 0 : s.fileUrl), xe = P((o) => {
72
- e && (C.current.forEach((t, r) => {
71
+ } = Ye(t), ie = je(s == null ? void 0 : s.fileUrl), we = P((o) => {
72
+ t && (C.current.forEach((e, r) => {
73
73
  const n = r.left || 0, i = r.top || 0;
74
- t.set({
74
+ e.set({
75
75
  left: n,
76
76
  // 与标注框左边对齐
77
77
  top: i,
@@ -81,144 +81,144 @@ const Wt = ({
81
81
  scaleY: 1 / o
82
82
  // 反向缩放,抵消画布缩放
83
83
  });
84
- }), e.renderAll());
85
- }, [e]), {
84
+ }), t.renderAll());
85
+ }, [t]), {
86
86
  updateCanvas: L
87
87
  } = Ze({
88
88
  sample: s,
89
89
  image: D,
90
90
  onImageLoad: pe,
91
91
  canvasRef: V,
92
- containerRef: v,
92
+ containerRef: T,
93
93
  canvasInitializedRef: re,
94
- bgImagePositionRef: X,
95
- bgImageSizeRef: ke,
96
- rectMapRef: u,
94
+ bgImagePositionRef: F,
95
+ bgImageSizeRef: xe,
96
+ rectMapRef: a,
97
97
  updateTextLayersRef: te,
98
- onRectPositionUpdated: xe,
98
+ onRectPositionUpdated: we,
99
99
  setCanvas: Ne,
100
100
  setImage: Ie,
101
101
  setScale: ee,
102
102
  setBgImagePosition: Ae,
103
103
  setLoading: Ce
104
104
  }), Me = P(() => {
105
- const o = Array.from(u.current.values());
106
- o.forEach((t, r) => {
107
- t.name = `${rt}${r + 1}`;
108
- }), u.current.forEach((t, r) => {
105
+ const o = Array.from(a.current.values());
106
+ o.forEach((e, r) => {
107
+ e.name = `${rt}${r + 1}`;
108
+ }), a.current.forEach((e, r) => {
109
109
  const n = C.current.get(r);
110
- n && (n.set("text", t.name || nt), e == null || e.renderAll());
111
- }), k && k(o);
112
- }, [k, e]), {
110
+ n && (n.set("text", e.name || nt), t == null || t.renderAll());
111
+ }), x && x(o);
112
+ }, [x, t]), {
113
113
  zoom: Se
114
114
  } = Ve({
115
- canvas: e,
115
+ canvas: t,
116
116
  setScale: ee,
117
117
  isZoomingRef: se
118
- }), F = P(
119
- (o, t) => tt(o, t, e, D, X),
120
- [e, D, K]
118
+ }), y = P(
119
+ (o, e) => tt(o, e, t, D, F),
120
+ [t, D, K]
121
121
  // 添加 bgImagePosition 作为依赖,确保在图片位置更新后函数能正确工作
122
122
  ), $ = P(
123
- (o, t) => ot(o, t, e, X),
124
- [e, K]
123
+ (o, e) => ot(o, e, t, F),
124
+ [t, K]
125
125
  // 添加 bgImagePosition 作为依赖,确保在图片位置更新后函数能正确工作
126
126
  ), {
127
- updateTextLayers: Y,
128
- textLayersMapRef: d,
129
- textLayoutContentMapRef: j
127
+ updateTextLayers: b,
128
+ textLayersMapRef: m,
129
+ textLayoutContentMapRef: Y
130
130
  } = Ke({
131
- canvas: e,
131
+ canvas: t,
132
132
  imageToCanvasCoords: $,
133
- activeLabelValue: R,
133
+ activeLabelValue: g,
134
134
  onAppendTextToActive: Ee
135
135
  });
136
- te.current = Y;
136
+ te.current = b;
137
137
  const {
138
138
  performOCRIfNeeded: ce,
139
139
  ocrRecognizingRef: ut
140
140
  } = qe({
141
- ocrRecognize: ve,
142
- onChange: k,
143
- updateTextLayers: Y,
144
- canvas: e,
145
- updateOCRLoadingIcon: we,
146
- rectMapRef: u,
147
- textLayersMapRef: d,
148
- textLayoutContentMapRef: j
141
+ ocrRecognize: Te,
142
+ onChange: x,
143
+ updateTextLayers: b,
144
+ canvas: t,
145
+ updateOCRLoadingIcon: ke,
146
+ rectMapRef: a,
147
+ textLayersMapRef: m,
148
+ textLayoutContentMapRef: Y
149
149
  }), {
150
150
  updateRegionShapeAndImage: ae
151
151
  } = $e({
152
- canvas: e,
152
+ canvas: t,
153
153
  image: D,
154
154
  draggable: E,
155
- canvasToImageCoords: F,
155
+ canvasToImageCoords: y,
156
156
  imageToCanvasCoords: $,
157
157
  cropRegionImage: ie,
158
- onChange: k,
158
+ onChange: x,
159
159
  onRegionChange: H,
160
160
  performOCRIfNeeded: ce,
161
- updateTextLayers: Y,
162
- rectMapRef: u,
161
+ updateTextLayers: b,
162
+ rectMapRef: a,
163
163
  regionNameTextMapRef: C,
164
- ocrLoadingIconMapRef: w
164
+ ocrLoadingIconMapRef: k
165
165
  });
166
- l(() => {
166
+ h(() => {
167
167
  L();
168
- }, [L]), l(() => {
169
- e && (d.current.forEach((o) => {
170
- o.forEach((t) => {
171
- t.off("mousedown"), t.off("mouseover"), t.off("mouseout"), e.remove(t), j.current.delete(t);
168
+ }, [L]), h(() => {
169
+ t && (m.current.forEach((o) => {
170
+ o.forEach((e) => {
171
+ e.off("mousedown"), e.off("mouseover"), e.off("mouseout"), t.remove(e), Y.current.delete(e);
172
172
  });
173
- }), d.current.clear(), C.current.forEach((o) => {
174
- e.remove(o);
175
- }), C.current.clear(), w.current.forEach((o) => {
176
- e.remove(o);
177
- }), w.current.clear(), u.current.forEach((o, t) => {
178
- t.off("modified"), t.off("moved"), e.remove(t);
179
- }), u.current.clear(), ne.current = !1, oe.current = void 0, e.renderAll());
180
- }, [e, s == null ? void 0 : s.id]), l(() => {
181
- if (!v.current)
173
+ }), m.current.clear(), C.current.forEach((o) => {
174
+ t.remove(o);
175
+ }), C.current.clear(), k.current.forEach((o) => {
176
+ t.remove(o);
177
+ }), k.current.clear(), a.current.forEach((o, e) => {
178
+ e.off("modified"), e.off("moved"), t.remove(e);
179
+ }), a.current.clear(), ne.current = !1, oe.current = void 0, t.renderAll());
180
+ }, [t, s == null ? void 0 : s.id]), h(() => {
181
+ if (!T.current)
182
182
  return;
183
183
  W.current = {
184
- width: v.current.offsetWidth,
185
- height: v.current.offsetHeight
184
+ width: T.current.offsetWidth,
185
+ height: T.current.offsetHeight
186
186
  };
187
187
  const o = new ResizeObserver(() => {
188
- if (!v.current || se.current)
188
+ if (!T.current || se.current)
189
189
  return;
190
- if (e) {
191
- const g = e.getZoom();
192
- if (Math.abs(g - p) > st)
190
+ if (t) {
191
+ const d = t.getZoom();
192
+ if (Math.abs(d - p) > st)
193
193
  return;
194
194
  }
195
- const t = v.current.offsetWidth, r = v.current.offsetHeight, n = W.current.width, i = W.current.height;
196
- (t !== n || r !== i) && (W.current = {
197
- width: t,
195
+ const e = T.current.offsetWidth, r = T.current.offsetHeight, n = W.current.width, i = W.current.height;
196
+ (e !== n || r !== i) && (W.current = {
197
+ width: e,
198
198
  height: r
199
199
  }, L());
200
200
  });
201
- return o.observe(v.current), () => {
201
+ return o.observe(T.current), () => {
202
202
  o.disconnect();
203
203
  };
204
- }, [L, e, p]), b("ctrl", () => {
205
- c || (T && (I(!1), x()), _(!0));
204
+ }, [L, t, p]), X("ctrl", () => {
205
+ c || (v && (I(!1), w()), _(!0));
206
206
  }, {
207
207
  events: ["keydown"]
208
- }), b("ctrl", () => {
208
+ }), X("ctrl", () => {
209
209
  c || _(!1);
210
210
  }, {
211
211
  events: ["keyup"]
212
- }), l(() => {
213
- if (!e)
212
+ }), h(() => {
213
+ if (!t)
214
214
  return;
215
- const o = ft / p, t = /* @__PURE__ */ new Set();
216
- d.current.forEach((r) => {
215
+ const o = ft / p, e = /* @__PURE__ */ new Set();
216
+ m.current.forEach((r) => {
217
217
  r.forEach((n) => {
218
- t.add(n);
218
+ e.add(n);
219
219
  });
220
- }), e.getObjects().forEach((r) => {
221
- r instanceof U.Rect && !t.has(r) && r.set({
220
+ }), t.getObjects().forEach((r) => {
221
+ r instanceof U.Rect && !e.has(r) && r.set({
222
222
  strokeWidth: o,
223
223
  strokeUniform: !0,
224
224
  objectCaching: !1,
@@ -226,7 +226,7 @@ const Wt = ({
226
226
  statefullCache: !1,
227
227
  noScaleCache: !1
228
228
  });
229
- }), d.current.forEach((r) => {
229
+ }), m.current.forEach((r) => {
230
230
  r.forEach((n) => {
231
231
  n.set({
232
232
  fill: it,
@@ -243,21 +243,21 @@ const Wt = ({
243
243
  });
244
244
  });
245
245
  }), C.current.forEach((r, n) => {
246
- const i = n.left || 0, g = n.top || 0;
246
+ const i = n.left || 0, d = n.top || 0;
247
247
  r.set({
248
248
  left: i,
249
249
  // 与标注框左边对齐
250
- top: g,
250
+ top: d,
251
251
  // 下边缘与标注框上边缘对齐(因为 originY 是 'bottom')
252
252
  scaleX: 1 / p,
253
253
  // 反向缩放,抵消画布缩放
254
254
  scaleY: 1 / p
255
255
  // 反向缩放,抵消画布缩放
256
256
  });
257
- const m = w.current.get(n);
258
- if (m) {
257
+ const f = k.current.get(n);
258
+ if (f) {
259
259
  const N = n.getScaledWidth();
260
- n.getScaledHeight(), m.set({
260
+ n.getScaledHeight(), f.set({
261
261
  left: i,
262
262
  // top 位置由动画控制,这里不更新
263
263
  scaleX: 1 / p,
@@ -265,54 +265,54 @@ const Wt = ({
265
265
  scaleY: 1 / p
266
266
  // 反向缩放,抵消画布缩放,保持固定视觉粗细
267
267
  });
268
- const M = m.getObjects();
268
+ const M = f.getObjects();
269
269
  if (M && M.length > 0) {
270
- const y = N * p;
270
+ const j = N * p;
271
271
  M.forEach((z) => {
272
- z instanceof U.Rect && z.set("width", y);
272
+ z instanceof U.Rect && z.set("width", j);
273
273
  });
274
274
  }
275
275
  }
276
- }), e.renderAll();
277
- }, [e, p]), Be({
278
- canvas: e,
276
+ }), t.renderAll();
277
+ }, [t, p]), Be({
278
+ canvas: t,
279
279
  draggable: E,
280
- drawingMode: T,
281
- textLayersMapRef: d
280
+ drawingMode: v,
281
+ textLayersMapRef: m
282
282
  });
283
283
  const {
284
284
  performDelete: B
285
285
  } = Je({
286
- canvas: e,
286
+ canvas: t,
287
287
  onRegionChange: H,
288
288
  updateRegionNames: Me,
289
- rectMapRef: u,
290
- textLayersMapRef: d,
291
- textLayoutContentMapRef: j,
289
+ rectMapRef: a,
290
+ textLayersMapRef: m,
291
+ textLayoutContentMapRef: Y,
292
292
  regionNameTextMapRef: C,
293
- ocrLoadingIconMapRef: w
293
+ ocrLoadingIconMapRef: k
294
294
  }), {
295
295
  createDeleteControl: G
296
296
  } = Qe({
297
297
  performDelete: B
298
298
  });
299
299
  Ge({
300
- canvas: e,
300
+ canvas: t,
301
301
  onRegionSelect: J,
302
302
  createDeleteControl: G,
303
- textLayersMapRef: d,
304
- rectMapRef: u
303
+ textLayersMapRef: m,
304
+ rectMapRef: a
305
305
  });
306
306
  const {
307
- stopDraw: x
307
+ stopDraw: w
308
308
  } = ze({
309
- canvas: e,
310
- drawingMode: T,
309
+ canvas: t,
310
+ drawingMode: v,
311
311
  draggable: E,
312
312
  setDrawingMode: I,
313
- canvasToImageCoords: F,
314
- labelDefinitions: f,
315
- onChange: k,
313
+ canvasToImageCoords: y,
314
+ labelDefinitions: l,
315
+ onChange: x,
316
316
  cropRegionImage: ie,
317
317
  updateRegionShapeAndImage: ae,
318
318
  performOCRIfNeeded: ce,
@@ -320,19 +320,19 @@ const Wt = ({
320
320
  updateRegionNameText: O,
321
321
  onRegionChange: H,
322
322
  onRegionSelect: J,
323
- rectMapRef: u,
324
- textLayersMapRef: d
323
+ rectMapRef: a,
324
+ textLayersMapRef: m
325
325
  });
326
- l(() => {
327
- R && (I(!1), x());
328
- }, [R, x]), l(() => {
329
- c && (_(!0), I(!1), x());
330
- }, [c, x]), l(() => {
331
- if (!e)
326
+ h(() => {
327
+ g && (I(!1), w());
328
+ }, [g, w]), h(() => {
329
+ c && (_(!0), I(!1), w());
330
+ }, [c, w]), h(() => {
331
+ if (!t)
332
332
  return;
333
333
  const o = () => {
334
- e.getObjects().forEach((t) => {
335
- t instanceof U.Rect && t.selectable && (t.set({
334
+ t.getObjects().forEach((e) => {
335
+ e instanceof U.Rect && e.selectable && (e.set({
336
336
  lockMovementX: c,
337
337
  lockMovementY: c,
338
338
  lockScalingX: c,
@@ -340,125 +340,140 @@ const Wt = ({
340
340
  hasControls: !c
341
341
  // 在只读模式下,如果有 activeLabelValue,我们可能希望它保持选中状态
342
342
  // 但不允许用户通过点击来取消选中或选中其他(这个由 canvas.selection 控制)
343
- }), c && t.controls);
344
- }), e.requestRenderAll();
343
+ }), c && e.controls);
344
+ }), t.requestRenderAll();
345
345
  };
346
- return o(), e.on("object:added", o), () => {
347
- e.off("object:added", o);
346
+ return o(), t.on("object:added", o), () => {
347
+ t.off("object:added", o);
348
348
  };
349
- }, [e, c]), He({
350
- canvas: e,
349
+ }, [t, c]), He({
350
+ canvas: t,
351
351
  sample: s,
352
352
  image: D,
353
353
  bgImagePosition: K,
354
354
  canvasInitializedRef: re,
355
- bgImagePositionRef: X,
355
+ bgImagePositionRef: F,
356
356
  sampleRef: oe,
357
357
  labelsLoadedRef: ne,
358
- rectMapRef: u,
359
- textLayersMapRef: d,
360
- textLayoutContentMapRef: j,
358
+ rectMapRef: a,
359
+ textLayersMapRef: m,
360
+ textLayoutContentMapRef: Y,
361
361
  regionNameTextMapRef: C,
362
- ocrLoadingIconMapRef: w,
362
+ ocrLoadingIconMapRef: k,
363
363
  imageToCanvasCoords: $,
364
364
  updateRegionShapeAndImage: ae,
365
365
  createDeleteControl: G,
366
366
  updateRegionNameText: O,
367
- updateTextLayers: Y
368
- }), l(() => {
369
- if (!a || a.length === 0)
367
+ updateTextLayers: b
368
+ }), h(() => {
369
+ if (!u || u.length === 0)
370
370
  return;
371
371
  let o = !1;
372
- u.current.forEach((t, r) => {
373
- var g, m;
374
- const n = a.find((N) => N.id === t.id);
372
+ a.current.forEach((e, r) => {
373
+ var d, f;
374
+ const n = u.find((N) => N.id === e.id);
375
375
  if (!n)
376
376
  return;
377
- const i = he(q(q({}, t), n), {
377
+ const i = he(q(q({}, e), n), {
378
378
  // Keep shape from canvas to avoid desync
379
- shape: t.shape,
380
- image: (g = n.image) != null ? g : t.image,
381
- textLayouts: (m = n.textLayouts) != null ? m : t.textLayouts
379
+ shape: e.shape,
380
+ image: (d = n.image) != null ? d : e.image,
381
+ textLayouts: (f = n.textLayouts) != null ? f : e.textLayouts
382
382
  });
383
- (i.name !== t.name || i.content !== t.content || i.image !== t.image || i.textLayouts !== t.textLayouts) && (u.current.set(r, i), i.name !== t.name && O(r, i), o = !0);
384
- }), o && (e == null || e.renderAll());
385
- }, [a, e, O]), et({
386
- canvas: e,
387
- drawingMode: T,
383
+ (i.name !== e.name || i.content !== e.content || i.image !== e.image || i.textLayouts !== e.textLayouts) && (a.current.set(r, i), i.name !== e.name && O(r, i), o = !0);
384
+ }), o && (t == null || t.renderAll());
385
+ }, [u, t, O]), et({
386
+ canvas: t,
387
+ drawingMode: v,
388
388
  draggable: E,
389
- textLayersMapRef: d
390
- }), l(() => {
391
- if (e && Q === null) {
389
+ textLayersMapRef: m
390
+ }), h(() => {
391
+ if (t && Q === null) {
392
392
  const o = /* @__PURE__ */ new Set();
393
- d.current.forEach((r) => {
393
+ m.current.forEach((r) => {
394
394
  r.forEach((n) => {
395
395
  o.add(n);
396
396
  });
397
- }), e.getObjects().forEach((r) => {
397
+ }), t.getObjects().forEach((r) => {
398
398
  r instanceof U.Rect && !o.has(r) && r.set({
399
399
  fill: at
400
400
  // 移除填充色
401
401
  });
402
- }), e.getActiveObject() && (e.discardActiveObject(), e.renderAll());
402
+ }), t.getActiveObject() && (t.discardActiveObject(), t.renderAll());
403
403
  }
404
- }, [e, Q]), l(() => {
404
+ }, [t, Q]), h(() => {
405
405
  var r;
406
- if (!e)
406
+ if (!t)
407
407
  return;
408
- const o = (r = R == null ? void 0 : R.region) == null ? void 0 : r.id;
409
- let t = !1;
410
- d.current.forEach((n, i) => {
411
- const g = u.current.get(i);
412
- if (g && n.length > 0) {
413
- const m = o === g.id;
408
+ const o = (r = g == null ? void 0 : g.region) == null ? void 0 : r.id;
409
+ let e = !1;
410
+ m.current.forEach((n, i) => {
411
+ const d = a.current.get(i);
412
+ if (d && n.length > 0) {
413
+ const f = o === d.id;
414
414
  n.forEach((N) => {
415
- N.visible !== m && (N.set({
416
- visible: m
417
- }), t = !0);
415
+ N.visible !== f && (N.set({
416
+ visible: f
417
+ }), e = !0);
418
418
  });
419
419
  }
420
- }), t && e.renderAll();
421
- }, [e, R]), l(() => {
422
- if (!e || !R || !Z)
420
+ }), e && t.renderAll();
421
+ }, [t, g]), h(() => {
422
+ var n, i;
423
+ if (!t)
423
424
  return;
424
- const o = (t) => {
425
+ const o = (n = g == null ? void 0 : g.region) == null ? void 0 : n.id;
426
+ if (!o)
427
+ return;
428
+ let e = null;
429
+ if (a.current.forEach((d, f) => {
430
+ d.id === o && (e = f);
431
+ }), !e)
432
+ return;
433
+ e.bringToFront(), ((i = m.current.get(e)) != null ? i : []).forEach((d) => {
434
+ d.bringToFront();
435
+ }), t.renderAll();
436
+ }, [t, g, a, m]), h(() => {
437
+ if (!t || !g || !Z)
438
+ return;
439
+ const o = (e) => {
425
440
  var de;
426
- const r = (de = t.e) == null ? void 0 : de.target;
441
+ const r = (de = e.e) == null ? void 0 : de.target;
427
442
  if ((r == null ? void 0 : r.tagName) === "INPUT" || (r == null ? void 0 : r.tagName) === "TEXTAREA")
428
443
  return;
429
- const n = e.getPointer(t.e), i = n.x, g = n.y, m = F(i, g), N = R.region, {
444
+ const n = t.getPointer(e.e), i = n.x, d = n.y, f = y(i, d), N = g.region, {
430
445
  x: M,
431
- y,
446
+ y: j,
432
447
  width: z,
433
448
  height: Le
434
449
  } = N.shape;
435
- m.x >= M && m.x <= M + z && m.y >= y && m.y <= y + Le || Z();
450
+ f.x >= M && f.x <= M + z && f.y >= j && f.y <= j + Le || Z();
436
451
  };
437
- return e.on("mouse:down", o), () => {
438
- e.off("mouse:down", o);
452
+ return t.on("mouse:down", o), () => {
453
+ t.off("mouse:down", o);
439
454
  };
440
- }, [e, R, Z, F]);
455
+ }, [t, g, Z, y]);
441
456
  const fe = P((o) => {
442
- const t = o.target;
443
- if ((t == null ? void 0 : t.tagName) === "INPUT" || (t == null ? void 0 : t.tagName) === "TEXTAREA" || !e || c)
457
+ const e = o.target;
458
+ if ((e == null ? void 0 : e.tagName) === "INPUT" || (e == null ? void 0 : e.tagName) === "TEXTAREA" || !t || c)
444
459
  return;
445
- const r = e.getActiveObject();
460
+ const r = t.getActiveObject();
446
461
  !r || !(r instanceof U.Rect) || B(r);
447
- }, [e, B]);
448
- b("Delete", fe), b("Backspace", fe), b("r", (o) => {
449
- const t = o.target;
450
- (t == null ? void 0 : t.tagName) === "INPUT" || (t == null ? void 0 : t.tagName) === "TEXTAREA" || t != null && t.isContentEditable || c || !T && !E && I(!0);
462
+ }, [t, B]);
463
+ X("Delete", fe), X("Backspace", fe), X("r", (o) => {
464
+ const e = o.target;
465
+ (e == null ? void 0 : e.tagName) === "INPUT" || (e == null ? void 0 : e.tagName) === "TEXTAREA" || e != null && e.isContentEditable || c || !v && !E && I(!0);
451
466
  }, {
452
467
  exactMatch: !1
453
468
  // 允许大小写
454
469
  });
455
470
  const De = () => {
456
- c || (T && (I(!1), x()), _(!E));
471
+ c || (v && (I(!1), w()), _(!E));
457
472
  }, _e = () => {
458
- c || (E && _(!1), I(!T));
473
+ c || (E && _(!1), I(!v));
459
474
  };
460
- return l(() => () => {
461
- e && e.dispose();
475
+ return h(() => () => {
476
+ t && t.dispose();
462
477
  }, []), /* @__PURE__ */ Re("div", {
463
478
  style: {
464
479
  width: "100%",
@@ -466,15 +481,15 @@ const Wt = ({
466
481
  display: "flex",
467
482
  position: "relative"
468
483
  },
469
- children: [Te && /* @__PURE__ */ S("div", {
484
+ children: [ve && /* @__PURE__ */ S("div", {
470
485
  className: "vlm-loading-overlay",
471
486
  children: /* @__PURE__ */ S("div", {
472
487
  className: "vlm-loading-spinner"
473
488
  })
474
489
  }), /* @__PURE__ */ S("div", {
475
490
  className: "vlm-marker-toolbar",
476
- children: /* @__PURE__ */ S(Fe, {
477
- drawingMode: T,
491
+ children: /* @__PURE__ */ S(ye, {
492
+ drawingMode: v,
478
493
  draggable: E,
479
494
  scale: p,
480
495
  onToggleDrawingMode: _e,
@@ -484,7 +499,7 @@ const Wt = ({
484
499
  readOnly: c
485
500
  })
486
501
  }), /* @__PURE__ */ Re("div", {
487
- ref: v,
502
+ ref: T,
488
503
  className: Oe({
489
504
  "vlm-label-maker-wrap": !0,
490
505
  draggable: E