@glodon-aiot/dataset-annotation 3.25.1-alpha.3 → 3.25.1-alpha.5

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 (56) hide show
  1. package/dist/es/_virtual/_commonjsHelpers.mjs +8 -0
  2. package/dist/es/_virtual/dayjs.min.mjs +4 -0
  3. package/dist/es/components/OCRImageViewer/index.mjs +130 -117
  4. package/dist/es/components/VersionCompare/VersionCompareSelectModal/index.mjs +122 -0
  5. package/dist/es/components/VersionCompare/adapter.mjs +215 -0
  6. package/dist/es/components/VersionCompare/components/DataChangeStatsCard.mjs +68 -0
  7. package/dist/es/components/VersionCompare/components/DiffValue.mjs +31 -0
  8. package/dist/es/components/VersionCompare/components/LabelComparisonCard.mjs +130 -0
  9. package/dist/es/components/VersionCompare/components/ModifiedSampleCompareModal.mjs +207 -0
  10. package/dist/es/components/VersionCompare/components/SampleChangeDetailsCard.mjs +160 -0
  11. package/dist/es/components/VersionCompare/components/SingleSampleDetailModal.mjs +165 -0
  12. package/dist/es/components/VersionCompare/components/VersionCompareHeader.mjs +106 -0
  13. package/dist/es/components/VersionCompare/components/VersionOverviewCard.mjs +70 -0
  14. package/dist/es/components/VersionCompare/index.mjs +416 -0
  15. package/dist/es/components/VersionCompare/mock.mjs +571 -0
  16. package/dist/es/components/VersionCompare/style.less.mjs +4 -0
  17. package/dist/es/components/VersionCompare/utils/labelColors.mjs +45 -0
  18. package/dist/es/createDatasetVersionCompare/index.mjs +124 -0
  19. package/dist/es/index.mjs +21 -15
  20. package/dist/es/node_modules/dayjs/dayjs.min.mjs +324 -0
  21. package/dist/lib/index.js +37 -4
  22. package/dist/src/components/OCRImageViewer/index.d.ts +1 -0
  23. package/dist/src/components/VersionCompare/VersionCompareSelectModal/index.d.ts +16 -0
  24. package/dist/src/components/VersionCompare/adapter.d.ts +50 -0
  25. package/dist/src/components/VersionCompare/components/DataChangeStatsCard.d.ts +9 -0
  26. package/dist/src/components/VersionCompare/components/DiffValue.d.ts +23 -0
  27. package/dist/src/components/VersionCompare/components/LabelComparisonCard.d.ts +12 -0
  28. package/dist/src/components/VersionCompare/components/ModifiedSampleCompareModal.d.ts +48 -0
  29. package/dist/src/components/VersionCompare/components/SampleChangeDetailsCard.d.ts +21 -0
  30. package/dist/src/components/VersionCompare/components/SingleSampleDetailModal.d.ts +46 -0
  31. package/dist/src/components/VersionCompare/components/VersionCompareHeader.d.ts +13 -0
  32. package/dist/src/components/VersionCompare/components/VersionOverviewCard.d.ts +9 -0
  33. package/dist/src/components/VersionCompare/index.d.ts +34 -0
  34. package/dist/src/components/VersionCompare/mock.d.ts +25 -0
  35. package/dist/src/components/VersionCompare/types.d.ts +75 -0
  36. package/dist/src/components/VersionCompare/utils/labelColors.d.ts +13 -0
  37. package/dist/src/createDatasetVersionCompare/index.d.ts +26 -0
  38. package/dist/src/index.d.ts +6 -0
  39. package/package.json +2 -2
  40. package/dist/dataset-annotation.js +0 -123598
  41. package/dist/dataset-annotation.umd.cjs +0 -1017
  42. package/dist/example/DatasetAnnotationDemo.d.ts +0 -3
  43. package/dist/example/DemoTabs.d.ts +0 -3
  44. package/dist/example/DetectionDatasetDemo.d.ts +0 -5
  45. package/dist/example/DetectionImageDemo.d.ts +0 -5
  46. package/dist/example/OcrDatasetDemo.d.ts +0 -5
  47. package/dist/example/OcrImageDemo.d.ts +0 -5
  48. package/dist/example/OcrkvcDatasetDemo.d.ts +0 -5
  49. package/dist/example/constant.local.d.ts +0 -6
  50. package/dist/example/index.d.ts +0 -1
  51. package/dist/src/components/VLMAnnotationDetail/MarkVLMBoxModal/ImageDetail/index.d.ts +0 -16
  52. package/dist/src/components/VLMAnnotationDetail/MarkVLMBoxModal/OCRBoxMaker/LabelEditorInput.d.ts +0 -12
  53. package/dist/src/components/VLMAnnotationDetail/MarkVLMBoxModal/OCRBoxMaker/LabelEditorItem.d.ts +0 -21
  54. package/dist/src/components/VLMAnnotationDetail/MarkVLMBoxModal/OCRBoxMaker/LableEditor.d.ts +0 -16
  55. package/dist/src/components/VLMAnnotationDetail/MarkVLMBoxModal/OCRBoxMaker/index.d.ts +0 -19
  56. package/dist/src/utils/reactCompatibility.d.ts +0 -5
@@ -0,0 +1,160 @@
1
+ import { jsxs as c, jsx as a, Fragment as j } from "react/jsx-runtime";
2
+ import { Tabs as q, Spin as x, Tooltip as E, Pagination as O } from "antd";
3
+ import V from "classnames";
4
+ import A from "../../Thumbnail/index.mjs";
5
+ import F from "../../DetectionStatus/index.mjs";
6
+ import I from "../../DataEmpty/index.mjs";
7
+ const J = (i) => {
8
+ var o;
9
+ if (!((o = i == null ? void 0 : i.labels) != null && o.length))
10
+ return [];
11
+ const t = /* @__PURE__ */ new Set();
12
+ return i.labels.forEach((r) => {
13
+ var s;
14
+ const l = (s = r == null ? void 0 : r.label) == null ? void 0 : s.trim();
15
+ l && t.add(l);
16
+ }), Array.from(t);
17
+ }, W = (i) => {
18
+ var b, p, N, g;
19
+ const {
20
+ baseVersionNo: t,
21
+ targetVersionNo: o,
22
+ isOcrDetection: r,
23
+ changeStats: l,
24
+ activeTab: s,
25
+ items: v,
26
+ total: T,
27
+ pageNo: u,
28
+ pageSize: f,
29
+ loading: $ = !1,
30
+ imgProxy: D,
31
+ onTabChange: U,
32
+ onPageChange: z,
33
+ onSampleClick: h
34
+ } = i, L = [{
35
+ key: "added",
36
+ label: "新增",
37
+ count: (b = l == null ? void 0 : l.addedCount) != null ? b : 0
38
+ }, {
39
+ key: "deleted",
40
+ label: "删除",
41
+ count: (p = l == null ? void 0 : l.deletedCount) != null ? p : 0
42
+ }, {
43
+ key: "modified",
44
+ label: "修改",
45
+ count: (N = l == null ? void 0 : l.modifiedCount) != null ? N : 0
46
+ }, {
47
+ key: "unchanged",
48
+ label: "无变动",
49
+ count: (g = l == null ? void 0 : l.unchangedCount) != null ? g : 0
50
+ }];
51
+ return /* @__PURE__ */ c("div", {
52
+ className: "vc-card vc-sample-details-card",
53
+ children: [/* @__PURE__ */ c("div", {
54
+ children: [/* @__PURE__ */ c("div", {
55
+ className: "vc-card-header",
56
+ children: [/* @__PURE__ */ a("h3", {
57
+ className: "vc-card-title",
58
+ children: "数据变更详情"
59
+ }), /* @__PURE__ */ c("span", {
60
+ className: "vc-card-subtitle",
61
+ children: ["(", t || "-", " → ", o || "-", ")"]
62
+ })]
63
+ }), /* @__PURE__ */ a(q, {
64
+ className: "vc-sample-tabs",
65
+ activeKey: s,
66
+ onChange: (n) => {
67
+ n !== s && U(n);
68
+ },
69
+ items: L.map((n) => ({
70
+ key: n.key,
71
+ label: `${n.label} (${n.count})`
72
+ }))
73
+ })]
74
+ }), /* @__PURE__ */ a(x, {
75
+ spinning: $,
76
+ children: v.length > 0 ? /* @__PURE__ */ c(j, {
77
+ children: [/* @__PURE__ */ a("div", {
78
+ className: "vc-sample-grid",
79
+ children: v.map((n, d) => {
80
+ var y, k;
81
+ const e = n.sample, P = (u - 1) * f + d + 1, m = r ? [] : J(e), C = ((k = (y = e == null ? void 0 : e.labels) == null ? void 0 : y[0]) == null ? void 0 : k.label) || m[0] || "", w = m.length >= 2 ? `+${m.length - 1}` : null;
82
+ return /* @__PURE__ */ c("div", {
83
+ className: "vc-sample-card",
84
+ "data-sample-id": (e == null ? void 0 : e.id) || n.fileKey || String(d),
85
+ onClick: () => h == null ? void 0 : h(n, d),
86
+ children: [/* @__PURE__ */ a("div", {
87
+ className: "vc-detection-status-wrapper",
88
+ children: /* @__PURE__ */ a(F, {
89
+ sample: e
90
+ })
91
+ }), /* @__PURE__ */ a("div", {
92
+ className: "vc-sample-card-img",
93
+ children: /* @__PURE__ */ a(A, {
94
+ fileKey: (e == null ? void 0 : e.fileKey) || n.fileKey,
95
+ width: 124,
96
+ thumbnailUrl: (e == null ? void 0 : e.thumbnailUrl) || (e == null ? void 0 : e.fileUrl),
97
+ imgProxy: D
98
+ })
99
+ }), /* @__PURE__ */ c("div", {
100
+ className: V("vc-sample-card-footer", {
101
+ "is-ocr": r
102
+ }),
103
+ children: [!r && /* @__PURE__ */ a("div", {
104
+ className: "vc-sample-label-info",
105
+ children: C ? /* @__PURE__ */ a(E, {
106
+ placement: "top",
107
+ title: /* @__PURE__ */ a("div", {
108
+ children: m.map((K) => /* @__PURE__ */ a("div", {
109
+ children: K
110
+ }, K))
111
+ }),
112
+ children: /* @__PURE__ */ c("div", {
113
+ style: {
114
+ width: "100%",
115
+ display: "flex",
116
+ alignItems: "center"
117
+ },
118
+ children: [/* @__PURE__ */ a("span", {
119
+ className: "vc-sample-first-label",
120
+ children: C
121
+ }), w && /* @__PURE__ */ a("span", {
122
+ className: "vc-sample-more-count",
123
+ children: w
124
+ })]
125
+ })
126
+ }) : /* @__PURE__ */ a("span", {
127
+ className: "vc-sample-no-label",
128
+ children: "无标签"
129
+ })
130
+ }), /* @__PURE__ */ a("div", {
131
+ className: "vc-sample-serial",
132
+ children: P
133
+ })]
134
+ })]
135
+ }, `${n.changeType}-${n.fileKey || (e == null ? void 0 : e.id) || d}`);
136
+ })
137
+ }), /* @__PURE__ */ a("div", {
138
+ className: "vc-sample-pagination",
139
+ children: /* @__PURE__ */ a(O, {
140
+ current: u,
141
+ pageSize: f,
142
+ total: T,
143
+ showQuickJumper: !0,
144
+ showSizeChanger: !0,
145
+ pageSizeOptions: ["10", "20", "50", "100"],
146
+ onChange: z
147
+ })
148
+ })]
149
+ }) : /* @__PURE__ */ a("div", {
150
+ className: "vc-sample-empty-wrapper",
151
+ children: /* @__PURE__ */ a(I, {
152
+ description: "当前分类下暂无图片数据"
153
+ })
154
+ })
155
+ })]
156
+ });
157
+ };
158
+ export {
159
+ W as default
160
+ };
@@ -0,0 +1,165 @@
1
+ import { jsx as s, jsxs as c } from "react/jsx-runtime";
2
+ import { useState as w, useRef as R, useEffect as U, useMemo as P } from "react";
3
+ import { Modal as T, Tag as D, Button as q, Spin as y } from "antd";
4
+ import { useKeyPress as _ } from "ahooks";
5
+ import $ from "../../Iconfont/index.mjs";
6
+ import ee from "../../DetectionStatus/index.mjs";
7
+ import le from "../../DetectionAnnotation/components/LabelMaker/index.mjs";
8
+ import se from "../../OCRImageViewer/index.mjs";
9
+ import { injectSampleLabelColors as G } from "../utils/labelColors.mjs";
10
+ const H = {
11
+ added: {
12
+ text: "新增",
13
+ className: "is-added"
14
+ },
15
+ deleted: {
16
+ text: "删除",
17
+ className: "is-deleted"
18
+ },
19
+ modified: {
20
+ text: "修改",
21
+ className: "is-modified"
22
+ },
23
+ unchanged: {
24
+ text: "无变动",
25
+ className: "is-unchanged"
26
+ }
27
+ }, ve = ({
28
+ open: t,
29
+ onCancel: K,
30
+ item: l,
31
+ changeType: o,
32
+ isOcrDetection: b,
33
+ datasetId: g,
34
+ baseVersionId: Y,
35
+ targetVersionId: J,
36
+ labelColorMap: h,
37
+ canPrev: ae,
38
+ canNext: te,
39
+ switching: E = !1,
40
+ onPrev: M,
41
+ onNext: S,
42
+ onImageReadyChange: m,
43
+ cvforceDatahub: n,
44
+ useMock: V = !1
45
+ }) => {
46
+ var I, k, z;
47
+ const [u, j] = w(null), [A, f] = w(!1), [O, i] = w(), x = R(0);
48
+ U(() => {
49
+ t || i(void 0);
50
+ }, [t]);
51
+ const r = P(() => {
52
+ if (l)
53
+ return o === "deleted" && l.baseSample || l.sample;
54
+ }, [l, o]), L = o === "deleted" ? Y : J;
55
+ U(() => {
56
+ if (j(null), !t || !r) {
57
+ f(!1);
58
+ return;
59
+ }
60
+ const v = !!r.fileUrl, N = Array.isArray(r.labels);
61
+ if (V || !(n != null && n.getDatasetsIdVersionsVidSsamplesSid) || !g || !L || !r.id || v && N) {
62
+ f(!1);
63
+ return;
64
+ }
65
+ const p = ++x.current;
66
+ f(!0), n.getDatasetsIdVersionsVidSsamplesSid(g, L, r.id).then((Z) => {
67
+ p === x.current && j(Z);
68
+ }).catch(() => {
69
+ }).finally(() => {
70
+ p === x.current && f(!1);
71
+ });
72
+ }, [t, r, V, n, g, L]);
73
+ const e = u || r, Q = P(() => {
74
+ var v, N;
75
+ return u ? G(u, h) : o === "deleted" && ((v = l == null ? void 0 : l.baseColorLabels) != null && v.length) ? l.baseColorLabels : (N = l == null ? void 0 : l.targetColorLabels) != null && N.length ? l.targetColorLabels : G(e, h);
76
+ }, [u, l, o, e, h]), B = H[o] || H.added, C = (l == null ? void 0 : l.displayFileName) || ((I = e == null ? void 0 : e.sampleFileName) == null ? void 0 : I.name) || (e == null ? void 0 : e.fileName) || "-", a = (e == null ? void 0 : e.fileUrl) || (e == null ? void 0 : e.thumbnailUrl) || "", W = (z = (k = e == null ? void 0 : e.labels) == null ? void 0 : k.length) != null ? z : 0, F = !!a && O !== a, d = E || A || F, X = E || A || b && F;
77
+ return U(() => {
78
+ m == null || m(t && !d && !!a);
79
+ }, [t, d, a, m]), _("leftarrow", () => {
80
+ !t || d || M();
81
+ }), _("rightarrow", () => {
82
+ !t || d || S();
83
+ }), /* @__PURE__ */ s(T, {
84
+ open: t,
85
+ onCancel: K,
86
+ footer: null,
87
+ centered: !0,
88
+ width: 1151,
89
+ destroyOnClose: !0,
90
+ wrapClassName: "vc-single-detail-modal-wrap",
91
+ className: "vc-single-detail-modal",
92
+ title: /* @__PURE__ */ c("div", {
93
+ className: "vc-detail-modal-header",
94
+ children: [/* @__PURE__ */ c("div", {
95
+ className: "vc-detail-modal-header-left",
96
+ children: [/* @__PURE__ */ s("span", {
97
+ className: "vc-detail-modal-title",
98
+ children: "图片详情"
99
+ }), /* @__PURE__ */ s(D, {
100
+ className: `vc-detail-change-tag ${B.className}`,
101
+ children: B.text
102
+ })]
103
+ }), /* @__PURE__ */ s("span", {
104
+ className: "vc-detail-modal-filename",
105
+ title: C,
106
+ children: C
107
+ })]
108
+ }),
109
+ children: /* @__PURE__ */ c("div", {
110
+ className: "vc-single-detail-body",
111
+ children: [/* @__PURE__ */ s(q, {
112
+ className: "vc-detail-nav-btn select-prev",
113
+ icon: /* @__PURE__ */ s($, {
114
+ type: "icon-zuojiantou"
115
+ }),
116
+ type: "text",
117
+ disabled: d,
118
+ onClick: M
119
+ }), /* @__PURE__ */ c("div", {
120
+ className: "vc-single-detail-center",
121
+ children: [/* @__PURE__ */ s("div", {
122
+ className: "vc-ocr-box-count-bar",
123
+ children: b ? `标注框数量:${W}` : null
124
+ }), /* @__PURE__ */ c("div", {
125
+ className: "vc-single-detail-canvas",
126
+ children: [e && /* @__PURE__ */ s("div", {
127
+ className: "vc-modal-detection-status",
128
+ children: /* @__PURE__ */ s(ee, {
129
+ sample: e
130
+ })
131
+ }), e && (b ? /* @__PURE__ */ s(se, {
132
+ zoomMin: 0.1,
133
+ zoomMax: 10,
134
+ zoomStep: 0.1,
135
+ url: a,
136
+ labels: e.labels || [],
137
+ onImageLoad: () => i(a),
138
+ onImageError: () => i(a)
139
+ }, "vc-single-ocr") : /* @__PURE__ */ s(le, {
140
+ disabled: !0,
141
+ isPreLabel: !0,
142
+ imageUrl: a,
143
+ labels: Q,
144
+ onImageLoad: () => i(a),
145
+ onImageError: () => i(a)
146
+ }, "vc-single-det")), X && /* @__PURE__ */ s("div", {
147
+ className: "vc-detail-loading-mask",
148
+ children: /* @__PURE__ */ s(y, {})
149
+ })]
150
+ })]
151
+ }), /* @__PURE__ */ s(q, {
152
+ className: "vc-detail-nav-btn select-next",
153
+ icon: /* @__PURE__ */ s($, {
154
+ type: "icon-youjiantou"
155
+ }),
156
+ type: "text",
157
+ disabled: d,
158
+ onClick: S
159
+ })]
160
+ })
161
+ });
162
+ };
163
+ export {
164
+ ve as default
165
+ };
@@ -0,0 +1,106 @@
1
+ import { jsxs as a, jsx as e } from "react/jsx-runtime";
2
+ import { Button as r } from "antd";
3
+ import { ArrowLeftOutlined as n, ArrowRightOutlined as t } from "@ant-design/icons";
4
+ const b = (l) => {
5
+ const {
6
+ datasetName: i,
7
+ baseVersionNo: d,
8
+ targetVersionNo: m,
9
+ formattedCompareTime: o,
10
+ showBreadcrumb: s = !0,
11
+ onBack: c,
12
+ onReselect: v
13
+ } = l;
14
+ return /* @__PURE__ */ a("div", {
15
+ className: "vc-top-bar-wrapper",
16
+ children: [s && /* @__PURE__ */ e("div", {
17
+ className: "vc-breadcrumb-bar",
18
+ children: /* @__PURE__ */ a("div", {
19
+ className: "vc-breadcrumb-left",
20
+ children: [/* @__PURE__ */ e(r, {
21
+ type: "link",
22
+ className: "vc-back-btn",
23
+ "aria-label": "返回",
24
+ icon: /* @__PURE__ */ e(n, {}),
25
+ onClick: c
26
+ }), /* @__PURE__ */ a("nav", {
27
+ className: "vc-breadcrumb-nav",
28
+ "aria-label": "面包屑",
29
+ children: [/* @__PURE__ */ e("span", {
30
+ className: "vc-breadcrumb-link",
31
+ onClick: c,
32
+ children: "数据集管理"
33
+ }), /* @__PURE__ */ e("span", {
34
+ className: "vc-breadcrumb-sep",
35
+ children: "/"
36
+ }), /* @__PURE__ */ e("span", {
37
+ className: "vc-breadcrumb-current",
38
+ children: "版本对比"
39
+ })]
40
+ })]
41
+ })
42
+ }), /* @__PURE__ */ a("div", {
43
+ className: "vc-header-bar",
44
+ children: [/* @__PURE__ */ a("div", {
45
+ className: "vc-header-left",
46
+ children: [/* @__PURE__ */ a("div", {
47
+ className: "vc-dataset-title-group",
48
+ children: [!s && /* @__PURE__ */ e(r, {
49
+ type: "link",
50
+ className: "vc-inline-back-btn",
51
+ "aria-label": "返回",
52
+ icon: /* @__PURE__ */ e(n, {}),
53
+ onClick: c
54
+ }), /* @__PURE__ */ e("span", {
55
+ className: "vc-dataset-name",
56
+ children: i || "-"
57
+ })]
58
+ }), /* @__PURE__ */ a("div", {
59
+ className: "vc-header-meta",
60
+ children: [/* @__PURE__ */ a("div", {
61
+ className: "vc-version-direction",
62
+ children: [/* @__PURE__ */ e("span", {
63
+ className: "vc-version-label",
64
+ children: "对比版本:"
65
+ }), /* @__PURE__ */ a("div", {
66
+ className: "vc-version-pair",
67
+ children: [/* @__PURE__ */ a("span", {
68
+ className: "vc-version-tag",
69
+ children: [/* @__PURE__ */ e("span", {
70
+ className: "vc-version-no",
71
+ children: d || "-"
72
+ }), /* @__PURE__ */ e("span", {
73
+ className: "vc-version-role",
74
+ children: "(基准版本)"
75
+ })]
76
+ }), /* @__PURE__ */ e("span", {
77
+ className: "vc-version-arrow",
78
+ "aria-label": "对比方向",
79
+ children: /* @__PURE__ */ e(t, {})
80
+ }), /* @__PURE__ */ a("span", {
81
+ className: "vc-version-tag",
82
+ children: [/* @__PURE__ */ e("span", {
83
+ className: "vc-version-no",
84
+ children: m || "-"
85
+ }), /* @__PURE__ */ e("span", {
86
+ className: "vc-version-role",
87
+ children: "(目标版本)"
88
+ })]
89
+ })]
90
+ })]
91
+ }), /* @__PURE__ */ a("span", {
92
+ className: "vc-compare-time",
93
+ children: ["对比时间:", o || "-"]
94
+ })]
95
+ })]
96
+ }), /* @__PURE__ */ e(r, {
97
+ className: "vc-reselect-btn",
98
+ onClick: v,
99
+ children: "重新选择"
100
+ })]
101
+ })]
102
+ });
103
+ };
104
+ export {
105
+ b as default
106
+ };
@@ -0,0 +1,70 @@
1
+ import { jsxs as a, jsx as e } from "react/jsx-runtime";
2
+ import n from "./DiffValue.mjs";
3
+ const h = (r) => {
4
+ const {
5
+ baseVersionNo: s,
6
+ targetVersionNo: i,
7
+ rows: l
8
+ } = r;
9
+ return /* @__PURE__ */ a("div", {
10
+ className: "vc-card vc-overview-card",
11
+ children: [/* @__PURE__ */ e("div", {
12
+ className: "vc-card-header",
13
+ children: /* @__PURE__ */ e("h3", {
14
+ className: "vc-card-title",
15
+ children: "版本数据概览"
16
+ })
17
+ }), /* @__PURE__ */ e("div", {
18
+ className: "vc-table-container",
19
+ children: /* @__PURE__ */ a("table", {
20
+ className: "vc-standard-table",
21
+ children: [/* @__PURE__ */ e("thead", {
22
+ children: /* @__PURE__ */ a("tr", {
23
+ children: [/* @__PURE__ */ e("th", {
24
+ children: "指标"
25
+ }), /* @__PURE__ */ e("th", {
26
+ children: /* @__PURE__ */ a("span", {
27
+ className: "vc-th-version-title",
28
+ children: [/* @__PURE__ */ e("span", {
29
+ className: "vc-th-version-no",
30
+ children: s || "-"
31
+ }), /* @__PURE__ */ e("span", {
32
+ className: "vc-th-version-desc",
33
+ children: "(基准版本)"
34
+ })]
35
+ })
36
+ }), /* @__PURE__ */ e("th", {
37
+ children: /* @__PURE__ */ a("span", {
38
+ className: "vc-th-version-title",
39
+ children: [/* @__PURE__ */ e("span", {
40
+ className: "vc-th-version-no",
41
+ children: i || "-"
42
+ }), /* @__PURE__ */ e("span", {
43
+ className: "vc-th-version-desc",
44
+ children: "(目标版本)"
45
+ })]
46
+ })
47
+ })]
48
+ })
49
+ }), /* @__PURE__ */ e("tbody", {
50
+ children: l.map((c) => /* @__PURE__ */ a("tr", {
51
+ children: [/* @__PURE__ */ e("td", {
52
+ children: c.metricLabel
53
+ }), /* @__PURE__ */ e("td", {
54
+ children: c.baseValue
55
+ }), /* @__PURE__ */ e("td", {
56
+ children: /* @__PURE__ */ e(n, {
57
+ value: c.targetValue,
58
+ diff: c.diff,
59
+ gap: 8
60
+ })
61
+ })]
62
+ }, c.key))
63
+ })]
64
+ })
65
+ })]
66
+ });
67
+ };
68
+ export {
69
+ h as default
70
+ };