hzzt-kfb-slide 0.1.8 → 0.1.9

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 (111) hide show
  1. package/dist/components/{annotateDs5i2eNO.js → annotateBGxN4SH2.js} +1 -1
  2. package/dist/components/{annotateCwGjQKaP.js → annotateCAq6sZAH.js} +3 -3
  3. package/dist/components/{annotateCsjd-8z3.js → annotateWs8dAunq.js} +1 -1
  4. package/dist/components/{annotateCuw9UNn2.js → annotateo3vZHfGB.js} +1 -1
  5. package/dist/components/{arrowCircleDwqggHev.js → arrowCircleDqHqb97q.js} +1 -1
  6. package/dist/components/{arrowCirclelm3OXqGD.js → arrowCircleO5YzneBS.js} +1 -1
  7. package/dist/components/{arrowM7YlD6Fp.js → arrowDfFmbAvl.js} +1 -1
  8. package/dist/components/{arrowCBL9AzKr.js → arrowDo5jlJvX.js} +1 -1
  9. package/dist/components/{arrowDownCdaul-Hd.js → arrowDown5YaRWzG-.js} +1 -1
  10. package/dist/components/{arrowDownBAZ_RPEu.js → arrowDownDFK8VvKS.js} +1 -1
  11. package/dist/components/{arrowLeft8I3cz9ix.js → arrowLefthUAyhKf8.js} +1 -1
  12. package/dist/components/{arrowLeftCY6O_JXa.js → arrowLeftiM7Gm_rj.js} +1 -1
  13. package/dist/components/{arrowRightDNETqHjH.js → arrowRightBm5GCHqI.js} +1 -1
  14. package/dist/components/{arrowRightN9DgBweY.js → arrowRightDhUaOSZq.js} +1 -1
  15. package/dist/components/{arrowUp15GBTWCC.js → arrowUpIgBDuTvB.js} +1 -1
  16. package/dist/components/{arrowUpCms_i80O.js → arrowUpbzQHVqNd.js} +1 -1
  17. package/dist/components/{bilateralDRIzcahZ.js → bilateralCi9iFh5d.js} +1 -1
  18. package/dist/components/{bilateralCgiGCORq.js → bilateralD3fQa6t8.js} +1 -1
  19. package/dist/components/{channel0c8ZxreJ.js → channelB0HuZp-h.js} +1 -1
  20. package/dist/components/{channel8wdsKWt0.js → channelDHD-3vZX.js} +1 -1
  21. package/dist/components/{checkDksrM1Ib.js → checkBPnPy-Ub.js} +1 -1
  22. package/dist/components/{checkCvkYx5Zn.js → checkBo9QGrvm.js} +1 -1
  23. package/dist/components/{configD53ypjPd.js → config4I5abOF8.js} +1 -1
  24. package/dist/components/{configBQB-oghg.js → configCvkvpev9.js} +1 -1
  25. package/dist/components/{customAwznbb6Z.js → customDSBh6zAg.js} +1 -1
  26. package/dist/components/{customdA1G1T1y.js → customvm73Z9ln.js} +1 -1
  27. package/dist/components/{deleteCdJCCQ6y.js → deleteBNgk9ZOA.js} +1 -1
  28. package/dist/components/{deleteChVtJN4n.js → deleteD2YJkDdt.js} +1 -1
  29. package/dist/components/{dot16c1xNPD.js → dot0WHIzbhi.js} +1 -1
  30. package/dist/components/{dotD0Gx7CRc.js → dot3377DPYD.js} +1 -1
  31. package/dist/components/{dotBjXKweg0.js → dotBHF3nRpB.js} +1 -1
  32. package/dist/components/{dotDJxvUSso.js → dotBWZcPJ3c.js} +1 -1
  33. package/dist/components/{dotBQNxsw3c.js → dotCaGq1n2I.js} +1 -1
  34. package/dist/components/{dotC0CKM_hZ.js → dotDnPxb7fB.js} +4 -4
  35. package/dist/components/{downloadZ2QzL5rO.js → downloadBXzUqH2X.js} +1 -1
  36. package/dist/components/{downloadNznR12xP.js → downloadCFpPM1dg.js} +3 -3
  37. package/dist/components/{downloadBByB8lwE.js → downloadCTNSr5vw.js} +1 -1
  38. package/dist/components/{downloadViyLOOrK.js → downloaddJdK3M2V.js} +1 -1
  39. package/dist/components/{ellipseCBUG6Mh8.js → ellipseDW2x8zyV.js} +1 -1
  40. package/dist/components/{ellipseC2z02yg-.js → ellipsexXhrXwMO.js} +1 -1
  41. package/dist/components/{expandLeftDlJCG1r9.js → expandLeftC8zJC3sF.js} +1 -1
  42. package/dist/components/{expandLeftDB8r1unh.js → expandLeftDlPM5C4_.js} +1 -1
  43. package/dist/components/{expandRightrm3vKoq_.js → expandRightB4fr3osn.js} +1 -1
  44. package/dist/components/{expandRightBhVI7kIo.js → expandRightD4t5eAC8.js} +1 -1
  45. package/dist/components/{flagDc9VAAUM.js → flagCAYFx-Kg.js} +1 -1
  46. package/dist/components/{flagDLIm6S3D.js → flagaIA3XdbR.js} +1 -1
  47. package/dist/components/{flipC95Pz5UL.js → flipBnog7THW.js} +1 -1
  48. package/dist/components/{flipDFWc7R0p.js → flipctjVjVop.js} +1 -1
  49. package/dist/components/{fontD27n3hS-.js → fontBlQIMQka.js} +1 -1
  50. package/dist/components/{fontCZ3hGZBF.js → fontC8vEFiT8.js} +1 -1
  51. package/dist/components/{fullscreenDF7FK-y9.js → fullscreenBGYoQBVj.js} +2 -2
  52. package/dist/components/{fullscreenD26Fq3AJ.js → fullscreenCFzLlJwu.js} +1 -1
  53. package/dist/components/{fullscreenCCAwhExm.js → fullscreenD9VUP9_N.js} +1 -1
  54. package/dist/components/{fullscreenBrDmE4_A.js → fullscreenPoizImKu.js} +1 -1
  55. package/dist/components/indexDt4Wwt6a.js +4 -0
  56. package/dist/components/indexYStA35ll.js +3372 -0
  57. package/dist/components/{infoD_KSpt0x.js → infoBgFtKURA.js} +1 -1
  58. package/dist/components/{infoD4ZTbsGp.js → infoGk6YrcsI.js} +1 -1
  59. package/dist/components/{levelBpo8OsbV.js → levelDPHVNGDq.js} +1 -1
  60. package/dist/components/{levelDtDdq-Pg.js → levelM1Zwhfh0.js} +1 -1
  61. package/dist/components/{line2KgRRfGu.js → lineCACajIda.js} +1 -1
  62. package/dist/components/{lineNu21t5gy.js → lineY2y1VH5T.js} +1 -1
  63. package/dist/components/{microscopeCj4MZVX6.js → microscopeBXo7gg6w.js} +1 -1
  64. package/dist/components/{microscopemDpbiPHg.js → microscopeCYzWML7r.js} +1 -1
  65. package/dist/components/{microscopeBLaPm6pb.js → microscopeCni5LwyW.js} +1 -1
  66. package/dist/components/{microscopeD8c1neyn.js → microscopeNl42JU1P.js} +3 -3
  67. package/dist/components/{moveDMF_aznf.js → moveB9NAKOsw.js} +3 -3
  68. package/dist/components/{moveWhJ3O6uI.js → moveBVyDEKnl.js} +1 -1
  69. package/dist/components/{moveCtlzWScv.js → moveCz6A4Ez1.js} +1 -1
  70. package/dist/components/{moveBONH7e1-.js → movest96iRgd.js} +1 -1
  71. package/dist/components/{nextDQR6-RfD.js → nextCwoUsy6E.js} +1 -1
  72. package/dist/components/{nextBbF_v1SK.js → nextqhNB-SFW.js} +1 -1
  73. package/dist/components/{polygonDLNm7Aiy.js → polygonBT3dOW65.js} +1 -1
  74. package/dist/components/{polygonB1s-gscM.js → polygonDKyvELbA.js} +1 -1
  75. package/dist/components/{prevBi3Jjzby.js → prevBpUUYZ6O.js} +1 -1
  76. package/dist/components/{prevDtGjAkiY.js → prevCKEi4Puv.js} +1 -1
  77. package/dist/components/{processOErCYmsz.js → processC-WPdB6z.js} +3 -3
  78. package/dist/components/{processZz2jg8Ii.js → processCH8V7XuS.js} +1 -1
  79. package/dist/components/{processBaejbNIO.js → processCLMa81uw.js} +1 -1
  80. package/dist/components/{processB_71-rt3.js → processCb2-EpwX.js} +1 -1
  81. package/dist/components/{rectangleCx7rw04r.js → rectangleCEz3jlaN.js} +1 -1
  82. package/dist/components/{rectangleB_weH4OT.js → rectangleCbnLFNUp.js} +1 -1
  83. package/dist/components/{rotateC8INrLms.js → rotateCUmCozCI.js} +1 -1
  84. package/dist/components/{rotateCQ-njCPy.js → rotateCd3NfTn3.js} +4 -4
  85. package/dist/components/{rotateCn_yYR-9.js → rotateCp0eUC9w.js} +1 -1
  86. package/dist/components/{rotateChAaWWwk.js → rotateTx_jA6Tj.js} +1 -1
  87. package/dist/components/{settingbBZdqUd4.js → setting4lZ-C5Ee.js} +3 -3
  88. package/dist/components/{settingDc0THS-p.js → setting7qHA2k3V.js} +1 -1
  89. package/dist/components/{settingBuJ04L0g.js → settingCjLFtIFq.js} +1 -1
  90. package/dist/components/{settingDa4UFFpZ.js → settingL9wi7-is.js} +1 -1
  91. package/dist/components/{star4mf8YXXg.js → starCmSx2RRp.js} +1 -1
  92. package/dist/components/{starCPNRqnqz.js → starD45B3mMF.js} +1 -1
  93. package/dist/components/{tailorB7TqXg5T.js → tailorDHHY7I25.js} +1 -1
  94. package/dist/components/{tailorfTcGg1n3.js → tailorDPhAvXTy.js} +1 -1
  95. package/dist/components/{useCommonBcu2vBNt.js → useCommonCfZYfi5_.js} +1 -1
  96. package/dist/components/{useCommonDV6XODnB.js → useCommonD1xLsDFm.js} +1 -1
  97. package/dist/components/{voiceB8S4rKDI.js → voicedPtSHu3-.js} +1 -1
  98. package/dist/components/{voiceDU2Vni9x.js → voicejDSvtJQ0.js} +1 -1
  99. package/dist/components/{zoomBn1qhxqR.js → zoomByPWFzTS.js} +1 -1
  100. package/dist/components/{zoomInDyv5nd6T.js → zoomInByzL1beZ.js} +1 -1
  101. package/dist/components/{zoomInD_8Csh5g.js → zoomInEzPaqdhp.js} +1 -1
  102. package/dist/components/{zoomtmOdf1Vc.js → zoomNFFxBQlY.js} +1 -1
  103. package/dist/components/{zoomOutDDZGVubB.js → zoomOutCJK4IL-h.js} +1 -1
  104. package/dist/components/{zoomOutC0vB2rpg.js → zoomOuthCZGs44j.js} +1 -1
  105. package/dist/index.cjs.js +1 -1
  106. package/dist/index.es.js +1 -1
  107. package/package.json +5 -2
  108. package/types/components/KfbToolbox.vue.d.ts +0 -1
  109. package/web-types.json +156 -0
  110. package/dist/components/indexBD-4Tc4b.js +0 -4
  111. package/dist/components/indexDRXmzSTr.js +0 -3111
@@ -0,0 +1,3372 @@
1
+ var vl = Object.defineProperty, fl = Object.defineProperties;
2
+ var ml = Object.getOwnPropertyDescriptors;
3
+ var We = Object.getOwnPropertySymbols;
4
+ var Ht = Object.prototype.hasOwnProperty, Pt = Object.prototype.propertyIsEnumerable;
5
+ var Mt = (t, e, l) => e in t ? vl(t, e, { enumerable: !0, configurable: !0, writable: !0, value: l }) : t[e] = l, j = (t, e) => {
6
+ for (var l in e || (e = {}))
7
+ Ht.call(e, l) && Mt(t, l, e[l]);
8
+ if (We)
9
+ for (var l of We(e))
10
+ Pt.call(e, l) && Mt(t, l, e[l]);
11
+ return t;
12
+ }, we = (t, e) => fl(t, ml(e));
13
+ var ct = (t, e) => {
14
+ var l = {};
15
+ for (var o in t)
16
+ Ht.call(t, o) && e.indexOf(o) < 0 && (l[o] = t[o]);
17
+ if (t != null && We)
18
+ for (var o of We(t))
19
+ e.indexOf(o) < 0 && Pt.call(t, o) && (l[o] = t[o]);
20
+ return l;
21
+ };
22
+ var Se = (t, e, l) => new Promise((o, h) => {
23
+ var v = (c) => {
24
+ try {
25
+ i(l.next(c));
26
+ } catch (p) {
27
+ h(p);
28
+ }
29
+ }, u = (c) => {
30
+ try {
31
+ i(l.throw(c));
32
+ } catch (p) {
33
+ h(p);
34
+ }
35
+ }, i = (c) => c.done ? o(c.value) : Promise.resolve(c.value).then(v, u);
36
+ i((l = l.apply(t, e)).next());
37
+ });
38
+ import { inject as J, ref as $, markRaw as H, defineAsyncComponent as I, defineComponent as ae, createBlock as A, openBlock as b, unref as n, normalizeProps as pl, guardReactiveProps as hl, withCtx as L, resolveDynamicComponent as Ae, onMounted as _e, nextTick as Dt, readonly as Bt, watch as te, getCurrentScope as gl, onScopeDispose as yl, getCurrentInstance as Ot, toRef as wl, customRef as _l, shallowRef as bl, computed as F, toValue as Me, useModel as je, createElementBlock as x, createElementVNode as k, createVNode as C, toDisplayString as E, Fragment as re, renderList as ue, isRef as ye, createTextVNode as K, h as kl, renderSlot as ge, mergeProps as Qe, createCommentVNode as R, reactive as ht, onBeforeUnmount as Re, normalizeStyle as Y, mergeDefaults as zl, withDirectives as He, vShow as Oe, mergeModels as $e, normalizeClass as Le, useCssVars as Cl, provide as pe, Teleport as Xe, withModifiers as Ge } from "vue";
39
+ import { ElIcon as xe, ElRow as Tl, ElCol as $l, ElSwitch as Pe, ElRadioGroup as qe, ElRadio as ke, ElDialog as et, ElForm as ft, ElFormItem as de, ElInput as dt, ElButton as Te, ElMessage as At, ElLoading as Ut, ElSlider as Ll, ElTag as jt, ElCheckbox as tt, ElTooltip as Rt, ElPopover as xl, ElCheckboxGroup as El, ElPagination as Sl } from "element-plus";
40
+ import { KfbView as he, OpenSeadragon as Ve } from "kfb-view";
41
+ import Vl from "v-lazy-image";
42
+ const Kt = Symbol("I18N_INJECT_KEY");
43
+ function fe() {
44
+ const t = J(Kt), e = (l) => l;
45
+ return {
46
+ locale: t == null ? void 0 : t.locale,
47
+ t: (t == null ? void 0 : t.t) || e
48
+ };
49
+ }
50
+ const Il = {
51
+ install(t, e) {
52
+ t.provide(Kt, e == null ? void 0 : e.global);
53
+ }
54
+ }, Z = $({
55
+ annotate: H(I(() => import("./annotateBGxN4SH2.js"))),
56
+ arrowCircle: H(I(() => import("./arrowCircleO5YzneBS.js"))),
57
+ check: H(I(() => import("./checkBPnPy-Ub.js"))),
58
+ dot: H(I(() => import("./dotBHF3nRpB.js"))),
59
+ flip: H(I(() => import("./flipctjVjVop.js"))),
60
+ info: H(I(() => import("./infoGk6YrcsI.js"))),
61
+ microscope: H(I(() => import("./microscopeBXo7gg6w.js"))),
62
+ move: H(I(() => import("./moveCz6A4Ez1.js"))),
63
+ next: H(I(() => import("./nextqhNB-SFW.js"))),
64
+ prev: H(I(() => import("./prevBpUUYZ6O.js"))),
65
+ process: H(I(() => import("./processCLMa81uw.js"))),
66
+ rotate: H(I(() => import("./rotateCp0eUC9w.js"))),
67
+ fullscreen: H(I(() => import("./fullscreenD9VUP9_N.js"))),
68
+ setting: H(I(() => import("./settingCjLFtIFq.js"))),
69
+ tailor: H(I(() => import("./tailorDPhAvXTy.js"))),
70
+ download: H(I(() => import("./downloadBXzUqH2X.js"))),
71
+ config: H(I(() => import("./configCvkvpev9.js"))),
72
+ arrowDown: H(I(() => import("./arrowDownDFK8VvKS.js"))),
73
+ arrowUp: H(I(() => import("./arrowUpbzQHVqNd.js"))),
74
+ arrowLeft: H(I(() => import("./arrowLefthUAyhKf8.js"))),
75
+ arrowRight: H(I(() => import("./arrowRightBm5GCHqI.js"))),
76
+ zoomIn: H(I(() => import("./zoomInByzL1beZ.js"))),
77
+ zoomOut: H(I(() => import("./zoomOutCJK4IL-h.js"))),
78
+ level: H(I(() => import("./levelM1Zwhfh0.js"))),
79
+ channel: H(I(() => import("./channelDHD-3vZX.js"))),
80
+ delete: H(I(() => import("./deleteD2YJkDdt.js"))),
81
+ expandLeft: H(I(() => import("./expandLeftDlPM5C4_.js"))),
82
+ expandRight: H(I(() => import("./expandRightD4t5eAC8.js"))),
83
+ markLine: H(I(() => import("./lineY2y1VH5T.js"))),
84
+ markArrow: H(I(() => import("./arrowDo5jlJvX.js"))),
85
+ markBilateral: H(I(() => import("./bilateralCi9iFh5d.js"))),
86
+ markRectangle: H(I(() => import("./rectangleCbnLFNUp.js"))),
87
+ markEllipse: H(I(() => import("./ellipsexXhrXwMO.js"))),
88
+ markPolygon: H(I(() => import("./polygonDKyvELbA.js"))),
89
+ markFlag: H(I(() => import("./flagCAYFx-Kg.js"))),
90
+ markStar: H(I(() => import("./starCmSx2RRp.js"))),
91
+ markDot: H(I(() => import("./dotCaGq1n2I.js"))),
92
+ markFont: H(I(() => import("./fontBlQIMQka.js"))),
93
+ markVoice: H(I(() => import("./voicedPtSHu3-.js")))
94
+ }), ee = /* @__PURE__ */ ae({
95
+ __name: "KfbIcon",
96
+ props: {
97
+ name: {
98
+ type: [String, Number],
99
+ required: !0
100
+ }
101
+ },
102
+ setup(t) {
103
+ return (e, l) => (b(), A(n(xe), pl(hl(e.$attrs)), {
104
+ default: L(() => [
105
+ (b(), A(Ae(n(Z)[t.name])))
106
+ ]),
107
+ _: 1
108
+ }, 16));
109
+ }
110
+ });
111
+ function Ml(t, e) {
112
+ return gl() ? (yl(t, e), !0) : !1;
113
+ }
114
+ const Hl = typeof window != "undefined" && typeof document != "undefined";
115
+ typeof WorkerGlobalScope != "undefined" && globalThis instanceof WorkerGlobalScope;
116
+ const Pl = Object.prototype.toString, Al = (t) => Pl.call(t) === "[object Object]", Rl = () => {
117
+ };
118
+ function Nl(...t) {
119
+ if (t.length !== 1) return wl(...t);
120
+ const e = t[0];
121
+ return typeof e == "function" ? Bt(_l(() => ({
122
+ get: e,
123
+ set: Rl
124
+ }))) : $(e);
125
+ }
126
+ function Fl(t, e) {
127
+ function l(...o) {
128
+ return new Promise((h, v) => {
129
+ Promise.resolve(t(() => e.apply(this, o), {
130
+ fn: e,
131
+ thisArg: this,
132
+ args: o
133
+ })).then(h).catch(v);
134
+ });
135
+ }
136
+ return l;
137
+ }
138
+ const Wt = (t) => t();
139
+ function Dl(t = Wt, e = {}) {
140
+ const { initialState: l = "active" } = e, o = Nl(l === "active");
141
+ function h() {
142
+ o.value = !1;
143
+ }
144
+ function v() {
145
+ o.value = !0;
146
+ }
147
+ const u = (...i) => {
148
+ o.value && t(...i);
149
+ };
150
+ return {
151
+ isActive: Bt(o),
152
+ pause: h,
153
+ resume: v,
154
+ eventFilter: u
155
+ };
156
+ }
157
+ function vt(t) {
158
+ return Array.isArray(t) ? t : [t];
159
+ }
160
+ function Bl(t) {
161
+ return Ot();
162
+ }
163
+ function Ol(t, e, l = {}) {
164
+ const v = l, { eventFilter: o = Wt } = v, h = ct(v, ["eventFilter"]);
165
+ return te(t, Fl(o, e), h);
166
+ }
167
+ function Ul(t, e, l = {}) {
168
+ const y = l, { eventFilter: o, initialState: h = "active" } = y, v = ct(y, ["eventFilter", "initialState"]), { eventFilter: u, pause: i, resume: c, isActive: p } = Dl(o, { initialState: h });
169
+ return {
170
+ stop: Ol(t, e, we(j({}, v), {
171
+ eventFilter: u
172
+ })),
173
+ pause: i,
174
+ resume: c,
175
+ isActive: p
176
+ };
177
+ }
178
+ const jl = Ul;
179
+ function Kl(t, e = !0, l) {
180
+ Bl() ? _e(t, l) : e ? t() : Dt(t);
181
+ }
182
+ function Wl(t, e, l) {
183
+ return te(t, e, we(j({}, l), {
184
+ immediate: !0
185
+ }));
186
+ }
187
+ const Be = Hl ? window : void 0;
188
+ function Gl(t) {
189
+ var e;
190
+ const l = Me(t);
191
+ return (e = l == null ? void 0 : l.$el) !== null && e !== void 0 ? e : l;
192
+ }
193
+ function Nt(...t) {
194
+ const e = [], l = () => {
195
+ e.forEach((i) => i()), e.length = 0;
196
+ }, o = (i, c, p, y) => (i.addEventListener(c, p, y), () => i.removeEventListener(c, p, y)), h = F(() => {
197
+ const i = vt(Me(t[0])).filter((c) => c != null);
198
+ return i.every((c) => typeof c != "string") ? i : void 0;
199
+ }), v = Wl(() => {
200
+ var i, c;
201
+ return [
202
+ (i = (c = h.value) === null || c === void 0 ? void 0 : c.map((p) => Gl(p))) !== null && i !== void 0 ? i : [Be].filter((p) => p != null),
203
+ vt(Me(h.value ? t[1] : t[0])),
204
+ vt(n(h.value ? t[2] : t[1])),
205
+ Me(h.value ? t[3] : t[2])
206
+ ];
207
+ }, ([i, c, p, y]) => {
208
+ if (l(), !(i != null && i.length) || !(c != null && c.length) || !(p != null && p.length)) return;
209
+ const s = Al(y) ? j({}, y) : y;
210
+ e.push(...i.flatMap((m) => c.flatMap((r) => p.map((a) => o(m, r, a, s)))));
211
+ }, { flush: "post" }), u = () => {
212
+ v(), l();
213
+ };
214
+ return Ml(l), u;
215
+ }
216
+ const Ze = typeof globalThis != "undefined" ? globalThis : typeof window != "undefined" ? window : typeof global != "undefined" ? global : typeof self != "undefined" ? self : {}, Ye = "__vueuse_ssr_handlers__", ql = /* @__PURE__ */ Zl();
217
+ function Zl() {
218
+ return Ye in Ze || (Ze[Ye] = Ze[Ye] || {}), Ze[Ye];
219
+ }
220
+ function Yl(t, e) {
221
+ return ql[t] || e;
222
+ }
223
+ function Jl(t) {
224
+ return t == null ? "any" : t instanceof Set ? "set" : t instanceof Map ? "map" : t instanceof Date ? "date" : typeof t == "boolean" ? "boolean" : typeof t == "string" ? "string" : typeof t == "object" ? "object" : Number.isNaN(t) ? "any" : "number";
225
+ }
226
+ const Xl = {
227
+ boolean: {
228
+ read: (t) => t === "true",
229
+ write: (t) => String(t)
230
+ },
231
+ object: {
232
+ read: (t) => JSON.parse(t),
233
+ write: (t) => JSON.stringify(t)
234
+ },
235
+ number: {
236
+ read: (t) => Number.parseFloat(t),
237
+ write: (t) => String(t)
238
+ },
239
+ any: {
240
+ read: (t) => t,
241
+ write: (t) => String(t)
242
+ },
243
+ string: {
244
+ read: (t) => t,
245
+ write: (t) => String(t)
246
+ },
247
+ map: {
248
+ read: (t) => new Map(JSON.parse(t)),
249
+ write: (t) => JSON.stringify(Array.from(t.entries()))
250
+ },
251
+ set: {
252
+ read: (t) => new Set(JSON.parse(t)),
253
+ write: (t) => JSON.stringify(Array.from(t))
254
+ },
255
+ date: {
256
+ read: (t) => new Date(t),
257
+ write: (t) => t.toISOString()
258
+ }
259
+ }, Ft = "vueuse-storage";
260
+ function Ie(t, e, l, o = {}) {
261
+ var h;
262
+ const { flush: v = "pre", deep: u = !0, listenToStorageChanges: i = !0, writeDefaults: c = !0, mergeDefaults: p = !1, shallow: y, window: s = Be, eventFilter: m, onError: r = (M) => {
263
+ console.error(M);
264
+ }, initOnMounted: a } = o, f = (y ? bl : $)(typeof e == "function" ? e() : e), _ = F(() => Me(t));
265
+ if (!l) try {
266
+ l = Yl("getDefaultStorage", () => Be == null ? void 0 : Be.localStorage)();
267
+ } catch (M) {
268
+ r(M);
269
+ }
270
+ if (!l) return f;
271
+ const g = Me(e), w = Jl(g), d = (h = o.serializer) !== null && h !== void 0 ? h : Xl[w], { pause: V, resume: D } = jl(f, (M) => ie(M), {
272
+ flush: v,
273
+ deep: u,
274
+ eventFilter: m
275
+ });
276
+ te(_, () => ve(), { flush: v });
277
+ let P = !1;
278
+ const le = (M) => {
279
+ a && !P || ve(M);
280
+ }, se = (M) => {
281
+ a && !P || Ce(M);
282
+ };
283
+ s && i && (l instanceof Storage ? Nt(s, "storage", le, { passive: !0 }) : Nt(s, Ft, se)), a ? Kl(() => {
284
+ P = !0, ve();
285
+ }) : ve();
286
+ function W(M, U) {
287
+ if (s) {
288
+ const ne = {
289
+ key: _.value,
290
+ oldValue: M,
291
+ newValue: U,
292
+ storageArea: l
293
+ };
294
+ s.dispatchEvent(l instanceof Storage ? new StorageEvent("storage", ne) : new CustomEvent(Ft, { detail: ne }));
295
+ }
296
+ }
297
+ function ie(M) {
298
+ try {
299
+ const U = l.getItem(_.value);
300
+ if (M == null)
301
+ W(U, null), l.removeItem(_.value);
302
+ else {
303
+ const ne = d.write(M);
304
+ U !== ne && (l.setItem(_.value, ne), W(U, ne));
305
+ }
306
+ } catch (U) {
307
+ r(U);
308
+ }
309
+ }
310
+ function oe(M) {
311
+ const U = M ? M.newValue : l.getItem(_.value);
312
+ if (U == null)
313
+ return c && g != null && l.setItem(_.value, d.write(g)), g;
314
+ if (!M && p) {
315
+ const ne = d.read(U);
316
+ return typeof p == "function" ? p(ne, g) : w === "object" && !Array.isArray(ne) ? j(j({}, g), ne) : ne;
317
+ } else return typeof U != "string" ? U : d.read(U);
318
+ }
319
+ function ve(M) {
320
+ if (!(M && M.storageArea !== l)) {
321
+ if (M && M.key == null) {
322
+ f.value = g;
323
+ return;
324
+ }
325
+ if (!(M && M.key !== _.value)) {
326
+ V();
327
+ try {
328
+ const U = d.write(f.value);
329
+ (M === void 0 || (M == null ? void 0 : M.newValue) !== U) && (f.value = oe(M));
330
+ } catch (U) {
331
+ r(U);
332
+ } finally {
333
+ M ? Dt(D) : D();
334
+ }
335
+ }
336
+ }
337
+ }
338
+ function Ce(M) {
339
+ ve(M.detail);
340
+ }
341
+ return f;
342
+ }
343
+ const Ql = { class: "hzzt-kfb-tool-config" }, eo = { class: "hzzt-kfb-tool-config__title margin-b-2" }, to = { class: "hzzt-kfb-tool-config__block flex align-items-center" }, lo = { class: "hzzt-kfb-tool-config__icon flex align-items-center justify-content-center" }, oo = { class: "margin-l-4 flex-1" }, no = { class: "hzzt-kfb-tool-config__title" }, ao = { class: "flex align-items-center" }, so = {
344
+ class: "margin-t-2 margin-b-2",
345
+ style: { width: "160px" }
346
+ }, io = { class: "flex align-items-center" }, ro = {
347
+ class: "margin-t-2 margin-b-2",
348
+ style: { width: "160px" }
349
+ }, uo = { class: "flex align-items-center" }, co = {
350
+ class: "margin-t-2 margin-b-2",
351
+ style: { width: "160px" }
352
+ }, vo = { class: "flex align-items-center" }, fo = {
353
+ class: "margin-t-2 margin-b-2",
354
+ style: { width: "160px" }
355
+ }, mo = /* @__PURE__ */ ae({
356
+ name: "KfbToolConfig",
357
+ __name: "KfbToolConfig",
358
+ props: {
359
+ menus: {
360
+ default: () => []
361
+ },
362
+ menusModifiers: {}
363
+ },
364
+ emits: ["update:menus"],
365
+ setup(t) {
366
+ const e = je(t, "menus"), { t: l } = fe(), o = F(() => e.value.filter((s) => s.name !== "line" && s.name !== "config" && s.name !== "zoom")), h = {
367
+ fullscreen: l("全屏"),
368
+ next: l("上一张"),
369
+ prev: l("上一张"),
370
+ flip: l("镜像翻转"),
371
+ setting: l("工具"),
372
+ rotate: l("旋转"),
373
+ dot: l("打点"),
374
+ annotate: l("标注"),
375
+ tailor: l("截图"),
376
+ process: l("图像处理"),
377
+ microscope: l("镜下"),
378
+ move: l("快速移动"),
379
+ info: l("信息"),
380
+ download: l("下载")
381
+ }, v = J("show-keyboard", $(!1)), u = J("show-watermark", $(!1)), i = J("show-menu-text", $(!0)), c = Ie("default-open-ai", !1);
382
+ function p(s) {
383
+ return s in h;
384
+ }
385
+ function y(s) {
386
+ var m;
387
+ return ((m = s.props) == null ? void 0 : m.text) || (p(s.name) ? h[s.name] : "");
388
+ }
389
+ return (s, m) => (b(), x("div", Ql, [
390
+ k("h3", eo, E(n(l)("显示管理")), 1),
391
+ C(n(Tl), { gutter: 10 }, {
392
+ default: L(() => [
393
+ (b(!0), x(re, null, ue(o.value, (r) => (b(), A(n($l), {
394
+ key: r.name,
395
+ span: 8
396
+ }, {
397
+ default: L(() => {
398
+ var a, f;
399
+ return [
400
+ k("div", to, [
401
+ k("div", lo, [
402
+ (a = r.props) != null && a.component ? (b(), A(Ae((f = r.props) == null ? void 0 : f.component), {
403
+ key: 1,
404
+ size: 24
405
+ })) : (b(), A(ee, {
406
+ key: 0,
407
+ size: 24,
408
+ name: r.name
409
+ }, null, 8, ["name"]))
410
+ ]),
411
+ k("p", oo, E(y(r)), 1),
412
+ C(n(Pe), {
413
+ modelValue: r.show,
414
+ "onUpdate:modelValue": (_) => r.show = _,
415
+ "active-text": "",
416
+ "inactive-text": ""
417
+ }, null, 8, ["modelValue", "onUpdate:modelValue"])
418
+ ])
419
+ ];
420
+ }),
421
+ _: 2
422
+ }, 1024))), 128))
423
+ ]),
424
+ _: 1
425
+ }),
426
+ k("div", null, [
427
+ k("h3", no, E(n(l)("其他设置")), 1),
428
+ k("div", ao, [
429
+ k("p", so, E(n(l)("工具列表显示切换")), 1),
430
+ C(n(qe), {
431
+ modelValue: n(i),
432
+ "onUpdate:modelValue": m[0] || (m[0] = (r) => ye(i) ? i.value = r : null)
433
+ }, {
434
+ default: L(() => [
435
+ C(n(ke), { value: !0 }, {
436
+ default: L(() => [
437
+ K(E(n(l)("显示工具名称")), 1)
438
+ ]),
439
+ _: 1
440
+ }),
441
+ C(n(ke), { value: !1 }, {
442
+ default: L(() => [
443
+ K(E(n(l)("隐藏工具名称")), 1)
444
+ ]),
445
+ _: 1
446
+ })
447
+ ]),
448
+ _: 1
449
+ }, 8, ["modelValue"])
450
+ ]),
451
+ k("div", io, [
452
+ k("p", ro, E(n(l)("小键盘显示切换")), 1),
453
+ C(n(qe), {
454
+ modelValue: n(v),
455
+ "onUpdate:modelValue": m[1] || (m[1] = (r) => ye(v) ? v.value = r : null)
456
+ }, {
457
+ default: L(() => [
458
+ C(n(ke), { value: !0 }, {
459
+ default: L(() => [
460
+ K(E(n(l)("显示小键盘")), 1)
461
+ ]),
462
+ _: 1
463
+ }),
464
+ C(n(ke), { value: !1 }, {
465
+ default: L(() => [
466
+ K(E(n(l)("隐藏小键盘")), 1)
467
+ ]),
468
+ _: 1
469
+ })
470
+ ]),
471
+ _: 1
472
+ }, 8, ["modelValue"])
473
+ ]),
474
+ k("div", uo, [
475
+ k("p", co, E(n(l)("水印文字")), 1),
476
+ C(n(qe), {
477
+ modelValue: n(u),
478
+ "onUpdate:modelValue": m[2] || (m[2] = (r) => ye(u) ? u.value = r : null)
479
+ }, {
480
+ default: L(() => [
481
+ C(n(ke), { value: !0 }, {
482
+ default: L(() => [
483
+ K(E(n(l)("启用")), 1)
484
+ ]),
485
+ _: 1
486
+ }),
487
+ C(n(ke), { value: !1 }, {
488
+ default: L(() => [
489
+ K(E(n(l)("禁用")), 1)
490
+ ]),
491
+ _: 1
492
+ })
493
+ ]),
494
+ _: 1
495
+ }, 8, ["modelValue"])
496
+ ]),
497
+ k("div", vo, [
498
+ k("p", fo, E(n(l)("默认开启AI分析")), 1),
499
+ C(n(qe), {
500
+ modelValue: n(c),
501
+ "onUpdate:modelValue": m[3] || (m[3] = (r) => ye(c) ? c.value = r : null)
502
+ }, {
503
+ default: L(() => [
504
+ C(n(ke), { value: !0 }, {
505
+ default: L(() => [
506
+ K(E(n(l)("开")), 1)
507
+ ]),
508
+ _: 1
509
+ }),
510
+ C(n(ke), { value: !1 }, {
511
+ default: L(() => [
512
+ K(E(n(l)("关")), 1)
513
+ ]),
514
+ _: 1
515
+ })
516
+ ]),
517
+ _: 1
518
+ }, 8, ["modelValue"])
519
+ ])
520
+ ])
521
+ ]));
522
+ }
523
+ }), po = { class: "hzzt-kfb-toolbox" }, ho = { class: "hzzt-kfb-toolbox__component" }, lt = /* @__PURE__ */ ae({
524
+ name: "KfbToolbox",
525
+ __name: "KfbToolbox",
526
+ props: {
527
+ menu: {},
528
+ process: {},
529
+ microscope: {}
530
+ },
531
+ emits: ["tool"],
532
+ setup(t, { emit: e }) {
533
+ const l = t, o = e, { t: h } = fe(), v = {
534
+ prev: h("上一张"),
535
+ next: h("下一张"),
536
+ config: h("配置"),
537
+ info: h("信息"),
538
+ flip: h("镜像"),
539
+ tailor: h("截图")
540
+ }, u = J("kfbViewRef"), i = $(!1), c = $(s(l.menu)), p = {
541
+ fullscreen: I(() => import("./fullscreenBGYoQBVj.js")),
542
+ line: I(() => import("./lineBNwqZbqu.js")),
543
+ setting: I(() => import("./setting4lZ-C5Ee.js")),
544
+ rotate: I(() => import("./rotateCd3NfTn3.js")),
545
+ dot: I(() => import("./dotDnPxb7fB.js")),
546
+ annotate: I(() => import("./annotateCAq6sZAH.js")),
547
+ process: I(() => import("./processC-WPdB6z.js")),
548
+ microscope: I(() => import("./microscopeNl42JU1P.js")),
549
+ move: I(() => import("./moveB9NAKOsw.js")),
550
+ custom: I(() => import("./customDSBh6zAg.js")),
551
+ zoom: I(() => import("./zoomByPWFzTS.js")),
552
+ download: I(() => import("./downloadCFpPM1dg.js"))
553
+ }, y = F(() => c.value.filter((r) => r.show !== !1).map((r) => ({
554
+ component: p[r.name],
555
+ props: r.props,
556
+ slots: r.slots
557
+ })));
558
+ te(() => l.menu, (r) => {
559
+ c.value = s(r);
560
+ });
561
+ function s(r) {
562
+ return r.map((a) => {
563
+ const f = typeof a == "string" ? a : a.name;
564
+ return v[f] ? {
565
+ name: "custom",
566
+ show: typeof a == "string" ? !0 : a.show !== !1,
567
+ props: we(j({
568
+ text: v[f],
569
+ component: kl(ee, {
570
+ name: f
571
+ })
572
+ }, typeof a == "string" ? {} : a.props), {
573
+ name: f
574
+ })
575
+ } : f === "process" ? {
576
+ name: f,
577
+ props: typeof a == "string" ? {
578
+ process: l.process
579
+ } : j({
580
+ process: l.process
581
+ }, a.props),
582
+ slots: typeof a == "string" ? void 0 : a.slots,
583
+ show: typeof a == "string" ? !0 : a.show !== !1
584
+ } : f === "microscope" ? {
585
+ name: f,
586
+ props: typeof a == "string" ? {
587
+ process: l.process
588
+ } : j({
589
+ microscope: l.microscope
590
+ }, a.props),
591
+ slots: typeof a == "string" ? void 0 : a.slots,
592
+ show: typeof a == "string" ? !0 : a.show !== !1
593
+ } : {
594
+ name: f,
595
+ props: typeof a == "string" ? {} : a.props,
596
+ slots: typeof a == "string" ? void 0 : a.slots,
597
+ show: typeof a == "string" ? !0 : a.show !== !1
598
+ };
599
+ });
600
+ }
601
+ function m(r, a) {
602
+ const f = {
603
+ annotate: () => u.value.startDraw(a),
604
+ tailor: () => u.value.shotScreen(a),
605
+ process: () => u.value.forceRedraw(a),
606
+ microscope: () => u.value.scopeChange(a),
607
+ move: () => u.value.fastMove(a),
608
+ endDraw: () => u.value.endDraw(),
609
+ info: () => u.value.info(),
610
+ zoom: () => u.value.zoomTo(a),
611
+ flip: () => u.value.toggleFlip(a),
612
+ config: () => i.value = !0,
613
+ grid: () => u.value.updateGrid(a),
614
+ ruler: () => u.value.updateGrid(a),
615
+ graduation: () => u.value.updateGraduation(a),
616
+ navigator: () => u.value.updateNavigator(a),
617
+ tool: () => {
618
+ u.value.updateGrid({
619
+ show: a
620
+ }), u.value.updateGraduation({
621
+ show: a
622
+ }), u.value.updateGrid({
623
+ ruler: a
624
+ }), u.value.updateNavigator(a);
625
+ }
626
+ };
627
+ f[r] ? f[r]() : o("tool", r, a);
628
+ }
629
+ return (r, a) => (b(), x("div", po, [
630
+ ge(r.$slots, "left"),
631
+ k("div", ho, [
632
+ (b(!0), x(re, null, ue(y.value, (f, _) => (b(), A(Ae(f.component), Qe({ ref_for: !0 }, f.props, {
633
+ key: _,
634
+ onTool: m
635
+ }), {
636
+ default: L(() => [
637
+ f.slots ? (b(!0), x(re, { key: 0 }, ue(f.slots, (g) => (b(), A(Ae(g)))), 256)) : R("", !0)
638
+ ]),
639
+ _: 2
640
+ }, 1040))), 128))
641
+ ]),
642
+ ge(r.$slots, "right"),
643
+ C(n(et), {
644
+ modelValue: i.value,
645
+ "onUpdate:modelValue": a[1] || (a[1] = (f) => i.value = f),
646
+ width: "800px",
647
+ title: n(h)("阅片工具设置中心")
648
+ }, {
649
+ default: L(() => [
650
+ C(mo, {
651
+ menus: c.value,
652
+ "onUpdate:menus": a[0] || (a[0] = (f) => c.value = f)
653
+ }, null, 8, ["menus"])
654
+ ]),
655
+ _: 1
656
+ }, 8, ["modelValue", "title"])
657
+ ]));
658
+ }
659
+ }), ot = "data:image/svg+xml,%3csvg%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20width='32'%20height='32'%3e%3cpath%20d='M556.45%20126.8H904.7c31.31%200%2056.26%2025.47%2057.3%2056.78v656.85c-0.68%2031.26-26.03%2056.35-57.3%2056.72H617.28l74.32-291.24-77.38-56.14%2032.3-27.32c8.28-6.66%2015.51-11.46%2025.7-11.46%209.96%200.24%2019.33%204.77%2025.7%2012.45h-0.06l198.87%20214.09-0.58-522.46c-0.75-13.7-12.21-24.35-25.93-24.08H542.45l14-64.19z%20m-118.47%200l-14.01%2064.24H152.41c-13.6%200-24.31%209.84-26.22%2023.44v522.63l242.33-292.28-13.08%2060.14%20204.6%20148.46-62.22%20243.77H118.15a56.398%2056.398%200%200%201-39.86-16.73A56.35%2056.35%200%200%201%2062%20840.43V183.57c0-31.25%2024.89-56.72%2056.14-56.72h319.83v-0.05z%20m203.67%20224.68c-0.86-34.98%2017.31-67.68%2047.47-85.42%2030.16-17.74%2067.56-17.74%2097.73%200%2030.16%2017.74%2048.33%2050.44%2047.47%2085.42%200%2053.22-43.15%2096.37-96.37%2096.37-53.22%200-96.37-43.14-96.37-96.37h0.07z%20m0%200'%20fill='%23ffffff'%3e%3c/path%3e%3c/svg%3e", mt = {
660
+ shape: "50%",
661
+ width: 0.3,
662
+ color: "#FA0404",
663
+ borderWidth: 5
664
+ }, Gt = {
665
+ r: 0,
666
+ g: 0,
667
+ b: 0,
668
+ c: 0,
669
+ s: 0,
670
+ l: 0,
671
+ ga: 1
672
+ };
673
+ function go(t) {
674
+ const e = ht(j(j({}, Gt), t.process));
675
+ te(() => t.process, (v) => {
676
+ h(v);
677
+ });
678
+ const l = F(() => {
679
+ const v = [
680
+ 1 + e.r + e.l + 0.5 * e.c,
681
+ 0,
682
+ 0,
683
+ 0,
684
+ -0.25 * e.c
685
+ ], u = [
686
+ 0,
687
+ 1 + e.g + e.l + 0.5 * e.c,
688
+ 0,
689
+ 0,
690
+ -0.25 * e.c
691
+ ], i = [
692
+ 0,
693
+ 0,
694
+ 1 + e.b + e.l + 0.5 * e.c,
695
+ 0,
696
+ -0.25 * e.c
697
+ ], c = [0, 0, 0, 1, 0];
698
+ return `${v.join(" ")}
699
+ ${u.join(" ")}
700
+ ${i.join(" ")}
701
+ ${c.join(" ")}`;
702
+ }), o = F(() => String(1 + e.s));
703
+ function h(v) {
704
+ v && Object.assign(e, v);
705
+ }
706
+ return {
707
+ imageProcess: e,
708
+ matrixValues: l,
709
+ saturateValues: o,
710
+ forceRedraw: h
711
+ };
712
+ }
713
+ function yo(t, e) {
714
+ function l() {
715
+ e.value.$on(he.events.EVENT_TAILORING_SCREENSHOT, o);
716
+ }
717
+ function o({ base64: u, region: i, custom: c }) {
718
+ if (window.ClipboardItem && (navigator != null && navigator.clipboard)) {
719
+ const p = h(u, "image/png");
720
+ navigator.clipboard.write([
721
+ new window.ClipboardItem({
722
+ [p.type]: p
723
+ })
724
+ ]);
725
+ }
726
+ t("tool", "screen-shot", { base64: u, region: i, custom: c });
727
+ }
728
+ function h(u, i) {
729
+ var m, r;
730
+ const c = u.split(",");
731
+ (r = (m = c[0]) == null ? void 0 : m.match(/:(.*?);/)) == null || r[1];
732
+ const p = atob(c == null ? void 0 : c[1]);
733
+ let y = p.length;
734
+ const s = new Uint8Array(y);
735
+ for (; y--; )
736
+ s[y] = p.charCodeAt(y);
737
+ return new Blob([s], { type: i });
738
+ }
739
+ function v(u, i) {
740
+ const { width: c, height: p } = e.value.$options;
741
+ u ? c > p ? e.value.tailoring.init(
742
+ {
743
+ left: (c - p) / 2,
744
+ top: 0,
745
+ height: p,
746
+ width: p,
747
+ now: !0
748
+ },
749
+ i
750
+ ) : e.value.tailoring.init(
751
+ {
752
+ left: 0,
753
+ top: (p - c) / 2,
754
+ height: c,
755
+ width: c,
756
+ now: !0
757
+ },
758
+ i
759
+ ) : e.value.tailoring.init(
760
+ {
761
+ left: c / 2 - 100,
762
+ top: p / 2 - 100,
763
+ height: 200,
764
+ width: 200,
765
+ color: "#ff0000"
766
+ },
767
+ i
768
+ );
769
+ }
770
+ return {
771
+ tailorEvent: l,
772
+ shotScreen: v
773
+ };
774
+ }
775
+ const wo = ["onClick"], _o = ["src"], bo = {
776
+ key: 2,
777
+ style: { width: "18px" },
778
+ class: "margin-r-3"
779
+ }, ko = {
780
+ key: 1,
781
+ class: "hzzt-kfb-sub-menu"
782
+ }, zo = ["onClick"], Co = { class: "flex align-items-center" }, To = ["src"], $o = {
783
+ key: 2,
784
+ style: { width: "18px" },
785
+ class: "margin-r-2"
786
+ }, Lo = /* @__PURE__ */ ae({
787
+ __name: "KfbMenu",
788
+ props: {
789
+ menus: {}
790
+ },
791
+ emits: ["tool"],
792
+ setup(t, { emit: e }) {
793
+ const l = $({
794
+ top: "0",
795
+ left: "0",
796
+ display: "none"
797
+ }), o = J("kfbView", $({})), h = J("currentLabel"), v = t, u = e, { t: i } = fe(), c = [
798
+ {
799
+ label: i("直线"),
800
+ value: "line",
801
+ icon: Z.value.markLine
802
+ },
803
+ {
804
+ label: i("箭头"),
805
+ value: "arrow",
806
+ icon: Z.value.markArrow
807
+ },
808
+ {
809
+ label: i("双箭头"),
810
+ value: "bilateral",
811
+ icon: Z.value.markBilateral
812
+ },
813
+ {
814
+ label: i("矩形"),
815
+ value: "rectangle",
816
+ icon: Z.value.markRectangle
817
+ },
818
+ {
819
+ label: i("圆形"),
820
+ value: "ellipse",
821
+ icon: Z.value.markEllipse
822
+ },
823
+ {
824
+ label: i("曲线"),
825
+ value: "polygon",
826
+ icon: Z.value.markPolygon
827
+ },
828
+ {
829
+ label: i("星星"),
830
+ value: "star",
831
+ icon: Z.value.markStar
832
+ },
833
+ {
834
+ label: i("旗帜"),
835
+ value: "flag",
836
+ icon: Z.value.markFlag
837
+ },
838
+ {
839
+ label: i("点"),
840
+ value: "dot",
841
+ icon: Z.value.markDot
842
+ },
843
+ {
844
+ label: i("文字"),
845
+ value: "font",
846
+ icon: Z.value.markFont
847
+ },
848
+ {
849
+ label: i("语音"),
850
+ value: "voice",
851
+ icon: Z.value.markVoice
852
+ }
853
+ ], p = F(() => {
854
+ var a;
855
+ return h != null && h.value ? [{
856
+ label: i("删除"),
857
+ value: "delete",
858
+ icon: Z.value.delete
859
+ }] : (a = v.menus) != null && a.length ? v.menus.map((f) => f.value === "annotate" ? we(j({}, f), {
860
+ children: c
861
+ }) : we(j({}, f), {
862
+ icon: f.icon || Z.value[f.value]
863
+ })) : [
864
+ {
865
+ label: i("上一张"),
866
+ value: "prev"
867
+ },
868
+ {
869
+ label: i("下一张"),
870
+ value: "next"
871
+ },
872
+ {
873
+ label: i("标注"),
874
+ value: "annotate",
875
+ icon: Z.value.annotate,
876
+ children: c
877
+ },
878
+ {
879
+ label: i("一键截图"),
880
+ value: "tailor_now",
881
+ icon: Z.value.tailor
882
+ },
883
+ {
884
+ label: i("区域截图"),
885
+ value: "tailor"
886
+ },
887
+ {
888
+ label: i("镜像翻转"),
889
+ value: "flip",
890
+ icon: Z.value.flip
891
+ },
892
+ {
893
+ label: i("切片信息"),
894
+ value: "info",
895
+ icon: Z.value.info
896
+ }
897
+ ];
898
+ });
899
+ te(() => o.value, (a, f) => {
900
+ f != null && f.viewer && (f.viewer.removeHandler("canvas-contextmenu", y), f.viewer.removeHandler("canvas-click", s)), a != null && a.viewer && (a.viewer.addHandler("canvas-contextmenu", y), a.viewer.addHandler("canvas-click", s));
901
+ }), _e(() => {
902
+ var a;
903
+ (a = o.value) != null && a.viewer && (o.value.viewer.addHandler("canvas-contextmenu", y), o.value.viewer.addHandler("canvas-click", s)), document.body.addEventListener("click", s);
904
+ }), Re(() => {
905
+ var a;
906
+ (a = o.value) != null && a.viewer && (o.value.viewer.removeHandler("canvas-contextmenu", y), o.value.viewer.removeHandler("canvas-click", s)), document.body.removeEventListener("click", s);
907
+ });
908
+ function y(a) {
909
+ a.preventDefault = !0, l.value.top = `${a.position.y}px`, l.value.left = `${a.position.x}px`, l.value.display === "block" ? l.value.display = "none" : l.value.display = "block";
910
+ }
911
+ function s() {
912
+ l.value.display = "none";
913
+ }
914
+ function m(a, f) {
915
+ a.children || ((f == null ? void 0 : f.value) === "annotate" ? u("tool", "annotate", {
916
+ tool: a.value.substring(0, 1).toLocaleUpperCase() + a.value.substring(1),
917
+ once: !0
918
+ }) : a.value === "tailor_now" ? u("tool", "tailor", !0) : u("tool", a.value), s());
919
+ }
920
+ function r(a) {
921
+ return a == null || typeof a != "object" && typeof a != "function" ? !1 : (
922
+ // 函数式组件
923
+ typeof a == "function" || // 对象式组件
924
+ "render" in a || "setup" in a
925
+ );
926
+ }
927
+ return (a, f) => (b(), x("div", {
928
+ class: "hzzt-kfb-menu",
929
+ style: Y(l.value)
930
+ }, [
931
+ (b(!0), x(re, null, ue(p.value, (_, g) => (b(), x("div", {
932
+ key: g,
933
+ class: "hzzt-kfb-menu-item"
934
+ }, [
935
+ k("div", {
936
+ class: "flex align-items-center",
937
+ onClick: (w) => m(_)
938
+ }, [
939
+ r(_.icon) ? (b(), A(n(xe), {
940
+ key: 0,
941
+ class: "margin-r-3",
942
+ size: 18
943
+ }, {
944
+ default: L(() => [
945
+ (b(), A(Ae(_.icon)))
946
+ ]),
947
+ _: 2
948
+ }, 1024)) : _.icon ? (b(), x("img", {
949
+ key: 1,
950
+ style: { width: "18px" },
951
+ class: "margin-r-2",
952
+ src: _.icon
953
+ }, null, 8, _o)) : (b(), x("div", bo)),
954
+ k("span", null, E(_.label), 1)
955
+ ], 8, wo),
956
+ _.children ? (b(), A(ee, {
957
+ key: 0,
958
+ name: "arrowRight",
959
+ class: "margin-r-2",
960
+ size: 14
961
+ })) : R("", !0),
962
+ _.children ? (b(), x("div", ko, [
963
+ (b(!0), x(re, null, ue(_.children, (w, d) => (b(), x("div", {
964
+ key: d,
965
+ class: "hzzt-kfb-menu-item",
966
+ onClick: (V) => m(w, _)
967
+ }, [
968
+ k("div", Co, [
969
+ r(w.icon) ? (b(), A(n(xe), {
970
+ key: 0,
971
+ class: "margin-r-2",
972
+ size: 18
973
+ }, {
974
+ default: L(() => [
975
+ (b(), A(Ae(w.icon)))
976
+ ]),
977
+ _: 2
978
+ }, 1024)) : w.icon ? (b(), x("img", {
979
+ key: 1,
980
+ style: { width: "18px" },
981
+ class: "margin-r-2",
982
+ src: w.icon
983
+ }, null, 8, To)) : (b(), x("div", $o)),
984
+ k("span", null, E(w.label), 1)
985
+ ])
986
+ ], 8, zo))), 128))
987
+ ])) : R("", !0)
988
+ ]))), 128))
989
+ ], 4));
990
+ }
991
+ }), ze = (t, e) => {
992
+ const l = t.__vccOpts || t;
993
+ for (const [o, h] of e)
994
+ l[o] = h;
995
+ return l;
996
+ }, xo = /* @__PURE__ */ ze(Lo, [["__scopeId", "data-v-414722d0"]]), Eo = {
997
+ key: 0,
998
+ class: "hzzt-kfb-microscope"
999
+ }, So = /* @__PURE__ */ ae({
1000
+ __name: "KfbMicroscope",
1001
+ props: /* @__PURE__ */ zl({
1002
+ shape: {},
1003
+ width: {},
1004
+ color: {},
1005
+ borderWidth: {}
1006
+ }, j({}, mt)),
1007
+ setup(t, { expose: e }) {
1008
+ const l = t, o = ht(j(j({}, mt), l));
1009
+ te(() => l, (s) => {
1010
+ y({ name: "change", value: s });
1011
+ });
1012
+ const h = $("200px"), v = $(!1), u = F(() => ({
1013
+ borderRadius: o.shape,
1014
+ borderColor: o.color,
1015
+ borderWidth: o.borderWidth + "px",
1016
+ width: h.value,
1017
+ height: h.value
1018
+ })), i = J("kfbView", $({}));
1019
+ te(() => i.value, (s, m) => {
1020
+ m != null && m.viewer && m.viewer.removeHandler("zoom", c), s != null && s.viewer && s.viewer.addHandler("zoom", c);
1021
+ }), _e(() => {
1022
+ var s;
1023
+ (s = i.value) != null && s.viewer && i.value.viewer.addHandler("zoom", c);
1024
+ }), Re(() => {
1025
+ var s;
1026
+ (s = i.value) != null && s.viewer && i.value.viewer.removeHandler("zoom", c);
1027
+ });
1028
+ function c() {
1029
+ setTimeout(() => {
1030
+ y({ name: "change", value: o });
1031
+ }, 100);
1032
+ }
1033
+ function p(s) {
1034
+ let { x: m, y: r } = i.value.viewer.viewport.getCenter(!0);
1035
+ s === "top" ? r -= 6e-3 : s === "bottom" ? r += 6e-3 : s === "left" ? m -= 6e-3 : s === "right" && (m += 6e-3), i.value.area.moveToLabel({ x: m, y: r });
1036
+ }
1037
+ function y({ name: s, value: m }) {
1038
+ var a, f;
1039
+ const r = (f = (a = i.value.$options) == null ? void 0 : a.pxConversion) == null ? void 0 : f.imageCapRes;
1040
+ if (s === "visible") {
1041
+ if (v.value = m, m) {
1042
+ const _ = i.value.area.imageToViewerElementRectangle(
1043
+ {
1044
+ x: 0,
1045
+ y: 0,
1046
+ width: o.width * 1e3 / r,
1047
+ height: o.width * 1e3 / r
1048
+ }
1049
+ );
1050
+ h.value = _.width + "px";
1051
+ }
1052
+ } else if (s === "change") {
1053
+ Object.assign(o, m);
1054
+ const _ = i.value.area.imageToViewerElementRectangle(
1055
+ {
1056
+ x: 0,
1057
+ y: 0,
1058
+ width: o.width * 1e3 / r,
1059
+ height: o.width * 1e3 / r
1060
+ }
1061
+ );
1062
+ h.value = _.width + "px";
1063
+ }
1064
+ }
1065
+ return e({
1066
+ scopeChange: y
1067
+ }), (s, m) => v.value ? (b(), x("div", Eo, [
1068
+ k("div", {
1069
+ class: "hzzt-kfb-microscope__container",
1070
+ style: Y(u.value)
1071
+ }, null, 4),
1072
+ k("div", {
1073
+ class: "hzzt-kfb-microscope__top",
1074
+ onClick: m[0] || (m[0] = (r) => p("top"))
1075
+ }, [
1076
+ C(ee, {
1077
+ size: "24",
1078
+ name: "arrowUp"
1079
+ })
1080
+ ]),
1081
+ k("div", {
1082
+ class: "hzzt-kfb-microscope__bottom",
1083
+ onClick: m[1] || (m[1] = (r) => p("bottom"))
1084
+ }, [
1085
+ C(ee, {
1086
+ size: "24",
1087
+ name: "arrowDown"
1088
+ })
1089
+ ]),
1090
+ k("div", {
1091
+ class: "hzzt-kfb-microscope__left",
1092
+ onClick: m[2] || (m[2] = (r) => p("left"))
1093
+ }, [
1094
+ C(ee, {
1095
+ size: "24",
1096
+ name: "arrowLeft"
1097
+ })
1098
+ ]),
1099
+ k("div", {
1100
+ class: "hzzt-kfb-microscope__right",
1101
+ onClick: m[3] || (m[3] = (r) => p("right"))
1102
+ }, [
1103
+ C(ee, {
1104
+ size: "24",
1105
+ name: "arrowRight"
1106
+ })
1107
+ ])
1108
+ ])) : R("", !0);
1109
+ }
1110
+ }), Vo = /* @__PURE__ */ ze(So, [["__scopeId", "data-v-cf5949b8"]]), Io = { class: "hzzt-kfb-label flex column" }, Mo = { class: "hzzt-kfb-label__img flex justify-content-center" }, Ho = ["src"], Po = { class: "ellipsis flex-1" }, Ao = {
1111
+ class: "flex margin-b-4",
1112
+ style: { width: "100%" }
1113
+ }, Ro = {
1114
+ class: "flex margin overflow-hidden",
1115
+ style: { height: "132px" }
1116
+ }, No = ["src"], Fo = ["src"], Do = /* @__PURE__ */ ae({
1117
+ __name: "KfbLabel",
1118
+ props: {
1119
+ visible: { type: Boolean },
1120
+ info: {},
1121
+ slide: {},
1122
+ pathologyHandle: { type: Function }
1123
+ },
1124
+ emits: ["tool"],
1125
+ setup(t, { emit: e }) {
1126
+ var s;
1127
+ const { t: l } = fe(), o = t, h = e, v = $((s = o.visible) != null ? s : !0), u = $(!1), i = F(() => o.slide.pathology_id ? l("修改病理号") : l("绑定病理号"));
1128
+ function c() {
1129
+ o.slide.angle || (o.slide.angle = 0), o.slide.angle += 90, o.slide.angle > 360 && (o.slide.angle = o.slide.angle % 360), h("tool", "rotate", o.slide.angle);
1130
+ }
1131
+ function p() {
1132
+ u.value = !0;
1133
+ }
1134
+ function y() {
1135
+ o.pathologyHandle && o.pathologyHandle(o.slide).then(() => {
1136
+ u.value = !1;
1137
+ });
1138
+ }
1139
+ return (m, r) => (b(), x("div", Io, [
1140
+ He(k("div", { class: "hzzt-kfb-label__title" }, E(n(l)(`点击标签旋转${m.pathologyHandle ? ",点击病理号重绑" : ""}`)), 513), [
1141
+ [Oe, v.value]
1142
+ ]),
1143
+ He(k("div", Mo, [
1144
+ k("img", {
1145
+ src: m.info.labelImg,
1146
+ style: Y({ transform: `rotate(${m.slide.angle}deg)` }),
1147
+ onClick: c
1148
+ }, null, 12, Ho)
1149
+ ], 512), [
1150
+ [Oe, v.value]
1151
+ ]),
1152
+ m.pathologyHandle ? He((b(), x("div", {
1153
+ key: 0,
1154
+ class: "hzzt-kfb-label__pathology flex align-items-center justify-content-between",
1155
+ onClick: p
1156
+ }, [
1157
+ k("span", Po, E(m.slide.pathology_number), 1),
1158
+ C(ee, {
1159
+ size: "14",
1160
+ name: "annotate"
1161
+ })
1162
+ ], 512)), [
1163
+ [Oe, v.value]
1164
+ ]) : R("", !0),
1165
+ k("span", {
1166
+ onClick: r[0] || (r[0] = (a) => v.value = !v.value),
1167
+ style: Y({
1168
+ transform: `translateY(${v.value ? "-50%" : 0})`
1169
+ }),
1170
+ class: "hzzt-kfb-label__expend flex align-items-center justify-content-center"
1171
+ }, [
1172
+ v.value ? (b(), A(ee, {
1173
+ key: 0,
1174
+ size: "10",
1175
+ name: "arrowLeft"
1176
+ })) : (b(), A(ee, {
1177
+ key: 1,
1178
+ size: "10",
1179
+ name: "arrowRight"
1180
+ }))
1181
+ ], 4),
1182
+ C(n(et), {
1183
+ modelValue: u.value,
1184
+ "onUpdate:modelValue": r[5] || (r[5] = (a) => u.value = a),
1185
+ "append-to-body": !0,
1186
+ title: i.value,
1187
+ width: "450px"
1188
+ }, {
1189
+ footer: L(() => [
1190
+ C(n(Te), {
1191
+ onClick: r[4] || (r[4] = (a) => u.value = !1)
1192
+ }, {
1193
+ default: L(() => [
1194
+ K(E(n(l)("取消")), 1)
1195
+ ]),
1196
+ _: 1
1197
+ }),
1198
+ C(n(Te), {
1199
+ type: "primary",
1200
+ onClick: y
1201
+ }, {
1202
+ default: L(() => [
1203
+ K(E(n(l)("确认")), 1)
1204
+ ]),
1205
+ _: 1
1206
+ })
1207
+ ]),
1208
+ default: L(() => [
1209
+ k("div", Ao, [
1210
+ k("div", Ro, [
1211
+ k("img", {
1212
+ src: m.slide.labelImg
1213
+ }, null, 8, No),
1214
+ k("img", {
1215
+ src: m.slide.previewImg
1216
+ }, null, 8, Fo)
1217
+ ])
1218
+ ]),
1219
+ C(n(ft), { class: "margin-t-2" }, {
1220
+ default: L(() => [
1221
+ C(n(de), {
1222
+ label: n(l)("病理号")
1223
+ }, {
1224
+ default: L(() => [
1225
+ C(n(dt), {
1226
+ modelValue: m.slide.pathology_number,
1227
+ "onUpdate:modelValue": r[1] || (r[1] = (a) => m.slide.pathology_number = a),
1228
+ placeholder: n(l)("输入病理号"),
1229
+ clearable: ""
1230
+ }, null, 8, ["modelValue", "placeholder"])
1231
+ ]),
1232
+ _: 1
1233
+ }, 8, ["label"]),
1234
+ C(n(de), {
1235
+ label: n(l)("蜡块号")
1236
+ }, {
1237
+ default: L(() => [
1238
+ C(n(dt), {
1239
+ modelValue: m.slide.paraffin_block_number,
1240
+ "onUpdate:modelValue": r[2] || (r[2] = (a) => m.slide.paraffin_block_number = a),
1241
+ placeholder: n(l)("输入蜡块号"),
1242
+ clearable: ""
1243
+ }, null, 8, ["modelValue", "placeholder"])
1244
+ ]),
1245
+ _: 1
1246
+ }, 8, ["label"]),
1247
+ m.slide.slide_id ? R("", !0) : (b(), A(n(de), {
1248
+ key: 0,
1249
+ label: n(l)("试剂")
1250
+ }, {
1251
+ default: L(() => [
1252
+ C(n(dt), {
1253
+ modelValue: m.slide.reagent,
1254
+ "onUpdate:modelValue": r[3] || (r[3] = (a) => m.slide.reagent = a),
1255
+ placeholder: n(l)("输入试剂"),
1256
+ clearable: ""
1257
+ }, null, 8, ["modelValue", "placeholder"])
1258
+ ]),
1259
+ _: 1
1260
+ }, 8, ["label"]))
1261
+ ]),
1262
+ _: 1
1263
+ })
1264
+ ]),
1265
+ _: 1
1266
+ }, 8, ["modelValue", "title"])
1267
+ ]));
1268
+ }
1269
+ }), Bo = /* @__PURE__ */ ze(Do, [["__scopeId", "data-v-e1475ef3"]]);
1270
+ function Oo(t, e) {
1271
+ const l = $(1), o = $(null), h = $(null);
1272
+ function v() {
1273
+ t.value.viewer.addHandler("canvas-drag", (i) => {
1274
+ o.value || (o.value = i.position);
1275
+ }), t.value.viewer.addHandler("canvas-drag-end", (i) => {
1276
+ if (l.value !== 1) {
1277
+ h.value = i.position;
1278
+ const c = t.value.viewer.viewport.containerSize.x, p = t.value.viewer.viewport.containerSize.y, y = (h.value.x - o.value.x) / (c * e.value) * (l.value - 1), s = (h.value.y - o.value.y) / (p * e.value) * (l.value - 1), m = t.value.viewer.viewport.getCenter(), r = new Ve.Point(m.x - y, m.y - s);
1279
+ t.value.viewer.viewport.panTo(r), o.value = null;
1280
+ }
1281
+ });
1282
+ }
1283
+ function u({ name: i, value: c }) {
1284
+ i === "ratio" && (l.value = c / 1);
1285
+ }
1286
+ return {
1287
+ moveEvent: v,
1288
+ fastMove: u
1289
+ };
1290
+ }
1291
+ function Uo(t, e, l, o, h) {
1292
+ const v = $(void 0), u = $([]);
1293
+ te(() => t.aiLabelList, y);
1294
+ function i() {
1295
+ l.value.$on(he.events.EVENT_END_PAINTING, c("add")), l.value.$on(he.events.EVENT_AREA_MOVE_END, c("move")), l.value.$on(he.events.EVENT_ADD_POLYGON_POINT, c("add-point")), l.value.$on(he.events.EVENT_DELETE_POLYGON_POINT, c("delete-point")), l.value.$on(he.events.EVENT_DELETE_LABEL, c("delete")), l.value.$on(he.events.EVENT_SELECT_LABEL, (a) => {
1296
+ v.value = a, r(), e("tool", "select-label", v.value);
1297
+ }), l.value.$on(he.events.EVENT_CANCEL_SELECT_LABEL, () => {
1298
+ v.value = void 0, e("tool", "cancel-select-label", v.value);
1299
+ }), c("list")();
1300
+ }
1301
+ function c(a) {
1302
+ return (f) => p(a, f);
1303
+ }
1304
+ function p(a, f) {
1305
+ var _;
1306
+ if (a === "add" && f && ((f == null ? void 0 : f.subType) || ((_ = f == null ? void 0 : f.__data__) == null ? void 0 : _.subType)) === "voice")
1307
+ o(f);
1308
+ else
1309
+ return t.labelHandle(a, t.slide, f, u.value).then((g) => {
1310
+ u.value = g, y();
1311
+ }).catch(() => {
1312
+ y();
1313
+ });
1314
+ }
1315
+ function y() {
1316
+ var a;
1317
+ if ((a = l.value) != null && a.initLabelList) {
1318
+ const f = [...u.value, ...t.aiLabelList || []];
1319
+ f.find(({ id: _ }) => {
1320
+ var g;
1321
+ return _ === ((g = v.value) == null ? void 0 : g.id);
1322
+ }) || (v.value = void 0), l.value.initLabelList(f);
1323
+ }
1324
+ }
1325
+ function s(a, f) {
1326
+ var g, w;
1327
+ v.value && (v.value.select = !1, v.value = void 0);
1328
+ const _ = (l.value.labelList || []).findIndex((d) => d.id === a.id);
1329
+ if (_ > -1) {
1330
+ v.value = (g = l.value.labelList) == null ? void 0 : g[_], v.value.select = !0;
1331
+ const d = l.value.area.getCenterPoint(a.region);
1332
+ l.value.area.moveToLabel(d), (w = l.value.viewer) != null && w.canvas && l.value.viewer.canvas.focus(), r();
1333
+ }
1334
+ f && h(f);
1335
+ }
1336
+ function m(a) {
1337
+ return t.labelHandle("add", t.slide, a, u.value).then((f) => {
1338
+ u.value = f, y();
1339
+ }).catch(() => {
1340
+ y();
1341
+ });
1342
+ }
1343
+ function r() {
1344
+ var f, _, g, w;
1345
+ (((f = v.value) == null ? void 0 : f.subType) || ((g = (_ = v.value) == null ? void 0 : _.__data__) == null ? void 0 : g.subType)) === "voice" && ((w = v.value) != null && w.src) && new Audio(v.value.src).play();
1346
+ }
1347
+ return {
1348
+ currentLabel: v,
1349
+ localLabelList: u,
1350
+ initLabel: i,
1351
+ jumpToLabel: s,
1352
+ reloadLabelList: y,
1353
+ eventHandel: c,
1354
+ addHandle: m
1355
+ };
1356
+ }
1357
+ function jo() {
1358
+ function t(e, l) {
1359
+ e.save(), e.strokeStyle = "rgba(0,0,0,0)", e.miterLimit = 4, e.font = "15px", e.fillStyle = l, e.font = "15px", e.scale(0.02734375, 0.02734375), e.save(), e.font = "15px", e.beginPath(), e.moveTo(512, 427.023), e.moveTo(422, 427.023), e.translate(512, 427.023), e.rotate(0), e.arc(0, 0, 90, 3.141592653589793, 6.283185307179586, !0), e.rotate(0), e.translate(-512, -427.023), e.translate(512, 427.023), e.rotate(0), e.arc(0, 0, 90, 0, 3.141592653589793, !0), e.rotate(0), e.translate(-512, -427.023), e.fill(), e.stroke(), e.restore(), e.save(), e.font = "15px", e.beginPath(), e.moveTo(512, 910.402), e.bezierCurveTo(492.86, 910.402, 474.51800000000003, 904.548, 458.95799999999997, 893.4730000000001), e.bezierCurveTo(444.895, 883.4630000000001, 434.032, 869.8770000000001, 427.36899999999997, 854.013), e.lineTo(255.043, 585.177), e.lineTo(254.889, 584.927), e.bezierCurveTo(225.522, 537.209, 210, 482.605, 210, 427.021), e.bezierCurveTo(210, 346.35400000000004, 241.414, 270.515, 298.454, 213.47500000000002), e.bezierCurveTo(355.494, 156.43500000000006, 431.333, 125.021, 512, 125.021), e.bezierCurveTo(592.6669999999999, 125.021, 668.506, 156.435, 725.546, 213.475), e.bezierCurveTo(782.587, 270.515, 814, 346.354, 814, 427.021), e.bezierCurveTo(814, 482.87, 798.345, 537.692, 768.726, 585.56), e.lineTo(768.462, 585.9789999999999), e.lineTo(596.381, 854.6949999999999), e.bezierCurveTo(589.626, 870.4209999999999, 578.721, 883.871, 564.677, 893.7499999999999), e.bezierCurveTo(549.192, 904.6449999999999, 530.977, 910.4019999999999, 512, 910.4019999999999), e.closePath(), e.moveTo(309.246, 551.141), e.lineTo(484.74, 824.9209999999999), e.lineTo(485.934, 828.1179999999999), e.bezierCurveTo(490.083, 839.2249999999999, 500.31500000000005, 846.4019999999999, 512, 846.4019999999999), e.bezierCurveTo(523.584, 846.4019999999999, 533.791, 839.3309999999999, 538.004, 828.387), e.lineTo(539.169, 825.3589999999999), e.lineTo(714.43, 551.678), e.bezierCurveTo(737.701, 513.983, 750, 470.884, 750, 427.021), e.bezierCurveTo(750, 363.449, 725.244, 303.682, 680.2909999999999, 258.72900000000004), e.bezierCurveTo(635.3389999999999, 213.77800000000005, 575.5719999999999, 189.02100000000004, 511.99999999999994, 189.02100000000004), e.bezierCurveTo(448.428, 189.02100000000004, 388.66099999999994, 213.77700000000004, 343.70799999999997, 258.72900000000004), e.bezierCurveTo(298.755, 303.68100000000004, 274, 363.449, 274, 427.021), e.bezierCurveTo(274, 470.661, 286.186, 513.573, 309.246, 551.1410000000001), e.closePath(), e.fill(), e.stroke(), e.restore(), e.restore();
1360
+ }
1361
+ return {
1362
+ drawDot: t
1363
+ };
1364
+ }
1365
+ function Ko(t, e) {
1366
+ const { t: l } = fe(), o = $(!1), h = $();
1367
+ let v = null;
1368
+ const u = $(!1), i = $(0);
1369
+ let c = 0;
1370
+ const p = $([]), y = $(void 0);
1371
+ let s = !1;
1372
+ function m(d, V) {
1373
+ d.save(), d.strokeStyle = "rgba(0,0,0,0)", d.miterLimit = 4, d.font = "15px ''", d.fillStyle = V, d.font = " 15px ''", d.scale(0.03125, 0.03125), d.save(), d.font = " 15px ''", d.beginPath(), d.moveTo(515.041727, 670.617766), d.bezierCurveTo(606.625894, 670.617766, 681.137374, 596.113511, 681.137374, 504.52212), d.lineTo(681.137374, 229.350568), d.bezierCurveTo(681.137374, 137.76640100000003, 606.625894, 63.254920999999996, 515.041727, 63.254920999999996), d.bezierCurveTo(423.44311000000005, 63.254920999999996, 348.93885500000005, 137.766401, 348.93885600000004, 229.350568), d.lineTo(348.93885600000004, 504.52212), d.bezierCurveTo(348.93885600000004, 596.113512, 423.44311100000004, 670.617767, 515.041727, 670.617766), d.closePath(), d.fill(), d.stroke(), d.restore(), d.save(), d.font = " 15px ''", d.beginPath(), d.moveTo(801.643237, 874.001665), d.lineTo(558.391759, 874.001665), d.lineTo(558.391759, 828.578057), d.bezierCurveTo(719.899527, 807.264291, 844.993269, 668.7898399999999, 844.993269, 501.55986699999994), d.translate(801.643237, 501.55986699999994), d.rotate(0), d.arc(0, 0, 43.350032, 0, 3.141592653589793, !0), d.rotate(0), d.translate(-801.643237, -501.55986699999994), d.bezierCurveTo(758.2932050000001, 635.684865, 649.166725, 744.811345, 515.0345020000001, 744.811346), d.bezierCurveTo(380.9095040000001, 744.811346, 271.79024900000013, 635.6848659999999, 271.79024900000013, 501.55986699999994), d.translate(228.44021750000013, 501.5664510740879), d.rotate(0), d.arc(0, 0, 43.350032, -15188164315591997e-20, -3.1414407719461273, !0), d.rotate(0), d.translate(-228.44021750000013, -501.5664510740879), d.bezierCurveTo(185.09018600000013, 668.7898389999999, 310.1911530000001, 807.271516, 471.69169500000015, 828.578057), d.lineTo(471.69169500000015, 874.001665), d.lineTo(228.440217, 874.001665), d.translate(228.440217, 917.3516970000001), d.rotate(0), d.arc(0, 0, 43.350032, -1.5707963267948966, 1.5707963267948966, !0), d.rotate(0), d.translate(-228.440217, -917.3516970000001), d.lineTo(801.643237, 960.701729), d.translate(801.643237, 917.3516970000001), d.rotate(0), d.arc(0, 0, 43.350032, 1.5707963267948966, 4.71238898038469, !0), d.rotate(0), d.translate(-801.643237, -917.3516970000001), d.closePath(), d.fill(), d.stroke(), d.restore(), d.restore();
1374
+ }
1375
+ function r() {
1376
+ return Se(this, null, function* () {
1377
+ try {
1378
+ h.value = yield navigator.mediaDevices.getUserMedia({ audio: !0 }), v = new MediaRecorder(h.value), p.value = [], v.addEventListener("dataavailable", (d) => {
1379
+ p.value.push(d.data);
1380
+ }), v.addEventListener("stop", () => Se(this, null, function* () {
1381
+ if (y.value) {
1382
+ const d = new Blob(p.value, { type: t.audioType || "audio/wav" });
1383
+ y.value.src = URL.createObjectURL(d);
1384
+ }
1385
+ u.value = !1, s && (yield w());
1386
+ })), v.start(), u.value = !0, c = window.setInterval(() => {
1387
+ i.value++;
1388
+ }, 1e3);
1389
+ } catch (d) {
1390
+ At.error(l("麦克风启用失败,请确认是否开启麦克风权限"));
1391
+ }
1392
+ });
1393
+ }
1394
+ function a() {
1395
+ h.value && v ? (v.stop(), h.value.getTracks().forEach((d) => d.stop()), v = null, h.value = void 0) : (v = null, h.value = void 0), u.value = !1, c && (clearInterval(c), c = 0), i.value = 0;
1396
+ }
1397
+ function f(d) {
1398
+ o.value = !0, y.value = d, p.value = [], s = !1;
1399
+ }
1400
+ function _() {
1401
+ u.value && a(), o.value = !1, u.value = !1, s = !1;
1402
+ }
1403
+ function g() {
1404
+ return Se(this, null, function* () {
1405
+ if (!u.value && !p.value.length) {
1406
+ At.error(l("请先录音"));
1407
+ return;
1408
+ }
1409
+ u.value && a(), u.value = !1, s = !0, p.value.length && (yield w()), o.value = !1;
1410
+ });
1411
+ }
1412
+ function w() {
1413
+ return Se(this, null, function* () {
1414
+ if (t.uploadHandle && y.value) {
1415
+ const d = Ut.service({
1416
+ text: l("录音上传中")
1417
+ }), V = new Blob(p.value, { type: t.audioType || "audio/wav" });
1418
+ p.value = [];
1419
+ try {
1420
+ yield t.uploadHandle(t.slide, y.value, V).then((D) => {
1421
+ y.value.src = D;
1422
+ }), d.close(), e(y.value);
1423
+ } catch (D) {
1424
+ d.close();
1425
+ }
1426
+ }
1427
+ });
1428
+ }
1429
+ return {
1430
+ voiceVisible: o,
1431
+ voiceForm: y,
1432
+ recordTime: i,
1433
+ isRecording: u,
1434
+ drawVoice: m,
1435
+ startRecording: r,
1436
+ stopRecording: a,
1437
+ initVoice: f,
1438
+ cancelRecord: _,
1439
+ confirmRecord: g
1440
+ };
1441
+ }
1442
+ function Wo(t, e, l) {
1443
+ const o = $([]), h = $(0), v = $(!1);
1444
+ let u = null;
1445
+ te(() => {
1446
+ var r;
1447
+ return (r = t.analysis) == null ? void 0 : r.hotmap_path;
1448
+ }, (r) => {
1449
+ var a, f, _;
1450
+ if ((f = (a = e.value) == null ? void 0 : a.viewer) != null && f.world) {
1451
+ h.value = 0;
1452
+ const g = e.value.viewer.world.getItemAt(0);
1453
+ g && (g.tilesMatrix = {}, g.draw());
1454
+ }
1455
+ r && ((_ = t.analysis) != null && _.zoom_roi) && l({
1456
+ x: t.analysis.zoom_roi.x,
1457
+ y: t.analysis.zoom_roi.y,
1458
+ width: t.analysis.zoom_roi.w,
1459
+ height: t.analysis.zoom_roi.h
1460
+ }, 5);
1461
+ }), _e(() => {
1462
+ window.addEventListener("mousemove", p), window.addEventListener("mouseup", s);
1463
+ }), Re(() => {
1464
+ window.removeEventListener("mousemove", p), window.removeEventListener("mouseup", s);
1465
+ });
1466
+ function i(r, a, f) {
1467
+ var g, w, d, V;
1468
+ const _ = we(j({}, a), {
1469
+ file: (g = t.analysis) == null ? void 0 : g.hotmap_path
1470
+ });
1471
+ if ((w = t.analysis) != null && w.hotmap_info) {
1472
+ if (f[a.x + "_" + a.y + "_" + Number(a.scale)])
1473
+ if (((d = t.analysis) == null ? void 0 : d.hotmap_type) === "drag")
1474
+ c(r, _);
1475
+ else
1476
+ return t.tileHandle(_);
1477
+ } else if (((V = t.analysis) == null ? void 0 : V.hotmap_type) === "drag")
1478
+ c(r, _);
1479
+ else
1480
+ return t.tileHandle(_);
1481
+ return r;
1482
+ }
1483
+ function c(r, a) {
1484
+ const f = o.value.find((_) => _.url === r) || {
1485
+ url: r,
1486
+ x: a.x,
1487
+ y: a.y,
1488
+ img: void 0,
1489
+ load: ""
1490
+ };
1491
+ if (!(f != null && f.img) && (o.value.push(f), f.load !== "success")) {
1492
+ const _ = new Image();
1493
+ _.src = t.tileHandle(a), _.onload = () => {
1494
+ f.load = "success";
1495
+ }, f.img = _;
1496
+ }
1497
+ }
1498
+ function p(r) {
1499
+ v.value && u && (h.value += r.x - u.x, h.value < 0 ? h.value = 0 : h.value > e.value.$options.width && (h.value = e.value.$options.width, v.value = !1), e.value.viewer.forceRedraw()), u = { x: r.x, y: r.y };
1500
+ }
1501
+ function y(r) {
1502
+ const { x: a, y: f } = r;
1503
+ v.value = !0, u = { x: a, y: f };
1504
+ }
1505
+ function s() {
1506
+ v.value = !1, u = null;
1507
+ }
1508
+ function m(r) {
1509
+ const {
1510
+ context: a,
1511
+ sourceWidth: f,
1512
+ sourceHeight: _,
1513
+ position: g,
1514
+ size: w,
1515
+ initRendered: d,
1516
+ tile: V,
1517
+ pixelDensityRatio: D
1518
+ } = r, P = V.getUrl(), le = h.value * D, se = g.original.x;
1519
+ if (se < le && se + w.x > le) {
1520
+ const W = le - se, ie = w.x - W, oe = o.value.find((Ce) => Ce.url === P), ve = (oe == null ? void 0 : oe.load) === "success" ? oe.img : d.canvas;
1521
+ a.drawImage(
1522
+ ve,
1523
+ 0,
1524
+ 0,
1525
+ f * W / w.x,
1526
+ _,
1527
+ g.x,
1528
+ g.y,
1529
+ W,
1530
+ w.y
1531
+ ), a.drawImage(
1532
+ d.canvas,
1533
+ f * W / w.x,
1534
+ 0,
1535
+ f * ie / w.x,
1536
+ _,
1537
+ g.x + W,
1538
+ g.y,
1539
+ ie,
1540
+ w.y
1541
+ );
1542
+ } else if (se + w.x <= le) {
1543
+ const W = o.value.find((oe) => oe.url === P), ie = (W == null ? void 0 : W.load) === "success" ? W.img : d.canvas;
1544
+ a.drawImage(
1545
+ ie,
1546
+ 0,
1547
+ 0,
1548
+ f,
1549
+ _,
1550
+ g.x,
1551
+ g.y,
1552
+ w.x,
1553
+ w.y
1554
+ );
1555
+ } else se >= le && a.drawImage(
1556
+ d.canvas,
1557
+ 0,
1558
+ 0,
1559
+ f,
1560
+ _,
1561
+ g.x,
1562
+ g.y,
1563
+ w.x,
1564
+ w.y
1565
+ );
1566
+ }
1567
+ return {
1568
+ getHotmapUrl: i,
1569
+ hotmapImgs: o,
1570
+ handlerImage: m,
1571
+ hotmapLine: h,
1572
+ lineMouseDown: y
1573
+ };
1574
+ }
1575
+ function Go(t, e, l) {
1576
+ const o = Ot(), h = $(!1), v = new BroadcastChannel("sync_kfb_view");
1577
+ v.onmessage = (s) => {
1578
+ const m = s.data;
1579
+ p(m);
1580
+ }, _e(() => {
1581
+ var s, m, r;
1582
+ (s = l.value) == null || s.addEventListener("mouseenter", u), (m = l.value) == null || m.addEventListener("mousemove", u), (r = l.value) == null || r.addEventListener("mouseleave", i);
1583
+ }), Re(() => {
1584
+ var s, m, r;
1585
+ (s = l.value) == null || s.removeEventListener("mouseenter", u), (m = l.value) == null || m.removeEventListener("mousemove", u), (r = l.value) == null || r.removeEventListener("mouseleave", i), v.close();
1586
+ });
1587
+ function u() {
1588
+ h.value = !0;
1589
+ }
1590
+ function i() {
1591
+ h.value = !1;
1592
+ }
1593
+ function c() {
1594
+ let s;
1595
+ e.value.viewer.addHandler("pan", (m) => {
1596
+ var f, _, g, w;
1597
+ if (!s) {
1598
+ s = (_ = (f = m.center) == null ? void 0 : f.clone) == null ? void 0 : _.call(f);
1599
+ return;
1600
+ }
1601
+ const r = m.center, a = (g = r == null ? void 0 : r.minus) == null ? void 0 : g.call(r, s);
1602
+ s = (w = r == null ? void 0 : r.clone) == null ? void 0 : w.call(r), t.syncPosition && y({
1603
+ position: a,
1604
+ type: "sync_position"
1605
+ });
1606
+ }), e.value.viewer.addHandler("zoom", (m) => {
1607
+ t.syncZoom && y({
1608
+ zoom: m.zoom,
1609
+ type: "sync_zoom"
1610
+ });
1611
+ }), e.value.viewer.addHandler("animation-finish", () => {
1612
+ var a;
1613
+ if (t.syncZoom && y({
1614
+ zoom: e.value.viewer.viewport.getZoom(!0),
1615
+ type: "sync_zoom"
1616
+ }), !s)
1617
+ return;
1618
+ const m = e.value.viewer.viewport.getCenter(!0), r = (a = m == null ? void 0 : m.minus) == null ? void 0 : a.call(m, s);
1619
+ s = void 0, t.syncPosition && y({
1620
+ position: r,
1621
+ type: "sync_position"
1622
+ });
1623
+ });
1624
+ }
1625
+ function p(s) {
1626
+ s.uuid && s.type === "sync_position" && s.uuid !== (o == null ? void 0 : o.uid) ? e.value && e.value.viewer.viewport.panBy(s.position, !0) : s.uuid && s.type === "sync_zoom" && s.uuid !== (o == null ? void 0 : o.uid) && e.value && e.value.viewer.viewport.zoomTo(s.zoom);
1627
+ }
1628
+ function y(s) {
1629
+ var m;
1630
+ h.value && v.postMessage(we(j({}, s), {
1631
+ uuid: o == null ? void 0 : o.uid,
1632
+ fileName: (m = t.slide) == null ? void 0 : m.file
1633
+ }));
1634
+ }
1635
+ return {
1636
+ initSync: c
1637
+ };
1638
+ }
1639
+ const qo = { class: "hzzt-kfb-keyword flex wrap" }, Zo = ["onMouseenter"], Yo = /* @__PURE__ */ ae({
1640
+ __name: "KfbKeyword",
1641
+ setup(t) {
1642
+ const e = $([
1643
+ { code: "Q", icon: "zoomIn" },
1644
+ { code: "W", icon: "arrowUp" },
1645
+ { code: "E", icon: "zoomOut" },
1646
+ { code: "A", icon: "arrowLeft" },
1647
+ { code: "S", icon: "arrowDown" },
1648
+ { code: "D", icon: "arrowRight" }
1649
+ ]), l = J("kfbView", $({}));
1650
+ let o = null;
1651
+ function h(u, i) {
1652
+ u.preventDefault(), o && clearTimeout(o), o = setInterval(() => {
1653
+ i === "E" && (l.value.viewer.viewport.zoomBy(1.1), l.value.viewer.viewport.applyConstraints()), i === "Q" && (l.value.viewer.viewport.zoomBy(0.9), l.value.viewer.viewport.applyConstraints()), i === "W" && (l.value.viewer.viewport.panBy(l.value.viewer.viewport.deltaPointsFromPixels(new Ve.Point(0, -40))), l.value.viewer.viewport.applyConstraints()), i === "S" && (l.value.viewer.viewport.panBy(l.value.viewer.viewport.deltaPointsFromPixels(new Ve.Point(0, 40))), l.value.viewer.viewport.applyConstraints()), i === "A" && (l.value.viewer.viewport.panBy(l.value.viewer.viewport.deltaPointsFromPixels(new Ve.Point(-40, 0))), l.value.viewer.viewport.applyConstraints()), i === "D" && (l.value.viewer.viewport.panBy(l.value.viewer.viewport.deltaPointsFromPixels(new Ve.Point(40, 0))), l.value.viewer.viewport.applyConstraints());
1654
+ }, 120);
1655
+ }
1656
+ function v() {
1657
+ o && (clearInterval(o), o = null);
1658
+ }
1659
+ return Re(() => {
1660
+ clearTimeout(o);
1661
+ }), (u, i) => (b(), x("div", qo, [
1662
+ (b(!0), x(re, null, ue(e.value, (c) => (b(), x("div", {
1663
+ key: c.code,
1664
+ class: "hzzt-kfb-keyword__code flex column align-items-center justify-content-center",
1665
+ onMouseenter: (p) => h(p, c.code),
1666
+ onMouseleave: v
1667
+ }, [
1668
+ k("p", null, E(c.code), 1),
1669
+ C(ee, {
1670
+ size: "14",
1671
+ name: c.icon
1672
+ }, null, 8, ["name"])
1673
+ ], 40, Zo))), 128))
1674
+ ]));
1675
+ }
1676
+ }), Jo = /* @__PURE__ */ ze(Yo, [["__scopeId", "data-v-c8d940f0"]]);
1677
+ function Xo(t, e, l = {}) {
1678
+ const {
1679
+ panSensitivity: o = 0.2,
1680
+ // 值越大,鼠标移动时图像移动越快
1681
+ zoomSensitivity: h = 1.1,
1682
+ // 值越大,滚轮缩放幅度越大
1683
+ damping: v = 0.6,
1684
+ // 值越大,惯性滑动时间越长
1685
+ minThreshold: u = 0.05
1686
+ // 值越小,停止移动时的精度越高
1687
+ } = l;
1688
+ let i = !1, c = null, p = 0, y = 0, s = !1;
1689
+ const m = () => {
1690
+ i = document.pointerLockElement === e.value, i || r();
1691
+ }, r = () => {
1692
+ p = 0, y = 0, c && (cancelAnimationFrame(c), c = null), s = !1;
1693
+ }, a = (d) => Se(this, null, function* () {
1694
+ try {
1695
+ d.key === "l" && e.value && (document.pointerLockElement ? (document.exitPointerLock(), console.log("鼠标已解锁!")) : (yield e.value.requestPointerLock(), console.log("鼠标已锁定!")));
1696
+ } catch (V) {
1697
+ console.error("无法锁定鼠标:", V);
1698
+ }
1699
+ }), f = (d) => {
1700
+ if (i) {
1701
+ d.preventDefault();
1702
+ const V = Math.pow(h, Math.sign(d.deltaY) * -1);
1703
+ t.value.viewer.viewport.zoomBy(V), t.value.viewer.viewport.applyConstraints();
1704
+ }
1705
+ }, _ = (d) => {
1706
+ i && (p += d.movementX * o, y += d.movementY * o, !s && (Math.abs(p) > 1 || Math.abs(y) > 1) && (s = !0, c = requestAnimationFrame(g)));
1707
+ }, g = () => {
1708
+ const d = t.value.viewer.viewport;
1709
+ if (Math.abs(p) > u || Math.abs(y) > u) {
1710
+ const V = d.deltaPointsFromPixels(
1711
+ new Ve.Point(p, y)
1712
+ );
1713
+ d.panBy(V), d.applyConstraints();
1714
+ }
1715
+ p *= v, y *= v, Math.abs(p) > u || Math.abs(y) > u ? c = requestAnimationFrame(g) : r();
1716
+ }, w = () => {
1717
+ i && document.exitPointerLock();
1718
+ };
1719
+ return _e(() => {
1720
+ var d;
1721
+ (d = e.value) == null || d.addEventListener("keydown", a), document.addEventListener("wheel", f, { passive: !1 }), document.addEventListener("click", w), document.addEventListener("mousemove", _), document.addEventListener("pointerlockchange", m);
1722
+ }), Re(() => {
1723
+ var d;
1724
+ (d = e.value) == null || d.removeEventListener("keydown", a), document.removeEventListener("click", w), document.removeEventListener("wheel", f), document.removeEventListener("mousemove", _), document.removeEventListener("pointerlockchange", m), r();
1725
+ }), {
1726
+ setConfig: (d) => {
1727
+ Object.assign(l, d);
1728
+ }
1729
+ };
1730
+ }
1731
+ const Qo = /* @__PURE__ */ ae({
1732
+ __name: "KfbLevel",
1733
+ props: /* @__PURE__ */ $e({
1734
+ slides: { default: () => [] }
1735
+ }, {
1736
+ "model-value": {
1737
+ default: 0
1738
+ },
1739
+ "model-valueModifiers": {}
1740
+ }),
1741
+ emits: ["update:model-value"],
1742
+ setup(t) {
1743
+ const e = t, l = je(t, "model-value"), o = J("kfbView", $({})), h = F(() => Array.from(new Array(e.slides.length + 1)).map((u, i) => i));
1744
+ function v() {
1745
+ const u = o.value.viewer.world.getItemAt(0), i = Object.keys(u.tilesMatrix);
1746
+ i.forEach((c, p) => {
1747
+ p > i.length - 4 && (u.tilesMatrix[c] = {});
1748
+ }), u.draw();
1749
+ }
1750
+ return (u, i) => (b(), x("div", {
1751
+ class: Le(["hzzt-kfb-level flex column align-items-center", u.slides.length > 5 ? "hzzt-kfb-level--large" : ""])
1752
+ }, [
1753
+ C(ee, {
1754
+ name: "level",
1755
+ size: "24",
1756
+ class: "margin-b-4 margin-t-2"
1757
+ }),
1758
+ C(n(Ll), {
1759
+ modelValue: l.value,
1760
+ "onUpdate:modelValue": i[0] || (i[0] = (c) => l.value = c),
1761
+ vertical: "",
1762
+ min: h.value[0],
1763
+ step: 1,
1764
+ max: h.value[h.value.length - 1],
1765
+ "show-stops": "",
1766
+ "show-tooltip": !0,
1767
+ placement: "left",
1768
+ height: u.slides.length > 5 ? "180px" : "130px",
1769
+ onInput: v
1770
+ }, null, 8, ["modelValue", "min", "max", "height"])
1771
+ ], 2));
1772
+ }
1773
+ }), en = {
1774
+ key: 0,
1775
+ class: "flex hzzt-kfb-channel"
1776
+ }, tn = ["onClick"], ln = /* @__PURE__ */ ae({
1777
+ __name: "KfbChannel",
1778
+ props: /* @__PURE__ */ $e({
1779
+ info: {}
1780
+ }, {
1781
+ "model-value": {
1782
+ default: () => []
1783
+ },
1784
+ "model-valueModifiers": {}
1785
+ }),
1786
+ emits: /* @__PURE__ */ $e(["load"], ["update:model-value"]),
1787
+ setup(t, { emit: e }) {
1788
+ const l = t, o = e, h = je(t, "model-value"), v = [
1789
+ { key: "DAPI", color: "#4A6CF7" },
1790
+ { key: "480", color: "#00BFFF" },
1791
+ { key: "520", color: "#32CD32" },
1792
+ { key: "570", color: "#FFAA33" },
1793
+ { key: "620", color: "#FF6347" },
1794
+ { key: "670", color: "#DC143C" },
1795
+ { key: "780", color: "#4B0082" }
1796
+ ], u = F(() => {
1797
+ var c;
1798
+ return (((c = l.info) == null ? void 0 : c.channel) || []).map((p) => {
1799
+ const y = v.find((s) => s.key === p.eqt_num);
1800
+ return {
1801
+ label: p.eqt_num,
1802
+ color: p.r ? `rgb(${p.r}, ${p.g}, ${p.b})` : y == null ? void 0 : y.color
1803
+ };
1804
+ });
1805
+ });
1806
+ function i(c) {
1807
+ h.value.includes(c) ? h.value = h.value.filter((p) => p !== c) : h.value.push(c), o("load");
1808
+ }
1809
+ return (c, p) => u.value.length > 0 ? (b(), x("div", en, [
1810
+ C(ee, {
1811
+ name: "channel",
1812
+ size: "32"
1813
+ }),
1814
+ (b(!0), x(re, null, ue(u.value, (y) => (b(), x("div", {
1815
+ key: y.label,
1816
+ style: Y({ background: y.color }),
1817
+ class: Le(["hzzt-kfb-channel__box", h.value.includes(y.label) ? "" : "hzzt-kfb-channel__box--unactive"]),
1818
+ onClick: (s) => i(y.label)
1819
+ }, E(y.label), 15, tn))), 128))
1820
+ ])) : R("", !0);
1821
+ }
1822
+ }), on = { class: "flex align-items-center justify-content-between" }, nn = { class: "hzzt-kfb-title" }, an = { class: "hzzt-kfb-annotation__container flex-1" }, sn = ["onClick"], rn = /* @__PURE__ */ ae({
1823
+ __name: "KfbAnnotation",
1824
+ props: /* @__PURE__ */ $e({
1825
+ annotation: {},
1826
+ annotations: {}
1827
+ }, {
1828
+ expand: { type: Boolean },
1829
+ expandModifiers: {}
1830
+ }),
1831
+ emits: /* @__PURE__ */ $e(["select"], ["update:expand"]),
1832
+ setup(t, { emit: e }) {
1833
+ const l = je(t, "expand"), o = e, { t: h } = fe();
1834
+ function v(i) {
1835
+ const c = i.subType || i.tool || "";
1836
+ return `mark${c.substring(0, 1).toLocaleUpperCase()}${c.substring(1)}`;
1837
+ }
1838
+ function u(i) {
1839
+ o("select", i);
1840
+ }
1841
+ return (i, c) => (b(), x("div", {
1842
+ class: Le(["hzzt-kfb-annotation flex column", l.value ? "hzzt-kfb-annotation--expand" : ""])
1843
+ }, [
1844
+ k("div", on, [
1845
+ He(k("div", nn, [
1846
+ k("span", null, E(n(h)("标注列表")), 1)
1847
+ ], 512), [
1848
+ [Oe, l.value]
1849
+ ]),
1850
+ C(ee, {
1851
+ class: "hzzt-kfb-annotation__icon",
1852
+ name: l.value ? "expandLeft" : "expandRight",
1853
+ onClick: c[0] || (c[0] = (p) => l.value = !l.value)
1854
+ }, null, 8, ["name"])
1855
+ ]),
1856
+ He(k("div", an, [
1857
+ (b(!0), x(re, null, ue(i.annotations, (p, y) => {
1858
+ var s;
1859
+ return b(), x("div", {
1860
+ class: Le(["hzzt-kfb-annotation__item", ((s = i.annotation) == null ? void 0 : s.id) === p.id ? "hzzt-kfb-annotation__item--active" : ""]),
1861
+ key: y,
1862
+ onClick: (m) => u(p)
1863
+ }, [
1864
+ C(ee, {
1865
+ size: "16",
1866
+ name: v(p)
1867
+ }, null, 8, ["name"]),
1868
+ k("span", null, E(n(h)("标注")) + E(y + 1), 1)
1869
+ ], 10, sn);
1870
+ }), 128))
1871
+ ], 512), [
1872
+ [Oe, l.value]
1873
+ ])
1874
+ ], 2));
1875
+ }
1876
+ }), un = /* @__PURE__ */ ze(rn, [["__scopeId", "data-v-bfc56a3e"]]);
1877
+ function qt(t) {
1878
+ const { t: e } = fe();
1879
+ return F(() => {
1880
+ var h;
1881
+ const o = ((h = t == null ? void 0 : t.analysis) == null ? void 0 : h.result) || "";
1882
+ return o.indexOf("疑似阳性") > -1 ? {
1883
+ type: "warning",
1884
+ name: o
1885
+ } : o.indexOf("阳性") > -1 ? {
1886
+ type: "danger",
1887
+ name: o
1888
+ } : o.indexOf("阴性") > -1 ? {
1889
+ type: "success",
1890
+ name: o
1891
+ } : o.indexOf("不合格") > -1 ? {
1892
+ type: "danger",
1893
+ name: o
1894
+ } : o.indexOf("合格") > -1 ? {
1895
+ type: "success",
1896
+ name: o
1897
+ } : {
1898
+ type: "info",
1899
+ name: o || e("未知")
1900
+ };
1901
+ });
1902
+ }
1903
+ const cn = ["element-loading-text"], dn = {
1904
+ key: 1,
1905
+ class: "hzzt-kfb-view__main flex align-items-center justify-content-center"
1906
+ }, vn = {
1907
+ class: "hzzt-kfb-view__filter",
1908
+ height: "0",
1909
+ width: "0"
1910
+ }, fn = { id: "colorMatrixFilter" }, mn = ["values"], pn = ["values"], hn = ["exponent"], gn = ["exponent"], yn = ["exponent"], wn = { class: "flex nowrap justify-content-center overflow-hidden" }, _n = ["src"], bn = ["src"], kn = { class: "flex-1" }, zn = { class: "flex-1" }, Cn = { class: "flex-1" }, Tn = { class: "flex-1" }, $n = { class: "flex-1" }, Ln = { class: "flex-1" }, xn = ["src"], En = {
1911
+ key: 2,
1912
+ class: "margin-l-2"
1913
+ }, Sn = {
1914
+ key: 9,
1915
+ class: "hzzt-kfb-view__watermark"
1916
+ }, Ue = /* @__PURE__ */ ae({
1917
+ name: "HzztKfbView",
1918
+ __name: "index",
1919
+ props: {
1920
+ slide: {},
1921
+ fileHandle: {},
1922
+ labelHandle: {},
1923
+ tileHandle: {},
1924
+ navigatorHandle: {},
1925
+ pathologyHandle: {},
1926
+ uploadHandle: {},
1927
+ options: {},
1928
+ labelDrawing: {},
1929
+ process: { default: () => j({}, Gt) },
1930
+ microscope: { default: () => j({}, mt) },
1931
+ menus: {},
1932
+ syncPosition: { type: Boolean },
1933
+ syncZoom: { type: Boolean },
1934
+ audioType: {},
1935
+ watermark: {},
1936
+ analysis: {},
1937
+ aiLabelList: {},
1938
+ showLabel: { type: Boolean }
1939
+ },
1940
+ emits: ["tool"],
1941
+ setup(t, { expose: e, emit: l }) {
1942
+ Cl((z) => ({
1943
+ e3fd940a: se.value
1944
+ }));
1945
+ const o = t, h = l, { t: v, locale: u } = fe(), i = $(), c = $(), p = $(), y = $(!1), s = $({}), m = $(!1), r = $(0), a = $(0), f = $(0), _ = $([]), g = $({
1946
+ width: 0,
1947
+ height: 0,
1948
+ fileNum: 0,
1949
+ scanScale: 1,
1950
+ fileName: "",
1951
+ ratiomap: {}
1952
+ }), w = J("show-kfb-label", $(!0)), d = J("show-keyboard", $(!1)), V = J("show-watermark", $(!1)), D = $(!1), P = Ut.directive;
1953
+ te(() => {
1954
+ var z;
1955
+ return (z = o.slide) == null ? void 0 : z.file;
1956
+ }, () => {
1957
+ rl(), setTimeout(() => {
1958
+ bt();
1959
+ }, 100);
1960
+ }), _e(() => {
1961
+ bt();
1962
+ });
1963
+ const le = qt(o), se = F(() => {
1964
+ var z, S;
1965
+ return `url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='150' height='100'><text x='30' y='80' font-family='Arial' font-size='16' fill='${((z = o.watermark) == null ? void 0 : z.color) || "rgba(0,0,0,0.2)"}' transform='rotate(-30)' text-anchor='middle'>${((S = o.watermark) == null ? void 0 : S.text) || "水印文字"}</text></svg>")`;
1966
+ }), {
1967
+ imageProcess: W,
1968
+ matrixValues: ie,
1969
+ saturateValues: oe,
1970
+ forceRedraw: ve
1971
+ } = go(o), {
1972
+ tailorEvent: Ce,
1973
+ shotScreen: M
1974
+ } = yo(h, s), {
1975
+ moveEvent: U,
1976
+ fastMove: ne
1977
+ } = Oo(s, a), { initSync: nt } = Go(o, s, i);
1978
+ Xo(s, i);
1979
+ const { drawDot: at } = jo(), {
1980
+ voiceVisible: Ne,
1981
+ voiceForm: Fe,
1982
+ drawVoice: st,
1983
+ recordTime: T,
1984
+ isRecording: N,
1985
+ startRecording: G,
1986
+ stopRecording: me,
1987
+ initVoice: gt,
1988
+ cancelRecord: Zt,
1989
+ confirmRecord: Yt
1990
+ } = Ko(o, tl), {
1991
+ currentLabel: it,
1992
+ localLabelList: yt,
1993
+ initLabel: Jt,
1994
+ jumpToLabel: wt,
1995
+ reloadLabelList: Xt,
1996
+ eventHandel: Qt,
1997
+ addHandle: el
1998
+ } = Uo(o, h, s, gt, rt);
1999
+ function tl(z) {
2000
+ el(z);
2001
+ }
2002
+ const {
2003
+ getHotmapUrl: ll,
2004
+ handlerImage: ol,
2005
+ hotmapLine: nl,
2006
+ lineMouseDown: _t,
2007
+ hotmapImgs: al
2008
+ } = Wo(o, s, ut);
2009
+ function bt() {
2010
+ var z;
2011
+ (z = o.slide) != null && z.file && o.fileHandle && (m.value || (m.value = !0, o.fileHandle(o.slide).then((S) => {
2012
+ var X, ce, be, q;
2013
+ g.value = S, _.value = (((X = g.value) == null ? void 0 : X.channel) || []).map((O) => O.eqt_num), s.value = new he(j({
2014
+ el: c.value,
2015
+ fileName: (ce = o.slide) == null ? void 0 : ce.file,
2016
+ scale: g.value.scanScale,
2017
+ lang: (u == null ? void 0 : u.value) === "en-US" ? "en" : u == null ? void 0 : u.value,
2018
+ navigator: {
2019
+ style: "left: 0;bottom: 0",
2020
+ thumbnail: g.value.thumbnailImg,
2021
+ width: 200,
2022
+ height: 180
2023
+ },
2024
+ grid: {
2025
+ show: !1,
2026
+ ruler: !1,
2027
+ pxConversion: !0
2028
+ },
2029
+ thumb: {
2030
+ bgColor: "rgba(0,0,0,0)"
2031
+ },
2032
+ graduation: {
2033
+ show: !0,
2034
+ right: 120,
2035
+ bottom: (q = (be = g.value) == null ? void 0 : be.channel) != null && q.length ? 120 : 30,
2036
+ tick: {
2037
+ number: 3,
2038
+ height: 8
2039
+ }
2040
+ },
2041
+ pxConversion: {
2042
+ units: ["um", "mm"],
2043
+ binary: 1e3,
2044
+ imageCapRes: g.value.imageCapRes || g.value.scanResolution || 1
2045
+ },
2046
+ openSeadragonOptions: {
2047
+ maxZoomLevel: g.value.scanScale * 20,
2048
+ pixelsPerArrowPress: 200,
2049
+ animationTime: 0,
2050
+ tileSources: kt()
2051
+ },
2052
+ tileDrawing: ol,
2053
+ label: {
2054
+ drawing: (O, B, Ee) => {
2055
+ var Ke;
2056
+ if (B != null && B.custom) {
2057
+ const Q = O.getContext("2d");
2058
+ Q.save(), Q.beginPath();
2059
+ const De = (B == null ? void 0 : B.subType) || ((Ke = B == null ? void 0 : B.__data__) == null ? void 0 : Ke.subType);
2060
+ De === "count" ? (Q.translate(Ee.x - 14, Ee.y - 22), at(Q, (B == null ? void 0 : B.strokeStyle) || "")) : De === "voice" ? (Q.translate(Ee.x - 16, Ee.y - 18), st(Q, (B == null ? void 0 : B.strokeStyle) || "")) : o.labelDrawing && o.labelDrawing(Q, B), Q.restore();
2061
+ }
2062
+ }
2063
+ }
2064
+ }, o.options || {})), s.value.viewer.drawer.canvas.style.filter = "url(#colorMatrixFilter)", Jt(), il(), nt(), setTimeout(() => {
2065
+ var O, B;
2066
+ (O = o.analysis) != null && O.hotmap_path && ((B = o.analysis) != null && B.zoom_roi) && ut({
2067
+ x: o.analysis.zoom_roi.x,
2068
+ y: o.analysis.zoom_roi.y,
2069
+ width: o.analysis.zoom_roi.w,
2070
+ height: o.analysis.zoom_roi.h
2071
+ }, 5);
2072
+ }, 200);
2073
+ }).finally(() => {
2074
+ m.value = !1, w.value || ($t({
2075
+ show: !1,
2076
+ ruler: !1
2077
+ }), Lt({
2078
+ show: !1
2079
+ }), setTimeout(() => {
2080
+ xt(!1);
2081
+ }, 100));
2082
+ })));
2083
+ }
2084
+ function sl() {
2085
+ const z = s.value.viewer;
2086
+ if (z.world) {
2087
+ const S = z.world.getItemAt(0), X = z.viewport.getZoom(), ce = z.viewport.getCenter();
2088
+ z.world.removeItem(S), z.addTiledImage({
2089
+ tileSource: kt(),
2090
+ success: function() {
2091
+ z.viewport.zoomTo(X), z.viewport.panTo(ce);
2092
+ }
2093
+ });
2094
+ }
2095
+ }
2096
+ function kt() {
2097
+ var be, q;
2098
+ const z = g.value.tileWidth || g.value.imageBlockLen || 256, S = g.value.tileHeight || g.value.imageBlockLen || 256, X = {};
2099
+ (be = o.analysis) != null && be.hotmap_path && (((q = o.analysis) == null ? void 0 : q.hotmap_info) || []).forEach((O) => {
2100
+ X[O[0] / z + "_" + O[1] / S + "_" + O[2]] = !0;
2101
+ });
2102
+ let ce = 10;
2103
+ return Object.keys(g.value.ratiomap).forEach((O) => {
2104
+ const B = g.value.fileNum - Math.sqrt(g.value.scanScale / Number(O));
2105
+ B > 0 && (ce = ce ? Math.min(ce, B) : B);
2106
+ }), {
2107
+ height: g.value.height,
2108
+ width: g.value.width,
2109
+ tileWidth: z,
2110
+ tileHeight: S,
2111
+ minLevel: Math.floor(ce || 8),
2112
+ getTileUrl: (O, B, Ee) => {
2113
+ var Et, St, Vt, It;
2114
+ const Ke = O, Q = {
2115
+ file: ((Et = o.slide) == null ? void 0 : Et.file) || "",
2116
+ x: B,
2117
+ y: Ee,
2118
+ scale: "0",
2119
+ level: O,
2120
+ channel: JSON.stringify(_.value)
2121
+ };
2122
+ g.value.fileNum === O ? (O = g.value.scanScale, Q.scale = O.toFixed(6)) : (O = g.value.scanScale / Math.pow(2, g.value.fileNum - O), Q.scale = O.toFixed(6)), Q.level = Ke, Q.file = f.value === 0 ? Q.file : ((Vt = (St = o.slide) == null ? void 0 : St.children) == null ? void 0 : Vt[f.value - 1]) || "";
2123
+ const De = o.tileHandle(Q);
2124
+ return (It = o.analysis) != null && It.hotmap_path ? ll(De, Q, X) : De;
2125
+ }
2126
+ };
2127
+ }
2128
+ function il() {
2129
+ s.value.viewer.addHandler("rotate", (z) => {
2130
+ r.value = z.degrees || 0;
2131
+ }), s.value.viewer.addHandler("zoom", (z) => {
2132
+ const S = s.value.viewer.viewport.viewportToImageZoom(
2133
+ z.zoom || 0
2134
+ ) * Number(s.value.$options.scale);
2135
+ a.value = Number(S.toFixed(2));
2136
+ }), s.value.$on(he.events.EVENT_NAVIGATOR_VESTIGE, (z) => {
2137
+ o.navigatorHandle && o.navigatorHandle("add", o.slide, z);
2138
+ }), o.navigatorHandle && o.navigatorHandle("list", o.slide).then((z) => {
2139
+ var S, X;
2140
+ (X = (S = s.value.navigator) == null ? void 0 : S.drawPointList) == null || X.call(S, z);
2141
+ }), Ce(), U();
2142
+ }
2143
+ function rl() {
2144
+ var z;
2145
+ (z = s.value) != null && z.destroy && (s.value.destroy(), s.value = {}, g.value = {
2146
+ width: 0,
2147
+ height: 0,
2148
+ fileNum: 0,
2149
+ scanScale: 1,
2150
+ fileName: "",
2151
+ ratiomap: {}
2152
+ }, al.value = [], _.value = [], a.value = 0, r.value = 0, f.value = 0);
2153
+ }
2154
+ function zt(z, S) {
2155
+ z === "annotate" ? Ct(S) : z === "tailor" ? M(S) : z === "info" ? y.value = !0 : z === "flip" ? Tt() : z === "delete" ? Qt("delete")(it.value) : h("tool", z, S);
2156
+ }
2157
+ function Ct(z) {
2158
+ z.tool === "Voice" && (z.subType = "voice", z.tool = "Dot", z.custom = !0), s.value.board.startDraw(z);
2159
+ }
2160
+ function ul() {
2161
+ s.value.board.endDraw();
2162
+ }
2163
+ function Tt() {
2164
+ s.value.viewer.viewport.toggleFlip();
2165
+ }
2166
+ function cl(z) {
2167
+ var S, X;
2168
+ (X = (S = p.value) == null ? void 0 : S.scopeChange) == null || X.call(S, z);
2169
+ }
2170
+ function dl() {
2171
+ y.value = !0;
2172
+ }
2173
+ function $t(z) {
2174
+ var S;
2175
+ (S = s.value) != null && S.grid && s.value.grid.updated(z);
2176
+ }
2177
+ function Lt(z) {
2178
+ var S;
2179
+ (S = s.value) != null && S.graduation && s.value.graduation.updated(z);
2180
+ }
2181
+ function xt(z) {
2182
+ var S;
2183
+ (S = s.value) != null && S.navigator && (s.value.navigator.element.style.display = z ? "flex" : "none");
2184
+ }
2185
+ function rt(z) {
2186
+ const S = s.value.viewer.viewport.imageToViewportZoom(Number(z / s.value.$options.scale));
2187
+ s.value.viewer.viewport.zoomTo(S);
2188
+ }
2189
+ function ut(z, S) {
2190
+ s.value.area && (s.value.area.moveToLabel(s.value.viewer.viewport.imageToViewportCoordinates(
2191
+ z.x + z.width / 2,
2192
+ z.y + z.height / 2
2193
+ )), rt(S));
2194
+ }
2195
+ return pe("kfbView", s), pe("currentLabel", it), e({
2196
+ kfbView: s,
2197
+ degrees: r,
2198
+ zoom: a,
2199
+ forceRedraw: ve,
2200
+ toggleFlip: Tt,
2201
+ startDraw: Ct,
2202
+ endDraw: ul,
2203
+ shotScreen: M,
2204
+ info: dl,
2205
+ scopeChange: cl,
2206
+ updateGrid: $t,
2207
+ updateGraduation: Lt,
2208
+ updateNavigator: xt,
2209
+ fastMove: ne,
2210
+ zoomTo: rt,
2211
+ jumpToLabel: wt,
2212
+ jumpToPosition: ut,
2213
+ reloadLabelList: Xt
2214
+ }), (z, S) => {
2215
+ var X, ce, be;
2216
+ return b(), x("div", {
2217
+ ref_key: "mainKfbViewRef",
2218
+ ref: i,
2219
+ class: "hzzt-kfb-view"
2220
+ }, [
2221
+ z.slide.file ? He((b(), x("div", {
2222
+ key: 0,
2223
+ ref_key: "kfbViewMainRef",
2224
+ ref: c,
2225
+ class: "hzzt-kfb-view__main",
2226
+ "element-loading-text": n(v)("加载中"),
2227
+ "element-loading-background": "rgba(0, 0, 0, 0.8)"
2228
+ }, null, 8, cn)), [
2229
+ [n(P), m.value]
2230
+ ]) : (b(), x("div", dn, S[5] || (S[5] = [
2231
+ k("img", {
2232
+ style: { width: "50%" },
2233
+ src: ot
2234
+ }, null, -1)
2235
+ ]))),
2236
+ z.analysis && z.analysis.result ? (b(), A(n(jt), {
2237
+ key: 2,
2238
+ class: "hzzt-kfb-view__tag",
2239
+ type: n(le).type
2240
+ }, {
2241
+ default: L(() => [
2242
+ K(E(n(le).name), 1)
2243
+ ]),
2244
+ _: 1
2245
+ }, 8, ["type"])) : R("", !0),
2246
+ (b(), x("svg", vn, [
2247
+ k("filter", fn, [
2248
+ k("feColorMatrix", {
2249
+ values: n(ie),
2250
+ type: "matrix"
2251
+ }, null, 8, mn),
2252
+ k("feColorMatrix", {
2253
+ values: n(oe),
2254
+ type: "saturate"
2255
+ }, null, 8, pn),
2256
+ k("feComponentTransfer", null, [
2257
+ k("feFuncR", {
2258
+ id: "feFuncR",
2259
+ type: "gamma",
2260
+ exponent: n(W).ga,
2261
+ amplitude: "1",
2262
+ offset: "0"
2263
+ }, null, 8, hn),
2264
+ k("feFuncG", {
2265
+ id: "feFuncG",
2266
+ type: "gamma",
2267
+ exponent: n(W).ga,
2268
+ amplitude: "1",
2269
+ offset: "0"
2270
+ }, null, 8, gn),
2271
+ k("feFuncB", {
2272
+ id: "feFuncB",
2273
+ type: "gamma",
2274
+ exponent: n(W).ga,
2275
+ amplitude: "1",
2276
+ offset: "0"
2277
+ }, null, 8, yn)
2278
+ ])
2279
+ ])
2280
+ ])),
2281
+ C(xo, {
2282
+ menus: z.menus,
2283
+ onTool: zt
2284
+ }, null, 8, ["menus"]),
2285
+ C(Vo, Qe(z.microscope, {
2286
+ ref_key: "microscopeRef",
2287
+ ref: p
2288
+ }), null, 16),
2289
+ n(w) && z.slide.file && g.value.labelImg ? (b(), A(Bo, {
2290
+ key: 3,
2291
+ visible: z.showLabel,
2292
+ info: g.value,
2293
+ slide: z.slide,
2294
+ pathologyHandle: z.pathologyHandle,
2295
+ onTool: zt
2296
+ }, null, 8, ["visible", "info", "slide", "pathologyHandle"])) : R("", !0),
2297
+ n(d) ? (b(), A(Jo, { key: 4 })) : R("", !0),
2298
+ (X = z.slide.children) != null && X.length ? (b(), A(Qo, {
2299
+ key: 5,
2300
+ modelValue: f.value,
2301
+ "onUpdate:modelValue": S[0] || (S[0] = (q) => f.value = q),
2302
+ slides: z.slide.children
2303
+ }, null, 8, ["modelValue", "slides"])) : R("", !0),
2304
+ (be = (ce = g.value) == null ? void 0 : ce.channel) != null && be.length ? (b(), A(ln, {
2305
+ key: 6,
2306
+ modelValue: _.value,
2307
+ "onUpdate:modelValue": S[1] || (S[1] = (q) => _.value = q),
2308
+ info: g.value,
2309
+ onLoad: sl
2310
+ }, null, 8, ["modelValue", "info"])) : R("", !0),
2311
+ n(yt).length ? (b(), A(un, {
2312
+ key: 7,
2313
+ expand: D.value,
2314
+ "onUpdate:expand": S[2] || (S[2] = (q) => D.value = q),
2315
+ style: Y({
2316
+ top: z.analysis && z.analysis.result ? "24px" : "4px"
2317
+ }),
2318
+ annotation: n(it),
2319
+ annotations: n(yt),
2320
+ onSelect: n(wt)
2321
+ }, null, 8, ["expand", "style", "annotation", "annotations", "onSelect"])) : R("", !0),
2322
+ C(n(et), {
2323
+ modelValue: y.value,
2324
+ "onUpdate:modelValue": S[3] || (S[3] = (q) => y.value = q),
2325
+ "append-to-body": !0,
2326
+ title: n(v)("图像信息"),
2327
+ width: "700px",
2328
+ top: "5vh"
2329
+ }, {
2330
+ default: L(() => [
2331
+ C(n(ft), { "label-position": "left" }, {
2332
+ default: L(() => [
2333
+ C(n(de), {
2334
+ class: "flex",
2335
+ "label-width": "0px"
2336
+ }, {
2337
+ default: L(() => [
2338
+ k("div", wn, [
2339
+ k("img", {
2340
+ src: g.value.labelImg,
2341
+ style: { height: "180px" }
2342
+ }, null, 8, _n),
2343
+ k("img", {
2344
+ src: g.value.previewImg,
2345
+ style: { height: "180px" },
2346
+ class: "flex-1"
2347
+ }, null, 8, bn)
2348
+ ])
2349
+ ]),
2350
+ _: 1
2351
+ }),
2352
+ C(n(de), {
2353
+ label: n(v)("文件名")
2354
+ }, {
2355
+ default: L(() => [
2356
+ k("span", kn, E(g.value.fileName), 1)
2357
+ ]),
2358
+ _: 1
2359
+ }, 8, ["label"]),
2360
+ C(n(de), {
2361
+ label: n(v)("图像像素")
2362
+ }, {
2363
+ default: L(() => [
2364
+ k("span", zn, E(g.value.width) + "Pixel - " + E(g.value.height) + "Pixel", 1)
2365
+ ]),
2366
+ _: 1
2367
+ }, 8, ["label"]),
2368
+ C(n(de), {
2369
+ label: n(v)("扫描倍率")
2370
+ }, {
2371
+ default: L(() => [
2372
+ k("span", Cn, E(g.value.scanScale), 1)
2373
+ ]),
2374
+ _: 1
2375
+ }, 8, ["label"]),
2376
+ C(n(de), {
2377
+ label: n(v)("扫描时刻")
2378
+ }, {
2379
+ default: L(() => [
2380
+ k("span", Tn, E(g.value.scanTime), 1)
2381
+ ]),
2382
+ _: 1
2383
+ }, 8, ["label"]),
2384
+ C(n(de), {
2385
+ label: n(v)("扫描时间")
2386
+ }, {
2387
+ default: L(() => [
2388
+ k("span", $n, E(g.value.scanDuration || 0) + "s", 1)
2389
+ ]),
2390
+ _: 1
2391
+ }, 8, ["label"]),
2392
+ g.value.ext ? (b(), A(n(de), {
2393
+ key: 0,
2394
+ label: n(v)("扫描设备")
2395
+ }, {
2396
+ default: L(() => [
2397
+ k("span", Ln, E(g.value.ext.machineNum || ""), 1)
2398
+ ]),
2399
+ _: 1
2400
+ }, 8, ["label"])) : R("", !0)
2401
+ ]),
2402
+ _: 1
2403
+ })
2404
+ ]),
2405
+ _: 1
2406
+ }, 8, ["modelValue", "title"]),
2407
+ C(n(et), {
2408
+ modelValue: n(Ne),
2409
+ "onUpdate:modelValue": S[4] || (S[4] = (q) => ye(Ne) ? Ne.value = q : null),
2410
+ "append-to-body": !0,
2411
+ title: n(v)("语音输入"),
2412
+ width: "500px",
2413
+ top: "5vh"
2414
+ }, {
2415
+ footer: L(() => [
2416
+ C(n(Te), { onClick: n(Zt) }, {
2417
+ default: L(() => [
2418
+ K(E(n(v)("取消")), 1)
2419
+ ]),
2420
+ _: 1
2421
+ }, 8, ["onClick"]),
2422
+ C(n(Te), {
2423
+ type: "primary",
2424
+ onClick: n(Yt)
2425
+ }, {
2426
+ default: L(() => [
2427
+ K(E(n(v)("确定")), 1)
2428
+ ]),
2429
+ _: 1
2430
+ }, 8, ["onClick"])
2431
+ ]),
2432
+ default: L(() => [
2433
+ C(n(ft), { "label-position": "left" }, {
2434
+ default: L(() => {
2435
+ var q;
2436
+ return [
2437
+ C(n(de), null, {
2438
+ default: L(() => {
2439
+ var O;
2440
+ return [
2441
+ (O = n(Fe)) != null && O.src ? (b(), x("audio", {
2442
+ key: 0,
2443
+ class: "width-100%",
2444
+ src: n(Fe).src,
2445
+ controls: "",
2446
+ preload: "auto"
2447
+ }, null, 8, xn)) : R("", !0)
2448
+ ];
2449
+ }),
2450
+ _: 1
2451
+ }),
2452
+ (q = n(Fe)) != null && q.src ? R("", !0) : (b(), A(n(de), { key: 0 }, {
2453
+ default: L(() => [
2454
+ n(N) ? (b(), A(n(Te), {
2455
+ key: 1,
2456
+ type: "danger",
2457
+ onClick: n(me)
2458
+ }, {
2459
+ default: L(() => [
2460
+ K(E(n(v)("结束录音")), 1)
2461
+ ]),
2462
+ _: 1
2463
+ }, 8, ["onClick"])) : (b(), A(n(Te), {
2464
+ key: 0,
2465
+ type: "primary",
2466
+ onClick: n(G)
2467
+ }, {
2468
+ default: L(() => [
2469
+ K(E(n(v)("开始录音")), 1)
2470
+ ]),
2471
+ _: 1
2472
+ }, 8, ["onClick"])),
2473
+ n(N) ? (b(), x("span", En, E(n(v)("录音时长")) + ":" + E(n(T)) + "s", 1)) : R("", !0)
2474
+ ]),
2475
+ _: 1
2476
+ }))
2477
+ ];
2478
+ }),
2479
+ _: 1
2480
+ })
2481
+ ]),
2482
+ _: 1
2483
+ }, 8, ["modelValue", "title"]),
2484
+ z.analysis && z.analysis.hotmap_path && z.analysis.hotmap_type !== "switch" ? (b(), x("div", {
2485
+ key: 8,
2486
+ class: "hzzt-kfb-view__hotmap",
2487
+ style: Y({ left: n(nl) + "px" })
2488
+ }, [
2489
+ C(n(xe), {
2490
+ class: "icon-caret-left",
2491
+ size: "30",
2492
+ onMousedown: n(_t)
2493
+ }, {
2494
+ default: L(() => S[6] || (S[6] = [
2495
+ k("svg", {
2496
+ xmlns: "http://www.w3.org/2000/svg",
2497
+ viewBox: "0 0 1024 1024"
2498
+ }, [
2499
+ k("path", {
2500
+ fill: "currentColor",
2501
+ d: "M672 192 288 511.936 672 832z"
2502
+ })
2503
+ ], -1)
2504
+ ])),
2505
+ _: 1,
2506
+ __: [6]
2507
+ }, 8, ["onMousedown"]),
2508
+ C(n(xe), {
2509
+ class: "icon-caret-right",
2510
+ size: "30",
2511
+ onMousedown: n(_t)
2512
+ }, {
2513
+ default: L(() => S[7] || (S[7] = [
2514
+ k("svg", {
2515
+ xmlns: "http://www.w3.org/2000/svg",
2516
+ viewBox: "0 0 1024 1024"
2517
+ }, [
2518
+ k("path", {
2519
+ fill: "currentColor",
2520
+ d: "M384 192v640l384-320.064z"
2521
+ })
2522
+ ], -1)
2523
+ ])),
2524
+ _: 1,
2525
+ __: [7]
2526
+ }, 8, ["onMousedown"])
2527
+ ], 4)) : R("", !0),
2528
+ n(V) ? (b(), x("div", Sn)) : R("", !0),
2529
+ ge(z.$slots, "default")
2530
+ ], 512);
2531
+ };
2532
+ }
2533
+ });
2534
+ function Vn(t, e) {
2535
+ var g;
2536
+ const l = Ie("default-open-ai", !!((g = t.ai) != null && g.default)), o = $(l.value), h = $(l.value), v = $([]), u = F(
2537
+ () => {
2538
+ var w, d, V, D;
2539
+ return (w = e.value) != null && w.analysis ? Object.prototype.toString.call((d = e.value) == null ? void 0 : d.analysis) === "[object Array]" ? (V = e.value) == null ? void 0 : V.analysis : [(D = e.value) == null ? void 0 : D.analysis] : [];
2540
+ }
2541
+ ), i = F(() => u.value.find((w) => (w == null ? void 0 : w.class) === "IQC")), c = F(() => !!i.value), p = F(() => u.value.find((w) => (w == null ? void 0 : w.class) !== "IQC")), y = F(() => !!p.value), s = F(() => o.value ? p.value : h.value ? i.value : void 0);
2542
+ te(() => {
2543
+ var w;
2544
+ return (w = e == null ? void 0 : e.value) == null ? void 0 : w.id;
2545
+ }, () => {
2546
+ m(), r();
2547
+ }), _e(() => {
2548
+ m(), r();
2549
+ });
2550
+ function m() {
2551
+ y.value && o.value && (h.value = !1), c.value && h.value && (o.value = !1);
2552
+ }
2553
+ function r() {
2554
+ var w;
2555
+ (w = e.value) != null && w.id && u.value.length ? y.value && o.value || c.value && h.value ? a() : v.value = [] : v.value = [];
2556
+ }
2557
+ function a() {
2558
+ t.ai.handle(e.value, s.value).then((w) => {
2559
+ v.value = w;
2560
+ }).catch(() => {
2561
+ v.value = [];
2562
+ });
2563
+ }
2564
+ function f() {
2565
+ h.value = !1, r();
2566
+ }
2567
+ function _() {
2568
+ o.value = !1, r();
2569
+ }
2570
+ return {
2571
+ hasAi: y,
2572
+ hasIqc: c,
2573
+ currentAnalysis: s,
2574
+ aiLabelList: v,
2575
+ enableAi: o,
2576
+ enableIqc: h,
2577
+ toggleIqc: _,
2578
+ toggleAi: f
2579
+ };
2580
+ }
2581
+ const In = ["src", "fit"], Mn = ["src", "fit"], Je = /* @__PURE__ */ ae({
2582
+ name: "KfbImage",
2583
+ __name: "KfbImage",
2584
+ props: {
2585
+ src: {
2586
+ type: String,
2587
+ required: !0,
2588
+ default: ""
2589
+ },
2590
+ fit: {
2591
+ type: String,
2592
+ validator: (t) => ["", "contain", "cover", "fill", "none", "scale-down"].includes(t),
2593
+ default: ""
2594
+ },
2595
+ retryTimes: {
2596
+ type: Number,
2597
+ default: 0
2598
+ },
2599
+ load: {
2600
+ type: Function,
2601
+ default: () => ({})
2602
+ },
2603
+ hover: {
2604
+ type: Boolean,
2605
+ default: !1
2606
+ }
2607
+ },
2608
+ setup(t) {
2609
+ const e = t;
2610
+ let l = 0;
2611
+ const o = $(!1), h = ht({
2612
+ x: 0,
2613
+ y: 0
2614
+ }), v = F(() => ({
2615
+ top: `${h.y + 10}px`,
2616
+ left: `${h.x}px`,
2617
+ transform: "translateY(-50%)",
2618
+ width: `${4 * 300 / 3}px`,
2619
+ height: "300px",
2620
+ background: "rgba(0,0,0,0.8)",
2621
+ zIndex: "10000"
2622
+ }));
2623
+ function u(y) {
2624
+ const s = y.target;
2625
+ l < e.retryTimes ? (s.src = e.src, l++) : s.src = ot;
2626
+ }
2627
+ function i(y) {
2628
+ if (!e.hover) return;
2629
+ if (y.target) {
2630
+ const f = y.target, _ = f.tagName;
2631
+ let g = "";
2632
+ if (f.tagName === "IMG" ? g = f.src || "" : _ === "DIV" && (g = f.children[0].src || ""), g.indexOf(ot) > -1)
2633
+ return;
2634
+ }
2635
+ const { x: s, y: m } = c(y), r = 4 * 300 / 3, a = 300;
2636
+ h.x = Math.min(Math.max(s, r / 2), window.innerWidth - r / 2), h.y = Math.min(Math.max(m, a / 2), window.innerHeight - a / 2), o.value = !0;
2637
+ }
2638
+ function c(y) {
2639
+ const s = y.target, m = y.offsetX, r = y.offsetY, a = s.clientWidth, f = s.clientHeight;
2640
+ return {
2641
+ x: y.clientX + a - m,
2642
+ y: y.clientY - r + f / 2
2643
+ };
2644
+ }
2645
+ function p() {
2646
+ o.value = !1;
2647
+ }
2648
+ return (y, s) => (b(), x("div", {
2649
+ class: "relative",
2650
+ onMouseenter: i,
2651
+ onMouseleave: p
2652
+ }, [
2653
+ k("img", {
2654
+ src: t.src,
2655
+ fit: t.fit,
2656
+ onError: u,
2657
+ style: {
2658
+ height: "100%",
2659
+ width: "100%"
2660
+ }
2661
+ }, null, 40, In),
2662
+ (b(), A(Xe, { to: "body" }, [
2663
+ o.value ? (b(), x("div", {
2664
+ key: 0,
2665
+ class: "fixed hzzt-kfb-img-triangle-left",
2666
+ style: Y(v.value)
2667
+ }, [
2668
+ k("img", {
2669
+ src: t.src,
2670
+ fit: t.fit,
2671
+ style: {
2672
+ objectFit: "contain",
2673
+ height: "100%",
2674
+ width: "100%"
2675
+ },
2676
+ onMouseenter: s[0] || (s[0] = () => {
2677
+ o.value = !0;
2678
+ }),
2679
+ onMouseleave: p
2680
+ }, null, 40, Mn)
2681
+ ], 4)) : R("", !0)
2682
+ ]))
2683
+ ], 32));
2684
+ }
2685
+ }), Hn = {}, Pn = {
2686
+ xmlns: "http://www.w3.org/2000/svg",
2687
+ viewBox: "0 0 1024 1024"
2688
+ };
2689
+ function An(t, e) {
2690
+ return b(), x("svg", Pn, e[0] || (e[0] = [
2691
+ k("path", {
2692
+ fill: "currentColor",
2693
+ d: "M160 448a32 32 0 0 1-32-32V160.064a32 32 0 0 1 32-32h256a32 32 0 0 1 32 32V416a32 32 0 0 1-32 32zm448 0a32 32 0 0 1-32-32V160.064a32 32 0 0 1 32-32h255.936a32 32 0 0 1 32 32V416a32 32 0 0 1-32 32zM160 896a32 32 0 0 1-32-32V608a32 32 0 0 1 32-32h256a32 32 0 0 1 32 32v256a32 32 0 0 1-32 32zm448 0a32 32 0 0 1-32-32V608a32 32 0 0 1 32-32h255.936a32 32 0 0 1 32 32v256a32 32 0 0 1-32 32z"
2694
+ }, null, -1)
2695
+ ]));
2696
+ }
2697
+ const Rn = /* @__PURE__ */ ze(Hn, [["render", An]]), Nn = {}, Fn = {
2698
+ width: "16",
2699
+ height: "16",
2700
+ viewBox: "0 0 16 16",
2701
+ fill: "none",
2702
+ xmlns: "http://www.w3.org/2000/svg"
2703
+ };
2704
+ function Dn(t, e) {
2705
+ return b(), x("svg", Fn, e[0] || (e[0] = [
2706
+ k("g", { id: "Frame" }, [
2707
+ k("path", {
2708
+ id: "Vector",
2709
+ d: "M5.33333 2.66659H14V3.99992H5.33333V2.66659ZM2 2.33325H4V4.33325H2V2.33325ZM2 6.99992H4V8.99992H2V6.99992ZM2 11.6666H4V13.6666H2V11.6666ZM5.33333 7.33325H14V8.66659H5.33333V7.33325ZM5.33333 11.9999H14V13.3333H5.33333V11.9999Z",
2710
+ fill: "currentColor",
2711
+ "fill-opacity": "0.9"
2712
+ })
2713
+ ], -1)
2714
+ ]));
2715
+ }
2716
+ const Bn = /* @__PURE__ */ ze(Nn, [["render", Dn]]), On = { class: "hzzt-kfb-slides" }, Un = { class: "hzzt-kfb-slides__row" }, jn = { class: "hzzt-kfb-slides__top" }, Kn = { class: "text-primary" }, Wn = { class: "flex align-items-center" }, Gn = { key: 0 }, qn = ["data-index", "onClick"], Zn = { class: "hzzt-kfb-slides__gallery" }, Yn = ["onClick"], Jn = {
2717
+ key: 0,
2718
+ class: "hzzt-kfb-slides__read"
2719
+ }, Xn = ["onClick"], Qn = {
2720
+ key: 1,
2721
+ class: "flex column"
2722
+ }, ea = { class: "hzzt-kfb-slides__header" }, ta = { class: "w-30%" }, la = { class: "w-40%" }, oa = { class: "w-20%" }, na = ["data-index", "onClick"], aa = { class: "w-30% flex" }, sa = { class: "hzzt-kfb-slides__gallery" }, ia = {
2723
+ key: 0,
2724
+ class: "hzzt-kfb-slides__read"
2725
+ }, ra = { class: "w-40% flex" }, ua = ["onClick"], ca = ["onClick"], da = {
2726
+ key: 0,
2727
+ class: "flex column py-2"
2728
+ }, va = { class: "flex align-items-center justify-content-center" }, fa = { class: "margin-r-1" }, ma = {
2729
+ key: 0,
2730
+ class: "margin-r-1 margin-l-2"
2731
+ }, pa = /* @__PURE__ */ ae({
2732
+ __name: "KfbSlideList",
2733
+ props: {
2734
+ slides: {}
2735
+ },
2736
+ emits: ["select", "tool"],
2737
+ setup(t, { expose: e, emit: l }) {
2738
+ const o = t, h = l, v = J("file-index", {
2739
+ value: 0
2740
+ }), u = J("divide", {
2741
+ value: !1
2742
+ }), i = J("sync", {
2743
+ value: !1
2744
+ }), c = $(!1), p = $(), y = F(() => o.slides.filter(({ read: _ }) => _)), s = F(() => o.slides.filter(({ check: _ }) => _)), { t: m } = fe();
2745
+ function r(_) {
2746
+ v.value = _, h("select", _);
2747
+ }
2748
+ function a(_) {
2749
+ _.check = !_.check;
2750
+ }
2751
+ function f(_) {
2752
+ var w, d, V;
2753
+ const g = ((V = (d = (w = p.value.querySelector('[data-index="0"]')) == null ? void 0 : w.getBoundingClientRect) == null ? void 0 : d.call(w)) == null ? void 0 : V.y) || 0;
2754
+ p.value.scrollTop = p.value.querySelector(`[data-index="${_}"]`).getBoundingClientRect().y - g;
2755
+ }
2756
+ return e({
2757
+ jumpToSlide: f
2758
+ }), (_, g) => (b(), x("div", On, [
2759
+ k("div", Un, [
2760
+ k("div", jn, [
2761
+ k("span", null, [
2762
+ g[4] || (g[4] = K("已读:")),
2763
+ k("span", Kn, E(y.value.length), 1),
2764
+ K("/" + E(_.slides.length), 1)
2765
+ ]),
2766
+ k("div", Wn, [
2767
+ C(n(xe), {
2768
+ class: "margin-r-2 pointer",
2769
+ size: "16",
2770
+ color: c.value ? "#999" : "#000",
2771
+ onClick: g[0] || (g[0] = (w) => c.value = !c.value)
2772
+ }, {
2773
+ default: L(() => [
2774
+ C(Rn)
2775
+ ]),
2776
+ _: 1
2777
+ }, 8, ["color"]),
2778
+ C(n(xe), {
2779
+ class: "pointer",
2780
+ name: "cus-list",
2781
+ size: "16",
2782
+ color: c.value ? "#000" : "#999",
2783
+ onClick: g[1] || (g[1] = (w) => c.value = !c.value)
2784
+ }, {
2785
+ default: L(() => [
2786
+ C(Bn)
2787
+ ]),
2788
+ _: 1
2789
+ }, 8, ["color"])
2790
+ ])
2791
+ ]),
2792
+ k("div", {
2793
+ class: "flex-1 overflow-auto",
2794
+ style: { width: "100%" },
2795
+ ref_key: "slidesRef",
2796
+ ref: p
2797
+ }, [
2798
+ c.value ? (b(), x("ul", Qn, [
2799
+ k("li", ea, [
2800
+ g[5] || (g[5] = k("div", { class: "w-10%" }, null, -1)),
2801
+ k("div", ta, E(n(m)("缩略图")), 1),
2802
+ k("div", la, E(n(m)("切片名")), 1),
2803
+ k("div", oa, E(n(m)("评分")), 1)
2804
+ ]),
2805
+ (b(!0), x(re, null, ue(_.slides, (w, d) => (b(), x("li", {
2806
+ key: d,
2807
+ "data-index": d,
2808
+ class: "flex align-items-center overflow-hidden",
2809
+ style: Y({
2810
+ backgroundColor: n(v) === d ? "rgba(6, 85, 195, 0.1)" : "#fff"
2811
+ }),
2812
+ onClick: (V) => r(d)
2813
+ }, [
2814
+ k("div", {
2815
+ class: "w-10% text-center",
2816
+ onClick: Ge(() => {
2817
+ }, ["stop"])
2818
+ }, [
2819
+ C(n(tt), {
2820
+ modelValue: w.check,
2821
+ "onUpdate:modelValue": (V) => w.check = V,
2822
+ style: { width: "14px", height: "16px" }
2823
+ }, null, 8, ["modelValue", "onUpdate:modelValue"])
2824
+ ]),
2825
+ k("div", aa, [
2826
+ k("div", sa, [
2827
+ C(Je, {
2828
+ style: Y([{ transform: `rotate(${w.angle}deg)` }, { height: "45px" }]),
2829
+ "retry-times": 1,
2830
+ src: w.labelImg,
2831
+ fit: "cover",
2832
+ class: "flex-1"
2833
+ }, null, 8, ["style", "src"]),
2834
+ C(Je, {
2835
+ "retry-times": 1,
2836
+ fit: "cover",
2837
+ src: w.previewImg,
2838
+ style: { height: "45px" },
2839
+ class: "flex-1"
2840
+ }, null, 8, ["src"]),
2841
+ w.read ? R("", !0) : (b(), x("div", ia, E(n(m)("未读")), 1))
2842
+ ])
2843
+ ]),
2844
+ k("div", ra, [
2845
+ C(n(Rt), {
2846
+ effect: "dark",
2847
+ placement: "bottom",
2848
+ content: `${w.name}`
2849
+ }, {
2850
+ default: L(() => [
2851
+ k("span", {
2852
+ style: { "line-height": "16px" },
2853
+ class: "margin-l-1 ellipsis hzzt-kfb-slides__text",
2854
+ dir: "rtl",
2855
+ onClick: Ge((V) => a(w), ["stop"])
2856
+ }, E(w.name), 9, ua)
2857
+ ]),
2858
+ _: 2
2859
+ }, 1032, ["content"])
2860
+ ]),
2861
+ k("div", {
2862
+ class: "w-20% flex text-center pointer",
2863
+ style: Y({
2864
+ color: w.gradeColor
2865
+ }),
2866
+ onClick: (V) => h("tool", "grade", w)
2867
+ }, E(w.grade), 13, ca)
2868
+ ], 12, na))), 128))
2869
+ ])) : (b(), x("div", Gn, [
2870
+ (b(!0), x(re, null, ue(_.slides, (w, d) => (b(), x("div", {
2871
+ key: d,
2872
+ class: Le(["hzzt-kfb-slides__box", n(v) === d ? "hzzt-kfb-slides__box--active" : ""]),
2873
+ "data-index": d,
2874
+ onClick: (V) => r(d)
2875
+ }, [
2876
+ k("div", Zn, [
2877
+ C(Je, {
2878
+ style: Y({ transform: `rotate(${w.angle}deg)` }),
2879
+ "retry-times": 1,
2880
+ src: w.labelImg,
2881
+ class: "hzzt-kfb-slides__img",
2882
+ fit: "cover",
2883
+ hover: ""
2884
+ }, null, 8, ["style", "src"]),
2885
+ C(Je, {
2886
+ "retry-times": 1,
2887
+ src: w.previewImg,
2888
+ class: "flex-1 hzzt-kfb-slides__img1",
2889
+ fit: "cover"
2890
+ }, null, 8, ["src"])
2891
+ ]),
2892
+ k("div", {
2893
+ class: "flex justify-content-between align-items-center",
2894
+ onClick: Ge(() => {
2895
+ }, ["stop"])
2896
+ }, [
2897
+ C(n(tt), {
2898
+ modelValue: w.check,
2899
+ "onUpdate:modelValue": (V) => w.check = V,
2900
+ style: { width: "14px", height: "16px" }
2901
+ }, null, 8, ["modelValue", "onUpdate:modelValue"]),
2902
+ C(n(Rt), {
2903
+ effect: "dark",
2904
+ placement: "bottom",
2905
+ content: `${w.name}`
2906
+ }, {
2907
+ default: L(() => [
2908
+ k("span", {
2909
+ style: { "line-height": "16px", "text-align": "center", width: "calc(100% - 14px)" },
2910
+ class: "margin-l-1 ellipsis",
2911
+ onClick: Ge((V) => a(w), ["stop"])
2912
+ }, E(w.name), 9, Yn)
2913
+ ]),
2914
+ _: 2
2915
+ }, 1032, ["content"])
2916
+ ]),
2917
+ w.read ? R("", !0) : (b(), x("div", Jn, E(n(m)("未读")), 1)),
2918
+ w.grade ? (b(), x("div", {
2919
+ key: 1,
2920
+ class: "hzzt-kfb-slides__grade",
2921
+ style: Y({
2922
+ background: w.gradeColor
2923
+ }),
2924
+ onClick: (V) => h("tool", "grade", w)
2925
+ }, E(w.grade), 13, Xn)) : R("", !0),
2926
+ ge(_.$slots, "slide", { slide: w }, void 0, !0)
2927
+ ], 10, qn))), 128))
2928
+ ]))
2929
+ ], 512),
2930
+ s.value.length > 1 ? (b(), x("div", da, [
2931
+ k("div", va, [
2932
+ k("span", fa, E(n(m)("分屏")), 1),
2933
+ C(n(Pe), {
2934
+ modelValue: n(u),
2935
+ "onUpdate:modelValue": g[2] || (g[2] = (w) => ye(u) ? u.value = w : null)
2936
+ }, null, 8, ["modelValue"]),
2937
+ n(u) ? (b(), x("span", ma, E(n(m)("同步")), 1)) : R("", !0),
2938
+ n(u) ? (b(), A(n(Pe), {
2939
+ key: 1,
2940
+ modelValue: n(i),
2941
+ "onUpdate:modelValue": g[3] || (g[3] = (w) => ye(i) ? i.value = w : null)
2942
+ }, null, 8, ["modelValue"])) : R("", !0)
2943
+ ])
2944
+ ])) : R("", !0)
2945
+ ])
2946
+ ]));
2947
+ }
2948
+ }), ha = /* @__PURE__ */ ze(pa, [["__scopeId", "data-v-35358d3a"]]), ga = { class: "hzzt-kfb-ai overflow-hidden" }, ya = { class: "flex align-items-center margin-t-1" }, wa = { style: { color: "var(--el-color-success)" } }, _a = { class: "flex-1 flex overflow-auto wrap margin-t-1" }, ba = ["onClick"], ka = {
2949
+ key: 0,
2950
+ style: { "margin-left": "2px" }
2951
+ }, za = /* @__PURE__ */ ae({
2952
+ name: "KfbAiList",
2953
+ __name: "list",
2954
+ props: {
2955
+ data: { default: () => [] },
2956
+ analysis: {}
2957
+ },
2958
+ setup(t, { expose: e }) {
2959
+ const l = t, { t: o } = fe(), h = J("kfbViewRef"), v = $(-1), u = $(1), i = $(100), c = $(!0), p = $([]), y = F(() => l.data.filter((V) => p.value.includes(V.cls || ""))), s = F(() => y.value.slice((u.value - 1) * i.value, u.value * i.value)), m = F(() => {
2960
+ const V = /* @__PURE__ */ new Set();
2961
+ return l.data.forEach((D) => {
2962
+ const P = D.cls || "";
2963
+ P && !V.has(P) && V.add(P);
2964
+ }), Array.from(V);
2965
+ }), r = F(() => p.value.length !== 0 && p.value.length !== m.value.length), a = qt(l);
2966
+ te(() => m.value, (V) => {
2967
+ f(), p.value = [...V];
2968
+ }), _e(() => {
2969
+ p.value = [...m.value];
2970
+ });
2971
+ function f() {
2972
+ v.value = -1, u.value = 1, i.value = 100, c.value = !0;
2973
+ }
2974
+ function _(V) {
2975
+ const D = y.value.findIndex((P) => P.id === V.id);
2976
+ v.value = D, h.value.jumpToLabel(V, 5);
2977
+ }
2978
+ function g(V) {
2979
+ const D = l.data.filter((P) => P.cls === V);
2980
+ return D.length ? `(${D.length})` : "";
2981
+ }
2982
+ function w() {
2983
+ v.value = -1, c.value = p.value.length == m.value.length;
2984
+ }
2985
+ function d(V) {
2986
+ p.value = V ? [...m.value] : [], v.value = -1;
2987
+ }
2988
+ return e({
2989
+ labelList: y
2990
+ }), (V, D) => (b(), x("div", ga, [
2991
+ k("div", ya, [
2992
+ C(n(xl), {
2993
+ placement: "bottom",
2994
+ trigger: "click",
2995
+ width: "160"
2996
+ }, {
2997
+ reference: L(() => [
2998
+ C(n(Te), {
2999
+ class: "margin-r-1",
3000
+ type: "primary"
3001
+ }, {
3002
+ default: L(() => [
3003
+ K(E(n(o)("分类")) + " ", 1),
3004
+ C(ee, { name: "arrowDown" })
3005
+ ]),
3006
+ _: 1
3007
+ })
3008
+ ]),
3009
+ default: L(() => [
3010
+ k("div", null, [
3011
+ C(n(tt), {
3012
+ modelValue: c.value,
3013
+ "onUpdate:modelValue": D[0] || (D[0] = (P) => c.value = P),
3014
+ indeterminate: r.value,
3015
+ onChange: d
3016
+ }, {
3017
+ default: L(() => [
3018
+ K(E(n(o)("全选")), 1)
3019
+ ]),
3020
+ _: 1
3021
+ }, 8, ["modelValue", "indeterminate"]),
3022
+ C(n(El), {
3023
+ modelValue: p.value,
3024
+ "onUpdate:modelValue": D[1] || (D[1] = (P) => p.value = P),
3025
+ class: "flex column",
3026
+ onChange: w
3027
+ }, {
3028
+ default: L(() => [
3029
+ (b(!0), x(re, null, ue(m.value, (P) => (b(), A(n(tt), {
3030
+ key: P,
3031
+ value: P
3032
+ }, {
3033
+ default: L(() => [
3034
+ K(E(P) + " ", 1),
3035
+ k("span", wa, E(g(P)), 1)
3036
+ ]),
3037
+ _: 2
3038
+ }, 1032, ["value"]))), 128))
3039
+ ]),
3040
+ _: 1
3041
+ }, 8, ["modelValue"])
3042
+ ])
3043
+ ]),
3044
+ _: 1
3045
+ }),
3046
+ C(n(jt), {
3047
+ type: n(a).type,
3048
+ class: "margin-l-1"
3049
+ }, {
3050
+ default: L(() => [
3051
+ K(E(n(a).name), 1)
3052
+ ]),
3053
+ _: 1
3054
+ }, 8, ["type"])
3055
+ ]),
3056
+ k("div", _a, [
3057
+ (b(!0), x(re, null, ue(s.value, (P, le) => (b(), x("div", {
3058
+ key: le + (u.value - 1) * i.value,
3059
+ class: Le(`hzzt-kfb-ai__img ${v.value === le + (u.value - 1) * i.value ? "hzzt-kfb-ai__img--active" : ""}`),
3060
+ onClick: (se) => _(P)
3061
+ }, [
3062
+ C(n(Vl), {
3063
+ "retry-times": 1,
3064
+ src: P.imageUrl,
3065
+ "error-src": n(ot)
3066
+ }, null, 8, ["src", "error-src"]),
3067
+ k("div", {
3068
+ style: Y({ color: P.strokeStyle }),
3069
+ class: "ellipsis"
3070
+ }, [
3071
+ K(E(P.cls) + " ", 1),
3072
+ P.score ? (b(), x("span", ka, E(P.score), 1)) : R("", !0)
3073
+ ], 4)
3074
+ ], 10, ba))), 128))
3075
+ ]),
3076
+ C(n(Sl), {
3077
+ class: "wrap",
3078
+ "current-page": u.value,
3079
+ "onUpdate:currentPage": D[2] || (D[2] = (P) => u.value = P),
3080
+ "page-size": i.value,
3081
+ "onUpdate:pageSize": D[3] || (D[3] = (P) => i.value = P),
3082
+ "page-sizes": [100, 200, 300, 400],
3083
+ layout: "total, sizes, prev, pager, next",
3084
+ total: y.value.length
3085
+ }, null, 8, ["current-page", "page-size", "total"])
3086
+ ]));
3087
+ }
3088
+ }), Ca = { class: "hzzt-kfb-slide" }, Ta = { class: "flex flex-1 overflow-hidden" }, $a = { class: "flex flex-1" }, La = {
3089
+ key: 0,
3090
+ style: { height: "100%", width: "100%" },
3091
+ class: "flex wrap"
3092
+ }, xa = ["onClick"], pt = /* @__PURE__ */ ae({
3093
+ name: "HzztKfbSlide",
3094
+ __name: "HzztKfbSlide",
3095
+ props: /* @__PURE__ */ $e({
3096
+ menus: { default: () => [] },
3097
+ kfb: {},
3098
+ slides: { default: () => [] },
3099
+ ai: {},
3100
+ teleport: { type: Boolean, default: !1 },
3101
+ watermark: {},
3102
+ process: {},
3103
+ microscope: {},
3104
+ showList: { type: Boolean, default: !0 },
3105
+ showKfbLabel: { type: Boolean, default: !0 },
3106
+ showKeyboard: { type: Boolean, default: !1 },
3107
+ showMenuText: { type: Boolean, default: !0 },
3108
+ showWatermark: { type: Boolean, default: !1 }
3109
+ }, {
3110
+ index: {
3111
+ default: 0
3112
+ },
3113
+ indexModifiers: {}
3114
+ }),
3115
+ emits: /* @__PURE__ */ $e(["tool"], ["update:index"]),
3116
+ setup(t, { expose: e, emit: l }) {
3117
+ const o = t, h = l, v = je(t, "index"), u = F(() => o.slides[v.value]), i = F(() => o.slides.filter(({ check: T }) => T)), c = $(), p = $(), y = $(), s = $(), m = Ie("kfb-showKeyboard", o.showKeyboard), r = Ie("kfb-showKfbLabel", o.showKfbLabel), a = Ie("kfb-showWatermark", o.showWatermark), f = Ie("kfb-showMenuText", o.showMenuText), _ = $(!1), g = $(!1), { t: w } = fe(), d = F(() => {
3118
+ var T;
3119
+ if (_.value) {
3120
+ const N = i.value.findIndex(({ id: G }) => {
3121
+ var me;
3122
+ return G === ((me = u.value) == null ? void 0 : me.id);
3123
+ });
3124
+ return ((T = y.value) == null ? void 0 : T[N]) || p.value;
3125
+ } else
3126
+ return p.value;
3127
+ }), V = F(() => i.value.length <= 1 ? {
3128
+ height: "100%",
3129
+ width: "100%"
3130
+ } : i.value.length <= 2 ? {
3131
+ height: "100%",
3132
+ width: "calc((100% - 4px) / 2)"
3133
+ } : i.value.length <= 4 ? {
3134
+ height: "calc((100% - 4px) / 2)",
3135
+ width: "calc((100% - 4px) / 2)"
3136
+ } : i.value.length <= 6 ? {
3137
+ height: "calc((100% - 4px) / 2)",
3138
+ width: "calc((100% - 4px * 2) / 3)"
3139
+ } : i.value.length <= 9 ? {
3140
+ height: "calc((100% - 4px * 2) / 3)",
3141
+ width: "calc((100% - 4px * 2) / 3)"
3142
+ } : {
3143
+ height: "100%",
3144
+ width: "100%"
3145
+ });
3146
+ te(() => i.value, (T) => {
3147
+ _.value && T.length <= 1 && (_.value = !1);
3148
+ }), te(() => u.value, (T) => {
3149
+ if (T) {
3150
+ const N = T.read;
3151
+ T.read = !0, h("tool", "choose", {
3152
+ slide: T,
3153
+ read: N
3154
+ });
3155
+ }
3156
+ }), Object.entries({
3157
+ keyboard: m,
3158
+ kfbLabel: r,
3159
+ watermark: a,
3160
+ menuText: f
3161
+ }).forEach(([T, N]) => {
3162
+ te(() => N.value, (G) => {
3163
+ h("tool", T, G);
3164
+ });
3165
+ });
3166
+ const {
3167
+ hasAi: P,
3168
+ hasIqc: le,
3169
+ currentAnalysis: se,
3170
+ aiLabelList: W,
3171
+ enableAi: ie,
3172
+ enableIqc: oe,
3173
+ toggleIqc: ve,
3174
+ toggleAi: Ce
3175
+ } = Vn(o, u);
3176
+ function M(T, N) {
3177
+ T === "next" && o.slides[v.value + 1] && v.value++, T === "prev" && o.slides[v.value - 1] && v.value--, (T === "label" || T === "tool") && (r.value = N), h("tool", T, N);
3178
+ }
3179
+ function U(T) {
3180
+ var G, me;
3181
+ const N = we(j({}, o.kfb), {
3182
+ watermark: o.watermark,
3183
+ process: o.process,
3184
+ microscope: o.microscope,
3185
+ slide: T,
3186
+ aiLabelList: u.value.id === T.id ? ((G = s.value) == null ? void 0 : G.labelList) || [] : [],
3187
+ syncPosition: g.value,
3188
+ syncZoom: g.value,
3189
+ handle: void 0,
3190
+ analysis: u.value.id === T.id ? se.value : void 0
3191
+ });
3192
+ return (me = o.kfb) != null && me.handle ? o.kfb.handle(T, N) : N;
3193
+ }
3194
+ function ne(T) {
3195
+ v.value = o.slides.findIndex((N) => N.id === T.id);
3196
+ }
3197
+ function nt(T) {
3198
+ _.value && (o.slides[T].check = !0);
3199
+ }
3200
+ function at() {
3201
+ var T;
3202
+ (T = _.value ? y.value : [p.value]) == null || T.forEach((N) => {
3203
+ r.value || (N.updateGrid({
3204
+ show: r.value,
3205
+ ruler: r.value
3206
+ }), m.value = r.value), N.updateGraduation({
3207
+ show: r.value
3208
+ }), N.updateNavigator(r.value);
3209
+ });
3210
+ }
3211
+ function Ne(T) {
3212
+ v.value = T, c.value && c.value.jumpToSlide(T);
3213
+ }
3214
+ function Fe(T, N) {
3215
+ d.value && d.value.jumpToLabel(T, N);
3216
+ }
3217
+ function st(T, N) {
3218
+ d.value && d.value.jumpToPosition(T, N);
3219
+ }
3220
+ return pe("kfbViewRef", d), pe("show-keyboard", m), pe("show-kfb-label", r), pe("show-menu-text", f), pe("show-watermark", a), pe("file-index", v), pe("divide", _), pe("sync", g), e({
3221
+ divide: _,
3222
+ slide: u,
3223
+ kfbViewRef: d,
3224
+ jumpToSlide: Ne,
3225
+ jumpToLabel: Fe,
3226
+ jumpToPosition: st,
3227
+ analysis: se,
3228
+ enableAi: ie,
3229
+ enableIqc: oe,
3230
+ showAiList: F(() => {
3231
+ var T;
3232
+ return !!((T = o.ai) != null && T.enable) && W.value.length;
3233
+ })
3234
+ }), (T, N) => (b(), x("div", Ca, [
3235
+ T.menus.length ? (b(), A(lt, {
3236
+ key: 0,
3237
+ menu: T.menus,
3238
+ process: T.process,
3239
+ microscope: T.microscope,
3240
+ onTool: M
3241
+ }, {
3242
+ left: L(() => [
3243
+ ge(T.$slots, "left")
3244
+ ]),
3245
+ right: L(() => [
3246
+ C(n(Pe), {
3247
+ modelValue: n(r),
3248
+ "onUpdate:modelValue": N[0] || (N[0] = (G) => ye(r) ? r.value = G : null),
3249
+ "active-text": n(w)("隐藏标签"),
3250
+ "active-value": !1,
3251
+ "inactive-value": !0,
3252
+ class: "margin-r-2",
3253
+ onChange: at
3254
+ }, null, 8, ["modelValue", "active-text"]),
3255
+ T.ai && T.ai.enable && n(le) ? (b(), A(n(Pe), {
3256
+ key: 0,
3257
+ modelValue: n(oe),
3258
+ "onUpdate:modelValue": N[1] || (N[1] = (G) => ye(oe) ? oe.value = G : null),
3259
+ "active-text": n(w)("AI质控"),
3260
+ class: "margin-r-2",
3261
+ onChange: n(ve)
3262
+ }, null, 8, ["modelValue", "active-text", "onChange"])) : R("", !0),
3263
+ T.ai && T.ai.enable && n(P) ? (b(), A(n(Pe), {
3264
+ key: 1,
3265
+ modelValue: n(ie),
3266
+ "onUpdate:modelValue": N[2] || (N[2] = (G) => ye(ie) ? ie.value = G : null),
3267
+ "active-text": n(w)("AI分析"),
3268
+ class: "margin-r-2",
3269
+ onChange: n(Ce)
3270
+ }, null, 8, ["modelValue", "active-text", "onChange"])) : R("", !0),
3271
+ ge(T.$slots, "right")
3272
+ ]),
3273
+ _: 3
3274
+ }, 8, ["menu", "process", "microscope"])) : R("", !0),
3275
+ k("div", Ta, [
3276
+ T.showList ? (b(), A(Xe, {
3277
+ key: 0,
3278
+ defer: "",
3279
+ to: "#kfb-slide-list",
3280
+ disabled: !T.teleport
3281
+ }, [
3282
+ C(ha, {
3283
+ ref_key: "slidesRef",
3284
+ ref: c,
3285
+ style: Y(T.teleport ? "" : "width: 250px"),
3286
+ slides: T.slides,
3287
+ onSelect: nt,
3288
+ onTool: M
3289
+ }, {
3290
+ slide: L(({ slide: G }) => [
3291
+ ge(T.$slots, "list", { slide: G })
3292
+ ]),
3293
+ _: 3
3294
+ }, 8, ["style", "slides"])
3295
+ ], 8, ["disabled"])) : R("", !0),
3296
+ (b(), A(Xe, {
3297
+ defer: "",
3298
+ to: "#kfb-slide-view",
3299
+ disabled: !T.teleport
3300
+ }, [
3301
+ k("div", $a, [
3302
+ i.value.length && _.value ? (b(), x("ul", La, [
3303
+ (b(!0), x(re, null, ue(i.value, (G, me) => (b(), x("li", {
3304
+ key: me,
3305
+ style: Y(V.value),
3306
+ class: Le(u.value.id === G.id ? "hzzt-kfb-view-screen-active" : ""),
3307
+ onClick: (gt) => ne(G)
3308
+ }, [
3309
+ (b(), A(Ue, Qe({
3310
+ ref_for: !0,
3311
+ ref_key: "kfbViewRefs",
3312
+ ref: y,
3313
+ key: `kfb-${me}`
3314
+ }, { ref_for: !0 }, U(G), { onTool: M }), {
3315
+ default: L(() => [
3316
+ ge(T.$slots, "kfb", { slide: G })
3317
+ ]),
3318
+ _: 2
3319
+ }, 1040))
3320
+ ], 14, xa))), 128))
3321
+ ])) : u.value ? (b(), A(Ue, Qe({
3322
+ key: 1,
3323
+ ref_key: "kfbViewRef",
3324
+ ref: p
3325
+ }, U(u.value), { onTool: M }), {
3326
+ default: L(() => [
3327
+ ge(T.$slots, "kfb", { slide: u.value })
3328
+ ]),
3329
+ _: 3
3330
+ }, 16)) : R("", !0)
3331
+ ])
3332
+ ], 8, ["disabled"])),
3333
+ T.ai && T.ai.enable && n(W).length ? (b(), A(Xe, {
3334
+ key: 1,
3335
+ defer: "",
3336
+ to: "#kfb-slide-ai",
3337
+ disabled: !T.teleport
3338
+ }, [
3339
+ C(za, {
3340
+ style: Y(T.teleport ? "" : "width: 350px"),
3341
+ ref_key: "kfbAiRef",
3342
+ ref: s,
3343
+ data: n(W),
3344
+ slide: u.value,
3345
+ analysis: n(se)
3346
+ }, null, 8, ["style", "data", "slide", "analysis"])
3347
+ ], 8, ["disabled"])) : R("", !0),
3348
+ ge(T.$slots, "default")
3349
+ ])
3350
+ ]));
3351
+ }
3352
+ });
3353
+ pt.name = "HzztKfbSlide";
3354
+ Ue.name = "HzztKfbView";
3355
+ lt.name = "HzztKfbToolbox";
3356
+ const Ea = (t, e) => {
3357
+ t.use(Il, e == null ? void 0 : e.i18n), t.component(pt.name, pt), t.component(Ue.name, Ue), t.component(lt.name, lt);
3358
+ }, Pa = {
3359
+ install: Ea
3360
+ };
3361
+ export {
3362
+ Gt as D,
3363
+ Kt as I,
3364
+ ze as _,
3365
+ ee as a,
3366
+ mt as b,
3367
+ pt as c,
3368
+ Ue as d,
3369
+ lt as e,
3370
+ Pa as i,
3371
+ fe as u
3372
+ };