@robot-admin/naive-ui-components 0.21.0 → 0.21.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/dist/C_FilePreview.css +60 -60
  3. package/dist/C_FilePreview2.cjs +1 -1
  4. package/dist/C_FilePreview2.js +1 -1
  5. package/dist/C_Markdown.css +1 -2
  6. package/dist/C_WorkFlow.css +112 -111
  7. package/dist/C_WorkFlow2.cjs +1 -1
  8. package/dist/C_WorkFlow2.js +1 -1
  9. package/dist/constants.d.cts +1 -1
  10. package/dist/constants.d.ts +1 -1
  11. package/dist/constants2.d.cts +1 -1
  12. package/dist/constants2.d.ts +1 -1
  13. package/dist/constants3.d.cts +2 -2
  14. package/dist/constants3.d.ts +2 -2
  15. package/dist/constants4.d.cts +6 -6
  16. package/dist/constants4.d.ts +6 -6
  17. package/dist/data.d.cts +10 -10
  18. package/dist/data.d.ts +10 -10
  19. package/dist/index.vue.d.cts +2 -2
  20. package/dist/index.vue.d.ts +2 -2
  21. package/dist/index10.vue.d.cts +2 -2
  22. package/dist/index10.vue.d.ts +4 -4
  23. package/dist/index11.vue.d.cts +4 -4
  24. package/dist/index12.vue.d.ts +5 -5
  25. package/dist/index13.vue.d.cts +5 -5
  26. package/dist/index13.vue.d.ts +8 -8
  27. package/dist/index14.vue.d.cts +8 -8
  28. package/dist/index16.vue.d.ts +1 -1
  29. package/dist/index17.vue.d.cts +1 -1
  30. package/dist/index17.vue.d.ts +2 -2
  31. package/dist/index18.vue.d.cts +2 -2
  32. package/dist/index19.vue.d.cts +2 -2
  33. package/dist/index19.vue.d.ts +2 -2
  34. package/dist/index2.vue.d.cts +3 -3
  35. package/dist/index2.vue.d.ts +3 -3
  36. package/dist/index20.vue.d.cts +3 -3
  37. package/dist/index20.vue.d.ts +3 -3
  38. package/dist/index21.vue.d.cts +2 -2
  39. package/dist/index21.vue.d.ts +2 -2
  40. package/dist/index22.vue.d.cts +2 -2
  41. package/dist/index22.vue.d.ts +2 -2
  42. package/dist/index25.vue.d.cts +5 -5
  43. package/dist/index25.vue.d.ts +5 -5
  44. package/dist/index3.vue.d.cts +6 -6
  45. package/dist/index3.vue.d.ts +6 -6
  46. package/dist/index6.vue.d.ts +2 -2
  47. package/dist/index7.vue.d.cts +2 -2
  48. package/dist/index8.vue.d.ts +3 -3
  49. package/dist/index9.vue.d.cts +3 -3
  50. package/dist/index9.vue.d.ts +2 -2
  51. package/dist/mapUtils.d.cts +2 -2
  52. package/dist/mapUtils.d.ts +2 -2
  53. package/dist/style.css +173 -173
  54. package/dist/useCalendarEvents.d.cts +1 -1
  55. package/dist/useCalendarEvents.d.ts +1 -1
  56. package/dist/useCollapsePanel.d.cts +2 -2
  57. package/dist/useCollapsePanel.d.ts +2 -2
  58. package/dist/useCropperCore.d.cts +4 -4
  59. package/dist/useCropperCore.d.ts +4 -4
  60. package/dist/useDynamicFormState.d.cts +2 -2
  61. package/dist/useDynamicFormState.d.ts +2 -2
  62. package/dist/useEdgeInteraction.d.cts +2 -2
  63. package/dist/useEdgeInteraction.d.ts +2 -2
  64. package/dist/useFullscreen.d.cts +2 -2
  65. package/dist/useFullscreen.d.ts +2 -2
  66. package/dist/useGlobalSearch.d.cts +1 -1
  67. package/dist/useGlobalSearch.d.ts +1 -1
  68. package/dist/useInfiniteScroll.d.cts +1 -1
  69. package/dist/useInfiniteScroll.d.ts +1 -1
  70. package/dist/useQRCode.d.cts +4 -4
  71. package/dist/useQRCode.d.ts +4 -4
  72. package/dist/useSignatureHistory.d.cts +4 -4
  73. package/dist/useSignatureHistory.d.ts +4 -4
  74. package/dist/useSplitResize.d.cts +10 -10
  75. package/dist/useSplitResize.d.ts +10 -10
  76. package/dist/useTableQuery.d.cts +7 -7
  77. package/dist/useTableQuery.d.ts +7 -7
  78. package/dist/useWorkflowValidation.d.cts +34 -34
  79. package/dist/useWorkflowValidation.d.ts +34 -34
  80. package/dist/verification.d.cts +2 -2
  81. package/dist/verification.d.ts +2 -2
  82. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # @robot-admin/naive-ui-components
2
2
 
3
+ ## 0.21.1
4
+
5
+ ### Patch Changes
6
+
7
+ - 工作流保存、导出和变更事件仅序列化公开节点与连线数据,保留坐标、业务数据及配置,剥离 VueFlow 内部节点引用、事件和计算状态。补充真实拖动后的快照边界、保存恢复与只读回归,避免 SDK 运行态污染业务持久化数据。
8
+
9
+ 修正 Markdown 供应商样式合并,内联主题样式并移除失效的字符集声明,避免主题导入在全局样式之后被消费端构建器丢弃;增加实际主题选择器与样式边界回归。
10
+
11
+ Excel 工作表标签通过官方插槽显式渲染,修复空默认插槽遮蔽标签导致的空白页签,保持惰性解析与往返切换数据隔离。
12
+
3
13
  ## 0.21.0
4
14
 
5
15
  ### Minor Changes
@@ -1,11 +1,11 @@
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
- .file-container[data-v-5ed6f50d] {
3
+ .file-container[data-v-5a0226ce] {
4
4
  display: flex;
5
5
  flex-direction: column;
6
6
  height: 100%;
7
7
  }
8
- .file-container .file-toolbar[data-v-5ed6f50d] {
8
+ .file-container .file-toolbar[data-v-5a0226ce] {
9
9
  padding: 12px 16px;
10
10
  border-bottom: 1px solid var(--c-border, #e0e0e0);
11
11
  background-color: var(--c-bg-card, #f9f9f9);
@@ -13,16 +13,16 @@
13
13
  z-index: 8;
14
14
  position: relative;
15
15
  }
16
- .excel-container[data-v-5ed6f50d] {
16
+ .excel-container[data-v-5a0226ce] {
17
17
  overflow: visible;
18
18
  }
19
- .excel-container .excel-viewer[data-v-5ed6f50d] {
19
+ .excel-container .excel-viewer[data-v-5a0226ce] {
20
20
  display: flex;
21
21
  flex-direction: column;
22
22
  height: 100%;
23
23
  overflow: visible;
24
24
  }
25
- .excel-container .excel-viewer .excel-info[data-v-5ed6f50d] {
25
+ .excel-container .excel-viewer .excel-info[data-v-5a0226ce] {
26
26
  padding: 8px 16px;
27
27
  background-color: var(--c-bg-card, #f9f9f9);
28
28
  border-bottom: 1px solid var(--c-border, #e0e0e0);
@@ -30,53 +30,53 @@
30
30
  z-index: 7;
31
31
  position: relative;
32
32
  }
33
- .excel-container .excel-viewer .excel-table-container[data-v-5ed6f50d] {
33
+ .excel-container .excel-viewer .excel-table-container[data-v-5a0226ce] {
34
34
  flex: 1;
35
35
  display: flex;
36
36
  flex-direction: column;
37
37
  overflow: visible;
38
38
  min-height: 0;
39
39
  }
40
- .excel-container .excel-viewer .excel-table-container .excel-table-wrapper[data-v-5ed6f50d] {
40
+ .excel-container .excel-viewer .excel-table-container .excel-table-wrapper[data-v-5a0226ce] {
41
41
  flex: 1;
42
42
  overflow: auto;
43
43
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
44
44
  border-radius: 4px;
45
45
  }
46
- .excel-container .excel-viewer .excel-table-container .excel-table-wrapper.simple-mode .excel-table[data-v-5ed6f50d] {
46
+ .excel-container .excel-viewer .excel-table-container .excel-table-wrapper.simple-mode .excel-table[data-v-5a0226ce] {
47
47
  font-size: 12px;
48
48
  }
49
- .excel-container .excel-viewer .excel-table-container .excel-table-wrapper.simple-mode .excel-table .excel-header[data-v-5ed6f50d] {
49
+ .excel-container .excel-viewer .excel-table-container .excel-table-wrapper.simple-mode .excel-table .excel-header[data-v-5a0226ce] {
50
50
  padding: 6px 8px;
51
51
  background: #f8f9fa;
52
52
  }
53
- .excel-container .excel-viewer .excel-table-container .excel-table-wrapper.simple-mode .excel-table .excel-header .header-content .column-letter[data-v-5ed6f50d] {
53
+ .excel-container .excel-viewer .excel-table-container .excel-table-wrapper.simple-mode .excel-table .excel-header .header-content .column-letter[data-v-5a0226ce] {
54
54
  display: none;
55
55
  }
56
- .excel-container .excel-viewer .excel-table-container .excel-table-wrapper.simple-mode .excel-table .excel-header .header-content .column-title[data-v-5ed6f50d] {
56
+ .excel-container .excel-viewer .excel-table-container .excel-table-wrapper.simple-mode .excel-table .excel-header .header-content .column-title[data-v-5a0226ce] {
57
57
  font-size: 11px;
58
58
  }
59
- .excel-container .excel-viewer .excel-table-container .excel-table-wrapper.simple-mode .excel-table .excel-row[data-v-5ed6f50d]:nth-child(even) {
59
+ .excel-container .excel-viewer .excel-table-container .excel-table-wrapper.simple-mode .excel-table .excel-row[data-v-5a0226ce]:nth-child(even) {
60
60
  background-color: #fefefe;
61
61
  }
62
- .excel-container .excel-viewer .excel-table-container .excel-table-wrapper.simple-mode .excel-table .excel-cell[data-v-5ed6f50d] {
62
+ .excel-container .excel-viewer .excel-table-container .excel-table-wrapper.simple-mode .excel-table .excel-cell[data-v-5a0226ce] {
63
63
  padding: 4px 8px;
64
64
  font-size: 12px;
65
65
  }
66
- .excel-container .excel-viewer .excel-table-container .excel-table-wrapper.simple-mode .excel-table .excel-cell.merged-cell[data-v-5ed6f50d] {
66
+ .excel-container .excel-viewer .excel-table-container .excel-table-wrapper.simple-mode .excel-table .excel-cell.merged-cell[data-v-5a0226ce] {
67
67
  border: 1px solid #1976d2 !important;
68
68
  }
69
- .excel-container .excel-viewer .excel-table-container .excel-table-wrapper.simple-mode .excel-table .excel-cell.merged-cell[data-v-5ed6f50d]::after {
69
+ .excel-container .excel-viewer .excel-table-container .excel-table-wrapper.simple-mode .excel-table .excel-cell.merged-cell[data-v-5a0226ce]::after {
70
70
  display: none;
71
71
  }
72
- .excel-container .excel-viewer .excel-table-container .excel-table[data-v-5ed6f50d] {
72
+ .excel-container .excel-viewer .excel-table-container .excel-table[data-v-5a0226ce] {
73
73
  width: 100%;
74
74
  border-collapse: separate;
75
75
  border-spacing: 0;
76
76
  font-size: 13px;
77
77
  min-width: 100%;
78
78
  }
79
- .excel-container .excel-viewer .excel-table-container .excel-table .row-number[data-v-5ed6f50d] {
79
+ .excel-container .excel-viewer .excel-table-container .excel-table .row-number[data-v-5a0226ce] {
80
80
  background: linear-gradient(135deg, #f0f0f0 0%, #e8e8e8 100%);
81
81
  text-align: center;
82
82
  min-width: 30px;
@@ -90,7 +90,7 @@
90
90
  left: 0;
91
91
  z-index: 10;
92
92
  }
93
- .excel-container .excel-viewer .excel-table-container .excel-table .excel-header[data-v-5ed6f50d] {
93
+ .excel-container .excel-viewer .excel-table-container .excel-table .excel-header[data-v-5a0226ce] {
94
94
  background: linear-gradient(135deg, #f5f5f5 0%, #e8e8e8 100%);
95
95
  padding: 8px 12px;
96
96
  border: 1px solid #c0c0c0;
@@ -99,13 +99,13 @@
99
99
  top: 0;
100
100
  z-index: 5;
101
101
  }
102
- .excel-container .excel-viewer .excel-table-container .excel-table .excel-header .header-content[data-v-5ed6f50d] {
102
+ .excel-container .excel-viewer .excel-table-container .excel-table .excel-header .header-content[data-v-5a0226ce] {
103
103
  display: flex;
104
104
  flex-direction: column;
105
105
  align-items: center;
106
106
  gap: 2px;
107
107
  }
108
- .excel-container .excel-viewer .excel-table-container .excel-table .excel-header .header-content .column-letter[data-v-5ed6f50d] {
108
+ .excel-container .excel-viewer .excel-table-container .excel-table .excel-header .header-content .column-letter[data-v-5a0226ce] {
109
109
  background-color: var(--c-primary, #1976d2);
110
110
  color: white;
111
111
  padding: 2px 6px;
@@ -113,19 +113,19 @@
113
113
  font-size: 10px;
114
114
  font-weight: normal;
115
115
  }
116
- .excel-container .excel-viewer .excel-table-container .excel-table .excel-header .header-content .column-title[data-v-5ed6f50d] {
116
+ .excel-container .excel-viewer .excel-table-container .excel-table .excel-header .header-content .column-title[data-v-5a0226ce] {
117
117
  font-size: 12px;
118
118
  font-weight: bold;
119
119
  text-align: center;
120
120
  word-break: break-all;
121
121
  }
122
- .excel-container .excel-viewer .excel-table-container .excel-table .excel-row[data-v-5ed6f50d]:nth-child(even) {
122
+ .excel-container .excel-viewer .excel-table-container .excel-table .excel-row[data-v-5a0226ce]:nth-child(even) {
123
123
  background-color: #fafafa;
124
124
  }
125
- .excel-container .excel-viewer .excel-table-container .excel-table .excel-row[data-v-5ed6f50d]:hover {
125
+ .excel-container .excel-viewer .excel-table-container .excel-table .excel-row[data-v-5a0226ce]:hover {
126
126
  background-color: #e6f3ff;
127
127
  }
128
- .excel-container .excel-viewer .excel-table-container .excel-table .excel-cell[data-v-5ed6f50d] {
128
+ .excel-container .excel-viewer .excel-table-container .excel-table .excel-cell[data-v-5a0226ce] {
129
129
  padding: 8px 12px;
130
130
  border: 1px solid #d0d0d0;
131
131
  vertical-align: middle;
@@ -135,11 +135,11 @@
135
135
  line-height: 1.4;
136
136
  position: relative;
137
137
  }
138
- .excel-container .excel-viewer .excel-table-container .excel-table .excel-cell.cell-number[data-v-5ed6f50d] {
138
+ .excel-container .excel-viewer .excel-table-container .excel-table .excel-cell.cell-number[data-v-5a0226ce] {
139
139
  text-align: right;
140
140
  font-family: "Courier New", monospace;
141
141
  }
142
- .excel-container .excel-viewer .excel-table-container .excel-table .excel-cell.cell-gantt[data-v-5ed6f50d] {
142
+ .excel-container .excel-viewer .excel-table-container .excel-table .excel-cell.cell-gantt[data-v-5a0226ce] {
143
143
  text-align: center;
144
144
  font-family: monospace;
145
145
  font-size: 14px;
@@ -147,28 +147,28 @@
147
147
  background-color: #f0f0f0;
148
148
  color: var(--c-text-1, #333);
149
149
  }
150
- .excel-container .excel-viewer .excel-table-container .excel-table .excel-cell.cell-date[data-v-5ed6f50d] {
150
+ .excel-container .excel-viewer .excel-table-container .excel-table .excel-cell.cell-date[data-v-5a0226ce] {
151
151
  color: var(--c-primary, #1976d2);
152
152
  }
153
- .excel-container .excel-viewer .excel-table-container .excel-table .excel-cell.cell-boolean[data-v-5ed6f50d] {
153
+ .excel-container .excel-viewer .excel-table-container .excel-table .excel-cell.cell-boolean[data-v-5a0226ce] {
154
154
  text-align: center;
155
155
  font-weight: bold;
156
156
  }
157
- .excel-container .excel-viewer .excel-table-container .excel-table .excel-cell.cell-long[data-v-5ed6f50d] {
157
+ .excel-container .excel-viewer .excel-table-container .excel-table .excel-cell.cell-long[data-v-5a0226ce] {
158
158
  max-width: 200px;
159
159
  white-space: pre-wrap;
160
160
  }
161
- .excel-container .excel-viewer .excel-table-container .excel-table .excel-cell.cell-empty[data-v-5ed6f50d] {
161
+ .excel-container .excel-viewer .excel-table-container .excel-table .excel-cell.cell-empty[data-v-5a0226ce] {
162
162
  background-color: #fafafa;
163
163
  }
164
- .excel-container .excel-viewer .excel-table-container .excel-table .excel-cell.merged-cell[data-v-5ed6f50d] {
164
+ .excel-container .excel-viewer .excel-table-container .excel-table .excel-cell.merged-cell[data-v-5a0226ce] {
165
165
  background: linear-gradient(135deg, #f0f8ff 0%, #e3f2fd 100%) !important;
166
166
  border: 2px solid var(--c-primary, #1976d2) !important;
167
167
  font-weight: bold;
168
168
  text-align: center;
169
169
  color: var(--c-primary, #1976d2);
170
170
  }
171
- .excel-container .excel-viewer .excel-table-container .excel-table .excel-cell.merged-cell[data-v-5ed6f50d]::before {
171
+ .excel-container .excel-viewer .excel-table-container .excel-table .excel-cell.merged-cell[data-v-5a0226ce]::before {
172
172
  content: "";
173
173
  position: absolute;
174
174
  top: 3px;
@@ -179,7 +179,7 @@
179
179
  border-radius: 2px;
180
180
  pointer-events: none;
181
181
  }
182
- .excel-container .excel-viewer .excel-table-container .excel-table .excel-cell.merged-cell[data-v-5ed6f50d]::after {
182
+ .excel-container .excel-viewer .excel-table-container .excel-table .excel-cell.merged-cell[data-v-5a0226ce]::after {
183
183
  content: "📎";
184
184
  position: absolute;
185
185
  top: 2px;
@@ -187,35 +187,35 @@
187
187
  font-size: 10px;
188
188
  opacity: 0.6;
189
189
  }
190
- .excel-container .excel-viewer .excel-table-container .excel-table .excel-cell.compact-cell[data-v-5ed6f50d] {
190
+ .excel-container .excel-viewer .excel-table-container .excel-table .excel-cell.compact-cell[data-v-5a0226ce] {
191
191
  padding: 4px 8px;
192
192
  font-size: 12px;
193
193
  }
194
- .excel-container .excel-viewer .excel-table-container .excel-table .excel-cell.compact-cell.merged-cell[data-v-5ed6f50d] {
194
+ .excel-container .excel-viewer .excel-table-container .excel-table .excel-cell.compact-cell.merged-cell[data-v-5a0226ce] {
195
195
  background: linear-gradient(135deg, #f0f8ff 0%, #e3f2fd 100%) !important;
196
196
  border: 1px solid var(--c-primary, #1976d2) !important;
197
197
  font-weight: bold;
198
198
  text-align: center;
199
199
  color: var(--c-primary, #1976d2);
200
200
  }
201
- .excel-container .excel-viewer .excel-table-container .excel-table .excel-cell.compact-cell.merged-cell[data-v-5ed6f50d]::before {
201
+ .excel-container .excel-viewer .excel-table-container .excel-table .excel-cell.compact-cell.merged-cell[data-v-5a0226ce]::before {
202
202
  top: 2px;
203
203
  left: 2px;
204
204
  right: 2px;
205
205
  bottom: 2px;
206
206
  background: rgba(25, 118, 210, 0.05);
207
207
  }
208
- .excel-container .excel-viewer .excel-table-container .excel-table .excel-cell.compact-cell.merged-cell[data-v-5ed6f50d]::after {
208
+ .excel-container .excel-viewer .excel-table-container .excel-table .excel-cell.compact-cell.merged-cell[data-v-5a0226ce]::after {
209
209
  display: none;
210
210
  }
211
- .excel-container .excel-viewer .excel-table-container .excel-empty[data-v-5ed6f50d] {
211
+ .excel-container .excel-viewer .excel-table-container .excel-empty[data-v-5a0226ce] {
212
212
  flex: 1;
213
213
  display: flex;
214
214
  align-items: center;
215
215
  justify-content: center;
216
216
  min-height: 200px;
217
217
  }
218
- .excel-container .excel-viewer .excel-table-container .excel-pagination[data-v-5ed6f50d] {
218
+ .excel-container .excel-viewer .excel-table-container .excel-pagination[data-v-5a0226ce] {
219
219
  padding: 20px 16px;
220
220
  border-top: 1px solid var(--c-border, #e0e0e0);
221
221
  background-color: var(--c-bg-card, #f9f9f9);
@@ -226,52 +226,52 @@
226
226
  position: relative;
227
227
  overflow: visible;
228
228
  }
229
- .excel-container .excel-viewer .excel-table-container .excel-pagination[data-v-5ed6f50d] .n-pagination {
229
+ .excel-container .excel-viewer .excel-table-container .excel-pagination[data-v-5a0226ce] .n-pagination {
230
230
  z-index: 1001;
231
231
  position: relative;
232
232
  }
233
- .excel-container .excel-viewer .excel-table-container .excel-pagination[data-v-5ed6f50d] .n-pagination-size-picker {
233
+ .excel-container .excel-viewer .excel-table-container .excel-pagination[data-v-5a0226ce] .n-pagination-size-picker {
234
234
  z-index: 1002;
235
235
  position: relative;
236
236
  }
237
- .excel-container .excel-viewer .excel-table-container .excel-pagination[data-v-5ed6f50d] .n-pagination-size-picker .n-base-selection {
237
+ .excel-container .excel-viewer .excel-table-container .excel-pagination[data-v-5a0226ce] .n-pagination-size-picker .n-base-selection {
238
238
  z-index: 1003;
239
239
  }
240
- .excel-container .excel-viewer .excel-table-container .excel-pagination[data-v-5ed6f50d] .n-pagination-size-picker .n-base-selection-popover {
240
+ .excel-container .excel-viewer .excel-table-container .excel-pagination[data-v-5a0226ce] .n-pagination-size-picker .n-base-selection-popover {
241
241
  z-index: 1004 !important;
242
242
  }
243
- .excel-container .excel-viewer .excel-table-container .excel-pagination[data-v-5ed6f50d] .n-popover {
243
+ .excel-container .excel-viewer .excel-table-container .excel-pagination[data-v-5a0226ce] .n-popover {
244
244
  z-index: 1005 !important;
245
245
  }
246
246
 
247
247
  /* layer: shortcuts */
248
- .file-container[data-v-5ed6f50d]::file-selector-button{width:100%;}
248
+ .file-container[data-v-5a0226ce]::file-selector-button{width:100%;}
249
249
  @media (min-width: 640px){
250
- .file-container[data-v-5ed6f50d]::file-selector-button{max-width:640px;}
250
+ .file-container[data-v-5a0226ce]::file-selector-button{max-width:640px;}
251
251
  }
252
252
  @media (min-width: 768px){
253
- .file-container[data-v-5ed6f50d]::file-selector-button{max-width:768px;}
253
+ .file-container[data-v-5a0226ce]::file-selector-button{max-width:768px;}
254
254
  }
255
255
  @media (min-width: 1024px){
256
- .file-container[data-v-5ed6f50d]::file-selector-button{max-width:1024px;}
256
+ .file-container[data-v-5a0226ce]::file-selector-button{max-width:1024px;}
257
257
  }
258
258
  @media (min-width: 1280px){
259
- .file-container[data-v-5ed6f50d]::file-selector-button{max-width:1280px;}
259
+ .file-container[data-v-5a0226ce]::file-selector-button{max-width:1280px;}
260
260
  }
261
261
  @media (min-width: 1536px){
262
- .file-container[data-v-5ed6f50d]::file-selector-button{max-width:1536px;}
262
+ .file-container[data-v-5a0226ce]::file-selector-button{max-width:1536px;}
263
263
  }
264
264
  /* layer: default */
265
- .hidden[data-v-5ed6f50d]{display:none;}
266
- .h6[data-v-5ed6f50d]{height:1.5rem;}
267
- .flex[data-v-5ed6f50d]{display:flex;}
268
- .items-center[data-v-5ed6f50d]{align-items:center;}
269
- .justify-between[data-v-5ed6f50d]{justify-content:space-between;}
270
- .gap-2[data-v-5ed6f50d]{gap:0.5rem;}
271
- .p\[style-name\=\'Title\'\][data-v-5ed6f50d]{padding:style-name='Title';}
272
- .px[data-v-5ed6f50d]{padding-left:1rem;padding-right:1rem;}
273
- .text-sm[data-v-5ed6f50d]{font-size:0.875rem;line-height:1.25rem;}
274
- .text-gray-600[data-v-5ed6f50d]{--un-text-opacity:1;color:rgb(75 85 99 / var(--un-text-opacity));}
265
+ .hidden[data-v-5a0226ce]{display:none;}
266
+ .h6[data-v-5a0226ce]{height:1.5rem;}
267
+ .flex[data-v-5a0226ce]{display:flex;}
268
+ .items-center[data-v-5a0226ce]{align-items:center;}
269
+ .justify-between[data-v-5a0226ce]{justify-content:space-between;}
270
+ .gap-2[data-v-5a0226ce]{gap:0.5rem;}
271
+ .p\[style-name\=\'Title\'\][data-v-5a0226ce]{padding:style-name='Title';}
272
+ .px[data-v-5a0226ce]{padding-left:1rem;padding-right:1rem;}
273
+ .text-sm[data-v-5a0226ce]{font-size:0.875rem;line-height:1.25rem;}
274
+ .text-gray-600[data-v-5a0226ce]{--un-text-opacity:1;color:rgb(75 85 99 / var(--un-text-opacity));}
275
275
 
276
276
  /*
277
277
  * @Author: ChenYu ycyplus@gmail.com
@@ -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=>e==null?``:String(e),b=1e5,x=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`};function S(e,t,n){if(e===void 0)return t;if(!Number.isSafeInteger(e)||e<=0)throw Error(`previewLimits.${n} 必须为有限正整数`);return e}function C(e,t){let n=t?.isMain?t:{rowspan:1,colspan:1};return{value:e?.v??``,displayValue:e?e.w??o.utils.format_cell(e):``,type:e?.t,merged:!!t,hidden:!!(t&&!t.isMain),rowspan:n.rowspan,colspan:n.colspan}}function w(e,t,n){let{s:r,e:i}=e;return[r.r,r.c,i.r,i.c].every(Number.isSafeInteger)&&r.r>=0&&r.c>=0&&i.r<=t&&i.c<=n&&i.r>=r.r&&i.c>=r.c}const T=(e,t,n=b)=>{let{c:r,r:i}=o.utils.decode_range(e[`!ref`]||`A1:A1`).e,a=(r+1)*(i+1);if(!Number.isSafeInteger(a)||a<1||a>S(n,b,`maxCells`))throw Error(`工作表范围超过 ${n.toLocaleString()} 个单元格的预览上限,请下载文件查看`);let s=Array.from({length:r+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)}}),c=new Map,l=0;return t.forEach(e=>{if(!w(e,i,r))return;let{s:{r:t,c:n},e:{r:o,c:s}}=e;if(l+=(o-t+1)*(s-n+1),!Number.isSafeInteger(l)||l>a)throw Error(`合并单元格累计范围超过预览上限,请下载文件查看`);for(let e=t;e<=o;e++)for(let r=n;r<=s;r++)c.set(`${e}-${r}`,{isMain:e===t&&r===n,rowspan:o-t+1,colspan:s-n+1})}),{data:Array.from({length:i+1},(t,n)=>{let i={};for(let t=0;t<=r;t++){let r=e[o.utils.encode_cell({r:n,c:t})],a=c.get(`${n}-${t}`);i[`col_${t}`]=C(r,a)}return i}),columns:s}};async function E(e){return{url:URL.createObjectURL(e)+`#toolbar=1&navpanes=1&scrollbar=1&view=FitH`,totalPages:1}}async function D(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 O(e,t={}){let n=S(t.maxBytes,33554432,`maxBytes`),r=S(t.maxCells,b,`maxCells`);if(e.size>n)throw Error(`Excel 文件超过 ${m(n)} 的预览上限,请下载文件查看`);let i=await e.arrayBuffer(),a=o.read(i,{type:`array`,cellStyles:!0,cellFormula:!0,cellDates:!0});if(!a.SheetNames.length)throw Error(`Excel文件中没有找到工作表`);let s=a.SheetNames.map(e=>{let t=a.Sheets[e],n=t[`!merges`]||[];return{name:e,data:[],merges:n,columns:[],load:()=>T(t,n,r)}});return Object.assign(s[0],s[0].load?.()),{sheets:s}}const k={class:`file-container pdf-container`},A={class:`file-toolbar`},j={class:`file-viewer`},M=[`src`],N=(0,i.defineComponent)({name:`FilePreviewPdfViewer`,__name:`index`,props:{pdfUrl:{},totalPages:{}},setup(e){return(t,n)=>((0,i.openBlock)(),(0,i.createElementBlock)(`div`,k,[(0,i.createElementVNode)(`div`,A,[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`,j,[e.pdfUrl?((0,i.openBlock)(),(0,i.createElementBlock)(`iframe`,{key:0,src:e.pdfUrl,title:`PDF预览`,class:`pdf-frame`},null,8,M)):(0,i.createCommentVNode)(`v-if`,!0)])]))}});var P=n.t(N,[[`__scopeId`,`data-v-db027bb4`]]);const F={class:`file-container word-container`},I={class:`file-toolbar`},L={class:`flex gap-2 items-center`},ee={class:`text-sm text-gray-600 min-w-12 text-center`},te={class:`word-layout`},ne={class:`word-main`},re={key:0,class:`word-outline`},ie={class:`outline-content`},ae=[`onClick`],R={class:`word-content`},z=[`innerHTML`],B=(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`,F,[(0,i.createElementVNode)(`div`,I,[(0,i.createElementVNode)(`div`,L,[(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`,ee,(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`,te,[(0,i.createElementVNode)(`div`,ne,[(0,i.createCommentVNode)(` 侧边栏目录 `),n.value?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,re,[l[5]||=(0,i.createElementVNode)(`div`,{class:`outline-header`},[(0,i.createElementVNode)(`h3`,{class:`text-sm font-semibold`},`文档目录`)],-1),(0,i.createElementVNode)(`div`,ie,[((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,ae))),128))])])):(0,i.createCommentVNode)(`v-if`,!0),(0,i.createCommentVNode)(` 主要内容区域 `),(0,i.createElementVNode)(`div`,R,[(0,i.createElementVNode)(`div`,{class:`word-document`,style:(0,i.normalizeStyle)({transform:`scale(${r.value/100})`,transformOrigin:`top center`}),innerHTML:e.content},null,12,z)])])])])}}});var V=n.t(B,[[`__scopeId`,`data-v-dae08a5f`]]);const H={class:`file-container excel-container`},U={class:`file-toolbar`},W={class:`flex justify-between items-center`},G={class:`flex gap-2 items-center`},K={key:1,class:`text-sm text-gray-600`},q={class:`flex gap-2 items-center`},J={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)(``),s=(0,i.ref)(!1),c=(0,i.ref)(1),l=(0,i.ref)(50),u=(0,i.ref)([]),f=(0,i.ref)([]),p=(0,i.computed)(()=>Math.ceil(u.value.length/l.value)),m=(0,i.computed)(()=>{let e=(c.value-1)*l.value;return u.value.slice(e,e+l.value)}),h=e=>{l.value=e,c.value=1},g=e=>{o.value=``,u.value=[],f.value=[],c.value=1;let t=n.sheets.find(t=>t.name===e);if(t)try{let e=t.data.length>0?t:t.load?.()??t;u.value=e.data,f.value=e.columns}catch(e){o.value=e instanceof Error?e.message:`工作表解析失败`}};return(0,i.watch)(r,e=>{g(e)}),(0,i.watch)(()=>n.sheets,e=>{r.value=e[0]?.name??``,g(r.value)},{immediate:!0}),(n,g)=>{let _=t.t;return(0,i.openBlock)(),(0,i.createElementBlock)(`div`,H,[(0,i.createCommentVNode)(` 工具栏 `),(0,i.createElementVNode)(`div`,U,[(0,i.createElementVNode)(`div`,W,[(0,i.createElementVNode)(`div`,G,[e.sheets.length>1?((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.NTabs),{key:0,value:r.value,"onUpdate:value":g[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`,K,` 工作表: `+(0,i.toDisplayString)(r.value),1))]),(0,i.createElementVNode)(`div`,q,[(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,onClick:g[1]||=e=>s.value=!s.value},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(_,{name:`ic:outline-format-paint`})]),default:(0,i.withCtx)(()=>[(0,i.createTextVNode)(` `+(0,i.toDisplayString)(s.value?`紧凑视图`:`完整格式`),1)]),_:1})])])]),(0,i.createElementVNode)(`div`,J,[(0,i.createCommentVNode)(` 信息面板 `),u.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)(u.value.length)+` | 总列数: `+(0,i.toDisplayString)(f.value.length)+` | 当前页: `+(0,i.toDisplayString)(c.value)+`/`+(0,i.toDisplayString)(p.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":!s.value}])},[u.value.length>0?((0,i.openBlock)(),(0,i.createElementBlock)(`table`,ce,[(0,i.createElementVNode)(`thead`,null,[(0,i.createElementVNode)(`tr`,null,[g[4]||=(0,i.createElementVNode)(`th`,{class:`row-number`},`行号`,-1),((0,i.openBlock)(!0),(0,i.createElementBlock)(i.Fragment,null,(0,i.renderList)(f.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)(m.value,(e,t)=>((0,i.openBlock)(),(0,i.createElementBlock)(`tr`,{key:t,class:`excel-row`},[(0,i.createElementVNode)(`td`,fe,(0,i.toDisplayString)((c.value-1)*l.value+t+1),1),((0,i.openBlock)(!0),(0,i.createElementBlock)(i.Fragment,null,(0,i.renderList)(f.value,t=>(0,i.withDirectives)(((0,i.openBlock)(),(0,i.createElementBlock)(`td`,{key:t.key,class:(0,i.normalizeClass)([`excel-cell`,[(0,i.unref)(x)(e[t.key]?.value),e[t.key]?.merged?`merged-cell`:``,s.value?``:`compact-cell`]]),rowspan:e[t.key]?.rowspan||1,colspan:e[t.key]?.colspan||1,title:e[t.key]?.displayValue??(0,i.unref)(y)(e[t.key]?.value)},(0,i.toDisplayString)(e[t.key]?.displayValue??(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:o.value||`该工作表没有数据或解析失败`},{extra:(0,i.withCtx)(()=>[(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,onClick:g[2]||=e=>n.$emit(`reload`)},{default:(0,i.withCtx)(()=>[...g[5]||=[(0,i.createTextVNode)(` 重新解析 `,-1)]]),_:1})]),_:1},8,[`description`])]))],2),(0,i.createCommentVNode)(` 分页 `),p.value>1?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,he,[(0,i.createVNode)((0,i.unref)(a.NPagination),{page:c.value,"onUpdate:page":g[3]||=e=>c.value=e,"page-count":p.value,"page-size":l.value,"show-size-picker":``,"page-sizes":(0,i.unref)(d),"onUpdate:pageSize":h},null,8,[`page`,`page-count`,`page-size`,`page-sizes`])])):(0,i.createCommentVNode)(`v-if`,!0)])])])}}});var Y=n.t(ge,[[`__scopeId`,`data-v-5ed6f50d`]]);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,previewLimits:o}=e,s=(0,i.ref)(!1),c=(0,i.ref)(``),l=(0,i.ref)(0),u=(0,i.ref)(!1),d=(0,i.ref)(``),f=(0,i.ref)(0),m=(0,i.ref)(``),_=(0,i.ref)([]),v=(0,i.ref)([]),y=0,b=null,x=!1,S=(e,t)=>e===y&&!x&&!t.signal.aborted,C=(0,i.computed)(()=>a.value&&a.value!==`未知文件`?a.value:n.value?.name?n.value.name:r.value?p(r.value):`未知文件`),w=(0,i.computed)(()=>h(C.value)),T=(0,i.computed)(()=>g(w.value)),k=(0,i.computed)(()=>!!(n.value||r.value)),A=()=>{let e=d.value;d.value=``,e.startsWith(`blob:`)&&URL.revokeObjectURL(e.split(`#`)[0])},j=()=>{c.value=``,s.value=!1,l.value=0,A(),f.value=0,m.value=``,_.value=[],v.value=[]},M=e=>{c.value=e,s.value=!1},N=()=>{y+=1,b?.abort(),b=null,j()},P=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],C.value,{type:r.type})}throw Error(`未提供文件或URL`)},F=async(e,t,n)=>{switch(t){case`pdf`:{let t=await E(e);if(n!==y){URL.revokeObjectURL(t.url.split(`#`)[0]);return}d.value=t.url,f.value=t.totalPages;break}case`word`:{let t=await D(e);if(n!==y)return;m.value=t.content,_.value=t.headings;break}case`excel`:{let t=await O(e,o?.value);if(n!==y)return;v.value=t.sheets;break}default:throw Error(`不支持的文件格式`)}},I=async()=>{if(x)return!1;let e=++y;b?.abort();let t=new AbortController;if(b=t,j(),!k.value)return b=null,!1;s.value=!0;try{let n=w.value,r=await P(t.signal);return e===y?(l.value=r.size,await F(r,n,e),S(e,t)):!1}catch(n){if(!S(e,t))return!1;let r=n instanceof Error?n.message:`未知错误`;return M(`${w.value.toUpperCase()}文件加载失败: ${r}`),!1}finally{e===y&&(s.value=!1,b=null)}};return(0,i.watch)([n,r],([e,t])=>{!e&&!t&&N()},{flush:`sync`}),(0,i.watch)(()=>n.value?.size,e=>{l.value=e||0},{immediate:!0}),(0,i.onUnmounted)(()=>{x=!0,N()}),{loading:s,error:c,fileSize:l,showModal:u,hasSource:k,pdfUrl:d,pdfTotalPages:f,wordContent:m,wordHeadings:_,excelSheets:v,displayFileName:C,fileType:w,fileConfig:T,loadFile:I,openPreview:async()=>{if(x)return;let e=n.value||r.value;u.value=!0,await I()&&e&&e===(n.value||r.value)&&!x&&t(`preview`,e)},downloadFile:()=>{let e=n.value||r.value;if(!(x||!e)){if(n.value){let e=URL.createObjectURL(n.value);Object.assign(document.createElement(`a`),{href:e,download:C.value}).click(),URL.revokeObjectURL(e)}else if(r.value){let e=X(r.value,window.location.href);if(!e){M(`不支持此文件地址`);return}window.open(e,`_blank`,`noopener,noreferrer`)}t(`download`,e)}},clearPreview:N}}function Q(e){let t=(0,i.ref)(!1),n=()=>{t.value=!!document.fullscreenElement},r=(e,t=0)=>t>=e.length?(console.warn(`无法切换全屏状态`),Promise.resolve()):e[t]().catch(()=>r(e,t+1));return(0,i.onMounted)(()=>{f.forEach(e=>document.addEventListener(e,n))}),(0,i.onUnmounted)(()=>{f.forEach(e=>document.removeEventListener(e,n))}),{isFullscreen:t,toggleFullscreen:async()=>{let t=e.value;t&&await r(document.fullscreenElement?[()=>document.exitFullscreen(),()=>document.webkitExitFullscreen(),()=>document.mozCancelFullScreen(),()=>document.msExitFullscreen()]:[()=>t.requestFullscreen(),()=>t.webkitRequestFullscreen(),()=>t.mozRequestFullScreen(),()=>t.msRequestFullscreen()])},exitFullscreen:async()=>{if(document.fullscreenElement)try{await document.exitFullscreen()}catch{}t.value=!1}}}const _e={class:`c-file-preview-wrapper`},ve={key:0,class:`file-info-card`},ye={class:`file-info`},be={class:`file-icon`},xe={class:`file-details`},Se={class:`file-name`},Ce={class:`file-meta`},we={class:`file-size`},Te={class:`file-actions`},Ee={key:1,class:`c-file-preview-inline`},De={key:1,class:`status-container`,role:`status`},$={class:`modal-header`},Oe={class:`modal-title`},ke={class:`modal-actions`},Ae={class:`modal-content`},je={class:`preview-header`},Me={class:`flex justify-between items-center`},Ne={class:`flex items-center gap-3`},Pe={class:`text-sm text-gray-500`},Fe={class:`flex gap-2`},Ie={class:`preview-content`},Le={key:1,class:`status-container`},Re=(0,i.defineComponent)({name:`C_FilePreview`,__name:`index`,props:{previewLimits:{},file:{},url:{},fileName:{default:`未知文件`},autoPreview:{type:Boolean,default:!1},inline:{type:Boolean,default:!1}},emits:[`preview`,`download`],setup(e,{emit:n}){let r=e,{file:o,url:s,fileName:c,autoPreview:l,inline:u,previewLimits:d}=(0,i.toRefs)(r),{loading:f,error:p,fileSize:h,showModal:g,hasSource:_,pdfUrl:v,pdfTotalPages:y,wordContent:b,wordHeadings:x,excelSheets:S,displayFileName:C,fileType:w,fileConfig:T,loadFile:E,openPreview:D,downloadFile:O}=Z({file:o,url:s,fileName:c,previewLimits:d},n),k=(0,i.ref)(),{isFullscreen:A,toggleFullscreen:j,exitFullscreen:M}=Q(k);return(0,i.watch)(g,e=>{e||M()}),(0,i.watch)([o,s,l,u,c,()=>r.previewLimits?.maxBytes,()=>r.previewLimits?.maxCells],(e,t)=>{if(!(typeof window>`u`||!_.value)){if(u.value){E();return}if(g.value){[0,1,4,5,6].some(n=>e[n]!==t?.[n])&&E();return}l.value&&D()}},{immediate:!0}),(e,n)=>{let r=t.t;return(0,i.openBlock)(),(0,i.createElementBlock)(`div`,_e,[(0,i.createCommentVNode)(` 文件信息卡片模式 `),!(0,i.unref)(l)&&!(0,i.unref)(u)?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,ve,[(0,i.createElementVNode)(`div`,ye,[(0,i.createElementVNode)(`div`,be,[(0,i.createVNode)(r,{name:(0,i.unref)(T).icon,size:40,color:(0,i.unref)(T).color},null,8,[`name`,`color`])]),(0,i.createElementVNode)(`div`,xe,[(0,i.createElementVNode)(`div`,Se,[(0,i.createVNode)((0,i.unref)(a.NEllipsis),{style:{"max-width":`250px`}},{default:(0,i.withCtx)(()=>[(0,i.createTextVNode)((0,i.toDisplayString)((0,i.unref)(C)),1)]),_:1}),(0,i.createVNode)((0,i.unref)(a.NTag),{type:(0,i.unref)(T).tagType,size:`small`},{default:(0,i.withCtx)(()=>[(0,i.createTextVNode)((0,i.toDisplayString)((0,i.unref)(w).toUpperCase()),1)]),_:1},8,[`type`])]),(0,i.createElementVNode)(`div`,Ce,[(0,i.createElementVNode)(`span`,we,(0,i.toDisplayString)((0,i.unref)(m)((0,i.unref)(h))),1)])]),(0,i.createElementVNode)(`div`,Te,[(0,i.createVNode)((0,i.unref)(a.NButton),{type:`primary`,onClick:(0,i.unref)(D)},{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)(O)},{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)(u)?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,Ee,[(0,i.unref)(_)?(0,i.unref)(f)||(0,i.unref)(p)?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,De,[(0,i.unref)(f)?((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)(p)},{footer:(0,i.withCtx)(()=>[(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,onClick:(0,i.unref)(E)},{default:(0,i.withCtx)(()=>[...n[5]||=[(0,i.createTextVNode)(`重试`,-1)]]),_:1},8,[`onClick`])]),_:1},8,[`description`]))])):(0,i.unref)(w)===`pdf`?((0,i.openBlock)(),(0,i.createBlock)(P,{key:2,"pdf-url":(0,i.unref)(v),"total-pages":(0,i.unref)(y)},null,8,[`pdf-url`,`total-pages`])):(0,i.unref)(w)===`word`?((0,i.openBlock)(),(0,i.createBlock)(V,{key:3,content:(0,i.unref)(b),headings:(0,i.unref)(x)},null,8,[`content`,`headings`])):(0,i.unref)(w)===`excel`?((0,i.openBlock)(),(0,i.createBlock)(Y,{key:4,sheets:(0,i.unref)(S),onReload:(0,i.unref)(E)},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)(u)?(0,i.createCommentVNode)(`v-if`,!0):((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.NModal),{key:2,show:(0,i.unref)(g),"onUpdate:show":n[1]||=e=>(0,i.isRef)(g)?g.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:k,class:`modal-container`},[(0,i.createCommentVNode)(` 自定义头部 `),(0,i.createElementVNode)(`div`,$,[(0,i.createElementVNode)(`div`,Oe,[(0,i.createVNode)(r,{name:(0,i.unref)(T).icon,size:20,color:(0,i.unref)(T).color},null,8,[`name`,`color`]),(0,i.createElementVNode)(`span`,null,(0,i.toDisplayString)((0,i.unref)(C)),1)]),(0,i.createElementVNode)(`div`,ke,[(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,type:`tertiary`,onClick:(0,i.unref)(O)},{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=>g.value=!1},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(r,{name:`ic:outline-close`})]),_:1})])]),(0,i.createCommentVNode)(` 预览内容 `),(0,i.createElementVNode)(`div`,Ae,[(0,i.createCommentVNode)(` 文件信息头部 `),(0,i.createElementVNode)(`div`,je,[(0,i.createElementVNode)(`div`,Me,[(0,i.createElementVNode)(`div`,Ne,[(0,i.createVNode)((0,i.unref)(a.NTag),{type:(0,i.unref)(T).tagType,size:`small`},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(r,{name:(0,i.unref)(T).icon},null,8,[`name`])]),default:(0,i.withCtx)(()=>[(0,i.createTextVNode)(` `+(0,i.toDisplayString)((0,i.unref)(w).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)(C)),1)]),_:1}),(0,i.createElementVNode)(`span`,Pe,(0,i.toDisplayString)((0,i.unref)(m)((0,i.unref)(h))),1)]),(0,i.createElementVNode)(`div`,Fe,[(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,type:`tertiary`,disabled:(0,i.unref)(f),onClick:(0,i.unref)(E)},{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)(j)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(r,{name:(0,i.unref)(A)?`ic:outline-fullscreen-exit`:`ic:outline-fullscreen`},null,8,[`name`])]),default:(0,i.withCtx)(()=>[(0,i.createTextVNode)(` `+(0,i.toDisplayString)((0,i.unref)(A)?`退出全屏`:`全屏`),1)]),_:1},8,[`onClick`])])])]),(0,i.createCommentVNode)(` 预览内容区域 `),(0,i.createElementVNode)(`div`,Ie,[(0,i.createCommentVNode)(` 加载和错误状态 `),(0,i.unref)(_)?(0,i.unref)(f)||(0,i.unref)(p)?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,Le,[(0,i.unref)(f)?((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)(w).toUpperCase())+`文件... `,1)]),_:1})):((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.NResult),{key:1,status:`error`,title:`预览失败`,description:(0,i.unref)(p)},{footer:(0,i.withCtx)(()=>[(0,i.createVNode)((0,i.unref)(a.NButton),{onClick:(0,i.unref)(E)},{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)(w)===`pdf`?((0,i.openBlock)(),(0,i.createBlock)(P,{key:0,"pdf-url":(0,i.unref)(v),"total-pages":(0,i.unref)(y)},null,8,[`pdf-url`,`total-pages`])):(0,i.unref)(w)===`word`?((0,i.openBlock)(),(0,i.createBlock)(V,{key:1,content:(0,i.unref)(b),headings:(0,i.unref)(x)},null,8,[`content`,`headings`])):(0,i.unref)(w)===`excel`?((0,i.openBlock)(),(0,i.createBlock)(Y,{key:2,sheets:(0,i.unref)(S),onReload:(0,i.unref)(E)},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)(w).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 ze=n.t(Re,[[`__scopeId`,`data-v-3988cd59`]]);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 ze}});
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=>e==null?``:String(e),b=1e5,x=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`};function S(e,t,n){if(e===void 0)return t;if(!Number.isSafeInteger(e)||e<=0)throw Error(`previewLimits.${n} 必须为有限正整数`);return e}function C(e,t){let n=t?.isMain?t:{rowspan:1,colspan:1};return{value:e?.v??``,displayValue:e?e.w??o.utils.format_cell(e):``,type:e?.t,merged:!!t,hidden:!!(t&&!t.isMain),rowspan:n.rowspan,colspan:n.colspan}}function w(e,t,n){let{s:r,e:i}=e;return[r.r,r.c,i.r,i.c].every(Number.isSafeInteger)&&r.r>=0&&r.c>=0&&i.r<=t&&i.c<=n&&i.r>=r.r&&i.c>=r.c}const T=(e,t,n=b)=>{let{c:r,r:i}=o.utils.decode_range(e[`!ref`]||`A1:A1`).e,a=(r+1)*(i+1);if(!Number.isSafeInteger(a)||a<1||a>S(n,b,`maxCells`))throw Error(`工作表范围超过 ${n.toLocaleString()} 个单元格的预览上限,请下载文件查看`);let s=Array.from({length:r+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)}}),c=new Map,l=0;return t.forEach(e=>{if(!w(e,i,r))return;let{s:{r:t,c:n},e:{r:o,c:s}}=e;if(l+=(o-t+1)*(s-n+1),!Number.isSafeInteger(l)||l>a)throw Error(`合并单元格累计范围超过预览上限,请下载文件查看`);for(let e=t;e<=o;e++)for(let r=n;r<=s;r++)c.set(`${e}-${r}`,{isMain:e===t&&r===n,rowspan:o-t+1,colspan:s-n+1})}),{data:Array.from({length:i+1},(t,n)=>{let i={};for(let t=0;t<=r;t++){let r=e[o.utils.encode_cell({r:n,c:t})],a=c.get(`${n}-${t}`);i[`col_${t}`]=C(r,a)}return i}),columns:s}};async function E(e){return{url:URL.createObjectURL(e)+`#toolbar=1&navpanes=1&scrollbar=1&view=FitH`,totalPages:1}}async function D(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 O(e,t={}){let n=S(t.maxBytes,33554432,`maxBytes`),r=S(t.maxCells,b,`maxCells`);if(e.size>n)throw Error(`Excel 文件超过 ${m(n)} 的预览上限,请下载文件查看`);let i=await e.arrayBuffer(),a=o.read(i,{type:`array`,cellStyles:!0,cellFormula:!0,cellDates:!0});if(!a.SheetNames.length)throw Error(`Excel文件中没有找到工作表`);let s=a.SheetNames.map(e=>{let t=a.Sheets[e],n=t[`!merges`]||[];return{name:e,data:[],merges:n,columns:[],load:()=>T(t,n,r)}});return Object.assign(s[0],s[0].load?.()),{sheets:s}}const k={class:`file-container pdf-container`},A={class:`file-toolbar`},j={class:`file-viewer`},M=[`src`],N=(0,i.defineComponent)({name:`FilePreviewPdfViewer`,__name:`index`,props:{pdfUrl:{},totalPages:{}},setup(e){return(t,n)=>((0,i.openBlock)(),(0,i.createElementBlock)(`div`,k,[(0,i.createElementVNode)(`div`,A,[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`,j,[e.pdfUrl?((0,i.openBlock)(),(0,i.createElementBlock)(`iframe`,{key:0,src:e.pdfUrl,title:`PDF预览`,class:`pdf-frame`},null,8,M)):(0,i.createCommentVNode)(`v-if`,!0)])]))}});var P=n.t(N,[[`__scopeId`,`data-v-db027bb4`]]);const F={class:`file-container word-container`},I={class:`file-toolbar`},L={class:`flex gap-2 items-center`},ee={class:`text-sm text-gray-600 min-w-12 text-center`},te={class:`word-layout`},ne={class:`word-main`},re={key:0,class:`word-outline`},ie={class:`outline-content`},ae=[`onClick`],R={class:`word-content`},z=[`innerHTML`],B=(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`,F,[(0,i.createElementVNode)(`div`,I,[(0,i.createElementVNode)(`div`,L,[(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`,ee,(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`,te,[(0,i.createElementVNode)(`div`,ne,[(0,i.createCommentVNode)(` 侧边栏目录 `),n.value?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,re,[l[5]||=(0,i.createElementVNode)(`div`,{class:`outline-header`},[(0,i.createElementVNode)(`h3`,{class:`text-sm font-semibold`},`文档目录`)],-1),(0,i.createElementVNode)(`div`,ie,[((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,ae))),128))])])):(0,i.createCommentVNode)(`v-if`,!0),(0,i.createCommentVNode)(` 主要内容区域 `),(0,i.createElementVNode)(`div`,R,[(0,i.createElementVNode)(`div`,{class:`word-document`,style:(0,i.normalizeStyle)({transform:`scale(${r.value/100})`,transformOrigin:`top center`}),innerHTML:e.content},null,12,z)])])])])}}});var V=n.t(B,[[`__scopeId`,`data-v-dae08a5f`]]);const H={class:`file-container excel-container`},U={class:`file-toolbar`},W={class:`flex justify-between items-center`},G={class:`flex gap-2 items-center`},K={key:1,class:`text-sm text-gray-600`},q={class:`flex gap-2 items-center`},J={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)(``),s=(0,i.ref)(!1),c=(0,i.ref)(1),l=(0,i.ref)(50),u=(0,i.ref)([]),f=(0,i.ref)([]),p=(0,i.computed)(()=>Math.ceil(u.value.length/l.value)),m=(0,i.computed)(()=>{let e=(c.value-1)*l.value;return u.value.slice(e,e+l.value)}),h=e=>{l.value=e,c.value=1},g=e=>{o.value=``,u.value=[],f.value=[],c.value=1;let t=n.sheets.find(t=>t.name===e);if(t)try{let e=t.data.length>0?t:t.load?.()??t;u.value=e.data,f.value=e.columns}catch(e){o.value=e instanceof Error?e.message:`工作表解析失败`}};return(0,i.watch)(r,e=>{g(e)}),(0,i.watch)(()=>n.sheets,e=>{r.value=e[0]?.name??``,g(r.value)},{immediate:!0}),(n,g)=>{let _=t.t;return(0,i.openBlock)(),(0,i.createElementBlock)(`div`,H,[(0,i.createCommentVNode)(` 工具栏 `),(0,i.createElementVNode)(`div`,U,[(0,i.createElementVNode)(`div`,W,[(0,i.createElementVNode)(`div`,G,[e.sheets.length>1?((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.NTabs),{key:0,value:r.value,"onUpdate:value":g[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:(0,i.withCtx)(()=>[(0,i.createTextVNode)((0,i.toDisplayString)(e.name),1)]),_:2},1032,[`name`]))),128))]),_:1},8,[`value`])):((0,i.openBlock)(),(0,i.createElementBlock)(`span`,K,` 工作表: `+(0,i.toDisplayString)(r.value),1))]),(0,i.createElementVNode)(`div`,q,[(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,onClick:g[1]||=e=>s.value=!s.value},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(_,{name:`ic:outline-format-paint`})]),default:(0,i.withCtx)(()=>[(0,i.createTextVNode)(` `+(0,i.toDisplayString)(s.value?`紧凑视图`:`完整格式`),1)]),_:1})])])]),(0,i.createElementVNode)(`div`,J,[(0,i.createCommentVNode)(` 信息面板 `),u.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)(u.value.length)+` | 总列数: `+(0,i.toDisplayString)(f.value.length)+` | 当前页: `+(0,i.toDisplayString)(c.value)+`/`+(0,i.toDisplayString)(p.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":!s.value}])},[u.value.length>0?((0,i.openBlock)(),(0,i.createElementBlock)(`table`,ce,[(0,i.createElementVNode)(`thead`,null,[(0,i.createElementVNode)(`tr`,null,[g[4]||=(0,i.createElementVNode)(`th`,{class:`row-number`},`行号`,-1),((0,i.openBlock)(!0),(0,i.createElementBlock)(i.Fragment,null,(0,i.renderList)(f.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)(m.value,(e,t)=>((0,i.openBlock)(),(0,i.createElementBlock)(`tr`,{key:t,class:`excel-row`},[(0,i.createElementVNode)(`td`,fe,(0,i.toDisplayString)((c.value-1)*l.value+t+1),1),((0,i.openBlock)(!0),(0,i.createElementBlock)(i.Fragment,null,(0,i.renderList)(f.value,t=>(0,i.withDirectives)(((0,i.openBlock)(),(0,i.createElementBlock)(`td`,{key:t.key,class:(0,i.normalizeClass)([`excel-cell`,[(0,i.unref)(x)(e[t.key]?.value),e[t.key]?.merged?`merged-cell`:``,s.value?``:`compact-cell`]]),rowspan:e[t.key]?.rowspan||1,colspan:e[t.key]?.colspan||1,title:e[t.key]?.displayValue??(0,i.unref)(y)(e[t.key]?.value)},(0,i.toDisplayString)(e[t.key]?.displayValue??(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:o.value||`该工作表没有数据或解析失败`},{extra:(0,i.withCtx)(()=>[(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,onClick:g[2]||=e=>n.$emit(`reload`)},{default:(0,i.withCtx)(()=>[...g[5]||=[(0,i.createTextVNode)(` 重新解析 `,-1)]]),_:1})]),_:1},8,[`description`])]))],2),(0,i.createCommentVNode)(` 分页 `),p.value>1?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,he,[(0,i.createVNode)((0,i.unref)(a.NPagination),{page:c.value,"onUpdate:page":g[3]||=e=>c.value=e,"page-count":p.value,"page-size":l.value,"show-size-picker":``,"page-sizes":(0,i.unref)(d),"onUpdate:pageSize":h},null,8,[`page`,`page-count`,`page-size`,`page-sizes`])])):(0,i.createCommentVNode)(`v-if`,!0)])])])}}});var Y=n.t(ge,[[`__scopeId`,`data-v-5a0226ce`]]);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,previewLimits:o}=e,s=(0,i.ref)(!1),c=(0,i.ref)(``),l=(0,i.ref)(0),u=(0,i.ref)(!1),d=(0,i.ref)(``),f=(0,i.ref)(0),m=(0,i.ref)(``),_=(0,i.ref)([]),v=(0,i.ref)([]),y=0,b=null,x=!1,S=(e,t)=>e===y&&!x&&!t.signal.aborted,C=(0,i.computed)(()=>a.value&&a.value!==`未知文件`?a.value:n.value?.name?n.value.name:r.value?p(r.value):`未知文件`),w=(0,i.computed)(()=>h(C.value)),T=(0,i.computed)(()=>g(w.value)),k=(0,i.computed)(()=>!!(n.value||r.value)),A=()=>{let e=d.value;d.value=``,e.startsWith(`blob:`)&&URL.revokeObjectURL(e.split(`#`)[0])},j=()=>{c.value=``,s.value=!1,l.value=0,A(),f.value=0,m.value=``,_.value=[],v.value=[]},M=e=>{c.value=e,s.value=!1},N=()=>{y+=1,b?.abort(),b=null,j()},P=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],C.value,{type:r.type})}throw Error(`未提供文件或URL`)},F=async(e,t,n)=>{switch(t){case`pdf`:{let t=await E(e);if(n!==y){URL.revokeObjectURL(t.url.split(`#`)[0]);return}d.value=t.url,f.value=t.totalPages;break}case`word`:{let t=await D(e);if(n!==y)return;m.value=t.content,_.value=t.headings;break}case`excel`:{let t=await O(e,o?.value);if(n!==y)return;v.value=t.sheets;break}default:throw Error(`不支持的文件格式`)}},I=async()=>{if(x)return!1;let e=++y;b?.abort();let t=new AbortController;if(b=t,j(),!k.value)return b=null,!1;s.value=!0;try{let n=w.value,r=await P(t.signal);return e===y?(l.value=r.size,await F(r,n,e),S(e,t)):!1}catch(n){if(!S(e,t))return!1;let r=n instanceof Error?n.message:`未知错误`;return M(`${w.value.toUpperCase()}文件加载失败: ${r}`),!1}finally{e===y&&(s.value=!1,b=null)}};return(0,i.watch)([n,r],([e,t])=>{!e&&!t&&N()},{flush:`sync`}),(0,i.watch)(()=>n.value?.size,e=>{l.value=e||0},{immediate:!0}),(0,i.onUnmounted)(()=>{x=!0,N()}),{loading:s,error:c,fileSize:l,showModal:u,hasSource:k,pdfUrl:d,pdfTotalPages:f,wordContent:m,wordHeadings:_,excelSheets:v,displayFileName:C,fileType:w,fileConfig:T,loadFile:I,openPreview:async()=>{if(x)return;let e=n.value||r.value;u.value=!0,await I()&&e&&e===(n.value||r.value)&&!x&&t(`preview`,e)},downloadFile:()=>{let e=n.value||r.value;if(!(x||!e)){if(n.value){let e=URL.createObjectURL(n.value);Object.assign(document.createElement(`a`),{href:e,download:C.value}).click(),URL.revokeObjectURL(e)}else if(r.value){let e=X(r.value,window.location.href);if(!e){M(`不支持此文件地址`);return}window.open(e,`_blank`,`noopener,noreferrer`)}t(`download`,e)}},clearPreview:N}}function Q(e){let t=(0,i.ref)(!1),n=()=>{t.value=!!document.fullscreenElement},r=(e,t=0)=>t>=e.length?(console.warn(`无法切换全屏状态`),Promise.resolve()):e[t]().catch(()=>r(e,t+1));return(0,i.onMounted)(()=>{f.forEach(e=>document.addEventListener(e,n))}),(0,i.onUnmounted)(()=>{f.forEach(e=>document.removeEventListener(e,n))}),{isFullscreen:t,toggleFullscreen:async()=>{let t=e.value;t&&await r(document.fullscreenElement?[()=>document.exitFullscreen(),()=>document.webkitExitFullscreen(),()=>document.mozCancelFullScreen(),()=>document.msExitFullscreen()]:[()=>t.requestFullscreen(),()=>t.webkitRequestFullscreen(),()=>t.mozRequestFullScreen(),()=>t.msRequestFullscreen()])},exitFullscreen:async()=>{if(document.fullscreenElement)try{await document.exitFullscreen()}catch{}t.value=!1}}}const _e={class:`c-file-preview-wrapper`},ve={key:0,class:`file-info-card`},ye={class:`file-info`},be={class:`file-icon`},xe={class:`file-details`},Se={class:`file-name`},Ce={class:`file-meta`},we={class:`file-size`},Te={class:`file-actions`},Ee={key:1,class:`c-file-preview-inline`},De={key:1,class:`status-container`,role:`status`},$={class:`modal-header`},Oe={class:`modal-title`},ke={class:`modal-actions`},Ae={class:`modal-content`},je={class:`preview-header`},Me={class:`flex justify-between items-center`},Ne={class:`flex items-center gap-3`},Pe={class:`text-sm text-gray-500`},Fe={class:`flex gap-2`},Ie={class:`preview-content`},Le={key:1,class:`status-container`},Re=(0,i.defineComponent)({name:`C_FilePreview`,__name:`index`,props:{previewLimits:{},file:{},url:{},fileName:{default:`未知文件`},autoPreview:{type:Boolean,default:!1},inline:{type:Boolean,default:!1}},emits:[`preview`,`download`],setup(e,{emit:n}){let r=e,{file:o,url:s,fileName:c,autoPreview:l,inline:u,previewLimits:d}=(0,i.toRefs)(r),{loading:f,error:p,fileSize:h,showModal:g,hasSource:_,pdfUrl:v,pdfTotalPages:y,wordContent:b,wordHeadings:x,excelSheets:S,displayFileName:C,fileType:w,fileConfig:T,loadFile:E,openPreview:D,downloadFile:O}=Z({file:o,url:s,fileName:c,previewLimits:d},n),k=(0,i.ref)(),{isFullscreen:A,toggleFullscreen:j,exitFullscreen:M}=Q(k);return(0,i.watch)(g,e=>{e||M()}),(0,i.watch)([o,s,l,u,c,()=>r.previewLimits?.maxBytes,()=>r.previewLimits?.maxCells],(e,t)=>{if(!(typeof window>`u`||!_.value)){if(u.value){E();return}if(g.value){[0,1,4,5,6].some(n=>e[n]!==t?.[n])&&E();return}l.value&&D()}},{immediate:!0}),(e,n)=>{let r=t.t;return(0,i.openBlock)(),(0,i.createElementBlock)(`div`,_e,[(0,i.createCommentVNode)(` 文件信息卡片模式 `),!(0,i.unref)(l)&&!(0,i.unref)(u)?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,ve,[(0,i.createElementVNode)(`div`,ye,[(0,i.createElementVNode)(`div`,be,[(0,i.createVNode)(r,{name:(0,i.unref)(T).icon,size:40,color:(0,i.unref)(T).color},null,8,[`name`,`color`])]),(0,i.createElementVNode)(`div`,xe,[(0,i.createElementVNode)(`div`,Se,[(0,i.createVNode)((0,i.unref)(a.NEllipsis),{style:{"max-width":`250px`}},{default:(0,i.withCtx)(()=>[(0,i.createTextVNode)((0,i.toDisplayString)((0,i.unref)(C)),1)]),_:1}),(0,i.createVNode)((0,i.unref)(a.NTag),{type:(0,i.unref)(T).tagType,size:`small`},{default:(0,i.withCtx)(()=>[(0,i.createTextVNode)((0,i.toDisplayString)((0,i.unref)(w).toUpperCase()),1)]),_:1},8,[`type`])]),(0,i.createElementVNode)(`div`,Ce,[(0,i.createElementVNode)(`span`,we,(0,i.toDisplayString)((0,i.unref)(m)((0,i.unref)(h))),1)])]),(0,i.createElementVNode)(`div`,Te,[(0,i.createVNode)((0,i.unref)(a.NButton),{type:`primary`,onClick:(0,i.unref)(D)},{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)(O)},{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)(u)?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,Ee,[(0,i.unref)(_)?(0,i.unref)(f)||(0,i.unref)(p)?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,De,[(0,i.unref)(f)?((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)(p)},{footer:(0,i.withCtx)(()=>[(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,onClick:(0,i.unref)(E)},{default:(0,i.withCtx)(()=>[...n[5]||=[(0,i.createTextVNode)(`重试`,-1)]]),_:1},8,[`onClick`])]),_:1},8,[`description`]))])):(0,i.unref)(w)===`pdf`?((0,i.openBlock)(),(0,i.createBlock)(P,{key:2,"pdf-url":(0,i.unref)(v),"total-pages":(0,i.unref)(y)},null,8,[`pdf-url`,`total-pages`])):(0,i.unref)(w)===`word`?((0,i.openBlock)(),(0,i.createBlock)(V,{key:3,content:(0,i.unref)(b),headings:(0,i.unref)(x)},null,8,[`content`,`headings`])):(0,i.unref)(w)===`excel`?((0,i.openBlock)(),(0,i.createBlock)(Y,{key:4,sheets:(0,i.unref)(S),onReload:(0,i.unref)(E)},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)(u)?(0,i.createCommentVNode)(`v-if`,!0):((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.NModal),{key:2,show:(0,i.unref)(g),"onUpdate:show":n[1]||=e=>(0,i.isRef)(g)?g.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:k,class:`modal-container`},[(0,i.createCommentVNode)(` 自定义头部 `),(0,i.createElementVNode)(`div`,$,[(0,i.createElementVNode)(`div`,Oe,[(0,i.createVNode)(r,{name:(0,i.unref)(T).icon,size:20,color:(0,i.unref)(T).color},null,8,[`name`,`color`]),(0,i.createElementVNode)(`span`,null,(0,i.toDisplayString)((0,i.unref)(C)),1)]),(0,i.createElementVNode)(`div`,ke,[(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,type:`tertiary`,onClick:(0,i.unref)(O)},{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=>g.value=!1},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(r,{name:`ic:outline-close`})]),_:1})])]),(0,i.createCommentVNode)(` 预览内容 `),(0,i.createElementVNode)(`div`,Ae,[(0,i.createCommentVNode)(` 文件信息头部 `),(0,i.createElementVNode)(`div`,je,[(0,i.createElementVNode)(`div`,Me,[(0,i.createElementVNode)(`div`,Ne,[(0,i.createVNode)((0,i.unref)(a.NTag),{type:(0,i.unref)(T).tagType,size:`small`},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(r,{name:(0,i.unref)(T).icon},null,8,[`name`])]),default:(0,i.withCtx)(()=>[(0,i.createTextVNode)(` `+(0,i.toDisplayString)((0,i.unref)(w).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)(C)),1)]),_:1}),(0,i.createElementVNode)(`span`,Pe,(0,i.toDisplayString)((0,i.unref)(m)((0,i.unref)(h))),1)]),(0,i.createElementVNode)(`div`,Fe,[(0,i.createVNode)((0,i.unref)(a.NButton),{size:`small`,type:`tertiary`,disabled:(0,i.unref)(f),onClick:(0,i.unref)(E)},{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)(j)},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)(r,{name:(0,i.unref)(A)?`ic:outline-fullscreen-exit`:`ic:outline-fullscreen`},null,8,[`name`])]),default:(0,i.withCtx)(()=>[(0,i.createTextVNode)(` `+(0,i.toDisplayString)((0,i.unref)(A)?`退出全屏`:`全屏`),1)]),_:1},8,[`onClick`])])])]),(0,i.createCommentVNode)(` 预览内容区域 `),(0,i.createElementVNode)(`div`,Ie,[(0,i.createCommentVNode)(` 加载和错误状态 `),(0,i.unref)(_)?(0,i.unref)(f)||(0,i.unref)(p)?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,Le,[(0,i.unref)(f)?((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)(w).toUpperCase())+`文件... `,1)]),_:1})):((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.NResult),{key:1,status:`error`,title:`预览失败`,description:(0,i.unref)(p)},{footer:(0,i.withCtx)(()=>[(0,i.createVNode)((0,i.unref)(a.NButton),{onClick:(0,i.unref)(E)},{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)(w)===`pdf`?((0,i.openBlock)(),(0,i.createBlock)(P,{key:0,"pdf-url":(0,i.unref)(v),"total-pages":(0,i.unref)(y)},null,8,[`pdf-url`,`total-pages`])):(0,i.unref)(w)===`word`?((0,i.openBlock)(),(0,i.createBlock)(V,{key:1,content:(0,i.unref)(b),headings:(0,i.unref)(x)},null,8,[`content`,`headings`])):(0,i.unref)(w)===`excel`?((0,i.openBlock)(),(0,i.createBlock)(Y,{key:2,sheets:(0,i.unref)(S),onReload:(0,i.unref)(E)},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)(w).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 ze=n.t(Re,[[`__scopeId`,`data-v-3988cd59`]]);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 ze}});
@@ -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,NModal as M,NPagination as N,NResult as P,NSpin as F,NTabPane as I,NTabs as L,NTag as ee,NText as R}from"naive-ui";import*as z from"xlsx";import B from"mammoth";const V={pdf:`pdf`,doc:`word`,docx:`word`,xls:`excel`,xlsx:`excel`},H={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}},W=[20,50,100,200],G=[`fullscreenchange`,`webkitfullscreenchange`,`mozfullscreenchange`,`MSFullscreenChange`],K=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]},J=e=>{if(!e||e===`未知文件`)return`unknown`;let t=e.toLowerCase().split(`.`).pop();return t&&V[t]||`unknown`},Y=e=>H[e]||H.unknown,X=(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}},te=e=>{let t=``;for(;e>=0;)t=String.fromCharCode(65+e%26)+t,e=Math.floor(e/26)-1;return t},Z=e=>e==null?``:String(e),Q=1e5,ne=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`};function $(e,t,n){if(e===void 0)return t;if(!Number.isSafeInteger(e)||e<=0)throw Error(`previewLimits.${n} 必须为有限正整数`);return e}function re(e,t){let n=t?.isMain?t:{rowspan:1,colspan:1};return{value:e?.v??``,displayValue:e?e.w??z.utils.format_cell(e):``,type:e?.t,merged:!!t,hidden:!!(t&&!t.isMain),rowspan:n.rowspan,colspan:n.colspan}}function ie(e,t,n){let{s:r,e:i}=e;return[r.r,r.c,i.r,i.c].every(Number.isSafeInteger)&&r.r>=0&&r.c>=0&&i.r<=t&&i.c<=n&&i.r>=r.r&&i.c>=r.c}const ae=(e,t,n=Q)=>{let{c:r,r:i}=z.utils.decode_range(e[`!ref`]||`A1:A1`).e,a=(r+1)*(i+1);if(!Number.isSafeInteger(a)||a<1||a>$(n,Q,`maxCells`))throw Error(`工作表范围超过 ${n.toLocaleString()} 个单元格的预览上限,请下载文件查看`);let o=Array.from({length:r+1},(t,n)=>{let r=e[z.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)}}),s=new Map,c=0;return t.forEach(e=>{if(!ie(e,i,r))return;let{s:{r:t,c:n},e:{r:o,c:l}}=e;if(c+=(o-t+1)*(l-n+1),!Number.isSafeInteger(c)||c>a)throw Error(`合并单元格累计范围超过预览上限,请下载文件查看`);for(let e=t;e<=o;e++)for(let r=n;r<=l;r++)s.set(`${e}-${r}`,{isMain:e===t&&r===n,rowspan:o-t+1,colspan:l-n+1})}),{data:Array.from({length:i+1},(t,n)=>{let i={};for(let t=0;t<=r;t++){let r=e[z.utils.encode_cell({r:n,c:t})],a=s.get(`${n}-${t}`);i[`col_${t}`]=re(r,a)}return i}),columns:o}};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 B.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,t={}){let n=$(t.maxBytes,33554432,`maxBytes`),r=$(t.maxCells,Q,`maxCells`);if(e.size>n)throw Error(`Excel 文件超过 ${q(n)} 的预览上限,请下载文件查看`);let i=await e.arrayBuffer(),a=z.read(i,{type:`array`,cellStyles:!0,cellFormula:!0,cellDates:!0});if(!a.SheetNames.length)throw Error(`Excel文件中没有找到工作表`);let o=a.SheetNames.map(e=>{let t=a.Sheets[e],n=t[`!merges`]||[];return{name:e,data:[],merges:n,columns:[],load:()=>ae(t,n,r)}});return Object.assign(o[0],o[0].load?.()),{sheets:o}}const le={class:`file-container pdf-container`},ue={class:`file-toolbar`},de={class:`file-viewer`},fe=[`src`];var pe=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 me={class:`file-container word-container`},he={class:`file-toolbar`},ge={class:`flex gap-2 items-center`},_e={class:`text-sm text-gray-600 min-w-12 text-center`},ve={class:`word-layout`},ye={class:`word-main`},be={key:0,class:`word-outline`},xe={class:`outline-content`},Se=[`onClick`],Ce={class:`word-content`},we=[`innerHTML`];var Te=t(d({__name:`index`,props:{content:{},headings:{}},setup(t){let n=v(!0),i=v(100),a=X(i,U.word),d=e=>{document.getElementById(e)?.scrollIntoView({behavior:`smooth`,block:`start`})};return(f,h)=>{let g=e;return _(),s(`div`,me,[c(`div`,he,[c(`div`,ge,[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`,_e,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`,ve,[c(`div`,ye,[o(` 侧边栏目录 `),n.value?(_(),s(`div`,be,[h[5]||=c(`div`,{class:`outline-header`},[c(`h3`,{class:`text-sm font-semibold`},`文档目录`)],-1),c(`div`,xe,[(_(!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,Se))),128))])])):o(`v-if`,!0),o(` 主要内容区域 `),c(`div`,Ce,[c(`div`,{class:`word-document`,style:m({transform:`scale(${i.value/100})`,transformOrigin:`top center`}),innerHTML:t.content},null,12,we)])])])])}}}),[[`__scopeId`,`data-v-dae08a5f`]]);const Ee={class:`file-container excel-container`},De={class:`file-toolbar`},Oe={class:`flex justify-between items-center`},ke={class:`flex gap-2 items-center`},Ae={key:1,class:`text-sm text-gray-600`},je={class:`flex gap-2 items-center`},Me={class:`excel-viewer`},Ne={key:0,class:`excel-info`},Pe={class:`excel-table-container`},Fe={key:0,class:`excel-table`},Ie={class:`header-content`},Le={class:`column-letter`},Re={class:`column-title`},ze={class:`row-number`},Be=[`rowspan`,`colspan`,`title`],Ve={key:1,class:`excel-empty`},He={key:0,class:`excel-pagination`};var Ue=t(d({__name:`index`,props:{sheets:{}},emits:[`reload`],setup(t){let n=t,d=v(``),f=v(``),h=v(!1),g=v(1),b=v(50),S=v([]),k=v([]),A=i(()=>Math.ceil(S.value.length/b.value)),M=i(()=>{let e=(g.value-1)*b.value;return S.value.slice(e,e+b.value)}),P=e=>{b.value=e,g.value=1},F=e=>{f.value=``,S.value=[],k.value=[],g.value=1;let t=n.sheets.find(t=>t.name===e);if(t)try{let e=t.data.length>0?t:t.load?.()??t;S.value=e.data,k.value=e.columns}catch(e){f.value=e instanceof Error?e.message:`工作表解析失败`}};return T(d,e=>{F(e)}),T(()=>n.sheets,e=>{d.value=e[0]?.name??``,F(d.value)},{immediate:!0}),(n,i)=>{let v=e;return _(),s(`div`,Ee,[o(` 工具栏 `),c(`div`,De,[c(`div`,Oe,[c(`div`,ke,[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`,Ae,` 工作表: `+x(d.value),1))]),c(`div`,je,[u(C(O),{size:`small`,onClick:i[1]||=e=>h.value=!h.value},{icon:E(()=>[u(v,{name:`ic:outline-format-paint`})]),default:E(()=>[l(` `+x(h.value?`紧凑视图`:`完整格式`),1)]),_:1})])])]),c(`div`,Me,[o(` 信息面板 `),S.value.length>0?(_(),s(`div`,Ne,[u(C(R),{depth:`3`,class:`text-sm`},{default:E(()=>[l(` 当前工作表: `+x(d.value)+` | 总行数: `+x(S.value.length)+` | 总列数: `+x(k.value.length)+` | 当前页: `+x(g.value)+`/`+x(A.value),1)]),_:1})])):o(`v-if`,!0),o(` 表格 `),c(`div`,Pe,[c(`div`,{class:p([`excel-table-wrapper`,{"simple-mode":!h.value}])},[S.value.length>0?(_(),s(`table`,Fe,[c(`thead`,null,[c(`tr`,null,[i[4]||=c(`th`,{class:`row-number`},`行号`,-1),(_(!0),s(r,null,y(k.value,(e,t)=>(_(),s(`th`,{key:e.key,class:`excel-header`,style:m({minWidth:e.width+`px`})},[c(`div`,Ie,[c(`span`,Le,x(C(te)(t)),1),c(`span`,Re,x(e.title),1)])],4))),128))])]),c(`tbody`,null,[(_(!0),s(r,null,y(M.value,(e,t)=>(_(),s(`tr`,{key:t,class:`excel-row`},[c(`td`,ze,x((g.value-1)*b.value+t+1),1),(_(!0),s(r,null,y(k.value,t=>D((_(),s(`td`,{key:t.key,class:p([`excel-cell`,[C(ne)(e[t.key]?.value),e[t.key]?.merged?`merged-cell`:``,h.value?``:`compact-cell`]]),rowspan:e[t.key]?.rowspan||1,colspan:e[t.key]?.colspan||1,title:e[t.key]?.displayValue??C(Z)(e[t.key]?.value)},x(e[t.key]?.displayValue??C(Z)(e[t.key]?.value)),11,Be)),[[w,!e[t.key]?.hidden]])),128))]))),128))])])):(_(),s(`div`,Ve,[u(C(j),{description:f.value||`该工作表没有数据或解析失败`},{extra:E(()=>[u(C(O),{size:`small`,onClick:i[2]||=e=>n.$emit(`reload`)},{default:E(()=>[...i[5]||=[l(` 重新解析 `,-1)]]),_:1})]),_:1},8,[`description`])]))],2),o(` 分页 `),A.value>1?(_(),s(`div`,He,[u(C(N),{page:g.value,"onUpdate:page":i[3]||=e=>g.value=e,"page-count":A.value,"page-size":b.value,"show-size-picker":``,"page-sizes":C(W),"onUpdate:pageSize":P},null,8,[`page`,`page-count`,`page-size`,`page-sizes`])])):o(`v-if`,!0)])])])}}}),[[`__scopeId`,`data-v-5ed6f50d`]]);function We(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 Ge(e,t){let{file:n,url:r,fileName:a,previewLimits:o}=e,s=v(!1),c=v(``),l=v(0),u=v(!1),d=v(``),f=v(0),p=v(``),m=v([]),h=v([]),_=0,y=null,b=!1,x=(e,t)=>e===_&&!b&&!t.signal.aborted,S=i(()=>a.value&&a.value!==`未知文件`?a.value:n.value?.name?n.value.name:r.value?K(r.value):`未知文件`),C=i(()=>J(S.value)),w=i(()=>Y(C.value)),E=i(()=>!!(n.value||r.value)),D=()=>{let e=d.value;d.value=``,e.startsWith(`blob:`)&&URL.revokeObjectURL(e.split(`#`)[0])},O=()=>{c.value=``,s.value=!1,l.value=0,D(),f.value=0,p.value=``,m.value=[],h.value=[]},k=e=>{c.value=e,s.value=!1},A=()=>{_+=1,y?.abort(),y=null,O()},j=async e=>{let t=n.value,i=r.value;if(t)return t;if(i){let t=We(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],S.value,{type:r.type})}throw Error(`未提供文件或URL`)},M=async(e,t,n)=>{switch(t){case`pdf`:{let t=await oe(e);if(n!==_){URL.revokeObjectURL(t.url.split(`#`)[0]);return}d.value=t.url,f.value=t.totalPages;break}case`word`:{let t=await se(e);if(n!==_)return;p.value=t.content,m.value=t.headings;break}case`excel`:{let t=await ce(e,o?.value);if(n!==_)return;h.value=t.sheets;break}default:throw Error(`不支持的文件格式`)}},N=async()=>{if(b)return!1;let e=++_;y?.abort();let t=new AbortController;if(y=t,O(),!E.value)return y=null,!1;s.value=!0;try{let n=C.value,r=await j(t.signal);return e===_?(l.value=r.size,await M(r,n,e),x(e,t)):!1}catch(n){if(!x(e,t))return!1;let r=n instanceof Error?n.message:`未知错误`;return k(`${C.value.toUpperCase()}文件加载失败: ${r}`),!1}finally{e===_&&(s.value=!1,y=null)}};return T([n,r],([e,t])=>{!e&&!t&&A()},{flush:`sync`}),T(()=>n.value?.size,e=>{l.value=e||0},{immediate:!0}),g(()=>{b=!0,A()}),{loading:s,error:c,fileSize:l,showModal:u,hasSource:E,pdfUrl:d,pdfTotalPages:f,wordContent:p,wordHeadings:m,excelSheets:h,displayFileName:S,fileType:C,fileConfig:w,loadFile:N,openPreview:async()=>{if(b)return;let e=n.value||r.value;u.value=!0,await N()&&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:S.value}).click(),URL.revokeObjectURL(e)}else if(r.value){let e=We(r.value,window.location.href);if(!e){k(`不支持此文件地址`);return}window.open(e,`_blank`,`noopener,noreferrer`)}t(`download`,e)}},clearPreview:A}}function Ke(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(()=>{G.forEach(e=>document.addEventListener(e,n))}),g(()=>{G.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 qe={class:`c-file-preview-wrapper`},Je={key:0,class:`file-info-card`},Ye={class:`file-info`},Xe={class:`file-icon`},Ze={class:`file-details`},Qe={class:`file-name`},$e={class:`file-meta`},et={class:`file-size`},tt={class:`file-actions`},nt={key:1,class:`c-file-preview-inline`},rt={key:1,class:`status-container`,role:`status`},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:1,class:`status-container`};var ht=t(d({name:`C_FilePreview`,__name:`index`,props:{previewLimits:{},file:{},url:{},fileName:{default:`未知文件`},autoPreview:{type:Boolean,default:!1},inline:{type:Boolean,default:!1}},emits:[`preview`,`download`],setup(t,{emit:n}){let i=t,{file:d,url:p,fileName:m,autoPreview:h,inline:g,previewLimits:y}=S(i),{loading:b,error:w,fileSize:D,showModal:k,hasSource:j,pdfUrl:N,pdfTotalPages:I,wordContent:L,wordHeadings:R,excelSheets:z,displayFileName:B,fileType:V,fileConfig:H,loadFile:U,openPreview:W,downloadFile:G}=Ge({file:d,url:p,fileName:m,previewLimits:y},n),K=v(),{isFullscreen:J,toggleFullscreen:Y,exitFullscreen:X}=Ke(K);return T(k,e=>{e||X()}),T([d,p,h,g,m,()=>i.previewLimits?.maxBytes,()=>i.previewLimits?.maxCells],(e,t)=>{if(!(typeof window>`u`||!j.value)){if(g.value){U();return}if(k.value){[0,1,4,5,6].some(n=>e[n]!==t?.[n])&&U();return}h.value&&W()}},{immediate:!0}),(t,n)=>{let i=e;return _(),s(`div`,qe,[o(` 文件信息卡片模式 `),!C(h)&&!C(g)?(_(),s(`div`,Je,[c(`div`,Ye,[c(`div`,Xe,[u(i,{name:C(H).icon,size:40,color:C(H).color},null,8,[`name`,`color`])]),c(`div`,Ze,[c(`div`,Qe,[u(C(A),{style:{"max-width":`250px`}},{default:E(()=>[l(x(C(B)),1)]),_:1}),u(C(ee),{type:C(H).tagType,size:`small`},{default:E(()=>[l(x(C(V).toUpperCase()),1)]),_:1},8,[`type`])]),c(`div`,$e,[c(`span`,et,x(C(q)(C(D))),1)])]),c(`div`,tt,[u(C(O),{type:`primary`,onClick:C(W)},{icon:E(()=>[u(i,{name:`ic:outline-visibility`})]),default:E(()=>[n[2]||=l(` 预览 `,-1)]),_:1},8,[`onClick`]),u(C(O),{type:`tertiary`,onClick:C(G)},{icon:E(()=>[u(i,{name:`ic:outline-download`})]),default:E(()=>[n[3]||=l(` 下载 `,-1)]),_:1},8,[`onClick`])])])])):o(`v-if`,!0),C(g)?(_(),s(`div`,nt,[C(j)?C(b)||C(w)?(_(),s(`div`,rt,[C(b)?(_(),a(C(F),{key:0,size:`large`},{description:E(()=>[...n[4]||=[l(`正在加载文档…`,-1)]]),_:1})):(_(),a(C(P),{key:1,status:`error`,title:`预览失败`,description:C(w)},{footer:E(()=>[u(C(O),{size:`small`,onClick:C(U)},{default:E(()=>[...n[5]||=[l(`重试`,-1)]]),_:1},8,[`onClick`])]),_:1},8,[`description`]))])):C(V)===`pdf`?(_(),a(pe,{key:2,"pdf-url":C(N),"total-pages":C(I)},null,8,[`pdf-url`,`total-pages`])):C(V)===`word`?(_(),a(Te,{key:3,content:C(L),headings:C(R)},null,8,[`content`,`headings`])):C(V)===`excel`?(_(),a(Ue,{key:4,sheets:C(z),onReload:C(U)},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(g)?o(`v-if`,!0):(_(),a(C(M),{key:2,show:C(k),"onUpdate:show":n[1]||=e=>f(k)?k.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:K,class:`modal-container`},[o(` 自定义头部 `),c(`div`,it,[c(`div`,at,[u(i,{name:C(H).icon,size:20,color:C(H).color},null,8,[`name`,`color`]),c(`span`,null,x(C(B)),1)]),c(`div`,ot,[u(C(O),{size:`small`,type:`tertiary`,onClick:C(G)},{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=>k.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(ee),{type:C(H).tagType,size:`small`},{icon:E(()=>[u(i,{name:C(H).icon},null,8,[`name`])]),default:E(()=>[l(` `+x(C(V).toUpperCase()),1)]),_:1},8,[`type`]),u(C(A),{style:{"max-width":`300px`}},{default:E(()=>[l(x(C(B)),1)]),_:1}),c(`span`,dt,x(C(q)(C(D))),1)]),c(`div`,ft,[u(C(O),{size:`small`,type:`tertiary`,disabled:C(b),onClick:C(U)},{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(Y)},{icon:E(()=>[u(i,{name:C(J)?`ic:outline-fullscreen-exit`:`ic:outline-fullscreen`},null,8,[`name`])]),default:E(()=>[l(` `+x(C(J)?`退出全屏`:`全屏`),1)]),_:1},8,[`onClick`])])])]),o(` 预览内容区域 `),c(`div`,pt,[o(` 加载和错误状态 `),C(j)?C(b)||C(w)?(_(),s(`div`,mt,[C(b)?(_(),a(C(F),{key:0,size:`large`},{description:E(()=>[l(` 正在加载`+x(C(V).toUpperCase())+`文件... `,1)]),_:1})):(_(),a(C(P),{key:1,status:`error`,title:`预览失败`,description:C(w)},{footer:E(()=>[u(C(O),{onClick:C(U)},{default:E(()=>[...n[8]||=[l(`重试`,-1)]]),_:1},8,[`onClick`])]),_:1},8,[`description`]))])):(_(),s(r,{key:2},[o(` 文件预览 — 委托给子组件 `),C(V)===`pdf`?(_(),a(pe,{key:0,"pdf-url":C(N),"total-pages":C(I)},null,8,[`pdf-url`,`total-pages`])):C(V)===`word`?(_(),a(Te,{key:1,content:C(L),headings:C(R)},null,8,[`content`,`headings`])):C(V)===`excel`?(_(),a(Ue,{key:2,sheets:C(z),onReload:C(U)},null,8,[`sheets`,`onReload`])):(_(),s(r,{key:3},[o(` 不支持的文件类型 `),u(C(P),{status:`warning`,title:`不支持的文件格式`,description:`暂不支持预览 ${C(V).toUpperCase()} 格式文件`},null,8,[`description`])],2112))],64)):(_(),a(C(P),{key:0,status:`info`,title:`暂无预览文件`,description:`选择文件后即可预览`}))])])],512)]),_:1},8,[`show`]))])}}}),[[`__scopeId`,`data-v-3988cd59`]]);export{Ke as n,Ge 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 ee,NText as R}from"naive-ui";import*as z from"xlsx";import B from"mammoth";const V={pdf:`pdf`,doc:`word`,docx:`word`,xls:`excel`,xlsx:`excel`},H={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}},W=[20,50,100,200],G=[`fullscreenchange`,`webkitfullscreenchange`,`mozfullscreenchange`,`MSFullscreenChange`],K=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]},J=e=>{if(!e||e===`未知文件`)return`unknown`;let t=e.toLowerCase().split(`.`).pop();return t&&V[t]||`unknown`},Y=e=>H[e]||H.unknown,X=(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}},te=e=>{let t=``;for(;e>=0;)t=String.fromCharCode(65+e%26)+t,e=Math.floor(e/26)-1;return t},Z=e=>e==null?``:String(e),Q=1e5,ne=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`};function $(e,t,n){if(e===void 0)return t;if(!Number.isSafeInteger(e)||e<=0)throw Error(`previewLimits.${n} 必须为有限正整数`);return e}function re(e,t){let n=t?.isMain?t:{rowspan:1,colspan:1};return{value:e?.v??``,displayValue:e?e.w??z.utils.format_cell(e):``,type:e?.t,merged:!!t,hidden:!!(t&&!t.isMain),rowspan:n.rowspan,colspan:n.colspan}}function ie(e,t,n){let{s:r,e:i}=e;return[r.r,r.c,i.r,i.c].every(Number.isSafeInteger)&&r.r>=0&&r.c>=0&&i.r<=t&&i.c<=n&&i.r>=r.r&&i.c>=r.c}const ae=(e,t,n=Q)=>{let{c:r,r:i}=z.utils.decode_range(e[`!ref`]||`A1:A1`).e,a=(r+1)*(i+1);if(!Number.isSafeInteger(a)||a<1||a>$(n,Q,`maxCells`))throw Error(`工作表范围超过 ${n.toLocaleString()} 个单元格的预览上限,请下载文件查看`);let o=Array.from({length:r+1},(t,n)=>{let r=e[z.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)}}),s=new Map,c=0;return t.forEach(e=>{if(!ie(e,i,r))return;let{s:{r:t,c:n},e:{r:o,c:l}}=e;if(c+=(o-t+1)*(l-n+1),!Number.isSafeInteger(c)||c>a)throw Error(`合并单元格累计范围超过预览上限,请下载文件查看`);for(let e=t;e<=o;e++)for(let r=n;r<=l;r++)s.set(`${e}-${r}`,{isMain:e===t&&r===n,rowspan:o-t+1,colspan:l-n+1})}),{data:Array.from({length:i+1},(t,n)=>{let i={};for(let t=0;t<=r;t++){let r=e[z.utils.encode_cell({r:n,c:t})],a=s.get(`${n}-${t}`);i[`col_${t}`]=re(r,a)}return i}),columns:o}};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 B.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,t={}){let n=$(t.maxBytes,33554432,`maxBytes`),r=$(t.maxCells,Q,`maxCells`);if(e.size>n)throw Error(`Excel 文件超过 ${q(n)} 的预览上限,请下载文件查看`);let i=await e.arrayBuffer(),a=z.read(i,{type:`array`,cellStyles:!0,cellFormula:!0,cellDates:!0});if(!a.SheetNames.length)throw Error(`Excel文件中没有找到工作表`);let o=a.SheetNames.map(e=>{let t=a.Sheets[e],n=t[`!merges`]||[];return{name:e,data:[],merges:n,columns:[],load:()=>ae(t,n,r)}});return Object.assign(o[0],o[0].load?.()),{sheets:o}}const le={class:`file-container pdf-container`},ue={class:`file-toolbar`},de={class:`file-viewer`},fe=[`src`];var pe=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 me={class:`file-container word-container`},he={class:`file-toolbar`},ge={class:`flex gap-2 items-center`},_e={class:`text-sm text-gray-600 min-w-12 text-center`},ve={class:`word-layout`},ye={class:`word-main`},be={key:0,class:`word-outline`},xe={class:`outline-content`},Se=[`onClick`],Ce={class:`word-content`},we=[`innerHTML`];var Te=t(d({__name:`index`,props:{content:{},headings:{}},setup(t){let n=v(!0),i=v(100),a=X(i,U.word),d=e=>{document.getElementById(e)?.scrollIntoView({behavior:`smooth`,block:`start`})};return(f,h)=>{let g=e;return _(),s(`div`,me,[c(`div`,he,[c(`div`,ge,[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`,_e,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`,ve,[c(`div`,ye,[o(` 侧边栏目录 `),n.value?(_(),s(`div`,be,[h[5]||=c(`div`,{class:`outline-header`},[c(`h3`,{class:`text-sm font-semibold`},`文档目录`)],-1),c(`div`,xe,[(_(!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,Se))),128))])])):o(`v-if`,!0),o(` 主要内容区域 `),c(`div`,Ce,[c(`div`,{class:`word-document`,style:m({transform:`scale(${i.value/100})`,transformOrigin:`top center`}),innerHTML:t.content},null,12,we)])])])])}}}),[[`__scopeId`,`data-v-dae08a5f`]]);const Ee={class:`file-container excel-container`},De={class:`file-toolbar`},Oe={class:`flex justify-between items-center`},ke={class:`flex gap-2 items-center`},Ae={key:1,class:`text-sm text-gray-600`},je={class:`flex gap-2 items-center`},Me={class:`excel-viewer`},Ne={key:0,class:`excel-info`},Pe={class:`excel-table-container`},Fe={key:0,class:`excel-table`},Ie={class:`header-content`},Le={class:`column-letter`},Re={class:`column-title`},ze={class:`row-number`},Be=[`rowspan`,`colspan`,`title`],Ve={key:1,class:`excel-empty`},He={key:0,class:`excel-pagination`};var Ue=t(d({__name:`index`,props:{sheets:{}},emits:[`reload`],setup(t){let n=t,d=v(``),f=v(``),h=v(!1),g=v(1),b=v(50),S=v([]),k=v([]),A=i(()=>Math.ceil(S.value.length/b.value)),M=i(()=>{let e=(g.value-1)*b.value;return S.value.slice(e,e+b.value)}),P=e=>{b.value=e,g.value=1},F=e=>{f.value=``,S.value=[],k.value=[],g.value=1;let t=n.sheets.find(t=>t.name===e);if(t)try{let e=t.data.length>0?t:t.load?.()??t;S.value=e.data,k.value=e.columns}catch(e){f.value=e instanceof Error?e.message:`工作表解析失败`}};return T(d,e=>{F(e)}),T(()=>n.sheets,e=>{d.value=e[0]?.name??``,F(d.value)},{immediate:!0}),(n,i)=>{let v=e;return _(),s(`div`,Ee,[o(` 工具栏 `),c(`div`,De,[c(`div`,Oe,[c(`div`,ke,[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(()=>[l(x(e.name),1)]),_:2},1032,[`name`]))),128))]),_:1},8,[`value`])):(_(),s(`span`,Ae,` 工作表: `+x(d.value),1))]),c(`div`,je,[u(C(O),{size:`small`,onClick:i[1]||=e=>h.value=!h.value},{icon:E(()=>[u(v,{name:`ic:outline-format-paint`})]),default:E(()=>[l(` `+x(h.value?`紧凑视图`:`完整格式`),1)]),_:1})])])]),c(`div`,Me,[o(` 信息面板 `),S.value.length>0?(_(),s(`div`,Ne,[u(C(R),{depth:`3`,class:`text-sm`},{default:E(()=>[l(` 当前工作表: `+x(d.value)+` | 总行数: `+x(S.value.length)+` | 总列数: `+x(k.value.length)+` | 当前页: `+x(g.value)+`/`+x(A.value),1)]),_:1})])):o(`v-if`,!0),o(` 表格 `),c(`div`,Pe,[c(`div`,{class:p([`excel-table-wrapper`,{"simple-mode":!h.value}])},[S.value.length>0?(_(),s(`table`,Fe,[c(`thead`,null,[c(`tr`,null,[i[4]||=c(`th`,{class:`row-number`},`行号`,-1),(_(!0),s(r,null,y(k.value,(e,t)=>(_(),s(`th`,{key:e.key,class:`excel-header`,style:m({minWidth:e.width+`px`})},[c(`div`,Ie,[c(`span`,Le,x(C(te)(t)),1),c(`span`,Re,x(e.title),1)])],4))),128))])]),c(`tbody`,null,[(_(!0),s(r,null,y(M.value,(e,t)=>(_(),s(`tr`,{key:t,class:`excel-row`},[c(`td`,ze,x((g.value-1)*b.value+t+1),1),(_(!0),s(r,null,y(k.value,t=>D((_(),s(`td`,{key:t.key,class:p([`excel-cell`,[C(ne)(e[t.key]?.value),e[t.key]?.merged?`merged-cell`:``,h.value?``:`compact-cell`]]),rowspan:e[t.key]?.rowspan||1,colspan:e[t.key]?.colspan||1,title:e[t.key]?.displayValue??C(Z)(e[t.key]?.value)},x(e[t.key]?.displayValue??C(Z)(e[t.key]?.value)),11,Be)),[[w,!e[t.key]?.hidden]])),128))]))),128))])])):(_(),s(`div`,Ve,[u(C(j),{description:f.value||`该工作表没有数据或解析失败`},{extra:E(()=>[u(C(O),{size:`small`,onClick:i[2]||=e=>n.$emit(`reload`)},{default:E(()=>[...i[5]||=[l(` 重新解析 `,-1)]]),_:1})]),_:1},8,[`description`])]))],2),o(` 分页 `),A.value>1?(_(),s(`div`,He,[u(C(N),{page:g.value,"onUpdate:page":i[3]||=e=>g.value=e,"page-count":A.value,"page-size":b.value,"show-size-picker":``,"page-sizes":C(W),"onUpdate:pageSize":P},null,8,[`page`,`page-count`,`page-size`,`page-sizes`])])):o(`v-if`,!0)])])])}}}),[[`__scopeId`,`data-v-5a0226ce`]]);function We(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 Ge(e,t){let{file:n,url:r,fileName:a,previewLimits:o}=e,s=v(!1),c=v(``),l=v(0),u=v(!1),d=v(``),f=v(0),p=v(``),m=v([]),h=v([]),_=0,y=null,b=!1,x=(e,t)=>e===_&&!b&&!t.signal.aborted,S=i(()=>a.value&&a.value!==`未知文件`?a.value:n.value?.name?n.value.name:r.value?K(r.value):`未知文件`),C=i(()=>J(S.value)),w=i(()=>Y(C.value)),E=i(()=>!!(n.value||r.value)),D=()=>{let e=d.value;d.value=``,e.startsWith(`blob:`)&&URL.revokeObjectURL(e.split(`#`)[0])},O=()=>{c.value=``,s.value=!1,l.value=0,D(),f.value=0,p.value=``,m.value=[],h.value=[]},k=e=>{c.value=e,s.value=!1},A=()=>{_+=1,y?.abort(),y=null,O()},j=async e=>{let t=n.value,i=r.value;if(t)return t;if(i){let t=We(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],S.value,{type:r.type})}throw Error(`未提供文件或URL`)},M=async(e,t,n)=>{switch(t){case`pdf`:{let t=await oe(e);if(n!==_){URL.revokeObjectURL(t.url.split(`#`)[0]);return}d.value=t.url,f.value=t.totalPages;break}case`word`:{let t=await se(e);if(n!==_)return;p.value=t.content,m.value=t.headings;break}case`excel`:{let t=await ce(e,o?.value);if(n!==_)return;h.value=t.sheets;break}default:throw Error(`不支持的文件格式`)}},N=async()=>{if(b)return!1;let e=++_;y?.abort();let t=new AbortController;if(y=t,O(),!E.value)return y=null,!1;s.value=!0;try{let n=C.value,r=await j(t.signal);return e===_?(l.value=r.size,await M(r,n,e),x(e,t)):!1}catch(n){if(!x(e,t))return!1;let r=n instanceof Error?n.message:`未知错误`;return k(`${C.value.toUpperCase()}文件加载失败: ${r}`),!1}finally{e===_&&(s.value=!1,y=null)}};return T([n,r],([e,t])=>{!e&&!t&&A()},{flush:`sync`}),T(()=>n.value?.size,e=>{l.value=e||0},{immediate:!0}),g(()=>{b=!0,A()}),{loading:s,error:c,fileSize:l,showModal:u,hasSource:E,pdfUrl:d,pdfTotalPages:f,wordContent:p,wordHeadings:m,excelSheets:h,displayFileName:S,fileType:C,fileConfig:w,loadFile:N,openPreview:async()=>{if(b)return;let e=n.value||r.value;u.value=!0,await N()&&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:S.value}).click(),URL.revokeObjectURL(e)}else if(r.value){let e=We(r.value,window.location.href);if(!e){k(`不支持此文件地址`);return}window.open(e,`_blank`,`noopener,noreferrer`)}t(`download`,e)}},clearPreview:A}}function Ke(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(()=>{G.forEach(e=>document.addEventListener(e,n))}),g(()=>{G.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 qe={class:`c-file-preview-wrapper`},Je={key:0,class:`file-info-card`},Ye={class:`file-info`},Xe={class:`file-icon`},Ze={class:`file-details`},Qe={class:`file-name`},$e={class:`file-meta`},et={class:`file-size`},tt={class:`file-actions`},nt={key:1,class:`c-file-preview-inline`},rt={key:1,class:`status-container`,role:`status`},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:1,class:`status-container`};var ht=t(d({name:`C_FilePreview`,__name:`index`,props:{previewLimits:{},file:{},url:{},fileName:{default:`未知文件`},autoPreview:{type:Boolean,default:!1},inline:{type:Boolean,default:!1}},emits:[`preview`,`download`],setup(t,{emit:n}){let i=t,{file:d,url:p,fileName:m,autoPreview:h,inline:g,previewLimits:y}=S(i),{loading:b,error:w,fileSize:D,showModal:k,hasSource:j,pdfUrl:N,pdfTotalPages:I,wordContent:L,wordHeadings:R,excelSheets:z,displayFileName:B,fileType:V,fileConfig:H,loadFile:U,openPreview:W,downloadFile:G}=Ge({file:d,url:p,fileName:m,previewLimits:y},n),K=v(),{isFullscreen:J,toggleFullscreen:Y,exitFullscreen:X}=Ke(K);return T(k,e=>{e||X()}),T([d,p,h,g,m,()=>i.previewLimits?.maxBytes,()=>i.previewLimits?.maxCells],(e,t)=>{if(!(typeof window>`u`||!j.value)){if(g.value){U();return}if(k.value){[0,1,4,5,6].some(n=>e[n]!==t?.[n])&&U();return}h.value&&W()}},{immediate:!0}),(t,n)=>{let i=e;return _(),s(`div`,qe,[o(` 文件信息卡片模式 `),!C(h)&&!C(g)?(_(),s(`div`,Je,[c(`div`,Ye,[c(`div`,Xe,[u(i,{name:C(H).icon,size:40,color:C(H).color},null,8,[`name`,`color`])]),c(`div`,Ze,[c(`div`,Qe,[u(C(A),{style:{"max-width":`250px`}},{default:E(()=>[l(x(C(B)),1)]),_:1}),u(C(ee),{type:C(H).tagType,size:`small`},{default:E(()=>[l(x(C(V).toUpperCase()),1)]),_:1},8,[`type`])]),c(`div`,$e,[c(`span`,et,x(C(q)(C(D))),1)])]),c(`div`,tt,[u(C(O),{type:`primary`,onClick:C(W)},{icon:E(()=>[u(i,{name:`ic:outline-visibility`})]),default:E(()=>[n[2]||=l(` 预览 `,-1)]),_:1},8,[`onClick`]),u(C(O),{type:`tertiary`,onClick:C(G)},{icon:E(()=>[u(i,{name:`ic:outline-download`})]),default:E(()=>[n[3]||=l(` 下载 `,-1)]),_:1},8,[`onClick`])])])])):o(`v-if`,!0),C(g)?(_(),s(`div`,nt,[C(j)?C(b)||C(w)?(_(),s(`div`,rt,[C(b)?(_(),a(C(F),{key:0,size:`large`},{description:E(()=>[...n[4]||=[l(`正在加载文档…`,-1)]]),_:1})):(_(),a(C(P),{key:1,status:`error`,title:`预览失败`,description:C(w)},{footer:E(()=>[u(C(O),{size:`small`,onClick:C(U)},{default:E(()=>[...n[5]||=[l(`重试`,-1)]]),_:1},8,[`onClick`])]),_:1},8,[`description`]))])):C(V)===`pdf`?(_(),a(pe,{key:2,"pdf-url":C(N),"total-pages":C(I)},null,8,[`pdf-url`,`total-pages`])):C(V)===`word`?(_(),a(Te,{key:3,content:C(L),headings:C(R)},null,8,[`content`,`headings`])):C(V)===`excel`?(_(),a(Ue,{key:4,sheets:C(z),onReload:C(U)},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(g)?o(`v-if`,!0):(_(),a(C(M),{key:2,show:C(k),"onUpdate:show":n[1]||=e=>f(k)?k.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:K,class:`modal-container`},[o(` 自定义头部 `),c(`div`,it,[c(`div`,at,[u(i,{name:C(H).icon,size:20,color:C(H).color},null,8,[`name`,`color`]),c(`span`,null,x(C(B)),1)]),c(`div`,ot,[u(C(O),{size:`small`,type:`tertiary`,onClick:C(G)},{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=>k.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(ee),{type:C(H).tagType,size:`small`},{icon:E(()=>[u(i,{name:C(H).icon},null,8,[`name`])]),default:E(()=>[l(` `+x(C(V).toUpperCase()),1)]),_:1},8,[`type`]),u(C(A),{style:{"max-width":`300px`}},{default:E(()=>[l(x(C(B)),1)]),_:1}),c(`span`,dt,x(C(q)(C(D))),1)]),c(`div`,ft,[u(C(O),{size:`small`,type:`tertiary`,disabled:C(b),onClick:C(U)},{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(Y)},{icon:E(()=>[u(i,{name:C(J)?`ic:outline-fullscreen-exit`:`ic:outline-fullscreen`},null,8,[`name`])]),default:E(()=>[l(` `+x(C(J)?`退出全屏`:`全屏`),1)]),_:1},8,[`onClick`])])])]),o(` 预览内容区域 `),c(`div`,pt,[o(` 加载和错误状态 `),C(j)?C(b)||C(w)?(_(),s(`div`,mt,[C(b)?(_(),a(C(F),{key:0,size:`large`},{description:E(()=>[l(` 正在加载`+x(C(V).toUpperCase())+`文件... `,1)]),_:1})):(_(),a(C(P),{key:1,status:`error`,title:`预览失败`,description:C(w)},{footer:E(()=>[u(C(O),{onClick:C(U)},{default:E(()=>[...n[8]||=[l(`重试`,-1)]]),_:1},8,[`onClick`])]),_:1},8,[`description`]))])):(_(),s(r,{key:2},[o(` 文件预览 — 委托给子组件 `),C(V)===`pdf`?(_(),a(pe,{key:0,"pdf-url":C(N),"total-pages":C(I)},null,8,[`pdf-url`,`total-pages`])):C(V)===`word`?(_(),a(Te,{key:1,content:C(L),headings:C(R)},null,8,[`content`,`headings`])):C(V)===`excel`?(_(),a(Ue,{key:2,sheets:C(z),onReload:C(U)},null,8,[`sheets`,`onReload`])):(_(),s(r,{key:3},[o(` 不支持的文件类型 `),u(C(P),{status:`warning`,title:`不支持的文件格式`,description:`暂不支持预览 ${C(V).toUpperCase()} 格式文件`},null,8,[`description`])],2112))],64)):(_(),a(C(P),{key:0,status:`info`,title:`暂无预览文件`,description:`选择文件后即可预览`}))])])],512)]),_:1},8,[`show`]))])}}}),[[`__scopeId`,`data-v-3988cd59`]]);export{Ke as n,Ge as r,ht as t};