@kandiforge/kandi-office 0.15.148
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/README.md +82 -0
- package/dist/RustRenderer.d.ts +10 -0
- package/dist/RustRenderer.d.ts.map +1 -0
- package/dist/RustRenderer.js +30 -0
- package/dist/RustRenderer.js.map +1 -0
- package/dist/forms/KandiForm.d.ts +15 -0
- package/dist/forms/KandiForm.d.ts.map +1 -0
- package/dist/forms/KandiForm.js +577 -0
- package/dist/forms/KandiForm.js.map +1 -0
- package/dist/forms/KandiFormProvider.d.ts +17 -0
- package/dist/forms/KandiFormProvider.d.ts.map +1 -0
- package/dist/forms/KandiFormProvider.js +29 -0
- package/dist/forms/KandiFormProvider.js.map +1 -0
- package/dist/forms/core/FormEngine.d.ts +71 -0
- package/dist/forms/core/FormEngine.d.ts.map +1 -0
- package/dist/forms/core/FormEngine.js +463 -0
- package/dist/forms/core/FormEngine.js.map +1 -0
- package/dist/forms/core/index.d.ts +3 -0
- package/dist/forms/core/index.d.ts.map +1 -0
- package/dist/forms/core/index.js +2 -0
- package/dist/forms/core/index.js.map +1 -0
- package/dist/forms/hooks/index.d.ts +5 -0
- package/dist/forms/hooks/index.d.ts.map +1 -0
- package/dist/forms/hooks/index.js +3 -0
- package/dist/forms/hooks/index.js.map +1 -0
- package/dist/forms/hooks/useFormState.d.ts +32 -0
- package/dist/forms/hooks/useFormState.d.ts.map +1 -0
- package/dist/forms/hooks/useFormState.js +77 -0
- package/dist/forms/hooks/useFormState.js.map +1 -0
- package/dist/forms/hooks/useFormStorage.d.ts +28 -0
- package/dist/forms/hooks/useFormStorage.d.ts.map +1 -0
- package/dist/forms/hooks/useFormStorage.js +40 -0
- package/dist/forms/hooks/useFormStorage.js.map +1 -0
- package/dist/forms/index.d.ts +13 -0
- package/dist/forms/index.d.ts.map +1 -0
- package/dist/forms/index.js +7 -0
- package/dist/forms/index.js.map +1 -0
- package/dist/forms/storage/ApiFormStorage.d.ts +31 -0
- package/dist/forms/storage/ApiFormStorage.d.ts.map +1 -0
- package/dist/forms/storage/ApiFormStorage.js +112 -0
- package/dist/forms/storage/ApiFormStorage.js.map +1 -0
- package/dist/forms/storage/TauriFormStorage.d.ts +27 -0
- package/dist/forms/storage/TauriFormStorage.d.ts.map +1 -0
- package/dist/forms/storage/TauriFormStorage.js +82 -0
- package/dist/forms/storage/TauriFormStorage.js.map +1 -0
- package/dist/forms/storage/TauriThemeStorage.d.ts +10 -0
- package/dist/forms/storage/TauriThemeStorage.d.ts.map +1 -0
- package/dist/forms/storage/TauriThemeStorage.js +28 -0
- package/dist/forms/storage/TauriThemeStorage.js.map +1 -0
- package/dist/forms/storage/index.d.ts +9 -0
- package/dist/forms/storage/index.d.ts.map +1 -0
- package/dist/forms/storage/index.js +28 -0
- package/dist/forms/storage/index.js.map +1 -0
- package/dist/forms/storage/types.d.ts +486 -0
- package/dist/forms/storage/types.d.ts.map +1 -0
- package/dist/forms/storage/types.js +2 -0
- package/dist/forms/storage/types.js.map +1 -0
- package/dist/forms/vanilla/KandiForm.d.ts +40 -0
- package/dist/forms/vanilla/KandiForm.d.ts.map +1 -0
- package/dist/forms/vanilla/KandiForm.js +586 -0
- package/dist/forms/vanilla/KandiForm.js.map +1 -0
- package/dist/forms/vanilla/index.d.ts +7 -0
- package/dist/forms/vanilla/index.d.ts.map +1 -0
- package/dist/forms/vanilla/index.js +4 -0
- package/dist/forms/vanilla/index.js.map +1 -0
- package/dist/forms-builder/components/AddFieldForm.d.ts +10 -0
- package/dist/forms-builder/components/AddFieldForm.d.ts.map +1 -0
- package/dist/forms-builder/components/AddFieldForm.js +69 -0
- package/dist/forms-builder/components/AddFieldForm.js.map +1 -0
- package/dist/forms-builder/components/FormCard.d.ts +9 -0
- package/dist/forms-builder/components/FormCard.d.ts.map +1 -0
- package/dist/forms-builder/components/FormCard.js +40 -0
- package/dist/forms-builder/components/FormCard.js.map +1 -0
- package/dist/forms-builder/components/FormDesigner.d.ts +9 -0
- package/dist/forms-builder/components/FormDesigner.d.ts.map +1 -0
- package/dist/forms-builder/components/FormDesigner.js +73 -0
- package/dist/forms-builder/components/FormDesigner.js.map +1 -0
- package/dist/forms-builder/components/FormLibraryDialog.d.ts +11 -0
- package/dist/forms-builder/components/FormLibraryDialog.d.ts.map +1 -0
- package/dist/forms-builder/components/FormLibraryDialog.js +72 -0
- package/dist/forms-builder/components/FormLibraryDialog.js.map +1 -0
- package/dist/forms-builder/components/FormTester.d.ts +10 -0
- package/dist/forms-builder/components/FormTester.d.ts.map +1 -0
- package/dist/forms-builder/components/FormTester.js +147 -0
- package/dist/forms-builder/components/FormTester.js.map +1 -0
- package/dist/forms-builder/components/NewKandiFormDialog.d.ts +11 -0
- package/dist/forms-builder/components/NewKandiFormDialog.d.ts.map +1 -0
- package/dist/forms-builder/components/NewKandiFormDialog.js +82 -0
- package/dist/forms-builder/components/NewKandiFormDialog.js.map +1 -0
- package/dist/forms-builder/components/SchemaBuilder.d.ts +15 -0
- package/dist/forms-builder/components/SchemaBuilder.d.ts.map +1 -0
- package/dist/forms-builder/components/SchemaBuilder.js +62 -0
- package/dist/forms-builder/components/SchemaBuilder.js.map +1 -0
- package/dist/forms-builder/components/index.d.ts +8 -0
- package/dist/forms-builder/components/index.d.ts.map +1 -0
- package/dist/forms-builder/components/index.js +8 -0
- package/dist/forms-builder/components/index.js.map +1 -0
- package/dist/forms-builder/hooks/index.d.ts +3 -0
- package/dist/forms-builder/hooks/index.d.ts.map +1 -0
- package/dist/forms-builder/hooks/index.js +2 -0
- package/dist/forms-builder/hooks/index.js.map +1 -0
- package/dist/forms-builder/hooks/useFormWizard.d.ts +39 -0
- package/dist/forms-builder/hooks/useFormWizard.d.ts.map +1 -0
- package/dist/forms-builder/hooks/useFormWizard.js +268 -0
- package/dist/forms-builder/hooks/useFormWizard.js.map +1 -0
- package/dist/forms-builder/index.d.ts +6 -0
- package/dist/forms-builder/index.d.ts.map +1 -0
- package/dist/forms-builder/index.js +4 -0
- package/dist/forms-builder/index.js.map +1 -0
- package/dist/forms-builder/types/index.d.ts +88 -0
- package/dist/forms-builder/types/index.d.ts.map +1 -0
- package/dist/forms-builder/types/index.js +88 -0
- package/dist/forms-builder/types/index.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/logger.d.ts +44 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +111 -0
- package/dist/logger.js.map +1 -0
- package/dist/services/IDocumentService.d.ts +48 -0
- package/dist/services/IDocumentService.d.ts.map +1 -0
- package/dist/services/IDocumentService.js +2 -0
- package/dist/services/IDocumentService.js.map +1 -0
- package/dist/services/TauriDocumentService.d.ts +28 -0
- package/dist/services/TauriDocumentService.d.ts.map +1 -0
- package/dist/services/TauriDocumentService.js +109 -0
- package/dist/services/TauriDocumentService.js.map +1 -0
- package/dist/services/WasmDocumentService.d.ts +28 -0
- package/dist/services/WasmDocumentService.d.ts.map +1 -0
- package/dist/services/WasmDocumentService.js +122 -0
- package/dist/services/WasmDocumentService.js.map +1 -0
- package/dist/services/documentServiceRegistry.d.ts +4 -0
- package/dist/services/documentServiceRegistry.d.ts.map +1 -0
- package/dist/services/documentServiceRegistry.js +14 -0
- package/dist/services/documentServiceRegistry.js.map +1 -0
- package/dist/shared/services/FileLogger.d.ts +101 -0
- package/dist/shared/services/FileLogger.d.ts.map +1 -0
- package/dist/shared/services/FileLogger.js +483 -0
- package/dist/shared/services/FileLogger.js.map +1 -0
- package/dist/shared/services/IPlatformService.d.ts +80 -0
- package/dist/shared/services/IPlatformService.d.ts.map +1 -0
- package/dist/shared/services/IPlatformService.js +36 -0
- package/dist/shared/services/IPlatformService.js.map +1 -0
- package/dist/shared/services/Logger.d.ts +82 -0
- package/dist/shared/services/Logger.d.ts.map +1 -0
- package/dist/shared/services/Logger.js +215 -0
- package/dist/shared/services/Logger.js.map +1 -0
- package/dist/shared/services/LoggerAdapter.d.ts +8 -0
- package/dist/shared/services/LoggerAdapter.d.ts.map +1 -0
- package/dist/shared/services/LoggerAdapter.js +31 -0
- package/dist/shared/services/LoggerAdapter.js.map +1 -0
- package/dist/shared/services/platformServiceRegistry.d.ts +6 -0
- package/dist/shared/services/platformServiceRegistry.d.ts.map +1 -0
- package/dist/shared/services/platformServiceRegistry.js +18 -0
- package/dist/shared/services/platformServiceRegistry.js.map +1 -0
- package/dist/shared/theme/ThemeContext.d.ts +7 -0
- package/dist/shared/theme/ThemeContext.d.ts.map +1 -0
- package/dist/shared/theme/ThemeContext.js +134 -0
- package/dist/shared/theme/ThemeContext.js.map +1 -0
- package/dist/shared/theme/index.d.ts +6 -0
- package/dist/shared/theme/index.d.ts.map +1 -0
- package/dist/shared/theme/index.js +4 -0
- package/dist/shared/theme/index.js.map +1 -0
- package/dist/shared/theme/muiTheme.d.ts +3 -0
- package/dist/shared/theme/muiTheme.d.ts.map +1 -0
- package/dist/shared/theme/muiTheme.js +349 -0
- package/dist/shared/theme/muiTheme.js.map +1 -0
- package/dist/shared/theme/tokens.d.ts +252 -0
- package/dist/shared/theme/tokens.d.ts.map +1 -0
- package/dist/shared/theme/tokens.js +180 -0
- package/dist/shared/theme/tokens.js.map +1 -0
- package/dist/shared/theme/types.d.ts +55 -0
- package/dist/shared/theme/types.d.ts.map +1 -0
- package/dist/shared/theme/types.js +144 -0
- package/dist/shared/theme/types.js.map +1 -0
- package/dist/viewers/DocxViewer.d.ts +7 -0
- package/dist/viewers/DocxViewer.d.ts.map +1 -0
- package/dist/viewers/DocxViewer.js +157 -0
- package/dist/viewers/DocxViewer.js.map +1 -0
- package/dist/viewers/MarkdownViewer.d.ts +8 -0
- package/dist/viewers/MarkdownViewer.d.ts.map +1 -0
- package/dist/viewers/MarkdownViewer.js +111 -0
- package/dist/viewers/MarkdownViewer.js.map +1 -0
- package/dist/viewers/pdf/PdfViewer.d.ts +5 -0
- package/dist/viewers/pdf/PdfViewer.d.ts.map +1 -0
- package/dist/viewers/pdf/PdfViewer.js +104 -0
- package/dist/viewers/pdf/PdfViewer.js.map +1 -0
- package/dist/viewers/pdf/components/PdfFilmstrip.d.ts +4 -0
- package/dist/viewers/pdf/components/PdfFilmstrip.d.ts.map +1 -0
- package/dist/viewers/pdf/components/PdfFilmstrip.js +21 -0
- package/dist/viewers/pdf/components/PdfFilmstrip.js.map +1 -0
- package/dist/viewers/pdf/components/PdfToolbar.d.ts +4 -0
- package/dist/viewers/pdf/components/PdfToolbar.d.ts.map +1 -0
- package/dist/viewers/pdf/components/PdfToolbar.js +55 -0
- package/dist/viewers/pdf/components/PdfToolbar.js.map +1 -0
- package/dist/viewers/pdf/components/index.d.ts +4 -0
- package/dist/viewers/pdf/components/index.d.ts.map +1 -0
- package/dist/viewers/pdf/components/index.js +4 -0
- package/dist/viewers/pdf/components/index.js.map +1 -0
- package/dist/viewers/pdf/components/views/BookView.d.ts +4 -0
- package/dist/viewers/pdf/components/views/BookView.d.ts.map +1 -0
- package/dist/viewers/pdf/components/views/BookView.js +67 -0
- package/dist/viewers/pdf/components/views/BookView.js.map +1 -0
- package/dist/viewers/pdf/components/views/ContinuousScrollView.d.ts +4 -0
- package/dist/viewers/pdf/components/views/ContinuousScrollView.d.ts.map +1 -0
- package/dist/viewers/pdf/components/views/ContinuousScrollView.js +98 -0
- package/dist/viewers/pdf/components/views/ContinuousScrollView.js.map +1 -0
- package/dist/viewers/pdf/components/views/SinglePageView.d.ts +4 -0
- package/dist/viewers/pdf/components/views/SinglePageView.d.ts.map +1 -0
- package/dist/viewers/pdf/components/views/SinglePageView.js +27 -0
- package/dist/viewers/pdf/components/views/SinglePageView.js.map +1 -0
- package/dist/viewers/pdf/components/views/ThumbnailGridView.d.ts +8 -0
- package/dist/viewers/pdf/components/views/ThumbnailGridView.d.ts.map +1 -0
- package/dist/viewers/pdf/components/views/ThumbnailGridView.js +37 -0
- package/dist/viewers/pdf/components/views/ThumbnailGridView.js.map +1 -0
- package/dist/viewers/pdf/components/views/index.d.ts +5 -0
- package/dist/viewers/pdf/components/views/index.d.ts.map +1 -0
- package/dist/viewers/pdf/components/views/index.js +5 -0
- package/dist/viewers/pdf/components/views/index.js.map +1 -0
- package/dist/viewers/pdf/hooks/index.d.ts +5 -0
- package/dist/viewers/pdf/hooks/index.d.ts.map +1 -0
- package/dist/viewers/pdf/hooks/index.js +5 -0
- package/dist/viewers/pdf/hooks/index.js.map +1 -0
- package/dist/viewers/pdf/hooks/useFileWatcher.d.ts +15 -0
- package/dist/viewers/pdf/hooks/useFileWatcher.d.ts.map +1 -0
- package/dist/viewers/pdf/hooks/useFileWatcher.js +75 -0
- package/dist/viewers/pdf/hooks/useFileWatcher.js.map +1 -0
- package/dist/viewers/pdf/hooks/usePdfDocument.d.ts +24 -0
- package/dist/viewers/pdf/hooks/usePdfDocument.d.ts.map +1 -0
- package/dist/viewers/pdf/hooks/usePdfDocument.js +176 -0
- package/dist/viewers/pdf/hooks/usePdfDocument.js.map +1 -0
- package/dist/viewers/pdf/hooks/usePdfNavigation.d.ts +19 -0
- package/dist/viewers/pdf/hooks/usePdfNavigation.d.ts.map +1 -0
- package/dist/viewers/pdf/hooks/usePdfNavigation.js +92 -0
- package/dist/viewers/pdf/hooks/usePdfNavigation.js.map +1 -0
- package/dist/viewers/pdf/hooks/useZoom.d.ts +24 -0
- package/dist/viewers/pdf/hooks/useZoom.d.ts.map +1 -0
- package/dist/viewers/pdf/hooks/useZoom.js +136 -0
- package/dist/viewers/pdf/hooks/useZoom.js.map +1 -0
- package/dist/viewers/pdf/index.d.ts +5 -0
- package/dist/viewers/pdf/index.d.ts.map +1 -0
- package/dist/viewers/pdf/index.js +5 -0
- package/dist/viewers/pdf/index.js.map +1 -0
- package/dist/viewers/pdf/types.d.ts +80 -0
- package/dist/viewers/pdf/types.d.ts.map +1 -0
- package/dist/viewers/pdf/types.js +2 -0
- package/dist/viewers/pdf/types.js.map +1 -0
- package/dist/wasm/docx.d.ts +10 -0
- package/dist/wasm/docx.d.ts.map +1 -0
- package/dist/wasm/docx.js +66 -0
- package/dist/wasm/docx.js.map +1 -0
- package/dist/wasm/index.d.ts +6 -0
- package/dist/wasm/index.d.ts.map +1 -0
- package/dist/wasm/index.js +4 -0
- package/dist/wasm/index.js.map +1 -0
- package/dist/wasm/pptx.d.ts +9 -0
- package/dist/wasm/pptx.d.ts.map +1 -0
- package/dist/wasm/pptx.js +225 -0
- package/dist/wasm/pptx.js.map +1 -0
- package/dist/wasm/types.d.ts +266 -0
- package/dist/wasm/types.d.ts.map +1 -0
- package/dist/wasm/types.js +2 -0
- package/dist/wasm/types.js.map +1 -0
- package/dist/wasm/wasm-loader.d.ts +17 -0
- package/dist/wasm/wasm-loader.d.ts.map +1 -0
- package/dist/wasm/wasm-loader.js +23 -0
- package/dist/wasm/wasm-loader.js.map +1 -0
- package/package.json +81 -0
- package/wasm-pkg/LICENSE +37 -0
- package/wasm-pkg/kandi_office_wasm.d.ts +168 -0
- package/wasm-pkg/kandi_office_wasm.js +1008 -0
- package/wasm-pkg/kandi_office_wasm_bg.wasm +0 -0
- package/wasm-pkg/kandi_office_wasm_bg.wasm.d.ts +24 -0
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { useState, useCallback, useMemo, useEffect, useRef } from 'react';
|
|
2
|
+
const ZOOM_PRESETS = [
|
|
3
|
+
'fit-page',
|
|
4
|
+
'fit-width',
|
|
5
|
+
'actual-size',
|
|
6
|
+
50,
|
|
7
|
+
75,
|
|
8
|
+
100,
|
|
9
|
+
125,
|
|
10
|
+
150,
|
|
11
|
+
200,
|
|
12
|
+
300,
|
|
13
|
+
400,
|
|
14
|
+
];
|
|
15
|
+
export function useZoom(options = {}) {
|
|
16
|
+
const { initialZoom = 'fit-width', containerWidth = 800, containerHeight = 600, pageInfo, minScale = 0.25, maxScale = 5.0, zoomStep = 25, enableKeyboard = true, } = options;
|
|
17
|
+
const [zoomLevel, setZoomLevel] = useState(initialZoom);
|
|
18
|
+
const scale = useMemo(() => {
|
|
19
|
+
if (typeof zoomLevel === 'number') {
|
|
20
|
+
return zoomLevel / 100;
|
|
21
|
+
}
|
|
22
|
+
if (!pageInfo || !pageInfo.width || !pageInfo.height ||
|
|
23
|
+
isNaN(pageInfo.width) || isNaN(pageInfo.height) ||
|
|
24
|
+
pageInfo.width <= 0 || pageInfo.height <= 0) {
|
|
25
|
+
return 1;
|
|
26
|
+
}
|
|
27
|
+
const pageWidth = pageInfo.width;
|
|
28
|
+
const pageHeight = pageInfo.height;
|
|
29
|
+
const availableWidth = Math.max(containerWidth - 40, 100);
|
|
30
|
+
const availableHeight = Math.max(containerHeight - 40, 100);
|
|
31
|
+
let calculatedScale;
|
|
32
|
+
switch (zoomLevel) {
|
|
33
|
+
case 'fit-width':
|
|
34
|
+
calculatedScale = availableWidth / pageWidth;
|
|
35
|
+
break;
|
|
36
|
+
case 'fit-page':
|
|
37
|
+
calculatedScale = Math.min(availableWidth / pageWidth, availableHeight / pageHeight);
|
|
38
|
+
break;
|
|
39
|
+
case 'actual-size':
|
|
40
|
+
calculatedScale = 1;
|
|
41
|
+
break;
|
|
42
|
+
default:
|
|
43
|
+
calculatedScale = 1;
|
|
44
|
+
}
|
|
45
|
+
if (!isFinite(calculatedScale) || isNaN(calculatedScale)) {
|
|
46
|
+
return 1;
|
|
47
|
+
}
|
|
48
|
+
return calculatedScale;
|
|
49
|
+
}, [zoomLevel, pageInfo, containerWidth, containerHeight]);
|
|
50
|
+
const clampedScale = isNaN(scale) || !isFinite(scale)
|
|
51
|
+
? 1
|
|
52
|
+
: Math.min(Math.max(scale, minScale), maxScale);
|
|
53
|
+
const clampedScaleRef = useRef(clampedScale);
|
|
54
|
+
clampedScaleRef.current = clampedScale;
|
|
55
|
+
const state = {
|
|
56
|
+
level: zoomLevel,
|
|
57
|
+
scale: clampedScale,
|
|
58
|
+
};
|
|
59
|
+
const setZoom = useCallback((level) => {
|
|
60
|
+
setZoomLevel(level);
|
|
61
|
+
}, []);
|
|
62
|
+
const zoomIn = useCallback(() => {
|
|
63
|
+
setZoomLevel(prev => {
|
|
64
|
+
let current;
|
|
65
|
+
if (typeof prev === 'number') {
|
|
66
|
+
current = prev;
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
current = Math.round(clampedScaleRef.current * 100);
|
|
70
|
+
}
|
|
71
|
+
const nextZoom = current + zoomStep;
|
|
72
|
+
const result = Math.min(nextZoom, maxScale * 100);
|
|
73
|
+
return result;
|
|
74
|
+
});
|
|
75
|
+
}, [zoomStep, maxScale]);
|
|
76
|
+
const zoomOut = useCallback(() => {
|
|
77
|
+
setZoomLevel(prev => {
|
|
78
|
+
let current;
|
|
79
|
+
if (typeof prev === 'number') {
|
|
80
|
+
current = prev;
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
current = Math.round(clampedScaleRef.current * 100);
|
|
84
|
+
}
|
|
85
|
+
const nextZoom = current - zoomStep;
|
|
86
|
+
const result = Math.max(nextZoom, minScale * 100);
|
|
87
|
+
return result;
|
|
88
|
+
});
|
|
89
|
+
}, [zoomStep, minScale]);
|
|
90
|
+
const resetZoom = useCallback(() => {
|
|
91
|
+
setZoomLevel('fit-width');
|
|
92
|
+
}, []);
|
|
93
|
+
const canZoomIn = clampedScale < maxScale;
|
|
94
|
+
const canZoomOut = clampedScale > minScale;
|
|
95
|
+
useEffect(() => {
|
|
96
|
+
if (!enableKeyboard)
|
|
97
|
+
return;
|
|
98
|
+
const handleKeyDown = (e) => {
|
|
99
|
+
if (!e.ctrlKey && !e.metaKey)
|
|
100
|
+
return;
|
|
101
|
+
if (e.target instanceof HTMLInputElement ||
|
|
102
|
+
e.target instanceof HTMLTextAreaElement) {
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
switch (e.key) {
|
|
106
|
+
case '=':
|
|
107
|
+
case '+':
|
|
108
|
+
e.preventDefault();
|
|
109
|
+
zoomIn();
|
|
110
|
+
break;
|
|
111
|
+
case '-':
|
|
112
|
+
case '_':
|
|
113
|
+
e.preventDefault();
|
|
114
|
+
zoomOut();
|
|
115
|
+
break;
|
|
116
|
+
case '0':
|
|
117
|
+
e.preventDefault();
|
|
118
|
+
resetZoom();
|
|
119
|
+
break;
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
window.addEventListener('keydown', handleKeyDown);
|
|
123
|
+
return () => window.removeEventListener('keydown', handleKeyDown);
|
|
124
|
+
}, [enableKeyboard, zoomIn, zoomOut, resetZoom]);
|
|
125
|
+
return {
|
|
126
|
+
state,
|
|
127
|
+
setZoom,
|
|
128
|
+
zoomIn,
|
|
129
|
+
zoomOut,
|
|
130
|
+
resetZoom,
|
|
131
|
+
canZoomIn,
|
|
132
|
+
canZoomOut,
|
|
133
|
+
presets: ZOOM_PRESETS,
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=useZoom.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useZoom.js","sourceRoot":"","sources":["../../../../src/viewers/pdf/hooks/useZoom.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/viewers/pdf/index.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACjD,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/viewers/pdf/index.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACjD,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
export type PdfViewMode = 'single' | 'book' | 'continuous' | 'grid';
|
|
2
|
+
export interface PdfPageInfo {
|
|
3
|
+
pageNumber: number;
|
|
4
|
+
width: number;
|
|
5
|
+
height: number;
|
|
6
|
+
}
|
|
7
|
+
export interface PdfDocumentInfo {
|
|
8
|
+
path: string;
|
|
9
|
+
pageCount: number;
|
|
10
|
+
title?: string;
|
|
11
|
+
author?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface RenderedPage {
|
|
14
|
+
pageNumber: number;
|
|
15
|
+
dataUri: string;
|
|
16
|
+
dpi: number;
|
|
17
|
+
width: number;
|
|
18
|
+
height: number;
|
|
19
|
+
}
|
|
20
|
+
export interface ThumbnailData {
|
|
21
|
+
pageNumber: number;
|
|
22
|
+
dataUri: string;
|
|
23
|
+
}
|
|
24
|
+
export type ZoomLevel = 'fit-width' | 'fit-page' | 'actual-size' | number;
|
|
25
|
+
export interface ZoomState {
|
|
26
|
+
level: ZoomLevel;
|
|
27
|
+
scale: number;
|
|
28
|
+
}
|
|
29
|
+
export interface NavigationState {
|
|
30
|
+
currentPage: number;
|
|
31
|
+
totalPages: number;
|
|
32
|
+
canGoPrevious: boolean;
|
|
33
|
+
canGoNext: boolean;
|
|
34
|
+
}
|
|
35
|
+
export interface FileWatcherState {
|
|
36
|
+
isWatching: boolean;
|
|
37
|
+
lastModified?: Date;
|
|
38
|
+
pendingRefresh: boolean;
|
|
39
|
+
}
|
|
40
|
+
export interface PdfViewerProps {
|
|
41
|
+
path?: string;
|
|
42
|
+
fileData?: ArrayBuffer;
|
|
43
|
+
initialViewMode?: PdfViewMode;
|
|
44
|
+
initialZoom?: ZoomLevel;
|
|
45
|
+
initialPage?: number;
|
|
46
|
+
enableFileWatcher?: boolean;
|
|
47
|
+
onPageChange?: (page: number) => void;
|
|
48
|
+
onViewModeChange?: (mode: PdfViewMode) => void;
|
|
49
|
+
className?: string;
|
|
50
|
+
}
|
|
51
|
+
export interface PdfViewProps {
|
|
52
|
+
currentPage: number;
|
|
53
|
+
totalPages: number;
|
|
54
|
+
scale: number;
|
|
55
|
+
renderedPages: Map<number, RenderedPage>;
|
|
56
|
+
renderPage: (pageNumber: number, dpi?: number) => Promise<RenderedPage | null>;
|
|
57
|
+
goToPage: (pageNumber: number) => void;
|
|
58
|
+
pageInfo?: PdfPageInfo;
|
|
59
|
+
}
|
|
60
|
+
export interface PdfToolbarProps {
|
|
61
|
+
viewMode: PdfViewMode;
|
|
62
|
+
onViewModeChange: (mode: PdfViewMode) => void;
|
|
63
|
+
zoom: ZoomState;
|
|
64
|
+
onZoomIn: () => void;
|
|
65
|
+
onZoomOut: () => void;
|
|
66
|
+
onZoomChange: (level: ZoomLevel) => void;
|
|
67
|
+
navigation: NavigationState;
|
|
68
|
+
onGoToPage: (page: number) => void;
|
|
69
|
+
onPrevious: () => void;
|
|
70
|
+
onNext: () => void;
|
|
71
|
+
isLoading?: boolean;
|
|
72
|
+
}
|
|
73
|
+
export interface PdfFilmstripProps {
|
|
74
|
+
totalPages: number;
|
|
75
|
+
currentPage: number;
|
|
76
|
+
thumbnails: Map<number, ThumbnailData>;
|
|
77
|
+
onSelectPage: (page: number) => void;
|
|
78
|
+
isLoading?: boolean;
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/viewers/pdf/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/viewers/pdf/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { DocxExtractedData, LayoutPage } from './types';
|
|
2
|
+
export declare function extractDocx(data: ArrayBuffer): Promise<DocxExtractedData>;
|
|
3
|
+
export declare function parseDocx(extracted: DocxExtractedData): Promise<string>;
|
|
4
|
+
export declare function layoutDocx(documentJson: string, measureCanvas: HTMLCanvasElement): Promise<LayoutPage[]>;
|
|
5
|
+
export declare function renderDocxPage(page: LayoutPage, canvas: HTMLCanvasElement): Promise<void>;
|
|
6
|
+
export declare function processDocx(data: ArrayBuffer, measureCanvas: HTMLCanvasElement): Promise<{
|
|
7
|
+
documentJson: string;
|
|
8
|
+
pages: LayoutPage[];
|
|
9
|
+
}>;
|
|
10
|
+
//# sourceMappingURL=docx.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docx.d.ts","sourceRoot":"","sources":["../../src/wasm/docx.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAO5D,wBAAsB,WAAW,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA+B/E;AAMD,wBAAsB,SAAS,CAAC,SAAS,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAQ7E;AAMD,wBAAsB,UAAU,CAC9B,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,iBAAiB,GAC/B,OAAO,CAAC,UAAU,EAAE,CAAC,CAIvB;AAKD,wBAAsB,cAAc,CAClC,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,iBAAiB,GACxB,OAAO,CAAC,IAAI,CAAC,CAGf;AAKD,wBAAsB,WAAW,CAC/B,IAAI,EAAE,WAAW,EACjB,aAAa,EAAE,iBAAiB,GAC/B,OAAO,CAAC;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,UAAU,EAAE,CAAA;CAAE,CAAC,CAKxD"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import JSZip from 'jszip';
|
|
2
|
+
import { getWasm } from './wasm-loader';
|
|
3
|
+
export async function extractDocx(data) {
|
|
4
|
+
const zip = await JSZip.loadAsync(data);
|
|
5
|
+
const documentXml = await readZipText(zip, 'word/document.xml');
|
|
6
|
+
if (!documentXml) {
|
|
7
|
+
throw new Error('Invalid DOCX: missing word/document.xml');
|
|
8
|
+
}
|
|
9
|
+
const stylesXml = (await readZipText(zip, 'word/styles.xml')) ?? undefined;
|
|
10
|
+
const numberingXml = (await readZipText(zip, 'word/numbering.xml')) ?? undefined;
|
|
11
|
+
const relsXml = (await readZipText(zip, 'word/_rels/document.xml.rels')) ?? undefined;
|
|
12
|
+
const media = new Map();
|
|
13
|
+
const mediaFiles = Object.keys(zip.files).filter(f => f.startsWith('word/media/'));
|
|
14
|
+
for (const path of mediaFiles) {
|
|
15
|
+
const file = zip.files[path];
|
|
16
|
+
if (file.dir)
|
|
17
|
+
continue;
|
|
18
|
+
const blob = await file.async('base64');
|
|
19
|
+
const ext = path.split('.').pop()?.toLowerCase() || 'png';
|
|
20
|
+
const mime = getMimeType(ext);
|
|
21
|
+
media.set(path.replace('word/', ''), `data:${mime};base64,${blob}`);
|
|
22
|
+
}
|
|
23
|
+
return { documentXml, stylesXml, numberingXml, relsXml, media };
|
|
24
|
+
}
|
|
25
|
+
export async function parseDocx(extracted) {
|
|
26
|
+
const wasm = await getWasm();
|
|
27
|
+
return wasm.parse_docx_xml(extracted.documentXml, extracted.stylesXml ?? null, extracted.numberingXml ?? null, extracted.relsXml ?? null);
|
|
28
|
+
}
|
|
29
|
+
export async function layoutDocx(documentJson, measureCanvas) {
|
|
30
|
+
const wasm = await getWasm();
|
|
31
|
+
const pagesJson = wasm.layout_docx(documentJson, measureCanvas);
|
|
32
|
+
return JSON.parse(pagesJson);
|
|
33
|
+
}
|
|
34
|
+
export async function renderDocxPage(page, canvas) {
|
|
35
|
+
const wasm = await getWasm();
|
|
36
|
+
wasm.render_docx_page(JSON.stringify(page), canvas);
|
|
37
|
+
}
|
|
38
|
+
export async function processDocx(data, measureCanvas) {
|
|
39
|
+
const extracted = await extractDocx(data);
|
|
40
|
+
const documentJson = await parseDocx(extracted);
|
|
41
|
+
const pages = await layoutDocx(documentJson, measureCanvas);
|
|
42
|
+
return { documentJson, pages };
|
|
43
|
+
}
|
|
44
|
+
async function readZipText(zip, path) {
|
|
45
|
+
const file = zip.file(path);
|
|
46
|
+
if (!file)
|
|
47
|
+
return null;
|
|
48
|
+
return file.async('text');
|
|
49
|
+
}
|
|
50
|
+
function getMimeType(ext) {
|
|
51
|
+
const mimeMap = {
|
|
52
|
+
png: 'image/png',
|
|
53
|
+
jpg: 'image/jpeg',
|
|
54
|
+
jpeg: 'image/jpeg',
|
|
55
|
+
gif: 'image/gif',
|
|
56
|
+
svg: 'image/svg+xml',
|
|
57
|
+
emf: 'image/emf',
|
|
58
|
+
wmf: 'image/wmf',
|
|
59
|
+
tiff: 'image/tiff',
|
|
60
|
+
tif: 'image/tiff',
|
|
61
|
+
bmp: 'image/bmp',
|
|
62
|
+
webp: 'image/webp',
|
|
63
|
+
};
|
|
64
|
+
return mimeMap[ext] || 'application/octet-stream';
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=docx.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docx.js","sourceRoot":"","sources":["../../src/wasm/docx.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { initWasm, getWasm, isWasmReady } from './wasm-loader';
|
|
2
|
+
export type { WasmModule } from './wasm-loader';
|
|
3
|
+
export { extractPptx, parsePptxSlides, renderSlideToCanvas, parseSlideJson, } from './pptx';
|
|
4
|
+
export { extractDocx, parseDocx, layoutDocx, renderDocxPage, processDocx, } from './docx';
|
|
5
|
+
export type { Slide, Shape, ShapeType, Position, Size, ImageCrop, CustomGeometry, PathCommand, Table, TableCell, TextStyle, Background, Color, Fill, GradientFill, GradientStop, Stroke, TextParagraph, BulletInfo, TextRun, ChartData, ChartSeries, Theme, ThemeFonts, DocxDocument, DocxParagraph, DocxRun, DocxColor, DocxTable, DocxTableRow, DocxTableCell, DocxStylesheet, DocxStyle, DocxNumbering, DocxMargins, LayoutPage, PptxExtractedData, PptxSlideFiles, DocxExtractedData, } from './types';
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/wasm/index.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC9D,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAG/C,OAAO,EACL,WAAW,EACX,eAAe,EACf,mBAAmB,EACnB,cAAc,GACf,MAAM,QAAQ,CAAA;AAGf,OAAO,EACL,WAAW,EACX,SAAS,EACT,UAAU,EACV,cAAc,EACd,WAAW,GACZ,MAAM,QAAQ,CAAA;AAGf,YAAY,EAEV,KAAK,EACL,KAAK,EACL,SAAS,EACT,QAAQ,EACR,IAAI,EACJ,SAAS,EACT,cAAc,EACd,WAAW,EACX,KAAK,EACL,SAAS,EACT,SAAS,EACT,UAAU,EACV,KAAK,EACL,IAAI,EACJ,YAAY,EACZ,YAAY,EACZ,MAAM,EACN,aAAa,EACb,UAAU,EACV,OAAO,EACP,SAAS,EACT,WAAW,EACX,KAAK,EACL,UAAU,EAEV,YAAY,EACZ,aAAa,EACb,OAAO,EACP,SAAS,EACT,SAAS,EACT,YAAY,EACZ,aAAa,EACb,cAAc,EACd,SAAS,EACT,aAAa,EACb,WAAW,EACX,UAAU,EAEV,iBAAiB,EACjB,cAAc,EACd,iBAAiB,GAClB,MAAM,SAAS,CAAA"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { initWasm, getWasm, isWasmReady } from './wasm-loader';
|
|
2
|
+
export { extractPptx, parsePptxSlides, renderSlideToCanvas, parseSlideJson, } from './pptx';
|
|
3
|
+
export { extractDocx, parseDocx, layoutDocx, renderDocxPage, processDocx, } from './docx';
|
|
4
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/wasm/index.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAI9D,OAAO,EACL,WAAW,EACX,eAAe,EACf,mBAAmB,EACnB,cAAc,GACf,MAAM,QAAQ,CAAA;AAGf,OAAO,EACL,WAAW,EACX,SAAS,EACT,UAAU,EACV,cAAc,EACd,WAAW,GACZ,MAAM,QAAQ,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { PptxExtractedData, Slide } from './types';
|
|
2
|
+
export declare function extractPptx(data: ArrayBuffer): Promise<PptxExtractedData>;
|
|
3
|
+
export declare function parsePptxSlides(extracted: PptxExtractedData): Promise<{
|
|
4
|
+
themeJson: string;
|
|
5
|
+
slideJsons: string[];
|
|
6
|
+
}>;
|
|
7
|
+
export declare function renderSlideToCanvas(slideJson: string, canvas: HTMLCanvasElement, width?: number, height?: number): Promise<void>;
|
|
8
|
+
export declare function parseSlideJson(slideJson: string): Slide;
|
|
9
|
+
//# sourceMappingURL=pptx.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pptx.d.ts","sourceRoot":"","sources":["../../src/wasm/pptx.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,iBAAiB,EAAkB,KAAK,EAAE,MAAM,SAAS,CAAA;AAOvE,wBAAsB,WAAW,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAmG/E;AAMD,wBAAsB,eAAe,CACnC,SAAS,EAAE,iBAAiB,GAC3B,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CA+CtD;AAKD,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,iBAAiB,EACzB,KAAK,CAAC,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAGf;AAKD,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,KAAK,CAEvD"}
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
import JSZip from 'jszip';
|
|
2
|
+
import { getWasm } from './wasm-loader';
|
|
3
|
+
export async function extractPptx(data) {
|
|
4
|
+
const zip = await JSZip.loadAsync(data);
|
|
5
|
+
const presentationXml = await readZipText(zip, 'ppt/presentation.xml');
|
|
6
|
+
if (!presentationXml) {
|
|
7
|
+
throw new Error('Invalid PPTX: missing ppt/presentation.xml');
|
|
8
|
+
}
|
|
9
|
+
const themeXml = await readZipText(zip, 'ppt/theme/theme1.xml');
|
|
10
|
+
if (!themeXml) {
|
|
11
|
+
throw new Error('Invalid PPTX: missing ppt/theme/theme1.xml');
|
|
12
|
+
}
|
|
13
|
+
const presRelsXml = await readZipText(zip, 'ppt/_rels/presentation.xml.rels');
|
|
14
|
+
const slideFiles = discoverSlides(presRelsXml || '');
|
|
15
|
+
const slides = [];
|
|
16
|
+
for (const slideFile of slideFiles) {
|
|
17
|
+
const slideXml = await readZipText(zip, `ppt/${slideFile}`);
|
|
18
|
+
if (!slideXml)
|
|
19
|
+
continue;
|
|
20
|
+
const slideRelsPath = `ppt/slides/_rels/${slideFile.replace('slides/', '')}.rels`;
|
|
21
|
+
const relsXml = await readZipText(zip, slideRelsPath);
|
|
22
|
+
const layoutFile = findRelTarget(relsXml || '', 'slideLayout');
|
|
23
|
+
const layoutXml = layoutFile ? await readZipText(zip, `ppt/${layoutFile}`) : undefined;
|
|
24
|
+
let masterXml;
|
|
25
|
+
let layoutRelsXml;
|
|
26
|
+
if (layoutFile) {
|
|
27
|
+
const layoutRelsPath = `ppt/slideLayouts/_rels/${layoutFile.replace('slideLayouts/', '')}.rels`;
|
|
28
|
+
layoutRelsXml = await readZipText(zip, layoutRelsPath) ?? undefined;
|
|
29
|
+
const masterFile = findRelTarget(layoutRelsXml || '', 'slideMaster');
|
|
30
|
+
if (masterFile) {
|
|
31
|
+
masterXml = await readZipText(zip, `ppt/${masterFile}`) ?? undefined;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
let masterRelsXml;
|
|
35
|
+
const masterFile = findRelTarget(layoutRelsXml || '', 'slideMaster');
|
|
36
|
+
if (masterFile) {
|
|
37
|
+
const masterRelsPath = `ppt/slideMasters/_rels/${masterFile.replace('slideMasters/', '')}.rels`;
|
|
38
|
+
masterRelsXml = await readZipText(zip, masterRelsPath) ?? undefined;
|
|
39
|
+
}
|
|
40
|
+
const chartXmls = new Map();
|
|
41
|
+
const chartRefs = findAllRelTargets(relsXml || '', 'chart');
|
|
42
|
+
for (const [rId, chartFile] of chartRefs) {
|
|
43
|
+
const chartXml = await readZipText(zip, `ppt/${chartFile}`);
|
|
44
|
+
if (chartXml)
|
|
45
|
+
chartXmls.set(rId, chartXml);
|
|
46
|
+
}
|
|
47
|
+
const layoutChartXmls = new Map();
|
|
48
|
+
if (layoutRelsXml) {
|
|
49
|
+
const layoutChartRefs = findAllRelTargets(layoutRelsXml, 'chart');
|
|
50
|
+
for (const [rId, chartFile] of layoutChartRefs) {
|
|
51
|
+
const chartXml = await readZipText(zip, `ppt/${chartFile}`);
|
|
52
|
+
if (chartXml)
|
|
53
|
+
layoutChartXmls.set(rId, chartXml);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
slides.push({
|
|
57
|
+
slideXml,
|
|
58
|
+
relsXml: relsXml ?? undefined,
|
|
59
|
+
layoutXml: layoutXml ?? undefined,
|
|
60
|
+
layoutRelsXml,
|
|
61
|
+
masterXml,
|
|
62
|
+
masterRelsXml,
|
|
63
|
+
chartXmls,
|
|
64
|
+
layoutChartXmls,
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
const media = new Map();
|
|
68
|
+
const mediaFolder = zip.folder('ppt/media');
|
|
69
|
+
if (mediaFolder) {
|
|
70
|
+
const mediaFiles = Object.keys(zip.files).filter(f => f.startsWith('ppt/media/'));
|
|
71
|
+
for (const path of mediaFiles) {
|
|
72
|
+
const file = zip.files[path];
|
|
73
|
+
if (file.dir)
|
|
74
|
+
continue;
|
|
75
|
+
const blob = await file.async('base64');
|
|
76
|
+
const ext = path.split('.').pop()?.toLowerCase() || 'png';
|
|
77
|
+
const mime = getMimeType(ext);
|
|
78
|
+
media.set(path.replace('ppt/', ''), `data:${mime};base64,${blob}`);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return { presentationXml, themeXml, slides, media };
|
|
82
|
+
}
|
|
83
|
+
export async function parsePptxSlides(extracted) {
|
|
84
|
+
const wasm = await getWasm();
|
|
85
|
+
const themeJson = wasm.parse_theme_xml(extracted.themeXml);
|
|
86
|
+
const slideJsons = [];
|
|
87
|
+
for (const slideFiles of extracted.slides) {
|
|
88
|
+
const slideMediaMap = buildMediaMap(slideFiles.relsXml || '', extracted.media, 'slides/');
|
|
89
|
+
const layoutMediaMap = buildMediaMap(slideFiles.layoutRelsXml || '', extracted.media, 'slideLayouts/');
|
|
90
|
+
const masterMediaMap = buildMediaMap(slideFiles.masterRelsXml || '', extracted.media, 'slideMasters/');
|
|
91
|
+
const chartMap = {};
|
|
92
|
+
for (const [rId, chartXml] of slideFiles.chartXmls) {
|
|
93
|
+
const chartJson = wasm.parse_chart_xml(chartXml, themeJson);
|
|
94
|
+
if (chartJson && chartJson !== 'null') {
|
|
95
|
+
chartMap[rId] = JSON.parse(chartJson);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
const layoutChartMap = {};
|
|
99
|
+
for (const [rId, chartXml] of slideFiles.layoutChartXmls) {
|
|
100
|
+
const chartJson = wasm.parse_chart_xml(chartXml, themeJson);
|
|
101
|
+
if (chartJson && chartJson !== 'null') {
|
|
102
|
+
layoutChartMap[rId] = JSON.parse(chartJson);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
const slideJson = wasm.parse_slide_with_inheritance(slideFiles.slideXml, themeJson, Object.keys(slideMediaMap).length > 0 ? JSON.stringify(slideMediaMap) : null, slideFiles.layoutXml ?? null, Object.keys(layoutMediaMap).length > 0 ? JSON.stringify(layoutMediaMap) : null, slideFiles.masterXml ?? null, Object.keys(masterMediaMap).length > 0 ? JSON.stringify(masterMediaMap) : null, Object.keys(chartMap).length > 0 ? JSON.stringify(chartMap) : null, Object.keys(layoutChartMap).length > 0 ? JSON.stringify(layoutChartMap) : null);
|
|
106
|
+
slideJsons.push(slideJson);
|
|
107
|
+
}
|
|
108
|
+
return { themeJson, slideJsons };
|
|
109
|
+
}
|
|
110
|
+
export async function renderSlideToCanvas(slideJson, canvas, width, height) {
|
|
111
|
+
const wasm = await getWasm();
|
|
112
|
+
await wasm.render_slide_json(slideJson, canvas, width ?? null, height ?? null);
|
|
113
|
+
}
|
|
114
|
+
export function parseSlideJson(slideJson) {
|
|
115
|
+
return JSON.parse(slideJson);
|
|
116
|
+
}
|
|
117
|
+
async function readZipText(zip, path) {
|
|
118
|
+
const file = zip.file(path);
|
|
119
|
+
if (!file)
|
|
120
|
+
return null;
|
|
121
|
+
return file.async('text');
|
|
122
|
+
}
|
|
123
|
+
function discoverSlides(presRelsXml) {
|
|
124
|
+
const slides = [];
|
|
125
|
+
const regex = /Relationship[^>]+Id="[^"]*"[^>]+Type="[^"]*\/slide"[^>]+Target="([^"]+)"/g;
|
|
126
|
+
let match;
|
|
127
|
+
while ((match = regex.exec(presRelsXml)) !== null) {
|
|
128
|
+
const target = match[1];
|
|
129
|
+
const numMatch = target.match(/slide(\d+)\.xml/);
|
|
130
|
+
const num = numMatch ? parseInt(numMatch[1], 10) : 0;
|
|
131
|
+
slides.push({ target, id: num });
|
|
132
|
+
}
|
|
133
|
+
const regex2 = /Relationship[^>]+Target="([^"]+)"[^>]+Type="[^"]*\/slide"[^>]*/g;
|
|
134
|
+
while ((match = regex2.exec(presRelsXml)) !== null) {
|
|
135
|
+
const target = match[1];
|
|
136
|
+
const numMatch = target.match(/slide(\d+)\.xml/);
|
|
137
|
+
const num = numMatch ? parseInt(numMatch[1], 10) : 0;
|
|
138
|
+
if (!slides.some(s => s.target === target)) {
|
|
139
|
+
slides.push({ target, id: num });
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
slides.sort((a, b) => a.id - b.id);
|
|
143
|
+
return slides.map(s => s.target);
|
|
144
|
+
}
|
|
145
|
+
function findRelTarget(relsXml, typeContains) {
|
|
146
|
+
const regex = new RegExp(`Relationship[^>]+Type="[^"]*/${typeContains}[^"]*"[^>]+Target="([^"]+)"`, 'g');
|
|
147
|
+
const match = regex.exec(relsXml);
|
|
148
|
+
if (match)
|
|
149
|
+
return match[1];
|
|
150
|
+
const regex2 = new RegExp(`Relationship[^>]+Target="([^"]+)"[^>]+Type="[^"]*/${typeContains}[^"]*"`, 'g');
|
|
151
|
+
const match2 = regex2.exec(relsXml);
|
|
152
|
+
return match2?.[1];
|
|
153
|
+
}
|
|
154
|
+
function findAllRelTargets(relsXml, typeContains) {
|
|
155
|
+
const results = [];
|
|
156
|
+
const regex = new RegExp(`Relationship[^>]+Id="(rId\\d+)"[^>]+Type="[^"]*/${typeContains}[^"]*"[^>]+Target="([^"]+)"`, 'g');
|
|
157
|
+
let match;
|
|
158
|
+
while ((match = regex.exec(relsXml)) !== null) {
|
|
159
|
+
results.push([match[1], match[2]]);
|
|
160
|
+
}
|
|
161
|
+
const regex2 = new RegExp(`Relationship[^>]+Id="(rId\\d+)"[^>]+Target="([^"]+)"[^>]+Type="[^"]*/${typeContains}[^"]*"`, 'g');
|
|
162
|
+
while ((match = regex2.exec(relsXml)) !== null) {
|
|
163
|
+
if (!results.some(([id]) => id === match[1])) {
|
|
164
|
+
results.push([match[1], match[2]]);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
return results;
|
|
168
|
+
}
|
|
169
|
+
function buildMediaMap(relsXml, mediaStore, contextFolder) {
|
|
170
|
+
const map = {};
|
|
171
|
+
const regex = /Relationship[^>]+Id="(rId\d+)"[^>]+Target="([^"]+)"[^>]+Type="[^"]*\/(image|oleObject|video|audio)[^"]*"/g;
|
|
172
|
+
let match;
|
|
173
|
+
while ((match = regex.exec(relsXml)) !== null) {
|
|
174
|
+
const rId = match[1];
|
|
175
|
+
let target = match[2];
|
|
176
|
+
if (target.startsWith('../')) {
|
|
177
|
+
target = target.replace('../', '');
|
|
178
|
+
}
|
|
179
|
+
else if (!target.startsWith('media/')) {
|
|
180
|
+
target = `${contextFolder}${target}`;
|
|
181
|
+
}
|
|
182
|
+
const dataUri = mediaStore.get(target);
|
|
183
|
+
if (dataUri) {
|
|
184
|
+
map[rId] = dataUri;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
const regex2 = /Relationship[^>]+Target="([^"]+)"[^>]+Id="(rId\d+)"[^>]+Type="[^"]*\/(image|oleObject|video|audio)[^"]*"/g;
|
|
188
|
+
while ((match = regex2.exec(relsXml)) !== null) {
|
|
189
|
+
const rId = match[2];
|
|
190
|
+
let target = match[1];
|
|
191
|
+
if (target.startsWith('../')) {
|
|
192
|
+
target = target.replace('../', '');
|
|
193
|
+
}
|
|
194
|
+
else if (!target.startsWith('media/')) {
|
|
195
|
+
target = `${contextFolder}${target}`;
|
|
196
|
+
}
|
|
197
|
+
if (!map[rId]) {
|
|
198
|
+
const dataUri = mediaStore.get(target);
|
|
199
|
+
if (dataUri) {
|
|
200
|
+
map[rId] = dataUri;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
return map;
|
|
205
|
+
}
|
|
206
|
+
function getMimeType(ext) {
|
|
207
|
+
const mimeMap = {
|
|
208
|
+
png: 'image/png',
|
|
209
|
+
jpg: 'image/jpeg',
|
|
210
|
+
jpeg: 'image/jpeg',
|
|
211
|
+
gif: 'image/gif',
|
|
212
|
+
svg: 'image/svg+xml',
|
|
213
|
+
emf: 'image/emf',
|
|
214
|
+
wmf: 'image/wmf',
|
|
215
|
+
tiff: 'image/tiff',
|
|
216
|
+
tif: 'image/tiff',
|
|
217
|
+
bmp: 'image/bmp',
|
|
218
|
+
webp: 'image/webp',
|
|
219
|
+
mp4: 'video/mp4',
|
|
220
|
+
mp3: 'audio/mpeg',
|
|
221
|
+
wav: 'audio/wav',
|
|
222
|
+
};
|
|
223
|
+
return mimeMap[ext] || 'application/octet-stream';
|
|
224
|
+
}
|
|
225
|
+
//# sourceMappingURL=pptx.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pptx.js","sourceRoot":"","sources":["../../src/wasm/pptx.ts"],"names":[],"mappings":"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"}
|