@glodon-aiot/dataset-annotation 3.10.0-alpha.21 → 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
- var be = Object.defineProperty, Pe = Object.defineProperties;
2
- var Ue = Object.getOwnPropertyDescriptors;
3
- var de = Object.getOwnPropertySymbols;
4
- var Xe = Object.prototype.hasOwnProperty, We = Object.prototype.propertyIsEnumerable;
5
- var ge = (s, f, a) => f in s ? be(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]);
8
- if (de)
9
- for (var a of de(f))
10
- We.call(f, a) && ge(s, a, f[a]);
1
+ var Pe = Object.defineProperty, Ue = Object.defineProperties;
2
+ var Xe = Object.getOwnPropertyDescriptors;
3
+ var le = Object.getOwnPropertySymbols;
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
+ if (le)
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) => Pe(s, Ue(f));
13
- import { jsxs as Re, jsx as M } from "react/jsx-runtime";
14
- import { useRef as g, useState as I, useCallback as _, useEffect as h } from "react";
15
- import { fabric as b } from "fabric";
16
- import { useKeyPress as P } from "ahooks";
12
+ }, he = (s, l) => Ue(s, Xe(l));
13
+ import { jsxs as Re, jsx as S } from "react/jsx-runtime";
14
+ import { useRef as R, useState as A, useCallback as P, useEffect as h } from "react";
15
+ import { fabric as U } from "fabric";
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: A,
42
+ onChange: x,
43
43
  onRegionSelect: J,
44
44
  onRegionChange: H,
45
- ocrRecognize: ve,
46
- activeLabelValue: E,
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 = g(null), p = g(null), [Te, Ce] = I(!0), [e, Ne] = I(), [S, Ie] = I(), [R, ee] = I(1), [v, L] = I(c || !1), [T, k] = I(!1), [K, Ae] = I({
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
- }), U = g({
56
+ }), F = R({
57
57
  left: 0,
58
58
  top: 0
59
- }), ke = g({
59
+ }), xe = R({
60
60
  width: 0,
61
61
  height: 0
62
- }), u = g(/* @__PURE__ */ new Map()), te = g(null), oe = g(void 0), re = g(!1), ne = g(!1), X = g({
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 = g(!1), {
66
- updateOCRLoadingIcon: we,
67
- ocrLoadingIconMapRef: w
68
- } = Ye(e), {
69
- updateRegionNameText: W,
65
+ }), se = R(!1), {
66
+ updateOCRLoadingIcon: ke,
67
+ ocrLoadingIconMapRef: k
68
+ } = be(t), {
69
+ updateRegionNameText: O,
70
70
  regionNameTextMapRef: C
71
- } = je(e), ie = ye(s == null ? void 0 : s.fileUrl), xe = _((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]), {
86
- updateCanvas: D
84
+ }), t.renderAll());
85
+ }, [t]), {
86
+ updateCanvas: L
87
87
  } = Ze({
88
88
  sample: s,
89
- image: S,
89
+ image: D,
90
90
  onImageLoad: pe,
91
91
  canvasRef: V,
92
- containerRef: p,
92
+ containerRef: T,
93
93
  canvasInitializedRef: re,
94
- bgImagePositionRef: U,
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
- }), Me = _(() => {
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) => {
104
+ }), Me = P(() => {
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
- }), A && A(o);
112
- }, [A, 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
- }), O = _(
119
- (o, t) => tt(o, t, e, S, U),
120
- [e, S, K]
118
+ }), y = P(
119
+ (o, e) => tt(o, e, t, D, F),
120
+ [t, D, K]
121
121
  // 添加 bgImagePosition 作为依赖,确保在图片位置更新后函数能正确工作
122
- ), $ = _(
123
- (o, t) => ot(o, t, e, U),
124
- [e, K]
122
+ ), $ = P(
123
+ (o, e) => ot(o, e, t, F),
124
+ [t, K]
125
125
  // 添加 bgImagePosition 作为依赖,确保在图片位置更新后函数能正确工作
126
126
  ), {
127
- updateTextLayers: F,
128
- textLayersMapRef: l,
127
+ updateTextLayers: b,
128
+ textLayersMapRef: m,
129
129
  textLayoutContentMapRef: Y
130
130
  } = Ke({
131
- canvas: e,
131
+ canvas: t,
132
132
  imageToCanvasCoords: $,
133
- activeLabelValue: E,
133
+ activeLabelValue: g,
134
134
  onAppendTextToActive: Ee
135
135
  });
136
- te.current = F;
136
+ te.current = b;
137
137
  const {
138
138
  performOCRIfNeeded: ce,
139
139
  ocrRecognizingRef: ut
140
140
  } = qe({
141
- ocrRecognize: ve,
142
- onChange: A,
143
- updateTextLayers: F,
144
- canvas: e,
145
- updateOCRLoadingIcon: we,
146
- rectMapRef: u,
147
- textLayersMapRef: l,
141
+ ocrRecognize: Te,
142
+ onChange: x,
143
+ updateTextLayers: b,
144
+ canvas: t,
145
+ updateOCRLoadingIcon: ke,
146
+ rectMapRef: a,
147
+ textLayersMapRef: m,
148
148
  textLayoutContentMapRef: Y
149
149
  }), {
150
150
  updateRegionShapeAndImage: ae
151
151
  } = $e({
152
- canvas: e,
153
- image: S,
154
- draggable: v,
155
- canvasToImageCoords: O,
152
+ canvas: t,
153
+ image: D,
154
+ draggable: E,
155
+ canvasToImageCoords: y,
156
156
  imageToCanvasCoords: $,
157
157
  cropRegionImage: ie,
158
- onChange: A,
158
+ onChange: x,
159
159
  onRegionChange: H,
160
160
  performOCRIfNeeded: ce,
161
- updateTextLayers: F,
162
- rectMapRef: u,
161
+ updateTextLayers: b,
162
+ rectMapRef: a,
163
163
  regionNameTextMapRef: C,
164
- ocrLoadingIconMapRef: w
164
+ ocrLoadingIconMapRef: k
165
165
  });
166
166
  h(() => {
167
- D();
168
- }, [D]), h(() => {
169
- e && (l.current.forEach((o) => {
170
- o.forEach((t) => {
171
- t.off("mousedown"), t.off("mouseover"), t.off("mouseout"), e.remove(t), Y.current.delete(t);
167
+ L();
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
- }), l.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]), h(() => {
181
- if (!p.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
- X.current = {
184
- width: p.current.offsetWidth,
185
- height: p.current.offsetHeight
183
+ W.current = {
184
+ width: T.current.offsetWidth,
185
+ height: T.current.offsetHeight
186
186
  };
187
187
  const o = new ResizeObserver(() => {
188
- if (!p.current || se.current)
188
+ if (!T.current || se.current)
189
189
  return;
190
- if (e) {
191
- const d = e.getZoom();
192
- if (Math.abs(d - R) > st)
190
+ if (t) {
191
+ const d = t.getZoom();
192
+ if (Math.abs(d - p) > st)
193
193
  return;
194
194
  }
195
- const t = p.current.offsetWidth, r = p.current.offsetHeight, n = X.current.width, i = X.current.height;
196
- (t !== n || r !== i) && (X.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
- }, D());
199
+ }, L());
200
200
  });
201
- return o.observe(p.current), () => {
201
+ return o.observe(T.current), () => {
202
202
  o.disconnect();
203
203
  };
204
- }, [D, e, R]), P("ctrl", () => {
205
- c || (T && (k(!1), j()), L(!0));
204
+ }, [L, t, p]), X("ctrl", () => {
205
+ c || (v && (I(!1), w()), _(!0));
206
206
  }, {
207
207
  events: ["keydown"]
208
- }), P("ctrl", () => {
209
- c || L(!1);
208
+ }), X("ctrl", () => {
209
+ c || _(!1);
210
210
  }, {
211
211
  events: ["keyup"]
212
212
  }), h(() => {
213
- if (!e)
213
+ if (!t)
214
214
  return;
215
- const o = ft / R, t = /* @__PURE__ */ new Set();
216
- l.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 b.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
- }), l.current.forEach((r) => {
229
+ }), m.current.forEach((r) => {
230
230
  r.forEach((n) => {
231
231
  n.set({
232
232
  fill: it,
@@ -249,86 +249,90 @@ const Wt = ({
249
249
  // 与标注框左边对齐
250
250
  top: d,
251
251
  // 下边缘与标注框上边缘对齐(因为 originY 是 'bottom')
252
- scaleX: 1 / R,
252
+ scaleX: 1 / p,
253
253
  // 反向缩放,抵消画布缩放
254
- scaleY: 1 / R
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
- scaleX: 1 / R,
263
+ scaleX: 1 / p,
264
264
  // 反向缩放,抵消画布缩放,保持固定视觉粗细
265
- scaleY: 1 / R
265
+ scaleY: 1 / p
266
266
  // 反向缩放,抵消画布缩放,保持固定视觉粗细
267
267
  });
268
- const x = m.getObjects();
269
- if (x && x.length > 0) {
270
- const y = N * R;
271
- x.forEach((z) => {
272
- z instanceof b.Rect && z.set("width", y);
268
+ const M = f.getObjects();
269
+ if (M && M.length > 0) {
270
+ const j = N * p;
271
+ M.forEach((z) => {
272
+ z instanceof U.Rect && z.set("width", j);
273
273
  });
274
274
  }
275
275
  }
276
- }), e.renderAll();
277
- }, [e, R]), Be({
278
- canvas: e,
279
- draggable: v,
280
- drawingMode: T
276
+ }), t.renderAll();
277
+ }, [t, p]), Be({
278
+ canvas: t,
279
+ draggable: E,
280
+ drawingMode: v,
281
+ textLayersMapRef: m
281
282
  });
282
283
  const {
283
284
  performDelete: B
284
285
  } = Je({
285
- canvas: e,
286
+ canvas: t,
286
287
  onRegionChange: H,
287
288
  updateRegionNames: Me,
288
- rectMapRef: u,
289
- textLayersMapRef: l,
289
+ rectMapRef: a,
290
+ textLayersMapRef: m,
290
291
  textLayoutContentMapRef: Y,
291
292
  regionNameTextMapRef: C,
292
- ocrLoadingIconMapRef: w
293
+ ocrLoadingIconMapRef: k
293
294
  }), {
294
295
  createDeleteControl: G
295
296
  } = Qe({
296
297
  performDelete: B
297
298
  });
298
299
  Ge({
299
- canvas: e,
300
+ canvas: t,
300
301
  onRegionSelect: J,
301
302
  createDeleteControl: G,
302
- textLayersMapRef: l,
303
- rectMapRef: u
303
+ textLayersMapRef: m,
304
+ rectMapRef: a
304
305
  });
305
306
  const {
306
- stopDraw: j
307
+ stopDraw: w
307
308
  } = ze({
308
- canvas: e,
309
- drawingMode: T,
310
- draggable: v,
311
- setDrawingMode: k,
312
- canvasToImageCoords: O,
313
- labelDefinitions: f,
314
- onChange: A,
309
+ canvas: t,
310
+ drawingMode: v,
311
+ draggable: E,
312
+ setDrawingMode: I,
313
+ canvasToImageCoords: y,
314
+ labelDefinitions: l,
315
+ onChange: x,
315
316
  cropRegionImage: ie,
316
317
  updateRegionShapeAndImage: ae,
317
318
  performOCRIfNeeded: ce,
318
319
  createDeleteControl: G,
319
- updateRegionNameText: W,
320
+ updateRegionNameText: O,
320
321
  onRegionChange: H,
321
322
  onRegionSelect: J,
322
- rectMapRef: u
323
+ rectMapRef: a,
324
+ textLayersMapRef: m
323
325
  });
324
326
  h(() => {
325
- c && (L(!0), k(!1), j());
326
- }, [c, j]), h(() => {
327
- if (!e)
327
+ g && (I(!1), w());
328
+ }, [g, w]), h(() => {
329
+ c && (_(!0), I(!1), w());
330
+ }, [c, w]), h(() => {
331
+ if (!t)
328
332
  return;
329
333
  const o = () => {
330
- e.getObjects().forEach((t) => {
331
- t instanceof b.Rect && t.selectable && (t.set({
334
+ t.getObjects().forEach((e) => {
335
+ e instanceof U.Rect && e.selectable && (e.set({
332
336
  lockMovementX: c,
333
337
  lockMovementY: c,
334
338
  lockScalingX: c,
@@ -336,125 +340,140 @@ const Wt = ({
336
340
  hasControls: !c
337
341
  // 在只读模式下,如果有 activeLabelValue,我们可能希望它保持选中状态
338
342
  // 但不允许用户通过点击来取消选中或选中其他(这个由 canvas.selection 控制)
339
- }), c && t.controls);
340
- }), e.requestRenderAll();
343
+ }), c && e.controls);
344
+ }), t.requestRenderAll();
341
345
  };
342
- return o(), e.on("object:added", o), () => {
343
- e.off("object:added", o);
346
+ return o(), t.on("object:added", o), () => {
347
+ t.off("object:added", o);
344
348
  };
345
- }, [e, c]), He({
346
- canvas: e,
349
+ }, [t, c]), He({
350
+ canvas: t,
347
351
  sample: s,
348
- image: S,
352
+ image: D,
349
353
  bgImagePosition: K,
350
354
  canvasInitializedRef: re,
351
- bgImagePositionRef: U,
355
+ bgImagePositionRef: F,
352
356
  sampleRef: oe,
353
357
  labelsLoadedRef: ne,
354
- rectMapRef: u,
355
- textLayersMapRef: l,
358
+ rectMapRef: a,
359
+ textLayersMapRef: m,
356
360
  textLayoutContentMapRef: Y,
357
361
  regionNameTextMapRef: C,
358
- ocrLoadingIconMapRef: w,
362
+ ocrLoadingIconMapRef: k,
359
363
  imageToCanvasCoords: $,
360
364
  updateRegionShapeAndImage: ae,
361
365
  createDeleteControl: G,
362
- updateRegionNameText: W,
363
- updateTextLayers: F
366
+ updateRegionNameText: O,
367
+ updateTextLayers: b
364
368
  }), h(() => {
365
- if (!a || a.length === 0)
369
+ if (!u || u.length === 0)
366
370
  return;
367
371
  let o = !1;
368
- u.current.forEach((t, r) => {
369
- var d, m;
370
- 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);
371
375
  if (!n)
372
376
  return;
373
- const i = he(q(q({}, t), n), {
377
+ const i = he(q(q({}, e), n), {
374
378
  // Keep shape from canvas to avoid desync
375
- shape: t.shape,
376
- image: (d = n.image) != null ? d : t.image,
377
- 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
378
382
  });
379
- (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 && W(r, i), o = !0);
380
- }), o && (e == null || e.renderAll());
381
- }, [a, e, W]), et({
382
- canvas: e,
383
- drawingMode: T,
384
- draggable: v,
385
- textLayersMapRef: l
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
+ draggable: E,
389
+ textLayersMapRef: m
386
390
  }), h(() => {
387
- if (e && Q === null) {
391
+ if (t && Q === null) {
388
392
  const o = /* @__PURE__ */ new Set();
389
- l.current.forEach((r) => {
393
+ m.current.forEach((r) => {
390
394
  r.forEach((n) => {
391
395
  o.add(n);
392
396
  });
393
- }), e.getObjects().forEach((r) => {
394
- r instanceof b.Rect && !o.has(r) && r.set({
397
+ }), t.getObjects().forEach((r) => {
398
+ r instanceof U.Rect && !o.has(r) && r.set({
395
399
  fill: at
396
400
  // 移除填充色
397
401
  });
398
- }), e.getActiveObject() && (e.discardActiveObject(), e.renderAll());
402
+ }), t.getActiveObject() && (t.discardActiveObject(), t.renderAll());
399
403
  }
400
- }, [e, Q]), h(() => {
404
+ }, [t, Q]), h(() => {
401
405
  var r;
402
- if (!e)
406
+ if (!t)
403
407
  return;
404
- const o = (r = E == null ? void 0 : E.region) == null ? void 0 : r.id;
405
- let t = !1;
406
- l.current.forEach((n, i) => {
407
- const d = u.current.get(i);
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);
408
412
  if (d && n.length > 0) {
409
- const m = o === d.id;
413
+ const f = o === d.id;
410
414
  n.forEach((N) => {
411
- N.visible !== m && (N.set({
412
- visible: m
413
- }), t = !0);
415
+ N.visible !== f && (N.set({
416
+ visible: f
417
+ }), e = !0);
414
418
  });
415
419
  }
416
- }), t && e.renderAll();
417
- }, [e, E]), h(() => {
418
- if (!e || !E || !Z)
420
+ }), e && t.renderAll();
421
+ }, [t, g]), h(() => {
422
+ var n, i;
423
+ if (!t)
419
424
  return;
420
- const o = (t) => {
421
- var le;
422
- const r = (le = t.e) == null ? void 0 : le.target;
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) => {
440
+ var de;
441
+ const r = (de = e.e) == null ? void 0 : de.target;
423
442
  if ((r == null ? void 0 : r.tagName) === "INPUT" || (r == null ? void 0 : r.tagName) === "TEXTAREA")
424
443
  return;
425
- const n = e.getPointer(t.e), i = n.x, d = n.y, m = O(i, d), N = E.region, {
426
- x,
427
- y,
444
+ const n = t.getPointer(e.e), i = n.x, d = n.y, f = y(i, d), N = g.region, {
445
+ x: M,
446
+ y: j,
428
447
  width: z,
429
- height: _e
448
+ height: Le
430
449
  } = N.shape;
431
- m.x >= x && m.x <= x + z && m.y >= y && m.y <= y + _e || Z();
450
+ f.x >= M && f.x <= M + z && f.y >= j && f.y <= j + Le || Z();
432
451
  };
433
- return e.on("mouse:down", o), () => {
434
- e.off("mouse:down", o);
452
+ return t.on("mouse:down", o), () => {
453
+ t.off("mouse:down", o);
435
454
  };
436
- }, [e, E, Z, O]);
437
- const fe = _((o) => {
438
- const t = o.target;
439
- if ((t == null ? void 0 : t.tagName) === "INPUT" || (t == null ? void 0 : t.tagName) === "TEXTAREA" || !e || c)
455
+ }, [t, g, Z, y]);
456
+ const fe = P((o) => {
457
+ const e = o.target;
458
+ if ((e == null ? void 0 : e.tagName) === "INPUT" || (e == null ? void 0 : e.tagName) === "TEXTAREA" || !t || c)
440
459
  return;
441
- const r = e.getActiveObject();
442
- !r || !(r instanceof b.Rect) || B(r);
443
- }, [e, B]);
444
- P("Delete", fe), P("Backspace", fe), P("r", (o) => {
445
- const t = o.target;
446
- (t == null ? void 0 : t.tagName) === "INPUT" || (t == null ? void 0 : t.tagName) === "TEXTAREA" || t != null && t.isContentEditable || c || !T && !v && k(!0);
460
+ const r = t.getActiveObject();
461
+ !r || !(r instanceof U.Rect) || B(r);
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);
447
466
  }, {
448
467
  exactMatch: !1
449
468
  // 允许大小写
450
469
  });
451
- const Le = () => {
452
- c || (T && (k(!1), j()), L(!v));
453
- }, De = () => {
454
- c || (v && L(!1), k(!T));
470
+ const De = () => {
471
+ c || (v && (I(!1), w()), _(!E));
472
+ }, _e = () => {
473
+ c || (E && _(!1), I(!v));
455
474
  };
456
475
  return h(() => () => {
457
- e && e.dispose();
476
+ t && t.dispose();
458
477
  }, []), /* @__PURE__ */ Re("div", {
459
478
  style: {
460
479
  width: "100%",
@@ -462,28 +481,28 @@ const Wt = ({
462
481
  display: "flex",
463
482
  position: "relative"
464
483
  },
465
- children: [Te && /* @__PURE__ */ M("div", {
484
+ children: [ve && /* @__PURE__ */ S("div", {
466
485
  className: "vlm-loading-overlay",
467
- children: /* @__PURE__ */ M("div", {
486
+ children: /* @__PURE__ */ S("div", {
468
487
  className: "vlm-loading-spinner"
469
488
  })
470
- }), /* @__PURE__ */ M("div", {
489
+ }), /* @__PURE__ */ S("div", {
471
490
  className: "vlm-marker-toolbar",
472
- children: /* @__PURE__ */ M(Fe, {
473
- drawingMode: T,
474
- draggable: v,
475
- scale: R,
476
- onToggleDrawingMode: De,
477
- onToggleDrag: Le,
491
+ children: /* @__PURE__ */ S(ye, {
492
+ drawingMode: v,
493
+ draggable: E,
494
+ scale: p,
495
+ onToggleDrawingMode: _e,
496
+ onToggleDrag: De,
478
497
  onZoom: Se,
479
- onFitToScreen: D,
498
+ onFitToScreen: L,
480
499
  readOnly: c
481
500
  })
482
501
  }), /* @__PURE__ */ Re("div", {
483
- ref: p,
502
+ ref: T,
484
503
  className: Oe({
485
504
  "vlm-label-maker-wrap": !0,
486
- draggable: v
505
+ draggable: E
487
506
  }),
488
507
  onContextMenu: (o) => {
489
508
  o.preventDefault();
@@ -492,10 +511,10 @@ const Wt = ({
492
511
  flex: 1,
493
512
  position: "relative"
494
513
  },
495
- children: [(((ue = s == null ? void 0 : s.sampleFileName) == null ? void 0 : ue.originalName) || ((me = s == null ? void 0 : s.sampleFileName) == null ? void 0 : me.name)) && /* @__PURE__ */ M("div", {
514
+ children: [(((ue = s == null ? void 0 : s.sampleFileName) == null ? void 0 : ue.originalName) || ((me = s == null ? void 0 : s.sampleFileName) == null ? void 0 : me.name)) && /* @__PURE__ */ S("div", {
496
515
  className: "vlm-image-name",
497
516
  children: s.sampleFileName.originalName || s.sampleFileName.name
498
- }), /* @__PURE__ */ M("canvas", {
517
+ }), /* @__PURE__ */ S("canvas", {
499
518
  className: "vlm-label-maker-canvas",
500
519
  ref: V
501
520
  })]