@robot-admin/naive-ui-components 0.17.0 → 0.17.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (179) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/README.md +12 -11
  3. package/README_EN.md +1 -0
  4. package/dist/C_AntV.css +105 -105
  5. package/dist/C_AntV2.cjs +3 -3
  6. package/dist/C_AntV2.js +3 -3
  7. package/dist/C_AudioPlayer.css +53 -53
  8. package/dist/C_AudioPlayer2.cjs +1 -1
  9. package/dist/C_AudioPlayer2.js +1 -1
  10. package/dist/C_Barcode.css +6 -6
  11. package/dist/C_Barcode2.cjs +1 -1
  12. package/dist/C_Barcode2.js +1 -1
  13. package/dist/C_Chat.css +269 -185
  14. package/dist/C_Chat2.cjs +1 -1
  15. package/dist/C_Chat2.js +1 -1
  16. package/dist/C_Code.css +26 -26
  17. package/dist/C_Code2.cjs +1 -1
  18. package/dist/C_Code2.js +1 -1
  19. package/dist/C_Draggable2.cjs +1 -1
  20. package/dist/C_Draggable2.js +1 -1
  21. package/dist/C_FilePreview.css +96 -57
  22. package/dist/C_FilePreview2.cjs +1 -1
  23. package/dist/C_FilePreview2.js +1 -1
  24. package/dist/C_FullCalendar.css +10 -11
  25. package/dist/C_FullCalendar2.cjs +1 -1
  26. package/dist/C_FullCalendar2.js +1 -1
  27. package/dist/C_GlobalSearch.css +140 -118
  28. package/dist/C_GlobalSearch2.cjs +1 -1
  29. package/dist/C_GlobalSearch2.js +1 -1
  30. package/dist/C_ImageCropper.css +10 -10
  31. package/dist/C_ImageCropper2.cjs +1 -1
  32. package/dist/C_ImageCropper2.js +1 -1
  33. package/dist/C_Login.css +79 -79
  34. package/dist/C_Login2.cjs +1 -1
  35. package/dist/C_Login2.js +1 -1
  36. package/dist/C_Map.css +10 -10
  37. package/dist/C_Map2.cjs +1 -1
  38. package/dist/C_Map2.js +1 -1
  39. package/dist/C_OrgChart.css +28 -4
  40. package/dist/C_OrgChart2.cjs +1 -1
  41. package/dist/C_OrgChart2.js +1 -1
  42. package/dist/C_QRCode2.cjs +1 -1
  43. package/dist/C_QRCode2.js +1 -1
  44. package/dist/C_Signature.css +15 -15
  45. package/dist/C_Signature2.cjs +1 -1
  46. package/dist/C_Signature2.js +1 -1
  47. package/dist/C_SplitPane.cjs +1 -1
  48. package/dist/C_SplitPane.css +231 -77
  49. package/dist/C_SplitPane.js +1 -1
  50. package/dist/C_SplitPane2.cjs +1 -1
  51. package/dist/C_SplitPane2.js +1 -1
  52. package/dist/C_Table.base.css +110 -117
  53. package/dist/C_Table.css +110 -117
  54. package/dist/C_Table.d.ts +1 -0
  55. package/dist/C_Tabs.css +18 -18
  56. package/dist/C_TagsView.css +51 -51
  57. package/dist/C_TagsView2.cjs +1 -1
  58. package/dist/C_TagsView2.js +1 -1
  59. package/dist/C_Transfer.css +93 -84
  60. package/dist/C_Transfer2.cjs +1 -1
  61. package/dist/C_Transfer2.js +1 -1
  62. package/dist/C_Tree.d.ts +1 -0
  63. package/dist/C_Upload.css +5 -5
  64. package/dist/C_Upload2.cjs +1 -1
  65. package/dist/C_Upload2.js +1 -1
  66. package/dist/C_VideoPlayer.css +20 -20
  67. package/dist/C_VideoPlayer2.cjs +4 -3
  68. package/dist/C_VideoPlayer2.js +4 -3
  69. package/dist/C_VtableGantt.css +44 -28
  70. package/dist/C_VtableGantt2.cjs +1 -1
  71. package/dist/C_VtableGantt2.js +1 -1
  72. package/dist/C_WaterFall.css +29 -29
  73. package/dist/C_WaterFall2.cjs +1 -1
  74. package/dist/C_WaterFall2.js +1 -1
  75. package/dist/C_WorkFlow.css +111 -111
  76. package/dist/C_WorkFlow2.cjs +1 -1
  77. package/dist/C_WorkFlow2.js +1 -1
  78. package/dist/constants3.d.cts +2 -2
  79. package/dist/constants3.d.ts +2 -2
  80. package/dist/constants4.d.cts +5 -5
  81. package/dist/constants4.d.ts +5 -5
  82. package/dist/constants5.d.cts +12 -15
  83. package/dist/constants5.d.ts +12 -15
  84. package/dist/data.d.cts +9 -9
  85. package/dist/data.d.ts +9 -9
  86. package/dist/data2.cjs +1 -1
  87. package/dist/data2.js +1 -1
  88. package/dist/helpers.cjs +1 -1
  89. package/dist/helpers.js +1 -1
  90. package/dist/index.d.ts +1 -0
  91. package/dist/index.vue.d.cts +4 -4
  92. package/dist/index.vue.d.ts +4 -4
  93. package/dist/index10.vue.d.cts +2 -2
  94. package/dist/index10.vue.d.ts +2 -2
  95. package/dist/index11.vue.d.cts +2 -2
  96. package/dist/index11.vue.d.ts +5 -5
  97. package/dist/index12.vue.d.cts +5 -5
  98. package/dist/index13.vue.d.ts +1 -1
  99. package/dist/index14.vue.d.cts +1 -1
  100. package/dist/index14.vue.d.ts +5 -5
  101. package/dist/index15.vue.d.cts +5 -5
  102. package/dist/index15.vue.d.ts +1 -1
  103. package/dist/index16.vue.d.cts +1 -1
  104. package/dist/index16.vue.d.ts +1 -1
  105. package/dist/index17.vue.d.cts +1 -1
  106. package/dist/index17.vue.d.ts +1 -1
  107. package/dist/index18.vue.d.cts +1 -1
  108. package/dist/index18.vue.d.ts +4 -4
  109. package/dist/index19.vue.d.cts +4 -4
  110. package/dist/index19.vue.d.ts +2 -2
  111. package/dist/index2.vue.d.cts +3 -3
  112. package/dist/index2.vue.d.ts +3 -3
  113. package/dist/index20.vue.d.cts +5 -1
  114. package/dist/index20.vue.d.ts +5 -1
  115. package/dist/index21.vue.d.cts +2 -2
  116. package/dist/index21.vue.d.ts +2 -2
  117. package/dist/index22.vue.d.cts +2 -2
  118. package/dist/index22.vue.d.ts +2 -2
  119. package/dist/index23.vue.d.cts +2 -2
  120. package/dist/index23.vue.d.ts +2 -2
  121. package/dist/index25.vue.d.cts +9 -4
  122. package/dist/index25.vue.d.ts +9 -4
  123. package/dist/index27.vue.d.cts +2 -2
  124. package/dist/index27.vue.d.ts +2 -2
  125. package/dist/index28.vue.d.cts +6 -2
  126. package/dist/index28.vue.d.ts +6 -2
  127. package/dist/index3.vue.d.cts +4 -4
  128. package/dist/index3.vue.d.ts +4 -4
  129. package/dist/index4.vue.d.cts +2 -2
  130. package/dist/index6.vue.d.ts +8 -5
  131. package/dist/index7.vue.d.cts +8 -5
  132. package/dist/index8.vue.d.ts +4 -6
  133. package/dist/index9.vue.d.cts +4 -6
  134. package/dist/index9.vue.d.ts +2 -2
  135. package/dist/mapUtils.d.cts +4 -4
  136. package/dist/mapUtils.d.ts +4 -4
  137. package/dist/style.css +1559 -1219
  138. package/dist/useCalendarEvents.d.cts +10 -0
  139. package/dist/useCalendarEvents.d.ts +10 -0
  140. package/dist/useCropperCore.d.cts +10 -10
  141. package/dist/useCropperCore.d.ts +10 -10
  142. package/dist/useDraggableLayout.d.cts +16 -14
  143. package/dist/useDraggableLayout.d.ts +16 -14
  144. package/dist/useEdgeInteraction.d.cts +4 -2
  145. package/dist/useEdgeInteraction.d.ts +4 -2
  146. package/dist/useFullscreen.d.cts +9 -3
  147. package/dist/useFullscreen.d.ts +9 -3
  148. package/dist/useGlobalSearch.d.cts +9 -4
  149. package/dist/useGlobalSearch.d.ts +9 -4
  150. package/dist/useInfiniteScroll.d.cts +6 -3
  151. package/dist/useInfiniteScroll.d.ts +6 -3
  152. package/dist/useQRCode.d.cts +2 -2
  153. package/dist/useQRCode.d.ts +2 -2
  154. package/dist/useSearchState.d.cts +2 -2
  155. package/dist/useSearchState.d.ts +2 -2
  156. package/dist/useSignatureHistory.d.cts +5 -5
  157. package/dist/useSignatureHistory.d.ts +5 -5
  158. package/dist/useSplitResize.d.cts +3 -3
  159. package/dist/useSplitResize.d.ts +3 -3
  160. package/dist/useTableQuery.cjs +3 -3
  161. package/dist/useTableQuery.d.cts +15 -5
  162. package/dist/useTableQuery.d.ts +15 -5
  163. package/dist/useTableQuery.js +3 -3
  164. package/dist/useTimeSelection.d.cts +2 -2
  165. package/dist/useTimeSelection.d.ts +2 -2
  166. package/dist/useWorkflowValidation.d.cts +8 -3
  167. package/dist/useWorkflowValidation.d.ts +8 -3
  168. package/dist/verification.d.cts +2 -2
  169. package/dist/verification.d.ts +2 -2
  170. package/docs/component-review-20261019.md +55 -0
  171. package/docs/components.en.md +4 -0
  172. package/docs/components.md +4 -0
  173. package/docs/guides/runtime-performance.md +38 -0
  174. package/docs/guides/split-pane.en.md +4 -0
  175. package/docs/guides/split-pane.md +4 -0
  176. package/docs/guides/table-density.md +26 -0
  177. package/docs/guides/transfer.md +11 -0
  178. package/docs/runtime-review-20261019.md +41 -0
  179. package/package.json +4 -2
@@ -273,56 +273,61 @@
273
273
  .text-sm[data-v-c415f23c]{font-size:0.875rem;line-height:1.25rem;}
274
274
  .text-gray-600[data-v-c415f23c]{--un-text-opacity:1;color:rgb(75 85 99 / var(--un-text-opacity));}
275
275
 
276
- .file-container[data-v-86f8c1ab] {
276
+ /*
277
+ * @Author: ChenYu ycyplus@gmail.com
278
+ * @Date: 2026-10-19
279
+ * @Description: 原生 PDF 阅读器容器和工具留白
280
+ * Copyright (c) 2026 by CHENY, All Rights Reserved 😎.
281
+ */
282
+ .pdf-container[data-v-db027bb4] {
277
283
  display: flex;
278
284
  flex-direction: column;
279
285
  height: 100%;
286
+ min-height: 320px;
287
+ min-width: 0;
280
288
  }
281
- .file-container .file-toolbar[data-v-86f8c1ab] {
289
+ .file-toolbar[data-v-db027bb4] {
290
+ display: flex;
291
+ align-items: center;
292
+ justify-content: space-between;
293
+ gap: 12px;
294
+ flex-wrap: wrap;
282
295
  padding: 12px 16px;
283
296
  border-bottom: 1px solid var(--c-border, #e0e0e0);
284
- background-color: var(--c-bg-card, #f9f9f9);
285
- flex-shrink: 0;
286
- z-index: 8;
287
- position: relative;
288
297
  }
289
- .file-container .file-viewer[data-v-86f8c1ab] {
298
+ .file-toolbar span[data-v-db027bb4] {
299
+ font-size: 11px;
300
+ color: var(--c-text-2, #666);
301
+ }
302
+ .file-viewer[data-v-db027bb4] {
290
303
  flex: 1;
291
- min-height: 300px;
304
+ min-height: 0;
305
+ min-width: 0;
306
+ }
307
+ .pdf-frame[data-v-db027bb4] {
308
+ width: 100%;
309
+ height: 100%;
310
+ border: 0;
311
+ display: block;
292
312
  }
293
313
 
294
314
  /* layer: shortcuts */
295
- .file-container[data-v-86f8c1ab]::file-selector-button{width:100%;}
315
+ .file-container[data-v-db027bb4]::file-selector-button{width:100%;}
296
316
  @media (min-width: 640px){
297
- .file-container[data-v-86f8c1ab]::file-selector-button{max-width:640px;}
317
+ .file-container[data-v-db027bb4]::file-selector-button{max-width:640px;}
298
318
  }
299
319
  @media (min-width: 768px){
300
- .file-container[data-v-86f8c1ab]::file-selector-button{max-width:768px;}
320
+ .file-container[data-v-db027bb4]::file-selector-button{max-width:768px;}
301
321
  }
302
322
  @media (min-width: 1024px){
303
- .file-container[data-v-86f8c1ab]::file-selector-button{max-width:1024px;}
323
+ .file-container[data-v-db027bb4]::file-selector-button{max-width:1024px;}
304
324
  }
305
325
  @media (min-width: 1280px){
306
- .file-container[data-v-86f8c1ab]::file-selector-button{max-width:1280px;}
326
+ .file-container[data-v-db027bb4]::file-selector-button{max-width:1280px;}
307
327
  }
308
328
  @media (min-width: 1536px){
309
- .file-container[data-v-86f8c1ab]::file-selector-button{max-width:1536px;}
329
+ .file-container[data-v-db027bb4]::file-selector-button{max-width:1536px;}
310
330
  }
311
- /* layer: default */
312
- .hidden[data-v-86f8c1ab]{display:none;}
313
- .h-full[data-v-86f8c1ab]{height:100%;}
314
- .h6[data-v-86f8c1ab]{height:1.5rem;}
315
- .min-w-12[data-v-86f8c1ab]{min-width:3rem;}
316
- .w-full[data-v-86f8c1ab]{width:100%;}
317
- .flex[data-v-86f8c1ab]{display:flex;}
318
- .items-center[data-v-86f8c1ab]{align-items:center;}
319
- .justify-between[data-v-86f8c1ab]{justify-content:space-between;}
320
- .gap-2[data-v-86f8c1ab]{gap:0.5rem;}
321
- .border-0[data-v-86f8c1ab]{border-width:0px;}
322
- .p\[style-name\=\'Title\'\][data-v-86f8c1ab]{padding:style-name='Title';}
323
- .text-center[data-v-86f8c1ab]{text-align:center;}
324
- .text-sm[data-v-86f8c1ab]{font-size:0.875rem;line-height:1.25rem;}
325
- .text-gray-600[data-v-86f8c1ab]{--un-text-opacity:1;color:rgb(75 85 99 / var(--un-text-opacity));}
326
331
 
327
332
  .file-container[data-v-dae08a5f] {
328
333
  display: flex;
@@ -477,10 +482,10 @@
477
482
  .text-gray-600[data-v-dae08a5f]{--un-text-opacity:1;color:rgb(75 85 99 / var(--un-text-opacity));}
478
483
  .font-semibold[data-v-dae08a5f]{font-weight:600;}
479
484
 
480
- .c-file-preview-wrapper[data-v-bd24aa22] {
485
+ .c-file-preview-wrapper[data-v-15033e6f] {
481
486
  width: 100%;
482
487
  }
483
- .c-file-preview-wrapper .file-info-card .file-info[data-v-bd24aa22] {
488
+ .c-file-preview-wrapper .file-info-card .file-info[data-v-15033e6f] {
484
489
  display: flex;
485
490
  align-items: center;
486
491
  gap: 16px;
@@ -491,12 +496,12 @@
491
496
  transition: var(--c-transition, 0.2s ease);
492
497
  cursor: pointer;
493
498
  }
494
- .c-file-preview-wrapper .file-info-card .file-info[data-v-bd24aa22]:hover {
499
+ .c-file-preview-wrapper .file-info-card .file-info[data-v-15033e6f]:hover {
495
500
  border-color: var(--c-primary, #40a9ff);
496
501
  box-shadow: 0 4px 12px rgba(64, 169, 255, 0.15);
497
502
  transform: translateY(-1px);
498
503
  }
499
- .c-file-preview-wrapper .file-info-card .file-info .file-icon[data-v-bd24aa22] {
504
+ .c-file-preview-wrapper .file-info-card .file-info .file-icon[data-v-15033e6f] {
500
505
  flex-shrink: 0;
501
506
  width: 56px;
502
507
  height: 56px;
@@ -507,11 +512,11 @@
507
512
  border-radius: 12px;
508
513
  border: 1px solid #dee2e6;
509
514
  }
510
- .c-file-preview-wrapper .file-info-card .file-info .file-details[data-v-bd24aa22] {
515
+ .c-file-preview-wrapper .file-info-card .file-info .file-details[data-v-15033e6f] {
511
516
  flex: 1;
512
517
  min-width: 0;
513
518
  }
514
- .c-file-preview-wrapper .file-info-card .file-info .file-details .file-name[data-v-bd24aa22] {
519
+ .c-file-preview-wrapper .file-info-card .file-info .file-details .file-name[data-v-15033e6f] {
515
520
  display: flex;
516
521
  align-items: center;
517
522
  gap: 12px;
@@ -520,22 +525,22 @@
520
525
  font-size: 16px;
521
526
  color: var(--c-text-1, #1f2937);
522
527
  }
523
- .c-file-preview-wrapper .file-info-card .file-info .file-details .file-meta[data-v-bd24aa22] {
528
+ .c-file-preview-wrapper .file-info-card .file-info .file-details .file-meta[data-v-15033e6f] {
524
529
  display: flex;
525
530
  gap: 16px;
526
531
  font-size: 13px;
527
532
  color: var(--c-text-2, #6b7280);
528
533
  }
529
- .c-file-preview-wrapper .file-info-card .file-info .file-details .file-meta .file-size[data-v-bd24aa22] {
534
+ .c-file-preview-wrapper .file-info-card .file-info .file-details .file-meta .file-size[data-v-15033e6f] {
530
535
  font-weight: 500;
531
536
  color: var(--c-text-1, #374151);
532
537
  }
533
- .c-file-preview-wrapper .file-info-card .file-info .file-actions[data-v-bd24aa22] {
538
+ .c-file-preview-wrapper .file-info-card .file-info .file-actions[data-v-15033e6f] {
534
539
  flex-shrink: 0;
535
540
  display: flex;
536
541
  gap: 8px;
537
542
  }
538
- .modal-container[data-v-bd24aa22] {
543
+ .modal-container[data-v-15033e6f] {
539
544
  background: var(--c-bg-card, white);
540
545
  border-radius: 8px;
541
546
  box-shadow: 0 20px 40px rgba(0, 0, 0, 0.15);
@@ -545,7 +550,7 @@
545
550
  height: 100%;
546
551
  overflow: visible;
547
552
  }
548
- .modal-container .modal-header[data-v-bd24aa22] {
553
+ .modal-container .modal-header[data-v-15033e6f] {
549
554
  display: flex;
550
555
  justify-content: space-between;
551
556
  align-items: center;
@@ -556,7 +561,7 @@
556
561
  z-index: 10;
557
562
  position: relative;
558
563
  }
559
- .modal-container .modal-header .modal-title[data-v-bd24aa22] {
564
+ .modal-container .modal-header .modal-title[data-v-15033e6f] {
560
565
  display: flex;
561
566
  align-items: center;
562
567
  gap: 8px;
@@ -564,25 +569,25 @@
564
569
  font-size: 16px;
565
570
  color: var(--c-text-1, #333);
566
571
  }
567
- .modal-container .modal-header .modal-title span[data-v-bd24aa22] {
572
+ .modal-container .modal-header .modal-title span[data-v-15033e6f] {
568
573
  max-width: 400px;
569
574
  overflow: hidden;
570
575
  text-overflow: ellipsis;
571
576
  white-space: nowrap;
572
577
  }
573
- .modal-container .modal-header .modal-actions[data-v-bd24aa22] {
578
+ .modal-container .modal-header .modal-actions[data-v-15033e6f] {
574
579
  display: flex;
575
580
  gap: 8px;
576
581
  align-items: center;
577
582
  }
578
- .modal-container .modal-content[data-v-bd24aa22] {
583
+ .modal-container .modal-content[data-v-15033e6f] {
579
584
  flex: 1;
580
585
  display: flex;
581
586
  flex-direction: column;
582
587
  overflow: visible;
583
588
  min-height: 0;
584
589
  }
585
- .modal-container .preview-header[data-v-bd24aa22] {
590
+ .modal-container .preview-header[data-v-15033e6f] {
586
591
  padding: 16px;
587
592
  border-bottom: 1px solid var(--c-border, #e0e0e0);
588
593
  background-color: var(--c-bg-card, #f9f9f9);
@@ -590,27 +595,61 @@
590
595
  z-index: 9;
591
596
  position: relative;
592
597
  }
593
- .modal-container .preview-content[data-v-bd24aa22] {
598
+ .modal-container .preview-content[data-v-15033e6f] {
594
599
  flex: 1;
595
600
  overflow: auto;
596
601
  min-height: 0;
597
602
  position: relative;
598
603
  }
599
- .modal-container .preview-content .status-container[data-v-bd24aa22] {
604
+ .modal-container .preview-content .status-container[data-v-15033e6f] {
600
605
  height: 300px;
601
606
  display: flex;
602
607
  align-items: center;
603
608
  justify-content: center;
604
609
  }
610
+ .c-file-preview-inline[data-v-15033e6f] {
611
+ container-type: inline-size;
612
+ height: 580px;
613
+ min-width: 0;
614
+ overflow: hidden;
615
+ }
616
+ .c-file-preview-inline .status-container[data-v-15033e6f] {
617
+ display: flex;
618
+ align-items: center;
619
+ justify-content: center;
620
+ height: 100%;
621
+ padding: 24px;
622
+ }
623
+ .c-file-preview-inline[data-v-15033e6f] .file-container {
624
+ min-width: 0;
625
+ }
626
+ .c-file-preview-inline[data-v-15033e6f] .word-main,
627
+ .c-file-preview-inline[data-v-15033e6f] .word-content {
628
+ min-width: 0;
629
+ }
630
+ @container (max-width:600px) {
631
+ .c-file-preview-inline[data-v-15033e6f] .word-outline {
632
+ display: none;
633
+ }
634
+ .c-file-preview-inline[data-v-15033e6f] .file-toolbar > div {
635
+ flex-wrap: wrap;
636
+ gap: 8px;
637
+ }
638
+ .c-file-preview-inline[data-v-15033e6f] .excel-info {
639
+ overflow: auto;
640
+ }
641
+ }
605
642
 
606
643
  /* layer: default */
607
- .hidden[data-v-bd24aa22]{display:none;}
608
- .h6[data-v-bd24aa22]{height:1.5rem;}
609
- .flex[data-v-bd24aa22]{display:flex;}
610
- .items-center[data-v-bd24aa22]{align-items:center;}
611
- .justify-between[data-v-bd24aa22]{justify-content:space-between;}
612
- .gap-2[data-v-bd24aa22]{gap:0.5rem;}
613
- .gap-3[data-v-bd24aa22]{gap:0.75rem;}
614
- .p\[style-name\=\'Title\'\][data-v-bd24aa22]{padding:style-name='Title';}
615
- .text-sm[data-v-bd24aa22]{font-size:0.875rem;line-height:1.25rem;}
616
- .text-gray-500[data-v-bd24aa22]{--un-text-opacity:1;color:rgb(107 114 128 / var(--un-text-opacity));}
644
+ .\!inline[data-v-15033e6f]{display:inline !important;}
645
+ .inline[data-v-15033e6f]{display:inline;}
646
+ .hidden[data-v-15033e6f]{display:none;}
647
+ .h6[data-v-15033e6f]{height:1.5rem;}
648
+ .flex[data-v-15033e6f]{display:flex;}
649
+ .items-center[data-v-15033e6f]{align-items:center;}
650
+ .justify-between[data-v-15033e6f]{justify-content:space-between;}
651
+ .gap-2[data-v-15033e6f]{gap:0.5rem;}
652
+ .gap-3[data-v-15033e6f]{gap:0.75rem;}
653
+ .p\[style-name\=\'Title\'\][data-v-15033e6f]{padding:style-name='Title';}
654
+ .text-sm[data-v-15033e6f]{font-size:0.875rem;line-height:1.25rem;}
655
+ .text-gray-500[data-v-15033e6f]{--un-text-opacity:1;color:rgb(107 114 128 / var(--un-text-opacity));}
@@ -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`},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-86f8c1ab`]]);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-dae08a5f`]]);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-c415f23c`]]);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-bd24aa22`]]);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
+ 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:`file-viewer`},O=[`src`],k=(0,i.defineComponent)({name:`FilePreviewPdfViewer`,__name:`index`,props:{pdfUrl:{},totalPages:{}},setup(e){return(t,n)=>((0,i.openBlock)(),(0,i.createElementBlock)(`div`,T,[(0,i.createElementVNode)(`div`,E,[n[1]||=(0,i.createElementVNode)(`span`,null,`PDF 阅读器 · 翻页、缩放与打印由浏览器提供`,-1),e.pdfUrl?((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.NButton),{key:0,tag:`a`,href:e.pdfUrl,target:`_blank`,rel:`noopener noreferrer`,size:`small`},{default:(0,i.withCtx)(()=>[...n[0]||=[(0,i.createTextVNode)(`在新标签页打开`,-1)]]),_:1},8,[`href`])):(0,i.createCommentVNode)(`v-if`,!0)]),(0,i.createElementVNode)(`div`,D,[e.pdfUrl?((0,i.openBlock)(),(0,i.createElementBlock)(`iframe`,{key:0,src:e.pdfUrl,title:`PDF预览`,class:`pdf-frame`},null,8,O)):(0,i.createCommentVNode)(`v-if`,!0)])]))}});var A=n.t(k,[[`__scopeId`,`data-v-db027bb4`]]);const j={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`},ee={key:0,class:`word-outline`},te={class:`outline-content`},ne=[`onClick`],re={class:`word-content`},ie=[`innerHTML`],ae=(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`,j,[(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`,ee,[l[5]||=(0,i.createElementVNode)(`div`,{class:`outline-header`},[(0,i.createElementVNode)(`h3`,{class:`text-sm font-semibold`},`文档目录`)],-1),(0,i.createElementVNode)(`div`,te,[((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,ne))),128))])])):(0,i.createCommentVNode)(`v-if`,!0),(0,i.createCommentVNode)(` 主要内容区域 `),(0,i.createElementVNode)(`div`,re,[(0,i.createElementVNode)(`div`,{class:`word-document`,style:(0,i.normalizeStyle)({transform:`scale(${r.value/100})`,transformOrigin:`top center`}),innerHTML:e.content},null,12,ie)])])])])}}});var L=n.t(ae,[[`__scopeId`,`data-v-dae08a5f`]]);const R={class:`file-container excel-container`},z={class:`file-toolbar`},B={class:`flex justify-between items-center`},V={class:`flex gap-2 items-center`},H={key:1,class:`text-sm text-gray-600`},U={class:`flex gap-2 items-center`},W={class:`excel-viewer`},G={key:0,class:`excel-info`},K={class:`excel-table-container`},q={key:0,class:`excel-table`},J={class:`header-content`},oe={class:`column-letter`},se={class:`column-title`},ce={class:`row-number`},le=[`rowspan`,`colspan`,`title`],ue={key:1,class:`excel-empty`},de={key:0,class:`excel-pagination`},fe=(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`,R,[(0,i.createCommentVNode)(` 工具栏 `),(0,i.createElementVNode)(`div`,z,[(0,i.createElementVNode)(`div`,B,[(0,i.createElementVNode)(`div`,V,[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`,H,` 工作表: `+(0,i.toDisplayString)(r.value),1))]),(0,i.createElementVNode)(`div`,U,[(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`,W,[(0,i.createCommentVNode)(` 信息面板 `),l.value.length>0?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,G,[(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`,K,[(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`,q,[(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`,J,[(0,i.createElementVNode)(`span`,oe,(0,i.toDisplayString)((0,i.unref)(v)(t)),1),(0,i.createElementVNode)(`span`,se,(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`,ce,(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,le)),[[i.vShow,!e[t.key]?.hidden]])),128))]))),128))])])):((0,i.openBlock)(),(0,i.createElementBlock)(`div`,ue,[(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`,de,[(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 Y=n.t(fe,[[`__scopeId`,`data-v-c415f23c`]]);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=!1,x=(e,t)=>e===v&&!b&&!t.signal.aborted,T=(0,i.computed)(()=>a.value&&a.value!==`未知文件`?a.value:n.value?.name?n.value.name:r.value?p(r.value):`未知文件`),E=(0,i.computed)(()=>h(T.value)),D=(0,i.computed)(()=>g(E.value)),O=(0,i.computed)(()=>!!(n.value||r.value)),k=()=>{let e=u.value;u.value=``,e.startsWith(`blob:`)&&URL.revokeObjectURL(e.split(`#`)[0])},A=()=>{s.value=``,o.value=!1,c.value=0,k(),d.value=0,f.value=``,m.value=[],_.value=[]},j=e=>{s.value=e,o.value=!1},M=()=>{v+=1,y?.abort(),y=null,A()},N=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],T.value,{type:r.type})}throw Error(`未提供文件或URL`)},P=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(`不支持的文件格式`)}},F=async()=>{if(b)return!1;let e=++v;y?.abort();let t=new AbortController;if(y=t,A(),!O.value)return y=null,!1;o.value=!0;try{let n=E.value,r=await N(t.signal);return e===v?(c.value=r.size,await P(r,n,e),x(e,t)):!1}catch(n){if(!x(e,t))return!1;let r=n instanceof Error?n.message:`未知错误`;return j(`${E.value.toUpperCase()}文件加载失败: ${r}`),!1}finally{e===v&&(o.value=!1,y=null)}};return(0,i.watch)([n,r],([e,t])=>{!e&&!t&&M()},{flush:`sync`}),(0,i.watch)(()=>n.value?.size,e=>{c.value=e||0},{immediate:!0}),(0,i.onUnmounted)(()=>{b=!0,M()}),{loading:o,error:s,fileSize:c,showModal:l,hasSource:O,pdfUrl:u,pdfTotalPages:d,wordContent:f,wordHeadings:m,excelSheets:_,displayFileName:T,fileType:E,fileConfig:D,loadFile:F,openPreview:async()=>{if(b)return;let e=n.value||r.value;l.value=!0,await F()&&e&&e===(n.value||r.value)&&!b&&t(`preview`,e)},downloadFile:()=>{let e=n.value||r.value;if(!(b||!e)){if(n.value){let e=URL.createObjectURL(n.value);Object.assign(document.createElement(`a`),{href:e,download:T.value}).click(),URL.revokeObjectURL(e)}else if(r.value){let e=X(r.value,window.location.href);if(!e){j(`不支持此文件地址`);return}window.open(e,`_blank`,`noopener,noreferrer`)}t(`download`,e)}},clearPreview:M}}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 pe={class:`c-file-preview-wrapper`},me={key:0,class:`file-info-card`},he={class:`file-info`},ge={class:`file-icon`},_e={class:`file-details`},ve={class:`file-name`},ye={class:`file-meta`},be={class:`file-size`},xe={class:`file-actions`},Se={key:1,class:`c-file-preview-inline`},Ce={key:1,class:`status-container`,role:`status`},we={class:`modal-header`},Te={class:`modal-title`},Ee={class:`modal-actions`},De={class:`modal-content`},$={class:`preview-header`},Oe={class:`flex justify-between items-center`},ke={class:`flex items-center gap-3`},Ae={class:`text-sm text-gray-500`},je={class:`flex gap-2`},Me={class:`preview-content`},Ne={key:1,class:`status-container`},Pe=(0,i.defineComponent)({name:`C_FilePreview`,__name:`index`,props:{file:{},url:{},fileName:{default:`未知文件`},autoPreview:{type:Boolean,default:!1},inline:{type:Boolean,default:!1}},emits:[`preview`,`download`],setup(e,{emit:n}){let{file:r,url:o,fileName:s,autoPreview:c,inline:l}=(0,i.toRefs)(e),{loading:u,error:d,fileSize:f,showModal:p,hasSource:h,pdfUrl:g,pdfTotalPages:_,wordContent:v,wordHeadings:y,excelSheets:b,displayFileName:x,fileType:S,fileConfig:C,loadFile:w,openPreview:T,downloadFile:E}=Z({file:r,url:o,fileName:s},n),D=(0,i.ref)(),{isFullscreen:O,toggleFullscreen:k,exitFullscreen:j}=Q(D);return(0,i.watch)(p,e=>{e||j()}),(0,i.watch)([r,o,c,l,s],(e,t)=>{if(!(typeof window>`u`||!h.value)){if(l.value){w();return}if(p.value){[0,1,4].some(n=>e[n]!==t?.[n])&&w();return}c.value&&T()}},{immediate:!0}),(e,n)=>{let r=t.t;return(0,i.openBlock)(),(0,i.createElementBlock)(`div`,pe,[(0,i.createCommentVNode)(` 文件信息卡片模式 `),!(0,i.unref)(c)&&!(0,i.unref)(l)?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,me,[(0,i.createElementVNode)(`div`,he,[(0,i.createElementVNode)(`div`,ge,[(0,i.createVNode)(r,{name:(0,i.unref)(C).icon,size:40,color:(0,i.unref)(C).color},null,8,[`name`,`color`])]),(0,i.createElementVNode)(`div`,_e,[(0,i.createElementVNode)(`div`,ve,[(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)(x)),1)]),_:1}),(0,i.createVNode)((0,i.unref)(a.NTag),{type:(0,i.unref)(C).tagType,size:`small`},{default:(0,i.withCtx)(()=>[(0,i.createTextVNode)((0,i.toDisplayString)((0,i.unref)(S).toUpperCase()),1)]),_:1},8,[`type`])]),(0,i.createElementVNode)(`div`,ye,[(0,i.createElementVNode)(`span`,be,(0,i.toDisplayString)((0,i.unref)(m)((0,i.unref)(f))),1)])]),(0,i.createElementVNode)(`div`,xe,[(0,i.createVNode)((0,i.unref)(a.NButton),{type:`primary`,onClick:(0,i.unref)(T)},{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)(E)},{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)(`v-if`,!0),(0,i.unref)(l)?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,Se,[(0,i.unref)(h)?(0,i.unref)(u)||(0,i.unref)(d)?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,Ce,[(0,i.unref)(u)?((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.NSpin),{key:0,size:`large`},{description:(0,i.withCtx)(()=>[...n[4]||=[(0,i.createTextVNode)(`正在加载文档…`,-1)]]),_:1})):((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.NResult),{key:1,status:`error`,title:`预览失败`,description:(0,i.unref)(d)},{footer:(0,i.withCtx)(()=>[(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,onClick:(0,i.unref)(w)},{default:(0,i.withCtx)(()=>[...n[5]||=[(0,i.createTextVNode)(`重试`,-1)]]),_:1},8,[`onClick`])]),_:1},8,[`description`]))])):(0,i.unref)(S)===`pdf`?((0,i.openBlock)(),(0,i.createBlock)(A,{key:2,"pdf-url":(0,i.unref)(g),"total-pages":(0,i.unref)(_)},null,8,[`pdf-url`,`total-pages`])):(0,i.unref)(S)===`word`?((0,i.openBlock)(),(0,i.createBlock)(L,{key:3,content:(0,i.unref)(v),headings:(0,i.unref)(y)},null,8,[`content`,`headings`])):(0,i.unref)(S)===`excel`?((0,i.openBlock)(),(0,i.createBlock)(Y,{key:4,sheets:(0,i.unref)(b),onReload:(0,i.unref)(w)},null,8,[`sheets`,`onReload`])):((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.NResult),{key:5,status:`warning`,title:`不支持的文件格式`,description:`支持 PDF、DOCX、XLSX 和 XLS 文件`})):((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.NResult),{key:0,status:`info`,title:`暂无预览文件`,description:`选择文件后即可预览`}))])):(0,i.createCommentVNode)(`v-if`,!0),(0,i.createCommentVNode)(` 模态框预览 `),(0,i.unref)(l)?(0,i.createCommentVNode)(`v-if`,!0):((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.NModal),{key:2,show:(0,i.unref)(p),"onUpdate:show":n[1]||=e=>(0,i.isRef)(p)?p.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:D,class:`modal-container`},[(0,i.createCommentVNode)(` 自定义头部 `),(0,i.createElementVNode)(`div`,we,[(0,i.createElementVNode)(`div`,Te,[(0,i.createVNode)(r,{name:(0,i.unref)(C).icon,size:20,color:(0,i.unref)(C).color},null,8,[`name`,`color`]),(0,i.createElementVNode)(`span`,null,(0,i.toDisplayString)((0,i.unref)(x)),1)]),(0,i.createElementVNode)(`div`,Ee,[(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,type:`tertiary`,onClick:(0,i.unref)(E)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(r,{name:`ic:outline-download`})]),default:(0,i.withCtx)(()=>[n[6]||=(0,i.createTextVNode)(` 下载 `,-1)]),_:1},8,[`onClick`]),(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,type:`tertiary`,onClick:n[0]||=e=>p.value=!1},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(r,{name:`ic:outline-close`})]),_:1})])]),(0,i.createCommentVNode)(` 预览内容 `),(0,i.createElementVNode)(`div`,De,[(0,i.createCommentVNode)(` 文件信息头部 `),(0,i.createElementVNode)(`div`,$,[(0,i.createElementVNode)(`div`,Oe,[(0,i.createElementVNode)(`div`,ke,[(0,i.createVNode)((0,i.unref)(a.NTag),{type:(0,i.unref)(C).tagType,size:`small`},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(r,{name:(0,i.unref)(C).icon},null,8,[`name`])]),default:(0,i.withCtx)(()=>[(0,i.createTextVNode)(` `+(0,i.toDisplayString)((0,i.unref)(S).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)(x)),1)]),_:1}),(0,i.createElementVNode)(`span`,Ae,(0,i.toDisplayString)((0,i.unref)(m)((0,i.unref)(f))),1)]),(0,i.createElementVNode)(`div`,je,[(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,type:`tertiary`,disabled:(0,i.unref)(u),onClick:(0,i.unref)(w)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(r,{name:`ic:outline-refresh`})]),default:(0,i.withCtx)(()=>[n[7]||=(0,i.createTextVNode)(` 刷新 `,-1)]),_:1},8,[`disabled`,`onClick`]),(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,type:`primary`,onClick:(0,i.unref)(k)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(r,{name:(0,i.unref)(O)?`ic:outline-fullscreen-exit`:`ic:outline-fullscreen`},null,8,[`name`])]),default:(0,i.withCtx)(()=>[(0,i.createTextVNode)(` `+(0,i.toDisplayString)((0,i.unref)(O)?`退出全屏`:`全屏`),1)]),_:1},8,[`onClick`])])])]),(0,i.createCommentVNode)(` 预览内容区域 `),(0,i.createElementVNode)(`div`,Me,[(0,i.createCommentVNode)(` 加载和错误状态 `),(0,i.unref)(h)?(0,i.unref)(u)||(0,i.unref)(d)?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,Ne,[(0,i.unref)(u)?((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)(S).toUpperCase())+`文件... `,1)]),_:1})):((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.NResult),{key:1,status:`error`,title:`预览失败`,description:(0,i.unref)(d)},{footer:(0,i.withCtx)(()=>[(0,i.createVNode)((0,i.unref)(a.NButton),{onClick:(0,i.unref)(w)},{default:(0,i.withCtx)(()=>[...n[8]||=[(0,i.createTextVNode)(`重试`,-1)]]),_:1},8,[`onClick`])]),_:1},8,[`description`]))])):((0,i.openBlock)(),(0,i.createElementBlock)(i.Fragment,{key:2},[(0,i.createCommentVNode)(` 文件预览 — 委托给子组件 `),(0,i.unref)(S)===`pdf`?((0,i.openBlock)(),(0,i.createBlock)(A,{key:0,"pdf-url":(0,i.unref)(g),"total-pages":(0,i.unref)(_)},null,8,[`pdf-url`,`total-pages`])):(0,i.unref)(S)===`word`?((0,i.openBlock)(),(0,i.createBlock)(L,{key:1,content:(0,i.unref)(v),headings:(0,i.unref)(y)},null,8,[`content`,`headings`])):(0,i.unref)(S)===`excel`?((0,i.openBlock)(),(0,i.createBlock)(Y,{key:2,sheets:(0,i.unref)(b),onReload:(0,i.unref)(w)},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)(S).toUpperCase()} 格式文件`},null,8,[`description`])],2112))],64)):((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.NResult),{key:0,status:`info`,title:`暂无预览文件`,description:`选择文件后即可预览`}))])])],512)]),_:1},8,[`show`]))])}}});var Fe=n.t(Pe,[[`__scopeId`,`data-v-15033e6f`]]);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 Fe}});
@@ -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}},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-86f8c1ab`]]);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-dae08a5f`]]);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-c415f23c`]]);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-bd24aa22`]]);export{Q as n,Z as r,ht 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,NModal as M,NPagination as N,NResult as P,NSpin as F,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`],q=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`未知文件`},J=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]},Y=e=>{if(!e||e===`未知文件`)return`unknown`;let t=e.toLowerCase().split(`.`).pop();return t&&H[t]||`unknown`},ee=e=>U[e]||U.unknown,te=(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}},ne=e=>{let t=``;for(;e>=0;)t=String.fromCharCode(65+e%26)+t,e=Math.floor(e/26)-1;return t},re=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:`file-viewer`},fe=[`src`];var X=t(d({name:`FilePreviewPdfViewer`,__name:`index`,props:{pdfUrl:{},totalPages:{}},setup(e){return(t,n)=>(_(),s(`div`,le,[c(`div`,ue,[n[1]||=c(`span`,null,`PDF 阅读器 · 翻页、缩放与打印由浏览器提供`,-1),e.pdfUrl?(_(),a(C(O),{key:0,tag:`a`,href:e.pdfUrl,target:`_blank`,rel:`noopener noreferrer`,size:`small`},{default:E(()=>[...n[0]||=[l(`在新标签页打开`,-1)]]),_:1},8,[`href`])):o(`v-if`,!0)]),c(`div`,de,[e.pdfUrl?(_(),s(`iframe`,{key:0,src:e.pdfUrl,title:`PDF预览`,class:`pdf-frame`},null,8,fe)):o(`v-if`,!0)])]))}}),[[`__scopeId`,`data-v-db027bb4`]]);const pe={class:`file-container word-container`},me={class:`file-toolbar`},he={class:`flex gap-2 items-center`},ge={class:`text-sm text-gray-600 min-w-12 text-center`},_e={class:`word-layout`},ve={class:`word-main`},ye={key:0,class:`word-outline`},be={class:`outline-content`},xe=[`onClick`],Se={class:`word-content`},Ce=[`innerHTML`];var Z=t(d({__name:`index`,props:{content:{},headings:{}},setup(t){let n=v(!0),i=v(100),a=te(i,W.word),d=e=>{document.getElementById(e)?.scrollIntoView({behavior:`smooth`,block:`start`})};return(f,h)=>{let g=e;return _(),s(`div`,pe,[c(`div`,me,[c(`div`,he,[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`,ge,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`,_e,[c(`div`,ve,[o(` 侧边栏目录 `),n.value?(_(),s(`div`,ye,[h[5]||=c(`div`,{class:`outline-header`},[c(`h3`,{class:`text-sm font-semibold`},`文档目录`)],-1),c(`div`,be,[(_(!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,xe))),128))])])):o(`v-if`,!0),o(` 主要内容区域 `),c(`div`,Se,[c(`div`,{class:`word-document`,style:m({transform:`scale(${i.value/100})`,transformOrigin:`top center`}),innerHTML:t.content},null,12,Ce)])])])])}}}),[[`__scopeId`,`data-v-dae08a5f`]]);const we={class:`file-container excel-container`},Te={class:`file-toolbar`},Ee={class:`flex justify-between items-center`},De={class:`flex gap-2 items-center`},Oe={key:1,class:`text-sm text-gray-600`},ke={class:`flex gap-2 items-center`},Ae={class:`excel-viewer`},je={key:0,class:`excel-info`},Me={class:`excel-table-container`},Ne={key:0,class:`excel-table`},Pe={class:`header-content`},Fe={class:`column-letter`},Ie={class:`column-title`},Le={class:`row-number`},Re=[`rowspan`,`colspan`,`title`],ze={key:1,class:`excel-empty`},Be={key:0,class:`excel-pagination`};var Q=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},P=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=>{P(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`,we,[o(` 工具栏 `),c(`div`,Te,[c(`div`,Ee,[c(`div`,De,[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`,Oe,` 工作表: `+x(d.value),1))]),c(`div`,ke,[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`,Ae,[o(` 信息面板 `),b.value.length>0?(_(),s(`div`,je,[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`,Me,[c(`div`,{class:p([`excel-table-wrapper`,{"simple-mode":!f.value}])},[b.value.length>0?(_(),s(`table`,Ne,[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`,Pe,[c(`span`,Fe,x(C(ne)(t)),1),c(`span`,Ie,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`,Le,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(re)(e[t.key]?.value)),11,Re)),[[w,!e[t.key]?.hidden]])),128))]))),128))])])):(_(),s(`div`,ze,[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`,Be,[u(C(N),{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-c415f23c`]]);function $(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 Ve(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=!1,b=(e,t)=>e===h&&!y&&!t.signal.aborted,x=i(()=>a.value&&a.value!==`未知文件`?a.value:n.value?.name?n.value.name:r.value?q(r.value):`未知文件`),S=i(()=>Y(x.value)),C=i(()=>ee(S.value)),w=i(()=>!!(n.value||r.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=``,p.value=[],m.value=[]},O=e=>{s.value=e,o.value=!1},k=()=>{h+=1,_?.abort(),_=null,D()},A=async e=>{let t=n.value,i=r.value;if(t)return t;if(i){let t=$(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],x.value,{type:r.type})}throw Error(`未提供文件或URL`)},j=async(e,t,n)=>{switch(t){case`pdf`:{let t=await oe(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 se(e);if(n!==h)return;f.value=t.content,p.value=t.headings;break}case`excel`:{let t=await ce(e);if(n!==h)return;m.value=t.sheets;break}default:throw Error(`不支持的文件格式`)}},M=async()=>{if(y)return!1;let e=++h;_?.abort();let t=new AbortController;if(_=t,D(),!w.value)return _=null,!1;o.value=!0;try{let n=S.value,r=await A(t.signal);return e===h?(c.value=r.size,await j(r,n,e),b(e,t)):!1}catch(n){if(!b(e,t))return!1;let r=n instanceof Error?n.message:`未知错误`;return O(`${S.value.toUpperCase()}文件加载失败: ${r}`),!1}finally{e===h&&(o.value=!1,_=null)}};return T([n,r],([e,t])=>{!e&&!t&&k()},{flush:`sync`}),T(()=>n.value?.size,e=>{c.value=e||0},{immediate:!0}),g(()=>{y=!0,k()}),{loading:o,error:s,fileSize:c,showModal:l,hasSource:w,pdfUrl:u,pdfTotalPages:d,wordContent:f,wordHeadings:p,excelSheets:m,displayFileName:x,fileType:S,fileConfig:C,loadFile:M,openPreview:async()=>{if(y)return;let e=n.value||r.value;l.value=!0,await M()&&e&&e===(n.value||r.value)&&!y&&t(`preview`,e)},downloadFile:()=>{let e=n.value||r.value;if(!(y||!e)){if(n.value){let e=URL.createObjectURL(n.value);Object.assign(document.createElement(`a`),{href:e,download:x.value}).click(),URL.revokeObjectURL(e)}else if(r.value){let e=$(r.value,window.location.href);if(!e){O(`不支持此文件地址`);return}window.open(e,`_blank`,`noopener,noreferrer`)}t(`download`,e)}},clearPreview:k}}function He(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 Ue={class:`c-file-preview-wrapper`},We={key:0,class:`file-info-card`},Ge={class:`file-info`},Ke={class:`file-icon`},qe={class:`file-details`},Je={class:`file-name`},Ye={class:`file-meta`},Xe={class:`file-size`},Ze={class:`file-actions`},Qe={key:1,class:`c-file-preview-inline`},$e={key:1,class:`status-container`,role:`status`},et={class:`modal-header`},tt={class:`modal-title`},nt={class:`modal-actions`},rt={class:`modal-content`},it={class:`preview-header`},at={class:`flex justify-between items-center`},ot={class:`flex items-center gap-3`},st={class:`text-sm text-gray-500`},ct={class:`flex gap-2`},lt={class:`preview-content`},ut={key:1,class:`status-container`};var dt=t(d({name:`C_FilePreview`,__name:`index`,props:{file:{},url:{},fileName:{default:`未知文件`},autoPreview:{type:Boolean,default:!1},inline:{type:Boolean,default:!1}},emits:[`preview`,`download`],setup(t,{emit:n}){let{file:i,url:d,fileName:p,autoPreview:m,inline:h}=S(t),{loading:g,error:y,fileSize:b,showModal:w,hasSource:D,pdfUrl:k,pdfTotalPages:j,wordContent:N,wordHeadings:I,excelSheets:L,displayFileName:z,fileType:B,fileConfig:V,loadFile:H,openPreview:U,downloadFile:W}=Ve({file:i,url:d,fileName:p},n),G=v(),{isFullscreen:K,toggleFullscreen:q,exitFullscreen:Y}=He(G);return T(w,e=>{e||Y()}),T([i,d,m,h,p],(e,t)=>{if(!(typeof window>`u`||!D.value)){if(h.value){H();return}if(w.value){[0,1,4].some(n=>e[n]!==t?.[n])&&H();return}m.value&&U()}},{immediate:!0}),(t,n)=>{let i=e;return _(),s(`div`,Ue,[o(` 文件信息卡片模式 `),!C(m)&&!C(h)?(_(),s(`div`,We,[c(`div`,Ge,[c(`div`,Ke,[u(i,{name:C(V).icon,size:40,color:C(V).color},null,8,[`name`,`color`])]),c(`div`,qe,[c(`div`,Je,[u(C(A),{style:{"max-width":`250px`}},{default:E(()=>[l(x(C(z)),1)]),_:1}),u(C(R),{type:C(V).tagType,size:`small`},{default:E(()=>[l(x(C(B).toUpperCase()),1)]),_:1},8,[`type`])]),c(`div`,Ye,[c(`span`,Xe,x(C(J)(C(b))),1)])]),c(`div`,Ze,[u(C(O),{type:`primary`,onClick:C(U)},{icon:E(()=>[u(i,{name:`ic:outline-visibility`})]),default:E(()=>[n[2]||=l(` 预览 `,-1)]),_:1},8,[`onClick`]),u(C(O),{type:`tertiary`,onClick:C(W)},{icon:E(()=>[u(i,{name:`ic:outline-download`})]),default:E(()=>[n[3]||=l(` 下载 `,-1)]),_:1},8,[`onClick`])])])])):o(`v-if`,!0),C(h)?(_(),s(`div`,Qe,[C(D)?C(g)||C(y)?(_(),s(`div`,$e,[C(g)?(_(),a(C(F),{key:0,size:`large`},{description:E(()=>[...n[4]||=[l(`正在加载文档…`,-1)]]),_:1})):(_(),a(C(P),{key:1,status:`error`,title:`预览失败`,description:C(y)},{footer:E(()=>[u(C(O),{size:`small`,onClick:C(H)},{default:E(()=>[...n[5]||=[l(`重试`,-1)]]),_:1},8,[`onClick`])]),_:1},8,[`description`]))])):C(B)===`pdf`?(_(),a(X,{key:2,"pdf-url":C(k),"total-pages":C(j)},null,8,[`pdf-url`,`total-pages`])):C(B)===`word`?(_(),a(Z,{key:3,content:C(N),headings:C(I)},null,8,[`content`,`headings`])):C(B)===`excel`?(_(),a(Q,{key:4,sheets:C(L),onReload:C(H)},null,8,[`sheets`,`onReload`])):(_(),a(C(P),{key:5,status:`warning`,title:`不支持的文件格式`,description:`支持 PDF、DOCX、XLSX 和 XLS 文件`})):(_(),a(C(P),{key:0,status:`info`,title:`暂无预览文件`,description:`选择文件后即可预览`}))])):o(`v-if`,!0),o(` 模态框预览 `),C(h)?o(`v-if`,!0):(_(),a(C(M),{key:2,show:C(w),"onUpdate:show":n[1]||=e=>f(w)?w.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:G,class:`modal-container`},[o(` 自定义头部 `),c(`div`,et,[c(`div`,tt,[u(i,{name:C(V).icon,size:20,color:C(V).color},null,8,[`name`,`color`]),c(`span`,null,x(C(z)),1)]),c(`div`,nt,[u(C(O),{size:`small`,type:`tertiary`,onClick:C(W)},{icon:E(()=>[u(i,{name:`ic:outline-download`})]),default:E(()=>[n[6]||=l(` 下载 `,-1)]),_:1},8,[`onClick`]),u(C(O),{size:`small`,type:`tertiary`,onClick:n[0]||=e=>w.value=!1},{icon:E(()=>[u(i,{name:`ic:outline-close`})]),_:1})])]),o(` 预览内容 `),c(`div`,rt,[o(` 文件信息头部 `),c(`div`,it,[c(`div`,at,[c(`div`,ot,[u(C(R),{type:C(V).tagType,size:`small`},{icon:E(()=>[u(i,{name:C(V).icon},null,8,[`name`])]),default:E(()=>[l(` `+x(C(B).toUpperCase()),1)]),_:1},8,[`type`]),u(C(A),{style:{"max-width":`300px`}},{default:E(()=>[l(x(C(z)),1)]),_:1}),c(`span`,st,x(C(J)(C(b))),1)]),c(`div`,ct,[u(C(O),{size:`small`,type:`tertiary`,disabled:C(g),onClick:C(H)},{icon:E(()=>[u(i,{name:`ic:outline-refresh`})]),default:E(()=>[n[7]||=l(` 刷新 `,-1)]),_:1},8,[`disabled`,`onClick`]),u(C(O),{size:`small`,type:`primary`,onClick:C(q)},{icon:E(()=>[u(i,{name:C(K)?`ic:outline-fullscreen-exit`:`ic:outline-fullscreen`},null,8,[`name`])]),default:E(()=>[l(` `+x(C(K)?`退出全屏`:`全屏`),1)]),_:1},8,[`onClick`])])])]),o(` 预览内容区域 `),c(`div`,lt,[o(` 加载和错误状态 `),C(D)?C(g)||C(y)?(_(),s(`div`,ut,[C(g)?(_(),a(C(F),{key:0,size:`large`},{description:E(()=>[l(` 正在加载`+x(C(B).toUpperCase())+`文件... `,1)]),_:1})):(_(),a(C(P),{key:1,status:`error`,title:`预览失败`,description:C(y)},{footer:E(()=>[u(C(O),{onClick:C(H)},{default:E(()=>[...n[8]||=[l(`重试`,-1)]]),_:1},8,[`onClick`])]),_:1},8,[`description`]))])):(_(),s(r,{key:2},[o(` 文件预览 — 委托给子组件 `),C(B)===`pdf`?(_(),a(X,{key:0,"pdf-url":C(k),"total-pages":C(j)},null,8,[`pdf-url`,`total-pages`])):C(B)===`word`?(_(),a(Z,{key:1,content:C(N),headings:C(I)},null,8,[`content`,`headings`])):C(B)===`excel`?(_(),a(Q,{key:2,sheets:C(L),onReload:C(H)},null,8,[`sheets`,`onReload`])):(_(),s(r,{key:3},[o(` 不支持的文件类型 `),u(C(P),{status:`warning`,title:`不支持的文件格式`,description:`暂不支持预览 ${C(B).toUpperCase()} 格式文件`},null,8,[`description`])],2112))],64)):(_(),a(C(P),{key:0,status:`info`,title:`暂无预览文件`,description:`选择文件后即可预览`}))])])],512)]),_:1},8,[`show`]))])}}}),[[`__scopeId`,`data-v-15033e6f`]]);export{He as n,Ve as r,dt as t};
@@ -1,24 +1,23 @@
1
1
  :root{--c-primary: var(--primary-color, #2080f0);--c-primary-hover: var(--primary-color-hover, #4098fc);--c-primary-pressed: var(--primary-color-pressed, #1060c9);--c-success: var(--success-color, #18a058);--c-warning: var(--warning-color, #f0a020);--c-error: var(--error-color, #d03050);--c-info: var(--info-color, #2080f0);--c-bg-body: var(--body-color, #ffffff);--c-bg-card: var(--card-color, #ffffff);--c-bg-surface: var(--popover-color, #ffffff);--c-text-1: var(--text-color-1, #262626);--c-text-2: var(--text-color-2, #525252);--c-text-3: var(--text-color-3, #a3a3a3);--c-text-4: var(--text-color-4, #c0c0c0);--c-border: var(--border-color, #e5e7eb);--c-radius-sm: var(--border-radius-small, 4px);--c-radius: var(--border-radius, 6px);--c-transition-fast: 0.15s cubic-bezier(0.4, 0, 0.2, 1);--c-transition-base: 0.3s cubic-bezier(0.4, 0, 0.2, 1);--c-shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.08);--c-shadow-md: 0 4px 6px rgba(0, 0, 0, 0.1);--c-shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.1)}
2
2
 
3
3
 
4
- .c-full-calendar[data-v-01d32289] {
4
+ .c-full-calendar[data-v-3604329b] {
5
5
  width: 100%;
6
6
  }
7
- .event-color-swatch[data-v-01d32289] {
7
+ .event-color-swatch[data-v-3604329b] {
8
8
  cursor: pointer;
9
9
  }
10
- .event-color-swatch[data-v-01d32289]:focus-visible {
10
+ .event-color-swatch[data-v-3604329b]:focus-visible {
11
11
  outline: 2px solid #3f86ff;
12
12
  outline-offset: 2px;
13
13
  }
14
14
 
15
15
 
16
16
  /* layer: default */
17
- .grid[data-v-01d32289]{display:grid;}
18
- .ml-10\%[data-v-01d32289]{margin-left:10%;}
19
- .mt-20px[data-v-01d32289]{margin-top:20px;}
20
- .block[data-v-01d32289]{display:block;}
21
- .flex[data-v-01d32289]{display:flex;}
22
- .border[data-v-01d32289]{border-width:1px;}
23
- .outline[data-v-01d32289]{outline-style:solid;}
24
- .transition[data-v-01d32289]{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;}
17
+ .grid[data-v-3604329b]{display:grid;}
18
+ .ml-10\%[data-v-3604329b]{margin-left:10%;}
19
+ .mt-20px[data-v-3604329b]{margin-top:20px;}
20
+ .block[data-v-3604329b]{display:block;}
21
+ .flex[data-v-3604329b]{display:flex;}
22
+ .border[data-v-3604329b]{border-width:1px;}
23
+ .outline[data-v-3604329b]{outline-style:solid;}
@@ -1 +1 @@
1
- const e=require(`./chunk.cjs`),t=require(`./feedback.cjs`),n=require(`./export-helper.cjs`);let r=require(`vue`),i=require(`naive-ui`),a=require(`@fullcalendar/vue3`);a=e.t(a);let o=require(`@fullcalendar/daygrid`);o=e.t(o);let s=require(`@fullcalendar/interaction`);s=e.t(s);let c=require(`@fullcalendar/list`);c=e.t(c);let l=require(`@fullcalendar/core/locales/zh-cn`);l=e.t(l);const u=[`#3f86ff`,`#ff6b6b`,`#67c23a`,`#e6a23c`,`#9c27b0`,`#00bcd4`,`#ff5722`],d={id:``,title:``,date:Date.now(),startTime:`09:00`,endTime:`10:00`,color:`#3f86ff`},f={left:`prev,next today`,center:`title`,right:`dayGridMonth,dayGridWeek,dayGridDay,listWeek`},p={today:`今天`,month:`月`,week:`周`,day:`日`,list:`列表`},m=/^([01]\d|2[0-3]):([0-5]\d)$/;function h(e,t,n){if(e===null||!Number.isFinite(e))return null;let r=m.exec(t),i=m.exec(n);if(!r||!i)return null;let a=Number(r[1])*60+Number(r[2]),o=Number(i[1])*60+Number(i[2]);if(o<=a)return null;let s=new Date(e);if(Number.isNaN(s.getTime()))return null;let c=e=>new Date(s.getFullYear(),s.getMonth(),s.getDate(),Math.floor(e/60),e%60),l=c(a),u=c(o);return l.getHours()*60+l.getMinutes()!==a||u.getHours()*60+u.getMinutes()!==o?null:{start:l,end:u}}let g=0;const _=()=>globalThis.crypto?.randomUUID?.()??`calendar-${Date.now()}-${++g}`;function v(e,n){let i=t.t(),a=(0,r.ref)(null),m=(0,r.ref)([...e.events??[]]),g=(0,r.ref)(!1),v=(0,r.ref)(!1),y=(0,r.ref)(!1),b=(0,r.shallowRef)(null),x=(0,r.ref)({...d}),S=e=>{m.value=[...m.value,e],n(`update:events`,m.value)},C=e=>{let t=m.value.findIndex(t=>t.id===e.id);t!==-1&&(m.value=m.value.map((n,r)=>r===t?{...n,...e}:n),n(`update:events`,m.value))},w=e=>{m.value=m.value.filter(t=>t.id!==e),n(`update:events`,m.value)};function T(t){e.editable&&(t.jsEvent.preventDefault(),b.value=t.event,e.showEditDialog&&(g.value=!0))}function E(t){!e.editable||!e.showAddDialog||k(t.date)}function D(e){let t={id:e.event.id,start:e.event.start??void 0,end:e.event.end??void 0};C(t),n(`event-dropped`,t),i.success(`事件 "${e.event.title}" 时间已更新`)}function O(e){let t={id:e.event.id,start:e.event.start??void 0,end:e.event.end??void 0};C(t),n(`event-updated`,t)}function k(e){y.value=!1,x.value={...d,date:e.getTime(),color:u[Math.floor(Math.random()*u.length)]},v.value=!0}function A(){let e=b.value;if(!e?.start)return;let{start:t}=e;y.value=!0;let n=new Date(t),r=e.end&&!e.allDay?new Date(e.end):new Date(t.getTime()+36e5);x.value={id:e.id,title:e.title,date:n.getTime(),startTime:`${String(n.getHours()).padStart(2,`0`)}:${String(n.getMinutes()).padStart(2,`0`)}`,endTime:`${String(r.getHours()).padStart(2,`0`)}:${String(r.getMinutes()).padStart(2,`0`)}`,color:e.backgroundColor||`#3f86ff`},g.value=!1,v.value=!0}function j(){if(!x.value.title.trim())return i.error(`请输入事件标题`),!1;let e=h(x.value.date,x.value.startTime,x.value.endTime);if(!e)return i.error(`请选择有效日期和时间,且结束时间须晚于开始时间`),!1;if(y.value&&!m.value.some(e=>e.id===x.value.id))return i.error(`事件已不存在,请刷新后重试`),!1;let t={id:y.value?x.value.id:_(),title:x.value.title.trim(),...e,color:x.value.color};return y.value?(C(t),n(`event-updated`,t),i.success(`事件已更新`)):(S(t),n(`event-added`,t),i.success(`事件已添加`)),v.value=!1,!0}function M(){if(!b.value)return;let{id:e,title:t}=b.value;if(!m.value.some(t=>t.id===e)){g.value=!1;return}w(e),n(`event-deleted`,{id:e,title:t}),g.value=!1,i.success(`已删除事件: ${t}`)}let N=(0,r.computed)(()=>({locale:l.default,headerToolbar:f,buttonText:p,eventClick:T,dateClick:E,eventDrop:D,eventResize:O,...e.config,plugins:[o.default,s.default,c.default],initialView:e.initialView??`dayGridMonth`,events:m.value,eventSources:void 0,editable:e.editable??!0}));return(0,r.watch)(()=>e.events,e=>{m.value=[...e??[]]},{deep:!0}),(0,r.watch)(()=>e.initialView,e=>{e&&a.value?.getApi().changeView(e)}),{calendarRef:a,calendarOptions:N,showActionDialog:g,showEditModal:v,isEditing:y,selectedEvent:b,editForm:x,eventColors:u,openEditModal:A,saveEvent:j,deleteEvent:M,expose:{getApi:()=>a.value?.getApi(),addEvent:S,updateEvent:C,deleteEvent:w,getEvents:()=>m.value.map(e=>({...e,start:e.start instanceof Date?new Date(e.start):e.start,end:e.end instanceof Date?new Date(e.end):e.end}))}}}const y={class:`c-full-calendar`},b={class:`ml-10% mt-20px`},x={style:{padding:`20px`}},S={style:{"margin-bottom":`16px`}},C={style:{"margin-bottom":`16px`}},w={style:{display:`grid`,"grid-template-columns":`1fr 1fr`,gap:`16px`}},T={style:{"margin-top":`16px`}},E={style:{display:`flex`,gap:`8px`}},D=[`aria-label`,`aria-pressed`,`onClick`],O=(0,r.defineComponent)({name:`C_FullCalendar`,__name:`index`,props:{config:{},events:{default:()=>[]},initialView:{default:`dayGridMonth`},editable:{type:Boolean,default:!0},showAddDialog:{type:Boolean,default:!0},showEditDialog:{type:Boolean,default:!0}},emits:[`update:events`,`event-added`,`event-updated`,`event-deleted`,`event-dropped`],setup(e,{expose:t,emit:n}){let{calendarRef:o,calendarOptions:s,showActionDialog:c,showEditModal:l,isEditing:u,selectedEvent:d,editForm:f,eventColors:p,openEditModal:m,saveEvent:h,deleteEvent:g,expose:_}=v(e,n);return t(_),(e,t)=>((0,r.openBlock)(),(0,r.createElementBlock)(`div`,y,[(0,r.createVNode)((0,r.unref)(a.default),{ref_key:`calendarRef`,ref:o,options:(0,r.unref)(s)},null,8,[`options`]),(0,r.unref)(c)?((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(i.NModal),{key:0,show:(0,r.unref)(c),"onUpdate:show":t[0]||=e=>(0,r.isRef)(c)?c.value=e:null,preset:`dialog`,title:`事件操作 - ${(0,r.unref)(d)?.title}`,style:{width:`400px`}},{default:(0,r.withCtx)(()=>[(0,r.createElementVNode)(`div`,b,[(0,r.createVNode)((0,r.unref)(i.NButton),{type:`primary`,onClick:(0,r.unref)(m),style:{"margin-right":`12px`},size:`small`},{default:(0,r.withCtx)(()=>[...t[6]||=[(0,r.createTextVNode)(` 编辑 `,-1)]]),_:1},8,[`onClick`]),(0,r.createVNode)((0,r.unref)(i.NButton),{type:`error`,onClick:(0,r.unref)(g),size:`small`},{default:(0,r.withCtx)(()=>[...t[7]||=[(0,r.createTextVNode)(` 删除 `,-1)]]),_:1},8,[`onClick`])])]),_:1},8,[`show`,`title`])):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createVNode)((0,r.unref)(i.NModal),{show:(0,r.unref)(l),"onUpdate:show":t[5]||=e=>(0,r.isRef)(l)?l.value=e:null,preset:`dialog`,title:(0,r.unref)(u)?`编辑事件`:`添加事件`,"positive-text":`保存`,"negative-text":`取消`,onPositiveClick:(0,r.unref)(h)},{default:(0,r.withCtx)(()=>[(0,r.createElementVNode)(`div`,x,[(0,r.createElementVNode)(`div`,S,[t[8]||=(0,r.createElementVNode)(`label`,{style:{display:`block`,"margin-bottom":`8px`,"font-weight":`500`}},`事件标题`,-1),(0,r.createVNode)((0,r.unref)(i.NInput),{value:(0,r.unref)(f).title,"onUpdate:value":t[1]||=e=>(0,r.unref)(f).title=e,placeholder:`请输入事件标题`,"aria-label":`事件标题`},null,8,[`value`])]),(0,r.createElementVNode)(`div`,C,[t[9]||=(0,r.createElementVNode)(`label`,{style:{display:`block`,"margin-bottom":`8px`,"font-weight":`500`}},`事件日期`,-1),(0,r.createVNode)((0,r.unref)(i.NDatePicker),{value:(0,r.unref)(f).date,"onUpdate:value":t[2]||=e=>(0,r.unref)(f).date=e,type:`date`,format:`yyyy-MM-dd`,style:{width:`100%`},"aria-label":`事件日期`},null,8,[`value`])]),(0,r.createElementVNode)(`div`,w,[(0,r.createElementVNode)(`div`,null,[t[10]||=(0,r.createElementVNode)(`label`,{style:{display:`block`,"margin-bottom":`8px`,"font-weight":`500`}},`开始时间`,-1),(0,r.createVNode)((0,r.unref)(i.NInput),{value:(0,r.unref)(f).startTime,"onUpdate:value":t[3]||=e=>(0,r.unref)(f).startTime=e,placeholder:`09:00`,"aria-label":`开始时间(24 小时制)`},null,8,[`value`])]),(0,r.createElementVNode)(`div`,null,[t[11]||=(0,r.createElementVNode)(`label`,{style:{display:`block`,"margin-bottom":`8px`,"font-weight":`500`}},`结束时间`,-1),(0,r.createVNode)((0,r.unref)(i.NInput),{value:(0,r.unref)(f).endTime,"onUpdate:value":t[4]||=e=>(0,r.unref)(f).endTime=e,placeholder:`10:00`,"aria-label":`结束时间(24 小时制)`},null,8,[`value`])])]),(0,r.createElementVNode)(`div`,T,[t[12]||=(0,r.createElementVNode)(`label`,{style:{display:`block`,"margin-bottom":`8px`,"font-weight":`500`}},`事件颜色`,-1),(0,r.createElementVNode)(`div`,E,[((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,null,(0,r.renderList)((0,r.unref)(p),e=>((0,r.openBlock)(),(0,r.createElementBlock)(`button`,{key:e,type:`button`,class:`event-color-swatch`,"aria-label":`事件颜色 ${e}`,"aria-pressed":(0,r.unref)(f).color===e,style:(0,r.normalizeStyle)({width:`30px`,height:`30px`,backgroundColor:e,borderRadius:`50%`,border:(0,r.unref)(f).color===e?`3px solid #000`:`2px solid #ddd`}),onClick:t=>(0,r.unref)(f).color=e},null,12,D))),128))])])])]),_:1},8,[`show`,`title`,`onPositiveClick`])]))}});var k=n.t(O,[[`__scopeId`,`data-v-01d32289`]]);Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return k}});
1
+ const e=require(`./chunk.cjs`),t=require(`./feedback.cjs`),n=require(`./export-helper.cjs`);let r=require(`vue`),i=require(`naive-ui`),a=require(`@fullcalendar/vue3`);a=e.t(a);let o=require(`@fullcalendar/daygrid`);o=e.t(o);let s=require(`@fullcalendar/interaction`);s=e.t(s);let c=require(`@fullcalendar/list`);c=e.t(c);let l=require(`@fullcalendar/core/locales/zh-cn`);l=e.t(l);const u=[`#3f86ff`,`#ff6b6b`,`#67c23a`,`#e6a23c`,`#9c27b0`,`#00bcd4`,`#ff5722`],d={id:``,title:``,date:Date.now(),startTime:`09:00`,endTime:`10:00`,color:`#3f86ff`},f={left:`prev,next today`,center:`title`,right:`dayGridMonth,dayGridWeek,dayGridDay,listWeek`},p={today:`今天`,month:`月`,week:`周`,day:`日`,list:`列表`},m=/^([01]\d|2[0-3]):([0-5]\d)$/,h=e=>{if(e===null||!Number.isFinite(e))return null;let t=new Date(e);return Number.isNaN(t.getTime())?null:t},g=(e,t)=>{let n=m.exec(t);if(!n)return null;let r=Number(n[1]),i=Number(n[2]),a=new Date(e.getFullYear(),e.getMonth(),e.getDate(),r,i);return a.getHours()===r&&a.getMinutes()===i?a:null};function _(e,t,n,r=e,i=!1){let a=h(e),o=h(r);if(!a||!o)return null;if(i){let e=new Date(a.getFullYear(),a.getMonth(),a.getDate()),t=new Date(o.getFullYear(),o.getMonth(),o.getDate()+1);return t>e?{start:e,end:t}:null}let s=g(a,t),c=g(o,n);return s&&c&&c>s?{start:s,end:c}:null}let v=0;const y=()=>globalThis.crypto?.randomUUID?.()??`calendar-${Date.now()}-${++v}`;function b(e,n){let i=t.t(),a=(0,r.ref)(null),m=(0,r.ref)([...e.events??[]]),h=(0,r.ref)(!1),g=(0,r.ref)(!1),v=(0,r.ref)(!1),b=(0,r.shallowRef)(null),x=(0,r.ref)({...d}),S=e=>[e.date,e.endDate,e.startTime,e.endTime,e.allDay],C=[];(0,r.watch)(()=>[x.value,x.value.date],([e,t],[n,r])=>{if(e!==n)return;let{endDate:i}=x.value;if(t==null||r==null||i==null)return;let a=new Date(r),o=new Date(i);a.toDateString()===o.toDateString()&&(x.value.endDate=t)},{flush:`sync`});let w=e=>{m.value=[...m.value,e],n(`update:events`,m.value)},T=e=>{let t=m.value.findIndex(t=>t.id===e.id);t!==-1&&(m.value=m.value.map((n,r)=>r===t?{...n,...e}:n),n(`update:events`,m.value))},E=e=>{m.value=m.value.filter(t=>t.id!==e),n(`update:events`,m.value)};function D(t){e.editable&&(t.jsEvent.preventDefault(),b.value=t.event,e.showEditDialog&&(h.value=!0))}function O(t){!e.editable||!e.showAddDialog||j(t.date)}function k(t){if(e.editable===!1){t.revert();return}let r={id:t.event.id,start:t.event.start??void 0,end:t.event.end??void 0,allDay:t.event.allDay};T(r),n(`event-dropped`,r),i.success(`事件 "${t.event.title}" 时间已更新`)}function A(t){if(e.editable===!1){t.revert();return}let r={id:t.event.id,start:t.event.start??void 0,end:t.event.end??void 0,allDay:t.event.allDay};T(r),n(`event-updated`,r)}function j(t){e.editable!==!1&&(v.value=!1,x.value={...d,date:t.getTime(),endDate:t.getTime(),allDay:!1,color:u[Math.floor(Math.random()*u.length)]},g.value=!0)}function M(){if(e.editable===!1)return;let t=b.value;if(!t?.start)return;let{start:n}=t;v.value=!0;let r=new Date(n),i=t.end?new Date(t.end):new Date(n.getTime()+(t.allDay?0:36e5));t.allDay&&t.end&&i.setDate(i.getDate()-1),x.value={id:t.id,title:t.title,date:r.getTime(),endDate:i.getTime(),allDay:t.allDay,startTime:`${String(r.getHours()).padStart(2,`0`)}:${String(r.getMinutes()).padStart(2,`0`)}`,endTime:`${String(i.getHours()).padStart(2,`0`)}:${String(i.getMinutes()).padStart(2,`0`)}`,color:t.backgroundColor||`#3f86ff`},C=S(x.value),h.value=!1,g.value=!0}function N(e){if(e&&S(x.value).every((e,t)=>e===C[t]))return{start:e.start,end:e.end,allDay:e.allDay};let t=_(x.value.date,x.value.startTime,x.value.endTime,x.value.endDate===void 0?x.value.date:x.value.endDate,x.value.allDay);return t&&{...t,allDay:!!x.value.allDay}}function P(){if(e.editable===!1)return!1;if(!x.value.title.trim())return i.error(`请输入事件标题`),!1;let t=v.value?m.value.find(e=>e.id===x.value.id):void 0;if(v.value&&!t)return i.error(`事件已不存在,请刷新后重试`),!1;let r=N(t);if(!r)return i.error(`请选择有效日期和时间,且结束时间须晚于开始时间`),!1;let a={id:v.value?x.value.id:y(),title:x.value.title.trim(),...r,color:x.value.color};return v.value?(T(a),n(`event-updated`,a),i.success(`事件已更新`)):(w(a),n(`event-added`,a),i.success(`事件已添加`)),g.value=!1,!0}function F(){if(e.editable===!1||!b.value)return;let{id:t,title:r}=b.value;if(!m.value.some(e=>e.id===t)){h.value=!1;return}E(t),n(`event-deleted`,{id:t,title:r}),h.value=!1,i.success(`已删除事件: ${r}`)}let I=(0,r.computed)(()=>({locale:l.default,headerToolbar:f,buttonText:p,eventClick:D,dateClick:O,eventDrop:k,eventResize:A,...e.config,plugins:[o.default,s.default,c.default],initialView:e.initialView??`dayGridMonth`,events:m.value,eventSources:void 0,editable:e.editable??!0}));return(0,r.watch)(()=>e.editable,e=>{e===!1&&(h.value=!1,g.value=!1,b.value=null)},{flush:`sync`}),(0,r.watch)(()=>e.events,e=>{m.value=[...e??[]]},{deep:!0}),(0,r.watch)(()=>e.initialView,e=>{e&&a.value?.getApi().changeView(e)}),{calendarRef:a,calendarOptions:I,showActionDialog:h,showEditModal:g,isEditing:v,selectedEvent:b,editForm:x,eventColors:u,openEditModal:M,saveEvent:P,deleteEvent:F,expose:{getApi:()=>a.value?.getApi(),addEvent:w,updateEvent:T,deleteEvent:E,getEvents:()=>m.value.map(e=>({...e,start:e.start instanceof Date?new Date(e.start):e.start,end:e.end instanceof Date?new Date(e.end):e.end}))}}}const x={class:`c-full-calendar`},S={class:`ml-10% mt-20px`},C={style:{padding:`20px`}},w={style:{"margin-bottom":`16px`}},T={style:{"margin-bottom":`16px`}},E={style:{"margin-bottom":`16px`}},D={key:0,style:{display:`grid`,"grid-template-columns":`1fr 1fr`,gap:`16px`}},O={style:{"margin-top":`16px`}},k={style:{display:`flex`,gap:`8px`}},A=[`aria-label`,`aria-pressed`,`onClick`],j=(0,r.defineComponent)({name:`C_FullCalendar`,__name:`index`,props:{config:{},events:{default:()=>[]},initialView:{default:`dayGridMonth`},editable:{type:Boolean,default:!0},showAddDialog:{type:Boolean,default:!0},showEditDialog:{type:Boolean,default:!0}},emits:[`update:events`,`event-added`,`event-updated`,`event-deleted`,`event-dropped`],setup(e,{expose:t,emit:n}){let{calendarRef:o,calendarOptions:s,showActionDialog:c,showEditModal:l,isEditing:u,selectedEvent:d,editForm:f,eventColors:p,openEditModal:m,saveEvent:h,deleteEvent:g,expose:_}=b(e,n);return t(_),(e,t)=>((0,r.openBlock)(),(0,r.createElementBlock)(`div`,x,[(0,r.createVNode)((0,r.unref)(a.default),{ref_key:`calendarRef`,ref:o,options:(0,r.unref)(s)},null,8,[`options`]),(0,r.unref)(c)?((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(i.NModal),{key:0,show:(0,r.unref)(c),"onUpdate:show":t[0]||=e=>(0,r.isRef)(c)?c.value=e:null,preset:`dialog`,title:`事件操作 - ${(0,r.unref)(d)?.title}`,style:{width:`400px`}},{default:(0,r.withCtx)(()=>[(0,r.createElementVNode)(`div`,S,[(0,r.createVNode)((0,r.unref)(i.NButton),{type:`primary`,onClick:(0,r.unref)(m),style:{"margin-right":`12px`},size:`small`},{default:(0,r.withCtx)(()=>[...t[8]||=[(0,r.createTextVNode)(` 编辑 `,-1)]]),_:1},8,[`onClick`]),(0,r.createVNode)((0,r.unref)(i.NButton),{type:`error`,onClick:(0,r.unref)(g),size:`small`},{default:(0,r.withCtx)(()=>[...t[9]||=[(0,r.createTextVNode)(` 删除 `,-1)]]),_:1},8,[`onClick`])])]),_:1},8,[`show`,`title`])):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createVNode)((0,r.unref)(i.NModal),{show:(0,r.unref)(l),"onUpdate:show":t[7]||=e=>(0,r.isRef)(l)?l.value=e:null,preset:`dialog`,title:(0,r.unref)(u)?`编辑事件`:`添加事件`,"positive-text":`保存`,"negative-text":`取消`,onPositiveClick:(0,r.unref)(h)},{default:(0,r.withCtx)(()=>[(0,r.createElementVNode)(`div`,C,[(0,r.createElementVNode)(`div`,w,[t[10]||=(0,r.createElementVNode)(`label`,{style:{display:`block`,"margin-bottom":`8px`,"font-weight":`500`}},`事件标题`,-1),(0,r.createVNode)((0,r.unref)(i.NInput),{value:(0,r.unref)(f).title,"onUpdate:value":t[1]||=e=>(0,r.unref)(f).title=e,placeholder:`请输入事件标题`,"aria-label":`事件标题`},null,8,[`value`])]),(0,r.createElementVNode)(`div`,T,[t[11]||=(0,r.createElementVNode)(`label`,{style:{display:`block`,"margin-bottom":`8px`,"font-weight":`500`}},`开始日期`,-1),(0,r.createVNode)((0,r.unref)(i.NDatePicker),{value:(0,r.unref)(f).date,"onUpdate:value":t[2]||=e=>(0,r.unref)(f).date=e,type:`date`,format:`yyyy-MM-dd`,style:{width:`100%`},"aria-label":`开始日期`},null,8,[`value`])]),(0,r.createElementVNode)(`div`,E,[t[12]||=(0,r.createElementVNode)(`label`,{style:{display:`block`,"margin-bottom":`8px`,"font-weight":`500`}},`结束日期`,-1),(0,r.createVNode)((0,r.unref)(i.NDatePicker),{value:(0,r.unref)(f).endDate,"onUpdate:value":t[3]||=e=>(0,r.unref)(f).endDate=e,type:`date`,format:`yyyy-MM-dd`,style:{width:`100%`},"aria-label":`结束日期`},null,8,[`value`])]),(0,r.createVNode)((0,r.unref)(i.NCheckbox),{checked:(0,r.unref)(f).allDay,"onUpdate:checked":t[4]||=e=>(0,r.unref)(f).allDay=e,style:{"margin-bottom":`16px`}},{default:(0,r.withCtx)(()=>[...t[13]||=[(0,r.createTextVNode)(` 全天事件 `,-1)]]),_:1},8,[`checked`]),(0,r.unref)(f).allDay?(0,r.createCommentVNode)(`v-if`,!0):((0,r.openBlock)(),(0,r.createElementBlock)(`div`,D,[(0,r.createElementVNode)(`div`,null,[t[14]||=(0,r.createElementVNode)(`label`,{style:{display:`block`,"margin-bottom":`8px`,"font-weight":`500`}},`开始时间`,-1),(0,r.createVNode)((0,r.unref)(i.NInput),{value:(0,r.unref)(f).startTime,"onUpdate:value":t[5]||=e=>(0,r.unref)(f).startTime=e,placeholder:`09:00`,"aria-label":`开始时间(24 小时制)`},null,8,[`value`])]),(0,r.createElementVNode)(`div`,null,[t[15]||=(0,r.createElementVNode)(`label`,{style:{display:`block`,"margin-bottom":`8px`,"font-weight":`500`}},`结束时间`,-1),(0,r.createVNode)((0,r.unref)(i.NInput),{value:(0,r.unref)(f).endTime,"onUpdate:value":t[6]||=e=>(0,r.unref)(f).endTime=e,placeholder:`10:00`,"aria-label":`结束时间(24 小时制)`},null,8,[`value`])])])),(0,r.createElementVNode)(`div`,O,[t[16]||=(0,r.createElementVNode)(`label`,{style:{display:`block`,"margin-bottom":`8px`,"font-weight":`500`}},`事件颜色`,-1),(0,r.createElementVNode)(`div`,k,[((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,null,(0,r.renderList)((0,r.unref)(p),e=>((0,r.openBlock)(),(0,r.createElementBlock)(`button`,{key:e,type:`button`,class:`event-color-swatch`,"aria-label":`事件颜色 ${e}`,"aria-pressed":(0,r.unref)(f).color===e,style:(0,r.normalizeStyle)({width:`30px`,height:`30px`,backgroundColor:e,borderRadius:`50%`,border:(0,r.unref)(f).color===e?`3px solid #000`:`2px solid #ddd`}),onClick:t=>(0,r.unref)(f).color=e},null,12,A))),128))])])])]),_:1},8,[`show`,`title`,`onPositiveClick`])]))}});var M=n.t(j,[[`__scopeId`,`data-v-3604329b`]]);Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return M}});