@file-viewer/core 2.0.0
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.
- package/LICENSE +160 -0
- package/README.en.md +78 -0
- package/README.md +83 -0
- package/dist/assets.d.ts +62 -0
- package/dist/assets.js +260 -0
- package/dist/browser.d.ts +1 -0
- package/dist/browser.js +1 -0
- package/dist/capabilities.d.ts +24 -0
- package/dist/capabilities.js +95 -0
- package/dist/document.d.ts +9 -0
- package/dist/document.js +86 -0
- package/dist/documentDom/anchors.d.ts +7 -0
- package/dist/documentDom/anchors.js +196 -0
- package/dist/documentDom/index.d.ts +5 -0
- package/dist/documentDom/index.js +3 -0
- package/dist/documentDom/providers.d.ts +13 -0
- package/dist/documentDom/providers.js +52 -0
- package/dist/documentDom/scroll.d.ts +12 -0
- package/dist/documentDom/scroll.js +42 -0
- package/dist/documentDom.d.ts +5 -0
- package/dist/documentDom.js +3 -0
- package/dist/documentEvents.d.ts +73 -0
- package/dist/documentEvents.js +150 -0
- package/dist/documentSearch.d.ts +50 -0
- package/dist/documentSearch.js +459 -0
- package/dist/documentZoom.d.ts +47 -0
- package/dist/documentZoom.js +184 -0
- package/dist/export.d.ts +26 -0
- package/dist/export.js +466 -0
- package/dist/formats.d.ts +305 -0
- package/dist/formats.js +207 -0
- package/dist/headless.d.ts +25 -0
- package/dist/headless.js +14 -0
- package/dist/index.d.ts +78 -0
- package/dist/index.js +118 -0
- package/dist/lifecycleFacade.d.ts +46 -0
- package/dist/lifecycleFacade.js +68 -0
- package/dist/loading.d.ts +59 -0
- package/dist/loading.js +489 -0
- package/dist/operations.d.ts +287 -0
- package/dist/operations.js +485 -0
- package/dist/options.d.ts +16 -0
- package/dist/options.js +92 -0
- package/dist/presentation.d.ts +14 -0
- package/dist/presentation.js +16 -0
- package/dist/printLayout.d.ts +19 -0
- package/dist/printLayout.js +83 -0
- package/dist/registry.d.ts +2 -0
- package/dist/registry.js +63 -0
- package/dist/rendererDispatcher.d.ts +21 -0
- package/dist/rendererDispatcher.js +42 -0
- package/dist/rendererHandler.d.ts +165 -0
- package/dist/rendererHandler.js +354 -0
- package/dist/renderers/archive.d.ts +2 -0
- package/dist/renderers/archive.js +547 -0
- package/dist/renderers/archiveCache.d.ts +10 -0
- package/dist/renderers/archiveCache.js +96 -0
- package/dist/renderers/archiveFallback.d.ts +7 -0
- package/dist/renderers/archiveFallback.js +166 -0
- package/dist/renderers/archiveShared.d.ts +23 -0
- package/dist/renderers/archiveShared.js +71 -0
- package/dist/renderers/audio.d.ts +8 -0
- package/dist/renderers/audio.js +219 -0
- package/dist/renderers/cad.d.ts +2 -0
- package/dist/renderers/cad.js +445 -0
- package/dist/renderers/code.d.ts +11 -0
- package/dist/renderers/code.js +233 -0
- package/dist/renderers/data.d.ts +7 -0
- package/dist/renderers/data.js +370 -0
- package/dist/renderers/drawing.d.ts +10 -0
- package/dist/renderers/drawing.js +537 -0
- package/dist/renderers/eda.d.ts +2 -0
- package/dist/renderers/eda.js +434 -0
- package/dist/renderers/edaParser.d.ts +77 -0
- package/dist/renderers/edaParser.js +569 -0
- package/dist/renderers/email.d.ts +2 -0
- package/dist/renderers/email.js +463 -0
- package/dist/renderers/epub.d.ts +2 -0
- package/dist/renderers/epub.js +330 -0
- package/dist/renderers/geo.d.ts +2 -0
- package/dist/renderers/geo.js +284 -0
- package/dist/renderers/image.d.ts +2 -0
- package/dist/renderers/image.js +179 -0
- package/dist/renderers/index.d.ts +21 -0
- package/dist/renderers/index.js +207 -0
- package/dist/renderers/markdown.d.ts +2 -0
- package/dist/renderers/markdown.js +83 -0
- package/dist/renderers/model.d.ts +2 -0
- package/dist/renderers/model.js +566 -0
- package/dist/renderers/ofd.d.ts +2 -0
- package/dist/renderers/ofd.js +255 -0
- package/dist/renderers/openDocument.d.ts +2 -0
- package/dist/renderers/openDocument.js +122 -0
- package/dist/renderers/pdf.d.ts +3 -0
- package/dist/renderers/pdf.js +846 -0
- package/dist/renderers/pdfStyles.d.ts +1 -0
- package/dist/renderers/pdfStyles.js +1 -0
- package/dist/renderers/pptx.d.ts +2 -0
- package/dist/renderers/pptx.js +202 -0
- package/dist/renderers/spreadsheet/state.d.ts +80 -0
- package/dist/renderers/spreadsheet/state.js +96 -0
- package/dist/renderers/spreadsheet/view.d.ts +25 -0
- package/dist/renderers/spreadsheet/view.js +833 -0
- package/dist/renderers/spreadsheet/worker/index.d.ts +2 -0
- package/dist/renderers/spreadsheet/worker/index.js +1 -0
- package/dist/renderers/spreadsheet/worker/sheetjs/SheetJsModel.d.ts +73 -0
- package/dist/renderers/spreadsheet/worker/sheetjs/SheetJsModel.js +623 -0
- package/dist/renderers/spreadsheet/worker/sheetjs/color.d.ts +2 -0
- package/dist/renderers/spreadsheet/worker/sheetjs/color.js +73 -0
- package/dist/renderers/spreadsheet/worker/sheetjs/index.d.ts +1 -0
- package/dist/renderers/spreadsheet/worker/sheetjs/index.js +1 -0
- package/dist/renderers/spreadsheet/worker/sheetjs/parser.d.ts +18 -0
- package/dist/renderers/spreadsheet/worker/sheetjs/parser.js +106 -0
- package/dist/renderers/spreadsheet/worker/sheetjs/sheet.worker.d.ts +1 -0
- package/dist/renderers/spreadsheet/worker/sheetjs/sheet.worker.js +11 -0
- package/dist/renderers/spreadsheet/worker/type.d.ts +57 -0
- package/dist/renderers/spreadsheet/worker/type.js +1 -0
- package/dist/renderers/spreadsheet.d.ts +3 -0
- package/dist/renderers/spreadsheet.js +929 -0
- package/dist/renderers/typst.d.ts +8 -0
- package/dist/renderers/typst.js +415 -0
- package/dist/renderers/umd/parser.d.ts +30 -0
- package/dist/renderers/umd/parser.js +408 -0
- package/dist/renderers/umd.d.ts +2 -0
- package/dist/renderers/umd.js +297 -0
- package/dist/renderers/video.d.ts +8 -0
- package/dist/renderers/video.js +108 -0
- package/dist/renderers/wordDoc.d.ts +5 -0
- package/dist/renderers/wordDoc.js +284 -0
- package/dist/renderers/wordDocx.d.ts +5 -0
- package/dist/renderers/wordDocx.js +501 -0
- package/dist/renderers/wordDocx.worker.d.ts +1 -0
- package/dist/renderers/wordDocx.worker.js +96 -0
- package/dist/source.d.ts +18 -0
- package/dist/source.js +152 -0
- package/dist/sourceLoading.d.ts +566 -0
- package/dist/sourceLoading.js +918 -0
- package/dist/state.d.ts +16 -0
- package/dist/state.js +81 -0
- package/dist/types.d.ts +446 -0
- package/dist/types.js +1 -0
- package/dist/viewer.d.ts +8 -0
- package/dist/viewer.js +285 -0
- package/dist/viewerOperations.d.ts +88 -0
- package/dist/viewerOperations.js +242 -0
- package/dist/watermark.d.ts +15 -0
- package/dist/watermark.js +81 -0
- package/dist/worker.d.ts +34 -0
- package/dist/worker.js +101 -0
- package/package.json +109 -0
- package/vendor/ofd/dltech/jbig2/arithmetic_decoder.js +183 -0
- package/vendor/ofd/dltech/jbig2/ccitt.js +1070 -0
- package/vendor/ofd/dltech/jbig2/compatibility.js +12 -0
- package/vendor/ofd/dltech/jbig2/core_utils.js +180 -0
- package/vendor/ofd/dltech/jbig2/is_node.js +27 -0
- package/vendor/ofd/dltech/jbig2/jbig2.js +2589 -0
- package/vendor/ofd/dltech/jbig2/jbig2_stream.js +81 -0
- package/vendor/ofd/dltech/jbig2/primitives.js +387 -0
- package/vendor/ofd/dltech/jbig2/stream.js +1348 -0
- package/vendor/ofd/dltech/jbig2/util.js +972 -0
- package/vendor/ofd/dltech/ofd/ofd.d.ts +11 -0
- package/vendor/ofd/dltech/ofd/ofd.js +100 -0
- package/vendor/ofd/dltech/ofd/ofd_parser.js +395 -0
- package/vendor/ofd/dltech/ofd/ofd_render.js +473 -0
- package/vendor/ofd/dltech/ofd/ofd_util.js +350 -0
- package/vendor/ofd/dltech/ofd/pipeline.js +26 -0
package/dist/loading.js
ADDED
|
@@ -0,0 +1,489 @@
|
|
|
1
|
+
export const FALLBACK_FILE_VIEWER_LOADING_THEME = {
|
|
2
|
+
accent: '#5f6f82',
|
|
3
|
+
soft: 'rgba(95, 111, 130, 0.12)',
|
|
4
|
+
badge: 'DOC',
|
|
5
|
+
label: '文件内容',
|
|
6
|
+
hint: '正在整理内容结构并生成预览。'
|
|
7
|
+
};
|
|
8
|
+
export const FILE_VIEWER_LOADING_THEME_MAP = {
|
|
9
|
+
doc: {
|
|
10
|
+
accent: '#2b78f6',
|
|
11
|
+
soft: 'rgba(43, 120, 246, 0.12)',
|
|
12
|
+
badge: 'W',
|
|
13
|
+
label: 'Word 文档',
|
|
14
|
+
hint: '正在准备分页、文本样式和文档结构。'
|
|
15
|
+
},
|
|
16
|
+
docx: {
|
|
17
|
+
accent: '#2b78f6',
|
|
18
|
+
soft: 'rgba(43, 120, 246, 0.12)',
|
|
19
|
+
badge: 'W',
|
|
20
|
+
label: 'Word 文档',
|
|
21
|
+
hint: '正在通过 Worker 准备文档结构、文本样式和分页结果。'
|
|
22
|
+
},
|
|
23
|
+
xls: {
|
|
24
|
+
accent: '#21a366',
|
|
25
|
+
soft: 'rgba(33, 163, 102, 0.12)',
|
|
26
|
+
badge: 'X',
|
|
27
|
+
label: 'Excel 表格',
|
|
28
|
+
hint: '正在准备工作表、样式和可视区数据。'
|
|
29
|
+
},
|
|
30
|
+
xlsx: {
|
|
31
|
+
accent: '#21a366',
|
|
32
|
+
soft: 'rgba(33, 163, 102, 0.12)',
|
|
33
|
+
badge: 'X',
|
|
34
|
+
label: 'Excel 表格',
|
|
35
|
+
hint: '正在准备工作表、样式和可视区数据。'
|
|
36
|
+
},
|
|
37
|
+
csv: {
|
|
38
|
+
accent: '#21a366',
|
|
39
|
+
soft: 'rgba(33, 163, 102, 0.12)',
|
|
40
|
+
badge: 'X',
|
|
41
|
+
label: '表格数据',
|
|
42
|
+
hint: '正在准备行列数据和基础样式。'
|
|
43
|
+
},
|
|
44
|
+
ppt: {
|
|
45
|
+
accent: '#f28b27',
|
|
46
|
+
soft: 'rgba(242, 139, 39, 0.12)',
|
|
47
|
+
badge: 'P',
|
|
48
|
+
label: 'PPT 演示文稿',
|
|
49
|
+
hint: '正在构建幻灯片布局和媒体内容。'
|
|
50
|
+
},
|
|
51
|
+
pptx: {
|
|
52
|
+
accent: '#f28b27',
|
|
53
|
+
soft: 'rgba(242, 139, 39, 0.12)',
|
|
54
|
+
badge: 'P',
|
|
55
|
+
label: 'PPT 演示文稿',
|
|
56
|
+
hint: '正在构建幻灯片布局和媒体内容。'
|
|
57
|
+
},
|
|
58
|
+
pdf: {
|
|
59
|
+
accent: '#e5534b',
|
|
60
|
+
soft: 'rgba(229, 83, 75, 0.12)',
|
|
61
|
+
badge: 'PDF',
|
|
62
|
+
label: 'PDF 文档',
|
|
63
|
+
hint: '正在载入页面位图、文本层和缩放视图。'
|
|
64
|
+
},
|
|
65
|
+
ofd: {
|
|
66
|
+
accent: '#c2410c',
|
|
67
|
+
soft: 'rgba(194, 65, 12, 0.12)',
|
|
68
|
+
badge: 'OFD',
|
|
69
|
+
label: 'OFD 版式文件',
|
|
70
|
+
hint: '正在解析国产版式文档和页面对象。'
|
|
71
|
+
},
|
|
72
|
+
zip: {
|
|
73
|
+
accent: '#a15c07',
|
|
74
|
+
soft: 'rgba(161, 92, 7, 0.12)',
|
|
75
|
+
badge: 'ZIP',
|
|
76
|
+
label: '压缩包',
|
|
77
|
+
hint: '正在启动 Worker 并读取压缩包目录。'
|
|
78
|
+
},
|
|
79
|
+
rar: {
|
|
80
|
+
accent: '#a15c07',
|
|
81
|
+
soft: 'rgba(161, 92, 7, 0.12)',
|
|
82
|
+
badge: 'RAR',
|
|
83
|
+
label: '压缩包',
|
|
84
|
+
hint: '正在启动 Worker 并读取压缩包目录。'
|
|
85
|
+
},
|
|
86
|
+
'7z': {
|
|
87
|
+
accent: '#a15c07',
|
|
88
|
+
soft: 'rgba(161, 92, 7, 0.12)',
|
|
89
|
+
badge: '7Z',
|
|
90
|
+
label: '压缩包',
|
|
91
|
+
hint: '正在启动 Worker 并读取压缩包目录。'
|
|
92
|
+
},
|
|
93
|
+
tar: {
|
|
94
|
+
accent: '#a15c07',
|
|
95
|
+
soft: 'rgba(161, 92, 7, 0.12)',
|
|
96
|
+
badge: 'TAR',
|
|
97
|
+
label: '压缩包',
|
|
98
|
+
hint: '正在启动 Worker 并读取压缩包目录。'
|
|
99
|
+
},
|
|
100
|
+
gz: {
|
|
101
|
+
accent: '#a15c07',
|
|
102
|
+
soft: 'rgba(161, 92, 7, 0.12)',
|
|
103
|
+
badge: 'GZ',
|
|
104
|
+
label: '压缩包',
|
|
105
|
+
hint: '正在启动 Worker 并读取压缩包目录。'
|
|
106
|
+
},
|
|
107
|
+
eml: {
|
|
108
|
+
accent: '#2563eb',
|
|
109
|
+
soft: 'rgba(37, 99, 235, 0.12)',
|
|
110
|
+
badge: 'EML',
|
|
111
|
+
label: '邮件文件',
|
|
112
|
+
hint: '正在解析邮件头、正文和附件。'
|
|
113
|
+
},
|
|
114
|
+
msg: {
|
|
115
|
+
accent: '#2563eb',
|
|
116
|
+
soft: 'rgba(37, 99, 235, 0.12)',
|
|
117
|
+
badge: 'MSG',
|
|
118
|
+
label: '邮件文件',
|
|
119
|
+
hint: '正在解析 Outlook 邮件和附件。'
|
|
120
|
+
},
|
|
121
|
+
olb: {
|
|
122
|
+
accent: '#0d7884',
|
|
123
|
+
soft: 'rgba(13, 120, 132, 0.12)',
|
|
124
|
+
badge: 'OLB',
|
|
125
|
+
label: 'EDA 文件',
|
|
126
|
+
hint: '正在读取 EDA 容器结构和可读属性。'
|
|
127
|
+
},
|
|
128
|
+
dra: {
|
|
129
|
+
accent: '#0d7884',
|
|
130
|
+
soft: 'rgba(13, 120, 132, 0.12)',
|
|
131
|
+
badge: 'DRA',
|
|
132
|
+
label: 'EDA 文件',
|
|
133
|
+
hint: '正在读取 EDA 容器结构和可读属性。'
|
|
134
|
+
},
|
|
135
|
+
dxf: {
|
|
136
|
+
accent: '#0f766e',
|
|
137
|
+
soft: 'rgba(15, 118, 110, 0.12)',
|
|
138
|
+
badge: 'CAD',
|
|
139
|
+
label: 'CAD 图纸',
|
|
140
|
+
hint: '正在准备 CAD 图层、几何对象和画布视图。'
|
|
141
|
+
},
|
|
142
|
+
dwg: {
|
|
143
|
+
accent: '#0f766e',
|
|
144
|
+
soft: 'rgba(15, 118, 110, 0.12)',
|
|
145
|
+
badge: 'CAD',
|
|
146
|
+
label: 'CAD 图纸',
|
|
147
|
+
hint: '正在通过 Worker 加载 DWG 几何和 LibreDWG WASM。'
|
|
148
|
+
},
|
|
149
|
+
dwf: {
|
|
150
|
+
accent: '#0f766e',
|
|
151
|
+
soft: 'rgba(15, 118, 110, 0.12)',
|
|
152
|
+
badge: 'DWF',
|
|
153
|
+
label: 'CAD 图纸',
|
|
154
|
+
hint: '正在加载 DWF native renderer 与 W2D/W3D 图形。'
|
|
155
|
+
},
|
|
156
|
+
dwfx: {
|
|
157
|
+
accent: '#0f766e',
|
|
158
|
+
soft: 'rgba(15, 118, 110, 0.12)',
|
|
159
|
+
badge: 'DWFx',
|
|
160
|
+
label: 'CAD 图纸',
|
|
161
|
+
hint: '正在加载 DWFx/XPS native renderer 与页面图形。'
|
|
162
|
+
},
|
|
163
|
+
xps: {
|
|
164
|
+
accent: '#0f766e',
|
|
165
|
+
soft: 'rgba(15, 118, 110, 0.12)',
|
|
166
|
+
badge: 'XPS',
|
|
167
|
+
label: 'CAD 图纸',
|
|
168
|
+
hint: '正在加载 XPS native renderer 与嵌入字体。'
|
|
169
|
+
},
|
|
170
|
+
drawio: {
|
|
171
|
+
accent: '#0f766e',
|
|
172
|
+
soft: 'rgba(15, 118, 110, 0.12)',
|
|
173
|
+
badge: 'DIO',
|
|
174
|
+
label: 'draw.io 图纸',
|
|
175
|
+
hint: '正在解析图元、连线和 SVG 预览。'
|
|
176
|
+
},
|
|
177
|
+
dio: {
|
|
178
|
+
accent: '#0f766e',
|
|
179
|
+
soft: 'rgba(15, 118, 110, 0.12)',
|
|
180
|
+
badge: 'DIO',
|
|
181
|
+
label: 'draw.io 图纸',
|
|
182
|
+
hint: '正在解析图元、连线和 SVG 预览。'
|
|
183
|
+
},
|
|
184
|
+
excalidraw: {
|
|
185
|
+
accent: '#6d28d9',
|
|
186
|
+
soft: 'rgba(109, 40, 217, 0.12)',
|
|
187
|
+
badge: 'EX',
|
|
188
|
+
label: 'Excalidraw 图纸',
|
|
189
|
+
hint: '正在解析手绘图元并生成安全 SVG。'
|
|
190
|
+
},
|
|
191
|
+
epub: {
|
|
192
|
+
accent: '#7c3aed',
|
|
193
|
+
soft: 'rgba(124, 58, 237, 0.12)',
|
|
194
|
+
badge: 'EPUB',
|
|
195
|
+
label: 'EPUB 电子书',
|
|
196
|
+
hint: '正在解析目录、章节资源和阅读分页。'
|
|
197
|
+
},
|
|
198
|
+
umd: {
|
|
199
|
+
accent: '#0284c7',
|
|
200
|
+
soft: 'rgba(2, 132, 199, 0.12)',
|
|
201
|
+
badge: 'UMD',
|
|
202
|
+
label: 'UMD 电子书',
|
|
203
|
+
hint: '正在解析移动电子书结构、目录和压缩正文。'
|
|
204
|
+
},
|
|
205
|
+
png: {
|
|
206
|
+
accent: '#7c5cff',
|
|
207
|
+
soft: 'rgba(124, 92, 255, 0.12)',
|
|
208
|
+
badge: 'IMG',
|
|
209
|
+
label: '图片文件',
|
|
210
|
+
hint: '正在解码像素数据并生成预览。'
|
|
211
|
+
},
|
|
212
|
+
jpg: {
|
|
213
|
+
accent: '#7c5cff',
|
|
214
|
+
soft: 'rgba(124, 92, 255, 0.12)',
|
|
215
|
+
badge: 'IMG',
|
|
216
|
+
label: '图片文件',
|
|
217
|
+
hint: '正在解码像素数据并生成预览。'
|
|
218
|
+
},
|
|
219
|
+
jpeg: {
|
|
220
|
+
accent: '#7c5cff',
|
|
221
|
+
soft: 'rgba(124, 92, 255, 0.12)',
|
|
222
|
+
badge: 'IMG',
|
|
223
|
+
label: '图片文件',
|
|
224
|
+
hint: '正在解码像素数据并生成预览。'
|
|
225
|
+
},
|
|
226
|
+
gif: {
|
|
227
|
+
accent: '#7c5cff',
|
|
228
|
+
soft: 'rgba(124, 92, 255, 0.12)',
|
|
229
|
+
badge: 'IMG',
|
|
230
|
+
label: '图片文件',
|
|
231
|
+
hint: '正在解码像素数据并生成预览。'
|
|
232
|
+
},
|
|
233
|
+
webp: {
|
|
234
|
+
accent: '#7c5cff',
|
|
235
|
+
soft: 'rgba(124, 92, 255, 0.12)',
|
|
236
|
+
badge: 'IMG',
|
|
237
|
+
label: '图片文件',
|
|
238
|
+
hint: '正在解码像素数据并生成预览。'
|
|
239
|
+
},
|
|
240
|
+
svg: {
|
|
241
|
+
accent: '#7c5cff',
|
|
242
|
+
soft: 'rgba(124, 92, 255, 0.12)',
|
|
243
|
+
badge: 'IMG',
|
|
244
|
+
label: '图片文件',
|
|
245
|
+
hint: '正在解码像素数据并生成预览。'
|
|
246
|
+
},
|
|
247
|
+
bmp: {
|
|
248
|
+
accent: '#7c5cff',
|
|
249
|
+
soft: 'rgba(124, 92, 255, 0.12)',
|
|
250
|
+
badge: 'IMG',
|
|
251
|
+
label: '图片文件',
|
|
252
|
+
hint: '正在解码像素数据并生成预览。'
|
|
253
|
+
},
|
|
254
|
+
mp4: {
|
|
255
|
+
accent: '#0f766e',
|
|
256
|
+
soft: 'rgba(15, 118, 110, 0.12)',
|
|
257
|
+
badge: 'VID',
|
|
258
|
+
label: '视频文件',
|
|
259
|
+
hint: '正在准备媒体资源和播放组件。'
|
|
260
|
+
},
|
|
261
|
+
mp3: {
|
|
262
|
+
accent: '#0f766e',
|
|
263
|
+
soft: 'rgba(15, 118, 110, 0.12)',
|
|
264
|
+
badge: 'AUD',
|
|
265
|
+
label: '音频文件',
|
|
266
|
+
hint: '正在准备音频资源和播放控件。'
|
|
267
|
+
},
|
|
268
|
+
mpeg: {
|
|
269
|
+
accent: '#0f766e',
|
|
270
|
+
soft: 'rgba(15, 118, 110, 0.12)',
|
|
271
|
+
badge: 'AUD',
|
|
272
|
+
label: '音频文件',
|
|
273
|
+
hint: '正在准备音频资源和播放控件。'
|
|
274
|
+
},
|
|
275
|
+
wav: {
|
|
276
|
+
accent: '#0f766e',
|
|
277
|
+
soft: 'rgba(15, 118, 110, 0.12)',
|
|
278
|
+
badge: 'AUD',
|
|
279
|
+
label: '音频文件',
|
|
280
|
+
hint: '正在准备音频资源和播放控件。'
|
|
281
|
+
},
|
|
282
|
+
ogg: {
|
|
283
|
+
accent: '#0f766e',
|
|
284
|
+
soft: 'rgba(15, 118, 110, 0.12)',
|
|
285
|
+
badge: 'AUD',
|
|
286
|
+
label: '音频文件',
|
|
287
|
+
hint: '正在准备音频资源和播放控件。'
|
|
288
|
+
},
|
|
289
|
+
oga: {
|
|
290
|
+
accent: '#0f766e',
|
|
291
|
+
soft: 'rgba(15, 118, 110, 0.12)',
|
|
292
|
+
badge: 'AUD',
|
|
293
|
+
label: '音频文件',
|
|
294
|
+
hint: '正在准备音频资源和播放控件。'
|
|
295
|
+
},
|
|
296
|
+
opus: {
|
|
297
|
+
accent: '#0f766e',
|
|
298
|
+
soft: 'rgba(15, 118, 110, 0.12)',
|
|
299
|
+
badge: 'AUD',
|
|
300
|
+
label: '音频文件',
|
|
301
|
+
hint: '正在准备音频资源和播放控件。'
|
|
302
|
+
},
|
|
303
|
+
m4a: {
|
|
304
|
+
accent: '#0f766e',
|
|
305
|
+
soft: 'rgba(15, 118, 110, 0.12)',
|
|
306
|
+
badge: 'AUD',
|
|
307
|
+
label: '音频文件',
|
|
308
|
+
hint: '正在准备音频资源和播放控件。'
|
|
309
|
+
},
|
|
310
|
+
aac: {
|
|
311
|
+
accent: '#0f766e',
|
|
312
|
+
soft: 'rgba(15, 118, 110, 0.12)',
|
|
313
|
+
badge: 'AUD',
|
|
314
|
+
label: '音频文件',
|
|
315
|
+
hint: '正在准备音频资源和播放控件。'
|
|
316
|
+
},
|
|
317
|
+
flac: {
|
|
318
|
+
accent: '#0f766e',
|
|
319
|
+
soft: 'rgba(15, 118, 110, 0.12)',
|
|
320
|
+
badge: 'AUD',
|
|
321
|
+
label: '音频文件',
|
|
322
|
+
hint: '正在准备音频资源和播放控件。'
|
|
323
|
+
},
|
|
324
|
+
weba: {
|
|
325
|
+
accent: '#0f766e',
|
|
326
|
+
soft: 'rgba(15, 118, 110, 0.12)',
|
|
327
|
+
badge: 'AUD',
|
|
328
|
+
label: '音频文件',
|
|
329
|
+
hint: '正在准备音频资源和播放控件。'
|
|
330
|
+
},
|
|
331
|
+
mov: {
|
|
332
|
+
accent: '#0f766e',
|
|
333
|
+
soft: 'rgba(15, 118, 110, 0.12)',
|
|
334
|
+
badge: 'VID',
|
|
335
|
+
label: '视频文件',
|
|
336
|
+
hint: '正在准备媒体资源和播放组件。'
|
|
337
|
+
},
|
|
338
|
+
avi: {
|
|
339
|
+
accent: '#0f766e',
|
|
340
|
+
soft: 'rgba(15, 118, 110, 0.12)',
|
|
341
|
+
badge: 'VID',
|
|
342
|
+
label: '视频文件',
|
|
343
|
+
hint: '正在准备媒体资源和播放组件。'
|
|
344
|
+
},
|
|
345
|
+
webm: {
|
|
346
|
+
accent: '#0f766e',
|
|
347
|
+
soft: 'rgba(15, 118, 110, 0.12)',
|
|
348
|
+
badge: 'VID',
|
|
349
|
+
label: '视频文件',
|
|
350
|
+
hint: '正在准备媒体资源和播放组件。'
|
|
351
|
+
},
|
|
352
|
+
m4v: {
|
|
353
|
+
accent: '#0f766e',
|
|
354
|
+
soft: 'rgba(15, 118, 110, 0.12)',
|
|
355
|
+
badge: 'VID',
|
|
356
|
+
label: '视频文件',
|
|
357
|
+
hint: '正在准备媒体资源和播放组件。'
|
|
358
|
+
}
|
|
359
|
+
};
|
|
360
|
+
/**
|
|
361
|
+
* 根据扩展名返回统一的加载主题。
|
|
362
|
+
* 这样不同预览器可以复用同一套视觉语义,避免颜色、图标和文案各写一份。
|
|
363
|
+
*/
|
|
364
|
+
export const resolveFileViewerLoadingTheme = (extend = '') => {
|
|
365
|
+
const normalized = extend.trim().toLowerCase();
|
|
366
|
+
return FILE_VIEWER_LOADING_THEME_MAP[normalized] || FALLBACK_FILE_VIEWER_LOADING_THEME;
|
|
367
|
+
};
|
|
368
|
+
export const createFileViewerLoadingStyleVars = (theme) => ({
|
|
369
|
+
'--viewer-accent': theme.accent,
|
|
370
|
+
'--viewer-soft': theme.soft,
|
|
371
|
+
});
|
|
372
|
+
export const createFileViewerLoadingState = (extend = '') => {
|
|
373
|
+
const theme = resolveFileViewerLoadingTheme(extend);
|
|
374
|
+
return {
|
|
375
|
+
loading: false,
|
|
376
|
+
error: '',
|
|
377
|
+
message: '',
|
|
378
|
+
theme,
|
|
379
|
+
styleVars: createFileViewerLoadingStyleVars(theme),
|
|
380
|
+
};
|
|
381
|
+
};
|
|
382
|
+
export const cloneFileViewerLoadingState = (state) => ({
|
|
383
|
+
loading: state.loading,
|
|
384
|
+
error: state.error,
|
|
385
|
+
message: state.message,
|
|
386
|
+
theme: { ...state.theme },
|
|
387
|
+
styleVars: { ...state.styleVars },
|
|
388
|
+
});
|
|
389
|
+
export const applyFileViewerLoadingState = (target, source) => {
|
|
390
|
+
target.loading = source.loading;
|
|
391
|
+
target.error = source.error;
|
|
392
|
+
target.message = source.message;
|
|
393
|
+
target.theme = { ...source.theme };
|
|
394
|
+
target.styleVars = { ...source.styleVars };
|
|
395
|
+
return target;
|
|
396
|
+
};
|
|
397
|
+
export const syncFileViewerLoadingControllerState = (target, controller, source = controller.getState()) => {
|
|
398
|
+
return applyFileViewerLoadingState(target, source);
|
|
399
|
+
};
|
|
400
|
+
export const runFileViewerLoadingControllerAction = (target, action) => {
|
|
401
|
+
return applyFileViewerLoadingState(target, action());
|
|
402
|
+
};
|
|
403
|
+
export const runFileViewerLoadingExtensionSync = ({ target, controller, extension, }) => {
|
|
404
|
+
return runFileViewerLoadingControllerAction(target, () => controller.setExtension(extension));
|
|
405
|
+
};
|
|
406
|
+
export const createFileViewerLoadingControllerActionHandlers = (target, controller) => {
|
|
407
|
+
return {
|
|
408
|
+
setExtension(nextExtend) {
|
|
409
|
+
return runFileViewerLoadingExtensionSync({
|
|
410
|
+
target,
|
|
411
|
+
controller,
|
|
412
|
+
extension: nextExtend,
|
|
413
|
+
});
|
|
414
|
+
},
|
|
415
|
+
startLoading(nextMessage) {
|
|
416
|
+
return runFileViewerLoadingControllerAction(target, () => controller.startLoading(nextMessage));
|
|
417
|
+
},
|
|
418
|
+
setLoadingMessage(nextMessage) {
|
|
419
|
+
return runFileViewerLoadingControllerAction(target, () => controller.setLoadingMessage(nextMessage));
|
|
420
|
+
},
|
|
421
|
+
stopLoading() {
|
|
422
|
+
return runFileViewerLoadingControllerAction(target, () => controller.stopLoading());
|
|
423
|
+
},
|
|
424
|
+
showError(nextMessage) {
|
|
425
|
+
return runFileViewerLoadingControllerAction(target, () => controller.showError(nextMessage));
|
|
426
|
+
},
|
|
427
|
+
clearError() {
|
|
428
|
+
return runFileViewerLoadingControllerAction(target, () => controller.clearError());
|
|
429
|
+
},
|
|
430
|
+
resetLoading() {
|
|
431
|
+
return runFileViewerLoadingControllerAction(target, () => controller.resetLoading());
|
|
432
|
+
},
|
|
433
|
+
syncLoadingState() {
|
|
434
|
+
return syncFileViewerLoadingControllerState(target, controller);
|
|
435
|
+
},
|
|
436
|
+
};
|
|
437
|
+
};
|
|
438
|
+
/**
|
|
439
|
+
* 统一管理加载、错误、文案和主题色。
|
|
440
|
+
* wrapper 只负责把这个加载状态映射到各自框架的响应式系统。
|
|
441
|
+
*/
|
|
442
|
+
export const createFileViewerLoadingController = (extend = '') => {
|
|
443
|
+
const state = createFileViewerLoadingState(extend);
|
|
444
|
+
const updateTheme = (nextExtend) => {
|
|
445
|
+
state.theme = resolveFileViewerLoadingTheme(nextExtend);
|
|
446
|
+
state.styleVars = createFileViewerLoadingStyleVars(state.theme);
|
|
447
|
+
};
|
|
448
|
+
return {
|
|
449
|
+
state,
|
|
450
|
+
setExtension(nextExtend = '') {
|
|
451
|
+
updateTheme(nextExtend);
|
|
452
|
+
return cloneFileViewerLoadingState(state);
|
|
453
|
+
},
|
|
454
|
+
startLoading(nextMessage) {
|
|
455
|
+
state.loading = true;
|
|
456
|
+
state.message = nextMessage;
|
|
457
|
+
state.error = '';
|
|
458
|
+
return cloneFileViewerLoadingState(state);
|
|
459
|
+
},
|
|
460
|
+
setLoadingMessage(nextMessage) {
|
|
461
|
+
state.message = nextMessage;
|
|
462
|
+
return cloneFileViewerLoadingState(state);
|
|
463
|
+
},
|
|
464
|
+
stopLoading() {
|
|
465
|
+
state.loading = false;
|
|
466
|
+
state.message = '';
|
|
467
|
+
return cloneFileViewerLoadingState(state);
|
|
468
|
+
},
|
|
469
|
+
showError(nextMessage) {
|
|
470
|
+
state.loading = false;
|
|
471
|
+
state.message = '';
|
|
472
|
+
state.error = nextMessage;
|
|
473
|
+
return cloneFileViewerLoadingState(state);
|
|
474
|
+
},
|
|
475
|
+
clearError() {
|
|
476
|
+
state.error = '';
|
|
477
|
+
return cloneFileViewerLoadingState(state);
|
|
478
|
+
},
|
|
479
|
+
resetLoading() {
|
|
480
|
+
state.loading = false;
|
|
481
|
+
state.message = '';
|
|
482
|
+
state.error = '';
|
|
483
|
+
return cloneFileViewerLoadingState(state);
|
|
484
|
+
},
|
|
485
|
+
getState() {
|
|
486
|
+
return cloneFileViewerLoadingState(state);
|
|
487
|
+
},
|
|
488
|
+
};
|
|
489
|
+
};
|