@glodon-aiot/dataset-annotation 3.23.0-alpha.2 → 3.23.0-alpha.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,39 +1,41 @@
1
- var _ = Object.defineProperty, $ = Object.defineProperties;
2
- var I = Object.getOwnPropertyDescriptors;
3
- var P = Object.getOwnPropertySymbols;
4
- var L = Object.prototype.hasOwnProperty, ee = Object.prototype.propertyIsEnumerable;
5
- var B = (i, o, s) => o in i ? _(i, o, { enumerable: !0, configurable: !0, writable: !0, value: s }) : i[o] = s, N = (i, o) => {
6
- for (var s in o || (o = {}))
7
- L.call(o, s) && B(i, s, o[s]);
8
- if (P)
9
- for (var s of P(o))
10
- ee.call(o, s) && B(i, s, o[s]);
1
+ var ee = Object.defineProperty, le = Object.defineProperties;
2
+ var te = Object.getOwnPropertyDescriptors;
3
+ var U = Object.getOwnPropertySymbols;
4
+ var ie = Object.prototype.hasOwnProperty, re = Object.prototype.propertyIsEnumerable;
5
+ var Z = (i, n, c) => n in i ? ee(i, n, { enumerable: !0, configurable: !0, writable: !0, value: c }) : i[n] = c, g = (i, n) => {
6
+ for (var c in n || (n = {}))
7
+ ie.call(n, c) && Z(i, c, n[c]);
8
+ if (U)
9
+ for (var c of U(n))
10
+ re.call(n, c) && Z(i, c, n[c]);
11
11
  return i;
12
- }, g = (i, o) => $(i, I(o));
13
- import { jsxs as h, jsx as a } from "react/jsx-runtime";
14
- import { Row as U, Button as Z, Input as te, Space as ie, Empty as le, Modal as re } from "antd";
15
- import { forwardRef as oe, useState as u, useContext as ne, useEffect as y, useImperativeHandle as se } from "react";
16
- import q from "../TagItem/index.mjs";
12
+ }, A = (i, n) => le(i, te(n));
13
+ import { jsxs as p, jsx as r, Fragment as ne } from "react/jsx-runtime";
14
+ import { Row as $, Button as q, Input as oe, Space as se, Empty as ce, Modal as ae, Tooltip as de } from "antd";
15
+ import { forwardRef as fe, useState as h, useContext as me, useEffect as M, useImperativeHandle as pe } from "react";
16
+ import G from "../TagItem/index.mjs";
17
17
  import "./style.less.mjs";
18
- import { PlusOutlined as ce } from "@ant-design/icons";
19
- import F from "../DisabledTooltip/index.mjs";
20
- import ae from "../../../../DatasetContext/index.mjs";
21
- import { tagColors as k } from "../../../../utils/index.mjs";
22
- import de from "../../../Iconfont/index.mjs";
23
- const fe = oe(({
18
+ import { PlusOutlined as ue } from "@ant-design/icons";
19
+ import H from "../DisabledTooltip/index.mjs";
20
+ import he from "../../../../DatasetContext/index.mjs";
21
+ import { tagColors as T } from "../../../../utils/index.mjs";
22
+ import { formatCount as xe } from "../../../../utils/formatCount.mjs";
23
+ import be from "../../../Iconfont/index.mjs";
24
+ const ve = fe(({
24
25
  datasetId: i,
25
- data: o,
26
- selected: s = [],
27
- showZero: me = !0,
28
- shortcut: M = !1,
29
- selectMode: G = "multiple",
30
- onItemClick: C,
31
- onSelectedChange: T,
32
- onListChange: m,
33
- isPreLabel: v = !1,
34
- settingHide: j = !1
35
- }, H) => {
36
- const [n, A] = u([]), [ue, z] = u(!1), [r, p] = u([]), [E, R] = u(""), [x, S] = u(null), [w, J] = u(!1), {
26
+ data: n,
27
+ selected: c = [],
28
+ showZero: Ne = !0,
29
+ shortcut: C = !1,
30
+ showStatColumns: S = !1,
31
+ selectMode: J = "multiple",
32
+ onItemClick: E,
33
+ onSelectedChange: j,
34
+ onListChange: u,
35
+ isPreLabel: b = !1,
36
+ settingHide: z = !1
37
+ }, K) => {
38
+ const [s, D] = h([]), [ge, R] = h(!1), [o, x] = h([]), [O, P] = h(""), [v, w] = h(null), [y, Q] = h(!1), {
37
39
  services: {
38
40
  cvforceDatahub: d
39
41
  },
@@ -42,157 +44,187 @@ const fe = oe(({
42
44
  } = {
43
45
  labelManager: !1
44
46
  }
45
- } = ne(ae);
46
- y(() => {
47
- r.length && A(s.map((e) => r.find((t) => t.id === e.id)));
48
- }, [s, r]), y(() => {
49
- i && D();
50
- }, [i]), y(() => {
51
- !i && o && p(o.map((e) => g(N({}, e), {
47
+ } = me(he);
48
+ M(() => {
49
+ o.length && D(c.map((e) => o.find((l) => l.id === e.id)));
50
+ }, [c, o]), M(() => {
51
+ i && k();
52
+ }, [i]), M(() => {
53
+ !i && n && x(n.map((e) => A(g({}, e), {
52
54
  createdAt: 0,
53
55
  updatedAt: 0
54
56
  })));
55
- }, [i, o]);
56
- const D = () => {
57
- !i || !d || (z(!0), d.listLabels(i, {
57
+ }, [i, n]);
58
+ const k = () => {
59
+ !i || !d || (R(!0), d.listLabels(i, {
58
60
  pageNo: 1,
59
61
  pageSize: 1e4
60
62
  }).then((e) => {
61
- p(e.recordList.sort((t, l) => t.createdAt - l.createdAt > 0 ? -1 : t.createdAt - l.createdAt < 0 ? 1 : 0).map((t, l) => g(N({}, t), {
62
- color: k[l % 40]
63
+ x(e.recordList.sort((l, t) => l.createdAt - t.createdAt > 0 ? -1 : l.createdAt - t.createdAt < 0 ? 1 : 0).map((l, t) => A(g({}, l), {
64
+ color: T[t % 40]
63
65
  })));
64
- }).finally(() => z(!1)));
66
+ }).finally(() => R(!1)));
65
67
  };
66
- se(H, () => ({
67
- fetchLabels: D
68
+ pe(K, () => ({
69
+ fetchLabels: k
68
70
  }));
69
- const K = (e) => !i || !d ? Promise.resolve(!1) : d.postLabels(i, {
71
+ const V = (e) => !i || !d ? Promise.resolve(!1) : d.postLabels(i, {
70
72
  labels: [{
71
73
  label: e
72
74
  }]
73
- }).then((t) => {
74
- p([...r, {
75
+ }).then((l) => {
76
+ x([...o, {
75
77
  label: e,
76
- id: t[0],
77
- color: k[r.length % 40],
78
+ id: l[0],
79
+ color: T[o.length % 40],
78
80
  createdAt: Date.now(),
79
81
  updatedAt: Date.now()
80
- }]), S(null), m && m([...r]);
81
- }).then(() => !0).catch(() => !1), Q = (e) => {
82
- let t = [];
83
- G === "multiple" ? n != null && n.some((l) => l.id === e.id) ? t = n == null ? void 0 : n.filter((l) => l.id !== e.id) : t = [...n, e] : n != null && n.some((l) => l.id === e.id) ? t = [] : t = [e], A(t), T && T(t);
84
- }, V = (e) => {
85
- R(e);
86
- }, W = (e) => {
82
+ }]), w(null), u && u([...o]);
83
+ }).then(() => !0).catch(() => !1), W = (e) => {
84
+ let l = [];
85
+ J === "multiple" ? s != null && s.some((t) => t.id === e.id) ? l = s == null ? void 0 : s.filter((t) => t.id !== e.id) : l = [...s, e] : s != null && s.some((t) => t.id === e.id) ? l = [] : l = [e], D(l), j && j(l);
86
+ }, X = (e) => {
87
+ P(e);
88
+ }, Y = (e) => {
87
89
  if (!i || !d)
88
90
  return Promise.resolve(!1);
89
- const t = r.findIndex((l) => l.id === e.id);
90
- return d.patchLabel(i, e.id, e).then(() => (t < 0 || (r[t] = e, p([...r]), m && m([...r])), !0)).catch(() => !1);
91
- }, X = (e) => {
92
- re.confirm({
91
+ const l = o.findIndex((t) => t.id === e.id);
92
+ return d.patchLabel(i, e.id, e).then(() => (l < 0 || (o[l] = e, x([...o]), u && u([...o])), !0)).catch(() => !1);
93
+ }, _ = (e) => {
94
+ ae.confirm({
93
95
  title: "确认要删除当前标签吗?",
94
96
  content: "删除后,将会删除当前数据集中所有与当前标签关联的数据,删除后无法恢复,请确认是否删除!",
95
97
  onOk: () => {
96
98
  if (!i || !d)
97
99
  return;
98
- const t = r.findIndex((c) => c.id === e), l = n.findIndex((c) => c.id === e);
100
+ const l = o.findIndex((a) => a.id === e), t = s.findIndex((a) => a.id === e);
99
101
  return d.deleteLabel(i, e).then(() => {
100
- l > -1 && (n.splice(l, 1), A([...n])), r.splice(t, 1), p([...r]), m && m([...r]), D();
102
+ t > -1 && (s.splice(t, 1), D([...s])), o.splice(l, 1), x([...o]), u && u([...o]), k();
101
103
  });
102
104
  }
103
105
  });
104
- }, b = (r == null ? void 0 : r.filter((e) => !E || e.label.includes(E))) || [];
105
- return /* @__PURE__ */ h("div", {
106
- className: "label-list-wrap",
107
- children: [/* @__PURE__ */ h(U, {
106
+ }, N = (o == null ? void 0 : o.filter((e) => !O || e.label.includes(O))) || [], B = (e) => {
107
+ var l;
108
+ return (l = n.find((t) => t.id && t.id === e.id)) != null ? l : n.find((t) => t.label === e.label);
109
+ }, I = (e) => {
110
+ var t, a;
111
+ const l = xe((t = e == null ? void 0 : e.boxCount) != null ? t : 0);
112
+ return /* @__PURE__ */ p(ne, {
113
+ children: [/* @__PURE__ */ r("span", {
114
+ className: "label-stat-col",
115
+ children: l.exact ? /* @__PURE__ */ r(de, {
116
+ title: l.exact,
117
+ children: l.text
118
+ }) : l.text
119
+ }), /* @__PURE__ */ r("span", {
120
+ className: "label-stat-col",
121
+ children: (a = e == null ? void 0 : e.count) != null ? a : 0
122
+ })]
123
+ });
124
+ };
125
+ return /* @__PURE__ */ p("div", {
126
+ className: `label-list-wrap${S ? " label-list-wrap--stats" : ""}`,
127
+ children: [/* @__PURE__ */ p($, {
108
128
  justify: "space-between",
109
129
  className: "label-list-title",
110
- children: [/* @__PURE__ */ a("span", {
130
+ children: [/* @__PURE__ */ r("span", {
111
131
  className: "label-list-title",
112
132
  children: "标签列表"
113
- }), /* @__PURE__ */ a("span", {
133
+ }), /* @__PURE__ */ r("span", {
114
134
  className: "label-list-icon",
115
- children: !j && f && f.visible && /* @__PURE__ */ a(F, {
116
- isPreLabel: v,
135
+ children: !z && f && f.visible && /* @__PURE__ */ r(H, {
136
+ isPreLabel: b,
117
137
  placement: "topRight",
118
- children: /* @__PURE__ */ a(Z, {
119
- type: w ? "link" : "text",
138
+ children: /* @__PURE__ */ r(q, {
139
+ type: y ? "link" : "text",
120
140
  size: "small",
121
- onClick: () => J(!w),
122
- icon: /* @__PURE__ */ a(de, {
141
+ onClick: () => Q(!y),
142
+ icon: /* @__PURE__ */ r(be, {
123
143
  type: "icon-shezhi"
124
144
  }),
125
- disabled: v
145
+ disabled: b
126
146
  })
127
147
  })
128
148
  })]
129
- }), /* @__PURE__ */ h(U, {
149
+ }), /* @__PURE__ */ p($, {
130
150
  className: "label-list-opration",
131
- children: [!j && f && f.add && /* @__PURE__ */ a(F, {
132
- isPreLabel: v,
133
- children: /* @__PURE__ */ a(Z, {
151
+ children: [!z && f && f.add && /* @__PURE__ */ r(H, {
152
+ isPreLabel: b,
153
+ children: /* @__PURE__ */ r(q, {
134
154
  className: "label-list-create",
135
155
  type: "default",
136
- icon: /* @__PURE__ */ a(ce, {}),
137
- disabled: x !== null || v,
156
+ icon: /* @__PURE__ */ r(ue, {}),
157
+ disabled: v !== null || b,
138
158
  onClick: () => {
139
- S({
140
- color: k[r.length % 40],
159
+ w({
160
+ color: T[o.length % 40],
141
161
  label: ""
142
162
  });
143
163
  }
144
164
  })
145
- }), /* @__PURE__ */ a("span", {
165
+ }), /* @__PURE__ */ r("span", {
146
166
  className: "label-list-search",
147
- children: /* @__PURE__ */ a(te.Search, {
167
+ children: /* @__PURE__ */ r(oe.Search, {
148
168
  placeholder: "请输入标签名称搜索",
149
- onSearch: V,
169
+ onSearch: X,
150
170
  onChange: (e) => {
151
- R(e.target.value);
171
+ P(e.target.value);
152
172
  }
153
173
  })
154
174
  })]
155
- }), /* @__PURE__ */ h(ie, {
175
+ }), S && /* @__PURE__ */ p("div", {
176
+ className: "label-list-header",
177
+ children: [/* @__PURE__ */ r("span", {
178
+ className: "label-list-header-name",
179
+ children: "标签名称"
180
+ }), /* @__PURE__ */ r("span", {
181
+ className: "label-stat-col",
182
+ children: "标注框数"
183
+ }), /* @__PURE__ */ r("span", {
184
+ className: "label-stat-col",
185
+ children: "图片数"
186
+ })]
187
+ }), /* @__PURE__ */ p(se, {
156
188
  direction: "vertical",
157
189
  className: "label-list",
158
- children: [x && /* @__PURE__ */ a(q, {
159
- onSave: K,
190
+ children: [v && /* @__PURE__ */ r(G, {
191
+ onSave: V,
160
192
  onCancel: () => {
161
- S(null);
193
+ w(null);
162
194
  },
163
- label: x.label || "",
164
- color: x.color || "",
195
+ label: v.label || "",
196
+ color: v.color || "",
165
197
  editMode: !0,
166
198
  isActive: !1,
167
199
  onCheckDuplication: (e) => {
168
- const t = b.findIndex((l) => l.label === e);
169
- return Promise.resolve(t > -1);
200
+ const l = N.findIndex((t) => t.label === e);
201
+ return Promise.resolve(l > -1);
170
202
  }
171
- }), b.length ? b.reverse().map((e, t) => {
172
- var l;
173
- return /* @__PURE__ */ a(q, {
174
- isActive: n.some((c) => (c == null ? void 0 : c.id) === e.id),
175
- editable: w,
176
- shortcut: M && t < 10 ? t.toString() : void 0,
177
- extra: M ? t < 10 ? /* @__PURE__ */ h("span", {
203
+ }), N.length ? N.reverse().map((e, l) => {
204
+ var t, a;
205
+ return /* @__PURE__ */ r(G, {
206
+ isActive: s.some((m) => (m == null ? void 0 : m.id) === e.id),
207
+ editable: y,
208
+ shortcut: C && l < 10 ? l.toString() : void 0,
209
+ extra: C ? l < 10 ? /* @__PURE__ */ p("span", {
178
210
  className: "shortcut",
179
- children: ["快捷键", t]
180
- }) : null : ((l = o.find((c) => c.label === e.label)) == null ? void 0 : l.count) || 0,
211
+ children: ["快捷键", l]
212
+ }) : null : S ? I(B(e)) : (a = (t = B(e)) == null ? void 0 : t.count) != null ? a : 0,
181
213
  label: e.label,
182
214
  color: e.color,
183
215
  onClick: () => {
184
- Q(e), C && C(e);
216
+ W(e), E && E(e);
185
217
  },
186
- onSave: f && f.edit ? (c) => W(g(N({}, e), {
187
- label: c
218
+ onSave: f && f.edit ? (m) => Y(A(g({}, e), {
219
+ label: m
188
220
  })) : void 0,
189
- onDelete: f && f.delete ? () => X(e.id) : void 0,
190
- onCheckDuplication: (c) => {
191
- const Y = b.findIndex((O) => O.label === c && e.id !== O.id);
192
- return Promise.resolve(Y > -1);
221
+ onDelete: f && f.delete ? () => _(e.id) : void 0,
222
+ onCheckDuplication: (m) => {
223
+ const L = N.findIndex((F) => F.label === m && e.id !== F.id);
224
+ return Promise.resolve(L > -1);
193
225
  }
194
226
  }, e.id);
195
- }) : /* @__PURE__ */ a(le, {
227
+ }) : /* @__PURE__ */ r(ce, {
196
228
  className: "label-list-empty",
197
229
  image: !1,
198
230
  description: "请先添加标签,然后在图中框选标注"
@@ -200,7 +232,7 @@ const fe = oe(({
200
232
  })]
201
233
  });
202
234
  });
203
- fe.displayName = "Labels";
235
+ ve.displayName = "Labels";
204
236
  export {
205
- fe as default
237
+ ve as default
206
238
  };