@robot-admin/naive-ui-components 0.12.1 → 0.13.1

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 (254) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/README.md +60 -1
  3. package/README_EN.md +59 -0
  4. package/dist/C_ActionBar.css +60 -60
  5. package/dist/C_ActionBar2.cjs +1 -1
  6. package/dist/C_ActionBar2.js +1 -1
  7. package/dist/C_AntV.css +49 -49
  8. package/dist/C_AntV2.cjs +3 -3
  9. package/dist/C_AntV2.js +3 -3
  10. package/dist/C_AudioPlayer.css +81 -66
  11. package/dist/C_AudioPlayer2.cjs +1 -1
  12. package/dist/C_AudioPlayer2.js +1 -1
  13. package/dist/C_AvatarGroup.css +40 -25
  14. package/dist/C_AvatarGroup2.cjs +1 -1
  15. package/dist/C_AvatarGroup2.js +1 -1
  16. package/dist/C_Barcode.css +6 -6
  17. package/dist/C_Barcode2.cjs +1 -1
  18. package/dist/C_Barcode2.js +1 -1
  19. package/dist/C_Breadcrumb.css +14 -14
  20. package/dist/C_Breadcrumb2.cjs +1 -1
  21. package/dist/C_Breadcrumb2.js +1 -1
  22. package/dist/C_Captcha.css +50 -50
  23. package/dist/C_Captcha2.cjs +1 -1
  24. package/dist/C_Captcha2.js +1 -1
  25. package/dist/C_Cascade.css +2 -2
  26. package/dist/C_Cascade2.cjs +1 -1
  27. package/dist/C_Cascade2.js +1 -1
  28. package/dist/C_Chat.css +96 -78
  29. package/dist/C_Chat2.cjs +1 -1
  30. package/dist/C_Chat2.js +1 -1
  31. package/dist/C_City.css +52 -28
  32. package/dist/C_City2.cjs +1 -1
  33. package/dist/C_City2.js +1 -1
  34. package/dist/C_Code.css +48 -42
  35. package/dist/C_Code2.cjs +1 -1
  36. package/dist/C_Code2.js +1 -1
  37. package/dist/C_CollapsePanel.css +14 -14
  38. package/dist/C_CollapsePanel2.cjs +1 -1
  39. package/dist/C_CollapsePanel2.js +1 -1
  40. package/dist/C_ContextMenu.css +14 -14
  41. package/dist/C_ContextMenu2.cjs +1 -1
  42. package/dist/C_ContextMenu2.js +1 -1
  43. package/dist/C_Cron.css +94 -55
  44. package/dist/C_Cron2.cjs +1 -1
  45. package/dist/C_Cron2.js +1 -1
  46. package/dist/C_Date2.cjs +1 -1
  47. package/dist/C_Date2.js +1 -1
  48. package/dist/C_Draggable.css +48 -48
  49. package/dist/C_Draggable2.cjs +1 -1
  50. package/dist/C_Draggable2.js +1 -1
  51. package/dist/C_Editor.css +13 -14
  52. package/dist/C_Editor2.cjs +1 -1
  53. package/dist/C_Editor2.js +1 -1
  54. package/dist/C_FilePreview.css +18 -18
  55. package/dist/C_FilePreview2.cjs +1 -1
  56. package/dist/C_FilePreview2.js +1 -1
  57. package/dist/C_Form.base.css +36 -36
  58. package/dist/C_Form.css +49 -50
  59. package/dist/C_Form2.cjs +1 -1
  60. package/dist/C_Form2.js +1 -1
  61. package/dist/C_FormModal.css +8 -8
  62. package/dist/C_FormModal2.cjs +1 -1
  63. package/dist/C_FormModal2.js +1 -1
  64. package/dist/C_FormSearch.css +45 -45
  65. package/dist/C_FormSearch2.cjs +1 -1
  66. package/dist/C_FormSearch2.js +1 -1
  67. package/dist/C_FormulaEditor.css +94 -55
  68. package/dist/C_FormulaEditor2.cjs +2 -2
  69. package/dist/C_FormulaEditor2.js +2 -2
  70. package/dist/C_FullCalendar.css +8 -1
  71. package/dist/C_FullCalendar2.cjs +1 -1
  72. package/dist/C_FullCalendar2.js +1 -1
  73. package/dist/C_GlobalSearch2.cjs +1 -1
  74. package/dist/C_GlobalSearch2.js +1 -1
  75. package/dist/C_Guide.css +137 -14
  76. package/dist/C_Guide.d.cts +2 -2
  77. package/dist/C_Guide.d.ts +2 -2
  78. package/dist/C_Guide2.cjs +1 -1
  79. package/dist/C_Guide2.js +1 -1
  80. package/dist/C_Icon.css +14 -14
  81. package/dist/C_Icon2.cjs +1 -1
  82. package/dist/C_Icon2.js +1 -1
  83. package/dist/C_ImageCropper.css +22 -22
  84. package/dist/C_ImageCropper2.cjs +1 -1
  85. package/dist/C_ImageCropper2.js +1 -1
  86. package/dist/C_Language.css +14 -14
  87. package/dist/C_Language2.cjs +1 -1
  88. package/dist/C_Language2.js +1 -1
  89. package/dist/C_Login.css +134 -134
  90. package/dist/C_Login2.cjs +1 -1
  91. package/dist/C_Login2.js +1 -1
  92. package/dist/C_Map.css +3 -3
  93. package/dist/C_Map2.cjs +1 -1
  94. package/dist/C_Map2.js +1 -1
  95. package/dist/C_Markdown.css +35 -35
  96. package/dist/C_Markdown2.cjs +1 -1
  97. package/dist/C_Markdown2.js +1 -1
  98. package/dist/C_Menu2.cjs +1 -1
  99. package/dist/C_Menu2.js +1 -1
  100. package/dist/C_NotificationCenter.css +30 -30
  101. package/dist/C_NotificationCenter2.cjs +1 -1
  102. package/dist/C_NotificationCenter2.js +1 -1
  103. package/dist/C_OrgChart.css +4 -0
  104. package/dist/C_OrgChart2.cjs +1 -1
  105. package/dist/C_OrgChart2.js +1 -1
  106. package/dist/C_Progress2.cjs +1 -1
  107. package/dist/C_Progress2.js +1 -1
  108. package/dist/C_QRCode.css +8 -8
  109. package/dist/C_QRCode2.cjs +1 -1
  110. package/dist/C_QRCode2.js +1 -1
  111. package/dist/C_Signature.css +14 -14
  112. package/dist/C_Signature2.cjs +1 -1
  113. package/dist/C_Signature2.js +1 -1
  114. package/dist/C_Skeleton2.cjs +1 -1
  115. package/dist/C_Skeleton2.js +1 -1
  116. package/dist/C_SplitPane.css +39 -39
  117. package/dist/C_SplitPane2.cjs +1 -1
  118. package/dist/C_SplitPane2.js +1 -1
  119. package/dist/C_Steps.css +48 -38
  120. package/dist/C_Steps2.cjs +1 -1
  121. package/dist/C_Steps2.js +1 -1
  122. package/dist/C_Table.base.css +160 -160
  123. package/dist/C_Table.css +173 -174
  124. package/dist/C_TagsView.css +52 -52
  125. package/dist/C_TagsView2.cjs +1 -1
  126. package/dist/C_TagsView2.js +1 -1
  127. package/dist/C_Theme.css +14 -14
  128. package/dist/C_Theme2.cjs +1 -1
  129. package/dist/C_Theme2.js +1 -1
  130. package/dist/C_Time.css +4 -4
  131. package/dist/C_Time2.cjs +1 -1
  132. package/dist/C_Time2.js +1 -1
  133. package/dist/C_Timeline.css +76 -58
  134. package/dist/C_Timeline2.cjs +1 -1
  135. package/dist/C_Timeline2.js +1 -1
  136. package/dist/C_Transfer.css +51 -51
  137. package/dist/C_Transfer2.cjs +1 -1
  138. package/dist/C_Transfer2.js +1 -1
  139. package/dist/C_Tree.css +35 -32
  140. package/dist/C_Tree2.cjs +1 -1
  141. package/dist/C_Tree2.js +1 -1
  142. package/dist/C_Upload.css +53 -50
  143. package/dist/C_Upload2.cjs +1 -1
  144. package/dist/C_Upload2.js +1 -1
  145. package/dist/C_VideoPlayer.css +17 -13
  146. package/dist/C_VideoPlayer2.cjs +2 -2
  147. package/dist/C_VideoPlayer2.js +2 -2
  148. package/dist/C_VtableGantt.css +19 -19
  149. package/dist/C_VtableGantt2.cjs +1 -1
  150. package/dist/C_VtableGantt2.js +1 -1
  151. package/dist/C_WaterFall.css +19 -15
  152. package/dist/C_WaterFall2.cjs +1 -1
  153. package/dist/C_WaterFall2.js +1 -1
  154. package/dist/C_WorkFlow.css +123 -123
  155. package/dist/C_WorkFlow2.cjs +1 -1
  156. package/dist/C_WorkFlow2.js +1 -1
  157. package/dist/constants.d.cts +3 -3
  158. package/dist/constants.d.ts +3 -3
  159. package/dist/constants2.d.cts +2 -2
  160. package/dist/constants2.d.ts +2 -2
  161. package/dist/constants3.d.cts +12 -8
  162. package/dist/constants3.d.ts +12 -8
  163. package/dist/constants4.d.cts +9 -9
  164. package/dist/constants4.d.ts +9 -9
  165. package/dist/constants5.d.cts +4 -4
  166. package/dist/constants5.d.ts +4 -4
  167. package/dist/data.d.cts +11 -11
  168. package/dist/data.d.ts +11 -11
  169. package/dist/data2.cjs +1 -1
  170. package/dist/data2.js +1 -1
  171. package/dist/index.cjs +1 -1
  172. package/dist/index.d.cts +2 -3
  173. package/dist/index.d.ts +2 -2
  174. package/dist/index.js +1 -1
  175. package/dist/index.vue.d.cts +7 -5
  176. package/dist/index.vue.d.ts +7 -5
  177. package/dist/index10.vue.d.cts +2 -2
  178. package/dist/index10.vue.d.ts +2 -2
  179. package/dist/index11.vue.d.cts +2 -2
  180. package/dist/index11.vue.d.ts +5 -5
  181. package/dist/index12.vue.d.cts +5 -5
  182. package/dist/index12.vue.d.ts +2 -2
  183. package/dist/index13.vue.d.cts +2 -2
  184. package/dist/index13.vue.d.ts +35 -9
  185. package/dist/index14.vue.d.cts +35 -9
  186. package/dist/index14.vue.d.ts +15 -48
  187. package/dist/index15.vue.d.cts +15 -48
  188. package/dist/index17.vue.d.ts +4 -4
  189. package/dist/index18.vue.d.cts +4 -4
  190. package/dist/index18.vue.d.ts +2 -2
  191. package/dist/index19.vue.d.cts +2 -2
  192. package/dist/index19.vue.d.ts +2 -2
  193. package/dist/index2.vue.d.cts +3 -3
  194. package/dist/index2.vue.d.ts +3 -3
  195. package/dist/index20.vue.d.cts +2 -2
  196. package/dist/index20.vue.d.ts +2 -2
  197. package/dist/index21.vue.d.cts +3 -3
  198. package/dist/index21.vue.d.ts +3 -3
  199. package/dist/index22.vue.d.cts +1 -1
  200. package/dist/index22.vue.d.ts +1 -1
  201. package/dist/index24.vue.d.cts +3 -3
  202. package/dist/index24.vue.d.ts +3 -3
  203. package/dist/index26.vue.d.cts +1 -1
  204. package/dist/index26.vue.d.ts +1 -1
  205. package/dist/index27.vue.d.cts +1 -1
  206. package/dist/index27.vue.d.ts +1 -1
  207. package/dist/index3.vue.d.cts +8 -8
  208. package/dist/index3.vue.d.ts +8 -8
  209. package/dist/index4.vue.d.cts +2 -2
  210. package/dist/index6.vue.d.ts +1 -1
  211. package/dist/index7.vue.d.cts +1 -1
  212. package/dist/index8.vue.d.ts +3 -3
  213. package/dist/index9.vue.d.cts +3 -3
  214. package/dist/index9.vue.d.ts +2 -2
  215. package/dist/mapUtils.d.cts +4 -4
  216. package/dist/mapUtils.d.ts +4 -4
  217. package/dist/style.css +1698 -1365
  218. package/dist/useCalendarEvents.d.cts +23 -18
  219. package/dist/useCalendarEvents.d.ts +23 -18
  220. package/dist/useCollapsePanel.d.cts +1 -0
  221. package/dist/useCollapsePanel.d.ts +1 -0
  222. package/dist/useCropperCore.d.cts +32 -17
  223. package/dist/useCropperCore.d.ts +32 -17
  224. package/dist/useDraggableLayout.d.cts +3 -3
  225. package/dist/useDraggableLayout.d.ts +3 -3
  226. package/dist/useDynamicFormState.d.cts +5 -0
  227. package/dist/useDynamicFormState.d.ts +5 -0
  228. package/dist/useEdgeInteraction.d.cts +19 -19
  229. package/dist/useEdgeInteraction.d.ts +19 -19
  230. package/dist/useFullscreen.d.cts +6 -6
  231. package/dist/useFullscreen.d.ts +6 -6
  232. package/dist/useInfiniteScroll.d.cts +2 -2
  233. package/dist/useInfiniteScroll.d.ts +2 -2
  234. package/dist/useQRCode.d.cts +6 -5
  235. package/dist/useQRCode.d.ts +6 -5
  236. package/dist/useSearchState.d.cts +7 -7
  237. package/dist/useSearchState.d.ts +7 -7
  238. package/dist/useSignatureHistory.d.cts +16 -8
  239. package/dist/useSignatureHistory.d.ts +16 -8
  240. package/dist/useSplitResize.d.cts +4 -4
  241. package/dist/useSplitResize.d.ts +4 -4
  242. package/dist/useTableQuery.cjs +3 -3
  243. package/dist/useTableQuery.d.cts +2 -5
  244. package/dist/useTableQuery.d.ts +2 -5
  245. package/dist/useTableQuery.js +3 -3
  246. package/dist/useTimeSelection.d.cts +5 -2
  247. package/dist/useTimeSelection.d.ts +5 -2
  248. package/dist/useTreeOperations.d.cts +6 -6
  249. package/dist/useTreeOperations.d.ts +6 -6
  250. package/dist/useWorkflowValidation.d.cts +4 -2
  251. package/dist/useWorkflowValidation.d.ts +4 -2
  252. package/dist/verification.d.cts +3 -3
  253. package/dist/verification.d.ts +3 -3
  254. package/package.json +4 -3
package/dist/C_Editor.css CHANGED
@@ -15,7 +15,7 @@
15
15
  .w-e-video{box-sizing:border-box;display:flex;margin:0;max-width:100%;width:100%}.w-e-video>iframe,.w-e-video>video{display:block;max-width:100%}.w-e-textarea-video-container{background-image:linear-gradient(45deg,#eee 25%,transparent 0,transparent 75%,#eee 0,#eee),linear-gradient(45deg,#eee 25%,#fff 0,#fff 75%,#eee 0,#eee);background-position:0 0,10px 10px;background-size:20px 20px;border:1px dashed var(--w-e-textarea-border-color);border-radius:5px;margin-top:10px;overflow:auto;padding:10px 0}.w-e-video-align-left{justify-content:flex-start}.w-e-video-align-center{justify-content:center}.w-e-video-align-right{justify-content:flex-end}
16
16
  /* unplugin-vue-components disabled */
17
17
  /* CSS 变量 — 支持外部主题覆盖 */
18
- .c-editor[data-v-918908b8] {
18
+ .c-editor[data-v-7bd83e80] {
19
19
  --c-editor-toolbar-bg: #ffffff;
20
20
  --c-editor-toolbar-border: #e5e7eb;
21
21
  --c-editor-menu-color: #333333;
@@ -33,7 +33,7 @@
33
33
  }
34
34
 
35
35
  /* 暗色主题 — 覆盖 CSS 变量 */
36
- .editor-dark[data-v-918908b8] {
36
+ .editor-dark[data-v-7bd83e80] {
37
37
  --c-editor-toolbar-bg: #1f2937;
38
38
  --c-editor-toolbar-border: #374151;
39
39
  --c-editor-menu-color: #e5e7eb;
@@ -46,51 +46,50 @@
46
46
  --c-editor-text-focus-bg: #111827;
47
47
  --c-editor-text-focus-color: #e5e7eb;
48
48
  }
49
- .editor-dark[data-v-918908b8] .w-e-toolbar {
49
+ .editor-dark[data-v-7bd83e80] .w-e-toolbar {
50
50
  background-color: var(--c-editor-toolbar-bg) !important;
51
51
  border-color: var(--c-editor-toolbar-border) !important;
52
52
  }
53
- .editor-dark[data-v-918908b8] .w-e-toolbar .w-e-menu .w-e-menu-item {
53
+ .editor-dark[data-v-7bd83e80] .w-e-toolbar .w-e-menu .w-e-menu-item {
54
54
  color: var(--c-editor-menu-color) !important;
55
55
  }
56
- .editor-dark[data-v-918908b8] .w-e-toolbar .w-e-menu .w-e-menu-item:hover {
56
+ .editor-dark[data-v-7bd83e80] .w-e-toolbar .w-e-menu .w-e-menu-item:hover {
57
57
  background-color: var(--c-editor-menu-hover-bg) !important;
58
58
  color: var(--c-editor-menu-hover-color) !important;
59
59
  }
60
- .editor-dark[data-v-918908b8] .w-e-toolbar .w-e-menu .w-e-menu-item.w-e-active {
60
+ .editor-dark[data-v-7bd83e80] .w-e-toolbar .w-e-menu .w-e-menu-item.w-e-active {
61
61
  background-color: var(--c-editor-menu-active-bg) !important;
62
62
  color: var(--c-editor-menu-active-color) !important;
63
63
  }
64
- .editor-dark[data-v-918908b8] .w-e-text-container {
64
+ .editor-dark[data-v-7bd83e80] .w-e-text-container {
65
65
  background-color: var(--c-editor-container-bg) !important;
66
66
  border-color: var(--c-editor-container-border) !important;
67
67
  }
68
- .editor-dark[data-v-918908b8] .w-e-text-container .w-e-text {
68
+ .editor-dark[data-v-7bd83e80] .w-e-text-container .w-e-text {
69
69
  background-color: var(--c-editor-text-bg) !important;
70
70
  color: var(--c-editor-text-color) !important;
71
71
  }
72
- .editor-dark[data-v-918908b8] .w-e-text-container .w-e-text:focus {
72
+ .editor-dark[data-v-7bd83e80] .w-e-text-container .w-e-text:focus {
73
73
  background-color: var(--c-editor-text-focus-bg) !important;
74
74
  color: var(--c-editor-text-focus-color) !important;
75
75
  }
76
- [data-v-918908b8] .w-e-toolbar,[data-v-918908b8] .w-e-text-container {
76
+ [data-v-7bd83e80] .w-e-toolbar,[data-v-7bd83e80] .w-e-text-container {
77
77
  max-width: 100% !important;
78
78
  overflow-x: auto !important;
79
79
  box-sizing: border-box !important;
80
80
  }
81
- [data-v-918908b8] .w-e-text {
81
+ [data-v-7bd83e80] .w-e-text {
82
82
  max-width: 100% !important;
83
83
  word-wrap: break-word !important;
84
84
  overflow-wrap: break-word !important;
85
85
  }
86
- [data-v-918908b8] .w-e-toolbar,[data-v-918908b8] .w-e-text-container,[data-v-918908b8] .w-e-text {
86
+ [data-v-7bd83e80] .w-e-toolbar,[data-v-7bd83e80] .w-e-text-container,[data-v-7bd83e80] .w-e-text {
87
87
  transition:
88
88
  background-color var(--c-editor-transition-duration) ease,
89
89
  border-color var(--c-editor-transition-duration) ease,
90
90
  color var(--c-editor-transition-duration) ease !important;
91
91
  }
92
- .editor-focused[data-v-918908b8] {
93
- overflow: hidden !important;
92
+ .editor-focused[data-v-7bd83e80] {
94
93
  max-width: 100% !important;
95
94
  }
96
95
 
@@ -1 +1 @@
1
- require(`./chunk.cjs`);const e=require(`./export-helper.cjs`),t=require(`./html.cjs`);let n=require(`vue`);const r=[`id`],i=(0,n.defineComponent)({name:`C_Editor`,__name:`index`,props:{editorId:{},modelValue:{default:``},placeholder:{default:``},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},height:{default:240},theme:{default:`light`}},emits:[`update:modelValue`,`editor-mounted`,`editor-change`,`error`],setup(e,{expose:i,emit:a}){let o=e,s=a,c=(0,n.ref)(null),l=(0,n.shallowRef)(null),u=(0,n.ref)(!1),d=(0,n.ref)(o.modelValue),f=(0,n.ref)(0),p=(0,n.computed)(()=>o.theme===`dark`),m=(0,n.computed)(()=>o.disabled||o.readonly),h=(0,n.computed)(()=>({height:`${Math.max(80,o.height-42)}px`,overflowY:`hidden`})),g={},_=(0,n.computed)(()=>({placeholder:o.placeholder,readOnly:m.value,autoFocus:!1,sanitizeHtml:t.t})),v=e=>{s(`error`,e instanceof Error?e:Error(String(e)))},y=e=>typeof window>`u`?(()=>null):(0,n.defineAsyncComponent)({loader:()=>import(`@wangeditor-next/editor-for-vue`).then(t=>t[e]),onError(e,t,n){v(e),n()}}),b=y(`Editor`),x=y(`Toolbar`),S=e=>{l.value=e,u.value=!0,m.value&&e.disable(),s(`editor-mounted`,e)},C=e=>{let t=e.getHtml();d.value=t,s(`update:modelValue`,t),s(`editor-change`,t)},w=()=>{u.value||(d.value=o.modelValue,f.value+=1)},T=()=>{let e=l.value;if(l.value=null,u.value=!1,!(!e||e.isDestroyed))try{e.destroy()}catch(e){v(e)}},E=e=>{let n=t.t(e);d.value=n;try{l.value?.getHtml()!==n&&l.value?.setHtml(n)}catch(e){v(e)}},D=()=>{try{return l.value?.getHtml()??d.value}catch(e){return v(e),d.value}};(0,n.watch)(()=>o.modelValue,e=>{e!==D()&&E(e||``)}),(0,n.watch)(m,e=>{let t=l.value;if(t)try{e?t.disable():t.enable()}catch(e){v(e)}});let O=()=>{if(!c.value)return;let e=c.value.closest(`.form-demo`);if(e){e.classList.add(`editor-focused`);let t=e.scrollWidth;e.style.maxWidth=`${t}px`}},k=()=>{if(!c.value)return;let e=c.value.closest(`.form-demo`);e&&(e.classList.remove(`editor-focused`),e.style.maxWidth=``)};return(0,n.onBeforeUnmount)(()=>{T()}),i({initializeEditor:w,destroyEditor:T,setContent:E,getContent:D,handleEditorFocus:O,handleEditorBlur:k,editorInstance:(0,n.readonly)(l),isInitialized:(0,n.readonly)(u)}),(t,i)=>((0,n.openBlock)(),(0,n.createElementBlock)(`div`,{id:e.editorId,ref_key:`editorContainer`,ref:c,class:(0,n.normalizeClass)([`c-editor w-full`,{"editor-dark":p.value,"is-disabled":m.value}]),onFocusin:O,onFocusout:k},[(0,n.createVNode)((0,n.unref)(x),{editor:l.value,"default-config":g,mode:`default`,class:`c-editor__toolbar`},null,8,[`editor`]),((0,n.openBlock)(),(0,n.createBlock)((0,n.unref)(b),{key:f.value,modelValue:d.value,"onUpdate:modelValue":i[0]||=e=>d.value=e,"default-config":_.value,mode:`default`,style:(0,n.normalizeStyle)(h.value),onOnCreated:S,onOnChange:C},null,8,[`modelValue`,`default-config`,`style`]))],42,r))}});var a=e.t(i,[[`__scopeId`,`data-v-918908b8`]]);Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return a}});
1
+ require(`./chunk.cjs`);const e=require(`./export-helper.cjs`),t=require(`./html.cjs`);let n=require(`vue`);const r=[`id`],i=(0,n.defineComponent)({name:`C_Editor`,__name:`index`,props:{editorId:{},modelValue:{default:``},placeholder:{default:``},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},height:{default:240},theme:{default:`light`}},emits:[`update:modelValue`,`editor-mounted`,`editor-change`,`error`],setup(e,{expose:i,emit:a}){let o=e,s=a,c=(0,n.ref)(!1),l=(0,n.shallowRef)(null),u=(0,n.ref)(!1),d=(0,n.ref)(o.modelValue),f=(0,n.ref)(0),p=(0,n.computed)(()=>o.theme===`dark`),m=(0,n.computed)(()=>o.disabled||o.readonly),h=(0,n.computed)(()=>({height:`${Math.max(80,o.height-42)}px`,overflowY:`hidden`})),g={},_=(0,n.computed)(()=>({placeholder:o.placeholder,readOnly:m.value,autoFocus:!1,sanitizeHtml:t.t})),v=e=>{s(`error`,e instanceof Error?e:Error(String(e)))},y=e=>typeof window>`u`?(()=>null):(0,n.defineAsyncComponent)({loader:()=>import(`@wangeditor-next/editor-for-vue`).then(t=>t[e]),onError(e,t,n){v(e),n()}}),b=y(`Editor`),x=y(`Toolbar`),S=e=>{l.value=e,u.value=!0,m.value&&e.disable(),s(`editor-mounted`,e)},C=e=>{let t=e.getHtml();d.value=t,s(`update:modelValue`,t),s(`editor-change`,t)},w=()=>{u.value||(d.value=o.modelValue,f.value+=1)},T=()=>{let e=l.value;if(l.value=null,u.value=!1,!(!e||e.isDestroyed))try{e.destroy()}catch(e){v(e)}},E=e=>{let n=t.t(e);d.value=n;try{l.value?.getHtml()!==n&&l.value?.setHtml(n)}catch(e){v(e)}},D=()=>{try{return l.value?.getHtml()??d.value}catch(e){return v(e),d.value}};(0,n.watch)(()=>o.modelValue,e=>{e!==D()&&E(e||``)}),(0,n.watch)(m,e=>{let t=l.value;if(t)try{e?t.disable():t.enable()}catch(e){v(e)}});let O=()=>{c.value=!0},k=()=>{c.value=!1};return(0,n.onBeforeUnmount)(()=>{T()}),i({initializeEditor:w,destroyEditor:T,setContent:E,getContent:D,handleEditorFocus:O,handleEditorBlur:k,editorInstance:(0,n.readonly)(l),isInitialized:(0,n.readonly)(u)}),(t,i)=>((0,n.openBlock)(),(0,n.createElementBlock)(`div`,{id:e.editorId,class:(0,n.normalizeClass)([`c-editor w-full`,{"editor-dark":p.value,"is-disabled":m.value,"editor-focused":c.value}]),onFocusin:O,onFocusout:k},[(0,n.createVNode)((0,n.unref)(x),{editor:l.value,"default-config":g,mode:`default`,class:`c-editor__toolbar`},null,8,[`editor`]),((0,n.openBlock)(),(0,n.createBlock)((0,n.unref)(b),{key:f.value,modelValue:d.value,"onUpdate:modelValue":i[0]||=e=>d.value=e,"default-config":_.value,mode:`default`,style:(0,n.normalizeStyle)(h.value),onOnCreated:S,onOnChange:C},null,8,[`modelValue`,`default-config`,`style`]))],42,r))}});var a=e.t(i,[[`__scopeId`,`data-v-7bd83e80`]]);Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return a}});
package/dist/C_Editor2.js CHANGED
@@ -1 +1 @@
1
- import{t as e}from"./export-helper.js";import{t}from"./html.js";import{computed as n,createBlock as r,createElementBlock as i,createVNode as a,defineAsyncComponent as o,defineComponent as s,normalizeClass as c,normalizeStyle as l,onBeforeUnmount as u,openBlock as d,readonly as f,ref as p,shallowRef as m,unref as h,watch as g}from"vue";const _=[`id`];var v=e(s({name:`C_Editor`,__name:`index`,props:{editorId:{},modelValue:{default:``},placeholder:{default:``},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},height:{default:240},theme:{default:`light`}},emits:[`update:modelValue`,`editor-mounted`,`editor-change`,`error`],setup(e,{expose:s,emit:v}){let y=e,b=v,x=p(null),S=m(null),C=p(!1),w=p(y.modelValue),T=p(0),E=n(()=>y.theme===`dark`),D=n(()=>y.disabled||y.readonly),O=n(()=>({height:`${Math.max(80,y.height-42)}px`,overflowY:`hidden`})),k={},A=n(()=>({placeholder:y.placeholder,readOnly:D.value,autoFocus:!1,sanitizeHtml:t})),j=e=>{b(`error`,e instanceof Error?e:Error(String(e)))},M=e=>typeof window>`u`?(()=>null):o({loader:()=>import(`@wangeditor-next/editor-for-vue`).then(t=>t[e]),onError(e,t,n){j(e),n()}}),N=M(`Editor`),P=M(`Toolbar`),F=e=>{S.value=e,C.value=!0,D.value&&e.disable(),b(`editor-mounted`,e)},I=e=>{let t=e.getHtml();w.value=t,b(`update:modelValue`,t),b(`editor-change`,t)},L=()=>{C.value||(w.value=y.modelValue,T.value+=1)},R=()=>{let e=S.value;if(S.value=null,C.value=!1,!(!e||e.isDestroyed))try{e.destroy()}catch(e){j(e)}},z=e=>{let n=t(e);w.value=n;try{S.value?.getHtml()!==n&&S.value?.setHtml(n)}catch(e){j(e)}},B=()=>{try{return S.value?.getHtml()??w.value}catch(e){return j(e),w.value}};g(()=>y.modelValue,e=>{e!==B()&&z(e||``)}),g(D,e=>{let t=S.value;if(t)try{e?t.disable():t.enable()}catch(e){j(e)}});let V=()=>{if(!x.value)return;let e=x.value.closest(`.form-demo`);if(e){e.classList.add(`editor-focused`);let t=e.scrollWidth;e.style.maxWidth=`${t}px`}},H=()=>{if(!x.value)return;let e=x.value.closest(`.form-demo`);e&&(e.classList.remove(`editor-focused`),e.style.maxWidth=``)};return u(()=>{R()}),s({initializeEditor:L,destroyEditor:R,setContent:z,getContent:B,handleEditorFocus:V,handleEditorBlur:H,editorInstance:f(S),isInitialized:f(C)}),(t,n)=>(d(),i(`div`,{id:e.editorId,ref_key:`editorContainer`,ref:x,class:c([`c-editor w-full`,{"editor-dark":E.value,"is-disabled":D.value}]),onFocusin:V,onFocusout:H},[a(h(P),{editor:S.value,"default-config":k,mode:`default`,class:`c-editor__toolbar`},null,8,[`editor`]),(d(),r(h(N),{key:T.value,modelValue:w.value,"onUpdate:modelValue":n[0]||=e=>w.value=e,"default-config":A.value,mode:`default`,style:l(O.value),onOnCreated:F,onOnChange:I},null,8,[`modelValue`,`default-config`,`style`]))],42,_))}}),[[`__scopeId`,`data-v-918908b8`]]);export{v as t};
1
+ import{t as e}from"./export-helper.js";import{t}from"./html.js";import{computed as n,createBlock as r,createElementBlock as i,createVNode as a,defineAsyncComponent as o,defineComponent as s,normalizeClass as c,normalizeStyle as l,onBeforeUnmount as u,openBlock as d,readonly as f,ref as p,shallowRef as m,unref as h,watch as g}from"vue";const _=[`id`];var v=e(s({name:`C_Editor`,__name:`index`,props:{editorId:{},modelValue:{default:``},placeholder:{default:``},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},height:{default:240},theme:{default:`light`}},emits:[`update:modelValue`,`editor-mounted`,`editor-change`,`error`],setup(e,{expose:s,emit:v}){let y=e,b=v,x=p(!1),S=m(null),C=p(!1),w=p(y.modelValue),T=p(0),E=n(()=>y.theme===`dark`),D=n(()=>y.disabled||y.readonly),O=n(()=>({height:`${Math.max(80,y.height-42)}px`,overflowY:`hidden`})),k={},A=n(()=>({placeholder:y.placeholder,readOnly:D.value,autoFocus:!1,sanitizeHtml:t})),j=e=>{b(`error`,e instanceof Error?e:Error(String(e)))},M=e=>typeof window>`u`?(()=>null):o({loader:()=>import(`@wangeditor-next/editor-for-vue`).then(t=>t[e]),onError(e,t,n){j(e),n()}}),N=M(`Editor`),P=M(`Toolbar`),F=e=>{S.value=e,C.value=!0,D.value&&e.disable(),b(`editor-mounted`,e)},I=e=>{let t=e.getHtml();w.value=t,b(`update:modelValue`,t),b(`editor-change`,t)},L=()=>{C.value||(w.value=y.modelValue,T.value+=1)},R=()=>{let e=S.value;if(S.value=null,C.value=!1,!(!e||e.isDestroyed))try{e.destroy()}catch(e){j(e)}},z=e=>{let n=t(e);w.value=n;try{S.value?.getHtml()!==n&&S.value?.setHtml(n)}catch(e){j(e)}},B=()=>{try{return S.value?.getHtml()??w.value}catch(e){return j(e),w.value}};g(()=>y.modelValue,e=>{e!==B()&&z(e||``)}),g(D,e=>{let t=S.value;if(t)try{e?t.disable():t.enable()}catch(e){j(e)}});let V=()=>{x.value=!0},H=()=>{x.value=!1};return u(()=>{R()}),s({initializeEditor:L,destroyEditor:R,setContent:z,getContent:B,handleEditorFocus:V,handleEditorBlur:H,editorInstance:f(S),isInitialized:f(C)}),(t,n)=>(d(),i(`div`,{id:e.editorId,class:c([`c-editor w-full`,{"editor-dark":E.value,"is-disabled":D.value,"editor-focused":x.value}]),onFocusin:V,onFocusout:H},[a(h(P),{editor:S.value,"default-config":k,mode:`default`,class:`c-editor__toolbar`},null,8,[`editor`]),(d(),r(h(N),{key:T.value,modelValue:w.value,"onUpdate:modelValue":n[0]||=e=>w.value=e,"default-config":A.value,mode:`default`,style:l(O.value),onOnCreated:F,onOnChange:I},null,8,[`modelValue`,`default-config`,`style`]))],42,_))}}),[[`__scopeId`,`data-v-7bd83e80`]]);export{v as t};
@@ -378,10 +378,10 @@
378
378
  .excel-container .excel-viewer .excel-table-container .excel-pagination[data-v-5569b81f] .n-popover {
379
379
  z-index: 1005 !important;
380
380
  }
381
- /* unplugin-vue-components disabled */.c-file-preview-wrapper[data-v-7c7c652b] {
381
+ /* unplugin-vue-components disabled */.c-file-preview-wrapper[data-v-3e4e0b9c] {
382
382
  width: 100%;
383
383
  }
384
- .c-file-preview-wrapper .file-info-card .file-info[data-v-7c7c652b] {
384
+ .c-file-preview-wrapper .file-info-card .file-info[data-v-3e4e0b9c] {
385
385
  display: flex;
386
386
  align-items: center;
387
387
  gap: 16px;
@@ -392,12 +392,12 @@
392
392
  transition: var(--c-transition, 0.2s ease);
393
393
  cursor: pointer;
394
394
  }
395
- .c-file-preview-wrapper .file-info-card .file-info[data-v-7c7c652b]:hover {
395
+ .c-file-preview-wrapper .file-info-card .file-info[data-v-3e4e0b9c]:hover {
396
396
  border-color: var(--c-primary, #40a9ff);
397
397
  box-shadow: 0 4px 12px rgba(64, 169, 255, 0.15);
398
398
  transform: translateY(-1px);
399
399
  }
400
- .c-file-preview-wrapper .file-info-card .file-info .file-icon[data-v-7c7c652b] {
400
+ .c-file-preview-wrapper .file-info-card .file-info .file-icon[data-v-3e4e0b9c] {
401
401
  flex-shrink: 0;
402
402
  width: 56px;
403
403
  height: 56px;
@@ -408,11 +408,11 @@
408
408
  border-radius: 12px;
409
409
  border: 1px solid #dee2e6;
410
410
  }
411
- .c-file-preview-wrapper .file-info-card .file-info .file-details[data-v-7c7c652b] {
411
+ .c-file-preview-wrapper .file-info-card .file-info .file-details[data-v-3e4e0b9c] {
412
412
  flex: 1;
413
413
  min-width: 0;
414
414
  }
415
- .c-file-preview-wrapper .file-info-card .file-info .file-details .file-name[data-v-7c7c652b] {
415
+ .c-file-preview-wrapper .file-info-card .file-info .file-details .file-name[data-v-3e4e0b9c] {
416
416
  display: flex;
417
417
  align-items: center;
418
418
  gap: 12px;
@@ -421,22 +421,22 @@
421
421
  font-size: 16px;
422
422
  color: var(--c-text-1, #1f2937);
423
423
  }
424
- .c-file-preview-wrapper .file-info-card .file-info .file-details .file-meta[data-v-7c7c652b] {
424
+ .c-file-preview-wrapper .file-info-card .file-info .file-details .file-meta[data-v-3e4e0b9c] {
425
425
  display: flex;
426
426
  gap: 16px;
427
427
  font-size: 13px;
428
428
  color: var(--c-text-2, #6b7280);
429
429
  }
430
- .c-file-preview-wrapper .file-info-card .file-info .file-details .file-meta .file-size[data-v-7c7c652b] {
430
+ .c-file-preview-wrapper .file-info-card .file-info .file-details .file-meta .file-size[data-v-3e4e0b9c] {
431
431
  font-weight: 500;
432
432
  color: var(--c-text-1, #374151);
433
433
  }
434
- .c-file-preview-wrapper .file-info-card .file-info .file-actions[data-v-7c7c652b] {
434
+ .c-file-preview-wrapper .file-info-card .file-info .file-actions[data-v-3e4e0b9c] {
435
435
  flex-shrink: 0;
436
436
  display: flex;
437
437
  gap: 8px;
438
438
  }
439
- .modal-container[data-v-7c7c652b] {
439
+ .modal-container[data-v-3e4e0b9c] {
440
440
  background: var(--c-bg-card, white);
441
441
  border-radius: 8px;
442
442
  box-shadow: 0 20px 40px rgba(0, 0, 0, 0.15);
@@ -446,7 +446,7 @@
446
446
  height: 100%;
447
447
  overflow: visible;
448
448
  }
449
- .modal-container .modal-header[data-v-7c7c652b] {
449
+ .modal-container .modal-header[data-v-3e4e0b9c] {
450
450
  display: flex;
451
451
  justify-content: space-between;
452
452
  align-items: center;
@@ -457,7 +457,7 @@
457
457
  z-index: 10;
458
458
  position: relative;
459
459
  }
460
- .modal-container .modal-header .modal-title[data-v-7c7c652b] {
460
+ .modal-container .modal-header .modal-title[data-v-3e4e0b9c] {
461
461
  display: flex;
462
462
  align-items: center;
463
463
  gap: 8px;
@@ -465,25 +465,25 @@
465
465
  font-size: 16px;
466
466
  color: var(--c-text-1, #333);
467
467
  }
468
- .modal-container .modal-header .modal-title span[data-v-7c7c652b] {
468
+ .modal-container .modal-header .modal-title span[data-v-3e4e0b9c] {
469
469
  max-width: 400px;
470
470
  overflow: hidden;
471
471
  text-overflow: ellipsis;
472
472
  white-space: nowrap;
473
473
  }
474
- .modal-container .modal-header .modal-actions[data-v-7c7c652b] {
474
+ .modal-container .modal-header .modal-actions[data-v-3e4e0b9c] {
475
475
  display: flex;
476
476
  gap: 8px;
477
477
  align-items: center;
478
478
  }
479
- .modal-container .modal-content[data-v-7c7c652b] {
479
+ .modal-container .modal-content[data-v-3e4e0b9c] {
480
480
  flex: 1;
481
481
  display: flex;
482
482
  flex-direction: column;
483
483
  overflow: visible;
484
484
  min-height: 0;
485
485
  }
486
- .modal-container .preview-header[data-v-7c7c652b] {
486
+ .modal-container .preview-header[data-v-3e4e0b9c] {
487
487
  padding: 16px;
488
488
  border-bottom: 1px solid var(--c-border, #e0e0e0);
489
489
  background-color: var(--c-bg-card, #f9f9f9);
@@ -491,13 +491,13 @@
491
491
  z-index: 9;
492
492
  position: relative;
493
493
  }
494
- .modal-container .preview-content[data-v-7c7c652b] {
494
+ .modal-container .preview-content[data-v-3e4e0b9c] {
495
495
  flex: 1;
496
496
  overflow: auto;
497
497
  min-height: 0;
498
498
  position: relative;
499
499
  }
500
- .modal-container .preview-content .status-container[data-v-7c7c652b] {
500
+ .modal-container .preview-content .status-container[data-v-3e4e0b9c] {
501
501
  height: 300px;
502
502
  display: flex;
503
503
  align-items: center;
@@ -1 +1 @@
1
- const e=require(`./chunk.cjs`),t=require(`./C_Icon2.cjs`),n=require(`./export-helper.cjs`),r=require(`./html.cjs`);let i=require(`vue`),a=require(`naive-ui`),o=require(`xlsx`);o=e.t(o);let s=require(`mammoth`);s=e.t(s);const c={pdf:`pdf`,doc:`word`,docx:`word`,xls:`excel`,xlsx:`excel`},l={pdf:{tagType:`error`,icon:`ic:outline-picture-as-pdf`,color:`#dc2626`},word:{tagType:`info`,icon:`ic:outline-description`,color:`#2563eb`},excel:{tagType:`success`,icon:`ic:outline-grid-on`,color:`#16a34a`},unknown:{tagType:`default`,icon:`ic:outline-insert-drive-file`,color:`#6b7280`}},u={pdf:{min:.5,max:3,step:.25,default:1},word:{min:50,max:200,step:10,default:100}},d=[20,50,100,200],f=[`fullscreenchange`,`webkitfullscreenchange`,`mozfullscreenchange`,`MSFullscreenChange`],p=e=>{try{let t=e.split(`/`).pop()||e.split(`\\`).pop();if(t?.includes(`.`)){let n=decodeURIComponent(t.split(`?`)[0]);if(n&&n!==e)return n}}catch(e){console.warn(`解析URL文件名失败:`,e)}return`未知文件`},m=e=>{if(e===0)return`0 B`;let t=1024,n=[`B`,`KB`,`MB`,`GB`],r=Math.floor(Math.log(e)/Math.log(t));return parseFloat((e/t**+r).toFixed(1))+` `+n[r]},h=e=>{if(!e||e===`未知文件`)return`unknown`;let t=e.toLowerCase().split(`.`).pop();return t&&c[t]||`unknown`},g=e=>l[e]||l.unknown,_=(e,t)=>n=>{let{min:r,max:i,step:a,default:o}=t;switch(n){case`reset`:e.value=o;break;case`in`:e.value<i&&(e.value+=a);break;case`out`:e.value>r&&(e.value-=a);break}},v=e=>{let t=``;for(;e>=0;)t=String.fromCharCode(65+e%26)+t,e=Math.floor(e/26)-1;return t},y=e=>{if(e==null||e===``)return``;let t=String(e).trim();if(!isNaN(Number(t))&&t!==``&&t.length<15){let e=Number(t);return Number.isInteger(e)?e.toLocaleString():e.toLocaleString(void 0,{maximumFractionDigits:2})}return t},b=e=>{if(e==null||e===``)return`cell-empty`;let t=String(e).trim();return!isNaN(Number(t))&&t!==``?`cell-number`:t.match(/[■▬▪▫─━]/)?`cell-gantt`:t.match(/^\d{4}[-/]\d{2}[-/]\d{2}/)||t.match(/^\d{2}[-/]\d{2}[-/]\d{4}/)?`cell-date`:[`true`,`false`].includes(t.toLowerCase())?`cell-boolean`:t.length>20?`cell-text cell-long`:`cell-text`},x=(e,t)=>{let{c:n,r}=o.utils.decode_range(e[`!ref`]||`A1:A1`).e,i=Array.from({length:n+1},(t,n)=>{let r=e[o.utils.encode_cell({r:0,c:n})],i=r?String(r.v||``).trim():`列${n+1}`;return{title:i||`列${n+1}`,key:`col_${n}`,width:Math.min(Math.max(i.length*12,80),200)}}),a=new Map;return t.forEach(({s:{r:e,c:t},e:{r:n,c:r}})=>{for(let i=e;i<=n;i++)for(let o=t;o<=r;o++)a.set(`${i}-${o}`,{isMain:i===e&&o===t,rowspan:n-e+1,colspan:r-t+1})}),{data:Array.from({length:r+1},(t,r)=>{let i={};for(let t=0;t<=n;t++){let n=e[o.utils.encode_cell({r,c:t})],s=a.get(`${r}-${t}`);i[`col_${t}`]={value:n&&n.v||``,merged:!!s,hidden:s&&!s.isMain,rowspan:s?.isMain?s.rowspan:1,colspan:s?.isMain?s.colspan:1}}return i}),columns:i}};async function S(e){return{url:URL.createObjectURL(e)+`#toolbar=1&navpanes=1&scrollbar=1&view=FitH`,totalPages:1}}async function C(e){let t=await e.arrayBuffer(),n=await s.default.convertToHtml({arrayBuffer:t,styleMap:[`p[style-name='Heading 1'] => h1:fresh`,`p[style-name='Heading 2'] => h2:fresh`,`p[style-name='Heading 3'] => h3:fresh`,`p[style-name='Title'] => h1.title:fresh`]}),i=[],a=document.createElement(`div`);a.innerHTML=r.t(n.value);let o=a.querySelectorAll(`h1, h2, h3, h4, h5, h6`);return Array.from(o).forEach((e,t)=>{let n=`heading-${t}`,r=parseInt(e.tagName.charAt(1)),a=e.textContent||``;e.id=n,i.push({id:n,text:a,level:r})}),{content:a.innerHTML,headings:i}}async function w(e){let t=await e.arrayBuffer(),n=o.read(t,{type:`array`,cellStyles:!0,cellFormula:!0,cellDates:!0});if(!n.SheetNames.length)throw Error(`Excel文件中没有找到工作表`);return{sheets:n.SheetNames.map(e=>{let t=n.Sheets[e],r=t[`!merges`]||[],{data:i,columns:a}=x(t,r);return{name:e,data:i,merges:r,columns:a}})}}const T={class:`file-container pdf-container`},E={class:`file-toolbar`},D={class:`flex justify-between items-center`},O={class:`flex gap-2 items-center`},ee={class:`text-sm text-gray-600`},te={class:`flex gap-2 items-center`},ne={class:`text-sm text-gray-600 min-w-12 text-center`},re={class:`file-viewer`},k=[`src`],A=(0,i.defineComponent)({__name:`index`,props:{pdfUrl:{},totalPages:{}},setup(e){let n=e,r=(0,i.ref)(1),o=(0,i.ref)(1),s=_(o,u.pdf),c=e=>{if(typeof e==`number`)r.value=Math.max(1,Math.min(e,n.totalPages));else{let t=e===`prev`?-1:1;r.value=Math.max(1,Math.min(r.value+t,n.totalPages))}};return(n,l)=>{let u=t.t;return(0,i.openBlock)(),(0,i.createElementBlock)(`div`,T,[(0,i.createElementVNode)(`div`,E,[(0,i.createElementVNode)(`div`,D,[(0,i.createCommentVNode)(` 翻页控制 `),(0,i.createElementVNode)(`div`,O,[(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,disabled:r.value<=1,onClick:l[0]||=e=>c(`prev`)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(u,{name:`ic:outline-chevron-left`})]),_:1},8,[`disabled`]),(0,i.createVNode)((0,i.unref)(a.NInputNumber),{value:r.value,"onUpdate:value":[l[1]||=e=>r.value=e,c],size:`small`,min:1,max:e.totalPages,style:{width:`80px`}},null,8,[`value`,`max`,`onUpdate:value`]),(0,i.createElementVNode)(`span`,ee,`/ `+(0,i.toDisplayString)(e.totalPages),1),(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,disabled:r.value>=e.totalPages,onClick:l[2]||=e=>c(`next`)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(u,{name:`ic:outline-chevron-right`})]),_:1},8,[`disabled`])]),(0,i.createCommentVNode)(` 缩放控制 `),(0,i.createElementVNode)(`div`,te,[(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,disabled:o.value<=.5,onClick:l[3]||=e=>(0,i.unref)(s)(`out`)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(u,{name:`ic:outline-zoom-out`})]),_:1},8,[`disabled`]),(0,i.createElementVNode)(`span`,ne,(0,i.toDisplayString)(Math.round(o.value*100))+`% `,1),(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,disabled:o.value>=3,onClick:l[4]||=e=>(0,i.unref)(s)(`in`)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(u,{name:`ic:outline-zoom-in`})]),_:1},8,[`disabled`]),(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,onClick:l[5]||=e=>(0,i.unref)(s)(`reset`)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(u,{name:`ic:outline-fit-screen`})]),default:(0,i.withCtx)(()=>[l[6]||=(0,i.createTextVNode)(` 适应 `,-1)]),_:1})])])]),(0,i.createElementVNode)(`div`,re,[e.pdfUrl?((0,i.openBlock)(),(0,i.createElementBlock)(`iframe`,{key:0,src:e.pdfUrl,class:`w-full h-full border-0`,title:`PDF预览`,frameborder:`0`,allowfullscreen:``},null,8,k)):(0,i.createCommentVNode)(`v-if`,!0)])])}}});var j=n.t(A,[[`__scopeId`,`data-v-6ef071db`]]);const M={class:`file-container word-container`},N={class:`file-toolbar`},P={class:`flex gap-2 items-center`},F={class:`text-sm text-gray-600 min-w-12 text-center`},I={class:`word-layout`},L={class:`word-main`},R={key:0,class:`word-outline`},z={class:`outline-content`},B=[`onClick`],V={class:`word-content`},H=[`innerHTML`],U=(0,i.defineComponent)({__name:`index`,props:{content:{},headings:{}},setup(e){let n=(0,i.ref)(!0),r=(0,i.ref)(100),o=_(r,u.word),s=e=>{document.getElementById(e)?.scrollIntoView({behavior:`smooth`,block:`start`})};return(c,l)=>{let u=t.t;return(0,i.openBlock)(),(0,i.createElementBlock)(`div`,M,[(0,i.createElementVNode)(`div`,N,[(0,i.createElementVNode)(`div`,P,[(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,onClick:l[0]||=e=>n.value=!n.value},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(u,{name:`ic:outline-list`})]),default:(0,i.withCtx)(()=>[(0,i.createTextVNode)(` `+(0,i.toDisplayString)(n.value?`隐藏`:`显示`)+`目录 `,1)]),_:1}),(0,i.createVNode)((0,i.unref)(a.NDivider),{vertical:``}),(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,disabled:r.value<=50,onClick:l[1]||=e=>(0,i.unref)(o)(`out`)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(u,{name:`ic:outline-zoom-out`})]),_:1},8,[`disabled`]),(0,i.createElementVNode)(`span`,F,(0,i.toDisplayString)(r.value)+`% `,1),(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,disabled:r.value>=200,onClick:l[2]||=e=>(0,i.unref)(o)(`in`)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(u,{name:`ic:outline-zoom-in`})]),_:1},8,[`disabled`]),(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,onClick:l[3]||=e=>(0,i.unref)(o)(`reset`)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(u,{name:`ic:outline-fit-screen`})]),default:(0,i.withCtx)(()=>[l[4]||=(0,i.createTextVNode)(` 重置 `,-1)]),_:1})])]),(0,i.createElementVNode)(`div`,I,[(0,i.createElementVNode)(`div`,L,[(0,i.createCommentVNode)(` 侧边栏目录 `),n.value?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,R,[l[5]||=(0,i.createElementVNode)(`div`,{class:`outline-header`},[(0,i.createElementVNode)(`h3`,{class:`text-sm font-semibold`},`文档目录`)],-1),(0,i.createElementVNode)(`div`,z,[((0,i.openBlock)(!0),(0,i.createElementBlock)(i.Fragment,null,(0,i.renderList)(e.headings,(e,t)=>((0,i.openBlock)(),(0,i.createElementBlock)(`div`,{key:t,class:(0,i.normalizeClass)([`outline-item`,`level-${e.level}`]),onClick:t=>s(e.id)},(0,i.toDisplayString)(e.text),11,B))),128))])])):(0,i.createCommentVNode)(`v-if`,!0),(0,i.createCommentVNode)(` 主要内容区域 `),(0,i.createElementVNode)(`div`,V,[(0,i.createElementVNode)(`div`,{class:`word-document`,style:(0,i.normalizeStyle)({transform:`scale(${r.value/100})`,transformOrigin:`top center`}),innerHTML:e.content},null,12,H)])])])])}}});var W=n.t(U,[[`__scopeId`,`data-v-31f606d3`]]);const G={class:`file-container excel-container`},K={class:`file-toolbar`},q={class:`flex justify-between items-center`},J={class:`flex gap-2 items-center`},Y={key:1,class:`text-sm text-gray-600`},X={class:`flex gap-2 items-center`},ie={class:`excel-viewer`},ae={key:0,class:`excel-info`},oe={class:`excel-table-container`},se={key:0,class:`excel-table`},ce={class:`header-content`},le={class:`column-letter`},ue={class:`column-title`},de={class:`row-number`},fe=[`rowspan`,`colspan`,`title`],pe={key:1,class:`excel-empty`},me={key:0,class:`excel-pagination`},he=(0,i.defineComponent)({__name:`index`,props:{sheets:{}},emits:[`reload`],setup(e){let n=e,r=(0,i.ref)(``),o=(0,i.ref)(!1),s=(0,i.ref)(1),c=(0,i.ref)(50),l=(0,i.ref)([]),u=(0,i.ref)([]),f=(0,i.computed)(()=>Math.ceil(l.value.length/c.value)),p=(0,i.computed)(()=>{let e=(s.value-1)*c.value;return l.value.slice(e,e+c.value)}),m=e=>{c.value=e,s.value=1},h=e=>{let t=n.sheets.find(t=>t.name===e);t&&(l.value=t.data,u.value=t.columns,s.value=1)};return(0,i.watch)(r,e=>{h(e)}),(0,i.watch)(()=>n.sheets,e=>{if(e.length>0){let[t]=e;r.value=t.name,l.value=t.data,u.value=t.columns,s.value=1}},{immediate:!0}),(n,h)=>{let g=t.t;return(0,i.openBlock)(),(0,i.createElementBlock)(`div`,G,[(0,i.createCommentVNode)(` 工具栏 `),(0,i.createElementVNode)(`div`,K,[(0,i.createElementVNode)(`div`,q,[(0,i.createElementVNode)(`div`,J,[e.sheets.length>1?((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.NTabs),{key:0,value:r.value,"onUpdate:value":h[0]||=e=>r.value=e,type:`card`,size:`small`},{default:(0,i.withCtx)(()=>[((0,i.openBlock)(!0),(0,i.createElementBlock)(i.Fragment,null,(0,i.renderList)(e.sheets,e=>((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.NTabPane),{key:e.name,name:e.name,tab:e.name},null,8,[`name`,`tab`]))),128))]),_:1},8,[`value`])):((0,i.openBlock)(),(0,i.createElementBlock)(`span`,Y,` 工作表: `+(0,i.toDisplayString)(r.value),1))]),(0,i.createElementVNode)(`div`,X,[(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,onClick:h[1]||=e=>o.value=!o.value},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(g,{name:`ic:outline-format-paint`})]),default:(0,i.withCtx)(()=>[(0,i.createTextVNode)(` `+(0,i.toDisplayString)(o.value?`紧凑视图`:`完整格式`),1)]),_:1})])])]),(0,i.createElementVNode)(`div`,ie,[(0,i.createCommentVNode)(` 信息面板 `),l.value.length>0?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,ae,[(0,i.createVNode)((0,i.unref)(a.NText),{depth:`3`,class:`text-sm`},{default:(0,i.withCtx)(()=>[(0,i.createTextVNode)(` 当前工作表: `+(0,i.toDisplayString)(r.value)+` | 总行数: `+(0,i.toDisplayString)(l.value.length)+` | 总列数: `+(0,i.toDisplayString)(u.value.length)+` | 当前页: `+(0,i.toDisplayString)(s.value)+`/`+(0,i.toDisplayString)(f.value),1)]),_:1})])):(0,i.createCommentVNode)(`v-if`,!0),(0,i.createCommentVNode)(` 表格 `),(0,i.createElementVNode)(`div`,oe,[(0,i.createElementVNode)(`div`,{class:(0,i.normalizeClass)([`excel-table-wrapper`,{"simple-mode":!o.value}])},[l.value.length>0?((0,i.openBlock)(),(0,i.createElementBlock)(`table`,se,[(0,i.createElementVNode)(`thead`,null,[(0,i.createElementVNode)(`tr`,null,[h[4]||=(0,i.createElementVNode)(`th`,{class:`row-number`},`行号`,-1),((0,i.openBlock)(!0),(0,i.createElementBlock)(i.Fragment,null,(0,i.renderList)(u.value,(e,t)=>((0,i.openBlock)(),(0,i.createElementBlock)(`th`,{key:e.key,class:`excel-header`,style:(0,i.normalizeStyle)({minWidth:e.width+`px`})},[(0,i.createElementVNode)(`div`,ce,[(0,i.createElementVNode)(`span`,le,(0,i.toDisplayString)((0,i.unref)(v)(t)),1),(0,i.createElementVNode)(`span`,ue,(0,i.toDisplayString)(e.title),1)])],4))),128))])]),(0,i.createElementVNode)(`tbody`,null,[((0,i.openBlock)(!0),(0,i.createElementBlock)(i.Fragment,null,(0,i.renderList)(p.value,(e,t)=>((0,i.openBlock)(),(0,i.createElementBlock)(`tr`,{key:t,class:`excel-row`},[(0,i.createElementVNode)(`td`,de,(0,i.toDisplayString)((s.value-1)*c.value+t+1),1),((0,i.openBlock)(!0),(0,i.createElementBlock)(i.Fragment,null,(0,i.renderList)(u.value,t=>(0,i.withDirectives)(((0,i.openBlock)(),(0,i.createElementBlock)(`td`,{key:t.key,class:(0,i.normalizeClass)([`excel-cell`,[(0,i.unref)(b)(e[t.key]?.value),e[t.key]?.merged?`merged-cell`:``,o.value?``:`compact-cell`]]),rowspan:e[t.key]?.rowspan||1,colspan:e[t.key]?.colspan||1,title:e[t.key]?.value},(0,i.toDisplayString)((0,i.unref)(y)(e[t.key]?.value)),11,fe)),[[i.vShow,!e[t.key]?.hidden]])),128))]))),128))])])):((0,i.openBlock)(),(0,i.createElementBlock)(`div`,pe,[(0,i.createVNode)((0,i.unref)(a.NEmpty),{description:`该工作表没有数据或解析失败`},{extra:(0,i.withCtx)(()=>[(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,onClick:h[2]||=e=>n.$emit(`reload`)},{default:(0,i.withCtx)(()=>[...h[5]||=[(0,i.createTextVNode)(` 重新解析 `,-1)]]),_:1})]),_:1})]))],2),(0,i.createCommentVNode)(` 分页 `),f.value>1?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,me,[(0,i.createVNode)((0,i.unref)(a.NPagination),{page:s.value,"onUpdate:page":h[3]||=e=>s.value=e,"page-count":f.value,"page-size":c.value,"show-size-picker":``,"page-sizes":(0,i.unref)(d),"onUpdate:pageSize":m},null,8,[`page`,`page-count`,`page-size`,`page-sizes`])])):(0,i.createCommentVNode)(`v-if`,!0)])])])}}});var ge=n.t(he,[[`__scopeId`,`data-v-5569b81f`]]);function Z(e,t){let{file:n,url:r,fileName:a}=e,o=(0,i.ref)(!1),s=(0,i.ref)(``),c=(0,i.ref)(0),l=(0,i.ref)(!1),u=(0,i.ref)(``),d=(0,i.ref)(0),f=(0,i.ref)(``),m=(0,i.ref)([]),_=(0,i.ref)([]),v=(0,i.computed)(()=>a.value&&a.value!==`未知文件`?a.value:n.value?.name?n.value.name:r.value?p(r.value):`未知文件`),y=(0,i.computed)(()=>h(v.value)),b=(0,i.computed)(()=>g(y.value)),x=()=>{s.value=``,o.value=!1,u.value=``,d.value=0,f.value=``,m.value=[],_.value=[]},T=e=>{s.value=e,o.value=!1},E=async()=>{if(n.value)return c.value=n.value.size,n.value;if(r.value){let e=await fetch(r.value);if(!e.ok)throw Error(`HTTP ${e.status}: ${e.statusText}`);let t=await e.blob(),n=new File([t],v.value,{type:t.type});return c.value=n.size,n}throw Error(`未提供文件或URL`)},D=async(e,t)=>{switch(t){case`pdf`:{let t=await S(e);u.value=t.url,d.value=t.totalPages;break}case`word`:{let t=await C(e);f.value=t.content,m.value=t.headings;break}case`excel`:_.value=(await w(e)).sheets;break;default:throw Error(`不支持的文件格式`)}},O=async()=>{if(!n.value&&!r.value){T(`未提供文件或URL`);return}x(),o.value=!0;try{await D(await E(),y.value),o.value=!1}catch(e){let t=e instanceof Error?e.message:`未知错误`;T(`${y.value.toUpperCase()}文件加载失败: ${t}`)}};return(0,i.watch)(()=>n.value?.size,e=>{c.value=e||0},{immediate:!0}),(0,i.onUnmounted)(()=>{u.value?.startsWith(`blob:`)&&URL.revokeObjectURL(u.value.split(`#`)[0])}),{loading:o,error:s,fileSize:c,showModal:l,pdfUrl:u,pdfTotalPages:d,wordContent:f,wordHeadings:m,excelSheets:_,displayFileName:v,fileType:y,fileConfig:b,loadFile:O,openPreview:async()=>{l.value=!0,await O(),t(`preview`,n.value||r.value)},downloadFile:()=>{if(n.value){let e=URL.createObjectURL(n.value);Object.assign(document.createElement(`a`),{href:e,download:v.value}).click(),URL.revokeObjectURL(e)}else r.value&&window.open(r.value,`_blank`);t(`download`,n.value||r.value)}}}function Q(e){let t=(0,i.ref)(!1),n=()=>{t.value=!!document.fullscreenElement},r=(e,t=0)=>t>=e.length?(console.warn(`无法切换全屏状态`),Promise.resolve()):e[t]().catch(()=>r(e,t+1));return(0,i.onMounted)(()=>{f.forEach(e=>document.addEventListener(e,n))}),(0,i.onUnmounted)(()=>{f.forEach(e=>document.removeEventListener(e,n))}),{isFullscreen:t,toggleFullscreen:async()=>{let t=e.value;t&&await r(document.fullscreenElement?[()=>document.exitFullscreen(),()=>document.webkitExitFullscreen(),()=>document.mozCancelFullScreen(),()=>document.msExitFullscreen()]:[()=>t.requestFullscreen(),()=>t.webkitRequestFullscreen(),()=>t.mozRequestFullScreen(),()=>t.msRequestFullscreen()])},exitFullscreen:async()=>{if(document.fullscreenElement)try{await document.exitFullscreen()}catch{}t.value=!1}}}const _e={class:`c-file-preview-wrapper`},ve={key:0,class:`file-info-card`},ye={class:`file-info`},be={class:`file-icon`},xe={class:`file-details`},Se={class:`file-name`},Ce={class:`file-meta`},we={class:`file-size`},Te={class:`file-actions`},Ee={class:`modal-header`},De={class:`modal-title`},$={class:`modal-actions`},Oe={class:`modal-content`},ke={class:`preview-header`},Ae={class:`flex justify-between items-center`},je={class:`flex items-center gap-3`},Me={class:`text-sm text-gray-500`},Ne={class:`flex gap-2`},Pe={class:`preview-content`},Fe={key:0,class:`status-container`},Ie=(0,i.defineComponent)({name:`C_FilePreview`,__name:`index`,props:{file:{},url:{},fileName:{default:`未知文件`},autoPreview:{type:Boolean,default:!1}},emits:[`preview`,`download`],setup(e,{emit:n}){let{file:r,url:o,fileName:s,autoPreview:c}=(0,i.toRefs)(e),{loading:l,error:u,fileSize:d,showModal:f,pdfUrl:p,pdfTotalPages:h,wordContent:g,wordHeadings:_,excelSheets:v,displayFileName:y,fileType:b,fileConfig:x,loadFile:S,openPreview:C,downloadFile:w}=Z({file:r,url:o,fileName:s},n),T=(0,i.ref)(),{isFullscreen:E,toggleFullscreen:D,exitFullscreen:O}=Q(T);return(0,i.watch)(f,e=>{e||O()}),(e,n)=>{let r=t.t;return(0,i.openBlock)(),(0,i.createElementBlock)(`div`,_e,[(0,i.createCommentVNode)(` 文件信息卡片模式 `),(0,i.unref)(c)?(0,i.createCommentVNode)(`v-if`,!0):((0,i.openBlock)(),(0,i.createElementBlock)(`div`,ve,[(0,i.createElementVNode)(`div`,ye,[(0,i.createElementVNode)(`div`,be,[(0,i.createVNode)(r,{name:(0,i.unref)(x).icon,size:40,color:(0,i.unref)(x).color},null,8,[`name`,`color`])]),(0,i.createElementVNode)(`div`,xe,[(0,i.createElementVNode)(`div`,Se,[(0,i.createVNode)((0,i.unref)(a.NEllipsis),{style:{"max-width":`250px`}},{default:(0,i.withCtx)(()=>[(0,i.createTextVNode)((0,i.toDisplayString)((0,i.unref)(y)),1)]),_:1}),(0,i.createVNode)((0,i.unref)(a.NTag),{type:(0,i.unref)(x).tagType,size:`small`},{default:(0,i.withCtx)(()=>[(0,i.createTextVNode)((0,i.toDisplayString)((0,i.unref)(b).toUpperCase()),1)]),_:1},8,[`type`])]),(0,i.createElementVNode)(`div`,Ce,[(0,i.createElementVNode)(`span`,we,(0,i.toDisplayString)((0,i.unref)(m)((0,i.unref)(d))),1)])]),(0,i.createElementVNode)(`div`,Te,[(0,i.createVNode)((0,i.unref)(a.NButton),{type:`primary`,onClick:(0,i.unref)(C)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(r,{name:`ic:outline-visibility`})]),default:(0,i.withCtx)(()=>[n[2]||=(0,i.createTextVNode)(` 预览 `,-1)]),_:1},8,[`onClick`]),(0,i.createVNode)((0,i.unref)(a.NButton),{type:`tertiary`,onClick:(0,i.unref)(w)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(r,{name:`ic:outline-download`})]),default:(0,i.withCtx)(()=>[n[3]||=(0,i.createTextVNode)(` 下载 `,-1)]),_:1},8,[`onClick`])])])])),(0,i.createCommentVNode)(` 模态框预览 `),(0,i.createVNode)((0,i.unref)(a.NModal),{show:(0,i.unref)(f),"onUpdate:show":n[1]||=e=>(0,i.isRef)(f)?f.value=e:null,"mask-closable":!1,closable:!1,"auto-focus":!1,"transform-origin":`center`,style:{width:`85vw`,"max-width":`1200px`,"min-width":`800px`,height:`75vh`,"max-height":`700px`,"min-height":`500px`}},{default:(0,i.withCtx)(()=>[(0,i.createElementVNode)(`div`,{ref_key:`modalContainer`,ref:T,class:`modal-container`},[(0,i.createCommentVNode)(` 自定义头部 `),(0,i.createElementVNode)(`div`,Ee,[(0,i.createElementVNode)(`div`,De,[(0,i.createVNode)(r,{name:(0,i.unref)(x).icon,size:20,color:(0,i.unref)(x).color},null,8,[`name`,`color`]),(0,i.createElementVNode)(`span`,null,(0,i.toDisplayString)((0,i.unref)(y)),1)]),(0,i.createElementVNode)(`div`,$,[(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,type:`tertiary`,onClick:(0,i.unref)(w)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(r,{name:`ic:outline-download`})]),default:(0,i.withCtx)(()=>[n[4]||=(0,i.createTextVNode)(` 下载 `,-1)]),_:1},8,[`onClick`]),(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,type:`tertiary`,onClick:n[0]||=e=>f.value=!1},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(r,{name:`ic:outline-close`})]),_:1})])]),(0,i.createCommentVNode)(` 预览内容 `),(0,i.createElementVNode)(`div`,Oe,[(0,i.createCommentVNode)(` 文件信息头部 `),(0,i.createElementVNode)(`div`,ke,[(0,i.createElementVNode)(`div`,Ae,[(0,i.createElementVNode)(`div`,je,[(0,i.createVNode)((0,i.unref)(a.NTag),{type:(0,i.unref)(x).tagType,size:`small`},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(r,{name:(0,i.unref)(x).icon},null,8,[`name`])]),default:(0,i.withCtx)(()=>[(0,i.createTextVNode)(` `+(0,i.toDisplayString)((0,i.unref)(b).toUpperCase()),1)]),_:1},8,[`type`]),(0,i.createVNode)((0,i.unref)(a.NEllipsis),{style:{"max-width":`300px`}},{default:(0,i.withCtx)(()=>[(0,i.createTextVNode)((0,i.toDisplayString)((0,i.unref)(y)),1)]),_:1}),(0,i.createElementVNode)(`span`,Me,(0,i.toDisplayString)((0,i.unref)(m)((0,i.unref)(d))),1)]),(0,i.createElementVNode)(`div`,Ne,[(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,type:`tertiary`,disabled:(0,i.unref)(l),onClick:(0,i.unref)(S)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(r,{name:`ic:outline-refresh`})]),default:(0,i.withCtx)(()=>[n[5]||=(0,i.createTextVNode)(` 刷新 `,-1)]),_:1},8,[`disabled`,`onClick`]),(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,type:`primary`,onClick:(0,i.unref)(D)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(r,{name:(0,i.unref)(E)?`ic:outline-fullscreen-exit`:`ic:outline-fullscreen`},null,8,[`name`])]),default:(0,i.withCtx)(()=>[(0,i.createTextVNode)(` `+(0,i.toDisplayString)((0,i.unref)(E)?`退出全屏`:`全屏`),1)]),_:1},8,[`onClick`])])])]),(0,i.createCommentVNode)(` 预览内容区域 `),(0,i.createElementVNode)(`div`,Pe,[(0,i.createCommentVNode)(` 加载和错误状态 `),(0,i.unref)(l)||(0,i.unref)(u)?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,Fe,[(0,i.unref)(l)?((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.NSpin),{key:0,size:`large`},{description:(0,i.withCtx)(()=>[(0,i.createTextVNode)(` 正在加载`+(0,i.toDisplayString)((0,i.unref)(b).toUpperCase())+`文件... `,1)]),_:1})):((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.NResult),{key:1,status:`error`,title:`预览失败`,description:(0,i.unref)(u)},{footer:(0,i.withCtx)(()=>[(0,i.createVNode)((0,i.unref)(a.NButton),{onClick:(0,i.unref)(S)},{default:(0,i.withCtx)(()=>[...n[6]||=[(0,i.createTextVNode)(`重试`,-1)]]),_:1},8,[`onClick`])]),_:1},8,[`description`]))])):((0,i.openBlock)(),(0,i.createElementBlock)(i.Fragment,{key:1},[(0,i.createCommentVNode)(` 文件预览 — 委托给子组件 `),(0,i.unref)(b)===`pdf`?((0,i.openBlock)(),(0,i.createBlock)(j,{key:0,"pdf-url":(0,i.unref)(p),"total-pages":(0,i.unref)(h)},null,8,[`pdf-url`,`total-pages`])):(0,i.unref)(b)===`word`?((0,i.openBlock)(),(0,i.createBlock)(W,{key:1,content:(0,i.unref)(g),headings:(0,i.unref)(_)},null,8,[`content`,`headings`])):(0,i.unref)(b)===`excel`?((0,i.openBlock)(),(0,i.createBlock)(ge,{key:2,sheets:(0,i.unref)(v),onReload:(0,i.unref)(S)},null,8,[`sheets`,`onReload`])):((0,i.openBlock)(),(0,i.createElementBlock)(i.Fragment,{key:3},[(0,i.createCommentVNode)(` 不支持的文件类型 `),(0,i.createVNode)((0,i.unref)(a.NResult),{status:`warning`,title:`不支持的文件格式`,description:`暂不支持预览 ${(0,i.unref)(b).toUpperCase()} 格式文件`},null,8,[`description`])],2112))],64))])])],512)]),_:1},8,[`show`])])}}});var Le=n.t(Ie,[[`__scopeId`,`data-v-7c7c652b`]]);Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return Q}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return Z}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return Le}});
1
+ const e=require(`./chunk.cjs`),t=require(`./C_Icon2.cjs`),n=require(`./export-helper.cjs`),r=require(`./html.cjs`);let i=require(`vue`),a=require(`naive-ui`),o=require(`xlsx`);o=e.t(o);let s=require(`mammoth`);s=e.t(s);const c={pdf:`pdf`,doc:`word`,docx:`word`,xls:`excel`,xlsx:`excel`},l={pdf:{tagType:`error`,icon:`ic:outline-picture-as-pdf`,color:`#dc2626`},word:{tagType:`info`,icon:`ic:outline-description`,color:`#2563eb`},excel:{tagType:`success`,icon:`ic:outline-grid-on`,color:`#16a34a`},unknown:{tagType:`default`,icon:`ic:outline-insert-drive-file`,color:`#6b7280`}},u={pdf:{min:.5,max:3,step:.25,default:1},word:{min:50,max:200,step:10,default:100}},d=[20,50,100,200],f=[`fullscreenchange`,`webkitfullscreenchange`,`mozfullscreenchange`,`MSFullscreenChange`],p=e=>{try{let t=e.split(`/`).pop()||e.split(`\\`).pop();if(t?.includes(`.`)){let n=decodeURIComponent(t.split(`?`)[0]);if(n&&n!==e)return n}}catch(e){console.warn(`解析URL文件名失败:`,e)}return`未知文件`},m=e=>{if(e===0)return`0 B`;let t=1024,n=[`B`,`KB`,`MB`,`GB`],r=Math.floor(Math.log(e)/Math.log(t));return parseFloat((e/t**+r).toFixed(1))+` `+n[r]},h=e=>{if(!e||e===`未知文件`)return`unknown`;let t=e.toLowerCase().split(`.`).pop();return t&&c[t]||`unknown`},g=e=>l[e]||l.unknown,_=(e,t)=>n=>{let{min:r,max:i,step:a,default:o}=t;switch(n){case`reset`:e.value=o;break;case`in`:e.value<i&&(e.value+=a);break;case`out`:e.value>r&&(e.value-=a);break}},v=e=>{let t=``;for(;e>=0;)t=String.fromCharCode(65+e%26)+t,e=Math.floor(e/26)-1;return t},y=e=>{if(e==null||e===``)return``;let t=String(e).trim();if(!isNaN(Number(t))&&t!==``&&t.length<15){let e=Number(t);return Number.isInteger(e)?e.toLocaleString():e.toLocaleString(void 0,{maximumFractionDigits:2})}return t},b=e=>{if(e==null||e===``)return`cell-empty`;let t=String(e).trim();return!isNaN(Number(t))&&t!==``?`cell-number`:t.match(/[■▬▪▫─━]/)?`cell-gantt`:t.match(/^\d{4}[-/]\d{2}[-/]\d{2}/)||t.match(/^\d{2}[-/]\d{2}[-/]\d{4}/)?`cell-date`:[`true`,`false`].includes(t.toLowerCase())?`cell-boolean`:t.length>20?`cell-text cell-long`:`cell-text`},x=(e,t)=>{let{c:n,r}=o.utils.decode_range(e[`!ref`]||`A1:A1`).e,i=Array.from({length:n+1},(t,n)=>{let r=e[o.utils.encode_cell({r:0,c:n})],i=r?String(r.v??``).trim():`列${n+1}`;return{title:i||`列${n+1}`,key:`col_${n}`,width:Math.min(Math.max(i.length*12,80),200)}}),a=new Map;return t.forEach(({s:{r:e,c:t},e:{r:n,c:r}})=>{for(let i=e;i<=n;i++)for(let o=t;o<=r;o++)a.set(`${i}-${o}`,{isMain:i===e&&o===t,rowspan:n-e+1,colspan:r-t+1})}),{data:Array.from({length:r+1},(t,r)=>{let i={};for(let t=0;t<=n;t++){let n=e[o.utils.encode_cell({r,c:t})],s=a.get(`${r}-${t}`);i[`col_${t}`]={value:n?n.v??``:``,merged:!!s,hidden:s&&!s.isMain,rowspan:s?.isMain?s.rowspan:1,colspan:s?.isMain?s.colspan:1}}return i}),columns:i}};async function S(e){return{url:URL.createObjectURL(e)+`#toolbar=1&navpanes=1&scrollbar=1&view=FitH`,totalPages:1}}async function C(e){let t=await e.arrayBuffer(),n=await s.default.convertToHtml({arrayBuffer:t,styleMap:[`p[style-name='Heading 1'] => h1:fresh`,`p[style-name='Heading 2'] => h2:fresh`,`p[style-name='Heading 3'] => h3:fresh`,`p[style-name='Title'] => h1.title:fresh`]}),i=[],a=document.createElement(`div`);a.innerHTML=r.t(n.value);let o=a.querySelectorAll(`h1, h2, h3, h4, h5, h6`);return Array.from(o).forEach((e,t)=>{let n=`heading-${t}`,r=parseInt(e.tagName.charAt(1)),a=e.textContent||``;e.id=n,i.push({id:n,text:a,level:r})}),{content:a.innerHTML,headings:i}}async function w(e){let t=await e.arrayBuffer(),n=o.read(t,{type:`array`,cellStyles:!0,cellFormula:!0,cellDates:!0});if(!n.SheetNames.length)throw Error(`Excel文件中没有找到工作表`);return{sheets:n.SheetNames.map(e=>{let t=n.Sheets[e],r=t[`!merges`]||[],{data:i,columns:a}=x(t,r);return{name:e,data:i,merges:r,columns:a}})}}const T={class:`file-container pdf-container`},E={class:`file-toolbar`},D={class:`flex justify-between items-center`},O={class:`flex gap-2 items-center`},k={class:`text-sm text-gray-600`},A={class:`flex gap-2 items-center`},j={class:`text-sm text-gray-600 min-w-12 text-center`},ee={class:`file-viewer`},te=[`src`],ne=(0,i.defineComponent)({__name:`index`,props:{pdfUrl:{},totalPages:{}},setup(e){let n=e,r=(0,i.ref)(1),o=(0,i.ref)(1),s=_(o,u.pdf),c=e=>{if(typeof e==`number`)r.value=Math.max(1,Math.min(e,n.totalPages));else{let t=e===`prev`?-1:1;r.value=Math.max(1,Math.min(r.value+t,n.totalPages))}};return(n,l)=>{let u=t.t;return(0,i.openBlock)(),(0,i.createElementBlock)(`div`,T,[(0,i.createElementVNode)(`div`,E,[(0,i.createElementVNode)(`div`,D,[(0,i.createCommentVNode)(` 翻页控制 `),(0,i.createElementVNode)(`div`,O,[(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,disabled:r.value<=1,onClick:l[0]||=e=>c(`prev`)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(u,{name:`ic:outline-chevron-left`})]),_:1},8,[`disabled`]),(0,i.createVNode)((0,i.unref)(a.NInputNumber),{value:r.value,"onUpdate:value":[l[1]||=e=>r.value=e,c],size:`small`,min:1,max:e.totalPages,style:{width:`80px`}},null,8,[`value`,`max`,`onUpdate:value`]),(0,i.createElementVNode)(`span`,k,`/ `+(0,i.toDisplayString)(e.totalPages),1),(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,disabled:r.value>=e.totalPages,onClick:l[2]||=e=>c(`next`)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(u,{name:`ic:outline-chevron-right`})]),_:1},8,[`disabled`])]),(0,i.createCommentVNode)(` 缩放控制 `),(0,i.createElementVNode)(`div`,A,[(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,disabled:o.value<=.5,onClick:l[3]||=e=>(0,i.unref)(s)(`out`)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(u,{name:`ic:outline-zoom-out`})]),_:1},8,[`disabled`]),(0,i.createElementVNode)(`span`,j,(0,i.toDisplayString)(Math.round(o.value*100))+`% `,1),(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,disabled:o.value>=3,onClick:l[4]||=e=>(0,i.unref)(s)(`in`)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(u,{name:`ic:outline-zoom-in`})]),_:1},8,[`disabled`]),(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,onClick:l[5]||=e=>(0,i.unref)(s)(`reset`)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(u,{name:`ic:outline-fit-screen`})]),default:(0,i.withCtx)(()=>[l[6]||=(0,i.createTextVNode)(` 适应 `,-1)]),_:1})])])]),(0,i.createElementVNode)(`div`,ee,[e.pdfUrl?((0,i.openBlock)(),(0,i.createElementBlock)(`iframe`,{key:0,src:e.pdfUrl,class:`w-full h-full border-0`,title:`PDF预览`,frameborder:`0`,allowfullscreen:``},null,8,te)):(0,i.createCommentVNode)(`v-if`,!0)])])}}});var re=n.t(ne,[[`__scopeId`,`data-v-6ef071db`]]);const ie={class:`file-container word-container`},M={class:`file-toolbar`},N={class:`flex gap-2 items-center`},P={class:`text-sm text-gray-600 min-w-12 text-center`},F={class:`word-layout`},I={class:`word-main`},L={key:0,class:`word-outline`},R={class:`outline-content`},z=[`onClick`],B={class:`word-content`},V=[`innerHTML`],H=(0,i.defineComponent)({__name:`index`,props:{content:{},headings:{}},setup(e){let n=(0,i.ref)(!0),r=(0,i.ref)(100),o=_(r,u.word),s=e=>{document.getElementById(e)?.scrollIntoView({behavior:`smooth`,block:`start`})};return(c,l)=>{let u=t.t;return(0,i.openBlock)(),(0,i.createElementBlock)(`div`,ie,[(0,i.createElementVNode)(`div`,M,[(0,i.createElementVNode)(`div`,N,[(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,onClick:l[0]||=e=>n.value=!n.value},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(u,{name:`ic:outline-list`})]),default:(0,i.withCtx)(()=>[(0,i.createTextVNode)(` `+(0,i.toDisplayString)(n.value?`隐藏`:`显示`)+`目录 `,1)]),_:1}),(0,i.createVNode)((0,i.unref)(a.NDivider),{vertical:``}),(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,disabled:r.value<=50,onClick:l[1]||=e=>(0,i.unref)(o)(`out`)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(u,{name:`ic:outline-zoom-out`})]),_:1},8,[`disabled`]),(0,i.createElementVNode)(`span`,P,(0,i.toDisplayString)(r.value)+`% `,1),(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,disabled:r.value>=200,onClick:l[2]||=e=>(0,i.unref)(o)(`in`)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(u,{name:`ic:outline-zoom-in`})]),_:1},8,[`disabled`]),(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,onClick:l[3]||=e=>(0,i.unref)(o)(`reset`)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(u,{name:`ic:outline-fit-screen`})]),default:(0,i.withCtx)(()=>[l[4]||=(0,i.createTextVNode)(` 重置 `,-1)]),_:1})])]),(0,i.createElementVNode)(`div`,F,[(0,i.createElementVNode)(`div`,I,[(0,i.createCommentVNode)(` 侧边栏目录 `),n.value?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,L,[l[5]||=(0,i.createElementVNode)(`div`,{class:`outline-header`},[(0,i.createElementVNode)(`h3`,{class:`text-sm font-semibold`},`文档目录`)],-1),(0,i.createElementVNode)(`div`,R,[((0,i.openBlock)(!0),(0,i.createElementBlock)(i.Fragment,null,(0,i.renderList)(e.headings,(e,t)=>((0,i.openBlock)(),(0,i.createElementBlock)(`div`,{key:t,class:(0,i.normalizeClass)([`outline-item`,`level-${e.level}`]),onClick:t=>s(e.id)},(0,i.toDisplayString)(e.text),11,z))),128))])])):(0,i.createCommentVNode)(`v-if`,!0),(0,i.createCommentVNode)(` 主要内容区域 `),(0,i.createElementVNode)(`div`,B,[(0,i.createElementVNode)(`div`,{class:`word-document`,style:(0,i.normalizeStyle)({transform:`scale(${r.value/100})`,transformOrigin:`top center`}),innerHTML:e.content},null,12,V)])])])])}}});var U=n.t(H,[[`__scopeId`,`data-v-31f606d3`]]);const W={class:`file-container excel-container`},G={class:`file-toolbar`},K={class:`flex justify-between items-center`},q={class:`flex gap-2 items-center`},J={key:1,class:`text-sm text-gray-600`},Y={class:`flex gap-2 items-center`},ae={class:`excel-viewer`},oe={key:0,class:`excel-info`},se={class:`excel-table-container`},ce={key:0,class:`excel-table`},le={class:`header-content`},ue={class:`column-letter`},de={class:`column-title`},fe={class:`row-number`},pe=[`rowspan`,`colspan`,`title`],me={key:1,class:`excel-empty`},he={key:0,class:`excel-pagination`},ge=(0,i.defineComponent)({__name:`index`,props:{sheets:{}},emits:[`reload`],setup(e){let n=e,r=(0,i.ref)(``),o=(0,i.ref)(!1),s=(0,i.ref)(1),c=(0,i.ref)(50),l=(0,i.ref)([]),u=(0,i.ref)([]),f=(0,i.computed)(()=>Math.ceil(l.value.length/c.value)),p=(0,i.computed)(()=>{let e=(s.value-1)*c.value;return l.value.slice(e,e+c.value)}),m=e=>{c.value=e,s.value=1},h=e=>{let t=n.sheets.find(t=>t.name===e);t&&(l.value=t.data,u.value=t.columns,s.value=1)};return(0,i.watch)(r,e=>{h(e)}),(0,i.watch)(()=>n.sheets,e=>{if(e.length>0){let[t]=e;r.value=t.name,l.value=t.data,u.value=t.columns,s.value=1}},{immediate:!0}),(n,h)=>{let g=t.t;return(0,i.openBlock)(),(0,i.createElementBlock)(`div`,W,[(0,i.createCommentVNode)(` 工具栏 `),(0,i.createElementVNode)(`div`,G,[(0,i.createElementVNode)(`div`,K,[(0,i.createElementVNode)(`div`,q,[e.sheets.length>1?((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.NTabs),{key:0,value:r.value,"onUpdate:value":h[0]||=e=>r.value=e,type:`card`,size:`small`},{default:(0,i.withCtx)(()=>[((0,i.openBlock)(!0),(0,i.createElementBlock)(i.Fragment,null,(0,i.renderList)(e.sheets,e=>((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.NTabPane),{key:e.name,name:e.name,tab:e.name},null,8,[`name`,`tab`]))),128))]),_:1},8,[`value`])):((0,i.openBlock)(),(0,i.createElementBlock)(`span`,J,` 工作表: `+(0,i.toDisplayString)(r.value),1))]),(0,i.createElementVNode)(`div`,Y,[(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,onClick:h[1]||=e=>o.value=!o.value},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(g,{name:`ic:outline-format-paint`})]),default:(0,i.withCtx)(()=>[(0,i.createTextVNode)(` `+(0,i.toDisplayString)(o.value?`紧凑视图`:`完整格式`),1)]),_:1})])])]),(0,i.createElementVNode)(`div`,ae,[(0,i.createCommentVNode)(` 信息面板 `),l.value.length>0?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,oe,[(0,i.createVNode)((0,i.unref)(a.NText),{depth:`3`,class:`text-sm`},{default:(0,i.withCtx)(()=>[(0,i.createTextVNode)(` 当前工作表: `+(0,i.toDisplayString)(r.value)+` | 总行数: `+(0,i.toDisplayString)(l.value.length)+` | 总列数: `+(0,i.toDisplayString)(u.value.length)+` | 当前页: `+(0,i.toDisplayString)(s.value)+`/`+(0,i.toDisplayString)(f.value),1)]),_:1})])):(0,i.createCommentVNode)(`v-if`,!0),(0,i.createCommentVNode)(` 表格 `),(0,i.createElementVNode)(`div`,se,[(0,i.createElementVNode)(`div`,{class:(0,i.normalizeClass)([`excel-table-wrapper`,{"simple-mode":!o.value}])},[l.value.length>0?((0,i.openBlock)(),(0,i.createElementBlock)(`table`,ce,[(0,i.createElementVNode)(`thead`,null,[(0,i.createElementVNode)(`tr`,null,[h[4]||=(0,i.createElementVNode)(`th`,{class:`row-number`},`行号`,-1),((0,i.openBlock)(!0),(0,i.createElementBlock)(i.Fragment,null,(0,i.renderList)(u.value,(e,t)=>((0,i.openBlock)(),(0,i.createElementBlock)(`th`,{key:e.key,class:`excel-header`,style:(0,i.normalizeStyle)({minWidth:e.width+`px`})},[(0,i.createElementVNode)(`div`,le,[(0,i.createElementVNode)(`span`,ue,(0,i.toDisplayString)((0,i.unref)(v)(t)),1),(0,i.createElementVNode)(`span`,de,(0,i.toDisplayString)(e.title),1)])],4))),128))])]),(0,i.createElementVNode)(`tbody`,null,[((0,i.openBlock)(!0),(0,i.createElementBlock)(i.Fragment,null,(0,i.renderList)(p.value,(e,t)=>((0,i.openBlock)(),(0,i.createElementBlock)(`tr`,{key:t,class:`excel-row`},[(0,i.createElementVNode)(`td`,fe,(0,i.toDisplayString)((s.value-1)*c.value+t+1),1),((0,i.openBlock)(!0),(0,i.createElementBlock)(i.Fragment,null,(0,i.renderList)(u.value,t=>(0,i.withDirectives)(((0,i.openBlock)(),(0,i.createElementBlock)(`td`,{key:t.key,class:(0,i.normalizeClass)([`excel-cell`,[(0,i.unref)(b)(e[t.key]?.value),e[t.key]?.merged?`merged-cell`:``,o.value?``:`compact-cell`]]),rowspan:e[t.key]?.rowspan||1,colspan:e[t.key]?.colspan||1,title:e[t.key]?.value},(0,i.toDisplayString)((0,i.unref)(y)(e[t.key]?.value)),11,pe)),[[i.vShow,!e[t.key]?.hidden]])),128))]))),128))])])):((0,i.openBlock)(),(0,i.createElementBlock)(`div`,me,[(0,i.createVNode)((0,i.unref)(a.NEmpty),{description:`该工作表没有数据或解析失败`},{extra:(0,i.withCtx)(()=>[(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,onClick:h[2]||=e=>n.$emit(`reload`)},{default:(0,i.withCtx)(()=>[...h[5]||=[(0,i.createTextVNode)(` 重新解析 `,-1)]]),_:1})]),_:1})]))],2),(0,i.createCommentVNode)(` 分页 `),f.value>1?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,he,[(0,i.createVNode)((0,i.unref)(a.NPagination),{page:s.value,"onUpdate:page":h[3]||=e=>s.value=e,"page-count":f.value,"page-size":c.value,"show-size-picker":``,"page-sizes":(0,i.unref)(d),"onUpdate:pageSize":m},null,8,[`page`,`page-count`,`page-size`,`page-sizes`])])):(0,i.createCommentVNode)(`v-if`,!0)])])])}}});var _e=n.t(ge,[[`__scopeId`,`data-v-5569b81f`]]);function X(e,t){if(!e.trim())return null;try{let n=new URL(t),r=new URL(e,n);if(r.username||r.password)return null;if(r.protocol===`https:`||r.protocol===`http:`&&r.origin===n.origin)return r.href}catch{}return null}function Z(e,t){let{file:n,url:r,fileName:a}=e,o=(0,i.ref)(!1),s=(0,i.ref)(``),c=(0,i.ref)(0),l=(0,i.ref)(!1),u=(0,i.ref)(``),d=(0,i.ref)(0),f=(0,i.ref)(``),m=(0,i.ref)([]),_=(0,i.ref)([]),v=0,y=null,b=(0,i.computed)(()=>a.value&&a.value!==`未知文件`?a.value:n.value?.name?n.value.name:r.value?p(r.value):`未知文件`),x=(0,i.computed)(()=>h(b.value)),T=(0,i.computed)(()=>g(x.value)),E=()=>{let e=u.value;u.value=``,e.startsWith(`blob:`)&&URL.revokeObjectURL(e.split(`#`)[0])},D=()=>{s.value=``,o.value=!1,c.value=0,E(),d.value=0,f.value=``,m.value=[],_.value=[]},O=e=>{s.value=e,o.value=!1},k=async e=>{let t=n.value,i=r.value;if(t)return t;if(i){let t=X(i,window.location.href);if(!t)throw Error(`不支持此文件地址`);let n=await fetch(t,{signal:e});if(!n.ok)throw Error(`HTTP ${n.status}: ${n.statusText}`);let r=await n.blob();return new File([r],b.value,{type:r.type})}throw Error(`未提供文件或URL`)},A=async(e,t,n)=>{switch(t){case`pdf`:{let t=await S(e);if(n!==v){URL.revokeObjectURL(t.url.split(`#`)[0]);return}u.value=t.url,d.value=t.totalPages;break}case`word`:{let t=await C(e);if(n!==v)return;f.value=t.content,m.value=t.headings;break}case`excel`:{let t=await w(e);if(n!==v)return;_.value=t.sheets;break}default:throw Error(`不支持的文件格式`)}},j=async()=>{let e=++v;y?.abort();let t=new AbortController;if(y=t,D(),!n.value&&!r.value){O(`未提供文件或URL`),y=null;return}o.value=!0;try{let n=x.value,r=await k(t.signal);if(e!==v)return;c.value=r.size,await A(r,n,e)}catch(n){if(e!==v||t.signal.aborted)return;let r=n instanceof Error?n.message:`未知错误`;O(`${x.value.toUpperCase()}文件加载失败: ${r}`)}finally{e===v&&(o.value=!1,y=null)}};return(0,i.watch)(()=>n.value?.size,e=>{c.value=e||0},{immediate:!0}),(0,i.onUnmounted)(()=>{v+=1,y?.abort(),E()}),{loading:o,error:s,fileSize:c,showModal:l,pdfUrl:u,pdfTotalPages:d,wordContent:f,wordHeadings:m,excelSheets:_,displayFileName:b,fileType:x,fileConfig:T,loadFile:j,openPreview:async()=>{l.value=!0,await j(),t(`preview`,n.value||r.value)},downloadFile:()=>{if(n.value){let e=URL.createObjectURL(n.value);Object.assign(document.createElement(`a`),{href:e,download:b.value}).click(),URL.revokeObjectURL(e)}else if(r.value){let e=X(r.value,window.location.href);if(!e){O(`不支持此文件地址`);return}window.open(e,`_blank`,`noopener,noreferrer`)}t(`download`,n.value||r.value)}}}function Q(e){let t=(0,i.ref)(!1),n=()=>{t.value=!!document.fullscreenElement},r=(e,t=0)=>t>=e.length?(console.warn(`无法切换全屏状态`),Promise.resolve()):e[t]().catch(()=>r(e,t+1));return(0,i.onMounted)(()=>{f.forEach(e=>document.addEventListener(e,n))}),(0,i.onUnmounted)(()=>{f.forEach(e=>document.removeEventListener(e,n))}),{isFullscreen:t,toggleFullscreen:async()=>{let t=e.value;t&&await r(document.fullscreenElement?[()=>document.exitFullscreen(),()=>document.webkitExitFullscreen(),()=>document.mozCancelFullScreen(),()=>document.msExitFullscreen()]:[()=>t.requestFullscreen(),()=>t.webkitRequestFullscreen(),()=>t.mozRequestFullScreen(),()=>t.msRequestFullscreen()])},exitFullscreen:async()=>{if(document.fullscreenElement)try{await document.exitFullscreen()}catch{}t.value=!1}}}const ve={class:`c-file-preview-wrapper`},ye={key:0,class:`file-info-card`},be={class:`file-info`},xe={class:`file-icon`},Se={class:`file-details`},Ce={class:`file-name`},we={class:`file-meta`},Te={class:`file-size`},Ee={class:`file-actions`},De={class:`modal-header`},$={class:`modal-title`},Oe={class:`modal-actions`},ke={class:`modal-content`},Ae={class:`preview-header`},je={class:`flex justify-between items-center`},Me={class:`flex items-center gap-3`},Ne={class:`text-sm text-gray-500`},Pe={class:`flex gap-2`},Fe={class:`preview-content`},Ie={key:0,class:`status-container`},Le=(0,i.defineComponent)({name:`C_FilePreview`,__name:`index`,props:{file:{},url:{},fileName:{default:`未知文件`},autoPreview:{type:Boolean,default:!1}},emits:[`preview`,`download`],setup(e,{emit:n}){let{file:r,url:o,fileName:s,autoPreview:c}=(0,i.toRefs)(e),{loading:l,error:u,fileSize:d,showModal:f,pdfUrl:p,pdfTotalPages:h,wordContent:g,wordHeadings:_,excelSheets:v,displayFileName:y,fileType:b,fileConfig:x,loadFile:S,openPreview:C,downloadFile:w}=Z({file:r,url:o,fileName:s},n),T=(0,i.ref)(),{isFullscreen:E,toggleFullscreen:D,exitFullscreen:O}=Q(T);return(0,i.watch)(f,e=>{e||O()}),(0,i.watch)([r,o,c],([e,t],n)=>{if(!(typeof window>`u`)){if(f.value){(e!==n?.[0]||t!==n?.[1])&&S();return}c.value&&(e||t)&&C()}},{immediate:!0}),(e,n)=>{let r=t.t;return(0,i.openBlock)(),(0,i.createElementBlock)(`div`,ve,[(0,i.createCommentVNode)(` 文件信息卡片模式 `),(0,i.unref)(c)?(0,i.createCommentVNode)(`v-if`,!0):((0,i.openBlock)(),(0,i.createElementBlock)(`div`,ye,[(0,i.createElementVNode)(`div`,be,[(0,i.createElementVNode)(`div`,xe,[(0,i.createVNode)(r,{name:(0,i.unref)(x).icon,size:40,color:(0,i.unref)(x).color},null,8,[`name`,`color`])]),(0,i.createElementVNode)(`div`,Se,[(0,i.createElementVNode)(`div`,Ce,[(0,i.createVNode)((0,i.unref)(a.NEllipsis),{style:{"max-width":`250px`}},{default:(0,i.withCtx)(()=>[(0,i.createTextVNode)((0,i.toDisplayString)((0,i.unref)(y)),1)]),_:1}),(0,i.createVNode)((0,i.unref)(a.NTag),{type:(0,i.unref)(x).tagType,size:`small`},{default:(0,i.withCtx)(()=>[(0,i.createTextVNode)((0,i.toDisplayString)((0,i.unref)(b).toUpperCase()),1)]),_:1},8,[`type`])]),(0,i.createElementVNode)(`div`,we,[(0,i.createElementVNode)(`span`,Te,(0,i.toDisplayString)((0,i.unref)(m)((0,i.unref)(d))),1)])]),(0,i.createElementVNode)(`div`,Ee,[(0,i.createVNode)((0,i.unref)(a.NButton),{type:`primary`,onClick:(0,i.unref)(C)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(r,{name:`ic:outline-visibility`})]),default:(0,i.withCtx)(()=>[n[2]||=(0,i.createTextVNode)(` 预览 `,-1)]),_:1},8,[`onClick`]),(0,i.createVNode)((0,i.unref)(a.NButton),{type:`tertiary`,onClick:(0,i.unref)(w)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(r,{name:`ic:outline-download`})]),default:(0,i.withCtx)(()=>[n[3]||=(0,i.createTextVNode)(` 下载 `,-1)]),_:1},8,[`onClick`])])])])),(0,i.createCommentVNode)(` 模态框预览 `),(0,i.createVNode)((0,i.unref)(a.NModal),{show:(0,i.unref)(f),"onUpdate:show":n[1]||=e=>(0,i.isRef)(f)?f.value=e:null,"mask-closable":!1,closable:!1,"auto-focus":!1,"transform-origin":`center`,style:{width:`85vw`,"max-width":`1200px`,"min-width":`800px`,height:`75vh`,"max-height":`700px`,"min-height":`500px`}},{default:(0,i.withCtx)(()=>[(0,i.createElementVNode)(`div`,{ref_key:`modalContainer`,ref:T,class:`modal-container`},[(0,i.createCommentVNode)(` 自定义头部 `),(0,i.createElementVNode)(`div`,De,[(0,i.createElementVNode)(`div`,$,[(0,i.createVNode)(r,{name:(0,i.unref)(x).icon,size:20,color:(0,i.unref)(x).color},null,8,[`name`,`color`]),(0,i.createElementVNode)(`span`,null,(0,i.toDisplayString)((0,i.unref)(y)),1)]),(0,i.createElementVNode)(`div`,Oe,[(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,type:`tertiary`,onClick:(0,i.unref)(w)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(r,{name:`ic:outline-download`})]),default:(0,i.withCtx)(()=>[n[4]||=(0,i.createTextVNode)(` 下载 `,-1)]),_:1},8,[`onClick`]),(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,type:`tertiary`,onClick:n[0]||=e=>f.value=!1},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(r,{name:`ic:outline-close`})]),_:1})])]),(0,i.createCommentVNode)(` 预览内容 `),(0,i.createElementVNode)(`div`,ke,[(0,i.createCommentVNode)(` 文件信息头部 `),(0,i.createElementVNode)(`div`,Ae,[(0,i.createElementVNode)(`div`,je,[(0,i.createElementVNode)(`div`,Me,[(0,i.createVNode)((0,i.unref)(a.NTag),{type:(0,i.unref)(x).tagType,size:`small`},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(r,{name:(0,i.unref)(x).icon},null,8,[`name`])]),default:(0,i.withCtx)(()=>[(0,i.createTextVNode)(` `+(0,i.toDisplayString)((0,i.unref)(b).toUpperCase()),1)]),_:1},8,[`type`]),(0,i.createVNode)((0,i.unref)(a.NEllipsis),{style:{"max-width":`300px`}},{default:(0,i.withCtx)(()=>[(0,i.createTextVNode)((0,i.toDisplayString)((0,i.unref)(y)),1)]),_:1}),(0,i.createElementVNode)(`span`,Ne,(0,i.toDisplayString)((0,i.unref)(m)((0,i.unref)(d))),1)]),(0,i.createElementVNode)(`div`,Pe,[(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,type:`tertiary`,disabled:(0,i.unref)(l),onClick:(0,i.unref)(S)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(r,{name:`ic:outline-refresh`})]),default:(0,i.withCtx)(()=>[n[5]||=(0,i.createTextVNode)(` 刷新 `,-1)]),_:1},8,[`disabled`,`onClick`]),(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,type:`primary`,onClick:(0,i.unref)(D)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(r,{name:(0,i.unref)(E)?`ic:outline-fullscreen-exit`:`ic:outline-fullscreen`},null,8,[`name`])]),default:(0,i.withCtx)(()=>[(0,i.createTextVNode)(` `+(0,i.toDisplayString)((0,i.unref)(E)?`退出全屏`:`全屏`),1)]),_:1},8,[`onClick`])])])]),(0,i.createCommentVNode)(` 预览内容区域 `),(0,i.createElementVNode)(`div`,Fe,[(0,i.createCommentVNode)(` 加载和错误状态 `),(0,i.unref)(l)||(0,i.unref)(u)?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,Ie,[(0,i.unref)(l)?((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.NSpin),{key:0,size:`large`},{description:(0,i.withCtx)(()=>[(0,i.createTextVNode)(` 正在加载`+(0,i.toDisplayString)((0,i.unref)(b).toUpperCase())+`文件... `,1)]),_:1})):((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.NResult),{key:1,status:`error`,title:`预览失败`,description:(0,i.unref)(u)},{footer:(0,i.withCtx)(()=>[(0,i.createVNode)((0,i.unref)(a.NButton),{onClick:(0,i.unref)(S)},{default:(0,i.withCtx)(()=>[...n[6]||=[(0,i.createTextVNode)(`重试`,-1)]]),_:1},8,[`onClick`])]),_:1},8,[`description`]))])):((0,i.openBlock)(),(0,i.createElementBlock)(i.Fragment,{key:1},[(0,i.createCommentVNode)(` 文件预览 — 委托给子组件 `),(0,i.unref)(b)===`pdf`?((0,i.openBlock)(),(0,i.createBlock)(re,{key:0,"pdf-url":(0,i.unref)(p),"total-pages":(0,i.unref)(h)},null,8,[`pdf-url`,`total-pages`])):(0,i.unref)(b)===`word`?((0,i.openBlock)(),(0,i.createBlock)(U,{key:1,content:(0,i.unref)(g),headings:(0,i.unref)(_)},null,8,[`content`,`headings`])):(0,i.unref)(b)===`excel`?((0,i.openBlock)(),(0,i.createBlock)(_e,{key:2,sheets:(0,i.unref)(v),onReload:(0,i.unref)(S)},null,8,[`sheets`,`onReload`])):((0,i.openBlock)(),(0,i.createElementBlock)(i.Fragment,{key:3},[(0,i.createCommentVNode)(` 不支持的文件类型 `),(0,i.createVNode)((0,i.unref)(a.NResult),{status:`warning`,title:`不支持的文件格式`,description:`暂不支持预览 ${(0,i.unref)(b).toUpperCase()} 格式文件`},null,8,[`description`])],2112))],64))])])],512)]),_:1},8,[`show`])])}}});var Re=n.t(Le,[[`__scopeId`,`data-v-3e4e0b9c`]]);Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return Q}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return Z}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return Re}});
@@ -1 +1 @@
1
- import{t as e}from"./C_Icon2.js";import{t}from"./export-helper.js";import{t as n}from"./html.js";import{Fragment as r,computed as i,createBlock as a,createCommentVNode as o,createElementBlock as s,createElementVNode as c,createTextVNode as l,createVNode as u,defineComponent as d,isRef as f,normalizeClass as p,normalizeStyle as m,onMounted as h,onUnmounted as g,openBlock as _,ref as v,renderList as y,resolveComponent as b,toDisplayString as x,toRefs as S,unref as C,vShow as w,watch as T,withCtx as E,withDirectives as D}from"vue";import{NButton as O,NDivider as k,NEllipsis as A,NEmpty as j,NInputNumber as M,NModal as N,NPagination as P,NResult as F,NSpin as ee,NTabPane as I,NTabs as L,NTag as R,NText as z}from"naive-ui";import*as B from"xlsx";import V from"mammoth";const H={pdf:`pdf`,doc:`word`,docx:`word`,xls:`excel`,xlsx:`excel`},U={pdf:{tagType:`error`,icon:`ic:outline-picture-as-pdf`,color:`#dc2626`},word:{tagType:`info`,icon:`ic:outline-description`,color:`#2563eb`},excel:{tagType:`success`,icon:`ic:outline-grid-on`,color:`#16a34a`},unknown:{tagType:`default`,icon:`ic:outline-insert-drive-file`,color:`#6b7280`}},W={pdf:{min:.5,max:3,step:.25,default:1},word:{min:50,max:200,step:10,default:100}},G=[20,50,100,200],K=[`fullscreenchange`,`webkitfullscreenchange`,`mozfullscreenchange`,`MSFullscreenChange`],te=e=>{try{let t=e.split(`/`).pop()||e.split(`\\`).pop();if(t?.includes(`.`)){let n=decodeURIComponent(t.split(`?`)[0]);if(n&&n!==e)return n}}catch(e){console.warn(`解析URL文件名失败:`,e)}return`未知文件`},q=e=>{if(e===0)return`0 B`;let t=1024,n=[`B`,`KB`,`MB`,`GB`],r=Math.floor(Math.log(e)/Math.log(t));return parseFloat((e/t**+r).toFixed(1))+` `+n[r]},ne=e=>{if(!e||e===`未知文件`)return`unknown`;let t=e.toLowerCase().split(`.`).pop();return t&&H[t]||`unknown`},re=e=>U[e]||U.unknown,J=(e,t)=>n=>{let{min:r,max:i,step:a,default:o}=t;switch(n){case`reset`:e.value=o;break;case`in`:e.value<i&&(e.value+=a);break;case`out`:e.value>r&&(e.value-=a);break}},Y=e=>{let t=``;for(;e>=0;)t=String.fromCharCode(65+e%26)+t,e=Math.floor(e/26)-1;return t},X=e=>{if(e==null||e===``)return``;let t=String(e).trim();if(!isNaN(Number(t))&&t!==``&&t.length<15){let e=Number(t);return Number.isInteger(e)?e.toLocaleString():e.toLocaleString(void 0,{maximumFractionDigits:2})}return t},ie=e=>{if(e==null||e===``)return`cell-empty`;let t=String(e).trim();return!isNaN(Number(t))&&t!==``?`cell-number`:t.match(/[■▬▪▫─━]/)?`cell-gantt`:t.match(/^\d{4}[-/]\d{2}[-/]\d{2}/)||t.match(/^\d{2}[-/]\d{2}[-/]\d{4}/)?`cell-date`:[`true`,`false`].includes(t.toLowerCase())?`cell-boolean`:t.length>20?`cell-text cell-long`:`cell-text`},ae=(e,t)=>{let{c:n,r}=B.utils.decode_range(e[`!ref`]||`A1:A1`).e,i=Array.from({length:n+1},(t,n)=>{let r=e[B.utils.encode_cell({r:0,c:n})],i=r?String(r.v||``).trim():`列${n+1}`;return{title:i||`列${n+1}`,key:`col_${n}`,width:Math.min(Math.max(i.length*12,80),200)}}),a=new Map;return t.forEach(({s:{r:e,c:t},e:{r:n,c:r}})=>{for(let i=e;i<=n;i++)for(let o=t;o<=r;o++)a.set(`${i}-${o}`,{isMain:i===e&&o===t,rowspan:n-e+1,colspan:r-t+1})}),{data:Array.from({length:r+1},(t,r)=>{let i={};for(let t=0;t<=n;t++){let n=e[B.utils.encode_cell({r,c:t})],o=a.get(`${r}-${t}`);i[`col_${t}`]={value:n&&n.v||``,merged:!!o,hidden:o&&!o.isMain,rowspan:o?.isMain?o.rowspan:1,colspan:o?.isMain?o.colspan:1}}return i}),columns:i}};async function oe(e){return{url:URL.createObjectURL(e)+`#toolbar=1&navpanes=1&scrollbar=1&view=FitH`,totalPages:1}}async function se(e){let t=await e.arrayBuffer(),r=await V.convertToHtml({arrayBuffer:t,styleMap:[`p[style-name='Heading 1'] => h1:fresh`,`p[style-name='Heading 2'] => h2:fresh`,`p[style-name='Heading 3'] => h3:fresh`,`p[style-name='Title'] => h1.title:fresh`]}),i=[],a=document.createElement(`div`);a.innerHTML=n(r.value);let o=a.querySelectorAll(`h1, h2, h3, h4, h5, h6`);return Array.from(o).forEach((e,t)=>{let n=`heading-${t}`,r=parseInt(e.tagName.charAt(1)),a=e.textContent||``;e.id=n,i.push({id:n,text:a,level:r})}),{content:a.innerHTML,headings:i}}async function ce(e){let t=await e.arrayBuffer(),n=B.read(t,{type:`array`,cellStyles:!0,cellFormula:!0,cellDates:!0});if(!n.SheetNames.length)throw Error(`Excel文件中没有找到工作表`);return{sheets:n.SheetNames.map(e=>{let t=n.Sheets[e],r=t[`!merges`]||[],{data:i,columns:a}=ae(t,r);return{name:e,data:i,merges:r,columns:a}})}}const le={class:`file-container pdf-container`},ue={class:`file-toolbar`},de={class:`flex justify-between items-center`},fe={class:`flex gap-2 items-center`},pe={class:`text-sm text-gray-600`},me={class:`flex gap-2 items-center`},he={class:`text-sm text-gray-600 min-w-12 text-center`},ge={class:`file-viewer`},_e=[`src`];var ve=t(d({__name:`index`,props:{pdfUrl:{},totalPages:{}},setup(t){let n=t,r=v(1),i=v(1),a=J(i,W.pdf),d=e=>{if(typeof e==`number`)r.value=Math.max(1,Math.min(e,n.totalPages));else{let t=e===`prev`?-1:1;r.value=Math.max(1,Math.min(r.value+t,n.totalPages))}};return(n,f)=>{let p=e;return _(),s(`div`,le,[c(`div`,ue,[c(`div`,de,[o(` 翻页控制 `),c(`div`,fe,[u(C(O),{size:`small`,disabled:r.value<=1,onClick:f[0]||=e=>d(`prev`)},{icon:E(()=>[u(p,{name:`ic:outline-chevron-left`})]),_:1},8,[`disabled`]),u(C(M),{value:r.value,"onUpdate:value":[f[1]||=e=>r.value=e,d],size:`small`,min:1,max:t.totalPages,style:{width:`80px`}},null,8,[`value`,`max`,`onUpdate:value`]),c(`span`,pe,`/ `+x(t.totalPages),1),u(C(O),{size:`small`,disabled:r.value>=t.totalPages,onClick:f[2]||=e=>d(`next`)},{icon:E(()=>[u(p,{name:`ic:outline-chevron-right`})]),_:1},8,[`disabled`])]),o(` 缩放控制 `),c(`div`,me,[u(C(O),{size:`small`,disabled:i.value<=.5,onClick:f[3]||=e=>C(a)(`out`)},{icon:E(()=>[u(p,{name:`ic:outline-zoom-out`})]),_:1},8,[`disabled`]),c(`span`,he,x(Math.round(i.value*100))+`% `,1),u(C(O),{size:`small`,disabled:i.value>=3,onClick:f[4]||=e=>C(a)(`in`)},{icon:E(()=>[u(p,{name:`ic:outline-zoom-in`})]),_:1},8,[`disabled`]),u(C(O),{size:`small`,onClick:f[5]||=e=>C(a)(`reset`)},{icon:E(()=>[u(p,{name:`ic:outline-fit-screen`})]),default:E(()=>[f[6]||=l(` 适应 `,-1)]),_:1})])])]),c(`div`,ge,[t.pdfUrl?(_(),s(`iframe`,{key:0,src:t.pdfUrl,class:`w-full h-full border-0`,title:`PDF预览`,frameborder:`0`,allowfullscreen:``},null,8,_e)):o(`v-if`,!0)])])}}}),[[`__scopeId`,`data-v-6ef071db`]]);const ye={class:`file-container word-container`},be={class:`file-toolbar`},xe={class:`flex gap-2 items-center`},Se={class:`text-sm text-gray-600 min-w-12 text-center`},Ce={class:`word-layout`},we={class:`word-main`},Te={key:0,class:`word-outline`},Ee={class:`outline-content`},De=[`onClick`],Oe={class:`word-content`},ke=[`innerHTML`];var Ae=t(d({__name:`index`,props:{content:{},headings:{}},setup(t){let n=v(!0),i=v(100),a=J(i,W.word),d=e=>{document.getElementById(e)?.scrollIntoView({behavior:`smooth`,block:`start`})};return(f,h)=>{let g=e;return _(),s(`div`,ye,[c(`div`,be,[c(`div`,xe,[u(C(O),{size:`small`,onClick:h[0]||=e=>n.value=!n.value},{icon:E(()=>[u(g,{name:`ic:outline-list`})]),default:E(()=>[l(` `+x(n.value?`隐藏`:`显示`)+`目录 `,1)]),_:1}),u(C(k),{vertical:``}),u(C(O),{size:`small`,disabled:i.value<=50,onClick:h[1]||=e=>C(a)(`out`)},{icon:E(()=>[u(g,{name:`ic:outline-zoom-out`})]),_:1},8,[`disabled`]),c(`span`,Se,x(i.value)+`% `,1),u(C(O),{size:`small`,disabled:i.value>=200,onClick:h[2]||=e=>C(a)(`in`)},{icon:E(()=>[u(g,{name:`ic:outline-zoom-in`})]),_:1},8,[`disabled`]),u(C(O),{size:`small`,onClick:h[3]||=e=>C(a)(`reset`)},{icon:E(()=>[u(g,{name:`ic:outline-fit-screen`})]),default:E(()=>[h[4]||=l(` 重置 `,-1)]),_:1})])]),c(`div`,Ce,[c(`div`,we,[o(` 侧边栏目录 `),n.value?(_(),s(`div`,Te,[h[5]||=c(`div`,{class:`outline-header`},[c(`h3`,{class:`text-sm font-semibold`},`文档目录`)],-1),c(`div`,Ee,[(_(!0),s(r,null,y(t.headings,(e,t)=>(_(),s(`div`,{key:t,class:p([`outline-item`,`level-${e.level}`]),onClick:t=>d(e.id)},x(e.text),11,De))),128))])])):o(`v-if`,!0),o(` 主要内容区域 `),c(`div`,Oe,[c(`div`,{class:`word-document`,style:m({transform:`scale(${i.value/100})`,transformOrigin:`top center`}),innerHTML:t.content},null,12,ke)])])])])}}}),[[`__scopeId`,`data-v-31f606d3`]]);const je={class:`file-container excel-container`},Me={class:`file-toolbar`},Ne={class:`flex justify-between items-center`},Pe={class:`flex gap-2 items-center`},Fe={key:1,class:`text-sm text-gray-600`},Ie={class:`flex gap-2 items-center`},Le={class:`excel-viewer`},Re={key:0,class:`excel-info`},ze={class:`excel-table-container`},Be={key:0,class:`excel-table`},Ve={class:`header-content`},He={class:`column-letter`},Ue={class:`column-title`},We={class:`row-number`},Ge=[`rowspan`,`colspan`,`title`],Ke={key:1,class:`excel-empty`},qe={key:0,class:`excel-pagination`};var Je=t(d({__name:`index`,props:{sheets:{}},emits:[`reload`],setup(t){let n=t,d=v(``),f=v(!1),h=v(1),g=v(50),b=v([]),S=v([]),k=i(()=>Math.ceil(b.value.length/g.value)),A=i(()=>{let e=(h.value-1)*g.value;return b.value.slice(e,e+g.value)}),M=e=>{g.value=e,h.value=1},N=e=>{let t=n.sheets.find(t=>t.name===e);t&&(b.value=t.data,S.value=t.columns,h.value=1)};return T(d,e=>{N(e)}),T(()=>n.sheets,e=>{if(e.length>0){let[t]=e;d.value=t.name,b.value=t.data,S.value=t.columns,h.value=1}},{immediate:!0}),(n,i)=>{let v=e;return _(),s(`div`,je,[o(` 工具栏 `),c(`div`,Me,[c(`div`,Ne,[c(`div`,Pe,[t.sheets.length>1?(_(),a(C(L),{key:0,value:d.value,"onUpdate:value":i[0]||=e=>d.value=e,type:`card`,size:`small`},{default:E(()=>[(_(!0),s(r,null,y(t.sheets,e=>(_(),a(C(I),{key:e.name,name:e.name,tab:e.name},null,8,[`name`,`tab`]))),128))]),_:1},8,[`value`])):(_(),s(`span`,Fe,` 工作表: `+x(d.value),1))]),c(`div`,Ie,[u(C(O),{size:`small`,onClick:i[1]||=e=>f.value=!f.value},{icon:E(()=>[u(v,{name:`ic:outline-format-paint`})]),default:E(()=>[l(` `+x(f.value?`紧凑视图`:`完整格式`),1)]),_:1})])])]),c(`div`,Le,[o(` 信息面板 `),b.value.length>0?(_(),s(`div`,Re,[u(C(z),{depth:`3`,class:`text-sm`},{default:E(()=>[l(` 当前工作表: `+x(d.value)+` | 总行数: `+x(b.value.length)+` | 总列数: `+x(S.value.length)+` | 当前页: `+x(h.value)+`/`+x(k.value),1)]),_:1})])):o(`v-if`,!0),o(` 表格 `),c(`div`,ze,[c(`div`,{class:p([`excel-table-wrapper`,{"simple-mode":!f.value}])},[b.value.length>0?(_(),s(`table`,Be,[c(`thead`,null,[c(`tr`,null,[i[4]||=c(`th`,{class:`row-number`},`行号`,-1),(_(!0),s(r,null,y(S.value,(e,t)=>(_(),s(`th`,{key:e.key,class:`excel-header`,style:m({minWidth:e.width+`px`})},[c(`div`,Ve,[c(`span`,He,x(C(Y)(t)),1),c(`span`,Ue,x(e.title),1)])],4))),128))])]),c(`tbody`,null,[(_(!0),s(r,null,y(A.value,(e,t)=>(_(),s(`tr`,{key:t,class:`excel-row`},[c(`td`,We,x((h.value-1)*g.value+t+1),1),(_(!0),s(r,null,y(S.value,t=>D((_(),s(`td`,{key:t.key,class:p([`excel-cell`,[C(ie)(e[t.key]?.value),e[t.key]?.merged?`merged-cell`:``,f.value?``:`compact-cell`]]),rowspan:e[t.key]?.rowspan||1,colspan:e[t.key]?.colspan||1,title:e[t.key]?.value},x(C(X)(e[t.key]?.value)),11,Ge)),[[w,!e[t.key]?.hidden]])),128))]))),128))])])):(_(),s(`div`,Ke,[u(C(j),{description:`该工作表没有数据或解析失败`},{extra:E(()=>[u(C(O),{size:`small`,onClick:i[2]||=e=>n.$emit(`reload`)},{default:E(()=>[...i[5]||=[l(` 重新解析 `,-1)]]),_:1})]),_:1})]))],2),o(` 分页 `),k.value>1?(_(),s(`div`,qe,[u(C(P),{page:h.value,"onUpdate:page":i[3]||=e=>h.value=e,"page-count":k.value,"page-size":g.value,"show-size-picker":``,"page-sizes":C(G),"onUpdate:pageSize":M},null,8,[`page`,`page-count`,`page-size`,`page-sizes`])])):o(`v-if`,!0)])])])}}}),[[`__scopeId`,`data-v-5569b81f`]]);function Z(e,t){let{file:n,url:r,fileName:a}=e,o=v(!1),s=v(``),c=v(0),l=v(!1),u=v(``),d=v(0),f=v(``),p=v([]),m=v([]),h=i(()=>a.value&&a.value!==`未知文件`?a.value:n.value?.name?n.value.name:r.value?te(r.value):`未知文件`),_=i(()=>ne(h.value)),y=i(()=>re(_.value)),b=()=>{s.value=``,o.value=!1,u.value=``,d.value=0,f.value=``,p.value=[],m.value=[]},x=e=>{s.value=e,o.value=!1},S=async()=>{if(n.value)return c.value=n.value.size,n.value;if(r.value){let e=await fetch(r.value);if(!e.ok)throw Error(`HTTP ${e.status}: ${e.statusText}`);let t=await e.blob(),n=new File([t],h.value,{type:t.type});return c.value=n.size,n}throw Error(`未提供文件或URL`)},C=async(e,t)=>{switch(t){case`pdf`:{let t=await oe(e);u.value=t.url,d.value=t.totalPages;break}case`word`:{let t=await se(e);f.value=t.content,p.value=t.headings;break}case`excel`:m.value=(await ce(e)).sheets;break;default:throw Error(`不支持的文件格式`)}},w=async()=>{if(!n.value&&!r.value){x(`未提供文件或URL`);return}b(),o.value=!0;try{await C(await S(),_.value),o.value=!1}catch(e){let t=e instanceof Error?e.message:`未知错误`;x(`${_.value.toUpperCase()}文件加载失败: ${t}`)}};return T(()=>n.value?.size,e=>{c.value=e||0},{immediate:!0}),g(()=>{u.value?.startsWith(`blob:`)&&URL.revokeObjectURL(u.value.split(`#`)[0])}),{loading:o,error:s,fileSize:c,showModal:l,pdfUrl:u,pdfTotalPages:d,wordContent:f,wordHeadings:p,excelSheets:m,displayFileName:h,fileType:_,fileConfig:y,loadFile:w,openPreview:async()=>{l.value=!0,await w(),t(`preview`,n.value||r.value)},downloadFile:()=>{if(n.value){let e=URL.createObjectURL(n.value);Object.assign(document.createElement(`a`),{href:e,download:h.value}).click(),URL.revokeObjectURL(e)}else r.value&&window.open(r.value,`_blank`);t(`download`,n.value||r.value)}}}function Q(e){let t=v(!1),n=()=>{t.value=!!document.fullscreenElement},r=(e,t=0)=>t>=e.length?(console.warn(`无法切换全屏状态`),Promise.resolve()):e[t]().catch(()=>r(e,t+1));return h(()=>{K.forEach(e=>document.addEventListener(e,n))}),g(()=>{K.forEach(e=>document.removeEventListener(e,n))}),{isFullscreen:t,toggleFullscreen:async()=>{let t=e.value;t&&await r(document.fullscreenElement?[()=>document.exitFullscreen(),()=>document.webkitExitFullscreen(),()=>document.mozCancelFullScreen(),()=>document.msExitFullscreen()]:[()=>t.requestFullscreen(),()=>t.webkitRequestFullscreen(),()=>t.mozRequestFullScreen(),()=>t.msRequestFullscreen()])},exitFullscreen:async()=>{if(document.fullscreenElement)try{await document.exitFullscreen()}catch{}t.value=!1}}}const Ye={class:`c-file-preview-wrapper`},Xe={key:0,class:`file-info-card`},Ze={class:`file-info`},Qe={class:`file-icon`},$e={class:`file-details`},et={class:`file-name`},tt={class:`file-meta`},$={class:`file-size`},nt={class:`file-actions`},rt={class:`modal-header`},it={class:`modal-title`},at={class:`modal-actions`},ot={class:`modal-content`},st={class:`preview-header`},ct={class:`flex justify-between items-center`},lt={class:`flex items-center gap-3`},ut={class:`text-sm text-gray-500`},dt={class:`flex gap-2`},ft={class:`preview-content`},pt={key:0,class:`status-container`};var mt=t(d({name:`C_FilePreview`,__name:`index`,props:{file:{},url:{},fileName:{default:`未知文件`},autoPreview:{type:Boolean,default:!1}},emits:[`preview`,`download`],setup(t,{emit:n}){let{file:i,url:d,fileName:p,autoPreview:m}=S(t),{loading:h,error:g,fileSize:y,showModal:b,pdfUrl:w,pdfTotalPages:D,wordContent:k,wordHeadings:j,excelSheets:M,displayFileName:P,fileType:I,fileConfig:L,loadFile:z,openPreview:B,downloadFile:V}=Z({file:i,url:d,fileName:p},n),H=v(),{isFullscreen:U,toggleFullscreen:W,exitFullscreen:G}=Q(H);return T(b,e=>{e||G()}),(t,n)=>{let i=e;return _(),s(`div`,Ye,[o(` 文件信息卡片模式 `),C(m)?o(`v-if`,!0):(_(),s(`div`,Xe,[c(`div`,Ze,[c(`div`,Qe,[u(i,{name:C(L).icon,size:40,color:C(L).color},null,8,[`name`,`color`])]),c(`div`,$e,[c(`div`,et,[u(C(A),{style:{"max-width":`250px`}},{default:E(()=>[l(x(C(P)),1)]),_:1}),u(C(R),{type:C(L).tagType,size:`small`},{default:E(()=>[l(x(C(I).toUpperCase()),1)]),_:1},8,[`type`])]),c(`div`,tt,[c(`span`,$,x(C(q)(C(y))),1)])]),c(`div`,nt,[u(C(O),{type:`primary`,onClick:C(B)},{icon:E(()=>[u(i,{name:`ic:outline-visibility`})]),default:E(()=>[n[2]||=l(` 预览 `,-1)]),_:1},8,[`onClick`]),u(C(O),{type:`tertiary`,onClick:C(V)},{icon:E(()=>[u(i,{name:`ic:outline-download`})]),default:E(()=>[n[3]||=l(` 下载 `,-1)]),_:1},8,[`onClick`])])])])),o(` 模态框预览 `),u(C(N),{show:C(b),"onUpdate:show":n[1]||=e=>f(b)?b.value=e:null,"mask-closable":!1,closable:!1,"auto-focus":!1,"transform-origin":`center`,style:{width:`85vw`,"max-width":`1200px`,"min-width":`800px`,height:`75vh`,"max-height":`700px`,"min-height":`500px`}},{default:E(()=>[c(`div`,{ref_key:`modalContainer`,ref:H,class:`modal-container`},[o(` 自定义头部 `),c(`div`,rt,[c(`div`,it,[u(i,{name:C(L).icon,size:20,color:C(L).color},null,8,[`name`,`color`]),c(`span`,null,x(C(P)),1)]),c(`div`,at,[u(C(O),{size:`small`,type:`tertiary`,onClick:C(V)},{icon:E(()=>[u(i,{name:`ic:outline-download`})]),default:E(()=>[n[4]||=l(` 下载 `,-1)]),_:1},8,[`onClick`]),u(C(O),{size:`small`,type:`tertiary`,onClick:n[0]||=e=>b.value=!1},{icon:E(()=>[u(i,{name:`ic:outline-close`})]),_:1})])]),o(` 预览内容 `),c(`div`,ot,[o(` 文件信息头部 `),c(`div`,st,[c(`div`,ct,[c(`div`,lt,[u(C(R),{type:C(L).tagType,size:`small`},{icon:E(()=>[u(i,{name:C(L).icon},null,8,[`name`])]),default:E(()=>[l(` `+x(C(I).toUpperCase()),1)]),_:1},8,[`type`]),u(C(A),{style:{"max-width":`300px`}},{default:E(()=>[l(x(C(P)),1)]),_:1}),c(`span`,ut,x(C(q)(C(y))),1)]),c(`div`,dt,[u(C(O),{size:`small`,type:`tertiary`,disabled:C(h),onClick:C(z)},{icon:E(()=>[u(i,{name:`ic:outline-refresh`})]),default:E(()=>[n[5]||=l(` 刷新 `,-1)]),_:1},8,[`disabled`,`onClick`]),u(C(O),{size:`small`,type:`primary`,onClick:C(W)},{icon:E(()=>[u(i,{name:C(U)?`ic:outline-fullscreen-exit`:`ic:outline-fullscreen`},null,8,[`name`])]),default:E(()=>[l(` `+x(C(U)?`退出全屏`:`全屏`),1)]),_:1},8,[`onClick`])])])]),o(` 预览内容区域 `),c(`div`,ft,[o(` 加载和错误状态 `),C(h)||C(g)?(_(),s(`div`,pt,[C(h)?(_(),a(C(ee),{key:0,size:`large`},{description:E(()=>[l(` 正在加载`+x(C(I).toUpperCase())+`文件... `,1)]),_:1})):(_(),a(C(F),{key:1,status:`error`,title:`预览失败`,description:C(g)},{footer:E(()=>[u(C(O),{onClick:C(z)},{default:E(()=>[...n[6]||=[l(`重试`,-1)]]),_:1},8,[`onClick`])]),_:1},8,[`description`]))])):(_(),s(r,{key:1},[o(` 文件预览 — 委托给子组件 `),C(I)===`pdf`?(_(),a(ve,{key:0,"pdf-url":C(w),"total-pages":C(D)},null,8,[`pdf-url`,`total-pages`])):C(I)===`word`?(_(),a(Ae,{key:1,content:C(k),headings:C(j)},null,8,[`content`,`headings`])):C(I)===`excel`?(_(),a(Je,{key:2,sheets:C(M),onReload:C(z)},null,8,[`sheets`,`onReload`])):(_(),s(r,{key:3},[o(` 不支持的文件类型 `),u(C(F),{status:`warning`,title:`不支持的文件格式`,description:`暂不支持预览 ${C(I).toUpperCase()} 格式文件`},null,8,[`description`])],2112))],64))])])],512)]),_:1},8,[`show`])])}}}),[[`__scopeId`,`data-v-7c7c652b`]]);export{Q as n,Z as r,mt as t};
1
+ import{t as e}from"./C_Icon2.js";import{t}from"./export-helper.js";import{t as n}from"./html.js";import{Fragment as r,computed as i,createBlock as a,createCommentVNode as o,createElementBlock as s,createElementVNode as c,createTextVNode as l,createVNode as u,defineComponent as d,isRef as f,normalizeClass as p,normalizeStyle as m,onMounted as h,onUnmounted as g,openBlock as _,ref as v,renderList as y,resolveComponent as b,toDisplayString as x,toRefs as S,unref as C,vShow as w,watch as T,withCtx as E,withDirectives as D}from"vue";import{NButton as O,NDivider as k,NEllipsis as A,NEmpty as j,NInputNumber as M,NModal as N,NPagination as P,NResult as F,NSpin as ee,NTabPane as I,NTabs as L,NTag as R,NText as z}from"naive-ui";import*as B from"xlsx";import V from"mammoth";const H={pdf:`pdf`,doc:`word`,docx:`word`,xls:`excel`,xlsx:`excel`},U={pdf:{tagType:`error`,icon:`ic:outline-picture-as-pdf`,color:`#dc2626`},word:{tagType:`info`,icon:`ic:outline-description`,color:`#2563eb`},excel:{tagType:`success`,icon:`ic:outline-grid-on`,color:`#16a34a`},unknown:{tagType:`default`,icon:`ic:outline-insert-drive-file`,color:`#6b7280`}},W={pdf:{min:.5,max:3,step:.25,default:1},word:{min:50,max:200,step:10,default:100}},G=[20,50,100,200],K=[`fullscreenchange`,`webkitfullscreenchange`,`mozfullscreenchange`,`MSFullscreenChange`],te=e=>{try{let t=e.split(`/`).pop()||e.split(`\\`).pop();if(t?.includes(`.`)){let n=decodeURIComponent(t.split(`?`)[0]);if(n&&n!==e)return n}}catch(e){console.warn(`解析URL文件名失败:`,e)}return`未知文件`},q=e=>{if(e===0)return`0 B`;let t=1024,n=[`B`,`KB`,`MB`,`GB`],r=Math.floor(Math.log(e)/Math.log(t));return parseFloat((e/t**+r).toFixed(1))+` `+n[r]},ne=e=>{if(!e||e===`未知文件`)return`unknown`;let t=e.toLowerCase().split(`.`).pop();return t&&H[t]||`unknown`},re=e=>U[e]||U.unknown,J=(e,t)=>n=>{let{min:r,max:i,step:a,default:o}=t;switch(n){case`reset`:e.value=o;break;case`in`:e.value<i&&(e.value+=a);break;case`out`:e.value>r&&(e.value-=a);break}},ie=e=>{let t=``;for(;e>=0;)t=String.fromCharCode(65+e%26)+t,e=Math.floor(e/26)-1;return t},Y=e=>{if(e==null||e===``)return``;let t=String(e).trim();if(!isNaN(Number(t))&&t!==``&&t.length<15){let e=Number(t);return Number.isInteger(e)?e.toLocaleString():e.toLocaleString(void 0,{maximumFractionDigits:2})}return t},ae=e=>{if(e==null||e===``)return`cell-empty`;let t=String(e).trim();return!isNaN(Number(t))&&t!==``?`cell-number`:t.match(/[■▬▪▫─━]/)?`cell-gantt`:t.match(/^\d{4}[-/]\d{2}[-/]\d{2}/)||t.match(/^\d{2}[-/]\d{2}[-/]\d{4}/)?`cell-date`:[`true`,`false`].includes(t.toLowerCase())?`cell-boolean`:t.length>20?`cell-text cell-long`:`cell-text`},oe=(e,t)=>{let{c:n,r}=B.utils.decode_range(e[`!ref`]||`A1:A1`).e,i=Array.from({length:n+1},(t,n)=>{let r=e[B.utils.encode_cell({r:0,c:n})],i=r?String(r.v??``).trim():`列${n+1}`;return{title:i||`列${n+1}`,key:`col_${n}`,width:Math.min(Math.max(i.length*12,80),200)}}),a=new Map;return t.forEach(({s:{r:e,c:t},e:{r:n,c:r}})=>{for(let i=e;i<=n;i++)for(let o=t;o<=r;o++)a.set(`${i}-${o}`,{isMain:i===e&&o===t,rowspan:n-e+1,colspan:r-t+1})}),{data:Array.from({length:r+1},(t,r)=>{let i={};for(let t=0;t<=n;t++){let n=e[B.utils.encode_cell({r,c:t})],o=a.get(`${r}-${t}`);i[`col_${t}`]={value:n?n.v??``:``,merged:!!o,hidden:o&&!o.isMain,rowspan:o?.isMain?o.rowspan:1,colspan:o?.isMain?o.colspan:1}}return i}),columns:i}};async function se(e){return{url:URL.createObjectURL(e)+`#toolbar=1&navpanes=1&scrollbar=1&view=FitH`,totalPages:1}}async function ce(e){let t=await e.arrayBuffer(),r=await V.convertToHtml({arrayBuffer:t,styleMap:[`p[style-name='Heading 1'] => h1:fresh`,`p[style-name='Heading 2'] => h2:fresh`,`p[style-name='Heading 3'] => h3:fresh`,`p[style-name='Title'] => h1.title:fresh`]}),i=[],a=document.createElement(`div`);a.innerHTML=n(r.value);let o=a.querySelectorAll(`h1, h2, h3, h4, h5, h6`);return Array.from(o).forEach((e,t)=>{let n=`heading-${t}`,r=parseInt(e.tagName.charAt(1)),a=e.textContent||``;e.id=n,i.push({id:n,text:a,level:r})}),{content:a.innerHTML,headings:i}}async function le(e){let t=await e.arrayBuffer(),n=B.read(t,{type:`array`,cellStyles:!0,cellFormula:!0,cellDates:!0});if(!n.SheetNames.length)throw Error(`Excel文件中没有找到工作表`);return{sheets:n.SheetNames.map(e=>{let t=n.Sheets[e],r=t[`!merges`]||[],{data:i,columns:a}=oe(t,r);return{name:e,data:i,merges:r,columns:a}})}}const ue={class:`file-container pdf-container`},de={class:`file-toolbar`},fe={class:`flex justify-between items-center`},pe={class:`flex gap-2 items-center`},me={class:`text-sm text-gray-600`},he={class:`flex gap-2 items-center`},ge={class:`text-sm text-gray-600 min-w-12 text-center`},_e={class:`file-viewer`},ve=[`src`];var ye=t(d({__name:`index`,props:{pdfUrl:{},totalPages:{}},setup(t){let n=t,r=v(1),i=v(1),a=J(i,W.pdf),d=e=>{if(typeof e==`number`)r.value=Math.max(1,Math.min(e,n.totalPages));else{let t=e===`prev`?-1:1;r.value=Math.max(1,Math.min(r.value+t,n.totalPages))}};return(n,f)=>{let p=e;return _(),s(`div`,ue,[c(`div`,de,[c(`div`,fe,[o(` 翻页控制 `),c(`div`,pe,[u(C(O),{size:`small`,disabled:r.value<=1,onClick:f[0]||=e=>d(`prev`)},{icon:E(()=>[u(p,{name:`ic:outline-chevron-left`})]),_:1},8,[`disabled`]),u(C(M),{value:r.value,"onUpdate:value":[f[1]||=e=>r.value=e,d],size:`small`,min:1,max:t.totalPages,style:{width:`80px`}},null,8,[`value`,`max`,`onUpdate:value`]),c(`span`,me,`/ `+x(t.totalPages),1),u(C(O),{size:`small`,disabled:r.value>=t.totalPages,onClick:f[2]||=e=>d(`next`)},{icon:E(()=>[u(p,{name:`ic:outline-chevron-right`})]),_:1},8,[`disabled`])]),o(` 缩放控制 `),c(`div`,he,[u(C(O),{size:`small`,disabled:i.value<=.5,onClick:f[3]||=e=>C(a)(`out`)},{icon:E(()=>[u(p,{name:`ic:outline-zoom-out`})]),_:1},8,[`disabled`]),c(`span`,ge,x(Math.round(i.value*100))+`% `,1),u(C(O),{size:`small`,disabled:i.value>=3,onClick:f[4]||=e=>C(a)(`in`)},{icon:E(()=>[u(p,{name:`ic:outline-zoom-in`})]),_:1},8,[`disabled`]),u(C(O),{size:`small`,onClick:f[5]||=e=>C(a)(`reset`)},{icon:E(()=>[u(p,{name:`ic:outline-fit-screen`})]),default:E(()=>[f[6]||=l(` 适应 `,-1)]),_:1})])])]),c(`div`,_e,[t.pdfUrl?(_(),s(`iframe`,{key:0,src:t.pdfUrl,class:`w-full h-full border-0`,title:`PDF预览`,frameborder:`0`,allowfullscreen:``},null,8,ve)):o(`v-if`,!0)])])}}}),[[`__scopeId`,`data-v-6ef071db`]]);const be={class:`file-container word-container`},xe={class:`file-toolbar`},Se={class:`flex gap-2 items-center`},Ce={class:`text-sm text-gray-600 min-w-12 text-center`},we={class:`word-layout`},Te={class:`word-main`},Ee={key:0,class:`word-outline`},De={class:`outline-content`},Oe=[`onClick`],ke={class:`word-content`},Ae=[`innerHTML`];var je=t(d({__name:`index`,props:{content:{},headings:{}},setup(t){let n=v(!0),i=v(100),a=J(i,W.word),d=e=>{document.getElementById(e)?.scrollIntoView({behavior:`smooth`,block:`start`})};return(f,h)=>{let g=e;return _(),s(`div`,be,[c(`div`,xe,[c(`div`,Se,[u(C(O),{size:`small`,onClick:h[0]||=e=>n.value=!n.value},{icon:E(()=>[u(g,{name:`ic:outline-list`})]),default:E(()=>[l(` `+x(n.value?`隐藏`:`显示`)+`目录 `,1)]),_:1}),u(C(k),{vertical:``}),u(C(O),{size:`small`,disabled:i.value<=50,onClick:h[1]||=e=>C(a)(`out`)},{icon:E(()=>[u(g,{name:`ic:outline-zoom-out`})]),_:1},8,[`disabled`]),c(`span`,Ce,x(i.value)+`% `,1),u(C(O),{size:`small`,disabled:i.value>=200,onClick:h[2]||=e=>C(a)(`in`)},{icon:E(()=>[u(g,{name:`ic:outline-zoom-in`})]),_:1},8,[`disabled`]),u(C(O),{size:`small`,onClick:h[3]||=e=>C(a)(`reset`)},{icon:E(()=>[u(g,{name:`ic:outline-fit-screen`})]),default:E(()=>[h[4]||=l(` 重置 `,-1)]),_:1})])]),c(`div`,we,[c(`div`,Te,[o(` 侧边栏目录 `),n.value?(_(),s(`div`,Ee,[h[5]||=c(`div`,{class:`outline-header`},[c(`h3`,{class:`text-sm font-semibold`},`文档目录`)],-1),c(`div`,De,[(_(!0),s(r,null,y(t.headings,(e,t)=>(_(),s(`div`,{key:t,class:p([`outline-item`,`level-${e.level}`]),onClick:t=>d(e.id)},x(e.text),11,Oe))),128))])])):o(`v-if`,!0),o(` 主要内容区域 `),c(`div`,ke,[c(`div`,{class:`word-document`,style:m({transform:`scale(${i.value/100})`,transformOrigin:`top center`}),innerHTML:t.content},null,12,Ae)])])])])}}}),[[`__scopeId`,`data-v-31f606d3`]]);const Me={class:`file-container excel-container`},Ne={class:`file-toolbar`},Pe={class:`flex justify-between items-center`},Fe={class:`flex gap-2 items-center`},Ie={key:1,class:`text-sm text-gray-600`},Le={class:`flex gap-2 items-center`},Re={class:`excel-viewer`},ze={key:0,class:`excel-info`},Be={class:`excel-table-container`},Ve={key:0,class:`excel-table`},He={class:`header-content`},Ue={class:`column-letter`},We={class:`column-title`},Ge={class:`row-number`},Ke=[`rowspan`,`colspan`,`title`],qe={key:1,class:`excel-empty`},Je={key:0,class:`excel-pagination`};var Ye=t(d({__name:`index`,props:{sheets:{}},emits:[`reload`],setup(t){let n=t,d=v(``),f=v(!1),h=v(1),g=v(50),b=v([]),S=v([]),k=i(()=>Math.ceil(b.value.length/g.value)),A=i(()=>{let e=(h.value-1)*g.value;return b.value.slice(e,e+g.value)}),M=e=>{g.value=e,h.value=1},N=e=>{let t=n.sheets.find(t=>t.name===e);t&&(b.value=t.data,S.value=t.columns,h.value=1)};return T(d,e=>{N(e)}),T(()=>n.sheets,e=>{if(e.length>0){let[t]=e;d.value=t.name,b.value=t.data,S.value=t.columns,h.value=1}},{immediate:!0}),(n,i)=>{let v=e;return _(),s(`div`,Me,[o(` 工具栏 `),c(`div`,Ne,[c(`div`,Pe,[c(`div`,Fe,[t.sheets.length>1?(_(),a(C(L),{key:0,value:d.value,"onUpdate:value":i[0]||=e=>d.value=e,type:`card`,size:`small`},{default:E(()=>[(_(!0),s(r,null,y(t.sheets,e=>(_(),a(C(I),{key:e.name,name:e.name,tab:e.name},null,8,[`name`,`tab`]))),128))]),_:1},8,[`value`])):(_(),s(`span`,Ie,` 工作表: `+x(d.value),1))]),c(`div`,Le,[u(C(O),{size:`small`,onClick:i[1]||=e=>f.value=!f.value},{icon:E(()=>[u(v,{name:`ic:outline-format-paint`})]),default:E(()=>[l(` `+x(f.value?`紧凑视图`:`完整格式`),1)]),_:1})])])]),c(`div`,Re,[o(` 信息面板 `),b.value.length>0?(_(),s(`div`,ze,[u(C(z),{depth:`3`,class:`text-sm`},{default:E(()=>[l(` 当前工作表: `+x(d.value)+` | 总行数: `+x(b.value.length)+` | 总列数: `+x(S.value.length)+` | 当前页: `+x(h.value)+`/`+x(k.value),1)]),_:1})])):o(`v-if`,!0),o(` 表格 `),c(`div`,Be,[c(`div`,{class:p([`excel-table-wrapper`,{"simple-mode":!f.value}])},[b.value.length>0?(_(),s(`table`,Ve,[c(`thead`,null,[c(`tr`,null,[i[4]||=c(`th`,{class:`row-number`},`行号`,-1),(_(!0),s(r,null,y(S.value,(e,t)=>(_(),s(`th`,{key:e.key,class:`excel-header`,style:m({minWidth:e.width+`px`})},[c(`div`,He,[c(`span`,Ue,x(C(ie)(t)),1),c(`span`,We,x(e.title),1)])],4))),128))])]),c(`tbody`,null,[(_(!0),s(r,null,y(A.value,(e,t)=>(_(),s(`tr`,{key:t,class:`excel-row`},[c(`td`,Ge,x((h.value-1)*g.value+t+1),1),(_(!0),s(r,null,y(S.value,t=>D((_(),s(`td`,{key:t.key,class:p([`excel-cell`,[C(ae)(e[t.key]?.value),e[t.key]?.merged?`merged-cell`:``,f.value?``:`compact-cell`]]),rowspan:e[t.key]?.rowspan||1,colspan:e[t.key]?.colspan||1,title:e[t.key]?.value},x(C(Y)(e[t.key]?.value)),11,Ke)),[[w,!e[t.key]?.hidden]])),128))]))),128))])])):(_(),s(`div`,qe,[u(C(j),{description:`该工作表没有数据或解析失败`},{extra:E(()=>[u(C(O),{size:`small`,onClick:i[2]||=e=>n.$emit(`reload`)},{default:E(()=>[...i[5]||=[l(` 重新解析 `,-1)]]),_:1})]),_:1})]))],2),o(` 分页 `),k.value>1?(_(),s(`div`,Je,[u(C(P),{page:h.value,"onUpdate:page":i[3]||=e=>h.value=e,"page-count":k.value,"page-size":g.value,"show-size-picker":``,"page-sizes":C(G),"onUpdate:pageSize":M},null,8,[`page`,`page-count`,`page-size`,`page-sizes`])])):o(`v-if`,!0)])])])}}}),[[`__scopeId`,`data-v-5569b81f`]]);function X(e,t){if(!e.trim())return null;try{let n=new URL(t),r=new URL(e,n);if(r.username||r.password)return null;if(r.protocol===`https:`||r.protocol===`http:`&&r.origin===n.origin)return r.href}catch{}return null}function Z(e,t){let{file:n,url:r,fileName:a}=e,o=v(!1),s=v(``),c=v(0),l=v(!1),u=v(``),d=v(0),f=v(``),p=v([]),m=v([]),h=0,_=null,y=i(()=>a.value&&a.value!==`未知文件`?a.value:n.value?.name?n.value.name:r.value?te(r.value):`未知文件`),b=i(()=>ne(y.value)),x=i(()=>re(b.value)),S=()=>{let e=u.value;u.value=``,e.startsWith(`blob:`)&&URL.revokeObjectURL(e.split(`#`)[0])},C=()=>{s.value=``,o.value=!1,c.value=0,S(),d.value=0,f.value=``,p.value=[],m.value=[]},w=e=>{s.value=e,o.value=!1},E=async e=>{let t=n.value,i=r.value;if(t)return t;if(i){let t=X(i,window.location.href);if(!t)throw Error(`不支持此文件地址`);let n=await fetch(t,{signal:e});if(!n.ok)throw Error(`HTTP ${n.status}: ${n.statusText}`);let r=await n.blob();return new File([r],y.value,{type:r.type})}throw Error(`未提供文件或URL`)},D=async(e,t,n)=>{switch(t){case`pdf`:{let t=await se(e);if(n!==h){URL.revokeObjectURL(t.url.split(`#`)[0]);return}u.value=t.url,d.value=t.totalPages;break}case`word`:{let t=await ce(e);if(n!==h)return;f.value=t.content,p.value=t.headings;break}case`excel`:{let t=await le(e);if(n!==h)return;m.value=t.sheets;break}default:throw Error(`不支持的文件格式`)}},O=async()=>{let e=++h;_?.abort();let t=new AbortController;if(_=t,C(),!n.value&&!r.value){w(`未提供文件或URL`),_=null;return}o.value=!0;try{let n=b.value,r=await E(t.signal);if(e!==h)return;c.value=r.size,await D(r,n,e)}catch(n){if(e!==h||t.signal.aborted)return;let r=n instanceof Error?n.message:`未知错误`;w(`${b.value.toUpperCase()}文件加载失败: ${r}`)}finally{e===h&&(o.value=!1,_=null)}};return T(()=>n.value?.size,e=>{c.value=e||0},{immediate:!0}),g(()=>{h+=1,_?.abort(),S()}),{loading:o,error:s,fileSize:c,showModal:l,pdfUrl:u,pdfTotalPages:d,wordContent:f,wordHeadings:p,excelSheets:m,displayFileName:y,fileType:b,fileConfig:x,loadFile:O,openPreview:async()=>{l.value=!0,await O(),t(`preview`,n.value||r.value)},downloadFile:()=>{if(n.value){let e=URL.createObjectURL(n.value);Object.assign(document.createElement(`a`),{href:e,download:y.value}).click(),URL.revokeObjectURL(e)}else if(r.value){let e=X(r.value,window.location.href);if(!e){w(`不支持此文件地址`);return}window.open(e,`_blank`,`noopener,noreferrer`)}t(`download`,n.value||r.value)}}}function Q(e){let t=v(!1),n=()=>{t.value=!!document.fullscreenElement},r=(e,t=0)=>t>=e.length?(console.warn(`无法切换全屏状态`),Promise.resolve()):e[t]().catch(()=>r(e,t+1));return h(()=>{K.forEach(e=>document.addEventListener(e,n))}),g(()=>{K.forEach(e=>document.removeEventListener(e,n))}),{isFullscreen:t,toggleFullscreen:async()=>{let t=e.value;t&&await r(document.fullscreenElement?[()=>document.exitFullscreen(),()=>document.webkitExitFullscreen(),()=>document.mozCancelFullScreen(),()=>document.msExitFullscreen()]:[()=>t.requestFullscreen(),()=>t.webkitRequestFullscreen(),()=>t.mozRequestFullScreen(),()=>t.msRequestFullscreen()])},exitFullscreen:async()=>{if(document.fullscreenElement)try{await document.exitFullscreen()}catch{}t.value=!1}}}const Xe={class:`c-file-preview-wrapper`},Ze={key:0,class:`file-info-card`},Qe={class:`file-info`},$e={class:`file-icon`},et={class:`file-details`},tt={class:`file-name`},$={class:`file-meta`},nt={class:`file-size`},rt={class:`file-actions`},it={class:`modal-header`},at={class:`modal-title`},ot={class:`modal-actions`},st={class:`modal-content`},ct={class:`preview-header`},lt={class:`flex justify-between items-center`},ut={class:`flex items-center gap-3`},dt={class:`text-sm text-gray-500`},ft={class:`flex gap-2`},pt={class:`preview-content`},mt={key:0,class:`status-container`};var ht=t(d({name:`C_FilePreview`,__name:`index`,props:{file:{},url:{},fileName:{default:`未知文件`},autoPreview:{type:Boolean,default:!1}},emits:[`preview`,`download`],setup(t,{emit:n}){let{file:i,url:d,fileName:p,autoPreview:m}=S(t),{loading:h,error:g,fileSize:y,showModal:b,pdfUrl:w,pdfTotalPages:D,wordContent:k,wordHeadings:j,excelSheets:M,displayFileName:P,fileType:I,fileConfig:L,loadFile:z,openPreview:B,downloadFile:V}=Z({file:i,url:d,fileName:p},n),H=v(),{isFullscreen:U,toggleFullscreen:W,exitFullscreen:G}=Q(H);return T(b,e=>{e||G()}),T([i,d,m],([e,t],n)=>{if(!(typeof window>`u`)){if(b.value){(e!==n?.[0]||t!==n?.[1])&&z();return}m.value&&(e||t)&&B()}},{immediate:!0}),(t,n)=>{let i=e;return _(),s(`div`,Xe,[o(` 文件信息卡片模式 `),C(m)?o(`v-if`,!0):(_(),s(`div`,Ze,[c(`div`,Qe,[c(`div`,$e,[u(i,{name:C(L).icon,size:40,color:C(L).color},null,8,[`name`,`color`])]),c(`div`,et,[c(`div`,tt,[u(C(A),{style:{"max-width":`250px`}},{default:E(()=>[l(x(C(P)),1)]),_:1}),u(C(R),{type:C(L).tagType,size:`small`},{default:E(()=>[l(x(C(I).toUpperCase()),1)]),_:1},8,[`type`])]),c(`div`,$,[c(`span`,nt,x(C(q)(C(y))),1)])]),c(`div`,rt,[u(C(O),{type:`primary`,onClick:C(B)},{icon:E(()=>[u(i,{name:`ic:outline-visibility`})]),default:E(()=>[n[2]||=l(` 预览 `,-1)]),_:1},8,[`onClick`]),u(C(O),{type:`tertiary`,onClick:C(V)},{icon:E(()=>[u(i,{name:`ic:outline-download`})]),default:E(()=>[n[3]||=l(` 下载 `,-1)]),_:1},8,[`onClick`])])])])),o(` 模态框预览 `),u(C(N),{show:C(b),"onUpdate:show":n[1]||=e=>f(b)?b.value=e:null,"mask-closable":!1,closable:!1,"auto-focus":!1,"transform-origin":`center`,style:{width:`85vw`,"max-width":`1200px`,"min-width":`800px`,height:`75vh`,"max-height":`700px`,"min-height":`500px`}},{default:E(()=>[c(`div`,{ref_key:`modalContainer`,ref:H,class:`modal-container`},[o(` 自定义头部 `),c(`div`,it,[c(`div`,at,[u(i,{name:C(L).icon,size:20,color:C(L).color},null,8,[`name`,`color`]),c(`span`,null,x(C(P)),1)]),c(`div`,ot,[u(C(O),{size:`small`,type:`tertiary`,onClick:C(V)},{icon:E(()=>[u(i,{name:`ic:outline-download`})]),default:E(()=>[n[4]||=l(` 下载 `,-1)]),_:1},8,[`onClick`]),u(C(O),{size:`small`,type:`tertiary`,onClick:n[0]||=e=>b.value=!1},{icon:E(()=>[u(i,{name:`ic:outline-close`})]),_:1})])]),o(` 预览内容 `),c(`div`,st,[o(` 文件信息头部 `),c(`div`,ct,[c(`div`,lt,[c(`div`,ut,[u(C(R),{type:C(L).tagType,size:`small`},{icon:E(()=>[u(i,{name:C(L).icon},null,8,[`name`])]),default:E(()=>[l(` `+x(C(I).toUpperCase()),1)]),_:1},8,[`type`]),u(C(A),{style:{"max-width":`300px`}},{default:E(()=>[l(x(C(P)),1)]),_:1}),c(`span`,dt,x(C(q)(C(y))),1)]),c(`div`,ft,[u(C(O),{size:`small`,type:`tertiary`,disabled:C(h),onClick:C(z)},{icon:E(()=>[u(i,{name:`ic:outline-refresh`})]),default:E(()=>[n[5]||=l(` 刷新 `,-1)]),_:1},8,[`disabled`,`onClick`]),u(C(O),{size:`small`,type:`primary`,onClick:C(W)},{icon:E(()=>[u(i,{name:C(U)?`ic:outline-fullscreen-exit`:`ic:outline-fullscreen`},null,8,[`name`])]),default:E(()=>[l(` `+x(C(U)?`退出全屏`:`全屏`),1)]),_:1},8,[`onClick`])])])]),o(` 预览内容区域 `),c(`div`,pt,[o(` 加载和错误状态 `),C(h)||C(g)?(_(),s(`div`,mt,[C(h)?(_(),a(C(ee),{key:0,size:`large`},{description:E(()=>[l(` 正在加载`+x(C(I).toUpperCase())+`文件... `,1)]),_:1})):(_(),a(C(F),{key:1,status:`error`,title:`预览失败`,description:C(g)},{footer:E(()=>[u(C(O),{onClick:C(z)},{default:E(()=>[...n[6]||=[l(`重试`,-1)]]),_:1},8,[`onClick`])]),_:1},8,[`description`]))])):(_(),s(r,{key:1},[o(` 文件预览 — 委托给子组件 `),C(I)===`pdf`?(_(),a(ye,{key:0,"pdf-url":C(w),"total-pages":C(D)},null,8,[`pdf-url`,`total-pages`])):C(I)===`word`?(_(),a(je,{key:1,content:C(k),headings:C(j)},null,8,[`content`,`headings`])):C(I)===`excel`?(_(),a(Ye,{key:2,sheets:C(M),onReload:C(z)},null,8,[`sheets`,`onReload`])):(_(),s(r,{key:3},[o(` 不支持的文件类型 `),u(C(F),{status:`warning`,title:`不支持的文件格式`,description:`暂不支持预览 ${C(I).toUpperCase()} 格式文件`},null,8,[`description`])],2112))],64))])])],512)]),_:1},8,[`show`])])}}}),[[`__scopeId`,`data-v-3e4e0b9c`]]);export{Q as n,Z as r,ht as t};