pptx-svelte-viewer 1.3.0 → 2.0.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 (116) hide show
  1. package/CHANGELOG.md +446 -0
  2. package/README.md +175 -17
  3. package/dist/AiChatPanel-CssmoLYL.js +1110 -0
  4. package/dist/__vite-browser-external-DOmiXdGM.js +7 -0
  5. package/dist/{dist-JuzVOe21.js → dist-AHWCPEmj.js} +44997 -40276
  6. package/dist/export-DplwT6FC.js +96087 -0
  7. package/dist/i18n.d.ts +9 -7
  8. package/dist/i18n.js +1 -1
  9. package/dist/index.d.ts +6102 -4099
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +22 -22
  12. package/dist/pptx-svelte-viewer.css +1 -1
  13. package/dist/rolldown-runtime--_vEcKDh.js +29 -0
  14. package/dist/{translator-D4a_pxY4.js → translator-Ddi-liGk.js} +251 -7
  15. package/dist/viewer/ai/ai-bridge.d.ts +61 -0
  16. package/dist/viewer/ai/ai-bridge.d.ts.map +1 -0
  17. package/dist/viewer/ai/ai-history-persist.d.ts +13 -0
  18. package/dist/viewer/ai/ai-history-persist.d.ts.map +1 -0
  19. package/dist/viewer/ai/ai-log-export.d.ts +71 -0
  20. package/dist/viewer/ai/ai-log-export.d.ts.map +1 -0
  21. package/dist/viewer/ai/ai-panel-controller.svelte.d.ts +77 -0
  22. package/dist/viewer/ai/ai-panel-controller.svelte.d.ts.map +1 -0
  23. package/dist/viewer/ai/chat.svelte.d.ts +43 -0
  24. package/dist/viewer/ai/chat.svelte.d.ts.map +1 -0
  25. package/dist/viewer/ai/focus-targets.d.ts +36 -0
  26. package/dist/viewer/ai/focus-targets.d.ts.map +1 -0
  27. package/dist/viewer/ai/index.d.ts +11 -0
  28. package/dist/viewer/ai/index.d.ts.map +1 -0
  29. package/dist/viewer/collab/collaboration-deps.d.ts +23 -0
  30. package/dist/viewer/collab/collaboration-deps.d.ts.map +1 -0
  31. package/dist/viewer/collab/collaboration-remote-sync.d.ts +13 -0
  32. package/dist/viewer/collab/collaboration-remote-sync.d.ts.map +1 -1
  33. package/dist/viewer/collab/collaboration.svelte.d.ts +9 -21
  34. package/dist/viewer/collab/collaboration.svelte.d.ts.map +1 -1
  35. package/dist/viewer/collab/components/props.d.ts +12 -0
  36. package/dist/viewer/collab/components/props.d.ts.map +1 -1
  37. package/dist/viewer/collab/components/remote-selection.d.ts +29 -0
  38. package/dist/viewer/collab/components/remote-selection.d.ts.map +1 -0
  39. package/dist/viewer/collab/components/share-helpers.d.ts +7 -28
  40. package/dist/viewer/collab/components/share-helpers.d.ts.map +1 -1
  41. package/dist/viewer/collab/index.d.ts +1 -1
  42. package/dist/viewer/collab/index.d.ts.map +1 -1
  43. package/dist/viewer/components/props.d.ts +72 -2
  44. package/dist/viewer/components/props.d.ts.map +1 -1
  45. package/dist/viewer/components/ribbon/anchored-popup.d.ts +21 -0
  46. package/dist/viewer/components/ribbon/anchored-popup.d.ts.map +1 -0
  47. package/dist/viewer/components/ribbon/ribbon-types.d.ts +7 -0
  48. package/dist/viewer/components/ribbon/ribbon-types.d.ts.map +1 -1
  49. package/dist/viewer/components/typed-exports.d.ts +19 -0
  50. package/dist/viewer/components/typed-exports.d.ts.map +1 -0
  51. package/dist/viewer/editor/editor-controller-deps.d.ts +5 -0
  52. package/dist/viewer/editor/editor-controller-deps.d.ts.map +1 -1
  53. package/dist/viewer/editor/editor-slides-controller.d.ts +15 -0
  54. package/dist/viewer/editor/editor-slides-controller.d.ts.map +1 -1
  55. package/dist/viewer/editor/editor-state.svelte.d.ts +9 -0
  56. package/dist/viewer/editor/editor-state.svelte.d.ts.map +1 -1
  57. package/dist/viewer/export/export-ui.svelte.d.ts +5 -0
  58. package/dist/viewer/export/export-ui.svelte.d.ts.map +1 -1
  59. package/dist/viewer/index.d.ts +7893 -5277
  60. package/dist/viewer/index.d.ts.map +1 -1
  61. package/dist/viewer/index.js +392 -14
  62. package/dist/viewer/presentation/animation-playback-helpers.d.ts +43 -0
  63. package/dist/viewer/presentation/animation-playback-helpers.d.ts.map +1 -0
  64. package/dist/viewer/presentation/animation-playback.svelte.d.ts +50 -40
  65. package/dist/viewer/presentation/animation-playback.svelte.d.ts.map +1 -1
  66. package/dist/viewer/presentation/animation-sound.d.ts +20 -0
  67. package/dist/viewer/presentation/animation-sound.d.ts.map +1 -0
  68. package/dist/viewer/presentation/apply-animation-styles.d.ts +6 -5
  69. package/dist/viewer/presentation/apply-animation-styles.d.ts.map +1 -1
  70. package/dist/viewer/presentation/index.d.ts +2 -1
  71. package/dist/viewer/presentation/index.d.ts.map +1 -1
  72. package/dist/viewer/presentation/keyframes.d.ts +9 -0
  73. package/dist/viewer/presentation/keyframes.d.ts.map +1 -1
  74. package/dist/viewer/presentation/presentation-controller.svelte.d.ts +32 -10
  75. package/dist/viewer/presentation/presentation-controller.svelte.d.ts.map +1 -1
  76. package/dist/viewer/presentation/presentation-effects.svelte.d.ts +6 -2
  77. package/dist/viewer/presentation/presentation-effects.svelte.d.ts.map +1 -1
  78. package/dist/viewer/presentation/presentation-triggers.d.ts +18 -0
  79. package/dist/viewer/presentation/presentation-triggers.d.ts.map +1 -0
  80. package/dist/viewer/presentation/transition-overlay.d.ts +23 -0
  81. package/dist/viewer/presentation/transition-overlay.d.ts.map +1 -0
  82. package/dist/viewer/render/smartart-view.d.ts +7 -2
  83. package/dist/viewer/render/smartart-view.d.ts.map +1 -1
  84. package/dist/viewer/state/create-viewer-state-collab.svelte.d.ts +37 -0
  85. package/dist/viewer/state/create-viewer-state-collab.svelte.d.ts.map +1 -0
  86. package/dist/viewer/state/create-viewer-state-editor-ui.svelte.d.ts +42 -0
  87. package/dist/viewer/state/create-viewer-state-editor-ui.svelte.d.ts.map +1 -0
  88. package/dist/viewer/state/create-viewer-state-export-notes.svelte.d.ts +36 -0
  89. package/dist/viewer/state/create-viewer-state-export-notes.svelte.d.ts.map +1 -0
  90. package/dist/viewer/state/create-viewer-state-presentation.svelte.d.ts +30 -0
  91. package/dist/viewer/state/create-viewer-state-presentation.svelte.d.ts.map +1 -0
  92. package/dist/viewer/state/create-viewer-state-types.d.ts +134 -0
  93. package/dist/viewer/state/create-viewer-state-types.d.ts.map +1 -0
  94. package/dist/viewer/state/create-viewer-state.svelte.d.ts +30 -0
  95. package/dist/viewer/state/create-viewer-state.svelte.d.ts.map +1 -0
  96. package/dist/viewer/state/index.d.ts +2 -0
  97. package/dist/viewer/state/index.d.ts.map +1 -1
  98. package/dist/viewer/state/presentation-element-states-context.d.ts +37 -0
  99. package/dist/viewer/state/presentation-element-states-context.d.ts.map +1 -0
  100. package/dist/viewer/state/render-context.d.ts +3 -1
  101. package/dist/viewer/state/render-context.d.ts.map +1 -1
  102. package/dist/viewer/state/viewer-effects.svelte.d.ts +8 -0
  103. package/dist/viewer/state/viewer-effects.svelte.d.ts.map +1 -1
  104. package/dist/viewer/state/viewer-options-context.d.ts +10 -0
  105. package/dist/viewer/state/viewer-options-context.d.ts.map +1 -0
  106. package/dist/viewer/state/viewer-options-wiring.svelte.d.ts +31 -0
  107. package/dist/viewer/state/viewer-options-wiring.svelte.d.ts.map +1 -0
  108. package/dist/viewer/state/viewer-options.svelte.d.ts +55 -0
  109. package/dist/viewer/state/viewer-options.svelte.d.ts.map +1 -0
  110. package/dist/viewer/style/element-style.d.ts +3 -3
  111. package/dist/viewer/style/element-style.d.ts.map +1 -1
  112. package/dist/viewer/types.d.ts +16 -5
  113. package/dist/viewer/types.d.ts.map +1 -1
  114. package/dist/{y-webrtc-BdH40MC6.js → y-webrtc-BiViqyU2.js} +1079 -1101
  115. package/package.json +18 -5
  116. package/dist/export-D7pIn3W2.js +0 -38286
@@ -0,0 +1,36 @@
1
+ import { PptxSlide } from 'pptx-viewer-core';
2
+ import { PptxAiFocusedTarget } from 'pptx-viewer-shared/ai';
3
+ /** The selection inputs the focus derivation reads. */
4
+ export interface FocusSelectionInput {
5
+ activeSlideIndex: number;
6
+ selectedElementIds: readonly string[];
7
+ selectedElementId: string | null;
8
+ }
9
+ /**
10
+ * Derive focused targets from the live selection: one `element` target per
11
+ * selected element on the active slide, or a single whole-`slide` target when
12
+ * nothing is selected. Order and multiplicity are preserved (multi-select and
13
+ * tables included) so callers can detect e.g. "exactly two tables".
14
+ */
15
+ export declare function computeFocusTargets(input: FocusSelectionInput): PptxAiFocusedTarget[];
16
+ /** A renderable focus chip. `title` carries the full element id for hover. */
17
+ export interface FocusChip {
18
+ key: string;
19
+ label: string;
20
+ title: string;
21
+ }
22
+ /**
23
+ * Build display chips for the given targets. Slide targets read `Slide N`;
24
+ * element targets read `<Type> <n>` (a friendly short label, full id on hover),
25
+ * or `<Type> (missing)` when the element is no longer on the slide.
26
+ */
27
+ export declare function focusTargetChips(targets: readonly PptxAiFocusedTarget[], slides: readonly PptxSlide[]): FocusChip[];
28
+ /** Whether the focus is exactly two table elements (drives the merge action). */
29
+ export declare function isTwoTableFocus(targets: readonly PptxAiFocusedTarget[], slides: readonly PptxSlide[]): false | {
30
+ slideIndex: number;
31
+ elementIdA: string;
32
+ elementIdB: string;
33
+ };
34
+ /** Build the directive that fires `merge_tables` without a confirmation round-trip. */
35
+ export declare function mergeTablesDirective(slideIndex: number, elementIdA: string, elementIdB: string): string;
36
+ //# sourceMappingURL=focus-targets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"focus-targets.d.ts","sourceRoot":"","sources":["../../../src/viewer/ai/focus-targets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAe,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEjE,uDAAuD;AACvD,MAAM,WAAW,mBAAmB;IACnC,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,mBAAmB,GAAG,mBAAmB,EAAE,CAYrF;AAaD,8EAA8E;AAC9E,MAAM,WAAW,SAAS;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACd;AAiBD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC/B,OAAO,EAAE,SAAS,mBAAmB,EAAE,EACvC,MAAM,EAAE,SAAS,SAAS,EAAE,GAC1B,SAAS,EAAE,CAiBb;AAED,iFAAiF;AACjF,wBAAgB,eAAe,CAC9B,OAAO,EAAE,SAAS,mBAAmB,EAAE,EACvC,MAAM,EAAE,SAAS,SAAS,EAAE,GAC1B,KAAK,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAexE;AAED,uFAAuF;AACvF,wBAAgB,oBAAoB,CACnC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GAChB,MAAM,CAKR"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * AI assistant barrel. Only the light, `ai`-SDK-free surface is re-exported
3
+ * here (the bridge builder + its dep type). The chat runes controller
4
+ * (`chat.svelte.ts`) and the panel components are intentionally NOT re-exported
5
+ * so importing this barrel never statically pulls in `@ai-sdk/svelte` / `ai`;
6
+ * the panel is reached through the dynamic `import('./components/ai/...')`
7
+ * inside `PowerPointViewer.svelte`.
8
+ */
9
+ export type { SvelteAiBridgeDeps } from './ai-bridge';
10
+ export { createSvelteAiBridge } from './ai-bridge';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/viewer/ai/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { PptxSlide } from 'pptx-viewer-core';
2
+ import { CollaborationConfig } from 'pptx-viewer-shared';
3
+ import { CollabSessionFactory } from './collaboration-session';
4
+ export interface CollaborationDeps {
5
+ /** Read the current local slides (broadcast granularly on change). */
6
+ getSlides: () => PptxSlide[];
7
+ /** Apply a remote peer's slide snapshot into the editable slides. */
8
+ applyRemoteSlides: (slides: PptxSlide[]) => void;
9
+ /** Live host `collaboration` config; watched to auto start/stop a session. */
10
+ getConfig: () => CollaborationConfig | undefined;
11
+ /** Return the loaded source bytes for elected-writer (role 'owner') write-back. */
12
+ getSourceBytes?: () => Uint8Array | null;
13
+ /** Slide canvas width/height (unscaled px), used to clamp incoming cursor coordinates. */
14
+ getCanvasWidth?: () => number | undefined;
15
+ getCanvasHeight?: () => number | undefined;
16
+ /** Fired when a session starts (host observability). */
17
+ onStart?: (config: CollaborationConfig) => void;
18
+ /** Fired when a session stops (host observability). */
19
+ onStop?: () => void;
20
+ /** Session factory seam (defaults to the real yjs + transport wiring). */
21
+ createSession?: CollabSessionFactory;
22
+ }
23
+ //# sourceMappingURL=collaboration-deps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collaboration-deps.d.ts","sourceRoot":"","sources":["../../../src/viewer/collab/collaboration-deps.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAEpE,MAAM,WAAW,iBAAiB;IACjC,sEAAsE;IACtE,SAAS,EAAE,MAAM,SAAS,EAAE,CAAC;IAC7B,qEAAqE;IACrE,iBAAiB,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,IAAI,CAAC;IACjD,8EAA8E;IAC9E,SAAS,EAAE,MAAM,mBAAmB,GAAG,SAAS,CAAC;IACjD,mFAAmF;IACnF,cAAc,CAAC,EAAE,MAAM,UAAU,GAAG,IAAI,CAAC;IACzC,0FAA0F;IAC1F,cAAc,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IAC1C,eAAe,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IAC3C,wDAAwD;IACxD,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAChD,uDAAuD;IACvD,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,0EAA0E;IAC1E,aAAa,CAAC,EAAE,oBAAoB,CAAC;CACrC"}
@@ -7,6 +7,19 @@ export interface ObserveRemoteDeps {
7
7
  applyRemoteSlides: (slides: PptxSlide[]) => void;
8
8
  scheduleWriteBack: (config: CollaborationConfig) => void;
9
9
  }
10
+ /** The subset of {@link ObserveRemoteDeps} needed by {@link adoptDocSlidesAfterLoad}. */
11
+ export type AdoptDocSlidesDeps = Pick<ObserveRemoteDeps, 'setApplyingRemote' | 'setLastSynced' | 'applyRemoteSlides'>;
12
+ /**
13
+ * Re-adopt the shared doc's slides after a local content load. The load
14
+ * pipeline applies its parsed deck to viewer state unconditionally, so when a
15
+ * late joiner's bootstrap deck finishes parsing AFTER the room's slides were
16
+ * already synced in, the synced state is silently clobbered and, with the doc
17
+ * itself unchanged, the observer never re-fires. Called by the load pipeline
18
+ * right after it commits a parsed deck: when the room already has slides they
19
+ * win; an empty room means this client is the seeder and its loaded deck
20
+ * stands (written into the doc by the normal gated publish path).
21
+ */
22
+ export declare function adoptDocSlidesAfterLoad(ydoc: YDocLike, deps: AdoptDocSlidesDeps): void;
10
23
  /** Register the remote-slide observer; returns the unobserve function. */
11
24
  export declare function observeRemoteSlides(ydoc: YDocLike, config: CollaborationConfig, deps: ObserveRemoteDeps): () => void;
12
25
  //# sourceMappingURL=collaboration-remote-sync.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"collaboration-remote-sync.d.ts","sourceRoot":"","sources":["../../../src/viewer/collab/collaboration-remote-sync.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAGxE,MAAM,WAAW,iBAAiB;IACjC,gBAAgB,EAAE,MAAM,OAAO,CAAC;IAChC,iBAAiB,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5C,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,iBAAiB,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,IAAI,CAAC;IACjD,iBAAiB,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,IAAI,CAAC;CACzD;AAED,0EAA0E;AAC1E,wBAAgB,mBAAmB,CAClC,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,mBAAmB,EAC3B,IAAI,EAAE,iBAAiB,GACrB,MAAM,IAAI,CAgBZ"}
1
+ {"version":3,"file":"collaboration-remote-sync.d.ts","sourceRoot":"","sources":["../../../src/viewer/collab/collaboration-remote-sync.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAGxE,MAAM,WAAW,iBAAiB;IACjC,gBAAgB,EAAE,MAAM,OAAO,CAAC;IAChC,iBAAiB,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5C,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,iBAAiB,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,IAAI,CAAC;IACjD,iBAAiB,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,IAAI,CAAC;CACzD;AAED,yFAAyF;AACzF,MAAM,MAAM,kBAAkB,GAAG,IAAI,CACpC,iBAAiB,EACjB,mBAAmB,GAAG,eAAe,GAAG,mBAAmB,CAC3D,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,kBAAkB,GAAG,IAAI,CAatF;AAED,0EAA0E;AAC1E,wBAAgB,mBAAmB,CAClC,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,mBAAmB,EAC3B,IAAI,EAAE,iBAAiB,GACrB,MAAM,IAAI,CAgBZ"}
@@ -1,25 +1,5 @@
1
- import { PptxSlide } from 'pptx-viewer-core';
2
1
  import { CollaborationConfig, ConnectionStatus, RemoteCursor, SanitizedPresence } from 'pptx-viewer-shared';
3
- import { CollabSessionFactory } from './collaboration-session';
4
- export interface CollaborationDeps {
5
- /** Read the current local slides (broadcast granularly on change). */
6
- getSlides: () => PptxSlide[];
7
- /** Apply a remote peer's slide snapshot into the editable slides. */
8
- applyRemoteSlides: (slides: PptxSlide[]) => void;
9
- /** Live host `collaboration` config; watched to auto start/stop a session. */
10
- getConfig: () => CollaborationConfig | undefined;
11
- /** Return the loaded source bytes for elected-writer (role 'owner') write-back. */
12
- getSourceBytes?: () => Uint8Array | null;
13
- /** Slide canvas width/height (unscaled px), used to clamp incoming cursor coordinates. */
14
- getCanvasWidth?: () => number | undefined;
15
- getCanvasHeight?: () => number | undefined;
16
- /** Fired when a session starts (host observability). */
17
- onStart?: (config: CollaborationConfig) => void;
18
- /** Fired when a session stops (host observability). */
19
- onStop?: () => void;
20
- /** Session factory seam (defaults to the real yjs + transport wiring). */
21
- createSession?: CollabSessionFactory;
22
- }
2
+ import { CollaborationDeps } from './collaboration-deps';
23
3
  /**
24
4
  * The collaboration controller. Construct it once during component setup: it
25
5
  * registers the two effects (auto start/stop from the config, granular publish
@@ -48,6 +28,14 @@ export declare class CollaborationController {
48
28
  setActiveSlide(index: number): void;
49
29
  /** Follow the given peer's active slide, or `null` to stop following. */
50
30
  followUser(clientId: number | null): void;
31
+ /**
32
+ * Re-adopt the shared doc's slides after a local content load committed a
33
+ * parsed deck to viewer state (see `adoptDocSlidesAfterLoad`). The load
34
+ * pipeline calls this synchronously right after it applies, i.e. before the
35
+ * publish effect can flush the freshly loaded slides into the doc, so a
36
+ * late joiner's bootstrap deck never clobbers the room's synced content.
37
+ */
38
+ adoptDocAfterLoad(): void;
51
39
  /** Start (or restart) a session with the given config (dialog-driven). */
52
40
  start(config: CollaborationConfig): Promise<void>;
53
41
  stop(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"collaboration.svelte.d.ts","sourceRoot":"","sources":["../../../src/viewer/collab/collaboration.svelte.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EACX,mBAAmB,EACnB,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EAGjB,MAAM,oBAAoB,CAAC;AAc5B,OAAO,KAAK,EAAiB,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAInF,MAAM,WAAW,iBAAiB;IACjC,sEAAsE;IACtE,SAAS,EAAE,MAAM,SAAS,EAAE,CAAC;IAC7B,qEAAqE;IACrE,iBAAiB,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,IAAI,CAAC;IACjD,8EAA8E;IAC9E,SAAS,EAAE,MAAM,mBAAmB,GAAG,SAAS,CAAC;IACjD,mFAAmF;IACnF,cAAc,CAAC,EAAE,MAAM,UAAU,GAAG,IAAI,CAAC;IACzC,0FAA0F;IAC1F,cAAc,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IAC1C,eAAe,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IAC3C,wDAAwD;IACxD,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAChD,uDAAuD;IACvD,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,0EAA0E;IAC1E,aAAa,CAAC,EAAE,oBAAoB,CAAC;CACrC;AAED;;;;GAIG;AACH,qBAAa,uBAAuB;;IACnC,yCAAyC;IACzC,MAAM,mBAA4C;gBA0BtC,IAAI,EAAE,iBAAiB;IAyBnC,4CAA4C;IAC5C,IAAI,MAAM,IAAI,OAAO,CAEpB;IACD,+FAA+F;IAC/F,IAAI,QAAQ,IAAI,OAAO,CAEtB;IACD,sDAAsD;IACtD,IAAI,OAAO,IAAI,YAAY,EAAE,CAE5B;IACD,sDAAsD;IACtD,IAAI,eAAe,IAAI,iBAAiB,EAAE,CAEzC;IACD,+DAA+D;IAC/D,IAAI,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAEpC;IAED,+EAA+E;IAC/E,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI;IAGhE,oEAAoE;IACpE,YAAY,CAAC,iBAAiB,EAAE,MAAM,GAAG,SAAS,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI;IAGpF,uEAAuE;IACvE,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAGnC,yEAAyE;IACzE,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IA6CzC,0EAA0E;IACpE,KAAK,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAwFvD,IAAI,IAAI,IAAI;CAmBZ"}
1
+ {"version":3,"file":"collaboration.svelte.d.ts","sourceRoot":"","sources":["../../../src/viewer/collab/collaboration.svelte.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACX,mBAAmB,EACnB,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EAGjB,MAAM,oBAAoB,CAAC;AAW5B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAS9D;;;;GAIG;AACH,qBAAa,uBAAuB;;IACnC,yCAAyC;IACzC,MAAM,mBAA4C;gBA0BtC,IAAI,EAAE,iBAAiB;IAyBnC,4CAA4C;IAC5C,IAAI,MAAM,IAAI,OAAO,CAEpB;IACD,+FAA+F;IAC/F,IAAI,QAAQ,IAAI,OAAO,CAEtB;IACD,sDAAsD;IACtD,IAAI,OAAO,IAAI,YAAY,EAAE,CAE5B;IACD,sDAAsD;IACtD,IAAI,eAAe,IAAI,iBAAiB,EAAE,CAEzC;IACD,+DAA+D;IAC/D,IAAI,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAEpC;IAED,+EAA+E;IAC/E,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI;IAGhE,oEAAoE;IACpE,YAAY,CAAC,iBAAiB,EAAE,MAAM,GAAG,SAAS,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI;IAGpF,uEAAuE;IACvE,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAGnC,yEAAyE;IACzE,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAIzC;;;;;;OAMG;IACH,iBAAiB,IAAI,IAAI;IA+CzB,0EAA0E;IACpE,KAAK,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IA6FvD,IAAI,IAAI,IAAI;CAmBZ"}
@@ -1,3 +1,4 @@
1
+ import { PptxElement } from 'pptx-viewer-core';
1
2
  import { BroadcastConfig, BroadcastDefaults, CollaborationConfig, ConnectionStatus, RemoteCursor, SanitizedPresence } from 'pptx-viewer-shared';
2
3
  import { Snippet } from 'svelte';
3
4
  import { ShareDefaults } from './share-helpers';
@@ -58,6 +59,17 @@ export interface CollaborationCursorsProps {
58
59
  /** Current canvas zoom factor; cursor positions scale by this. */
59
60
  zoom: number;
60
61
  }
62
+ /** Props for the remote-selection overlay. */
63
+ export interface RemoteSelectionOverlayProps {
64
+ /** Remote collaborators' presence (selection + active slide), excludes self. */
65
+ presences: SanitizedPresence[];
66
+ /** Elements on the active slide; selected ids resolve against these. */
67
+ elements: PptxElement[];
68
+ /** The current slide index; only peers on this slide are drawn. */
69
+ activeSlideIndex: number;
70
+ /** Current canvas zoom factor; element geometry scales by this. */
71
+ zoom: number;
72
+ }
61
73
  /** Props for the connection status pill. */
62
74
  export interface CollaborationStatusIndicatorProps {
63
75
  /** Current connection status. */
@@ -1 +1 @@
1
- {"version":3,"file":"props.d.ts","sourceRoot":"","sources":["../../../../src/viewer/collab/components/props.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD;;;;GAIG;AAEH,0CAA0C;AAC1C,MAAM,WAAW,gBAAgB;IAChC,qCAAqC;IACrC,IAAI,EAAE,OAAO,CAAC;IACd,gDAAgD;IAChD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4DAA4D;IAC5D,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,mBAAmB;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,uDAAuD;IACvD,MAAM,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,kDAAkD;AAClD,MAAM,WAAW,gBAAgB;IAChC,qCAAqC;IACrC,IAAI,EAAE,OAAO,CAAC;IACd,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,2DAA2D;IAC3D,MAAM,EAAE,OAAO,CAAC;IAChB,oEAAoE;IACpE,OAAO,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAC/C,mDAAmD;IACnD,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,0CAA0C;IAC1C,OAAO,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,8CAA8C;AAC9C,MAAM,WAAW,oBAAoB;IACpC,qCAAqC;IACrC,IAAI,EAAE,OAAO,CAAC;IACd,gEAAgE;IAChE,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,gDAAgD;IAChD,MAAM,EAAE,OAAO,CAAC;IAChB,uDAAuD;IACvD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8EAA8E;IAC9E,OAAO,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAC;IAC3C,2DAA2D;IAC3D,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,0CAA0C;IAC1C,OAAO,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,2CAA2C;AAC3C,MAAM,WAAW,yBAAyB;IACzC,qEAAqE;IACrE,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,kEAAkE;IAClE,IAAI,EAAE,MAAM,CAAC;CACb;AAED,4CAA4C;AAC5C,MAAM,WAAW,iCAAiC;IACjD,iCAAiC;IACjC,MAAM,EAAE,gBAAgB,CAAC;IACzB,mEAAmE;IACnE,cAAc,EAAE,MAAM,CAAC;IACvB,wDAAwD;IACxD,OAAO,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,0CAA0C;AAC1C,MAAM,WAAW,kBAAkB;IAClC,mDAAmD;IACnD,SAAS,EAAE,iBAAiB,EAAE,CAAC;IAC/B,sDAAsD;IACtD,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,0DAA0D;IAC1D,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;CAC5C"}
1
+ {"version":3,"file":"props.d.ts","sourceRoot":"","sources":["../../../../src/viewer/collab/components/props.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EACX,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD;;;;GAIG;AAEH,0CAA0C;AAC1C,MAAM,WAAW,gBAAgB;IAChC,qCAAqC;IACrC,IAAI,EAAE,OAAO,CAAC;IACd,gDAAgD;IAChD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4DAA4D;IAC5D,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,mBAAmB;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,uDAAuD;IACvD,MAAM,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,kDAAkD;AAClD,MAAM,WAAW,gBAAgB;IAChC,qCAAqC;IACrC,IAAI,EAAE,OAAO,CAAC;IACd,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,2DAA2D;IAC3D,MAAM,EAAE,OAAO,CAAC;IAChB,oEAAoE;IACpE,OAAO,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAC/C,mDAAmD;IACnD,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,0CAA0C;IAC1C,OAAO,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,8CAA8C;AAC9C,MAAM,WAAW,oBAAoB;IACpC,qCAAqC;IACrC,IAAI,EAAE,OAAO,CAAC;IACd,gEAAgE;IAChE,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,gDAAgD;IAChD,MAAM,EAAE,OAAO,CAAC;IAChB,uDAAuD;IACvD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8EAA8E;IAC9E,OAAO,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAC;IAC3C,2DAA2D;IAC3D,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,0CAA0C;IAC1C,OAAO,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,2CAA2C;AAC3C,MAAM,WAAW,yBAAyB;IACzC,qEAAqE;IACrE,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,kEAAkE;IAClE,IAAI,EAAE,MAAM,CAAC;CACb;AAED,8CAA8C;AAC9C,MAAM,WAAW,2BAA2B;IAC3C,gFAAgF;IAChF,SAAS,EAAE,iBAAiB,EAAE,CAAC;IAC/B,wEAAwE;IACxE,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,mEAAmE;IACnE,gBAAgB,EAAE,MAAM,CAAC;IACzB,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;CACb;AAED,4CAA4C;AAC5C,MAAM,WAAW,iCAAiC;IACjD,iCAAiC;IACjC,MAAM,EAAE,gBAAgB,CAAC;IACzB,mEAAmE;IACnE,cAAc,EAAE,MAAM,CAAC;IACvB,wDAAwD;IACxD,OAAO,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,0CAA0C;AAC1C,MAAM,WAAW,kBAAkB;IAClC,mDAAmD;IACnD,SAAS,EAAE,iBAAiB,EAAE,CAAC;IAC/B,sDAAsD;IACtD,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,0DAA0D;IAC1D,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;CAC5C"}
@@ -0,0 +1,29 @@
1
+ import { PptxElement } from 'pptx-viewer-core';
2
+ import { SanitizedPresence } from 'pptx-viewer-shared';
3
+ /**
4
+ * remote-selection.ts: pure resolution logic for `RemoteSelectionOverlay`.
5
+ * Kept in a plain `.ts` module (not inside the SFC) per repo convention:
6
+ * SFCs stay thin presentation, logic lives in lintable TypeScript files.
7
+ */
8
+ /** A single resolved remote selection box, in unscaled slide coordinates. */
9
+ export interface RemoteSelectionBox {
10
+ /** Stable key (peer clientId + element id). */
11
+ key: string;
12
+ /** Peer display name shown in the label chip. */
13
+ userName: string;
14
+ /** Outline + chip colour. */
15
+ color: string;
16
+ /** Unscaled slide-space geometry of the selected element. */
17
+ x: number;
18
+ y: number;
19
+ width: number;
20
+ height: number;
21
+ }
22
+ /**
23
+ * Resolve every remote peer's selection on the active slide into drawable
24
+ * boxes. Only peers whose `activeSlideIndex` matches the current slide are
25
+ * considered, and only selected ids that resolve to an element on the slide
26
+ * produce a box.
27
+ */
28
+ export declare function resolveRemoteSelectionBoxes(presences: readonly SanitizedPresence[], elements: readonly PptxElement[], activeSlideIndex: number): RemoteSelectionBox[];
29
+ //# sourceMappingURL=remote-selection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote-selection.d.ts","sourceRoot":"","sources":["../../../../src/viewer/collab/components/remote-selection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE5D;;;;GAIG;AAEH,6EAA6E;AAC7E,MAAM,WAAW,kBAAkB;IAClC,+CAA+C;IAC/C,GAAG,EAAE,MAAM,CAAC;IACZ,iDAAiD;IACjD,QAAQ,EAAE,MAAM,CAAC;IACjB,6BAA6B;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,6DAA6D;IAC7D,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CACf;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAC1C,SAAS,EAAE,SAAS,iBAAiB,EAAE,EACvC,QAAQ,EAAE,SAAS,WAAW,EAAE,EAChC,gBAAgB,EAAE,MAAM,GACtB,kBAAkB,EAAE,CAyBtB"}
@@ -1,31 +1,10 @@
1
- import { CollaborationConfig, JoinSessionFields, buildJoinCollaborationConfig, canJoinCollaborationSession } from 'pptx-viewer-shared';
2
- /** The share form's editable fields. */
3
- export interface ShareFormFields {
4
- roomId: string;
5
- userName: string;
6
- serverUrl: string;
7
- }
8
- /** Optional seed values for the share start form. */
9
- export interface ShareDefaults {
10
- roomId?: string;
11
- userName?: string;
12
- serverUrl?: string;
13
- }
14
- /** Seed the form fields from the (optional) host-supplied defaults. */
15
- export declare function seedShareFields(defaults?: ShareDefaults): ShareFormFields;
16
1
  /**
17
- * Whether the form can start a session: room id and display name are
18
- * required; the server URL may be blank, which selects the serverless webrtc
19
- * transport.
2
+ * Thin re-export shim -> `pptx-viewer-shared`.
3
+ *
4
+ * The Share dialog form helpers (seeding, validity, and CollaborationConfig
5
+ * assembly) now live in `pptx-viewer-shared` (`render/share-form`). This shim
6
+ * preserves the historical import surface for `ShareDialog.svelte`.
20
7
  */
21
- export declare function canStartShare(fields: ShareFormFields): boolean;
22
- /** True when the current server field selects serverless peer-to-peer mode. */
23
- export declare function isPeerToPeerShare(serverUrl: string): boolean;
24
- /**
25
- * Assemble a {@link CollaborationConfig} from the (trimmed) form fields, or
26
- * `null` when the form is incomplete.
27
- */
28
- export declare function buildShareConfig(fields: ShareFormFields): CollaborationConfig | null;
29
- export { buildJoinCollaborationConfig as buildJoinConfig, canJoinCollaborationSession as canJoinShare, };
30
- export type { JoinSessionFields };
8
+ export type { JoinSessionFields, ShareDefaults, ShareFormFields } from 'pptx-viewer-shared';
9
+ export { buildJoinConfig, buildShareConfig, canJoinShare, canStartShare, isPeerToPeerShare, seedShareFields, } from 'pptx-viewer-shared';
31
10
  //# sourceMappingURL=share-helpers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"share-helpers.d.ts","sourceRoot":"","sources":["../../../../src/viewer/collab/components/share-helpers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACjF,OAAO,EAEN,4BAA4B,EAC5B,2BAA2B,EAE3B,MAAM,oBAAoB,CAAC;AAE5B,wCAAwC;AACxC,MAAM,WAAW,eAAe;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CAClB;AAED,qDAAqD;AACrD,MAAM,WAAW,aAAa;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,uEAAuE;AACvE,wBAAgB,eAAe,CAAC,QAAQ,CAAC,EAAE,aAAa,GAAG,eAAe,CAMzE;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAE9D;AAED,+EAA+E;AAC/E,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAE5D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,eAAe,GAAG,mBAAmB,GAAG,IAAI,CAEpF;AAED,OAAO,EACN,4BAA4B,IAAI,eAAe,EAC/C,2BAA2B,IAAI,YAAY,GAC3C,CAAC;AACF,YAAY,EAAE,iBAAiB,EAAE,CAAC"}
1
+ {"version":3,"file":"share-helpers.d.ts","sourceRoot":"","sources":["../../../../src/viewer/collab/components/share-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,YAAY,EAAE,iBAAiB,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC5F,OAAO,EACN,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,eAAe,GACf,MAAM,oBAAoB,CAAC"}
@@ -3,7 +3,7 @@
3
3
  * transport/session seams, and the shared config types re-exported for hosts.
4
4
  */
5
5
  export { CollaborationController } from './collaboration.svelte';
6
- export type { CollaborationDeps } from './collaboration.svelte';
6
+ export type { CollaborationDeps } from './collaboration-deps';
7
7
  export { CollaborationDialogsState } from './collaboration-dialogs.svelte';
8
8
  export type { ShareDefaultsInput } from './collaboration-dialogs.svelte';
9
9
  export { createDefaultSession } from './collaboration-session';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/viewer/collab/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,YAAY,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,YAAY,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACnF,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,YAAY,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,YAAY,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/viewer/collab/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,YAAY,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,YAAY,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACnF,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,YAAY,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,YAAY,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -1,5 +1,5 @@
1
- import { PptxElement, PptxSection, PptxSlide, TextSegment } from 'pptx-viewer-core';
2
- import { CanvasSize, RenderParagraph, ResizeHandleId, SnapLine, ToolbarActionId } from 'pptx-viewer-shared';
1
+ import { PptxElement, PptxSection, PptxSlide, ShapeStyle, TextSegment } from 'pptx-viewer-core';
2
+ import { CanvasSize, ElementAnimationState, RenderParagraph, ResizeHandleId, SnapLine, ToolbarActionId } from 'pptx-viewer-shared';
3
3
  import { EditorController } from '../editor/editor-controller.svelte';
4
4
  import { EditorMarqueeRect } from '../editor/editor-selection-gestures';
5
5
  import { EditorState } from '../editor/editor-state.svelte';
@@ -34,6 +34,21 @@ export interface ElementRendererProps {
34
34
  interactive?: boolean;
35
35
  /** Whether inherited layout/master nodes participate in pointer editing. */
36
36
  editTemplateMode?: boolean;
37
+ /**
38
+ * The enclosing group's fill (`GroupPptxElement.groupFill`), passed down by a
39
+ * group's render branch so a child painted with `a:grpFill`
40
+ * (`fillMode === 'group'`) inherits the group's resolved fill.
41
+ */
42
+ parentGroupFill?: ShapeStyle;
43
+ /**
44
+ * Native-animation playback state for this element, present only during a
45
+ * running presentation. Drives the staged chart / SmartArt build reveal and
46
+ * the `p:animClr` fill / stroke relinquish; mirrors React's / Vue's
47
+ * per-element `animationState`. Absent (undefined) in editor / read-only
48
+ * rendering (element renderers read it from the element-states context, so it
49
+ * is optional here and defaulted per renderer).
50
+ */
51
+ animationState?: ElementAnimationState;
37
52
  ontablecellcommit?: (elementId: string, rowIndex: number, cellIndex: number, text: string) => void;
38
53
  onsmartartnodecommit?: (elementId: string, nodeId: string, text: string) => void;
39
54
  onsmartartnodefill?: (elementId: string, nodeId: string, fill: string) => void;
@@ -62,6 +77,51 @@ export interface SlideStageProps {
62
77
  onsmartartnodecommit?: (elementId: string, nodeId: string, text: string) => void;
63
78
  onsmartartnodefill?: (elementId: string, nodeId: string, fill: string) => void;
64
79
  }
80
+ export interface SlideCanvasProps {
81
+ slide: PptxSlide | undefined;
82
+ canvasSize: CanvasSize;
83
+ mediaDataUrls: Map<string, string>;
84
+ /** Effective scale (fit-to-viewport x user zoom), pre-computed by the host. */
85
+ scale: number;
86
+ /** True only on the live presentation stage; see `SlideStageProps.presenting`. */
87
+ presenting?: boolean;
88
+ /** True while in-place editing is available; gates the pointer handlers and the editing cursor/class. */
89
+ editingActive?: boolean;
90
+ editTemplateMode?: boolean;
91
+ ontablecellcommit?: (elementId: string, rowIndex: number, cellIndex: number, text: string) => void;
92
+ onsmartartnodecommit?: (elementId: string, nodeId: string, text: string) => void;
93
+ onsmartartnodefill?: (elementId: string, nodeId: string, fill: string) => void;
94
+ /** Reports the stage-holder node to the host on mount/teardown (editing hit-surface, export capture anchor). */
95
+ onstageholder?: (el: HTMLDivElement | null) => void;
96
+ onstagepointerdown?: (event: PointerEvent) => void;
97
+ onstagepointermove?: (event: PointerEvent) => void;
98
+ onstagedblclick?: (event: MouseEvent) => void;
99
+ onstagecontextmenu?: (event: MouseEvent) => void;
100
+ /** Fired on any stage click; the host wires this to advance presentation playback. */
101
+ onstageclick?: (event: MouseEvent) => void;
102
+ /**
103
+ * True while the AI panel is picking an element: the next element click(s)
104
+ * become the assistant's focus (highlighted) instead of selecting / editing.
105
+ */
106
+ aiPickMode?: boolean;
107
+ /**
108
+ * True while a running AI tool is active: the stage marks itself
109
+ * `data-pptx-ai-active` so element colour changes tween while the assistant
110
+ * works (see AiFocusHighlightOverlay's tween rule).
111
+ */
112
+ aiActive?: boolean;
113
+ /** Route a picked canvas element to the AI focus (pick mode only). */
114
+ onaipickelement?: (elementId: string) => void;
115
+ /**
116
+ * Overlay content layered above the slide (selection/editor layer, ink
117
+ * drawing, alignment guides, presentation annotations, collaboration
118
+ * cursors, transition overlay, ...). Rendered inside the same
119
+ * fixed-size, scaled stage-holder as the slide itself. Kept out of this
120
+ * component's own props (rather than a fixed list of overlay slots) so it
121
+ * stays free of the live editor/controller instances those overlays need.
122
+ */
123
+ children?: import('svelte').Snippet;
124
+ }
65
125
  export interface ViewerToolbarProps {
66
126
  /** Active slide (0-based). */
67
127
  current: number;
@@ -159,6 +219,10 @@ export interface ElementContextMenuProps {
159
219
  x: number;
160
220
  y: number;
161
221
  editor: EditorState;
222
+ /** "Ask AI about this" action (shown only when the host enables the `ai` prop). */
223
+ onaskai?: () => void;
224
+ /** "Fix with AI" action (shown only when the host enables the `ai` prop). */
225
+ onfixai?: () => void;
162
226
  onclose: () => void;
163
227
  }
164
228
  export interface ThumbnailRailProps {
@@ -170,6 +234,12 @@ export interface ThumbnailRailProps {
170
234
  /** Enables native thumbnail drag-and-drop slide reordering. */
171
235
  editable?: boolean;
172
236
  onmove?: (fromIndex: number, toIndex: number) => void;
237
+ /**
238
+ * Inserts a new blank slide (React's sidebar "+ Add Slide" button). The
239
+ * button is pinned below the scrollable list and only renders while
240
+ * `editable` is set and this callback is provided.
241
+ */
242
+ onaddslide?: () => void;
173
243
  sections?: PptxSection[];
174
244
  onsectiontoggle?: (sectionId: string) => void;
175
245
  onsectionrename?: (sectionId: string, name: string) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"props.d.ts","sourceRoot":"","sources":["../../../src/viewer/components/props.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"props.d.ts","sourceRoot":"","sources":["../../../src/viewer/components/props.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * `use:anchoredPopup` - pins a ribbon dropdown to its trigger with
3
+ * `position: fixed`, so the popup escapes the ribbon content row's
4
+ * `overflow-x: auto` clip (the horizontal scroll container would otherwise
5
+ * crop any absolutely-positioned menu to the row's height). This mirrors
6
+ * React's `RibbonMenu`, which renders its menus fixed for the same reason.
7
+ *
8
+ * Pass the trigger/anchor element; coordinates re-sync on mount, on any scroll
9
+ * (capture phase, so ancestor scrolls count), and on window resize.
10
+ */
11
+ export interface AnchoredPopupOptions {
12
+ /** The element the popup hangs below (its left/bottom edges are tracked). */
13
+ anchor: HTMLElement | undefined;
14
+ /** Align the popup's right edge to the anchor's right edge instead of left. */
15
+ alignRight?: boolean;
16
+ }
17
+ export declare function anchoredPopup(node: HTMLElement, options: AnchoredPopupOptions): {
18
+ update(next: AnchoredPopupOptions): void;
19
+ destroy(): void;
20
+ };
21
+ //# sourceMappingURL=anchored-popup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anchored-popup.d.ts","sourceRoot":"","sources":["../../../../src/viewer/components/ribbon/anchored-popup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,WAAW,oBAAoB;IACpC,6EAA6E;IAC7E,MAAM,EAAE,WAAW,GAAG,SAAS,CAAC;IAChC,+EAA+E;IAC/E,UAAU,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,oBAAoB;iBA2B/D,oBAAoB,GAAG,IAAI;eAI7B,IAAI;EAKhB"}
@@ -18,6 +18,9 @@ export interface RibbonProps {
18
18
  findReplace: FindReplaceState;
19
19
  /** Slide canvas size (px); the Insert tab centres new charts/media/SmartArt/etc. on it. */
20
20
  canvasSize: CanvasSize;
21
+ /** Read-only deck: the full ribbon still renders (React parity) but a
22
+ read-only badge shows in the primary row and edits are inert. */
23
+ readOnly?: boolean;
21
24
  /** Compact nav row (always visible): active slide (0-based) / total. */
22
25
  current: number;
23
26
  total: number;
@@ -52,6 +55,10 @@ export interface RibbonProps {
52
55
  chromeUi?: ChromeUiState;
53
56
  /** Whether live subtitles are currently enabled (Present dropdown checkmark). */
54
57
  subtitlesEnabled?: boolean;
58
+ /** Toggle the AI assistant panel. Only wired when the viewer's `ai` prop is set. */
59
+ onai?: () => void;
60
+ /** Whether the AI assistant panel is currently open (primary-row toggle state). */
61
+ aiActive?: boolean;
55
62
  /** Toolbar buttons/ribbon tabs to hide; see `PowerPointViewerProps.hiddenActions`. */
56
63
  hiddenActions?: ToolbarActionId[];
57
64
  /** Slide Show tab actions: enter presentation from slide 0 or the current slide. */
@@ -1 +1 @@
1
- {"version":3,"file":"ribbon-types.d.ts","sourceRoot":"","sources":["../../../../src/viewer/components/ribbon/ribbon-types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ribbon-types.d.ts","sourceRoot":"","sources":["../../../../src/viewer/components/ribbon/ribbon-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { Component } from 'svelte';
2
+ import { SlideCanvasProps, ViewerToolbarProps } from './props';
3
+ import { RibbonProps } from './ribbon/ribbon-types';
4
+ /**
5
+ * Explicitly-typed public exports of the standalone view components.
6
+ *
7
+ * Same rationale as `PowerPointViewer` in `../component.ts`: `svelte-check`
8
+ * types `.svelte` imports precisely, but the plain TypeScript pass that emits
9
+ * the published declaration files resolves `.svelte` modules through a loose
10
+ * ambient shim (`src/shims-svelte.d.ts`), and the post-build Rollup
11
+ * declaration bundling cannot resolve a raw `.svelte` specifier at all (no
12
+ * `.svelte.d.ts` is emitted, which broke the library build on CI). Re-export
13
+ * through annotated constants so the published `.d.ts` is fully typed and
14
+ * free of `.svelte` specifiers.
15
+ */
16
+ export declare const Ribbon: Component<RibbonProps>;
17
+ export declare const ViewerToolbar: Component<ViewerToolbarProps>;
18
+ export declare const SlideCanvas: Component<SlideCanvasProps>;
19
+ //# sourceMappingURL=typed-exports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typed-exports.d.ts","sourceRoot":"","sources":["../../../src/viewer/components/typed-exports.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAExC,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AACpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAKzD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,MAAM,EAAE,SAAS,CAAC,WAAW,CAAwD,CAAC;AAEnG,eAAO,MAAM,aAAa,EAAE,SAAS,CAAC,kBAAkB,CACW,CAAC;AAEpE,eAAO,MAAM,WAAW,EAAE,SAAS,CAAC,gBAAgB,CACW,CAAC"}
@@ -12,5 +12,10 @@ export interface EditorControllerDeps {
12
12
  axis: 'h' | 'v';
13
13
  position: number;
14
14
  }[];
15
+ /**
16
+ * Transform inline-editor text at commit time (File > Options > Proofing
17
+ * AutoCorrect); identity when unset.
18
+ */
19
+ transformCommittedText?(text: string): string;
15
20
  }
16
21
  //# sourceMappingURL=editor-controller-deps.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"editor-controller-deps.d.ts","sourceRoot":"","sources":["../../../src/viewer/editor/editor-controller-deps.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACpC,QAAQ,IAAI,MAAM,CAAC;IACnB,UAAU,IAAI,MAAM,CAAC;IACrB,aAAa,IAAI,OAAO,CAAC;IACzB,YAAY,IAAI,OAAO,GAAG,IAAI,CAAC;IAC/B,WAAW,IAAI,WAAW,GAAG,IAAI,CAAC;IAClC,YAAY,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,aAAa,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C,aAAa,CAAC,IAAI,OAAO,CAAC;IAC1B,cAAc,CAAC,IAAI,OAAO,CAAC;IAC3B,SAAS,CAAC,IAAI,SAAS;QAAE,IAAI,EAAE,GAAG,GAAG,GAAG,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC/D"}
1
+ {"version":3,"file":"editor-controller-deps.d.ts","sourceRoot":"","sources":["../../../src/viewer/editor/editor-controller-deps.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACpC,QAAQ,IAAI,MAAM,CAAC;IACnB,UAAU,IAAI,MAAM,CAAC;IACrB,aAAa,IAAI,OAAO,CAAC;IACzB,YAAY,IAAI,OAAO,GAAG,IAAI,CAAC;IAC/B,WAAW,IAAI,WAAW,GAAG,IAAI,CAAC;IAClC,YAAY,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,aAAa,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C,aAAa,CAAC,IAAI,OAAO,CAAC;IAC1B,cAAc,CAAC,IAAI,OAAO,CAAC;IAC3B,SAAS,CAAC,IAAI,SAAS;QAAE,IAAI,EAAE,GAAG,GAAG,GAAG,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC/D;;;OAGG;IACH,sBAAsB,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;CAC9C"}
@@ -1,3 +1,4 @@
1
+ import { PptxLayoutOption } from 'pptx-viewer-core';
1
2
  import { EditorState } from './editor-state.svelte';
2
3
  /**
3
4
  * The Home tab's Slides group (new / duplicate / delete slide), split out of
@@ -16,6 +17,20 @@ export declare class EditorSlidesController {
16
17
  duplicateCurrentSlide(): number | null;
17
18
  /** Delete the current slide. Returns the new active index, or null (not editable / only slide). */
18
19
  deleteCurrentSlide(): number | null;
20
+ /**
21
+ * The layouts available for the current slide (its master's layouts),
22
+ * resolved via the core `getAvailableLayoutsForSlide` API. Empty when no
23
+ * deck is loaded. Backs the Home tab's Layout dropdown (React parity).
24
+ */
25
+ availableLayouts(): Promise<PptxLayoutOption[]>;
26
+ /** Re-map the current slide onto `layoutPath`. Returns its index, or null when not editable. */
27
+ applyLayout(layoutPath: string): Promise<number | null>;
28
+ /**
29
+ * Reset the current slide by re-applying its own layout, restoring inherited
30
+ * placeholder geometry/formatting (React's Home > Reset). Returns the slide
31
+ * index, or null when the slide has no known layout path.
32
+ */
33
+ resetSlide(): Promise<number | null>;
19
34
  /** Move an arbitrary thumbnail slide. Returns the selected target index on success. */
20
35
  moveSlide(fromIndex: number, toIndex: number): number | null;
21
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"editor-slides-controller.d.ts","sourceRoot":"","sources":["../../../src/viewer/editor/editor-slides-controller.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD;;;;;;;GAOG;AACH,qBAAa,sBAAsB;;gBAGtB,MAAM,EAAE,WAAW;IAI/B,oGAAoG;IACpG,uBAAuB,IAAI,MAAM,GAAG,IAAI;IAYxC,qFAAqF;IACrF,qBAAqB,IAAI,MAAM,GAAG,IAAI;IAkBtC,mGAAmG;IACnG,kBAAkB,IAAI,MAAM,GAAG,IAAI;IAiBnC,uFAAuF;IACvF,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;CAY5D"}
1
+ {"version":3,"file":"editor-slides-controller.d.ts","sourceRoot":"","sources":["../../../src/viewer/editor/editor-slides-controller.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAQzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD;;;;;;;GAOG;AACH,qBAAa,sBAAsB;;gBAGtB,MAAM,EAAE,WAAW;IAI/B,oGAAoG;IACpG,uBAAuB,IAAI,MAAM,GAAG,IAAI;IAYxC,qFAAqF;IACrF,qBAAqB,IAAI,MAAM,GAAG,IAAI;IAkBtC,mGAAmG;IACnG,kBAAkB,IAAI,MAAM,GAAG,IAAI;IAiBnC;;;;OAIG;IACG,gBAAgB,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAQrD,gGAAgG;IAC1F,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAgB7D;;;;OAIG;IACG,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAQ1C,uFAAuF;IACvF,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;CAY5D"}
@@ -67,6 +67,9 @@ export declare class EditorState {
67
67
  get renderedSlides(): PptxSlide[];
68
68
  get hasClipboard(): boolean;
69
69
  get currentSlideIndex(): number;
70
+ /** The loaded core handler, or null before a deck is open. Used by the
71
+ * Slides group for layout switching (`applyLayoutToSlide`). */
72
+ getHandler(): PptxHandler | null;
70
73
  setSlides(slides: PptxSlide[], slideMasters?: PptxSlideMaster[], notesMaster?: PptxNotesMaster, handoutMaster?: PptxHandoutMaster, sections?: PptxSection[], coreProperties?: PptxCoreProperties, appProperties?: PptxAppProperties, customProperties?: PptxCustomProperty[], headerFooter?: PptxHeaderFooter, presentationProperties?: PptxPresentationProperties, customShows?: PptxCustomShow[]): void;
71
74
  /**
72
75
  * Replace the working slides with a remote (collaboration) snapshot without
@@ -85,6 +88,12 @@ export declare class EditorState {
85
88
  select(id: string | null): void;
86
89
  isElementInteractive(id: string): boolean;
87
90
  setTemplateEditing(enabled: boolean): void;
91
+ /**
92
+ * Apply the File > Options "maximum number of undos" value. Recreates the
93
+ * history stack when the depth changes (PowerPoint likewise applies the new
94
+ * maximum going forward; existing entries are dropped).
95
+ */
96
+ setHistoryDepth(depth: number): void;
88
97
  pushHistory(): void;
89
98
  commitChange(): void;
90
99
  /** Patch geometry without history for live gesture preview frames. */