hzzt-kfb-slide 0.0.5 → 0.0.7

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 (179) hide show
  1. package/dist/{dist/components/annotateCPG0T3zR.js → components/annotate2o-1dfLI.js} +1 -1
  2. package/dist/components/annotateAI-JWSH6.js +1 -0
  3. package/dist/{dist/components/annotateBZhYifBy.js → components/annotateC9P_HUni.js} +1 -1
  4. package/dist/components/annotateCvQBDtIU.js +123 -0
  5. package/dist/{dist/components/arrowBJ1_uQ_E.js → components/arrowBciNhKeC.js} +1 -1
  6. package/dist/{dist/components/arrowDownNi-pK4NR.js → components/arrowDownCQ4SyfeE.js} +1 -1
  7. package/dist/{dist/components/arrowDownUoENEig7.js → components/arrowDownClJawdrb.js} +1 -1
  8. package/dist/{dist/components/arrowLeftBjlKltMm.js → components/arrowLeftBfE-rUOd.js} +1 -1
  9. package/dist/{dist/components/arrowLeftDNerwLPi.js → components/arrowLeftDXKznfa7.js} +1 -1
  10. package/dist/{dist/components/arrowRight44qqQj9S.js → components/arrowRightBFIf561u.js} +1 -1
  11. package/dist/{dist/components/arrowRightMPKmxcZ8.js → components/arrowRightDD_81Jxi.js} +1 -1
  12. package/dist/{dist/components/arrowUpDNv09R_q.js → components/arrowUpBWJ4tPxX.js} +1 -1
  13. package/dist/{dist/components/arrowUpu-KhVqDz.js → components/arrowUpCW9dIkdT.js} +1 -1
  14. package/dist/{dist/components/arrowDFlQxMKW.js → components/arrowqYc4Vwqs.js} +1 -1
  15. package/dist/{dist/components/channelDTeDAbXs.js → components/channelB-5CsDgJ.js} +1 -1
  16. package/dist/{dist/components/channelCzSNjDqs.js → components/channelDQ0dcclf.js} +1 -1
  17. package/dist/{dist/components/checkD58Lt_t9.js → components/checkDCUaoqtc.js} +1 -1
  18. package/dist/{dist/components/checkDg1XwTUE.js → components/checkDv3SyUAt.js} +1 -1
  19. package/dist/{dist/components/configFTiUKUAQ.js → components/configBG9sz92K.js} +1 -1
  20. package/dist/{dist/components/configDTj11Wdw.js → components/configD1oGPTSe.js} +1 -1
  21. package/dist/components/customBiZeClOe.js +39 -0
  22. package/dist/components/customDNmw3TmQ.js +1 -0
  23. package/dist/{dist/components/deleteBIUy0hW2.js → components/deleteAeZFc9Ps.js} +1 -1
  24. package/dist/{dist/components/deleteCeXlMQda.js → components/deletet8ykhJaO.js} +1 -1
  25. package/dist/{dist/components/dotBcz-OP0B.js → components/dotB2osXT1L.js} +1 -1
  26. package/dist/{dist/components/dotDpCmvPJC.js → components/dotBXbuJdtx.js} +1 -1
  27. package/dist/components/dotBi8Aw3pw.js +113 -0
  28. package/dist/components/dotCj7nxagF.js +1 -0
  29. package/dist/{dist/components/downloadnu9isJ53.js → components/downloadBPXmLTeR.js} +1 -1
  30. package/dist/components/downloadBsgfGz04.js +79 -0
  31. package/dist/components/downloadDqEDdAXm.js +1 -0
  32. package/dist/{dist/components/downloadBs4QK_IT.js → components/downloadpQ-y7WlA.js} +1 -1
  33. package/dist/{dist/components/flipvyz7dJPZ.js → components/flipRSac65ir.js} +1 -1
  34. package/dist/{dist/components/flipBwR2T8Rs.js → components/flipi9yEEtLG.js} +1 -1
  35. package/dist/components/fullscreenBZwo5K13.js +1 -0
  36. package/dist/{dist/components/fullscreenyNOuxxJv.js → components/fullscreenBnIlw4_E.js} +1 -1
  37. package/dist/{dist/components/fullscreenCVgGTPtD.js → components/fullscreenDS7i-f5F.js} +1 -1
  38. package/dist/components/fullscreenhc8QDZIL.js +51 -0
  39. package/dist/components/indexCbr7K6Yq.js +2843 -0
  40. package/dist/components/indexMzBpWXyM.js +4 -0
  41. package/dist/{dist/components/infoC4fRWu15.js → components/infoBNq0rH3E.js} +1 -1
  42. package/dist/{dist/components/infoCDweeRWp.js → components/infoCU8_TgkY.js} +1 -1
  43. package/dist/{dist/components/levelDjuyEKmz.js → components/levelC0LnNmSP.js} +1 -1
  44. package/dist/{dist/components/levelDjZ5vvyy.js → components/levelDYvedJFa.js} +1 -1
  45. package/dist/{dist/components/microscopeDCINdehp.js → components/microscopeBr8-XStr.js} +1 -1
  46. package/dist/{dist/components/microscopeDptxRPdj.js → components/microscopeCiYvQsyw.js} +1 -1
  47. package/dist/components/microscopeDMLPoAJp.js +132 -0
  48. package/dist/components/microscopeE9Kqv-Pu.js +1 -0
  49. package/dist/components/moveB-HST0mB.js +74 -0
  50. package/dist/{dist/components/moveB-QJFdLP.js → components/moveBASWwKjj.js} +1 -1
  51. package/dist/components/moveBu-wHLhg.js +1 -0
  52. package/dist/{dist/components/moveCNc2f0wf.js → components/moveNyavIpT3.js} +1 -1
  53. package/dist/{dist/components/nextBX5bmT1e.js → components/nextDsMto_p-.js} +1 -1
  54. package/dist/{dist/components/next-o3fIifP.js → components/nextcOKttjz3.js} +1 -1
  55. package/dist/{dist/components/prevDRvSbFTC.js → components/prevB1Bq4rF3.js} +1 -1
  56. package/dist/{dist/components/prevkbxOICn5.js → components/prevnbS-kjx3.js} +1 -1
  57. package/dist/{dist/components/processh0Wf3Q99.js → components/processBAx9XRyY.js} +1 -1
  58. package/dist/components/processBM18h6Qd.js +1 -0
  59. package/dist/{dist/components/processD06c6uax.js → components/processD9bf999H.js} +1 -1
  60. package/dist/{dist/components/processBHqsEap8.js → components/processQaCeq-7y.js} +65 -62
  61. package/dist/{dist/components/rotateCm7bVQY_.js → components/rotateANr_UwKh.js} +1 -1
  62. package/dist/{dist/components/rotateCxZ7Z2pw.js → components/rotateBseHg5iL.js} +1 -1
  63. package/dist/components/rotateC63rgVZz.js +1 -0
  64. package/dist/components/rotateDG77ULy7.js +131 -0
  65. package/dist/{dist/components/settingCzWjOOeH.js → components/settingCDSCrpW7.js} +1 -1
  66. package/dist/components/settingCrFlPK23.js +1 -0
  67. package/dist/components/settingDxud32Gv.js +147 -0
  68. package/dist/{dist/components/settinghh-xgIto.js → components/settingN7OnPn3C.js} +1 -1
  69. package/dist/{dist/components/tailorBalVOrgz.js → components/tailorCIVAqMFR.js} +1 -1
  70. package/dist/{dist/components/tailorCvZYsl2H.js → components/tailorDwORSrp6.js} +1 -1
  71. package/dist/{dist/components/useCommonDs02MG_d.js → components/useCommonBCMuQZUh.js} +1 -1
  72. package/dist/{dist/components/useCommonBBhfDvWF.js → components/useCommonDf_LQLq6.js} +1 -1
  73. package/dist/components/zoom5nzfwbaS.js +1 -0
  74. package/dist/components/zoomBUaHoVgA.js +63 -0
  75. package/dist/{dist/components/zoomInBFjk_aLI.js → components/zoomInCML6d0KQ.js} +1 -1
  76. package/dist/{dist/components/zoomIn8-tgvQFE.js → components/zoomInCQuBW71J.js} +1 -1
  77. package/dist/{dist/components/zoomOutC4Ami8gE.js → components/zoomOutBWAYvxae.js} +1 -1
  78. package/dist/{dist/components/zoomOutD3_PopeU.js → components/zoomOutDFjiTeeB.js} +1 -1
  79. package/dist/{dist/index.cjs.js → index.cjs.js} +1 -1
  80. package/dist/index.css +1 -0
  81. package/dist/{dist/index.es.js → index.es.js} +1 -1
  82. package/package.json +4 -4
  83. package/{dist/types → types}/components/KfbView/useLabel.d.ts +2 -1
  84. package/README.md +0 -5
  85. package/dist/dist/components/annotateCqAOjkGt.js +0 -132
  86. package/dist/dist/components/annotateDfW6BtgB.js +0 -1
  87. package/dist/dist/components/customLw3nDjEr.js +0 -48
  88. package/dist/dist/components/customSv562l99.js +0 -1
  89. package/dist/dist/components/dotC4Q5qfQ3.js +0 -122
  90. package/dist/dist/components/dotDO8OTl1O.js +0 -1
  91. package/dist/dist/components/downloadCyOnwVa8.js +0 -1
  92. package/dist/dist/components/downloadGCe-OpHT.js +0 -88
  93. package/dist/dist/components/fullscreenBeGbvwYS.js +0 -1
  94. package/dist/dist/components/fullscreenDvfoQFJX.js +0 -60
  95. package/dist/dist/components/indexCBVjt8NT.js +0 -4
  96. package/dist/dist/components/indexDOcglE90.js +0 -2948
  97. package/dist/dist/components/microscopeB6hcfWtD.js +0 -1
  98. package/dist/dist/components/microscopeD4o4Sywm.js +0 -129
  99. package/dist/dist/components/moveBM4KQ8bE.js +0 -83
  100. package/dist/dist/components/movemH2hKtp1.js +0 -1
  101. package/dist/dist/components/processBqhO-55V.js +0 -1
  102. package/dist/dist/components/rotateBdsvaWJ_.js +0 -140
  103. package/dist/dist/components/rotateCyw4Ggca.js +0 -1
  104. package/dist/dist/components/settingC3yidTns.js +0 -156
  105. package/dist/dist/components/settingDDEEOrtI.js +0 -1
  106. package/dist/dist/components/zoomCWKzKF3-.js +0 -1
  107. package/dist/dist/components/zoomcWHR4OY6.js +0 -72
  108. package/dist/dist/index.css +0 -1
  109. package/dist/package.json +0 -39
  110. /package/dist/{dist/components → components}/lineBIoJpzbf.js +0 -0
  111. /package/dist/{dist/components → components}/lineCzuS7Giu.js +0 -0
  112. /package/{dist/types → types}/components/KfbIcon.vue.d.ts +0 -0
  113. /package/{dist/types → types}/components/KfbImage.vue.d.ts +0 -0
  114. /package/{dist/types → types}/components/KfbSlideList.vue.d.ts +0 -0
  115. /package/{dist/types → types}/components/KfbToolConfig.vue.d.ts +0 -0
  116. /package/{dist/types → types}/components/KfbToolbox.vue.d.ts +0 -0
  117. /package/{dist/types → types}/components/KfbView/KfbChannel.vue.d.ts +0 -0
  118. /package/{dist/types → types}/components/KfbView/KfbKeyword.vue.d.ts +0 -0
  119. /package/{dist/types → types}/components/KfbView/KfbLabel.vue.d.ts +0 -0
  120. /package/{dist/types → types}/components/KfbView/KfbLevel.vue.d.ts +0 -0
  121. /package/{dist/types → types}/components/KfbView/KfbMenu.vue.d.ts +0 -0
  122. /package/{dist/types → types}/components/KfbView/KfbMicroscope.vue.d.ts +0 -0
  123. /package/{dist/types → types}/components/KfbView/index.d.ts +0 -0
  124. /package/{dist/types → types}/components/KfbView/index.vue.d.ts +0 -0
  125. /package/{dist/types → types}/components/KfbView/useDot.d.ts +0 -0
  126. /package/{dist/types → types}/components/KfbView/useHotmap.d.ts +0 -0
  127. /package/{dist/types → types}/components/KfbView/useImageProcess.d.ts +0 -0
  128. /package/{dist/types → types}/components/KfbView/useMove.d.ts +0 -0
  129. /package/{dist/types → types}/components/KfbView/usePointer.d.ts +0 -0
  130. /package/{dist/types → types}/components/KfbView/useSync.d.ts +0 -0
  131. /package/{dist/types → types}/components/KfbView/useTailor.d.ts +0 -0
  132. /package/{dist/types → types}/components/KfbView/useVoice.d.ts +0 -0
  133. /package/{dist/types → types}/components/ai/list.vue.d.ts +0 -0
  134. /package/{dist/types → types}/components/ai/useAi.d.ts +0 -0
  135. /package/{dist/types → types}/components/icon/annotate.vue.d.ts +0 -0
  136. /package/{dist/types → types}/components/icon/arrow.vue.d.ts +0 -0
  137. /package/{dist/types → types}/components/icon/arrowDown.vue.d.ts +0 -0
  138. /package/{dist/types → types}/components/icon/arrowLeft.vue.d.ts +0 -0
  139. /package/{dist/types → types}/components/icon/arrowRight.vue.d.ts +0 -0
  140. /package/{dist/types → types}/components/icon/arrowUp.vue.d.ts +0 -0
  141. /package/{dist/types → types}/components/icon/channel.vue.d.ts +0 -0
  142. /package/{dist/types → types}/components/icon/check.vue.d.ts +0 -0
  143. /package/{dist/types → types}/components/icon/config.vue.d.ts +0 -0
  144. /package/{dist/types → types}/components/icon/delete.vue.d.ts +0 -0
  145. /package/{dist/types → types}/components/icon/dot.vue.d.ts +0 -0
  146. /package/{dist/types → types}/components/icon/download.vue.d.ts +0 -0
  147. /package/{dist/types → types}/components/icon/flip.vue.d.ts +0 -0
  148. /package/{dist/types → types}/components/icon/fullscreen.vue.d.ts +0 -0
  149. /package/{dist/types → types}/components/icon/index.d.ts +0 -0
  150. /package/{dist/types → types}/components/icon/info.vue.d.ts +0 -0
  151. /package/{dist/types → types}/components/icon/level.vue.d.ts +0 -0
  152. /package/{dist/types → types}/components/icon/list.vue.d.ts +0 -0
  153. /package/{dist/types → types}/components/icon/menu.vue.d.ts +0 -0
  154. /package/{dist/types → types}/components/icon/microscope.vue.d.ts +0 -0
  155. /package/{dist/types → types}/components/icon/move.vue.d.ts +0 -0
  156. /package/{dist/types → types}/components/icon/next.vue.d.ts +0 -0
  157. /package/{dist/types → types}/components/icon/prev.vue.d.ts +0 -0
  158. /package/{dist/types → types}/components/icon/process.vue.d.ts +0 -0
  159. /package/{dist/types → types}/components/icon/rotate.vue.d.ts +0 -0
  160. /package/{dist/types → types}/components/icon/setting.vue.d.ts +0 -0
  161. /package/{dist/types → types}/components/icon/tailor.vue.d.ts +0 -0
  162. /package/{dist/types → types}/components/icon/zoomIn.vue.d.ts +0 -0
  163. /package/{dist/types → types}/components/toolbox/annotate.vue.d.ts +0 -0
  164. /package/{dist/types → types}/components/toolbox/custom.vue.d.ts +0 -0
  165. /package/{dist/types → types}/components/toolbox/dot.vue.d.ts +0 -0
  166. /package/{dist/types → types}/components/toolbox/download.vue.d.ts +0 -0
  167. /package/{dist/types → types}/components/toolbox/fullscreen.vue.d.ts +0 -0
  168. /package/{dist/types → types}/components/toolbox/instances.d.ts +0 -0
  169. /package/{dist/types → types}/components/toolbox/microscope.vue.d.ts +0 -0
  170. /package/{dist/types → types}/components/toolbox/move.vue.d.ts +0 -0
  171. /package/{dist/types → types}/components/toolbox/process.vue.d.ts +0 -0
  172. /package/{dist/types → types}/components/toolbox/rotate.vue.d.ts +0 -0
  173. /package/{dist/types → types}/components/toolbox/setting.vue.d.ts +0 -0
  174. /package/{dist/types → types}/components/toolbox/useCommon.d.ts +0 -0
  175. /package/{dist/types → types}/components/toolbox/zoom.vue.d.ts +0 -0
  176. /package/{dist/types → types}/index.d.ts +0 -0
  177. /package/{dist/types → types}/index.vue.d.ts +0 -0
  178. /package/{dist/types → types}/instances.d.ts +0 -0
  179. /package/{dist/types → types}/plugins/i18n.d.ts +0 -0
@@ -0,0 +1,2843 @@
1
+ var Rt = Object.defineProperty, Bt = Object.defineProperties;
2
+ var Nt = Object.getOwnPropertyDescriptors;
3
+ var dt = Object.getOwnPropertySymbols;
4
+ var Dt = Object.prototype.hasOwnProperty, Ut = Object.prototype.propertyIsEnumerable;
5
+ var vt = (d, e, a) => e in d ? Rt(d, e, { enumerable: !0, configurable: !0, writable: !0, value: a }) : d[e] = a, Z = (d, e) => {
6
+ for (var a in e || (e = {}))
7
+ Dt.call(e, a) && vt(d, a, e[a]);
8
+ if (dt)
9
+ for (var a of dt(e))
10
+ Ut.call(e, a) && vt(d, a, e[a]);
11
+ return d;
12
+ }, ve = (d, e) => Bt(d, Nt(e));
13
+ var Oe = (d, e, a) => new Promise((t, f) => {
14
+ var m = (l) => {
15
+ try {
16
+ c(a.next(l));
17
+ } catch (h) {
18
+ f(h);
19
+ }
20
+ }, v = (l) => {
21
+ try {
22
+ c(a.throw(l));
23
+ } catch (h) {
24
+ f(h);
25
+ }
26
+ }, c = (l) => l.done ? t(l.value) : Promise.resolve(l.value).then(m, v);
27
+ c((a = a.apply(d, e)).next());
28
+ });
29
+ import { inject as q, ref as x, markRaw as B, defineAsyncComponent as M, defineComponent as Q, createBlock as I, openBlock as g, unref as s, normalizeProps as Ft, guardReactiveProps as Kt, withCtx as C, resolveDynamicComponent as ze, useModel as Ee, computed as N, createElementBlock as $, createElementVNode as y, createVNode as b, toDisplayString as T, Fragment as oe, renderList as ne, createTextVNode as O, isRef as xe, watch as J, h as Zt, provide as re, renderSlot as ce, mergeProps as De, createCommentVNode as A, reactive as Ye, onMounted as fe, onBeforeUnmount as $e, normalizeStyle as X, mergeDefaults as Ot, withDirectives as Be, vShow as je, getCurrentInstance as jt, mergeModels as Me, normalizeClass as Ie, Teleport as Ne, withModifiers as Pe } from "vue";
30
+ import { ElIcon as ge, ElRow as Gt, ElCol as Wt, ElSwitch as ke, ElRadioGroup as ft, ElRadio as Ae, ElDialog as Ue, ElForm as We, ElFormItem as le, ElInput as Ge, ElButton as he, ElSlider as qt, ElLoading as Yt, ElTag as pt, ElCheckbox as Fe, ElTooltip as mt, ElPopover as Xt, ElCheckboxGroup as Qt, ElPagination as Jt } from "element-plus";
31
+ import { KfbView as ue, OpenSeadragon as be } from "kfb-view";
32
+ import el from "v-lazy-image";
33
+ function me() {
34
+ const d = q("i18n"), e = (a) => a;
35
+ return {
36
+ locale: d == null ? void 0 : d.locale,
37
+ t: (d == null ? void 0 : d.t) || e
38
+ };
39
+ }
40
+ const tl = {
41
+ install(d, e) {
42
+ d.provide("i18n", e == null ? void 0 : e.global);
43
+ }
44
+ }, pe = x({
45
+ annotate: B(M(() => import("./annotate2o-1dfLI.js"))),
46
+ arrow: B(M(() => import("./arrowBciNhKeC.js"))),
47
+ check: B(M(() => import("./checkDCUaoqtc.js"))),
48
+ dot: B(M(() => import("./dotB2osXT1L.js"))),
49
+ flip: B(M(() => import("./flipi9yEEtLG.js"))),
50
+ info: B(M(() => import("./infoBNq0rH3E.js"))),
51
+ microscope: B(M(() => import("./microscopeCiYvQsyw.js"))),
52
+ move: B(M(() => import("./moveNyavIpT3.js"))),
53
+ next: B(M(() => import("./nextDsMto_p-.js"))),
54
+ prev: B(M(() => import("./prevB1Bq4rF3.js"))),
55
+ process: B(M(() => import("./processBAx9XRyY.js"))),
56
+ rotate: B(M(() => import("./rotateBseHg5iL.js"))),
57
+ fullscreen: B(M(() => import("./fullscreenDS7i-f5F.js"))),
58
+ setting: B(M(() => import("./settingCDSCrpW7.js"))),
59
+ tailor: B(M(() => import("./tailorDwORSrp6.js"))),
60
+ download: B(M(() => import("./downloadpQ-y7WlA.js"))),
61
+ config: B(M(() => import("./configBG9sz92K.js"))),
62
+ arrowDown: B(M(() => import("./arrowDownCQ4SyfeE.js"))),
63
+ arrowUp: B(M(() => import("./arrowUpBWJ4tPxX.js"))),
64
+ arrowLeft: B(M(() => import("./arrowLeftBfE-rUOd.js"))),
65
+ arrowRight: B(M(() => import("./arrowRightBFIf561u.js"))),
66
+ zoomIn: B(M(() => import("./zoomInCML6d0KQ.js"))),
67
+ zoomOut: B(M(() => import("./zoomOutDFjiTeeB.js"))),
68
+ level: B(M(() => import("./levelC0LnNmSP.js"))),
69
+ channel: B(M(() => import("./channelB-5CsDgJ.js"))),
70
+ delete: B(M(() => import("./deletet8ykhJaO.js")))
71
+ }), Y = /* @__PURE__ */ Q({
72
+ __name: "KfbIcon",
73
+ props: {
74
+ name: {
75
+ type: [String, Number],
76
+ required: !0
77
+ }
78
+ },
79
+ setup(d) {
80
+ return (e, a) => (g(), I(s(ge), Ft(Kt(e.$attrs)), {
81
+ default: C(() => [
82
+ (g(), I(ze(s(pe)[d.name])))
83
+ ]),
84
+ _: 1
85
+ }, 16));
86
+ }
87
+ }), ll = { class: "hzzt-kfb-tool-config" }, ol = { class: "hzzt-kfb-tool-config__title margin-b-2" }, nl = { class: "hzzt-kfb-tool-config__block flex align-items-center" }, al = { class: "hzzt-kfb-tool-config__icon flex align-items-center justify-content-center" }, sl = { class: "margin-l-4 flex-1" }, il = { class: "hzzt-kfb-tool-config__title" }, rl = { class: "flex align-items-center" }, ul = {
88
+ class: "margin-t-2 margin-b-2",
89
+ style: { width: "160px" }
90
+ }, cl = { class: "flex align-items-center" }, dl = {
91
+ class: "margin-t-2 margin-b-2",
92
+ style: { width: "160px" }
93
+ }, vl = /* @__PURE__ */ Q({
94
+ name: "KfbToolConfig",
95
+ __name: "KfbToolConfig",
96
+ props: {
97
+ menus: {
98
+ default: () => []
99
+ },
100
+ menusModifiers: {},
101
+ showText: { type: Boolean },
102
+ showTextModifiers: {}
103
+ },
104
+ emits: ["update:menus", "update:showText"],
105
+ setup(d) {
106
+ const e = Ee(d, "menus"), a = Ee(d, "showText"), { t } = me(), f = N(() => e.value.filter((h) => h.name !== "line" && h.name !== "config" && h.name !== "zoom")), m = {
107
+ fullscreen: t("全屏"),
108
+ next: t("上一张"),
109
+ prev: t("上一张"),
110
+ flip: t("镜像翻转"),
111
+ setting: t("工具"),
112
+ rotate: t("旋转"),
113
+ dot: t("打点"),
114
+ annotate: t("标注"),
115
+ tailor: t("截图"),
116
+ process: t("图像处理"),
117
+ microscope: t("镜下"),
118
+ move: t("快速移动"),
119
+ info: t("信息"),
120
+ download: t("下载")
121
+ }, v = q("show-keyboard", x(!1));
122
+ function c(h) {
123
+ return h in m;
124
+ }
125
+ function l(h) {
126
+ var p;
127
+ return ((p = h.props) == null ? void 0 : p.text) || (c(h.name) ? m[h.name] : "");
128
+ }
129
+ return (h, p) => (g(), $("div", ll, [
130
+ y("h3", ol, T(s(t)("显示管理")), 1),
131
+ b(s(Gt), { gutter: 10 }, {
132
+ default: C(() => [
133
+ (g(!0), $(oe, null, ne(f.value, (n) => (g(), I(s(Wt), {
134
+ key: n.name,
135
+ span: 8
136
+ }, {
137
+ default: C(() => {
138
+ var i, r;
139
+ return [
140
+ y("div", nl, [
141
+ y("div", al, [
142
+ (i = n.props) != null && i.component ? (g(), I(ze((r = n.props) == null ? void 0 : r.component), {
143
+ key: 1,
144
+ size: 24
145
+ })) : (g(), I(Y, {
146
+ key: 0,
147
+ size: 24,
148
+ name: n.name
149
+ }, null, 8, ["name"]))
150
+ ]),
151
+ y("p", sl, T(l(n)), 1),
152
+ b(s(ke), {
153
+ modelValue: n.show,
154
+ "onUpdate:modelValue": (u) => n.show = u,
155
+ "active-text": "",
156
+ "inactive-text": ""
157
+ }, null, 8, ["modelValue", "onUpdate:modelValue"])
158
+ ])
159
+ ];
160
+ }),
161
+ _: 2
162
+ }, 1024))), 128))
163
+ ]),
164
+ _: 1
165
+ }),
166
+ y("div", null, [
167
+ y("h3", il, T(s(t)("其他设置")), 1),
168
+ y("div", rl, [
169
+ y("p", ul, T(s(t)("工具列表显示切换")), 1),
170
+ b(s(ft), {
171
+ modelValue: a.value,
172
+ "onUpdate:modelValue": p[0] || (p[0] = (n) => a.value = n)
173
+ }, {
174
+ default: C(() => [
175
+ b(s(Ae), { value: !0 }, {
176
+ default: C(() => [
177
+ O(T(s(t)("显示工具名称")), 1)
178
+ ]),
179
+ _: 1
180
+ }),
181
+ b(s(Ae), { value: !1 }, {
182
+ default: C(() => [
183
+ O(T(s(t)("隐藏工具名称")), 1)
184
+ ]),
185
+ _: 1
186
+ })
187
+ ]),
188
+ _: 1
189
+ }, 8, ["modelValue"])
190
+ ]),
191
+ y("div", cl, [
192
+ y("p", dl, T(s(t)("小键盘显示切换")), 1),
193
+ b(s(ft), {
194
+ modelValue: s(v),
195
+ "onUpdate:modelValue": p[1] || (p[1] = (n) => xe(v) ? v.value = n : null)
196
+ }, {
197
+ default: C(() => [
198
+ b(s(Ae), { value: !0 }, {
199
+ default: C(() => [
200
+ O(T(s(t)("显示小键盘")), 1)
201
+ ]),
202
+ _: 1
203
+ }),
204
+ b(s(Ae), { value: !1 }, {
205
+ default: C(() => [
206
+ O(T(s(t)("隐藏小键盘")), 1)
207
+ ]),
208
+ _: 1
209
+ })
210
+ ]),
211
+ _: 1
212
+ }, 8, ["modelValue"])
213
+ ])
214
+ ])
215
+ ]));
216
+ }
217
+ }), fl = { class: "hzzt-kfb-toolbox" }, ml = { class: "hzzt-kfb-toolbox__component" }, He = /* @__PURE__ */ Q({
218
+ name: "KfbToolbox",
219
+ __name: "KfbToolbox",
220
+ props: {
221
+ menu: {},
222
+ process: {},
223
+ microscope: {},
224
+ showMenuText: { type: Boolean }
225
+ },
226
+ emits: ["tool"],
227
+ setup(d, { emit: e }) {
228
+ const a = d, t = e, { t: f } = me(), m = {
229
+ prev: f("上一张"),
230
+ next: f("下一张"),
231
+ config: f("配置"),
232
+ info: f("信息"),
233
+ flip: f("镜像"),
234
+ tailor: f("截图")
235
+ }, v = q("kfbViewRef"), c = x(!1), l = x(a.showMenuText), h = x(i(a.menu)), p = {
236
+ fullscreen: M(() => import("./fullscreenhc8QDZIL.js")),
237
+ line: M(() => import("./lineBIoJpzbf.js")),
238
+ setting: M(() => import("./settingDxud32Gv.js")),
239
+ rotate: M(() => import("./rotateDG77ULy7.js")),
240
+ dot: M(() => import("./dotBi8Aw3pw.js")),
241
+ annotate: M(() => import("./annotateCvQBDtIU.js")),
242
+ process: M(() => import("./processQaCeq-7y.js")),
243
+ microscope: M(() => import("./microscopeDMLPoAJp.js")),
244
+ move: M(() => import("./moveB-HST0mB.js")),
245
+ custom: M(() => import("./customBiZeClOe.js")),
246
+ zoom: M(() => import("./zoomBUaHoVgA.js")),
247
+ download: M(() => import("./downloadBsgfGz04.js"))
248
+ }, n = N(() => h.value.filter((u) => u.show !== !1).map((u) => ({
249
+ component: p[u.name],
250
+ props: u.props,
251
+ slots: u.slots
252
+ })));
253
+ J(() => a.menu, (u) => {
254
+ h.value = i(u);
255
+ });
256
+ function i(u) {
257
+ return u.map((o) => {
258
+ const w = typeof o == "string" ? o : o.name;
259
+ return m[w] ? {
260
+ name: "custom",
261
+ show: typeof o == "string" ? !0 : o.show !== !1,
262
+ props: ve(Z({
263
+ text: m[w]
264
+ }, typeof o == "string" ? {} : o.props), {
265
+ name: w,
266
+ component: Zt(Y, {
267
+ name: w
268
+ })
269
+ })
270
+ } : w === "process" ? {
271
+ name: w,
272
+ props: typeof o == "string" ? {
273
+ process: a.process
274
+ } : Z({
275
+ process: a.process
276
+ }, o.props),
277
+ slots: typeof o == "string" ? void 0 : o.slots,
278
+ show: typeof o == "string" ? !0 : o.show !== !1
279
+ } : w === "microscope" ? {
280
+ name: w,
281
+ props: typeof o == "string" ? {
282
+ process: a.process
283
+ } : Z({
284
+ microscope: a.microscope
285
+ }, o.props),
286
+ slots: typeof o == "string" ? void 0 : o.slots,
287
+ show: typeof o == "string" ? !0 : o.show !== !1
288
+ } : {
289
+ name: w,
290
+ props: typeof o == "string" ? {} : o.props,
291
+ slots: typeof o == "string" ? void 0 : o.slots,
292
+ show: typeof o == "string" ? !0 : o.show !== !1
293
+ };
294
+ });
295
+ }
296
+ function r(u, o) {
297
+ const w = {
298
+ annotate: () => v.value.startDraw(o),
299
+ tailor: () => v.value.shotScreen(o),
300
+ process: () => v.value.forceRedraw(o),
301
+ microscope: () => v.value.scopeChange(o),
302
+ move: () => v.value.fastMove(o),
303
+ endDraw: () => v.value.endDraw(),
304
+ info: () => v.value.info(),
305
+ zoom: () => v.value.zoomTo(o),
306
+ flip: () => v.value.toggleFlip(o),
307
+ config: () => c.value = !0,
308
+ grid: () => v.value.updateGrid(o),
309
+ ruler: () => v.value.updateGrid(o),
310
+ graduation: () => v.value.updateGraduation(o),
311
+ navigator: () => v.value.updateNavigator(o),
312
+ tool: () => {
313
+ v.value.updateGrid({
314
+ show: o
315
+ }), v.value.updateGraduation({
316
+ show: o
317
+ }), v.value.updateGrid({
318
+ ruler: o
319
+ }), v.value.updateNavigator(o);
320
+ }
321
+ };
322
+ w[u] ? w[u]() : t("tool", u, o);
323
+ }
324
+ return re("show-text", l), (u, o) => (g(), $("div", fl, [
325
+ ce(u.$slots, "left"),
326
+ y("div", ml, [
327
+ (g(!0), $(oe, null, ne(n.value, (w, _) => (g(), I(ze(w.component), De({ ref_for: !0 }, w.props, {
328
+ key: _,
329
+ onTool: r
330
+ }), {
331
+ default: C(() => [
332
+ w.slots ? (g(!0), $(oe, { key: 0 }, ne(w.slots, (S) => (g(), I(ze(S)))), 256)) : A("", !0)
333
+ ]),
334
+ _: 2
335
+ }, 1040))), 128))
336
+ ]),
337
+ ce(u.$slots, "right"),
338
+ b(s(Ue), {
339
+ modelValue: c.value,
340
+ "onUpdate:modelValue": o[2] || (o[2] = (w) => c.value = w),
341
+ width: "800px",
342
+ title: s(f)("阅片工具设置中心")
343
+ }, {
344
+ default: C(() => [
345
+ b(vl, {
346
+ menus: h.value,
347
+ "onUpdate:menus": o[0] || (o[0] = (w) => h.value = w),
348
+ showText: l.value,
349
+ "onUpdate:showText": o[1] || (o[1] = (w) => l.value = w)
350
+ }, null, 8, ["menus", "showText"])
351
+ ]),
352
+ _: 1
353
+ }, 8, ["modelValue", "title"])
354
+ ]));
355
+ }
356
+ }), Xe = "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", qe = {
357
+ shape: "50%",
358
+ width: 0.3,
359
+ color: "#FA0404",
360
+ borderWidth: 5
361
+ }, ht = {
362
+ r: 0,
363
+ g: 0,
364
+ b: 0,
365
+ c: 0,
366
+ s: 0,
367
+ l: 0,
368
+ ga: 1
369
+ };
370
+ function pl(d) {
371
+ const e = Ye(Z(Z({}, ht), d.process));
372
+ J(() => d.process, (m) => {
373
+ f(m);
374
+ });
375
+ const a = N(() => {
376
+ const m = [
377
+ 1 + e.r + e.l + 0.5 * e.c,
378
+ 0,
379
+ 0,
380
+ 0,
381
+ -0.25 * e.c
382
+ ], v = [
383
+ 0,
384
+ 1 + e.g + e.l + 0.5 * e.c,
385
+ 0,
386
+ 0,
387
+ -0.25 * e.c
388
+ ], c = [
389
+ 0,
390
+ 0,
391
+ 1 + e.b + e.l + 0.5 * e.c,
392
+ 0,
393
+ -0.25 * e.c
394
+ ], l = [0, 0, 0, 1, 0];
395
+ return `${m.join(" ")}
396
+ ${v.join(" ")}
397
+ ${c.join(" ")}
398
+ ${l.join(" ")}`;
399
+ }), t = N(() => String(1 + e.s));
400
+ function f(m) {
401
+ m && Object.assign(e, m);
402
+ }
403
+ return {
404
+ imageProcess: e,
405
+ matrixValues: a,
406
+ saturateValues: t,
407
+ forceRedraw: f
408
+ };
409
+ }
410
+ function hl(d, e) {
411
+ function a() {
412
+ e.value.$on(ue.events.EVENT_TAILORING_SCREENSHOT, t);
413
+ }
414
+ function t({ base64: v, region: c }) {
415
+ if (window.ClipboardItem && (navigator != null && navigator.clipboard)) {
416
+ const l = f(v, "image/png");
417
+ navigator.clipboard.write([
418
+ new window.ClipboardItem({
419
+ [l.type]: l
420
+ })
421
+ ]);
422
+ }
423
+ d("tool", "screen-shot", { base64: v, region: c });
424
+ }
425
+ function f(v, c) {
426
+ var i, r;
427
+ const l = v.split(",");
428
+ (r = (i = l[0]) == null ? void 0 : i.match(/:(.*?);/)) == null || r[1];
429
+ const h = atob(l == null ? void 0 : l[1]);
430
+ let p = h.length;
431
+ const n = new Uint8Array(p);
432
+ for (; p--; )
433
+ n[p] = h.charCodeAt(p);
434
+ return new Blob([n], { type: c });
435
+ }
436
+ function m(v) {
437
+ const { width: c, height: l } = e.value.$options;
438
+ v ? c > l ? e.value.tailoring.init(
439
+ {
440
+ left: (c - l) / 2,
441
+ top: 0,
442
+ height: l,
443
+ width: l,
444
+ now: !0
445
+ }
446
+ ) : e.value.tailoring.init(
447
+ {
448
+ left: 0,
449
+ top: (l - c) / 2,
450
+ height: c,
451
+ width: c,
452
+ now: !0
453
+ }
454
+ ) : e.value.tailoring.init(
455
+ {
456
+ left: c / 2 - 100,
457
+ top: l / 2 - 100,
458
+ height: 200,
459
+ width: 200,
460
+ color: "#ff0000"
461
+ }
462
+ );
463
+ }
464
+ return {
465
+ tailorEvent: a,
466
+ shotScreen: m
467
+ };
468
+ }
469
+ const gl = "data:image/svg+xml,%3csvg%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='200'%20height='200'%3e%3cdefs%3e%3cstyle%20type='text/css'%3e@font-face%20{%20font-family:%20feedback-iconfont;%20src:%20url('//at.alicdn.com/t/font_1031158_u69w8yhxdu.woff2?t=1630033759944')%20format('woff2'),%20url('//at.alicdn.com/t/font_1031158_u69w8yhxdu.woff?t=1630033759944')%20format('woff'),%20url('//at.alicdn.com/t/font_1031158_u69w8yhxdu.ttf?t=1630033759944')%20format('truetype');%20}%20%3c/style%3e%3c/defs%3e%3cpath%20fill='currentColor'%20d='M848%20432a80.064%2080.064%200%200%200-73.216%2048H217.216A80.096%2080.096%200%200%200%20144%20432%2080.096%2080.096%200%200%200%2064%20512c0%2044.128%2035.904%2080%2080%2080A80%2080%200%200%200%20217.216%20544h557.536a80%2080%200%200%200%2073.216%2048c44.128%200%2080-35.872%2080-80a80.032%2080.032%200%200%200-79.968-80z'%20%3e%3c/path%3e%3c/svg%3e", wl = "data:image/svg+xml,%3csvg%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='200'%20height='200'%3e%3cdefs%3e%3cstyle%20type='text/css'%3e@font-face%20{%20font-family:%20feedback-iconfont;%20src:%20url('//at.alicdn.com/t/font_1031158_u69w8yhxdu.woff2?t=1630033759944')%20format('woff2'),%20url('//at.alicdn.com/t/font_1031158_u69w8yhxdu.woff?t=1630033759944')%20format('woff'),%20url('//at.alicdn.com/t/font_1031158_u69w8yhxdu.ttf?t=1630033759944')%20format('truetype');%20}%20%3c/style%3e%3c/defs%3e%3cpath%20fill='currentColor'%20d='M462%20881V81c0-27.6%2022.4-50%2050-50s50%2022.4%2050%2050v800c0%2027.6-22.4%2050-50%2050s-50-22.4-50-50z'%3e%3c/path%3e%3cpath%20fill='currentColor'%20d='M483.3%20907.6l212.1-212.1c19.5-19.5%2051.2-19.5%2070.7%200s19.5%2051.2%200%2070.7L554%20978.4c-19.5%2019.5-51.2%2019.5-70.7%200-19.6-19.6-19.6-51.2%200-70.8z'%20%3e%3c/path%3e%3cpath%20fill='currentColor'%20d='M328.6%20695.5l212.1%20212.1c19.5%2019.5%2019.5%2051.2%200%2070.7s-51.2%2019.5-70.7%200L257.9%20766.2c-19.5-19.5-19.5-51.2%200-70.7s51.2-19.5%2070.7%200z'%20%3e%3c/path%3e%3c/svg%3e", yl = "data:image/svg+xml,%3csvg%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='200'%20height='200'%3e%3cdefs%3e%3cstyle%20type='text/css'%3e@font-face%20{%20font-family:%20feedback-iconfont;%20src:%20url('//at.alicdn.com/t/font_1031158_u69w8yhxdu.woff2?t=1630033759944')%20format('woff2'),%20url('//at.alicdn.com/t/font_1031158_u69w8yhxdu.woff?t=1630033759944')%20format('woff'),%20url('//at.alicdn.com/t/font_1031158_u69w8yhxdu.ttf?t=1630033759944')%20format('truetype');%20}%20%3c/style%3e%3c/defs%3e%3cpath%20fill='currentColor'%20d='M474.3%20480.7L113.9%20836.6c-20.2%2019-21.2%2050.7-2.3%2071%200.7%200.8%201.5%201.5%202.3%202.3%209.5%2010.4%2023%2016.1%2037.1%2015.7%2014.1%200.4%2027.6-5.3%2037.1-15.7l323.3-319.1%20323.3%20319.1c9.5%2010.4%2023.1%2016.1%2037.1%2015.7%2014.1%200.4%2027.6-5.3%2037.1-15.7%2020.2-19%2021.2-50.7%202.3-71-0.7-0.8-1.5-1.5-2.3-2.3L548.5%20480.7c-19.9-20.5-52.6-21-73.1-1.1-0.4%200.3-0.8%200.7-1.1%201.1z%20m0-366.3L113.9%20470.2c-20.2%2019-21.2%2050.7-2.3%2071%200.7%200.8%201.5%201.5%202.3%202.3%209.5%2010.4%2023%2016.1%2037.1%2015.7%2014.1%200.4%2027.6-5.3%2037.1-15.6l323.3-319.2%20323.3%20319.2c9.5%2010.4%2023.1%2016.1%2037.1%2015.6%2014%200.4%2027.6-5.3%2037.1-15.6%2020.2-19%2021.2-50.7%202.3-71-0.7-0.8-1.5-1.5-2.3-2.3L548.5%20114.4c-19.9-20.5-52.6-21-73.1-1.1l-1.1%201.1z'%3e%3c/path%3e%3c/svg%3e", _l = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='333.426'%20height='331.939'%20viewBox='0%200%20333.426%20331.939'%3e%3cg%20id='_10矩形'%20transform='translate(-63.7%20-66.2)'%3e%3cpath%20fill='currentColor'%20id='路径_2'%20d='M205.976,168.3H378.8v13.786H205.976Zm0,242.015H378.8V424.1H205.976ZM165.812,381.07V208.245H179.6V381.07Zm243.5,0V208.244H423.1V381.07Z'%20transform='translate(-64.168%20-64.161)'/%3e%3cpath%20fill='currentColor'%20id='路径_3'%20d='M108.662,66.2a44.962,44.962,0,1,0,44.962,44.962A44.975,44.975,0,0,0,108.662,66.2Zm-.037,75.618a30.73,30.73,0,1,1,30.73-30.73A30.718,30.718,0,0,1,108.625,141.818Zm.037,166.4a44.962,44.962,0,1,0,44.962,44.962,44.975,44.975,0,0,0-44.962-44.962Zm-.037,75.655a30.73,30.73,0,1,1,30.73-30.73A30.718,30.718,0,0,1,108.625,383.87Zm243.539-75.655a44.962,44.962,0,1,0,44.962,44.962A44.975,44.975,0,0,0,352.164,308.215Zm-.037,75.655a30.73,30.73,0,1,1,30.73-30.73A30.718,30.718,0,0,1,352.126,383.87Zm.037-317.67a44.962,44.962,0,1,0,44.962,44.962A44.975,44.975,0,0,0,352.164,66.2Zm-.037,75.618a30.73,30.73,0,1,1,30.73-30.73A30.718,30.718,0,0,1,352.126,141.818Z'/%3e%3c/g%3e%3c/svg%3e", bl = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='333'%20height='332'%20viewBox='0%200%20333%20332'%3e%3cg%20id='椭圆_1'%20fill='none'%20stroke='currentColor'%20stroke-width='30'%3e%3cellipse%20cx='166.5'%20cy='166'%20rx='156.5'%20ry='156'%20stroke='none'/%3e%3cellipse%20cx='166.5'%20cy='166'%20rx='149'%20ry='148.5'%20fill='none'/%3e%3c/g%3e%3c/svg%3e", kl = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='322.663'%20height='322.663'%20viewBox='0%200%20322.663%20144.368'%3e%3cg%20id='组_1'%20transform='translate(-17.337%20-208.632)'%3e%3cpath%20id='路径_1'%20d='M21,254.606s69.664-74.994,139.621-8.395'%20fill='none'%20stroke='currentColor'%20stroke-width='20'/%3e%3cg%20id='椭圆_2'%20transform='translate(153%20233)'%20fill='%23fff'%20stroke='currentColor'%20stroke-width='20'%3e%3ccircle%20cx='22.5'%20cy='22.5'%20r='25.5'%20stroke='none'/%3e%3ccircle%20cx='22.5'%20cy='22.5'%20r='22.5'%20fill='none'/%3e%3c/g%3e%3cpath%20id='路径_2'%20d='M187.5,274.23s15.48,96.483,113.05,65.285'%20transform='translate(-4.814%20-5.239)'%20fill='none'%20stroke='currentColor'%20stroke-width='20'/%3e%3cg%20id='椭圆_3'%20transform='translate(295%20308)'%20fill='%23fff'%20stroke='currentColor'%20stroke-width='20'%3e%3ccircle%20cx='12.5'%20cy='12.5'%20r='22.5'%20stroke='none'/%3e%3ccircle%20cx='12.5'%20cy='12.5'%20r='22.5'%20fill='none'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e", zl = "data:image/svg+xml,%3csvg%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='200'%20height='200'%3e%3cdefs%3e%3cstyle%20type='text/css'%3e@font-face%20{%20font-family:%20feedback-iconfont;%20src:%20url('//at.alicdn.com/t/font_1031158_u69w8yhxdu.woff2?t=1630033759944')%20format('woff2'),%20url('//at.alicdn.com/t/font_1031158_u69w8yhxdu.woff?t=1630033759944')%20format('woff'),%20url('//at.alicdn.com/t/font_1031158_u69w8yhxdu.ttf?t=1630033759944')%20format('truetype');%20}%20%3c/style%3e%3c/defs%3e%3cpath%20fill='currentColor'%20d='M575.852903%20115.426402L661.092435%20288.054362c10.130509%2020.465674%2029.675227%2034.689317%2052.289797%2037.963825l190.433097%2027.62866c56.996902%208.288598%2079.7138%2078.281203%2038.475467%20118.496253l-137.836314%20134.35715c-16.372539%2015.963226-23.84251%2038.987109-19.954032%2061.49935l32.540421%20189.716799c9.721195%2056.792245-49.833916%20100.077146-100.793444%2073.267113L545.870691%20841.446188a69.491196%2069.491196%200%200%200-64.67153%200l-170.376737%2089.537324c-50.959528%2026.810033-110.51464-16.474868-100.793444-73.267113L242.569401%20667.9996c3.888478-22.512241-3.581493-45.536125-19.954032-61.49935L84.779055%20472.245428c-41.238333-40.215049-18.521435-110.207655%2038.475467-118.496252l190.433097-27.62866c22.61457-3.274508%2042.159288-17.498151%2052.289797-37.963826L451.319277%20115.426402c25.479764-51.675827%2099.053862-51.675827%20124.533626%200z'%20%3e%3c/path%3e%3c/svg%3e", xl = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='320.756'%20height='350.074'%20viewBox='0%200%20320.756%20350.074'%3e%3cpath%20fill='currentColor'%20id='排除_1'%20d='M21.624,350.074a22.1,22.1,0,0,1-7.779-1.492A24.658,24.658,0,0,1,6.9,344.519,20.489,20.489,0,0,1,1.912,338.5,15.465,15.465,0,0,1,0,331.144V18.933a15.279,15.279,0,0,1,1.952-7.376A20.6,20.6,0,0,1,7.032,5.54,25.191,25.191,0,0,1,14.07,1.486,22.529,22.529,0,0,1,21.9,0a22.226,22.226,0,0,1,7.777,1.488,24.613,24.613,0,0,1,6.944,4.054,20.429,20.429,0,0,1,4.989,6.017,15.515,15.515,0,0,1,1.912,7.376v312.2a15.216,15.216,0,0,1-1.956,7.358,20.7,20.7,0,0,1-5.085,6.019,25.282,25.282,0,0,1-7.039,4.064A22.421,22.421,0,0,1,21.624,350.074ZM320.756,205.783H60.764L61.02,17.351l259.736,1.585v.728l-63.48,96.82,63.48,88.425v.873h0Z'%20transform='translate(0)'/%3e%3c/svg%3e", Cl = "data:image/svg+xml,%3csvg%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='200'%20height='200'%3e%3cdefs%3e%3cstyle%20type='text/css'%3e@font-face%20{%20font-family:%20feedback-iconfont;%20src:%20url('//at.alicdn.com/t/font_1031158_u69w8yhxdu.woff2?t=1630033759944')%20format('woff2'),%20url('//at.alicdn.com/t/font_1031158_u69w8yhxdu.woff?t=1630033759944')%20format('woff'),%20url('//at.alicdn.com/t/font_1031158_u69w8yhxdu.ttf?t=1630033759944')%20format('truetype');%20}%20%3c/style%3e%3c/defs%3e%3cpath%20fill='currentColor'%20d='M512%20690a112%20112%200%201%200%200-350%20112%20112%200%200%200%200%20350z'%3e%3c/path%3e%3c/svg%3e", $l = "data:image/svg+xml,%3csvg%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='200'%20height='200'%3e%3cdefs%3e%3cstyle%20type='text/css'%3e@font-face%20{%20font-family:%20feedback-iconfont;%20src:%20url('//at.alicdn.com/t/font_1031158_u69w8yhxdu.woff2?t=1630033759944')%20format('woff2'),%20url('//at.alicdn.com/t/font_1031158_u69w8yhxdu.woff?t=1630033759944')%20format('woff'),%20url('//at.alicdn.com/t/font_1031158_u69w8yhxdu.ttf?t=1630033759944')%20format('truetype');%20}%20%3c/style%3e%3c/defs%3e%3cpath%20d='M563.2%20281.6V870.4a51.2%2051.2%200%200%201-102.4%200V281.6H179.2a51.2%2051.2%200%201%201%200-102.4h665.6a51.2%2051.2%200%200%201%200%20102.4H563.2z'%20fill='currentColor'%3e%3c/path%3e%3c/svg%3e", Tl = "data:image/svg+xml,%3csvg%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20width='200'%20height='200'%3e%3cpath%20d='M515.041727%20670.617766c91.584167%200%20166.095647-74.504255%20166.095647-166.095646V229.350568c0-91.584167-74.51148-166.095647-166.095647-166.095647-91.598617%200-166.102872%2074.51148-166.102871%20166.095647V504.52212c0%2091.591392%2074.504255%20166.095647%20166.102871%20166.095646z'%20fill='currentColor'%3e%3c/path%3e%3cpath%20d='M801.643237%20874.001665H558.391759v-45.423608c161.507768-21.313766%20286.60151-159.788217%20286.60151-327.01819a43.350032%2043.350032%200%200%200-86.700064%200c0%20134.124998-109.12648%20243.251478-243.258703%20243.251479-134.124998%200-243.244253-109.12648-243.244253-243.251479a43.350032%2043.350032%200%200%200-86.700063%200c0%20167.229972%20125.100967%20305.711649%20286.601509%20327.01819v45.423608H228.440217a43.350032%2043.350032%200%200%200%200%2086.700064h573.20302a43.350032%2043.350032%200%200%200%200-86.700064z'%20fill='currentColor'%3e%3c/path%3e%3c/svg%3e", Ll = ["onClick"], Vl = ["src"], El = {
470
+ key: 2,
471
+ style: { width: "18px" },
472
+ class: "margin-r-3"
473
+ }, Ml = {
474
+ key: 1,
475
+ class: "hzzt-kfb-sub-menu"
476
+ }, Hl = ["onClick"], Il = { class: "flex align-items-center" }, Sl = ["src"], Pl = {
477
+ key: 2,
478
+ style: { width: "18px" },
479
+ class: "margin-r-2"
480
+ }, Al = /* @__PURE__ */ Q({
481
+ __name: "KfbMenu",
482
+ props: {
483
+ menus: {}
484
+ },
485
+ emits: ["tool"],
486
+ setup(d, { emit: e }) {
487
+ const a = x({
488
+ top: "0",
489
+ left: "0",
490
+ display: "none"
491
+ }), t = q("kfbView", x({})), f = q("currentLabel"), m = d, v = e, { t: c } = me(), l = [
492
+ {
493
+ label: c("直线"),
494
+ value: "line",
495
+ icon: gl
496
+ },
497
+ {
498
+ label: c("箭头"),
499
+ value: "arrow",
500
+ icon: wl
501
+ },
502
+ {
503
+ label: c("双箭头"),
504
+ value: "bilateral",
505
+ icon: yl
506
+ },
507
+ {
508
+ label: c("矩形"),
509
+ value: "rectangle",
510
+ icon: _l
511
+ },
512
+ {
513
+ label: c("圆形"),
514
+ value: "ellipse",
515
+ icon: bl
516
+ },
517
+ {
518
+ label: c("曲线"),
519
+ value: "polygon",
520
+ icon: kl
521
+ },
522
+ {
523
+ label: c("星星"),
524
+ value: "star",
525
+ icon: zl
526
+ },
527
+ {
528
+ label: c("旗帜"),
529
+ value: "flag",
530
+ icon: xl
531
+ },
532
+ {
533
+ label: c("点"),
534
+ value: "dot",
535
+ icon: Cl
536
+ },
537
+ {
538
+ label: c("文字"),
539
+ value: "font",
540
+ icon: $l
541
+ },
542
+ {
543
+ label: c("语音"),
544
+ value: "voice",
545
+ icon: Tl
546
+ }
547
+ ], h = N(() => {
548
+ var u;
549
+ return f != null && f.value ? [{
550
+ label: c("删除"),
551
+ value: "delete",
552
+ icon: pe.value.delete
553
+ }] : (u = m.menus) != null && u.length ? m.menus.map((o) => o.value === "annotate" ? ve(Z({}, o), {
554
+ children: l
555
+ }) : ve(Z({}, o), {
556
+ icon: o.icon || pe.value[o.value]
557
+ })) : [
558
+ {
559
+ label: c("上一张"),
560
+ value: "prev"
561
+ },
562
+ {
563
+ label: c("下一张"),
564
+ value: "next"
565
+ },
566
+ {
567
+ label: c("标注"),
568
+ value: "annotate",
569
+ icon: pe.value.annotate,
570
+ children: l
571
+ },
572
+ {
573
+ label: c("一键截图"),
574
+ value: "tailor_now",
575
+ icon: pe.value.tailor
576
+ },
577
+ {
578
+ label: c("区域截图"),
579
+ value: "tailor"
580
+ },
581
+ {
582
+ label: c("镜像翻转"),
583
+ value: "flip",
584
+ icon: pe.value.flip
585
+ },
586
+ {
587
+ label: c("切片信息"),
588
+ value: "info",
589
+ icon: pe.value.info
590
+ }
591
+ ];
592
+ });
593
+ J(() => t.value, (u, o) => {
594
+ o != null && o.viewer && (o.viewer.removeHandler("canvas-contextmenu", p), o.viewer.removeHandler("canvas-click", n)), u != null && u.viewer && (u.viewer.addHandler("canvas-contextmenu", p), u.viewer.addHandler("canvas-click", n));
595
+ }), fe(() => {
596
+ var u;
597
+ (u = t.value) != null && u.viewer && (t.value.viewer.addHandler("canvas-contextmenu", p), t.value.viewer.addHandler("canvas-click", n)), document.body.addEventListener("click", n);
598
+ }), $e(() => {
599
+ var u;
600
+ (u = t.value) != null && u.viewer && (t.value.viewer.removeHandler("canvas-contextmenu", p), t.value.viewer.removeHandler("canvas-click", n)), document.body.removeEventListener("click", n);
601
+ });
602
+ function p(u) {
603
+ u.preventDefault = !0, a.value.top = `${u.position.y}px`, a.value.left = `${u.position.x}px`, a.value.display === "block" ? a.value.display = "none" : a.value.display = "block";
604
+ }
605
+ function n() {
606
+ a.value.display = "none";
607
+ }
608
+ function i(u, o) {
609
+ u.children || ((o == null ? void 0 : o.value) === "annotate" ? v("tool", "annotate", {
610
+ tool: u.value.substring(0, 1).toLocaleUpperCase() + u.value.substring(1),
611
+ once: !0
612
+ }) : u.value === "tailor_now" ? v("tool", "tailor", !0) : v("tool", u.value), n());
613
+ }
614
+ function r(u) {
615
+ return u == null || typeof u != "object" && typeof u != "function" ? !1 : (
616
+ // 函数式组件
617
+ typeof u == "function" || // 对象式组件
618
+ "render" in u || "setup" in u
619
+ );
620
+ }
621
+ return (u, o) => (g(), $("div", {
622
+ class: "hzzt-kfb-menu",
623
+ style: X(a.value)
624
+ }, [
625
+ (g(!0), $(oe, null, ne(h.value, (w, _) => (g(), $("div", {
626
+ key: _,
627
+ class: "hzzt-kfb-menu-item"
628
+ }, [
629
+ y("div", {
630
+ class: "flex align-items-center",
631
+ onClick: (S) => i(w)
632
+ }, [
633
+ r(w.icon) ? (g(), I(s(ge), {
634
+ key: 0,
635
+ class: "margin-r-3",
636
+ size: 18
637
+ }, {
638
+ default: C(() => [
639
+ (g(), I(ze(w.icon)))
640
+ ]),
641
+ _: 2
642
+ }, 1024)) : w.icon ? (g(), $("img", {
643
+ key: 1,
644
+ style: { width: "18px" },
645
+ class: "margin-r-2",
646
+ src: w.icon
647
+ }, null, 8, Vl)) : (g(), $("div", El)),
648
+ y("span", null, T(w.label), 1)
649
+ ], 8, Ll),
650
+ w.children ? (g(), I(Y, {
651
+ key: 0,
652
+ name: "arrowRight",
653
+ class: "margin-r-2",
654
+ size: 14
655
+ })) : A("", !0),
656
+ w.children ? (g(), $("div", Ml, [
657
+ (g(!0), $(oe, null, ne(w.children, (S, H) => (g(), $("div", {
658
+ key: H,
659
+ class: "hzzt-kfb-menu-item",
660
+ onClick: (E) => i(S, w)
661
+ }, [
662
+ y("div", Il, [
663
+ r(S.icon) ? (g(), I(s(ge), {
664
+ key: 0,
665
+ class: "margin-r-2",
666
+ size: 18
667
+ }, {
668
+ default: C(() => [
669
+ (g(), I(ze(S.icon)))
670
+ ]),
671
+ _: 2
672
+ }, 1024)) : S.icon ? (g(), $("img", {
673
+ key: 1,
674
+ style: { width: "18px" },
675
+ class: "margin-r-2",
676
+ src: S.icon
677
+ }, null, 8, Sl)) : (g(), $("div", Pl)),
678
+ y("span", null, T(S.label), 1)
679
+ ])
680
+ ], 8, Hl))), 128))
681
+ ])) : A("", !0)
682
+ ]))), 128))
683
+ ], 4));
684
+ }
685
+ }), we = (d, e) => {
686
+ const a = d.__vccOpts || d;
687
+ for (const [t, f] of e)
688
+ a[t] = f;
689
+ return a;
690
+ }, Rl = /* @__PURE__ */ we(Al, [["__scopeId", "data-v-739aad62"]]), Bl = {
691
+ key: 0,
692
+ class: "hzzt-kfb-microscope"
693
+ }, Nl = /* @__PURE__ */ Q({
694
+ __name: "KfbMicroscope",
695
+ props: /* @__PURE__ */ Ot({
696
+ shape: {},
697
+ width: {},
698
+ color: {},
699
+ borderWidth: {}
700
+ }, Z({}, qe)),
701
+ setup(d, { expose: e }) {
702
+ const a = d, t = Ye(Z(Z({}, qe), a));
703
+ J(() => a, (n) => {
704
+ p({ name: "change", value: n });
705
+ });
706
+ const f = x("200px"), m = x(!1), v = N(() => ({
707
+ borderRadius: t.shape,
708
+ borderColor: t.color,
709
+ borderWidth: t.borderWidth + "px",
710
+ width: f.value,
711
+ height: f.value
712
+ })), c = q("kfbView", x({}));
713
+ J(() => c.value, (n, i) => {
714
+ i != null && i.viewer && i.viewer.removeHandler("zoom", l), n != null && n.viewer && n.viewer.addHandler("zoom", l);
715
+ }), fe(() => {
716
+ var n;
717
+ (n = c.value) != null && n.viewer && c.value.viewer.addHandler("zoom", l);
718
+ }), $e(() => {
719
+ var n;
720
+ (n = c.value) != null && n.viewer && c.value.viewer.removeHandler("zoom", l);
721
+ });
722
+ function l() {
723
+ setTimeout(() => {
724
+ p({ name: "change", value: t });
725
+ }, 100);
726
+ }
727
+ function h(n) {
728
+ let { x: i, y: r } = c.value.viewer.viewport.getCenter(!0);
729
+ n === "top" ? r -= 6e-3 : n === "bottom" ? r += 6e-3 : n === "left" ? i -= 6e-3 : n === "right" && (i += 6e-3), c.value.area.moveToLabel({ x: i, y: r });
730
+ }
731
+ function p({ name: n, value: i }) {
732
+ var u, o;
733
+ const r = (o = (u = c.value.$options) == null ? void 0 : u.pxConversion) == null ? void 0 : o.imageCapRes;
734
+ if (n === "visible") {
735
+ if (m.value = i, i) {
736
+ const w = c.value.area.imageToViewerElementRectangle(
737
+ {
738
+ x: 0,
739
+ y: 0,
740
+ width: t.width * 1e3 / r,
741
+ height: t.width * 1e3 / r
742
+ }
743
+ );
744
+ f.value = w.width + "px";
745
+ }
746
+ } else if (n === "change") {
747
+ Object.assign(t, i);
748
+ const w = c.value.area.imageToViewerElementRectangle(
749
+ {
750
+ x: 0,
751
+ y: 0,
752
+ width: t.width * 1e3 / r,
753
+ height: t.width * 1e3 / r
754
+ }
755
+ );
756
+ f.value = w.width + "px";
757
+ }
758
+ }
759
+ return e({
760
+ scopeChange: p
761
+ }), (n, i) => m.value ? (g(), $("div", Bl, [
762
+ y("div", {
763
+ class: "hzzt-kfb-microscope__container",
764
+ style: X(v.value)
765
+ }, null, 4),
766
+ y("div", {
767
+ class: "hzzt-kfb-microscope__top",
768
+ onClick: i[0] || (i[0] = (r) => h("top"))
769
+ }, [
770
+ b(Y, {
771
+ size: "24",
772
+ name: "arrowUp"
773
+ })
774
+ ]),
775
+ y("div", {
776
+ class: "hzzt-kfb-microscope__bottom",
777
+ onClick: i[1] || (i[1] = (r) => h("bottom"))
778
+ }, [
779
+ b(Y, {
780
+ size: "24",
781
+ name: "arrowDown"
782
+ })
783
+ ]),
784
+ y("div", {
785
+ class: "hzzt-kfb-microscope__left",
786
+ onClick: i[2] || (i[2] = (r) => h("left"))
787
+ }, [
788
+ b(Y, {
789
+ size: "24",
790
+ name: "arrowLeft"
791
+ })
792
+ ]),
793
+ y("div", {
794
+ class: "hzzt-kfb-microscope__right",
795
+ onClick: i[3] || (i[3] = (r) => h("right"))
796
+ }, [
797
+ b(Y, {
798
+ size: "24",
799
+ name: "arrowRight"
800
+ })
801
+ ])
802
+ ])) : A("", !0);
803
+ }
804
+ }), Dl = /* @__PURE__ */ we(Nl, [["__scopeId", "data-v-e8b36101"]]), Ul = { class: "hzzt-kfb-label flex column" }, Fl = { class: "hzzt-kfb-label__img flex justify-content-center" }, Kl = ["src"], Zl = { class: "ellipsis flex-1" }, Ol = {
805
+ class: "flex margin-b-4",
806
+ style: { width: "100%" }
807
+ }, jl = {
808
+ class: "flex margin overflow-hidden",
809
+ style: { height: "132px" }
810
+ }, Gl = ["src"], Wl = ["src"], ql = /* @__PURE__ */ Q({
811
+ __name: "KfbLabel",
812
+ props: {
813
+ info: {},
814
+ slide: {},
815
+ pathologyHandle: { type: Function }
816
+ },
817
+ emits: ["tool"],
818
+ setup(d, { emit: e }) {
819
+ const { t: a } = me(), t = d, f = e, m = x(!0), v = x(!1), c = N(() => t.slide.pathology_id ? a("修改病理号") : a("绑定病理号"));
820
+ function l() {
821
+ t.slide.angle || (t.slide.angle = 0), t.slide.angle += 90, t.slide.angle > 360 && (t.slide.angle = t.slide.angle % 360), f("tool", "rotate", t.slide.angle);
822
+ }
823
+ function h() {
824
+ v.value = !0;
825
+ }
826
+ function p() {
827
+ t.pathologyHandle && t.pathologyHandle(t.slide).then(() => {
828
+ v.value = !1;
829
+ });
830
+ }
831
+ return (n, i) => (g(), $("div", Ul, [
832
+ Be(y("div", { class: "hzzt-kfb-label__title" }, T(s(a)(`点击标签旋转${n.pathologyHandle ? ",点击病理号重绑" : ""}`)), 513), [
833
+ [je, m.value]
834
+ ]),
835
+ Be(y("div", Fl, [
836
+ y("img", {
837
+ src: n.info.labelImg,
838
+ style: X({ transform: `rotate(${n.slide.angle}deg)` }),
839
+ onClick: l
840
+ }, null, 12, Kl)
841
+ ], 512), [
842
+ [je, m.value]
843
+ ]),
844
+ n.pathologyHandle ? Be((g(), $("div", {
845
+ key: 0,
846
+ class: "hzzt-kfb-label__pathology flex align-items-center justify-content-between",
847
+ onClick: h
848
+ }, [
849
+ y("span", Zl, T(n.slide.pathology_number), 1),
850
+ b(Y, {
851
+ size: "14",
852
+ name: "annotate"
853
+ })
854
+ ], 512)), [
855
+ [je, m.value]
856
+ ]) : A("", !0),
857
+ y("span", {
858
+ onClick: i[0] || (i[0] = (r) => m.value = !m.value),
859
+ style: X({
860
+ transform: `translateY(${m.value ? "-50%" : 0})`
861
+ }),
862
+ class: "hzzt-kfb-label__expend flex align-items-center justify-content-center"
863
+ }, [
864
+ m.value ? (g(), I(Y, {
865
+ key: 0,
866
+ size: "10",
867
+ name: "arrowLeft"
868
+ })) : (g(), I(Y, {
869
+ key: 1,
870
+ size: "10",
871
+ name: "arrowRight"
872
+ }))
873
+ ], 4),
874
+ b(s(Ue), {
875
+ modelValue: v.value,
876
+ "onUpdate:modelValue": i[5] || (i[5] = (r) => v.value = r),
877
+ "append-to-body": !0,
878
+ title: c.value,
879
+ width: "450px"
880
+ }, {
881
+ footer: C(() => [
882
+ b(s(he), {
883
+ onClick: i[4] || (i[4] = (r) => v.value = !1)
884
+ }, {
885
+ default: C(() => [
886
+ O(T(s(a)("取消")), 1)
887
+ ]),
888
+ _: 1
889
+ }),
890
+ b(s(he), {
891
+ type: "primary",
892
+ onClick: p
893
+ }, {
894
+ default: C(() => [
895
+ O(T(s(a)("确认")), 1)
896
+ ]),
897
+ _: 1
898
+ })
899
+ ]),
900
+ default: C(() => [
901
+ y("div", Ol, [
902
+ y("div", jl, [
903
+ y("img", {
904
+ src: n.slide.labelImg
905
+ }, null, 8, Gl),
906
+ y("img", {
907
+ src: n.slide.previewImg
908
+ }, null, 8, Wl)
909
+ ])
910
+ ]),
911
+ b(s(We), { class: "margin-t-2" }, {
912
+ default: C(() => [
913
+ b(s(le), {
914
+ label: s(a)("病理号")
915
+ }, {
916
+ default: C(() => [
917
+ b(s(Ge), {
918
+ modelValue: n.slide.pathology_number,
919
+ "onUpdate:modelValue": i[1] || (i[1] = (r) => n.slide.pathology_number = r),
920
+ placeholder: s(a)("输入病理号"),
921
+ clearable: ""
922
+ }, null, 8, ["modelValue", "placeholder"])
923
+ ]),
924
+ _: 1
925
+ }, 8, ["label"]),
926
+ b(s(le), {
927
+ label: s(a)("蜡块号")
928
+ }, {
929
+ default: C(() => [
930
+ b(s(Ge), {
931
+ modelValue: n.slide.paraffin_block_number,
932
+ "onUpdate:modelValue": i[2] || (i[2] = (r) => n.slide.paraffin_block_number = r),
933
+ placeholder: s(a)("输入蜡块号"),
934
+ clearable: ""
935
+ }, null, 8, ["modelValue", "placeholder"])
936
+ ]),
937
+ _: 1
938
+ }, 8, ["label"]),
939
+ n.slide.slide_id ? A("", !0) : (g(), I(s(le), {
940
+ key: 0,
941
+ label: s(a)("试剂")
942
+ }, {
943
+ default: C(() => [
944
+ b(s(Ge), {
945
+ modelValue: n.slide.reagent,
946
+ "onUpdate:modelValue": i[3] || (i[3] = (r) => n.slide.reagent = r),
947
+ placeholder: s(a)("输入试剂"),
948
+ clearable: ""
949
+ }, null, 8, ["modelValue", "placeholder"])
950
+ ]),
951
+ _: 1
952
+ }, 8, ["label"]))
953
+ ]),
954
+ _: 1
955
+ })
956
+ ]),
957
+ _: 1
958
+ }, 8, ["modelValue", "title"])
959
+ ]));
960
+ }
961
+ }), Yl = /* @__PURE__ */ we(ql, [["__scopeId", "data-v-7397de48"]]);
962
+ function Xl(d, e) {
963
+ const a = x(1), t = x(null), f = x(null);
964
+ function m() {
965
+ d.value.viewer.addHandler("canvas-drag", (c) => {
966
+ t.value || (t.value = c.position);
967
+ }), d.value.viewer.addHandler("canvas-drag-end", (c) => {
968
+ if (a.value !== 1) {
969
+ f.value = c.position;
970
+ const l = d.value.viewer.viewport.containerSize.x, h = d.value.viewer.viewport.containerSize.y, p = (f.value.x - t.value.x) / (l * e.value) * (a.value - 1), n = (f.value.y - t.value.y) / (h * e.value) * (a.value - 1), i = d.value.viewer.viewport.getCenter(), r = new be.Point(i.x - p, i.y - n);
971
+ d.value.viewer.viewport.panTo(r), t.value = null;
972
+ }
973
+ });
974
+ }
975
+ function v({ name: c, value: l }) {
976
+ c === "ratio" && (a.value = l / 1);
977
+ }
978
+ return {
979
+ moveEvent: m,
980
+ fastMove: v
981
+ };
982
+ }
983
+ function Ql(d, e, a) {
984
+ const t = x(!1), f = x(void 0), m = x(void 0), v = x([]);
985
+ J(() => d.aiLabelList, p);
986
+ function c() {
987
+ a.value.$on(ue.events.EVENT_END_PAINTING, l("add")), a.value.$on(ue.events.EVENT_AREA_MOVE_END, l("move")), a.value.$on(ue.events.EVENT_ADD_POLYGON_POINT, l("add-point")), a.value.$on(ue.events.EVENT_DELETE_POLYGON_POINT, l("delete-point")), a.value.$on(ue.events.EVENT_DELETE_LABEL, l("delete")), a.value.$on(ue.events.EVENT_SELECT_LABEL, (r) => {
988
+ var o, w, _, S;
989
+ f.value = r, (((o = f.value) == null ? void 0 : o.subType) || ((_ = (w = f.value) == null ? void 0 : w.__data__) == null ? void 0 : _.subType)) === "voice" && ((S = f.value) != null && S.src) && new Audio(f.value.src).play(), e("tool", "select-label", f.value);
990
+ }), a.value.$on(ue.events.EVENT_CANCEL_SELECT_LABEL, () => {
991
+ f.value = void 0, e("tool", "cancel-select-label", f.value);
992
+ }), l("list")();
993
+ }
994
+ function l(r) {
995
+ return (u) => h(r, u);
996
+ }
997
+ function h(r, u) {
998
+ var o;
999
+ if (r === "add" && ((u == null ? void 0 : u.subType) || ((o = u == null ? void 0 : u.__data__) == null ? void 0 : o.subType)) === "voice")
1000
+ m.value = u, t.value = !0;
1001
+ else
1002
+ return d.labelHandle(r, d.slide, u).then((w) => {
1003
+ v.value = w, p();
1004
+ }).catch(() => {
1005
+ p();
1006
+ });
1007
+ }
1008
+ function p() {
1009
+ var r;
1010
+ if ((r = a.value) != null && r.initLabelList) {
1011
+ const u = [...v.value, ...d.aiLabelList || []];
1012
+ u.find(({ id: o }) => {
1013
+ var w;
1014
+ return o === ((w = f.value) == null ? void 0 : w.id);
1015
+ }) || (f.value = void 0), a.value.initLabelList(u);
1016
+ }
1017
+ }
1018
+ function n(r) {
1019
+ var o;
1020
+ f.value && (f.value.select = !1);
1021
+ const u = (a.value.labelList || []).findIndex((w) => w.id === r.id);
1022
+ if (u > -1) {
1023
+ f.value = (o = a.value.labelList) == null ? void 0 : o[u], f.value.select = !0;
1024
+ const w = a.value.area.getCenterPoint(r.region);
1025
+ a.value.area.moveToLabel(w);
1026
+ }
1027
+ }
1028
+ function i(r) {
1029
+ return t.value = !1, d.labelHandle("add", d.slide, r).then((u) => {
1030
+ v.value = u, p();
1031
+ }).catch(() => {
1032
+ p();
1033
+ });
1034
+ }
1035
+ return {
1036
+ currentLabel: f,
1037
+ voiceVisible: t,
1038
+ labelForm: m,
1039
+ initLabel: c,
1040
+ selectLabel: n,
1041
+ reloadLabelList: p,
1042
+ eventHandel: l,
1043
+ addHandle: i
1044
+ };
1045
+ }
1046
+ function Jl() {
1047
+ function d(e, a) {
1048
+ e.save(), e.strokeStyle = "rgba(0,0,0,0)", e.miterLimit = 4, e.font = "15px", e.fillStyle = a, 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();
1049
+ }
1050
+ return {
1051
+ drawDot: d
1052
+ };
1053
+ }
1054
+ function eo(d, e) {
1055
+ const a = x();
1056
+ let t = null;
1057
+ const f = x(!1);
1058
+ function m(l, h) {
1059
+ l.save(), l.strokeStyle = "rgba(0,0,0,0)", l.miterLimit = 4, l.font = "15px ''", l.fillStyle = h, l.font = " 15px ''", l.scale(0.03125, 0.03125), l.save(), l.font = " 15px ''", l.beginPath(), l.moveTo(515.041727, 670.617766), l.bezierCurveTo(606.625894, 670.617766, 681.137374, 596.113511, 681.137374, 504.52212), l.lineTo(681.137374, 229.350568), l.bezierCurveTo(681.137374, 137.76640100000003, 606.625894, 63.254920999999996, 515.041727, 63.254920999999996), l.bezierCurveTo(423.44311000000005, 63.254920999999996, 348.93885500000005, 137.766401, 348.93885600000004, 229.350568), l.lineTo(348.93885600000004, 504.52212), l.bezierCurveTo(348.93885600000004, 596.113512, 423.44311100000004, 670.617767, 515.041727, 670.617766), l.closePath(), l.fill(), l.stroke(), l.restore(), l.save(), l.font = " 15px ''", l.beginPath(), l.moveTo(801.643237, 874.001665), l.lineTo(558.391759, 874.001665), l.lineTo(558.391759, 828.578057), l.bezierCurveTo(719.899527, 807.264291, 844.993269, 668.7898399999999, 844.993269, 501.55986699999994), l.translate(801.643237, 501.55986699999994), l.rotate(0), l.arc(0, 0, 43.350032, 0, 3.141592653589793, !0), l.rotate(0), l.translate(-801.643237, -501.55986699999994), l.bezierCurveTo(758.2932050000001, 635.684865, 649.166725, 744.811345, 515.0345020000001, 744.811346), l.bezierCurveTo(380.9095040000001, 744.811346, 271.79024900000013, 635.6848659999999, 271.79024900000013, 501.55986699999994), l.translate(228.44021750000013, 501.5664510740879), l.rotate(0), l.arc(0, 0, 43.350032, -15188164315591997e-20, -3.1414407719461273, !0), l.rotate(0), l.translate(-228.44021750000013, -501.5664510740879), l.bezierCurveTo(185.09018600000013, 668.7898389999999, 310.1911530000001, 807.271516, 471.69169500000015, 828.578057), l.lineTo(471.69169500000015, 874.001665), l.lineTo(228.440217, 874.001665), l.translate(228.440217, 917.3516970000001), l.rotate(0), l.arc(0, 0, 43.350032, -1.5707963267948966, 1.5707963267948966, !0), l.rotate(0), l.translate(-228.440217, -917.3516970000001), l.lineTo(801.643237, 960.701729), l.translate(801.643237, 917.3516970000001), l.rotate(0), l.arc(0, 0, 43.350032, 1.5707963267948966, 4.71238898038469, !0), l.rotate(0), l.translate(-801.643237, -917.3516970000001), l.closePath(), l.fill(), l.stroke(), l.restore(), l.restore();
1060
+ }
1061
+ function v() {
1062
+ return Oe(this, null, function* () {
1063
+ try {
1064
+ a.value = yield navigator.mediaDevices.getUserMedia({ audio: !0 }), t = new MediaRecorder(a.value);
1065
+ const l = [];
1066
+ t.addEventListener("dataavailable", (h) => {
1067
+ l.push(h.data);
1068
+ }), t.addEventListener("stop", () => {
1069
+ const h = new Blob(l, { type: "audio/wav" });
1070
+ e.value && (e.value.src = URL.createObjectURL(h)), d.uploadHandle && e.value && d.uploadHandle(d.slide, e.value, h).then((p) => {
1071
+ e.value.src = p;
1072
+ }), f.value = !1;
1073
+ }), t.start(), f.value = !0;
1074
+ } catch (l) {
1075
+ console.error("录音错误:", l);
1076
+ }
1077
+ });
1078
+ }
1079
+ function c() {
1080
+ a.value && t ? (t.stop(), a.value.getTracks().forEach((l) => l.stop()), t = null, a.value = void 0) : (t = null, a.value = void 0), f.value = !1;
1081
+ }
1082
+ return {
1083
+ drawVoice: m,
1084
+ isRecording: f,
1085
+ startRecording: v,
1086
+ stopRecording: c
1087
+ };
1088
+ }
1089
+ function to(d, e) {
1090
+ const a = x([]), t = x(0), f = x(!1);
1091
+ let m = null;
1092
+ J(() => {
1093
+ var i;
1094
+ return (i = d.hotmap) == null ? void 0 : i.enable;
1095
+ }, () => {
1096
+ var i, r;
1097
+ if ((r = (i = e.value) == null ? void 0 : i.viewer) != null && r.world) {
1098
+ t.value = 0;
1099
+ const u = e.value.viewer.world.getItemAt(0);
1100
+ u && (u.tilesMatrix = {}, u.draw());
1101
+ }
1102
+ }), fe(() => {
1103
+ window.addEventListener("mousemove", l), window.addEventListener("mouseup", p);
1104
+ }), $e(() => {
1105
+ window.removeEventListener("mousemove", l), window.removeEventListener("mouseup", p);
1106
+ });
1107
+ function v(i, r, u) {
1108
+ var w, _, S, H, E, P;
1109
+ const o = ve(Z({}, r), {
1110
+ file: (w = d.hotmap) == null ? void 0 : w.file
1111
+ });
1112
+ if ((_ = d.hotmap) != null && _.info) {
1113
+ if (u[r.x + "_" + r.y + "_" + Number(r.scale)]) {
1114
+ if (((S = d.hotmap) == null ? void 0 : S.type) === "switch")
1115
+ return d.tileHandle(o);
1116
+ if (((H = d.hotmap) == null ? void 0 : H.type) === "drag")
1117
+ return c(i, o), i;
1118
+ }
1119
+ } else return ((E = d.hotmap) == null ? void 0 : E.type) === "switch" ? d.tileHandle(o) : (((P = d.hotmap) == null ? void 0 : P.type) === "drag" && c(i, o), i);
1120
+ }
1121
+ function c(i, r) {
1122
+ const u = a.value.find((o) => o.url === i) || {
1123
+ url: i,
1124
+ x: r.x,
1125
+ y: r.y,
1126
+ img: void 0,
1127
+ load: ""
1128
+ };
1129
+ if (!(u != null && u.img) && (a.value.push(u), u.load !== "success")) {
1130
+ const o = new Image();
1131
+ o.src = d.tileHandle(r), o.onload = () => {
1132
+ u.load = "success";
1133
+ }, u.img = o;
1134
+ }
1135
+ }
1136
+ function l(i) {
1137
+ f.value && m && (t.value += i.x - m.x, t.value < 0 ? t.value = 0 : t.value > e.value.$options.width && (t.value = e.value.$options.width, f.value = !1), e.value.viewer.forceRedraw()), m = { x: i.x, y: i.y };
1138
+ }
1139
+ function h(i) {
1140
+ const { x: r, y: u } = i;
1141
+ f.value = !0, m = { x: r, y: u };
1142
+ }
1143
+ function p() {
1144
+ f.value = !1, m = null;
1145
+ }
1146
+ function n(i) {
1147
+ const {
1148
+ context: r,
1149
+ sourceWidth: u,
1150
+ sourceHeight: o,
1151
+ position: w,
1152
+ size: _,
1153
+ initRendered: S,
1154
+ tile: H,
1155
+ pixelDensityRatio: E
1156
+ } = i, P = H.getUrl(), L = t.value * E, ee = w.original.x;
1157
+ if (ee < L && ee + _.x > L) {
1158
+ const W = L - ee, ae = _.x - W, se = a.value.find((Te) => Te.url === P), ye = (se == null ? void 0 : se.load) === "success" ? se.img : S.canvas;
1159
+ r.drawImage(
1160
+ ye,
1161
+ 0,
1162
+ 0,
1163
+ u * W / _.x,
1164
+ o,
1165
+ w.x,
1166
+ w.y,
1167
+ W,
1168
+ _.y
1169
+ ), r.drawImage(
1170
+ S.canvas,
1171
+ u * W / _.x,
1172
+ 0,
1173
+ u * ae / _.x,
1174
+ o,
1175
+ w.x + W,
1176
+ w.y,
1177
+ ae,
1178
+ _.y
1179
+ );
1180
+ } else if (ee + _.x <= L) {
1181
+ const W = a.value.find((se) => se.url === P), ae = (W == null ? void 0 : W.load) === "success" ? W.img : S.canvas;
1182
+ r.drawImage(
1183
+ ae,
1184
+ 0,
1185
+ 0,
1186
+ u,
1187
+ o,
1188
+ w.x,
1189
+ w.y,
1190
+ _.x,
1191
+ _.y
1192
+ );
1193
+ } else ee >= L && r.drawImage(
1194
+ S.canvas,
1195
+ 0,
1196
+ 0,
1197
+ u,
1198
+ o,
1199
+ w.x,
1200
+ w.y,
1201
+ _.x,
1202
+ _.y
1203
+ );
1204
+ }
1205
+ return {
1206
+ getHotmapUrl: v,
1207
+ hotmapImgs: a,
1208
+ handlerImage: n,
1209
+ hotmapLine: t,
1210
+ lineMouseDown: h
1211
+ };
1212
+ }
1213
+ function lo(d, e, a) {
1214
+ const t = jt(), f = x(!1), m = new BroadcastChannel("sync_kfb_view");
1215
+ m.onmessage = (n) => {
1216
+ const i = n.data;
1217
+ h(i);
1218
+ }, fe(() => {
1219
+ var n, i, r;
1220
+ (n = a.value) == null || n.addEventListener("mouseenter", v), (i = a.value) == null || i.addEventListener("mousemove", v), (r = a.value) == null || r.addEventListener("mouseleave", c);
1221
+ }), $e(() => {
1222
+ var n, i, r;
1223
+ (n = a.value) == null || n.removeEventListener("mouseenter", v), (i = a.value) == null || i.removeEventListener("mousemove", v), (r = a.value) == null || r.removeEventListener("mouseleave", c), m.close();
1224
+ });
1225
+ function v() {
1226
+ f.value = !0;
1227
+ }
1228
+ function c() {
1229
+ f.value = !1;
1230
+ }
1231
+ function l() {
1232
+ let n;
1233
+ e.value.viewer.addHandler("pan", (i) => {
1234
+ var o, w, _, S;
1235
+ if (!n) {
1236
+ n = (w = (o = i.center) == null ? void 0 : o.clone) == null ? void 0 : w.call(o);
1237
+ return;
1238
+ }
1239
+ const r = i.center, u = (_ = r == null ? void 0 : r.minus) == null ? void 0 : _.call(r, n);
1240
+ n = (S = r == null ? void 0 : r.clone) == null ? void 0 : S.call(r), d.syncPosition && p({
1241
+ position: u,
1242
+ type: "sync_position"
1243
+ });
1244
+ }), e.value.viewer.addHandler("zoom", (i) => {
1245
+ d.syncZoom && p({
1246
+ zoom: i.zoom,
1247
+ type: "sync_zoom"
1248
+ });
1249
+ }), e.value.viewer.addHandler("animation-finish", () => {
1250
+ var u;
1251
+ if (d.syncZoom && p({
1252
+ zoom: e.value.viewer.viewport.getZoom(!0),
1253
+ type: "sync_zoom"
1254
+ }), !n)
1255
+ return;
1256
+ const i = e.value.viewer.viewport.getCenter(!0), r = (u = i == null ? void 0 : i.minus) == null ? void 0 : u.call(i, n);
1257
+ n = void 0, d.syncPosition && p({
1258
+ position: r,
1259
+ type: "sync_position"
1260
+ });
1261
+ });
1262
+ }
1263
+ function h(n) {
1264
+ n.uuid && n.type === "sync_position" && n.uuid !== (t == null ? void 0 : t.uid) ? e.value && e.value.viewer.viewport.panBy(n.position, !0) : n.uuid && n.type === "sync_zoom" && n.uuid !== (t == null ? void 0 : t.uid) && e.value && e.value.viewer.viewport.zoomTo(n.zoom);
1265
+ }
1266
+ function p(n) {
1267
+ var i;
1268
+ f.value && m.postMessage(ve(Z({}, n), {
1269
+ uuid: t == null ? void 0 : t.uid,
1270
+ fileName: (i = d.slide) == null ? void 0 : i.file
1271
+ }));
1272
+ }
1273
+ return {
1274
+ initSync: l
1275
+ };
1276
+ }
1277
+ const oo = { class: "hzzt-kfb-keyword flex wrap" }, no = ["onMouseenter"], ao = /* @__PURE__ */ Q({
1278
+ __name: "KfbKeyword",
1279
+ setup(d) {
1280
+ const e = x([
1281
+ { code: "Q", icon: "zoomIn" },
1282
+ { code: "W", icon: "arrowUp" },
1283
+ { code: "E", icon: "zoomOut" },
1284
+ { code: "A", icon: "arrowLeft" },
1285
+ { code: "S", icon: "arrowDown" },
1286
+ { code: "D", icon: "arrowRight" }
1287
+ ]), a = q("kfbView", x({}));
1288
+ let t = null;
1289
+ function f(v, c) {
1290
+ v.preventDefault(), t && clearTimeout(t), t = setInterval(() => {
1291
+ c === "E" && (a.value.viewer.viewport.zoomBy(1.1), a.value.viewer.viewport.applyConstraints()), c === "Q" && (a.value.viewer.viewport.zoomBy(0.9), a.value.viewer.viewport.applyConstraints()), c === "W" && (a.value.viewer.viewport.panBy(a.value.viewer.viewport.deltaPointsFromPixels(new be.Point(0, -40))), a.value.viewer.viewport.applyConstraints()), c === "S" && (a.value.viewer.viewport.panBy(a.value.viewer.viewport.deltaPointsFromPixels(new be.Point(0, 40))), a.value.viewer.viewport.applyConstraints()), c === "A" && (a.value.viewer.viewport.panBy(a.value.viewer.viewport.deltaPointsFromPixels(new be.Point(-40, 0))), a.value.viewer.viewport.applyConstraints()), c === "D" && (a.value.viewer.viewport.panBy(a.value.viewer.viewport.deltaPointsFromPixels(new be.Point(40, 0))), a.value.viewer.viewport.applyConstraints());
1292
+ }, 120);
1293
+ }
1294
+ function m() {
1295
+ t && (clearInterval(t), t = null);
1296
+ }
1297
+ return $e(() => {
1298
+ clearTimeout(t);
1299
+ }), (v, c) => (g(), $("div", oo, [
1300
+ (g(!0), $(oe, null, ne(e.value, (l) => (g(), $("div", {
1301
+ key: l.code,
1302
+ class: "hzzt-kfb-keyword__code flex column align-items-center justify-content-center",
1303
+ onMouseenter: (h) => f(h, l.code),
1304
+ onMouseleave: m
1305
+ }, [
1306
+ y("p", null, T(l.code), 1),
1307
+ b(Y, {
1308
+ size: "14",
1309
+ name: l.icon
1310
+ }, null, 8, ["name"])
1311
+ ], 40, no))), 128))
1312
+ ]));
1313
+ }
1314
+ }), so = /* @__PURE__ */ we(ao, [["__scopeId", "data-v-c8d940f0"]]);
1315
+ function io(d, e, a = {}) {
1316
+ const {
1317
+ panSensitivity: t = 0.2,
1318
+ // 值越大,鼠标移动时图像移动越快
1319
+ zoomSensitivity: f = 1.1,
1320
+ // 值越大,滚轮缩放幅度越大
1321
+ damping: m = 0.6,
1322
+ // 值越大,惯性滑动时间越长
1323
+ minThreshold: v = 0.05
1324
+ // 值越小,停止移动时的精度越高
1325
+ } = a;
1326
+ let c = !1, l = null, h = 0, p = 0, n = !1;
1327
+ const i = () => {
1328
+ c = document.pointerLockElement === e.value, c || r();
1329
+ }, r = () => {
1330
+ h = 0, p = 0, l && (cancelAnimationFrame(l), l = null), n = !1;
1331
+ }, u = (H) => Oe(this, null, function* () {
1332
+ try {
1333
+ H.key === "l" && e.value && (document.pointerLockElement ? (document.exitPointerLock(), console.log("鼠标已解锁!")) : (yield e.value.requestPointerLock(), console.log("鼠标已锁定!")));
1334
+ } catch (E) {
1335
+ console.error("无法锁定鼠标:", E);
1336
+ }
1337
+ }), o = (H) => {
1338
+ if (c) {
1339
+ H.preventDefault();
1340
+ const E = Math.pow(f, Math.sign(H.deltaY) * -1);
1341
+ d.value.viewer.viewport.zoomBy(E), d.value.viewer.viewport.applyConstraints();
1342
+ }
1343
+ }, w = (H) => {
1344
+ c && (h += H.movementX * t, p += H.movementY * t, !n && (Math.abs(h) > 1 || Math.abs(p) > 1) && (n = !0, l = requestAnimationFrame(_)));
1345
+ }, _ = () => {
1346
+ const H = d.value.viewer.viewport;
1347
+ if (Math.abs(h) > v || Math.abs(p) > v) {
1348
+ const E = H.deltaPointsFromPixels(
1349
+ new be.Point(h, p)
1350
+ );
1351
+ H.panBy(E), H.applyConstraints();
1352
+ }
1353
+ h *= m, p *= m, Math.abs(h) > v || Math.abs(p) > v ? l = requestAnimationFrame(_) : r();
1354
+ }, S = () => {
1355
+ c && document.exitPointerLock();
1356
+ };
1357
+ return fe(() => {
1358
+ var H;
1359
+ (H = e.value) == null || H.addEventListener("keydown", u), document.addEventListener("wheel", o, { passive: !1 }), document.addEventListener("click", S), document.addEventListener("mousemove", w), document.addEventListener("pointerlockchange", i);
1360
+ }), $e(() => {
1361
+ var H;
1362
+ (H = e.value) == null || H.removeEventListener("keydown", u), document.removeEventListener("click", S), document.removeEventListener("wheel", o), document.removeEventListener("mousemove", w), document.removeEventListener("pointerlockchange", i), r();
1363
+ }), {
1364
+ setConfig: (H) => {
1365
+ Object.assign(a, H);
1366
+ }
1367
+ };
1368
+ }
1369
+ const ro = /* @__PURE__ */ Q({
1370
+ __name: "KfbLevel",
1371
+ props: /* @__PURE__ */ Me({
1372
+ slides: { default: () => [] }
1373
+ }, {
1374
+ "model-value": {
1375
+ default: 0
1376
+ },
1377
+ "model-valueModifiers": {}
1378
+ }),
1379
+ emits: ["update:model-value"],
1380
+ setup(d) {
1381
+ const e = d, a = Ee(d, "model-value"), t = q("kfbView", x({})), f = N(() => Array.from(new Array(e.slides.length + 1)).map((v, c) => c));
1382
+ function m() {
1383
+ const v = t.value.viewer.world.getItemAt(0), c = Object.keys(v.tilesMatrix);
1384
+ c.forEach((l, h) => {
1385
+ h > c.length - 4 && (v.tilesMatrix[l] = {});
1386
+ }), v.draw();
1387
+ }
1388
+ return (v, c) => (g(), $("div", {
1389
+ class: Ie(["hzzt-kfb-level flex column align-items-center", v.slides.length > 5 ? "hzzt-kfb-level--large" : ""])
1390
+ }, [
1391
+ b(Y, {
1392
+ name: "level",
1393
+ size: "24",
1394
+ class: "margin-b-4 margin-t-2"
1395
+ }),
1396
+ b(s(qt), {
1397
+ modelValue: a.value,
1398
+ "onUpdate:modelValue": c[0] || (c[0] = (l) => a.value = l),
1399
+ vertical: "",
1400
+ min: f.value[0],
1401
+ step: 1,
1402
+ max: f.value[f.value.length - 1],
1403
+ "show-stops": "",
1404
+ "show-tooltip": !0,
1405
+ placement: "left",
1406
+ height: v.slides.length > 5 ? "180px" : "130px",
1407
+ onInput: m
1408
+ }, null, 8, ["modelValue", "min", "max", "height"])
1409
+ ], 2));
1410
+ }
1411
+ }), uo = {
1412
+ key: 0,
1413
+ class: "flex hzzt-kfb-channel"
1414
+ }, co = ["onClick"], vo = /* @__PURE__ */ Q({
1415
+ __name: "KfbChannel",
1416
+ props: /* @__PURE__ */ Me({
1417
+ info: {}
1418
+ }, {
1419
+ "model-value": {
1420
+ default: () => []
1421
+ },
1422
+ "model-valueModifiers": {}
1423
+ }),
1424
+ emits: /* @__PURE__ */ Me(["load"], ["update:model-value"]),
1425
+ setup(d, { emit: e }) {
1426
+ const a = d, t = e, f = Ee(d, "model-value"), m = [
1427
+ { key: "DAPI", color: "#4A6CF7" },
1428
+ { key: "480", color: "#00BFFF" },
1429
+ { key: "520", color: "#32CD32" },
1430
+ { key: "570", color: "#FFAA33" },
1431
+ { key: "620", color: "#FF6347" },
1432
+ { key: "670", color: "#DC143C" },
1433
+ { key: "780", color: "#4B0082" }
1434
+ ], v = N(() => {
1435
+ var l;
1436
+ return (((l = a.info) == null ? void 0 : l.channel) || []).map((h) => {
1437
+ const p = m.find((n) => n.key === h.eqt_num);
1438
+ return {
1439
+ label: h.eqt_num,
1440
+ color: h.r ? `rgb(${h.r}, ${h.g}, ${h.b})` : p == null ? void 0 : p.color
1441
+ };
1442
+ });
1443
+ });
1444
+ function c(l) {
1445
+ f.value.includes(l) ? f.value = f.value.filter((h) => h !== l) : f.value.push(l), t("load");
1446
+ }
1447
+ return (l, h) => v.value.length > 0 ? (g(), $("div", uo, [
1448
+ b(Y, {
1449
+ name: "channel",
1450
+ size: "32"
1451
+ }),
1452
+ (g(!0), $(oe, null, ne(v.value, (p) => (g(), $("div", {
1453
+ key: p.label,
1454
+ style: X({ background: p.color }),
1455
+ class: Ie(["hzzt-kfb-channel__box", f.value.includes(p.label) ? "" : "hzzt-kfb-channel__box--unactive"]),
1456
+ onClick: (n) => c(p.label)
1457
+ }, T(p.label), 15, co))), 128))
1458
+ ])) : A("", !0);
1459
+ }
1460
+ }), fo = ["element-loading-text"], mo = {
1461
+ key: 1,
1462
+ class: "hzzt-kfb-view__main flex align-items-center justify-content-center"
1463
+ }, po = {
1464
+ class: "hzzt-kfb-view__filter",
1465
+ height: "0",
1466
+ width: "0"
1467
+ }, ho = { id: "colorMatrixFilter" }, go = ["values"], wo = ["values"], yo = ["exponent"], _o = ["exponent"], bo = ["exponent"], ko = { class: "flex nowrap justify-content-center overflow-hidden" }, zo = ["src"], xo = ["src"], Co = { class: "flex-1" }, $o = { class: "flex-1" }, To = { class: "flex-1" }, Lo = { class: "flex-1" }, Vo = { class: "flex-1" }, Eo = { class: "flex-1" }, Mo = ["src"], Ce = /* @__PURE__ */ Q({
1468
+ name: "HzztKfbView",
1469
+ __name: "index",
1470
+ props: {
1471
+ slide: {},
1472
+ fileHandle: {},
1473
+ labelHandle: {},
1474
+ tileHandle: {},
1475
+ navigatorHandle: {},
1476
+ pathologyHandle: {},
1477
+ uploadHandle: {},
1478
+ options: {},
1479
+ labelDrawing: {},
1480
+ process: { default: () => Z({}, ht) },
1481
+ microscope: { default: () => Z({}, qe) },
1482
+ menus: {},
1483
+ aiLabelList: {},
1484
+ hotmap: {},
1485
+ syncPosition: { type: Boolean },
1486
+ syncZoom: { type: Boolean }
1487
+ },
1488
+ emits: ["tool"],
1489
+ setup(d, { expose: e, emit: a }) {
1490
+ const t = d, f = a, { t: m, locale: v } = me(), c = x(), l = x(), h = x(), p = x(!1), n = x({}), i = x(!1), r = x(0), u = x(0), o = x(0), w = x([]), _ = x({
1491
+ width: 0,
1492
+ height: 0,
1493
+ fileNum: 0,
1494
+ scanScale: 1,
1495
+ fileName: "",
1496
+ ratiomap: {}
1497
+ }), S = q("show-kfb-label", x(!0)), H = q("show-keyboard", x(!1)), E = q("hidden-all-label", x(!1)), P = Yt.directive;
1498
+ J(() => {
1499
+ var k;
1500
+ return (k = t.slide) == null ? void 0 : k.file;
1501
+ }, () => {
1502
+ Ht(), setTimeout(() => {
1503
+ Je();
1504
+ }, 100);
1505
+ }), fe(() => {
1506
+ Je();
1507
+ });
1508
+ const {
1509
+ imageProcess: L,
1510
+ matrixValues: ee,
1511
+ saturateValues: W,
1512
+ forceRedraw: ae
1513
+ } = pl(t), {
1514
+ tailorEvent: se,
1515
+ shotScreen: ye
1516
+ } = hl(f, n), {
1517
+ moveEvent: Te,
1518
+ fastMove: Ze
1519
+ } = Xl(n, u), {
1520
+ currentLabel: z,
1521
+ voiceVisible: R,
1522
+ labelForm: D,
1523
+ initLabel: ie,
1524
+ selectLabel: Le,
1525
+ reloadLabelList: gt,
1526
+ eventHandel: wt,
1527
+ addHandle: yt
1528
+ } = Ql(t, f, n), { initSync: _t } = lo(t, n, c);
1529
+ io(n, c);
1530
+ const { drawDot: bt } = Jl(), {
1531
+ drawVoice: kt,
1532
+ isRecording: zt,
1533
+ startRecording: xt,
1534
+ stopRecording: Ct
1535
+ } = eo(t, D), {
1536
+ getHotmapUrl: $t,
1537
+ handlerImage: Tt,
1538
+ hotmapLine: Lt,
1539
+ lineMouseDown: Qe,
1540
+ hotmapImgs: Vt
1541
+ } = to(t, n);
1542
+ function Je() {
1543
+ var k;
1544
+ (k = t.slide) != null && k.file && t.fileHandle && (i.value || (i.value = !0, t.fileHandle(t.slide).then((V) => {
1545
+ var j, te, de, F;
1546
+ _.value = V, w.value = (((j = _.value) == null ? void 0 : j.channel) || []).map((K) => K.eqt_num), n.value = new ue(Z({
1547
+ el: l.value,
1548
+ fileName: (te = t.slide) == null ? void 0 : te.file,
1549
+ scale: _.value.scanScale,
1550
+ lang: (v == null ? void 0 : v.value) === "en-US" ? "en" : v == null ? void 0 : v.value,
1551
+ navigator: {
1552
+ style: "left: 0;bottom: 0",
1553
+ thumbnail: _.value.thumbnailImg,
1554
+ width: 200,
1555
+ height: 180
1556
+ },
1557
+ grid: {
1558
+ show: !1,
1559
+ ruler: !1,
1560
+ pxConversion: !0
1561
+ },
1562
+ thumb: {
1563
+ bgColor: "rgba(0,0,0,0)"
1564
+ },
1565
+ graduation: {
1566
+ show: !0,
1567
+ right: 120,
1568
+ bottom: (F = (de = _.value) == null ? void 0 : de.channel) != null && F.length ? 120 : 30,
1569
+ tick: {
1570
+ number: 3,
1571
+ height: 8
1572
+ }
1573
+ },
1574
+ pxConversion: {
1575
+ units: ["um", "mm"],
1576
+ binary: 1e3,
1577
+ imageCapRes: _.value.imageCapRes || _.value.scanResolution || 1
1578
+ },
1579
+ openSeadragonOptions: {
1580
+ maxZoomLevel: _.value.scanScale * 20,
1581
+ pixelsPerArrowPress: 200,
1582
+ animationTime: 0,
1583
+ tileSources: et()
1584
+ },
1585
+ tileDrawing: Tt,
1586
+ label: {
1587
+ drawing: (K, U, _e) => {
1588
+ var Se;
1589
+ if (U != null && U.custom) {
1590
+ const G = K.getContext("2d");
1591
+ G.save(), G.beginPath();
1592
+ const Ve = (U == null ? void 0 : U.subType) || ((Se = U == null ? void 0 : U.__data__) == null ? void 0 : Se.subType);
1593
+ Ve === "count" ? (G.translate(_e.x - 14, _e.y - 22), bt(G, (U == null ? void 0 : U.strokeStyle) || "")) : Ve === "voice" ? (G.translate(_e.x - 16, _e.y - 18), kt(G, (U == null ? void 0 : U.strokeStyle) || "")) : t.labelDrawing && t.labelDrawing(G, U), G.restore();
1594
+ }
1595
+ }
1596
+ }
1597
+ }, t.options || {})), n.value.viewer.drawer.canvas.style.filter = "url(#colorMatrixFilter)", ie(), Mt(), _t();
1598
+ }).finally(() => {
1599
+ i.value = !1, E.value && (nt({
1600
+ show: !1,
1601
+ ruler: !1
1602
+ }), at({
1603
+ show: !1
1604
+ }), setTimeout(() => {
1605
+ st(!1);
1606
+ }, 100));
1607
+ })));
1608
+ }
1609
+ function Et() {
1610
+ const k = n.value.viewer;
1611
+ if (k.world) {
1612
+ const V = k.world.getItemAt(0), j = k.viewport.getZoom(), te = k.viewport.getCenter();
1613
+ k.world.removeItem(V), k.addTiledImage({
1614
+ tileSource: et(),
1615
+ success: function() {
1616
+ k.viewport.zoomTo(j), k.viewport.panTo(te);
1617
+ }
1618
+ });
1619
+ }
1620
+ }
1621
+ function et() {
1622
+ var de, F;
1623
+ const k = _.value.tileWidth || _.value.imageBlockLen || 256, V = _.value.tileHeight || _.value.imageBlockLen || 256, j = {};
1624
+ (de = t.hotmap) != null && de.enable && (((F = t.hotmap) == null ? void 0 : F.info) || []).forEach((K) => {
1625
+ j[K[0] / k + "_" + K[1] / V + "_" + K[2]] = !0;
1626
+ });
1627
+ let te = 10;
1628
+ return Object.keys(_.value.ratiomap).forEach((K) => {
1629
+ const U = _.value.fileNum - Math.sqrt(_.value.scanScale / Number(K));
1630
+ U > 0 && (te = te ? Math.min(te, U) : U);
1631
+ }), {
1632
+ height: _.value.height,
1633
+ width: _.value.width,
1634
+ tileWidth: k,
1635
+ tileHeight: V,
1636
+ minLevel: Math.floor(te || 8),
1637
+ getTileUrl: (K, U, _e) => {
1638
+ var it, rt, ut, ct;
1639
+ const Se = K, G = {
1640
+ file: ((it = t.slide) == null ? void 0 : it.file) || "",
1641
+ x: U,
1642
+ y: _e,
1643
+ scale: "0",
1644
+ level: K,
1645
+ channel: JSON.stringify(w.value)
1646
+ };
1647
+ _.value.fileNum === K ? (K = _.value.scanScale, G.scale = K.toFixed(6)) : (K = _.value.scanScale / Math.pow(2, _.value.fileNum - K), G.scale = K.toFixed(6)), G.level = Se, G.file = o.value === 0 ? G.file : ((ut = (rt = t.slide) == null ? void 0 : rt.children) == null ? void 0 : ut[o.value - 1]) || "";
1648
+ const Ve = t.tileHandle(G);
1649
+ return (ct = t.hotmap) != null && ct.enable ? $t(Ve, G, j) : Ve;
1650
+ }
1651
+ };
1652
+ }
1653
+ function Mt() {
1654
+ n.value.viewer.addHandler("rotate", (k) => {
1655
+ r.value = k.degrees || 0;
1656
+ }), n.value.viewer.addHandler("zoom", (k) => {
1657
+ const V = n.value.viewer.viewport.viewportToImageZoom(
1658
+ k.zoom || 0
1659
+ ) * Number(n.value.$options.scale);
1660
+ u.value = Number(V.toFixed(2));
1661
+ }), n.value.$on(ue.events.EVENT_NAVIGATOR_VESTIGE, (k) => {
1662
+ t.navigatorHandle && t.navigatorHandle("add", t.slide, k);
1663
+ }), t.navigatorHandle && t.navigatorHandle("list", t.slide).then((k) => {
1664
+ var V, j;
1665
+ (j = (V = n.value.navigator) == null ? void 0 : V.drawPointList) == null || j.call(V, k);
1666
+ }), se(), Te();
1667
+ }
1668
+ function Ht() {
1669
+ var k;
1670
+ (k = n.value) != null && k.destroy && (n.value.destroy(), n.value = {}, _.value = {
1671
+ width: 0,
1672
+ height: 0,
1673
+ fileNum: 0,
1674
+ scanScale: 1,
1675
+ fileName: "",
1676
+ ratiomap: {}
1677
+ }, Vt.value = [], w.value = [], u.value = 0, r.value = 0, o.value = 0);
1678
+ }
1679
+ function tt(k, V) {
1680
+ k === "annotate" ? lt(V) : k === "tailor" ? ye(V) : k === "info" ? p.value = !0 : k === "flip" ? ot() : k === "delete" ? wt("delete")(z.value) : f("tool", k, V);
1681
+ }
1682
+ function lt(k) {
1683
+ k.tool === "Voice" && (k.subType = "voice", k.tool = "Dot", k.custom = !0), n.value.board.startDraw(k);
1684
+ }
1685
+ function It() {
1686
+ n.value.board.endDraw();
1687
+ }
1688
+ function ot() {
1689
+ n.value.viewer.viewport.toggleFlip();
1690
+ }
1691
+ function St(k) {
1692
+ var V, j;
1693
+ (j = (V = h.value) == null ? void 0 : V.scopeChange) == null || j.call(V, k);
1694
+ }
1695
+ function Pt() {
1696
+ p.value = !0;
1697
+ }
1698
+ function nt(k) {
1699
+ n.value.grid.updated(k);
1700
+ }
1701
+ function at(k) {
1702
+ n.value.graduation.updated(k);
1703
+ }
1704
+ function st(k) {
1705
+ n.value.navigator.element.style.display = k ? "flex" : "none";
1706
+ }
1707
+ function At(k) {
1708
+ const V = n.value.viewer.viewport.imageToViewportZoom(Number(k / n.value.$options.scale));
1709
+ n.value.viewer.viewport.zoomTo(V);
1710
+ }
1711
+ return re("kfbView", n), re("currentLabel", z), e({
1712
+ kfbView: n,
1713
+ degrees: r,
1714
+ zoom: u,
1715
+ forceRedraw: ae,
1716
+ toggleFlip: ot,
1717
+ startDraw: lt,
1718
+ endDraw: It,
1719
+ shotScreen: ye,
1720
+ info: Pt,
1721
+ scopeChange: St,
1722
+ updateGrid: nt,
1723
+ updateGraduation: at,
1724
+ updateNavigator: st,
1725
+ fastMove: Ze,
1726
+ zoomTo: At,
1727
+ selectLabel: Le,
1728
+ reloadLabelList: gt
1729
+ }), (k, V) => {
1730
+ var j, te, de;
1731
+ return g(), $("div", {
1732
+ ref_key: "mainKfbViewRef",
1733
+ ref: c,
1734
+ class: "hzzt-kfb-view"
1735
+ }, [
1736
+ k.slide.file ? Be((g(), $("div", {
1737
+ key: 0,
1738
+ ref_key: "kfbViewMainRef",
1739
+ ref: l,
1740
+ class: "hzzt-kfb-view__main",
1741
+ "element-loading-text": s(m)("加载中"),
1742
+ "element-loading-background": "rgba(0, 0, 0, 0.8)"
1743
+ }, null, 8, fo)), [
1744
+ [s(P), i.value]
1745
+ ]) : (g(), $("div", mo, V[6] || (V[6] = [
1746
+ y("img", {
1747
+ style: { width: "50%" },
1748
+ src: Xe
1749
+ }, null, -1)
1750
+ ]))),
1751
+ k.slide.analysis && k.slide.analysis.result ? (g(), I(s(pt), {
1752
+ key: 2,
1753
+ class: "hzzt-kfb-view__tag"
1754
+ }, {
1755
+ default: C(() => [
1756
+ O(T(k.slide.analysis.result), 1)
1757
+ ]),
1758
+ _: 1
1759
+ })) : A("", !0),
1760
+ (g(), $("svg", po, [
1761
+ y("filter", ho, [
1762
+ y("feColorMatrix", {
1763
+ values: s(ee),
1764
+ type: "matrix"
1765
+ }, null, 8, go),
1766
+ y("feColorMatrix", {
1767
+ values: s(W),
1768
+ type: "saturate"
1769
+ }, null, 8, wo),
1770
+ y("feComponentTransfer", null, [
1771
+ y("feFuncR", {
1772
+ id: "feFuncR",
1773
+ type: "gamma",
1774
+ exponent: s(L).ga,
1775
+ amplitude: "1",
1776
+ offset: "0"
1777
+ }, null, 8, yo),
1778
+ y("feFuncG", {
1779
+ id: "feFuncG",
1780
+ type: "gamma",
1781
+ exponent: s(L).ga,
1782
+ amplitude: "1",
1783
+ offset: "0"
1784
+ }, null, 8, _o),
1785
+ y("feFuncB", {
1786
+ id: "feFuncB",
1787
+ type: "gamma",
1788
+ exponent: s(L).ga,
1789
+ amplitude: "1",
1790
+ offset: "0"
1791
+ }, null, 8, bo)
1792
+ ])
1793
+ ])
1794
+ ])),
1795
+ b(Rl, {
1796
+ menus: k.menus,
1797
+ onTool: tt
1798
+ }, null, 8, ["menus"]),
1799
+ b(Dl, De(k.microscope, {
1800
+ ref_key: "microscopeRef",
1801
+ ref: h
1802
+ }), null, 16),
1803
+ s(S) && k.slide.file ? (g(), I(Yl, {
1804
+ key: 3,
1805
+ info: _.value,
1806
+ slide: k.slide,
1807
+ pathologyHandle: k.pathologyHandle,
1808
+ onTool: tt
1809
+ }, null, 8, ["info", "slide", "pathologyHandle"])) : A("", !0),
1810
+ s(H) ? (g(), I(so, { key: 4 })) : A("", !0),
1811
+ (j = k.slide.children) != null && j.length ? (g(), I(ro, {
1812
+ key: 5,
1813
+ modelValue: o.value,
1814
+ "onUpdate:modelValue": V[0] || (V[0] = (F) => o.value = F),
1815
+ slides: k.slide.children
1816
+ }, null, 8, ["modelValue", "slides"])) : A("", !0),
1817
+ (de = (te = _.value) == null ? void 0 : te.channel) != null && de.length ? (g(), I(vo, {
1818
+ key: 6,
1819
+ modelValue: w.value,
1820
+ "onUpdate:modelValue": V[1] || (V[1] = (F) => w.value = F),
1821
+ info: _.value,
1822
+ onLoad: Et
1823
+ }, null, 8, ["modelValue", "info"])) : A("", !0),
1824
+ b(s(Ue), {
1825
+ modelValue: p.value,
1826
+ "onUpdate:modelValue": V[2] || (V[2] = (F) => p.value = F),
1827
+ "append-to-body": !0,
1828
+ title: s(m)("图像信息"),
1829
+ width: "700px",
1830
+ top: "5vh"
1831
+ }, {
1832
+ default: C(() => [
1833
+ b(s(We), { "label-position": "left" }, {
1834
+ default: C(() => [
1835
+ b(s(le), {
1836
+ class: "flex",
1837
+ "label-width": "0px"
1838
+ }, {
1839
+ default: C(() => [
1840
+ y("div", ko, [
1841
+ y("img", {
1842
+ src: _.value.labelImg,
1843
+ style: { height: "180px" }
1844
+ }, null, 8, zo),
1845
+ y("img", {
1846
+ src: _.value.previewImg,
1847
+ style: { height: "180px" },
1848
+ class: "flex-1"
1849
+ }, null, 8, xo)
1850
+ ])
1851
+ ]),
1852
+ _: 1
1853
+ }),
1854
+ b(s(le), {
1855
+ label: s(m)("文件名")
1856
+ }, {
1857
+ default: C(() => [
1858
+ y("span", Co, T(_.value.fileName), 1)
1859
+ ]),
1860
+ _: 1
1861
+ }, 8, ["label"]),
1862
+ b(s(le), {
1863
+ label: s(m)("图像像素")
1864
+ }, {
1865
+ default: C(() => [
1866
+ y("span", $o, T(_.value.width) + "Pixel - " + T(_.value.height) + "Pixel", 1)
1867
+ ]),
1868
+ _: 1
1869
+ }, 8, ["label"]),
1870
+ b(s(le), {
1871
+ label: s(m)("扫描倍率")
1872
+ }, {
1873
+ default: C(() => [
1874
+ y("span", To, T(_.value.scanScale), 1)
1875
+ ]),
1876
+ _: 1
1877
+ }, 8, ["label"]),
1878
+ b(s(le), {
1879
+ label: s(m)("扫描时刻")
1880
+ }, {
1881
+ default: C(() => [
1882
+ y("span", Lo, T(_.value.scanTime), 1)
1883
+ ]),
1884
+ _: 1
1885
+ }, 8, ["label"]),
1886
+ b(s(le), {
1887
+ label: s(m)("扫描时间")
1888
+ }, {
1889
+ default: C(() => [
1890
+ y("span", Vo, T(_.value.scanDuration || 0) + "s", 1)
1891
+ ]),
1892
+ _: 1
1893
+ }, 8, ["label"]),
1894
+ _.value.ext ? (g(), I(s(le), {
1895
+ key: 0,
1896
+ label: s(m)("扫描设备")
1897
+ }, {
1898
+ default: C(() => [
1899
+ y("span", Eo, T(_.value.ext.machineNum || ""), 1)
1900
+ ]),
1901
+ _: 1
1902
+ }, 8, ["label"])) : A("", !0)
1903
+ ]),
1904
+ _: 1
1905
+ })
1906
+ ]),
1907
+ _: 1
1908
+ }, 8, ["modelValue", "title"]),
1909
+ b(s(Ue), {
1910
+ modelValue: s(R),
1911
+ "onUpdate:modelValue": V[5] || (V[5] = (F) => xe(R) ? R.value = F : null),
1912
+ "append-to-body": !0,
1913
+ title: s(m)("语音输入"),
1914
+ width: "500px",
1915
+ top: "5vh"
1916
+ }, {
1917
+ footer: C(() => [
1918
+ b(s(he), {
1919
+ onClick: V[3] || (V[3] = (F) => R.value = !1)
1920
+ }, {
1921
+ default: C(() => [
1922
+ O(T(s(m)("取消")), 1)
1923
+ ]),
1924
+ _: 1
1925
+ }),
1926
+ b(s(he), {
1927
+ type: "primary",
1928
+ onClick: V[4] || (V[4] = (F) => s(yt)(s(D)))
1929
+ }, {
1930
+ default: C(() => [
1931
+ O(T(s(m)("确定")), 1)
1932
+ ]),
1933
+ _: 1
1934
+ })
1935
+ ]),
1936
+ default: C(() => [
1937
+ b(s(We), { "label-position": "left" }, {
1938
+ default: C(() => [
1939
+ b(s(le), null, {
1940
+ default: C(() => {
1941
+ var F;
1942
+ return [
1943
+ (F = s(D)) != null && F.src ? (g(), $("audio", {
1944
+ key: 0,
1945
+ class: "width-100%",
1946
+ src: s(D).src,
1947
+ controls: "",
1948
+ preload: "auto"
1949
+ }, null, 8, Mo)) : A("", !0)
1950
+ ];
1951
+ }),
1952
+ _: 1
1953
+ }),
1954
+ b(s(le), null, {
1955
+ default: C(() => [
1956
+ s(zt) ? (g(), I(s(he), {
1957
+ key: 1,
1958
+ type: "danger",
1959
+ onClick: s(Ct)
1960
+ }, {
1961
+ default: C(() => [
1962
+ O(T(s(m)("结束录音")), 1)
1963
+ ]),
1964
+ _: 1
1965
+ }, 8, ["onClick"])) : (g(), I(s(he), {
1966
+ key: 0,
1967
+ type: "primary",
1968
+ onClick: s(xt)
1969
+ }, {
1970
+ default: C(() => [
1971
+ O(T(s(m)("开始录音")), 1)
1972
+ ]),
1973
+ _: 1
1974
+ }, 8, ["onClick"]))
1975
+ ]),
1976
+ _: 1
1977
+ })
1978
+ ]),
1979
+ _: 1
1980
+ })
1981
+ ]),
1982
+ _: 1
1983
+ }, 8, ["modelValue", "title"]),
1984
+ k.hotmap && k.hotmap.enable && k.hotmap.type !== "switch" ? (g(), $("div", {
1985
+ key: 7,
1986
+ class: "hzzt-kfb-view__hotmap",
1987
+ style: X({ left: s(Lt) + "px" })
1988
+ }, [
1989
+ b(s(ge), {
1990
+ class: "icon-caret-left",
1991
+ size: "30",
1992
+ onMousedown: s(Qe)
1993
+ }, {
1994
+ default: C(() => V[7] || (V[7] = [
1995
+ y("svg", {
1996
+ xmlns: "http://www.w3.org/2000/svg",
1997
+ viewBox: "0 0 1024 1024"
1998
+ }, [
1999
+ y("path", {
2000
+ fill: "currentColor",
2001
+ d: "M672 192 288 511.936 672 832z"
2002
+ })
2003
+ ], -1)
2004
+ ])),
2005
+ _: 1,
2006
+ __: [7]
2007
+ }, 8, ["onMousedown"]),
2008
+ b(s(ge), {
2009
+ class: "icon-caret-right",
2010
+ size: "30",
2011
+ onMousedown: s(Qe)
2012
+ }, {
2013
+ default: C(() => V[8] || (V[8] = [
2014
+ y("svg", {
2015
+ xmlns: "http://www.w3.org/2000/svg",
2016
+ viewBox: "0 0 1024 1024"
2017
+ }, [
2018
+ y("path", {
2019
+ fill: "currentColor",
2020
+ d: "M384 192v640l384-320.064z"
2021
+ })
2022
+ ], -1)
2023
+ ])),
2024
+ _: 1,
2025
+ __: [8]
2026
+ }, 8, ["onMousedown"])
2027
+ ], 4)) : A("", !0),
2028
+ ce(k.$slots, "default")
2029
+ ], 512);
2030
+ };
2031
+ }
2032
+ });
2033
+ function Ho(d, e) {
2034
+ var p, n;
2035
+ const a = x(!!((p = d.ai) != null && p.default)), t = x(!!((n = d.ai) != null && n.default)), f = x([]), m = N(
2036
+ () => {
2037
+ var i, r, u, o;
2038
+ return (r = (i = e.value) == null ? void 0 : i.analysis) != null && r.id ? ((o = (u = e.value) == null ? void 0 : u.analysis) == null ? void 0 : o.class) || "auto" : "";
2039
+ }
2040
+ );
2041
+ J(() => {
2042
+ var i;
2043
+ return (i = d.ai) == null ? void 0 : i.default;
2044
+ }, (i) => {
2045
+ a.value = !!i, t.value = !!i;
2046
+ }), J(() => {
2047
+ var i;
2048
+ return (i = e == null ? void 0 : e.value) == null ? void 0 : i.id;
2049
+ }, v), fe(() => {
2050
+ var i, r;
2051
+ a.value = !!((i = d.ai) != null && i.default), t.value = !!((r = d.ai) != null && r.default), v();
2052
+ });
2053
+ function v() {
2054
+ var i;
2055
+ (i = e.value) != null && i.id && m.value ? a.value || t.value ? c() : f.value = [] : f.value = [];
2056
+ }
2057
+ function c() {
2058
+ d.ai.handle(m.value, e.value).then((i) => {
2059
+ f.value = i;
2060
+ }).catch(() => {
2061
+ f.value = [], m.value === "IQC" ? t.value = !1 : a.value = !1;
2062
+ });
2063
+ }
2064
+ function l() {
2065
+ t.value = !1, v();
2066
+ }
2067
+ function h() {
2068
+ a.value = !1, v();
2069
+ }
2070
+ return {
2071
+ analysisClass: m,
2072
+ aiLabelList: f,
2073
+ enableAi: a,
2074
+ enableIqc: t,
2075
+ toggleIqc: h,
2076
+ toggleAi: l
2077
+ };
2078
+ }
2079
+ const Io = ["src", "fit"], So = ["src", "fit"], Re = /* @__PURE__ */ Q({
2080
+ name: "KfbImage",
2081
+ __name: "KfbImage",
2082
+ props: {
2083
+ src: {
2084
+ type: String,
2085
+ required: !0,
2086
+ default: ""
2087
+ },
2088
+ fit: {
2089
+ type: String,
2090
+ validator: (d) => ["", "contain", "cover", "fill", "none", "scale-down"].includes(d),
2091
+ default: ""
2092
+ },
2093
+ retryTimes: {
2094
+ type: Number,
2095
+ default: 0
2096
+ },
2097
+ load: {
2098
+ type: Function,
2099
+ default: () => ({})
2100
+ }
2101
+ },
2102
+ setup(d) {
2103
+ const e = d;
2104
+ let a = 0;
2105
+ const t = x(!1), f = Ye({
2106
+ x: 0,
2107
+ y: 0
2108
+ }), m = N(() => ({
2109
+ top: `${f.y + 10}px`,
2110
+ left: `${f.x}px`,
2111
+ transform: "translateY(-50%)",
2112
+ width: `${4 * 300 / 3}px`,
2113
+ height: "300px",
2114
+ background: "rgba(0,0,0,0.8)",
2115
+ zIndex: "10000"
2116
+ }));
2117
+ function v(p) {
2118
+ const n = p.target;
2119
+ a < e.retryTimes ? (n.src = e.src, a++) : n.src = Xe;
2120
+ }
2121
+ function c(p) {
2122
+ const { x: n, y: i } = l(p), r = 4 * 300 / 3, u = 300;
2123
+ f.x = Math.min(Math.max(n, r / 2), window.innerWidth - r / 2), f.y = Math.min(Math.max(i, u / 2), window.innerHeight - u / 2), t.value = !0;
2124
+ }
2125
+ function l(p) {
2126
+ const n = p.target, i = p.offsetX, r = p.offsetY, u = n.clientWidth, o = n.clientHeight;
2127
+ return {
2128
+ x: p.clientX + u - i,
2129
+ y: p.clientY - r + o / 2
2130
+ };
2131
+ }
2132
+ function h() {
2133
+ t.value = !1;
2134
+ }
2135
+ return (p, n) => (g(), $("div", {
2136
+ class: "relative",
2137
+ onMouseenter: c,
2138
+ onMouseleave: h
2139
+ }, [
2140
+ y("img", {
2141
+ src: d.src,
2142
+ fit: d.fit,
2143
+ onError: v,
2144
+ style: {
2145
+ height: "100%",
2146
+ width: "100%"
2147
+ }
2148
+ }, null, 40, Io),
2149
+ (g(), I(Ne, { to: "body" }, [
2150
+ t.value ? (g(), $("div", {
2151
+ key: 0,
2152
+ class: "fixed hzzt-kfb-img-triangle-left",
2153
+ style: X(m.value)
2154
+ }, [
2155
+ y("img", {
2156
+ src: d.src,
2157
+ fit: d.fit,
2158
+ style: {
2159
+ objectFit: "contain",
2160
+ height: "100%",
2161
+ width: "100%"
2162
+ },
2163
+ onMouseenter: n[0] || (n[0] = () => {
2164
+ t.value = !0;
2165
+ }),
2166
+ onMouseleave: h
2167
+ }, null, 40, So)
2168
+ ], 4)) : A("", !0)
2169
+ ]))
2170
+ ], 32));
2171
+ }
2172
+ }), Po = {}, Ao = {
2173
+ xmlns: "http://www.w3.org/2000/svg",
2174
+ viewBox: "0 0 1024 1024"
2175
+ };
2176
+ function Ro(d, e) {
2177
+ return g(), $("svg", Ao, e[0] || (e[0] = [
2178
+ y("path", {
2179
+ fill: "currentColor",
2180
+ 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"
2181
+ }, null, -1)
2182
+ ]));
2183
+ }
2184
+ const Bo = /* @__PURE__ */ we(Po, [["render", Ro]]), No = {}, Do = {
2185
+ width: "16",
2186
+ height: "16",
2187
+ viewBox: "0 0 16 16",
2188
+ fill: "none",
2189
+ xmlns: "http://www.w3.org/2000/svg"
2190
+ };
2191
+ function Uo(d, e) {
2192
+ return g(), $("svg", Do, e[0] || (e[0] = [
2193
+ y("g", { id: "Frame" }, [
2194
+ y("path", {
2195
+ id: "Vector",
2196
+ 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",
2197
+ fill: "currentColor",
2198
+ "fill-opacity": "0.9"
2199
+ })
2200
+ ], -1)
2201
+ ]));
2202
+ }
2203
+ const Fo = /* @__PURE__ */ we(No, [["render", Uo]]), Ko = { class: "hzzt-kfb-slides" }, Zo = { class: "hzzt-kfb-slides__row" }, Oo = { class: "hzzt-kfb-slides__top" }, jo = { class: "text-primary" }, Go = { class: "flex align-items-center" }, Wo = {
2204
+ class: "flex-1 overflow-auto",
2205
+ style: { width: "100%" }
2206
+ }, qo = { key: 0 }, Yo = ["onClick"], Xo = { class: "hzzt-kfb-slides__gallery" }, Qo = ["onClick"], Jo = {
2207
+ key: 0,
2208
+ class: "hzzt-kfb-slides__read"
2209
+ }, en = ["onClick"], tn = {
2210
+ key: 1,
2211
+ class: "flex column"
2212
+ }, ln = { class: "hzzt-kfb-slides__header" }, on = { class: "w-30%" }, nn = { class: "w-40%" }, an = { class: "w-20%" }, sn = ["onClick"], rn = { class: "w-30% flex" }, un = { class: "hzzt-kfb-slides__gallery" }, cn = {
2213
+ key: 0,
2214
+ class: "hzzt-kfb-slides__read"
2215
+ }, dn = { class: "w-40% flex" }, vn = ["onClick"], fn = ["onClick"], mn = {
2216
+ key: 0,
2217
+ class: "flex column py-2"
2218
+ }, pn = { class: "flex align-items-center justify-content-center" }, hn = { class: "margin-r-1" }, gn = {
2219
+ key: 0,
2220
+ class: "margin-r-1 margin-l-2"
2221
+ }, wn = /* @__PURE__ */ Q({
2222
+ __name: "KfbSlideList",
2223
+ props: {
2224
+ slides: {}
2225
+ },
2226
+ emits: ["select", "tool"],
2227
+ setup(d, { emit: e }) {
2228
+ const a = d, t = e, f = q("file-index", {
2229
+ value: 0
2230
+ }), m = q("divide", {
2231
+ value: !1
2232
+ }), v = q("sync", {
2233
+ value: !1
2234
+ }), c = x(!1), l = N(() => a.slides.filter(({ read: r }) => r)), h = N(() => a.slides.filter(({ check: r }) => r)), { t: p } = me();
2235
+ function n(r) {
2236
+ f.value = r, t("select", r);
2237
+ }
2238
+ function i(r) {
2239
+ r.check = !r.check;
2240
+ }
2241
+ return (r, u) => (g(), $("div", Ko, [
2242
+ y("div", Zo, [
2243
+ y("div", Oo, [
2244
+ y("span", null, [
2245
+ u[4] || (u[4] = O("已读:")),
2246
+ y("span", jo, T(l.value.length), 1),
2247
+ O("/" + T(r.slides.length), 1)
2248
+ ]),
2249
+ y("div", Go, [
2250
+ b(s(ge), {
2251
+ class: "margin-r-2 pointer",
2252
+ size: "16",
2253
+ color: c.value ? "#999" : "#000",
2254
+ onClick: u[0] || (u[0] = (o) => c.value = !c.value)
2255
+ }, {
2256
+ default: C(() => [
2257
+ b(Bo)
2258
+ ]),
2259
+ _: 1
2260
+ }, 8, ["color"]),
2261
+ b(s(ge), {
2262
+ class: "pointer",
2263
+ name: "cus-list",
2264
+ size: "16",
2265
+ color: c.value ? "#000" : "#999",
2266
+ onClick: u[1] || (u[1] = (o) => c.value = !c.value)
2267
+ }, {
2268
+ default: C(() => [
2269
+ b(Fo)
2270
+ ]),
2271
+ _: 1
2272
+ }, 8, ["color"])
2273
+ ])
2274
+ ]),
2275
+ y("div", Wo, [
2276
+ c.value ? (g(), $("ul", tn, [
2277
+ y("li", ln, [
2278
+ u[5] || (u[5] = y("div", { class: "w-10%" }, null, -1)),
2279
+ y("div", on, T(s(p)("缩略图")), 1),
2280
+ y("div", nn, T(s(p)("切片名")), 1),
2281
+ y("div", an, T(s(p)("评分")), 1)
2282
+ ]),
2283
+ (g(!0), $(oe, null, ne(r.slides, (o, w) => (g(), $("li", {
2284
+ key: w,
2285
+ class: "flex align-items-center overflow-hidden",
2286
+ style: X({
2287
+ backgroundColor: s(f) === w ? "rgba(6, 85, 195, 0.1)" : "#fff"
2288
+ }),
2289
+ onClick: (_) => n(w)
2290
+ }, [
2291
+ y("div", {
2292
+ class: "w-10% text-center",
2293
+ onClick: Pe(() => {
2294
+ }, ["stop"])
2295
+ }, [
2296
+ b(s(Fe), {
2297
+ modelValue: o.check,
2298
+ "onUpdate:modelValue": (_) => o.check = _,
2299
+ style: { width: "14px", height: "16px" }
2300
+ }, null, 8, ["modelValue", "onUpdate:modelValue"])
2301
+ ]),
2302
+ y("div", rn, [
2303
+ y("div", un, [
2304
+ b(Re, {
2305
+ "retry-times": 1,
2306
+ src: o.labelImg,
2307
+ fit: "cover",
2308
+ style: { height: "45px" },
2309
+ class: "flex-1"
2310
+ }, null, 8, ["src"]),
2311
+ b(Re, {
2312
+ "retry-times": 1,
2313
+ fit: "cover",
2314
+ src: o.previewImg,
2315
+ style: { height: "45px" },
2316
+ class: "flex-1"
2317
+ }, null, 8, ["src"]),
2318
+ o.read ? A("", !0) : (g(), $("div", cn, T(s(p)("未读")), 1))
2319
+ ])
2320
+ ]),
2321
+ y("div", dn, [
2322
+ b(s(mt), {
2323
+ effect: "dark",
2324
+ placement: "bottom",
2325
+ content: `${o.name}`
2326
+ }, {
2327
+ default: C(() => [
2328
+ y("span", {
2329
+ style: { "line-height": "16px" },
2330
+ class: "margin-l-1 ellipsis hzzt-kfb-slides__text",
2331
+ dir: "rtl",
2332
+ onClick: Pe((_) => i(o), ["stop"])
2333
+ }, T(o.name), 9, vn)
2334
+ ]),
2335
+ _: 2
2336
+ }, 1032, ["content"])
2337
+ ]),
2338
+ y("div", {
2339
+ class: "w-20% flex text-center pointer",
2340
+ style: X({
2341
+ color: o.gradeColor
2342
+ }),
2343
+ onClick: (_) => t("tool", "grade", o)
2344
+ }, T(o.grade), 13, fn)
2345
+ ], 12, sn))), 128))
2346
+ ])) : (g(), $("div", qo, [
2347
+ (g(!0), $(oe, null, ne(r.slides, (o, w) => (g(), $("div", {
2348
+ key: w,
2349
+ class: Ie(["hzzt-kfb-slides__box", s(f) === w ? "hzzt-kfb-slides__box--active" : ""]),
2350
+ onClick: (_) => n(w)
2351
+ }, [
2352
+ y("div", Xo, [
2353
+ b(Re, {
2354
+ "retry-times": 1,
2355
+ src: o.labelImg,
2356
+ class: "hzzt-kfb-slides__img",
2357
+ fit: "cover"
2358
+ }, null, 8, ["src"]),
2359
+ b(Re, {
2360
+ "retry-times": 1,
2361
+ src: o.previewImg,
2362
+ class: "flex-1 hzzt-kfb-slides__img1",
2363
+ fit: "cover"
2364
+ }, null, 8, ["src"])
2365
+ ]),
2366
+ y("div", {
2367
+ class: "flex justify-content-between align-items-center",
2368
+ onClick: Pe(() => {
2369
+ }, ["stop"])
2370
+ }, [
2371
+ b(s(Fe), {
2372
+ modelValue: o.check,
2373
+ "onUpdate:modelValue": (_) => o.check = _,
2374
+ style: { width: "14px", height: "16px" }
2375
+ }, null, 8, ["modelValue", "onUpdate:modelValue"]),
2376
+ b(s(mt), {
2377
+ effect: "dark",
2378
+ placement: "bottom",
2379
+ content: `${o.name}`
2380
+ }, {
2381
+ default: C(() => [
2382
+ y("span", {
2383
+ style: { "line-height": "16px", "text-align": "center", width: "calc(100% - 14px)" },
2384
+ class: "margin-l-1 ellipsis",
2385
+ dir: "rtl",
2386
+ onClick: Pe((_) => i(o), ["stop"])
2387
+ }, T(o.name), 9, Qo)
2388
+ ]),
2389
+ _: 2
2390
+ }, 1032, ["content"])
2391
+ ]),
2392
+ o.read ? A("", !0) : (g(), $("div", Jo, T(s(p)("未读")), 1)),
2393
+ o.grade ? (g(), $("div", {
2394
+ key: 1,
2395
+ class: "hzzt-kfb-slides__grade",
2396
+ style: X({
2397
+ background: o.gradeColor
2398
+ }),
2399
+ onClick: (_) => t("tool", "grade", o)
2400
+ }, T(o.grade), 13, en)) : A("", !0),
2401
+ ce(r.$slots, "slide", { slide: o }, void 0, !0)
2402
+ ], 10, Yo))), 128))
2403
+ ]))
2404
+ ]),
2405
+ h.value.length > 1 ? (g(), $("div", mn, [
2406
+ y("div", pn, [
2407
+ y("span", hn, T(s(p)("分屏")), 1),
2408
+ b(s(ke), {
2409
+ modelValue: s(m),
2410
+ "onUpdate:modelValue": u[2] || (u[2] = (o) => xe(m) ? m.value = o : null)
2411
+ }, null, 8, ["modelValue"]),
2412
+ s(m) ? (g(), $("span", gn, T(s(p)("同步")), 1)) : A("", !0),
2413
+ s(m) ? (g(), I(s(ke), {
2414
+ key: 1,
2415
+ modelValue: s(v),
2416
+ "onUpdate:modelValue": u[3] || (u[3] = (o) => xe(v) ? v.value = o : null)
2417
+ }, null, 8, ["modelValue"])) : A("", !0)
2418
+ ])
2419
+ ])) : A("", !0)
2420
+ ])
2421
+ ]));
2422
+ }
2423
+ }), yn = /* @__PURE__ */ we(wn, [["__scopeId", "data-v-c2a1a22e"]]), _n = { class: "hzzt-kfb-ai overflow-hidden" }, bn = { class: "flex align-items-center margin-t-1" }, kn = { style: { color: "var(--el-color-success)" } }, zn = { class: "flex-1 flex overflow-auto wrap margin-t-1" }, xn = ["onClick"], Cn = {
2424
+ key: 0,
2425
+ style: { "margin-left": "2px" }
2426
+ }, $n = /* @__PURE__ */ Q({
2427
+ name: "KfbAiList",
2428
+ __name: "list",
2429
+ props: {
2430
+ data: { default: () => [] },
2431
+ slide: { default: () => ({}) }
2432
+ },
2433
+ setup(d, { expose: e }) {
2434
+ const a = d, { t } = me(), f = q("kfbViewRef"), m = x(-1), v = x(1), c = x(100), l = x(!0), h = x([]), p = N(() => a.data.filter((E) => h.value.includes(E.cls || ""))), n = N(() => p.value.slice((v.value - 1) * c.value, v.value * c.value)), i = N(() => {
2435
+ var P, L;
2436
+ const E = ((L = (P = a.slide) == null ? void 0 : P.analysis) == null ? void 0 : L.result) || "";
2437
+ return E.indexOf("疑似阳性") > -1 ? {
2438
+ type: "warning",
2439
+ name: E
2440
+ } : E.indexOf("阳性") > -1 ? {
2441
+ type: "danger",
2442
+ name: E
2443
+ } : E.indexOf("阴性") > -1 ? {
2444
+ type: "success",
2445
+ name: E
2446
+ } : {
2447
+ type: "info",
2448
+ name: E || t("未知")
2449
+ };
2450
+ }), r = N(() => {
2451
+ const E = /* @__PURE__ */ new Set();
2452
+ return a.data.forEach((P) => {
2453
+ const L = P.cls || "";
2454
+ L && !E.has(L) && E.add(L);
2455
+ }), Array.from(E);
2456
+ }), u = N(() => h.value.length !== 0 && h.value.length !== r.value.length);
2457
+ J(() => r.value, (E) => {
2458
+ o(), h.value = [...E];
2459
+ }), fe(() => {
2460
+ h.value = [...r.value];
2461
+ });
2462
+ function o() {
2463
+ m.value = -1, v.value = 1, c.value = 100, l.value = !0;
2464
+ }
2465
+ function w(E) {
2466
+ const P = p.value.findIndex((L) => L.id === E.id);
2467
+ m.value = P, f.value.selectLabel(E);
2468
+ }
2469
+ function _(E) {
2470
+ const P = a.data.filter((L) => L.cls === E);
2471
+ return P.length ? `(${P.length})` : "";
2472
+ }
2473
+ function S() {
2474
+ m.value = -1, l.value = h.value.length == r.value.length;
2475
+ }
2476
+ function H(E) {
2477
+ h.value = E ? [...r.value] : [], m.value = -1;
2478
+ }
2479
+ return e({
2480
+ labelList: p
2481
+ }), (E, P) => (g(), $("div", _n, [
2482
+ y("div", bn, [
2483
+ b(s(Xt), {
2484
+ placement: "bottom",
2485
+ trigger: "click",
2486
+ width: "160"
2487
+ }, {
2488
+ reference: C(() => [
2489
+ b(s(he), {
2490
+ class: "margin-r-1",
2491
+ type: "primary"
2492
+ }, {
2493
+ default: C(() => [
2494
+ O(T(s(t)("分类")) + " ", 1),
2495
+ b(Y, { name: "arrowDown" })
2496
+ ]),
2497
+ _: 1
2498
+ })
2499
+ ]),
2500
+ default: C(() => [
2501
+ y("div", null, [
2502
+ b(s(Fe), {
2503
+ modelValue: l.value,
2504
+ "onUpdate:modelValue": P[0] || (P[0] = (L) => l.value = L),
2505
+ indeterminate: u.value,
2506
+ onChange: H
2507
+ }, {
2508
+ default: C(() => [
2509
+ O(T(s(t)("全选")), 1)
2510
+ ]),
2511
+ _: 1
2512
+ }, 8, ["modelValue", "indeterminate"]),
2513
+ b(s(Qt), {
2514
+ modelValue: h.value,
2515
+ "onUpdate:modelValue": P[1] || (P[1] = (L) => h.value = L),
2516
+ class: "flex column",
2517
+ onChange: S
2518
+ }, {
2519
+ default: C(() => [
2520
+ (g(!0), $(oe, null, ne(r.value, (L) => (g(), I(s(Fe), {
2521
+ key: L,
2522
+ value: L
2523
+ }, {
2524
+ default: C(() => [
2525
+ O(T(L) + " ", 1),
2526
+ y("span", kn, T(_(L)), 1)
2527
+ ]),
2528
+ _: 2
2529
+ }, 1032, ["value"]))), 128))
2530
+ ]),
2531
+ _: 1
2532
+ }, 8, ["modelValue"])
2533
+ ])
2534
+ ]),
2535
+ _: 1
2536
+ }),
2537
+ b(s(pt), {
2538
+ type: i.value.type,
2539
+ class: "margin-l-1"
2540
+ }, {
2541
+ default: C(() => [
2542
+ O(T(i.value.name), 1)
2543
+ ]),
2544
+ _: 1
2545
+ }, 8, ["type"])
2546
+ ]),
2547
+ y("div", zn, [
2548
+ (g(!0), $(oe, null, ne(n.value, (L, ee) => (g(), $("div", {
2549
+ key: ee + (v.value - 1) * c.value,
2550
+ class: Ie(`hzzt-kfb-ai__img ${m.value === ee + (v.value - 1) * c.value ? "hzzt-kfb-ai__img--active" : ""}`),
2551
+ onClick: (W) => w(L)
2552
+ }, [
2553
+ b(s(el), {
2554
+ "retry-times": 1,
2555
+ src: L.imageUrl,
2556
+ "error-src": s(Xe)
2557
+ }, null, 8, ["src", "error-src"]),
2558
+ y("div", {
2559
+ style: X({ color: L.strokeStyle }),
2560
+ class: "ellipsis"
2561
+ }, [
2562
+ O(T(L.cls) + " ", 1),
2563
+ L.score ? (g(), $("span", Cn, T(L.score), 1)) : A("", !0)
2564
+ ], 4)
2565
+ ], 10, xn))), 128))
2566
+ ]),
2567
+ b(s(Jt), {
2568
+ class: "wrap",
2569
+ "current-page": v.value,
2570
+ "onUpdate:currentPage": P[2] || (P[2] = (L) => v.value = L),
2571
+ "page-size": c.value,
2572
+ "onUpdate:pageSize": P[3] || (P[3] = (L) => c.value = L),
2573
+ "page-sizes": [100, 200, 300, 400],
2574
+ layout: "total, sizes, prev, pager, next",
2575
+ total: p.value.length
2576
+ }, null, 8, ["current-page", "page-size", "total"])
2577
+ ]));
2578
+ }
2579
+ }), Tn = { class: "hzzt-kfb-slide" }, Ln = { class: "flex flex-1 overflow-hidden" }, Vn = { class: "flex flex-1" }, En = {
2580
+ key: 0,
2581
+ style: { height: "100%", width: "100%" },
2582
+ class: "flex wrap"
2583
+ }, Mn = ["onClick"], Ke = /* @__PURE__ */ Q({
2584
+ name: "HzztKfbSlide",
2585
+ __name: "index",
2586
+ props: /* @__PURE__ */ Me({
2587
+ menus: { default: () => [] },
2588
+ kfb: {},
2589
+ slides: { default: () => [] },
2590
+ ai: {},
2591
+ teleport: { type: Boolean, default: !1 },
2592
+ process: {},
2593
+ microscope: {},
2594
+ showList: { type: Boolean, default: !0 },
2595
+ showKfbLabel: { type: Boolean, default: !0 },
2596
+ showKeyboard: { type: Boolean, default: !1 },
2597
+ showMenuText: { type: Boolean, default: !0 }
2598
+ }, {
2599
+ index: {
2600
+ default: 0
2601
+ },
2602
+ indexModifiers: {}
2603
+ }),
2604
+ emits: /* @__PURE__ */ Me(["tool"], ["update:index"]),
2605
+ setup(d, { expose: e, emit: a }) {
2606
+ const t = d, f = a, m = Ee(d, "index"), v = N(() => t.slides[m.value]), c = N(() => t.slides.filter(({ check: z }) => z)), l = x(), h = x(), p = x(), n = x(t.showKeyboard), i = x(t.showKfbLabel), r = x(!1), u = x(!1), o = x(!1), { t: w } = me(), _ = N(() => {
2607
+ var z;
2608
+ if (r.value) {
2609
+ const R = c.value.findIndex(({ id: D }) => {
2610
+ var ie;
2611
+ return D === ((ie = v.value) == null ? void 0 : ie.id);
2612
+ });
2613
+ return ((z = h.value) == null ? void 0 : z[R]) || l.value;
2614
+ } else
2615
+ return l.value;
2616
+ }), S = N(() => c.value.length <= 1 ? {
2617
+ height: "100%",
2618
+ width: "100%"
2619
+ } : c.value.length <= 2 ? {
2620
+ height: "100%",
2621
+ width: "calc((100% - 4px) / 2)"
2622
+ } : c.value.length <= 4 ? {
2623
+ height: "calc((100% - 4px) / 2)",
2624
+ width: "calc((100% - 4px) / 2)"
2625
+ } : c.value.length <= 6 ? {
2626
+ height: "calc((100% - 4px) / 2)",
2627
+ width: "calc((100% - 4px * 2) / 3)"
2628
+ } : c.value.length <= 9 ? {
2629
+ height: "calc((100% - 4px * 2) / 3)",
2630
+ width: "calc((100% - 4px * 2) / 3)"
2631
+ } : {
2632
+ height: "100%",
2633
+ width: "100%"
2634
+ });
2635
+ J(() => c.value, (z) => {
2636
+ r.value && z.length <= 1 && (r.value = !1);
2637
+ }), J(() => v.value, (z) => {
2638
+ if (z) {
2639
+ const R = z.read;
2640
+ z.read = !0, f("tool", "choose", {
2641
+ slide: z,
2642
+ read: R
2643
+ });
2644
+ }
2645
+ });
2646
+ const {
2647
+ analysisClass: H,
2648
+ aiLabelList: E,
2649
+ enableAi: P,
2650
+ enableIqc: L,
2651
+ toggleIqc: ee,
2652
+ toggleAi: W
2653
+ } = Ho(t, v);
2654
+ function ae(z, R) {
2655
+ z === "next" && t.slides[m.value + 1] && m.value++, z === "prev" && t.slides[m.value - 1] && m.value--, (z === "label" || z === "tool") && (i.value = R), f("tool", z, R);
2656
+ }
2657
+ function se(z) {
2658
+ var D, ie, Le;
2659
+ const R = ve(Z({}, t.kfb), {
2660
+ process: t.process,
2661
+ microscope: t.microscope,
2662
+ slide: z,
2663
+ aiLabelList: v.value.id === z.id ? ((D = p.value) == null ? void 0 : D.labelList) || [] : [],
2664
+ hotmap: (ie = z == null ? void 0 : z.hotmap) != null && ie.file ? ve(Z({}, (z == null ? void 0 : z.hotmap) || {}), {
2665
+ enable: P.value
2666
+ }) : void 0,
2667
+ syncPosition: u.value,
2668
+ syncZoom: u.value,
2669
+ handle: void 0
2670
+ });
2671
+ return (Le = t.kfb) != null && Le.handle ? t.kfb.handle(z, R) : R;
2672
+ }
2673
+ function ye(z) {
2674
+ m.value = t.slides.findIndex((R) => R.id === z.id);
2675
+ }
2676
+ function Te(z) {
2677
+ r.value && (t.slides[z].check = !0);
2678
+ }
2679
+ function Ze() {
2680
+ var z;
2681
+ i.value = !o.value, (z = r.value ? h.value : [l.value]) == null || z.forEach((R) => {
2682
+ o.value && (R.updateGrid({
2683
+ show: !o.value,
2684
+ ruler: !o.value
2685
+ }), n.value = !o.value), R.updateGraduation({
2686
+ show: !o.value
2687
+ }), R.updateNavigator(!o.value);
2688
+ });
2689
+ }
2690
+ return re("kfbViewRef", _), re("show-keyboard", n), re("show-kfb-label", i), re("hidden-all-label", o), re("file-index", m), re("divide", r), re("sync", u), e({
2691
+ divide: r,
2692
+ slide: v,
2693
+ kfbViewRef: _,
2694
+ enableAI: N(() => {
2695
+ var z;
2696
+ return ((z = t.ai) == null ? void 0 : z.enable) && E.value.length;
2697
+ })
2698
+ }), (z, R) => (g(), $("div", Tn, [
2699
+ z.menus.length ? (g(), I(He, {
2700
+ key: 0,
2701
+ menu: z.menus,
2702
+ "show-menu-text": z.showMenuText,
2703
+ process: z.process,
2704
+ microscope: z.microscope,
2705
+ onTool: ae
2706
+ }, {
2707
+ left: C(() => [
2708
+ ce(z.$slots, "left")
2709
+ ]),
2710
+ right: C(() => [
2711
+ b(s(ke), {
2712
+ modelValue: o.value,
2713
+ "onUpdate:modelValue": R[0] || (R[0] = (D) => o.value = D),
2714
+ "active-text": s(w)("隐藏标签"),
2715
+ class: "margin-r-2",
2716
+ onChange: Ze
2717
+ }, null, 8, ["modelValue", "active-text"]),
2718
+ z.ai && z.ai.enable && s(H) === "IQC" ? (g(), I(s(ke), {
2719
+ key: 0,
2720
+ modelValue: s(L),
2721
+ "onUpdate:modelValue": R[1] || (R[1] = (D) => xe(L) ? L.value = D : null),
2722
+ "active-text": s(w)("AI质控"),
2723
+ class: "margin-r-2",
2724
+ onChange: s(ee)
2725
+ }, null, 8, ["modelValue", "active-text", "onChange"])) : z.ai && z.ai.enable && s(H) ? (g(), I(s(ke), {
2726
+ key: 1,
2727
+ modelValue: s(P),
2728
+ "onUpdate:modelValue": R[2] || (R[2] = (D) => xe(P) ? P.value = D : null),
2729
+ "active-text": s(w)("AI分析"),
2730
+ class: "margin-r-2",
2731
+ onChange: s(W)
2732
+ }, null, 8, ["modelValue", "active-text", "onChange"])) : A("", !0),
2733
+ ce(z.$slots, "right")
2734
+ ]),
2735
+ _: 3
2736
+ }, 8, ["menu", "show-menu-text", "process", "microscope"])) : A("", !0),
2737
+ y("div", Ln, [
2738
+ z.showList ? (g(), I(Ne, {
2739
+ key: 0,
2740
+ defer: "",
2741
+ to: "#kfb-slide-list",
2742
+ disabled: !z.teleport
2743
+ }, [
2744
+ b(yn, {
2745
+ style: X(z.teleport ? "" : "width: 250px"),
2746
+ slides: z.slides,
2747
+ onSelect: Te,
2748
+ onTool: ae
2749
+ }, {
2750
+ slide: C(({ slide: D }) => [
2751
+ ce(z.$slots, "list", { slide: D })
2752
+ ]),
2753
+ _: 3
2754
+ }, 8, ["style", "slides"])
2755
+ ], 8, ["disabled"])) : A("", !0),
2756
+ (g(), I(Ne, {
2757
+ defer: "",
2758
+ to: "#kfb-slide-view",
2759
+ disabled: !z.teleport
2760
+ }, [
2761
+ y("div", Vn, [
2762
+ c.value.length && r.value ? (g(), $("ul", En, [
2763
+ (g(!0), $(oe, null, ne(c.value, (D, ie) => (g(), $("li", {
2764
+ key: ie,
2765
+ style: X(S.value),
2766
+ class: Ie(v.value.id === D.id ? "hzzt-kfb-view-screen-active" : ""),
2767
+ onClick: (Le) => ye(D)
2768
+ }, [
2769
+ (g(), I(Ce, De({
2770
+ ref_for: !0,
2771
+ ref_key: "kfbViewRefs",
2772
+ ref: h,
2773
+ key: `kfb-${ie}`
2774
+ }, { ref_for: !0 }, se(D), { onTool: ae }), {
2775
+ default: C(() => [
2776
+ ce(z.$slots, "kfb", { slide: D })
2777
+ ]),
2778
+ _: 2
2779
+ }, 1040))
2780
+ ], 14, Mn))), 128))
2781
+ ])) : v.value ? (g(), I(Ce, De({
2782
+ key: 1,
2783
+ ref_key: "kfbViewRef",
2784
+ ref: l
2785
+ }, se(v.value), { onTool: ae }), {
2786
+ default: C(() => [
2787
+ ce(z.$slots, "kfb", { slide: v.value })
2788
+ ]),
2789
+ _: 3
2790
+ }, 16)) : A("", !0)
2791
+ ])
2792
+ ], 8, ["disabled"])),
2793
+ z.ai && z.ai.enable && s(E).length ? (g(), I(Ne, {
2794
+ key: 1,
2795
+ defer: "",
2796
+ to: "#kfb-slide-ai",
2797
+ disabled: !z.teleport
2798
+ }, [
2799
+ b($n, {
2800
+ style: X(z.teleport ? "" : "width: 350px"),
2801
+ ref_key: "kfbAiRef",
2802
+ ref: p,
2803
+ data: s(E),
2804
+ slide: v.value
2805
+ }, null, 8, ["style", "data", "slide"])
2806
+ ], 8, ["disabled"])) : A("", !0),
2807
+ ce(z.$slots, "default")
2808
+ ])
2809
+ ]));
2810
+ }
2811
+ });
2812
+ Ke.name = "HzztKfbSlide";
2813
+ Ce.name = "HzztKfbView";
2814
+ He.name = "HzztKfbToolbox";
2815
+ const Hn = (d, e) => {
2816
+ d.use(tl, e == null ? void 0 : e.i18n), d.component(Ke.name, Ke), d.component(Ce.name, Ce), d.component(He.name, He);
2817
+ }, Bn = {
2818
+ install: Hn,
2819
+ HzztKfbSlide: Ke,
2820
+ HzztKfbView: Ce,
2821
+ HzztKfbToolbox: He
2822
+ };
2823
+ export {
2824
+ ht as D,
2825
+ we as _,
2826
+ xl as a,
2827
+ yl as b,
2828
+ wl as c,
2829
+ Cl as d,
2830
+ bl as e,
2831
+ $l as f,
2832
+ qe as g,
2833
+ Ke as h,
2834
+ Ce as i,
2835
+ He as j,
2836
+ Bn as k,
2837
+ gl as l,
2838
+ kl as p,
2839
+ _l as r,
2840
+ zl as s,
2841
+ me as u,
2842
+ Tl as v
2843
+ };