pptx-svelte-viewer 0.5.0 → 0.6.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 (238) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/README.md +9 -6
  3. package/dist/{component-CtIGg1wg.js → component-NIMULjW3.js} +20923 -16749
  4. package/dist/i18n/context.d.ts +20 -0
  5. package/dist/i18n/context.d.ts.map +1 -0
  6. package/dist/i18n/index.d.ts +4 -0
  7. package/dist/i18n/index.d.ts.map +1 -0
  8. package/dist/i18n/translator.d.ts +30 -0
  9. package/dist/i18n/translator.d.ts.map +1 -0
  10. package/dist/i18n.d.ts +56 -62
  11. package/dist/i18n.d.ts.map +1 -0
  12. package/dist/index.d.ts +765 -605
  13. package/dist/index.d.ts.map +1 -0
  14. package/dist/index.js +1 -1
  15. package/dist/theme/index.d.ts +8 -0
  16. package/dist/theme/index.d.ts.map +1 -0
  17. package/dist/viewer/collab/collaboration-dialogs.svelte.d.ts +31 -0
  18. package/dist/viewer/collab/collaboration-dialogs.svelte.d.ts.map +1 -0
  19. package/dist/viewer/collab/collaboration-presence-effects.svelte.d.ts +9 -0
  20. package/dist/viewer/collab/collaboration-presence-effects.svelte.d.ts.map +1 -0
  21. package/dist/viewer/collab/collaboration-presence.svelte.d.ts +20 -0
  22. package/dist/viewer/collab/collaboration-presence.svelte.d.ts.map +1 -0
  23. package/dist/viewer/collab/collaboration-provider.d.ts +35 -0
  24. package/dist/viewer/collab/collaboration-provider.d.ts.map +1 -0
  25. package/dist/viewer/collab/collaboration-remote-sync.d.ts +12 -0
  26. package/dist/viewer/collab/collaboration-remote-sync.d.ts.map +1 -0
  27. package/dist/viewer/collab/collaboration-session.d.ts +24 -0
  28. package/dist/viewer/collab/collaboration-session.d.ts.map +1 -0
  29. package/dist/viewer/collab/collaboration-status.d.ts +14 -0
  30. package/dist/viewer/collab/collaboration-status.d.ts.map +1 -0
  31. package/dist/viewer/collab/collaboration.svelte.d.ts +55 -0
  32. package/dist/viewer/collab/collaboration.svelte.d.ts.map +1 -0
  33. package/dist/viewer/collab/components/props.d.ts +79 -0
  34. package/dist/viewer/collab/components/props.d.ts.map +1 -0
  35. package/dist/viewer/collab/components/share-helpers.d.ts +29 -0
  36. package/dist/viewer/collab/components/share-helpers.d.ts.map +1 -0
  37. package/dist/viewer/collab/index.d.ts +15 -0
  38. package/dist/viewer/collab/index.d.ts.map +1 -0
  39. package/dist/viewer/component.d.ts +13 -0
  40. package/dist/viewer/component.d.ts.map +1 -0
  41. package/dist/viewer/components/index.d.ts +7 -0
  42. package/dist/viewer/components/index.d.ts.map +1 -0
  43. package/dist/viewer/components/props.d.ts +185 -0
  44. package/dist/viewer/components/props.d.ts.map +1 -0
  45. package/dist/viewer/components/ribbon/animations/animation-categories.d.ts +10 -0
  46. package/dist/viewer/components/ribbon/animations/animation-categories.d.ts.map +1 -0
  47. package/dist/viewer/components/ribbon/design/theme-swatches.d.ts +16 -0
  48. package/dist/viewer/components/ribbon/design/theme-swatches.d.ts.map +1 -0
  49. package/dist/viewer/components/ribbon/insert/shape-glyphs.d.ts +8 -0
  50. package/dist/viewer/components/ribbon/insert/shape-glyphs.d.ts.map +1 -0
  51. package/dist/viewer/components/ribbon/ribbon-tabs.d.ts +17 -0
  52. package/dist/viewer/components/ribbon/ribbon-tabs.d.ts.map +1 -0
  53. package/dist/viewer/components/ribbon/ribbon-types.d.ts +67 -0
  54. package/dist/viewer/components/ribbon/ribbon-types.d.ts.map +1 -0
  55. package/dist/viewer/components/ribbon/transitions/transition-presets.d.ts +10 -0
  56. package/dist/viewer/components/ribbon/transitions/transition-presets.d.ts.map +1 -0
  57. package/dist/viewer/editor/editing-api.d.ts +20 -0
  58. package/dist/viewer/editor/editing-api.d.ts.map +1 -0
  59. package/dist/viewer/editor/editor-animation-controller.d.ts +25 -0
  60. package/dist/viewer/editor/editor-animation-controller.d.ts.map +1 -0
  61. package/dist/viewer/editor/editor-arrange-controller.d.ts +24 -0
  62. package/dist/viewer/editor/editor-arrange-controller.d.ts.map +1 -0
  63. package/dist/viewer/editor/editor-arrange-ops.d.ts +28 -0
  64. package/dist/viewer/editor/editor-arrange-ops.d.ts.map +1 -0
  65. package/dist/viewer/editor/editor-background-controller.d.ts +21 -0
  66. package/dist/viewer/editor/editor-background-controller.d.ts.map +1 -0
  67. package/dist/viewer/editor/editor-clipboard-controller.d.ts +18 -0
  68. package/dist/viewer/editor/editor-clipboard-controller.d.ts.map +1 -0
  69. package/dist/viewer/editor/editor-clipboard.d.ts +20 -0
  70. package/dist/viewer/editor/editor-clipboard.d.ts.map +1 -0
  71. package/dist/viewer/editor/editor-controller-geometry.d.ts +8 -0
  72. package/dist/viewer/editor/editor-controller-geometry.d.ts.map +1 -0
  73. package/dist/viewer/editor/editor-controller.svelte.d.ts +43 -0
  74. package/dist/viewer/editor/editor-controller.svelte.d.ts.map +1 -0
  75. package/dist/viewer/editor/editor-element-controller.d.ts +21 -0
  76. package/dist/viewer/editor/editor-element-controller.d.ts.map +1 -0
  77. package/dist/viewer/editor/editor-equation-controller.svelte.d.ts +12 -0
  78. package/dist/viewer/editor/editor-equation-controller.svelte.d.ts.map +1 -0
  79. package/dist/viewer/editor/editor-find-replace.svelte.d.ts +39 -0
  80. package/dist/viewer/editor/editor-find-replace.svelte.d.ts.map +1 -0
  81. package/dist/viewer/editor/editor-format-mutations.d.ts +39 -0
  82. package/dist/viewer/editor/editor-format-mutations.d.ts.map +1 -0
  83. package/dist/viewer/editor/editor-format-painter-controller.svelte.d.ts +13 -0
  84. package/dist/viewer/editor/editor-format-painter-controller.svelte.d.ts.map +1 -0
  85. package/dist/viewer/editor/editor-geometry.d.ts +29 -0
  86. package/dist/viewer/editor/editor-geometry.d.ts.map +1 -0
  87. package/dist/viewer/editor/editor-gestures.d.ts +48 -0
  88. package/dist/viewer/editor/editor-gestures.d.ts.map +1 -0
  89. package/dist/viewer/editor/editor-ink-controller.svelte.d.ts +59 -0
  90. package/dist/viewer/editor/editor-ink-controller.svelte.d.ts.map +1 -0
  91. package/dist/viewer/editor/editor-ink-gesture.d.ts +37 -0
  92. package/dist/viewer/editor/editor-ink-gesture.d.ts.map +1 -0
  93. package/dist/viewer/editor/editor-insert-action-button.d.ts +13 -0
  94. package/dist/viewer/editor/editor-insert-action-button.d.ts.map +1 -0
  95. package/dist/viewer/editor/editor-insert-chart.d.ts +10 -0
  96. package/dist/viewer/editor/editor-insert-chart.d.ts.map +1 -0
  97. package/dist/viewer/editor/editor-insert-equation.d.ts +5 -0
  98. package/dist/viewer/editor/editor-insert-equation.d.ts.map +1 -0
  99. package/dist/viewer/editor/editor-insert-field.d.ts +17 -0
  100. package/dist/viewer/editor/editor-insert-field.d.ts.map +1 -0
  101. package/dist/viewer/editor/editor-insert-media.d.ts +10 -0
  102. package/dist/viewer/editor/editor-insert-media.d.ts.map +1 -0
  103. package/dist/viewer/editor/editor-insert-smart-art.d.ts +8 -0
  104. package/dist/viewer/editor/editor-insert-smart-art.d.ts.map +1 -0
  105. package/dist/viewer/editor/editor-insert.d.ts +40 -0
  106. package/dist/viewer/editor/editor-insert.d.ts.map +1 -0
  107. package/dist/viewer/editor/editor-keyboard.d.ts +31 -0
  108. package/dist/viewer/editor/editor-keyboard.d.ts.map +1 -0
  109. package/dist/viewer/editor/editor-master-controller.d.ts +17 -0
  110. package/dist/viewer/editor/editor-master-controller.d.ts.map +1 -0
  111. package/dist/viewer/editor/editor-mutations.d.ts +59 -0
  112. package/dist/viewer/editor/editor-mutations.d.ts.map +1 -0
  113. package/dist/viewer/editor/editor-paragraph-mutations.d.ts +10 -0
  114. package/dist/viewer/editor/editor-paragraph-mutations.d.ts.map +1 -0
  115. package/dist/viewer/editor/editor-selection-gestures.d.ts +24 -0
  116. package/dist/viewer/editor/editor-selection-gestures.d.ts.map +1 -0
  117. package/dist/viewer/editor/editor-selection.svelte.d.ts +32 -0
  118. package/dist/viewer/editor/editor-selection.svelte.d.ts.map +1 -0
  119. package/dist/viewer/editor/editor-slide-ops.d.ts +23 -0
  120. package/dist/viewer/editor/editor-slide-ops.d.ts.map +1 -0
  121. package/dist/viewer/editor/editor-slides-controller.d.ts +22 -0
  122. package/dist/viewer/editor/editor-slides-controller.d.ts.map +1 -0
  123. package/dist/viewer/editor/editor-state.svelte.d.ts +102 -0
  124. package/dist/viewer/editor/editor-state.svelte.d.ts.map +1 -0
  125. package/dist/viewer/editor/editor-template-controller.d.ts +12 -0
  126. package/dist/viewer/editor/editor-template-controller.d.ts.map +1 -0
  127. package/dist/viewer/editor/editor-text-extra-mutations.d.ts +18 -0
  128. package/dist/viewer/editor/editor-text-extra-mutations.d.ts.map +1 -0
  129. package/dist/viewer/editor/editor-transition-controller.d.ts +22 -0
  130. package/dist/viewer/editor/editor-transition-controller.d.ts.map +1 -0
  131. package/dist/viewer/editor/editor-zorder.d.ts +16 -0
  132. package/dist/viewer/editor/editor-zorder.d.ts.map +1 -0
  133. package/dist/viewer/editor/element-hit.d.ts +17 -0
  134. package/dist/viewer/editor/element-hit.d.ts.map +1 -0
  135. package/dist/viewer/editor/index.d.ts +45 -0
  136. package/dist/viewer/editor/index.d.ts.map +1 -0
  137. package/dist/viewer/editor/inline-text.d.ts +36 -0
  138. package/dist/viewer/editor/inline-text.d.ts.map +1 -0
  139. package/dist/viewer/editor/types.d.ts +12 -0
  140. package/dist/viewer/editor/types.d.ts.map +1 -0
  141. package/dist/viewer/export/export-controller.svelte.d.ts +77 -0
  142. package/dist/viewer/export/export-controller.svelte.d.ts.map +1 -0
  143. package/dist/viewer/export/export-gif.d.ts +42 -0
  144. package/dist/viewer/export/export-gif.d.ts.map +1 -0
  145. package/dist/viewer/export/export-print.d.ts +55 -0
  146. package/dist/viewer/export/export-print.d.ts.map +1 -0
  147. package/dist/viewer/export/export-ui.svelte.d.ts +45 -0
  148. package/dist/viewer/export/export-ui.svelte.d.ts.map +1 -0
  149. package/dist/viewer/export/export-video.d.ts +56 -0
  150. package/dist/viewer/export/export-video.d.ts.map +1 -0
  151. package/dist/viewer/export/export-wiring.svelte.d.ts +35 -0
  152. package/dist/viewer/export/export-wiring.svelte.d.ts.map +1 -0
  153. package/dist/viewer/export/exporting-api.d.ts +19 -0
  154. package/dist/viewer/export/exporting-api.d.ts.map +1 -0
  155. package/dist/viewer/export/index.d.ts +16 -0
  156. package/dist/viewer/export/index.d.ts.map +1 -0
  157. package/dist/viewer/export/rasterize-slide.d.ts +44 -0
  158. package/dist/viewer/export/rasterize-slide.d.ts.map +1 -0
  159. package/dist/viewer/export/render-to-canvas.d.ts +15 -0
  160. package/dist/viewer/export/render-to-canvas.d.ts.map +1 -0
  161. package/dist/viewer/index.d.ts +7536 -7597
  162. package/dist/viewer/index.d.ts.map +1 -0
  163. package/dist/viewer/index.js +1 -1
  164. package/dist/viewer/master/master-view.d.ts +7 -0
  165. package/dist/viewer/master/master-view.d.ts.map +1 -0
  166. package/dist/viewer/presentation/animation-playback.svelte.d.ts +57 -0
  167. package/dist/viewer/presentation/animation-playback.svelte.d.ts.map +1 -0
  168. package/dist/viewer/presentation/apply-animation-styles.d.ts +8 -0
  169. package/dist/viewer/presentation/apply-animation-styles.d.ts.map +1 -0
  170. package/dist/viewer/presentation/index.d.ts +10 -0
  171. package/dist/viewer/presentation/index.d.ts.map +1 -0
  172. package/dist/viewer/presentation/keyframes.d.ts +3 -0
  173. package/dist/viewer/presentation/keyframes.d.ts.map +1 -0
  174. package/dist/viewer/presentation/presentation-controller.svelte.d.ts +69 -0
  175. package/dist/viewer/presentation/presentation-controller.svelte.d.ts.map +1 -0
  176. package/dist/viewer/presentation/presentation-effects.svelte.d.ts +31 -0
  177. package/dist/viewer/presentation/presentation-effects.svelte.d.ts.map +1 -0
  178. package/dist/viewer/render/chart-view.d.ts +35 -0
  179. package/dist/viewer/render/chart-view.d.ts.map +1 -0
  180. package/dist/viewer/render/contentpart-view.d.ts +24 -0
  181. package/dist/viewer/render/contentpart-view.d.ts.map +1 -0
  182. package/dist/viewer/render/index.d.ts +25 -0
  183. package/dist/viewer/render/index.d.ts.map +1 -0
  184. package/dist/viewer/render/ink-view.d.ts +25 -0
  185. package/dist/viewer/render/ink-view.d.ts.map +1 -0
  186. package/dist/viewer/render/media-view.d.ts +17 -0
  187. package/dist/viewer/render/media-view.d.ts.map +1 -0
  188. package/dist/viewer/render/model3d-view.d.ts +16 -0
  189. package/dist/viewer/render/model3d-view.d.ts.map +1 -0
  190. package/dist/viewer/render/ole-view.d.ts +44 -0
  191. package/dist/viewer/render/ole-view.d.ts.map +1 -0
  192. package/dist/viewer/render/smart-art-3d-view.d.ts +18 -0
  193. package/dist/viewer/render/smart-art-3d-view.d.ts.map +1 -0
  194. package/dist/viewer/render/smartart-view.d.ts +54 -0
  195. package/dist/viewer/render/smartart-view.d.ts.map +1 -0
  196. package/dist/viewer/render/table-view.d.ts +39 -0
  197. package/dist/viewer/render/table-view.d.ts.map +1 -0
  198. package/dist/viewer/render/zoom-view.d.ts +18 -0
  199. package/dist/viewer/render/zoom-view.d.ts.map +1 -0
  200. package/dist/viewer/state/autosave.svelte.d.ts +61 -0
  201. package/dist/viewer/state/autosave.svelte.d.ts.map +1 -0
  202. package/dist/viewer/state/fullscreen.d.ts +16 -0
  203. package/dist/viewer/state/fullscreen.d.ts.map +1 -0
  204. package/dist/viewer/state/index.d.ts +9 -0
  205. package/dist/viewer/state/index.d.ts.map +1 -0
  206. package/dist/viewer/state/layout-state.svelte.d.ts +30 -0
  207. package/dist/viewer/state/layout-state.svelte.d.ts.map +1 -0
  208. package/dist/viewer/state/loader-helpers.d.ts +27 -0
  209. package/dist/viewer/state/loader-helpers.d.ts.map +1 -0
  210. package/dist/viewer/state/navigation.d.ts +26 -0
  211. package/dist/viewer/state/navigation.d.ts.map +1 -0
  212. package/dist/viewer/state/presentation-loader.svelte.d.ts +41 -0
  213. package/dist/viewer/state/presentation-loader.svelte.d.ts.map +1 -0
  214. package/dist/viewer/state/render-context.d.ts +9 -0
  215. package/dist/viewer/state/render-context.d.ts.map +1 -0
  216. package/dist/viewer/state/smart-art-3d-context.d.ts +22 -0
  217. package/dist/viewer/state/smart-art-3d-context.d.ts.map +1 -0
  218. package/dist/viewer/state/viewer-effects.svelte.d.ts +31 -0
  219. package/dist/viewer/state/viewer-effects.svelte.d.ts.map +1 -0
  220. package/dist/viewer/state/viewer-state.svelte.d.ts +36 -0
  221. package/dist/viewer/state/viewer-state.svelte.d.ts.map +1 -0
  222. package/dist/viewer/state/viewport-handlers.d.ts +24 -0
  223. package/dist/viewer/state/viewport-handlers.d.ts.map +1 -0
  224. package/dist/viewer/style/connector-label.d.ts +13 -0
  225. package/dist/viewer/style/connector-label.d.ts.map +1 -0
  226. package/dist/viewer/style/css.d.ts +13 -0
  227. package/dist/viewer/style/css.d.ts.map +1 -0
  228. package/dist/viewer/style/element-style.d.ts +26 -0
  229. package/dist/viewer/style/element-style.d.ts.map +1 -0
  230. package/dist/viewer/style/index.d.ts +5 -0
  231. package/dist/viewer/style/index.d.ts.map +1 -0
  232. package/dist/viewer/style/merge-3d.d.ts +10 -0
  233. package/dist/viewer/style/merge-3d.d.ts.map +1 -0
  234. package/dist/viewer/style/text-style.d.ts +4 -0
  235. package/dist/viewer/style/text-style.d.ts.map +1 -0
  236. package/dist/viewer/types.d.ts +189 -0
  237. package/dist/viewer/types.d.ts.map +1 -0
  238. package/package.json +6 -4
@@ -0,0 +1,102 @@
1
+ import { PptxElement, PptxHandler, PptxSlide, PptxSlideMaster, TextSegment } from 'pptx-viewer-core';
2
+ import { ElementClipboardPayload, TemplateElementMap } from 'pptx-viewer-shared';
3
+ import { EditorAnimationController } from './editor-animation-controller';
4
+ import { EditorArrangeController } from './editor-arrange-controller';
5
+ import { EditorBackgroundController } from './editor-background-controller';
6
+ import { EditorClipboardController } from './editor-clipboard-controller';
7
+ import { EditorElementController } from './editor-element-controller';
8
+ import { EditorEquationController } from './editor-equation-controller.svelte';
9
+ import { EditorFormatPainterController } from './editor-format-painter-controller.svelte';
10
+ import { EditorInkController } from './editor-ink-controller.svelte';
11
+ import { EditorMasterController, MasterViewTarget } from './editor-master-controller';
12
+ import { ElementBoxPatch } from './editor-mutations';
13
+ import { EditorSelection } from './editor-selection.svelte';
14
+ import { EditorSlidesController } from './editor-slides-controller';
15
+ import { EditorTemplateController } from './editor-template-controller';
16
+ import { EditorTransitionController } from './editor-transition-controller';
17
+ import { ZOrderDirection } from './editor-zorder';
18
+ export interface EditorStateDeps {
19
+ getCurrent(): number;
20
+ getHandler(): PptxHandler | null;
21
+ onChange?: () => void;
22
+ }
23
+ export declare class EditorState {
24
+ #private;
25
+ slides: PptxSlide[];
26
+ templateElementsBySlideId: TemplateElementMap;
27
+ slideMasters: PptxSlideMaster[];
28
+ masterViewTarget: MasterViewTarget | null;
29
+ readonly selection: EditorSelection;
30
+ editable: boolean;
31
+ dirty: boolean;
32
+ editTemplateMode: boolean;
33
+ interactionActive: boolean;
34
+ clipboard: ElementClipboardPayload | null;
35
+ readonly clipboardOps: EditorClipboardController;
36
+ readonly elementOps: EditorElementController;
37
+ readonly templateOps: EditorTemplateController;
38
+ readonly slidesOps: EditorSlidesController;
39
+ readonly arrangeOps: EditorArrangeController;
40
+ readonly backgroundOps: EditorBackgroundController;
41
+ readonly transitionOps: EditorTransitionController;
42
+ readonly animationOps: EditorAnimationController;
43
+ readonly inkOps: EditorInkController;
44
+ readonly masterOps: EditorMasterController;
45
+ readonly formatPainter: EditorFormatPainterController;
46
+ readonly equationOps: EditorEquationController;
47
+ constructor(deps: EditorStateDeps);
48
+ get canUndo(): boolean;
49
+ get canRedo(): boolean;
50
+ get selectedElementId(): string | null;
51
+ get selectedElement(): PptxElement | undefined;
52
+ get selectedElements(): PptxElement[];
53
+ get activeElements(): PptxElement[];
54
+ get renderedSlides(): PptxSlide[];
55
+ get hasClipboard(): boolean;
56
+ get currentSlideIndex(): number;
57
+ setSlides(slides: PptxSlide[], slideMasters?: PptxSlideMaster[]): void;
58
+ /**
59
+ * Replace the working slides with a remote (collaboration) snapshot without
60
+ * recording an undo step or touching the dirty flag: the granular reconcile
61
+ * already merged the peer's change, and treating an incoming remote edit as
62
+ * a local mutation would both pollute the undo stack and re-broadcast it.
63
+ *
64
+ * Selection is preserved when the selected element still exists so a remote
65
+ * edit does not yank the local user's selection out from under them. Local
66
+ * undo history is intentionally kept (see the collaboration module JSDoc):
67
+ * shared defines no collaborative-undo semantics, so, matching React/Vue,
68
+ * local undo may fight a concurrent remote edit.
69
+ */
70
+ applyRemoteSlides(slides: PptxSlide[]): void;
71
+ reset(): void;
72
+ select(id: string | null): void;
73
+ isElementInteractive(id: string): boolean;
74
+ setTemplateEditing(enabled: boolean): void;
75
+ pushHistory(): void;
76
+ commitChange(): void;
77
+ /** Patch geometry without history for live gesture preview frames. */
78
+ patchGeometry: (id: string, box: ElementBoxPatch) => void;
79
+ replaceActiveElements(elements: PptxElement[]): void;
80
+ /** Commit a replacement active element collection as one undo step. */
81
+ commitActiveElements(elements: PptxElement[]): void;
82
+ /**
83
+ * Replace the whole slide array with history (the generic multi-slide
84
+ * mutation entry point: slide add/duplicate/delete, arrange group ops,
85
+ * and find/replace all route through this so every change is a single
86
+ * undoable step). No-op when not editable.
87
+ */
88
+ commitSlides(next: PptxSlide[]): void;
89
+ deleteSelected: () => void;
90
+ duplicateSelected: () => string | null;
91
+ applyElementPatch: (id: string, patch: Partial<PptxElement>) => void;
92
+ patchSelected: (patch: Partial<PptxElement>) => void;
93
+ insertElement: (element: PptxElement) => string | null;
94
+ reorderSelected: (direction: ZOrderDirection) => void;
95
+ nudgeSelected: (dx: number, dy: number) => void;
96
+ commitInlineText: (id: string, text: string) => void;
97
+ commitNotes: (notes: string, notesSegments?: TextSegment[]) => void;
98
+ undo(): void;
99
+ redo(): void;
100
+ save(): Promise<Uint8Array>;
101
+ }
102
+ //# sourceMappingURL=editor-state.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editor-state.svelte.d.ts","sourceRoot":"","sources":["../../../src/viewer/editor/editor-state.svelte.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { PptxElement, PptxSlide } from 'pptx-viewer-core';
2
+ import { EditorState } from './editor-state.svelte';
3
+ /** Active-layer routing for normal slide content versus inherited template elements. */
4
+ export declare class EditorTemplateController {
5
+ #private;
6
+ constructor(editor: EditorState);
7
+ activeElements(): PptxElement[];
8
+ renderedSlides(): PptxSlide[];
9
+ replace(elements: PptxElement[]): void;
10
+ commit(elements: PptxElement[]): void;
11
+ }
12
+ //# sourceMappingURL=editor-template-controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editor-template-controller.d.ts","sourceRoot":"","sources":["../../../src/viewer/editor/editor-template-controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAG/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,wFAAwF;AACxF,qBAAa,wBAAwB;;gBAGxB,MAAM,EAAE,WAAW;IAI/B,cAAc,IAAI,WAAW,EAAE;IAc/B,cAAc,IAAI,SAAS,EAAE;IAI7B,OAAO,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,IAAI;IAoBtC,MAAM,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,IAAI;CAQrC"}
@@ -0,0 +1,18 @@
1
+ import { PptxElement } from 'pptx-viewer-core';
2
+ import { ChangeCaseMode } from 'pptx-viewer-shared';
3
+ /** Toggle the strikethrough flag. */
4
+ export declare function toggleStrikethroughPatch(el: PptxElement): Partial<PptxElement>;
5
+ /** Set the font family, preserving other text-style fields. */
6
+ export declare function setFontFamilyPatch(el: PptxElement, fontFamily: string): Partial<PptxElement>;
7
+ /** Set the character spacing (1/100 pt, OOXML `spc` units). */
8
+ export declare function setCharacterSpacingPatch(el: PptxElement, spacing: number): Partial<PptxElement>;
9
+ /**
10
+ * Rewrite the element's full text to the given case, via the shared
11
+ * `applyCaseTransformToSegments` (selection-free: transforms every run).
12
+ * Falls back to a `textCaps` style toggle for elements with no `textSegments`
13
+ * (e.g. table cells), matching React's behaviour.
14
+ */
15
+ export declare function changeCasePatch(el: PptxElement, mode: ChangeCaseMode): Partial<PptxElement>;
16
+ /** Reset bold/italic/underline/strikethrough/highlight to their defaults. */
17
+ export declare function clearFormattingPatch(el: PptxElement): Partial<PptxElement>;
18
+ //# sourceMappingURL=editor-text-extra-mutations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editor-text-extra-mutations.d.ts","sourceRoot":"","sources":["../../../src/viewer/editor/editor-text-extra-mutations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAa,MAAM,kBAAkB,CAAC;AAE/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAezD,qCAAqC;AACrC,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAG9E;AAED,+DAA+D;AAC/D,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAE5F;AAED,+DAA+D;AAC/D,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAE/F;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,CAY3F;AAED,6EAA6E;AAC7E,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAW1E"}
@@ -0,0 +1,22 @@
1
+ import { PptxTransitionType } from 'pptx-viewer-core';
2
+ import { EditorState } from './editor-state.svelte';
3
+ /**
4
+ * Slide-transition actions for the ribbon's Transitions tab, split out of
5
+ * `EditorState` to keep it under the repo's 300-LOC budget. Playback already
6
+ * reads `PptxSlide.transition` (see `presentation/presentation-controller.svelte.ts`),
7
+ * so this only needs to write that same field, routed through
8
+ * `EditorState.commitSlides` so it is history-integrated (undoable).
9
+ *
10
+ * `applyTransition` covers both the preset gallery buttons and the duration
11
+ * input (the tab re-applies the currently-selected preset whenever the
12
+ * duration changes), plus the "Apply to All Slides" checkbox: when
13
+ * `applyToAll` is true every slide gets the same fresh `{ type, durationMs }`
14
+ * transition; otherwise only the current slide is patched, preserving any
15
+ * advanced fields (direction, sound, ...) it already carried.
16
+ */
17
+ export declare class EditorTransitionController {
18
+ #private;
19
+ constructor(editor: EditorState);
20
+ applyTransition(type: PptxTransitionType, durationMs: number, applyToAll: boolean): void;
21
+ }
22
+ //# sourceMappingURL=editor-transition-controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editor-transition-controller.d.ts","sourceRoot":"","sources":["../../../src/viewer/editor/editor-transition-controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAuB,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAGhF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD;;;;;;;;;;;;;GAaG;AACH,qBAAa,0BAA0B;;gBAG1B,MAAM,EAAE,WAAW;IAI/B,eAAe,CAAC,IAAI,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAG,IAAI;CAoBxF"}
@@ -0,0 +1,16 @@
1
+ import { PptxSlide } from 'pptx-viewer-core';
2
+ /**
3
+ * Z-order (paint-order) reordering for the Svelte editor.
4
+ *
5
+ * The array-level primitives (`bringToFront`, `sendToBack`, `bringForward`,
6
+ * `sendBackward`) are the shared, framework-agnostic operations from
7
+ * `pptx-viewer-shared` (`render/element-operations`), where array index 0 is
8
+ * the back and the last index is the front. This module only lifts them to the
9
+ * slide-array shape the editor state stores, reusing the same immutable
10
+ * `mapSlideElements` helper as the other mutations.
11
+ */
12
+ /** Which way to move the selected element through the paint-order stack. */
13
+ export type ZOrderDirection = 'front' | 'back' | 'forward' | 'backward';
14
+ /** Reorder the element with `id` on the given slide (immutable). */
15
+ export declare function reorderElement(slides: readonly PptxSlide[], slideIndex: number, id: string, direction: ZOrderDirection): PptxSlide[];
16
+ //# sourceMappingURL=editor-zorder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editor-zorder.d.ts","sourceRoot":"","sources":["../../../src/viewer/editor/editor-zorder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAe,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAK/D;;;;;;;;;GASG;AAEH,4EAA4E;AAC5E,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;AAYxE,oEAAoE;AACpE,wBAAgB,cAAc,CAC7B,MAAM,EAAE,SAAS,SAAS,EAAE,EAC5B,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,eAAe,GACxB,SAAS,EAAE,CAGb"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Hit-testing for the editing layer: map a pointer-event target inside the
3
+ * rendered stage back to the TOP-LEVEL slide element it belongs to.
4
+ *
5
+ * Renderers set `data-element-id` on every element root (groups nest their
6
+ * children's roots inside their own), so the innermost match identifies the
7
+ * hit and the outermost ancestor with the attribute identifies the top-level
8
+ * element the editor selects and transforms. Native DOM hit-testing already
9
+ * gives us the visually topmost node, so z-order comes for free.
10
+ */
11
+ /**
12
+ * Resolve the top-level element id for an event target within `stageRoot`,
13
+ * or `null` when the target is not inside a rendered element (empty canvas,
14
+ * chrome, overlay).
15
+ */
16
+ export declare function resolveTopLevelElementId(target: EventTarget | null, stageRoot: Element | null): string | null;
17
+ //# sourceMappingURL=element-hit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"element-hit.d.ts","sourceRoot":"","sources":["../../../src/viewer/editor/element-hit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH;;;;GAIG;AACH,wBAAgB,wBAAwB,CACvC,MAAM,EAAE,WAAW,GAAG,IAAI,EAC1B,SAAS,EAAE,OAAO,GAAG,IAAI,GACvB,MAAM,GAAG,IAAI,CAoBf"}
@@ -0,0 +1,45 @@
1
+ export type { EditorControllerDeps } from './editor-controller.svelte';
2
+ export { EditorController } from './editor-controller.svelte';
3
+ export type { EditorStateDeps } from './editor-state.svelte';
4
+ export { EditorState } from './editor-state.svelte';
5
+ export { EditorAnimationController } from './editor-animation-controller';
6
+ export { EditorArrangeController } from './editor-arrange-controller';
7
+ export { alignSelectedOnSlide, distributeSelectedOnSlide, flipSelectedOnSlide, groupSelectedOnSlide, ungroupOnSlide, } from './editor-arrange-ops';
8
+ export { EditorBackgroundController } from './editor-background-controller';
9
+ export { copyElementToClipboard, pasteClipboardElement } from './editor-clipboard';
10
+ export { EditorClipboardController } from './editor-clipboard-controller';
11
+ export type { InkDrawTool } from './editor-ink-controller.svelte';
12
+ export { EditorInkController } from './editor-ink-controller.svelte';
13
+ export type { InkGestureController, InkGestureDeps } from './editor-ink-gesture';
14
+ export { createInkGestureController } from './editor-ink-gesture';
15
+ export { EditorSlidesController } from './editor-slides-controller';
16
+ export { EditorTransitionController } from './editor-transition-controller';
17
+ export { deleteSlideAt, duplicateSlideAt, insertBlankSlideAfter, moveSlide, } from './editor-slide-ops';
18
+ export type { FindReplaceDeps } from './editor-find-replace.svelte';
19
+ export { FindReplaceState } from './editor-find-replace.svelte';
20
+ export { adjustIndentPatch, setAlignPatch, setLineSpacingPatch, toggleListTypePatch, } from './editor-paragraph-mutations';
21
+ export { changeCasePatch, clearFormattingPatch, setCharacterSpacingPatch, setFontFamilyPatch, toggleStrikethroughPatch, } from './editor-text-extra-mutations';
22
+ export type { GestureController, GestureDeps, GestureKind, GestureTransform, } from './editor-gestures';
23
+ export { createGestureController } from './editor-gestures';
24
+ export { isCornerHandle, lockResizeAspect, NUDGE_STEP, NUDGE_STEP_LARGE, nudgeDelta, } from './editor-geometry';
25
+ export type { EditorKeyboardDeps } from './editor-keyboard';
26
+ export { createEditorKeydownHandler } from './editor-keyboard';
27
+ export { appendElement, centerOnCanvas, newElementId, newImageElement, newPresetShapeElement, newShapeElement, newTableElement, newTextElement, } from './editor-insert';
28
+ export { buildChartInsertElement } from './editor-insert-chart';
29
+ export { buildEquationInsertElement } from './editor-insert-equation';
30
+ export { buildActionButtonInsertElement } from './editor-insert-action-button';
31
+ export type { FieldInsertContext } from './editor-insert-field';
32
+ export { buildFieldInsertElement, resolveFieldDisplayText } from './editor-insert-field';
33
+ export { buildMediaInsertElement, mediaTypeOfFile } from './editor-insert-media';
34
+ export { buildSmartArtInsertElement } from './editor-insert-smart-art';
35
+ export type { TextFlag } from './editor-format-mutations';
36
+ export { adjustFontSizePatch, fillOpacityOf, highlightColorOf, setFillColorPatch, setFillOpacityPatch, setFontSizePatch, setHighlightColorPatch, setSolidFillPatch, setStrokeColorPatch, setStrokeOpacityPatch, setStrokeWidthPatch, setTextColorPatch, strokeOpacityOf, strokeWidthOf, toggleTextFlagPatch, } from './editor-format-mutations';
37
+ export type { ElementBoxPatch } from './editor-mutations';
38
+ export { cloneSlides, duplicateElementOnSlide, findSlideElement, mapSlideElements, patchElementGeometry, removeElement, updateAllSlides, updateElement, updateSlide, updateSlideNotes, } from './editor-mutations';
39
+ export type { ZOrderDirection } from './editor-zorder';
40
+ export { reorderElement } from './editor-zorder';
41
+ export { resolveTopLevelElementId } from './element-hit';
42
+ export type { InlineTextSurface } from './inline-text';
43
+ export { canInlineEditElement, readEditableText, remapInlineText, resolveInlineSurface, } from './inline-text';
44
+ export type { OverlayBox } from './types';
45
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/viewer/editor/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import { PptxElement, TextSegment } from 'pptx-viewer-core';
2
+ /**
3
+ * Pure helpers for inline text editing. The editable surface itself is a
4
+ * Svelte component (`InlineTextEditor.svelte`); this module only holds the
5
+ * framework-agnostic logic: which elements are editable, remapping edited
6
+ * plain text back onto the original rich segments (via the shared
7
+ * `remapTextToSegments`, so per-run styles and field metadata survive), and
8
+ * reading plain text out of a contenteditable surface.
9
+ */
10
+ /**
11
+ * Only elements that carry text (and are not locked) get the inline editor.
12
+ * Equation-bearing text NEVER enters inline editing: the editor would only see
13
+ * the literal "[Equation]" placeholder and committing would permanently drop
14
+ * the OMML (`textSegments[].equationXml`). Mirrors the vanilla/Vue/React guard.
15
+ */
16
+ export declare function canInlineEditElement(element: PptxElement | undefined): boolean;
17
+ /** Remap edited plain text back onto the element's original segments. */
18
+ export declare function remapInlineText(element: PptxElement, text: string): {
19
+ text: string;
20
+ textSegments: TextSegment[];
21
+ };
22
+ /**
23
+ * Read the plain text of a contenteditable back out, translating `<br>` and
24
+ * block-element boundaries into `\n` (contenteditable normalises Enter into
25
+ * nested blocks or `<br>` depending on the browser).
26
+ */
27
+ export declare function readEditableText(root: HTMLElement): string;
28
+ /** Initial plain text + optional font style for the inline surface. */
29
+ export interface InlineTextSurface {
30
+ text: string;
31
+ fontSize: number | undefined;
32
+ fontFamily: string | undefined;
33
+ }
34
+ /** Resolve the seed text and font hints for an element's inline editor. */
35
+ export declare function resolveInlineSurface(element: PptxElement): InlineTextSurface;
36
+ //# sourceMappingURL=inline-text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inline-text.d.ts","sourceRoot":"","sources":["../../../src/viewer/editor/inline-text.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAa,MAAM,kBAAkB,CAAC;AAI5E;;;;;;;GAOG;AAEH;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,WAAW,GAAG,SAAS,GAAG,OAAO,CAK9E;AAED,yEAAyE;AACzE,wBAAgB,eAAe,CAC9B,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,MAAM,GACV;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,WAAW,EAAE,CAAA;CAAE,CAK/C;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAwB1D;AAED,uEAAuE;AACvE,MAAM,WAAW,iBAAiB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B;AAED,2EAA2E;AAC3E,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,WAAW,GAAG,iBAAiB,CAO5E"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Shared value types for the Svelte editing layer.
3
+ */
4
+ /** Box geometry in element (unscaled slide) px. */
5
+ export interface OverlayBox {
6
+ x: number;
7
+ y: number;
8
+ width: number;
9
+ height: number;
10
+ rotation: number;
11
+ }
12
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/viewer/editor/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,mDAAmD;AACnD,MAAM,WAAW,UAAU;IAC1B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CACjB"}
@@ -0,0 +1,77 @@
1
+ import { PptxSlide } from 'pptx-viewer-core';
2
+ import { CanvasSize } from 'pptx-viewer-shared';
3
+ import { ExportGifOptions } from './export-gif';
4
+ import { OpenPrintWindow, PrintOptions } from './export-print';
5
+ import { ExportVideoOptions } from './export-video';
6
+ /** Rasterise the slide at `index` to an `HTMLCanvasElement`. Injected so the
7
+ * controller stays DOM-capture-free and unit-testable. */
8
+ export type RasterizeSlide = (index: number) => Promise<HTMLCanvasElement>;
9
+ /** Per-slide progress callback: `(currentSlideIndex, totalSlides)`. */
10
+ export type ExportProgress = (current: number, total: number) => void;
11
+ /** Options for the multi-slide PDF export (progress + cooperative cancel). */
12
+ export interface ExportPdfOptions {
13
+ /** Capture-phase progress callback: `(currentSlide, totalSlides)`. */
14
+ onProgress?: ExportProgress;
15
+ /** Abort the export early; the loop checks this between slides. */
16
+ signal?: AbortSignal;
17
+ }
18
+ export interface ExportControllerDeps {
19
+ /** Live slide count; read fresh on every call. */
20
+ getSlideCount(): number;
21
+ /** Active slide index (0-based); the PNG export's default target. */
22
+ getCurrent(): number;
23
+ /** Live slide canvas size (px), for the PDF page size. */
24
+ getCanvasSize(): CanvasSize;
25
+ /** Live slide list (print needs slide notes/titles, not just the count). */
26
+ getSlides(): PptxSlide[];
27
+ rasterizeSlide: RasterizeSlide;
28
+ /** Print-surface opener override; see `export-print.ts` for the default. */
29
+ openPrintWindow?: OpenPrintWindow;
30
+ /** Base file name (without extension) for downloads. Defaults to `presentation`. */
31
+ fileName?: string;
32
+ }
33
+ /**
34
+ * Export controller (runes class): render slides to PNG / PDF / animated GIF /
35
+ * WebM video, plus the print flow. Started as a Svelte port of Vue's
36
+ * `useExport` composable (`packages/vue/src/viewer/composables/useExport.ts`)
37
+ * and now also covers React's `useExportHandlers` GIF/video surface (via
38
+ * `export-gif.ts` / `export-video.ts`) and Vue's `usePrint`
39
+ * (`export-print.ts`), reshaped as a `$state`-backed class to match this
40
+ * package's runes-class convention (see `EditorState` in
41
+ * `../editor/editor-state.svelte.ts`) rather than Vue `Ref`s.
42
+ *
43
+ * Rasterisation is delegated to the injected `rasterizeSlide` (the host owns
44
+ * the off-screen `SlideStage` mount + `html2canvas-pro`, see
45
+ * `rasterize-slide.ts`). `jspdf` is loaded lazily so it stays out of the main
46
+ * bundle.
47
+ */
48
+ export declare class ExportController {
49
+ #private;
50
+ /** True while an export is running (disable UI / show a spinner). */
51
+ exporting: boolean;
52
+ constructor(deps: ExportControllerDeps);
53
+ /** Export a single slide as a PNG download. Defaults to the current slide. */
54
+ exportSlidePng(index?: number): Promise<void>;
55
+ /** Export every slide as a multi-page PDF download (one slide per page). */
56
+ exportPdf(options?: ExportPdfOptions): Promise<void>;
57
+ /**
58
+ * Export every slide as an animated GIF download. Frame delays come from
59
+ * the shared `planGifFrames` plan (default duration + per-slide overrides);
60
+ * see `export-gif.ts`. Supports progress + AbortSignal like `exportPdf`.
61
+ */
62
+ exportGif(options?: ExportGifOptions): Promise<void>;
63
+ /**
64
+ * Export every slide as a WebM video download (MediaRecorder over a canvas
65
+ * capture stream, timing from the shared `planVideoSegments` plan); see
66
+ * `export-video.ts`. Supports progress + AbortSignal like `exportPdf`.
67
+ */
68
+ exportVideo(options?: ExportVideoOptions): Promise<void>;
69
+ /**
70
+ * Assemble the shared print document for the given (partial) settings and
71
+ * open it in the print surface (hidden iframe by default; see
72
+ * `export-print.ts` for the popup-blocker caveats of custom openers).
73
+ * Resolves `true` when the print surface opened.
74
+ */
75
+ print(options?: PrintOptions): Promise<boolean>;
76
+ }
77
+ //# sourceMappingURL=export-controller.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export-controller.svelte.d.ts","sourceRoot":"","sources":["../../../src/viewer/export/export-controller.svelte.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAErD,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEpE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAGzD;0DAC0D;AAC1D,MAAM,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAE3E,uEAAuE;AACvE,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;AAEtE,8EAA8E;AAC9E,MAAM,WAAW,gBAAgB;IAChC,sEAAsE;IACtE,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,mEAAmE;IACnE,MAAM,CAAC,EAAE,WAAW,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB;IACpC,kDAAkD;IAClD,aAAa,IAAI,MAAM,CAAC;IACxB,qEAAqE;IACrE,UAAU,IAAI,MAAM,CAAC;IACrB,0DAA0D;IAC1D,aAAa,IAAI,UAAU,CAAC;IAC5B,4EAA4E;IAC5E,SAAS,IAAI,SAAS,EAAE,CAAC;IACzB,cAAc,EAAE,cAAc,CAAC;IAC/B,4EAA4E;IAC5E,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,oFAAoF;IACpF,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB;AAUD;;;;;;;;;;;;;;GAcG;AACH,qBAAa,gBAAgB;;IAC5B,qEAAqE;IACrE,SAAS,UAAiB;gBAId,IAAI,EAAE,oBAAoB;IAItC,8EAA8E;IACxE,cAAc,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBnD,4EAA4E;IACtE,SAAS,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IA6B9D;;;;OAIG;IACG,SAAS,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAmB9D;;;;OAIG;IACG,WAAW,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBlE;;;;;OAKG;IACG,KAAK,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,OAAO,CAAC;CAmBzD"}
@@ -0,0 +1,42 @@
1
+ import { ExportProgress, RasterizeSlide } from './export-controller.svelte';
2
+ /**
3
+ * Animated-GIF export capture/encode pipeline. All the pure logic is shared:
4
+ * `planGifFrames` derives the per-slide frame delays (default duration +
5
+ * per-slide overrides), `clampGifDimensions` bounds the output size, and
6
+ * `encodeGif` (median-cut quantisation + LZW GIF89a) produces the bytes with
7
+ * each frame carrying its own plan delay. This module only owns the
8
+ * DOM-adjacent glue: rasterising each slide via the injected capture callback
9
+ * and normalising every frame onto a uniform-size canvas before pixel
10
+ * extraction. Blob download is left to the caller (`ExportController`).
11
+ */
12
+ /** Options for the animated-GIF export. */
13
+ export interface ExportGifOptions {
14
+ /** Duration each slide is shown, in milliseconds. Default 2000. */
15
+ slideDurationMs?: number;
16
+ /** Per-slide duration overrides in milliseconds (index maps to slide index). */
17
+ slideTimingsMs?: number[];
18
+ /**
19
+ * Longest allowed output side in pixels; frames are scaled down
20
+ * proportionally. Default 960 (GIF encoding cost grows with pixel count:
21
+ * every pixel is matched against a 256-colour palette per frame).
22
+ */
23
+ maxDimension?: number;
24
+ /** Capture-phase progress callback: `(currentSlide, totalSlides)`. */
25
+ onProgress?: ExportProgress;
26
+ /** Abort the export early; checked before each slide capture. */
27
+ signal?: AbortSignal;
28
+ }
29
+ /** Injected capture dependencies (kept DOM-free for unit tests). */
30
+ export interface GifCaptureDeps {
31
+ /** Live slide count; read fresh on every call. */
32
+ getSlideCount(): number;
33
+ rasterizeSlide: RasterizeSlide;
34
+ /** Canvas factory override (test seam). Defaults to `document.createElement`. */
35
+ createCanvas?: (width: number, height: number) => HTMLCanvasElement;
36
+ }
37
+ /**
38
+ * Capture every slide and encode the sequence as an animated GIF Blob.
39
+ * Rejects with the shared `AbortError` when `signal` aborts between slides.
40
+ */
41
+ export declare function exportSlidesToGifBlob(deps: GifCaptureDeps, options?: ExportGifOptions): Promise<Blob>;
42
+ //# sourceMappingURL=export-gif.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export-gif.d.ts","sourceRoot":"","sources":["../../../src/viewer/export/export-gif.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEjF;;;;;;;;;GASG;AAEH,2CAA2C;AAC3C,MAAM,WAAW,gBAAgB;IAChC,mEAAmE;IACnE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gFAAgF;IAChF,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,sEAAsE;IACtE,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,iEAAiE;IACjE,MAAM,CAAC,EAAE,WAAW,CAAC;CACrB;AAED,oEAAoE;AACpE,MAAM,WAAW,cAAc;IAC9B,kDAAkD;IAClD,aAAa,IAAI,MAAM,CAAC;IACxB,cAAc,EAAE,cAAc,CAAC;IAC/B,iFAAiF;IACjF,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,iBAAiB,CAAC;CACpE;AA8BD;;;GAGG;AACH,wBAAsB,qBAAqB,CAC1C,IAAI,EAAE,cAAc,EACpB,OAAO,GAAE,gBAAqB,GAC5B,OAAO,CAAC,IAAI,CAAC,CA8Cf"}
@@ -0,0 +1,55 @@
1
+ import { PptxSlide } from 'pptx-viewer-core';
2
+ import { PrintSettings } from 'pptx-viewer-shared';
3
+ import { RasterizeSlide } from './export-controller.svelte';
4
+ /**
5
+ * Print flow: assemble the shared print document (slides / notes / handouts /
6
+ * outline) and hand it to a print surface. All the pure logic is shared and
7
+ * DOMPurify-hardened: `validatePrintSettings` normalises the caller's partial
8
+ * settings, `computeSlideIndices` / `computeColorFilter` resolve the range and
9
+ * colour mode, the `build*Html` helpers produce the escaped body markup, and
10
+ * `buildPrintHtmlDocument` sanitises + assembles the final document. This
11
+ * module (the Svelte counterpart of Vue's `usePrint`) only rasterises the
12
+ * selected slides and opens the print surface.
13
+ *
14
+ * **Print surface / popup-blocker caveats:** the default opener renders the
15
+ * document into a hidden same-origin `<iframe srcdoc>` and calls
16
+ * `contentWindow.print()`, so no popup window is involved and popup blockers
17
+ * cannot interfere (`document.write` is avoided too). A host that prefers a
18
+ * visible print window can inject its own {@link OpenPrintWindow} via the
19
+ * controller deps; note that a `window.open`-based opener only succeeds inside
20
+ * a user gesture (a click handler) and returns `null` under popup blockers,
21
+ * in which case it should report `false` so the flow resolves `false` and the
22
+ * host can surface "allow popups for this site" guidance.
23
+ */
24
+ /** Options for the print flow: any subset of the shared print settings. */
25
+ export type PrintOptions = Partial<PrintSettings>;
26
+ /**
27
+ * Render a complete HTML document into a print surface and trigger printing.
28
+ * Returns `false` when the surface could not be opened (e.g. a custom
29
+ * `window.open`-based opener hit a popup blocker).
30
+ */
31
+ export type OpenPrintWindow = (htmlDocument: string) => boolean;
32
+ /** Injected dependencies (kept DOM-light for unit tests). */
33
+ export interface PrintDeps {
34
+ /** Live slide list; read fresh on every call. */
35
+ getSlides(): PptxSlide[];
36
+ /** Active slide index (0-based); target of the `current` slide range. */
37
+ getCurrent(): number;
38
+ rasterizeSlide: RasterizeSlide;
39
+ /** Print-surface opener override (test seam / host popup handling). */
40
+ openPrintWindow?: OpenPrintWindow;
41
+ }
42
+ /**
43
+ * Default opener: mount the document in a hidden same-origin iframe (via
44
+ * `srcdoc`, no `document.write`) and print its content window. The frame is
45
+ * removed after `afterprint`, with a TTL fallback for browsers that never
46
+ * fire it on iframe windows.
47
+ */
48
+ export declare function defaultOpenPrintWindow(htmlDocument: string): boolean;
49
+ /**
50
+ * Run the print flow for the given (partial) settings. Resolves `true` when
51
+ * the print surface opened, `false` when there was nothing to print or the
52
+ * opener reported failure (see the popup-blocker caveats above).
53
+ */
54
+ export declare function printSlides(deps: PrintDeps, options?: PrintOptions): Promise<boolean>;
55
+ //# sourceMappingURL=export-print.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export-print.d.ts","sourceRoot":"","sources":["../../../src/viewer/export/export-print.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAYxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEjE;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,2EAA2E;AAC3E,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;AAElD;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC;AAEhE,6DAA6D;AAC7D,MAAM,WAAW,SAAS;IACzB,iDAAiD;IACjD,SAAS,IAAI,SAAS,EAAE,CAAC;IACzB,yEAAyE;IACzE,UAAU,IAAI,MAAM,CAAC;IACrB,cAAc,EAAE,cAAc,CAAC;IAC/B,uEAAuE;IACvE,eAAe,CAAC,EAAE,eAAe,CAAC;CAClC;AAKD;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CA6BpE;AAgBD;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,CA8C/F"}
@@ -0,0 +1,45 @@
1
+ import { Translator } from '../../i18n/translator';
2
+ import { ExportController } from './export-controller.svelte';
3
+ /**
4
+ * ExportUiState: reactive state behind the toolbar `ExportMenu` and the
5
+ * `ExportProgressModal`. Svelte port of Vue's `useExportProgress` composable:
6
+ * it owns the modal state (open / title / progress / status), the
7
+ * `AbortController` the export loops check between slides, and wraps each
8
+ * multi-slide export (PDF / GIF / WebM) in a `begin -> run -> end` envelope.
9
+ * All percentage maths + status labels come from `pptx-viewer-shared`
10
+ * (`export-progress.ts`) so every binding shows identical progress.
11
+ *
12
+ * PNG (single slide, fast) and print (opens its own surface) run without the
13
+ * modal; the menu trigger still disables via {@link exporting} while they run.
14
+ */
15
+ export interface ExportUiDeps {
16
+ controller: ExportController;
17
+ getTranslator(): Translator;
18
+ }
19
+ export declare class ExportUiState {
20
+ #private;
21
+ /** Whether the progress modal is visible. */
22
+ open: boolean;
23
+ /** Modal heading (e.g. "Export as PDF"). */
24
+ title: string;
25
+ /** Current progress, 0-100. */
26
+ progress: number;
27
+ /** Status line under the bar (e.g. "Rendering slide 3 of 10..."). */
28
+ status: string;
29
+ constructor(deps: ExportUiDeps);
30
+ /** True while any export runs (disables the menu trigger). */
31
+ get exporting(): boolean;
32
+ /** Export the current slide as PNG (no modal; quick single capture). */
33
+ runPng(): void;
34
+ /** Run the PDF export with the progress modal wired. */
35
+ runPdf(): Promise<void>;
36
+ /** Run the animated-GIF export with the progress modal wired. */
37
+ runGif(): Promise<void>;
38
+ /** Run the WebM video export with the progress modal wired. */
39
+ runVideo(): Promise<void>;
40
+ /** Run the print flow (no modal; the print surface takes over). */
41
+ runPrint(): void;
42
+ /** Cancel the in-flight export (aborts the loop, closes the modal). */
43
+ cancel(): void;
44
+ }
45
+ //# sourceMappingURL=export-ui.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export-ui.svelte.d.ts","sourceRoot":"","sources":["../../../src/viewer/export/export-ui.svelte.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAEnE;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,YAAY;IAC5B,UAAU,EAAE,gBAAgB,CAAC;IAC7B,aAAa,IAAI,UAAU,CAAC;CAC5B;AAED,qBAAa,aAAa;;IACzB,6CAA6C;IAC7C,IAAI,UAAiB;IACrB,4CAA4C;IAC5C,KAAK,SAAc;IACnB,+BAA+B;IAC/B,QAAQ,SAAa;IACrB,qEAAqE;IACrE,MAAM,SAAc;gBAKR,IAAI,EAAE,YAAY;IAI9B,8DAA8D;IAC9D,IAAI,SAAS,IAAI,OAAO,CAEvB;IA4BD,wEAAwE;IACxE,MAAM,IAAI,IAAI;IAId,wDAAwD;IAClD,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAoB7B,iEAAiE;IAC3D,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAkB7B,+DAA+D;IACzD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAsB/B,mEAAmE;IACnE,QAAQ,IAAI,IAAI;IAIhB,uEAAuE;IACvE,MAAM,IAAI,IAAI;CAMd"}