@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.
Files changed (275) hide show
  1. package/README.md +82 -0
  2. package/dist/RustRenderer.d.ts +10 -0
  3. package/dist/RustRenderer.d.ts.map +1 -0
  4. package/dist/RustRenderer.js +30 -0
  5. package/dist/RustRenderer.js.map +1 -0
  6. package/dist/forms/KandiForm.d.ts +15 -0
  7. package/dist/forms/KandiForm.d.ts.map +1 -0
  8. package/dist/forms/KandiForm.js +577 -0
  9. package/dist/forms/KandiForm.js.map +1 -0
  10. package/dist/forms/KandiFormProvider.d.ts +17 -0
  11. package/dist/forms/KandiFormProvider.d.ts.map +1 -0
  12. package/dist/forms/KandiFormProvider.js +29 -0
  13. package/dist/forms/KandiFormProvider.js.map +1 -0
  14. package/dist/forms/core/FormEngine.d.ts +71 -0
  15. package/dist/forms/core/FormEngine.d.ts.map +1 -0
  16. package/dist/forms/core/FormEngine.js +463 -0
  17. package/dist/forms/core/FormEngine.js.map +1 -0
  18. package/dist/forms/core/index.d.ts +3 -0
  19. package/dist/forms/core/index.d.ts.map +1 -0
  20. package/dist/forms/core/index.js +2 -0
  21. package/dist/forms/core/index.js.map +1 -0
  22. package/dist/forms/hooks/index.d.ts +5 -0
  23. package/dist/forms/hooks/index.d.ts.map +1 -0
  24. package/dist/forms/hooks/index.js +3 -0
  25. package/dist/forms/hooks/index.js.map +1 -0
  26. package/dist/forms/hooks/useFormState.d.ts +32 -0
  27. package/dist/forms/hooks/useFormState.d.ts.map +1 -0
  28. package/dist/forms/hooks/useFormState.js +77 -0
  29. package/dist/forms/hooks/useFormState.js.map +1 -0
  30. package/dist/forms/hooks/useFormStorage.d.ts +28 -0
  31. package/dist/forms/hooks/useFormStorage.d.ts.map +1 -0
  32. package/dist/forms/hooks/useFormStorage.js +40 -0
  33. package/dist/forms/hooks/useFormStorage.js.map +1 -0
  34. package/dist/forms/index.d.ts +13 -0
  35. package/dist/forms/index.d.ts.map +1 -0
  36. package/dist/forms/index.js +7 -0
  37. package/dist/forms/index.js.map +1 -0
  38. package/dist/forms/storage/ApiFormStorage.d.ts +31 -0
  39. package/dist/forms/storage/ApiFormStorage.d.ts.map +1 -0
  40. package/dist/forms/storage/ApiFormStorage.js +112 -0
  41. package/dist/forms/storage/ApiFormStorage.js.map +1 -0
  42. package/dist/forms/storage/TauriFormStorage.d.ts +27 -0
  43. package/dist/forms/storage/TauriFormStorage.d.ts.map +1 -0
  44. package/dist/forms/storage/TauriFormStorage.js +82 -0
  45. package/dist/forms/storage/TauriFormStorage.js.map +1 -0
  46. package/dist/forms/storage/TauriThemeStorage.d.ts +10 -0
  47. package/dist/forms/storage/TauriThemeStorage.d.ts.map +1 -0
  48. package/dist/forms/storage/TauriThemeStorage.js +28 -0
  49. package/dist/forms/storage/TauriThemeStorage.js.map +1 -0
  50. package/dist/forms/storage/index.d.ts +9 -0
  51. package/dist/forms/storage/index.d.ts.map +1 -0
  52. package/dist/forms/storage/index.js +28 -0
  53. package/dist/forms/storage/index.js.map +1 -0
  54. package/dist/forms/storage/types.d.ts +486 -0
  55. package/dist/forms/storage/types.d.ts.map +1 -0
  56. package/dist/forms/storage/types.js +2 -0
  57. package/dist/forms/storage/types.js.map +1 -0
  58. package/dist/forms/vanilla/KandiForm.d.ts +40 -0
  59. package/dist/forms/vanilla/KandiForm.d.ts.map +1 -0
  60. package/dist/forms/vanilla/KandiForm.js +586 -0
  61. package/dist/forms/vanilla/KandiForm.js.map +1 -0
  62. package/dist/forms/vanilla/index.d.ts +7 -0
  63. package/dist/forms/vanilla/index.d.ts.map +1 -0
  64. package/dist/forms/vanilla/index.js +4 -0
  65. package/dist/forms/vanilla/index.js.map +1 -0
  66. package/dist/forms-builder/components/AddFieldForm.d.ts +10 -0
  67. package/dist/forms-builder/components/AddFieldForm.d.ts.map +1 -0
  68. package/dist/forms-builder/components/AddFieldForm.js +69 -0
  69. package/dist/forms-builder/components/AddFieldForm.js.map +1 -0
  70. package/dist/forms-builder/components/FormCard.d.ts +9 -0
  71. package/dist/forms-builder/components/FormCard.d.ts.map +1 -0
  72. package/dist/forms-builder/components/FormCard.js +40 -0
  73. package/dist/forms-builder/components/FormCard.js.map +1 -0
  74. package/dist/forms-builder/components/FormDesigner.d.ts +9 -0
  75. package/dist/forms-builder/components/FormDesigner.d.ts.map +1 -0
  76. package/dist/forms-builder/components/FormDesigner.js +73 -0
  77. package/dist/forms-builder/components/FormDesigner.js.map +1 -0
  78. package/dist/forms-builder/components/FormLibraryDialog.d.ts +11 -0
  79. package/dist/forms-builder/components/FormLibraryDialog.d.ts.map +1 -0
  80. package/dist/forms-builder/components/FormLibraryDialog.js +72 -0
  81. package/dist/forms-builder/components/FormLibraryDialog.js.map +1 -0
  82. package/dist/forms-builder/components/FormTester.d.ts +10 -0
  83. package/dist/forms-builder/components/FormTester.d.ts.map +1 -0
  84. package/dist/forms-builder/components/FormTester.js +147 -0
  85. package/dist/forms-builder/components/FormTester.js.map +1 -0
  86. package/dist/forms-builder/components/NewKandiFormDialog.d.ts +11 -0
  87. package/dist/forms-builder/components/NewKandiFormDialog.d.ts.map +1 -0
  88. package/dist/forms-builder/components/NewKandiFormDialog.js +82 -0
  89. package/dist/forms-builder/components/NewKandiFormDialog.js.map +1 -0
  90. package/dist/forms-builder/components/SchemaBuilder.d.ts +15 -0
  91. package/dist/forms-builder/components/SchemaBuilder.d.ts.map +1 -0
  92. package/dist/forms-builder/components/SchemaBuilder.js +62 -0
  93. package/dist/forms-builder/components/SchemaBuilder.js.map +1 -0
  94. package/dist/forms-builder/components/index.d.ts +8 -0
  95. package/dist/forms-builder/components/index.d.ts.map +1 -0
  96. package/dist/forms-builder/components/index.js +8 -0
  97. package/dist/forms-builder/components/index.js.map +1 -0
  98. package/dist/forms-builder/hooks/index.d.ts +3 -0
  99. package/dist/forms-builder/hooks/index.d.ts.map +1 -0
  100. package/dist/forms-builder/hooks/index.js +2 -0
  101. package/dist/forms-builder/hooks/index.js.map +1 -0
  102. package/dist/forms-builder/hooks/useFormWizard.d.ts +39 -0
  103. package/dist/forms-builder/hooks/useFormWizard.d.ts.map +1 -0
  104. package/dist/forms-builder/hooks/useFormWizard.js +268 -0
  105. package/dist/forms-builder/hooks/useFormWizard.js.map +1 -0
  106. package/dist/forms-builder/index.d.ts +6 -0
  107. package/dist/forms-builder/index.d.ts.map +1 -0
  108. package/dist/forms-builder/index.js +4 -0
  109. package/dist/forms-builder/index.js.map +1 -0
  110. package/dist/forms-builder/types/index.d.ts +88 -0
  111. package/dist/forms-builder/types/index.d.ts.map +1 -0
  112. package/dist/forms-builder/types/index.js +88 -0
  113. package/dist/forms-builder/types/index.js.map +1 -0
  114. package/dist/index.d.ts +16 -0
  115. package/dist/index.d.ts.map +1 -0
  116. package/dist/index.js +12 -0
  117. package/dist/index.js.map +1 -0
  118. package/dist/logger.d.ts +44 -0
  119. package/dist/logger.d.ts.map +1 -0
  120. package/dist/logger.js +111 -0
  121. package/dist/logger.js.map +1 -0
  122. package/dist/services/IDocumentService.d.ts +48 -0
  123. package/dist/services/IDocumentService.d.ts.map +1 -0
  124. package/dist/services/IDocumentService.js +2 -0
  125. package/dist/services/IDocumentService.js.map +1 -0
  126. package/dist/services/TauriDocumentService.d.ts +28 -0
  127. package/dist/services/TauriDocumentService.d.ts.map +1 -0
  128. package/dist/services/TauriDocumentService.js +109 -0
  129. package/dist/services/TauriDocumentService.js.map +1 -0
  130. package/dist/services/WasmDocumentService.d.ts +28 -0
  131. package/dist/services/WasmDocumentService.d.ts.map +1 -0
  132. package/dist/services/WasmDocumentService.js +122 -0
  133. package/dist/services/WasmDocumentService.js.map +1 -0
  134. package/dist/services/documentServiceRegistry.d.ts +4 -0
  135. package/dist/services/documentServiceRegistry.d.ts.map +1 -0
  136. package/dist/services/documentServiceRegistry.js +14 -0
  137. package/dist/services/documentServiceRegistry.js.map +1 -0
  138. package/dist/shared/services/FileLogger.d.ts +101 -0
  139. package/dist/shared/services/FileLogger.d.ts.map +1 -0
  140. package/dist/shared/services/FileLogger.js +483 -0
  141. package/dist/shared/services/FileLogger.js.map +1 -0
  142. package/dist/shared/services/IPlatformService.d.ts +80 -0
  143. package/dist/shared/services/IPlatformService.d.ts.map +1 -0
  144. package/dist/shared/services/IPlatformService.js +36 -0
  145. package/dist/shared/services/IPlatformService.js.map +1 -0
  146. package/dist/shared/services/Logger.d.ts +82 -0
  147. package/dist/shared/services/Logger.d.ts.map +1 -0
  148. package/dist/shared/services/Logger.js +215 -0
  149. package/dist/shared/services/Logger.js.map +1 -0
  150. package/dist/shared/services/LoggerAdapter.d.ts +8 -0
  151. package/dist/shared/services/LoggerAdapter.d.ts.map +1 -0
  152. package/dist/shared/services/LoggerAdapter.js +31 -0
  153. package/dist/shared/services/LoggerAdapter.js.map +1 -0
  154. package/dist/shared/services/platformServiceRegistry.d.ts +6 -0
  155. package/dist/shared/services/platformServiceRegistry.d.ts.map +1 -0
  156. package/dist/shared/services/platformServiceRegistry.js +18 -0
  157. package/dist/shared/services/platformServiceRegistry.js.map +1 -0
  158. package/dist/shared/theme/ThemeContext.d.ts +7 -0
  159. package/dist/shared/theme/ThemeContext.d.ts.map +1 -0
  160. package/dist/shared/theme/ThemeContext.js +134 -0
  161. package/dist/shared/theme/ThemeContext.js.map +1 -0
  162. package/dist/shared/theme/index.d.ts +6 -0
  163. package/dist/shared/theme/index.d.ts.map +1 -0
  164. package/dist/shared/theme/index.js +4 -0
  165. package/dist/shared/theme/index.js.map +1 -0
  166. package/dist/shared/theme/muiTheme.d.ts +3 -0
  167. package/dist/shared/theme/muiTheme.d.ts.map +1 -0
  168. package/dist/shared/theme/muiTheme.js +349 -0
  169. package/dist/shared/theme/muiTheme.js.map +1 -0
  170. package/dist/shared/theme/tokens.d.ts +252 -0
  171. package/dist/shared/theme/tokens.d.ts.map +1 -0
  172. package/dist/shared/theme/tokens.js +180 -0
  173. package/dist/shared/theme/tokens.js.map +1 -0
  174. package/dist/shared/theme/types.d.ts +55 -0
  175. package/dist/shared/theme/types.d.ts.map +1 -0
  176. package/dist/shared/theme/types.js +144 -0
  177. package/dist/shared/theme/types.js.map +1 -0
  178. package/dist/viewers/DocxViewer.d.ts +7 -0
  179. package/dist/viewers/DocxViewer.d.ts.map +1 -0
  180. package/dist/viewers/DocxViewer.js +157 -0
  181. package/dist/viewers/DocxViewer.js.map +1 -0
  182. package/dist/viewers/MarkdownViewer.d.ts +8 -0
  183. package/dist/viewers/MarkdownViewer.d.ts.map +1 -0
  184. package/dist/viewers/MarkdownViewer.js +111 -0
  185. package/dist/viewers/MarkdownViewer.js.map +1 -0
  186. package/dist/viewers/pdf/PdfViewer.d.ts +5 -0
  187. package/dist/viewers/pdf/PdfViewer.d.ts.map +1 -0
  188. package/dist/viewers/pdf/PdfViewer.js +104 -0
  189. package/dist/viewers/pdf/PdfViewer.js.map +1 -0
  190. package/dist/viewers/pdf/components/PdfFilmstrip.d.ts +4 -0
  191. package/dist/viewers/pdf/components/PdfFilmstrip.d.ts.map +1 -0
  192. package/dist/viewers/pdf/components/PdfFilmstrip.js +21 -0
  193. package/dist/viewers/pdf/components/PdfFilmstrip.js.map +1 -0
  194. package/dist/viewers/pdf/components/PdfToolbar.d.ts +4 -0
  195. package/dist/viewers/pdf/components/PdfToolbar.d.ts.map +1 -0
  196. package/dist/viewers/pdf/components/PdfToolbar.js +55 -0
  197. package/dist/viewers/pdf/components/PdfToolbar.js.map +1 -0
  198. package/dist/viewers/pdf/components/index.d.ts +4 -0
  199. package/dist/viewers/pdf/components/index.d.ts.map +1 -0
  200. package/dist/viewers/pdf/components/index.js +4 -0
  201. package/dist/viewers/pdf/components/index.js.map +1 -0
  202. package/dist/viewers/pdf/components/views/BookView.d.ts +4 -0
  203. package/dist/viewers/pdf/components/views/BookView.d.ts.map +1 -0
  204. package/dist/viewers/pdf/components/views/BookView.js +67 -0
  205. package/dist/viewers/pdf/components/views/BookView.js.map +1 -0
  206. package/dist/viewers/pdf/components/views/ContinuousScrollView.d.ts +4 -0
  207. package/dist/viewers/pdf/components/views/ContinuousScrollView.d.ts.map +1 -0
  208. package/dist/viewers/pdf/components/views/ContinuousScrollView.js +98 -0
  209. package/dist/viewers/pdf/components/views/ContinuousScrollView.js.map +1 -0
  210. package/dist/viewers/pdf/components/views/SinglePageView.d.ts +4 -0
  211. package/dist/viewers/pdf/components/views/SinglePageView.d.ts.map +1 -0
  212. package/dist/viewers/pdf/components/views/SinglePageView.js +27 -0
  213. package/dist/viewers/pdf/components/views/SinglePageView.js.map +1 -0
  214. package/dist/viewers/pdf/components/views/ThumbnailGridView.d.ts +8 -0
  215. package/dist/viewers/pdf/components/views/ThumbnailGridView.d.ts.map +1 -0
  216. package/dist/viewers/pdf/components/views/ThumbnailGridView.js +37 -0
  217. package/dist/viewers/pdf/components/views/ThumbnailGridView.js.map +1 -0
  218. package/dist/viewers/pdf/components/views/index.d.ts +5 -0
  219. package/dist/viewers/pdf/components/views/index.d.ts.map +1 -0
  220. package/dist/viewers/pdf/components/views/index.js +5 -0
  221. package/dist/viewers/pdf/components/views/index.js.map +1 -0
  222. package/dist/viewers/pdf/hooks/index.d.ts +5 -0
  223. package/dist/viewers/pdf/hooks/index.d.ts.map +1 -0
  224. package/dist/viewers/pdf/hooks/index.js +5 -0
  225. package/dist/viewers/pdf/hooks/index.js.map +1 -0
  226. package/dist/viewers/pdf/hooks/useFileWatcher.d.ts +15 -0
  227. package/dist/viewers/pdf/hooks/useFileWatcher.d.ts.map +1 -0
  228. package/dist/viewers/pdf/hooks/useFileWatcher.js +75 -0
  229. package/dist/viewers/pdf/hooks/useFileWatcher.js.map +1 -0
  230. package/dist/viewers/pdf/hooks/usePdfDocument.d.ts +24 -0
  231. package/dist/viewers/pdf/hooks/usePdfDocument.d.ts.map +1 -0
  232. package/dist/viewers/pdf/hooks/usePdfDocument.js +176 -0
  233. package/dist/viewers/pdf/hooks/usePdfDocument.js.map +1 -0
  234. package/dist/viewers/pdf/hooks/usePdfNavigation.d.ts +19 -0
  235. package/dist/viewers/pdf/hooks/usePdfNavigation.d.ts.map +1 -0
  236. package/dist/viewers/pdf/hooks/usePdfNavigation.js +92 -0
  237. package/dist/viewers/pdf/hooks/usePdfNavigation.js.map +1 -0
  238. package/dist/viewers/pdf/hooks/useZoom.d.ts +24 -0
  239. package/dist/viewers/pdf/hooks/useZoom.d.ts.map +1 -0
  240. package/dist/viewers/pdf/hooks/useZoom.js +136 -0
  241. package/dist/viewers/pdf/hooks/useZoom.js.map +1 -0
  242. package/dist/viewers/pdf/index.d.ts +5 -0
  243. package/dist/viewers/pdf/index.d.ts.map +1 -0
  244. package/dist/viewers/pdf/index.js +5 -0
  245. package/dist/viewers/pdf/index.js.map +1 -0
  246. package/dist/viewers/pdf/types.d.ts +80 -0
  247. package/dist/viewers/pdf/types.d.ts.map +1 -0
  248. package/dist/viewers/pdf/types.js +2 -0
  249. package/dist/viewers/pdf/types.js.map +1 -0
  250. package/dist/wasm/docx.d.ts +10 -0
  251. package/dist/wasm/docx.d.ts.map +1 -0
  252. package/dist/wasm/docx.js +66 -0
  253. package/dist/wasm/docx.js.map +1 -0
  254. package/dist/wasm/index.d.ts +6 -0
  255. package/dist/wasm/index.d.ts.map +1 -0
  256. package/dist/wasm/index.js +4 -0
  257. package/dist/wasm/index.js.map +1 -0
  258. package/dist/wasm/pptx.d.ts +9 -0
  259. package/dist/wasm/pptx.d.ts.map +1 -0
  260. package/dist/wasm/pptx.js +225 -0
  261. package/dist/wasm/pptx.js.map +1 -0
  262. package/dist/wasm/types.d.ts +266 -0
  263. package/dist/wasm/types.d.ts.map +1 -0
  264. package/dist/wasm/types.js +2 -0
  265. package/dist/wasm/types.js.map +1 -0
  266. package/dist/wasm/wasm-loader.d.ts +17 -0
  267. package/dist/wasm/wasm-loader.d.ts.map +1 -0
  268. package/dist/wasm/wasm-loader.js +23 -0
  269. package/dist/wasm/wasm-loader.js.map +1 -0
  270. package/package.json +81 -0
  271. package/wasm-pkg/LICENSE +37 -0
  272. package/wasm-pkg/kandi_office_wasm.d.ts +168 -0
  273. package/wasm-pkg/kandi_office_wasm.js +1008 -0
  274. package/wasm-pkg/kandi_office_wasm_bg.wasm +0 -0
  275. 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,5 @@
1
+ export { PdfViewer, default } from './PdfViewer';
2
+ export * from './types';
3
+ export * from './hooks';
4
+ export * from './components';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -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,5 @@
1
+ export { PdfViewer, default } from './PdfViewer';
2
+ export * from './types';
3
+ export * from './hooks';
4
+ export * from './components';
5
+ //# sourceMappingURL=index.js.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -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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"}