pptx-svelte-viewer 2.4.0 → 2.5.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.
package/dist/index.d.ts CHANGED
@@ -819,6 +819,18 @@ interface ShapeStyle {
819
819
  /** Original `gradFill` XML retained for unknown-child and extension round-tripping. */
820
820
  fillGradientXml?: XmlObject;
821
821
  fillMode?: 'solid' | 'gradient' | 'pattern' | 'none' | 'image' | 'theme' | 'group';
822
+ /**
823
+ * `<p:sp useBgFill="1">`: the shape paints with the SLIDE BACKGROUND's fill
824
+ * rather than its own or its theme style's.
825
+ *
826
+ * PowerPoint's designer emits full-bleed rectangles this way, and they also
827
+ * carry an `a:fillRef` pointing at `accent1`. Ignoring the attribute painted
828
+ * those panels in the accent colour, so a black-and-white title slide came out
829
+ * black-and-blue. The load pipeline copies the resolved slide background onto
830
+ * the fill fields; the flag stays for round-trip and for renderers that want
831
+ * to re-resolve against a changed background.
832
+ */
833
+ useBackgroundFill?: boolean;
822
834
  fillPatternPreset?: string;
823
835
  fillPatternBackgroundColor?: string;
824
836
  /** Original `pattFill` XML retained for unknown-child round-tripping. */
@@ -5156,6 +5168,27 @@ interface PptxNativeAnimation {
5156
5168
  soundPath?: string;
5157
5169
  /** Whether to stop any currently playing sound (`p:endSnd`). */
5158
5170
  stopSound?: boolean;
5171
+ /**
5172
+ * Whether the enclosing click-level group (a direct `p:par` child of the
5173
+ * `mainSeq`) begins automatically when the slide appears, rather than waiting
5174
+ * for a click.
5175
+ *
5176
+ * PowerPoint gates a click step with a lone `<p:cond delay="indefinite"/>`;
5177
+ * a group that also carries a time-node condition (`onBegin`/`onEnd` with a
5178
+ * `@tn`) or a finite delay starts on slide entry ("With/After Previous" as the
5179
+ * first effect on the slide). The flat animation list cannot express that on
5180
+ * its own, so the parse layer stamps it here.
5181
+ */
5182
+ groupAutoStart?: boolean;
5183
+ /**
5184
+ * Index of the enclosing effect-wrapper `p:par` inside the click-level group.
5185
+ *
5186
+ * Effects that share a wrapper are OOXML siblings: they all start when that
5187
+ * wrapper starts, and each `p:cond/@delay` is measured from the wrapper's
5188
+ * start, NOT chained off the effect before it. Playback uses this to place
5189
+ * simultaneous effects at their true offsets instead of accumulating delays.
5190
+ */
5191
+ parGroupIndex?: number;
5159
5192
  /** Structured start conditions parsed from `p:stCondLst`. */
5160
5193
  startConditions?: AnimationCondition[];
5161
5194
  /** Structured end conditions parsed from `p:endCondLst`. */
package/dist/index.js CHANGED
@@ -1,26 +1,26 @@
1
- import { C as e, S as t, St as a, _t as o, b as i, bt as r, dt as l, ft as n, gt as S, ht as m, lt as d, mt as p, pt as v, t as g, ut as h, vt as u, w as T, x, xt as f, yt as A } from "./export-C4AAOFct.js";
1
+ import { C as e, Ct as t, S as a, St as o, _t as i, b as r, bt as l, dt as n, ft as S, gt as m, ht as d, lt as v, mt as p, t as g, ut as h, vt as u, w as T, x, xt as C, yt as f } from "./export-Doev_dGg.js";
2
2
  import { i as b } from "./translator-DL83W_OP.js";
3
3
  import "./i18n.js";
4
4
  export {
5
5
  g as PowerPointViewer,
6
- d as defaultCssVars,
6
+ v as defaultCssVars,
7
7
  h as defaultRadius,
8
- l as defaultThemeColors,
9
- n as deleteAutosaveSnapshot,
10
- i as exportAllSlidesToSvg,
8
+ n as defaultThemeColors,
9
+ S as deleteAutosaveSnapshot,
10
+ r as exportAllSlidesToSvg,
11
11
  x as exportAllSlidesToSvgBlobs,
12
- t as exportSlideAsSvg,
12
+ a as exportSlideAsSvg,
13
13
  e as exportSlideToSvg,
14
14
  T as exportSlideToSvgBlob,
15
- v as getAutosaveSnapshot,
16
- p as listAutosaveSnapshots,
15
+ p as getAutosaveSnapshot,
16
+ d as listAutosaveSnapshots,
17
17
  m as loadPresentationDeck,
18
- S as parsePresentationSessionId,
18
+ i as parsePresentationSessionId,
19
19
  b as registerTranslations,
20
- o as themeToCssVars,
21
- u as vermilionDarkColors,
22
- A as vermilionDarkTheme,
23
- r as vermilionLightColors,
24
- f as vermilionLightTheme,
25
- a as vermilionRadius
20
+ u as themeToCssVars,
21
+ f as vermilionDarkColors,
22
+ l as vermilionDarkTheme,
23
+ C as vermilionLightColors,
24
+ o as vermilionLightTheme,
25
+ t as vermilionRadius
26
26
  };
@@ -820,6 +820,18 @@ interface ShapeStyle {
820
820
  /** Original `gradFill` XML retained for unknown-child and extension round-tripping. */
821
821
  fillGradientXml?: XmlObject;
822
822
  fillMode?: 'solid' | 'gradient' | 'pattern' | 'none' | 'image' | 'theme' | 'group';
823
+ /**
824
+ * `<p:sp useBgFill="1">`: the shape paints with the SLIDE BACKGROUND's fill
825
+ * rather than its own or its theme style's.
826
+ *
827
+ * PowerPoint's designer emits full-bleed rectangles this way, and they also
828
+ * carry an `a:fillRef` pointing at `accent1`. Ignoring the attribute painted
829
+ * those panels in the accent colour, so a black-and-white title slide came out
830
+ * black-and-blue. The load pipeline copies the resolved slide background onto
831
+ * the fill fields; the flag stays for round-trip and for renderers that want
832
+ * to re-resolve against a changed background.
833
+ */
834
+ useBackgroundFill?: boolean;
823
835
  fillPatternPreset?: string;
824
836
  fillPatternBackgroundColor?: string;
825
837
  /** Original `pattFill` XML retained for unknown-child round-tripping. */
@@ -5167,6 +5179,27 @@ interface PptxNativeAnimation {
5167
5179
  soundPath?: string;
5168
5180
  /** Whether to stop any currently playing sound (`p:endSnd`). */
5169
5181
  stopSound?: boolean;
5182
+ /**
5183
+ * Whether the enclosing click-level group (a direct `p:par` child of the
5184
+ * `mainSeq`) begins automatically when the slide appears, rather than waiting
5185
+ * for a click.
5186
+ *
5187
+ * PowerPoint gates a click step with a lone `<p:cond delay="indefinite"/>`;
5188
+ * a group that also carries a time-node condition (`onBegin`/`onEnd` with a
5189
+ * `@tn`) or a finite delay starts on slide entry ("With/After Previous" as the
5190
+ * first effect on the slide). The flat animation list cannot express that on
5191
+ * its own, so the parse layer stamps it here.
5192
+ */
5193
+ groupAutoStart?: boolean;
5194
+ /**
5195
+ * Index of the enclosing effect-wrapper `p:par` inside the click-level group.
5196
+ *
5197
+ * Effects that share a wrapper are OOXML siblings: they all start when that
5198
+ * wrapper starts, and each `p:cond/@delay` is measured from the wrapper's
5199
+ * start, NOT chained off the effect before it. Playback uses this to place
5200
+ * simultaneous effects at their true offsets instead of accumulating delays.
5201
+ */
5202
+ parGroupIndex?: number;
5170
5203
  /** Structured start conditions parsed from `p:stCondLst`. */
5171
5204
  startConditions?: AnimationCondition[];
5172
5205
  /** Structured end conditions parsed from `p:endCondLst`. */
@@ -10924,12 +10957,16 @@ declare class AnimationPlayback {
10924
10957
  get isComplete(): boolean;
10925
10958
  /** Clear all pending timers + the in-flight staged-build RAF. */
10926
10959
  clearTimers(): void;
10960
+ /** Whether the active slide was seeded as fully built (backward entry). */
10961
+ get seededCompleted(): boolean;
10927
10962
  /**
10928
10963
  * Rebuild the controller for the current slide and replay from the start. The
10929
10964
  * controller builds the timeline engine (expanding text-build animations) and
10930
10965
  * derives keyframes CSS, trigger-shape ids, and the tracked element id list.
10931
10966
  */
10932
- reset(): void;
10967
+ reset(options?: {
10968
+ completed?: boolean;
10969
+ }): void;
10933
10970
  /**
10934
10971
  * Reveal the next click-group. Returns `true` if a group was revealed, `false`
10935
10972
  * when playback is complete or animations are disabled (so the caller can fall
@@ -11027,7 +11064,20 @@ declare class PresentationController {
11027
11064
  * on-screen next button pass `fromClick = false` and are never gated.
11028
11065
  */
11029
11066
  advance(fromClick?: boolean): void;
11030
- /** Backward input while the end screen is up just dismisses it. */
11067
+ /**
11068
+ * Raise the black end-of-slide-show screen without ending anything.
11069
+ *
11070
+ * Used by an audience display when the presenter ends the session and the
11071
+ * browser refuses to close the tab: the room sees the end screen, never the
11072
+ * editor.
11073
+ */
11074
+ showEndOfShow(): void;
11075
+ /**
11076
+ * Backward input. Dismisses the end screen when it is up; on a slide entered
11077
+ * backward it replays that slide's builds from the start rather than leaving
11078
+ * it, so a presenter who overshot can watch the build again (PowerPoint).
11079
+ * Returns true when the press was consumed here.
11080
+ */
11031
11081
  retreat(): boolean;
11032
11082
  /** Entering presentation: seed builds for the current slide, drop any overlay. */
11033
11083
  start(): void;
@@ -1,8 +1,8 @@
1
- import { A as M, B as T, C as ge, D as P, E as F, H as R, I as U, L as H, M as O, O as W, R as D, S as ce, T as I, U as V, W as N, _, a as de, at as z, b as ue, c as B, d as Se, f as ve, g as k, h as K, it as L, j as $, k as q, l as pe, m as G, o as Z, ot as j, p as fe, s as J, st as Q, t as he, u as X, v as Y, w as me, x as be, y as ee, z as te } from "../export-C4AAOFct.js";
1
+ import { A as M, B as T, C as ce, D as P, E as O, H as R, I as U, L as F, M as H, O as D, R as W, S as de, T as I, U as V, W as N, _, a as ue, at as z, b as Se, c as B, d as ve, f as pe, g as k, h as K, it as L, j as $, k as q, l as fe, m as G, o as Z, ot as j, p as he, pt as J, s as Q, st as X, t as we, u as Y, v as ee, w as me, x as be, y as te, z as re } from "../export-Doev_dGg.js";
2
2
  import * as e from "svelte/internal/client";
3
- import { onDestroy as re, onMount as ne } from "svelte";
4
- var Ce = O, Ee = P, Ae = W;
5
- function oe(t) {
3
+ import { onDestroy as ne, onMount as oe } from "svelte";
4
+ var Ee = H, Ae = P, ye = D;
5
+ function ae(t) {
6
6
  const { loader: a, viewer: r, editor: i, options: n } = t;
7
7
  function g() {
8
8
  const u = n.getSource();
@@ -76,7 +76,7 @@ function oe(t) {
76
76
  closeSignatureWarning: o
77
77
  };
78
78
  }
79
- function ae(t) {
79
+ function se(t) {
80
80
  const { loader: a, editor: r, viewer: i, collab: n, options: g } = t, c = new G(r), l = new K();
81
81
  R({
82
82
  navigateToZoomTarget: (o) => i.goTo(o),
@@ -99,14 +99,14 @@ function ae(t) {
99
99
  getSnapToGrid: () => c.preferences.snapToGrid,
100
100
  getSnapToShape: () => c.snapToShape,
101
101
  getGuides: () => c.guides
102
- }), v = new D({
102
+ }), v = new W({
103
103
  getSlides: () => r.slides,
104
104
  commitSlides: (o) => r.commitSlides(o),
105
105
  onNavigate: (o, S) => {
106
106
  i.goTo(o), r.select(S);
107
107
  }
108
108
  });
109
- return J({
109
+ return Q({
110
110
  getSource: g.getSource,
111
111
  getEditable: () => g.getEditable() && !n.readOnly,
112
112
  getInitialSlide: g.getInitialSlide,
@@ -132,8 +132,8 @@ function ae(t) {
132
132
  }
133
133
  };
134
134
  }
135
- function se(t) {
136
- const { editor: a, loader: r, viewer: i } = t, n = ee({
135
+ function ie(t) {
136
+ const { editor: a, loader: r, viewer: i } = t, n = te({
137
137
  getContainer: t.getRootEl,
138
138
  getSlides: () => a.renderedSlides,
139
139
  getCanvasSize: () => r.canvasSize,
@@ -169,7 +169,7 @@ function se(t) {
169
169
  onNotesCommit: v
170
170
  };
171
171
  }
172
- function ie(t) {
172
+ function le(t) {
173
173
  const { editor: a, viewer: r, loader: i, parityUi: n, controller: g } = t, c = new $({
174
174
  getSlides: () => a.renderedSlides,
175
175
  getCurrentIndex: () => r.current,
@@ -214,7 +214,7 @@ function ie(t) {
214
214
  };
215
215
  }
216
216
  function xe(t) {
217
- Q(t.t), N(t.getSmartArt3D);
217
+ X(t.t), N(t.getSmartArt3D);
218
218
  const a = new k();
219
219
  V({
220
220
  getColorScheme: () => a.colorScheme,
@@ -227,51 +227,53 @@ function xe(t) {
227
227
  getSource: t.getSource,
228
228
  getSlideIndex: () => r.current,
229
229
  onAudienceSlide: (f) => r.goTo(f),
230
- onAudienceExit: () => r.isFullscreen = !1
230
+ onAudienceExit: () => {
231
+ J(window) && w.presentation.showEndOfShow();
232
+ }
231
233
  });
232
- ne(() => {
234
+ oe(() => {
233
235
  g.connect(), g.isAudience && (r.isFullscreen = !0);
234
- }), re(() => g.dispose()), e.user_effect(() => {
236
+ }), ne(() => g.dispose()), e.user_effect(() => {
235
237
  g.sync(r.current);
236
238
  });
237
239
  function c() {
238
240
  e.set(n, Date.now(), !0), e.set(i, !0);
239
241
  }
240
- const l = new te({
242
+ const l = new re({
241
243
  getCurrent: () => r.current,
242
244
  getHandler: () => a.handler,
243
245
  onChange: () => {
244
246
  t.onchange?.(), l.save().then((f) => t.oncontentchange?.(f));
245
247
  }
246
248
  });
247
- H(U({
249
+ F(U({
248
250
  loader: a,
249
251
  editor: l
250
252
  }));
251
- const s = oe({
253
+ const s = ae({
252
254
  loader: a,
253
255
  viewer: r,
254
256
  editor: l,
255
257
  options: t
256
- }), d = ae({
258
+ }), d = se({
257
259
  loader: a,
258
260
  editor: l,
259
261
  viewer: r,
260
262
  collab: s.collab,
261
263
  options: t,
262
264
  getScale: () => e.get(o)
263
- }), v = e.derived(() => X(t.getViewportWidth(), t.getViewportHeight(), a.canvasSize.width, a.canvasSize.height, r.isFullscreen ? 0 : 24)), o = e.derived(() => r.isFullscreen ? e.get(v) : e.get(v) * ((r.zoomPercent ?? 100) / 100)), S = e.derived(() => Math.max(1, Math.round(r.zoomPercent ?? 100))), h = e.derived(() => l.renderedSlides), u = e.derived(() => e.get(h)[r.current]), E = e.derived(() => !r.isFullscreen), w = e.derived(() => t.getEditable() && !r.isFullscreen && !s.collab.readOnly), A = e.derived(() => t.getEditable() && !s.collab.readOnly && a.slides.length > 0), C = e.derived(() => l.masterViewTarget ? "master" : r.isFullscreen ? "present" : t.getEditable() ? "edit" : "preview");
265
+ }), v = e.derived(() => Y(t.getViewportWidth(), t.getViewportHeight(), a.canvasSize.width, a.canvasSize.height, r.isFullscreen ? 0 : 24)), o = e.derived(() => r.isFullscreen ? e.get(v) : e.get(v) * ((r.zoomPercent ?? 100) / 100)), S = e.derived(() => Math.max(1, Math.round(r.zoomPercent ?? 100))), h = e.derived(() => l.renderedSlides), u = e.derived(() => e.get(h)[r.current]), E = e.derived(() => !r.isFullscreen), b = e.derived(() => t.getEditable() && !r.isFullscreen && !s.collab.readOnly), A = e.derived(() => t.getEditable() && !s.collab.readOnly && a.slides.length > 0), C = e.derived(() => l.masterViewTarget ? "master" : r.isFullscreen ? "present" : t.getEditable() ? "edit" : "preview");
264
266
  e.user_effect(() => t.ondirtychange?.(l.dirty)), e.user_effect(() => t.onmodechange?.(e.get(C))), e.user_effect(() => t.onzoomchange?.(e.get(S) / 100)), e.user_effect(() => t.onselectionchange?.([...l.selection.ids])), e.user_effect(() => t.onslidecountchange?.(e.get(h).length));
265
- const m = ie({
267
+ const w = le({
266
268
  editor: l,
267
269
  viewer: r,
268
270
  loader: a,
269
271
  parityUi: d.parityUi,
270
272
  controller: d.controller,
271
- getEditingActive: () => e.get(w),
273
+ getEditingActive: () => e.get(b),
272
274
  getStageHolderEl: t.getStageHolderEl,
273
275
  getRootEl: t.getRootEl
274
- }), p = se({
276
+ }), p = ie({
275
277
  editor: l,
276
278
  loader: a,
277
279
  viewer: r,
@@ -280,8 +282,8 @@ function xe(t) {
280
282
  getRootEl: t.getRootEl,
281
283
  getEditable: t.getEditable,
282
284
  onnotesupdate: t.onnotesupdate
283
- }), b = F(l), x = Y(p.exportWiring.controller);
284
- function y() {
285
+ }), m = O(l), y = ee(p.exportWiring.controller);
286
+ function x() {
285
287
  d.controller.destroy(), s.collab.stop(), p.exportWiring.destroy(), a.dispose();
286
288
  }
287
289
  return {
@@ -295,13 +297,13 @@ function xe(t) {
295
297
  collab: s.collab,
296
298
  dialogs: s.dialogs,
297
299
  autosaveCtl: s.autosaveCtl,
298
- presentation: m.presentation,
300
+ presentation: w.presentation,
299
301
  presenterSession: g,
300
302
  exportWiring: p.exportWiring,
301
303
  exportUi: p.exportUi,
302
304
  t: t.t,
303
- editingApi: b,
304
- exportingApi: x,
305
+ editingApi: m,
306
+ exportingApi: y,
305
307
  get scale() {
306
308
  return e.get(o);
307
309
  },
@@ -318,7 +320,7 @@ function xe(t) {
318
320
  return e.get(E);
319
321
  },
320
322
  get editingActive() {
321
- return e.get(w);
323
+ return e.get(b);
322
324
  },
323
325
  get showRibbon() {
324
326
  return e.get(A);
@@ -368,31 +370,31 @@ function xe(t) {
368
370
  closeSignatureWarning: s.closeSignatureWarning,
369
371
  onNotesToggle: p.onNotesToggle,
370
372
  onNotesCommit: p.onNotesCommit,
371
- onFullscreenToggle: m.onFullscreenToggle,
372
- onFullscreenChange: m.onFullscreenChange,
373
- onKeydown: m.onKeydown,
374
- downloadPptx: b.downloadPptx,
375
- downloadAs: b.downloadAs,
376
- destroy: y
373
+ onFullscreenToggle: w.onFullscreenToggle,
374
+ onFullscreenChange: w.onFullscreenChange,
375
+ onKeydown: w.onKeydown,
376
+ downloadPptx: m.downloadPptx,
377
+ downloadAs: m.downloadAs,
378
+ destroy: x
377
379
  };
378
380
  }
379
381
  export {
380
- he as PowerPointViewer,
382
+ we as PowerPointViewer,
381
383
  k as PresentationLoader,
382
- Ce as Ribbon,
383
- Ae as SlideCanvas,
384
+ Ee as Ribbon,
385
+ ye as SlideCanvas,
384
386
  B as ViewerState,
385
- Ee as ViewerToolbar,
386
- pe as clampSlideIndex,
387
- de as createSvelteAiBridge,
387
+ Ae as ViewerToolbar,
388
+ fe as clampSlideIndex,
389
+ ue as createSvelteAiBridge,
388
390
  xe as createViewerState,
389
- ue as exportAllSlidesToSvg,
391
+ Se as exportAllSlidesToSvg,
390
392
  be as exportAllSlidesToSvgBlobs,
391
- ce as exportSlideAsSvg,
392
- ge as exportSlideToSvg,
393
+ de as exportSlideAsSvg,
394
+ ce as exportSlideToSvg,
393
395
  me as exportSlideToSvgBlob,
394
- X as fitScale,
395
- Se as resolveNavigationKey,
396
- ve as zoomInPercent,
397
- fe as zoomOutPercent
396
+ Y as fitScale,
397
+ ve as resolveNavigationKey,
398
+ pe as zoomInPercent,
399
+ he as zoomOutPercent
398
400
  };
@@ -47,12 +47,16 @@ export declare class AnimationPlayback {
47
47
  get isComplete(): boolean;
48
48
  /** Clear all pending timers + the in-flight staged-build RAF. */
49
49
  clearTimers(): void;
50
+ /** Whether the active slide was seeded as fully built (backward entry). */
51
+ get seededCompleted(): boolean;
50
52
  /**
51
53
  * Rebuild the controller for the current slide and replay from the start. The
52
54
  * controller builds the timeline engine (expanding text-build animations) and
53
55
  * derives keyframes CSS, trigger-shape ids, and the tracked element id list.
54
56
  */
55
- reset(): void;
57
+ reset(options?: {
58
+ completed?: boolean;
59
+ }): void;
56
60
  /**
57
61
  * Reveal the next click-group. Returns `true` if a group was revealed, `false`
58
62
  * when playback is complete or animations are disabled (so the caller can fall
@@ -1 +1 @@
1
- {"version":3,"file":"animation-playback.svelte.d.ts","sourceRoot":"","sources":["../../../src/viewer/presentation/animation-playback.svelte.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAShE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,WAAW,qBAAqB;IACrC,oEAAoE;IACpE,QAAQ,IAAI,SAAS,GAAG,SAAS,CAAC;IAClC,wDAAwD;IACxD,oBAAoB,CAAC,IAAI,OAAO,GAAG,SAAS,CAAC;IAC7C,4EAA4E;IAC5E,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,uEAAuE;IACvE,SAAS,CAAC,EAAE,MAAM,WAAW,GAAG,IAAI,CAAC;CACrC;AAED,qBAAa,iBAAiB;;gBAkBjB,IAAI,EAAE,qBAAqB;IAavC,+EAA+E;IAC/E,IAAI,aAAa,IAAI,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAEtD;IAED,+DAA+D;IAC/D,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,uEAAuE;IACvE,IAAI,0BAA0B,IAAI,WAAW,CAAC,MAAM,CAAC,CAEpD;IAED,2DAA2D;IAC3D,IAAI,oBAAoB,IAAI,WAAW,CAAC,MAAM,CAAC,CAE9C;IAED,mEAAmE;IACnE,IAAI,UAAU,IAAI,OAAO,CAExB;IAUD,iEAAiE;IACjE,WAAW,IAAI,IAAI;IAQnB;;;;OAIG;IACH,KAAK,IAAI,IAAI;IAuCb;;;;OAIG;IACH,OAAO,IAAI,OAAO;IAclB,0EAA0E;IAC1E,2BAA2B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAYrD,mEAAmE;IACnE,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAkB1C,mEAAmE;IACnE,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;CAKrC"}
1
+ {"version":3,"file":"animation-playback.svelte.d.ts","sourceRoot":"","sources":["../../../src/viewer/presentation/animation-playback.svelte.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAShE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,WAAW,qBAAqB;IACrC,oEAAoE;IACpE,QAAQ,IAAI,SAAS,GAAG,SAAS,CAAC;IAClC,wDAAwD;IACxD,oBAAoB,CAAC,IAAI,OAAO,GAAG,SAAS,CAAC;IAC7C,4EAA4E;IAC5E,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,uEAAuE;IACvE,SAAS,CAAC,EAAE,MAAM,WAAW,GAAG,IAAI,CAAC;CACrC;AAED,qBAAa,iBAAiB;;gBAkBjB,IAAI,EAAE,qBAAqB;IAavC,+EAA+E;IAC/E,IAAI,aAAa,IAAI,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAEtD;IAED,+DAA+D;IAC/D,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,uEAAuE;IACvE,IAAI,0BAA0B,IAAI,WAAW,CAAC,MAAM,CAAC,CAEpD;IAED,2DAA2D;IAC3D,IAAI,oBAAoB,IAAI,WAAW,CAAC,MAAM,CAAC,CAE9C;IAED,mEAAmE;IACnE,IAAI,UAAU,IAAI,OAAO,CAExB;IAUD,iEAAiE;IACjE,WAAW,IAAI,IAAI;IAcnB,2EAA2E;IAC3E,IAAI,eAAe,IAAI,OAAO,CAE7B;IAED;;;;OAIG;IACH,KAAK,CAAC,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI;IAmD9C;;;;OAIG;IACH,OAAO,IAAI,OAAO;IAclB,0EAA0E;IAC1E,2BAA2B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAYrD,mEAAmE;IACnE,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAkB1C,mEAAmE;IACnE,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;CAKrC"}
@@ -84,7 +84,20 @@ export declare class PresentationController {
84
84
  * on-screen next button pass `fromClick = false` and are never gated.
85
85
  */
86
86
  advance(fromClick?: boolean): void;
87
- /** Backward input while the end screen is up just dismisses it. */
87
+ /**
88
+ * Raise the black end-of-slide-show screen without ending anything.
89
+ *
90
+ * Used by an audience display when the presenter ends the session and the
91
+ * browser refuses to close the tab: the room sees the end screen, never the
92
+ * editor.
93
+ */
94
+ showEndOfShow(): void;
95
+ /**
96
+ * Backward input. Dismisses the end screen when it is up; on a slide entered
97
+ * backward it replays that slide's builds from the start rather than leaving
98
+ * it, so a presenter who overshot can watch the build again (PowerPoint).
99
+ * Returns true when the press was consumed here.
100
+ */
88
101
  retreat(): boolean;
89
102
  /** Entering presentation: seed builds for the current slide, drop any overlay. */
90
103
  start(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"presentation-controller.svelte.d.ts","sourceRoot":"","sources":["../../../src/viewer/presentation/presentation-controller.svelte.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAEhE,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAGhE;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,WAAW,eAAe;IAC/B,iEAAiE;IACjE,QAAQ,EAAE,SAAS,GAAG,SAAS,CAAC;IAChC,gEAAgE;IAChE,QAAQ,EAAE,SAAS,GAAG,SAAS,CAAC;IAChC,6EAA6E;IAC7E,UAAU,EAAE,mBAAmB,CAAC;CAChC;AAED,MAAM,WAAW,0BAA0B;IAC1C,+DAA+D;IAC/D,SAAS,IAAI,SAAS,EAAE,CAAC;IACzB,wCAAwC;IACxC,eAAe,IAAI,MAAM,CAAC;IAC1B,wEAAwE;IACxE,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,wDAAwD;IACxD,oBAAoB,CAAC,IAAI,OAAO,GAAG,SAAS,CAAC;IAC7C,4EAA4E;IAC5E,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,2EAA2E;IAC3E,YAAY,CAAC,IAAI,WAAW,GAAG,IAAI,CAAC;IACpC,oDAAoD;IACpD,IAAI,CAAC,IAAI,IAAI,CAAC;IACd,0EAA0E;IAC1E,oBAAoB,CAAC,IAAI,OAAO,GAAG,SAAS,CAAC;CAC7C;AAED,qBAAa,sBAAsB;;IAClC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;gBAWzB,IAAI,EAAE,0BAA0B;IAc5C,iFAAiF;IACjF,uEAAuE;IACvE,IAAI,gBAAgB,IAAI,OAAO,CAE9B;IAED,IAAI,UAAU,IAAI,eAAe,GAAG,IAAI,CAEvC;IAED,+EAA+E;IAC/E,IAAI,aAAa,IAAI,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAEtD;IAED,iEAAiE;IACjE,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,uEAAuE;IACvE,IAAI,0BAA0B,IAAI,WAAW,CAAC,MAAM,CAAC,CAEpD;IAED,2DAA2D;IAC3D,IAAI,oBAAoB,IAAI,WAAW,CAAC,MAAM,CAAC,CAE9C;IAED,0EAA0E;IAC1E,2BAA2B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIrD,mEAAmE;IACnE,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAI1C,mEAAmE;IACnE,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIrC;;;;;;;;;OASG;IACH,OAAO,CAAC,SAAS,UAAQ,GAAG,IAAI;IA4BhC,mEAAmE;IACnE,OAAO,IAAI,OAAO;IAQlB,kFAAkF;IAClF,KAAK,IAAI,IAAI;IAOb,0EAA0E;IAC1E,IAAI,IAAI,IAAI;IAOZ;;;OAGG;IACH,aAAa,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAa7D,8DAA8D;IAC9D,aAAa,IAAI,IAAI;CAGrB"}
1
+ {"version":3,"file":"presentation-controller.svelte.d.ts","sourceRoot":"","sources":["../../../src/viewer/presentation/presentation-controller.svelte.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAEhE,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAGhE;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,WAAW,eAAe;IAC/B,iEAAiE;IACjE,QAAQ,EAAE,SAAS,GAAG,SAAS,CAAC;IAChC,gEAAgE;IAChE,QAAQ,EAAE,SAAS,GAAG,SAAS,CAAC;IAChC,6EAA6E;IAC7E,UAAU,EAAE,mBAAmB,CAAC;CAChC;AAED,MAAM,WAAW,0BAA0B;IAC1C,+DAA+D;IAC/D,SAAS,IAAI,SAAS,EAAE,CAAC;IACzB,wCAAwC;IACxC,eAAe,IAAI,MAAM,CAAC;IAC1B,wEAAwE;IACxE,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,wDAAwD;IACxD,oBAAoB,CAAC,IAAI,OAAO,GAAG,SAAS,CAAC;IAC7C,4EAA4E;IAC5E,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,2EAA2E;IAC3E,YAAY,CAAC,IAAI,WAAW,GAAG,IAAI,CAAC;IACpC,oDAAoD;IACpD,IAAI,CAAC,IAAI,IAAI,CAAC;IACd,0EAA0E;IAC1E,oBAAoB,CAAC,IAAI,OAAO,GAAG,SAAS,CAAC;CAC7C;AAED,qBAAa,sBAAsB;;IAClC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;gBAWzB,IAAI,EAAE,0BAA0B;IAc5C,iFAAiF;IACjF,uEAAuE;IACvE,IAAI,gBAAgB,IAAI,OAAO,CAE9B;IAED,IAAI,UAAU,IAAI,eAAe,GAAG,IAAI,CAEvC;IAED,+EAA+E;IAC/E,IAAI,aAAa,IAAI,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAEtD;IAED,iEAAiE;IACjE,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,uEAAuE;IACvE,IAAI,0BAA0B,IAAI,WAAW,CAAC,MAAM,CAAC,CAEpD;IAED,2DAA2D;IAC3D,IAAI,oBAAoB,IAAI,WAAW,CAAC,MAAM,CAAC,CAE9C;IAED,0EAA0E;IAC1E,2BAA2B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIrD,mEAAmE;IACnE,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAI1C,mEAAmE;IACnE,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIrC;;;;;;;;;OASG;IACH,OAAO,CAAC,SAAS,UAAQ,GAAG,IAAI;IA4BhC;;;;;;OAMG;IACH,aAAa,IAAI,IAAI;IAIrB;;;;;OAKG;IACH,OAAO,IAAI,OAAO;IAYlB,kFAAkF;IAClF,KAAK,IAAI,IAAI;IAOb,0EAA0E;IAC1E,IAAI,IAAI,IAAI;IAOZ;;;OAGG;IACH,aAAa,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAe7D,8DAA8D;IAC9D,aAAa,IAAI,IAAI;CAGrB"}
@@ -1 +1 @@
1
- {"version":3,"file":"presenter-session.svelte.d.ts","sourceRoot":"","sources":["../../../src/viewer/presentation/presenter-session.svelte.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE/D,MAAM,WAAW,uBAAuB;IACvC,SAAS,EAAE,MAAM,UAAU,GAAG,WAAW,GAAG,IAAI,GAAG,SAAS,CAAC;IAC7D,aAAa,EAAE,MAAM,MAAM,CAAC;IAC5B,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,cAAc,EAAE,MAAM,IAAI,CAAC;CAC3B;AAED,qBAAa,gBAAgB;IAWhB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAVpC,YAAY,UAAiB;IAC7B,QAAQ,uBAAgD;IACxD,QAAQ,CAAC,iBAAiB,gBAC+D;IACzF,QAAQ,CAAC,UAAU,UAAmC;IACtD,OAAO,CAAC,OAAO,CAAiC;IAChD,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,kBAAkB,CAAM;IAChC,OAAO,CAAC,QAAQ,CAAK;gBAEQ,OAAO,EAAE,uBAAuB;IAE7D,OAAO,IAAI,IAAI;IAoCf,YAAY,IAAI,OAAO;IA2BvB,IAAI,CAAC,UAAU,SAA+B,GAAG,IAAI;IAYrD,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAAG,IAAI;IAK1D,aAAa,IAAI,IAAI;IAoBrB,OAAO,IAAI,IAAI;IAQf,OAAO,CAAC,UAAU;CAQlB"}
1
+ {"version":3,"file":"presenter-session.svelte.d.ts","sourceRoot":"","sources":["../../../src/viewer/presentation/presenter-session.svelte.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE/D,MAAM,WAAW,uBAAuB;IACvC,SAAS,EAAE,MAAM,UAAU,GAAG,WAAW,GAAG,IAAI,GAAG,SAAS,CAAC;IAC7D,aAAa,EAAE,MAAM,MAAM,CAAC;IAC5B,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,cAAc,EAAE,MAAM,IAAI,CAAC;CAC3B;AAED,qBAAa,gBAAgB;IAWhB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAVpC,YAAY,UAAiB;IAC7B,QAAQ,uBAAgD;IACxD,QAAQ,CAAC,iBAAiB,gBAC+D;IACzF,QAAQ,CAAC,UAAU,UAAmC;IACtD,OAAO,CAAC,OAAO,CAAiC;IAChD,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,kBAAkB,CAAM;IAChC,OAAO,CAAC,QAAQ,CAAK;gBAEQ,OAAO,EAAE,uBAAuB;IAE7D,OAAO,IAAI,IAAI;IAqCf,YAAY,IAAI,OAAO;IA2BvB,IAAI,CAAC,UAAU,SAA+B,GAAG,IAAI;IAYrD,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAAG,IAAI;IAK1D,aAAa,IAAI,IAAI;IAoBrB,OAAO,IAAI,IAAI;IAQf,OAAO,CAAC,UAAU;CAQlB"}
@@ -1 +1 @@
1
- {"version":3,"file":"create-viewer-state.svelte.d.ts","sourceRoot":"","sources":["../../../src/viewer/state/create-viewer-state.svelte.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAQ5F;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,wBAAwB,GAAG,cAAc,CA6NnF"}
1
+ {"version":3,"file":"create-viewer-state.svelte.d.ts","sourceRoot":"","sources":["../../../src/viewer/state/create-viewer-state.svelte.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAQ5F;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,wBAAwB,GAAG,cAAc,CAmOnF"}
@@ -1 +1 @@
1
- {"version":3,"file":"viewport-handlers.d.ts","sourceRoot":"","sources":["../../../src/viewer/state/viewport-handlers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAGlE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gDAAgD,CAAC;AAE7F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,MAAM,WAAW,oBAAoB;IACpC,SAAS,IAAI,cAAc,GAAG,SAAS,CAAC;IACxC,MAAM,EAAE,WAAW,CAAC;IACpB,UAAU,EAAE,gBAAgB,CAAC;IAC7B,gBAAgB,IAAI,OAAO,CAAC;IAC5B,+EAA+E;IAC/E,YAAY,EAAE,sBAAsB,CAAC;IACrC,wCAAwC;IACxC,SAAS,CAAC,IAAI,IAAI,CAAC;IACnB,iEAAiE;IACjE,cAAc,CAAC,CAAC,IAAI,EAAE,uBAAuB,GAAG,IAAI,CAAC;IACrD,4CAA4C;IAC5C,gBAAgB,CAAC,IAAI,IAAI,CAAC;IAC1B,wCAAwC;IACxC,eAAe,CAAC,IAAI,IAAI,CAAC;IACzB,6DAA6D;IAC7D,WAAW,CAAC,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,GAAG,IAAI,CAAC;CAC7C;AAED,MAAM,WAAW,gBAAgB;IAChC,kBAAkB,IAAI,IAAI,CAAC;IAC3B,kBAAkB,IAAI,IAAI,CAAC;IAC3B,SAAS,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAAC;CACtC;AAoED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,oBAAoB,GAAG,gBAAgB,CAkCnF"}
1
+ {"version":3,"file":"viewport-handlers.d.ts","sourceRoot":"","sources":["../../../src/viewer/state/viewport-handlers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAQlE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gDAAgD,CAAC;AAE7F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,MAAM,WAAW,oBAAoB;IACpC,SAAS,IAAI,cAAc,GAAG,SAAS,CAAC;IACxC,MAAM,EAAE,WAAW,CAAC;IACpB,UAAU,EAAE,gBAAgB,CAAC;IAC7B,gBAAgB,IAAI,OAAO,CAAC;IAC5B,+EAA+E;IAC/E,YAAY,EAAE,sBAAsB,CAAC;IACrC,wCAAwC;IACxC,SAAS,CAAC,IAAI,IAAI,CAAC;IACnB,iEAAiE;IACjE,cAAc,CAAC,CAAC,IAAI,EAAE,uBAAuB,GAAG,IAAI,CAAC;IACrD,4CAA4C;IAC5C,gBAAgB,CAAC,IAAI,IAAI,CAAC;IAC1B,wCAAwC;IACxC,eAAe,CAAC,IAAI,IAAI,CAAC;IACzB,6DAA6D;IAC7D,WAAW,CAAC,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,GAAG,IAAI,CAAC;CAC7C;AAED,MAAM,WAAW,gBAAgB;IAChC,kBAAkB,IAAI,IAAI,CAAC;IAC3B,kBAAkB,IAAI,IAAI,CAAC;IAC3B,SAAS,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAAC;CACtC;AA8ED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,oBAAoB,GAAG,gBAAgB,CA+CnF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pptx-svelte-viewer",
3
- "version": "2.4.0",
3
+ "version": "2.5.0",
4
4
  "description": "Svelte 5 PowerPoint viewer and editor component: render, edit, present, and export PPTX slides in the browser.",
5
5
  "keywords": [
6
6
  "office",