@file-viewer/core 2.0.10 → 2.1.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.
Files changed (114) hide show
  1. package/README.en.md +2 -2
  2. package/README.md +2 -2
  3. package/dist/config/options.d.ts +1 -1
  4. package/dist/config/options.js +1 -1
  5. package/dist/contracts/types.d.ts +71 -1
  6. package/dist/headless.d.ts +2 -2
  7. package/dist/headless.js +1 -1
  8. package/dist/index.d.ts +9 -6
  9. package/dist/index.js +105 -48
  10. package/dist/platform/assets.d.ts +3 -1
  11. package/dist/platform/assets.js +18 -2
  12. package/dist/registry/capabilities.d.ts +2 -2
  13. package/dist/registry/capabilities.js +2 -1
  14. package/dist/registry/formats.d.ts +20 -7
  15. package/dist/registry/formats.js +14 -5
  16. package/dist/registry/registry.d.ts +8 -1
  17. package/dist/registry/registry.js +29 -0
  18. package/dist/renderers/image.js +1 -10
  19. package/dist/renderers/index.d.ts +320 -2
  20. package/dist/renderers/index.js +27 -157
  21. package/dist/viewer/createViewer.js +86 -3
  22. package/package.json +17 -44
  23. package/dist/renderers/archive.d.ts +0 -2
  24. package/dist/renderers/archive.js +0 -547
  25. package/dist/renderers/archiveCache.d.ts +0 -10
  26. package/dist/renderers/archiveCache.js +0 -96
  27. package/dist/renderers/archiveFallback.d.ts +0 -7
  28. package/dist/renderers/archiveFallback.js +0 -166
  29. package/dist/renderers/archiveShared.d.ts +0 -23
  30. package/dist/renderers/archiveShared.js +0 -71
  31. package/dist/renderers/audio.d.ts +0 -8
  32. package/dist/renderers/audio.js +0 -219
  33. package/dist/renderers/cad.d.ts +0 -2
  34. package/dist/renderers/cad.js +0 -446
  35. package/dist/renderers/code.d.ts +0 -11
  36. package/dist/renderers/code.js +0 -233
  37. package/dist/renderers/data.d.ts +0 -7
  38. package/dist/renderers/data.js +0 -370
  39. package/dist/renderers/drawing.d.ts +0 -10
  40. package/dist/renderers/drawing.js +0 -882
  41. package/dist/renderers/eda.d.ts +0 -2
  42. package/dist/renderers/eda.js +0 -434
  43. package/dist/renderers/edaParser.d.ts +0 -77
  44. package/dist/renderers/edaParser.js +0 -569
  45. package/dist/renderers/email.d.ts +0 -2
  46. package/dist/renderers/email.js +0 -463
  47. package/dist/renderers/epub.d.ts +0 -2
  48. package/dist/renderers/epub.js +0 -331
  49. package/dist/renderers/geo.d.ts +0 -2
  50. package/dist/renderers/geo.js +0 -284
  51. package/dist/renderers/markdown.d.ts +0 -2
  52. package/dist/renderers/markdown.js +0 -83
  53. package/dist/renderers/model.d.ts +0 -2
  54. package/dist/renderers/model.js +0 -567
  55. package/dist/renderers/ofd.d.ts +0 -2
  56. package/dist/renderers/ofd.js +0 -256
  57. package/dist/renderers/openDocument.d.ts +0 -2
  58. package/dist/renderers/openDocument.js +0 -122
  59. package/dist/renderers/pdf.d.ts +0 -3
  60. package/dist/renderers/pdf.js +0 -1001
  61. package/dist/renderers/pdfStyles.d.ts +0 -1
  62. package/dist/renderers/pdfStyles.js +0 -1
  63. package/dist/renderers/pptx.d.ts +0 -2
  64. package/dist/renderers/pptx.js +0 -217
  65. package/dist/renderers/spreadsheet/state.d.ts +0 -80
  66. package/dist/renderers/spreadsheet/state.js +0 -96
  67. package/dist/renderers/spreadsheet/view.d.ts +0 -25
  68. package/dist/renderers/spreadsheet/view.js +0 -833
  69. package/dist/renderers/spreadsheet/worker/index.d.ts +0 -2
  70. package/dist/renderers/spreadsheet/worker/index.js +0 -1
  71. package/dist/renderers/spreadsheet/worker/sheetjs/SheetJsModel.d.ts +0 -73
  72. package/dist/renderers/spreadsheet/worker/sheetjs/SheetJsModel.js +0 -623
  73. package/dist/renderers/spreadsheet/worker/sheetjs/color.d.ts +0 -2
  74. package/dist/renderers/spreadsheet/worker/sheetjs/color.js +0 -73
  75. package/dist/renderers/spreadsheet/worker/sheetjs/index.d.ts +0 -1
  76. package/dist/renderers/spreadsheet/worker/sheetjs/index.js +0 -1
  77. package/dist/renderers/spreadsheet/worker/sheetjs/parser.d.ts +0 -18
  78. package/dist/renderers/spreadsheet/worker/sheetjs/parser.js +0 -106
  79. package/dist/renderers/spreadsheet/worker/sheetjs/sheet.worker.d.ts +0 -1
  80. package/dist/renderers/spreadsheet/worker/sheetjs/sheet.worker.js +0 -11
  81. package/dist/renderers/spreadsheet/worker/type.d.ts +0 -57
  82. package/dist/renderers/spreadsheet/worker/type.js +0 -1
  83. package/dist/renderers/spreadsheet.d.ts +0 -3
  84. package/dist/renderers/spreadsheet.js +0 -929
  85. package/dist/renderers/typst.d.ts +0 -8
  86. package/dist/renderers/typst.js +0 -547
  87. package/dist/renderers/umd/parser.d.ts +0 -30
  88. package/dist/renderers/umd/parser.js +0 -408
  89. package/dist/renderers/umd.d.ts +0 -2
  90. package/dist/renderers/umd.js +0 -297
  91. package/dist/renderers/video.d.ts +0 -8
  92. package/dist/renderers/video.js +0 -108
  93. package/dist/renderers/wordDoc.d.ts +0 -5
  94. package/dist/renderers/wordDoc.js +0 -284
  95. package/dist/renderers/wordDocx.d.ts +0 -5
  96. package/dist/renderers/wordDocx.js +0 -985
  97. package/dist/renderers/wordDocx.worker.d.ts +0 -1
  98. package/dist/renderers/wordDocx.worker.js +0 -96
  99. package/vendor/ofd/dltech/jbig2/arithmetic_decoder.js +0 -183
  100. package/vendor/ofd/dltech/jbig2/ccitt.js +0 -1070
  101. package/vendor/ofd/dltech/jbig2/compatibility.js +0 -12
  102. package/vendor/ofd/dltech/jbig2/core_utils.js +0 -180
  103. package/vendor/ofd/dltech/jbig2/is_node.js +0 -27
  104. package/vendor/ofd/dltech/jbig2/jbig2.js +0 -2589
  105. package/vendor/ofd/dltech/jbig2/jbig2_stream.js +0 -81
  106. package/vendor/ofd/dltech/jbig2/primitives.js +0 -387
  107. package/vendor/ofd/dltech/jbig2/stream.js +0 -1348
  108. package/vendor/ofd/dltech/jbig2/util.js +0 -972
  109. package/vendor/ofd/dltech/ofd/ofd.d.ts +0 -11
  110. package/vendor/ofd/dltech/ofd/ofd.js +0 -100
  111. package/vendor/ofd/dltech/ofd/ofd_parser.js +0 -395
  112. package/vendor/ofd/dltech/ofd/ofd_render.js +0 -473
  113. package/vendor/ofd/dltech/ofd/ofd_util.js +0 -350
  114. package/vendor/ofd/dltech/ofd/pipeline.js +0 -26
@@ -1,284 +0,0 @@
1
- import { defaultMsDocCss, parseMsDocToHtml } from 'msdoc-viewer';
2
- import { applyPrintPageSize, buildPrintPageStyle, formatCssPixels } from '../output/printLayout.js';
3
- import { createFileViewerZoomChangeEmitter as createZoomChangeEmitter, } from '../features/document/zoom.js';
4
- import { registerFileViewerZoomProvider, unregisterFileViewerZoomProvider } from '../features/document/dom/index.js';
5
- const PAGE_BREAK_MARKER = '<span class="msdoc-page-break"></span>';
6
- const EMPTY_PAGE_HTML = '<p class="msdoc-paragraph"><br></p>';
7
- const MSDOC_PAGE_SIZE = {
8
- width: 794,
9
- height: 1123
10
- };
11
- const MSDOC_MIN_SCALE = 0.24;
12
- const MSDOC_MAX_SCALE = 3;
13
- const MSDOC_ZOOM_STEP = 0.15;
14
- const WORD_PAGE_CSS = `
15
- .msdoc-stage{
16
- box-sizing:border-box;
17
- min-height:100%;
18
- padding:32px 24px 48px;
19
- background:#ececec;
20
- display:flex;
21
- flex-direction:column;
22
- align-items:center;
23
- gap:24px;
24
- }
25
- .msdoc-page{
26
- width:min(100%,794px);
27
- box-sizing:border-box;
28
- }
29
- .msdoc-page > .msdoc-root{
30
- box-sizing:border-box;
31
- width:100%;
32
- max-width:none;
33
- min-height:1123px;
34
- padding:clamp(24px,7%,96px) clamp(20px,6%,88px);
35
- background:#fff;
36
- border:1px solid #d9d9d9;
37
- box-shadow:0 1px 3px rgba(0,0,0,0.08), 0 12px 32px rgba(0,0,0,0.12);
38
- overflow-wrap:anywhere;
39
- }
40
- /* 表格不能沿用正文的 anywhere 断词,否则旧 DOC 的列宽和单元格内容会被过度压缩。 */
41
- .msdoc-page .msdoc-table{
42
- display:table;
43
- width:auto;
44
- max-width:100%;
45
- table-layout:auto!important;
46
- border-collapse:collapse;
47
- border-spacing:0;
48
- }
49
- .msdoc-page .msdoc-table tbody,
50
- .msdoc-page .msdoc-table tr{
51
- width:auto;
52
- }
53
- .msdoc-page .msdoc-cell{
54
- min-width:1.5em;
55
- padding:4px 6px;
56
- vertical-align:top;
57
- word-break:normal;
58
- overflow-wrap:normal;
59
- white-space:normal;
60
- }
61
- .msdoc-page .msdoc-cell .msdoc-paragraph{
62
- margin:0 0 4px;
63
- word-break:normal;
64
- overflow-wrap:break-word;
65
- }
66
- .msdoc-page .msdoc-cell .msdoc-paragraph:last-child{
67
- margin-bottom:0;
68
- }
69
- .msdoc-page .msdoc-cell span{
70
- white-space:normal!important;
71
- }
72
- .msdoc-page .msdoc-page-break{
73
- display:none;
74
- }
75
- @media (max-width: 860px){
76
- .msdoc-stage{
77
- padding:16px 12px 24px;
78
- gap:16px;
79
- }
80
- .msdoc-page{
81
- width:100%;
82
- }
83
- .msdoc-page > .msdoc-root{
84
- min-height:auto;
85
- padding:24px 20px;
86
- box-shadow:none;
87
- }
88
- }
89
- `;
90
- const MSDOC_ZOOM_CSS = `
91
- .msdoc-zoom-viewer{
92
- box-sizing:border-box;
93
- height:100%;
94
- overflow:auto;
95
- background:#ececec;
96
- }
97
- .msdoc-zoom-viewer .msdoc-stage{
98
- min-width:max-content;
99
- }
100
- .msdoc-zoom-viewer .msdoc-page{
101
- position:relative;
102
- max-width:none;
103
- overflow:visible;
104
- }
105
- .msdoc-zoom-viewer .msdoc-page > .msdoc-root{
106
- position:absolute;
107
- top:0;
108
- left:50%;
109
- width:${MSDOC_PAGE_SIZE.width}px;
110
- max-width:none;
111
- margin:0;
112
- transform-origin:top center;
113
- }
114
- `;
115
- const getTargetWindow = (target) => {
116
- return target.ownerDocument.defaultView;
117
- };
118
- function injectPageBreakMarkers(html) {
119
- return html.replace(/<(p|table|section)([^>]*?)style="([^"]*?\bbreak-before\s*:\s*page;?[^"]*?)"([^>]*)>/gi, (match) => `${PAGE_BREAK_MARKER}${match}`);
120
- }
121
- function wrapAsWordPages(html) {
122
- const normalizedHtml = injectPageBreakMarkers(html);
123
- const pages = normalizedHtml.split(PAGE_BREAK_MARKER);
124
- return `<div class="msdoc-stage">${pages.map(page => (`<section class="msdoc-page"><div class="msdoc-root">${page || EMPTY_PAGE_HTML}</div></section>`)).join('')}</div>`;
125
- }
126
- function prepareMsDocCloneForExport(target) {
127
- const clone = target.cloneNode(true);
128
- clone.classList.remove('msdoc-zoom-viewer');
129
- clone.querySelectorAll('style[data-msdoc-zoom]').forEach(style => style.remove());
130
- clone.querySelectorAll('.msdoc-stage, .msdoc-page, .msdoc-root').forEach(node => {
131
- node.style.height = 'auto';
132
- node.style.maxHeight = 'none';
133
- node.style.overflow = 'visible';
134
- node.style.transform = 'none';
135
- });
136
- clone.querySelectorAll('.msdoc-page').forEach(page => {
137
- applyPrintPageSize(page, MSDOC_PAGE_SIZE, { heightMode: 'min' });
138
- page.style.position = 'relative';
139
- page.style.width = formatCssPixels(MSDOC_PAGE_SIZE.width);
140
- page.style.maxWidth = 'none';
141
- page.style.margin = '0 auto 18px';
142
- const root = page.querySelector('.msdoc-root');
143
- if (!root) {
144
- return;
145
- }
146
- root.style.position = 'relative';
147
- root.style.top = 'auto';
148
- root.style.left = 'auto';
149
- root.style.width = formatCssPixels(MSDOC_PAGE_SIZE.width);
150
- root.style.maxWidth = 'none';
151
- root.style.minHeight = formatCssPixels(MSDOC_PAGE_SIZE.height);
152
- root.style.height = 'auto';
153
- root.style.transform = 'none';
154
- root.style.transformOrigin = 'top left';
155
- root.style.boxShadow = 'none';
156
- root.style.border = '0';
157
- root.style.overflow = 'visible';
158
- });
159
- return clone.innerHTML;
160
- }
161
- function buildMsDocPrintStyle() {
162
- return buildPrintPageStyle({
163
- selector: '.viewer-export-content .msdoc-page',
164
- width: MSDOC_PAGE_SIZE.width,
165
- height: MSDOC_PAGE_SIZE.height,
166
- heightMode: 'min'
167
- });
168
- }
169
- function makeMsDocResponsive(target) {
170
- const pages = Array.from(target.querySelectorAll('.msdoc-page'));
171
- if (!pages.length) {
172
- return () => { };
173
- }
174
- target.classList.add('msdoc-zoom-viewer');
175
- const view = getTargetWindow(target);
176
- const ResizeObserverCtor = view === null || view === void 0 ? void 0 : view.ResizeObserver;
177
- const style = target.ownerDocument.createElement('style');
178
- style.dataset.msdocZoom = 'true';
179
- style.textContent = MSDOC_ZOOM_CSS;
180
- target.prepend(style);
181
- const zoomEmitter = createZoomChangeEmitter();
182
- let resizeFrame = 0;
183
- let userZoom = 1;
184
- let currentScale = 1;
185
- let currentFitScale = 1;
186
- const clampScale = (scale) => {
187
- return Math.min(MSDOC_MAX_SCALE, Math.max(MSDOC_MIN_SCALE, Number(scale.toFixed(2))));
188
- };
189
- const resize = () => {
190
- if (!view) {
191
- return;
192
- }
193
- view.cancelAnimationFrame(resizeFrame);
194
- resizeFrame = view.requestAnimationFrame(() => {
195
- let firstScale = 1;
196
- let firstFitScale = 1;
197
- pages.forEach(page => {
198
- const root = page.querySelector('.msdoc-root');
199
- if (!root) {
200
- return;
201
- }
202
- const rootWidth = root.offsetWidth || MSDOC_PAGE_SIZE.width;
203
- const rootHeight = Math.max(root.scrollHeight, root.offsetHeight, MSDOC_PAGE_SIZE.height);
204
- const availableWidth = Math.max(target.clientWidth - 48, 120);
205
- const fitScale = Math.min(1, Math.max(MSDOC_MIN_SCALE, availableWidth / rootWidth));
206
- const scale = clampScale(fitScale * userZoom);
207
- firstScale = scale;
208
- firstFitScale = fitScale;
209
- root.style.transform = `translateX(-50%) scale(${scale})`;
210
- page.style.width = `${Math.ceil(Math.max(rootWidth * scale, 120))}px`;
211
- page.style.height = `${Math.ceil(rootHeight * scale)}px`;
212
- });
213
- currentScale = firstScale;
214
- currentFitScale = firstFitScale;
215
- zoomEmitter.emit();
216
- });
217
- };
218
- const getZoomState = () => ({
219
- scale: currentScale,
220
- label: `${Math.round(currentScale * 100)}%`,
221
- canZoomIn: currentScale < MSDOC_MAX_SCALE,
222
- canZoomOut: currentScale > MSDOC_MIN_SCALE,
223
- canReset: userZoom !== 1,
224
- minScale: MSDOC_MIN_SCALE,
225
- maxScale: MSDOC_MAX_SCALE
226
- });
227
- const setUserZoom = (nextZoom) => {
228
- userZoom = Math.min(6, Math.max(0.2, Number(nextZoom.toFixed(2))));
229
- resize();
230
- return getZoomState();
231
- };
232
- target.dataset.viewerZoomProvider = 'doc';
233
- registerFileViewerZoomProvider(target, {
234
- zoomIn: () => setUserZoom(userZoom + MSDOC_ZOOM_STEP),
235
- zoomOut: () => setUserZoom(userZoom - MSDOC_ZOOM_STEP),
236
- resetZoom: () => setUserZoom(1),
237
- setZoom: scale => setUserZoom(scale / Math.max(currentFitScale, 0.01)),
238
- getState: getZoomState,
239
- subscribe: zoomEmitter.subscribe
240
- });
241
- const observer = ResizeObserverCtor ? new ResizeObserverCtor(resize) : null;
242
- observer === null || observer === void 0 ? void 0 : observer.observe(target);
243
- pages.forEach(page => {
244
- const root = page.querySelector('.msdoc-root');
245
- if (root) {
246
- observer === null || observer === void 0 ? void 0 : observer.observe(root);
247
- }
248
- });
249
- resize();
250
- return () => {
251
- view === null || view === void 0 ? void 0 : view.cancelAnimationFrame(resizeFrame);
252
- observer === null || observer === void 0 ? void 0 : observer.disconnect();
253
- unregisterFileViewerZoomProvider(target);
254
- style.remove();
255
- target.classList.remove('msdoc-zoom-viewer');
256
- };
257
- }
258
- /**
259
- * 渲染 doc 文件
260
- */
261
- export default async function render(buffer, target, context) {
262
- var _a;
263
- const rendered = await parseMsDocToHtml(buffer, {
264
- renderOptions: {
265
- css: `${defaultMsDocCss()}\n${WORD_PAGE_CSS}`
266
- }
267
- });
268
- target.innerHTML = `<style data-msdoc>${rendered.css}</style>${wrapAsWordPages(rendered.html)}`;
269
- const disposeResponsive = makeMsDocResponsive(target);
270
- (_a = context === null || context === void 0 ? void 0 : context.registerExportAdapter) === null || _a === void 0 ? void 0 : _a.call(context, {
271
- includeDocumentStyles: false,
272
- printStyle: buildMsDocPrintStyle,
273
- toHtml: () => prepareMsDocCloneForExport(target)
274
- });
275
- return {
276
- $el: target,
277
- unmount() {
278
- var _a;
279
- (_a = context === null || context === void 0 ? void 0 : context.registerExportAdapter) === null || _a === void 0 ? void 0 : _a.call(context, null);
280
- disposeResponsive();
281
- target.innerHTML = '';
282
- }
283
- };
284
- }
@@ -1,5 +0,0 @@
1
- import type { FileRenderContext, FileViewerRenderedInstance as AppWrapper } from '../contracts/types';
2
- /**
3
- * 渲染docx文件
4
- */
5
- export default function (buffer: ArrayBuffer, target: HTMLDivElement, context?: FileRenderContext): Promise<AppWrapper>;