pptx-vue-viewer 1.1.15 → 1.1.16

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 (65) hide show
  1. package/dist/index.cjs +1 -1
  2. package/dist/index.cjs.br +0 -0
  3. package/dist/index.cjs.gz +0 -0
  4. package/dist/index.js +1 -1
  5. package/dist/index.js.br +0 -0
  6. package/dist/index.js.gz +0 -0
  7. package/dist/viewer/PowerPointViewer.vue.d.ts.map +1 -1
  8. package/dist/viewer/components/DocumentPropertiesCustomTab.vue.d.ts +21 -0
  9. package/dist/viewer/components/DocumentPropertiesCustomTab.vue.d.ts.map +1 -0
  10. package/dist/viewer/components/DocumentPropertiesDialog.vue.d.ts +51 -0
  11. package/dist/viewer/components/DocumentPropertiesDialog.vue.d.ts.map +1 -0
  12. package/dist/viewer/components/DocumentPropertiesGeneralTab.vue.d.ts +34 -0
  13. package/dist/viewer/components/DocumentPropertiesGeneralTab.vue.d.ts.map +1 -0
  14. package/dist/viewer/components/DocumentPropertiesStatisticsTab.vue.d.ts +17 -0
  15. package/dist/viewer/components/DocumentPropertiesStatisticsTab.vue.d.ts.map +1 -0
  16. package/dist/viewer/components/PresentationAnnotationOverlay.vue.d.ts +39 -0
  17. package/dist/viewer/components/PresentationAnnotationOverlay.vue.d.ts.map +1 -0
  18. package/dist/viewer/components/PresentationMode.vue.d.ts.map +1 -1
  19. package/dist/viewer/components/PresentationSubtitleBar.vue.d.ts +7 -0
  20. package/dist/viewer/components/PresentationSubtitleBar.vue.d.ts.map +1 -0
  21. package/dist/viewer/components/PresentationToolbar.vue.d.ts +49 -0
  22. package/dist/viewer/components/PresentationToolbar.vue.d.ts.map +1 -0
  23. package/dist/viewer/components/PresenterView.vue.d.ts +30 -0
  24. package/dist/viewer/components/PresenterView.vue.d.ts.map +1 -0
  25. package/dist/viewer/components/PrintDialog.vue.d.ts +19 -0
  26. package/dist/viewer/components/PrintDialog.vue.d.ts.map +1 -0
  27. package/dist/viewer/components/PrintSettingsPanel.vue.d.ts +35 -0
  28. package/dist/viewer/components/PrintSettingsPanel.vue.d.ts.map +1 -0
  29. package/dist/viewer/components/ShortcutPanel.vue.d.ts +12 -0
  30. package/dist/viewer/components/ShortcutPanel.vue.d.ts.map +1 -0
  31. package/dist/viewer/components/print-dialog-types.d.ts +73 -0
  32. package/dist/viewer/components/print-dialog-types.d.ts.map +1 -0
  33. package/dist/viewer/composables/presentation-toolbar-utils.d.ts +30 -0
  34. package/dist/viewer/composables/presentation-toolbar-utils.d.ts.map +1 -0
  35. package/dist/viewer/composables/presenter-view-utils.d.ts +34 -0
  36. package/dist/viewer/composables/presenter-view-utils.d.ts.map +1 -0
  37. package/dist/viewer/composables/useDocumentStatistics.d.ts +56 -0
  38. package/dist/viewer/composables/useDocumentStatistics.d.ts.map +1 -0
  39. package/dist/viewer/composables/useKeyboardShortcuts.d.ts +137 -0
  40. package/dist/viewer/composables/useKeyboardShortcuts.d.ts.map +1 -0
  41. package/dist/viewer/composables/usePresentationAnnotations.d.ts +69 -0
  42. package/dist/viewer/composables/usePresentationAnnotations.d.ts.map +1 -0
  43. package/dist/viewer/composables/usePrint.d.ts +44 -0
  44. package/dist/viewer/composables/usePrint.d.ts.map +1 -0
  45. package/dist/viewer/composables/useRehearseTimings.d.ts +57 -0
  46. package/dist/viewer/composables/useRehearseTimings.d.ts.map +1 -0
  47. package/dist/viewer/index.cjs +1 -1
  48. package/dist/viewer/index.cjs.br +0 -0
  49. package/dist/viewer/index.cjs.gz +0 -0
  50. package/dist/viewer/index.js +1 -1
  51. package/dist/viewer/index.js.br +0 -0
  52. package/dist/viewer/index.js.gz +0 -0
  53. package/dist/{viewer-y-czgCly.cjs → viewer-C4oRgY8q.cjs} +3930 -2051
  54. package/dist/viewer-C4oRgY8q.cjs.br +0 -0
  55. package/dist/viewer-C4oRgY8q.cjs.gz +0 -0
  56. package/dist/{viewer-Bpxq5Oc5.js → viewer-CZvXHM4n.js} +9533 -7654
  57. package/dist/viewer-CZvXHM4n.js.br +0 -0
  58. package/dist/viewer-CZvXHM4n.js.gz +0 -0
  59. package/package.json +1 -1
  60. package/dist/viewer/components/PropertiesDialog.vue.d.ts +0 -32
  61. package/dist/viewer/components/PropertiesDialog.vue.d.ts.map +0 -1
  62. package/dist/viewer-Bpxq5Oc5.js.br +0 -0
  63. package/dist/viewer-Bpxq5Oc5.js.gz +0 -0
  64. package/dist/viewer-y-czgCly.cjs.br +0 -0
  65. package/dist/viewer-y-czgCly.cjs.gz +0 -0
package/dist/index.cjs CHANGED
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const e = require("./viewer-y-czgCly.cjs");
2
+ const e = require("./viewer-C4oRgY8q.cjs");
3
3
  let r = require("clsx"), t = require("tailwind-merge");
4
4
  exports.ElementRenderer = e.ElementRenderer_default, exports.PowerPointViewer = e.PowerPointViewer_default, exports.SlideCanvas = e.SlideCanvas_default, exports.SlideStage = e.SlideStage_default, exports.cn = function(...e) {
5
5
  return (0, t.twMerge)((0, r.clsx)(e));
package/dist/index.cjs.br CHANGED
Binary file
package/dist/index.cjs.gz CHANGED
Binary file
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { C as a, F as s, N as e, P as r, R as i, S as o, a as t, o as m, s as n, t as l, w } from "./viewer-Bpxq5Oc5.js";
1
+ import { C as a, F as s, N as e, P as r, R as i, S as o, a as t, o as m, s as n, t as l, w } from "./viewer-CZvXHM4n.js";
2
2
  import { clsx as d } from "clsx";
3
3
  import { twMerge as f } from "tailwind-merge";
4
4
  function p(...a) {
package/dist/index.js.br CHANGED
Binary file
package/dist/index.js.gz CHANGED
Binary file
@@ -1 +1 @@
1
- {"version":3,"file":"PowerPointViewer.vue.d.ts","sourceRoot":"","sources":["../../src/viewer/PowerPointViewer.vue"],"names":[],"mappings":"AA4xCA,OAAO,KAAK,EACX,mBAAmB,EAEnB,sBAAsB,EACtB,qBAAqB,EACrB,MAAM,SAAS,CAAC;AAs9DjB,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;6EAKhB,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
1
+ {"version":3,"file":"PowerPointViewer.vue.d.ts","sourceRoot":"","sources":["../../src/viewer/PowerPointViewer.vue"],"names":[],"mappings":"AAi3CA,OAAO,KAAK,EACX,mBAAmB,EAEnB,sBAAsB,EACtB,qBAAqB,EACrB,MAAM,SAAS,CAAC;AA8lEjB,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;6EAKhB,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
@@ -0,0 +1,21 @@
1
+ import { PptxCustomProperty } from 'pptx-viewer-core';
2
+ /**
3
+ * DocumentPropertiesCustomTab — add/remove/edit user-defined custom properties.
4
+ *
5
+ * Vue counterpart of React's `DocumentPropertiesCustomTab`. Renders an editable
6
+ * grid of name/value/type rows. Boolean-typed properties render a yes/no
7
+ * dropdown; numeric types use a `number` input. The parent owns the draft
8
+ * array — every mutation emits the full updated list.
9
+ */
10
+ type __VLS_Props = {
11
+ /** Current draft list of custom properties. */
12
+ customProperties: PptxCustomProperty[];
13
+ };
14
+ declare const __VLS_export: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
15
+ update: (next: PptxCustomProperty[]) => any;
16
+ }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
17
+ onUpdate?: ((next: PptxCustomProperty[]) => any) | undefined;
18
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
19
+ declare const _default: typeof __VLS_export;
20
+ export default _default;
21
+ //# sourceMappingURL=DocumentPropertiesCustomTab.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DocumentPropertiesCustomTab.vue.d.ts","sourceRoot":"","sources":["../../../src/viewer/components/DocumentPropertiesCustomTab.vue"],"names":[],"mappings":"AAAA,OA4OO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAU3D;;;;;;;GAOG;AACH,KAAK,WAAW,GAAG;IAClB,+CAA+C;IAC/C,gBAAgB,EAAE,kBAAkB,EAAE,CAAC;CACvC,CAAC;AA+MF,QAAA,MAAM,YAAY;;;;kFAGhB,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
@@ -0,0 +1,51 @@
1
+ import { PptxAppProperties, PptxCoreProperties, PptxCustomProperty, PptxSlide } from 'pptx-viewer-core';
2
+ /**
3
+ * Payload emitted on save. Mirrors the React `onSave(core, custom, app?)`
4
+ * signature, collapsed into a single patch object so the host can apply it in
5
+ * one call. `app` is only present when manager/company changed.
6
+ */
7
+ export interface DocumentPropertiesSavePatch {
8
+ /** Full edited core-properties draft. */
9
+ core: PptxCoreProperties;
10
+ /** Full edited custom-properties list. */
11
+ custom: PptxCustomProperty[];
12
+ /** Edited app properties (manager/company) — omitted when unchanged. */
13
+ app?: Pick<PptxAppProperties, 'manager' | 'company'>;
14
+ }
15
+ /**
16
+ * DocumentPropertiesDialog — the full tabbed Document Properties dialog.
17
+ *
18
+ * Vue port of React's `DocumentPropertiesDialog`, built on `ModalDialog`. Three
19
+ * tabs:
20
+ * - **General** — editable core metadata (title/subject/author/keywords/
21
+ * comments/category) plus app-level manager/company.
22
+ * - **Statistics** — read-only counts computed live from the slide model
23
+ * (`computeDocumentStatistics`) + timestamps/revision from core properties.
24
+ * - **Custom** — add/remove/edit user-defined custom properties.
25
+ *
26
+ * Draft state is held locally and re-seeded each time the dialog opens; nothing
27
+ * is committed until the user clicks Save, which emits a single
28
+ * {@link DocumentPropertiesSavePatch}. A dirty check disables no-op saves.
29
+ */
30
+ type __VLS_Props = {
31
+ /** Whether the dialog is visible. */
32
+ open: boolean;
33
+ /** Parsed document core properties. */
34
+ coreProperties: PptxCoreProperties | undefined;
35
+ /** Parsed custom properties (defaults to empty). */
36
+ customProperties?: PptxCustomProperty[];
37
+ /** Parsed app properties — only manager/company are editable here. */
38
+ appProperties?: PptxAppProperties;
39
+ /** Live slide model, used to compute the Statistics tab. */
40
+ slides: PptxSlide[];
41
+ };
42
+ declare const __VLS_export: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
43
+ close: () => any;
44
+ save: (patch: DocumentPropertiesSavePatch) => any;
45
+ }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
46
+ onClose?: (() => any) | undefined;
47
+ onSave?: ((patch: DocumentPropertiesSavePatch) => any) | undefined;
48
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
49
+ declare const _default: typeof __VLS_export;
50
+ export default _default;
51
+ //# sourceMappingURL=DocumentPropertiesDialog.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DocumentPropertiesDialog.vue.d.ts","sourceRoot":"","sources":["../../../src/viewer/components/DocumentPropertiesDialog.vue"],"names":[],"mappings":"AAoRA,OAAO,KAAK,EACX,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,SAAS,EACT,MAAM,kBAAkB,CAAC;AAa1B;;;;GAIG;AACH,MAAM,WAAW,2BAA2B;IAC3C,yCAAyC;IACzC,IAAI,EAAE,kBAAkB,CAAC;IACzB,0CAA0C;IAC1C,MAAM,EAAE,kBAAkB,EAAE,CAAC;IAC7B,wEAAwE;IACxE,GAAG,CAAC,EAAE,IAAI,CAAC,iBAAiB,EAAE,SAAS,GAAG,SAAS,CAAC,CAAC;CACrD;AAED;;;;;;;;;;;;;;GAcG;AACH,KAAK,WAAW,GAAG;IAClB,qCAAqC;IACrC,IAAI,EAAE,OAAO,CAAC;IACd,uCAAuC;IACvC,cAAc,EAAE,kBAAkB,GAAG,SAAS,CAAC;IAC/C,oDAAoD;IACpD,gBAAgB,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACxC,sEAAsE;IACtE,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAClC,4DAA4D;IAC5D,MAAM,EAAE,SAAS,EAAE,CAAC;CACpB,CAAC;AAgTF,QAAA,MAAM,YAAY;;;;;;kFAGhB,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
@@ -0,0 +1,34 @@
1
+ import { PptxCoreProperties } from 'pptx-viewer-core';
2
+ /**
3
+ * Editable core-property keys surfaced on the General tab. `manager` and
4
+ * `company` live on `PptxAppProperties`, not `PptxCoreProperties`, so they are
5
+ * handled by their own model props below.
6
+ */
7
+ export type GeneralCoreKey = 'title' | 'subject' | 'creator' | 'keywords' | 'description' | 'category';
8
+ /**
9
+ * DocumentPropertiesGeneralTab — the editable metadata tab.
10
+ *
11
+ * Edits the core-property fields (title/subject/author/keywords/comments/
12
+ * category) plus the app-level manager/company. The parent owns the draft
13
+ * state; this tab is a controlled form that emits granular field updates.
14
+ */
15
+ type __VLS_Props = {
16
+ /** Draft core properties (controlled by the parent dialog). */
17
+ core: PptxCoreProperties;
18
+ /** Draft manager (app property). */
19
+ manager: string;
20
+ /** Draft company (app property). */
21
+ company: string;
22
+ };
23
+ declare const __VLS_export: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
24
+ "update-core": (key: GeneralCoreKey, value: string) => void;
25
+ "update-manager": (value: string) => void;
26
+ "update-company": (value: string) => void;
27
+ }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
28
+ "onUpdate-core"?: ((key: GeneralCoreKey, value: string) => any) | undefined;
29
+ "onUpdate-manager"?: ((value: string) => any) | undefined;
30
+ "onUpdate-company"?: ((value: string) => any) | undefined;
31
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
32
+ declare const _default: typeof __VLS_export;
33
+ export default _default;
34
+ //# sourceMappingURL=DocumentPropertiesGeneralTab.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DocumentPropertiesGeneralTab.vue.d.ts","sourceRoot":"","sources":["../../../src/viewer/components/DocumentPropertiesGeneralTab.vue"],"names":[],"mappings":"AAmKA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAE3D;;;;GAIG;AACH,MAAM,MAAM,cAAc,GACvB,OAAO,GACP,SAAS,GACT,SAAS,GACT,UAAU,GACV,aAAa,GACb,UAAU,CAAC;AAiBd;;;;;;GAMG;AACH,KAAK,WAAW,GAAG;IAClB,+DAA+D;IAC/D,IAAI,EAAE,kBAAkB,CAAC;IACzB,oCAAoC;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,oCAAoC;IACpC,OAAO,EAAE,MAAM,CAAC;CAChB,CAAC;AAkJF,QAAA,MAAM,YAAY;;;;;;;;kFAGhB,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
@@ -0,0 +1,17 @@
1
+ import { DocumentStatistics } from '../composables/useDocumentStatistics';
2
+ /**
3
+ * DocumentPropertiesStatisticsTab — read-only computed statistics.
4
+ *
5
+ * Vue counterpart of React's `DocumentPropertiesStatisticsTab`, but the counts
6
+ * are computed live from the slide model (see `useDocumentStatistics`) rather
7
+ * than read from the often-stale `docProps/app.xml`. Renders created/modified
8
+ * timestamps, revision, and slide/note/word/paragraph/element counts.
9
+ */
10
+ type __VLS_Props = {
11
+ /** Computed statistics for the loaded presentation. */
12
+ statistics: DocumentStatistics;
13
+ };
14
+ declare const __VLS_export: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
15
+ declare const _default: typeof __VLS_export;
16
+ export default _default;
17
+ //# sourceMappingURL=DocumentPropertiesStatisticsTab.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DocumentPropertiesStatisticsTab.vue.d.ts","sourceRoot":"","sources":["../../../src/viewer/components/DocumentPropertiesStatisticsTab.vue"],"names":[],"mappings":"AAsFA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAE/E;;;;;;;GAOG;AACH,KAAK,WAAW,GAAG;IAClB,uDAAuD;IACvD,UAAU,EAAE,kBAAkB,CAAC;CAC/B,CAAC;AAiFF,QAAA,MAAM,YAAY,kSAEhB,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
@@ -0,0 +1,39 @@
1
+ import { AnnotationStroke, LaserPosition, PresentationTool } from '../composables/usePresentationAnnotations';
2
+ import { CanvasSize } from '../types';
3
+ /**
4
+ * PresentationAnnotationOverlay — transparent SVG overlay drawn on top of the
5
+ * slide during presentation mode. Captures pointer events for the
6
+ * pen/highlighter/eraser tools and renders the laser-pointer dot. Vue port of
7
+ * the React `PresentationAnnotationOverlay`.
8
+ *
9
+ * Coordinate conversion divides client coordinates by `editorScale` so emitted
10
+ * points are in the slide's unscaled coordinate space (matching
11
+ * `usePresentationAnnotations`). Renders `null` (nothing) when the tool is
12
+ * `'none'`.
13
+ */
14
+ type __VLS_Props = {
15
+ canvasSize: CanvasSize;
16
+ editorScale: number;
17
+ presentationTool: PresentationTool;
18
+ annotationStrokes: AnnotationStroke[];
19
+ currentStroke: AnnotationStroke | null;
20
+ laserPosition: LaserPosition | null;
21
+ };
22
+ declare const __VLS_export: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
23
+ "pointer-down": (x: number, y: number) => any;
24
+ "pointer-move": (x: number, y: number) => any;
25
+ "pointer-up": () => any;
26
+ "laser-move": (x: number, y: number) => any;
27
+ "laser-leave": () => any;
28
+ erase: (x: number, y: number) => any;
29
+ }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
30
+ "onPointer-down"?: ((x: number, y: number) => any) | undefined;
31
+ "onPointer-move"?: ((x: number, y: number) => any) | undefined;
32
+ "onPointer-up"?: (() => any) | undefined;
33
+ "onLaser-move"?: ((x: number, y: number) => any) | undefined;
34
+ "onLaser-leave"?: (() => any) | undefined;
35
+ onErase?: ((x: number, y: number) => any) | undefined;
36
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
37
+ declare const _default: typeof __VLS_export;
38
+ export default _default;
39
+ //# sourceMappingURL=PresentationAnnotationOverlay.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PresentationAnnotationOverlay.vue.d.ts","sourceRoot":"","sources":["../../../src/viewer/components/PresentationAnnotationOverlay.vue"],"names":[],"mappings":"AA6MA,OAAO,KAAK,EACX,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EAChB,MAAM,2CAA2C,CAAC;AAEnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C;;;;;;;;;;GAUG;AACH,KAAK,WAAW,GAAG;IAClB,UAAU,EAAE,UAAU,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;IACtC,aAAa,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACvC,aAAa,EAAE,aAAa,GAAG,IAAI,CAAC;CACpC,CAAC;AA+MF,QAAA,MAAM,YAAY;;;;;;;;;;;;;;kFAGhB,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
@@ -1 +1 @@
1
- {"version":3,"file":"PresentationMode.vue.d.ts","sourceRoot":"","sources":["../../../src/viewer/components/PresentationMode.vue"],"names":[],"mappings":"AAicA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAMlD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAG3C;;;;;;;;;;;;;;;;GAgBG;AACH,KAAK,WAAW,GAAG;IACjB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,UAAU,EAAE,UAAU,CAAC;IACvB,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AA4XH,QAAA,MAAM,YAAY;;;;;;;gBA7XH,MAAM;6EAiYnB,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
1
+ {"version":3,"file":"PresentationMode.vue.d.ts","sourceRoot":"","sources":["../../../src/viewer/components/PresentationMode.vue"],"names":[],"mappings":"AAsiBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAOlD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAO3C;;;;;;;;;;;;;;;;GAgBG;AACH,KAAK,WAAW,GAAG;IACjB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,UAAU,EAAE,UAAU,CAAC;IACvB,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAmnBH,QAAA,MAAM,YAAY;;;;;;;gBApnBH,MAAM;6EAwnBnB,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
@@ -0,0 +1,7 @@
1
+ type __VLS_Props = {
2
+ visible: boolean;
3
+ };
4
+ declare const __VLS_export: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
5
+ declare const _default: typeof __VLS_export;
6
+ export default _default;
7
+ //# sourceMappingURL=PresentationSubtitleBar.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PresentationSubtitleBar.vue.d.ts","sourceRoot":"","sources":["../../../src/viewer/components/PresentationSubtitleBar.vue"],"names":[],"mappings":"AAmPA,KAAK,WAAW,GAAG;IAClB,OAAO,EAAE,OAAO,CAAC;CACjB,CAAC;AAwIF,QAAA,MAAM,YAAY,kSAEhB,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
@@ -0,0 +1,49 @@
1
+ import { PresentationTool } from '../composables/usePresentationAnnotations';
2
+ /**
3
+ * PresentationToolbar — floating control bar shown during presentation mode.
4
+ *
5
+ * Contains prev/next navigation, a slide counter, an elapsed timer, the
6
+ * annotation-tool toggles (laser / pen / highlighter / eraser) with colour
7
+ * dropdowns, a clear-all button, an optional presenter-view toggle, and an
8
+ * end-presentation button. Vue port of the React `PresentationToolbar`.
9
+ *
10
+ * The auto-hide-on-idle behaviour lives in the host (it owns the container
11
+ * geometry); this component is the always-mounted bar.
12
+ */
13
+ type __VLS_Props = {
14
+ presentationTool: PresentationTool;
15
+ penColor: string;
16
+ highlighterColor: string;
17
+ hasAnnotations: boolean;
18
+ currentSlideIndex: number;
19
+ totalSlides: number;
20
+ /** Timestamp (ms) the presentation started, or `null`. */
21
+ presentationStartTime: number | null;
22
+ /** Whether presenter view is currently active. */
23
+ presenterMode?: boolean;
24
+ /** Whether to show the presenter-view toggle button. */
25
+ showPresenterToggle?: boolean;
26
+ };
27
+ declare const __VLS_export: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
28
+ move: (direction: 1 | -1) => any;
29
+ "set-tool": (tool: PresentationTool) => any;
30
+ "set-pen-color": (color: string) => any;
31
+ "set-highlighter-color": (color: string) => any;
32
+ "clear-annotations": () => any;
33
+ "end-presentation": () => any;
34
+ "toggle-presenter-view": () => any;
35
+ }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
36
+ onMove?: ((direction: 1 | -1) => any) | undefined;
37
+ "onSet-tool"?: ((tool: PresentationTool) => any) | undefined;
38
+ "onSet-pen-color"?: ((color: string) => any) | undefined;
39
+ "onSet-highlighter-color"?: ((color: string) => any) | undefined;
40
+ "onClear-annotations"?: (() => any) | undefined;
41
+ "onEnd-presentation"?: (() => any) | undefined;
42
+ "onToggle-presenter-view"?: (() => any) | undefined;
43
+ }>, {
44
+ presenterMode: boolean;
45
+ showPresenterToggle: boolean;
46
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
47
+ declare const _default: typeof __VLS_export;
48
+ export default _default;
49
+ //# sourceMappingURL=PresentationToolbar.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PresentationToolbar.vue.d.ts","sourceRoot":"","sources":["../../../src/viewer/components/PresentationToolbar.vue"],"names":[],"mappings":"AAseA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAElF;;;;;;;;;;GAUG;AACH,KAAK,WAAW,GAAG;IACjB,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,OAAO,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,0DAA0D;IAC1D,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,kDAAkD;IAClD,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,wDAAwD;IACxD,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC9B,CAAC;AAuZH,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;mBA1ZA,OAAO;yBAED,OAAO;6EA4Z7B,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
@@ -0,0 +1,30 @@
1
+ import { PptxSlide } from 'pptx-viewer-core';
2
+ import { CanvasSize } from '../types';
3
+ /**
4
+ * PresenterView — split-screen presenter layout: current slide (left, 70%) plus
5
+ * a control rail (right, 30%) with the wall-clock time, elapsed timer, prev/next
6
+ * navigation, a next-slide preview, scalable speaker notes, and a 5-minute
7
+ * timer progress bar. Vue port of the React `PresenterView`.
8
+ *
9
+ * Rendered as an absolute overlay by the host (`PresentationMode`). Keyboard
10
+ * navigation is owned by the host; this component only emits navigation /
11
+ * exit intents.
12
+ */
13
+ type __VLS_Props = {
14
+ slides: PptxSlide[];
15
+ currentSlideIndex: number;
16
+ canvasSize: CanvasSize;
17
+ mediaDataUrls: Map<string, string>;
18
+ /** Timestamp (ms) the presentation started, or `null`. */
19
+ presentationStartTime: number | null;
20
+ };
21
+ declare const __VLS_export: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
22
+ exit: () => any;
23
+ move: (direction: 1 | -1) => any;
24
+ }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
25
+ onExit?: (() => any) | undefined;
26
+ onMove?: ((direction: 1 | -1) => any) | undefined;
27
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
28
+ declare const _default: typeof __VLS_export;
29
+ export default _default;
30
+ //# sourceMappingURL=PresenterView.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PresenterView.vue.d.ts","sourceRoot":"","sources":["../../../src/viewer/components/PresenterView.vue"],"names":[],"mappings":"AAkhBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAalD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAG3C;;;;;;;;;GASG;AACH,KAAK,WAAW,GAAG;IAClB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,UAAU,CAAC;IACvB,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,0DAA0D;IAC1D,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC,CAAC;AA0aF,QAAA,MAAM,YAAY;;;;;;kFAGhB,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
@@ -0,0 +1,19 @@
1
+ import { PptxSlide } from 'pptx-viewer-core';
2
+ import { PrintSettings } from './print-dialog-types';
3
+ type __VLS_Props = {
4
+ open: boolean;
5
+ slides: PptxSlide[];
6
+ activeSlideIndex: number;
7
+ defaultSlidesPerPage?: number;
8
+ defaultFrameSlides?: boolean;
9
+ };
10
+ declare const __VLS_export: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
11
+ close: () => any;
12
+ print: (settings: PrintSettings) => any;
13
+ }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
14
+ onClose?: (() => any) | undefined;
15
+ onPrint?: ((settings: PrintSettings) => any) | undefined;
16
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
17
+ declare const _default: typeof __VLS_export;
18
+ export default _default;
19
+ //# sourceMappingURL=PrintDialog.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PrintDialog.vue.d.ts","sourceRoot":"","sources":["../../../src/viewer/components/PrintDialog.vue"],"names":[],"mappings":"AAuVA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAYlD,OAAO,KAAK,EAIX,aAAa,EAGb,MAAM,sBAAsB,CAAC;AAG9B,KAAK,WAAW,GAAG;IAClB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC7B,CAAC;AAuXF,QAAA,MAAM,YAAY;;;;;;kFAGhB,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
@@ -0,0 +1,35 @@
1
+ import { HandoutSlidesPerPage, PrintColorMode, PrintOrientation, PrintSlideRange, PrintWhat } from './print-dialog-types';
2
+ type __VLS_Props = {
3
+ printWhat: PrintWhat;
4
+ orientation: PrintOrientation;
5
+ colorMode: PrintColorMode;
6
+ frameSlides: boolean;
7
+ slidesPerPage: HandoutSlidesPerPage;
8
+ slideRange: PrintSlideRange;
9
+ customFrom: number;
10
+ customTo: number;
11
+ totalSlides: number;
12
+ activeSlideIndex: number;
13
+ };
14
+ declare const __VLS_export: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
15
+ "update:printWhat": (value: PrintWhat) => any;
16
+ "update:orientation": (value: PrintOrientation) => any;
17
+ "update:colorMode": (value: PrintColorMode) => any;
18
+ "update:frameSlides": (value: boolean) => any;
19
+ "update:slidesPerPage": (value: HandoutSlidesPerPage) => any;
20
+ "update:slideRange": (value: PrintSlideRange) => any;
21
+ "update:customFrom": (value: number) => any;
22
+ "update:customTo": (value: number) => any;
23
+ }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
24
+ "onUpdate:printWhat"?: ((value: PrintWhat) => any) | undefined;
25
+ "onUpdate:orientation"?: ((value: PrintOrientation) => any) | undefined;
26
+ "onUpdate:colorMode"?: ((value: PrintColorMode) => any) | undefined;
27
+ "onUpdate:frameSlides"?: ((value: boolean) => any) | undefined;
28
+ "onUpdate:slidesPerPage"?: ((value: HandoutSlidesPerPage) => any) | undefined;
29
+ "onUpdate:slideRange"?: ((value: PrintSlideRange) => any) | undefined;
30
+ "onUpdate:customFrom"?: ((value: number) => any) | undefined;
31
+ "onUpdate:customTo"?: ((value: number) => any) | undefined;
32
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
33
+ declare const _default: typeof __VLS_export;
34
+ export default _default;
35
+ //# sourceMappingURL=PrintSettingsPanel.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PrintSettingsPanel.vue.d.ts","sourceRoot":"","sources":["../../../src/viewer/components/PrintSettingsPanel.vue"],"names":[],"mappings":"AAwYA,OAAO,KAAK,EACX,oBAAoB,EACpB,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,SAAS,EACT,MAAM,sBAAsB,CAAC;AAE9B,KAAK,WAAW,GAAG;IAClB,SAAS,EAAE,SAAS,CAAC;IACrB,WAAW,EAAE,gBAAgB,CAAC;IAC9B,SAAS,EAAE,cAAc,CAAC;IAC1B,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,oBAAoB,CAAC;IACpC,UAAU,EAAE,eAAe,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;CACzB,CAAC;AA2WF,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;kFAGhB,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
@@ -0,0 +1,12 @@
1
+ type __VLS_Props = {
2
+ /** Whether the help overlay is visible. */
3
+ open: boolean;
4
+ };
5
+ declare const __VLS_export: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
6
+ close: () => any;
7
+ }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
8
+ onClose?: (() => any) | undefined;
9
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
10
+ declare const _default: typeof __VLS_export;
11
+ export default _default;
12
+ //# sourceMappingURL=ShortcutPanel.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShortcutPanel.vue.d.ts","sourceRoot":"","sources":["../../../src/viewer/components/ShortcutPanel.vue"],"names":[],"mappings":"AAwOA,KAAK,WAAW,GAAG;IAClB,2CAA2C;IAC3C,IAAI,EAAE,OAAO,CAAC;CACd,CAAC;AA0MF,QAAA,MAAM,YAAY;;;;kFAGhB,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
@@ -0,0 +1,73 @@
1
+ import { PptxSlide } from 'pptx-viewer-core';
2
+ /** What to print. */
3
+ export type PrintWhat = 'slides' | 'handouts' | 'notes' | 'outline';
4
+ /** Page orientation for the printed output. */
5
+ export type PrintOrientation = 'portrait' | 'landscape';
6
+ /** Colour mode for the printed output. */
7
+ export type PrintColorMode = 'color' | 'grayscale' | 'blackAndWhite';
8
+ /** Handout slides-per-page options. */
9
+ export type HandoutSlidesPerPage = 1 | 2 | 3 | 4 | 6 | 9;
10
+ /** Slide range mode. */
11
+ export type PrintSlideRange = 'all' | 'current' | 'custom';
12
+ /** Resolved print settings emitted on confirm. */
13
+ export interface PrintSettings {
14
+ printWhat: PrintWhat;
15
+ orientation: PrintOrientation;
16
+ colorMode: PrintColorMode;
17
+ frameSlides: boolean;
18
+ slidesPerPage: HandoutSlidesPerPage;
19
+ slideRange: PrintSlideRange;
20
+ customRangeFrom: number;
21
+ customRangeTo: number;
22
+ }
23
+ /** Grid dimensions for a handout layout. */
24
+ export interface HandoutGrid {
25
+ rows: number;
26
+ columns: number;
27
+ }
28
+ export declare const HANDOUT_OPTIONS: readonly HandoutSlidesPerPage[];
29
+ /** Type guard: is the given number one of the supported slides-per-page values? */
30
+ export declare function isHandoutSlidesPerPage(value: number): value is HandoutSlidesPerPage;
31
+ /**
32
+ * Resolve a default slides-per-page (e.g. from presentation properties) to a
33
+ * supported value, falling back to 6 when unset or unsupported.
34
+ */
35
+ export declare function resolveSlidesPerPage(defaultSlidesPerPage?: number): HandoutSlidesPerPage;
36
+ /**
37
+ * Compute the zero-based slide indices to print for the given range settings.
38
+ * 1-based `customRangeFrom` / `customRangeTo` are clamped to valid bounds.
39
+ *
40
+ * Mirrors the index computation in the React `usePrintHandlers`.
41
+ */
42
+ export declare function computeSlideIndices(slideRange: PrintSlideRange, activeSlideIndex: number, slideCount: number, customRangeFrom: number, customRangeTo: number): number[];
43
+ /**
44
+ * Effective orientation: notes/outline/handouts are always portrait; only
45
+ * full-page slides honour the user-chosen orientation.
46
+ */
47
+ export declare function effectiveOrientation(printWhat: PrintWhat, orientation: PrintOrientation): PrintOrientation;
48
+ /** Number of slides selected by the given range. */
49
+ export declare function computeSlideCount(slideRange: PrintSlideRange, slideCount: number, customRangeFrom: number, customRangeTo: number): number;
50
+ /** Number of printed pages for the selected layout. */
51
+ export declare function computePageCount(printWhat: PrintWhat, slideCount: number, slidesPerPage: HandoutSlidesPerPage): number;
52
+ /** Grid dimensions for the given slides-per-page value (fallback 3 × 2). */
53
+ export declare function getHandoutGrid(slidesPerPage: number): HandoutGrid;
54
+ /** CSS `filter` declaration for the chosen colour mode (empty for `color`). */
55
+ export declare function computeColorFilter(colorMode: PrintColorMode): string;
56
+ /**
57
+ * Escape a value for safe interpolation into print HTML (text or attribute).
58
+ * Escapes `&`, `<`, `>`, `"`, and `'`. Ported from React `dom-helpers.escapeHtml`.
59
+ */
60
+ export declare function escapeHtml(value: string): string;
61
+ /**
62
+ * Build the outline-mode HTML body: a `<h2>` per slide title (first text element,
63
+ * falling back to `Slide N`) plus a `<p>` of notes when present. All interpolated
64
+ * text is HTML-escaped.
65
+ */
66
+ export declare function buildOutlineHtml(slideIndices: number[], slides: PptxSlide[]): string;
67
+ /**
68
+ * Validate an `<img>` `src` for inclusion in print-window HTML. Only
69
+ * `data:image/...` URLs pass; anything else returns a transparent 1×1 PNG
70
+ * sentinel so the document stays well-formed and nothing exploitable is emitted.
71
+ */
72
+ export declare function safeDataImageSrc(src: string): string;
73
+ //# sourceMappingURL=print-dialog-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"print-dialog-types.d.ts","sourceRoot":"","sources":["../../../src/viewer/components/print-dialog-types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAMlD,qBAAqB;AACrB,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,GAAG,SAAS,CAAC;AAEpE,+CAA+C;AAC/C,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG,WAAW,CAAC;AAExD,0CAA0C;AAC1C,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,WAAW,GAAG,eAAe,CAAC;AAErE,uCAAuC;AACvC,MAAM,MAAM,oBAAoB,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAEzD,wBAAwB;AACxB,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE3D,kDAAkD;AAClD,MAAM,WAAW,aAAa;IAC7B,SAAS,EAAE,SAAS,CAAC;IACrB,WAAW,EAAE,gBAAgB,CAAC;IAC9B,SAAS,EAAE,cAAc,CAAC;IAC1B,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,oBAAoB,CAAC;IACpC,UAAU,EAAE,eAAe,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;CACtB;AAED,4CAA4C;AAC5C,MAAM,WAAW,WAAW;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CAChB;AAMD,eAAO,MAAM,eAAe,EAAE,SAAS,oBAAoB,EAAuB,CAAC;AAgBnF,mFAAmF;AACnF,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,oBAAoB,CAEnF;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,oBAAoB,CAAC,EAAE,MAAM,GAAG,oBAAoB,CAIxF;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAClC,UAAU,EAAE,eAAe,EAC3B,gBAAgB,EAAE,MAAM,EACxB,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,MAAM,EACvB,aAAa,EAAE,MAAM,GACnB,MAAM,EAAE,CAUV;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CACnC,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,gBAAgB,GAC3B,gBAAgB,CAKlB;AAED,oDAAoD;AACpD,wBAAgB,iBAAiB,CAChC,UAAU,EAAE,eAAe,EAC3B,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,MAAM,EACvB,aAAa,EAAE,MAAM,GACnB,MAAM,CAUR;AAED,uDAAuD;AACvD,wBAAgB,gBAAgB,CAC/B,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,oBAAoB,GACjC,MAAM,CAQR;AAED,4EAA4E;AAC5E,wBAAgB,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,WAAW,CAEjE;AAED,+EAA+E;AAC/E,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,cAAc,GAAG,MAAM,CAQpE;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOhD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAcpF;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAKpD"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * presentation-toolbar-utils — pure helpers for `PresentationToolbar.vue`.
3
+ *
4
+ * Visibility (bottom-trigger-zone) math, auto-hide timing, and slide-counter
5
+ * formatting. Extracted for testability. Mirrors the React
6
+ * `presentation-toolbar-utils`.
7
+ *
8
+ * @module composables/presentation-toolbar-utils
9
+ */
10
+ /** Toolbar auto-hides after this many milliseconds of no mouse movement. */
11
+ export declare const AUTO_HIDE_DELAY_MS = 3000;
12
+ /**
13
+ * The toolbar is shown when the mouse is within this fraction of the screen
14
+ * height from the bottom (e.g., 0.15 = bottom 15%).
15
+ */
16
+ export declare const BOTTOM_TRIGGER_FRACTION = 0.15;
17
+ /** Pen-tool colour swatches. */
18
+ export declare const PEN_COLORS: string[];
19
+ /** Highlighter-tool colour swatches. */
20
+ export declare const HIGHLIGHTER_COLORS: string[];
21
+ /**
22
+ * Whether the toolbar should become visible based on mouse position relative to
23
+ * the container's bottom trigger zone.
24
+ */
25
+ export declare function isInBottomTriggerZone(mouseY: number, containerHeight: number, containerTop: number): boolean;
26
+ /** Whether enough time has passed since the last move to auto-hide. */
27
+ export declare function shouldAutoHide(lastMoveTimestamp: number, now: number): boolean;
28
+ /** Format a slide counter string like `"3 / 12"` (one-based). */
29
+ export declare function formatSlideCounter(currentSlide: number, totalSlides: number): string;
30
+ //# sourceMappingURL=presentation-toolbar-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presentation-toolbar-utils.d.ts","sourceRoot":"","sources":["../../../src/viewer/composables/presentation-toolbar-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,4EAA4E;AAC5E,eAAO,MAAM,kBAAkB,OAAO,CAAC;AAEvC;;;GAGG;AACH,eAAO,MAAM,uBAAuB,OAAO,CAAC;AAE5C,gCAAgC;AAChC,eAAO,MAAM,UAAU,UAStB,CAAC;AAEF,wCAAwC;AACxC,eAAO,MAAM,kBAAkB,UAS9B,CAAC;AAEF;;;GAGG;AACH,wBAAgB,qBAAqB,CACpC,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,EACvB,YAAY,EAAE,MAAM,GAClB,OAAO,CAIT;AAED,uEAAuE;AACvE,wBAAgB,cAAc,CAAC,iBAAiB,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAE9E;AAED,iEAAiE;AACjE,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAEpF"}
@@ -0,0 +1,34 @@
1
+ import { TextSegment } from 'pptx-viewer-core';
2
+ /** Minimum font size (px) for speaker notes in presenter view. */
3
+ export declare const NOTES_FONT_SIZE_MIN = 10;
4
+ /** Maximum font size (px) for speaker notes in presenter view. */
5
+ export declare const NOTES_FONT_SIZE_MAX = 32;
6
+ /** Step increment (px) when increasing/decreasing notes font size. */
7
+ export declare const NOTES_FONT_SIZE_STEP = 2;
8
+ /** Default font size (px) for speaker notes. */
9
+ export declare const NOTES_FONT_SIZE_DEFAULT = 14;
10
+ /** Clamp a notes font size to the allowed range. */
11
+ export declare function clampNotesFontSize(size: number): number;
12
+ /** Format a Date as a locale time string (HH:MM:SS). */
13
+ export declare function formatTime(date: Date): string;
14
+ /**
15
+ * Format a millisecond duration as `MM:SS`, or `HH:MM:SS` once the elapsed time
16
+ * reaches one hour. Matches the React `presenter-view-utils.formatElapsed`.
17
+ */
18
+ export declare function formatElapsed(elapsedMs: number): string;
19
+ /** A render-spec node for a rich-text notes segment. */
20
+ export type NotesSpan = {
21
+ kind: 'break';
22
+ key: string;
23
+ } | {
24
+ kind: 'text';
25
+ key: string;
26
+ text: string;
27
+ style: Record<string, string>;
28
+ };
29
+ /**
30
+ * Convert rich-text notes segments into a framework-agnostic render spec. The
31
+ * Vue component maps each entry to a `<br>` or styled `<span>`.
32
+ */
33
+ export declare function notesSegmentsToSpans(segments: TextSegment[]): NotesSpan[];
34
+ //# sourceMappingURL=presenter-view-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presenter-view-utils.d.ts","sourceRoot":"","sources":["../../../src/viewer/composables/presenter-view-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAMpD,kEAAkE;AAClE,eAAO,MAAM,mBAAmB,KAAK,CAAC;AAEtC,kEAAkE;AAClE,eAAO,MAAM,mBAAmB,KAAK,CAAC;AAEtC,sEAAsE;AACtE,eAAO,MAAM,oBAAoB,IAAI,CAAC;AAEtC,gDAAgD;AAChD,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAE1C,oDAAoD;AACpD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD;AAMD,wDAAwD;AACxD,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAM7C;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CASvD;AAMD,wDAAwD;AACxD,MAAM,MAAM,SAAS,GAClB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAAC;AAE9E;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,SAAS,EAAE,CA6BzE"}
@@ -0,0 +1,56 @@
1
+ import { PptxCoreProperties, PptxSlide } from 'pptx-viewer-core';
2
+ import { ComputedRef, MaybeRefOrGetter } from 'vue';
3
+ /**
4
+ * Computed, read-only statistics for the Document Properties → Statistics tab.
5
+ *
6
+ * The React Statistics tab renders whatever the parser pulled out of
7
+ * `docProps/app.xml` (`PptxAppProperties`). That part is frequently missing or
8
+ * stale (PowerPoint only refreshes it on save), so the Vue port *computes* the
9
+ * counts directly from the live `PptxSlide[]` model instead, and pairs them
10
+ * with the timestamps/revision carried on `PptxCoreProperties`.
11
+ *
12
+ * @see `DocumentPropertiesStatisticsTab` (React) — the visual reference.
13
+ */
14
+ export interface DocumentStatistics {
15
+ /** Total number of slides. */
16
+ slideCount: number;
17
+ /** Number of slides flagged `hidden`. */
18
+ hiddenSlideCount: number;
19
+ /** Number of slides carrying notes text. */
20
+ noteCount: number;
21
+ /** Total element count across all slides (groups counted, plus descendants). */
22
+ elementCount: number;
23
+ /** Total word count across every text-bearing element (incl. tables). */
24
+ wordCount: number;
25
+ /** Total paragraph count across every text-bearing element. */
26
+ paragraphCount: number;
27
+ /** `dcterms:created` (ISO 8601) or `undefined`. */
28
+ created: string | undefined;
29
+ /** `dcterms:modified` (ISO 8601) or `undefined`. */
30
+ modified: string | undefined;
31
+ /** `cp:revision` or `undefined`. */
32
+ revision: string | undefined;
33
+ /** `cp:lastModifiedBy` or `undefined`. */
34
+ lastModifiedBy: string | undefined;
35
+ }
36
+ /**
37
+ * Count the words in a free-text blob. Words are maximal runs of
38
+ * non-whitespace characters; empty/whitespace-only strings contribute zero.
39
+ */
40
+ export declare function countWords(text: string | undefined): number;
41
+ /**
42
+ * Pure statistics computation over a slide list + core properties. Exported
43
+ * separately from the composable so it is trivially unit-testable without a
44
+ * Vue reactive context.
45
+ */
46
+ export declare function computeDocumentStatistics(slides: PptxSlide[], coreProperties: PptxCoreProperties | undefined): DocumentStatistics;
47
+ /**
48
+ * `useDocumentStatistics` — reactive wrapper around
49
+ * {@link computeDocumentStatistics}. Recomputes whenever the slide list or
50
+ * core properties change.
51
+ *
52
+ * @param slides - reactive `PptxSlide[]` source (ref / getter / plain value).
53
+ * @param coreProperties - reactive `PptxCoreProperties | undefined` source.
54
+ */
55
+ export declare function useDocumentStatistics(slides: MaybeRefOrGetter<PptxSlide[]>, coreProperties: MaybeRefOrGetter<PptxCoreProperties | undefined>): ComputedRef<DocumentStatistics>;
56
+ //# sourceMappingURL=useDocumentStatistics.d.ts.map